From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (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 CC0C220945BF3 for ; Thu, 14 Sep 2017 02:36:52 -0700 (PDT) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga104.jf.intel.com with ESMTP; 14 Sep 2017 02:39:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,392,1500966000"; d="scan'208";a="311575237" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by fmsmga004.fm.intel.com with ESMTP; 14 Sep 2017 02:39:50 -0700 Received: from fmsmsx115.amr.corp.intel.com (10.18.116.19) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 14 Sep 2017 02:39:50 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by fmsmsx115.amr.corp.intel.com (10.18.116.19) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 14 Sep 2017 02:39:50 -0700 Received: from shsmsx151.ccr.corp.intel.com ([169.254.3.98]) by shsmsx102.ccr.corp.intel.com ([169.254.2.39]) with mapi id 14.03.0319.002; Thu, 14 Sep 2017 17:39:46 +0800 From: "Zeng, Star" To: Laszlo Ersek , "Wang, Jian J" , "Yao, Jiewen" CC: "Dong, Eric" , "Justen, Jordan L" , "edk2-devel@lists.01.org" , "Wolman, Ayellet" , "Kinney, Michael D" , "Zeng, Star" Thread-Topic: [edk2] [PATCH 4/4] OvmfPkg/QemuVideoDxe: Update QemuVideoDxe driver to bypass NULL pointer detection if enabled. Thread-Index: AQHTLHJCQi2+U94RoUitjf7fG7CRTaKy8rOAgAAcvwCAACF6gIAAV2QAgAACRYCAAAJGAIAAAkEAgACPtlA= Date: Thu, 14 Sep 2017 09:39:46 +0000 Message-ID: <0C09AFA07DD0434D9E2A0C6AEB0483103B958C07@SHSMSX151.ccr.corp.intel.com> References: <20170913092507.12504-1-jian.j.wang@intel.com> <20170913092507.12504-5-jian.j.wang@intel.com> <848bc70b-b3f7-62fb-ef2d-df89ff8805a6@redhat.com> <4dd43619-552e-9d0e-3d2b-ca9c1f3b80a3@redhat.com> <74D8A39837DF1E4DA445A8C0B3885C503A9B264A@SHSMSX151.ccr.corp.intel.com> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH 4/4] OvmfPkg/QemuVideoDxe: Update QemuVideoDxe driver to bypass NULL pointer detection if enabled. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Sep 2017 09:36:53 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSByZWFsaXN0aWMgcHJvYmxlbSBJIGp1c3QgZm91bmQgYW5kIHdhbnQgdG8gc2hh cmUuDQoNCkdDRCBkYXRhYmFzZSBpcyBidWlsdCBiYXNlZCBvbiByZXNvdXJjZSBob2IgcmVwb3J0 ZWQgZnJvbSBQRUksIGFuZCBHQ0QgY2hlY2tzIHRoZSBpbnB1dCBBdHRyaWJ1dGVzIGFnYWluc3Qg Q2FwYWJpbGl0aWVzIHdoZW4gc2V0dGluZyBBdHRyaWJ1dGVzLCBidXQgd2UgKEkganVzdCBzZWFy Y2hlZCB0aGUgd2hvbGUgY29kZWJhc2UpIGNhbiBzZWUgdGhlcmUgaXMgbm8gY29kZSByZXBvcnRp bmcgcmVzb3VyY2UgaG9iIHdpdGggRUZJX1JFU09VUkNFX0FUVFJJQlVURV9SRUFEX1BST1RFQ1RB QkxFLCBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX0VYRUNVVElPTl9QUk9URUNUQUJMRSBvciBFRklf UkVTT1VSQ0VfQVRUUklCVVRFX1JFQURfT05MWV9QUk9URUNUQUJMRSBzZXQuDQoNCg0KDQpUaGFu a3MsDQpTdGFyDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogTGFzemxvIEVyc2Vr IFttYWlsdG86bGVyc2VrQHJlZGhhdC5jb21dIA0KU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAx NCwgMjAxNyA0OjU0IFBNDQpUbzogV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+ OyBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+DQpDYzogRG9uZywgRXJpYyA8ZXJp Yy5kb25nQGludGVsLmNvbT47IEp1c3RlbiwgSm9yZGFuIEwgPGpvcmRhbi5sLmp1c3RlbkBpbnRl bC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgV29sbWFuLCBBeWVsbGV0IDxheWVsbGV0 LndvbG1hbkBpbnRlbC5jb20+OyBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBp bnRlbC5jb20+OyBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPg0KU3ViamVjdDogUmU6 IFtlZGsyXSBbUEFUQ0ggNC80XSBPdm1mUGtnL1FlbXVWaWRlb0R4ZTogVXBkYXRlIFFlbXVWaWRl b0R4ZSBkcml2ZXIgdG8gYnlwYXNzIE5VTEwgcG9pbnRlciBkZXRlY3Rpb24gaWYgZW5hYmxlZC4N Cg0KT24gMDkvMTQvMTcgMTA6NDYsIFdhbmcsIEppYW4gSiB3cm90ZToNCj4gSXTigJlzIGFuIGlt cGxlbWVudGF0aW9uIGxpbWl0YXRpb24uIEFsbCBwYWdlIGF0dHJpYnV0ZXMgd2lsbCBiZSBmaWx0 ZXJlZCBvdXQgYmVmb3JlIGNhbGxpbmcgQ1BVIGFyY2ggcHJvdG9jb2wgdG8gdXBkYXRlIHRoZSBh dHRyaWJ1dGVzIChHY2QuYykuDQoNClRoYXQgY2Fubm90IGJlIGEgcmFuZG9tIG9jY3VycmVuY2U7 IEknbSBzdXJlIHRoZXJlIHdhcyBzb21lIHNwZWNpZmljIGludGVudCBiZWhpbmQgZmlsdGVyaW5n IG91dCB0aGUgcGFnZSBhdHRyaWJ1dGVzLg0KDQpEb2VzICJnaXQgYmxhbWUiIHByb3ZpZGUgYSBy ZWFzb24sIGZyb20gdGhlIG1lc3NhZ2Ugb2YgdGhlIGNvbW1pdCB0aGF0IGFkZGVkIHRoZSBmaWx0 ZXJpbmc/DQoNClRoYW5rcywNCkxhc3psbw0KDQo+IEZyb206IFlhbywgSmlld2VuDQo+IFNlbnQ6 IFRodXJzZGF5LCBTZXB0ZW1iZXIgMTQsIDIwMTcgNDozOCBQTQ0KPiBUbzogTGFzemxvIEVyc2Vr IDxsZXJzZWtAcmVkaGF0LmNvbT47IFdhbmcsIEppYW4gSiANCj4gPGppYW4uai53YW5nQGludGVs LmNvbT4NCj4gQ2M6IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5jb20+OyBKdXN0ZW4sIEpv cmRhbiBMIA0KPiA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT47IGVkazItZGV2ZWxAbGlzdHMu MDEub3JnOyBXb2xtYW4sIEF5ZWxsZXQgDQo+IDxheWVsbGV0LndvbG1hbkBpbnRlbC5jb20+OyBL aW5uZXksIE1pY2hhZWwgRCANCj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgWmVuZywg U3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtlZGsyXSBbUEFUQ0gg NC80XSBPdm1mUGtnL1FlbXVWaWRlb0R4ZTogVXBkYXRlIFFlbXVWaWRlb0R4ZSBkcml2ZXIgdG8g YnlwYXNzIE5VTEwgcG9pbnRlciBkZXRlY3Rpb24gaWYgZW5hYmxlZC4NCj4gDQo+IEhJDQo+IEkg d29uZGVyIGlmIGl0IGlzIHNwZWMgbGltaXRhdGlvbiBvciBpbXBsZW1lbnRhdGlvbiBsaW1pdGF0 aW9uLg0KPiANCj4gSWYgaXQgaXMgaW1wbGVtZW50YXRpb24gbGltaXRhdGlvbiwgd2UgY2FuIGVu aGFuY2UgdGhlIER4ZUNvcmUgdG8gYWxsb3cgaXQuDQo+IA0KPiBUaGFuayB5b3UNCj4gWWFvIEpp ZXdlbg0KPiANCj4gRnJvbTogTGFzemxvIEVyc2VrIFttYWlsdG86bGVyc2VrQHJlZGhhdC5jb21d DQo+IFNlbnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgMTQsIDIwMTcgNDozMCBQTQ0KPiBUbzogV2Fu ZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb208bWFpbHRvOmppYW4uai53YW5nQGludGVs LmNvbT4+DQo+IENjOiBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPG1haWx0bzplcmlj LmRvbmdAaW50ZWwuY29tPj47IA0KPiBKdXN0ZW4sIEpvcmRhbiBMIA0KPiA8am9yZGFuLmwuanVz dGVuQGludGVsLmNvbTxtYWlsdG86am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT4+OyANCj4gZWRr Mi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVkazItZGV2ZWxAbGlzdHMuMDEub3JnPjsgWWFv LCBKaWV3ZW4gDQo+IDxqaWV3ZW4ueWFvQGludGVsLmNvbTxtYWlsdG86amlld2VuLnlhb0BpbnRl bC5jb20+PjsgV29sbWFuLCBBeWVsbGV0IA0KPiA8YXllbGxldC53b2xtYW5AaW50ZWwuY29tPG1h aWx0bzpheWVsbGV0LndvbG1hbkBpbnRlbC5jb20+PjsgS2lubmV5LCANCj4gTWljaGFlbCBEIA0K PiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb208bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50 ZWwuY29tPj47IFplbmcsIA0KPiBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPG1haWx0bzpzdGFy LnplbmdAaW50ZWwuY29tPj4NCj4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggNC80XSBPdm1m UGtnL1FlbXVWaWRlb0R4ZTogVXBkYXRlIFFlbXVWaWRlb0R4ZSBkcml2ZXIgdG8gYnlwYXNzIE5V TEwgcG9pbnRlciBkZXRlY3Rpb24gaWYgZW5hYmxlZC4NCj4gDQo+IE9uIDA5LzE0LzE3IDA1OjE3 LCBXYW5nLCBKaWFuIEogd3JvdGU6DQo+PiBGb3IgdGhlIHVzZSBvZiBhcmNoIHByb3RvY29sLCB0 aGVyZSdzIG9uZSB0aGluZyBJIG1lbnRpb25lZCBpcyBub3QgDQo+PiBhY2N1cmF0ZS4gSSBhY3R1 YWxseSB0cmllZCBnRFMtPlNldE1lbW9yeVNwYWNlQXR0cmlidXRlcygpIGJ1dCBpdCANCj4+IGNh bm5vdCBjaGFuZ2UgcGFnZSBhdHRyaWJ1dGVzLiBUaGF0J3Mgd2h5IEkgaGF2ZSB0byB0dXJuIHRv IGNwdSBhcmNoIA0KPj4gcHJvdG9jb2wuDQo+IFRoYW5rIHlvdSBmb3IgdGhlIGV4cGxhbmF0aW9u Lg0KPiANCj4gSW4gdGhhdCBjYXNlLCB3ZSBjYW5ub3QgYXZvaWQgdmlvbGF0aW5nIHRoZSBQSSBz cGVjLiBJIGFncmVlIHdlIGNhbiANCj4gYnJlYWsgdGhlIHNwZWMgaWYgaXQgaGFwcGVucyBmb3Ig c2VjdXJpdHkgcHVycG9zZXMsIGJ1dCBpbiB0aGF0IGNhc2UsIA0KPiBJIGJlbGlldmUgdGhhdCBo aWRpbmcgdGhlIGltcGxlbWVudGF0aW9uIGJlaGluZCBhIGxpYnJhcnkgY2xhc3MgaXMgDQo+IG1h bmRhdG9yeS4gVmlld2VkIGZyb20gdGhlIHNwZWMgc2lkZSwgYWNjZXNzaW5nIHRoZSBDUFUgQXJj aCBwcm90b2NvbCANCj4gaXMgYSBoYWNrLCBhbmQgc28gaXQgc2hvdWxkIG5vdCBiZSBzcHJlYWQg dG8gdGhlIHNvdXJjZSBjb2RlIG9mIA0KPiBzZXZlcmFsIGRyaXZlciBtb2R1bGVzLg0KPiANCj4g VGhhbmsgeW91LA0KPiBMYXN6bG8NCj4gDQo+IA0KPj4NCj4+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+PiBGcm9tOiBlZGsyLWRldmVsIFttYWlsdG86ZWRrMi1kZXZlbC1ib3VuY2VzQGxp c3RzLjAxLm9yZ10gT24gQmVoYWxmIA0KPj4gT2YgV2FuZywgSmlhbiBKDQo+PiBTZW50OiBUaHVy c2RheSwgU2VwdGVtYmVyIDE0LCAyMDE3IDk6MTcgQU0NCj4+IFRvOiBMYXN6bG8gRXJzZWsgPGxl cnNla0ByZWRoYXQuY29tPG1haWx0bzpsZXJzZWtAcmVkaGF0LmNvbT4+DQo+PiBDYzogRG9uZywg RXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbTxtYWlsdG86ZXJpYy5kb25nQGludGVsLmNvbT4+OyAN Cj4+IEp1c3RlbiwgSm9yZGFuIEwgDQo+PiA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbTxtYWls dG86am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT4+OyANCj4+IGVkazItZGV2ZWxAbGlzdHMuMDEu b3JnPG1haWx0bzplZGsyLWRldmVsQGxpc3RzLjAxLm9yZz47IFlhbywgSmlld2VuIA0KPj4gPGpp ZXdlbi55YW9AaW50ZWwuY29tPG1haWx0bzpqaWV3ZW4ueWFvQGludGVsLmNvbT4+OyBXb2xtYW4s IEF5ZWxsZXQgDQo+PiA8YXllbGxldC53b2xtYW5AaW50ZWwuY29tPG1haWx0bzpheWVsbGV0Lndv bG1hbkBpbnRlbC5jb20+PjsgS2lubmV5LCANCj4+IE1pY2hhZWwgRCANCj4+IDxtaWNoYWVsLmQu a2lubmV5QGludGVsLmNvbTxtYWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+PjsgDQo+ PiBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPG1haWx0bzpzdGFyLnplbmdAaW50ZWwu Y29tPj4NCj4+IFN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIDQvNF0gT3ZtZlBrZy9RZW11Vmlk ZW9EeGU6IFVwZGF0ZSBRZW11VmlkZW9EeGUgZHJpdmVyIHRvIGJ5cGFzcyBOVUxMIHBvaW50ZXIg ZGV0ZWN0aW9uIGlmIGVuYWJsZWQuDQo+Pg0KPj4gVGhhbmtzIGZvciB0aGUgY29tbWVudHMgYW5k IGdvb2QgYWR2aWNlcy4gU29ycnkgdGhlIGZvcm1hdCBpc3N1ZXMuDQo+PiBUaGlzIGlzIG15IGZp cnN0IHBhdGNoIGZvciB0aGlzIHByb2plY3QuIFRvbyBtYW55IGRldGFpbHMgZm9yIG1lIHRvIA0K Pj4gZ2V0IGZhbWlsaWFyIHdpdGguDQo+Pg0KPj4gKDEpIFN1cmUuDQo+PiAoMikgSSdsbCBjaGFu Z2UgdGhhdC4NCj4+ICgzKSBJJ2xsIHVzZSB0aGUgdG9vbCB0byBlbnN1cmUgdGhlIHBhdGNoIGZv cm1hdC4NCj4+ICg0KSBJJ2xsIHJlbW92ZSB0aGUgJywnIGluIG5hbWUNCj4+ICg1KSBJJ2xsIGFk ZCBtb3JlIGRlc2NyaXB0aW9uIGFib3V0IGl0Lg0KPj4gKDYpIFlvdSdyZSByaWdodC4gSSBzaG91 bGQgdXNlIFNldE1lbW9yeVNwYWNlQXR0cmlidXRlcygpIG9mIERYRSBzZXJ2aWNlDQo+PiAgICAg IGluc3RlYWQuIFRoZSBvbmx5IHJlYXNvbiBJIGRpZG4ndCBkbyBpdCBpcyB0aGF0IEkgZm91bmQN Cj4+ICAgICAgIEdldE1lbW9yeVNwYWNlRGVzY3JpcHRvcigpIGRvZXNuJ3QgcmV0dXJuIHRoZSBz YW1lIGluZm9ybWF0aW9uDQo+PiAgICAgIHdoaWNoIFNldE1lbW9yeVNwYWNlQXR0cmlidXRlcygp IGp1c3QgY2hhbmdlZC4gU28gSSBmZWVsIHVzaW5nIENQVQ0KPj4gICAgIGFyY2ggcHJvdG9jb2wg aXMgYSBiaXQgc2FmZXIuIEFueXdheSwgSSdsbCBjaGFuZ2UgaXQuDQo+PiAoNykgSSBkaWQgcHV0 IHRob3NlIG1hY3JvcyBpbiB0aGUgaW5zdGFsbCBmdW5jdGlvbiBiZWZvcmUuIFRvIHJlZHVjZSB0 aGUNCj4+ICAgICAgbnVtYmVyIG9mIGNoYW5nZWQgZmlsZXMsIEkgbWFkZSBjdXJyZW50IGNoYW5n ZXMuIFlvdSdyZSByaWdodCBpdCdzDQo+PiAgICAgIG5vdCB3b3J0aHkuDQo+PiAoOCkgVXNpbmcg bWFjcm8gY2FuIGhlbHAgdGhlIHJlYWRhYmlsaXR5LCB3aGljaCBpcyBtb3JlIGltcG9ydGFudCB0 byBtZS4NCj4+ICAgICBJIGtub3cgZnVuY3Rpb24gY2FuIGRvIHRoZSBzYW1lLiBCdXQgaXQgbG9v a3MgYSBiaXQgaGVhdnkgaW4gdGhpcyBzaXR1YXRpb24uDQo+PiAgICAgSSBoYXZlIHRvIGFkbWl0 IHJlcGxhY2luZyAgdGhlIG1hY3JvcyB3aXRoIGEgbGlicmFyeSBpcyBhIHZlcnkgZ29vZCBpZGVh LA0KPj4gICAgIHdoaWNoIGJyaW5ncyB0aGUgc2FtZSByZWFkYWJpbGl0eS4gSSBkaWRuJ3QgdGhp bmsgb2YgdGhhdCBiZWZvcmUuIEFsdGhvdWdoDQo+PiAgICAgTGlicmFyeSBpcyBzdGlsbCBhIGxp dHRsZSBiaXQgaGVhdnkgdG8gbWUgYnV0IGl0J3MgaW4gYSBkaWZmZXJlbnQgd2F5LCBJIHRoaW5r IGl0DQo+PiAgICAgd29ydGggYSB0cnlpbmcuDQo+PiAoOSkgUHV0dGluZyBhIHNwYWNlIGJlZm9y ZSBvcGVuIHBhcmVudGhlc2lzIGlzIGZvcmNlZCBzdHlsZT8gSWYgc28sIEknbGwgYWRkIGl0Lg0K Pj4gKDEwKSBZb3UncmUgcmlnaHQuIFVzaW5nIGxpYnJhcnkgY2FuIHJlZHVjZSB0aGUgZGlzdHVy YnMgdG8gYWZmZWN0ZWQgZHJpdmVycw0KPj4gICAgICAgIGJ5IHRoaXMgZmVhdHVyZSB0byB0aGUg bWluaW11bS4NCj4+DQo+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4gRnJvbTogTGFz emxvIEVyc2VrIFttYWlsdG86bGVyc2VrQHJlZGhhdC5jb21dDQo+PiBTZW50OiBUaHVyc2RheSwg U2VwdGVtYmVyIDE0LCAyMDE3IDc6MzUgQU0NCj4+IFRvOiBXYW5nLCBKaWFuIEogDQo+PiA8amlh bi5qLndhbmdAaW50ZWwuY29tPG1haWx0bzpqaWFuLmoud2FuZ0BpbnRlbC5jb20+Pg0KPj4gQ2M6 IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzplZGsyLWRldmVsQGxpc3RzLjAxLm9yZz47 IEp1c3RlbiwgDQo+PiBKb3JkYW4gTCANCj4+IDxqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPG1h aWx0bzpqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPj47IERvbmcsIA0KPj4gRXJpYyA8ZXJpYy5k b25nQGludGVsLmNvbTxtYWlsdG86ZXJpYy5kb25nQGludGVsLmNvbT4+OyBLaW5uZXksIA0KPj4g TWljaGFlbCBEIA0KPj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPG1haWx0bzptaWNoYWVs LmQua2lubmV5QGludGVsLmNvbT4+OyANCj4+IFdvbG1hbiwgQXllbGxldCANCj4+IDxheWVsbGV0 LndvbG1hbkBpbnRlbC5jb208bWFpbHRvOmF5ZWxsZXQud29sbWFuQGludGVsLmNvbT4+OyBZYW8s IA0KPj4gSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbTxtYWlsdG86amlld2VuLnlhb0BpbnRl bC5jb20+PjsgWmVuZywgDQo+PiBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPG1haWx0bzpzdGFy LnplbmdAaW50ZWwuY29tPj4NCj4+IFN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIDQvNF0gT3Zt ZlBrZy9RZW11VmlkZW9EeGU6IFVwZGF0ZSBRZW11VmlkZW9EeGUgZHJpdmVyIHRvIGJ5cGFzcyBO VUxMIHBvaW50ZXIgZGV0ZWN0aW9uIGlmIGVuYWJsZWQuDQo+Pg0KPj4gSGksDQo+Pg0KPj4gc29t ZSBvZiB0aGUgcG9pbnRzIEknbSBnb2luZyB0byBtYWtlIGhhdmUgYWxyZWFkeSBiZWVuIHBvaW50 ZWQgb3V0IGJ5DQo+PiBKb3JkYW46DQo+Pg0KPj4gKDEpIFdoZW4gcG9zdGluZyBhIHBhdGNoIHNl cmllcywgcGxlYXNlIGNvbGxlY3QgdGhlIENjOiB0YWdzIGZyb20gYWxsIA0KPj4gb2YgdGhlIHBh dGNoZXMsIGFuZCBhZGQgdGhlbSAqYWxsKiB0byB0aGUgY292ZXIgbGV0dGVyLiBUaGlzIHdheSAN Cj4+IGV2ZXJ5b25lIHdpbGwgZ2V0IGEgcGVyc29uYWwgY29weSBvZiB0aGUgZ2VuZXJhbCBkZXNj cmlwdGlvbi4NCj4+DQo+Pg0KPj4gKDIpIFRoZSBzdWJqZWN0IGxpbmUgaXMgdG9vIGxvbmcuIE9u ZSBwb3NzaWJsZSBzaW1wbGlmaWNhdGlvbjoNCj4+DQo+PiBPdm1mUGtnL1FlbXVWaWRlb0R4ZTog YnlwYXNzIE5VTEwgcG9pbnRlciBkZXRlY3Rpb24NCj4+DQo+Pg0KPj4gT24gMDkvMTMvMTcgMTE6 MjUsIFdhbmcsIEppYW4gSiB3cm90ZToNCj4+PiBRZW11VmlkZW9EeGUgZHJpdmVyIHdpbGwgaW5z dGFsbCBWQkUgU0hJTSBpbnRvIHBhZ2UgMC4gSWYgTlVMTCANCj4+PiBwb2ludGVyIGRldGVjdGlv biBpcyBlbmFibGVkLCBwYWdlIDAgbXVzdCBiZSBlbmFibGVkIHRlbXBvcmFyaWx5IA0KPj4+IGJl Zm9yZSBpbnN0YWxsaW5nIGFuZCBkaXNhYmxlZCBhZ2FpbiBhZnRlcndhcmRzLiBGb3IgV2luZG93 cyA3IGJvb3QsIA0KPj4+IEJJVDcgb2YgUGNkTnVsbFBvaW50ZXJEZXRlY3Rpb25Qcm9wZXJ0eU1h c2sgbXVzdCBzdGlsbCBiZSBzZXQgdG8gYXZvaWQgaGFuZy4NCj4+DQo+PiAoMykgU3ViamVjdCBs aW5lIGFuZCBjb21taXQgbWVzc2FnZSBib3RoIHNob3VsZCBub3QgZXhjZWVkIDc0IA0KPj4gY2hh cmFjdGVycyBsaW5lIGxlbmd0aC4gKE5vdCBzdXJlIGhvdyBtYW55IGNoYXJzIFBhdGNoQ2hlY2su cHkgDQo+PiBhY3R1YWxseSBlbmZvcmNlcywgSSBhbHdheXMgc3RpY2sgd2l0aCA3NCwgZm9sbG93 aW5nIHRoZSBMaW51eCBrZXJuZWwgDQo+PiB0cmFkaXRpb24uKQ0KPj4NCj4+IEkgcmV3cmFwcGVk IHRoZSBjb21taXQgbWVzc2FnZSBoZXJlIGZvciByZWFkYWJpbGl0eS4NCj4+DQo+Pg0KPj4+DQo+ Pj4gQ2M6IEppZXdlbiBZYW8gPGppZXdlbi55YW9AaW50ZWwuY29tPG1haWx0bzpqaWV3ZW4ueWFv QGludGVsLmNvbT4+DQo+Pj4gQ2M6IEVyaWMgRG9uZyA8ZXJpYy5kb25nQGludGVsLmNvbTxtYWls dG86ZXJpYy5kb25nQGludGVsLmNvbT4+DQo+Pj4gQ2M6IFN0YXIgWmVuZyA8c3Rhci56ZW5nQGlu dGVsLmNvbTxtYWlsdG86c3Rhci56ZW5nQGludGVsLmNvbT4+DQo+Pj4gQ2M6IExhc3psbyBFcnNl ayA8bGVyc2VrQHJlZGhhdC5jb208bWFpbHRvOmxlcnNla0ByZWRoYXQuY29tPj4NCj4+PiBDYzog SnVzdGVuLCBKb3JkYW4gTCANCj4+PiA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbTxtYWlsdG86 am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT4+DQo+Pj4gQ2M6IEtpbm5leSwgTWljaGFlbCBEIA0K Pj4+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbTxtYWlsdG86bWljaGFlbC5kLmtpbm5leUBp bnRlbC5jb20+Pg0KPj4+IENjOiBXb2xtYW4sIEF5ZWxsZXQgDQo+Pj4gPGF5ZWxsZXQud29sbWFu QGludGVsLmNvbTxtYWlsdG86YXllbGxldC53b2xtYW5AaW50ZWwuY29tPj4NCj4+PiBTdWdnZXN0 ZWQtYnk6IFdvbG1hbiwgQXllbGxldCANCj4+PiA8YXllbGxldC53b2xtYW5AaW50ZWwuY29tPG1h aWx0bzpheWVsbGV0LndvbG1hbkBpbnRlbC5jb20+Pg0KPj4+IENvbnRyaWJ1dGVkLXVuZGVyOiBU aWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjENCj4+PiBTaWduZWQtb2ZmLWJ5OiBX YW5nLCBKaWFuIEogDQo+Pj4gPGppYW4uai53YW5nQGludGVsLmNvbTxtYWlsdG86amlhbi5qLndh bmdAaW50ZWwuY29tPj4NCj4+DQo+PiAoNCkgSSB0aGluayB0aGlzIGlzIGFsc28gc29tZXRoaW5n IHRoYXQgSm9yZGFuIGhhZCBwb2ludGVkIG91dCBhIGxvbmcgDQo+PiB0aW1lIGFnbyAoYXBvbG9n aWVzIGlmIEkgbWlzLXJlbWVtYmVyKToNCj4+DQo+PiBUaGUgc3RyaW5ncyBhZnRlciB0aGUgdGFn cyBzaG91bGQgZm9ybSBjb3JyZWN0IGVtYWlsIGFkZHJlc3NlcywgYW5kIA0KPj4gaWYgdGhlcmUg YXJlIHZhcmlvdXMgZW1haWwgbWV0YS1jaGFyYWN0ZXJzIGluIHRoZW0sIGxpa2UgIi4iIChkb3Qp IGFuZCAiLCINCj4+IChjb21tYSksIHRoZW4gdGhleSBzaG91bGQgYmUgcXVvdGVkLCBsaWtlIHRo aXM6DQo+Pg0KPj4gQ2M6ICJKdXN0ZW4sIEpvcmRhbiBMIiANCj4+IDxqb3JkYW4ubC5qdXN0ZW5A aW50ZWwuY29tPG1haWx0bzpqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPj4NCj4+IENjOiAiS2lu bmV5LCBNaWNoYWVsIEQiIA0KPj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPG1haWx0bzpt aWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4+DQo+PiBDYzogIldvbG1hbiwgQXllbGxldCIgDQo+ PiA8YXllbGxldC53b2xtYW5AaW50ZWwuY29tPG1haWx0bzpheWVsbGV0LndvbG1hbkBpbnRlbC5j b20+Pg0KPj4gU3VnZ2VzdGVkLWJ5OiAiV29sbWFuLCBBeWVsbGV0IiANCj4+IDxheWVsbGV0Lndv bG1hbkBpbnRlbC5jb208bWFpbHRvOmF5ZWxsZXQud29sbWFuQGludGVsLmNvbT4+DQo+PiBTaWdu ZWQtb2ZmLWJ5OiAiV2FuZywgSmlhbiBKIiANCj4+IDxqaWFuLmoud2FuZ0BpbnRlbC5jb208bWFp bHRvOmppYW4uai53YW5nQGludGVsLmNvbT4+DQo+Pg0KPj4gSWYgeW91IGxvb2sgYXQgdGhlIGFj dHVhbCBhZGRyZXNzZXMgb24gdGhlIGVtYWlscyB0aGF0IGhhdmUgYmVlbiBzZW50IA0KPj4gb3V0 LCB5b3UgY2FuIHNlZSB0aGV5IGFyZSBhbGwgbWFsZm9ybWVkLiBGb3IgZXhhbXBsZSwgSSBoYXZl Og0KPj4NCj4+ICJKb3JkYW4gTCANCj4+IDxqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPG1haWx0 bzpqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPj4iIGZvciBKb3JkYW4gLS0gdGhlIHBhcnQgYmVm b3JlIHRoZSBjb21tYSB3YXMgdGFrZW4gdG8gYmUgYSBzZXBhcmF0ZSBlbWFpbCBhZGRyZXNzIChh IG1hbGZvcm1lZCBvbmUpLg0KPj4NCj4+IEF0IGxlYXN0IGZvciBteSByZXBseSwgSSBoYXZlIGZp eGVkIHVwIHRoZSBlbWFpbCBhZGRyZXNzZXMuDQo+Pg0KPj4NCj4+ICg1KSBUaGUgY29tbWl0IG1l c3NhZ2UgbWVudGlvbnMgQklUNyBvZiB0aGUgbmV3IFBDRC4NCj4+DQo+PiBGaXJzdCwgdGhhbmtz IGZvciBjaGVja2luZyBXaW5kb3dzIDcgYm9vdCAoYW5kIEknbSBoYXBweSB0aGF0IEkgZ290IA0K Pj4gc3VzcGljaW91cyBvZiB0aGUgZmVhdHVyZSB3aXRoIHJlZ2FyZCB0byBXaW5kb3dzIDcpLiBJ IHRoaW5rIEJJVDcgaXMgDQo+PiBhIGdvb2QgZmVhdHVyZS4NCj4+DQo+PiBIb3dldmVyLCBwbGVh c2UgaW5jbHVkZSB0aGUgc2hvcnQgZGVzY3JpcHRpb24gb2YgdGhhdCBmZWF0dXJlIGluIHRoZSAN Cj4+IGNvbW1pdCBtZXNzYWdlIC0tIGl0IGlzIG9uZSBzZW50ZW5jZTsgIkRpc2FibGUgTlVMTCBw b2ludGVyIGRldGVjdGlvbiANCj4+IGp1c3QgYWZ0ZXIgRW5kT2ZEeGUuIg0KPj4NCj4+IChJIHRo aW5rIEJJVDcgaXMgYSByZWFsbHkgc21hcnQgZmVhdHVyZSwgYW5kIEkgbGlrZSAqaG93KiBpdCBp cyB1c2VkIA0KPj4gaW4gIk5VTExfREVURUNUSU9OX0VOQUJMRUQiIGJlbG93LiBUaGUgY2hlY2sg bWVhbnMsICJpZiB0aGUgDQo+PiBwcm90ZWN0aW9uIGlzIGVuYWJsZWQgZm9yIERYRSwgYW5kICpu b3QgZGlzYWJsZWQqICg9PSBhbHNvIGVuYWJsZWQpIGFmdGVyIEVuZC1vZi1EeGUiLg0KPj4NCj4+ IFRoaXMgZG9lc24ndCBtZWFuIHRoYXQgSSBsaWtlIHRoZSBOVUxMX0RFVEVDVElPTl9FTkFCTEVE IG1hY3JvIA0KPj4gaXRzZWxmOyBtb3JlIG9uIHRoYXQgYmVsb3cuKQ0KPj4NCj4+DQo+Pj4gLS0t DQo+Pj4gIE92bWZQa2cvUWVtdVZpZGVvRHhlL0RyaXZlci5jICAgICAgICAgfCAxNSArKysrKysr KysrKysrKy0NCj4+PiAgT3ZtZlBrZy9RZW11VmlkZW9EeGUvUWVtdS5oICAgICAgICAgICB8IDE2 ICsrKysrKysrKysrKysrKysNCj4+PiAgT3ZtZlBrZy9RZW11VmlkZW9EeGUvUWVtdVZpZGVvRHhl LmluZiB8ICAyICsrDQo+Pj4gIDMgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQ0KPj4+DQo+Pj4gZGlmZiAtLWdpdCBhL092bWZQa2cvUWVtdVZpZGVvRHhlL0Ry aXZlci5jIA0KPj4+IGIvT3ZtZlBrZy9RZW11VmlkZW9EeGUvRHJpdmVyLmMgaW5kZXggMGRjZTgw ZTU5Yi4uZWUwZWVkNzIxNCAxMDA2NDQNCj4+PiAtLS0gYS9Pdm1mUGtnL1FlbXVWaWRlb0R4ZS9E cml2ZXIuYw0KPj4+ICsrKyBiL092bWZQa2cvUWVtdVZpZGVvRHhlL0RyaXZlci5jDQo+Pj4gQEAg LTE5NCw2ICsxOTQsNyBAQCBRZW11VmlkZW9Db250cm9sbGVyRHJpdmVyU3RhcnQgKA0KPj4+ICAg IFBDSV9UWVBFMDAgICAgICAgICAgICAgICAgICAgICAgICBQY2k7DQo+Pj4gICAgUUVNVV9WSURF T19DQVJEICAgICAgICAgICAgICAgICAgICpDYXJkOw0KPj4+ICAgIEVGSV9QQ0lfSU9fUFJPVE9D T0wgICAgICAgICAgICAgICAqQ2hpbGRQY2lJbzsNCj4+PiArICBFRklfQ1BVX0FSQ0hfUFJPVE9D T0wgICAgICAgICAgICAgKkNwdTsNCj4+DQo+PiAoNikgSSBiZWxpZXZlIEkgbWVudGlvbmVkIHRo aXMgaW4gdGhlIGVhcmxpZXIgZGlzY3Vzc2lvbiwgaW4gc29tZSANCj4+IGZvcm0sIGJ1dCBub3cg SSdsbCBzYXkgaXQgYWdhaW46DQo+Pg0KPj4gQSBVRUZJIGRyaXZlciBoYXMgbm8gYnVzaW5lc3Mg cG9raW5nIGF0IHRoZSBDUFUgQXJjaCBwcm90b2NvbC4gVGhlIFBJIA0KPj4gc3BlYyAoMS42KSBz dGF0ZXMsDQo+Pg0KPj4gICAxMi4zIENQVSBBcmNoaXRlY3R1cmFsIFByb3RvY29sDQo+PiAgIEVG SV9DUFVfQVJDSF9QUk9UT0NPTA0KPj4NCj4+ICAgU3VtbWFyeQ0KPj4NCj4+ICAgQWJzdHJhY3Rz IHRoZSBwcm9jZXNzb3Igc2VydmljZXMgdGhhdCBhcmUgcmVxdWlyZWQgdG8gaW1wbGVtZW50IHNv bWUNCj4+ICAgb2YgdGhlIERYRSBzZXJ2aWNlcy4gVGhpcyBwcm90b2NvbCBtdXN0IGJlIHByb2R1 Y2VkIGJ5IGEgYm9vdCBzZXJ2aWNlDQo+PiAgIG9yIHJ1bnRpbWUgRFhFIGRyaXZlciBhbmQgbWF5 IG9ubHkgYmUgY29uc3VtZWQgYnkgdGhlIERYRSBGb3VuZGF0aW9uDQo+PiAgIGFuZCBEWEUgZHJp dmVycyB0aGF0IHByb2R1Y2UgYXJjaGl0ZWN0dXJhbCBwcm90b2NvbHMuDQo+Pg0KPj4gVGhlIERY RSBjb3JlIGlzIG9idmlvdXNseSBmcmVlIHRvIHVzZSB0aGUgQ1BVIEFyY2ggcHJvdG9jb2wsIGJ1 dCBhIA0KPj4gVUVGSSBkcml2ZXIgaXMgZm9yYmlkZGVuIGZyb20gaXQsICpldmVuIGlmKiB3ZSBz YXkgdGhhdCwgaW4gdGhpcyBVRUZJIA0KPj4gZHJpdmVyLCB3ZSBhcmUgZ29pbmcgdG8gdXNlIERY RSBzZXJ2aWNlcy4gKFdoaWNoIGNvbWUgZnJvbSB0aGUgUEkgDQo+PiBzcGVjLCBhbmQgbm90IHRo ZSBVRUZJIHNwZWMuKQ0KPj4NCj4+IFRoZXJlZm9yZSwgaGVyZSB3ZSBoYXZlIHRvIHVzZSBnRFMt PlNldE1lbW9yeVNwYWNlQXR0cmlidXRlcygpLg0KPj4NCj4+IFRoZSBnRFMtPlNldE1lbW9yeVNw YWNlQXR0cmlidXRlcygpIHNlcnZpY2UgZGVwZW5kcyBvbiB0aGUgQ1BVIEFyY2ggDQo+PiBwcm90 b2NvbCwgYnkgdGhlIFBJIHNwZWMuIEl0IGlzIG5vdCBlYXN5IHRvIHNlZSwgYmVjYXVzZSB0aGUg UEkgc3BlYyANCj4+IGhhcyBhIGZvcm1hdHRpbmcgZXJyb3IgaW4gdGhpcyBhcmVhLiBJZiB5b3Ug bG9vayB1bmRlciANCj4+IEdldE1lbW9yeVNwYWNlRGVzY3JpcHRvcigpLCB0aGVyZSBpcyBhbiBl cnJvciBjb2RlDQo+Pg0KPj4gICBFRklfTk9UX0FWQUlMQUJMRV9ZRVQgIFRoZSBhdHRyaWJ1dGVz IGNhbm5vdCBiZSBzZXQgYmVjYXVzZSBDUFUNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICBh cmNoaXRlY3R1cmFsIHByb3RvY29sIGlzIG5vdCBhdmFpbGFibGUgeWV0Lg0KPj4NCj4+IE9idmlv dXNseSB0aGlzIGVycm9yIGNvZGUgYmVsb25ncyB0byBTZXRNZW1vcnlTcGFjZUF0dHJpYnV0ZXMo KSwgbm90IA0KPj4gR2V0TWVtb3J5U3BhY2VEZXNjcmlwdG9yKCkuDQo+Pg0KPj4gQW55d2F5LCBn RFMgc2hvdWxkIGJlIHVzZWQsIGFyY2hpdGVjdHVyYWwgcHJvdG9jb2xzIHNob3VsZG4ndCBiZS4N Cj4+DQo+Pg0KPj4+DQo+Pj4gICAgT2xkVHBsID0gZ0JTLT5SYWlzZVRQTCAoVFBMX0NBTExCQUNL KTsNCj4+Pg0KPj4+IEBAIC00NzksNyArNDgwLDE5IEBAIFFlbXVWaWRlb0NvbnRyb2xsZXJEcml2 ZXJTdGFydCAoICAjaWYgZGVmaW5lZCANCj4+PiBNREVfQ1BVX0lBMzIgfHwgZGVmaW5lZCBNREVf Q1BVX1g2NA0KPj4+ICAgIGlmIChQcml2YXRlLT5WYXJpYW50ID09IFFFTVVfVklERU9fQk9DSFNf TU1JTyB8fA0KPj4+ICAgICAgICBQcml2YXRlLT5WYXJpYW50ID09IFFFTVVfVklERU9fQk9DSFMp IHsNCj4+PiAtICAgIEluc3RhbGxWYmVTaGltIChDYXJkLT5OYW1lLCBQcml2YXRlLT5HcmFwaGlj c091dHB1dC5Nb2RlLT5GcmFtZUJ1ZmZlckJhc2UpOw0KPj4+ICsgICAgLy8NCj4+PiArICAgIC8v IFByZXBhcmUgQ1BVIGFyY2ggcHJvdG9jb2wgZm9yIE5VTEwgcG9pbnRlciBkZXRlY3Rpb24NCj4+ PiArICAgIC8vDQo+Pj4gKyAgICBTdGF0dXMgPSBnQlMtPkxvY2F0ZVByb3RvY29sICgNCj4+PiAr ICAgICAgICAgICAgICAgICAgICAmZ0VmaUNwdUFyY2hQcm90b2NvbEd1aWQsDQo+Pj4gKyAgICAg ICAgICAgICAgICAgICAgTlVMTCwNCj4+PiArICAgICAgICAgICAgICAgICAgICAoVk9JRCAqKikg JkNwdQ0KPj4+ICsgICAgICAgICAgICAgICAgICAgICk7DQo+Pj4gKyAgICBBU1NFUlRfRUZJX0VS Uk9SIChTdGF0dXMpOw0KPj4+ICsNCj4+PiArICAgIERJU0FCTEVfTlVMTF9ERVRFQ1RJT04oQ3B1 KTsNCj4+PiArICAgICAgSW5zdGFsbFZiZVNoaW0gKENhcmQtPk5hbWUsIFByaXZhdGUtPkdyYXBo aWNzT3V0cHV0Lk1vZGUtPkZyYW1lQnVmZmVyQmFzZSk7DQo+Pj4gKyAgICBFTkFCTEVfTlVMTF9E RVRFQ1RJT04oQ3B1KTsNCj4+DQo+PiAoNykgVGhlIE5VTEwgZGV0ZWN0aW9uIGRpc2FibGluZyBh bmQgZW5hYmxpbmcgc2hvdWxkIGJyYWNrZXQgdGhlIA0KPj4gYWZmZWN0ZWQgY29kZSBhcyB0aWdo dGx5IGFzIHBvc3NpYmxlLg0KPj4NCj4+IFNvIHBsZWFzZSBtb3ZlIHRoaXMgaW50byBJbnN0YWxs VmJlU2hpbSgpIGFjY29yZGluZ2x5Lg0KPj4NCj4+DQo+Pj4gICAgfQ0KPj4+ICAjZW5kaWYNCj4+ Pg0KPj4+IGRpZmYgLS1naXQgYS9Pdm1mUGtnL1FlbXVWaWRlb0R4ZS9RZW11LmggDQo+Pj4gYi9P dm1mUGtnL1FlbXVWaWRlb0R4ZS9RZW11LmggaW5kZXggN2ZiYjI1YjNlZi4uYmIzYmM2ZWIwZiAx MDA2NDQNCj4+PiAtLS0gYS9Pdm1mUGtnL1FlbXVWaWRlb0R4ZS9RZW11LmgNCj4+PiArKysgYi9P dm1mUGtnL1FlbXVWaWRlb0R4ZS9RZW11LmgNCj4+PiBAQCAtMjUsNiArMjUsNyBAQA0KPj4+ICAj aW5jbHVkZSA8UHJvdG9jb2wvUGNpSW8uaD4NCj4+PiAgI2luY2x1ZGUgPFByb3RvY29sL0RyaXZl clN1cHBvcnRlZEVmaVZlcnNpb24uaD4NCj4+PiAgI2luY2x1ZGUgPFByb3RvY29sL0RldmljZVBh dGguaD4NCj4+PiArI2luY2x1ZGUgPFByb3RvY29sL0NwdS5oPg0KPj4+DQo+Pj4gICNpbmNsdWRl IDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+Pj4gICNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlEcml2ZXJF bnRyeVBvaW50Lmg+IEBAIC04Miw2ICs4MywyMSBAQCANCj4+PiB0eXBlZGVmIHN0cnVjdCB7DQo+ Pj4NCj4+PiAgI2RlZmluZSBHUkFQSElDU19PVVRQVVRfSU5WQUxJREVfTU9ERV9OVU1CRVIgIDB4 ZmZmZg0KPj4+DQo+Pj4gKy8vDQo+Pj4gKy8vIFZCRSBjb2RlIHdpbGwgYWNjZXNzIG1lbW9yeSBi ZXR3ZWVuIDAtNDA5NSB3aGljaCB3aWxsIGNhdXNlIHBhZ2UgDQo+Pj4gK2ZhdWx0IGV4Y2VwdGlv biAvLyBpZiBOVUxMIHBvaW50ZXIgZGV0ZWN0aW9uIG1lY2hhbmlzbSBpcyBlbmFibGVkLiANCj4+ PiArRm9sbG93aW5nIG1hY3JvcyBjYW4gYmUgdXNlZCB0byAvLyBkaXNhYmxlL2VuYWJsZSBOVUxM IHBvaW50ZXIgZGV0ZWN0aW9uIGJlZm9yZS9hZnRlciBhY2Nlc3NpbmcgdGhvc2UgbWVtb3J5Lg0K Pj4+ICsvLw0KPj4+ICsjZGVmaW5lIE5VTExfREVURUNUSU9OX0VOQUJMRUQgICgoUGNkR2V0OChQ Y2ROdWxsUG9pbnRlckRldGVjdGlvblByb3BlcnR5TWFzaykgJiAoQklUMHxCSVQ3KSkgPT0gQklU MCkNCj4+PiArI2RlZmluZSBESVNBQkxFX05VTExfREVURUNUSU9OKENwdSkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+Pj4gKyAgaWYgKE5VTExfREVURUNU SU9OX0VOQUJMRUQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPj4+ICsgICAgKENwdSktPlNldE1lbW9yeUF0dHJpYnV0ZXMoKENwdSksIDAsIEVG SV9QQUdFX1NJWkUsIDApOyAgICAgICAgICAgICAgICAgICAgIFwNCj4+PiArICB9DQo+Pj4gKyNk ZWZpbmUgRU5BQkxFX05VTExfREVURUNUSU9OKENwdSkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KPj4+ICsgIGlmIChOVUxMX0RFVEVDVElPTl9FTkFCTEVE KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4+ PiArICAgIChDcHUpLT5TZXRNZW1vcnlBdHRyaWJ1dGVzKChDcHUpLCAwLCBFRklfUEFHRV9TSVpF LCBFRklfTUVNT1JZX1JQKTsgICAgICAgICBcDQo+Pj4gKyAgfQ0KPj4+ICsNCj4+DQo+PiAoOCkg SSBiZWxpZXZlIEpvcmRhbiB0b28gY29tbWVudGVkIG9uIHRoZXNlIG1hY3JvcyBlbHNld2hlcmUg KHVuZGVyIA0KPj4gcGF0Y2ggMS80KS4NCj4+DQo+PiBJbiBteSBvcGluaW9uLCB0aGlzIGZ1bmN0 aW9uYWxpdHkgc2hvdWxkIGJlIGV4dHJhY3RlZCBpbnRvIGEgbGlicmFyeSANCj4+IGNsYXNzLCB3 aXRoIGEgbGlicmFyeSBpbnN0YW5jZSB0aGF0IGlzIHN1aXRhYmxlIGZvciBhdCBsZWFzdCANCj4+ IFVFRklfRFJJVkVSIG1vZHVsZXMuIChNYXliZSBldmVuIGZvciBEWEVfRFJJVkVSIG1vZHVsZXMu KQ0KPj4NCj4+IFlvdSBjb3VsZCBhZGQgYSBzZXBhcmF0ZSBsaWJyYXJ5IGluc3RhbmNlIGZvciBT TU0gZHJpdmVycywgaWYgdGhhdCANCj4+IHdlcmUgbmVjZXNzYXJ5Lg0KPj4NCj4+DQo+PiAoOSkg U3R5bGUgY29tbWVudDogcGxlYXNlIHB1dCBvbmUgc3BhY2UgY2hhcmFjdGVyIGJldHdlZW4gdGhl IA0KPj4gZnVuY3Rpb24gZGVzaWduYXRvciBhbmQgdGhlIG9wZW5pbmcgcGFyZW50aGVzaXMuDQo+ Pg0KPj4NCj4+PiAgLy8NCj4+PiAgLy8gUUVNVSBWaWRlbyBQcml2YXRlIERhdGEgU3RydWN0dXJl ICAvLyBkaWZmIC0tZ2l0IA0KPj4+IGEvT3ZtZlBrZy9RZW11VmlkZW9EeGUvUWVtdVZpZGVvRHhl LmluZiANCj4+PiBiL092bWZQa2cvUWVtdVZpZGVvRHhlL1FlbXVWaWRlb0R4ZS5pbmYNCj4+PiBp bmRleCA3YzdkNDI5YmNhLi41ZDE2NmViOTljIDEwMDY0NA0KPj4+IC0tLSBhL092bWZQa2cvUWVt dVZpZGVvRHhlL1FlbXVWaWRlb0R4ZS5pbmYNCj4+PiArKysgYi9Pdm1mUGtnL1FlbXVWaWRlb0R4 ZS9RZW11VmlkZW9EeGUuaW5mDQo+Pj4gQEAgLTcyLDcgKzcyLDkgQEANCj4+PiAgICBnRWZpR3Jh cGhpY3NPdXRwdXRQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgIyBQUk9UT0NPTCBCWV9TVEFS VA0KPj4+ICAgIGdFZmlEZXZpY2VQYXRoUHJvdG9jb2xHdWlkICAgICAgICAgICAgICAgICAgICAj IFBST1RPQ09MIEJZX1NUQVJUDQo+Pj4gICAgZ0VmaVBjaUlvUHJvdG9jb2xHdWlkICAgICAgICAg ICAgICAgICAgICAgICAgICMgUFJPVE9DT0wgVE9fU1RBUlQNCj4+PiArICBnRWZpQ3B1QXJjaFBy b3RvY29sR3VpZA0KPj4+DQo+Pj4gIFtQY2RdDQo+Pj4gICAgZ09wdGlvblJvbVBrZ1Rva2VuU3Bh Y2VHdWlkLlBjZERyaXZlclN1cHBvcnRlZEVmaVZlcnNpb24NCj4+PiArICANCj4+PiArIGdFZmlN ZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2ROdWxsUG9pbnRlckRldGVjdGlvblByb3BlcnR5 TWFzaw0KPj4NCj4+ICgxMCkgSW5zdGVhZCBvZiB0aGVzZSwgdGhlIGxpYnJhcnkgY2xhc3MgdGhh dCBJIGRlc2NyaWJlZCB1bmRlciAoOCkgDQo+PiBzaG91bGQgYmUgYWRkZWQgaGVyZS4NCj4+DQo+ PiBBbnkgZnVydGhlciBkZXBlbmRlbmNpZXMgbGlrZSBQQ0RzLCBwcm90b2NvbHMgZXRjIHNob3Vs ZCBiZSBpbmhlcml0ZWQgDQo+PiBieSB0aGUgZHJpdmVyIHRocm91Z2ggdGhlIGxpYnJhcnkgaW5z dGFuY2UgdGhhdCB0aGUgcGxhdGZvcm0gRFNDIGZpbGUgDQo+PiByZXNvbHZlcyB0aGUgbGlicmFy eSBjbGFzcyB0by4NCj4+DQo+PiBCb251czogc2hvdWxkIHlvdSByZWFsaXplIHRoYXQgdGhlIGZl YXR1cmUgaXMgaW1wb3NzaWJsZSB0byBpbXBsZW1lbnQgDQo+PiB3aXRob3V0IGFjY2Vzc2luZyB0 aGUgQ1BVIEFyY2ggcHJvdG9jb2wgZGlyZWN0bHksIHlvdSBjb3VsZCBoaWRlIHRoZSANCj4+IHBy b3RvY29sIEdVSUQgZGVwZW5kZW5jeSBpbiB0aGUgbGlicmFyeSBpbnN0YW5jZSBJTkYgZmlsZSwg YW5kIEknZCBiZSANCj4+IG5vbmUgdGhlIHdpc2VyLg0KPj4NCj4+IC4uLiBXZWxsLCBJIGNvdWxk IGF0IGxlYXN0IHByZXRlbmQgdGhhdC4gOikNCj4+DQo+PiBUaGFua3MsDQo+PiBMYXN6bG8NCj4+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+PiBlZGsy LWRldmVsIG1haWxpbmcgbGlzdA0KPj4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVk azItZGV2ZWxAbGlzdHMuMDEub3JnPg0KPj4gaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9s aXN0aW5mby9lZGsyLWRldmVsDQo+Pg0KDQo=