From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.100; helo=mga07.intel.com; envelope-from=jiewen.yao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 6B670210D83F8 for ; Fri, 15 Jun 2018 07:02:51 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Jun 2018 07:02:50 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,227,1526367600"; d="scan'208";a="49268266" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by orsmga007.jf.intel.com with ESMTP; 15 Jun 2018 07:02:50 -0700 Received: from fmsmsx124.amr.corp.intel.com (10.18.125.39) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 15 Jun 2018 07:02:50 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by fmsmsx124.amr.corp.intel.com (10.18.125.39) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 15 Jun 2018 07:02:49 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.223]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.116]) with mapi id 14.03.0319.002; Fri, 15 Jun 2018 22:02:48 +0800 From: "Yao, Jiewen" To: Ard Biesheuvel , "Zeng, Star" CC: "edk2-devel@lists.01.org" , "leif.lindholm@linaro.org" , "Kinney, Michael D" Thread-Topic: [PATCH v4 1/4] MdeModulePkg/CapsuleRuntimeDxe: clean the capsule payload to DRAM Thread-Index: AQHUBJb2+QHwnXUf90+pcAr1ylvVMKRhWRYA Date: Fri, 15 Jun 2018 14:02:47 +0000 Message-ID: <74D8A39837DF1E4DA445A8C0B3885C503AC4A65A@shsmsx102.ccr.corp.intel.com> References: <20180613080901.7156-1-ard.biesheuvel@linaro.org> <20180613080901.7156-2-ard.biesheuvel@linaro.org> <0C09AFA07DD0434D9E2A0C6AEB0483103BB57B3D@shsmsx102.ccr.corp.intel.com> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYTU1YWExMzctODFmZC00ZGNmLWJiOTktYTVlZGMyZTMzYWZiIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiMTF5M2MzMGNOcDdSbld0dVFTa2tOYldQYlVSVCtPY1RiMnlDc2FDSlY0bmV3WjBwTmF0U0paWTNOVzJGcGFHZiJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH v4 1/4] MdeModulePkg/CapsuleRuntimeDxe: clean the capsule payload to DRAM X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 15 Jun 2018 14:02:51 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UmV2aWV3ZWQtYnk6IEppZXdlbi55YW9AaW50ZWwuY29tDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gRnJvbTogQXJkIEJpZXNoZXV2ZWwgW21haWx0bzphcmQuYmllc2hldXZlbEBs aW5hcm8ub3JnXQ0KPiBTZW50OiBGcmlkYXksIEp1bmUgMTUsIDIwMTggMzo1MiBBTQ0KPiBUbzog WmVuZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT4NCj4gQ2M6IGVkazItZGV2ZWxAbGlzdHMu MDEub3JnOyBsZWlmLmxpbmRob2xtQGxpbmFyby5vcmc7IFlhbywgSmlld2VuDQo+IDxqaWV3ZW4u eWFvQGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVs LmNvbT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2NCAxLzRdIE1kZU1vZHVsZVBrZy9DYXBzdWxl UnVudGltZUR4ZTogY2xlYW4gdGhlDQo+IGNhcHN1bGUgcGF5bG9hZCB0byBEUkFNDQo+IA0KPiBP biAxNCBKdW5lIDIwMTggYXQgMDI6NTQsIFplbmcsIFN0YXIgPHN0YXIuemVuZ0BpbnRlbC5jb20+ IHdyb3RlOg0KPiA+IFdpdGggJ0VGSUFQSScgcmVtb3ZlZCBmcm9tIElzUGVyc2lzdEFjcm9zc1Jl c2V0Q2Fwc3VsZVN1cHBvcnRlZCBhbmQNCj4gQ2Fwc3VsZUNhY2hlV3JpdGVCYWNrIGRlZmluaXRp b25zLCBSZXZpZXdlZC1ieTogU3RhciBaZW5nDQo+IDxzdGFyLnplbmdAaW50ZWwuY29tPi4NCj4g Pg0KPiA+IFlvdSBjYW4gd2FpdCBhIGxpdHRsZSBtb3JlIHRpbWUgaW4gY2FzZSBKaWV3ZW4vTWlr ZSBoYXMgY29tbWVudHMuDQo+ID4NCj4gDQo+IFRoYW5rIHlvdSBTdGFyLg0KPiANCj4gSSB3aWxs IHB1c2ggdGhlc2UgYnkgdGhlIGVuZCBvZiB0b2RheSB1bmxlc3MgYW55b25lIG9iamVjdHMuDQo+ IA0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IEFyZCBCaWVz aGV1dmVsIFttYWlsdG86YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZ10NCj4gPiBTZW50OiBXZWRu ZXNkYXksIEp1bmUgMTMsIDIwMTggNDowOSBQTQ0KPiA+IFRvOiBlZGsyLWRldmVsQGxpc3RzLjAx Lm9yZw0KPiA+IENjOiBsZWlmLmxpbmRob2xtQGxpbmFyby5vcmc7IFplbmcsIFN0YXIgPHN0YXIu emVuZ0BpbnRlbC5jb20+OyBZYW8sIEppZXdlbg0KPiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBL aW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBBcmQNCj4gQmll c2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4NCj4gPiBTdWJqZWN0OiBbUEFUQ0gg djQgMS80XSBNZGVNb2R1bGVQa2cvQ2Fwc3VsZVJ1bnRpbWVEeGU6IGNsZWFuIHRoZQ0KPiBjYXBz dWxlIHBheWxvYWQgdG8gRFJBTQ0KPiA+DQo+ID4gV2hlbiBjYXBzdWxlIHVwZGF0ZXMgYXJlIHN0 YWdlZCBmb3IgcHJvY2Vzc2luZyBhZnRlciBhIHdhcm0gcmVib290LCB0aGV5IGFyZQ0KPiBjb3Bp ZWQgaW50byBtZW1vcnkgd2l0aCB0aGUgTU1VIGFuZCBjYWNoZXMgZW5hYmxlZC4gV2hlbiB0aGUg Y2Fwc3VsZSBQRUkNCj4gZ2V0cyBhcm91bmQgdG8gY29hbGVzY2luZyB0aGUgY2Fwc3VsZSwgdGhl IE1NVSBhbmQgY2FjaGVzIG1heSBzdGlsbCBiZSBkaXNhYmxlZCwNCj4gYW5kIHNvIG9uIGFyY2hp dGVjdHVyZXMgd2hlcmUgdW5jYWNoZWQgYWNjZXNzZXMgYXJlIGluY29oZXJlbnQgd2l0aCB0aGUg Y2FjaGVzDQo+IChzdWNoIGFzIEFSTSBhbmQgQUFSQ0g2NCksIHdlIG5lZWQgdG8gZW5zdXJlIHRo YXQgdGhlIGRhdGEgcGFzc2VkIGludG8NCj4gVXBkYXRlQ2Fwc3VsZSgpIGlzIHdyaXR0ZW4gYmFj ayB0byBtYWluIG1lbW9yeSBiZWZvcmUgcGVyZm9ybWluZyB0aGUgd2FybQ0KPiByZWJvb3QuDQo+ ID4NCj4gPiBVbmZvcnR1bmF0ZWx5LCBvbiBBUk0sIHRoZSBvbmx5IHR5cGUgb2YgY2FjaGUgbWFp bnRlbmFuY2UgaW5zdHJ1Y3Rpb25zIHRoYXQNCj4gYXJlIHN1aXRhYmxlIGZvciB0aGlzIHB1cnBv c2Ugb3BlcmF0ZSBvbiB2aXJ0dWFsIGFkZHJlc3NlcyBvbmx5LCBhbmQgZ2l2ZW4gdGhhdCB0aGUN Cj4gVXBkYXRlQ2Fwc3VsZSgpIHByb3RvdHlwZSBpbmNsdWRlcyB0aGUgcGh5c2ljYWwgYWRkcmVz cyBvZiBhIGxpbmtlZCBsaXN0IG9mDQo+IHNjYXR0ZXIvZ2F0aGVyIGRhdGEgc3RydWN0dXJlcyB0 aGF0IGFyZSBtYXBwZWQgYXQgYW4gYWRkcmVzcyB0aGF0IGlzIHVua25vd24gdG8NCj4gdGhlIGZp cm13YXJlIChhbmQgbWF5IG5vdCBldmVuIGJlIG1hcHBlZCBhdCBhbGwgd2hlbiBVcGRhdGVDYXBz dWxlKCkgaXMNCj4gaW52b2tlZCksIHdlIGNhbiBvbmx5IHBlcmZvcm0gdGhpcyBjYWNoZSBtYWlu dGVuYW5jZSBhdCBib290IHRpbWUuIEZvcnR1bmF0ZWx5LA0KPiBib3RoIFdpbmRvd3MgYW5kIExp bnV4IG9ubHkgaW52b2tlIFVwZGF0ZUNhcHN1bGUoKSBiZWZvcmUgY2FsbGluZw0KPiBFeGl0Qm9v dFNlcnZpY2VzKCksIHNvIHRoaXMgaXMgbm90IGEgcHJvYmxlbSBpbiBwcmFjdGljZS4NCj4gPg0K PiA+IEluIHRoZSBmdXR1cmUsIHdlIG1heSBwcm9wb3NlIGFkZGluZyBhIHNlY3VyZSBmaXJtd2Fy ZSBzZXJ2aWNlIHRoYXQgcGVybWl0cw0KPiBwZXJmb3JtaW5nIHRoZSBjYWNoZSBtYWludGVuYW5j ZSBhdCBPUyBydW50aW1lLCBpbiB3aGljaCBjYXNlIHRoaXMgY29kZSBtYXkNCj4gYmUgZW5oYW5j ZWQgdG8gY2FsbCB0aGF0IHNlcnZpY2UgaWYgYXZhaWxhYmxlLiBGb3Igbm93LCB3ZSBqdXN0IGZh aWwgYW55DQo+IFVwZGF0ZUNhcHN1bGUoKSBjYWxscyBwZXJmb3JtZWQgYXQgT1MgcnVudGltZSBv biBBUk0uDQo+ID4NCj4gPiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlv biBBZ3JlZW1lbnQgMS4xDQo+ID4gU2lnbmVkLW9mZi1ieTogQXJkIEJpZXNoZXV2ZWwgPGFyZC5i aWVzaGV1dmVsQGxpbmFyby5vcmc+DQo+ID4gLS0tDQo+ID4gIE1kZU1vZHVsZVBrZy9Vbml2ZXJz YWwvQ2Fwc3VsZVJ1bnRpbWVEeGUvQXJtL0NhcHN1bGVSZXNldC5jICAgIHwgNzcNCj4gKysrKysr KysrKysrKysrKysrKysNCj4gPiAgTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxlUnVudGlt ZUR4ZS9DYXBzdWxlUmVzZXQuYyAgICAgICAgfCA1MQ0KPiArKysrKysrKysrKysrDQo+ID4gIE1k ZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ2Fwc3VsZVJ1bnRpbWVEeGUvQ2Fwc3VsZVJ1bnRpbWVEeGUu aW5mIHwgMTQNCj4gKysrLQ0KPiA+ICBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0NhcHN1bGVSdW50 aW1lRHhlL0NhcHN1bGVTZXJ2aWNlLmMgICAgICB8IDMzDQo+ICsrLS0tLS0tLQ0KPiA+ICBNZGVN b2R1bGVQa2cvVW5pdmVyc2FsL0NhcHN1bGVSdW50aW1lRHhlL0NhcHN1bGVTZXJ2aWNlLmggICAg ICB8IDczDQo+ICsrKysrKysrKysrKysrKysrKysNCj4gPiAgNSBmaWxlcyBjaGFuZ2VkLCAyMTkg aW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvTWRl TW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxlUnVudGltZUR4ZS9Bcm0vQ2Fwc3VsZVJlc2V0LmMN Cj4gYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0NhcHN1bGVSdW50aW1lRHhlL0FybS9DYXBzdWxl UmVzZXQuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAw Li43ZTBjYTA2Y2U3ZDANCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvTWRlTW9kdWxlUGtn L1VuaXZlcnNhbC9DYXBzdWxlUnVudGltZUR4ZS9Bcm0vQ2Fwc3VsZVJlc2V0LmMNCj4gPiBAQCAt MCwwICsxLDc3IEBADQo+ID4gKyAvKiogQGZpbGUNCj4gPiArICBBUk0gaW1wbGVtZW50YXRpb24g b2YgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIHJvdXRpbmVzIHJlbGF0ZWQgdG8NCj4gPiArIFBlcnNp c3RBY3Jvc3NSZXNldCBjYXBzdWxlcw0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTgs IExpbmFybywgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArDQo+ID4gKyAgVGhp cyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbGljZW5zZWQgYW5k IG1hZGUNCj4gPiArIGF2YWlsYWJsZSAgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZSBCU0QgTGljZW5zZSB3aGljaA0KPiA+ICsgYWNjb21wYW5pZXMgdGhpcyAgZGlzdHJpYnV0 aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gPiArIGZvdW5kIGF0 ICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4gKw0K PiA+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBP TiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+ICsgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJF U0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4g PiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIkNhcHN1bGVTZXJ2aWNlLmgiDQo+ ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9DYWNoZU1haW50ZW5hbmNlTGliLmg+DQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICBXaGV0aGVyIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyBjYXBzdWxl cyB0aGF0IHBlcnNpc3QgYWNyb3NzIHJlc2V0Lg0KPiA+ICtOb3RlIHRoYXQNCj4gPiArICBzb21l IHBsYXRmb3JtcyBvbmx5IHN1cHBvcnQgc3VjaCBjYXBzdWxlcyBhdCBib290IHRpbWUuDQo+ID4g Kw0KPiA+ICsgIEByZXR1cm4gVFJVRSAgaWYgYSBQZXJzaXN0QWNyb3NzUmVzZXQgY2Fwc3VsZSBt YXkgYmUgcGFzc2VkIHRvDQo+IFVwZGF0ZUNhcHN1bGUoKQ0KPiA+ICsgICAgICAgICAgICAgICAg YXQgdGhpcyB0aW1lDQo+ID4gKyAgICAgICAgICBGQUxTRSBvdGhlcndpc2UNCj4gPiArKiovDQo+ ID4gK0JPT0xFQU4NCj4gPiArRUZJQVBJDQo+ID4gK0lzUGVyc2lzdEFjcm9zc1Jlc2V0Q2Fwc3Vs ZVN1cHBvcnRlZCAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIC8vDQo+ ID4gKyAgLy8gQVJNIHJlcXVpcmVzIHRoZSBjYXBzdWxlIHBheWxvYWQgdG8gYmUgY2xlYW5lZCB0 byB0aGUgcG9pbnQgb2YNCj4gPiArY29oZXJlbmN5DQo+ID4gKyAgLy8gKFBvQyksIGJ1dCBvbmx5 IHBlcm1pdHMgZG9pbmcgc28gdXNpbmcgY2FjaGUgbWFpbnRlbmFuY2UNCj4gPiAraW5zdHJ1Y3Rp b25zIHRoYXQNCj4gPiArICAvLyBvcGVyYXRlIG9uIHZpcnR1YWwgYWRkcmVzc2VzLiBTaW5jZSBh dCBydW50aW1lLCB3ZSBkb24ndCBrbm93IHRoZQ0KPiA+ICt2aXJ0dWFsDQo+ID4gKyAgLy8gYWRk cmVzc2VzIG9mIHRoZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCBtYWtlIHVwIHRoZSBzY2F0dGVyL2dh dGhlcg0KPiA+ICtsaXN0LCB3ZQ0KPiA+ICsgIC8vIGNhbm5vdCBwZXJmb3JtIHRoZSBtYWludGVu YW5jZSwgYW5kIGFsbCB3ZSBjYW4gZG8gaXMgZ2l2ZSB1cC4NCj4gPiArICAvLw0KPiA+ICsgIHJl dHVybiBGZWF0dXJlUGNkR2V0IChQY2RTdXBwb3J0VXBkYXRlQ2Fwc3VsZVJlc2V0KSAmJiAhRWZp QXRSdW50aW1lDQo+ID4gKygpOyB9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBXcml0ZXMgQmFj ayBhIHJhbmdlIG9mIGRhdGEgY2FjaGUgbGluZXMgY292ZXJpbmcgYSBzZXQgb2YgY2Fwc3VsZXMg aW4NCj4gbWVtb3J5Lg0KPiA+ICsNCj4gPiArICBXcml0ZXMgQmFjayB0aGUgZGF0YSBjYWNoZSBs aW5lcyBzcGVjaWZpZWQgYnkgU2NhdHRlckdhdGhlckxpc3QuDQo+ID4gKw0KPiA+ICsgIEBwYXJh bSAgU2NhdHRlckdhdGhlckxpc3QgUGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgZGF0YSBzdHJ1Y3R1 cmUgdGhhdA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIGEgc2V0 IG9mIGNhcHN1bGVzIGluIG1lbW9yeQ0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiAr RUZJQVBJDQo+ID4gK0NhcHN1bGVDYWNoZVdyaXRlQmFjayAoDQo+ID4gKyAgSU4gIEVGSV9QSFlT SUNBTF9BRERSRVNTICAgIFNjYXR0ZXJHYXRoZXJMaXN0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4g KyAgRUZJX0NBUFNVTEVfQkxPQ0tfREVTQ1JJUFRPUiAgICAqRGVzYzsNCj4gPiArDQo+ID4gKyAg RGVzYyA9IChFRklfQ0FQU1VMRV9CTE9DS19ERVNDUklQVE9SICopKFVJTlROKVNjYXR0ZXJHYXRo ZXJMaXN0Ow0KPiBkbw0KPiA+ICsgew0KPiA+ICsgICAgV3JpdGVCYWNrRGF0YUNhY2hlUmFuZ2Ug KERlc2MsIHNpemVvZiAqRGVzYyk7DQo+ID4gKw0KPiA+ICsgICAgaWYgKERlc2MtPkxlbmd0aCA+ IDApIHsNCj4gPiArICAgICAgV3JpdGVCYWNrRGF0YUNhY2hlUmFuZ2UgKChWT0lEICopKFVJTlRO KURlc2MtPlVuaW9uLkRhdGFCbG9jaywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIERlc2MtPkxlbmd0aA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsN Cj4gPiArICAgICAgRGVzYysrOw0KPiA+ICsgICAgfSBlbHNlIGlmIChEZXNjLT5Vbmlvbi5Db250 aW51YXRpb25Qb2ludGVyID4gMCkgew0KPiA+ICsgICAgICBEZXNjID0gKEVGSV9DQVBTVUxFX0JM T0NLX0RFU0NSSVBUT1INCj4gKikoVUlOVE4pRGVzYy0+VW5pb24uQ29udGludWF0aW9uUG9pbnRl cjsNCj4gPiArICAgIH0NCj4gPiArICB9IHdoaWxlIChEZXNjLT5MZW5ndGggPiAwIHx8IERlc2Mt PlVuaW9uLkNvbnRpbnVhdGlvblBvaW50ZXIgPiAwKTsNCj4gPiArDQo+ID4gKyAgV3JpdGVCYWNr RGF0YUNhY2hlUmFuZ2UgKERlc2MsIHNpemVvZiAqRGVzYyk7IH0NCj4gPiBkaWZmIC0tZ2l0IGEv TWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxlUnVudGltZUR4ZS9DYXBzdWxlUmVzZXQuYw0K PiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ2Fwc3VsZVJ1bnRpbWVEeGUvQ2Fwc3VsZVJlc2V0 LmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uMDk2 MTY5OTllM2Y4DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL01kZU1vZHVsZVBrZy9Vbml2 ZXJzYWwvQ2Fwc3VsZVJ1bnRpbWVEeGUvQ2Fwc3VsZVJlc2V0LmMNCj4gPiBAQCAtMCwwICsxLDUx IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYXJj aGl0ZWN0dXJlIHNwZWNpZmljIHJvdXRpbmVzIHJlbGF0ZWQgdG8NCj4gPiArICBQZXJzaXN0QWNy b3NzUmVzZXQgY2Fwc3VsZXMNCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE4LCBMaW5h cm8sIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKw0KPiA+ICsgIFRoaXMgcHJv Z3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIGxpY2Vuc2VkIGFuZCBtYWRl DQo+ID4gKyBhdmFpbGFibGUgIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUg QlNEIExpY2Vuc2Ugd2hpY2gNCj4gPiArIGFjY29tcGFuaWVzIHRoaXMgIGRpc3RyaWJ1dGlvbi4g IFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+ID4gKyBmb3VuZCBhdCAgaHR0 cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ICsNCj4gPiAr ICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4g IkFTIElTIg0KPiBCQVNJUywNCj4gPiArIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRB VElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4gKw0K PiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJDYXBzdWxlU2VydmljZS5oIg0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAgV2hldGhlciB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgY2Fwc3VsZXMg dGhhdCBwZXJzaXN0IGFjcm9zcyByZXNldC4NCj4gPiArTm90ZSB0aGF0DQo+ID4gKyAgc29tZSBw bGF0Zm9ybXMgb25seSBzdXBwb3J0IHN1Y2ggY2Fwc3VsZXMgYXQgYm9vdCB0aW1lLg0KPiA+ICsN Cj4gPiArICBAcmV0dXJuIFRSVUUgIGlmIGEgUGVyc2lzdEFjcm9zc1Jlc2V0IGNhcHN1bGUgbWF5 IGJlIHBhc3NlZCB0bw0KPiBVcGRhdGVDYXBzdWxlKCkNCj4gPiArICAgICAgICAgICAgICAgIGF0 IHRoaXMgdGltZQ0KPiA+ICsgICAgICAgICAgRkFMU0Ugb3RoZXJ3aXNlDQo+ID4gKyoqLw0KPiA+ ICtCT09MRUFODQo+ID4gK0VGSUFQSQ0KPiA+ICtJc1BlcnNpc3RBY3Jvc3NSZXNldENhcHN1bGVT dXBwb3J0ZWQgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4g RmVhdHVyZVBjZEdldCAoUGNkU3VwcG9ydFVwZGF0ZUNhcHN1bGVSZXNldCk7IH0NCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgIFdyaXRlcyBCYWNrIGEgcmFuZ2Ugb2YgZGF0YSBjYWNoZSBsaW5lcyBj b3ZlcmluZyBhIHNldCBvZiBjYXBzdWxlcyBpbg0KPiBtZW1vcnkuDQo+ID4gKw0KPiA+ICsgIFdy aXRlcyBCYWNrIHRoZSBkYXRhIGNhY2hlIGxpbmVzIHNwZWNpZmllZCBieSBTY2F0dGVyR2F0aGVy TGlzdC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBTY2F0dGVyR2F0aGVyTGlzdCBQaHlzaWNhbCBh ZGRyZXNzIG9mIHRoZSBkYXRhIHN0cnVjdHVyZSB0aGF0DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkZXNjcmliZXMgYSBzZXQgb2YgY2Fwc3VsZXMgaW4gbWVtb3J5DQo+ID4gKw0K PiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArQ2Fwc3VsZUNhY2hlV3JpdGVC YWNrICgNCj4gPiArICBJTiAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgU2NhdHRlckdhdGhlckxp c3QNCj4gPiArICApDQo+ID4gK3sNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQNCj4gYS9NZGVNb2R1 bGVQa2cvVW5pdmVyc2FsL0NhcHN1bGVSdW50aW1lRHhlL0NhcHN1bGVSdW50aW1lRHhlLmluZg0K PiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ2Fwc3VsZVJ1bnRpbWVEeGUvQ2Fwc3VsZVJ1bnRp bWVEeGUuaW5mDQo+ID4gaW5kZXggOWFiMDRjZTFiMzAxLi40M2EyOWVlMjI5NDggMTAwNjQ0DQo+ ID4gLS0tIGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxlUnVudGltZUR4ZS9DYXBzdWxl UnVudGltZUR4ZS5pbmYNCj4gPiArKysgYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0NhcHN1bGVS dW50aW1lRHhlL0NhcHN1bGVSdW50aW1lRHhlLmluZg0KPiA+IEBAIC0yNywxNyArMjcsMjQgQEAg W0RlZmluZXNdDQo+ID4gICMNCj4gPiAgIyBUaGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGlzIGZv ciByZWZlcmVuY2Ugb25seSBhbmQgbm90IHJlcXVpcmVkIGJ5IHRoZQ0KPiBidWlsZCB0b29scy4N Cj4gPiAgIw0KPiA+IC0jICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAgICA9IElBMzIgWDY0 IElQRiBFQkMNCj4gPiArIyAgVkFMSURfQVJDSElURUNUVVJFUyAgICAgICAgICAgPSBJQTMyIFg2 NCBJUEYgRUJDIEFSTSBBQVJDSDY0DQo+ID4gICMNCj4gPg0KPiA+ICBbU291cmNlc10NCj4gPiAg ICBDYXBzdWxlU2VydmljZS5jDQo+ID4gKyAgQ2Fwc3VsZVNlcnZpY2UuaA0KPiA+DQo+ID4gLVtT b3VyY2VzLklhMzIsIFNvdXJjZXMuSVBGLCBTb3VyY2VzLkVCQywgU291cmNlcy5BUk0sIFNvdXJj ZXMuQUFSQ0g2NF0NCj4gPiArW1NvdXJjZXMuSWEzMiwgU291cmNlcy5JUEYsIFNvdXJjZXMuRUJD XQ0KPiA+ICAgIFNhdmVMb25nTW9kZUNvbnRleHQuYw0KPiA+ICsgIENhcHN1bGVSZXNldC5jDQo+ ID4NCj4gPiAgW1NvdXJjZXMuWDY0XQ0KPiA+ICAgIFg2NC9TYXZlTG9uZ01vZGVDb250ZXh0LmMN Cj4gPiArICBDYXBzdWxlUmVzZXQuYw0KPiA+ICsNCj4gPiArW1NvdXJjZXMuQVJNLCBTb3VyY2Vz LkFBUkNINjRdDQo+ID4gKyAgU2F2ZUxvbmdNb2RlQ29udGV4dC5jDQo+ID4gKyAgQXJtL0NhcHN1 bGVSZXNldC5jDQo+ID4NCj4gPiAgW1BhY2thZ2VzXQ0KPiA+ICAgIE1kZVBrZy9NZGVQa2cuZGVj DQo+ID4gQEAgLTU5LDYgKzY2LDkgQEAgW0xpYnJhcnlDbGFzc2VzLlg2NF0NCj4gPiAgICBVZWZp TGliDQo+ID4gICAgQmFzZU1lbW9yeUxpYg0KPiA+DQo+ID4gK1tMaWJyYXJ5Q2xhc3Nlcy5BUk0s IExpYnJhcnlDbGFzc2VzLkFBUkNINjRdDQo+ID4gKyAgQ2FjaGVNYWludGVuYW5jZUxpYg0KPiA+ ICsNCj4gPiAgW0d1aWRzXQ0KPiA+ICAgICMjIFNPTUVUSU1FU19QUk9EVUNFUyAgICMjIFZhcmlh YmxlOkwiQ2Fwc3VsZVVwZGF0ZURhdGEiICMNCj4gKFByb2Nlc3MgYWNyb3NzIHJlc2V0IGNhcHN1 bGUgaW1hZ2UpIGZvciBjYXBzdWxlIHVwZGF0ZWQgZGF0YQ0KPiA+ICAgICMjIFNPTUVUSU1FU19Q Uk9EVUNFUyAgICMjIFZhcmlhYmxlOkwiQ2Fwc3VsZUxvbmdNb2RlQnVmZmVyIiAjDQo+IFRoZSBs b25nIG1vZGUgYnVmZmVyIHVzZWQgYnkgSUEzMiBDYXBzdWxlIFBFSU0gdG8gY2FsbCBYNjQgQ2Fw c3VsZUNvYWxlc2NlDQo+IGNvZGUgdG8gaGFuZGxlID40R0IgY2Fwc3VsZSBibG9ja3MNCj4gPiBk aWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxlUnVudGltZUR4ZS9DYXBz dWxlU2VydmljZS5jDQo+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxlUnVudGltZUR4 ZS9DYXBzdWxlU2VydmljZS5jDQo+ID4gaW5kZXggMjE2Nzk4ZDE2MTdlLi4yM2ZkNmQ1OWM1OWUg MTAwNjQ0DQo+ID4gLS0tIGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxlUnVudGltZUR4 ZS9DYXBzdWxlU2VydmljZS5jDQo+ID4gKysrIGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBz dWxlUnVudGltZUR4ZS9DYXBzdWxlU2VydmljZS5jDQo+ID4gQEAgLTE1LDIyICsxNSw4IEBAIFdJ VEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZDQo+IEtJTkQsIEVJVEhF UiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4NCj4gPiAgKiovDQo+ID4NCj4gPiAtI2luY2x1ZGUg PFVlZmkuaD4NCj4gPiAtDQo+ID4gLSNpbmNsdWRlIDxQcm90b2NvbC9DYXBzdWxlLmg+DQo+ID4g LSNpbmNsdWRlIDxHdWlkL0NhcHN1bGVWZW5kb3IuaD4NCj4gPiAtI2luY2x1ZGUgPEd1aWQvRm1w Q2Fwc3VsZS5oPg0KPiA+IC0NCj4gPiAtI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4g PiAtI2luY2x1ZGUgPExpYnJhcnkvUGNkTGliLmg+DQo+ID4gLSNpbmNsdWRlIDxMaWJyYXJ5L0Nh cHN1bGVMaWIuaD4NCj4gPiAtI2luY2x1ZGUgPExpYnJhcnkvVWVmaURyaXZlckVudHJ5UG9pbnQu aD4gLSNpbmNsdWRlDQo+IDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KPiA+ IC0jaW5jbHVkZSA8TGlicmFyeS9VZWZpUnVudGltZVNlcnZpY2VzVGFibGVMaWIuaD4NCj4gPiAt I2luY2x1ZGUgPExpYnJhcnkvVWVmaVJ1bnRpbWVMaWIuaD4NCj4gPiAtI2luY2x1ZGUgPExpYnJh cnkvQmFzZUxpYi5oPg0KPiA+IC0jaW5jbHVkZSA8TGlicmFyeS9QcmludExpYi5oPg0KPiA+IC0j aW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ID4gKyNpbmNsdWRlICJDYXBzdWxl U2VydmljZS5oIg0KPiA+ICsNCj4gPiAgLy8NCj4gPiAgLy8gSGFuZGxlIGZvciB0aGUgaW5zdGFs bGF0aW9uIG9mIENhcHN1bGUgQXJjaGl0ZWN0dXJlIFByb3RvY29sLg0KPiA+ICAvLw0KPiA+IEBA IC00NCwxNSArMzAsNiBAQCBVSU5UTiAgICAgICBtVGltZXMgICAgICA9IDA7DQo+ID4gIFVJTlQz MiAgICAgIG1NYXhTaXplUG9wdWxhdGVDYXBzdWxlICAgICA9IDA7DQo+ID4gIFVJTlQzMiAgICAg IG1NYXhTaXplTm9uUG9wdWxhdGVDYXBzdWxlICA9IDA7DQo+ID4NCj4gPiAtLyoqDQo+ID4gLSAg Q3JlYXRlIHRoZSB2YXJpYWJsZSB0byBzYXZlIHRoZSBiYXNlIGFkZHJlc3Mgb2YgcGFnZSB0YWJs ZSBhbmQgc3RhY2sNCj4gPiAtICBmb3IgdHJhbnNmZXJyaW5nIGludG8gbG9uZyBtb2RlIGluIElB MzIgUEVJLg0KPiA+IC0qKi8NCj4gPiAtVk9JRA0KPiA+IC1TYXZlTG9uZ01vZGVDb250ZXh0ICgN Cj4gPiAtICBWT0lEDQo+ID4gLSAgKTsNCj4gPiAtDQo+ID4gIC8qKg0KPiA+ICAgIFBhc3NlcyBj YXBzdWxlcyB0byB0aGUgZmlybXdhcmUgd2l0aCBib3RoIHZpcnR1YWwgYW5kIHBoeXNpY2FsIG1h cHBpbmcuDQo+IERlcGVuZGluZyBvbiB0aGUgaW50ZW5kZWQNCj4gPiAgICBjb25zdW1wdGlvbiwg dGhlIGZpcm13YXJlIG1heSBwcm9jZXNzIHRoZSBjYXBzdWxlIGltbWVkaWF0ZWx5LiBJZiB0aGUN Cj4gcGF5bG9hZCBzaG91bGQgcGVyc2lzdCBAQCAtMTk0LDEwICsxNzEsMTIgQEAgVXBkYXRlQ2Fw c3VsZSAoDQo+ID4gICAgLy8NCj4gPiAgICAvLyBDaGVjayBpZiB0aGUgcGxhdGZvcm0gc3VwcG9y dHMgdXBkYXRlIGNhcHN1bGUgYWNyb3NzIGEgc3lzdGVtIHJlc2V0DQo+ID4gICAgLy8NCj4gPiAt ICBpZiAoIUZlYXR1cmVQY2RHZXQoUGNkU3VwcG9ydFVwZGF0ZUNhcHN1bGVSZXNldCkpIHsNCj4g PiArICBpZiAoIUlzUGVyc2lzdEFjcm9zc1Jlc2V0Q2Fwc3VsZVN1cHBvcnRlZCAoKSkgew0KPiA+ ICAgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPiAgICB9DQo+ID4NCj4gPiArICBDYXBz dWxlQ2FjaGVXcml0ZUJhY2sgKFNjYXR0ZXJHYXRoZXJMaXN0KTsNCj4gPiArDQo+ID4gICAgLy8N Cj4gPiAgICAvLyBDb25zdHJ1Y3QgdmFyaWFibGUgbmFtZSBDYXBzdWxlVXBkYXRlRGF0YSwgQ2Fw c3VsZVVwZGF0ZURhdGExLA0KPiBDYXBzdWxlVXBkYXRlRGF0YTIuLi4NCj4gPiAgICAvLyBpZiB1 c2VyIGNhbGxzIFVwZGF0ZUNhcHN1bGUgbXVsdGlwbGUgdGltZXMuDQo+ID4gQEAgLTM0NCw3ICsz MjMsNyBAQCBRdWVyeUNhcHN1bGVDYXBhYmlsaXRpZXMgKA0KPiA+ICAgICAgLy8NCj4gPiAgICAg IC8vQ2hlY2sgaWYgdGhlIHBsYXRmb3JtIHN1cHBvcnRzIHVwZGF0ZSBjYXBzdWxlIGFjcm9zcyBh IHN5c3RlbSByZXNldA0KPiA+ICAgICAgLy8NCj4gPiAtICAgIGlmICghRmVhdHVyZVBjZEdldChQ Y2RTdXBwb3J0VXBkYXRlQ2Fwc3VsZVJlc2V0KSkgew0KPiA+ICsgICAgaWYgKCFJc1BlcnNpc3RB Y3Jvc3NSZXNldENhcHN1bGVTdXBwb3J0ZWQgKCkpIHsNCj4gPiAgICAgICAgcmV0dXJuIEVGSV9V TlNVUFBPUlRFRDsNCj4gPiAgICAgIH0NCj4gPiAgICAgICpSZXNldFR5cGUgPSBFZmlSZXNldFdh cm07DQo+ID4gZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ2Fwc3VsZVJ1bnRp bWVEeGUvQ2Fwc3VsZVNlcnZpY2UuaA0KPiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ2Fwc3Vs ZVJ1bnRpbWVEeGUvQ2Fwc3VsZVNlcnZpY2UuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ ID4gaW5kZXggMDAwMDAwMDAwMDAwLi44NWFhZmMxNDRiNDENCj4gPiAtLS0gL2Rldi9udWxsDQo+ ID4gKysrIGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxlUnVudGltZUR4ZS9DYXBzdWxl U2VydmljZS5oDQo+ID4gQEAgLTAsMCArMSw3MyBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBD YXBzdWxlIFJ1bnRpbWUgRHJpdmVyIHByb2R1Y2VzIHR3byBVRUZJIGNhcHN1bGUgcnVudGltZSBz ZXJ2aWNlcy4NCj4gPiArICAoVXBkYXRlQ2Fwc3VsZSwgUXVlcnlDYXBzdWxlQ2FwYWJpbGl0aWVz KQ0KPiA+ICsgIEl0IGluc3RhbGxzIHRoZSBDYXBzdWxlIEFyY2hpdGVjdHVyYWwgUHJvdG9jb2wg ZGVmaW5lZCBpbiBQSTEuMGEgdG8NCj4gPiArc2lnbmlmeQ0KPiA+ICsgIHRoZSBjYXBzdWxlIHJ1 bnRpbWUgc2VydmljZXMgYXJlIHJlYWR5Lg0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMpIDIw MDYgLSAyMDE3LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiA+ICsgcmVzZXJ2ZWQu PEJSPiAgQ29weXJpZ2h0IChjKSAyMDE4LCBMaW5hcm8sIEx0ZC4gQWxsIHJpZ2h0cw0KPiA+ICsg cmVzZXJ2ZWQuPEJSPg0KPiA+ICsNCj4gPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBh bnlpbmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZQ0KPiA+ICsgYXZhaWxhYmxlICB1 bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlIHdoaWNoDQo+ ID4gKyBhY2NvbXBhbmllcyB0aGlzICBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRo ZSBsaWNlbnNlIG1heSBiZQ0KPiA+ICsgZm91bmQgYXQgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9s aWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiArDQo+ID4gKyAgVEhFIFBST0dSQU0gSVMgRElT VFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ ID4gKyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBF SVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ ICsjaW5jbHVkZSA8VWVmaS5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPFByb3RvY29sL0NhcHN1 bGUuaD4NCj4gPiArI2luY2x1ZGUgPEd1aWQvQ2Fwc3VsZVZlbmRvci5oPg0KPiA+ICsjaW5jbHVk ZSA8R3VpZC9GbXBDYXBzdWxlLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1 Z0xpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9QY2RMaWIuaD4NCj4gPiArI2luY2x1ZGUg PExpYnJhcnkvQ2Fwc3VsZUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpRHJpdmVy RW50cnlQb2ludC5oPiAjaW5jbHVkZQ0KPiA+ICs8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFi bGVMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxl TGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlSdW50aW1lTGliLmg+DQo+ID4gKyNp bmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvUHJpbnRM aWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAgQ3JlYXRlIHRoZSB2YXJpYWJsZSB0byBzYXZlIHRoZSBiYXNlIGFkZHJl c3Mgb2YgcGFnZSB0YWJsZSBhbmQgc3RhY2sNCj4gPiArICBmb3IgdHJhbnNmZXJyaW5nIGludG8g bG9uZyBtb2RlIGluIElBMzIgUEVJLg0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtTYXZlTG9u Z01vZGVDb250ZXh0ICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIFdoZXRoZXIgdGhlIHBsYXRmb3JtIHN1cHBvcnRzIGNhcHN1bGVzIHRoYXQgcGVyc2lz dCBhY3Jvc3MgcmVzZXQuDQo+ID4gK05vdGUgdGhhdA0KPiA+ICsgIHNvbWUgcGxhdGZvcm1zIG9u bHkgc3VwcG9ydCBzdWNoIGNhcHN1bGVzIGF0IGJvb3QgdGltZS4NCj4gPiArDQo+ID4gKyAgQHJl dHVybiBUUlVFICBpZiBhIFBlcnNpc3RBY3Jvc3NSZXNldCBjYXBzdWxlIG1heSBiZSBwYXNzZWQg dG8NCj4gVXBkYXRlQ2Fwc3VsZSgpDQo+ID4gKyAgICAgICAgICAgICAgICBhdCB0aGlzIHRpbWUN Cj4gPiArICAgICAgICAgIEZBTFNFIG90aGVyd2lzZQ0KPiA+ICsqKi8NCj4gPiArQk9PTEVBTg0K PiA+ICtFRklBUEkNCj4gPiArSXNQZXJzaXN0QWNyb3NzUmVzZXRDYXBzdWxlU3VwcG9ydGVkICgN Cj4gPiArICBWT0lEDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFdyaXRlcyBC YWNrIGEgcmFuZ2Ugb2YgZGF0YSBjYWNoZSBsaW5lcyBjb3ZlcmluZyBhIHNldCBvZiBjYXBzdWxl cyBpbg0KPiBtZW1vcnkuDQo+ID4gKw0KPiA+ICsgIFdyaXRlcyBCYWNrIHRoZSBkYXRhIGNhY2hl IGxpbmVzIHNwZWNpZmllZCBieSBTY2F0dGVyR2F0aGVyTGlzdC4NCj4gPiArDQo+ID4gKyAgQHBh cmFtICBTY2F0dGVyR2F0aGVyTGlzdCBQaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBkYXRhIHN0cnVj dHVyZSB0aGF0DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmliZXMgYSBz ZXQgb2YgY2Fwc3VsZXMgaW4gbWVtb3J5DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ ICtFRklBUEkNCj4gPiArQ2Fwc3VsZUNhY2hlV3JpdGVCYWNrICgNCj4gPiArICBJTiAgRUZJX1BI WVNJQ0FMX0FERFJFU1MgICAgU2NhdHRlckdhdGhlckxpc3QNCj4gPiArICApOw0KPiA+IC0tDQo+ ID4gMi4xNy4xDQo+ID4NCg==