From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH 7/7] x86: add iommu_ops to map and unmap pages, and also to flush the IOTLB Date: Fri, 23 Feb 2018 09:35:28 +0000 Message-ID: <910b9652dd3642b3b65e4fe2f4c45daa@AMSPEX02CL03.citrite.net> References: <20180212104714.1922-1-paul.durrant@citrix.com> <20180212104714.1922-8-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_002_910b9652dd3642b3b65e4fe2f4c45daaAMSPEX02CL03citritenet_" Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ep9lS-0006zw-4g for xen-devel@lists.xenproject.org; Fri, 23 Feb 2018 09:35:38 +0000 In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Kevin Tian , "xen-devel@lists.xenproject.org" Cc: Stefano Stabellini , Wei Liu , Andrew Cooper , "Tim (Xen.org)" , George Dunlap , Jan Beulich , Ian Jackson List-Id: xen-devel@lists.xenproject.org --_002_910b9652dd3642b3b65e4fe2f4c45daaAMSPEX02CL03citritenet_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBUaWFuLCBLZXZpbiBbbWFpbHRv OmtldmluLnRpYW5AaW50ZWwuY29tXQ0KPiBTZW50OiAyMyBGZWJydWFyeSAyMDE4IDA1OjM2DQo+ IFRvOiBQYXVsIER1cnJhbnQgPFBhdWwuRHVycmFudEBjaXRyaXguY29tPjsgeGVuLWRldmVsQGxp c3RzLnhlbnByb2plY3Qub3JnDQo+IENjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5p QGtlcm5lbC5vcmc+OyBXZWkgTGl1DQo+IDx3ZWkubGl1MkBjaXRyaXguY29tPjsgR2VvcmdlIER1 bmxhcCA8R2VvcmdlLkR1bmxhcEBjaXRyaXguY29tPjsNCj4gQW5kcmV3IENvb3BlciA8QW5kcmV3 LkNvb3BlcjNAY2l0cml4LmNvbT47IElhbiBKYWNrc29uDQo+IDxJYW4uSmFja3NvbkBjaXRyaXgu Y29tPjsgVGltIChYZW4ub3JnKSA8dGltQHhlbi5vcmc+OyBKYW4gQmV1bGljaA0KPiA8amJldWxp Y2hAc3VzZS5jb20+DQo+IFN1YmplY3Q6IFJFOiBbWGVuLWRldmVsXSBbUEFUQ0ggNy83XSB4ODY6 IGFkZCBpb21tdV9vcHMgdG8gbWFwIGFuZA0KPiB1bm1hcCBwYWdlcywgYW5kIGFsc28gdG8gZmx1 c2ggdGhlIElPVExCDQo+IA0KPiA+IEZyb206IFBhdWwgRHVycmFudCBbbWFpbHRvOlBhdWwuRHVy cmFudEBjaXRyaXguY29tXQ0KPiA+IFNlbnQ6IFR1ZXNkYXksIEZlYnJ1YXJ5IDEzLCAyMDE4IDU6 NTYgUE0NCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206 IFRpYW4sIEtldmluIFttYWlsdG86a2V2aW4udGlhbkBpbnRlbC5jb21dDQo+ID4gPiBTZW50OiAx MyBGZWJydWFyeSAyMDE4IDA2OjU2DQo+ID4gPiBUbzogUGF1bCBEdXJyYW50IDxQYXVsLkR1cnJh bnRAY2l0cml4LmNvbT47IHhlbi0NCj4gPiBkZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiA+ ID4gQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz47IFdlaSBM aXUNCj4gPiA+IDx3ZWkubGl1MkBjaXRyaXguY29tPjsgR2VvcmdlIER1bmxhcCA8R2VvcmdlLkR1 bmxhcEBjaXRyaXguY29tPjsNCj4gPiA+IEFuZHJldyBDb29wZXIgPEFuZHJldy5Db29wZXIzQGNp dHJpeC5jb20+OyBJYW4gSmFja3Nvbg0KPiA+ID4gPElhbi5KYWNrc29uQGNpdHJpeC5jb20+OyBU aW0gKFhlbi5vcmcpIDx0aW1AeGVuLm9yZz47IEphbiBCZXVsaWNoDQo+ID4gPiA8amJldWxpY2hA c3VzZS5jb20+DQo+ID4gPiBTdWJqZWN0OiBSRTogW1hlbi1kZXZlbF0gW1BBVENIIDcvN10geDg2 OiBhZGQgaW9tbXVfb3BzIHRvIG1hcCBhbmQNCj4gPiA+IHVubWFwIHBhZ2VzLCBhbmQgYWxzbyB0 byBmbHVzaCB0aGUgSU9UTEINCj4gPiA+DQo+ID4gPiA+IEZyb206IFBhdWwgRHVycmFudA0KPiA+ ID4gPiBTZW50OiBNb25kYXksIEZlYnJ1YXJ5IDEyLCAyMDE4IDY6NDcgUE0NCj4gPiA+ID4NCj4g PiA+ID4gVGhpcyBwYXRjaCBhZGRzIGlvbW11X29wcyB0byBhbGxvdyBhIGRvbWFpbiB3aXRoIGNv bnRyb2xfaW9tbXUNCj4gPiA+ID4gcHJpdmlsZWdlDQo+ID4gPiA+IHRvIG1hcCBhbmQgdW5tYXAg cGFnZXMgZnJvbSBhbnkgZ3Vlc3Qgb3ZlciB3aGljaCBpdCBoYXMgbWFwcGluZw0KPiA+ID4gPiBw cml2aWxlZ2UNCj4gPiA+ID4gaW4gdGhlIElPTU1VLg0KPiA+ID4gPiBUaGVzZSBvcGVyYXRpb25z IGltcGxpY2l0bHkgZGlzYWJsZSBJT1RMQiBmbHVzaGluZyBzbyB0aGF0IHRoZSBjYWxsZXIgY2Fu DQo+ID4gPiA+IGJhdGNoIG9wZXJhdGlvbnMgYW5kIHRoZW4gZXhwbGljaXRseSBmbHVzaCB0aGUg SU9UTEIgdXNpbmcgdGhlDQo+ID4gaW9tbXVfb3ANCj4gPiA+ID4gYWxzbyBhZGRlZCBieSB0aGlz IHBhdGNoLg0KPiA+ID4NCj4gPiA+IGdpdmVuIHRoYXQgbGFzdCBkaXNjdXNzaW9uIGlzIDJ5cnMg YWdvIGFuZCB5b3Ugc2FpZCBhY3R1YWwgaW1wbGVtZW50YXRpb24NCj4gPiA+IGFscmVhZHkgYmlh c2VkIGZyb20gb3JpZ2luYWwgc3BlYywgaXQnZCBiZSBkaWZmaWN1bHQgdG8ganVkZ2Ugd2hldGhl cg0KPiA+IGN1cnJlbnQNCj4gPiA+IGNoYW5nZSBpcyBzdWZmaWNpZW50IG9yIGp1c3QgMXN0IHN0 ZXAuIENvdWxkIHlvdSBzdW1tYXJpemUgd2hhdCBoYXZlDQo+ID4gPiBiZWVuIGNoYW5nZWQgZnJv bSBsYXN0IHNwZWMsIGFuZCBhbHNvIGFueSBmdXJ0aGVyIHRhc2tzIGluIHlvdXIgVE9ETw0KPiBs aXN0Pw0KPiA+DQo+ID4gS2V2aW4sDQo+ID4NCj4gPiBUaGUgbWFpbiBjaGFuZ2VzIGFyZToNCj4g Pg0KPiA+IC0gdGhlcmUgaXMgbm8gb3AgdG8gcXVlcnkgbWFwcGluZyBjYXBhYmlsaXR5Li4uIGlu c3RlYWQgdGhlIGh5cGVyY2FsbCB3aWxsIGZhaWwNCj4gPiB3aXRoIC1FQUNDRVMNCj4gPiAtIHRo ZXJlIGlzIG5vIGxvbmdlciBhbiBvcHRpb24gdG8gYXZvaWQgcmVmZXJlbmNlIGNvdW50aW5nIG1h cCBhbmQgdW5tYXANCj4gPiBvcGVyYXRpb25zDQo+ID4gLSB0aGVyZSBhcmUgbm8gbG9uZ2VyIHNl cGFyYXRlIG9wcyBmb3IgbWFwcGluZyBsb2NhbCBhbmQgcmVtb3RlIHBhZ2VzDQo+ID4gKERPTUlE X1NFTEYgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGUgbWFwIG9wIGZvciBsb2NhbCBwYWdlcyksIGFu ZCBvcHMNCj4gPiBhbHdheXMgZGVhbCB3aXRoIEdGTnMgbm90IE1GTnMNCj4gPiAgIC0gYWxzbyBJ IGhhdmUgZHJvcHBlZCB0aGUgaWRlYSBvZiBhIGdsb2JhbCBtMmIgbWFwLCBzby4uLg0KPiA+ICAg LSBpdCBpcyBub3cgZ29pbmcgdG8gYmUgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjb2RlIHJ1 bm5pbmcgaW4gdGhlDQo+ID4gbWFwcGluZyBkb21haW4gdG8gdHJhY2sgd2hhdCBpdCBoYXMgbWFw cGVkIFsxXQ0KPiA+IC0gdGhlcmUgaXMgbm8gaWxsdXNpb24gdGhhdCBwYWdlcyBvdGhlciA0ayBh cmUgc3VwcG9ydGVkIGF0IHRoZSBtb21lbnQNCj4gPiAtIHRoZSBmbHVzaCBvcGVyYXRpb24gaXMg bm93IGV4cGxpY2l0DQo+ID4NCj4gPiBbMV0gdGhpcyB3b3VsZCBiZSBhbiBpc3N1ZSBpZiB0aGUg aW50ZXJmYWNlIGJlY29tZXMgdXNhYmxlIGZvciBhbnl0aGluZw0KPiA+IG90aGVyIHRoYW4gZG9t MCBhcyB3ZSdkIGFsc28gbmVlZCBzb21ldGhpbmcgaW4gWGVuIHRvIHJlbGVhc2UgdGhlIHBhZ2UN Cj4gPiByZWZzIGlmIHRoZSBkb21haW4gd2FzIGZvcmNpYmx5IGRlc3Ryb3llZCwgYnV0IEkgdGhp bmsgdGhlIG0yYiB3YXMgdGhlDQo+ID4gd3Jvbmcgc29sdXRpb24gc2luY2UgaXQgbmVjZXNzaXRh dGVzIGEgZnVsbCBzY2FuIG9mICpob3N0KiBSQU0gb24gYW55DQo+ID4gZG9tYWluIGRlc3RydWN0 aW9uDQo+ID4NCj4gPiBUaGUgbWFpbiBpdGVtIG9uIG15IFRPRE8gbGlzdCBpcyB0byBpbXBsZW1l bnQgYSBuZXcgSU9SRVEgdG8gYWxsb3cNCj4gPiBpbnZhbGlkYXRpb24gb2Ygc3BlY2lmaWMgZ3Vl c3QgcGFnZXMuIFRoaW5rIG9mIHRoZSBjdXJyZW50ICdpbnZhbGlkYXRlIG1hcA0KPiA+IGNhY2hl JyBhcyBhIGdsb2JhbCBmbHVzaC4uLiBJIG5lZWQgYSBzcGVjaWZpYyBmbHVzaCBzbyB0aGF0IGEN Cj4gPiBkZWNyZWFzZV9yZXNlcnZhdGlvbiBoeXBlcmNhbGwgaXNzdWVkIGJ5IGEgZ3Vlc3QgY2Fu IGluc3RlYWQgdGVsbCBlbXVsYXRvcnMNCj4gPiBleGFjdGx5IHdoaWNoIHBhZ2VzIGFyZSBiZWlu ZyByZW1vdmVkIGZyb20gZ3Vlc3QuIEl0IGlzIHRoZW4gdGhlDQo+IGVtdWxhdG9ycycNCj4gPiBy ZXNwb25zaWJpbGl0aWVzIHRvIHVubWFwIHRob3NlIHBhZ2VzIGlmIHRoZXkgaGFkIHRoZW0gbWFw cGVkIChlaXRoZXINCj4gPiB0aHJvdWdoIE1NVSBvciBJT01NVSkgd2hpY2ggdGhlbiBkcm9wIHBh Z2UgcmVmcyBhbmQgYWN0dWFsbHkgYWxsb3cgdGhlDQo+ID4gcGFnZXMgdG8gYmUgcmVjeWNsZWQu DQo+ID4NCj4gPiBJIHdpbGwsIG9mIGNvdXJzZSwgbmVlZCB0byBjb21lIHVwIHdpdGggbW9yZSBM aW51eCBjb2RlIHRvIHRlc3QgYWxsIHRoaXMsDQo+ID4gd2hpY2ggd2lsbCBldmVudHVhbGx5IGxl YWQgdG8ga2VybmVsIGFuZCB1c2VyIEFQSXMgdG8gYWxsb3cgZW11bGF0b3JzDQo+ID4gcnVubmlu ZyBpbiBkb20wIHRvIElPTU1VIG1hcCBndWVzdCBwYWdlcy4NCj4gDQo+IFRoYW5rcyBmb3IgZWxh Ym9yYXRpb24uIEkgZGlkbid0IGZpbmQgb3JpZ2luYWwgcHJvcG9zYWwuIENhbiB5b3UNCj4gYXR0 YWNoIG9yIHBvaW50IG1lIHRvIGEgbGluaz8NCj4gDQoNCkZXSVcsIEkndmUgYXR0YWNoZWQgTWFs Y29sbSdzIG9yaWdpbmFsIGZvciByZWZlcmVuY2UuDQoNCj4gPg0KPiA+ID4NCj4gPiA+IGF0IGxl YXN0IGp1c3QgbWFwL3VubWFwIG9wZXJhdGlvbnMgZGVmaW5pdGVseSBub3QgbWVldCBYZW5HVA0K PiA+ID4gcmVxdWlyZW1lbnQuLi4NCj4gPiA+DQo+ID4NCj4gPiBXaGF0IGFzcGVjdCBvZiB0aGUg aHlwZXJjYWxsIGludGVyZmFjZSBkb2VzIG5vdCBtZWV0IFhlbkdUJ3MNCj4gPiByZXF1aXJlbWVu dHM/IEl0IHdvdWxkIGJlIGdvb2QgdG8ga25vdyBub3cgdGhlbiBJIGNhbiBtYWtlIGFueQ0KPiA+ IG5lY2Vzc2FyeSBhZGp1c3RtZW50cyBpbiB2Mi4NCj4gPg0KPiANCj4gWGVuR1QgbmVlZHMgdG8g cmVwbGFjZSBHRk4gd2l0aCBCRk4gaW50byBzaGFkb3cgR1BVIHBhZ2UgdGFibGUNCj4gZm9yIGEg Z2l2ZW4gZG9tYWluLg0KDQpJIGFzc3VtZSB4ZW5ndCB3b3VsZCBiZSBkeW5hbWljYWxseSBtYXBw aW5nIHRoZSBnZm4gYXQgdGhpcyBwb2ludC4uLg0KDQo+IFByZXZpb3VzbHkgaWlyYyB0aGVyZSBp cyBhIHF1ZXJ5IGludGVyZmFjZSBmb3Igc3VjaA0KPiBwdXJwb3NlLCBzaW5jZSB0aGUgbWFwcGlu ZyBpcyBtYW5hZ2VkIGJ5IGh5cGVydmlzb3IuIEJhc2VkIG9uIGFib3ZlDQo+IGRlc2NyaXB0aW9u IChlLmcuIG0yYiksIGRpZCB5b3UgaW50ZW5kIHRvIGxldCBEb20wIHB2SU9NTVUgZHJpdmVyDQo+ IG1hbmFnZSBhbGwgcmVsYXRlZCBtYXBwaW5nIGluZm9ybWF0aW9uIHRodXMgR1ZULWcganVzdCBj b25zdWx0cw0KPiBwdklPTU1VIGRyaXZlciBmb3Igc3VjaCBwdXJwb3NlPw0KPiANCg0KLi4uc28g bXkgcGxhbiBpcyB0aGF0IHRoZSBkb20wIEFQSSBwaWNrcyBhIGJmbiwgZG9lcyB0aGUgbWFwcGlu ZyBhbmQgdGhlbiBwYXNzZXMgdGhlIGJmbiBiYWNrIHRvIHRoZSBjYWxsZXIuDQoNCj4gVGhhbmtz DQo+IEtldmluDQo= --_002_910b9652dd3642b3b65e4fe2f4c45daaAMSPEX02CL03citritenet_ Content-Type: text/plain; name="PV-IOMMU.TXT" Content-Description: PV-IOMMU.TXT Content-Disposition: attachment; filename="PV-IOMMU.TXT"; size=32555; creation-date="Fri, 23 Feb 2018 09:34:43 GMT"; modification-date="Fri, 23 Feb 2018 09:34:43 GMT" Content-Transfer-Encoding: base64 JSBYZW4gUFYgSU9NTVUgaW50ZXJmYWNlDQolIE1hbGNvbG0gQ3Jvc3NsZXkgPDxtYWxjb2xtLmNy b3NzbGV5QHh4eHh4eHh4eHg+Pg0KICBQYXVsIER1cnJhbnQgPDxwYXVsLmR1cnJhbnRAeHh4eHh4 eHh4eD4+DQolIERyYWZ0IEQNCg0KSW50cm9kdWN0aW9uDQo9PT09PT09PT09PT0NCg0KUmV2aXNp b24gSGlzdG9yeQ0KLS0tLS0tLS0tLS0tLS0tLQ0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KVmVyc2lvbiAgRGF0 ZSAgICAgICAgIENoYW5nZXMNCi0tLS0tLS0gIC0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpEcmFmdCBBICAxMCBBcHIgMjAxNCAgSW5p dGlhbCBkcmFmdC4NCg0KRHJhZnQgQiAgMTIgSnVuIDIwMTUgIFNlY29uZCBkcmFmdC4NCg0KRHJh ZnQgQyAgMjYgSnVuIDIwMTUgIFRoaXJkIGRyYWZ0Lg0KDQpEcmFmdCBEICAwOSBGZWIgMjAxNiAg Rm91cnRoIGRyYWZ0Lg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KQmFja2dyb3VuZA0KPT09PT09PT09PQ0KDQpM aW51eCBrZXJuZWwgU1dJT1RMQg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KWGVuIFBWIGd1ZXN0 cyB1c2UgYSBQc2V1ZG9waHlzaWNhbCBGcmFtZSBOdW1iZXIoUEZOKSBhZGRyZXNzIHNwYWNlIHdo aWNoIGlzDQpkZWNvdXBsZWQgZnJvbSB0aGUgaG9zdCBNYWNoaW5lIEZyYW1lIE51bWJlcihNRk4p IGFkZHJlc3Mgc3BhY2UuDQoNClBWIGd1ZXN0IGhhcmR3YXJlIGRyaXZlcnMgYXJlIGF3YXJlIG9m IHRoZSBQRk4gYWRkcmVzcyBzcGFjZSBvbmx5IGFuZA0KYXNzdW1lIHRoYXQgaWYgUEZOIGFkZHJl c3NlcyBhcmUgY29udGlndW91cyB0aGVuIHRoZSBoYXJkd2FyZSBhZGRyZXNzZXMgd291bGQNCmJl IGNvbnRpZ3VvdXMgYXMgd2VsbC4gVGhlIGRlY291cGxpbmcgYmV0d2VlbiBQRk4gYW5kIE1GTiBh ZGRyZXNzIHNwYWNlcyBtZWFucw0KUEZOIGFuZCBNRk4gYWRkcmVzc2VzIG1heSBub3QgYmUgY29u dGlndW91cyBhY3Jvc3MgcGFnZSBib3VuZGFyaWVzIGFuZCB0aHVzIGENCmJ1ZmZlciBhbGxvY2F0 ZWQgaW4gR0ZOIGFkZHJlc3Mgc3BhY2Ugd2hpY2ggc3BhbnMgYSBwYWdlIGJvdW5kYXJ5IG1heSBu b3QgYmUNCmNvbnRpZ3VvdXMgaW4gTUZOIGFkZHJlc3Mgc3BhY2UuDQoNClBWIGhhcmR3YXJlIGRy aXZlcnMgY2Fubm90IHRvbGVyYXRlIHRoaXMgYmVoYXZpb3VyIGFuZCBzbyBhIHNwZWNpYWwNCiJi b3VuY2UgYnVmZmVyIiByZWdpb24gaXMgdXNlZCB0byBoaWRlIHRoaXMgaXNzdWUgZnJvbSB0aGUg ZHJpdmVycy4NCg0KQSBib3VuY2UgYnVmZmVyIHJlZ2lvbiBpcyBhIHNwZWNpYWwgcGFydCBvZiB0 aGUgUEZOIGFkZHJlc3Mgc3BhY2Ugd2hpY2ggaGFzDQpiZWVuIG1hZGUgdG8gYmUgY29udGlndW91 cyBpbiBib3RoIFBGTiBhbmQgTUZOIGFkZHJlc3Mgc3BhY2VzLiBXaGVuIGEgZHJpdmVyDQpyZXF1 ZXN0cyBhIGJ1ZmZlciB3aGljaCBzcGFucyBhIHBhZ2UgYm91bmRhcnkgYmUgbWFkZSBhdmFpbGFi bGUgZm9yIGhhcmR3YXJlDQp0byByZWFkIHRoZSBjb3JlIG9wZXJhdGluZyBzeXN0ZW0gY29kZSBj b3BpZXMgdGhlIGJ1ZmZlciBpbnRvIGEgdGVtcG9yYXJpbHkNCnJlc2VydmVkIHBhcnQgb2YgdGhl IGJvdW5jZSBidWZmZXIgcmVnaW9uIGFuZCB0aGVuIHJldHVybnMgdGhlIE1GTiBhZGRyZXNzIG9m DQp0aGUgcmVzZXJ2ZWQgcGFydCBvZiB0aGUgYm91bmNlIGJ1ZmZlciByZWdpb24gYmFjayB0byB0 aGUgZHJpdmVyIGl0c2VsZi4gVGhlDQpkcml2ZXIgdGhlbiBpbnN0cnVjdHMgdGhlIGhhcmR3YXJl IHRvIHJlYWQgdGhlIGNvcHkgb2YgdGhlIGJ1ZmZlciBpbiB0aGUNCmJvdW5jZSBidWZmZXIuIFNp bWlsYXJseSBpZiB0aGUgZHJpdmVyIHJlcXVlc3RzIGEgYnVmZmVyIGlzIG1hZGUgYXZhaWxhYmxl DQpmb3IgaGFyZHdhcmUgdG8gd3JpdGUgdG8gdGhlIGZpcnN0IGEgcmVnaW9uIG9mIHRoZSBib3Vu Y2UgYnVmZmVyIGlzIHJlc2VydmVkDQphbmQgdGhlbiBhZnRlciB0aGUgaGFyZHdhcmUgY29tcGxl dGVzIHdyaXRpbmcgdGhlbiB0aGUgcmVzZXJ2ZWQgcmVnaW9uIG9mDQpib3VuY2UgYnVmZmVyIGlz IGNvcGllZCB0byB0aGUgb3JpZ2luYWxseSBhbGxvY2F0ZWQgYnVmZmVyLg0KDQpUaGUgb3Zlcmhl YXJkIG9mIG1lbW9yeSBjb3BpZXMgdG8vZnJvbSB0aGUgYm91bmNlIGJ1ZmZlciByZWdpb24gaXMg aGlnaA0KYW5kIGRhbWFnZXMgcGVyZm9ybWFuY2UuIEZ1cnRoZXJtb3JlLCB0aGVyZSBpcyBhIHJp c2sgdGhlIGZpeGVkIHNpemUNCmJvdW5jZSBidWZmZXIgcmVnaW9uIHdpbGwgYmVjb21lIGV4aGF1 c3RlZCBhbmQgaXQgd2lsbCBub3QgYmUgcG9zc2libGUgdG8NCnJldHVybiBhbiBoYXJkd2FyZSBh ZGRyZXNzIGJhY2sgdG8gdGhlIGRyaXZlci4gVGhlIExpbnV4IGtlcm5lbCBkcml2ZXJzIGRvIG5v dA0KdG9sZXJhdGUgdGhpcyBmYWlsdXJlIGFuZCBzbyB0aGUga2VybmVsIGlzIGZvcmNlZCB0byBj cmFzaCwgYXMgYW4NCnVucmVjb3ZlcmFibGUgZXJyb3IgaGFzIG9jY3VycmVkLg0KDQpJbnB1dC9P dXRwdXQgTWVtb3J5IE1hbmFnZW1lbnQgVW5pdHMgKElPTU1VKSBhbGxvdyBmb3IgYW4gaW5ib3Vu ZCBhZGRyZXNzDQptYXBwaW5nIHRvIGJlIGNyZWF0ZWQgZnJvbSB0aGUgSS9PIEJ1cyBhZGRyZXNz IHNwYWNlICh0eXBpY2FsbHkgUENJKSB0bw0KdGhlIG1hY2hpbmUgZnJhbWUgbnVtYmVyIGFkZHJl c3Mgc3BhY2UuIElPTU1VcyB0eXBpY2FsbHkgdXNlIGEgcGFnZSB0YWJsZQ0KbWVjaGFuaXNtIHRv IG1hbmFnZSB0aGUgbWFwcGluZ3MgYW5kIHRoZXJlZm9yZSBjYW4gY3JlYXRlIG1hcHBpbmdzIG9m IHBhZ2Ugc2l6ZQ0KZ3JhbnVsYXJpdHkgb3IgbGFyZ2VyLg0KDQpUaGUgSS9PIEJ1cyBhZGRyZXNz IHNwYWNlIHdpbGwgYmUgcmVmZXJyZWQgdG8gYXMgdGhlIEJ1cyBGcmFtZSBOdW1iZXIgKEJGTikN CmFkZHJlc3Mgc3BhY2UgZm9yIHRoZSByZXN0IG9mIHRoaXMgZG9jdW1lbnQuDQoNCg0KTWVkaWF0 ZWQgUGFzcy10aHJvdWdoIEVtdWxhdG9ycw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KDQpNZWRpYXRlZCBQYXNzLXRocm91Z2ggZW11bGF0b3JzIGFsbG93IGd1ZXN0IGRvbWFpbnMg dG8gaW50ZXJhY3Qgd2l0aA0KaGFyZHdhcmUgZGV2aWNlcyB2aWEgZW11bGF0b3IgbWVkaWF0aW9u LiBUaGUgZW11bGF0b3IgcnVucyBpbiBhIGRvbWFpbiBzZXBhcmF0ZQ0KdG8gdGhlIGd1ZXN0IGRv bWFpbiBhbmQgaXQgaXMgdXNlZCB0byBlbmZvcmNlIHNlY3VyaXR5IG9mIGd1ZXN0IGFjY2VzcyB0 byB0aGUNCmhhcmR3YXJlIGRldmljZXMgYW5kIGlzb2xhdGlvbiBvZiBkaWZmZXJlbnQgZ3Vlc3Rz IGFjY2Vzc2luZyB0aGUgc2FtZSBoYXJkd2FyZQ0KZGV2aWNlLg0KDQpUaGUgZW11bGF0b3IgcmVx dWlyZXMgYSBtZWNoYW5pc20gdG8gbWFwIGd1ZXN0IGFkZHJlc3NlcyB0byBhIGJ1cyBhZGRyZXNz IHRoYXQNCnRoZSBoYXJkd2FyZSBkZXZpY2VzIGNhbiBhY2Nlc3MuDQoNCg0KQ2xhcmlmaWNhdGlv biBvZiBHRk4gYW5kIEJGTiBmaWVsZHMgZm9yIGRpZmZlcmVudCBndWVzdCB0eXBlcw0KLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K R3Vlc3QgRnJhbWUgTnVtYmVycyAoR0ZOKSBkZWZpbml0aW9uIHZhcmllcyBkZXBlbmRpbmcgb24g dGhlIGd1ZXN0IHR5cGUuDQoNCkRpYWdyYW0gYmVsb3cgZGV0YWlscyB0aGUgbWVtb3J5IGFjY2Vz c2VzIG9yaWdpbmF0aW5nIGZyb20gQ1BVLCBwZXIgZ3Vlc3QgdHlwZToNCg0KICAgICAgSFZNIGd1 ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFYgZ3Vlc3QNCg0KICAgICAgICAgKFZB KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFZBKQ0KICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgICAgICAgIE1NVSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1NVQ0KICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgICAgICAgIChHRk4pICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8DQogICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAoR0ZOKQ0KICAgICBIQVAgYS5rLmEgRVBUL05QVCAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwNCiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8DQogICAgICAgICAoTUZOKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoTUZOKQ0KICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwNCiAgICAgICAgIFJBTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJB TQ0KDQpGb3IgUFYgZ3Vlc3RzIEdGTiBpcyBlcXVhbCB0byBNRk4gZm9yIGEgc2luZ2xlIHBhZ2Ug YnV0IG5vdCBmb3IgYSBjb250aWd1b3VzDQpyYW5nZSBvZiBwYWdlcy4NCg0KQnVzIEZyYW1lIE51 bWJlcnMgKEJGTikgcmVmZXIgdG8gdGhlIGFkZHJlc3MgcHJlc2VudGVkIG9uIHRoZSBwaHlzaWNh bCBidXMNCmJlZm9yZSBiZWluZyB0cmFuc2xhdGVkIGJ5IHRoZSBJT01NVS4NCg0KRGlhZ3JhbSBi ZWxvdyBkZXRhaWxzIG1lbW9yeSBhY2Nlc3NlcyBvcmlnaW5hdGluZyBmcm9tIHBoeXNpY2FsIGRl dmljZS4NCg0KICAgIFBoeXNpY2FsIERldmljZQ0KICAgICAgICAgIHwNCiAgICAgICAgKEJGTikN CiAgICAgICAgICB8DQogICAgICAgICAgIElPTU1VLVBUDQogICAgICAgICAgfA0KICAgICAgICAo TUZOKQ0KICAgICAgICAgIHwNCiAgICAgICAgIFJBTQ0KDQoNCg0KUHVycG9zZQ0KPT09PT09PQ0K DQoxLiBBbGxvdyBYZW4gZ3Vlc3RzIHRvIGNyZWF0ZS9tb2RpZnkvZGVzdHJveSBJT01NVSBtYXBw aW5ncyBmb3INCmhhcmR3YXJlIGRldmljZXMgdGhhdCB0aGUgUFYgZ3Vlc3RzIGhhcyBhY2Nlc3Mg dG8uIFRoaXMgZW5hYmxlcyB0aGUgUFYgZ3Vlc3QgdG8NCnByb2dyYW0gYSBidXMgYWRkcmVzcyBz cGFjZSBtYXBwaW5nIHdoaWNoIG1hdGNoZXMgaXRzIEdGTiBtYXBwaW5nLiBPbmNlIGEgMS0xDQpt YXBwaW5nIG9mIFBGTiB0byBidXMgYWRkcmVzcyBzcGFjZSBpcyBjcmVhdGVkIHRoZW4gYSBib3Vu Y2UgYnVmZmVyDQpyZWdpb24gaXMgbm90IHJlcXVpcmVkIGZvciB0aGUgSS9PIGRldmljZXMgY29u bmVjdGVkIHRvIHRoZSBJT01NVS4NCg0KMi4gQWxsb3cgZm9yIFhlbiBndWVzdHMgdG8gbG9va3Vw L2NyZWF0ZS9tb2RpZnkvZGVzdHJveSBJT01NVSBtYXBwaW5ncyBmb3INCmd1ZXN0IG1lbW9yeSBv ZiBkb21haW5zIHRoZSBjYWxsaW5nIFhlbiBndWVzdCBoYXMgc3VmZmljaWVudCBwcml2aWxlZ2Ug b3Zlci4NClRoaXMgZW5hYmxlcyBkb21haW5zIHRvIHByb3ZpZGUgbWVkaWF0ZWQgaGFyZHdhcmUg YWNjZWxlcmF0aW9uIHRvIG90aGVyDQpndWVzdCBkb21haW5zLg0KDQoNCkdlbmVyYWwgcHJpbmNp cGxlcyBmb3IgUFYgSU9NTVUgaW50ZXJmYWNlDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQ0KDQpUaGVyZSBhcmUgdHdvIGRpZmZlcmVudCB1c2FnZSBtb2RlbHMgZm9y IHRoZSBCRk4gYWRkcmVzcyBzcGFjZSBvZiBhIGNhbGxpbmcNCmd1ZXN0IGJhc2VkIHVwb24gdGhl IHR3byBwdXJwb3NlcyBzcGVjaWZpZWQgaW4gdGhlIHNlY3Rpb24gYWJvdmUuDQoNCkEgY2FsbGlu ZyBndWVzdCBtYXkgdXNlIHRoZWlyIEJGTiBhZGRyZXNzIHNwYWNlIGZvciBvbmx5IG9uZSBvZiB0 aGUgcHVycG9zZXMNCmRldGFpbGVkIGFib3ZlIGFuZCBzbyB0aGUgUFYgSU9NTVUgaW50ZXJmYWNl IGhhcyBhIHN1Ym9wIHBlciB1c2FnZSBtb2RlbC4NCkZ1cnRoZXJtb3JlLCB0aGUgSU9NTVUgbWFw cGluZyBvZiBmb3JlaWduIGRvbWFpbnMgbWVtb3J5IGlzIG1vcmUgY29tcGxleCB0aGFuDQpJT01N VSBtYXBwaW5nIGxvY2FsIGRvbWFpbiBtZW1vcnkgYW5kIHNlcGVyYXRpbmcgdGhlIHN1Ym9wcyBh bGxvd3MgZm9yIHRoZQ0KY29tcGxleGl0eSB0byBiZSBzcGxpdCBpbiB0aGUgaW1wbGVtZW50YXRp b24uDQoNClRoZSBQViBJT01NVSBkZXNpZ24gYWxsb3dzIHRoZSBjYWxsaW5nIGRvbWFpbiB0byBj b250cm9sIGl0J3MgQkZOIG1lbW9yeSBtYXAuDQpUaHVzIHRoZSBkZXNpZ24gYWxzbyBhc3NpZ25z IHRoZSByZXNwb25zaWJsaXR5IG9mIGVuc3VyaW5nIGEgQkZOIGFkZHJlc3MNCm1hcHBlZCBmb3Ig bG9jYWwgZG9tYWluIG1lbW9yeSBtYXBwaW5ncyBhcmUgbm90IHJldXNlZCBmb3IgZm9yZWlnbiBk b21haW4NCm1lbW9yeSBtYXBwaW5ncyB3aXRob3V0IGFuIGV4cGxpY3QgdW5tYXAgb2YgQkZOIGFk ZHJlc3MgZmlyc3QuIFRoaXMgc2ltcGxpZmllcw0KdGhlIHVzYWdlIG9mIHRoZSBBUEkgYW5kIHRo ZSBleHRyYSBvdmVyaGVhZCBmb3IgdGhlIGNhbGxpbmcgZG9tYWlucyBzaG91bGQgYmUNCm1pbmlt YWwgYXMgdGhleSBzaG91bGQgYmUgYWxyZWFkeSB0cmFja2luZyB0aGUgQkZOIGFkZHJlc3Mgc3Bh Y2UgdXNhZ2UgYWxyZWFkeS4NCg0KDQpFbXVsYXRvciB1c2FnZSBvZiBQViBJT01NVSBpbnRlcmZh Y2UNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQpFbXVsYXRvcnMgd2hp Y2ggcmVxdWlyZSBidXMgYWRkcmVzcyBtYXBwaW5nIG9mIGd1ZXN0IFJBTSBtdXN0IGZpcnN0IGRl dGVybWluZSBpZg0KaXQncyBwb3NzaWJsZSBmb3IgdGhlIGRvbWFpbiB0byBjb250cm9sIHRoZSBi dXMgYWRkcmVzc2VzIHRoZW1zZWx2ZXMuDQoNCkEgSU9NTVVPUF9xdWVyeV9jYXBzIHN1Ym9wIHdp bGwgcmV0dXJuIHRoZSBJT01NVV9RVUVSWV9tYXBfY2FwIGZsYWcuIElmIHRoaXMNCmZsYWcgaXMg c2V0IHRoZW4gdGhlIGVtdWxhdG9yIG1heSBzcGVjaWZ5IHRoZSBCRk4gYWRkcmVzcyBpdCB3aXNo ZXMgZ3Vlc3QgUkFNIHRvDQpiZSBtYXBwZWQgdG8gdmlhIHRoZSBJT01NVU9QX21hcF9mb3JlaWdu X3BhZ2Ugc3Vib3AuICBJZiB0aGUgZmxhZyBpcyBub3Qgc2V0DQp0aGVuIHRoZSBlbXVsYXRvciBt dXN0IHVzZSBCRk4gYWRkcmVzc2VzIHN1cHBsaWVkIGJ5IHRoZSBYZW4gdmlhIHRoZQ0KSU9NTVVP UF9sb29rdXBfZm9yZWlnbl9wYWdlLg0KDQpPcGVyYXRpbmcgc3lzdGVtcyB3aGljaCB1c2UgdGhl IElPTU1VT1BfbWFwX3BhZ2Ugc3Vib3AgYXJlIGV4cGVjdGVkIHRvIHByb3ZpZGUgYQ0KY29tbW9u IGludGVyZmFjZSBmb3IgZW11bGF0b3JzIHRvIHVzZS4gT3RoZXJ3aXNlIGVtdWxhdG9ycyB3aWxs IG5vdCBiZSBhd2FyZQ0Kb2YgZXhpc3RpbmcgQkZOIG1hcHBpbmdzIGNyZWF0ZWQgYnkgb3BlcmF0 aW5nIHN5c3RlbSBhbmQgd2lsbCBnZXQgZmFpbGVkDQpzdWJvcHMgZHVlIHRvIGNvbmZsaWN0cyBp biB0aGUgQkZOIGFkZHJlc3Mgc3BhY2UgZm9yIHRoZSBkb21haW4uDQoNCkVtdWxhdG9ycyBzaG91 bGQgdW5tYXAgdW51c2VkIEdGTiBtYXBwaW5ncyBhcyBvZnRlbiBhcyBwb3NzaWJsZSB1c2luZw0K SU9NTVVPUF91bm1hcF9mb3JlaWduX3BhZ2Ugc3Vib3BzIHNvIHRoYXQgZ3Vlc3QgZG9tYWlucyBj YW4gYmFsbG9vbiBwYWdlcw0KcXVpY2tseSBhbmQgZWZmaWNpZW50bHkuDQoNCkVtdWxhdG9ycyBz aG91bGQgY29uZm9ybSB0byB0aGUgYmFsbG9vbmluZyBiZWhhdmlvdXIgZGVzY3JpYmVkIHNlY3Rp b24NCiJJT01NVU9QXypfZm9yZWlnbl9wYWdlIGludGVyYWN0aW9ucyB3aXRoIGd1ZXN0IGRvbWFp biBiYWxsb29uaW5nIiBzbyB0aGF0IGd1ZXN0DQpkb21haW5zIGFyZSBhYmxlIHRvIGVmZmVjdGl2 ZWx5IGJhbGxvb24gb3V0IGFuZCBpbiBtZW1vcnkuDQoNCkVtdWxhdG9ycyBtdXN0IHVubWFwIGFu eSBhY3RpdmUgQkZOIG1hcHBpbmdzIHdoZW4gdGhleSBzaHV0ZG93bi4NCg0KSU9NTVVPUF8qX2Zv cmVpZ25fcGFnZSBpbnRlcmFjdGlvbnMgd2l0aCBndWVzdCBkb21haW4gYmFsbG9vbmluZw0KPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KDQpHdWVzdCBkb21haW5zIGNhbiBiYWxsb29uIG91dCBhIHNldCBvZiBHRk4gbWFwcGlu Z3MgYXQgYW55IHRpbWUgYW5kIHJlbmRlciB0aGUNCkJGTiB0byBHRk4gbWFwcGluZyBpbnZhbGlk Lg0KDQpXaGVuIGEgQkZOIHRvIEdGTiBtYXBwaW5nIGJlY29tZXMgaW52YWxpZCwgWGVuIHdpbGwg aXNzdWUgYSBidWZmZXJlZCBJL08gcmVxdWVzdA0Kb2YgdHlwZSBJT1JFUV9UWVBFX0lOVkFMSURB VEUgdG8gdGhlIGFmZmVjdGVkIElPUkVRIHNlcnZlcnMgd2l0aCB0aGUgbm93IGludmFsaWQNCkJG TiBhZGRyZXNzIGluIHRoZSBkYXRhIGZpZWxkLiBJZiB0aGUgYnVmZmVyZWQgSS9PIHJlcXVlc3Qg cmluZyBpcyBmdWxsIHRoZW4gYQ0Kc3RhbmRhcmQgKHN5bmNocm9ub3VzKSBJL08gcmVxdWVzdCBv ZiB0eXBlIElPUkVRX1RZUEVfSU5WQUxJREFURSB3aWxsIGJlIGlzc3VlZA0KdG8gdGhlIGFmZmVj dGVkIElPUkVRIHNlcnZlciB0aGUgd2l0aCBqdXN0IGludmFsaWRhdGVkIEJGTiBhZGRyZXNzIGlu IHRoZSBkYXRhDQpmaWVsZC4NCg0KVGhlIEJGTiBtYXBwaW5ncyBjYW5ub3QgYmUgc2ltcGx5IHVu bWFwcGVkIGF0IHRoZSBwb2ludCBvZiB0aGUgYmFsbG9vbiBoeXBlcmNhbGwNCm90aGVyd2lzZSBh IG1hbGljaW91cyBndWVzdCBjb3VsZCBzcGVjaWZpY2FsbHkgYmFsbG9vbiBvdXQgYW4gaW4gdXNl IEdGTiBhZGRyZXNzDQppbiB1c2UgYnkgYW4gZW11bGF0b3IgYW5kIHRyaWdnZXIgSU9NTVUgZmF1 bHRzIGZvciB0aGUgZG9tYWlucyB3aXRoIEJGTg0KbWFwcGluZ3MuDQoNCkZvciBob3N0cyB3aXRo IG5vIElPTU1VIHN1cHBvcnQ6IFRoZSBhZmZlY3RlZCBlbXVsYXRvcihzKSBtdXN0IHNwZWNpZmlj YWxseQ0KaXNzdWUgYSBJT01NVU9QX3VubWFwX2ZvcmVpZ25fcGFnZSBzdWJvcCBmb3IgdGhlIG5v dyBpbnZhbGlkIEJGTiBhZGRyZXNzIHNvIHRoYXQNCnRoZSByZWZlcmVuY2VzIHRvIHRoZSB1bmRl cmx5aW5nIE1GTiBhcmUgcmVtb3ZlZCBhbmQgdGhlIE1GTiBjYW4gYmUgZnJlZWQgYmFjaw0KdG8g dGhlIFhlbiBtZW1vcnkgYWxsb2NhdG9yLg0KDQpGb3IgaG9zdHMgd2l0aCBJT01NVSBzdXBwb3J0 Og0KSWYgdGhlIEJGTiB3YXMgbWFwcGVkIHdpdGhvdXQgdGhlIElPTU1VT1Bfc3dhcF9tZm4gZmxh ZyBzZXQgaW4gdGhlDQpJT01NVU9QX21hcF9mb3JlaWduX3BhZ2UgdGhlbiB0aGUgYWZmZWN0ZWQg YWZmZWN0ZWQgZW11bGF0b3IocykgbXVzdA0Kc3BlY2lmaWNhbGx5IGlzc3VlIGEgSU9NTVVPUF91 bm1hcF9mb3JlaWduX3BhZ2Ugc3Vib3AgZm9yIHRoZSBub3cgaW52YWxpZCBCRk4NCmFkZHJlc3Mg c28gdGhhdCB0aGUgcmVmZXJlbmNlcyB0byB0aGUgdW5kZXJseWluZyBNRk4gYXJlIHJlbW92ZWQu DQoNCklmIHRoZSBCRk4gd2FzIG1hcHBlZCB3aXRoIHRoZSBJT01NVU9QX3N3YXBfbWZuIGZsYWcg c2V0IGluIHRoZQ0KSU9NTVVPUF9tYXBfZm9yZWlnbl9wYWdlIHN1Ym9wIGZvciBhbGwgZW11bGF0 b3JzIHdpdGggbWFwcGluZ3Mgb2YgdGhhdCBHRk4gdGhlbg0KdGhlIEJGTiBtYXBwaW5nIHdpbGwg YmUgc3dhcHBlZCB0byBwb2ludCBhdCBhIHNjcmF0Y2ggTUZOIHBhZ2UgYW5kIGFsbCBCRk4NCnJl ZmVyZW5jZXMgdG8gdGhlIGludmFsaWQgTUZOIHdpbGwgYmUgcmVtb3ZlZCBieSBYZW4gYWZ0ZXIg dGhlIEJGTiBtYXBwaW5nIGhhcw0KYmVlbiB1cGRhdGVkIHRvIHBvaW50IGF0IHRoZSBzY3JhdGNo IE1GTiBwYWdlLg0KDQpUaGUgcmF0aW9uYWxlIGZvciBzd2FwcGluZyB0aGUgQkZOIG1hcHBpbmcg dG8gcG9pbnQgYXQgc2NyYXRjaCBwYWdlcyBpcyB0bw0KZW5hYmxlIGd1ZXN0IGRvbWFpbnMgdG8g YmFsbG9vbiBxdWlja2x5IHdpdGhvdXQgcmVxdWlyaW5nIGh5cGVyY2FsbChzKSBmcm9tDQplbXVs YXRvcnMuDQoNCk5vdCBhbGwgQkZOIG1hcHBpbmdzIGNhbiBiZSBzd2FwcGVkIHdpdGhvdXQgcG90 ZW50aWFsbHkgY2F1c2luZyBwcm9ibGVtcyBmb3IgdGhlDQpoYXJkd2FyZSBpdHNlbGYgKGNvbW1h bmQgcmluZ3MgZXRjLikgc28gdGhlIElPTU1VT1Bfc3dhcF9tZm4gZmxhZyBpcyB1c2VkIHRvDQph bGxvdyBwZXIgQkZOIGNvbnRyb2wgb2YgWGVuIGJhbGxvb25pbmcgYmVoYXZpb3VyLg0KDQoNClBW IElPTU1VIGludGVyYWN0aW9ucyB3aXRoIHNlbGYgYmFsbG9vbmluZw0KPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCkEgZ3Vlc3Qgc2hvdWxkIGNsZWFyIGFueSBJ T01NVSBtYXBwaW5ncyBpdCBoYXMgb2YgaXRzIG93biBwYWdlcyBiZWZvcmUNCnJlbGVhc2luZyBh IHBhZ2UgYmFjayB0byBYZW4uIFRoZSBndWVzdCBhbHNvIHdpbGwgbmVlZCB0byBhZGQgSU9NTVUg bWFwcGluZ3MNCmFmdGVyIHJlcG9wdWxhdGluZyBhIHBhZ2Ugd2l0aCB0aGUgcG9wdWxhdGVfcGh5 c21hcCBoeXBlcmNhbGwuDQoNClBWIGd1ZXN0cyBtdXN0IGNsZWFyIGFueSBJT01NVSBtYXBwaW5n cyBiZWZvcmUgcGlubmluZyBwYWdlIHRhYmxlIHBhZ2VzDQpiZWNhdXNlIHRoZSBJT01NVSBtYXBw aW5ncyB3aWxsIHRha2UgYSB3cml0YWJsZSByZWZlcmVuY2UgY291bnQgYW5kIHRoaXMgd2lsbA0K cHJldmVudCBwYWdlIHRhYmxlIHBpbm5pbmcuDQoNCg0KU2VjdXJpdHkgSW1wbGljYXRpb25zIG9m IGFsbG93aW5nIGRvbWFpbiBJT01NVSBjb250cm9sDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KWGVuIGN1cnJlbnRseSBhbGxvd3MgSS9P IGRldmljZXMgYXR0YWNoZWQgdG8gaGFyZHdhcmUgZG9tYWluIHRvIGhhdmUgZGlyZWN0DQphY2Nl c3MgdG8gdGhlIGFsbCBvZiB0aGUgTUZOIGFkZHJlc3Mgc3BhY2UgKGV4Y2VwdCBYZW4gaHlwZXJ2 aXNvciBtZW1vcnkgDQpyZWdpb25zKSwNCnByb3ZpZGVkIHRoZSBYZW4gSU9NTVUgb3B0aW9uIGRv bTAtc3RyaWN0IGlzIG5vdCBlbmFibGVkLg0KDQpUaGUgUFYgSU9NTVUgZmVhdHVyZSBwcm92aWRl cyB0aGUgc2FtZSBsZXZlbCBvZiBhY2Nlc3MgdG8gTUZOIGFkZHJlc3Mgc3BhY2UNCmFuZCB0aGUg ZmVhdHVyZSBpcyBub3QgZW5hYmxlZCB3aGVuIHRoZSBYZW4gSU9NTVUgb3B0aW9uIGRvbTAtc3Ry aWN0IGlzDQplbmFibGVkLiBUaGVyZWZvcmUgc2VjdXJpdHkgaXMgbm90IGRlZ3JhZGVkIGJ5IHRo ZSBQViBJT01NVSBmZWF0dXJlLg0KDQpEb21haW5zIHdpdGggcGh5c2ljYWwgZGV2aWNlKHMpIGFz c2lnbmVkIHdoaWNoIGFyZSBub3QgaGFyZHdhcmUgZG9tYWlucyBhcmUgb25seQ0KYWxsb3dlZCB0 byBtYXAgdGhlaXIgb3duIEdGTnMgb3IgR0ZOcyBmb3IgZG9tYWluKHMpIHRoZXkgaGF2ZSBwcml2 aWxlZ2Ugb3Zlci4NCg0KDQpQViBJT01NVSBpbnRlcmFjdGlvbnMgd2l0aCBncmFudCBtYXAvdW5t YXAgb3BlcmF0aW9ucw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0NCg0KR3JhbnQgbWFwIG9wZXJhdGlvbnMgcmV0dXJuIGEgUGh5c2ljYWwgZGV2 aWNlIGFjY2Vzc2libGUgYWRkcmVzcyAoQkZOKSBpZiB0aGUNCkdOVE1BUF9kZXZpY2VfbWFwIGZs YWcgaXMgc2V0LiAgVGhpcyBvcGVyYXRpb24gY3VycmVudGx5IHJldHVybnMgdGhlIE1GTiBmb3Ig UFYNCmd1ZXN0cyB3aGljaCBtYXkgY29uZmxpY3Qgd2l0aCB0aGUgQkZOIGFkZHJlc3Mgc3BhY2Ug dGhlIGd1ZXN0IHVzZXMgaWYgUFYgSU9NTVUNCm1hcCBzdXBwb3J0IGlzIGF2YWlsYWJsZSB0byB0 aGUgZ3Vlc3QuDQoNClRoaXMgZGVzaWduIHByb3Bvc2VzIHRvIGFsbG93IHRoZSBjYWxsaW5nIGRv bWFpbiB0byBjb250cm9sIHRoZSBCRk4gYWRkcmVzcyB0aGF0DQphIGdyYW50IG1hcCBvcGVyYXRp b24gdXNlcy4NCg0KVGhpcyBjYW4gYmUgYWNoaWV2ZWQgYnkgc3BlY2lmeWluZyB0aGF0IHRoZSBk ZXZfYnVzX2FkZHIgaW4gdGhlDQpnbnR0YWJfbWFwX2dyYW50X3JlZiBzdHJ1Y3R1cmUgaXMgdXNl ZCBhbiBpbnB1dCBwYXJhbWV0ZXIgaW5zdGVhZCBvZiB0aGUNCm91dHB1dCBwYXJhbWV0ZXIgaXQg aXMgY3VycmVudGx5Lg0KDQpPbmx5IFBBR0VfU0laRSBhbGlnbmVkIGFkZHJlc3NlcyBhcmUgYWxs b3dlZCBmb3IgZGV2X2J1c19hZGRyIGlucHV0IHBhcmFtZXRlci4NCg0KVGhlIHJldmlzZWQgc3Ry dWN0dXJlIGlzIHNob3duIGJlbG93IGZvciBjb252ZW5pZW5jZS4NCg0KICAgIHN0cnVjdCBnbnR0 YWJfbWFwX2dyYW50X3JlZiB7DQogICAgICAgIC8qIElOIHBhcmFtZXRlcnMuICovDQogICAgICAg IHVpbnQ2NF90IGhvc3RfYWRkcjsNCiAgICAgICAgdWludDMyX3QgZmxhZ3M7ICAgICAgICAgICAg ICAgLyogR05UTUFQXyogKi8NCiAgICAgICAgZ3JhbnRfcmVmX3QgcmVmOw0KICAgICAgICBkb21p ZF90ICBkb207DQogICAgICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLw0KICAgICAgICBpbnQxNl90 ICBzdGF0dXM7ICAgICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLw0KICAgICAg ICBncmFudF9oYW5kbGVfdCBoYW5kbGU7DQogICAgICAgIC8qIElOL09VVCBwYXJhbWV0ZXJzICov DQogICAgICAgIHVpbnQ2NF90IGRldl9idXNfYWRkcjsNCiAgICB9Ow0KDQoNClRoZSBncmFudCBt YXAgb3BlcmF0aW9uIHdvdWxkIHRoZW4gYmVoYXZlIHNpbWlsYXJseSB0byB0aGUgSU9NTVVPUF9t YXBfcGFnZQ0Kc3Vib3AgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUgSU9NTVUgbWFwcGluZy4NCg0K VGhlIGdyYW50IHVubWFwIG9wZXJhdGlvbiB3b3VsZCB0aGVuIGJlaGF2ZSBzaW1pbGFybHkgdG8g dGhlIElPTU1VT1BfdW5tYXBfcGFnZQ0Kc3Vib3AgZm9yIHRoZSByZW1vdmFsIG9mIHRoZSBJT01N VSBtYXBwaW5nLg0KDQpBIG5ldyBncmFudG1hcCBmbGFnIHdvdWxkIGJlIHVzZWQgdG8gaW5kaWNh dGUgdGhlIGRvbWFpbiBpcyByZXF1ZXN0aW5nIHRoZQ0KZGV2X2J1c19hZGRyIGZpZWxkIGlzIHVz ZWQgYW4gaW5wdXQgcGFyYW1ldGVyLg0KDQoNCiAgICAjZGVmaW5lIF9HTlRNQVBfcmVxdWVzdF9i Zm5fbWFwICAgICAgKDYpDQogICAgI2RlZmluZSBHTlRNQVBfcmVxdWVzdF9iZm5fbWFwICAgKDE8 PF9HTlRNQVBfcmVxdWVzdF9iZm5fbWFwKQ0KDQoNClhlbiBQVi1JT01NVSBBcmNoaXRlY3R1cmUN Cj09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KVGhlIFhlbiBhcmNoaXRlY3R1cmUgY29uc2lz dHMgb2YgYSBuZXcgaHlwZXJjYWxsIGludGVyZmFjZSBhbmQgY2hhbmdlcyB0byB0aGUNCmdyYW50 IG1hcCBpbnRlcmZhY2UuDQoNClRoZSBleGlzdGluZyBJT01NVSBtYXBwaW5ncyBzZXR1cCBhdCBk b21haW4gY3JlYXRpb24gdGltZSB3aWxsIGJlIHByZXNlcnZlZCBzbw0KdGhhdCBQViBkb21haW5z IHVuYXdhcmUgb2YgdGhpcyBmZWF0dXJlIHdpbGwgY29udGludWUgdG8gZnVuY3Rpb24gd2l0aCBu bw0KY2hhbmdlcyByZXF1aXJlZC4NCg0KTWVtb3J5IGJhbGxvb25pbmcgd2lsbCBiZSBzdXBwb3J0 ZWQgYnkgdGFraW5nIGFuIGFkZGl0aW9uYWwgcmVmZXJlbmNlIG9uIHRoZQ0KTUZOIGJhY2tpbmcg dGhlIEdGTiBmb3IgZWFjaCBzdWNjZXNzZnVsIElPTU1VIG1hcHBpbmcgY3JlYXRlZC4NCg0KQW4g TTJCIHRyYWNraW5nIHN0cnVjdHVyZSB3aWxsIGJlIHVzZWQgdG8gZW5zdXJlIGFsbCByZWZlcmVu Y2VzIHRvIGFuIE1GTiBjYW4NCmJlIGxvY2F0ZWQgZWZmaWNpZW50bHkuDQoNClhlbiBQViBJT01N VSBoeXBlcmNhbGwgaW50ZXJmYWNlDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K QSB0d28gYXJndW1lbnQgaHlwZXJjYWxsIGludGVyZmFjZSAoZG9faW9tbXVfb3ApLg0KDQogICAg cmV0X3QgZG9faW9tbXVfb3AoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcsIHVuc2ln bmVkIGludCBjb3VudCkNCg0KRmlyc3QgYXJndW1lbnQsIGd1ZXN0IGhhbmRsZSBwb2ludGVyIHRv IGFycmF5IG9mIGBzdHJ1Y3QgcHZfaW9tbXVfb3BgDQoNClNlY29uZCBhcmd1bWVudCwgdW5zaWdu ZWQgaW50ZWdlciBjb3VudCBvZiBgc3RydWN0IHB2X2lvbW11X29wYCBlbGVtZW50cyBpbiANCmFy cmF5Lg0KDQpEZWZpbml0aW9uIG9mIGBzdHJ1Y3QgcHZfaW9tbXVfb3BgOg0KDQogICAgc3RydWN0 IHB2X2lvbW11X29wIHsNCg0KICAgICAgICB1aW50MTZfdCBzdWJvcF9pZDsNCiAgICAgICAgdWlu dDE2X3QgZmxhZ3M7DQogICAgICAgIGludDMyX3Qgc3RhdHVzOw0KDQogICAgICAgIHVuaW9uIHsN CiAgICAgICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICAgICAgdWludDY0X3QgYmZuOw0KICAg ICAgICAgICAgICAgIHVpbnQ2NF90IGdmbjsNCiAgICAgICAgICAgIH0gbWFwX3BhZ2U7DQoNCiAg ICAgICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICAgICAgdWludDY0X3QgYmZuOw0KICAgICAg ICAgICAgfSB1bm1hcF9wYWdlOw0KDQogICAgICAgICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAg ICAgIHVpbnQ2NF90IGJmbjsNCiAgICAgICAgICAgICAgICB1aW50NjRfdCBnZm47DQogICAgICAg ICAgICAgICAgdWludDE2X3QgZG9taWQ7DQogICAgICAgICAgICAgICAgaW9zZXJ2aWRfdCBpb3Nl cnZlcjsNCiAgICAgICAgICAgIH0gbWFwX2ZvcmVpZ25fcGFnZTsNCg0KICAgICAgICAgICAgc3Ry dWN0IHsNCiAgICAgICAgICAgICAgICB1aW50NjRfdCBiZm47DQogICAgICAgICAgICAgICAgdWlu dDY0X3QgZ2ZuOw0KICAgICAgICAgICAgICAgIHVpbnQxNl90IGRvbWlkOw0KICAgICAgICAgICAg ICAgIGlvc2VydmlkX3QgaW9zZXJ2ZXI7DQogICAgICAgICAgICB9IGxvb2t1cF9mb3JlaWduX3Bh Z2U7DQoNCiAgICAgICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICAgICAgdWludDY0X3QgYmZu Ow0KICAgICAgICAgICAgICAgIGlvc2VydmlkX3QgaW9zZXJ2ZXI7DQogICAgICAgICAgICB9IHVu bWFwX2ZvcmVpZ25fcGFnZTsNCiAgICAgICAgfSB1Ow0KICAgIH07DQoNCkRlZmluaXRpb24gb2Yg UFYgSU9NTVUgc3Vib3BzOg0KDQogICAgI2RlZmluZSBJT01NVU9QX3F1ZXJ5X2NhcHMgICAgICAg ICAgICAxDQogICAgI2RlZmluZSBJT01NVU9QX21hcF9wYWdlICAgICAgICAgICAgICAyDQogICAg I2RlZmluZSBJT01NVU9QX3VubWFwX3BhZ2UgICAgICAgICAgICAzDQogICAgI2RlZmluZSBJT01N VU9QX21hcF9mb3JlaWduX3BhZ2UgICAgICA0DQogICAgI2RlZmluZSBJT01NVU9QX2xvb2t1cF9m b3JlaWduX3BhZ2UgICA1DQogICAgI2RlZmluZSBJT01NVU9QX3VubWFwX2ZvcmVpZ25fcGFnZSAg ICA2DQoNCg0KRGVzaWduIGNvbnNpZGVyYXRpb25zIGZvciBoeXBlcmNhbGwgb3ANCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCklPTU1VIG1hcC91bm1hcCBvcGVy YXRpb25zIGNhbiBiZSBzbG93IGFuZCBjYW4gaW52b2x2ZSBmbHVzaGluZyB0aGUgSU9NTVUgVExC DQp0byBlbnN1cmUgdGhlIEkvTyBkZXZpY2UgdXNlcyB0aGUgdXBkYXRlZCBtYXBwaW5ncy4NCg0K VGhlIG9wIGhhcyBiZWVuIGRlc2lnbmVkIHRvIHRha2UgYW4gYXJyYXkgb2Ygb3BlcmF0aW9ucyBh bmQgYSBjb3VudCBhcw0KcGFyYW1ldGVycy4gVGhpcyBhbGxvd3MgZm9yIGVhc2lseSBpbXBsZW1l bnRlZCBoeXBlcmNhbGwgY29udGludWF0aW9ucyB0byBiZQ0KdXNlZCBhbmQgYWxsb3dzIGZvciBi YXRjaGVzIG9mIElPTU1VIG9wZXJhdGlvbnMgdG8gYmUgc3VibWl0dGVkIGJlZm9yZSBmbHVzaGlu Zw0KdGhlIElPTU1VIFRMQi4NCg0KVGhlIGBzdWJvcF9pZGAgdG8gYmUgdXNlZCBmb3IgYSBwYXJ0 aWN1bGFyIGVsZW1lbnQgaXMgZW5jb2RlZCBpbnRvIHRoZSBlbGVtZW50DQppdHNlbGYuIFRoaXMg YWxsb3dzIGZvciBtYXAgYW5kIHVubWFwIG9wZXJhdGlvbnMgdG8gYmUgcGVyZm9ybWVkIGluIG9u ZSANCmh5cGVyY2FsbA0KYW5kIGZvciB0aGUgSU9NTVUgVExCIGZsdXNoaW5nIG9wdGltaXNhdGlv bnMgdG8gYmUgc3RpbGwgYXBwbGllZC4NCg0KVGhlIGh5cGVyY2FsbCB3aWxsIGVuc3VyZSB0aGF0 IHRoZSByZXF1aXJlZCBJT01NVSBUTEIgZmx1c2hlcyBhcmUgYXBwbGllZCBiZWZvcmUNCnJldHVy bmluZyB0byBndWVzdCB2aWEgZWl0aGVyIGh5cGVyY2FsbCBjb21wbGV0aW9uIG9yIGEgaHlwZXJj YWxsIGNvbnRpbnVhdGlvbi4NCg0KSU9NTVVPUF9xdWVyeV9jYXBzDQotLS0tLS0tLS0tLS0tLS0t LS0NCg0KVGhpcyBzdWJvcCBxdWVyaWVzIHRoZSBydW50aW1lIGNhcGFiaWxpdGllcyBvZiB0aGUg UFYtSU9NTVUgaW50ZXJmYWNlIGZvciB0aGUNCnNwZWNpZmljIGNhbGxpbmcgZG9tYWluLiBUaGlz IHN1Ym9wIHVzZXMgYHN0cnVjdCBwdl9pb21tdV9vcGAgZGlyZWN0bHkuDQoNCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KRmllbGQgICAgICAgICAgUHVycG9zZQ0KLS0tLS0gICAgICAgICAgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQpgZmxhZ3NgICAgICAgICBbb3V0XSBUaGlzIGZpZWxkIGRldGFpbHMgdGhlIElPTU1VT1AgY2Fw YWJpbGl0aWVzLg0KDQpgc3RhdHVzYCAgICAgICBbb3V0XSBTdGF0dXMgb2YgdGhpcyBvcCwgb3Ag c3BlY2lmaWMgdmFsdWVzIGxpc3RlZCBiZWxvdw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCkRl ZmluZWQgYml0cyBmb3IgZmxhZ3MgZmllbGQ6DQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KTmFt ZSAgICAgICAgICAgICAgICAgICAgICAgIEJpdCAgICAgICAgICAgICAgICBEZWZpbml0aW9uDQot LS0tICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0gICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCklPTU1VX1FVRVJZX21hcF9jYXAgICAgICAgICAgMCAgICAgICAgSU9N TVVPUF9tYXBfcGFnZSBvciBJT01NVU9QX21hcF9mb3JlaWduDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNhbiBiZSB1c2VkIGZvciB0aGUgY2FsbGluZyBkb21haW4NCg0K SU9NTVVfUVVFUllfbWFwX2FsbF9tZm5zICAgICAxICAgICAgICBJT01NVU9QX21hcF9wYWdlIHN1 Ym9wIGNhbiBtYXAgYW55IE1GTg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBub3QgdXNlZCBieSBYZW4NCg0KUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgICAgIDItOSAgICAg ICAgICAgICAgICAgICBuL2ENCg0KSU9NTVVfcGFnZV9vcmRlciAgICAgICAgICAgMTAtMTUgICAg ICBSZXR1cm5zIG1heGltdW0gcG9zc2libGUgcGFnZSBvcmRlciBmb3INCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYWxsIG90aGVyIElPTU1VT1Agc3Vib3BzDQotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCg0KRGVmaW5lZCB2YWx1ZXMgZm9yIHF1ZXJ5X2NhcHMgc3Vib3Agc3Rh dHVzIGZpZWxkOg0KDQpWYWx1ZSAgIFJlYXNvbg0KLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQowICAgICAgIHN1Ym9wIHN1 Y2Nlc3NmdWxseSByZXR1cm5lZA0KDQpJT01NVU9QX21hcF9wYWdlDQotLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQpUaGlzIHN1Ym9wIHVzZXMgYHN0cnVjdCBtYXBfcGFnZWAgcGFydCBvZiB0aGUgYHN0 cnVjdCBwdl9pb21tdV9vcGAuDQoNCklmIElPTU1VIGRvbTAtc3RyaWN0IG1vZGUgaXMgTk9UIGVu YWJsZWQgdGhlbiB0aGUgaGFyZHdhcmUgZG9tYWluIHdpbGwgYmUNCmFsbG93ZWQgdG8gbWFwIGFs bCBHRk5zIGV4Y2VwdCBmb3IgWGVuIG93bmVkIE1GTnMgZWxzZSB0aGUgaGFyZHdhcmUNCmRvbWFp biB3aWxsIG9ubHkgYmUgYWxsb3dlZCB0byBtYXAgR0ZOcyB3aGljaCBpdCBvd25zLg0KDQpJZiBJ T01NVSBkb20wLXN0cmljdCBtb2RlIGlzIE5PVCBlbmFibGVkIHRoZW4gdGhlIGhhcmR3YXJlIGRv bWFpbiB3aWxsIGJlDQphbGxvd2VkIHRvIG1hcCBhbGwgR0ZOcyB3aXRob3V0IHRha2luZyBhIHJl ZmVyZW5jZSB0byB0aGUgTUZOIGJhY2tpbmcgdGhlIEdGTg0KYnkgc2V0dGluZyB0aGUgSU9NTVVf TUFQX09QX25vX3JlZl9jbnQgZmxhZy4NCg0KRXZlcnkgc3VjY2Vzc2Z1bCBwdl9pb21tdV9vcCB3 aWxsIHJlc3VsdCBpbiBhbiBhZGRpdGlvbmFsIHBhZ2UgcmVmZXJlbmNlIGJlaW5nDQp0YWtlbiBv biB0aGUgTUZOIGJhY2tpbmcgdGhlIEdGTiBleGNlcHQgZm9yIHRoZSBjb25kaXRpb24gZGV0YWls ZWQgYWJvdmUuDQoNCklmIHRoZSBtYXBfb3AgZmxhZ3MgaW5kaWNhdGUgYSB3cml0ZWFibGUgbWFw cGluZyBpcyByZXF1aXJlZCB0aGVuIGEgd3JpdGVhYmxlDQpwYWdlIHR5cGUgcmVmZXJlbmNlIHdp bGwgYmUgdGFrZW4gb3RoZXJ3aXNlIGEgc3RhbmRhcmQgcGFnZSByZWZlcmVuY2Ugd2lsbCBiZQ0K dGFrZW4uDQoNCkFsbCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGJl IHRydWUgZm9yIFBWIElPTU1VIG1hcA0Kc3Vib3AgdG8gc3VjY2VlZDoNCg0KMS4gSU9NTVUgZGV0 ZWN0ZWQgYW5kIHN1cHBvcnRlZCBieSBYZW4NCjIuIFRoZSBkb21haW4gaGFzIElPTU1VIGNvbnRy b2xsZWQgaGFyZHdhcmUgYWxsb2NhdGVkIHRvIGl0DQozLiBJZiBoYXJkd2FyZV9kb21haW4gYW5k IHRoZSBmb2xsb3dpbmcgWGVuIElPTU1VIG9wdGlvbnMgYXJlDQogICBOT1QgZW5hYmxlZDogZG9t MC1wYXNzdGhyb3VnaA0KDQpUaGlzIHN1Ym9wIHVzYWdlIG9mIHRoZSBgc3RydWN0IHB2X2lvbW11 X29wYCBhbmQgYHN0cnVjdCBtYXBfcGFnZWAgZmllbGRzDQphcmUgZGV0YWlsZWQgYmVsb3c6DQoN Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KRmllbGQgICAgICAgICAgUHVycG9zZQ0KLS0tLS0gICAg ICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQpgYmZuYCAgICAgICAgICBbaW5dICBCdXMgYWRkcmVzcyBmcmFtZSBudW1i ZXIoQkZOKSB0byBiZSBtYXBwZWQgdG8gc3BlY2lmaWVkIGdmbg0KICAgICAgICAgICAgICAgICAg ICAgYmVsb3cNCg0KYGdmbmAgICAgICAgICAgW2luXSAgR3Vlc3QgYWRkcmVzcyBmcmFtZSBudW1i ZXIgZm9yIERPTUlEX1NFTEYNCg0KYGZsYWdzYCAgICAgICAgW2luXSAgRmxhZ3MgZm9yIHNpZ25h bGxpbmcgdHlwZSBvZiBJT01NVSBtYXBwaW5nIHRvIGJlIGNyZWF0ZWQsDQogICAgICAgICAgICAg ICAgICAgICBGbGFncyBjYW4gYmUgY29tYmluZWQuDQoNCmBzdGF0dXNgICAgICAgIFtvdXRdIE1h cHBpbmcgc3RhdHVzIG9mIHRoaXMgb3AsIG9wIHNwZWNpZmljIHZhbHVlcyBsaXN0ZWQgYmVsb3cN Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpEZWZpbmVkIGJpdHMgZm9yIGZsYWdzIGZpZWxkOg0K DQpOYW1lICAgICAgICAgICAgICAgICAgICAgICAgQml0ICAgICAgICAgICAgICAgIERlZmluaXRp b24NCi0tLS0gICAgICAgICAgICAgICAgICAgICAgIC0tLS0tICAgICAgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KSU9NTVVfT1BfcmVhZGFibGUgICAgICAgICAgICAwICAgICAg ICBDcmVhdGUgcmVhZGFibGUgSU9NTVUgbWFwcGluZw0KSU9NTVVfT1Bfd3JpdGVhYmxlICAgICAg ICAgICAxICAgICAgICBDcmVhdGUgd3JpdGVhYmxlIElPTU1VIG1hcHBpbmcNCklPTU1VX01BUF9P UF9ub19yZWZfY250ICAgICAgMiAgICAgICAgSU9NTVUgbWFwcGluZyBkb2VzIG5vdCB0YWtlIGEg cmVmZXJlbmNlIHRvDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1GTiBi YWNraW5nIEJGTiBtYXBwaW5nDQpJT01NVV9NQVBfT1BfYWRkX20yYiAgICAgICAgIDMgICAgICAg IFdpbGRjYXJkIE0yQiBtYXBwaW5nIGFkZGVkIGZvcg0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsb29rdXBfZm9yZWlnbl9wYWdlIHRvIHVzZQ0KUmVzZXJ2ZWQgZm9yIGZ1 dHVyZSB1c2UgICAgIDQtOSAgICAgICAgICAgICAgICAgICBuL2ENCklPTU1VX3BhZ2Vfb3JkZXIg ICAgICAgICAgICAxMC0xNSAgICAgUGFnZSBvcmRlciB0byBiZSB1c2VkIGZvciBib3RoIGdmbiBh bmQgYmZuDQoNCkRlZmluZWQgdmFsdWVzIGZvciBtYXBfcGFnZSBzdWJvcCBzdGF0dXMgZmllbGQ6 DQoNClZhbHVlICAgUmVhc29uDQotLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCjAgICAgICAgc3Vib3Ag c3VjY2Vzc2Z1bGx5IHJldHVybmVkDQotRUlPICAgIElPTU1VIHVuaXQgcmV0dXJuZWQgZXJyb3Ig d2hlbiBhdHRlbXB0aW5nIHRvIG1hcCBCRk4gdG8gR0ZOLg0KLUVQRVJNICBHRk4gY291bGQgbm90 IGJlIG1hcHBlZCBiZWNhdXNlIHRoZSBHRk4gYmVsb25ncyB0byBYZW4uDQotRVBFUk0gIERvbWFp biBpcyBub3QgdGhlIGhhcmR3YXJlIGRvbWFpbiBhbmQgR0ZOIGRvZXMgbm90IGJlbG9uZyB0byBk b21haW4NCi1FUEVSTSAgRG9tYWluIGlzIHRoZSBoYXJkd2FyZSBkb21haW4sIElPTU1VIGRvbS1z dHJpY3QgbW9kZSBpcyBlbmFibGVkIGFuZA0KICAgICAgICBHRk4gZG9lcyBub3QgYmVsb25nIHRv IGRvbWFpbg0KLUVBQ0NFUyBCRk4gYWRkcmVzcyBjb25mbGljdHMgd2l0aCBSTVJSIHJlZ2lvbnMg Zm9yIGRldmljZXMgYXR0YWNoZWQgdG8NCiAgICAgICAgRE9NSURfU0VMRg0KLUVOT1NQQyBQYWdl IG9yZGVyIGlzIHRvbyBsYXJnZSBmb3IgZWl0aGVyIEJGTiwgR0ZOIG9yIElPTU1VIHVuaXQNCg0K SU9NTVVPUF91bm1hcF9wYWdlDQotLS0tLS0tLS0tLS0tLS0tLS0NClRoaXMgc3Vib3AgdXNlcyBg c3RydWN0IHVubWFwX3BhZ2VgIHBhcnQgb2YgdGhlIGBzdHJ1Y3QgcHZfaW9tbXVfb3BgLg0KDQpU aGUgc3Vib3AgdXNhZ2Ugb2YgdGhlIGBzdHJ1Y3QgcHZfaW9tbXVfb3BgIGFuZCBgc3RydWN0IHVu bWFwX3BhZ2VgIGZpZWxkcw0KYXJlIGRldGFpbGVkIGJlbG93Og0KDQotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KRmll bGQgICAgICAgICAgUHVycG9zZQ0KLS0tLS0gICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmBiZm5gICAgICAgICAgIFtpbl0gQnVz IGFkZHJlc3MgZnJhbWUgbnVtYmVyIHRvIGJlIHVubWFwcGVkIGluIERPTUlEX1NFTEYNCg0KYGZs YWdzYCAgICAgICAgW2luXSBGbGFncyBmb3Igc2lnbmFsbGluZyBwYWdlIG9yZGVyIG9mIHVubWFw IG9wZXJhdGlvbg0KDQpgc3RhdHVzYCAgICAgICBbb3V0XSBNYXBwaW5nIHN0YXR1cyBvZiB0aGlz IHVubWFwIG9wZXJhdGlvbiwgMCBpbmRpY2F0ZXMgc3VjY2Vzcw0KLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KRGVm aW5lZCBiaXRzIGZvciBmbGFncyBmaWVsZDoNCg0KTmFtZSAgICAgICAgICAgICAgICAgICAgICAg IEJpdCAgICAgICAgICAgICAgICBEZWZpbml0aW9uDQotLS0tICAgICAgICAgICAgICAgICAgICAg ICAtLS0tLSAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCklPTU1VX1VO TUFQX09QX3JlbW92ZV9tMmIgICAgMCAgICAgICAgV2lsZGNhcmQgTTJCIG1hcHBpbmcgcmVtb3Zl ZCBmb3INCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwX2ZvcmVp Z25fcGFnZSB1c2UNClJlc2VydmVkIGZvciBmdXR1cmUgdXNlICAgICAxLTkgICAgICAgICAgICAg ICAgICAgbi9hDQpJT01NVV9wYWdlX29yZGVyICAgICAgICAgICAgMTAtMTUgICAgIFBhZ2Ugb3Jk ZXIgdG8gYmUgdXNlZCBmb3IgYmZuDQoNCg0KRGVmaW5lZCB2YWx1ZXMgZm9yIHVubWFwX3BhZ2Ug c3Vib3Agc3RhdHVzIGZpZWxkOg0KDQpFcnJvciBjb2RlICBSZWFzb24NCi0tLS0tLS0tLS0gIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KMCAgICAgICAgICAgIHN1Ym9wIHN1Y2Nlc3NmdWxseSByZXR1cm5lZA0KLUVJTyAgICAgICAg IElPTU1VIHVuaXQgcmV0dXJuZWQgZXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIHVubWFwIEJGTi4N Ci1FTk9TUEMgICAgICBQYWdlIG9yZGVyIGlzIHRvbyBsYXJnZSBmb3IgZWl0aGVyIEJGTiBhZGRy ZXNzIG9yIElPTU1VIHVuaXQNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCklPTU1VT1BfbWFwX2ZvcmVp Z25fcGFnZQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpUaGlzIHN1Ym9wIHVzZXMgYHN0cnVj dCBtYXBfZm9yZWlnbl9wYWdlYCBwYXJ0IG9mIHRoZSBgc3RydWN0IHB2X2lvbW11X29wYC4NCg0K SXQgaXMgbm90IHZhbGlkIHRvIHVzZSBhIGRvbWlkIHJlcHJlc2VudGluZyB0aGUgY2FsbGluZyBk b21haW4uDQoNClRoZSBoeXBlcmNhbGwgd2lsbCBvbmx5IHN1Y2NlZWQgaWYgY2FsbGluZyBkb21h aW4gaGFzIHN1ZmZpY2llbnQgcHJpdmlsZWdlIG92ZXINCnRoZSBzcGVjaWZpZWQgZG9taWQuDQoN ClRoZSBNMkIgbWVjaGFuaXNtIGlzIGFuIE1GTiB0byAoQkZOLGRvbWlkLGlvc2VydmVyKSB0dXBs ZS4NCg0KRWFjaCBzdWNjZXNzZnVsIHN1Ym9wIHdpbGwgYWRkIHRvIHRoZSBNMkIgaWYgdGhlcmUg d2FzIG5vdCBhbiBleGlzdGluZyBpZGVudGljYWwNCk0yQiBlbnRyeS4NCg0KRXZlcnkgbmV3IE0y QiBlbnRyeSB3aWxsIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIE1GTiBiYWNraW5nIHRoZSBHRk4u DQoNCkFsbCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGJlIHRydWUg Zm9yIFBWIElPTU1VIG1hcF9mb3JlaWduDQpzdWJvcCB0byBzdWNjZWVkOg0KDQoxLiBJT01NVSBk ZXRlY3RlZCBhbmQgc3VwcG9ydGVkIGJ5IFhlbg0KMi4gVGhlIGRvbWFpbiBoYXMgSU9NTVUgY29u dHJvbGxlZCBoYXJkd2FyZSBhbGxvY2F0ZWQgdG8gaXQNCjMuIFRoZSBkb21haW4gaXMgdGhlIGhh cmR3YXJlX2RvbWFpbiBhbmQgdGhlIGZvbGxvd2luZyBYZW4gSU9NTVUgb3B0aW9ucyBhcmUNCiAg IE5PVCBlbmFibGVkOiBkb20wLXBhc3N0aHJvdWdoDQoNCg0KVGhpcyBzdWJvcCB1c2FnZSBvZiB0 aGUgYHN0cnVjdCBwdl9pb21tdV9vcGAgYW5kIGBzdHJ1Y3QgbWFwX2ZvcmVpZ25fcGFnZWANCmZp ZWxkcyBhcmUgZGV0YWlsZWQgYmVsb3c6DQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpGaWVsZCAgICAgICAgICBQ dXJwb3NlDQotLS0tLSAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KYGRvbWlkYCAgICAgICAgW2luXSBUaGUgZG9tYWluIGlkIGZv ciB3aGljaCB0aGUgZ2ZuIGZpZWxkIGFwcGxpZXMNCg0KYGlvc2VydmVyYCAgICAgW2luXSBJT1JF USBzZXJ2ZXIgaWQgYXNzb2NpYXRlZCB3aXRoIG1hcHBpbmcNCg0KYGJmbmAgICAgICAgICAgW2lu XSBCdXMgYWRkcmVzcyBmcmFtZSBudW1iZXIgZm9yIGdmbiBhZGRyZXNzDQoNCmBnZm5gICAgICAg ICAgIFtpbl0gR3Vlc3QgYWRkcmVzcyBmcmFtZSBudW1iZXINCg0KYGZsYWdzYCAgICAgICAgW2lu XSBEZXRhaWxzIHRoZSBzdGF0dXMgb2YgdGhlIEJGTiBtYXBwaW5nDQoNCmBzdGF0dXNgICAgICAg IFtvdXRdIHN0YXR1cyBvZiB0aGlzIHN1Ym9wLCAwIGluZGljYXRlcyBzdWNjZXNzDQotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KDQpEZWZpbmVkIGJpdHMgZm9yIGZsYWdzIGZpZWxkOg0KDQpOYW1lICAgICAgICAgICAg ICAgICAgICAgICAgIEJpdCAgICAgICAgICAgICAgICBEZWZpbml0aW9uDQotLS0tICAgICAgICAg ICAgICAgICAgICAgICAgLS0tLS0gICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQpJT01NVU9QX3JlYWRhYmxlICAgICAgICAgICAgICAwICAgICAgICBCRk4gSU9NTVUgbWFw cGluZyBpcyByZWFkYWJsZQ0KSU9NTVVPUF93cml0ZWFibGUgICAgICAgICAgICAgMSAgICAgICAg QkZOIElPTU1VIG1hcHBpbmcgaXMgd3JpdGVhYmxlDQpJT01NVU9QX3N3YXBfbWZuICAgICAgICAg ICAgICAyICAgICAgICBCRk4gSU9NTVUgbWFwcGluZyBjYW4gYmUgc2FmZWx5DQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwcGVkIHRvIHNjcmF0Y2ggcGFnZQ0KUmVz ZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgICAgICAzLTkgICAgICAgUmVzZXJ2ZWQgZmxhZyBiaXRzIHNo b3VsZCBiZSAwDQpJT01NVV9wYWdlX29yZGVyICAgICAgICAgICAgMTAtMTUgICAgICBQYWdlIG9y ZGVyIHRvIGJlIHVzZWQgZm9yIGJvdGggZ2ZuIGFuZCANCmJmbg0KDQpEZWZpbmVkIHZhbHVlcyBm b3IgbWFwX2ZvcmVpZ25fcGFnZSBzdWJvcCBzdGF0dXMgZmllbGQ6DQoNCkVycm9yIGNvZGUgIFJl YXNvbg0KLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQowICAgICAgICAgICAgc3Vib3Agc3VjY2Vzc2Z1bGx5IHJl dHVybmVkDQotRUlPICAgICAgICAgSU9NTVUgdW5pdCByZXR1cm5lZCBlcnJvciB3aGVuIGF0dGVt cHRpbmcgdG8gbWFwIEJGTiB0byBHRk4uDQotRVBFUk0gICAgICAgQ2FsbGluZyBkb21haW4gZG9l cyBub3QgaGF2ZSBzdWZmaWNpZW50IHByaXZpbGVnZSBvdmVyIGRvbWlkDQotRVBFUk0gICAgICAg R0ZOIGNvdWxkIG5vdCBiZSBtYXBwZWQgYmVjYXVzZSB0aGUgR0ZOIGJlbG9uZ3MgdG8gWGVuLg0K LUVQRVJNICAgICAgIGRvbWlkIG1hcHMgdG8gRE9NSURfU0VMRg0KLUVBQ0NFUyAgICAgIEJGTiBh ZGRyZXNzIGNvbmZsaWN0cyB3aXRoIFJNUlIgcmVnaW9ucyBmb3IgZGV2aWNlcyBhdHRhY2hlZCB0 bw0KICAgICAgICAgICAgIERPTUlEX1NFTEYNCi1FTk9ERVYgICAgICBQcm92aWRlZCBpb3NlcnZl ciBpZCBpcyBub3QgdmFsaWQNCi1FTlhJTyAgICAgICBQcm92aWRlZCBkb21pZCBpZCBpcyBub3Qg dmFsaWQNCi1FTlhJTyAgICAgICBQcm92aWRlZCBHRk4gYWRkcmVzcyBpcyBub3QgdmFsaWQNCi1F Tk9TUEMgICAgICBQYWdlIG9yZGVyIGlzIHRvbyBsYXJnZSBmb3IgZWl0aGVyIEJGTiwgR0ZOIG9y IElPTU1VIHVuaXQNCg0KSU9NTVVfbG9va3VwX2ZvcmVpZ25fcGFnZQ0KLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KVGhpcyBzdWJvcCB1c2VzIGBzdHJ1Y3QgbG9va3VwX2ZvcmVpZ25fcGFnZWAg cGFydCBvZiB0aGUgYHN0cnVjdCBwdl9pb21tdV9vcGAuDQoNClRoaXMgc3Vib3AgbG9va3VwcyB1 cCBhIEJGTiBtYXBwaW5nIGZvciBhIGlvc2VydmVyICsgZ2ZuICsgdGFyZ2V0IGRvbWlkDQpjb21i aW5hdGlvbi4NCg0KVGhlIGh5cGVyY2FsbCB3aWxsIG9ubHkgc3VjY2VlZCBpZiBjYWxsaW5nIGRv bWFpbiBoYXMgc3VmZmljaWVudCBwcml2aWxlZ2Ugb3Zlcg0KdGhlIHNwZWNpZmllZCBkb21pZC4N Cg0KSWYgYSAxOjEgbWFwcGluZyBleGlzdHMgb2YgQkZOIHRvIE1GTiB0aGVuIGEgTTJCIGVudHJ5 IGlzIGFkZGVkIGFuZCBhDQpyZWZlcmVuY2UgaXMgdGFrZW4gdG8gdGhlIHVuZGVybHlpbmcgTUZO LiBJZiBhbiBleGlzdGluZyBtYXBwaW5nIGlzIHByZXNlbnQNCnRoZW4gdGhlIEJGTiBpcyByZXR1 cm5lZCBhbmQgbm8gYWRkaXRpb25hbCByZWZlcmVuY2UncyB3aWxsIGJlIHRha2VuIHRvIHRoZQ0K dW5kZXJseWluZyBNRk4uDQoNCkEgMToxIG1hcHBpbmcgd2lsbCBleGlzdCBpZiB0aGVyZSBpcyBu byBJT01NVSBzdXBwb3J0IG9yIGlmIHRoZSBQViBoYXJkd2FyZQ0KZG9tYWluIHdhcyBib290ZWQg aW4gZG9tMC1yZWxheGVkIG1vZGUgb3IgaW4gZG9tMC1wYXNzdGhyb3VnaCBtb2RlLg0KDQpJZiB0 aGVyZSBpcyBubyBJT01NVSBzdXBwb3J0IHRoZW4gdGhlIE1GTiBpcyByZXR1cm5lZCBpbiB0aGUg QkZOIGZpZWxkICh0aGF0IGlzDQp0aGUgb25seSB2YWxpZCBidXMgYWRkcmVzcyBmb3IgdGhlIEdG TiArIGRvbWlkIGNvbWJpbmF0aW9uKS4NCg0KRWFjaCBzdWNjZXNzZnVsIHN1Ym9wIHdpbGwgYWRk IHRvIHRoZSBNMkIgaWYgdGhlcmUgd2FzIG5vdCBhbiBleGlzdGluZyBpZGVudGljYWwNCk0yQiBl bnRyeS4NCg0KRXZlcnkgbmV3IE0yQiBlbnRyeSB3aWxsIHRha2UgYSByZWZlcmVuY2UgdG8gdGhl IE1GTiBiYWNraW5nIHRoZSBHRk4uDQoNClRoaXMgc3Vib3AgdXNhZ2Ugb2YgdGhlIGBzdHJ1Y3Qg cHZfaW9tbXVfb3BgIGFuZCBgc3RydWN0IGxvb2t1cF9mb3JlaWduX3BhZ2VgDQpmaWVsZHMgYXJl IGRldGFpbGVkIGJlbG93Og0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KRmllbGQgICAgICAgICAgUHVycG9zZQ0K LS0tLS0gICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCmBkb21pZGAgICAgICAgIFtpbl0gVGhlIGRvbWFpbiBpZCBmb3Igd2hpY2gg dGhlIGdmbiBmaWVsZCBhcHBsaWVzDQoNCmBpb3NlcnZlcmAgICAgIFtpbl0gSU9SRVEgc2VydmVy IGlkIGFzc29jaWF0ZWQgd2l0aCBtYXBwaW5nDQoNCmBiZm5gICAgICAgICAgIFtvdXRdIEJ1cyBh ZGRyZXNzIGZyYW1lIG51bWJlciBmb3IgZ2ZuIGFkZHJlc3MNCg0KYGdmbmAgICAgICAgICAgW2lu XSBHdWVzdCBhZGRyZXNzIGZyYW1lIG51bWJlcg0KDQpgZmxhZ3NgICAgICAgICBbb3V0XSBEZXRh aWxzIHRoZSBzdGF0dXMgb2YgdGhlIEJGTiBtYXBwaW5nDQoNCmBzdGF0dXNgICAgICAgIFtvdXRd IHN0YXR1cyBvZiB0aGlzIHN1Ym9wLCAwIGluZGljYXRlcyBzdWNjZXNzDQotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K DQpEZWZpbmVkIGJpdHMgZm9yIGZsYWdzIGZpZWxkOg0KDQpOYW1lICAgICAgICAgICAgICAgICAg ICAgICAgIEJpdCAgICAgICAgICAgICAgICBEZWZpbml0aW9uDQotLS0tICAgICAgICAgICAgICAg ICAgICAgICAgLS0tLS0gICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpJ T01NVU9QX3JlYWRhYmxlICAgICAgICAgICAgICAwICAgICAgICBSZXR1cm5lZCBCRk4gSU9NTVUg bWFwcGluZyBpcyByZWFkYWJsZQ0KSU9NTVVPUF93cml0ZWFibGUgICAgICAgICAgICAgMSAgICAg ICAgUmV0dXJuZWQgQkZOIElPTU1VIG1hcHBpbmcgaXMgd3JpdGVhYmxlDQpSZXNlcnZlZCBmb3Ig ZnV0dXJlIHVzZSAgICAgIDItOSAgICAgICBSZXNlcnZlZCBmbGFnIGJpdHMgc2hvdWxkIGJlIDAN CklPTU1VX3BhZ2Vfb3JkZXIgICAgICAgICAgICAxMC0xNSAgICAgIFJldHVybnMgbWF4aW11bSBw b3NzaWJsZSBwYWdlIG9yZGVyIGZvcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWxsIG90aGVyIElPTU1VT1Agc3Vib3BzDQoNCkRlZmluZWQgdmFsdWVzIGZvciBsb29r dXBfZm9yZWlnbl9wYWdlIHN1Ym9wIHN0YXR1cyBmaWVsZDoNCg0KRXJyb3IgY29kZSAgUmVhc29u DQotLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCjAgICAgICAgICAgICBzdWJvcCBzdWNjZXNzZnVsbHkgcmV0dXJu ZWQNCi1FUEVSTSAgICAgICBDYWxsaW5nIGRvbWFpbiBkb2VzIG5vdCBoYXZlIHN1ZmZpY2llbnQg cHJpdmlsZWdlIG92ZXIgZG9taWQNCi1FTk9FTlQgICAgICBUaGVyZSBpcyBubyBhdmFpbGFibGUg QkZOIGZvciBwcm92aWRlZCBHRk4gKyBkb21pZCBjb21iaW5hdGlvbg0KLUVOT0RFViAgICAgIFBy b3ZpZGVkIGlvc2VydmVyIGlkIGlzIG5vdCB2YWxpZA0KLUVOWElPICAgICAgIFByb3ZpZGVkIGRv bWlkIGlkIGlzIG5vdCB2YWxpZA0KLUVOWElPICAgICAgIFByb3ZpZGVkIEdGTiBhZGRyZXNzIGlz IG5vdCB2YWxpZA0KDQoNCklPTU1VT1BfdW5tYXBfZm9yZWlnbl9wYWdlDQotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KVGhpcyBzdWJvcCB1c2VzIGBzdHJ1Y3QgdW5tYXBfZm9yZWlnbl9wYWdl YCBwYXJ0IG9mIHRoZSBgc3RydWN0IHB2X2lvbW11X29wYC4NCg0KSXQgb25seSBhbGxvd3MgQkZO cyBhY3F1aXJlZCB2aWEgSU9NTVVPUF9tYXBfZm9yZWlnbl9wYWdlIG9yIElPTU1VT1BfbG9va3Vw X3BhZ2UNCnRvIGJlIHVubWFwcGVkLiBJZiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gdW5tYXAgYSBC Rk4gbWFwcGVkIHZpYSBJT01NVU9QX21hcF9wYWdlDQp0aGVuIHRoZSBzdWJvcCB3aWxsIGZhaWwu DQoNClRoZSBzdWJvcCB3aWxsIHBlcmZvcm0gYSBCMk0gbG9va3VwIChJTyBwYWdlIHRhYmxlIHdh bGspIGZvciB0aGUgY2FsbGluZyBkb21haW4NCmFuZCB0aGVuIGluZGV4IHRoZSBNMkIgdXNpbmcg dGhlIHJldHVybmVkIE1GTi4gVGhpcyBpcyBzYWZlIGJlY2F1c2UgYSBwYXJ0aWN1bGFyDQpCRk4g bWFwcGluZyBjYW4gb25seSBtYXAgdG8gb25lIE1GTiBmb3IgYSBwYXJ0aWN1bGFyIGNhbGxpbmcg ZG9tYWluLg0KDQpUaGlzIHN1Ym9wIHVzYWdlIG9mIHRoZSBgc3RydWN0IHB2X2lvbW11X29wYCBh bmQgYHN0cnVjdCB1bm1hcF9mb3JlaWduX3BhZ2VgIA0KZmllbGRzDQphcmUgZGV0YWlsZWQgYmVs b3c6DQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpGaWVsZCAgICAgICAgICBQdXJwb3NlDQotLS0tLSAgICAg ICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KYGlvc2VydmVyYCAgICAgW2luXSBJT1JFUSBzZXJ2ZXIgaWQgYXNzb2NpYXRlZCB3aXRo IG1hcHBpbmcNCg0KYGJmbmAgICAgICAgICAgW2luXSBCdXMgYWRkcmVzcyBmcmFtZSBudW1iZXIg Zm9yIGdmbiBhZGRyZXNzDQoNCmBmbGFnc2AgICAgICAgIFtpbl0gRmxhZ3MgZm9yIHNpZ25hbGxp bmcgcGFnZSBvcmRlciBvZiB1bm1hcCBvcGVyYXRpb24NCg0KYHN0YXR1c2AgICAgICAgW291dF0g c3RhdHVzIG9mIHRoaXMgc3Vib3AsIDAgaW5kaWNhdGVzIHN1Y2Nlc3MNCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQoNCkRlZmluZWQgYml0cyBmb3IgZmxhZ3MgZmllbGQ6DQoNCk5hbWUgICAgICAgICAgICAgICAg ICAgICAgICBCaXQgICAgICAgICAgICAgICAgRGVmaW5pdGlvbg0KLS0tLSAgICAgICAgICAgICAg ICAgICAgICAgIC0tLS0tICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpS ZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAgICAgMC05ICAgICAgICAgICAgICAgICAgIG4vYQ0KSU9N TVVfcGFnZV9vcmRlciAgICAgICAgICAgIDEwLTE1ICAgICBQYWdlIG9yZGVyIHRvIGJlIHVzZWQg Zm9yIGJmbiB1bm1hcHBpbmcNCg0KRGVmaW5lZCB2YWx1ZXMgZm9yIHVubWFwX2ZvcmVpZ25fcGFn ZSBzdWJvcCBzdGF0dXMgZmllbGQ6DQoNCkVycm9yIGNvZGUgIFJlYXNvbg0KLS0tLS0tLS0tLSAg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQowICAgICAgICAgICAgc3Vib3Agc3VjY2Vzc2Z1bGx5IHJldHVybmVkDQotRU5PRU5UICAg ICAgQW4gTTJCIGVudHJ5IHdhcyBub3QgZm91bmQgZm9yIHRoZSBzcGVjaWZpZWQgaW5wdXQgcGFy YW1ldGVycy4NCg0KDQpMaW51eCBrZXJuZWwgYXJjaGl0ZWN0dXJlDQo9PT09PT09PT09PT09PT09 PT09PT09PT09DQoNClRoZSBMaW51eCBrZXJuZWwgd2lsbCB1c2UgdGhlIFBWLUlPTU1VIGh5cGVy Y2FsbHMgdG8gbWFwIGl0cyBQRk4gYWRkcmVzcw0Kc3BhY2UgaW50byB0aGUgSU9NTVUuIEl0IHdp bGwgbWFwIHRoZSBQRk5zIHRvIHRoZSBJT01NVSBhZGRyZXNzIHNwYWNlIHVzaW5nDQphIDE6MSBt YXBwaW5nLCBpdCBkb2VzIHRoaXMgYnkgcHJvZ3JhbW1pbmcgYSBCRk4gdG8gR0ZOIG1hcHBpbmcg d2hpY2ggbWF0Y2hlcw0KdGhlIFBGTiB0byBHRk4gbWFwcGluZy4NCg0KVGhlIG5hdGl2ZSBTV0lP VExCIHdpbGwgYmUgdXNlZCB0byBoYW5kbGUgZGV2aWNlcyB3aGljaCBjYW5ub3QgRE1BIHRvIGFs bCBvZg0KdGhlIGtlcm5lbCdzIFBGTiBhZGRyZXNzIHNwYWNlLg0KDQpBbiBpbnRlcmZhY2Ugc2hh bGwgYmUgcHJvdmlkZWQgZm9yIGVtdWxhdG9yIHVzYWdlIG9mIElPTU1VT1BfKl9mb3JlaWduX3Bh Z2UNCnN1Ym9wcyB3aGljaCB3aWxsIGFsbG93IHRoZSBMaW51eCBrZXJuZWwgdG8gY2VudHJhbGx5 IG1hbmFnZSB0aGF0IGRvbWFpbidzIEJGTg0KcmVzb3VyY2UgYW5kIGVuc3VyZSB0aGVyZSBhcmUg bm8gdW5leHBlY3RlZCBjb25mbGljdHMuDQoNCktlcm5lbCBNYXAgRm9yZWlnbiBHRk4gdG8gQkZO IGludGVyZmFjZQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCkFu IGFycmF5IG9mICdjb3VudCcgb2YgJ3N0cnVjdCBwdl9pb21tdV9vcHMnIHdpbGwgYmUgcGFzc2Vk IHRvIHRoZSBtYXBwaW5nDQpmdW5jdGlvbi4NCg0KICAgIGludCBtYXBfZm9yZWlnbl9nZm5fdG9f YmZuKGludCBjb3VudCwgc3RydWN0IHB2X2lvbW11X29wICpvcHMpDQoNClRoZSBjYWxsaW5nIGZ1 bmN0aW9uIHdpbGwgdXNlIHRoZSBgc3RydWN0IG1hcF9mb3JlaWduX3BhZ2VgIGluc2lkZSB0aGUg YHN0cnVjdA0KcHZfaW9tbXVfb3BgIGFuZCB3aWxsIGZpbGwgaW4gdGhlIGRvbWlkLCBnZm4gYW5k IGlvc2VydmVyX2lkIGZpZWxkcy4NCg0KVGhlIGtlcm5lbCBmdW5jdGlvbiB3aWxsIHJldXNlIHRo ZSBwYXNzZWQgaW4gc3RydWN0IHB2X2lvbW11X29wIGZvciB0aGUNCmh5cGVyY2FsbCBhbmQgd2ls bCBzZXQgdGhlIHN1Ym9wX2lkIGZpZWxkIGJhc2VkIG9uIHRoZSBJT01NVV9RVUVSWV9tYXBfY2Fw DQpjYXBhYmlsaXR5Lg0KDQpJZiB0aGUgSU9NTVVfUVVFUllfbWFwX2NhcCBpcyBzZXQgdGhlbiB0 aGUga2VybmVsIHdpbGwgYWxsb2NhdGUgYSBzdWl0YWJsZSBCRk4NCmFkZHJlc3MsIHNldCB0aGUg QkZOIGZpZWxkIGluIHRoZSBvcCB0byB0aGlzIGFkZHJlc3MgYW5kIHNldCB0aGUgc3Vib3BfaWQg dG8NCklPTU1VT1BfbWFwX3BhZ2UuIEl0IHdpbGwgZG8gdGhpcyBvbiBhbGwgJ29wcycgYW5kIHRo ZW4gaXNzdWUgdGhlIGh5cGVyY2FsbC4NCg0KSWYgdGhlIElPTU1VX1FVRVJZX21hcF9jYXAgaXMg Tk9UIHNldCB0aGVuIHRoZSBrZXJuZWwgd2lsbCBzZXQgdGhlIHN1Ym9wc19pZA0KdG8gSU9NTVVP UF9sb29rdXBfcGFnZSBvbiBhbGwgYG9wc2AgYW5kIHRoZW4gaXNzdWUgdGhlIGh5cGVyY2FsbC4N Cg0KVGhlIGNhbGxpbmcgZnVuY3Rpb24gc2hvdWxkIGNoZWNrIHRoZSBzdGF0dXMgZmllbGQgaW4g ZWFjaCBvcCBhbmQgaWYgdGhlDQpzdGF0dXMgZmllbGQgaXMgMCB0aGVuIGl0IGNhbiB1c2UgdGhl IHJldHVybmVkIEJGTiBhZGRyZXNzIGluIGVhY2ggb3AuDQoNCg0KS2VybmVsIFVubWFwIEZvcmVp Z24gR0ZOIHRvIEJGTiBpbnRlcmZhY2UNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQoNCkFuIGFycmF5IG9mICdjb3VudCcgb2YgJ3N0cnVjdCBwdl9pb21tdV9vcHMn IHdpbGwgYmUgcGFzc2VkIHRoZSBtYXBwaW5nDQpmdW5jdGlvbi4NCg0KICAgIGludCB1bm1hcF9m b3JlaWduX2dmbl90b19iZm4oaW50IGNvdW50LCBzdHJ1Y3QgcHZfaW9tbXVfb3AgKm9wcykNCg0K VGhlIGNhbGxpbmcgZnVuY3Rpb24gd2lsbCB1c2UgdGhlIGBzdHJ1Y3QgdW5tYXBfZm9yZWlnbl9w YWdlYCBpbnNpZGUgdGhlIGBzdHJ1Y3QNCnB2X2lvbW11X29wYCBhbmQgd2lsbCBmaWxsIGluIHRo ZSBiZm4gZmllbGQuDQoNClRoZSBrZXJuZWwgZnVuY3Rpb24gd2lsbCBzZXQgdGhlIHN1Ym9wX2lk IGZpZWxkIHRvIElPTU1VT1BfdW5tYXBfZm9yZWlnbl9wYWdlDQppbiBlYWNoIG9wIGFuZCB0aGVu IGlzc3VlIHRoZSBoeXBlcmNhbGwuDQoNClRoZSBjYWxsaW5nIGZ1bmN0aW9uIHNob3VsZCBjaGVj ayB0aGUgc3RhdHVzIGZpZWxkIGluIGVhY2ggb3AgYW5kIGlmIHRoZQ0Kc3RhdHVzIGZpZWxkIGlz IDAgdGhlbiB0aGUgQkZOIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSB1bm1hcHBlZC4NCg0KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NClhlbi1kZXZlbCBtYWls aW5nIGxpc3QNClhlbi1kZXZlbEB4eHh4eHh4eHh4eHh4DQpodHRwOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWw= --_002_910b9652dd3642b3b65e4fe2f4c45daaAMSPEX02CL03citritenet_ Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0 cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA== --_002_910b9652dd3642b3b65e4fe2f4c45daaAMSPEX02CL03citritenet_--