From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: eric.jin@intel.com) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by groups.io with SMTP; Thu, 22 Aug 2019 20:37:33 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Aug 2019 20:37:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,419,1559545200"; d="scan'208";a="184094943" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga006.jf.intel.com with ESMTP; 22 Aug 2019 20:37:32 -0700 Received: from fmsmsx122.amr.corp.intel.com (10.18.125.37) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 22 Aug 2019 20:37:32 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by fmsmsx122.amr.corp.intel.com (10.18.125.37) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 22 Aug 2019 20:37:32 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.139]) by shsmsx102.ccr.corp.intel.com ([169.254.2.19]) with mapi id 14.03.0439.000; Fri, 23 Aug 2019 11:37:30 +0800 From: "Eric Jin" To: Supreeth Venkatesh , "devel@edk2.groups.io" Subject: Re: [edk2-devel] [edk2-test][Patch 1/1] uefi-sct/SctPkg: Eliminate 2nd execution of ExitBootServices Test Thread-Topic: [edk2-devel] [edk2-test][Patch 1/1] uefi-sct/SctPkg: Eliminate 2nd execution of ExitBootServices Test Thread-Index: AQHVWD9/wSQxPA2XEUKtTIySPijuP6cGW0JggAChA4CAAPqo0A== Date: Fri, 23 Aug 2019 03:37:30 +0000 Message-ID: References: <20190821062430.9984-1-eric.jin@intel.com> <96bb0c56871970d9020c37005bb22fbb004b2b60.camel@arm.com> <64f9e960f8552fb2654340f5b76875c287872852.camel@arm.com> In-Reply-To: <64f9e960f8552fb2654340f5b76875c287872852.camel@arm.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZDgxYTY0MTMtZGJiNy00MTZhLTk0NjUtNzU3YWE5MjY2MDRhIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiTjJhZFNPVllQOHBFQzNtTG9Ra3JmSzBJMlZDRE5rT0dZRkRqdE1XelBQVUpxQWkxb0h5djRIYlNtT3FraExHMiJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: eric.jin@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgU3VwcmVldGgsDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogU3Vw cmVldGggVmVua2F0ZXNoIFttYWlsdG86c3VwcmVldGgudmVua2F0ZXNoQGFybS5jb21dDQo+IFNl bnQ6IEZyaWRheSwgQXVndXN0IDIzLCAyMDE5IDI6NDMgQU0NCj4gVG86IGRldmVsQGVkazIuZ3Jv dXBzLmlvOyBKaW4sIEVyaWMgPGVyaWMuamluQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtl ZGsyLWRldmVsXSBbZWRrMi10ZXN0XVtQYXRjaCAxLzFdIHVlZmktc2N0L1NjdFBrZzogRWxpbWlu YXRlDQo+IDJuZCBleGVjdXRpb24gb2YgRXhpdEJvb3RTZXJ2aWNlcyBUZXN0DQo+IA0KPiBPbiBX ZWQsIDIwMTktMDgtMjEgYXQgMjA6NTAgLTA1MDAsIEVyaWMgSmluIHZpYSBHcm91cHMuSW8gd3Jv dGU6DQo+ID4gSGlqIFN1cHJlZXRoLA0KPiBIaSBFcmljLA0KPiANCj4gPg0KPiA+ID4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvIFtt YWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW9dIE9uIEJlaGFsZg0KPiA+ID4gT2YgU3VwcmVldGgg VmVua2F0ZXNoDQo+ID4gPiBTZW50OiBUaHVyc2RheSwgQXVndXN0IDIyLCAyMDE5IDEyOjQzIEFN DQo+ID4gPiBUbzogSmluLCBFcmljIDxlcmljLmppbkBpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdy b3Vwcy5pbw0KPiA+ID4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbZWRrMi10ZXN0XVtQYXRj aCAxLzFdIHVlZmktc2N0L1NjdFBrZzoNCj4gPiA+IEVsaW1pbmF0ZQ0KPiA+ID4gMm5kIGV4ZWN1 dGlvbiBvZiBFeGl0Qm9vdFNlcnZpY2VzIFRlc3QNCj4gPiA+DQo+ID4gPiBPbiBXZWQsIDIwMTkt MDgtMjEgYXQgMDE6MjQgLTA1MDAsIEVyaWMgSmluIHdyb3RlOg0KPiA+ID4gPiBSRUY6IGh0dHBz Oi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5OA0KPiA+ID4NCj4g PiA+IFBsZWFzZSBhZGQgdGhlIGRldGFpbHMgb2YgdGhlIHBhdGNoIHRvIHRoZSBjb21taXQgbWVz c2FnZS4NCj4gPiA+ICJJbiB0aGUgRXhpdEJvb3RTZXJ2aWNlcygpIHRlc3QsIGFmdGVyIEV4aXRC b290U2VydmljZXMoKSBjYWxsLCBhbGwNCj4gPiA+IGJvb3Qgc2VydmljZXMgYXJlIGZvcmJpZGRl bi4gVGhlIG9yaWdpbmFsIGRlc2lnbiBpcyB0byBzYXZlIHRoZQ0KPiA+ID4gcmV0dXJuIHN0YXR1 cyB2YWx1ZSBvZg0KPiA+ID4gRXhpdEJvb3RTZXJ2aWNlcygpIGluIHZhcmlhYmxlIHVzaW5nIHZh cmlhYmxlIHNlcnZpY2UgYW5kIHJlc2V0LCBidXQNCj4gPiA+IHRoaXMgbmVlZHMgbXVsdGlwbGUg ZXhlY3V0aW9uIG9mIHRoZSB0ZXN0IHRvIHJldHJpZXZlIHRoZSB2YWx1ZSBmcm9tDQo+ID4gPiB2 YXJpYWJsZSBhbmQgdGhpcyBkZXNpZ24gd2FzIG5vdCBzdHJhaWdodGZvcndhcmQgZnJvbSBlbmQg dXNlcg0KPiA+ID4gcGVyc3BlY3RpdmUuDQo+ID4gPg0KPiA+DQo+ID4gSSB3b3VsZCBsaWtlIHRv IGNoYW5nZSAibXVsdGlwbGUgZXhlY3V0aW9uIiB0byAib25lIGFkZGl0aW9uYWwNCj4gPiBleGVj dXRpb24iDQo+ID4NCj4gPiA+IFRoaXMgcGF0Y2ggZW5oYW5jZXMgdGhlIHRlc3QgYnkgbGV2ZXJh Z2luZyBSZWNvdmVyeUxpYiB0byByZXN0b3JlDQo+ID4gPiBleGVjdXRpb24NCj4gPiA+IGFmdGVy IHJlc2V0IGF1dG9tYXRpY2FsbHksIHRodXMgcmVxdWlyaW5nIG9ubHkgb25lIGV4ZWN1dGlvbiIN Cj4gPiA+DQo+ID4NCj4gPiBJIGFtIG9rIHdpdGggdGhpcyBzdWdnZXN0aW9uIHdoZW4gSSBwdXNo IHRoZSBjb2RlIHRvIHJlcG8NCj4gVGhhbmtzLg0KPiANCj4gPg0KPiA+ID4gTW9yZSBjb21tZW50 cyBpbmxpbmUuLi4NCj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IENjOiBTdXByZWV0aCBWZW5rYXRl c2ggPHN1cHJlZXRoLnZlbmthdGVzaEBhcm0uY29tPg0KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBF cmljIEppbiA8ZXJpYy5qaW5AaW50ZWwuY29tPg0KPiA+ID4gPiAtLS0NCj4gPiA+ID4gIHVlZmkt DQo+ID4gPiA+IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvQm9vdFNlcnZpY2VzL0ltYWdl U2VydmljZXMvQmxhY2tCb3hUDQo+ID4gPiA+IGVzdC8NCj4gPiA+ID4gSW1hZ2VCQlRlc3QuaW5m ICAgICAgICAgIHwgIDMgKystDQo+ID4gPiA+ICB1ZWZpLQ0KPiA+ID4gPiBzY3QvU2N0UGtnL1Rl c3RDYXNlL1VFRkkvRUZJL0Jvb3RTZXJ2aWNlcy9JbWFnZVNlcnZpY2VzL0JsYWNrQm94VA0KPiA+ ID4gPiBlc3QvDQo+ID4gPiA+IEltYWdlQkJUZXN0LmggICAgICAgICAgICB8ICA5ICsrKysrKysr LQ0KPiA+ID4gPiAgdWVmaS0NCj4gPiA+ID4gc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9C b290U2VydmljZXMvSW1hZ2VTZXJ2aWNlcy9CbGFja0JveFQNCj4gPiA+ID4gZXN0Lw0KPiA+ID4g PiBJbWFnZUJCVGVzdENvbmZvcm1hbmNlLmMgfCA5OA0KPiA+ID4gPg0KPiA+ID4NCj4gPiA+DQo+ ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysNCj4gPiA+ICsrKysrKysrKysrDQo+ID4gPiA+ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tDQo+ID4gPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDE3IGRlbGV0 aW9ucygtKQ0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvdWVmaS0NCj4gPiA+ID4gc2N0 L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Cb290U2VydmljZXMvSW1hZ2VTZXJ2aWNlcy9CbGFj a0JveFQNCj4gPiA+ID4gZXN0Lw0KPiA+ID4gPiBJbWFnZUJCVGVzdC5pbmYgYi91ZWZpLQ0KPiA+ ID4gPiBzY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL0Jvb3RTZXJ2aWNlcy9JbWFnZVNlcnZp Y2VzL0JsYWNrQm94VA0KPiA+ID4gPiBlc3QvDQo+ID4gPiA+IEltYWdlQkJUZXN0LmluZg0KPiA+ ID4gPiBpbmRleCA0OWFkNzk5MTU5MzQuLjNkZTQzYTIwZThhNCAxMDA2NDQNCj4gPiA+ID4gLS0t IGEvdWVmaS0NCj4gPiA+ID4gc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Cb290U2Vydmlj ZXMvSW1hZ2VTZXJ2aWNlcy9CbGFja0JveFQNCj4gPiA+ID4gZXN0Lw0KPiA+ID4gPiBJbWFnZUJC VGVzdC5pbmYNCj4gPiA+ID4gKysrIGIvdWVmaS0NCj4gPiA+ID4gc2N0L1NjdFBrZy9UZXN0Q2Fz ZS9VRUZJL0VGSS9Cb290U2VydmljZXMvSW1hZ2VTZXJ2aWNlcy9CbGFja0JveFQNCj4gPiA+ID4g ZXN0Lw0KPiA+ID4gPiBJbWFnZUJCVGVzdC5pbmYNCj4gPiA+ID4gQEAgLTEsNyArMSw3IEBADQo+ ID4gPiA+ICAjIyBAZmlsZQ0KPiA+ID4gPiAgIw0KPiA+ID4gPiAgIyAgQ29weXJpZ2h0IDIwMDYg LSAyMDEyIFVuaWZpZWQgRUZJLCBJbmMuPEJSPiAtIyAgQ29weXJpZ2h0IChjKQ0KPiA+ID4gPiAy MDEwDQo+ID4gPiA+IC0gMjAxMiwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuPEJSPg0KPiA+ID4gPiArIyAgQ29weXJpZ2h0IChjKSAyMDEwIC0gMjAxOSwgSW50ZWwgQ29y cG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiA+ID4gcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPiAgIw0K PiA+ID4gPiAgIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAg IyAgYXJlIGxpY2Vuc2VkDQo+ID4gPiA+IGFuZA0KPiA+ID4gPiBtYWRlIGF2YWlsYWJsZSB1bmRl ciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ID4gPiA+IEBA DQo+ID4gPiA+IC01Myw0ICs1Myw1IEBADQo+ID4gPiA+DQo+ID4gPiA+ICBbUHJvdG9jb2xzXQ0K PiA+ID4gPiAgICBnRWZpVGVzdFByb2ZpbGVMaWJyYXJ5R3VpZA0KPiA+ID4gPiArICBnRWZpVGVz dFJlY292ZXJ5TGlicmFyeUd1aWQNCj4gPiA+ID4gICAgZ0JsYWNrQm94RWZpSElJUGFja2FnZUxp c3RQcm90b2NvbEd1aWQNCj4gPiA+ID4gZGlmZiAtLWdpdCBhL3VlZmktDQo+ID4gPiA+IHNjdC9T Y3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvQm9vdFNlcnZpY2VzL0ltYWdlU2VydmljZXMvQmxhY2tC b3hUDQo+ID4gPiA+IGVzdC8NCj4gPiA+ID4gSW1hZ2VCQlRlc3QuaCBiL3VlZmktDQo+ID4gPiA+ IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvQm9vdFNlcnZpY2VzL0ltYWdlU2VydmljZXMv QmxhY2tCb3hUDQo+ID4gPiA+IGVzdC8NCj4gPiA+ID4gSW1hZ2VCQlRlc3QuaA0KPiA+ID4gPiBp bmRleCBiMWMzNWZlZTc0MzUuLjAwODU4NDU3N2VkMSAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvdWVm aS0NCj4gPiA+ID4gc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Cb290U2VydmljZXMvSW1h Z2VTZXJ2aWNlcy9CbGFja0JveFQNCj4gPiA+ID4gZXN0Lw0KPiA+ID4gPiBJbWFnZUJCVGVzdC5o DQo+ID4gPiA+ICsrKyBiL3VlZmktDQo+ID4gPiA+IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9F RkkvQm9vdFNlcnZpY2VzL0ltYWdlU2VydmljZXMvQmxhY2tCb3hUDQo+ID4gPiA+IGVzdC8NCj4g PiA+ID4gSW1hZ2VCQlRlc3QuaA0KPiA+ID4gPiBAQCAtMSw3ICsxLDcgQEANCj4gPiA+ID4gIC8q KiBAZmlsZQ0KPiA+ID4gPg0KPiA+ID4gPiAgICBDb3B5cmlnaHQgMjAwNiAtIDIwMTcgVW5pZmll ZCBFRkksIEluYy48QlI+DQo+ID4gPiA+IC0gIENvcHlyaWdodCAoYykgMjAxMCAtIDIwMTcsIElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiA+IHJlc2VydmVkLjxCUj4NCj4gPiA+ ID4gKyAgQ29weXJpZ2h0IChjKSAyMDEwIC0gMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy aWdodHMNCj4gPiA+ID4gcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPg0KPiA+ID4gPiAgICBUaGlzIHBy b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4gPiA+ICAgIGFyZSBsaWNl bnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zDQo+ ID4gPiA+IG9mDQo+ID4gPiA+IHRoZSBCU0QgTGljZW5zZSBAQCAtMzUsNiArMzUsMTMgQEAgQWJz dHJhY3Q6DQo+ID4gPiA+ICAjaW5jbHVkZSBFRklfUFJPVE9DT0xfREVGSU5JVElPTiAoTG9hZEZp bGUpDQo+ID4gPiA+DQo+ID4gPiA+ICAjaW5jbHVkZSBFRklfVEVTVF9QUk9UT0NPTF9ERUZJTklU SU9OIChUZXN0UHJvZmlsZUxpYnJhcnkpDQo+ID4gPiA+ICsjaW5jbHVkZSBFRklfVEVTVF9QUk9U T0NPTF9ERUZJTklUSU9OIChUZXN0UmVjb3ZlcnlMaWJyYXJ5KQ0KPiA+ID4gPiArDQo+ID4gPiA+ ICt0eXBlZGVmIHN0cnVjdCBfUkVTRVRfREFUQSB7DQo+ID4gPiA+ICsgIFVJTlROICAgICAgICAg ICBTdGVwOw0KPiA+ID4gPiArICBVSU5UTiAgICAgICAgICAgVHBsSW5kZXg7DQo+ID4gPiA+ICsg IFVJTlQzMiAgICAgICAgICBSZXBlYXRUaW1lczsNCj4gPiA+ID4gK30gUkVTRVRfREFUQTsNCj4g PiA+ID4NCj4gPiA+ID4gICNpZiAoRUZJX1NQRUNJRklDQVRJT05fVkVSU0lPTiA+PSAweDAwMDIw MDBBKQ0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvdWVmaS0NCj4gPiA+ID4gc2N0L1Nj dFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Cb290U2VydmljZXMvSW1hZ2VTZXJ2aWNlcy9CbGFja0Jv eFQNCj4gPiA+ID4gZXN0Lw0KPiA+ID4gPiBJbWFnZUJCVGVzdENvbmZvcm1hbmNlLmMgYi91ZWZp LQ0KPiA+ID4gPiBzY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL0Jvb3RTZXJ2aWNlcy9JbWFn ZVNlcnZpY2VzL0JsYWNrQm94VA0KPiA+ID4gPiBlc3QvDQo+ID4gPiA+IEltYWdlQkJUZXN0Q29u Zm9ybWFuY2UuYw0KPiA+ID4gPiBpbmRleCAwYTI2ZDQ2ODQ3ZGEuLmU5MGFmZTdlY2FlMCAxMDA2 NDQNCj4gPiA+ID4gLS0tIGEvdWVmaS0NCj4gPiA+ID4gc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJ L0VGSS9Cb290U2VydmljZXMvSW1hZ2VTZXJ2aWNlcy9CbGFja0JveFQNCj4gPiA+ID4gZXN0Lw0K PiA+ID4gPiBJbWFnZUJCVGVzdENvbmZvcm1hbmNlLmMNCj4gPiA+ID4gKysrIGIvdWVmaS0NCj4g PiA+ID4gc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Cb290U2VydmljZXMvSW1hZ2VTZXJ2 aWNlcy9CbGFja0JveFQNCj4gPiA+ID4gZXN0Lw0KPiA+ID4gPiBJbWFnZUJCVGVzdENvbmZvcm1h bmNlLmMNCj4gPiA+ID4gQEAgLTEsNyArMSw3IEBADQo+ID4gPiA+ICAvKiogQGZpbGUNCj4gPiA+ ID4NCj4gPiA+ID4gICAgQ29weXJpZ2h0IDIwMDYgLSAyMDE2IFVuaWZpZWQgRUZJLCBJbmMuPEJS Pg0KPiA+ID4gPiAtICBDb3B5cmlnaHQgKGMpIDIwMTAgLSAyMDE2LCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cw0KPiA+ID4gPiByZXNlcnZlZC48QlI+DQo+ID4gPiA+ICsgIENvcHlyaWdo dCAoYykgMjAxMCAtIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiA+ IHJlc2VydmVkLjxCUj4NCj4gPiA+ID4NCj4gPiA+ID4gICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUg YWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+ID4gPiAgICBhcmUgbGljZW5zZWQgYW5kIG1hZGUg YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucw0KPiA+ID4gPiBvZg0KPiA+ ID4gPiB0aGUgQlNEIExpY2Vuc2UgQEAgLTMwLDcgKzMwLDggQEAgQWJzdHJhY3Q6DQo+ID4gPiA+ ICAjZGVmaW5lIFRFU1RfVkVORE9SMV9HVUlEICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4g PiA+ID4gICAgeyAweEY2RkFCMDRGLCAweEFDQUYsIDB4NGFmMywgeyAweEI5LCAweEZBLCAweERD LCAweEY5LCAweDdGLA0KPiA+ID4gPiAweEI0LA0KPiA+ID4gPiAweDQyLCAweDZGIH0gfQ0KPiA+ ID4gPg0KPiA+ID4gPiAtI2RlZmluZSBNQVhfQlVGRkVSX1NJWkUgIDEwDQo+ID4gPiA+ICsjZGVm aW5lIFNUQVRVU19CVUZGRVJfU0laRSAgIDgNCj4gPiA+DQo+ID4gPiBXaHkgaXMgdGhlIHNpemUg YmVpbmcgcmVkdWNlZCBieSAyIGJ5dGVzPw0KPiA+ID4gV2FzIHRoZSBlYXJsaWVyIHNpemUgbm90 IG9wdGltYWw/DQo+ID4NCj4gPiBUaGUgYnVmZmVyIGhlcmUgaXMgdG8gc2F2ZSB0aGUgcmV0dXJu ZWQgc3RhdHVzIGNvZGUgZnJvbQ0KPiA+IEV4aXRCb290U2VydmljZXMoKSwgc28gOCBieXRlcyBp cyBlbm91Z2ggd2l0aCBVRUZJIFNwZWMncw0KPiA+IHBlcmNlcHRpdmUuDQo+IE9rLiBTb3VuZHMg Z29vZC4NCj4gDQo+ID4NCj4gPiA+DQo+ID4gPiA+ICsjZGVmaW5lIFJFQ09WRVJfQlVGRkVSX1NJ WkUgIDEwMjQNCj4gTm90IHN1cmUgd2h5IHN1Y2ggYSBsYXJnZSBSZWNvdmVyeSBCdWZmZXIgaXMg cmVxdWlyZWQ/DQo+IFdoZW4gdGhpcyB0ZXN0IGNhc2UgaXMgd3JpdGluZyBvbmx5IHRoZSBfUkVT RVRfREFUQSBzdHJ1Y3R1cmUgaW50byB0aGUNCj4gcmVjb3ZlcnkgbGlicmFyeS4gaWYgdGhpcyBp cyB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgYXJlIG90aGVyDQo+IHR5cGVzIG9mIHJl Y292ZXJ5IGRhdGEgYmVpbmcgd3JpdHRlbiBpbiBzb21lIG90aGVyIHBsYWNlLCBIb3cgZG8geW91 DQo+IGRpc3Rpbmd1aXNoPw0KPiANClRoZSByZWNvdmVyeSBkYXRhIHdpbGwgYmUgc2F2ZWQgb24g dGhlIHN5c3RlbSBwaHlzaWNhbCBzdG9yYWdlIHdpdGggZmlsZQ0KcHJvdG9jb2wgYW5kIDUxMiBv ciAxMDI0IGJ5dGVzIGlzIGJsb2NrIHNpemUgYXMgZXhwZXJpZW5jZSB2YWx1ZS4NClRoZSBkZXNp Z24gb2YgUmVjb3ZlcnlMaWIgYW5kIFNDVCBpbmZyYXN0cnVjdHVyZSBlbnN1cmUgdGhlIHJlY292 ZXJ5IGRhdGENCmlzIGJlbG9uZyB0byBjYXNlIGdyYW51bGFyaXR5LCB0aGUgZGF0YSB3aWxsIG5v dCBiZSBpbXBhY3RlZCBieSBvdGhlcnMgdW50aWwNCmN1cnJlbnQgY2FzZSBjb21wbGV0ZS4NCg0K PiA+ID4gPg0KPiA+ID4gPiAgRUZJX0dVSUQgZ1Rlc3RWZW5kb3IxR3VpZCA9IFRFU1RfVkVORE9S MV9HVUlEOw0KPiA+ID4gPg0KPiA+ID4gPiBAQCAtNzc4LDE5ICs3NzksMjMgQEAgQkJUZXN0RXhp dEJvb3RTZXJ2aWNlc0NvbnNpc3RlbmN5VGVzdCAoDQo+ID4gPiA+ICAgICkNCj4gPiA+ID4gIHsN Cj4gPiA+ID4gICAgRUZJX1NUQU5EQVJEX1RFU1RfTElCUkFSWV9QUk9UT0NPTCAgICpTdGFuZGFy ZExpYjsNCj4gPiA+ID4gKyAgRUZJX1RFU1RfUkVDT1ZFUllfTElCUkFSWV9QUk9UT0NPTCAgICpS ZWNvdmVyeUxpYjsNCj4gPiA+ID4gICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAg ICAgIFN0YXR1czsNCj4gPiA+ID4gICAgRUZJX1RFU1RfQVNTRVJUSU9OICAgICAgICAgICAgICAg ICAgIEFzc2VydGlvblR5cGU7DQo+ID4gPiA+ICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBNYXBLZXk7DQo+ID4gPiA+IC0NCj4gPiA+ID4gKyAgVUlOVE4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFNpemU7DQo+ID4gPiA+ICAgIFVJTlROICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBOdW1iZXJzOw0KPiA+ID4gPiAgICBVSU5UTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRGF0YVNpemU7DQo+ID4gPiA+IC0gIFVJTlQ4ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBEYXRhW01BWF9CVUZGRVJfU0laRV07DQo+ID4gPiA+ICsg IFJFU0VUX0RBVEEgICAgICAgICAgICAgICAgICAgICAgICAgICAqUmVzZXREYXRhOw0KPiA+ID4g PiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVtTVEFUVVNfQlVG RkVSX1NJWkVdOw0KPiA+ID4gPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQnVmZmVyW1JFQ09WRVJfQlVGRkVSX1NJWg0KPiA+ID4gPiBFXTsNCj4gPiA+ID4gICAgRUZJ X1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVyblN0YXR1czsNCj4gPiA+ID4N Cj4gPiA+ID4gICAgLy8NCj4gPiA+ID4gICAgLy8gSW5pdA0KPiA+ID4gPiAgICAvLw0KPiA+ID4g PiAgICBTdGFuZGFyZExpYiA9IE5VTEw7DQo+ID4gPiA+ICsgIFJlY292ZXJ5TGliID0gTlVMTDsN Cj4gPiA+ID4NCj4gPiA+ID4gICAgLy9fUkVTRVRfREFUQQ0KPiA+ID4gPiAgICAvLyBHZXQgdGhl IFN0YW5kYXJkIExpYnJhcnkgSW50ZXJmYWNlIEBAIC04MDMsNiArODA4LDE0IEBADQo+ID4gPiA+ IEJCVGVzdEV4aXRCb290U2VydmljZXNDb25zaXN0ZW5jeVRlc3QgKA0KPiA+ID4gPiAgICAgIHJl dHVybiBTdGF0dXM7DQo+ID4gPiA+ICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKyAgU3RhdHVzID0g Z3RCUy0+SGFuZGxlUHJvdG9jb2wgKA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIFN1cHBv cnRIYW5kbGUsDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgJmdFZmlUZXN0UmVjb3ZlcnlM aWJyYXJ5R3VpZCwNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAoVk9JRCAqKikgJlJlY292 ZXJ5TGliKTsgIGlmDQo+ID4gPiA+IChFRklfRVJST1IoU3RhdHVzKSkgew0KPiA+ID4gPiArICAg IHJldHVybiBTdGF0dXM7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiAgICBTdGF0 dXMgPSBJbWFnZVRlc3RDaGVja0ZvckNsZWFuRW52aXJvbm1lbnQgKCZOdW1iZXJzKTsNCj4gPiA+ ID4gICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQo+ID4gPiA+ICAgICAgU3RhbmRhcmRMaWIt PlJlY29yZEFzc2VydGlvbiAoDQo+ID4gPiA+IEBAIC04MTksMjUgKzgzMiw4MCBAQCBCQlRlc3RF eGl0Qm9vdFNlcnZpY2VzQ29uc2lzdGVuY3lUZXN0ICgNCj4gPiA+ID4gICAgICByZXR1cm4gU3Rh dHVzOw0KPiA+ID4gPiAgICB9DQo+ID4gPiA+DQo+ID4gPiA+IC0gIERhdGFTaXplID0gTUFYX0JV RkZFUl9TSVpFOw0KPiA+ID4gPiAtICBTdGF0dXMgPSBndFJULT5HZXRWYXJpYWJsZSAoDQo+ID4g PiA+IC0gICAgICAgICAgICAgICAgIEwiRXhpdEJvb3RTZXJ2aWNlc1Rlc3RWYXJpYWJsZSIsICAg ICAgICAgICAgIC8vDQo+ID4gPiA+IFZhcmlhYmxlTmFtZQ0KPiA+ID4gPiAtICAgICAgICAgICAg ICAgICAmZ1Rlc3RWZW5kb3IxR3VpZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLw0KPiA+ ID4gPiBWZW5kb3JHdWlkDQo+ID4gPiA+IC0gICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vDQo+ID4gPiA+IEF0dHJpYnV0ZXMNCj4g PiA+ID4gLSAgICAgICAgICAgICAgICAgJkRhdGFTaXplLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLy8NCj4gPiA+ID4gRGF0YVNpemUNCj4gPiA+ID4gLSAgICAgICAgICAgICAg ICAgJlJldHVyblN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8NCj4gPiA+ ID4gRGF0YQ0KPiA+ID4gPiAtICAgICAgICAgICAgICAgICApOw0KPiA+ID4gPiArICAvLw0KPiA+ ID4gPiArICAvLyBSZWFkIHJlc2V0IHJlY29yZA0KPiA+ID4gPiArICAvLw0KPiA+ID4gPiArICBT dGF0dXMgPSBSZWNvdmVyeUxpYi0+UmVhZFJlc2V0UmVjb3JkICgNCj4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgUmVjb3ZlcnlMaWIsDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICZTaXplLA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZm ZXINCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+DQo+ID4gPiBT dGF0dXMgc2hvdWxkIGJlIGNoZWNrZWQgYmVmb3JlIHByb2NlZWRpbmcgZnVydGhlci4gVW5oYW5k bGVkIGVycm9yDQo+ID4gPiBjb25kaXRpb24uDQo+ID4NCj4gPiBUaGUgY29kZSBuZWVkbid0IGhh bmRsZSBwb3NzaWJsZSBlcnJvciBzdGF0dXMgaGVyZSwgYW5kIGl0IHdpbGwgYmUNCj4gPiBoYW5k bGVkIGluIHRoZSBqdWRnZW1lX1JFU0VUX0RBVEFudCBzdGF0ZW1lbnQgbGF0ZXIuDQo+ID4gSW4g ZmFjdCwgRXJyb3Igc3RhdHVzIGNvZGUgZG9lc24ndCBtZWFuIGJhZCwganVzdCBtZWFucyBubyBy ZWNvdmVyeQ0KPiA+IGRhdGEgZXhpc3RzIHRoaXMgdGltZS9pcyB3cml0dGVuIGJlZm9yZS4NCj4g QXMgSSBzZWUgaXQsIGlmIFN0YXR1cyBpcyAiZXJyb3IiLCB0aGVyZSBpcyBubyBwb2ludCBpbiBh c3NpZ25pbmcNCj4gUmVzZXREYXRhIHRvIEJ1ZmZlciBhcyBCdWZmZXIgaXMgbm90IHZhbGlkIGFu eW1vcmUuIEhlbmNlIHRoZSByZWFzb24NCj4gZm9yIHRoZSBjb21tZW50Lg0KPiBNeSBleHBlY3Rh dGlvbiB3YXMganVzdCByZWFycmFuZ2VtZW50IG9mICJpZiIgY29uZGl0aW9uYWwgc3RhdGVtZW50 cy4NCj4gDQpZZXMsIEJ1ZmZlciBuZWVkbid0IGJlIHZhbGlkYXRlZCBoZXJlIGFuZCBjYW4gYmUg YXNzaWduZWQgdG8gUmVzZXREYXRhIGRpcmVjdGx5LiANCg0KPiA+DQo+ID4gPg0KPiA+ID4gPiAr ICBSZXNldERhdGEgPSAoUkVTRVRfREFUQSAqKUJ1ZmZlcjsNCj4gPiA+DQo+ID4gPiBCZWZvcmUg aW5pdGlhbGl6aW5nLCBzaXplIGNoZWNrIHNob3VsZCBiZSBwZXJmb3JtZWQuDQo+ID4gPiBVbmhh bmRsZWQgZXJyb3IgY29uZGl0aW9uLg0KPiA+DQo+ID4gU2l6ZSBpcyBjaGVja2VkIGluIHRoZSBq dWRnZW1lbnQgc3RhdGVtZW50IGxhdGVyLCB0aGUgc2FtZSB0aW1lIGFzDQo+ID4gdGhlIHN0YXR1 cyBjaGVjay4NCj4gPiBJbml0aWFsaXppbmcgaGVyZSBkb2Vzbid0IGhhdmUgaXNzdWUgYmVjYXVz ZSB0aGUgQnVmZmVyIGlzIGxvY2FsIGJ1Zg0KPiA+IGFscmVhZHkgZGVmaW5lZC9hbGxvY2F0ZWQg aW4gdGhpcyBmdW5jdGlvbi4NCj4gPg0KPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gLSAgaWYgKFN0 YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KPiA+ID4gPiArICBpZiAoRUZJX0VSUk9SKFN0YXR1cykg fHwgKFNpemUgPCBzaXplb2YoUkVTRVRfREFUQSkpKSB7DQo+ID4gPiA+ICsgICAgLy8NCj4gPiA+ ID4gKyAgICAvLyBTdGVwIDENCj4gPiA+ID4gKyAgICAvLw0KPiA+ID4NCj4gPiA+IFRoaXMgY2hl Y2sgaXMgdW5uZWNlc3NhcnkgaWYgdGhlIGFib3ZlIGNvbW1lbnRzIHJlZ2FyZGluZyB1bmhhbmRs ZWQNCj4gPiA+IGVycm9yDQo+ID4gPiBjb25kaXRpb24gYXJlIHJlc29sdmVkLg0KPiA+DQo+ID4g SGVyZSwgdGhlIGNvZGUgbmVlZG4ndCBoYW5kbGUgYW55dGhpbmcuIEl0IG1lYW5zIG5vIHJlY292 ZXJ5IGRhdGEgaXMNCj4gPiBmb3VuZC4NCj4gUmlnaHQsIGlmIHRoZXJlIGlzIG5vIGFjdGlvbiAo bm90aGluZyB0byBoYW5kbGUpIGFmdGVyIHRoZSAiaWYiDQo+IHN0YXRlbWVudCwgdGhlbiB0aGVy ZSBpcyBubyBwb2ludCBpbiBoYXZpbmcgdGhlICJpZiIgY29uZGl0aW9uLg0KPiBQbGVhc2UgcmVh cnJhbmdlIHRoZSBjb25kaXRpb25hbCBzdGF0ZW1lbnRzIHNvIHRoYXQgZm9yIGV2ZXJ5IGNvbmRp dGlvbg0KPiB0aGVyZSBpcyBhbiBhY3Rpb24gdG8gZm9sbG93Lg0KPiANCllvdXIgY29uY2VybiBp cyBubyBhY3Rpb24gaW4gMXN0IOKAnGlm4oCdIHN0YXRlbWVudCwgYW5kIHdhbnQgdG8gaGFzIGFj dGlvbiBmb3IgZWFjaCBjb25kaXRpb24gc3RhdGVtZW50Lg0KSSBjYW4gY29uc2lkZXIgdGhpcywg YnV0IHRoZSBsb2dpYyhuZXN0IHN0YXRlbWVudCkgbWF5IGJlIGluY3JlYXNlZC4NCg0KPiA+IEJ1 dCBJIHdvdWxkIGxpa2UgdG8gYWRqdXN0IHRoZSBjb21tZW50IHRvICdTdGVwIDAnIGFuZCBhZGQg IiBubw0KPiA+IHJlY292ZXJ5IGRhdGEgaXMgZm91bmQgIiB0byBtYWtlIGl0IGNsZWFyLg0KPiA+ IENvcnJlc3BvbmRpbmdseSwgYWRqdXN0IHRoZSBjb21tZW50ICdTdGVwIDInIGluIGp1ZGdlbWVu dCBicmFuY2gNCj4gPiBiZWxvdyB0byAnU3RlcCAxLCByZWNvdmVyeSBkYXRhIGlzIGZvdW5kJy4N Cj4gPg0KPiA+ID4NCj4gPiA+ID4gKyAgfSBlbHNlIGlmIChSZXNldERhdGEtPlN0ZXAgPT0gMSkg ew0KPiA+ID4gPiArICAgIC8vDQo+ID4gPiA+ICsgICAgLy8gU3RlcCAyDQo+ID4gPiA+ICsgICAg Ly8NCj4gPiA+ID4gKyAgICBEYXRhU2l6ZSA9IFNUQVRVU19CVUZGRVJfU0laRTsNCj4gPiA+ID4g KyAgICBTdGF0dXMgICA9IGd0UlQtPkdldFZhcmlhYmxlICgNCj4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgTCJFeGl0Qm9vdFNlcnZpY2VzVGVzdFZhcmlhYmxlIiwNCj4gPiA+ID4gLy8g VmFyaWFibGVOYW1lDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICZnVGVzdFZlbmRv cjFHdWlkLA0KPiA+ID4gPiAvLyBWZW5kb3JHdWlkDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIE5VTEwsDQo+ID4gPiA+IC8vIEF0dHJpYnV0ZXMNCj4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgJkRhdGFTaXplLA0KPiA+ID4gPiAvLyBEYXRhU2l6ZQ0KPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAmUmV0dXJuU3RhdHVzDQo+ID4gPiA+IC8vIERhdGENCj4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgIGlm IChFRklfRVJST1IoU3RhdHVzKSkgew0KPiA+ID4gPiArICAgICAgU3RhbmRhcmRMaWItPlJlY29y ZEFzc2VydGlvbiAoDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwN Cj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQs DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBnVGVzdEdlbmVyaWNGYWlsdXJlR3VpZCwN Cj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIEwiR2V0VmFyaWFibGUgLSBDYW4ndCBnZXQg dGhlIHRlc3QgdmFyaWFibGUNCj4gPiA+ID4gLQ0KPiA+ID4gPiBFeGl0Qm9vdFNlcnZpY2VzVGVz dFZhcmlhYmxlIiwNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIEwiJWE6JWQ6U3RhdHVz IC0gJXIiLA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sDQo+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAoVUlOVE4pX19MSU5FX18sDQo+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICBTdGF0dXMNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICk7DQo+ ID4gPiA+ICsgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gICAg ICBnb3RvIENoZWNrUmVzdWx0Ow0KPiA+ID4gPiArICB9IGVsc2Ugew0KPiA+ID4gPiArICAgIHJl dHVybiBFRklfTE9BRF9FUlJPUjsNCj4gPiA+ID4gICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiAgICAv Lw0KPiA+ID4gPiAgICAvLyBQcmludCBvdXQgc29tZSBpbmZvcm1hdGlvbiB0byBhdm9pZCB0aGUg dXNlciB0aG91Z2h0IGl0IGlzDQo+ID4gPiA+IGFuDQo+ID4gPiA+IGVycm9yDQo+ID4gPiA+ICAg IC8vDQo+ID4gPiA+IC0gIFNjdFByaW50IChMIlN5c3RlbSB3aWxsIGNvbGQgcmVzZXQgYWZ0ZXIg MiBzZWNvbmQuIHBsZWFzZSBydW4NCj4gPiA+ID4gdGhpcw0KPiA+ID4gPiB0ZXN0IGFnYWluLi4u Iik7DQo+ID4gPiA+ICsgIFNjdFByaW50IChMIlN5c3RlbSB3aWxsIGNvbGQgcmVzZXQgYWZ0ZXIg MiBzZWNvbmQgYW5kIHRlc3QNCj4gPiA+ID4gd2lsbCBiZQ0KPiA+ID4gPiByZXN1bWVkIGFmdGVy IHJlYm9vdC4iKTsNCj4gPiA+ID4gICAgZ3RCUy0+U3RhbGwgKDIwMDAwMDApOw0KPiA+ID4gPg0K PiA+ID4gPiArDQo+ID4gPiA+ICsgIFJlc2V0RGF0YS0+U3RlcCA9IDE7DQo+ID4gPiA+ICsgIFJl c2V0RGF0YS0+VHBsSW5kZXggPSAwOw0KPiA+ID4gPiArICBTdGF0dXMgPSBSZWNvdmVyeUxpYi0+ V3JpdGVSZXNldFJlY29yZCAoDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg UmVjb3ZlcnlMaWIsDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9m IChSRVNFVF9EQVRBKSwNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZm ZXINCj4gPiA+DQo+ID4gPiBUbyBtYWtlIGl0ICBjbGVhciBpdCBzaG91bGQgYmUgKFVJTlQ4ICop UmVzZXREYXRhLg0KPiA+ID4gQXMgQnVmZmVyIGlzIG9mIHNpemUgMTAyNCwgd2hlcmUgYXMgUmVz ZXREYXRhIGlzIG5vdC4NCj4gPiA+IGkuZS4sIEJ1ZmZlciBzaG91bGQgYmUgdXNlZCBhYm92ZS4N Cj4gPiA+DQo+ID4NCj4gPiBJIGFncmVlIG9uIHRoaXMgc3VnZ2VzdGlvbi4gV2lsbCBmb2xsb3cg d2hlbiBjb21taXQgdGhpcyBwYXRjaCB0bw0KPiA+IHJlcG8uDQo+IFRoYW5rcy4NCj4gDQo+ID4N Cj4gPiBCZXN0IFJlZ2FyZHMNCj4gPiBFcmljDQo+ID4NCj4gPiA+DQo+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4gKyAgaWYgKEVGSV9FUlJPUihTdGF0dXMp KSB7DQo+ID4gPiA+ICsgICAgU3RhbmRhcmRMaWItPlJlY29yZEFzc2VydGlvbiAoDQo+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQo+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRCwNCj4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICBnVGVzdEdlbmVyaWNGYWlsdXJlR3VpZCwNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICBMIlRlc3RSZWNvdmVyeUxpYiAtIFdyaXRlUmVzZXRSZWNvcmQiLA0KPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgIEwiJWE6JWQ6U3RhdHVzIC0gJXIiLA0KPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgIF9fRklMRV9fLA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIChVSU5UTilfX0xJ TkVfXywNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICBTdGF0dXMNCj4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICApOw0KPiA+ID4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiA+ICsg IH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArDQo+ID4gPiA+ICAgIC8vDQo+ID4gPiA+ICAgIC8vIENo ZWNrcG9pbnQgMToNCj4gPiA+ID4gICAgLy8gMy41LjIuMSAgRXhpdEJvb3RTZXJ2aWNlcyBzaG91 bGQgbm90IHN1Y2NlZWQgd2l0aCBhbg0KPiA+ID4gPiBpbnZhbGlkDQo+ID4gPiA+IE1hcEtleSBA QCAtODg1LDcgKzk1Myw3IEBAIEJCVGVzdEV4aXRCb290U2VydmljZXNDb25zaXN0ZW5jeVRlc3QN Cj4gPiA+ID4gKA0KPiA+ID4gPiAgICAvL3Jlc2V0IHN5c3RlbQ0KPiA+ID4gPiAgICBndFJULT5S ZXNldFN5c3RlbSAoRWZpUmVzZXRDb2xkLCBFRklfU1VDQ0VTUywgMCwgTlVMTCk7DQo+ID4gPiA+ DQo+ID4gPiA+IC0gIC8vIGdldCB2YXIgdG8gZ2V0IHRoZSBzdGF0dXMNCj4gPiA+ID4gKw0KPiA+ ID4gPiAgQ2hlY2tSZXN1bHQ6DQo+ID4gPiA+DQo+ID4gPiA+ICAgIGlmIChSZXR1cm5TdGF0dXMg PT0gRUZJX0lOVkFMSURfUEFSQU1FVEVSKSB7DQo+ID4gPg0KPiA+ID4NCj4gPiA+DQo+ID4NCj4g Pg0KPiA+IA0KPiA+DQoNCg==