From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.115; helo=mga14.intel.com; envelope-from=michael.d.kinney@intel.com; receiver=edk2-devel@lists.01.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 A230521183EED for ; Mon, 11 Jun 2018 08:12:27 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Jun 2018 08:12:26 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,502,1520924400"; d="scan'208";a="63618485" Received: from orsmsx110.amr.corp.intel.com ([10.22.240.8]) by orsmga001.jf.intel.com with ESMTP; 11 Jun 2018 08:12:26 -0700 Received: from orsmsx161.amr.corp.intel.com (10.22.240.84) by ORSMSX110.amr.corp.intel.com (10.22.240.8) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 11 Jun 2018 08:12:26 -0700 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.88]) by ORSMSX161.amr.corp.intel.com ([169.254.4.140]) with mapi id 14.03.0319.002; Mon, 11 Jun 2018 08:12:26 -0700 From: "Kinney, Michael D" To: "Yao, Jiewen" , Ard Biesheuvel , "Kinney, Michael D" CC: "edk2-devel@lists.01.org" , "Zeng, Star" , "leif.lindholm@linaro.org" Thread-Topic: [edk2] [PATCH v2 2/5] MdeModulePkg/DxeCapsuleLibFmp: permit ProcessCapsules () to be called once Thread-Index: AQHT/vYaFCua5TAgwkW22EuVXcmu66RWwY6AgAAA2gCAAq9pAIAAARSAgAAzI9CAAKxfgIAABW8AgADK1QCAAFaKAIAAAOUAgAAVEoD//5+hIA== Date: Mon, 11 Jun 2018 15:12:20 +0000 Message-ID: References: <20180608065811.2065-1-ard.biesheuvel@linaro.org> <20180608065811.2065-3-ard.biesheuvel@linaro.org> <74D8A39837DF1E4DA445A8C0B3885C503AC3515B@shsmsx102.ccr.corp.intel.com> <6534F306-C3E7-40D2-84F4-D409BF1F7B68@linaro.org> <74D8A39837DF1E4DA445A8C0B3885C503AC3A387@shsmsx102.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503AC3ADC8@shsmsx102.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503AC3ADF5@shsmsx102.ccr.corp.intel.com> <87F9382F-EBA0-4715-B323-FB0C6F8DE5A2@intel.com> <74D8A39837DF1E4DA445A8C0B3885C503AC3CBE3@shsmsx102.ccr.corp.intel.com> In-Reply-To: <74D8A39837DF1E4DA445A8C0B3885C503AC3CBE3@shsmsx102.ccr.corp.intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [10.22.254.138] MIME-Version: 1.0 Subject: Re: [PATCH v2 2/5] MdeModulePkg/DxeCapsuleLibFmp: permit ProcessCapsules () to be called once 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: Mon, 11 Jun 2018 15:12:27 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Smlld2VuLA0KDQpBIHBsYXRmb3JtIGNhbiBoYXZlIG11bHRpcGxlIEZNUCBwcm90b2NvbHMgdG8N CnVwZGF0ZSBzeXN0ZW0gZmlybXdhcmUgYW5kIG1heSBiZSBtYXBwZWQgdG8NCmRpZmZlcmVudCBG VyBzdG9yYWdlIGRldmljZXMgd2l0aCBkaWZmZXJlbnQNCnNlY3VyaXR5IGF0dHJpYnV0ZXMuICBJ IHRoaW5rIHlvdXIgcHJvcG9zYWwNCndvdWxkIHRyZWF0IHRoZW0gYWxsIHRoZSBzYW1lLiBSaWdo dD8NCg0KTWlrZQ0KDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBZ YW8sIEppZXdlbg0KPiBTZW50OiBNb25kYXksIEp1bmUgMTEsIDIwMTggNjo1NiBBTQ0KPiBUbzog QXJkIEJpZXNoZXV2ZWwgPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+DQo+IENjOiBLaW5uZXks IE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+Ow0KPiBlZGsyLWRldmVsQGxp c3RzLjAxLm9yZzsgWmVuZywgU3Rhcg0KPiA8c3Rhci56ZW5nQGludGVsLmNvbT47IGxlaWYubGlu ZGhvbG1AbGluYXJvLm9yZw0KPiBTdWJqZWN0OiBSRTogW2VkazJdIFtQQVRDSCB2MiAyLzVdDQo+ IE1kZU1vZHVsZVBrZy9EeGVDYXBzdWxlTGliRm1wOiBwZXJtaXQgUHJvY2Vzc0NhcHN1bGVzDQo+ ICgpIHRvIGJlIGNhbGxlZCBvbmNlDQo+IA0KPiBBaC4gR29vZCBwb2ludC4NCj4gDQo+IEkgdGhp bmsgdGhlIGVtYmVkZGVkIGRyaXZlciBkaXNwYXRjaCBjYW4gYmUgY29udHJvbGxlZA0KPiBieSBF bmRPZkR4ZSwgd2hpY2ggaXMgc2ltaWxhciB0bw0KPiBNZGVNb2R1bGVQa2dcVW5pdmVyc2FsXFNl Y3VyaXR5U3R1YkR4ZS4NCj4gDQo+IFNvIHdlIGNhbiBoYXZlIGJvdGggRW5kT2ZEeGUgYW5kDQo+ IFBjZFN5c3RlbUZtcExvY2tFdmVudEd1aWQuDQo+IEVuZE9mRHhlIGNvbnRyb2xzIGVtYmVkZGVk IGRyaXZlciBkaXNwYXRjaC4NCj4gUGNkU3lzdGVtRm1wTG9ja0V2ZW50R3VpZCBjb250cm9scyAx c3QgY2FsbCBhbmQgMm5kDQo+IGNhbGwuDQo+IA0KPiBUaGFuayB5b3UNCj4gWWFvIEppZXdlbg0K PiANCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBlZGsyLWRl dmVsIFttYWlsdG86ZWRrMi1kZXZlbC0NCj4gYm91bmNlc0BsaXN0cy4wMS5vcmddIE9uIEJlaGFs ZiBPZiBBcmQNCj4gPiBCaWVzaGV1dmVsDQo+ID4gU2VudDogTW9uZGF5LCBKdW5lIDExLCAyMDE4 IDU6NDAgQU0NCj4gPiBUbzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiA+ IENjOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+Ow0KPiBl ZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsNCj4gPiBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwu Y29tPjsNCj4gbGVpZi5saW5kaG9sbUBsaW5hcm8ub3JnDQo+ID4gU3ViamVjdDogUmU6IFtlZGsy XSBbUEFUQ0ggdjIgMi81XQ0KPiBNZGVNb2R1bGVQa2cvRHhlQ2Fwc3VsZUxpYkZtcDogcGVybWl0 DQo+ID4gUHJvY2Vzc0NhcHN1bGVzICgpIHRvIGJlIGNhbGxlZCBvbmNlDQo+ID4NCj4gPiBPbiAx MSBKdW5lIDIwMTggYXQgMTQ6MzcsIFlhbywgSmlld2VuDQo+IDxqaWV3ZW4ueWFvQGludGVsLmNv bT4gd3JvdGU6DQo+ID4gPiBJZiBhbGwgZm1wIGNhbiBiZSBwcm9jZXNzZWQgb25lIHRpbWXvvIx5 b3UganVzdCBuZWVkDQo+IGNhbGwgb25jZS4gVGhlbiBzeXN0ZW0NCj4gPiByZXNldC4NCj4gPiA+ DQo+ID4NCj4gPiBJIHVuZGVyc3RhbmQgdGhhdC4gQnV0IGlmIHRoZSBjYXBzdWxlIGhhcyBlbWJl ZGRlZA0KPiBkcml2ZXJzLCB0aGUNCj4gPiBsaWJyYXJ5IHdpbGwgb25seSBkaXNwYXRjaCB0aGVt IG9uIHRoZSBzZWNvbmQgY2FsbCwNCj4gZXZlbiBpZiB0aGUNCj4gPiBwbGF0Zm9ybSBkb2VzIG5v dCByZXF1aXJlIG1ha2luZyB0aGF0IGRpc3RpbmN0aW9uLiBJdA0KPiBzZWVtcyB0byBtZSB0aGF0 DQo+ID4gdGhlIHBoYXNpbmcgYmV0d2VlbiB0aGUgZmlyc3QgYW5kIHRoZSBzZWNvbmQgY2FsbCBp cw0KPiBjbG9zZWx5IHRpZWQgdG8NCj4gPiB0aGUgc2VtYW50aWNzIG9mIEVuZE9mRHhlIGFuZCB0 aGUgYXNzb2NpYXRlZCBwb2xpY3kNCj4gb24gWDg2IG5vdCB0bw0KPiA+IGFsbG93IHRoaXJkIHBh cnR5IGNvZGUgYmVmb3JlIGl0IGhhcyBiZWVuIHNpZ25hbGxlZC4NCj4gPg0KPiA+IENvdWxkIHdl IG5vdCBwYXJhbWV0ZXJpemUgdGhpcyBpbiBzb21lIHdheSBhcyB3ZWxsPw0KPiA+DQo+ID4NCj4g PiA+DQo+ID4gPj4g5ZyoIDIwMTjlubQ25pyIMTHml6XvvIzkuIrljYgxMjoyN++8jEFyZCBCaWVz aGV1dmVsDQo+ID4gPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+IOWGmemBk++8mg0KPiA+ID4+ DQo+ID4gPj4+IE9uIDEwIEp1bmUgMjAxOCBhdCAyMToyMSwgWWFvLCBKaWV3ZW4NCj4gPGppZXdl bi55YW9AaW50ZWwuY29tPiB3cm90ZToNCj4gPiA+Pj4gSnVzdCBnb3Qgc29tZSBpZGVhIHNpbmNl IEkgYW0gYWxzbyByZXZpZXdpbmcNCj4gRm1wRGV2aWNlUGtnIHBhdGNoLg0KPiA+ID4+Pg0KPiA+ ID4+Pg0KPiA+ID4+PiBUaGUga2V5IHByb2JsZW0gd2UgYXJlIHRyeWluZyB0byByZXNvbHZlIHRo YXQgaXM6DQo+IFRoZSBjb3JlIGNvZGUgdXNlcw0KPiA+IEVuZE9mRHhlIGFzIHRoZSBsb2NrIGV2 ZW50IGZvciBzeXN0ZW0gZmlybXdhcmUsIGJ1dA0KPiBhbiBBUk0gcGxhdGZvcm0gbWF5IHdhbnQN Cj4gPiB0byBsb2NrIHN5c3RlbSBmaXJtd2FyZSBsYXRlciwgbWF5YmUgaW4gb3RoZXIgbG9jaw0K PiBldmVudC4NCj4gPiA+Pj4NCj4gPiA+Pj4gQXMgc3VjaCwgaG93IGFib3V0IHdlIGdlbmVyYWxp emUgdGhlIGxvY2sgZXZlbnQNCj4gYXMNCj4gPiBQY2RTeXN0ZW1GbXBMb2NrRXZlbnRHdWlkPyBX ZSBjYW4gdXNlIEVuZE9mRHhlR3VpZCBhcw0KPiBkZWZhdWx0IG9uZSB0byBrZWVwDQo+ID4gdGhl IGNvbXBhdGliaWxpdHkuIEF0IHNhbWUgdGltZSB0aGlzIGJyaW5ncyB0aGUNCj4gZmxleGliaWxp dHkgZm9yIHBsYXRmb3JtIG92ZXJyaWRpbmcuDQo+ID4gPj4+DQo+ID4gPj4+DQo+ID4gPj4+IFdl IG9ubHkgbmVlZCB1cGRhdGUgRHhlQ2Fwc3VsZUxpYkNvbnN0cnVjdG9yKCkgdG8NCj4gdXNlIHRo ZSBuZXcgUGNkR3VpZCwNCj4gPiBpbnN0ZWFkIG9mIGhhcmRjb2RlIEVuZE9mRHhlLg0KPiA+ID4+ PiBXZSBkb24ndCBuZWVkIHVwZGF0ZSB0aGUgbG9naWMgaW4NCj4gUHJvY2Vzc0NhcHN1bGVzKCkg YW5kDQo+ID4gUHJvY2Vzc1RoZXNlQ2Fwc3VsZXMoKS4NCj4gPiA+Pj4gVGhlIHBvbGljeSBpbiBj dXJyZW50IHBsYXRmb3JtIGlzIGFscmVhZHkNCj4gZW5mb3JjZWQsIGlmIHRoZSBwbGF0Zm9ybSBo YXMgYQ0KPiA+IHRydXN0ZWQgY29uc29sZS4NCj4gPiA+Pj4gRm9yIEFSTSBwbGF0Zm9ybSwgd2hp Y2ggd2FudHMgdG8gbG9jayBzeXN0ZW0NCj4gZmlybXdhcmUgbGF0ZXIuIEl0IGNhbg0KPiA+IGNv bmZpZ3VyZSBhbm90aGVyIGxvY2sgZXZlbnQgR1VJRCBleHBsaWNpdGx5IGluDQo+IHBsYXRmb3Jt IERTQy4NCj4gPiA+Pj4NCj4gPiA+Pg0KPiA+ID4+IEJ1dCB0aGF0IG1lYW5zIHdlIGFyZSBzdGls bCByZXF1aXJlZCB0byBjYWxsDQo+IFByb2Nlc3NDYXBzdWxlcyAoKSB0d2ljZSwgbm8/DQo+ID4g Pj4NCj4gPiA+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPj4+PiBGcm9tOiBl ZGsyLWRldmVsIFttYWlsdG86ZWRrMi1kZXZlbC0NCj4gYm91bmNlc0BsaXN0cy4wMS5vcmddIE9u IEJlaGFsZiBPZg0KPiA+IFlhbywNCj4gPiA+Pj4+IEppZXdlbg0KPiA+ID4+Pj4gU2VudDogU3Vu ZGF5LCBKdW5lIDEwLCAyMDE4IDEyOjAyIFBNDQo+ID4gPj4+PiBUbzogS2lubmV5LCBNaWNoYWVs IEQNCj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgQXJkIEJpZXNoZXV2ZWwNCj4gPiA+ Pj4+IDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPg0KPiA+ID4+Pj4gQ2M6IGVkazItZGV2ZWxA bGlzdHMuMDEub3JnOw0KPiBsZWlmLmxpbmRob2xtQGxpbmFyby5vcmc7IFplbmcsIFN0YXINCj4g PiA+Pj4+IDxzdGFyLnplbmdAaW50ZWwuY29tPg0KPiA+ID4+Pj4gU3ViamVjdDogUmU6IFtlZGsy XSBbUEFUQ0ggdjIgMi81XQ0KPiBNZGVNb2R1bGVQa2cvRHhlQ2Fwc3VsZUxpYkZtcDoNCj4gPiBw ZXJtaXQNCj4gPiA+Pj4+IFByb2Nlc3NDYXBzdWxlcyAoKSB0byBiZSBjYWxsZWQgb25jZQ0KPiA+ ID4+Pj4NCj4gPiA+Pj4+IE15IGNvbmNlcm4gaXMgdGhhdCAqYWx3YXlzIGFsbG93aW5nKiBwcm9j ZXNzaW5nDQo+IFN5c3RlbUNhcHN1bGUgYWZ0ZXINCj4gPiBFbmRPZkR4ZQ0KPiA+ID4+Pj4gaGFz IHNlY3VyaXR5IHJpc2suDQo+ID4gPj4+Pg0KPiA+ID4+Pj4gSU1ITywgdGhlIHJpc2sgaXMgbm90 ICpwcm9jZXNzKiwgaWYgaXQgaXMgYQ0KPiBwbGF0Zm9ybSBjaG9pY2UuIEluc3RlYWQsIHRoZSBy aXNrIGlzDQo+ID4gPj4+PiAqYWxsb3cqLCBpbiB0aGUgY29yZSBsb2dpYy4NCj4gPiA+Pj4+DQo+ ID4gPj4+PiBJZiB3ZSByZWFsbHkgd2FudCB0byBkbyB0aGF0LCBJIGhvcGUgd2UgbmVlZCBhDQo+ IHdheSB0byBkaXN0aW5ndWlzaCB0aGUNCj4gPiBkaWZmZXJlbmNlDQo+ID4gPj4+PiBiZXR3ZWVu IGEgcGxhdGZvcm0gZGlzcGF0Y2hpbmcgU3lzdGVtQ2Fwc3VsZQ0KPiBhZnRlciBFbmRPZkR4ZQ0K PiA+ICpwdXJwb3NlbHkqIGFuZA0KPiA+ID4+Pj4gYSBwbGF0Zm9ybSBkaXNwYXRjaGluZyBTeXN0 ZW1DYXBzdWxlIGFmdGVyDQo+IEVuZE9mRHhlICpieSBtaXN0YWtlKi4NCj4gPiA+Pj4+DQo+ID4g Pj4+PiBNYXliZSBzb21lIHBvbGljeSBlbmZvcmNlbWVudCBpbiB0aGUgY29yZSBsb2dpYy4NCj4g U3RhdGljIHBvbGljeSwgYXQgYnVpbGQNCj4gPiB0aW1lLg0KPiA+ID4+Pj4NCj4gPiA+Pj4+IFRo YW5rIHlvdQ0KPiA+ID4+Pj4gWWFvIEppZXdlbg0KPiA+ID4+Pj4NCj4gPiA+Pj4+PiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4+Pj4+IEZyb206IEtpbm5leSwgTWljaGFlbCBEDQo+ ID4gPj4+Pj4gU2VudDogU3VuZGF5LCBKdW5lIDEwLCAyMDE4IDg6NTcgQU0NCj4gPiA+Pj4+PiBU bzogQXJkIEJpZXNoZXV2ZWwgPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+Ow0KPiBZYW8sIEpp ZXdlbg0KPiA+ID4+Pj4+IDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBE DQo+ID4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+ID4+Pj4+IENjOiBlZGsyLWRl dmVsQGxpc3RzLjAxLm9yZzsgWmVuZywgU3Rhcg0KPiA8c3Rhci56ZW5nQGludGVsLmNvbT47DQo+ ID4gPj4+Pj4gbGVpZi5saW5kaG9sbUBsaW5hcm8ub3JnDQo+ID4gPj4+Pj4gU3ViamVjdDogUkU6 IFtlZGsyXSBbUEFUQ0ggdjIgMi81XQ0KPiBNZGVNb2R1bGVQa2cvRHhlQ2Fwc3VsZUxpYkZtcDoN Cj4gPiBwZXJtaXQNCj4gPiA+Pj4+PiBQcm9jZXNzQ2Fwc3VsZXMgKCkgdG8gYmUgY2FsbGVkIG9u Y2UNCj4gPiA+Pj4+Pg0KPiA+ID4+Pj4+IEFyZCwNCj4gPiA+Pj4+Pg0KPiA+ID4+Pj4+IEkgYWdy ZWUgaXQgc2hvdWxkIGJlIGEgcGxhdGZvcm0gY2hvaWNlIHRvDQo+IHByb2Nlc3MgY2Fwc3VsZXMN Cj4gPiA+Pj4+PiBiZWZvcmUgb3IgYWZ0ZXIgRW5kIG9mIERYRS4gIEl0IGlzIGV2ZW4gYWxsb3dl ZA0KPiBpbiB0aGUNCj4gPiA+Pj4+PiBVRUZJIFNwZWMgZm9yIGNhcHN1bGVzIHRvIGJlIHByb2Nl c3NlZA0KPiBpbW1lZGlhdGVseQ0KPiA+ID4+Pj4+IHdoaWNoIHdvdWxkIGluY2x1ZGUgYXQgT1Mg cnVudGltZSBhZnRlcg0KPiBFeGl0Qm9vdFNlcnZpY2VzLg0KPiA+ID4+Pj4+DQo+ID4gPj4+Pj4g VGhlcmUgYXJlIDIgaW5wdXRzIHRvIHRoZXNlIGNob2ljZXM6DQo+ID4gPj4+Pj4gKiBUaGUgZmxh Z3Mgc2V0IGluIHRoZSBDYXBzdWxlIGl0c2VsZi4gIFNlZQ0KPiBVRUZJIDIuNyBTcGVjDQo+ID4g Pj4+Pj4gIFRhYmxlIDM4IGZvciB0aGUgNSBhbGxvd2VkIGNvbWJpbmF0aW9ucy4NCj4gPiA+Pj4+ PiAqIFBsYXRmb3JtIHBvbGljeSBmb3IgZWFjaCBvZiB0aGVzZSA1IGNhcHN1bGUNCj4gdHlwZXMg YW5kDQo+ID4gPj4+Pj4gIHdoZW4gZWFjaCBvZiB0aGVzZSA1IGNhcHN1bGUgdHlwZXMgYXJlIGFs bG93ZWQNCj4gdG8gYmUNCj4gPiA+Pj4+PiAgcHJvY2Vzc2VkLg0KPiA+ID4+Pj4+DQo+ID4gPj4+ Pj4gSmlld2VuJ3MgY29tbWVudHMgcG9pbnQgdG8gc29tZSBhc3N1bXB0aW9ucw0KPiB0aGF0IGhh dmUgYmVlbg0KPiA+ID4+Pj4+IG1hZGUgaW4gdGhlIGxvZ2ljLiAgVGhlc2UgYXNzdW1wdGlvbnMg bWF5IGJlDQo+IGNvbnNpZGVyZWQgYQ0KPiA+ID4+Pj4+IHNhZmUgZGVmYXVsdCBwbGF0Zm9ybSBw b2xpY3ksIGJ1dCB0aGUgY29kZQ0KPiBsb2dpYyBzaG91bGQNCj4gPiA+Pj4+PiBhbGxvdyB0aGUg cGxhdGZvcm0gdG8gZWFzaWx5IHNlbGVjdCBhbHRlcm5hdGUNCj4gcG9saWNpZXMuDQo+ID4gPj4+ Pj4NCj4gPiA+Pj4+PiBJIHRoaW5rIHRoZSBwYXRjaCB5b3UgaGF2ZSBwcm92aWRlZCBhdHRlbXB0 cyB0bw0KPiBhZGQgb25lDQo+ID4gPj4+Pj4gYWRkaXRpb25hbCBwb2xpY3kuICBQZXJoYXBzIHdl IHNob3VsZCBsb29rIGF0DQo+IHRoaXMgZnJvbQ0KPiA+ID4+Pj4+IHRoZSBVRUZJIFNwZWMgcGVy c3BlY3RpdmUgYW5kIHNlZSBob3cgZGlmZmljdWx0DQo+IGl0IGlzIHRvDQo+ID4gPj4+Pj4gZXhw cmVzcyBwb2xpY2llcyBmb3IgdGhlIHN1cHBvcnRlZCBjYXBzdWxlDQo+IHR5cGVzLg0KPiA+ID4+ Pj4+DQo+ID4gPj4+Pj4gSSB3aWxsIHJldmlldyB5b3VyIHBhdGNoIGluIG1vcmUgZGV0YWlsDQo+ IHRvbW9ycm93Lg0KPiA+ID4+Pj4+DQo+ID4gPj4+Pj4gVGhhbmtzLA0KPiA+ID4+Pj4+DQo+ID4g Pj4+Pj4gTWlrZQ0KPiA+ID4+Pj4+DQo+ID4gPj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+ID4gPj4+Pj4+IEZyb206IEFyZCBCaWVzaGV1dmVsDQo+IFttYWlsdG86YXJkLmJpZXNo ZXV2ZWxAbGluYXJvLm9yZ10NCj4gPiA+Pj4+Pj4gU2VudDogU2F0dXJkYXksIEp1bmUgOSwgMjAx OCAxMDo0MiBQTQ0KPiA+ID4+Pj4+PiBUbzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwu Y29tPg0KPiA+ID4+Pj4+PiBDYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IEtpbm5leSwgTWlj aGFlbCBEDQo+ID4gPj4+Pj4+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IFplbmcsIFN0 YXINCj4gPiA+Pj4+Pj4gPHN0YXIuemVuZ0BpbnRlbC5jb20+Ow0KPiBsZWlmLmxpbmRob2xtQGxp bmFyby5vcmcNCj4gPiA+Pj4+Pj4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggdjIgMi81XQ0K PiA+ID4+Pj4+PiBNZGVNb2R1bGVQa2cvRHhlQ2Fwc3VsZUxpYkZtcDogcGVybWl0DQo+IFByb2Nl c3NDYXBzdWxlcw0KPiA+ID4+Pj4+PiAoKSB0byBiZSBjYWxsZWQgb25jZQ0KPiA+ID4+Pj4+Pg0K PiA+ID4+Pj4+PiBPbiAxMCBKdW5lIDIwMTggYXQgMDc6MzgsIFlhbywgSmlld2VuDQo+ID4gPj4+ Pj4+IDxqaWV3ZW4ueWFvQGludGVsLmNvbT4gd3JvdGU6DQo+ID4gPj4+Pj4+PiBIaSBBcmQNCj4g PiA+Pj4+Pj4+IEFjY29yZGluZyB0byBQSSBzcGVjLCAiUHJpb3IgdG8gaW52b2tpbmcgYW55DQo+ IFVFRkkNCj4gPiA+Pj4+Pj4gZHJpdmVycywgb3IgYXBwbGljYXRpb25zIHRoYXQgYXJlIG5vdCBm cm9tIHRoZQ0KPiBwbGF0Zm9ybQ0KPiA+ID4+Pj4+PiBtYW51ZmFjdHVyZXIsIG9yIGNvbm5lY3Rp bmcgY29uc29sZXMsIHRoZQ0KPiBwbGF0Zm9ybQ0KPiA+ID4+Pj4+PiBzaG91bGQgc2lnbmFscyB0 aGUgZXZlbnQNCj4gRUZJX0VORF9PRl9EWEVfRVZFTlRfR1VJRCINCj4gPiA+Pj4+Pj4+DQo+ID4g Pj4+Pj4+PiBJbiBicmllZiwgRW5kT2ZEeGUgaXMgc2lnbmFsZWQgYmVmb3JlIDNyZA0KPiBwYXJ0 IGNvZGUNCj4gPiA+Pj4+Pj4gcnVubmluZy4NCj4gPiA+Pj4+Pj4+DQo+ID4gPj4+Pj4+PiBBcyBz dWNoLCBpdCBpcyBsZWdhbCB0aGF0IGEgdHJ1c3RlZCBjb25zb2xlDQo+IGlzDQo+ID4gPj4+Pj4+ IGNvbm5lY3RlZCBiZWZvcmUgRW5kT2ZEeGUuDQo+ID4gPj4+Pj4+PiBZb3UgY2FuIHJlcG9ydCBw cm9ncmVzcyB0byB1c2VyIGJlZm9yZQ0KPiBFbmRPZkR4ZS4NCj4gPiA+Pj4+Pj4+DQo+ID4gPj4+ Pj4+DQo+ID4gPj4+Pj4+IFNvIGhvdyBkbyBJIGNvbm5lY3QgYSB0cnVzdGVkIGNvbnNvbGUgb24g YQ0KPiBzeXN0ZW0gd2l0aA0KPiA+ID4+Pj4+PiBhIHBsdWdpbiBncmFwaGljcyBjYXJkPw0KPiA+ ID4+Pj4+PiBIb3cgY2FuIEkgcmVwb3J0IGNhcHN1bGUgdXBkYXRlIHByb2dyZXNzIG9uDQo+IHN1 Y2ggYQ0KPiA+ID4+Pj4+PiBzeXN0ZW0/DQo+ID4gPj4+Pj4+IE9uIGEgc3lzdGVtIHN1Y2ggYXMg QVJNIHdoZXJlIHRoZSBhY3R1YWwgZmxhc2gNCj4gdXBkYXRlDQo+ID4gPj4+Pj4+IGludm9sdmVz IGNhbGxzDQo+ID4gPj4+Pj4+IGludG8gdGhlIHN0YW5kYWxvbmUgTU0gbGF5ZXIsIHdoaWNoIG1h a2VzIHRoZQ0KPiA+ID4+Pj4+PiBkaXN0aW5jdGlvbiB1bm5lY2Vzc2FyeSwNCj4gPiA+Pj4+Pj4g aG93IGRvIHlvdSByZWNvbW1lbmQgdG8gaGFuZGxlIHRoaXMgaWYgaXQgaXMNCj4gbWFuZGF0b3J5 DQo+ID4gPj4+Pj4+IGFjY29yZGluZyB0bw0KPiA+ID4+Pj4+PiB5b3UgdG8gcHJvY2VzcyB0aGUg Y2Fwc3VsZSBiZWZvcmUgRW5kT2ZEeGU/DQo+ID4gPj4+Pj4+DQo+ID4gPj4+Pj4+DQo+ID4gPj4+ Pj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+Pj4+Pj4+PiBGcm9tOiBBcmQg Qmllc2hldXZlbA0KPiA+ID4+Pj4+PiBbbWFpbHRvOmFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmdd DQo+ID4gPj4+Pj4+Pj4gU2VudDogRnJpZGF5LCBKdW5lIDgsIDIwMTggODozOCBBTQ0KPiA+ID4+ Pj4+Pj4+IFRvOiBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+ID4gPj4+Pj4+ Pj4gQ2M6IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOyBLaW5uZXksIE1pY2hhZWwNCj4gRA0KPiA+ ID4+Pj4+PiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+Ow0KPiA+ID4+Pj4+Pj4+IFplbmcs IFN0YXIgPHN0YXIuemVuZ0BpbnRlbC5jb20+Ow0KPiA+ID4+Pj4+PiBsZWlmLmxpbmRob2xtQGxp bmFyby5vcmcNCj4gPiA+Pj4+Pj4+PiBTdWJqZWN0OiBSZTogW2VkazJdIFtQQVRDSCB2MiAyLzVd DQo+ID4gPj4+Pj4+IE1kZU1vZHVsZVBrZy9EeGVDYXBzdWxlTGliRm1wOiBwZXJtaXQNCj4gPiA+ Pj4+Pj4+PiBQcm9jZXNzQ2Fwc3VsZXMgKCkgdG8gYmUgY2FsbGVkIG9uY2UNCj4gPiA+Pj4+Pj4+ Pg0KPiA+ID4+Pj4+Pj4+DQo+ID4gPj4+Pj4+Pj4NCj4gPiA+Pj4+Pj4+Pj4gT24gOCBKdW4gMjAx OCwgYXQgMTQ6MzQsIFlhbywgSmlld2VuDQo+ID4gPj4+Pj4+IDxqaWV3ZW4ueWFvQGludGVsLmNv bT4gd3JvdGU6DQo+ID4gPj4+Pj4+Pj4+DQo+ID4gPj4+Pj4+Pj4+IEhpIEFyZA0KPiA+ID4+Pj4+ Pj4+PiBXZSBkb24ndCBhbGxvdyBwbGF0Zm9ybSB0byB1cGRhdGUgc3lzdGVtDQo+IGZpcm13YXJl DQo+ID4gPj4+Pj4+ICphZnRlciogRW5kT2ZEeGUuDQo+ID4gPj4+Pj4+Pj4+DQo+ID4gPj4+Pj4+ Pj4+IEFjY29yZGluZyB0byBQSSBzcGVjLCBhZnRlciBFbmRPZkR4ZSwgM3JkDQo+IHBhcnQNCj4g PiA+Pj4+Pj4gY29kZSBzdGFydCBydW5uaW5nLiBJdCBicmluZ3MNCj4gPiA+Pj4+Pj4+PiBzZWN1 cml0eSByaXNrIGlmIHdlIGFsbG93IHN5c3RlbSBmaXJtd2FyZQ0KPiBhZnRlcg0KPiA+ID4+Pj4+ PiBFbmRPZkR4ZS4NCj4gPiA+Pj4+Pj4+Pj4NCj4gPiA+Pj4+Pj4+Pj4gSW4gb3VyIFg4NiBzeXN0 ZW0gZGVzaWduLCB3ZSBsb2NrIGZsYXNoDQo+IHBhcnQNCj4gPiA+Pj4+Pj4gKmJlZm9yZSogRW5k T2ZEeGUgaW4gYW55IGJvb3QNCj4gPiA+Pj4+Pj4+PiBtb2RlLg0KPiA+ID4+Pj4+Pj4+PiBFdmVu IGluIENhcHN1bGVVcGRhdGUgYm9vdCBtb2RlLCB3ZSBhbHNvDQo+IGxvY2sNCj4gPiA+Pj4+Pj4g Zmxhc2ggcGFydCBhdCBFbmRPZkR4ZSwganVzdCBpbg0KPiA+ID4+Pj4+Pj4+IGNhc2UgdGhlIGNh cHN1bGUgdXBkYXRlIGRvZXMgbm90IGluZGljYXRlIGENCj4gcmVzZXQuDQo+ID4gPj4+Pj4+Pj4+ DQo+ID4gPj4+Pj4+Pj4+IFdvdWxkIHlvdSBwbGVhc2Ugc2hhcmUgdGhlIGluZm8sIHdoeSB5b3Vy DQo+IHBsYXRmb3JtDQo+ID4gPj4+Pj4+IG5lZWQgdXBkYXRlIHN5c3RlbQ0KPiA+ID4+Pj4+Pj4+ IGZpcm13YXJlIGFmdGVyIEVuZE9mRHhlPw0KPiA+ID4+Pj4+Pj4+PiBJcyB0aGF0IHBvc3NpYmxl IHRvIG1ha2UgaXQgZWFybGllcj8NCj4gPiA+Pj4+Pj4+Pj4NCj4gPiA+Pj4+Pj4+Pj4NCj4gPiA+ Pj4+Pj4+Pg0KPiA+ID4+Pj4+Pj4+IEJlY2F1c2Ugd2UgbmVlZCBzb21lIGtpbmQgb2YgY29uc29s ZSB0bw0KPiByZXBvcnQNCj4gPiA+Pj4+Pj4gcHJvZ3Jlc3MgdG8gdGhlIHVzZXIuDQo+ID4gPj4+ Pj4+Pj4NCj4gPiA+Pj4+Pj4+PiBUaGUgc2VjdXJlIHBsYXRmb3JtIGV4ZWN1dGlvbiBjb250ZXh0 IGlzDQo+IGNvbXBsZXRlbHkNCj4gPiA+Pj4+Pj4gc2VwYXJhdGUgZnJvbSBVRUZJIG9uIEFybSwN Cj4gPiA+Pj4+Pj4+PiBzbyBmb3IgdXMgdGhlIGRpc3RpbmN0aW9uIGRvZXMgbm90IG1ha2UNCj4g c2Vuc2UuDQo+ID4gPj4+Pj4+Pj4NCj4gPiA+Pj4+Pj4+Pj4gVGhhbmsgeW91DQo+ID4gPj4+Pj4+ Pj4+IFlhbyBKaWV3ZW4NCj4gPiA+Pj4+Pj4+Pj4NCj4gPiA+Pj4+Pj4+Pj4+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4gPj4+Pj4+Pj4+PiBGcm9tOiBlZGsyLWRldmVsIFttYWlsdG86 ZWRrMi1kZXZlbC0NCj4gPiA+Pj4+Pj4gYm91bmNlc0BsaXN0cy4wMS5vcmddIE9uIEJlaGFsZiBP Zg0KPiA+ID4+Pj4+Pj4+IEFyZA0KPiA+ID4+Pj4+Pj4+Pj4gQmllc2hldXZlbA0KPiA+ID4+Pj4+ Pj4+Pj4gU2VudDogRnJpZGF5LCBKdW5lIDgsIDIwMTggMjo1OCBBTQ0KPiA+ID4+Pj4+Pj4+Pj4g VG86IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+ID4gPj4+Pj4+Pj4+PiBDYzogS2lubmV5LCBN aWNoYWVsIEQNCj4gPiA+Pj4+Pj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgWWFvLCBK aWV3ZW4NCj4gPiA+Pj4+Pj4+Pj4+IDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFplbmcsIFN0YXIN Cj4gPiA+Pj4+Pj4gPHN0YXIuemVuZ0BpbnRlbC5jb20+Ow0KPiA+ID4+Pj4+Pj4+Pj4gbGVpZi5s aW5kaG9sbUBsaW5hcm8ub3JnOyBBcmQgQmllc2hldXZlbA0KPiA+ID4+Pj4+PiA8YXJkLmJpZXNo ZXV2ZWxAbGluYXJvLm9yZz4NCj4gPiA+Pj4+Pj4+Pj4+IFN1YmplY3Q6IFtlZGsyXSBbUEFUQ0gg djIgMi81XQ0KPiA+ID4+Pj4+PiBNZGVNb2R1bGVQa2cvRHhlQ2Fwc3VsZUxpYkZtcDogcGVybWl0 DQo+ID4gPj4+Pj4+Pj4+PiBQcm9jZXNzQ2Fwc3VsZXMgKCkgdG8gYmUgY2FsbGVkIG9uY2UNCj4g PiA+Pj4+Pj4+Pj4+DQo+ID4gPj4+Pj4+Pj4+PiBQZXJtaXQgUHJvY2Vzc0NhcHN1bGVzICgpIHRv IGJlIGNhbGxlZA0KPiBvbmx5IGENCj4gPiA+Pj4+Pj4gc2luZ2xlIHRpbWUsIGFmdGVyDQo+ID4g Pj4+Pj4+Pj4+PiBFbmRPZkR4ZS4gVGhpcyBhbGxvd3MgcGxhdGZvcm1zIHRoYXQgYXJlDQo+IGFi bGUgdG8NCj4gPiA+Pj4+Pj4gdXBkYXRlIHN5c3RlbQ0KPiA+ID4+Pj4+Pj4+Pj4gZmlybXdhcmUg YWZ0ZXIgRW5kT2ZEeGUgKGUuZy4sIGJlY2F1c2UgdGhlDQo+IGZsYXNoDQo+ID4gPj4+Pj4+IFJP TSBpcyBub3QgbG9ja2VkDQo+ID4gPj4+Pj4+Pj4+PiBkb3duKSB0byBkbyBzbyBhdCBhIHRpbWUg d2hlbiBhIG5vbi0NCj4gdHJ1c3RlZA0KPiA+ID4+Pj4+PiBjb25zb2xlIGlzIHVwIGFuZCBydW5u aW5nLA0KPiA+ID4+Pj4+Pj4+Pj4gYW5kIHByb2dyZXNzIGNhbiBiZSByZXBvcnRlZCB0byB0aGUg dXNlci4NCj4gPiA+Pj4+Pj4+Pj4+DQo+ID4gPj4+Pj4+Pj4+PiBDb250cmlidXRlZC11bmRlcjog VGlhbm9Db3JlIENvbnRyaWJ1dGlvbg0KPiA+ID4+Pj4+PiBBZ3JlZW1lbnQgMS4xDQo+ID4gPj4+ Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBBcmQgQmllc2hldXZlbA0KPiA+ID4+Pj4+PiA8YXJkLmJp ZXNoZXV2ZWxAbGluYXJvLm9yZz4NCj4gPiA+Pj4+Pj4+Pj4+IC0tLQ0KPiA+ID4+Pj4+Pj4+Pj4N Cj4gPiA+Pj4+Pj4NCj4gTWRlTW9kdWxlUGtnL0xpYnJhcnkvRHhlQ2Fwc3VsZUxpYkZtcC9EeGVD YXBzdWxlUHJvY2Vzcw0KPiA+ID4+Pj4+PiBMaWIuYyB8IDE4DQo+ID4gPj4+Pj4+Pj4+PiArKysr KysrKysrKystLS0tLS0NCj4gPiA+Pj4+Pj4+Pj4+IDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRp b25zKCspLCA2DQo+IGRlbGV0aW9ucygtKQ0KPiA+ID4+Pj4+Pj4+Pj4NCj4gPiA+Pj4+Pj4+Pj4+ IGRpZmYgLS1naXQNCj4gPiA+Pj4+Pj4+Pg0KPiA+ID4+Pj4+Pg0KPiBhL01kZU1vZHVsZVBrZy9M aWJyYXJ5L0R4ZUNhcHN1bGVMaWJGbXAvRHhlQ2Fwc3VsZVByb2NlDQo+ID4gPj4+Pj4+IHNzTGli LmMNCj4gPiA+Pj4+Pj4+Pj4+DQo+ID4gPj4+Pj4+DQo+IGIvTWRlTW9kdWxlUGtnL0xpYnJhcnkv RHhlQ2Fwc3VsZUxpYkZtcC9EeGVDYXBzdWxlUHJvY2UNCj4gPiA+Pj4+Pj4gc3NMaWIuYw0KPiA+ ID4+Pj4+Pj4+Pj4gaW5kZXggMjZjYTRlMjk1ZjIwLi5hZDgzNjYwZjE3MzcgMTAwNjQ0DQo+ID4g Pj4+Pj4+Pj4+PiAtLS0NCj4gPiA+Pj4+Pj4NCj4gYS9NZGVNb2R1bGVQa2cvTGlicmFyeS9EeGVD YXBzdWxlTGliRm1wL0R4ZUNhcHN1bGVQcm9jZQ0KPiA+ID4+Pj4+PiBzc0xpYi5jDQo+ID4gPj4+ Pj4+Pj4+PiArKysNCj4gPiA+Pj4+Pj4NCj4gYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9EeGVDYXBz dWxlTGliRm1wL0R4ZUNhcHN1bGVQcm9jZQ0KPiA+ID4+Pj4+PiBzc0xpYi5jDQo+ID4gPj4+Pj4+ Pj4+PiBAQCAtMTAwLDYgKzEwMCw3IEBAIElzVmFsaWRDYXBzdWxlSGVhZGVyICgNCj4gPiA+Pj4+ Pj4+Pj4+DQo+ID4gPj4+Pj4+Pj4+PiBleHRlcm4gQk9PTEVBTg0KPiA+ID4+Pj4+PiBtRHhlQ2Fw c3VsZUxpYkVuZE9mRHhlOw0KPiA+ID4+Pj4+Pj4+Pj4gQk9PTEVBTg0KPiBtTmVlZFJlc2V0Ow0K PiA+ID4+Pj4+Pj4+Pj4gK0JPT0xFQU4NCj4gbUZpcnN0Um91bmQgPQ0KPiA+ID4+Pj4+PiBUUlVF Ow0KPiA+ID4+Pj4+Pj4+Pj4NCj4gPiA+Pj4+Pj4+Pj4+IFZPSUQgICAgICAgICAgICAgICAgICAg ICAgICAqKm1DYXBzdWxlUHRyOw0KPiA+ID4+Pj4+Pj4+Pj4gRUZJX1NUQVRVUw0KPiAqbUNhcHN1 bGVTdGF0dXNBcnJheTsNCj4gPiA+Pj4+Pj4+Pj4+IEBAIC0zNjQsOCArMzY1LDExIEBADQo+ID4g Pj4+Pj4+IFBvcHVsYXRlQ2Fwc3VsZUluQ29uZmlndXJhdGlvblRhYmxlICgNCj4gPiA+Pj4+Pj4+ Pj4+DQo+ID4gPj4+Pj4+Pj4+PiAgRWFjaCBpbmRpdmlkdWFsIGNhcHN1bGUgcmVzdWx0IGlzDQo+ IHJlY29yZGVkIGluDQo+ID4gPj4+Pj4+IGNhcHN1bGUgcmVjb3JkIHZhcmlhYmxlLg0KPiA+ID4+ Pj4+Pj4+Pj4NCj4gPiA+Pj4+Pj4+Pj4+IC0gIEBwYXJhbVtpbl0gIEZpcnN0Um91bmQgICAgICAg ICBUUlVFOg0KPiBGaXJzdA0KPiA+ID4+Pj4+PiByb3VuZC4gTmVlZCBza2lwIHRoZQ0KPiA+ID4+ Pj4+Pj4+IEZNUA0KPiA+ID4+Pj4+Pj4+Pj4gY2Fwc3VsZXMgd2l0aCBub24gemVybw0KPiBFbWJl ZGRlZERyaXZlckNvdW50Lg0KPiA+ID4+Pj4+Pj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEZBTFNFOg0KPiBQcm9jZXNzDQo+ID4gPj4+Pj4+IHJlc3QgRk1QIGNhcHN1bGVz Lg0KPiA+ID4+Pj4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgRmlyc3RSb3VuZCAgICAgICAgIFdoZXRo ZXINCj4gdGhpcyBpcw0KPiA+ID4+Pj4+PiB0aGUgZmlyc3QgaW52b2NhdGlvbg0KPiA+ID4+Pj4+ Pj4+Pj4gKyAgQHBhcmFtW2luXSAgTGFzdFJvdW5kICAgICAgICAgIFdoZXRoZXINCj4gdGhpcyBp cw0KPiA+ID4+Pj4+PiB0aGUgbGFzdCBpbnZvY2F0aW9uDQo+ID4gPj4+Pj4+Pj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0U6DQo+IEZpcnN0DQo+ID4gPj4+Pj4+IG9m IDIgcm91bmRzLiBOZWVkIHNraXANCj4gPiA+Pj4+Pj4+PiB0aGUNCj4gPiA+Pj4+Pj4+Pj4+IEZN UA0KPiA+ID4+Pj4+Pj4+Pj4gKw0KPiA+ID4+Pj4+PiBjYXBzdWxlcyB3aXRoIG5vbiB6ZXJvDQo+ ID4gPj4+Pj4+Pj4+PiBFbWJlZGRlZERyaXZlckNvdW50Lg0KPiA+ID4+Pj4+Pj4+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUU6DQo+IFByb2Nlc3MNCj4gPiA+Pj4+Pj4g cmVzdCBGTVAgY2Fwc3VsZXMuDQo+ID4gPj4+Pj4+Pj4+Pg0KPiA+ID4+Pj4+Pj4+Pj4gIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgVGhlcmUgaXMNCj4gbm8NCj4gPiA+Pj4+Pj4gZXJy b3Igd2hlbiBwcm9jZXNzaW5nDQo+ID4gPj4+Pj4+Pj4+PiBjYXBzdWxlcy4NCj4gPiA+Pj4+Pj4+ Pj4+ICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAgIE5vIGVub3VnaA0KPiA+ID4+Pj4+ PiByZXNvdXJjZSB0byBwcm9jZXNzDQo+ID4gPj4+Pj4+Pj4+PiBjYXBzdWxlcy4NCj4gPiA+Pj4+ Pj4+Pj4+IEBAIC0zNzMsNyArMzc3LDggQEANCj4gPiA+Pj4+Pj4gUG9wdWxhdGVDYXBzdWxlSW5D b25maWd1cmF0aW9uVGFibGUgKA0KPiA+ID4+Pj4+Pj4+Pj4gKiovDQo+ID4gPj4+Pj4+Pj4+PiBF RklfU1RBVFVTDQo+ID4gPj4+Pj4+Pj4+PiBQcm9jZXNzVGhlc2VDYXBzdWxlcyAoDQo+ID4gPj4+ Pj4+Pj4+PiAtICBJTiBCT09MRUFOICBGaXJzdFJvdW5kDQo+ID4gPj4+Pj4+Pj4+PiArICBJTiBC T09MRUFOICBGaXJzdFJvdW5kLA0KPiA+ID4+Pj4+Pj4+Pj4gKyAgSU4gQk9PTEVBTiAgTGFzdFJv dW5kDQo+ID4gPj4+Pj4+Pj4+PiAgKQ0KPiA+ID4+Pj4+Pj4+Pj4gew0KPiA+ID4+Pj4+Pj4+Pj4g IEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPj4+Pj4+Pj4+PiBAQCAt NDUzLDcgKzQ1OCw3IEBAIFByb2Nlc3NUaGVzZUNhcHN1bGVzICgNCj4gPiA+Pj4+Pj4+Pj4+ICAg ICAgICBjb250aW51ZTsNCj4gPiA+Pj4+Pj4+Pj4+ICAgICAgfQ0KPiA+ID4+Pj4+Pj4+Pj4NCj4g PiA+Pj4+Pj4+Pj4+IC0gICAgICBpZiAoKCFGaXJzdFJvdW5kKSB8fA0KPiAoRW1iZWRkZWREcml2 ZXJDb3VudA0KPiA+ID4+Pj4+PiA9PSAwKSkgew0KPiA+ID4+Pj4+Pj4+Pj4gKyAgICAgIGlmIChM YXN0Um91bmQgfHwNCj4gKEVtYmVkZGVkRHJpdmVyQ291bnQgPT0NCj4gPiA+Pj4+Pj4gMCkpIHsN Cj4gPiA+Pj4+Pj4+Pj4+ICAgICAgICBERUJVRygoREVCVUdfSU5GTywNCj4gIlByb2Nlc3NDYXBz dWxlSW1hZ2UgLQ0KPiA+ID4+Pj4+PiAweCV4XG4iLA0KPiA+ID4+Pj4+Pj4+Pj4gQ2Fwc3VsZUhl YWRlcikpOw0KPiA+ID4+Pj4+Pj4+Pj4gICAgICAgIFN0YXR1cyA9IFByb2Nlc3NDYXBzdWxlSW1h Z2UNCj4gPiA+Pj4+Pj4gKENhcHN1bGVIZWFkZXIpOw0KPiA+ID4+Pj4+Pj4+Pj4gICAgICAgIG1D YXBzdWxlU3RhdHVzQXJyYXkgW0luZGV4XSA9DQo+IFN0YXR1czsNCj4gPiA+Pj4+Pj4+Pj4+IEBA IC01NDYsNyArNTUxLDcgQEAgUHJvY2Vzc0NhcHN1bGVzICgNCj4gPiA+Pj4+Pj4+Pj4+ICBFRklf U1RBVFVTICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPj4+Pj4+Pj4+Pg0KPiA+ID4+ Pj4+Pj4+Pj4gIGlmICghbUR4ZUNhcHN1bGVMaWJFbmRPZkR4ZSkgew0KPiA+ID4+Pj4+Pj4+Pj4g LSAgICBTdGF0dXMgPSBQcm9jZXNzVGhlc2VDYXBzdWxlcyhUUlVFKTsNCj4gPiA+Pj4+Pj4+Pj4+ ICsgICAgU3RhdHVzID0gUHJvY2Vzc1RoZXNlQ2Fwc3VsZXMoVFJVRSwNCj4gRkFMU0UpOw0KPiA+ ID4+Pj4+Pj4+Pj4NCj4gPiA+Pj4+Pj4+Pj4+ICAgIC8vDQo+ID4gPj4+Pj4+Pj4+PiAgICAvLyBS ZWJvb3QgU3lzdGVtIGlmIGFuZCBvbmx5IGlmIGFsbA0KPiBjYXBzdWxlDQo+ID4gPj4+Pj4+IHBy b2Nlc3NlZC4NCj4gPiA+Pj4+Pj4+Pj4+IEBAIC01NTUsOCArNTYwLDkgQEAgUHJvY2Vzc0NhcHN1 bGVzICgNCj4gPiA+Pj4+Pj4+Pj4+ICAgIGlmIChtTmVlZFJlc2V0ICYmDQo+IEFyZUFsbEltYWdl c1Byb2Nlc3NlZCgpKSB7DQo+ID4gPj4+Pj4+Pj4+PiAgICAgIERvUmVzZXRTeXN0ZW0oKTsNCj4g PiA+Pj4+Pj4+Pj4+ICAgIH0NCj4gPiA+Pj4+Pj4+Pj4+ICsgICAgbUZpcnN0Um91bmQgPSBGQUxT RTsNCj4gPiA+Pj4+Pj4+Pj4+ICB9IGVsc2Ugew0KPiA+ID4+Pj4+Pj4+Pj4gLSAgICBTdGF0dXMg PSBQcm9jZXNzVGhlc2VDYXBzdWxlcyhGQUxTRSk7DQo+ID4gPj4+Pj4+Pj4+PiArICAgIFN0YXR1 cyA9DQo+IFByb2Nlc3NUaGVzZUNhcHN1bGVzKG1GaXJzdFJvdW5kLA0KPiA+ID4+Pj4+PiBUUlVF KTsNCj4gPiA+Pj4+Pj4+Pj4+ICAgIC8vDQo+ID4gPj4+Pj4+Pj4+PiAgICAvLyBSZWJvb3QgU3lz dGVtIGlmIHJlcXVpcmVkIGFmdGVyIGFsbA0KPiA+ID4+Pj4+PiBjYXBzdWxlIHByb2Nlc3NlZA0K PiA+ID4+Pj4+Pj4+Pj4gICAgLy8NCj4gPiA+Pj4+Pj4+Pj4+IC0tDQo+ID4gPj4+Pj4+Pj4+PiAy LjE3LjANCj4gPiA+Pj4+Pj4+Pj4+DQo+ID4gPj4+Pj4+Pj4+Pg0KPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+ID4+Pj4+Pj4+Pj4gZWRrMi1kZXZl bCBtYWlsaW5nIGxpc3QNCj4gPiA+Pj4+Pj4+Pj4+IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+ ID4gPj4+Pj4+Pj4+Pg0KPiBodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Vk azItZGV2ZWwNCj4gPiA+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fDQo+ID4gPj4+PiBlZGsyLWRldmVsIG1haWxpbmcgbGlzdA0KPiA+ID4+Pj4gZWRr Mi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiA+Pj4+IGh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxt YW4vbGlzdGluZm8vZWRrMi1kZXZlbA0KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fDQo+ID4gZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gPiBlZGsy LWRldmVsQGxpc3RzLjAxLm9yZw0KPiA+IGh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlz dGluZm8vZWRrMi1kZXZlbA0K