From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 0483F378E for ; Mon, 10 Oct 2016 11:43:00 +0200 (CEST) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP; 10 Oct 2016 02:42:59 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.31,471,1473145200"; d="scan'208";a="1042617751" Received: from kmsmsx153.gar.corp.intel.com ([172.21.73.88]) by orsmga001.jf.intel.com with ESMTP; 10 Oct 2016 02:42:57 -0700 Received: from pgsmsx103.gar.corp.intel.com ([169.254.2.149]) by KMSMSX153.gar.corp.intel.com ([169.254.5.94]) with mapi id 14.03.0248.002; Mon, 10 Oct 2016 17:42:56 +0800 From: "Zhao1, Wei" To: Adrien Mazarguil , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [RFC v2] Generic flow director/filtering/classification API Thread-Index: AdIi2dDqP9BHS9xsQjK03nj+YHXhnQ== Date: Mon, 10 Oct 2016 09:42:53 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNjIwNTg3MTUtNmE0Zi00ODk1LWEwNGItMmJkY2M0NGNlNjI4IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE1LjkuNi42IiwiVHJ1c3RlZExhYmVsSGFzaCI6IjVjSGY4Mzd0cGdNbGZETjhHb2VybXo3QzdkSVZ2ZVo0OHlSNkJJb1l6MjQ9In0= x-ctpclassification: CTP_IC x-originating-ip: [172.30.20.206] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [RFC v2] Generic flow director/filtering/classification API X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Oct 2016 09:43:05 -0000 SGkgQWRyaWVuIE1hemFyZ3VpbCwNCg0KSW4geW91ciB2MiB2ZXJzaW9uIG9mIHJ0ZV9mbG93LnR4 dCAsIHRoZXJlIGlzIGFuIGFjdGlvbiB0eXBlIFJURV9GTE9XX0FDVElPTl9UWVBFX01BUkssICBi dXQgdGhlcmUgaXMgbm8gZGVmaW5pdGlvbiBvZiBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX21hcmsu DQpBbmQgdGhlcmUgaXMgIGFuIGRlZmluaXRpb24gb2Ygc3RydWN0IHJ0ZV9mbG93X2FjdGlvbl9p ZC4gSXMgaXQgYSB0eXBvIG9yIG90aGVyIHVzYWdlPw0KDQpUaGFuayB5b3UuDQoNCnN0cnVjdCBy dGVfZmxvd19hY3Rpb25faWQgew0KCXVpbnQzMl90IGlkOyAvKio8IDMyIGJpdCB2YWx1ZSB0byBy ZXR1cm4gd2l0aCBwYWNrZXRzLiAqLw0KfTsNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxmIE9m IEFkcmllbiBNYXphcmd1aWwNCj4gU2VudDogU2F0dXJkYXksIEF1Z3VzdCAyMCwgMjAxNiAzOjMz IEFNDQo+IFRvOiBkZXZAZHBkay5vcmcNCj4gU3ViamVjdDogW2RwZGstZGV2XSBbUkZDIHYyXSBH ZW5lcmljIGZsb3cgZGlyZWN0b3IvZmlsdGVyaW5nL2NsYXNzaWZpY2F0aW9uIEFQSQ0KPiANCj4g SGkgQWxsLA0KPiANCj4gVGhhbmtzIHRvIG1hbnkgZm9yIHRoZSBwb3NpdGl2ZSBhbmQgY29uc3Ry dWN0aXZlIGZlZWRiYWNrIEkndmUgcmVjZWl2ZWQgc28NCj4gZmFyLiBIZXJlIGlzIHRoZSB1cGRh dGVkIHNwZWNpZmljYXRpb24gKHYwLjcpIGF0IGxhc3QuDQo+IA0KPiBJJ3ZlIGF0dGVtcHRlZCB0 byBhZGRyZXNzIGFzIG1hbnkgY29tbWVudHMgYXMgcG9zc2libGUgYnV0IGNvdWxkIG5vdA0KPiBw cm9jZXNzIHRoZW0gYWxsIGp1c3QgeWV0LiBBIG5ldyBzZWN0aW9uICJGdXR1cmUgZXZvbHV0aW9u cyIgaGFzIGJlZW4NCj4gYWRkZWQgZm9yIHRoZSByZW1haW5pbmcgdG9waWNzLg0KPiANCj4gVGhp cyBzZXJpZXMgYWRkcyBydGVfZmxvdy5oIHRvIHRoZSBEUERLIHRyZWUuIE5leHQgdGltZSBJIHdp bGwgYXR0ZW1wdCB0bw0KPiBjb252ZXJ0IHRoZSBzcGVjaWZpY2F0aW9uIGFzIGEgZG9jdW1lbnRh dGlvbiBjb21taXQgcGFydCBvZiB0aGUgcGF0Y2hzZXQNCj4gYW5kIGFjdHVhbGx5IGltcGxlbWVu dCBBUEkgZnVuY3Rpb25zLg0KPiANCj4gSSB0aGluayBpbmNsdWRpbmcgdGhlIGVudGlyZSBkb2N1 bWVudCBoZXJlIG1ha2VzIGl0IGVhc2llciB0byBhbm5vdGF0ZSBvbg0KPiB0aGUgTUwsIGFwb2xv Z2llcyBpbiBhZHZhbmNlIGZvciB0aGUgcmVzdWx0aW5nIHRyYWZmaWMuDQo+IA0KPiBGaW5hbGx5 IEknbSBvZmYgZm9yIHRoZSBuZXh0IHR3byB3ZWVrcywgZG8gbm90IGV4cGVjdCByZXBsaWVzIGZy b20gbWUgaW4NCj4gdGhlIG1lYW50aW1lLg0KPiANCj4gVXBkYXRlcyBhcmUgYWxzbyBhdmFpbGFi bGUgb25saW5lOg0KPiANCj4gSFRNTCB2ZXJzaW9uOg0KPiAgaHR0cHM6Ly9yYXdnaXQuY29tLzZX SU5EL3J0ZV9mbG93L21hc3Rlci9ydGVfZmxvdy5odG1sDQo+IA0KPiBQREYgdmVyc2lvbjoNCj4g IGh0dHBzOi8vcmF3Z2l0LmNvbS82V0lORC9ydGVfZmxvdy9tYXN0ZXIvcnRlX2Zsb3cucGRmDQo+ IA0KPiBSZWxhdGVkIGRyYWZ0IGhlYWRlciBmaWxlIChhbHNvIGluIHRoZSBuZXh0IHBhdGNoKToN Cj4gIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS82V0lORC9ydGVfZmxvdy9tYXN0 ZXIvcnRlX2Zsb3cuaA0KPiANCj4gR2l0IHRyZWU6DQo+ICBodHRwczovL2dpdGh1Yi5jb20vNldJ TkQvcnRlX2Zsb3cNCj4gDQo+IENoYW5nZXMgZnJvbSB2MToNCj4gDQo+ICBTcGVjaWZpY2F0aW9u Og0KPiANCj4gIC0gU2V0dGxlZCBvbiBbZ2VuZXJpY10gImZsb3cgaW50ZXJmYWNlIiAvICJmbG93 IEFQSSIgYXMgdGhlIG5hbWUgb2YgdGhpcw0KPiAgICBmcmFtZXdvcmssIG1hdGNoZXMgdGhlIHJ0 ZV9mbG93IHByZWZpeCBiZXR0ZXIuDQo+ICAtIE1pbm9yIHdvcmRpbmcgY2hhbmdlcyBpbiBzZXZl cmFsIHBsYWNlcy4NCj4gIC0gUGFydGlhbGx5IGFkZGVkIGVncmVzcyAoVFgpIHN1cHBvcnQuDQo+ ICAtIEFkZGVkICJ1bnJlY292ZXJhYmxlIGVycm9ycyIgYXMgYW5vdGhlciBjb25zZXF1ZW5jZSBv ZiBvdmVybGFwcGluZw0KPiAgICBydWxlcy4NCj4gIC0gRGVzY3JpYmVkIGZsb3cgcnVsZXMgZ3Jv dXBzIGFuZCB0aGVpciBpbnRlcmFjdGlvbiB3aXRoIGZsb3cgcnVsZQ0KPiAgICBwcmlvcml0aWVz Lg0KPiAgLSBGdWxseSBkZXNjcmliZWQgUEYgYW5kIFZGIG1ldGEgcGF0dGVybiBpdGVtcyBzbyB0 aGV5IGFyZSBub3Qgb3BlbiB0bw0KPiAgICBpbnRlcnByZXRhdGlvbiBhbnltb3JlLg0KPiAgLSBS ZW1vdmVkIHRoZSBTSUdOQVRVUkUgbWV0YSBwYXR0ZXJuIGl0ZW0gYXMgaXRzIGRlc2NyaXB0aW9u IHdhcyB0b28NCj4gICAgdmFndWUsIG1heSBiZSByZS1hZGRlZCBsYXRlciBpZiBuZWNlc3Nhcnku DQo+ICAtIEFkZGVkIHRoZSBQT1JUIHBhdHRlcm4gaXRlbSB0byBhcHBseSBydWxlcyB0byBub24t ZGVmYXVsdCBwaHlzaWNhbA0KPiAgICBwb3J0cy4NCj4gIC0gRW50aXJlbHkgcmVkZWZpbmVkIHRo ZSBSQVcgcGF0dGVybiBpdGVtLg0KPiAgLSBGaXhlZCB0YWcgZXJyb3IgaW4gdGhlIEVUSCBpdGVt IGRlZmluaXRpb24uDQo+ICAtIFVwZGF0ZWQgcHJvdG9jb2wgZGVmaW5pdGlvbnMgKElQVjQsIElQ VjYsIElDTVAsIFVEUCkuDQo+ICAtIEFkZGVkIG1pc3NpbmcgcHJvdG9jb2xzIChTQ1RQLCBWWExB TikuDQo+ICAtIENvbnZlcnRlZCBJRCBhY3Rpb24gdG8gTUFSSyBhbmQgRkxBRyBhY3Rpb25zLCBk ZXNjcmliZWQgaW50ZXJhY3Rpb24NCj4gICAgd2l0aCB0aGUgUlNTIGhhc2ggcmVzdWx0IGluIG1i dWZzLg0KPiAgLSBVcGRhdGVkIENPVU5UIHF1ZXJ5IHN0cnVjdHVyZSB0byByZXRyaWV2ZSB0aGUg bnVtYmVyIG9mIGJ5dGVzLg0KPiAgLSBVcGRhdGVkIFZGIGFjdGlvbi4NCj4gIC0gRG9jdW1lbnRl ZCBuZWdhdGl2ZSBpdGVtIGFuZCBhY3Rpb24gdHlwZXMsIHRob3NlIHdpbGwgYmUgdXNlZCBmb3IN Cj4gICAgZHluYW1pYyB0eXBlcyBnZW5lcmF0ZWQgYXQgcnVuLXRpbWUuDQo+ICAtIEFkZGVkIGJs dXJiIGFib3V0IElQdjQgb3B0aW9ucyBhbmQgSVB2NiBleHRlbnNpb24gaGVhZGVycyBtYXRjaGlu Zy4NCj4gIC0gVXBkYXRlZCBmdW5jdGlvbiBkZWZpbml0aW9ucy4NCj4gIC0gRG9jdW1lbnRlZCBh IGZsdXNoIG1ldGhvZCB0byByZW1vdmUgYWxsIHJ1bGVzIG9uIGEgZ2l2ZW4gcG9ydCBhdCBvbmNl Lg0KPiAgLSBEb2N1bWVudGVkIHRoZSB2ZXJib3NlIGVycm9yIHJlcG9ydGluZyBpbnRlcmZhY2Uu DQo+ICAtIERvY3VtZW50ZWQgaG93IHRoZSBwcml2YXRlIGludGVyZmFjZSBmb3IgUE1EIHVzZSB3 aWxsIHdvcmsuDQo+ICAtIERvY3VtZW50ZWQgZXhwZWN0ZWQgYmVoYXZpb3IgYmV0d2VlbiBzdWNj ZXNzaXZlIHBvcnQgaW5pdGlhbGl6YXRpb25zLg0KPiAgLSBEb2N1bWVudGVkIGV4cGVjdGVkIGJl aGF2aW9yIGZvciBwb3J0cyBub3QgdW5kZXIgRFBESyBjb250cm9sLg0KPiAgLSBVcGRhdGVkIEFQ SSBtaWdyYXRpb24gc2VjdGlvbi4NCj4gIC0gQWRkZWQgZnV0dXJlIGV2b2x1dGlvbnMgc2VjdGlv bi4NCj4gDQo+ICBIZWFkZXIgZmlsZToNCj4gDQo+ICAtIE5vdCBhIGRyYWZ0IGFueW1vcmUgYW5k IGNhbiBiZSB1c2VkIGFzLWlzIGZvciBwcmVsaW1pbmFyeQ0KPiAgICBpbXBsZW1lbnRhdGlvbnMu DQo+ICAtIEZsb3cgcnVsZSBhdHRyaWJ1dGVzIChncm91cCwgcHJpb3JpdHksIGV0Yykgbm93IGhh dmUgdGhlaXIgb3duDQo+ICAgIHN0cnVjdHVyZSBwcm92aWRlZCBzZXBhcmF0ZWx5IHRvIEFQSSBm dW5jdGlvbnMgKHN0cnVjdCBydGVfZmxvd19hdHRyKS4NCj4gIC0gR3JvdXAgYW5kIHByaW9yaXR5 IGludGVyYWN0aW9ucyBoYXZlIGJlZW4gZG9jdW1lbnRlZC4NCj4gIC0gQWRkZWQgUE9SVCBpdGVt Lg0KPiAgLSBSZW1vdmVkIFNJR05BVFVSRSBpdGVtLg0KPiAgLSBEZWZpbmVkIElDTVAsIFNDVFAg YW5kIFZYTEFOIGl0ZW1zLg0KPiAgLSBSZWRlZmluZWQgUEYsIFZGLCBSQVcsIElQVjQsIElQVjYs IFVEUCBhbmQgVENQIGl0ZW1zLg0KPiAgLSBGaXhlZCB0YWcgZXJyb3IgaW4gdGhlIEVUSCBpdGVt IGRlZmluaXRpb24uDQo+ICAtIENvbnZlcnRlZCBJRCBhY3Rpb24gdG8gTUFSSyBhbmQgRkxBRyBh Y3Rpb25zLg0KPiAgICBoYXNoIHJlc3VsdCBpbiBtYnVmcy4NCj4gIC0gVXBkYXRlZCBDT1VOVCBx dWVyeSBzdHJ1Y3R1cmUuDQo+ICAtIFVwZGF0ZWQgVkYgYWN0aW9uLg0KPiAgLSBBZGRlZCB2ZXJi b3NlIGVycm9ycyBpbnRlcmZhY2UuDQo+ICAtIFVwZGF0ZWQgZnVuY3Rpb24gcHJvdG90eXBlcyBh Y2NvcmRpbmcgdG8gdGhlIGFib3ZlLg0KPiAgLSBEZWZpbmVkIHJ0ZV9mbG93X2ZsdXNoKCkuDQo+ IA0KPiAtLS0tLS0tLQ0KPiANCj4gPT09PT09PT09PT09PT09PT09PT09PQ0KPiBHZW5lcmljIGZs b3cgaW50ZXJmYWNlDQo+ID09PT09PT09PT09PT09PT09PT09PT0NCj4gDQo+IC4uIGZvb3Rlcjo6 DQo+IA0KPiAgICB2MC43DQo+IA0KPiAuLiBjb250ZW50czo6DQo+IC4uIHNlY3RudW06Og0KPiAu LiByYXc6OiBwZGYNCj4gDQo+ICAgIFBhZ2VCcmVhaw0KPiANCj4gT3ZlcnZpZXcNCj4gPT09PT09 PT0NCj4gDQo+IERQREsgcHJvdmlkZXMgc2V2ZXJhbCBjb21wZXRpbmcgaW50ZXJmYWNlcyBhZGRl ZCBvdmVyIHRpbWUgdG8gcGVyZm9ybQ0KPiBwYWNrZXQNCj4gbWF0Y2hpbmcgYW5kIHJlbGF0ZWQg YWN0aW9ucyBzdWNoIGFzIGZpbHRlcmluZyBhbmQgY2xhc3NpZmljYXRpb24uDQo+IA0KPiBUaGV5 IG11c3QgYmUgZXh0ZW5kZWQgdG8gaW1wbGVtZW50IHRoZSBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkg bmV3ZXINCj4gZGV2aWNlcw0KPiBpbiBvcmRlciB0byBleHBvc2UgdGhlbSB0byBhcHBsaWNhdGlv bnMsIGhvd2V2ZXIgdGhlIGN1cnJlbnQgZGVzaWduIGhhcw0KPiBzZXZlcmFsIGRyYXdiYWNrczoN Cj4gDQo+IC0gQ29tcGxpY2F0ZWQgZmlsdGVyIGNvbWJpbmF0aW9ucyB3aGljaCBoYXZlIG5vdCBi ZWVuIGhhcmQtY29kZWQgY2Fubm90IGJlDQo+ICAgZXhwcmVzc2VkLg0KPiAtIFByb25lIHRvIEFQ SS9BQkkgYnJlYWthZ2Ugd2hlbiBuZXcgZmVhdHVyZXMgbXVzdCBiZSBhZGRlZCB0byBhbg0KPiBl eGlzdGluZw0KPiAgIGZpbHRlciB0eXBlLCB3aGljaCBmcmVxdWVudGx5IGhhcHBlbnMuDQo+IA0K PiBGcm9tIGFuIGFwcGxpY2F0aW9uIHBvaW50IG9mIHZpZXc6DQo+IA0KPiAtIEhhdmluZyBkaXNw YXJhdGUgaW50ZXJmYWNlcywgYWxsIG9wdGlvbmFsIGFuZCBsYWNraW5nIGluIGZlYXR1cmVzIGRv ZXMgbm90DQo+ICAgbWFrZSB0aGlzIEFQSSBlYXN5IHRvIHVzZS4NCj4gLSBTZWVtaW5nbHkgYXJi aXRyYXJ5IGJ1aWx0LWluIGxpbWl0YXRpb25zIG9mIGZpbHRlciB0eXBlcyBiYXNlZCBvbiB0aGUN Cj4gICBkZXZpY2UgdGhleSB3ZXJlIGluaXRpYWxseSBkZXNpZ25lZCBmb3IuDQo+IC0gVW5kZWZp bmVkIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGRpZmZlcmVudCBmaWx0ZXIgdHlwZXMuDQo+IC0gSGln aCBjb21wbGV4aXR5LCBjb25zaWRlcmFibGUgdW5kb2N1bWVudGVkIGFuZC9vciB1bmRlZmluZWQg YmVoYXZpb3IuDQo+IA0KPiBDb25zaWRlcmluZyB0aGUgZ3Jvd2luZyBudW1iZXIgb2YgZGV2aWNl cyBzdXBwb3J0ZWQgYnkgRFBESywgYWRkaW5nIGENCj4gbmV3DQo+IGZpbHRlciB0eXBlIGVhY2gg dGltZSBhIG5ldyBmZWF0dXJlIG11c3QgYmUgaW1wbGVtZW50ZWQgaXMgbm90IHN1c3RhaW5hYmxl DQo+IGluIHRoZSBsb25nIHRlcm0uIEFwcGxpY2F0aW9ucyBub3Qgd3JpdHRlbiB0byB0YXJnZXQg YSBzcGVjaWZpYyBkZXZpY2UNCj4gY2Fubm90IHJlYWxseSBiZW5lZml0IGZyb20gc3VjaCBhbiBB UEkuDQo+IA0KPiBGb3IgdGhlc2UgcmVhc29ucywgdGhpcyBkb2N1bWVudCBkZWZpbmVzIGFuIGV4 dGVuc2libGUgdW5pZmllZCBBUEkgdGhhdA0KPiBlbmNvbXBhc3NlcyBhbmQgc3VwZXJzZWRlcyB0 aGVzZSBsZWdhY3kgZmlsdGVyIHR5cGVzLg0KPiANCj4gLi4gcmF3OjogcGRmDQo+IA0KPiAgICBQ YWdlQnJlYWsNCj4gDQo+IEN1cnJlbnQgQVBJDQo+ID09PT09PT09PT09DQo+IA0KPiBSYXRpb25h bGUNCj4gLS0tLS0tLS0tDQo+IA0KPiBUaGUgcmVhc29uIHNldmVyYWwgY29tcGV0aW5nIChhbmQg bW9zdGx5IG92ZXJsYXBwaW5nKSBmaWx0ZXJpbmcgQVBJcyBhcmUNCj4gcHJlc2VudCBpbiBEUERL IGlzIGR1ZSB0byBpdHMgbmF0dXJlIGFzIGEgdGhpbiBsYXllciBiZXR3ZWVuIGhhcmR3YXJlIGFu ZA0KPiBzb2Z0d2FyZS4NCj4gDQo+IEVhY2ggc3Vic2VxdWVudCBpbnRlcmZhY2UgaGFzIGJlZW4g YWRkZWQgdG8gYmV0dGVyIG1hdGNoIHRoZSBjYXBhYmlsaXRpZXMNCj4gYW5kIGxpbWl0YXRpb25z IG9mIHRoZSBsYXRlc3Qgc3VwcG9ydGVkIGRldmljZSwgd2hpY2ggdXN1YWxseSBoYXBwZW5lZCB0 bw0KPiBuZWVkIGFuIGluY29tcGF0aWJsZSBjb25maWd1cmF0aW9uIGFwcHJvYWNoLiBCZWNhdXNl IG9mIHRoaXMsIG1hbnkgZW5kZWQNCj4gdXANCj4gZGV2aWNlLWNlbnRyaWMgYW5kIG5vdCB1c2Fi bGUgYnkgYXBwbGljYXRpb25zIHRoYXQgd2VyZSBub3Qgd3JpdHRlbiBmb3IgdGhhdA0KPiBwYXJ0 aWN1bGFyIGRldmljZS4NCj4gDQo+IFRoaXMgZG9jdW1lbnQgaXMgbm90IHRoZSBmaXJzdCBhdHRl bXB0IHRvIGFkZHJlc3MgdGhpcyBwcm9saWZlcmF0aW9uIGlzc3VlLA0KPiBpbiBmYWN0IGEgbG90 IG9mIHdvcmsgaGFzIGFscmVhZHkgYmVlbiBkb25lIGJvdGggdG8gY3JlYXRlIGEgbW9yZSBnZW5l cmljDQo+IGludGVyZmFjZSB3aGlsZSBzb21ld2hhdCBrZWVwaW5nIGNvbXBhdGliaWxpdHkgd2l0 aCBsZWdhY3kgb25lcyB0aHJvdWdoIGENCj4gY29tbW9uIGNhbGwgaW50ZXJmYWNlIChgYHJ0ZV9l dGhfZGV2X2ZpbHRlcl9jdHJsKClgYCB3aXRoIHRoZQ0KPiBgYC5maWx0ZXJfY3RybGBgIFBNRCBj YWxsYmFjayBpbiBgYHJ0ZV9ldGhkZXYuaGBgKS4NCj4gDQo+IFRvZGF5LCB0aGVzZSBwcmV2aW91 c2x5IGluY29tcGF0aWJsZSBpbnRlcmZhY2VzIGFyZSBrbm93biBhcyBmaWx0ZXIgdHlwZXMNCj4g KGBgUlRFX0VUSF9GSUxURVJfKmBgIGZyb20gYGBlbnVtIHJ0ZV9maWx0ZXJfdHlwZWBgIGluIGBg cnRlX2V0aF9jdHJsLmhgYCkuDQo+IA0KPiBIb3dldmVyIHdoaWxlIHRyaXZpYWwgdG8gZXh0ZW5k IHdpdGggbmV3IHR5cGVzLCBpdCBvbmx5IHNoaWZ0ZWQgdGhlDQo+IHVuZGVybHlpbmcgcHJvYmxl bSBhcyBhcHBsaWNhdGlvbnMgc3RpbGwgbmVlZCB0byBiZSB3cml0dGVuIGZvciBvbmUga2luZCBv Zg0KPiBmaWx0ZXIgdHlwZSwgd2hpY2gsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZm9sbG93aW5nIHNl Y3Rpb25zLCBpcyBub3QNCj4gbmVjZXNzYXJpbHkgaW1wbGVtZW50ZWQgYnkgYWxsIFBNRHMgdGhh dCBzdXBwb3J0IGZpbHRlcmluZy4NCj4gDQo+IC4uIHJhdzo6IHBkZg0KPiANCj4gICAgUGFnZUJy ZWFrDQo+IA0KPiBGaWx0ZXIgdHlwZXMNCj4gLS0tLS0tLS0tLS0tDQo+IA0KPiBUaGlzIHNlY3Rp b24gc3VtbWFyaXplcyB0aGUgY2FwYWJpbGl0aWVzIG9mIGVhY2ggZmlsdGVyIHR5cGUuDQo+IA0K PiBBbHRob3VnaCB0aGUgZm9sbG93aW5nIGxpc3QgaXMgZXhoYXVzdGl2ZSwgdGhlIGRlc2NyaXB0 aW9uIG9mIGluZGl2aWR1YWwNCj4gdHlwZXMgbWF5IGNvbnRhaW4gaW5hY2N1cmFjaWVzIGR1ZSB0 byB0aGUgbGFjayBvZiBkb2N1bWVudGF0aW9uIG9yIHVzYWdlDQo+IGV4YW1wbGVzLg0KPiANCj4g Tm90ZTogbmFtZXMgYXJlIHByZWZpeGVkIHdpdGggYGBSVEVfRVRIX0ZJTFRFUl9gYC4NCj4gDQo+ IGBgTUFDVkxBTmBgDQo+IH5+fn5+fn5+fn5+DQo+IA0KPiBNYXRjaGluZzoNCj4gDQo+IC0gTDIg c291cmNlL2Rlc3RpbmF0aW9uIGFkZHJlc3Nlcy4NCj4gLSBPcHRpb25hbCA4MDIuMVEgVkxBTiBJ RC4NCj4gLSBNYXNraW5nIGluZGl2aWR1YWwgZmllbGRzIG9uIGEgcnVsZSBiYXNpcyBpcyBub3Qg c3VwcG9ydGVkLg0KPiANCj4gQWN0aW9uOg0KPiANCj4gLSBQYWNrZXRzIGFyZSByZWRpcmVjdGVk IGVpdGhlciB0byBhIGdpdmVuIFZGIGRldmljZSB1c2luZyBpdHMgSUQgb3IgdG8gdGhlDQo+ICAg UEYuDQo+IA0KPiBgYEVUSEVSVFlQRWBgDQo+IH5+fn5+fn5+fn5+fn4NCj4gDQo+IE1hdGNoaW5n Og0KPiANCj4gLSBMMiBzb3VyY2UvZGVzdGluYXRpb24gYWRkcmVzc2VzIChvcHRpb25hbCkuDQo+ IC0gRXRoZXJ0eXBlIChubyBWTEFOIElEPykuDQo+IC0gTWFza2luZyBpbmRpdmlkdWFsIGZpZWxk cyBvbiBhIHJ1bGUgYmFzaXMgaXMgbm90IHN1cHBvcnRlZC4NCj4gDQo+IEFjdGlvbjoNCj4gDQo+ IC0gUmVjZWl2ZSBwYWNrZXRzIG9uIGEgZ2l2ZW4gcXVldWUuDQo+IC0gRHJvcCBwYWNrZXRzLg0K PiANCj4gYGBGTEVYSUJMRWBgDQo+IH5+fn5+fn5+fn5+fg0KPiANCj4gTWF0Y2hpbmc6DQo+IA0K PiAtIEF0IG1vc3QgMTI4IGNvbnNlY3V0aXZlIGJ5dGVzIGFueXdoZXJlIGluIHBhY2tldHMuDQo+ IC0gTWFza2luZyBpcyBzdXBwb3J0ZWQgd2l0aCBieXRlIGdyYW51bGFyaXR5Lg0KPiAtIFByaW9y aXRpZXMgYXJlIHN1cHBvcnRlZCAocmVsYXRpdmUgdG8gdGhpcyBmaWx0ZXIgdHlwZSwgdW5kZWZp bmVkDQo+ICAgb3RoZXJ3aXNlKS4NCj4gDQo+IEFjdGlvbjoNCj4gDQo+IC0gUmVjZWl2ZSBwYWNr ZXRzIG9uIGEgZ2l2ZW4gcXVldWUuDQo+IA0KPiBgYFNZTmBgDQo+IH5+fn5+fn4NCj4gDQo+IE1h dGNoaW5nOg0KPiANCj4gLSBUQ1AgU1lOIHBhY2tldHMgb25seS4NCj4gLSBPbmUgaGlnaCBwcmlv cml0eSBiaXQgY2FuIGJlIHNldCB0byBnaXZlIHRoZSBoaWdoZXN0IHBvc3NpYmxlIHByaW9yaXR5 IHRvDQo+ICAgdGhpcyB0eXBlIHdoZW4gb3RoZXIgZmlsdGVycyB3aXRoIGRpZmZlcmVudCB0eXBl cyBhcmUgY29uZmlndXJlZC4NCj4gDQo+IEFjdGlvbjoNCj4gDQo+IC0gUmVjZWl2ZSBwYWNrZXRz IG9uIGEgZ2l2ZW4gcXVldWUuDQo+IA0KPiBgYE5UVVBMRWBgDQo+IH5+fn5+fn5+fn4NCj4gDQo+ IE1hdGNoaW5nOg0KPiANCj4gLSBTb3VyY2UvZGVzdGluYXRpb24gSVB2NCBhZGRyZXNzZXMgKG9w dGlvbmFsIGluIDItdHVwbGUgbW9kZSkuDQo+IC0gU291cmNlL2Rlc3RpbmF0aW9uIFRDUC9VRFAg cG9ydCAobWFuZGF0b3J5IGluIDIgYW5kIDUtdHVwbGUgbW9kZXMpLg0KPiAtIEw0IHByb3RvY29s ICgyIGFuZCA1LXR1cGxlIG1vZGVzKS4NCj4gLSBNYXNraW5nIGluZGl2aWR1YWwgZmllbGRzIGlz IHN1cHBvcnRlZC4NCj4gLSBUQ1AgZmxhZ3MuDQo+IC0gVXAgdG8gNyBsZXZlbHMgb2YgcHJpb3Jp dHkgcmVsYXRpdmUgdG8gdGhpcyBmaWx0ZXIgdHlwZSwgdW5kZWZpbmVkDQo+ICAgb3RoZXJ3aXNl Lg0KPiAtIE5vIElQdjYuDQo+IA0KPiBBY3Rpb246DQo+IA0KPiAtIFJlY2VpdmUgcGFja2V0cyBv biBhIGdpdmVuIHF1ZXVlLg0KPiANCj4gYGBUVU5ORUxgYA0KPiB+fn5+fn5+fn5+DQo+IA0KPiBN YXRjaGluZzoNCj4gDQo+IC0gT3V0ZXIgTDIgc291cmNlL2Rlc3RpbmF0aW9uIGFkZHJlc3Nlcy4N Cj4gLSBJbm5lciBMMiBzb3VyY2UvZGVzdGluYXRpb24gYWRkcmVzc2VzLg0KPiAtIElubmVyIFZM QU4gSUQuDQo+IC0gSVB2NC9JUHY2IHNvdXJjZSAoZGVzdGluYXRpb24/KSBhZGRyZXNzLg0KPiAt IFR1bm5lbCB0eXBlIHRvIG1hdGNoIChWWExBTiwgR0VORVZFLCBURVJFRE8sIE5WR1JFLCBJUCBv dmVyIEdSRSwNCj4gODAyLjFCUg0KPiAgIEUtVGFnKS4NCj4gLSBUZW5hbnQgSUQgZm9yIHR1bm5l bGluZyBwcm90b2NvbHMgdGhhdCBoYXZlIG9uZS4NCj4gLSBBbnkgY29tYmluYXRpb24gb2YgdGhl IGFib3ZlIGNhbiBiZSBzcGVjaWZpZWQuDQo+IC0gTWFza2luZyBpbmRpdmlkdWFsIGZpZWxkcyBv biBhIHJ1bGUgYmFzaXMgaXMgbm90IHN1cHBvcnRlZC4NCj4gDQo+IEFjdGlvbjoNCj4gDQo+IC0g UmVjZWl2ZSBwYWNrZXRzIG9uIGEgZ2l2ZW4gcXVldWUuDQo+IA0KPiAuLiByYXc6OiBwZGYNCj4g DQo+ICAgIFBhZ2VCcmVhaw0KPiANCj4gYGBGRElSYGANCj4gfn5+fn5+fn4NCj4gDQo+IFF1ZXJp ZXM6DQo+IA0KPiAtIERldmljZSBjYXBhYmlsaXRpZXMgYW5kIGxpbWl0YXRpb25zLg0KPiAtIERl dmljZSBzdGF0aXN0aWNzIGFib3V0IGNvbmZpZ3VyZWQgZmlsdGVycyAocmVzb3VyY2UgdXNhZ2Us IGNvbGxpc2lvbnMpLg0KPiAtIERldmljZSBjb25maWd1cmF0aW9uIChtYXRjaGluZyBpbnB1dCBz ZXQgYW5kIG1hc2tzKQ0KPiANCj4gTWF0Y2hpbmc6DQo+IA0KPiAtIERldmljZSBtb2RlIG9mIG9w ZXJhdGlvbjogbm9uZSAodG8gZGlzYWJsZSBmaWx0ZXJpbmcpLCBzaWduYXR1cmUNCj4gICAoaGFz aC1iYXNlZCBkaXNwYXRjaGluZyBmcm9tIG1hc2tlZCBmaWVsZHMpIG9yIHBlcmZlY3QgKGVpdGhl ciBNQUMgVkxBTg0KPiBvcg0KPiAgIHR1bm5lbCkuDQo+IC0gTDIgRXRoZXJ0eXBlLg0KPiAtIE91 dGVyIEwyIGRlc3RpbmF0aW9uIGFkZHJlc3MgKE1BQyBWTEFOIG1vZGUpLg0KPiAtIElubmVyIEwy IGRlc3RpbmF0aW9uIGFkZHJlc3MsIHR1bm5lbCB0eXBlIChOVkdSRSwgVlhMQU4pIGFuZCB0dW5u ZWwgSUQNCj4gICAodHVubmVsIG1vZGUpLg0KPiAtIElQdjQgc291cmNlL2Rlc3RpbmF0aW9uIGFk ZHJlc3NlcywgVG9TLCBUVEwgYW5kIHByb3RvY29sIGZpZWxkcy4NCj4gLSBJUHY2IHNvdXJjZS9k ZXN0aW5hdGlvbiBhZGRyZXNzZXMsIFRDLCBwcm90b2NvbCBhbmQgaG9wIGxpbWl0cyBmaWVsZHMu DQo+IC0gVURQIHNvdXJjZS9kZXN0aW5hdGlvbiBJUHY0L0lQdjYgYW5kIHBvcnRzLg0KPiAtIFRD UCBzb3VyY2UvZGVzdGluYXRpb24gSVB2NC9JUHY2IGFuZCBwb3J0cy4NCj4gLSBTQ1RQIHNvdXJj ZS9kZXN0aW5hdGlvbiBJUHY0L0lQdjYsIHBvcnRzIGFuZCB2ZXJpZmljYXRpb24gdGFnIGZpZWxk Lg0KPiAtIE5vdGUsIG9ubHkgb25lIHByb3RvY29sIHR5cGUgYXQgb25jZSAoZWl0aGVyIG9ubHkg TDIgRXRoZXJ0eXBlLCBiYXNpYw0KPiAgIElQdjYsIElQdjQrVURQLCBJUHY0K1RDUCBhbmQgc28g b24pLg0KPiAtIFZMQU4gVENJIChleHRlbmRlZCBBUEkpLg0KPiAtIEF0IG1vc3QgMTYgYnl0ZXMg dG8gbWF0Y2ggaW4gcGF5bG9hZCAoZXh0ZW5kZWQgQVBJKS4gQSBnbG9iYWwgZGV2aWNlDQo+ICAg bG9vay11cCB0YWJsZSBzcGVjaWZpZXMgZm9yIGVhY2ggcG9zc2libGUgcHJvdG9jb2wgbGF5ZXIg KHVua25vd24sIHJhdywNCj4gICBMMiwgTDMsIEw0KSB0aGUgb2Zmc2V0IHRvIHVzZSBmb3IgZWFj aCBieXRlICh0aGV5IGRvIG5vdCBuZWVkIHRvIGJlDQo+ICAgY29udGlndW91cykgYW5kIHRoZSBy ZWxhdGVkIGJpdC1tYXNrLg0KPiAtIFdoZXRoZXIgcGFja2V0IGlzIGFkZHJlc3NlZCB0byBQRiBv ciBWRiwgaW4gdGhhdCBjYXNlIGl0cyBJRCBjYW4gYmUNCj4gICBtYXRjaGVkIGFzIHdlbGwgKGV4 dGVuZGVkIEFQSSkuDQo+IC0gTWFza2luZyBtb3N0IG9mIHRoZSBhYm92ZSBmaWVsZHMgaXMgc3Vw cG9ydGVkLCBidXQgc2ltdWx0YW5lb3VzbHkgYWZmZWN0cw0KPiAgIGFsbCBmaWx0ZXJzIGNvbmZp Z3VyZWQgb24gYSBkZXZpY2UuDQo+IC0gSW5wdXQgc2V0IGNhbiBiZSBtb2RpZmllZCBpbiBhIHNp bWlsYXIgZmFzaGlvbiBmb3IgYSBnaXZlbiBkZXZpY2UgdG8NCj4gICBpZ25vcmUgaW5kaXZpZHVh bCBmaWVsZHMgb2YgZmlsdGVycyAoaS5lLiBkbyBub3QgbWF0Y2ggdGhlIGRlc3RpbmF0aW9uDQo+ ICAgYWRkcmVzcyBpbiBhIElQdjQgZmlsdGVyLCByZWZlciB0byAqKlJURV9FVEhfSU5QVVRfU0VU XyoqDQo+ICAgbWFjcm9zKS4gQ29uZmlndXJpbmcgdGhpcyBhbHNvIGFmZmVjdHMgUlNTIHByb2Nl c3Npbmcgb24gKippNDBlKiouDQo+IC0gRmlsdGVycyBjYW4gYWxzbyBwcm92aWRlIDMyIGJpdHMg b2YgYXJiaXRyYXJ5IGRhdGEgdG8gcmV0dXJuIGFzIHBhcnQgb2YNCj4gICBtYXRjaGVkIHBhY2tl dHMuDQo+IA0KPiBBY3Rpb246DQo+IA0KPiAtICoqUlRFX0VUSF9GRElSX0FDQ0VQVCoqOiByZWNl aXZlIChhY2NlcHQpIHBhY2tldCBvbiBhIGdpdmVuIHF1ZXVlLg0KPiAtICoqUlRFX0VUSF9GRElS X1JFSkVDVCoqOiBkcm9wIHBhY2tldCBpbW1lZGlhdGVseS4NCj4gLSAqKlJURV9FVEhfRkRJUl9Q QVNTVEhSVSoqOiBzaW1pbGFyIHRvIGFjY2VwdCBmb3IgdGhlIGxhc3QgZmlsdGVyIGluIGxpc3Qs DQo+ICAgb3RoZXJ3aXNlIHByb2Nlc3MgaXQgd2l0aCBzdWJzZXF1ZW50IGZpbHRlcnMuDQo+IC0g Rm9yIGFjY2VwdGVkIHBhY2tldHMgYW5kIGlmIHJlcXVlc3RlZCBieSBmaWx0ZXIsIGVpdGhlciAz MiBiaXRzIG9mDQo+ICAgYXJiaXRyYXJ5IGRhdGEgYW5kIGZvdXIgYnl0ZXMgb2YgbWF0Y2hlZCBw YXlsb2FkIChvbmx5IGluIGNhc2Ugb2YgZmxleA0KPiAgIGJ5dGVzIG1hdGNoaW5nKSwgb3IgZWln aHQgYnl0ZXMgb2YgbWF0Y2hlZCBwYXlsb2FkIChmbGV4IGFsc28pIGFyZSBhZGRlZA0KPiAgIHRv IG1ldGEgZGF0YS4NCj4gDQo+IC4uIHJhdzo6IHBkZg0KPiANCj4gICAgUGFnZUJyZWFrDQo+IA0K PiBgYEhBU0hgYA0KPiB+fn5+fn5+fg0KPiANCj4gTm90IGFuIGFjdHVhbCBmaWx0ZXIgdHlwZS4g UHJvdmlkZXMgYW5kIHJldHJpZXZlcyB0aGUgZ2xvYmFsIGRldmljZQ0KPiBjb25maWd1cmF0aW9u IChwZXIgcG9ydCBvciBlbnRpcmUgTklDKSBmb3IgaGFzaCBmdW5jdGlvbnMgYW5kIHRoZWlyDQo+ IHByb3BlcnRpZXMuDQo+IA0KPiBIYXNoIGZ1bmN0aW9uIHNlbGVjdGlvbjogImRlZmF1bHQiIChr ZWVwIGN1cnJlbnQpLCBYT1Igb3IgVG9lcGxpdHouDQo+IA0KPiBUaGlzIGZ1bmN0aW9uIGNhbiBi ZSBjb25maWd1cmVkIHBlciBmbG93IHR5cGUgKCoqUlRFX0VUSF9GTE9XXyoqDQo+IGRlZmluaXRp b25zKSwgc3VwcG9ydGVkIHR5cGVzIGFyZToNCj4gDQo+IC0gVW5rbm93bi4NCj4gLSBSYXcuDQo+ IC0gRnJhZ21lbnRlZCBvciBub24tZnJhZ21lbnRlZCBJUHY0Lg0KPiAtIE5vbi1mcmFnbWVudGVk IElQdjQgd2l0aCBMNCAoVENQLCBVRFAsIFNDVFAgb3Igb3RoZXIpLg0KPiAtIEZyYWdtZW50ZWQg b3Igbm9uLWZyYWdtZW50ZWQgSVB2Ni4NCj4gLSBOb24tZnJhZ21lbnRlZCBJUHY2IHdpdGggTDQg KFRDUCwgVURQLCBTQ1RQIG9yIG90aGVyKS4NCj4gLSBMMiBwYXlsb2FkLg0KPiAtIElQdjYgd2l0 aCBleHRlbnNpb25zLg0KPiAtIElQdjYgd2l0aCBMNCAoVENQLCBVRFApIGFuZCBleHRlbnNpb25z Lg0KPiANCj4gYGBMMl9UVU5ORUxgYA0KPiB+fn5+fn5+fn5+fn5+DQo+IA0KPiBNYXRjaGluZzoN Cj4gDQo+IC0gQWxsIHBhY2tldHMgcmVjZWl2ZWQgb24gYSBnaXZlbiBwb3J0Lg0KPiANCj4gQWN0 aW9uOg0KPiANCj4gLSBBZGQgdHVubmVsIGVuY2Fwc3VsYXRpb24gKFZYTEFOLCBHRU5FVkUsIFRF UkVETywgTlZHUkUsIElQIG92ZXIgR1JFLA0KPiAgIDgwMi4xQlIgRS1UYWcpIHVzaW5nIHRoZSBw cm92aWRlZCBFdGhlcnR5cGUgYW5kIHR1bm5lbCBJRCAob25seSBFLVRhZw0KPiAgIGlzIGltcGxl bWVudGVkIGF0IHRoZSBtb21lbnQpLg0KPiAtIFZGIElEIHRvIHVzZSBmb3IgdGFnIGluc2VydGlv biAoY3VycmVudGx5IHVudXNlZCkuDQo+IC0gRGVzdGluYXRpb24gcG9vbCBmb3IgdGFnIGJhc2Vk IGZvcndhcmRpbmcgKHBvb2xzIGFyZSBJRHMgdGhhdCBjYW4gYmUNCj4gICBhZmZlY3RlZCB0byBw b3J0cywgZHVwbGljYXRpb24gb2NjdXJzIGlmIHRoZSBzYW1lIElEIGlzIHNoYXJlZCBieSBzZXZl cmFsDQo+ICAgcG9ydHMgb2YgdGhlIHNhbWUgTklDKS4NCj4gDQo+IC4uIHJhdzo6IHBkZg0KPiAN Cj4gICAgUGFnZUJyZWFrDQo+IA0KPiBEcml2ZXIgc3VwcG9ydA0KPiAtLS0tLS0tLS0tLS0tLQ0K PiANCj4gPT09PT09PT0gPT09PT09PSA9PT09PT09PT0gPT09PT09PT0gPT09ID09PT09PSA9PT09 PT0gPT09PSA9PT09DQo+ID09PT09PT09PQ0KPiBEcml2ZXIgICBNQUNWTEFOIEVUSEVSVFlQRSBG TEVYSUJMRSBTWU4gTlRVUExFIFRVTk5FTCBGRElSIEhBU0gNCj4gTDJfVFVOTkVMDQo+ID09PT09 PT09ID09PT09PT0gPT09PT09PT09ID09PT09PT09ID09PSA9PT09PT0gPT09PT09ID09PT0gPT09 PQ0KPiA9PT09PT09PT0NCj4gYm54MngNCj4gY3hnYmUNCj4gZTEwMDAgICAgICAgICAgICB5ZXMg ICAgICAgeWVzICAgICAgeWVzIHllcw0KPiBlbmENCj4gZW5pYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVzDQo+IGZtMTBrDQo+IGk0MGUgICAgIHll cyAgICAgeWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVzICAgIHllcyAgeWVzDQo+IGl4 Z2JlICAgICAgICAgICAgeWVzICAgICAgICAgICAgICAgIHllcyB5ZXMgICAgICAgICAgIHllcyAg ICAgICB5ZXMNCj4gbWx4NA0KPiBtbHg1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB5ZXMNCj4gc3plZGF0YTINCj4gPT09PT09PT0gPT09PT09PSA9PT09 PT09PT0gPT09PT09PT0gPT09ID09PT09PSA9PT09PT0gPT09PSA9PT09DQo+ID09PT09PT09PQ0K PiANCj4gRmxvdyBkaXJlY3Rvcg0KPiAtLS0tLS0tLS0tLS0tDQo+IA0KPiBGbG93IGRpcmVjdG9y IChGRElSKSBpcyB0aGUgbmFtZSBvZiB0aGUgbW9zdCBjYXBhYmxlIGZpbHRlciB0eXBlLCB3aGlj aA0KPiBjb3ZlcnMgbW9zdCBmZWF0dXJlcyBvZmZlcmVkIGJ5IG90aGVycy4gQXMgc3VjaCwgaXQg aXMgdGhlIG1vc3Qgd2lkZXNwcmVhZA0KPiBpbiBQTURzIHRoYXQgc3VwcG9ydCBmaWx0ZXJpbmcg KGkuZS4gYWxsIG9mIHRoZW0gYmVzaWRlcyAqKmUxMDAwKiopLg0KPiANCj4gSXQgaXMgYWxzbyB0 aGUgb25seSB0eXBlIHRoYXQgYWxsb3dzIGFuIGFyYml0cmFyeSAzMiBiaXRzIHZhbHVlIHByb3Zp ZGVkIGJ5DQo+IGFwcGxpY2F0aW9ucyB0byBiZSBhdHRhY2hlZCB0byBhIGZpbHRlciBhbmQgcmV0 dXJuZWQgd2l0aCBtYXRjaGluZyBwYWNrZXRzDQo+IGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUg ZGVzdGluYXRpb24gcXVldWUgdG8gcmVjb2duaXplIGZsb3dzLg0KPiANCj4gVW5mb3J0dW5hdGVs eSwgZXZlbiBGRElSIHJlcXVpcmVzIGFwcGxpY2F0aW9ucyB0byBiZSBhd2FyZSBvZiBsb3ctbGV2 ZWwNCj4gY2FwYWJpbGl0aWVzIGFuZCBsaW1pdGF0aW9ucyAobW9zdCBvZiB3aGljaCBjb21lIGRp cmVjdGx5IGZyb20gKippeGdiZSoqIGFuZA0KPiAqKmk0MGUqKik6DQo+IA0KPiAtIEJpdC1tYXNr cyBhcmUgc2V0IGdsb2JhbGx5IHBlciBkZXZpY2UgKHBvcnQ/KSwgbm90IHBlciBmaWx0ZXIuDQo+ IC0gQ29uZmlndXJhdGlvbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQgdG8gYmUgc2F2ZWQgYnkgdGhl IGRyaXZlciwgYW5kDQo+ICAgc3RvcHBpbmcvcmVzdGFydGluZyBhIHBvcnQgcmVxdWlyZXMgdGhl IGFwcGxpY2F0aW9uIHRvIHBlcmZvcm0gaXQgYWdhaW4NCj4gICAoQVBJIGRvY3VtZW50YXRpb24g aXMgYWxzbyB1bmNsZWFyIGFib3V0IHRoaXMpLg0KPiAtIE1vbm9saXRoaWMgYXBwcm9hY2ggd2l0 aCBBQkkgaXNzdWVzIGFzIHNvb24gYXMgYSBuZXcga2luZCBvZiBmbG93IG9yDQo+ICAgY29tYmlu YXRpb24gbmVlZHMgdG8gYmUgc3VwcG9ydGVkLg0KPiAtIENyeXB0aWMgZ2xvYmFsIHN0YXRpc3Rp Y3MvY291bnRlcnMuDQo+IC0gVW5jbGVhciBhYm91dCBob3cgcHJpb3JpdGllcyBhcmUgbWFuYWdl ZDsgZmlsdGVycyBzZWVtIHRvIGJlIGFycmFuZ2VkIGFzIGENCj4gICBsaW5rZWQgbGlzdCBpbiBo YXJkd2FyZSAocG9zc2libHkgcmVsYXRlZCB0byBjb25maWd1cmF0aW9uIG9yZGVyKS4NCj4gDQo+ IFBhY2tldCBhbHRlcmF0aW9uDQo+IC0tLS0tLS0tLS0tLS0tLS0tDQo+IA0KPiBPbmUgaW50ZXJl c3RpbmcgZmVhdHVyZSBpcyB0aGF0IHRoZSBMMiB0dW5uZWwgZmlsdGVyIHR5cGUgaW1wbGVtZW50 cyB0aGUNCj4gYWJpbGl0eSB0byBhbHRlciBpbmNvbWluZyBwYWNrZXRzIHRocm91Z2ggYSBmaWx0 ZXIgKGluIHRoaXMgY2FzZSB0bw0KPiBlbmNhcHN1bGF0ZSB0aGVtKSwgdGh1cyB0aGUgKiptbHg1 KiogZmxvdyBlbmNhcC9kZWNhcCBmZWF0dXJlcyBhcmUgbm90IGENCj4gZm9yZWlnbiBjb25jZXB0 Lg0KPiANCj4gLi4gcmF3OjogcGRmDQo+IA0KPiAgICBQYWdlQnJlYWsNCj4gDQo+IFByb3Bvc2Vk IEFQSQ0KPiA9PT09PT09PT09PT0NCj4gDQo+IFRlcm1pbm9sb2d5DQo+IC0tLS0tLS0tLS0tDQo+ IA0KPiAtICoqRmxvdyBBUEkqKjogb3ZlcmFsbCBmcmFtZXdvcmsgYWZmZWN0aW5nIHRoZSBmYXRl IG9mIHNlbGVjdGVkIHBhY2tldHMsDQo+ICAgY292ZXJzIGV2ZXJ5dGhpbmcgZGVzY3JpYmVkIGlu IHRoaXMgZG9jdW1lbnQuDQo+IC0gKipGaWx0ZXJpbmcgQVBJKio6IGFuIGFsaWFzIGZvciAqRmxv dyBBUEkqLg0KPiAtICoqTWF0Y2hpbmcgcGF0dGVybioqOiBwcm9wZXJ0aWVzIHRvIGxvb2sgZm9y IGluIHBhY2tldHMsIGEgY29tYmluYXRpb24gb2YNCj4gICBhbnkgbnVtYmVyIG9mIGl0ZW1zLg0K PiAtICoqUGF0dGVybiBpdGVtKio6IHBhcnQgb2YgYSBwYXR0ZXJuIHRoYXQgZWl0aGVyIG1hdGNo ZXMgcGFja2V0IGRhdGENCj4gICAocHJvdG9jb2wgaGVhZGVyLCBwYXlsb2FkIG9yIGRlcml2ZWQg aW5mb3JtYXRpb24pLCBvciBzcGVjaWZpZXMgcHJvcGVydGllcw0KPiAgIG9mIHRoZSBwYXR0ZXJu IGl0c2VsZi4NCj4gLSAqKkFjdGlvbnMqKjogd2hhdCBuZWVkcyB0byBiZSBkb25lIHdoZW4gYSBw YWNrZXQgaXMgbWF0Y2hlZCBieSBhDQo+IHBhdHRlcm4uDQo+IC0gKipGbG93IHJ1bGUqKjogdGhp cyBpcyB0aGUgcmVzdWx0IG9mIGNvbWJpbmluZyBhICptYXRjaGluZyBwYXR0ZXJuKiB3aXRoDQo+ ICAgKmFjdGlvbnMqLg0KPiAtICoqRmlsdGVyIHJ1bGUqKjogYSBsZXNzIGdlbmVyaWMgdGVybSB0 aGFuICpmbG93IHJ1bGUqLCBjYW4gb3RoZXJ3aXNlIGJlDQo+ICAgdXNlZCBpbnRlcmNoYW5nZWFi bHkuDQo+IC0gKipIaXQqKjogYSBmbG93IHJ1bGUgaXMgc2FpZCB0byBiZSAqaGl0KiB3aGVuIHBy b2Nlc3NpbmcgYSBtYXRjaGluZw0KPiAgIHBhY2tldC4NCj4gDQo+IFJlcXVpcmVtZW50cw0KPiAt LS0tLS0tLS0tLS0NCj4gDQo+IEFzIGRlc2NyaWJlZCBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbiwg dGhlcmUgaXMgYSBncm93aW5nIG5lZWQgZm9yIGEgY29tbW9uDQo+IG1ldGhvZCB0byBjb25maWd1 cmUgZmlsdGVyaW5nIGFuZCByZWxhdGVkIGFjdGlvbnMgaW4gYSBoYXJkd2FyZSBpbmRlcGVuZGVu dA0KPiBmYXNoaW9uLg0KPiANCj4gVGhlIGZsb3cgQVBJIHNob3VsZCBub3QgZGlzYWxsb3cgYW55 IGZpbHRlciBjb21iaW5hdGlvbiBieSBkZXNpZ24gYW5kIG11c3QNCj4gcmVtYWluIGFzIHNpbXBs ZSBhcyBwb3NzaWJsZSB0byB1c2UuIEl0IGNhbiBzaW1wbHkgYmUgZGVmaW5lZCBhcyBhIG1ldGhv ZCB0bw0KPiBwZXJmb3JtIG9uZSBvciBzZXZlcmFsIGFjdGlvbnMgb24gc2VsZWN0ZWQgcGFja2V0 cy4NCj4gDQo+IFBNRHMgYXJlIGF3YXJlIG9mIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIGRldmlj ZSB0aGV5IG1hbmFnZSBhbmQgc2hvdWxkIGJlDQo+IHJlc3BvbnNpYmxlIGZvciBwcmV2ZW50aW5n IHVuc3VwcG9ydGVkIG9yIGNvbmZsaWN0aW5nIGNvbWJpbmF0aW9ucy4NCj4gDQo+IFRoaXMgYXBw cm9hY2ggaXMgZnVuZGFtZW50YWxseSBkaWZmZXJlbnQgYXMgaXQgcGxhY2VzIG1vc3Qgb2YgdGhl IGJ1cmRlbiBvbg0KPiB0aGUgc29mdHdhcmUgc2lkZSBvZiB0aGUgUE1EIGluc3RlYWQgb2YgaGF2 aW5nIGRldmljZSBjYXBhYmlsaXRpZXMgZGlyZWN0bHkNCj4gbWFwcGVkIHRvIEFQSSBmdW5jdGlv bnMsIHRoZW4gZXhwZWN0aW5nIGFwcGxpY2F0aW9ucyB0byB3b3JrIGFyb3VuZA0KPiBlbnN1aW5n DQo+IGNvbXBhdGliaWxpdHkgaXNzdWVzLg0KPiANCj4gUmVxdWlyZW1lbnRzIGZvciBhIG5ldyBB UEk6DQo+IA0KPiAtIEZsZXhpYmxlIGFuZCBleHRlbnNpYmxlIHdpdGhvdXQgY2F1c2luZyBBUEkv QUJJIHByb2JsZW1zIGZvciBleGlzdGluZw0KPiAgIGFwcGxpY2F0aW9ucy4NCj4gLSBTaG91bGQg YmUgdW5hbWJpZ3VvdXMgYW5kIGVhc3kgdG8gdXNlLg0KPiAtIFN1cHBvcnQgZXhpc3RpbmcgZmls dGVyaW5nIGZlYXR1cmVzIGFuZCBhY3Rpb25zIGxpc3RlZCBpbiBgRmlsdGVyIHR5cGVzYF8uDQo+ IC0gU3VwcG9ydCBwYWNrZXQgYWx0ZXJhdGlvbi4NCj4gLSBJbiBjYXNlIG9mIG92ZXJsYXBwaW5n IGZpbHRlcnMsIHRoZWlyIHByaW9yaXR5IHNob3VsZCBiZSB3ZWxsIGRvY3VtZW50ZWQuDQo+IC0g U3VwcG9ydCBmaWx0ZXIgcXVlcmllcyAoZm9yIGV4YW1wbGUgdG8gcmV0cmlldmUgY291bnRlcnMp Lg0KPiAtIFN1cHBvcnQgZWdyZXNzIChUWCkgbWF0Y2hpbmcgYW5kIHNwZWNpZmljIGFjdGlvbnMu DQo+IA0KPiAuLiByYXc6OiBwZGYNCj4gDQo+ICAgIFBhZ2VCcmVhaw0KPiANCj4gSGlnaCBsZXZl bCBkZXNpZ24NCj4gLS0tLS0tLS0tLS0tLS0tLS0NCj4gDQo+IFRoZSBjaG9zZW4gYXBwcm9hY2gg dG8gbWFrZSBmaWx0ZXJpbmcgYXMgZ2VuZXJpYyBhcyBwb3NzaWJsZSBpcyBieQ0KPiBleHByZXNz aW5nIG1hdGNoaW5nIHBhdHRlcm5zIHRocm91Z2ggbGlzdHMgb2YgaXRlbXMgaW5zdGVhZCBvZiB0 aGUgZmxhdA0KPiBzdHJ1Y3R1cmVzIHVzZWQgaW4gRFBESyB0b2RheSwgZW5hYmxpbmcgY29tYmlu YXRpb25zIHRoYXQgYXJlIG5vdA0KPiBwcmVkZWZpbmVkDQo+IGFuZCB0aHVzIGJlaW5nIG1vcmUg dmVyc2F0aWxlLg0KPiANCj4gRmxvdyBydWxlcyBjYW4gaGF2ZSBzZXZlcmFsIGRpc3RpbmN0IGFj dGlvbnMgKHN1Y2ggYXMgY291bnRpbmcsDQo+IGVuY2Fwc3VsYXRpbmcsIGRlY2Fwc3VsYXRpbmcg YmVmb3JlIHJlZGlyZWN0aW5nIHBhY2tldHMgdG8gYSBwYXJ0aWN1bGFyDQo+IHF1ZXVlLCBldGMu KSwgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHNldmVyYWwgcnVsZXMgdG8gYWNoaWV2ZSB0aGlzIGFu ZCBoYXZpbmcNCj4gYXBwbGljYXRpb25zIGRlYWwgd2l0aCBoYXJkd2FyZSBpbXBsZW1lbnRhdGlv biBkZXRhaWxzIHJlZ2FyZGluZyB0aGVpcg0KPiBvcmRlci4NCj4gDQo+IFN1cHBvcnQgZm9yIGRp ZmZlcmVudCBwcmlvcml0eSBsZXZlbHMgb24gYSBydWxlIGJhc2lzIGlzIHByb3ZpZGVkLCBmb3IN Cj4gZXhhbXBsZSBpbiBvcmRlciB0byBmb3JjZSBhIG1vcmUgc3BlY2lmaWMgcnVsZSBjb21lIGJl Zm9yZSBhIG1vcmUgZ2VuZXJpYw0KPiBvbmUgZm9yIHBhY2tldHMgbWF0Y2hlZCBieSBib3RoLCBo b3dldmVyIGhhcmR3YXJlIHN1cHBvcnQgZm9yIG1vcmUgdGhhbg0KPiBhDQo+IHNpbmdsZSBwcmlv cml0eSBsZXZlbCBjYW5ub3QgYmUgZ3VhcmFudGVlZC4gV2hlbiBzdXBwb3J0ZWQsIHRoZSBudW1i ZXIgb2YNCj4gYXZhaWxhYmxlIHByaW9yaXR5IGxldmVscyBpcyB1c3VhbGx5IGxvdywgd2hpY2gg aXMgd2h5IHRoZXkgY2FuIGFsc28gYmUNCj4gaW1wbGVtZW50ZWQgaW4gc29mdHdhcmUgYnkgUE1E cyAoZS5nLiBtaXNzaW5nIHByaW9yaXR5IGxldmVscyBtYXkgYmUNCj4gZW11bGF0ZWQgYnkgcmVv cmRlcmluZyBydWxlcykuDQo+IA0KPiBJbiBvcmRlciB0byByZW1haW4gYXMgaGFyZHdhcmUgYWdu b3N0aWMgYXMgcG9zc2libGUsIGJ5IGRlZmF1bHQgYWxsIHJ1bGVzDQo+IGFyZSBjb25zaWRlcmVk IHRvIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHksIHdoaWNoIG1lYW5zIHRoYXQgdGhlIG9yZGVyDQo+ IGJldHdlZW4NCj4gb3ZlcmxhcHBpbmcgcnVsZXMgKHdoZW4gYSBwYWNrZXQgaXMgbWF0Y2hlZCBi eSBzZXZlcmFsIGZpbHRlcnMpIGlzDQo+IHVuZGVmaW5lZCwgcGFja2V0IGR1cGxpY2F0aW9uIG9y IHVucmVjb3ZlcmFibGUgZXJyb3JzIG1heSBldmVuIG9jY3VyIGFzIGENCj4gcmVzdWx0Lg0KPiAN Cj4gUE1EcyBtYXkgcmVmdXNlIHRvIGNyZWF0ZSBvdmVybGFwcGluZyBydWxlcyBhdCBhIGdpdmVu IHByaW9yaXR5IGxldmVsIHdoZW4NCj4gdGhleSBjYW4gYmUgZGV0ZWN0ZWQgKGUuZy4gaWYgYSBw YXR0ZXJuIG1hdGNoZXMgYW4gZXhpc3RpbmcgZmlsdGVyKS4NCj4gDQo+IFRodXMgcHJlZGljdGFi bGUgcmVzdWx0cyBmb3IgYSBnaXZlbiBwcmlvcml0eSBsZXZlbCBjYW4gb25seSBiZSBhY2hpZXZl ZA0KPiB3aXRoIG5vbi1vdmVybGFwcGluZyBydWxlcywgdXNpbmcgcGVyZmVjdCBtYXRjaGluZyBv biBhbGwgcHJvdG9jb2wgbGF5ZXJzLg0KPiANCj4gRmxvdyBydWxlcyBjYW4gYWxzbyBiZSBncm91 cGVkLCB0aGUgZmxvdyBydWxlIHByaW9yaXR5IGlzIHNwZWNpZmljIHRvIHRoZQ0KPiBncm91cCB0 aGV5IGJlbG9uZyB0by4gQWxsIGZsb3cgcnVsZXMgaW4gYSBnaXZlbiBncm91cCBhcmUgdGh1cyBw cm9jZXNzZWQNCj4gZWl0aGVyIGJlZm9yZSBvciBhZnRlciBhbm90aGVyIGdyb3VwLg0KPiANCj4g U3VwcG9ydCBmb3IgbXVsdGlwbGUgYWN0aW9ucyBwZXIgcnVsZSBtYXkgYmUgaW1wbGVtZW50ZWQg aW50ZXJuYWxseSBvbiB0b3ANCj4gb2Ygbm9uLWRlZmF1bHQgaGFyZHdhcmUgcHJpb3JpdGllcywg YXMgYSByZXN1bHQgYm90aCBmZWF0dXJlcyBtYXkgbm90IGJlDQo+IHNpbXVsdGFuZW91c2x5IGF2 YWlsYWJsZSB0byBhcHBsaWNhdGlvbnMuDQo+IA0KPiBDb25zaWRlcmluZyB0aGF0IGFsbG93ZWQg cGF0dGVybi9hY3Rpb25zIGNvbWJpbmF0aW9ucyBjYW5ub3QgYmUga25vd24gaW4NCj4gYWR2YW5j ZSBhbmQgd291bGQgcmVzdWx0IGluIGFuIHVucHJhY3RpY2FsbHkgbGFyZ2UgbnVtYmVyIG9mIGNh cGFiaWxpdGllcyB0bw0KPiBleHBvc2UsIGEgbWV0aG9kIGlzIHByb3ZpZGVkIHRvIHZhbGlkYXRl IGEgZ2l2ZW4gcnVsZSBmcm9tIHRoZSBjdXJyZW50DQo+IGRldmljZSBjb25maWd1cmF0aW9uIHN0 YXRlIHdpdGhvdXQgYWN0dWFsbHkgYWRkaW5nIGl0IChha2luIHRvIGEgImRyeSBydW4iDQo+IG1v ZGUpLg0KPiANCj4gVGhpcyBlbmFibGVzIGFwcGxpY2F0aW9ucyB0byBjaGVjayBpZiB0aGUgcnVs ZSB0eXBlcyB0aGV5IG5lZWQgaXMgc3VwcG9ydGVkDQo+IGF0IGluaXRpYWxpemF0aW9uIHRpbWUs IGJlZm9yZSBzdGFydGluZyB0aGVpciBkYXRhIHBhdGguIFRoaXMgbWV0aG9kIGNhbiBiZQ0KPiB1 c2VkIGFueXRpbWUsIGl0cyBvbmx5IHJlcXVpcmVtZW50IGJlaW5nIHRoYXQgdGhlIHJlc291cmNl cyBuZWVkZWQgYnkgYQ0KPiBydWxlDQo+IG11c3QgZXhpc3QgKGUuZy4gYSB0YXJnZXQgUlggcXVl dWUgbXVzdCBiZSBjb25maWd1cmVkIGZpcnN0KS4NCj4gDQo+IEVhY2ggZGVmaW5lZCBydWxlIGlz IGFzc29jaWF0ZWQgd2l0aCBhbiBvcGFxdWUgaGFuZGxlIG1hbmFnZWQgYnkgdGhlIFBNRCwNCj4g YXBwbGljYXRpb25zIGFyZSByZXNwb25zaWJsZSBmb3Iga2VlcGluZyBpdC4gVGhlc2UgY2FuIGJl IHVzZWQgZm9yIHF1ZXJpZXMNCj4gYW5kIHJ1bGVzIG1hbmFnZW1lbnQsIHN1Y2ggYXMgcmV0cmll dmluZyBjb3VudGVycyBvciBvdGhlciBkYXRhIGFuZA0KPiBkZXN0cm95aW5nIHRoZW0uDQo+IA0K PiBUbyBhdm9pZCByZXNvdXJjZSBsZWFrcyBvbiB0aGUgUE1EIHNpZGUsIGhhbmRsZXMgbXVzdCBi ZSBleHBsaWNpdGx5DQo+IGRlc3Ryb3llZCBieSB0aGUgYXBwbGljYXRpb24gYmVmb3JlIHJlbGVh c2luZyBhc3NvY2lhdGVkIHJlc291cmNlcyBzdWNoIGFzDQo+IHF1ZXVlcyBhbmQgcG9ydHMuDQo+ IA0KPiBJbnRlZ3JhdGlvbg0KPiAtLS0tLS0tLS0tLQ0KPiANCj4gVG8gYXZvaWQgQUJJIGJyZWFr YWdlLCB0aGlzIG5ldyBpbnRlcmZhY2Ugd2lsbCBiZSBpbXBsZW1lbnRlZCB0aHJvdWdoIHRoZQ0K PiBleGlzdGluZyBmaWx0ZXJpbmcgY29udHJvbCBmcmFtZXdvcmsgKGBgcnRlX2V0aF9kZXZfZmls dGVyX2N0cmwoKWBgKSB1c2luZw0KPiAqKlJURV9FVEhfRklMVEVSX0dFTkVSSUMqKiBhcyBhIG5l dyBmaWx0ZXIgdHlwZS4NCj4gDQo+IEhvd2V2ZXIgYSBwdWJsaWMgZnJvbnQtZW5kIEFQSSBkZXNj cmliZWQgaW4gYFJ1bGVzIG1hbmFnZW1lbnRgXyB3aWxsDQo+IGJlIGFkZGVkIGFzIHRoZSBwcmVm ZXJyZWQgbWV0aG9kIHRvIHVzZSBpdC4NCj4gDQo+IE9uY2UgZGlzY3Vzc2lvbnMgd2l0aCB0aGUg Y29tbXVuaXR5IGhhdmUgY29udmVyZ2VkIHRvIGEgZGVmaW5pdGUgQVBJLA0KPiBsZWdhY3kNCj4g ZmlsdGVyIHR5cGVzIHNob3VsZCBiZSBkZXByZWNhdGVkIGFuZCBhIGRlYWRsaW5lIGRlZmluZWQg dG8gcmVtb3ZlIHRoZWlyDQo+IHN1cHBvcnQgZW50aXJlbHkuDQo+IA0KPiBQTURzIHdpbGwgaGF2 ZSB0byBiZSBncmFkdWFsbHkgY29udmVydGVkIHRvICoqUlRFX0VUSF9GSUxURVJfR0VORVJJQyoq DQo+IG9yDQo+IGRyb3AgZmlsdGVyaW5nIHN1cHBvcnQgZW50aXJlbHkuIExlc3MgbWFpbnRhaW5l ZCBQTURzIGZvciBvbGRlciBoYXJkd2FyZQ0KPiBtYXkNCj4gbG9zZSBzdXBwb3J0IGF0IHRoaXMg cG9pbnQuDQo+IA0KPiBUaGUgbm90aW9uIG9mIGZpbHRlciB0eXBlIHdpbGwgdGhlbiBiZSBkZXBy ZWNhdGVkIGFuZCBzdWJzZXF1ZW50bHkgZHJvcHBlZA0KPiB0byBhdm9pZCBjb25mdXNpb24gYmV0 d2VlbiBib3RoIGZyYW1ld29ya3MuDQo+IA0KPiBJbXBsZW1lbnRhdGlvbiBkZXRhaWxzDQo+ID09 PT09PT09PT09PT09PT09PT09PT0NCj4gDQo+IEZsb3cgcnVsZQ0KPiAtLS0tLS0tLS0NCj4gDQo+ IEEgZmxvdyBydWxlIGlzIHRoZSBjb21iaW5hdGlvbiBhIG1hdGNoaW5nIHBhdHRlcm4gd2l0aCBh IGxpc3Qgb2YgYWN0aW9ucywNCj4gYW5kIGlzIHRoZSBiYXNpcyBvZiB0aGlzIEFQSS4NCj4gDQo+ IFRoZXkgYWxzbyBoYXZlIHNldmVyYWwgb3RoZXIgYXR0cmlidXRlcyBkZXNjcmliZWQgaW4gdGhl IGZvbGxvd2luZyBzZWN0aW9ucy4NCj4gDQo+IEdyb3Vwcw0KPiB+fn5+fn4NCj4gDQo+IEZsb3cg cnVsZXMgY2FuIGJlIGdyb3VwZWQgYnkgYXNzaWduaW5nIHRoZW0gYSBjb21tb24gZ3JvdXAgbnVt YmVyLg0KPiBMb3dlcg0KPiB2YWx1ZXMgaGF2ZSBoaWdoZXIgcHJpb3JpdHkuIEdyb3VwIDAgaGFz IHRoZSBoaWdoZXN0IHByaW9yaXR5Lg0KPiANCj4gQWx0aG91Z2ggb3B0aW9uYWwsIGFwcGxpY2F0 aW9ucyBhcmUgZW5jb3VyYWdlZCB0byBncm91cCBzaW1pbGFyIHJ1bGVzIGFzDQo+IG11Y2ggYXMg cG9zc2libGUgdG8gZnVsbHkgdGFrZSBhZHZhbnRhZ2Ugb2YgaGFyZHdhcmUgY2FwYWJpbGl0aWVz DQo+IChlLmcuIG9wdGltaXplZCBtYXRjaGluZykgYW5kIHdvcmsgYXJvdW5kIGxpbWl0YXRpb25z IChlLmcuIGEgc2luZ2xlIHBhdHRlcm4NCj4gdHlwZSBwb3NzaWJseSBhbGxvd2VkIGluIGEgZ2l2 ZW4gZ3JvdXApLg0KPiANCj4gTm90ZSB0aGF0IHN1cHBvcnQgZm9yIG1vcmUgdGhhbiBhIHNpbmds ZSBncm91cCBpcyBub3QgZ3VhcmFudGVlZC4NCj4gDQo+IFByaW9yaXRpZXMNCj4gfn5+fn5+fn5+ fg0KPiANCj4gQSBwcmlvcml0eSBsZXZlbCBjYW4gYmUgYXNzaWduZWQgdG8gYSBmbG93IHJ1bGUu IExpa2UgZ3JvdXBzLCBsb3dlciB2YWx1ZXMNCj4gZGVub3RlIGhpZ2hlciBwcmlvcml0eSwgd2l0 aCAwIGFzIHRoZSBtYXhpbXVtLg0KPiANCj4gQSBydWxlIHdpdGggcHJpb3JpdHkgMCBpbiBncm91 cCA4IGlzIGFsd2F5cyBtYXRjaGVkIGFmdGVyIGEgcnVsZSB3aXRoDQo+IHByaW9yaXR5IDggaW4g Z3JvdXAgMC4NCj4gDQo+IEdyb3VwIGFuZCBwcmlvcml0eSBsZXZlbHMgYXJlIGFyYml0cmFyeSBh bmQgdXAgdG8gdGhlIGFwcGxpY2F0aW9uLCB0aGV5IGRvDQo+IG5vdCBuZWVkIHRvIGJlIGNvbnRp Z3VvdXMgbm9yIHN0YXJ0IGZyb20gMCwgaG93ZXZlciB0aGUgbWF4aW11bSBudW1iZXINCj4gdmFy aWVzIGJldHdlZW4gZGV2aWNlcyBhbmQgbWF5IGJlIGFmZmVjdGVkIGJ5IGV4aXN0aW5nIGZsb3cg cnVsZXMuDQo+IA0KPiBJZiBhIHBhY2tldCBpcyBtYXRjaGVkIGJ5IHNldmVyYWwgcnVsZXMgb2Yg YSBnaXZlbiBncm91cCBmb3IgYSBnaXZlbg0KPiBwcmlvcml0eSBsZXZlbCwgdGhlIG91dGNvbWUg aXMgdW5kZWZpbmVkLiBJdCBjYW4gdGFrZSBhbnkgcGF0aCwgbWF5IGJlDQo+IGR1cGxpY2F0ZWQg b3IgZXZlbiBjYXVzZSB1bnJlY292ZXJhYmxlIGVycm9ycy4NCj4gDQo+IE5vdGUgdGhhdCBzdXBw b3J0IGZvciBtb3JlIHRoYW4gYSBzaW5nbGUgcHJpb3JpdHkgbGV2ZWwgaXMgbm90IGd1YXJhbnRl ZWQuDQo+IA0KPiBUcmFmZmljIGRpcmVjdGlvbg0KPiB+fn5+fn5+fn5+fn5+fn5+fg0KPiANCj4g RmxvdyBydWxlcyBjYW4gYXBwbHkgdG8gaW5ib3VuZCBhbmQvb3Igb3V0Ym91bmQgdHJhZmZpYyAo aW5ncmVzcy9lZ3Jlc3MpLg0KPiANCj4gU2V2ZXJhbCBwYXR0ZXJuIGl0ZW1zIGFuZCBhY3Rpb25z IGFyZSB2YWxpZCBhbmQgY2FuIGJlIHVzZWQgaW4gYm90aA0KPiBkaXJlY3Rpb25zLiBUaG9zZSB2 YWxpZCBmb3Igb25seSBvbmUgZGlyZWN0aW9uIGFyZSBkZXNjcmliZWQgYXMgc3VjaC4NCj4gDQo+ IFNwZWNpZnlpbmcgYm90aCBkaXJlY3Rpb25zIGF0IG9uY2UgaXMgbm90IHJlY29tbWVuZGVkIGJ1 dCBtYXkgYmUgdmFsaWQgaW4NCj4gc29tZSBjYXNlcywgc3VjaCBhcyBpbmNyZW1lbnRpbmcgdGhl IHNhbWUgY291bnRlciB0d2ljZS4NCj4gDQo+IE5vdCBzcGVjaWZ5aW5nIGFueSBkaXJlY3Rpb24g aXMgY3VycmVudGx5IGFuIGVycm9yLg0KPiANCj4gLi4gcmF3OjogcGRmDQo+IA0KPiAgICBQYWdl QnJlYWsNCj4gDQo+IE1hdGNoaW5nIHBhdHRlcm4NCj4gfn5+fn5+fn5+fn5+fn5+fg0KPiANCj4g QSBtYXRjaGluZyBwYXR0ZXJuIGNvbXByaXNlcyBhbnkgbnVtYmVyIG9mIGl0ZW1zIG9mIHZhcmlv dXMgdHlwZXMuDQo+IA0KPiBJdGVtcyBhcmUgYXJyYW5nZWQgaW4gYSBsaXN0IHRvIGZvcm0gYSBt YXRjaGluZyBwYXR0ZXJuIGZvciBwYWNrZXRzLiBUaGV5DQo+IGZhbGwgaW4gdHdvIGNhdGVnb3Jp ZXM6DQo+IA0KPiAtIFByb3RvY29sIG1hdGNoaW5nIChBTlksIFJBVywgRVRILCBJUFY0LCBJUFY2 LCBJQ01QLCBVRFAsIFRDUCwgU0NUUCwNCj4gVlhMQU4NCj4gICBhbmQgc28gb24pLCB1c3VhbGx5 IGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljYXRpb24gc3RydWN0dXJlLiBUaGVzZSBtdXN0DQo+ ICAgYmUgc3RhY2tlZCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgcHJvdG9jb2wgbGF5ZXJzIHRv IG1hdGNoLCBzdGFydGluZw0KPiAgIGZyb20gTDIuDQo+IA0KPiAtIEFmZmVjdGluZyBob3cgdGhl IHBhdHRlcm4gaXMgcHJvY2Vzc2VkIChFTkQsIFZPSUQsIElOVkVSVCwgUEYsIFZGLCBQT1JUDQo+ ICAgYW5kIHNvIG9uKSwgb2Z0ZW4gd2l0aG91dCBhIHNwZWNpZmljYXRpb24gc3RydWN0dXJlLiBT aW5jZSB0aGV5IGFyZSBtZXRhDQo+ICAgZGF0YSB0aGF0IGRvZXMgbm90IG1hdGNoIHBhY2tldCBj b250ZW50cywgdGhlc2UgY2FuIGJlIHNwZWNpZmllZCBhbnl3aGVyZQ0KPiAgIHdpdGhpbiBpdGVt IGxpc3RzIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBwcm90b2NvbCBtYXRjaGluZyBpdGVtcy4NCj4g DQo+IE1vc3QgaXRlbSBzcGVjaWZpY2F0aW9ucyBjYW4gYmUgb3B0aW9uYWxseSBwYWlyZWQgd2l0 aCBhIG1hc2sgdG8gbmFycm93IHRoZQ0KPiBzcGVjaWZpYyBmaWVsZHMgb3IgYml0cyB0byBiZSBt YXRjaGVkLg0KPiANCj4gLSBJdGVtcyBhcmUgZGVmaW5lZCB3aXRoIGBgc3RydWN0IHJ0ZV9mbG93 X2l0ZW1gYC4NCj4gLSBQYXR0ZXJucyBhcmUgZGVmaW5lZCB3aXRoIGBgc3RydWN0IHJ0ZV9mbG93 X3BhdHRlcm5gYC4NCj4gDQo+IEV4YW1wbGUgb2YgYW4gaXRlbSBzcGVjaWZpY2F0aW9uIG1hdGNo aW5nIGFuIEV0aGVybmV0IGhlYWRlcjoNCj4gDQo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBFdGhlcm5ldCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfA0KPiArPT09PT09PT09PSs9PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT0rDQo+ IHwgYGBzcGVjYGAgfCBgYHNyY2BgIHwgYGAwMDowMTowMjowMzowNGBgIHwNCj4gfCAgICAgICAg ICArLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8ICAgICAgICAgIHwgYGBkc3Rg YCB8IGBgMDA6MmE6NjY6MDA6MDFgYCB8DQo+ICstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSsNCj4gfCBgYG1hc2tgYCB8IGBgc3JjYGAgfCBgYDAwOmZmOmZmOmZmOjAw YGAgfA0KPiB8ICAgICAgICAgICstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwg ICAgICAgICAgfCBgYGRzdGBgIHwgYGAwMDowMDowMDowMDpmZmBgIHwNCj4gKy0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiANCj4gTm9uLW1hc2tlZCBiaXRzIHN0 YW5kIGZvciBhbnkgdmFsdWUsIEV0aGVybmV0IGhlYWRlcnMgd2l0aCB0aGUgZm9sbG93aW5nDQo+ IHByb3BlcnRpZXMgYXJlIHRodXMgbWF0Y2hlZDoNCj4gDQo+IC0gYGBzcmNgYDogYGA/PzowMTow MjowMzo/P2BgDQo+IC0gYGBkc3RgYDogYGA/Pzo/Pzo/Pzo/PzowMWBgDQo+IA0KPiBFeGNlcHQg Zm9yIG1ldGEgdHlwZXMgdGhhdCBkbyBub3QgbmVlZCBvbmUsIGBgc3BlY2BgIG11c3QgYmUgYSB2 YWxpZCBwb2ludGVyDQo+IHRvIGEgc3RydWN0dXJlIG9mIHRoZSByZWxhdGVkIGl0ZW0gdHlwZS4g QSBgYG1hc2tgYCBvZiB0aGUgc2FtZSB0eXBlIGNhbiBiZQ0KPiBwcm92aWRlZCB0byB0ZWxsIHdo aWNoIGJpdHMgaW4gYGBzcGVjYGAgYXJlIHRvIGJlIG1hdGNoZWQuDQo+IA0KPiBBIG1hc2sgaXMg bm9ybWFsbHkgb25seSBuZWVkZWQgZm9yIGBgc3BlY2BgIGZpZWxkcyBtYXRjaGluZyBwYWNrZXQg ZGF0YSwNCj4gaWdub3JlZCBvdGhlcndpc2UuIFNlZSBpbmRpdmlkdWFsIGl0ZW0gdHlwZXMgZm9y IG1vcmUgaW5mb3JtYXRpb24uDQo+IA0KPiBBIGBgTlVMTGBgIG1hc2sgcG9pbnRlciBpcyBhbGxv d2VkIGFuZCBpcyBzaW1pbGFyIHRvIG1hdGNoaW5nIHdpdGggYSBmdWxsDQo+IG1hc2sgKGFsbCBv bmVzKSBgYHNwZWNgYCBmaWVsZHMgc3VwcG9ydGVkIGJ5IGhhcmR3YXJlLCB0aGUgcmVtYWluaW5n IGZpZWxkcw0KPiBhcmUgaWdub3JlZCAoYWxsIHplcm9lcyksIHRoZXJlIGlzIHRodXMgbm8gZXJy b3IgY2hlY2tpbmcgZm9yIHVuc3VwcG9ydGVkDQo+IGZpZWxkcy4NCj4gDQo+IC4uIHJhdzo6IHBk Zg0KPiANCj4gICAgUGFnZUJyZWFrDQo+IA0KPiBNYXRjaGluZyBwYXR0ZXJuIGl0ZW1zIGZvciBw YWNrZXQgZGF0YSBtdXN0IGJlIG5hdHVyYWxseSBzdGFja2VkIChvcmRlcmVkDQo+IGZyb20gbG93 ZXN0IHRvIGhpZ2hlc3QgcHJvdG9jb2wgbGF5ZXIpLCBhcyBpbiB0aGUgZm9sbG93aW5nIGV4YW1w bGVzOg0KPiANCj4gKy0tLS0tLS0tLS0tLS0tKw0KPiB8IFRDUHY0IGFzIEw0ICB8DQo+ICs9PT0r PT09PT09PT09PSsNCj4gfCAwIHwgRXRoZXJuZXQgfA0KPiArLS0tKy0tLS0tLS0tLS0rDQo+IHwg MSB8IElQdjQgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0tKw0KPiB8IDIgfCBUQ1AgICAgICB8DQo+ ICstLS0rLS0tLS0tLS0tLSsNCj4gDQo+ICstLS0tLS0tLS0tLS0tLS0tKw0KPiB8IFRDUHY2IGlu IFZYTEFOIHwNCj4gKz09PSs9PT09PT09PT09PT0rDQo+IHwgMCB8IEV0aGVybmV0ICAgfA0KPiAr LS0tKy0tLS0tLS0tLS0tLSsNCj4gfCAxIHwgSVB2NCAgICAgICB8DQo+ICstLS0rLS0tLS0tLS0t LS0tKw0KPiB8IDIgfCBVRFAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0rDQo+IHwgMyB8 IFZYTEFOICAgICAgfA0KPiArLS0tKy0tLS0tLS0tLS0tLSsNCj4gfCA0IHwgRXRoZXJuZXQgICB8 DQo+ICstLS0rLS0tLS0tLS0tLS0tKw0KPiB8IDUgfCBJUHY2ICAgICAgIHwNCj4gKy0tLSstLS0t LS0tLS0tLS0rDQo+IHwgNiB8IFRDUCAgICAgICAgfA0KPiArLS0tKy0tLS0tLS0tLS0tLSsNCj4g DQo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBUQ1B2NCBhcyBMNCB3aXRo IG1ldGEgaXRlbXMgfA0KPiArPT09Kz09PT09PT09PT09PT09PT09PT09PT09PT0rDQo+IHwgMCB8 IFZPSUQgICAgICAgICAgICAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKw0KPiB8IDEgfCBFdGhlcm5ldCAgICAgICAgICAgICAgICB8DQo+ICstLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsNCj4gfCAyIHwgVk9JRCAgICAgICAgICAgICAgICAgICAgfA0KPiAr LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgMyB8IElQdjQgICAgICAgICAgICAg ICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8IDQgfCBUQ1Ag ICAgICAgICAgICAgICAgICAgICB8DQo+ICstLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsN Cj4gfCA1IHwgVk9JRCAgICAgICAgICAgICAgICAgICAgfA0KPiArLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rDQo+IHwgNiB8IFZPSUQgICAgICAgICAgICAgICAgICAgIHwNCj4gKy0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiANCj4gVGhlIGFib3ZlIGV4YW1wbGUgc2hvd3Mg aG93IG1ldGEgaXRlbXMgZG8gbm90IGFmZmVjdCBwYWNrZXQgZGF0YQ0KPiBtYXRjaGluZw0KPiBp dGVtcywgYXMgbG9uZyBhcyB0aG9zZSByZW1haW4gc3RhY2tlZCBwcm9wZXJseS4gVGhlIHJlc3Vs dGluZyBtYXRjaGluZw0KPiBwYXR0ZXJuIGlzIGlkZW50aWNhbCB0byAiVENQdjQgYXMgTDQiLg0K PiANCj4gKy0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgVURQdjYgYW55d2hlcmUgfA0KPiArPT09Kz09 PT09PT09PT09PSsNCj4gfCAwIHwgSVB2NiAgICAgICB8DQo+ICstLS0rLS0tLS0tLS0tLS0tKw0K PiB8IDEgfCBVRFAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0rDQo+IA0KPiBJZiBzdXBw b3J0ZWQgYnkgdGhlIFBNRCwgb21pdHRpbmcgb25lIG9yIHNldmVyYWwgcHJvdG9jb2wgbGF5ZXJz IGF0IHRoZQ0KPiBib3R0b20gb2YgdGhlIHN0YWNrIGFzIGluIHRoZSBhYm92ZSBleGFtcGxlICht aXNzaW5nIGFuIEV0aGVybmV0DQo+IHNwZWNpZmljYXRpb24pIGVuYWJsZXMgaGFyZHdhcmUgdG8g bG9vayBhbnl3aGVyZSBpbiBwYWNrZXRzLg0KPiANCj4gVGhpcyBpcyBhbiBhbGlhcyBmb3Igc3Bl Y2lmeWluZyBgQU5ZYF8gd2l0aCBgYG1pbiA9IDBgYCBhbmQgYGBtYXggPSAwYGANCj4gcHJvcGVy dGllcyBhcyB0aGUgZmlyc3QgaXRlbS4NCj4gDQo+IEl0IGlzIHVuc3BlY2lmaWVkIHdoZXRoZXIg dGhlIHBheWxvYWQgb2Ygc3VwcG9ydGVkIGVuY2Fwc3VsYXRpb25zDQo+IChlLmcuIFZYTEFOIGlu bmVyIHBhY2tldCkgaXMgbWF0Y2hlZCBieSBzdWNoIGEgcGF0dGVybiwgd2hpY2ggbWF5IGFwcGx5 IHRvDQo+IGlubmVyLCBvdXRlciBvciBib3RoIHBhY2tldHMuDQo+IA0KPiArLS0tLS0tLS0tLS0t LS0tLS0tLS0tKw0KPiB8IEludmFsaWQsIG1pc3NpbmcgTDMgfA0KPiArPT09Kz09PT09PT09PT09 PT09PT09Kw0KPiB8IDAgfCBFdGhlcm5ldCAgICAgICAgfA0KPiArLS0tKy0tLS0tLS0tLS0tLS0t LS0tKw0KPiB8IDEgfCBVRFAgICAgICAgICAgICAgfA0KPiArLS0tKy0tLS0tLS0tLS0tLS0tLS0t Kw0KPiANCj4gVGhlIGFib3ZlIHBhdHRlcm4gaXMgaW52YWxpZCBkdWUgdG8gYSBtaXNzaW5nIEwz IHNwZWNpZmljYXRpb24gYmV0d2VlbiBMMg0KPiBhbmQgTDQuIEl0IGlzIG9ubHkgYWxsb3dlZCBh dCB0aGUgYm90dG9tIGFuZCBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay4NCj4gDQo+IE1ldGEgaXRl bSB0eXBlcw0KPiB+fn5+fn5+fn5+fn5+fn4NCj4gDQo+IFRoZXNlIGRvIG5vdCBtYXRjaCBwYWNr ZXQgZGF0YSBidXQgYWZmZWN0IGhvdyB0aGUgcGF0dGVybiBpcyBwcm9jZXNzZWQsDQo+IG1vc3QN Cj4gb2YgdGhlbSBkbyBub3QgbmVlZCBhIHNwZWNpZmljYXRpb24gc3RydWN0dXJlLiBUaGlzIHBh cnRpY3VsYXJpdHkgYWxsb3dzDQo+IHRoZW0gdG8gYmUgc3BlY2lmaWVkIGFueXdoZXJlIHdpdGhv dXQgYWZmZWN0aW5nIG90aGVyIGl0ZW0gdHlwZXMuDQo+IA0KPiBgYEVORGBgDQo+IF5eXl5eXl4N Cj4gDQo+IEVuZCBtYXJrZXIgZm9yIGl0ZW0gbGlzdHMuIFByZXZlbnRzIGZ1cnRoZXIgcHJvY2Vz c2luZyBvZiBpdGVtcywgdGhlcmVieQ0KPiBlbmRpbmcgdGhlIHBhdHRlcm4uDQo+IA0KPiAtIEl0 cyBudW1lcmljIHZhbHVlIGlzICoqMCoqIGZvciBjb252ZW5pZW5jZS4NCj4gLSBQTUQgc3VwcG9y dCBpcyBtYW5kYXRvcnkuDQo+IC0gQm90aCBgYHNwZWNgYCBhbmQgYGBtYXNrYGAgYXJlIGlnbm9y ZWQuDQo+IA0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgRU5EICAgICAgICAgICAgICAg IHwNCj4gKz09PT09PT09PT0rPT09PT09PT09Kw0KPiB8IGBgc3BlY2BgIHwgaWdub3JlZCB8DQo+ ICstLS0tLS0tLS0tKy0tLS0tLS0tLSsNCj4gfCBgYG1hc2tgYCB8IGlnbm9yZWQgfA0KPiArLS0t LS0tLS0tLSstLS0tLS0tLS0rDQo+IA0KPiBgYFZPSURgYA0KPiBeXl5eXl5eXg0KPiANCj4gVXNl ZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBjb252ZW5pZW5jZS4gSXQgaXMgaWdub3JlZCBhbmQgc2lt cGx5IGRpc2NhcmRlZCBieQ0KPiBQTURzLg0KPiANCj4gLSBQTUQgc3VwcG9ydCBpcyBtYW5kYXRv cnkuDQo+IC0gQm90aCBgYHNwZWNgYCBhbmQgYGBtYXNrYGAgYXJlIGlnbm9yZWQuDQo+IA0KPiAr LS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgVk9JRCAgICAgICAgICAgICAgIHwNCj4gKz09PT09 PT09PT0rPT09PT09PT09Kw0KPiB8IGBgc3BlY2BgIHwgaWdub3JlZCB8DQo+ICstLS0tLS0tLS0t Ky0tLS0tLS0tLSsNCj4gfCBgYG1hc2tgYCB8IGlnbm9yZWQgfA0KPiArLS0tLS0tLS0tLSstLS0t LS0tLS0rDQo+IA0KPiBPbmUgdXNhZ2UgZXhhbXBsZSBmb3IgdGhpcyB0eXBlIGlzIGdlbmVyYXRp bmcgcnVsZXMgdGhhdCBzaGFyZSBhIGNvbW1vbg0KPiBwcmVmaXggcXVpY2tseSB3aXRob3V0IHJl YWxsb2NhdGluZyBtZW1vcnksIG9ubHkgYnkgdXBkYXRpbmcgaXRlbSB0eXBlczoNCj4gDQo+ICst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgVENQLCBVRFAgb3IgSUNNUCBhcyBMNCB8DQo+ ICs9PT0rPT09PT09PT09PT09PT09PT09PT0rDQo+IHwgMCB8IEV0aGVybmV0ICAgICAgICAgICB8 DQo+ICstLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgMSB8IElQdjQgICAgICAgICAgICAg ICB8DQo+ICstLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0rDQo+IHwgMiB8IFVEUCAgfCBWT0lEIHwg Vk9JRCB8DQo+ICstLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0rDQo+IHwgMyB8IFZPSUQgfCBUQ1Ag IHwgVk9JRCB8DQo+ICstLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0rDQo+IHwgNCB8IFZPSUQgfCBW T0lEIHwgSUNNUCB8DQo+ICstLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0rDQo+IA0KPiAuLiByYXc6 OiBwZGYNCj4gDQo+ICAgIFBhZ2VCcmVhaw0KPiANCj4gYGBJTlZFUlRgYA0KPiBeXl5eXl5eXl5e DQo+IA0KPiBJbnZlcnRlZCBtYXRjaGluZywgaS5lLiBwcm9jZXNzIHBhY2tldHMgdGhhdCBkbyBu b3QgbWF0Y2ggdGhlIHBhdHRlcm4uDQo+IA0KPiAtIEJvdGggYGBzcGVjYGAgYW5kIGBgbWFza2Bg IGFyZSBpZ25vcmVkLg0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8IElOVkVSVCAg ICAgICAgICAgICB8DQo+ICs9PT09PT09PT09Kz09PT09PT09PSsNCj4gfCBgYHNwZWNgYCB8IGln bm9yZWQgfA0KPiArLS0tLS0tLS0tLSstLS0tLS0tLS0rDQo+IHwgYGBtYXNrYGAgfCBpZ25vcmVk IHwNCj4gKy0tLS0tLS0tLS0rLS0tLS0tLS0tKw0KPiANCj4gVXNhZ2UgZXhhbXBsZSBpbiBvcmRl ciB0byBtYXRjaCBub24tVENQdjQgcGFja2V0cyBvbmx5Og0KPiANCj4gKy0tLS0tLS0tLS0tLS0t LS0tLS0tKw0KPiB8IEFueXRoaW5nIGJ1dCBUQ1B2NCB8DQo+ICs9PT0rPT09PT09PT09PT09PT09 PSsNCj4gfCAwIHwgSU5WRVJUICAgICAgICAgfA0KPiArLS0tKy0tLS0tLS0tLS0tLS0tLS0rDQo+ IHwgMSB8IEV0aGVybmV0ICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0tLS0tKw0KPiB8IDIg fCBJUHY0ICAgICAgICAgICB8DQo+ICstLS0rLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCAzIHwgVENQ ICAgICAgICAgICAgfA0KPiArLS0tKy0tLS0tLS0tLS0tLS0tLS0rDQo+IA0KPiBgYFBGYGANCj4g Xl5eXl5eDQo+IA0KPiBNYXRjaGVzIHBhY2tldHMgYWRkcmVzc2VkIHRvIHRoZSBwaHlzaWNhbCBm dW5jdGlvbiBvZiB0aGUgZGV2aWNlLg0KPiANCj4gSWYgdGhlIHVuZGVybHlpbmcgZGV2aWNlIGZ1 bmN0aW9uIGRpZmZlcnMgZnJvbSB0aGUgb25lIHRoYXQgd291bGQgbm9ybWFsbHkNCj4gcmVjZWl2 ZSB0aGUgbWF0Y2hlZCB0cmFmZmljLCBzcGVjaWZ5aW5nIHRoaXMgaXRlbSBwcmV2ZW50cyBpdCBm cm9tIHJlYWNoaW5nDQo+IHRoYXQgZGV2aWNlIHVubGVzcyB0aGUgZmxvdyBydWxlIGNvbnRhaW5z IGEgYFBGIChhY3Rpb24pYF8uIFBhY2tldHMgYXJlIG5vdA0KPiBkdXBsaWNhdGVkIGJldHdlZW4g ZGV2aWNlIGluc3RhbmNlcyBieSBkZWZhdWx0Lg0KPiANCj4gLSBMaWtlbHkgdG8gcmV0dXJuIGFu IGVycm9yIG9yIG5ldmVyIG1hdGNoIGFueSB0cmFmZmljIGlmIGFwcGxpZWQgdG8gYSBWRg0KPiAg IGRldmljZS4NCj4gLSBDYW4gYmUgY29tYmluZWQgd2l0aCBhbnkgbnVtYmVyIG9mIGBWRmBfIGl0 ZW1zIHRvIG1hdGNoIGJvdGggUEYgYW5kIFZGDQo+ICAgdHJhZmZpYy4NCj4gLSBCb3RoIGBgc3Bl Y2BgIGFuZCBgYG1hc2tgYCBhcmUgaWdub3JlZC4NCj4gDQo+ICstLS0tLS0tLS0tLS0tLS0tLS0t LSsNCj4gfCBQRiAgICAgICAgICAgICAgICAgfA0KPiArPT09PT09PT09PSs9PT09PT09PT0rDQo+ IHwgYGBzcGVjYGAgfCBpZ25vcmVkIHwNCj4gKy0tLS0tLS0tLS0rLS0tLS0tLS0tKw0KPiB8IGBg bWFza2BgIHwgaWdub3JlZCB8DQo+ICstLS0tLS0tLS0tKy0tLS0tLS0tLSsNCj4gDQo+IGBgVkZg YA0KPiBeXl5eXl4NCj4gDQo+IE1hdGNoZXMgcGFja2V0cyBhZGRyZXNzZWQgdG8gYSB2aXJ0dWFs IGZ1bmN0aW9uIElEIG9mIHRoZSBkZXZpY2UuDQo+IA0KPiBJZiB0aGUgdW5kZXJseWluZyBkZXZp Y2UgZnVuY3Rpb24gZGlmZmVycyBmcm9tIHRoZSBvbmUgdGhhdCB3b3VsZCBub3JtYWxseQ0KPiBy ZWNlaXZlIHRoZSBtYXRjaGVkIHRyYWZmaWMsIHNwZWNpZnlpbmcgdGhpcyBpdGVtIHByZXZlbnRz IGl0IGZyb20gcmVhY2hpbmcNCj4gdGhhdCBkZXZpY2UgdW5sZXNzIHRoZSBmbG93IHJ1bGUgY29u dGFpbnMgYSBgVkYgKGFjdGlvbilgXy4gUGFja2V0cyBhcmUgbm90DQo+IGR1cGxpY2F0ZWQgYmV0 d2VlbiBkZXZpY2UgaW5zdGFuY2VzIGJ5IGRlZmF1bHQuDQo+IA0KPiAtIExpa2VseSB0byByZXR1 cm4gYW4gZXJyb3Igb3IgbmV2ZXIgbWF0Y2ggYW55IHRyYWZmaWMgaWYgdGhpcyBjYXVzZXMgYSBW Rg0KPiAgIGRldmljZSB0byBtYXRjaCB0cmFmZmljIGFkZHJlc3NlZCB0byBhIGRpZmZlcmVudCBW Ri4NCj4gLSBDYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzIHRvIG1hdGNoIHRyYWZmaWMg YWRkcmVzc2VkIHRvIHNldmVyYWwgVkZzLg0KPiAtIENhbiBiZSBjb21iaW5lZCB3aXRoIGEgYFBG YF8gaXRlbSB0byBtYXRjaCBib3RoIFBGIGFuZCBWRiB0cmFmZmljLg0KPiAtIE9ubHkgYGBzcGVj YGAgbmVlZHMgdG8gYmUgZGVmaW5lZCwgYGBtYXNrYGAgaXMgaWdub3JlZC4NCj4gDQo+ICstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8IFZGICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gKz09PT09PT09 PT0rPT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT0rDQo+IHwgYGBzcGVjYGAg fCBgYGFueWBgIHwgaWdub3JlIHRoZSBzcGVjaWZpZWQgVkYgSUQgfA0KPiB8ICAgICAgICAgICst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCAgICAgICAgICB8IGBg dmZgYCAgfCBkZXN0aW5hdGlvbiBWRiBJRCAgICAgICAgICB8DQo+ICstLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8IGBgbWFza2BgIHwgaWdub3Jl ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IA0KPiBgYFBPUlRgYA0KPiBeXl5eXl5e Xg0KPiANCj4gTWF0Y2hlcyBwYWNrZXRzIGNvbWluZyBmcm9tIHRoZSBzcGVjaWZpZWQgcGh5c2lj YWwgcG9ydCBvZiB0aGUgdW5kZXJseWluZw0KPiBkZXZpY2UuDQo+IA0KPiBUaGUgZmlyc3QgUE9S VCBpdGVtIG92ZXJyaWRlcyB0aGUgcGh5c2ljYWwgcG9ydCBub3JtYWxseSBhc3NvY2lhdGVkIHdp dGggdGhlDQo+IHNwZWNpZmllZCBEUERLIGlucHV0IHBvcnQgKHBvcnRfaWQpLiBUaGlzIGl0ZW0g Y2FuIGJlIHByb3ZpZGVkIHNldmVyYWwgdGltZXMNCj4gdG8gbWF0Y2ggYWRkaXRpb25hbCBwaHlz aWNhbCBwb3J0cy4NCj4gDQo+IE5vdGUgdGhhdCBwaHlzaWNhbCBwb3J0cyBhcmUgbm90IG5lY2Vz c2FyaWx5IHRpZWQgdG8gRFBESyBpbnB1dCBwb3J0cw0KPiAocG9ydF9pZCkgd2hlbiB0aG9zZSBh cmUgbm90IHVuZGVyIERQREsgY29udHJvbC4gUG9zc2libGUgdmFsdWVzIGFyZQ0KPiBzcGVjaWZp YyB0byBlYWNoIGRldmljZSwgdGhleSBhcmUgbm90IG5lY2Vzc2FyaWx5IGluZGV4ZWQgZnJvbSB6 ZXJvIGFuZCBtYXkNCj4gbm90IGJlIGNvbnRpZ3VvdXMuDQo+IA0KPiBBcyBhIGRldmljZSBwcm9w ZXJ0eSwgdGhlIGxpc3Qgb2YgYWxsb3dlZCB2YWx1ZXMgYXMgd2VsbCBhcyB0aGUgdmFsdWUNCj4g YXNzb2NpYXRlZCB3aXRoIGEgcG9ydF9pZCBzaG91bGQgYmUgcmV0cmlldmVkIGJ5IG90aGVyIG1l YW5zLg0KPiANCj4gLSBPbmx5IGBgc3BlY2BgIG5lZWRzIHRvIGJlIGRlZmluZWQsIGBgbWFza2Bg IGlzIGlnbm9yZWQuDQo+IA0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rDQo+IHwgUE9SVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwNCj4gKz09PT09PT09PT0rPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09Kw0KPiB8 IGBgc3BlY2BgIHwgYGBpbmRleGBgIHwgcGh5c2ljYWwgcG9ydCBpbmRleCB8DQo+ICstLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBgYG1hc2tgYCB8IGln bm9yZWQgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiArLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IA0KPiAuLiByYXc6OiBwZGYNCj4gDQo+ICAgIFBh Z2VCcmVhaw0KPiANCj4gRGF0YSBtYXRjaGluZyBpdGVtIHR5cGVzDQo+IH5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fg0KPiANCj4gTW9zdCBvZiB0aGVzZSBhcmUgYmFzaWNhbGx5IHByb3RvY29sIGhl YWRlciBkZWZpbml0aW9ucyB3aXRoIGFzc29jaWF0ZWQNCj4gYml0LW1hc2tzLiBUaGV5IG11c3Qg YmUgc3BlY2lmaWVkIChzdGFja2VkKSBmcm9tIGxvd2VzdCB0byBoaWdoZXN0IHByb3RvY29sDQo+ IGxheWVyLg0KPiANCj4gVGhlIGZvbGxvd2luZyBsaXN0IGlzIG5vdCBleGhhdXN0aXZlIGFzIG5l dyBwcm90b2NvbHMgd2lsbCBiZSBhZGRlZCBpbiB0aGUNCj4gZnV0dXJlLg0KPiANCj4gYGBBTllg YA0KPiBeXl5eXl5eDQo+IA0KPiBNYXRjaGVzIGFueSBwcm90b2NvbCBpbiBwbGFjZSBvZiB0aGUg Y3VycmVudCBsYXllciwgYSBzaW5nbGUgQU5ZIG1heSBhbHNvDQo+IHN0YW5kIGZvciBzZXZlcmFs IHByb3RvY29sIGxheWVycy4NCj4gDQo+IFRoaXMgaXMgdXN1YWxseSBzcGVjaWZpZWQgYXMgdGhl IGZpcnN0IHBhdHRlcm4gaXRlbSB3aGVuIGxvb2tpbmcgZm9yIGENCj4gcHJvdG9jb2wgYW55d2hl cmUgaW4gYSBwYWNrZXQuDQo+IA0KPiAtIEEgbWF4aW11bSB2YWx1ZSBvZiAqKjAqKiByZXF1ZXN0 cyBtYXRjaGluZyBhbnkgbnVtYmVyIG9mIHByb3RvY29sDQo+IGxheWVycw0KPiAgIGFib3ZlIG9y IGVxdWFsIHRvIHRoZSBtaW5pbXVtIHZhbHVlLCBhIG1heGltdW0gdmFsdWUgbG93ZXIgdGhhbiB0 aGUNCj4gICBtaW5pbXVtIG9uZSBpcyBvdGhlcndpc2UgaW52YWxpZC4NCj4gLSBPbmx5IGBgc3Bl Y2BgIG5lZWRzIHRvIGJlIGRlZmluZWQsIGBgbWFza2BgIGlzIGlnbm9yZWQuDQo+IA0KPiArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rDQo+IHwgQU5ZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gKz09PT09PT09PT0rPT09PT09PT09 Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA9PT09PT09PT09PT09PSsN Cj4gfCBgYHNwZWNgYCB8IGBgbWluYGAgfCBtaW5pbXVtIG51bWJlciBvZiBsYXllcnMgY292ZXJl ZCAgICAgICAgICAgICAgICAgfA0KPiB8ICAgICAgICAgICstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgICAgICAgICAgfCBg YG1heGBgIHwgbWF4aW11bSBudW1iZXIgb2YgbGF5ZXJzIGNvdmVyZWQsIDAgZm9yIGluZmluaXR5 IHwNCj4gKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8IGBgbWFza2BgIHwgaWdub3JlZCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ICstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsNCj4gDQo+IEV4YW1wbGUgZm9yIFZYTEFOIFRDUCBwYXlsb2FkIG1hdGNoaW5nIHJlZ2Fy ZGxlc3Mgb2Ygb3V0ZXIgTDMgKElQdjQgb3IgSVB2NikNCj4gYW5kIEw0IChVRFApIGJvdGggbWF0 Y2hlZCBieSB0aGUgZmlyc3QgQU5ZIHNwZWNpZmljYXRpb24sIGFuZCBpbm5lciBMMyAoSVB2NA0K PiBvciBJUHY2KSBtYXRjaGVkIGJ5IHRoZSBzZWNvbmQgQU5ZIHNwZWNpZmljYXRpb246DQo+IA0K PiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBUQ1AgaW4gVlhMQU4g d2l0aCB3aWxkY2FyZHMgICAgICB8DQo+ICs9PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Kw0KPiB8IDAgfCBFdGhlcm5ldCAgICAgICAgICAgICAgICAgICAgIHwNCj4gKy0tLSstLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0rDQo+IHwgMSB8IEFOWSB8IGBgc3BlY2BgIHwgYGBt aW5gYCB8IDIgfA0KPiB8ICAgfCAgICAgfCAgICAgICAgICArLS0tLS0tLS0tKy0tLSsNCj4gfCAg IHwgICAgIHwgICAgICAgICAgfCBgYG1heGBgIHwgMiB8DQo+ICstLS0rLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tKw0KPiB8IDIgfCBWWExBTiAgICAgICAgICAgICAgICAgICAgICAgIHwN Cj4gKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgMyB8IEV0aGVybmV0 ICAgICAgICAgICAgICAgICAgICAgfA0KPiArLS0tKy0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLSsNCj4gfCA0IHwgQU5ZIHwgYGBzcGVjYGAgfCBgYG1pbmBgIHwgMSB8DQo+IHwgICB8ICAg ICB8ICAgICAgICAgICstLS0tLS0tLS0rLS0tKw0KPiB8ICAgfCAgICAgfCAgICAgICAgICB8IGBg bWF4YGAgfCAxIHwNCj4gKy0tLSstLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0rDQo+IHwg NSB8IFRDUCAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiArLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsNCj4gDQo+IC4uIHJhdzo6IHBkZg0KPiANCj4gICAgUGFnZUJyZWFr DQo+IA0KPiBgYFJBV2BgDQo+IF5eXl5eXl4NCj4gDQo+IE1hdGNoZXMgYSBieXRlIHN0cmluZyBv ZiBhIGdpdmVuIGxlbmd0aCBhdCBhIGdpdmVuIG9mZnNldC4NCj4gDQo+IE9mZnNldCBpcyBlaXRo ZXIgYWJzb2x1dGUgKHVzaW5nIHRoZSBzdGFydCBvZiB0aGUgcGFja2V0KSBvciByZWxhdGl2ZSB0 byB0aGUNCj4gZW5kIG9mIHRoZSBwcmV2aW91cyBtYXRjaGVkIGl0ZW0gaW4gdGhlIHN0YWNrLCBp biB3aGljaCBjYXNlIG5lZ2F0aXZlIHZhbHVlcw0KPiBhcmUgYWxsb3dlZC4NCj4gDQo+IElmIHNl YXJjaCBpcyBlbmFibGVkLCBvZmZzZXQgaXMgdXNlZCBhcyB0aGUgc3RhcnRpbmcgcG9pbnQuIFRo ZSBzZWFyY2ggYXJlYQ0KPiBjYW4gYmUgZGVsaW1pdGVkIGJ5IHNldHRpbmcgbGltaXQgdG8gYSBu b256ZXJvIHZhbHVlLCB3aGljaCBpcyB0aGUgbWF4aW11bQ0KPiBudW1iZXIgb2YgYnl0ZXMgYWZ0 ZXIgb2Zmc2V0IHdoZXJlIHRoZSBwYXR0ZXJuIG1heSBzdGFydC4NCj4gDQo+IE1hdGNoaW5nIGEg emVyby1sZW5ndGggcGF0dGVybiBpcyBhbGxvd2VkLCBkb2luZyBzbyByZXNldHMgdGhlIHJlbGF0 aXZlDQo+IG9mZnNldCBmb3Igc3Vic2VxdWVudCBpdGVtcy4NCj4gDQo+IC0gYGBtYXNrYGAgb25s eSBhZmZlY3RzIHRoZSBwYXR0ZXJuIGZpZWxkLg0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsN Cj4gfCBSQVcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwNCj4gKz09PT09PT09PT0rPT09PT09PT09PT09PT0rPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA9PT09PT09PT09PT09PT09PT0rDQo+IHwg YGBzcGVjYGAgfCBgYHJlbGF0aXZlYGAgfCBsb29rIGZvciBwYXR0ZXJuIGFmdGVyIHRoZSBwcmV2 aW91cyBpdGVtICAgICAgICB8DQo+IHwgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgICAgICAgICAg fCBgYHNlYXJjaGBgICAgfCBzZWFyY2ggcGF0dGVybiBmcm9tIG9mZnNldCAoc2VlIGFsc28gYGBs aW1pdGBgKSB8DQo+IHwgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgICAgICAgICAgfCBgYHJlc2Vy dmVkYGAgfCByZXNlcnZlZCwgbXVzdCBiZSBzZXQgdG8gemVybyAgICAgICAgICAgICAgICAgICB8 DQo+IHwgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgICAgICAgICAgfCBgYG9mZnNldGBgICAgfCBh YnNvbHV0ZSBvciByZWxhdGl2ZSBvZmZzZXQgZm9yIGBgcGF0dGVybmBgICAgICB8DQo+IHwgICAg ICAgICAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rDQo+IHwgICAgICAgICAgfCBgYGxpbWl0YGAgICAgfCBzZWFyY2ggYXJl YSBsaW1pdCBmb3Igc3RhcnQgb2YgYGBwYXR0ZXJuYGAgICAgICB8DQo+IHwgICAgICAgICAgKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rDQo+IHwgICAgICAgICAgfCBgYGxlbmd0aGBgICAgfCBgYHBhdHRlcm5gYCBsZW5ndGgg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+IHwgICAgICAgICAgKy0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+ IHwgICAgICAgICAgfCBgYHBhdHRlcm5gYCAgfCBieXRlIHN0cmluZyB0byBsb29rIGZvciAgICAg ICAgICAgICAgICAgICAgICAgICB8DQo+ICstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgYGBtYXNr YGAgfCBgYHJlbGF0aXZlYGAgfCBpZ25vcmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8DQo+IHwgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgICAgICAgICAgfCBgYHNl YXJjaGBgICAgfCBpZ25vcmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8DQo+IHwgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgICAgICAgICAgfCBgYHJlc2VydmVkYGAg fCBpZ25vcmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+IHwg ICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgICAgICAgICAgfCBgYG9mZnNldGBgICAgfCBpZ25vcmVk ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+IHwgICAgICAgICAg Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rDQo+IHwgICAgICAgICAgfCBgYGxpbWl0YGAgICAgfCBpZ25vcmVkICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+IHwgICAgICAgICAgKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r DQo+IHwgICAgICAgICAgfCBgYGxlbmd0aGBgICAgfCBpZ25vcmVkICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8DQo+IHwgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgICAg ICAgICAgfCBgYHBhdHRlcm5gYCAgfCBiaXQtbWFzayBvZiB0aGUgc2FtZSBieXRlIGxlbmd0aCBh cyBgYHBhdHRlcm5gYCB8DQo+ICstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IA0KPiBFeGFtcGxlIHBh dHRlcm4gbG9va2luZyBmb3Igc2V2ZXJhbCBzdHJpbmdzIGF0IHZhcmlvdXMgb2Zmc2V0cyBvZiBh IFVEUA0KPiBwYXlsb2FkLCB1c2luZyBjb21iaW5lZCBSQVcgaXRlbXM6DQo+IA0KPiAuLiByYXc6 OiBwZGYNCj4gDQo+ICAgIFBhZ2VCcmVhaw0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgVURQIHBheWxvYWQgbWF0Y2hpbmcgICAgICAgICAg ICAgICAgICAgICAgfA0KPiArPT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSsNCj4gfCAwIHwgRXRoZXJuZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ ICstLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8IDEgfCBJ UHY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgMiB8IFVEUCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfA0KPiArLS0tKy0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLSsNCj4gfCAzIHwgUkFXIHwgYGBzcGVjYGAgfCBgYHJlbGF0aXZlYGAgfCAx ICAgICB8DQo+IHwgICB8ICAgICB8ICAgICAgICAgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tKw0K PiB8ICAgfCAgICAgfCAgICAgICAgICB8IGBgc2VhcmNoYGAgICB8IDEgICAgIHwNCj4gfCAgIHwg ICAgIHwgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rDQo+IHwgICB8ICAgICB8ICAg ICAgICAgIHwgYGBvZmZzZXRgYCAgIHwgMTAgICAgfA0KPiB8ICAgfCAgICAgfCAgICAgICAgICAr LS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsNCj4gfCAgIHwgICAgIHwgICAgICAgICAgfCBgYGxpbWl0 YGAgICAgfCAwICAgICB8DQo+IHwgICB8ICAgICB8ICAgICAgICAgICstLS0tLS0tLS0tLS0tLSst LS0tLS0tKw0KPiB8ICAgfCAgICAgfCAgICAgICAgICB8IGBgbGVuZ3RoYGAgICB8IDMgICAgIHwN Cj4gfCAgIHwgICAgIHwgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rDQo+IHwgICB8 ICAgICB8ICAgICAgICAgIHwgYGBwYXR0ZXJuYGAgIHwgImZvbyIgfA0KPiArLS0tKy0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsNCj4gfCA0IHwgUkFXIHwgYGBzcGVjYGAg fCBgYHJlbGF0aXZlYGAgfCAxICAgICB8DQo+IHwgICB8ICAgICB8ICAgICAgICAgICstLS0tLS0t LS0tLS0tLSstLS0tLS0tKw0KPiB8ICAgfCAgICAgfCAgICAgICAgICB8IGBgc2VhcmNoYGAgICB8 IDAgICAgIHwNCj4gfCAgIHwgICAgIHwgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0r DQo+IHwgICB8ICAgICB8ICAgICAgICAgIHwgYGBvZmZzZXRgYCAgIHwgMjAgICAgfA0KPiB8ICAg fCAgICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsNCj4gfCAgIHwgICAgIHwg ICAgICAgICAgfCBgYGxpbWl0YGAgICAgfCAwICAgICB8DQo+IHwgICB8ICAgICB8ICAgICAgICAg ICstLS0tLS0tLS0tLS0tLSstLS0tLS0tKw0KPiB8ICAgfCAgICAgfCAgICAgICAgICB8IGBgbGVu Z3RoYGAgICB8IDMgICAgIHwNCj4gfCAgIHwgICAgIHwgICAgICAgICAgKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0rDQo+IHwgICB8ICAgICB8ICAgICAgICAgIHwgYGBwYXR0ZXJuYGAgIHwgImJhciIg fA0KPiArLS0tKy0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsNCj4gfCA1 IHwgUkFXIHwgYGBzcGVjYGAgfCBgYHJlbGF0aXZlYGAgfCAxICAgICB8DQo+IHwgICB8ICAgICB8 ICAgICAgICAgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tKw0KPiB8ICAgfCAgICAgfCAgICAgICAg ICB8IGBgc2VhcmNoYGAgICB8IDAgICAgIHwNCj4gfCAgIHwgICAgIHwgICAgICAgICAgKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0rDQo+IHwgICB8ICAgICB8ICAgICAgICAgIHwgYGBvZmZzZXRgYCAg IHwgLTI5ICAgfA0KPiB8ICAgfCAgICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLS0rLS0tLS0t LSsNCj4gfCAgIHwgICAgIHwgICAgICAgICAgfCBgYGxpbWl0YGAgICAgfCAwICAgICB8DQo+IHwg ICB8ICAgICB8ICAgICAgICAgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tKw0KPiB8ICAgfCAgICAg fCAgICAgICAgICB8IGBgbGVuZ3RoYGAgICB8IDMgICAgIHwNCj4gfCAgIHwgICAgIHwgICAgICAg ICAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rDQo+IHwgICB8ICAgICB8ICAgICAgICAgIHwgYGBw YXR0ZXJuYGAgIHwgImJheiIgfA0KPiArLS0tKy0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLSsNCj4gDQo+IFRoaXMgdHJhbnNsYXRlcyB0bzoNCj4gDQo+IC0gTG9jYXRlICJm b28iIGF0IGxlYXN0IDEwIGJ5dGVzIGRlZXAgaW5zaWRlIFVEUCBwYXlsb2FkLg0KPiAtIExvY2F0 ZSAiYmFyIiBhZnRlciAiZm9vIiBwbHVzIDIwIGJ5dGVzLg0KPiAtIExvY2F0ZSAiYmF6IiBhZnRl ciAiYmFyIiBtaW51cyAyOSBieXRlcy4NCj4gDQo+IFN1Y2ggYSBwYWNrZXQgbWF5IGJlIHJlcHJl c2VudGVkIGFzIGZvbGxvd3MgKG5vdCB0byBzY2FsZSk6Og0KPiANCj4gIDAgICAgICAgICAgICAg ICAgICAgICA+PSAxMCBCICAgICAgICAgICA9PSAyMCBCDQo+ICB8ICAgICAgICAgICAgICAgICAg fDwtLS0tLS0tLS0+fCAgICAgfDwtLS0tLS0tLS0+fA0KPiAgfCAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgIHwgICAgIHwgICAgICAgICAgIHwNCj4gIHwtLS0tLXwtLS0tLS18LS0tLS18LS0t LS18LS0tLS18LS0tLS18LS0tLS0tLS0tLS18LS0tLS18LS0tLS0tfA0KPiAgfCBFVEggfCBJUHY0 IHwgVURQIHwgLi4uIHwgYmF6IHwgZm9vIHwgLi4uLi4uLi4uIHwgYmFyIHwgLi4uLiB8DQo+ICB8 LS0tLS18LS0tLS0tfC0tLS0tfC0tLS0tfC0tLS0tfC0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tfC0t LS0tLXwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgfDwtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0+fA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09 IDI5IEINCj4gDQo+IE5vdGUgdGhhdCBtYXRjaGluZyBzdWJzZXF1ZW50IHBhdHRlcm4gaXRlbXMg d291bGQgcmVzdW1lIGFmdGVyICJiYXoiLCBub3QNCj4gImJhciIgc2luY2UgbWF0Y2hpbmcgaXMg YWx3YXlzIHBlcmZvcm1lZCBhZnRlciB0aGUgcHJldmlvdXMgaXRlbSBvZiB0aGUNCj4gc3RhY2su DQo+IA0KPiAuLiByYXc6OiBwZGYNCj4gDQo+ICAgIFBhZ2VCcmVhaw0KPiANCj4gYGBFVEhgYA0K PiBeXl5eXl5eDQo+IA0KPiBNYXRjaGVzIGFuIEV0aGVybmV0IGhlYWRlci4NCj4gDQo+IC0gYGBk c3RgYDogZGVzdGluYXRpb24gTUFDLg0KPiAtIGBgc3JjYGA6IHNvdXJjZSBNQUMuDQo+IC0gYGB0 eXBlYGA6IEV0aGVyVHlwZS4NCj4gLSBgYHRhZ3NgYDogbnVtYmVyIG9mIDgwMi4xUS9hZCB0YWdz IGRlZmluZWQuDQo+IC0gYGB0YWdbXWBgOiA4MDIuMVEvYWQgdGFnIGRlZmluaXRpb25zLCBvdXRl cm1vc3QgZmlyc3QuIEZvciBlYWNoIG9uZToNCj4gDQo+ICAtIGBgdHBpZGBgOiBUYWcgcHJvdG9j b2wgaWRlbnRpZmllci4NCj4gIC0gYGB0Y2lgYDogVGFnIGNvbnRyb2wgaW5mb3JtYXRpb24uDQo+ IA0KPiBgYElQVjRgYA0KPiBeXl5eXl5eXg0KPiANCj4gTWF0Y2hlcyBhbiBJUHY0IGhlYWRlci4N Cj4gDQo+IE5vdGU6IElQdjQgb3B0aW9ucyBhcmUgaGFuZGxlZCBieSBkZWRpY2F0ZWQgcGF0dGVy biBpdGVtcy4NCj4gDQo+IC0gYGBoZHJgYDogSVB2NCBoZWFkZXIgZGVmaW5pdGlvbiAoYGBydGVf aXAuaGBgKS4NCj4gDQo+IGBgSVBWNmBgDQo+IF5eXl5eXl5eDQo+IA0KPiBNYXRjaGVzIGFuIElQ djYgaGVhZGVyLg0KPiANCj4gTm90ZTogSVB2NiBvcHRpb25zIGFyZSBoYW5kbGVkIGJ5IGRlZGlj YXRlZCBwYXR0ZXJuIGl0ZW1zLg0KPiANCj4gLSBgYGhkcmBgOiBJUHY2IGhlYWRlciBkZWZpbml0 aW9uIChgYHJ0ZV9pcC5oYGApLg0KPiANCj4gYGBJQ01QYGANCj4gXl5eXl5eXl4NCj4gDQo+IE1h dGNoZXMgYW4gSUNNUCBoZWFkZXIuDQo+IA0KPiAtIGBgaGRyYGA6IElDTVAgaGVhZGVyIGRlZmlu aXRpb24gKGBgcnRlX2ljbXAuaGBgKS4NCj4gDQo+IGBgVURQYGANCj4gXl5eXl5eXg0KPiANCj4g TWF0Y2hlcyBhIFVEUCBoZWFkZXIuDQo+IA0KPiAtIGBgaGRyYGA6IFVEUCBoZWFkZXIgZGVmaW5p dGlvbiAoYGBydGVfdWRwLmhgYCkuDQo+IA0KPiBgYFRDUGBgDQo+IF5eXl5eXl4NCj4gDQo+IE1h dGNoZXMgYSBUQ1AgaGVhZGVyLg0KPiANCj4gLSBgYGhkcmBgOiBUQ1AgaGVhZGVyIGRlZmluaXRp b24gKGBgcnRlX3RjcC5oYGApLg0KPiANCj4gYGBTQ1RQYGANCj4gXl5eXl5eXl4NCj4gDQo+IE1h dGNoZXMgYSBTQ1RQIGhlYWRlci4NCj4gDQo+IC0gYGBoZHJgYDogU0NUUCBoZWFkZXIgZGVmaW5p dGlvbiAoYGBydGVfc2N0cC5oYGApLg0KPiANCj4gYGBWWExBTmBgDQo+IF5eXl5eXl5eXg0KPiAN Cj4gTWF0Y2hlcyBhIFZYTEFOIGhlYWRlciAoUkZDIDczNDgpLg0KPiANCj4gLSBgYGZsYWdzYGA6 IG5vcm1hbGx5IDB4MDggKEkgZmxhZykuDQo+IC0gYGByc3ZkMGBgOiByZXNlcnZlZCwgbm9ybWFs bHkgMHgwMDAwMDAuDQo+IC0gYGB2bmlgYDogVlhMQU4gbmV0d29yayBpZGVudGlmaWVyLg0KPiAt IGBgcnN2ZDFgYDogcmVzZXJ2ZWQsIG5vcm1hbGx5IDB4MDAuDQo+IA0KPiAuLiByYXc6OiBwZGYN Cj4gDQo+ICAgIFBhZ2VCcmVhaw0KPiANCj4gQWN0aW9ucw0KPiB+fn5+fn5+DQo+IA0KPiBFYWNo IHBvc3NpYmxlIGFjdGlvbiBpcyByZXByZXNlbnRlZCBieSBhIHR5cGUuIFNvbWUgaGF2ZSBhc3Nv Y2lhdGVkDQo+IGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlcy4gU2V2ZXJhbCBhY3Rpb25zIGNvbWJp bmVkIGluIGEgbGlzdCBjYW4gYmUgYWZmZWN0ZWQNCj4gdG8gYSBmbG93IHJ1bGUuIFRoYXQgbGlz dCBpcyBub3Qgb3JkZXJlZC4NCj4gDQo+IEF0IGxlYXN0IG9uZSBhY3Rpb24gbXVzdCBiZSBkZWZp bmVkIGluIGEgZmlsdGVyIHJ1bGUgaW4gb3JkZXIgdG8gZG8NCj4gc29tZXRoaW5nIHdpdGggbWF0 Y2hlZCBwYWNrZXRzLg0KPiANCj4gLSBBY3Rpb25zIGFyZSBkZWZpbmVkIHdpdGggYGBzdHJ1Y3Qg cnRlX2Zsb3dfYWN0aW9uYGAuDQo+IC0gQSBsaXN0IG9mIGFjdGlvbnMgaXMgZGVmaW5lZCB3aXRo IGBgc3RydWN0IHJ0ZV9mbG93X2FjdGlvbnNgYC4NCj4gDQo+IFRoZXkgZmFsbCBpbiB0aHJlZSBj YXRlZ29yaWVzOg0KPiANCj4gLSBUZXJtaW5hdGluZyBhY3Rpb25zIChzdWNoIGFzIFFVRVVFLCBE Uk9QLCBSU1MsIFBGLCBWRikgdGhhdCBwcmV2ZW50DQo+ICAgcHJvY2Vzc2luZyBtYXRjaGVkIHBh Y2tldHMgYnkgc3Vic2VxdWVudCBmbG93IHJ1bGVzLCB1bmxlc3Mgb3ZlcnJpZGRlbg0KPiAgIHdp dGggUEFTU1RIUlUuDQo+IA0KPiAtIE5vbiB0ZXJtaW5hdGluZyBhY3Rpb25zIChQQVNTVEhSVSwg RFVQKSB0aGF0IGxlYXZlIG1hdGNoZWQgcGFja2V0cyB1cA0KPiBmb3INCj4gICBhZGRpdGlvbmFs IHByb2Nlc3NpbmcgYnkgc3Vic2VxdWVudCBmbG93IHJ1bGVzLg0KPiANCj4gLSBPdGhlciBub24g dGVybWluYXRpbmcgbWV0YSBhY3Rpb25zIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgZmF0ZSBvZiBw YWNrZXRzDQo+ICAgKEVORCwgVk9JRCwgTUFSSywgRkxBRywgQ09VTlQpLg0KPiANCj4gV2hlbiBz ZXZlcmFsIGFjdGlvbnMgYXJlIGNvbWJpbmVkIGluIGEgZmxvdyBydWxlLCB0aGV5IHNob3VsZCBh bGwgaGF2ZQ0KPiBkaWZmZXJlbnQgdHlwZXMgKGUuZy4gZHJvcHBpbmcgYSBwYWNrZXQgdHdpY2Ug aXMgbm90IHBvc3NpYmxlKS4gVGhlIGRlZmluZWQNCj4gYmVoYXZpb3IgaXMgZm9yIFBNRHMgdG8g b25seSB0YWtlIGludG8gYWNjb3VudCB0aGUgbGFzdCBhY3Rpb24gb2YgYSBnaXZlbg0KPiB0eXBl IGZvdW5kIGluIHRoZSBsaXN0LiBQTURzIHN0aWxsIHBlcmZvcm0gZXJyb3IgY2hlY2tpbmcgb24g dGhlIGVudGlyZQ0KPiBsaXN0Lg0KPiANCj4gKk5vdGUgdGhhdCBQQVNTVEhSVSBpcyB0aGUgb25s eSBhY3Rpb24gaGF2aW5nIHRoZSBhYmlsaXR5IHRvIG92ZXJyaWRlIGENCj4gdGVybWluYXRpbmcg cnVsZS4qDQo+IA0KPiAuLiByYXc6OiBwZGYNCj4gDQo+ICAgIFBhZ2VCcmVhaw0KPiANCj4gRXhh bXBsZSBvZiBhbiBhY3Rpb24gdGhhdCByZWRpcmVjdHMgcGFja2V0cyB0byBxdWV1ZSBpbmRleCAx MDoNCj4gDQo+ICstLS0tLS0tLS0tLS0tLS0tKw0KPiB8IFFVRVVFICAgICAgICAgIHwNCj4gKz09 PT09PT09PT09Kz09PT0rDQo+IHwgYGBxdWV1ZWBgIHwgMTAgfA0KPiArLS0tLS0tLS0tLS0rLS0t LSsNCj4gDQo+IEFjdGlvbiBsaXN0cyBleGFtcGxlcywgdGhlaXIgb3JkZXIgaXMgbm90IHNpZ25p ZmljYW50LCBhcHBsaWNhdGlvbnMgbXVzdA0KPiBjb25zaWRlciBhbGwgYWN0aW9ucyB0byBiZSBw ZXJmb3JtZWQgc2ltdWx0YW5lb3VzbHk6DQo+IA0KPiArLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBD b3VudCBhbmQgZHJvcCB8DQo+ICs9PT09PT09Kz09PT09PT09Kw0KPiB8IENPVU5UIHwgICAgICAg IHwNCj4gKy0tLS0tLS0rLS0tLS0tLS0rDQo+IHwgRFJPUCAgfCAgICAgICAgfA0KPiArLS0tLS0t LSstLS0tLS0tLSsNCj4gDQo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBUYWcs IGNvdW50IGFuZCByZWRpcmVjdCAgfA0KPiArPT09PT09PSs9PT09PT09PT09PSs9PT09PT0rDQo+ IHwgTUFSSyAgfCBgYG1hcmtgYCAgfCAweDJhIHwNCj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tKw0KPiB8IENPVU5UIHwgICAgICAgICAgICAgICAgICB8DQo+ICstLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLSsNCj4gfCBRVUVVRSB8IGBgcXVldWVgYCB8IDEwICAgfA0KPiArLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0rDQo+IA0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwg UmVkaXJlY3QgdG8gcXVldWUgNSAgIHwNCj4gKz09PT09PT0rPT09PT09PT09PT09PT09Kw0KPiB8 IERST1AgIHwgICAgICAgICAgICAgICB8DQo+ICstLS0tLS0tKy0tLS0tLS0tLS0tKy0tLSsNCj4g fCBRVUVVRSB8IGBgcXVldWVgYCB8IDUgfA0KPiArLS0tLS0tLSstLS0tLS0tLS0tLSstLS0rDQo+ IA0KPiBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgY29uc2lkZXJpbmcgYm90aCBhY3Rpb25zIGFyZSBw ZXJmb3JtZWQNCj4gc2ltdWx0YW5lb3VzbHksDQo+IGl0cyBlbmQgcmVzdWx0IGlzIHRoYXQgb25s eSBRVUVVRSBoYXMgYW55IGVmZmVjdC4NCj4gDQo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsN Cj4gfCBSZWRpcmVjdCB0byBxdWV1ZSAzICAgfA0KPiArPT09PT09PSs9PT09PT09PT09PSs9PT0r DQo+IHwgUVVFVUUgfCBgYHF1ZXVlYGAgfCA1IHwNCj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t Kw0KPiB8IFZPSUQgIHwgICAgICAgICAgICAgICB8DQo+ICstLS0tLS0tKy0tLS0tLS0tLS0tKy0t LSsNCj4gfCBRVUVVRSB8IGBgcXVldWVgYCB8IDMgfA0KPiArLS0tLS0tLSstLS0tLS0tLS0tLSst LS0rDQo+IA0KPiBBcyBwcmV2aW91c2x5IGRlc2NyaWJlZCwgb25seSB0aGUgbGFzdCBhY3Rpb24g b2YgYSBnaXZlbiB0eXBlIGZvdW5kIGluIHRoZQ0KPiBsaXN0IGlzIHRha2VuIGludG8gYWNjb3Vu dC4gVGhlIGFib3ZlIGV4YW1wbGUgYWxzbyBzaG93cyB0aGF0IFZPSUQgaXMNCj4gaWdub3JlZC4N Cj4gDQo+IC4uIHJhdzo6IHBkZg0KPiANCj4gICAgUGFnZUJyZWFrDQo+IA0KPiBBY3Rpb24gdHlw ZXMNCj4gfn5+fn5+fn5+fn5+DQo+IA0KPiBDb21tb24gYWN0aW9uIHR5cGVzIGFyZSBkZXNjcmli ZWQgaW4gdGhpcyBzZWN0aW9uLiBMaWtlIHBhdHRlcm4gaXRlbSB0eXBlcywNCj4gdGhpcyBsaXN0 IGlzIG5vdCBleGhhdXN0aXZlIGFzIG5ldyBhY3Rpb25zIHdpbGwgYmUgYWRkZWQgaW4gdGhlIGZ1 dHVyZS4NCj4gDQo+IGBgRU5EYGAgKGFjdGlvbikNCj4gXl5eXl5eXl5eXl5eXl5eXg0KPiANCj4g RW5kIG1hcmtlciBmb3IgYWN0aW9uIGxpc3RzLiBQcmV2ZW50cyBmdXJ0aGVyIHByb2Nlc3Npbmcg b2YgYWN0aW9ucywgdGhlcmVieQ0KPiBlbmRpbmcgdGhlIGxpc3QuDQo+IA0KPiAtIEl0cyBudW1l cmljIHZhbHVlIGlzICoqMCoqIGZvciBjb252ZW5pZW5jZS4NCj4gLSBQTUQgc3VwcG9ydCBpcyBt YW5kYXRvcnkuDQo+IC0gTm8gY29uZmlndXJhYmxlIHByb3BlcnR5Lg0KPiANCj4gKy0tLS0tLS0t LS0tLS0tLSsNCj4gfCBFTkQgICAgICAgICAgIHwNCj4gKz09PT09PT09PT09PT09PSsNCj4gfCBu byBwcm9wZXJ0aWVzIHwNCj4gKy0tLS0tLS0tLS0tLS0tLSsNCj4gDQo+IGBgVk9JRGBgIChhY3Rp b24pDQo+IF5eXl5eXl5eXl5eXl5eXl5eDQo+IA0KPiBVc2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9y IGNvbnZlbmllbmNlLiBJdCBpcyBpZ25vcmVkIGFuZCBzaW1wbHkgZGlzY2FyZGVkIGJ5DQo+IFBN RHMuDQo+IA0KPiAtIFBNRCBzdXBwb3J0IGlzIG1hbmRhdG9yeS4NCj4gLSBObyBjb25maWd1cmFi bGUgcHJvcGVydHkuDQo+IA0KPiArLS0tLS0tLS0tLS0tLS0tKw0KPiB8IFZPSUQgICAgICAgICAg fA0KPiArPT09PT09PT09PT09PT09Kw0KPiB8IG5vIHByb3BlcnRpZXMgfA0KPiArLS0tLS0tLS0t LS0tLS0tKw0KPiANCj4gYGBQQVNTVEhSVWBgDQo+IF5eXl5eXl5eXl5eXg0KPiANCj4gTGVhdmVz IHBhY2tldHMgdXAgZm9yIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBieSBzdWJzZXF1ZW50IGZsb3cg cnVsZXMuIFRoaXMNCj4gaXMgdGhlIGRlZmF1bHQgd2hlbiBhIHJ1bGUgZG9lcyBub3QgY29udGFp biBhIHRlcm1pbmF0aW5nIGFjdGlvbiwgYnV0IGNhbiBiZQ0KPiBzcGVjaWZpZWQgdG8gZm9yY2Ug YSBydWxlIHRvIGJlY29tZSBub24tdGVybWluYXRpbmcuDQo+IA0KPiAtIE5vIGNvbmZpZ3VyYWJs ZSBwcm9wZXJ0eS4NCj4gDQo+ICstLS0tLS0tLS0tLS0tLS0rDQo+IHwgUEFTU1RIUlUgICAgICB8 DQo+ICs9PT09PT09PT09PT09PT0rDQo+IHwgbm8gcHJvcGVydGllcyB8DQo+ICstLS0tLS0tLS0t LS0tLS0rDQo+IA0KPiBFeGFtcGxlIHRvIGNvcHkgYSBwYWNrZXQgdG8gYSBxdWV1ZSBhbmQgY29u dGludWUgcHJvY2Vzc2luZyBieSBzdWJzZXF1ZW50DQo+IGZsb3cgcnVsZXM6DQo+IA0KPiArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgQ29weSB0byBxdWV1ZSA4ICAgICAgICAgIHwN Cj4gKz09PT09PT09PT0rPT09PT09PT09PT09PT09Kw0KPiB8IFBBU1NUSFJVIHwgICAgICAgICAg ICAgICB8DQo+ICstLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLSsNCj4gfCBRVUVVRSAgICB8IGBg cXVldWVgYCB8IDggfA0KPiArLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0rDQo+IA0KPiAuLiBy YXc6OiBwZGYNCj4gDQo+ICAgIFBhZ2VCcmVhaw0KPiANCj4gYGBNQVJLYGANCj4gXl5eXl5eXl4N Cj4gDQo+IEF0dGFjaGVzIGEgMzIgYml0IHZhbHVlIHRvIHBhY2tldHMuDQo+IA0KPiBUaGlzIHZh bHVlIGlzIGFyYml0cmFyeSBhbmQgYXBwbGljYXRpb24tZGVmaW5lZC4gRm9yIGNvbXBhdGliaWxp dHkgd2l0aCBGRElSDQo+IGl0IGlzIHJldHVybmVkIGluIHRoZSBgYGhhc2guZmRpci5oaWBgIG1i dWYgZmllbGQuIGBgUEtUX1JYX0ZESVJfSURgYCBpcw0KPiBhbHNvIHNldCBpbiBgYG9sX2ZsYWdz YGAuDQo+IA0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKw0KPiB8IE1BUksgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fA0KPiArPT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kw0K PiB8IGBgbWFya2BgIHwgMzIgYml0IHZhbHVlIHRvIHJldHVybiB3aXRoIHBhY2tldHMgfA0KPiAr LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiANCj4g YGBGTEFHYGANCj4gXl5eXl5eXl4NCj4gDQo+IEZsYWcgcGFja2V0cy4gU2ltaWxhciB0byBgTUFS S2BfIGJ1dCBvbmx5IGFmZmVjdHMgYGBvbF9mbGFnc2BgLg0KPiANCj4gTm90ZTogYSBkaXN0aW5j dGl2ZSBmbGFnIG11c3QgYmUgZGVmaW5lZCBmb3IgaXQuDQo+IA0KPiArLS0tLS0tLS0tLS0tLS0t Kw0KPiB8IEZMQUcgICAgICAgICAgfA0KPiArPT09PT09PT09PT09PT09Kw0KPiB8IG5vIHByb3Bl cnRpZXMgfA0KPiArLS0tLS0tLS0tLS0tLS0tKw0KPiANCj4gYGBRVUVVRWBgDQo+IF5eXl5eXl5e Xg0KPiANCj4gQXNzaWducyBwYWNrZXRzIHRvIGEgZ2l2ZW4gcXVldWUgaW5kZXguDQo+IA0KPiAt IFRlcm1pbmF0aW5nIGJ5IGRlZmF1bHQuDQo+IA0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rDQo+IHwgUVVFVUUgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gKz09PT09 PT09PT09Kz09PT09PT09PT09PT09PT09PT09Kw0KPiB8IGBgcXVldWVgYCB8IHF1ZXVlIGluZGV4 IHRvIHVzZSB8DQo+ICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gDQo+IGBg RFJPUGBgDQo+IF5eXl5eXl5eDQo+IA0KPiBEcm9wIHBhY2tldHMuDQo+IA0KPiAtIE5vIGNvbmZp Z3VyYWJsZSBwcm9wZXJ0eS4NCj4gLSBUZXJtaW5hdGluZyBieSBkZWZhdWx0Lg0KPiAtIFBBU1NU SFJVIG92ZXJyaWRlcyB0aGlzIGFjdGlvbiBpZiBib3RoIGFyZSBzcGVjaWZpZWQuDQo+IA0KPiAr LS0tLS0tLS0tLS0tLS0tKw0KPiB8IERST1AgICAgICAgICAgfA0KPiArPT09PT09PT09PT09PT09 Kw0KPiB8IG5vIHByb3BlcnRpZXMgfA0KPiArLS0tLS0tLS0tLS0tLS0tKw0KPiANCj4gLi4gcmF3 OjogcGRmDQo+IA0KPiAgICBQYWdlQnJlYWsNCj4gDQo+IGBgQ09VTlRgYA0KPiBeXl5eXl5eXl4N Cj4gDQo+IEVuYWJsZXMgY291bnRlcnMgZm9yIHRoaXMgcnVsZS4NCj4gDQo+IFRoZXNlIGNvdW50 ZXJzIGNhbiBiZSByZXRyaWV2ZWQgYW5kIHJlc2V0IHRocm91Z2ggYGBydGVfZmxvd19xdWVyeSgp YGAsIHNlZQ0KPiBgYHN0cnVjdCBydGVfZmxvd19xdWVyeV9jb3VudGBgLg0KPiANCj4gLSBDb3Vu dGVycyBjYW4gYmUgcmV0cmlldmVkIHdpdGggYGBydGVfZmxvd19xdWVyeSgpYGAuDQo+IC0gTm8g Y29uZmlndXJhYmxlIHByb3BlcnR5Lg0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLSsNCj4gfCBDT1VO VCAgICAgICAgIHwNCj4gKz09PT09PT09PT09PT09PSsNCj4gfCBubyBwcm9wZXJ0aWVzIHwNCj4g Ky0tLS0tLS0tLS0tLS0tLSsNCj4gDQo+IFF1ZXJ5IHN0cnVjdHVyZSB0byByZXRyaWV2ZSBhbmQg cmVzZXQgZmxvdyBydWxlIGNvdW50ZXJzOg0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBDT1VOVCBxdWVyeSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gKz09PT09PT09PT09 PT09PSs9PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiArDQo+IHwg YGByZXNldGBgICAgICB8IGluICB8IHJlc2V0IGNvdW50ZXIgYWZ0ZXIgcXVlcnkgICAgICAgICB8 DQo+ICstLS0tLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rDQo+IHwgYGBoaXRzX3NldGBgICB8IG91dCB8IGBgaGl0c2BgIGZpZWxkIGlzIHNldCAg ICAgICAgICAgICB8DQo+ICstLS0tLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgYGBieXRlc19zZXRgYCB8IG91dCB8IGBgYnl0ZXNgYCBm aWVsZCBpcyBzZXQgICAgICAgICAgICB8DQo+ICstLS0tLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgYGBoaXRzYGAgICAgICB8IG91dCB8 IG51bWJlciBvZiBoaXRzIGZvciB0aGlzIHJ1bGUgICAgICB8DQo+ICstLS0tLS0tLS0tLS0tLS0r LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgYGBieXRlc2Bg ICAgICB8IG91dCB8IG51bWJlciBvZiBieXRlcyB0aHJvdWdoIHRoaXMgcnVsZSB8DQo+ICstLS0t LS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+ IA0KPiBgYERVUGBgDQo+IF5eXl5eXl4NCj4gDQo+IER1cGxpY2F0ZXMgcGFja2V0cyB0byBhIGdp dmVuIHF1ZXVlIGluZGV4Lg0KPiANCj4gVGhpcyBpcyBub3JtYWxseSBjb21iaW5lZCB3aXRoIFFV RVVFLCBob3dldmVyIHdoZW4gdXNlZCBhbG9uZSwgaXQgaXMNCj4gYWN0dWFsbHkgc2ltaWxhciB0 byBRVUVVRSArIFBBU1NUSFJVLg0KPiANCj4gLSBOb24tdGVybWluYXRpbmcgYnkgZGVmYXVsdC4N Cj4gDQo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r DQo+IHwgRFVQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ ICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rDQo+IHwg YGBxdWV1ZWBgIHwgcXVldWUgaW5kZXggdG8gZHVwbGljYXRlIHBhY2tldCB0byB8DQo+ICstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IA0KPiBgYFJT U2BgDQo+IF5eXl5eXl4NCj4gDQo+IFNpbWlsYXIgdG8gUVVFVUUsIGV4Y2VwdCBSU1MgaXMgYWRk aXRpb25hbGx5IHBlcmZvcm1lZCBvbiBwYWNrZXRzIHRvIHNwcmVhZA0KPiB0aGVtIGFtb25nIHNl dmVyYWwgcXVldWVzIGFjY29yZGluZyB0byB0aGUgcHJvdmlkZWQgcGFyYW1ldGVycy4NCj4gDQo+ IE5vdGU6IFJTUyBoYXNoIHJlc3VsdCBpcyBub3JtYWxseSBzdG9yZWQgaW4gdGhlIGBgaGFzaC5y c3NgYCBtYnVmIGZpZWxkLA0KPiBob3dldmVyIGl0IGNvbmZsaWN0cyB3aXRoIHRoZSBgTUFSS2Bf IGFjdGlvbiBhcyB0aGV5IHNoYXJlIHRoZSBzYW1lDQo+IHNwYWNlLiBXaGVuIGJvdGggYWN0aW9u cyBhcmUgc3BlY2lmaWVkLCB0aGUgUlNTIGhhc2ggaXMgZGlzY2FyZGVkIGFuZA0KPiBgYFBLVF9S WF9SU1NfSEFTSGBgIGlzIG5vdCBzZXQgaW4gYGBvbF9mbGFnc2BgLiBNQVJLIGhhcyBwcmlvcml0 eS4gVGhlIG1idWYNCj4gc3RydWN0dXJlIHNob3VsZCBldmVudHVhbGx5IGV2b2x2ZSB0byBzdG9y ZSBib3RoLg0KPiANCj4gLSBUZXJtaW5hdGluZyBieSBkZWZhdWx0Lg0KPiANCj4gKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBSU1MgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gKz09PT09PT09PT09PT09Kz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PSsNCj4gfCBgYHJzc19jb25mYGAgfCBSU1MgcGFyYW1l dGVycyAgICAgICAgICAgICAgIHwNCj4gKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSsNCj4gfCBgYHF1ZXVlc2BgICAgfCBudW1iZXIgb2YgZW50cmllcyBpbiBx dWV1ZVtdIHwNCj4gKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsNCj4gfCBgYHF1ZXVlW11gYCAgfCBxdWV1ZSBpbmRpY2VzIHRvIHVzZSAgICAgICAgIHwNCj4g Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gDQo+IC4u IHJhdzo6IHBkZg0KPiANCj4gICAgUGFnZUJyZWFrDQo+IA0KPiBgYFBGYGAgKGFjdGlvbikNCj4g Xl5eXl5eXl5eXl5eXl5eDQo+IA0KPiBSZWRpcmVjdHMgcGFja2V0cyB0byB0aGUgcGh5c2ljYWwg ZnVuY3Rpb24gKFBGKSBvZiB0aGUgY3VycmVudCBkZXZpY2UuDQo+IA0KPiAtIE5vIGNvbmZpZ3Vy YWJsZSBwcm9wZXJ0eS4NCj4gLSBUZXJtaW5hdGluZyBieSBkZWZhdWx0Lg0KPiANCj4gKy0tLS0t LS0tLS0tLS0tLSsNCj4gfCBQRiAgICAgICAgICAgIHwNCj4gKz09PT09PT09PT09PT09PSsNCj4g fCBubyBwcm9wZXJ0aWVzIHwNCj4gKy0tLS0tLS0tLS0tLS0tLSsNCj4gDQo+IGBgVkZgYCAoYWN0 aW9uKQ0KPiBeXl5eXl5eXl5eXl5eXl4NCj4gDQo+IFJlZGlyZWN0cyBwYWNrZXRzIHRvIGEgdmly dHVhbCBmdW5jdGlvbiAoVkYpIG9mIHRoZSBjdXJyZW50IGRldmljZS4NCj4gDQo+IFBhY2tldHMg bWF0Y2hlZCBieSBhIFZGIHBhdHRlcm4gaXRlbSBjYW4gYmUgcmVkaXJlY3RlZCB0byB0aGVpciBv cmlnaW5hbCBWRg0KPiBJRCBpbnN0ZWFkIG9mIHRoZSBzcGVjaWZpZWQgb25lLiBUaGlzIHBhcmFt ZXRlciBtYXkgbm90IGJlIGF2YWlsYWJsZSBhbmQgaXMNCj4gbm90IGd1YXJhbnRlZWQgdG8gd29y ayBwcm9wZXJseSBpZiB0aGUgVkYgcGFydCBpcyBtYXRjaGVkIGJ5IGEgcHJpb3IgZmxvdw0KPiBy dWxlIG9yIGlmIHBhY2tldHMgYXJlIG5vdCBhZGRyZXNzZWQgdG8gYSBWRiBpbiB0aGUgZmlyc3Qg cGxhY2UuDQo+IA0KPiAtIFRlcm1pbmF0aW5nIGJ5IGRlZmF1bHQuDQo+IA0KPiArLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IHwgVkYgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gKz09PT09PT09PT09PT09Kz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kw0KPiB8IGBgb3JpZ2luYWxgYCB8IHVzZSBv cmlnaW5hbCBWRiBJRCBpZiBwb3NzaWJsZSB8DQo+ICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBgYHZmYGAgICAgICAgfCBWRiBJRCB0byByZWRp cmVjdCBwYWNrZXRzIHRvICAgfA0KPiArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rDQo+IA0KPiBOZWdhdGl2ZSB0eXBlcw0KPiB+fn5+fn5+fn5+fn5+fg0K PiANCj4gQWxsIHNwZWNpZmllZCBwYXR0ZXJuIGl0ZW1zIChgYGVudW0gcnRlX2Zsb3dfaXRlbV90 eXBlYGApIGFuZCBhY3Rpb25zDQo+IChgYGVudW0gcnRlX2Zsb3dfYWN0aW9uX3R5cGVgYCkgdXNl IHBvc2l0aXZlIGlkZW50aWZpZXJzLg0KPiANCj4gVGhlIG5lZ2F0aXZlIHNwYWNlIGlzIHJlc2Vy dmVkIGZvciBkeW5hbWljIHR5cGVzIGdlbmVyYXRlZCBieSBQTURzIGR1cmluZw0KPiBydW4tdGlt ZSwgUE1EcyBtYXkgZW5jb3VudGVyIHRoZW0gYXMgYSByZXN1bHQgYnV0IGRvIG5vdCBoYXZlIHRv IGFjY2VwdA0KPiB0aGUNCj4gbmVnYXRpdmUgdHlwZXMgdGhleSBkaWQgbm90IGdlbmVyYXRlLg0K PiANCj4gVGhlIG1ldGhvZCB0byBnZW5lcmF0ZSB0aGVtIGhhcyBub3QgYmVlbiBzcGVjaWZpZWQg eWV0Lg0KPiANCj4gUGxhbm5lZCB0eXBlcw0KPiB+fn5+fn5+fn5+fn5+DQo+IA0KPiBQYXR0ZXJu IGl0ZW0gdHlwZXMgd2lsbCBiZSBhZGRlZCBhcyBuZXcgcHJvdG9jb2xzIGFyZSBpbXBsZW1lbnRl ZC4NCj4gDQo+IFZhcmlhYmxlIGhlYWRlcnMgc3VwcG9ydCB0aHJvdWdoIGRlZGljYXRlZCBwYXR0 ZXJuIGl0ZW1zLCBmb3IgZXhhbXBsZSBpbg0KPiBvcmRlciB0byBtYXRjaCBzcGVjaWZpYyBJUHY0 IG9wdGlvbnMgYW5kIElQdjYgZXh0ZW5zaW9uIGhlYWRlcnMsIHRoZXNlDQo+IHdvdWxkDQo+IGJl IHN0YWNrZWQgYmVoaW5kIElQdjQvSVB2NiBpdGVtcy4NCj4gDQo+IE90aGVyIGFjdGlvbiB0eXBl cyBhcmUgcGxhbm5lZCBidXQgbm90IGRlZmluZWQgeWV0LiBUaGVzZSBhY3Rpb25zIHdpbGwgYWRk DQo+IHRoZSBhYmlsaXR5IHRvIGFsdGVyIG1hdGNoZWQgcGFja2V0cyBpbiBzZXZlcmFsIHdheXMs IHN1Y2ggYXMgcGVyZm9ybWluZw0KPiBlbmNhcHN1bGF0aW9uL2RlY2Fwc3VsYXRpb24gb2YgdHVu bmVsIGhlYWRlcnMgb24gc3BlY2lmaWMgZmxvd3MuDQo+IA0KPiAuLiByYXc6OiBwZGYNCj4gDQo+ ICAgIFBhZ2VCcmVhaw0KPiANCj4gUnVsZXMgbWFuYWdlbWVudA0KPiAtLS0tLS0tLS0tLS0tLS0t DQo+IA0KPiBBIHNpbXBsZSBBUEkgd2l0aCBmZXcgZnVuY3Rpb25zIGlzIHByb3ZpZGVkIHRvIGZ1 bGx5IG1hbmFnZSBmbG93cy4NCj4gDQo+IEVhY2ggY3JlYXRlZCBmbG93IHJ1bGUgaXMgYXNzb2Np YXRlZCB3aXRoIGFuIG9wYXF1ZSwgUE1ELXNwZWNpZmljIGhhbmRsZQ0KPiBwb2ludGVyLiBUaGUg YXBwbGljYXRpb24gaXMgcmVzcG9uc2libGUgZm9yIGtlZXBpbmcgaXQgdW50aWwgdGhlIHJ1bGUg aXMNCj4gZGVzdHJveWVkLg0KPiANCj4gRmxvd3MgcnVsZXMgYXJlIHJlcHJlc2VudGVkIGJ5IGBg c3RydWN0IHJ0ZV9mbG93YGAgb2JqZWN0cy4NCj4gDQo+IFZhbGlkYXRpb24NCj4gfn5+fn5+fn5+ fg0KPiANCj4gR2l2ZW4gdGhhdCBleHByZXNzaW5nIGEgZGVmaW5pdGUgc2V0IG9mIGRldmljZSBj YXBhYmlsaXRpZXMgd2l0aCB0aGlzIEFQSSBpcw0KPiBub3QgcHJhY3RpY2FsLCBhIGRlZGljYXRl ZCBmdW5jdGlvbiBpcyBwcm92aWRlZCB0byBjaGVjayBpZiBhIGZsb3cgcnVsZSBpcw0KPiBzdXBw b3J0ZWQgYW5kIGNhbiBiZSBjcmVhdGVkLg0KPiANCj4gOjoNCj4gDQo+ICBpbnQNCj4gIHJ0ZV9m bG93X3ZhbGlkYXRlKHVpbnQ4X3QgcG9ydF9pZCwNCj4gICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCBydGVfZmxvd19hdHRyICphdHRyLA0KPiAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IHJ0ZV9mbG93X3BhdHRlcm4gKnBhdHRlcm4sDQo+ICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9ucyAqYWN0aW9ucywNCj4gICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJyb3IpOw0KPiANCj4gV2hpbGUgdGhpcyBmdW5j dGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSB0YXJnZXQgZGV2aWNlLCB0aGUgZmxvdyBydWxlIGlz DQo+IHZhbGlkYXRlZCBhZ2FpbnN0IGl0cyBjdXJyZW50IGNvbmZpZ3VyYXRpb24gc3RhdGUgYW5k IHRoZSByZXR1cm5lZCB2YWx1ZQ0KPiBzaG91bGQgYmUgY29uc2lkZXJlZCB2YWxpZCBieSB0aGUg Y2FsbGVyIGZvciB0aGF0IHN0YXRlIG9ubHkuDQo+IA0KPiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMg Z3VhcmFudGVlZCB0byByZW1haW4gdmFsaWQgb25seSBhcyBsb25nIGFzIG5vDQo+IHN1Y2Nlc3Nm dWwgY2FsbHMgdG8gcnRlX2Zsb3dfY3JlYXRlKCkgb3IgcnRlX2Zsb3dfZGVzdHJveSgpIGFyZSBt YWRlIGluIHRoZQ0KPiBtZWFudGltZSBhbmQgbm8gZGV2aWNlIHBhcmFtZXRlciBhZmZlY3Rpbmcg ZmxvdyBydWxlcyBpbiBhbnkgd2F5IGFyZQ0KPiBtb2RpZmllZCwgZHVlIHRvIHBvc3NpYmxlIGNv bGxpc2lvbnMgb3IgcmVzb3VyY2UgbGltaXRhdGlvbnMgKGFsdGhvdWdoIGluDQo+IHN1Y2ggY2Fz ZXMgYGBFSU5WQUxgYCBzaG91bGQgbm90IGJlIHJldHVybmVkKS4NCj4gDQo+IEFyZ3VtZW50czoN Cj4gDQo+IC0gYGBwb3J0X2lkYGA6IHBvcnQgaWRlbnRpZmllciBvZiBFdGhlcm5ldCBkZXZpY2Uu DQo+IC0gYGBhdHRyYGA6IGZsb3cgcnVsZSBhdHRyaWJ1dGVzLg0KPiAtIGBgcGF0dGVybmBgOiBw YXR0ZXJuIHNwZWNpZmljYXRpb24uDQo+IC0gYGBhY3Rpb25zYGA6IGFjdGlvbnMgYXNzb2NpYXRl ZCB3aXRoIHRoZSBmbG93IGRlZmluaXRpb24uDQo+IC0gYGBlcnJvcmBgOiBwZXJmb3JtIHZlcmJv c2UgZXJyb3IgcmVwb3J0aW5nIGlmIG5vdCBOVUxMLg0KPiANCj4gUmV0dXJuIHZhbHVlOg0KPiAN Cj4gLSAqKjAqKiBpZiBmbG93IHJ1bGUgaXMgdmFsaWQgYW5kIGNhbiBiZSBjcmVhdGVkLiBBIG5l Z2F0aXZlIGVycm5vIHZhbHVlDQo+ICAgb3RoZXJ3aXNlIChgYHJ0ZV9lcnJub2BgIGlzIGFsc28g c2V0KSwgdGhlIGZvbGxvd2luZyBlcnJvcnMgYXJlIGRlZmluZWQuDQo+IC0gYGAtRU5PU1lTYGA6 IHVuZGVybHlpbmcgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBmdW5jdGlvbmFsaXR5Lg0K PiAtIGBgLUVJTlZBTGBgOiB1bmtub3duIG9yIGludmFsaWQgcnVsZSBzcGVjaWZpY2F0aW9uLg0K PiAtIGBgLUVOT1RTVVBgYDogdmFsaWQgYnV0IHVuc3VwcG9ydGVkIHJ1bGUgc3BlY2lmaWNhdGlv biAoZS5nLiBwYXJ0aWFsDQo+ICAgYml0LW1hc2tzIGFyZSB1bnN1cHBvcnRlZCkuDQo+IC0gYGAt RUVYSVNUYGA6IGNvbGxpc2lvbiB3aXRoIGFuIGV4aXN0aW5nIHJ1bGUuDQo+IC0gYGAtRU5PTUVN YGA6IG5vdCBlbm91Z2ggcmVzb3VyY2VzLg0KPiAtIGBgLUVCVVNZYGA6IGFjdGlvbiBjYW5ub3Qg YmUgcGVyZm9ybWVkIGR1ZSB0byBidXN5IGRldmljZSByZXNvdXJjZXMsIG1heQ0KPiAgIHN1Y2Nl ZWQgaWYgdGhlIGFmZmVjdGVkIHF1ZXVlcyBvciBldmVuIHRoZSBlbnRpcmUgcG9ydCBhcmUgaW4g YSBzdG9wcGVkDQo+ICAgc3RhdGUgKHNlZSBgYHJ0ZV9ldGhfZGV2X3J4X3F1ZXVlX3N0b3AoKWBg IGFuZCBgYHJ0ZV9ldGhfZGV2X3N0b3AoKWBgKS4NCj4gDQo+IC4uIHJhdzo6IHBkZg0KPiANCj4g ICAgUGFnZUJyZWFrDQo+IA0KPiBDcmVhdGlvbg0KPiB+fn5+fn5+fg0KPiANCj4gQ3JlYXRpbmcg YSBmbG93IHJ1bGUgaXMgc2ltaWxhciB0byB2YWxpZGF0aW5nIG9uZSwgZXhjZXB0IHRoZSBydWxl IGlzDQo+IGFjdHVhbGx5IGNyZWF0ZWQgYW5kIGEgaGFuZGxlIHJldHVybmVkLg0KPiANCj4gOjoN Cj4gDQo+ICBzdHJ1Y3QgcnRlX2Zsb3cgKg0KPiAgcnRlX2Zsb3dfY3JlYXRlKHVpbnQ4X3QgcG9y dF9pZCwNCj4gICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYXR0ciAqYXR0 ciwNCj4gICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfcGF0dGVybiAqcGF0 dGVybiwNCj4gICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9ucyAq YWN0aW9ucywNCj4gICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9y KTsNCj4gDQo+IEFyZ3VtZW50czoNCj4gDQo+IC0gYGBwb3J0X2lkYGA6IHBvcnQgaWRlbnRpZmll ciBvZiBFdGhlcm5ldCBkZXZpY2UuDQo+IC0gYGBhdHRyYGA6IGZsb3cgcnVsZSBhdHRyaWJ1dGVz Lg0KPiAtIGBgcGF0dGVybmBgOiBwYXR0ZXJuIHNwZWNpZmljYXRpb24uDQo+IC0gYGBhY3Rpb25z YGA6IGFjdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBmbG93IGRlZmluaXRpb24uDQo+IC0gYGBl cnJvcmBgOiBwZXJmb3JtIHZlcmJvc2UgZXJyb3IgcmVwb3J0aW5nIGlmIG5vdCBOVUxMLg0KPiAN Cj4gUmV0dXJuIHZhbHVlOg0KPiANCj4gQSB2YWxpZCBoYW5kbGUgaW4gY2FzZSBvZiBzdWNjZXNz LCBOVUxMIG90aGVyd2lzZSBhbmQgYGBydGVfZXJybm9gYCBpcyBzZXQNCj4gdG8gdGhlIHBvc2l0 aXZlIHZlcnNpb24gb2Ygb25lIG9mIHRoZSBlcnJvciBjb2RlcyBkZWZpbmVkIGZvcg0KPiBgYHJ0 ZV9mbG93X3ZhbGlkYXRlKClgYC4NCj4gDQo+IERlc3RydWN0aW9uDQo+IH5+fn5+fn5+fn5+DQo+ IA0KPiBGbG93IHJ1bGVzIGRlc3RydWN0aW9uIGlzIG5vdCBhdXRvbWF0aWMsIGFuZCBhIHF1ZXVl IG9yIGEgcG9ydCBzaG91bGQgbm90IGJlDQo+IHJlbGVhc2VkIGlmIGFueSBhcmUgc3RpbGwgYXR0 YWNoZWQgdG8gdGhlbS4gQXBwbGljYXRpb25zIG11c3QgdGFrZSBjYXJlIG9mDQo+IHBlcmZvcm1p bmcgdGhpcyBzdGVwIGJlZm9yZSByZWxlYXNpbmcgcmVzb3VyY2VzLg0KPiANCj4gOjoNCj4gDQo+ ICBpbnQNCj4gIHJ0ZV9mbG93X2Rlc3Ryb3kodWludDhfdCBwb3J0X2lkLA0KPiAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgcnRlX2Zsb3cgKmZsb3csDQo+ICAgICAgICAgICAgICAgICAgIHN0cnVj dCBydGVfZmxvd19lcnJvciAqZXJyb3IpOw0KPiANCj4gDQo+IEZhaWx1cmUgdG8gZGVzdHJveSBh IGZsb3cgcnVsZSBoYW5kbGUgbWF5IG9jY3VyIHdoZW4gb3RoZXIgZmxvdyBydWxlcw0KPiBkZXBl bmQNCj4gb24gaXQsIGFuZCBkZXN0cm95aW5nIGl0IHdvdWxkIHJlc3VsdCBpbiBhbiBpbmNvbnNp c3RlbnQgc3RhdGUuDQo+IA0KPiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZ3VhcmFudGVlZCB0byBz dWNjZWVkIGlmIGhhbmRsZXMgYXJlIGRlc3Ryb3llZCBpbg0KPiByZXZlcnNlIG9yZGVyIG9mIHRo ZWlyIGNyZWF0aW9uLg0KPiANCj4gQXJndW1lbnRzOg0KPiANCj4gLSBgYHBvcnRfaWRgYDogcG9y dCBpZGVudGlmaWVyIG9mIEV0aGVybmV0IGRldmljZS4NCj4gLSBgYGZsb3dgYDogZmxvdyBydWxl IGhhbmRsZSB0byBkZXN0cm95Lg0KPiAtIGBgZXJyb3JgYDogcGVyZm9ybSB2ZXJib3NlIGVycm9y IHJlcG9ydGluZyBpZiBub3QgTlVMTC4NCj4gDQo+IFJldHVybiB2YWx1ZToNCj4gDQo+IC0gKiow Kiogb24gc3VjY2VzcywgYSBuZWdhdGl2ZSBlcnJubyB2YWx1ZSBvdGhlcndpc2UgYW5kIGBgcnRl X2Vycm5vYGAgaXMNCj4gICBzZXQuDQo+IA0KPiAuLiByYXc6OiBwZGYNCj4gDQo+ICAgIFBhZ2VC cmVhaw0KPiANCj4gRmx1c2gNCj4gfn5+fn4NCj4gDQo+IENvbnZlbmllbmNlIGZ1bmN0aW9uIHRv IGRlc3Ryb3kgYWxsIGZsb3cgcnVsZSBoYW5kbGVzIGFzc29jaWF0ZWQgd2l0aCBhDQo+IHBvcnQu IFRoZXkgYXJlIHJlbGVhc2VkIGFzIHdpdGggc3VjY2Vzc2l2ZSBjYWxscyB0byBgYHJ0ZV9mbG93 X2Rlc3Ryb3koKWBgLg0KPiANCj4gOjoNCj4gDQo+ICBpbnQNCj4gIHJ0ZV9mbG93X2ZsdXNoKHVp bnQ4X3QgcG9ydF9pZCwNCj4gICAgICAgICAgICAgICAgIHN0cnVjdCBydGVfZmxvd19lcnJvciAq ZXJyb3IpOw0KPiANCj4gSW4gdGhlIHVubGlrZWx5IGV2ZW50IG9mIGZhaWx1cmUsIGhhbmRsZXMg YXJlIHN0aWxsIGNvbnNpZGVyZWQgZGVzdHJveWVkIGFuZA0KPiBubyBsb25nZXIgdmFsaWQgYnV0 IHRoZSBwb3J0IG11c3QgYmUgYXNzdW1lZCB0byBiZSBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUu DQo+IA0KPiBBcmd1bWVudHM6DQo+IA0KPiAtIGBgcG9ydF9pZGBgOiBwb3J0IGlkZW50aWZpZXIg b2YgRXRoZXJuZXQgZGV2aWNlLg0KPiAtIGBgZXJyb3JgYDogcGVyZm9ybSB2ZXJib3NlIGVycm9y IHJlcG9ydGluZyBpZiBub3QgTlVMTC4NCj4gDQo+IFJldHVybiB2YWx1ZToNCj4gDQo+IC0gKiow Kiogb24gc3VjY2VzcywgYSBuZWdhdGl2ZSBlcnJubyB2YWx1ZSBvdGhlcndpc2UgYW5kIGBgcnRl X2Vycm5vYGAgaXMNCj4gICBzZXQuDQo+IA0KPiBRdWVyeQ0KPiB+fn5+fg0KPiANCj4gUXVlcnkg YW4gZXhpc3RpbmcgZmxvdyBydWxlLg0KPiANCj4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgcmV0cmll dmluZyBmbG93LXNwZWNpZmljIGRhdGEgc3VjaCBhcyBjb3VudGVycy4gRGF0YQ0KPiBpcyBnYXRo ZXJlZCBieSBzcGVjaWFsIGFjdGlvbnMgd2hpY2ggbXVzdCBiZSBwcmVzZW50IGluIHRoZSBmbG93 IHJ1bGUNCj4gZGVmaW5pdGlvbi4NCj4gDQo+IDo6DQo+IA0KPiAgaW50DQo+ICBydGVfZmxvd19x dWVyeSh1aW50OF90IHBvcnRfaWQsDQo+ICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2Zsb3cg KmZsb3csDQo+ICAgICAgICAgICAgICAgICBlbnVtIHJ0ZV9mbG93X2FjdGlvbl90eXBlIGFjdGlv biwNCj4gICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsDQo+ICAgICAgICAgICAgICAgICBzdHJ1 Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsNCj4gDQo+IEFyZ3VtZW50czoNCj4gDQo+IC0gYGBw b3J0X2lkYGA6IHBvcnQgaWRlbnRpZmllciBvZiBFdGhlcm5ldCBkZXZpY2UuDQo+IC0gYGBmbG93 YGA6IGZsb3cgcnVsZSBoYW5kbGUgdG8gcXVlcnkuDQo+IC0gYGBhY3Rpb25gYDogYWN0aW9uIHR5 cGUgdG8gcXVlcnkuDQo+IC0gYGBkYXRhYGA6IHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIGFz c29jaWF0ZWQgcXVlcnkgZGF0YSB0eXBlLg0KPiAtIGBgZXJyb3JgYDogcGVyZm9ybSB2ZXJib3Nl IGVycm9yIHJlcG9ydGluZyBpZiBub3QgTlVMTC4NCj4gDQo+IFJldHVybiB2YWx1ZToNCj4gDQo+ IC0gKiowKiogb24gc3VjY2VzcywgYSBuZWdhdGl2ZSBlcnJubyB2YWx1ZSBvdGhlcndpc2UgYW5k IGBgcnRlX2Vycm5vYGAgaXMNCj4gICBzZXQuDQo+IA0KPiAuLiByYXc6OiBwZGYNCj4gDQo+ICAg IFBhZ2VCcmVhaw0KPiANCj4gVmVyYm9zZSBlcnJvciByZXBvcnRpbmcNCj4gfn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn4NCj4gDQo+IFRoZSBkZWZpbmVkICplcnJubyogdmFsdWVzIG1heSBub3QgYmUg YWNjdXJhdGUgZW5vdWdoIGZvciB1c2VycyBvcg0KPiBhcHBsaWNhdGlvbiBkZXZlbG9wZXJzIHdo byB3YW50IHRvIGludmVzdGlnYXRlIGlzc3VlcyByZWxhdGVkIHRvIGZsb3cgcnVsZXMNCj4gbWFu YWdlbWVudC4gQSBkZWRpY2F0ZWQgZXJyb3Igb2JqZWN0IGlzIGRlZmluZWQgZm9yIHRoaXMgcHVy cG9zZTo6DQo+IA0KPiAgZW51bSBydGVfZmxvd19lcnJvcl90eXBlIHsNCj4gICAgICBSVEVfRkxP V19FUlJPUl9UWVBFX05PTkUsIC8qKjwgTm8gZXJyb3IuICovDQo+ICAgICAgUlRFX0ZMT1dfRVJS T1JfVFlQRV9VTkRFRklORUQsIC8qKjwgQ2F1c2UgaXMgdW5kZWZpbmVkLiAqLw0KPiAgICAgIFJU RV9GTE9XX0VSUk9SX1RZUEVfSEFORExFLCAvKio8IEZsb3cgcnVsZSAoaGFuZGxlKS4gKi8NCj4g ICAgICBSVEVfRkxPV19FUlJPUl9UWVBFX0FUVFJfR1JPVVAsIC8qKjwgR3JvdXAgZmllbGQuICov DQo+ICAgICAgUlRFX0ZMT1dfRVJST1JfVFlQRV9BVFRSX1BSSU9SSVRZLCAvKio8IFByaW9yaXR5 IGZpZWxkLiAqLw0KPiAgICAgIFJURV9GTE9XX0VSUk9SX1RZUEVfQVRUUl9JTkdSRVNTLCAvKio8 IGZpZWxkLiAqLw0KPiAgICAgIFJURV9GTE9XX0VSUk9SX1RZUEVfQVRUUl9FR1JFU1MsIC8qKjwg ZmllbGQuICovDQo+ICAgICAgUlRFX0ZMT1dfRVJST1JfVFlQRV9BVFRSLCAvKio8IEF0dHJpYnV0 ZXMgc3RydWN0dXJlIGl0c2VsZi4gKi8NCj4gICAgICBSVEVfRkxPV19FUlJPUl9UWVBFX1BBVFRF Uk5fTUFYLCAvKio8IFBhdHRlcm4gbGVuZ3RoIChtYXggZmllbGQpLg0KPiAqLw0KPiAgICAgIFJU RV9GTE9XX0VSUk9SX1RZUEVfUEFUVEVSTl9JVEVNLCAvKio8IFNwZWNpZmljIHBhdHRlcm4gaXRl bS4gKi8NCj4gICAgICBSVEVfRkxPV19FUlJPUl9UWVBFX1BBVFRFUk4sIC8qKjwgUGF0dGVybiBz dHJ1Y3R1cmUgaXRzZWxmLiAqLw0KPiAgICAgIFJURV9GTE9XX0VSUk9SX1RZUEVfQUNUSU9OX01B WCwgLyoqPCBOdW1iZXIgb2YgYWN0aW9ucyAobWF4DQo+IGZpZWxkKS4gKi8NCj4gICAgICBSVEVf RkxPV19FUlJPUl9UWVBFX0FDVElPTiwgLyoqPCBTcGVjaWZpYyBhY3Rpb24uICovDQo+ICAgICAg UlRFX0ZMT1dfRVJST1JfVFlQRV9BQ1RJT05TLCAvKio8IEFjdGlvbnMgc3RydWN0dXJlIGl0c2Vs Zi4gKi8NCj4gIH07DQo+IA0KPiAgc3RydWN0IHJ0ZV9mbG93X2Vycm9yIHsNCj4gICAgICBlbnVt IHJ0ZV9mbG93X2Vycm9yX3R5cGUgdHlwZTsgLyoqPCBDYXVzZSBmaWVsZCBhbmQgZXJyb3IgdHlw ZXMuICovDQo+ICAgICAgdm9pZCAqY2F1c2U7IC8qKjwgT2JqZWN0IHJlc3BvbnNpYmxlIGZvciB0 aGUgZXJyb3IuICovDQo+ICAgICAgY29uc3QgY2hhciAqbWVzc2FnZTsgLyoqPCBIdW1hbi1yZWFk YWJsZSBlcnJvciBtZXNzYWdlLiAqLw0KPiAgfTsNCj4gDQo+IEVycm9yIHR5cGUgYGBSVEVfRkxP V19FUlJPUl9UWVBFX05PTkVgYCBzdGFuZHMgZm9yIG5vIGVycm9yLCBpbiB3aGljaA0KPiBjYXNl DQo+IHRoZSByZW1haW5pbmcgZmllbGRzIGNhbiBiZSBpZ25vcmVkLiBPdGhlciBlcnJvciB0eXBl cyBkZXNjcmliZSB0aGUgb2JqZWN0DQo+IHR5cGUgcG9pbnRlZCB0byBieSBgYGNhdXNlYGAuDQo+ IA0KPiBJZiBub24tTlVMTCwgYGBjYXVzZWBgIHBvaW50cyB0byB0aGUgb2JqZWN0IHJlc3BvbnNp YmxlIGZvciB0aGUgZXJyb3IuIEZvciBhDQo+IGZsb3cgcnVsZSwgdGhpcyBtYXkgYmUgYSBwYXR0 ZXJuIGl0ZW0gb3IgYW4gaW5kaXZpZHVhbCBhY3Rpb24uDQo+IA0KPiBJZiBub24tTlVMTCwgYGBt ZXNzYWdlYGAgcHJvdmlkZXMgYSBodW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlLg0KPiANCj4g VGhpcyBvYmplY3QgaXMgbm9ybWFsbHkgYWxsb2NhdGVkIGJ5IGFwcGxpY2F0aW9ucyBhbmQgc2V0 IGJ5IFBNRHMsIHRoZQ0KPiBtZXNzYWdlIHBvaW50cyB0byBhIGNvbnN0YW50IHN0cmluZyB3aGlj aCBkb2VzIG5vdCBuZWVkIHRvIGJlIGZyZWVkIGJ5IHRoZQ0KPiBhcHBsaWNhdGlvbiwgaG93ZXZl ciBpdHMgcG9pbnRlciBjYW4gYmUgY29uc2lkZXJlZCB2YWxpZCBvbmx5IGFzIGxvbmcgYXMgaXRz DQo+IGFzc29jaWF0ZWQgRFBESyBwb3J0IHJlbWFpbnMgY29uZmlndXJlZC4gQ2xvc2luZyB0aGUg dW5kZXJseWluZyBkZXZpY2Ugb3INCj4gdW5sb2FkaW5nIHRoZSBQTUQgaW52YWxpZGF0ZXMgaXQu DQo+IA0KPiAuLiByYXc6OiBwZGYNCj4gDQo+ICAgIFBhZ2VCcmVhaw0KPiANCj4gUE1EIGludGVy ZmFjZQ0KPiB+fn5+fn5+fn5+fn5+DQo+IA0KPiBUaGlzIHNwZWNpZmljYXRpb24gZm9jdXNlcyBv biB0aGUgcHVibGljLWZhY2luZyBpbnRlcmZhY2UsIHdoaWNoIG11c3QgYmUNCj4gZnVsbHkgZGVm aW5lZCBmcm9tIHRoZSBzdGFydCB0byBhdm9pZCBhIHJlLWRlc2lnbiBsYXRlciBhcyBpdCBpcyBz dWJqZWN0IHRvDQo+IEFQSSBhbmQgQUJJIHZlcnNpb25pbmcgY29uc3RyYWludHMuDQo+IA0KPiBO byBzdWNoIGlzc3VlIGV4aXN0cyB3aXRoIHRoZSBpbnRlcm5hbCBpbnRlcmZhY2UgZm9yIHVzZSBi eSBwb2xsLW1vZGUNCj4gZHJpdmVycyB3aGljaCBjYW4gZXZvbHZlIGluZGVwZW5kZW50bHksIGhl bmNlIHRoaXMgc2VjdGlvbiBvbmx5IG91dGxpbmVzIGhvdw0KPiByZXF1ZXN0cyBhcmUgcHJvY2Vz c2VkIGJ5IFBNRHMuDQo+IA0KPiBQdWJsaWMgZnVuY3Rpb25zIGFyZSBtYXBwZWQgbW9yZSBvciBs ZXNzIGRpcmVjdGx5IHRvIFBNRCBvcGVyYXRpb24NCj4gY2FsbGJhY2tzLCB0aHVzOg0KPiANCj4g LSBQdWJsaWMgQVBJIGZ1bmN0aW9ucyBkbyBub3QgcHJvY2VzcyBmbG93IHJ1bGVzIGRlZmluaXRp b25zIGF0IGFsbCBiZWZvcmUNCj4gICBjYWxsaW5nIFBNRCBjYWxsYmFja3MgKG5vIGJhc2ljIGVy cm9yIGNoZWNraW5nLCBubyB2YWxpZGF0aW9uDQo+ICAgd2hhdHNvZXZlcikuIFRoZXkgb25seSBt YWtlIHN1cmUgdGhlc2UgY2FsbGJhY2tzIGFyZSBub24tTlVMTCBvciByZXR1cm4NCj4gICB0aGUg YGBFTk9TWVNgYCAoZnVuY3Rpb24gbm90IHN1cHBvcnRlZCkgZXJyb3IuDQo+IA0KPiAtIERQREsg ZG9lcyBub3Qga2VlcCB0cmFjayBvZiBmbG93IHJ1bGVzIGRlZmluaXRpb25zIG9yIGZsb3cgcnVs ZSBvYmplY3RzDQo+ICAgYXV0b21hdGljYWxseS4gQXBwbGljYXRpb25zIG1heSBrZWVwIHRyYWNr IG9mIHRoZSBmb3JtZXIgYW5kIG11c3Qga2VlcA0KPiAgIHRyYWNrIG9mIHRoZSBsYXR0ZXIuIFBN RHMgbWF5IGFsc28gZG8gaXQgZm9yIGludGVybmFsIG5lZWRzLCBob3dldmVyIHRoaXMNCj4gICBj YW5ub3QgYmUgcmVsaWVkIG9uIGJ5IGFwcGxpY2F0aW9ucy4NCj4gDQo+IFRoZSBwcml2YXRlIGlu dGVyZmFjZSB3aWxsIHByb3ZpZGUgaGVscGVyIGZ1bmN0aW9ucyB0byBwZXJmb3JtIGNvbW1vbiB0 YXNrcw0KPiBzdWNoIGFzIHBhcnNpbmcsIHZhbGlkYXRpbmcgYW5kIGtlZXBpbmcgdHJhY2sgb2Yg ZmxvdyBydWxlIHNwZWNpZmljYXRpb25zIHRvDQo+IGF2b2lkIHJlZHVuZGFudCBjb2RlIGluIFBN RHMgYW5kIGVhc2UgaW1wbGVtZW50YXRpb24uDQo+IA0KPiBJdHMgY29udGVudHMgYXJlIGN1cnJl bnRseSBsYXJnZWx5IHVuZGVmaW5lZCBzaW5jZSBhdCBsZWFzdCBvbmUgUE1EDQo+IGltcGxlbWVu dGF0aW9uIGlzIG5lY2Vzc2FyeSBmaXJzdC4gUE1EIG1haW50YWluZXJzIGFyZSBlbmNvdXJhZ2Vk IHRvIHNoYXJlDQo+IGFzIG11Y2ggZ2VuZXJpYyBjb2RlIGFzIHBvc3NpYmxlLg0KPiANCj4gLi4g cmF3OjogcGRmDQo+IA0KPiAgICBQYWdlQnJlYWsNCj4gDQo+IENhdmVhdHMNCj4gLS0tLS0tLQ0K PiANCj4gLSBGbG93IHJ1bGVzIGFyZSBub3QgbWFpbnRhaW5lZCBiZXR3ZWVuIHN1Y2Nlc3NpdmUg cG9ydCBpbml0aWFsaXphdGlvbnMuIEFuDQo+ICAgYXBwbGljYXRpb24gZXhpdGluZyB3aXRob3V0 IHJlbGVhc2luZyB0aGVtIGFuZCByZXN0YXJ0aW5nIG11c3QgcmUtY3JlYXRlDQo+ICAgdGhlbSBm cm9tIHNjcmF0Y2guDQo+IA0KPiAtIEFQSSBvcGVyYXRpb25zIGFyZSBzeW5jaHJvbm91cyBhbmQg YmxvY2tpbmcgKGBgRUFHQUlOYGAgY2Fubm90IGJlDQo+ICAgcmV0dXJuZWQpLg0KPiANCj4gLSBU aGVyZSBpcyBubyBwcm92aXNpb24gZm9yIHJlZW50cmFuY3kvbXVsdGktdGhyZWFkIHNhZmV0eSwg YWx0aG91Z2ggbm90aGluZw0KPiAgIHNob3VsZCBwcmV2ZW50IGRpZmZlcmVudCBkZXZpY2VzIGZy b20gYmVpbmcgY29uZmlndXJlZCBhdCB0aGUgc2FtZQ0KPiAgIHRpbWUuIFBNRHMgbWF5IHByb3Rl Y3QgdGhlaXIgY29udHJvbCBwYXRoIGZ1bmN0aW9ucyBhY2NvcmRpbmdseS4NCj4gDQo+IC0gU3Rv cHBpbmcgdGhlIGRhdGEgcGF0aCAoVFgvUlgpIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IHdoZW4g bWFuYWdpbmcNCj4gZmxvdw0KPiAgIHJ1bGVzLiBJZiB0aGlzIGNhbm5vdCBiZSBhY2hpZXZlZCBu YXR1cmFsbHkgb3Igd2l0aCB3b3JrYXJvdW5kcyAoc3VjaCBhcw0KPiAgIHRlbXBvcmFyaWx5IHJl cGxhY2luZyB0aGUgYnVyc3QgZnVuY3Rpb24gcG9pbnRlcnMpLCBhbiBhcHByb3ByaWF0ZSBlcnJv cg0KPiAgIGNvZGUgbXVzdCBiZSByZXR1cm5lZCAoYGBFQlVTWWBgKS4NCj4gDQo+IC0gUE1Ecywg bm90IGFwcGxpY2F0aW9ucywgYXJlIHJlc3BvbnNpYmxlIGZvciBtYWludGFpbmluZyBmbG93IHJ1 bGVzDQo+ICAgY29uZmlndXJhdGlvbiB3aGVuIHN0b3BwaW5nIGFuZCByZXN0YXJ0aW5nIGEgcG9y dCBvciBwZXJmb3JtaW5nIG90aGVyDQo+ICAgYWN0aW9ucyB3aGljaCBtYXkgYWZmZWN0IHRoZW0u IFRoZXkgY2FuIG9ubHkgYmUgZGVzdHJveWVkIGV4cGxpY2l0bHkuDQo+IA0KPiBGb3IgZGV2aWNl cyBleHBvc2luZyBtdWx0aXBsZSBwb3J0cyBzaGFyaW5nIGdsb2JhbCBzZXR0aW5ncyBhZmZlY3Rl ZCBieSBmbG93DQo+IHJ1bGVzOg0KPiANCj4gLSBBbGwgcG9ydHMgdW5kZXIgRFBESyBjb250cm9s IG11c3QgYmVoYXZlIGNvbnNpc3RlbnRseSwgUE1EcyBhcmUNCj4gICByZXNwb25zaWJsZSBmb3Ig bWFraW5nIHN1cmUgdGhhdCBleGlzdGluZyBmbG93IHJ1bGVzIG9uIGEgcG9ydCBhcmUgbm90DQo+ ICAgYWZmZWN0ZWQgYnkgb3RoZXIgcG9ydHMuDQo+IA0KPiAtIFBvcnRzIG5vdCB1bmRlciBEUERL IGNvbnRyb2wgKHVuYWZmZWN0ZWQgb3IgaGFuZGxlZCBieSBvdGhlciBhcHBsaWNhdGlvbnMpDQo+ ICAgYXJlIHVzZXIncyByZXNwb25zaWJpbGl0eS4gVGhleSBtYXkgYWZmZWN0IGV4aXN0aW5nIGZs b3cgcnVsZXMgYW5kIGNhdXNlDQo+ICAgdW5kZWZpbmVkIGJlaGF2aW9yLiBQTURzIGF3YXJlIG9m IHRoaXMgbWF5IHByZXZlbnQgZmxvdyBydWxlcyBjcmVhdGlvbg0KPiAgIGFsdG9nZXRoZXIgaW4g c3VjaCBjYXNlcy4NCj4gDQo+IC4uIHJhdzo6IHBkZg0KPiANCj4gICAgUGFnZUJyZWFrDQo+IA0K PiBDb21wYXRpYmlsaXR5DQo+IC0tLS0tLS0tLS0tLS0NCj4gDQo+IE5vIGtub3duIGhhcmR3YXJl IGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIGFsbCB0aGUgZmVhdHVyZXMgZGVzY3JpYmVkIGluDQo+ IHRoaXMNCj4gZG9jdW1lbnQuDQo+IA0KPiBVbnN1cHBvcnRlZCBmZWF0dXJlcyBvciBjb21iaW5h dGlvbnMgYXJlIG5vdCBleHBlY3RlZCB0byBiZSBmdWxseQ0KPiBlbXVsYXRlZA0KPiBpbiBzb2Z0 d2FyZSBieSBQTURzIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiBQYXJ0aWFsbHkgc3VwcG9ydGVk IGZlYXR1cmVzDQo+IG1heSBiZSBjb21wbGV0ZWQgaW4gc29mdHdhcmUgYXMgbG9uZyBhcyBoYXJk d2FyZSBwZXJmb3JtcyBtb3N0IG9mIHRoZQ0KPiB3b3JrDQo+IChzdWNoIGFzIHF1ZXVlIHJlZGly ZWN0aW9uIGFuZCBwYWNrZXQgcmVjb2duaXRpb24pLg0KPiANCj4gSG93ZXZlciBQTURzIGFyZSBl eHBlY3RlZCB0byBkbyB0aGVpciBiZXN0IHRvIHNhdGlzZnkgYXBwbGljYXRpb24gcmVxdWVzdHMN Cj4gYnkgd29ya2luZyBhcm91bmQgaGFyZHdhcmUgbGltaXRhdGlvbnMgYXMgbG9uZyBhcyBkb2lu ZyBzbyBkb2VzIG5vdCBhZmZlY3QNCj4gdGhlIGJlaGF2aW9yIG9mIGV4aXN0aW5nIGZsb3cgcnVs ZXMuDQo+IA0KPiBUaGUgZm9sbG93aW5nIHNlY3Rpb25zIHByb3ZpZGUgYSBmZXcgZXhhbXBsZXMg b2Ygc3VjaCBjYXNlcywgdGhleSBhcmUgYmFzZWQNCj4gb24gbGltaXRhdGlvbnMgYnVpbHQgaW50 byB0aGUgcHJldmlvdXMgQVBJcy4NCj4gDQo+IEdsb2JhbCBiaXQtbWFza3MNCj4gfn5+fn5+fn5+ fn5+fn5+fg0KPiANCj4gRWFjaCBmbG93IHJ1bGUgY29tZXMgd2l0aCBpdHMgb3duLCBwZXItbGF5 ZXIgYml0LW1hc2tzLCB3aGlsZSBoYXJkd2FyZSBtYXkNCj4gc3VwcG9ydCBvbmx5IGEgc2luZ2xl LCBkZXZpY2Utd2lkZSBiaXQtbWFzayBmb3IgYSBnaXZlbiBsYXllciB0eXBlLCBzbyB0aGF0DQo+ IHR3byBJUHY0IHJ1bGVzIGNhbm5vdCB1c2UgZGlmZmVyZW50IGJpdC1tYXNrcy4NCj4gDQo+IFRo ZSBleHBlY3RlZCBiZWhhdmlvciBpbiB0aGlzIGNhc2UgaXMgdGhhdCBQTURzIGF1dG9tYXRpY2Fs bHkgY29uZmlndXJlDQo+IGdsb2JhbCBiaXQtbWFza3MgYWNjb3JkaW5nIHRvIHRoZSBuZWVkcyBv ZiB0aGUgZmlyc3QgY3JlYXRlZCBmbG93IHJ1bGUuDQo+IA0KPiBTdWJzZXF1ZW50IHJ1bGVzIGFy ZSBhbGxvd2VkIG9ubHkgaWYgdGhlaXIgYml0LW1hc2tzIG1hdGNoIHRob3NlLCB0aGUNCj4gYGBF RVhJU1RgYCBlcnJvciBjb2RlIHNob3VsZCBiZSByZXR1cm5lZCBvdGhlcndpc2UuDQo+IA0KPiBV bnN1cHBvcnRlZCBsYXllciB0eXBlcw0KPiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KPiANCj4g TWFueSBwcm90b2NvbHMgY2FuIGJlIHNpbXVsYXRlZCBieSBjcmFmdGluZyBwYXR0ZXJucyB3aXRo IHRoZSBgUkFXYF8gdHlwZS4NCj4gDQo+IFBNRHMgY2FuIHJlbHkgb24gdGhpcyBjYXBhYmlsaXR5 IHRvIHNpbXVsYXRlIHN1cHBvcnQgZm9yIHByb3RvY29scyB3aXRoDQo+IGZpeGVkIGhlYWRlcnMg bm90IGRpcmVjdGx5IHJlY29nbml6ZWQgYnkgaGFyZHdhcmUuDQo+IA0KPiBgYEFOWWBgIHBhdHRl cm4gaXRlbQ0KPiB+fn5+fn5+fn5+fn5+fn5+fn5+fg0KPiANCj4gVGhpcyBwYXR0ZXJuIGl0ZW0g c3RhbmRzIGZvciBhbnl0aGluZywgd2hpY2ggY2FuIGJlIGRpZmZpY3VsdCB0byB0cmFuc2xhdGUN Cj4gdG8gc29tZXRoaW5nIGhhcmR3YXJlIHdvdWxkIHVuZGVyc3RhbmQsIHBhcnRpY3VsYXJseSBp ZiBmb2xsb3dlZCBieSBtb3JlDQo+IHNwZWNpZmljIHR5cGVzLg0KPiANCj4gQ29uc2lkZXIgdGhl IGZvbGxvd2luZyBwYXR0ZXJuOg0KPiANCj4gKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSsNCj4gfCAwIHwgRVRIRVIgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gKy0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCAxIHwgQU5ZIChgYG1pbmBg ID0gMSwgYGBtYXhgYCA9IDEpIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsNCj4gfCAyIHwgVENQICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gKy0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gDQo+IEtub3dpbmcgdGhhdCBUQ1Ag ZG9lcyBub3QgbWFrZSBzZW5zZSB3aXRoIHNvbWV0aGluZyBvdGhlciB0aGFuIElQdjQgYW5kDQo+ IElQdjYNCj4gYXMgTDMsIHN1Y2ggYSBwYXR0ZXJuIG1heSBiZSB0cmFuc2xhdGVkIHRvIHR3byBm bG93IHJ1bGVzIGluc3RlYWQ6DQo+IA0KPiArLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiB8 IDAgfCBFVEhFUiAgICAgICAgICAgICAgfA0KPiArLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKw0K PiB8IDEgfCBJUFY0ICh6ZXJvZWQgbWFzaykgfA0KPiArLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Kw0KPiB8IDIgfCBUQ1AgICAgICAgICAgICAgICAgfA0KPiArLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKw0KPiANCj4gKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCAwIHwgRVRIRVIgICAg ICAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCAxIHwgSVBWNiAo emVyb2VkIG1hc2spIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCAyIHwgVENQ ICAgICAgICAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gDQo+IE5v dGUgdGhhdCBhcyBzb29uIGFzIGEgQU5ZIHJ1bGUgY292ZXJzIHNldmVyYWwgbGF5ZXJzLCB0aGlz IGFwcHJvYWNoIG1heQ0KPiB5aWVsZCBhIGxhcmdlIG51bWJlciBvZiBoaWRkZW4gZmxvdyBydWxl cy4gSXQgaXMgdGh1cyBzdWdnZXN0ZWQgdG8gb25seQ0KPiBzdXBwb3J0IHRoZSBtb3N0IGNvbW1v biBzY2VuYXJpb3MgKGFueXRoaW5nIGFzIEwyIGFuZC9vciBMMykuDQo+IA0KPiAuLiByYXc6OiBw ZGYNCj4gDQo+ICAgIFBhZ2VCcmVhaw0KPiANCj4gVW5zdXBwb3J0ZWQgYWN0aW9ucw0KPiB+fn5+ fn5+fn5+fn5+fn5+fn5+DQo+IA0KPiAtIFdoZW4gY29tYmluZWQgd2l0aCBhIGBRVUVVRWBfIGFj dGlvbiwgcGFja2V0IGNvdW50aW5nIChgQ09VTlRgXykgYW5kDQo+ICAgdGFnZ2luZyAoYE1BUktg XyBvciBgRkxBR2BfKSBtYXkgYmUgaW1wbGVtZW50ZWQgaW4gc29mdHdhcmUgYXMgbG9uZyBhcw0K PiB0aGUNCj4gICB0YXJnZXQgcXVldWUgaXMgdXNlZCBieSBhIHNpbmdsZSBydWxlLg0KPiANCj4g LSBBIHJ1bGUgc3BlY2lmeWluZyBib3RoIGBEVVBgXyArIGBRVUVVRWBfIG1heSBiZSB0cmFuc2xh dGVkIHRvIHR3byBoaWRkZW4NCj4gICBydWxlcyBjb21iaW5pbmcgYFFVRVVFYF8gYW5kIGBQQVNT VEhSVWBfLg0KPiANCj4gLSBXaGVuIGEgc2luZ2xlIHRhcmdldCBxdWV1ZSBpcyBwcm92aWRlZCwg YFJTU2BfIGNhbiBhbHNvIGJlIGltcGxlbWVudGVkDQo+ICAgdGhyb3VnaCBgUVVFVUVgXy4NCj4g DQo+IEZsb3cgcnVsZXMgcHJpb3JpdHkNCj4gfn5+fn5+fn5+fn5+fn5+fn5+fg0KPiANCj4gV2hp bGUgaXQgd291bGQgbmF0dXJhbGx5IG1ha2Ugc2Vuc2UsIGZsb3cgcnVsZXMgY2Fubm90IGJlIGFz c3VtZWQgdG8gYmUNCj4gcHJvY2Vzc2VkIGJ5IGhhcmR3YXJlIGluIHRoZSBzYW1lIG9yZGVyIGFz IHRoZWlyIGNyZWF0aW9uIGZvciBzZXZlcmFsDQo+IHJlYXNvbnM6DQo+IA0KPiAtIFRoZXkgbWF5 IGJlIG1hbmFnZWQgaW50ZXJuYWxseSBhcyBhIHRyZWUgb3IgYSBoYXNoIHRhYmxlIGluc3RlYWQg b2YgYQ0KPiAgIGxpc3QuDQo+IC0gUmVtb3ZpbmcgYSBmbG93IHJ1bGUgYmVmb3JlIGFkZGluZyBh bm90aGVyIG9uZSBjYW4gZWl0aGVyIHB1dCB0aGUgbmV3DQo+IHJ1bGUNCj4gICBhdCB0aGUgZW5k IG9mIHRoZSBsaXN0IG9yIHJldXNlIGEgZnJlZWQgZW50cnkuDQo+IC0gRHVwbGljYXRpb24gbWF5 IG9jY3VyIHdoZW4gcGFja2V0cyBhcmUgbWF0Y2hlZCBieSBzZXZlcmFsIHJ1bGVzLg0KPiANCj4g Rm9yIG92ZXJsYXBwaW5nIHJ1bGVzIChwYXJ0aWN1bGFybHkgaW4gb3JkZXIgdG8gdXNlIHRoZSBg UEFTU1RIUlVgXyBhY3Rpb24pDQo+IHByZWRpY3RhYmxlIGJlaGF2aW9yIGlzIG9ubHkgZ3VhcmFu dGVlZCBieSB1c2luZyBkaWZmZXJlbnQgcHJpb3JpdHkgbGV2ZWxzLg0KPiANCj4gUHJpb3JpdHkg bGV2ZWxzIGFyZSBub3QgbmVjZXNzYXJpbHkgaW1wbGVtZW50ZWQgaW4gaGFyZHdhcmUsIG9yIG1h eSBiZQ0KPiBzZXZlcmVseSBsaW1pdGVkIChlLmcuIGEgc2luZ2xlIHByaW9yaXR5IGJpdCkuDQo+ IA0KPiBGb3IgdGhlc2UgcmVhc29ucywgcHJpb3JpdHkgbGV2ZWxzIG1heSBiZSBpbXBsZW1lbnRl ZCBwdXJlbHkgaW4gc29mdHdhcmUgYnkNCj4gUE1Ecy4NCj4gDQo+IC0gRm9yIGRldmljZXMgZXhw ZWN0aW5nIGZsb3cgcnVsZXMgdG8gYmUgYWRkZWQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIsIFBNRHMN Cj4gICBtYXkgZGVzdHJveSBhbmQgcmUtY3JlYXRlIGV4aXN0aW5nIHJ1bGVzIGFmdGVyIGFkZGlu ZyBhIG5ldyBvbmUgd2l0aA0KPiAgIGEgaGlnaGVyIHByaW9yaXR5Lg0KPiANCj4gLSBBIGNvbmZp Z3VyYWJsZSBudW1iZXIgb2YgZHVtbXkgb3IgZW1wdHkgcnVsZXMgY2FuIGJlIGNyZWF0ZWQgYXQN Cj4gICBpbml0aWFsaXphdGlvbiB0aW1lIHRvIHNhdmUgaGlnaCBwcmlvcml0eSBzbG90cyBmb3Ig bGF0ZXIuDQo+IA0KPiAtIEluIG9yZGVyIHRvIHNhdmUgcHJpb3JpdHkgbGV2ZWxzLCBQTURzIG1h eSBldmFsdWF0ZSB3aGV0aGVyIHJ1bGVzIGFyZQ0KPiAgIGxpa2VseSB0byBjb2xsaWRlIGFuZCBh ZGp1c3QgdGhlaXIgcHJpb3JpdHkgYWNjb3JkaW5nbHkuDQo+IA0KPiAuLiByYXc6OiBwZGYNCj4g DQo+ICAgIFBhZ2VCcmVhaw0KPiANCj4gQVBJIG1pZ3JhdGlvbg0KPiA9PT09PT09PT09PT09DQo+ IA0KPiBFeGhhdXN0aXZlIGxpc3Qgb2YgZGVwcmVjYXRlZCBmaWx0ZXIgdHlwZXMgYW5kIGhvdyB0 byBjb252ZXJ0IHRoZW0gdG8NCj4gZ2VuZXJpYyBmbG93IHJ1bGVzLg0KPiANCj4gYGBNQUNWTEFO YGAgdG8gYGBFVEhgYCDihpIgYGBWRmBgLCBgYFBGYGANCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQo+IA0KPiBgTUFDVkxBTmBfIGNhbiBiZSB0cmFuc2xhdGVkIHRv IGEgYmFzaWMgYEVUSGBfIGZsb3cgcnVsZSB3aXRoIGEgYFZGDQo+IChhY3Rpb24pYF8gb3IgYFBG IChhY3Rpb24pYF8gdGVybWluYXRpbmcgYWN0aW9uLg0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBNQUNWTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwNCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSsNCj4gfCBQYXR0 ZXJuICAgICAgICAgICAgICAgICAgfCBBY3Rpb25zIHwNCj4gKz09PSs9PT09PSs9PT09PT09PT09 Kz09PT09Kz09PT09PT09PSsNCj4gfCAwIHwgRVRIIHwgYGBzcGVjYGAgfCBhbnkgfCBWRiwgICAg IHwNCj4gfCAgIHwgICAgICstLS0tLS0tLS0tKy0tLS0tKyBQRiAgICAgIHwNCj4gfCAgIHwgICAg IHwgYGBtYXNrYGAgfCBhbnkgfCAgICAgICAgIHwNCj4gKy0tLSstLS0tLSstLS0tLS0tLS0tKy0t LS0tKy0tLS0tLS0tLSsNCj4gDQo+IGBgRVRIRVJUWVBFYGAgdG8gYGBFVEhgYCDihpIgYGBRVUVV RWBgLCBgYERST1BgYA0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+IA0KPiBgRVRIRVJUWVBFYF8gaXMgYmFzaWNhbGx5IGFuIGBFVEhgXyBmbG93IHJ1 bGUgd2l0aCBgUVVFVUVgXyBvciBgRFJPUGBfIGFzDQo+IGEgdGVybWluYXRpbmcgYWN0aW9uLg0K PiANCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBFVEhFUlRZ UEUgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSsNCj4gfCBQYXR0ZXJuICAgICAgICAgICAgICAgICAgfCBBY3Rpb25zIHwN Cj4gKz09PSs9PT09PSs9PT09PT09PT09Kz09PT09Kz09PT09PT09PSsNCj4gfCAwIHwgRVRIIHwg YGBzcGVjYGAgfCBhbnkgfCBRVUVVRSwgIHwNCj4gfCAgIHwgICAgICstLS0tLS0tLS0tKy0tLS0t KyBEUk9QICAgIHwNCj4gfCAgIHwgICAgIHwgYGBtYXNrYGAgfCBhbnkgfCAgICAgICAgIHwNCj4g Ky0tLSstLS0tLSstLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLSsNCj4gDQo+IGBgRkxFWElCTEVg YCB0byBgYFJBV2BgIOKGkiBgYFFVRVVFYGANCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCj4gDQo+IGBGTEVYSUJMRWBfIGNhbiBiZSB0cmFuc2xhdGVkIHRvIG9uZSBgUkFX YF8gcGF0dGVybiB3aXRoIGBRVUVVRWBfIGFzIHRoZQ0KPiB0ZXJtaW5hdGluZyBhY3Rpb24gYW5k IGEgZGVmaW5lZCBwcmlvcml0eSBsZXZlbC4NCj4gDQo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rDQo+IHwgRkxFWElCTEUgICAgICAgICAgICAgICAgICAgICAgICAgICB8 DQo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rDQo+IHwgUGF0dGVybiAg ICAgICAgICAgICAgICAgIHwgQWN0aW9ucyB8DQo+ICs9PT0rPT09PT0rPT09PT09PT09PSs9PT09 PSs9PT09PT09PT0rDQo+IHwgMCB8IFJBVyB8IGBgc3BlY2BgIHwgYW55IHwgUVVFVUUgICB8DQo+ IHwgICB8ICAgICArLS0tLS0tLS0tLSstLS0tLSsgICAgICAgICB8DQo+IHwgICB8ICAgICB8IGBg bWFza2BgIHwgYW55IHwgICAgICAgICB8DQo+ICstLS0rLS0tLS0rLS0tLS0tLS0tLSstLS0tLSst LS0tLS0tLS0rDQo+IA0KPiBgYFNZTmBgIHRvIGBgVENQYGAg4oaSIGBgUVVFVUVgYA0KPiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gDQo+IGBTWU5gXyBpcyBhIGBUQ1BgXyBydWxl IHdpdGggb25seSB0aGUgYGBzeW5gYCBiaXQgZW5hYmxlZCBhbmQgbWFza2VkLCBhbmQNCj4gYFFV RVVFYF8gYXMgdGhlIHRlcm1pbmF0aW5nIGFjdGlvbi4NCj4gDQo+IFByaW9yaXR5IGxldmVsIGNh biBiZSBzZXQgdG8gc2ltdWxhdGUgdGhlIGhpZ2ggcHJpb3JpdHkgYml0Lg0KPiANCj4gKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBTWU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSsNCj4gfCBQYXR0ZXJuICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBBY3Rpb25zIHwNCj4gKz09PSs9PT09PT0rPT09PT09PT09PSs9PT09PT09 PT09PT09Kz09PT09PT09PSsNCj4gfCAwIHwgRVRIICB8IGBgc3BlY2BgIHwgZW1wdHkgICAgICAg fCBRVUVVRSAgIHwNCj4gfCAgIHwgICAgICArLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKyAgICAg ICAgIHwNCj4gfCAgIHwgICAgICB8IGBgbWFza2BgIHwgZW1wdHkgICAgICAgfCAgICAgICAgIHwN Cj4gKy0tLSstLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKyAgICAgICAgIHwNCj4gfCAx IHwgSVBWNCB8IGBgc3BlY2BgIHwgZW1wdHkgICAgICAgfCAgICAgICAgIHwNCj4gfCAgIHwgICAg ICArLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKyAgICAgICAgIHwNCj4gfCAgIHwgICAgICB8IGBg bWFza2BgIHwgZW1wdHkgICAgICAgfCAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKyAgICAgICAgIHwNCj4gfCAyIHwgVENQICB8IGBgc3BlY2BgIHwgYGBz eW5gYCA9IDEgfCAgICAgICAgIHwNCj4gfCAgIHwgICAgICArLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKyAgICAgICAgIHwNCj4gfCAgIHwgICAgICB8IGBgbWFza2BgIHwgYGBzeW5gYCA9IDEgfCAg ICAgICAgIHwNCj4gKy0tLSstLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSsNCj4gDQo+IGBgTlRVUExFYGAgdG8gYGBJUFY0YGAsIGBgVENQYGAsIGBgVURQYGAg4oaSIGBg UVVFVUVgYA0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+IA0KPiBgTlRVUExFYF8gaXMgc2ltaWxhciB0byBzcGVjaWZ5aW5nIGFuIGVtcHR5 IEwyLCBgSVBWNGBfIGFzIEwzIHdpdGggYFRDUGBfIG9yDQo+IGBVRFBgXyBhcyBMNCBhbmQgYFFV RVVFYF8gYXMgdGhlIHRlcm1pbmF0aW5nIGFjdGlvbi4NCj4gDQo+IEEgcHJpb3JpdHkgbGV2ZWwg Y2FuIGJlIHNwZWNpZmllZCBhcyB3ZWxsLg0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBOVFVQTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwNCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSsNCj4gfCBQ YXR0ZXJuICAgICAgICAgICAgICAgICAgICAgfCBBY3Rpb25zIHwNCj4gKz09PSs9PT09PT0rPT09 PT09PT09PSs9PT09PT09Kz09PT09PT09PSsNCj4gfCAwIHwgRVRIICB8IGBgc3BlY2BgIHwgZW1w dHkgfCBRVUVVRSAgIHwNCj4gfCAgIHwgICAgICArLS0tLS0tLS0tLSstLS0tLS0tKyAgICAgICAg IHwNCj4gfCAgIHwgICAgICB8IGBgbWFza2BgIHwgZW1wdHkgfCAgICAgICAgIHwNCj4gKy0tLSst LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tKyAgICAgICAgIHwNCj4gfCAxIHwgSVBWNCB8IGBgc3Bl Y2BgIHwgYW55ICAgfCAgICAgICAgIHwNCj4gfCAgIHwgICAgICArLS0tLS0tLS0tLSstLS0tLS0t KyAgICAgICAgIHwNCj4gfCAgIHwgICAgICB8IGBgbWFza2BgIHwgYW55ICAgfCAgICAgICAgIHwN Cj4gKy0tLSstLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tKyAgICAgICAgIHwNCj4gfCAyIHwgVENQ LCB8IGBgc3BlY2BgIHwgYW55ICAgfCAgICAgICAgIHwNCj4gfCAgIHwgVURQICArLS0tLS0tLS0t LSstLS0tLS0tKyAgICAgICAgIHwNCj4gfCAgIHwgICAgICB8IGBgbWFza2BgIHwgYW55ICAgfCAg ICAgICAgIHwNCj4gKy0tLSstLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSsNCj4g DQo+IGBgVFVOTkVMYGAgdG8gYGBFVEhgYCwgYGBJUFY0YGAsIGBgSVBWNmBgLCBgYFZYTEFOYGAg KG9yIG90aGVyKSDihpIgYGBRVUVVRWBgDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiANCj4gYFRV Tk5FTGBfIG1hdGNoZXMgY29tbW9uIElQdjQgYW5kIElQdjYgTDMvTDQtYmFzZWQgdHVubmVsIHR5 cGVzLg0KPiANCj4gSW4gdGhlIGZvbGxvd2luZyB0YWJsZSwgYEFOWWBfIGlzIHVzZWQgdG8gY292 ZXIgdGhlIG9wdGlvbmFsIEw0Lg0KPiANCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gfCBUVU5ORUwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwNCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSsNCj4gfCBQYXR0ZXJuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBBY3Rpb25zIHwNCj4gKz09PSs9PT09PT09PT0rPT09PT09PT09PSs9PT09PT09PT09PT09Kz09 PT09PT09PSsNCj4gfCAwIHwgRVRIICAgICB8IGBgc3BlY2BgIHwgYW55ICAgICAgICAgfCBRVUVV RSAgIHwNCj4gfCAgIHwgICAgICAgICArLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKyAgICAgICAg IHwNCj4gfCAgIHwgICAgICAgICB8IGBgbWFza2BgIHwgYW55ICAgICAgICAgfCAgICAgICAgIHwN Cj4gKy0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKyAgICAgICAgIHwNCj4g fCAxIHwgSVBWNCwgICB8IGBgc3BlY2BgIHwgYW55ICAgICAgICAgfCAgICAgICAgIHwNCj4gfCAg IHwgSVBWNiAgICArLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKyAgICAgICAgIHwNCj4gfCAgIHwg ICAgICAgICB8IGBgbWFza2BgIHwgYW55ICAgICAgICAgfCAgICAgICAgIHwNCj4gKy0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKyAgICAgICAgIHwNCj4gfCAyIHwgQU5ZICAg ICB8IGBgc3BlY2BgIHwgYGBtaW5gYCA9IDAgfCAgICAgICAgIHwNCj4gfCAgIHwgICAgICAgICB8 ICAgICAgICAgICstLS0tLS0tLS0tLS0tKyAgICAgICAgIHwNCj4gfCAgIHwgICAgICAgICB8ICAg ICAgICAgIHwgYGBtYXhgYCA9IDAgfCAgICAgICAgIHwNCj4gfCAgIHwgICAgICAgICArLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKyAgICAgICAgIHwNCj4gfCAgIHwgICAgICAgICB8IGBgbWFza2Bg IHwgTi9BICAgICAgICAgfCAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKyAgICAgICAgIHwNCj4gfCAzIHwgVlhMQU4sICB8IGBgc3BlY2BgIHwgYW55 ICAgICAgICAgfCAgICAgICAgIHwNCj4gfCAgIHwgR0VORVZFLCArLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKyAgICAgICAgIHwNCj4gfCAgIHwgVEVSRURPLCB8IGBgbWFza2BgIHwgYW55ICAgICAg ICAgfCAgICAgICAgIHwNCj4gfCAgIHwgTlZHUkUsICB8ICAgICAgICAgIHwgICAgICAgICAgICAg fCAgICAgICAgIHwNCj4gfCAgIHwgR1JFLCAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgfCAg ICAgICAgIHwNCj4gfCAgIHwgLi4uICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAg ICAgIHwNCj4gKy0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSsNCj4gDQo+IC4uIHJhdzo6IHBkZg0KPiANCj4gICAgUGFnZUJyZWFrDQo+IA0KPiBgYEZESVJg YCB0byBtb3N0IGl0ZW0gdHlwZXMg4oaSIGBgUVVFVUVgYCwgYGBEUk9QYGAsIGBgUEFTU1RIUlVg YA0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCj4gDQo+IGBGRElSYF8gaXMgbW9yZSBjb21wbGV4IHRoYW4gYW55IG90aGVy IHR5cGUsIHRoZXJlIGFyZSBzZXZlcmFsIG1ldGhvZHMgdG8NCj4gZW11bGF0ZSBpdHMgZnVuY3Rp b25hbGl0eS4gSXQgaXMgc3VtbWFyaXplZCBmb3IgdGhlIG1vc3QgcGFydCBpbiB0aGUgdGFibGUN Cj4gYmVsb3cuDQo+IA0KPiBBIGZldyBmZWF0dXJlcyBhcmUgaW50ZW50aW9uYWxseSBub3Qgc3Vw cG9ydGVkOg0KPiANCj4gLSBUaGUgYWJpbGl0eSB0byBjb25maWd1cmUgdGhlIG1hdGNoaW5nIGlu cHV0IHNldCBhbmQgbWFza3MgZm9yIHRoZSBlbnRpcmUNCj4gICBkZXZpY2UsIFBNRHMgc2hvdWxk IHRha2UgY2FyZSBvZiBpdCBhdXRvbWF0aWNhbGx5IGFjY29yZGluZyB0byB0aGUNCj4gICByZXF1 ZXN0ZWQgZmxvdyBydWxlcy4NCj4gDQo+ICAgRm9yIGV4YW1wbGUgaWYgYSBkZXZpY2Ugc3VwcG9y dHMgb25seSBvbmUgYml0LW1hc2sgcGVyIHByb3RvY29sIHR5cGUsDQo+ICAgc291cmNlL2FkZHJl c3MgSVB2NCBiaXQtbWFza3MgY2FuIGJlIG1hZGUgaW1tdXRhYmxlIGJ5IHRoZSBmaXJzdCBjcmVh dGVkDQo+ICAgcnVsZS4gU3Vic2VxdWVudCBJUHY0IG9yIFRDUHY0IHJ1bGVzIGNhbiBvbmx5IGJl IGNyZWF0ZWQgaWYgdGhleSBhcmUNCj4gICBjb21wYXRpYmxlLg0KPiANCj4gICBOb3RlIHRoYXQg b25seSBwcm90b2NvbCBiaXQtbWFza3MgYWZmZWN0ZWQgYnkgZXhpc3RpbmcgZmxvdyBydWxlcyBh cmUNCj4gICBpbW11dGFibGUsIG90aGVycyBjYW4gYmUgY2hhbmdlZCBsYXRlci4gVGhleSBiZWNv bWUgbXV0YWJsZSBhZ2FpbiBhZnRlcg0KPiAgIHRoZSByZWxhdGVkIGZsb3cgcnVsZXMgYXJlIGRl c3Ryb3llZC4NCj4gDQo+IC0gUmV0dXJuaW5nIGZvdXIgb3IgZWlnaHQgYnl0ZXMgb2YgbWF0Y2hl ZCBkYXRhIHdoZW4gdXNpbmcgZmxleCBieXRlcw0KPiAgIGZpbHRlcmluZy4gQWx0aG91Z2ggYSBz cGVjaWZpYyBhY3Rpb24gY291bGQgaW1wbGVtZW50IGl0LCBpdCBjb25mbGljdHMNCj4gICB3aXRo IHRoZSBtdWNoIG1vcmUgdXNlZnVsIDMyIGJpdHMgdGFnZ2luZyBvbiBkZXZpY2VzIHRoYXQgc3Vw cG9ydCBpdC4NCj4gDQo+IC0gU2lkZSBlZmZlY3RzIG9uIFJTUyBwcm9jZXNzaW5nIG9mIHRoZSBl bnRpcmUgZGV2aWNlLiBGbG93IHJ1bGVzIHRoYXQNCj4gICBjb25mbGljdCB3aXRoIHRoZSBjdXJy ZW50IGRldmljZSBjb25maWd1cmF0aW9uIHNob3VsZCBub3QgYmUNCj4gICBhbGxvd2VkLiBTaW1p bGFybHksIGRldmljZSBjb25maWd1cmF0aW9uIHNob3VsZCBub3QgYmUgYWxsb3dlZCB3aGVuIGl0 DQo+ICAgYWZmZWN0cyBleGlzdGluZyBmbG93IHJ1bGVzLg0KPiANCj4gLSBEZXZpY2UgbW9kZXMg b2Ygb3BlcmF0aW9uLiAibm9uZSIgaXMgdW5zdXBwb3J0ZWQgc2luY2UgZmlsdGVyaW5nIGNhbm5v dCBiZQ0KPiAgIGRpc2FibGVkIGFzIGxvbmcgYXMgYSBmbG93IHJ1bGUgaXMgcHJlc2VudC4NCj4g DQo+IC0gIk1BQyBWTEFOIiBvciAidHVubmVsIiBwZXJmZWN0IG1hdGNoaW5nIG1vZGVzIHNob3Vs ZCBiZSBhdXRvbWF0aWNhbGx5DQo+IHNldA0KPiAgIGFjY29yZGluZyB0byB0aGUgY3JlYXRlZCBm bG93IHJ1bGVzLg0KPiANCj4gLSBTaWduYXR1cmUgbW9kZSBvZiBvcGVyYXRpb24gaXMgbm90IGRl ZmluZWQgYnV0IGNvdWxkIGJlIGhhbmRsZWQgdGhyb3VnaCBhDQo+ICAgc3BlY2lmaWMgaXRlbSB0 eXBlIGlmIG5lZWRlZC4NCj4gDQo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKw0KPiB8IEZESVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwNCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rDQo+IHwgUGF0dGVybiAgICAgICAgICAgICAgICAgICAgICAgICB8IEFjdGlvbnMgICAgfA0K PiArPT09Kz09PT09PT09PT09PSs9PT09PT09PT09Kz09PT09Kz09PT09PT09PT09PSsNCj4gfCAw IHwgRVRILCAgICAgICB8IGBgc3BlY2BgIHwgYW55IHwgUVVFVUUsICAgICB8DQo+IHwgICB8IFJB VyAgICAgICAgKy0tLS0tLS0tLS0rLS0tLS0rIERST1AsICAgICAgfA0KPiB8ICAgfCAgICAgICAg ICAgIHwgYGBtYXNrYGAgfCBhbnkgfCBQQVNTVEhSVSAgIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0tLS0rDQo+IHwgMSB8IElQVjQsICAgICAgfCBgYHNw ZWNgYCB8IGFueSB8IE1BUksgICAgICAgfA0KPiB8ICAgfCBJUFY2ICAgICAgICstLS0tLS0tLS0t Ky0tLS0tKyAob3B0aW9uYWwpIHwNCj4gfCAgIHwgICAgICAgICAgICB8IGBgbWFza2BgIHwgYW55 IHwgICAgICAgICAgICB8DQo+ICstLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0rICAg ICAgICAgICAgfA0KPiB8IDIgfCBUQ1AsICAgICAgIHwgYGBzcGVjYGAgfCBhbnkgfCAgICAgICAg ICAgIHwNCj4gfCAgIHwgVURQLCAgICAgICArLS0tLS0tLS0tLSstLS0tLSsgICAgICAgICAgICB8 DQo+IHwgICB8IFNDVFAgICAgICAgfCBgYG1hc2tgYCB8IGFueSB8ICAgICAgICAgICAgfA0KPiAr LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tKyAgICAgICAgICAgIHwNCj4gfCAzIHwg VkYsICAgICAgICB8IGBgc3BlY2BgIHwgYW55IHwgICAgICAgICAgICB8DQo+IHwgICB8IFBGICAg ICAgICAgKy0tLS0tLS0tLS0rLS0tLS0rICAgICAgICAgICAgfA0KPiB8ICAgfCAob3B0aW9uYWwp IHwgYGBtYXNrYGAgfCBhbnkgfCAgICAgICAgICAgIHwNCj4gKy0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLSstLS0tLS0tLS0tLS0rDQo+IA0KPiAuLiByYXc6OiBwZGYNCj4gDQo+ICAg IFBhZ2VCcmVhaw0KPiANCj4gYGBIQVNIYGANCj4gfn5+fn5+fn4NCj4gDQo+IFRoZXJlIGlzIG5v IGNvdW50ZXJwYXJ0IHRvIHRoaXMgZmlsdGVyIHR5cGUgYmVjYXVzZSBpdCB0cmFuc2xhdGVzIHRv IGENCj4gZ2xvYmFsIGRldmljZSBzZXR0aW5nIGluc3RlYWQgb2YgYSBwYXR0ZXJuIGl0ZW0uIERl dmljZSBzZXR0aW5ncyBhcmUNCj4gYXV0b21hdGljYWxseSBzZXQgYWNjb3JkaW5nIHRvIHRoZSBj cmVhdGVkIGZsb3cgcnVsZXMuDQo+IA0KPiBgYEwyX1RVTk5FTGBgIHRvIGBgVk9JRGBgIOKGkiBg YFZYTEFOYGAgKG9yIG90aGVycykNCj4gfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fg0KPiANCj4gQWxsIHBhY2tldHMgYXJlIG1hdGNoZWQuIFRoaXMgdHlw ZSBhbHRlcnMgaW5jb21pbmcgcGFja2V0cyB0byBlbmNhcHN1bGF0ZQ0KPiB0aGVtIGluIGEgY2hv c2VuIHR1bm5lbCB0eXBlLCBvcHRpb25hbGx5IHJlZGlyZWN0IHRoZW0gdG8gYSBWRiBhcyB3ZWxs Lg0KPiANCj4gVGhlIGRlc3RpbmF0aW9uIHBvb2wgZm9yIHRhZyBiYXNlZCBmb3J3YXJkaW5nIGNh biBiZSBlbXVsYXRlZCB3aXRoIG90aGVyDQo+IGZsb3cgcnVsZXMgdXNpbmcgYERVUGBfIGFzIHRo ZSBhY3Rpb24uDQo+IA0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsNCj4gfCBMMl9UVU5ORUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ICstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKw0KPiB8IFBhdHRlcm4gICAgICAg ICAgICAgICAgICAgfCBBY3Rpb25zICAgIHwNCj4gKz09PSs9PT09PT0rPT09PT09PT09PSs9PT09 PSs9PT09PT09PT09PT0rDQo+IHwgMCB8IFZPSUQgfCBgYHNwZWNgYCB8IE4vQSB8IFZYTEFOLCAg ICAgfA0KPiB8ICAgfCAgICAgIHwgICAgICAgICAgfCAgICAgfCBHRU5FVkUsICAgIHwNCj4gfCAg IHwgICAgICB8ICAgICAgICAgIHwgICAgIHwgLi4uICAgICAgICB8DQo+IHwgICB8ICAgICAgKy0t LS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0tKw0KPiB8ICAgfCAgICAgIHwgYGBtYXNrYGAgfCBO L0EgfCBWRiAgICAgICAgIHwNCj4gfCAgIHwgICAgICB8ICAgICAgICAgIHwgICAgIHwgKG9wdGlv bmFsKSB8DQo+ICstLS0rLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0tKw0KPiAN Cj4gLi4gcmF3OjogcGRmDQo+IA0KPiAgICBQYWdlQnJlYWsNCj4gDQo+IEZ1dHVyZSBldm9sdXRp b25zDQo+ID09PT09PT09PT09PT09PT09DQo+IA0KPiAtIERlc2NyaWJpbmcgZGVkaWNhdGVkIHRl c3RwbWQgY29tbWFuZHMgdG8gY29udHJvbCBhbmQgdmFsaWRhdGUgdGhpcyBBUEkuDQo+IA0KPiAt IEEgbWV0aG9kIHRvIG9wdGltaXplIGdlbmVyaWMgZmxvdyBydWxlcyB3aXRoIHNwZWNpZmljIHBh dHRlcm4gaXRlbXMgYW5kDQo+ICAgYWN0aW9uIHR5cGVzIGdlbmVyYXRlZCBvbiB0aGUgZmx5IGJ5 IFBNRHMuIERQREsgd2lsbCBhc3NpZ24gbmVnYXRpdmUNCj4gICBudW1iZXJzIHRvIHRoZXNlIGlu IG9yZGVyIHRvIG5vdCBjb2xsaWRlIHdpdGggdGhlIGV4aXN0aW5nIHR5cGVzLiBTZWUNCj4gICBg TmVnYXRpdmUgdHlwZXNgXy4NCj4gDQo+IC0gQWRkaW5nIHNwZWNpZmljIGVncmVzcyBwYXR0ZXJu IGl0ZW1zIGFuZCBhY3Rpb25zIGFzIGRlc2NyaWJlZCBpbiBgVHJhZmZpYw0KPiAgIGRpcmVjdGlv bmBfLg0KPiANCj4gLSBPcHRpb25hbCBzb2Z0d2FyZSBmYWxsYmFjayB3aGVuIFBNRHMgYXJlIHVu YWJsZSB0byBoYW5kbGUgcmVxdWVzdGVkIGZsb3cNCj4gICBydWxlcyBzbyBhcHBsaWNhdGlvbnMg ZG8gbm90IGhhdmUgdG8gaW1wbGVtZW50IHRoZWlyIG93bi4NCj4gDQo+IC0gUmFuZ2VzIGluIGFk ZGl0aW9uIHRvIGJpdC1tYXNrcy4gUmFuZ2VzIGFyZSBtb3JlIGdlbmVyaWMgaW4gbWFueSB3YXlz IGFzDQo+ICAgdGhleSBpbnRlcnByZXQgdmFsdWVzLiBGb3IgaW5zdGFuY2Ugb25seSByYW5nZXMg bWFrZSBzZW5zZSB0byBjb3Zlcg0KPiAgIHNldmVyYWwgVENQIG9yIFVEUCBwb3J0cy4gVGhlc2Ug d2lsbCBwcm9iYWJseSBiZSBkZWZpbmVkIG9uIGEgcGF0dGVybiBpdGVtDQo+ICAgYmFzaXMuDQo+ IA0KPiAtLS0tLS0tLQ0KPiANCj4gQWRyaWVuIE1hemFyZ3VpbCAoMSk6DQo+ICAgZXRoZGV2OiBp bnRyb2R1Y2UgZ2VuZXJpYyBmbG93IEFQSQ0KPiANCj4gIGxpYi9saWJydGVfZXRoZXIvTWFrZWZp bGUgICB8ICAgMiArDQo+ICBsaWIvbGlicnRlX2V0aGVyL3J0ZV9mbG93LmggfCA5NDENCj4gKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICAyIGZpbGVzIGNoYW5nZWQs IDk0MyBpbnNlcnRpb25zKCspDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2xpYnJ0ZV9ldGhl ci9ydGVfZmxvdy5oDQo+IA0KPiAtLQ0KPiAyLjEuNA0KDQo=