From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eran Ben Elisha Subject: Re: [PATCH RFC net-next 00/19] Devlink health reporting and recovery system Date: Tue, 1 Jan 2019 09:58:30 +0000 Message-ID: <6eb2ebe0-40fa-f037-f0f4-d54c907da185@mellanox.com> References: <1546266733-9512-1-git-send-email-eranbe@mellanox.com> <20181231174727.6280fc3c@cakuba.hsd1.ca.comcast.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "netdev@vger.kernel.org" , "David S. Miller" , Jiri Pirko , Moshe Shemesh , Aya Levin , Tal Alon , Ariel Almog To: Jakub Kicinski Return-path: Received: from mail-eopbgr50049.outbound.protection.outlook.com ([40.107.5.49]:2880 "EHLO EUR03-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726389AbfAAJ7W (ORCPT ); Tue, 1 Jan 2019 04:59:22 -0500 In-Reply-To: <20181231174727.6280fc3c@cakuba.hsd1.ca.comcast.net> Content-Language: en-US Content-ID: Sender: netdev-owner@vger.kernel.org List-ID: DQoNCk9uIDEvMS8yMDE5IDM6NDcgQU0sIEpha3ViIEtpY2luc2tpIHdyb3RlOg0KPiBPbiBNb24s IDMxIERlYyAyMDE4IDE2OjMxOjU0ICswMjAwLCBFcmFuIEJlbiBFbGlzaGEgd3JvdGU6DQo+PiBU aGUgaGVhbHRoIG1lY2hhbmlzbSBpcyB0YXJnZXRlZCBmb3IgUmVhbCBUaW1lIEFsZXJ0aW5nLCBp biBvcmRlciB0byBrbm93IHdoZW4NCj4+IHNvbWV0aGluZyBiYWQgaGFkIGhhcHBlbmVkIHRvIGEg UENJIGRldmljZQ0KPj4gLSBQcm92aWRlIGFsZXJ0IGRlYnVnIGluZm9ybWF0aW9uDQo+PiAtIFNl bGYgaGVhbGluZw0KPj4gLSBJZiBwcm9ibGVtIG5lZWRzIHZlbmRvciBzdXBwb3J0LCBwcm92aWRl IGEgd2F5IHRvIGdhdGhlciBhbGwgbmVlZGVkIGRlYnVnZ2luZw0KPj4gICAgaW5mb3JtYXRpb24u DQo+Pg0KPj4gVGhlIG1haW4gaWRlYSBpcyB0byB1bmlmeSBhbmQgY2VudHJhbGl6ZSBkcml2ZXIg aGVhbHRoIHJlcG9ydHMgaW4gdGhlDQo+PiBnZW5lcmljIGRldmxpbmsgaW5zdGFuY2UgYW5kIGFs bG93IHRoZSB1c2VyIHRvIHNldCBkaWZmZXJlbnQNCj4+IGF0dHJpYnV0ZXMgb2YgdGhlIGhlYWx0 aCByZXBvcnRpbmcgYW5kIHJlY292ZXJ5IHByb2NlZHVyZXMuDQo+Pg0KPj4gVGhlIGRldmxpbmsg aGVhbHRoIHJlcG9ydGVyOg0KPj4gRGV2aWNlIGRyaXZlciBjcmVhdGVzIGEgImhlYWx0aCByZXBv cnRlciIgcGVyIGVhY2ggZXJyb3IvaGVhbHRoIHR5cGUuDQo+PiBFcnJvci9IZWFsdGggdHlwZSBj YW4gYmUgYSBrbm93bi9nZW5lcmljIChlZyBwY2kgZXJyb3IsIGZ3IGVycm9yLCByeC90eCBlcnJv cikNCj4+IG9yIHVua25vd24gKGRyaXZlciBzcGVjaWZpYykuDQo+PiBGb3IgZWFjaCByZWdpc3Rl cmVkIGhlYWx0aCByZXBvcnRlciBhIGRyaXZlciBjYW4gaXNzdWUgZXJyb3IvaGVhbHRoIHJlcG9y dHMNCj4+IGFzeW5jaHJvbm91c2x5LiBBbGwgaGVhbHRoIHJlcG9ydHMgaGFuZGxpbmcgaXMgZG9u ZSBieSBkZXZsaW5rLg0KPj4gRGV2aWNlIGRyaXZlciBjYW4gcHJvdmlkZSBzcGVjaWZpYyBjYWxs YmFja3MgZm9yIGVhY2ggImhlYWx0aCByZXBvcnRlciIsIGUuZy4NCj4+ICAgLSBSZWNvdmVyeSBw cm9jZWR1cmVzDQo+PiAgIC0gRGlhZ25vc3RpY3MgYW5kIG9iamVjdCBkdW1wIHByb2NlZHVyZXMN Cj4+ICAgLSBPT0IgaW5pdGlhbCBhdHRyaWJ1dGVzDQo+PiBEaWZmZXJlbnQgcGFydHMgb2YgdGhl IGRyaXZlciBjYW4gcmVnaXN0ZXIgZGlmZmVyZW50IHR5cGVzIG9mIGhlYWx0aCByZXBvcnRlcnMN Cj4+IHdpdGggZGlmZmVyZW50IGhhbmRsZXJzLg0KPj4NCj4+IE9uY2UgYW4gZXJyb3IgaXMgcmVw b3J0ZWQsIGRldmxpbmsgaGVhbHRoIHdpbGwgZG8gdGhlIGZvbGxvd2luZyBhY3Rpb25zOg0KPj4g ICAgKiBBIGxvZyBpcyBiZWluZyBzZW5kIHRvIHRoZSBrZXJuZWwgdHJhY2UgZXZlbnRzIGJ1ZmZl cg0KPj4gICAgKiBIZWFsdGggc3RhdHVzIGFuZCBzdGF0aXN0aWNzIGFyZSBiZWluZyB1cGRhdGVk IGZvciB0aGUgcmVwb3J0ZXIgaW5zdGFuY2UNCj4+ICAgICogT2JqZWN0IGR1bXAgaXMgYmVpbmcg dGFrZW4gYW5kIHNhdmVkIGF0IHRoZSByZXBvcnRlciBpbnN0YW5jZSAoYXMgbG9uZyBhcw0KPj4g ICAgICB0aGVyZSBpcyBubyBvdGhlciBPYmpkdW1wIHdoaWNoIGlzIGFscmVhZHkgc3RvcmVkKQ0K Pj4gICAgKiBBdXRvIHJlY292ZXJ5IGF0dGVtcHQgaXMgYmVpbmcgZG9uZS4gRGVwZW5kcyBvbjoN Cj4+ICAgICAgLSBBdXRvLXJlY292ZXJ5IGNvbmZpZ3VyYXRpb24NCj4+ICAgICAgLSBHcmFjZSBw ZXJpb2QgdnMuIHRpbWUgcGFzc2VkIHNpbmNlIGxhc3QgcmVjb3Zlcg0KPj4NCj4+IFRoZSB1c2Vy IGludGVyZmFjZToNCj4+IFVzZXIgY2FuIGFjY2Vzcy9jaGFuZ2UgZWFjaCByZXBvcnRlciBhdHRy aWJ1dGVzIGFuZCBkcml2ZXIgc3BlY2lmaWMgY2FsbGJhY2tzDQo+PiB2aWEgZGV2bGluaywgZS5n IHBlciBlcnJvciB0eXBlIChwZXIgaGVhbHRoIHJlcG9ydGVyKQ0KPj4gICAtIENvbmZpZ3VyZSBy ZXBvcnRlcidzIGdlbmVyaWMgYXR0cmlidXRlcyAobGlrZTogRGlzYWJsZS9lbmFibGUgYXV0byBy ZWNvdmVyeSkNCj4+ICAgLSBJbnZva2UgcmVjb3ZlcnkgcHJvY2VkdXJlDQo+PiAgIC0gUnVuIGRp YWdub3N0aWNzDQo+PiAgIC0gT2JqZWN0IGR1bXANCj4gDQo+IFRoYW5rcyBmb3IgY29udGludWlu ZyB0aGlzIHdvcmshDQo6KQ0KPiANCj4+IFRoZSBkZXZsaW5rIGhlYWx0aCBpbnRlcmZhY2UgKHZp YSBuZXRsaW5rKToNCj4+IERFVkxJTktfQ01EX0hFQUxUSF9SRVBPUlRFUl9HRVQNCj4+ICAgIFJl dHJpZXZlcyBzdGF0dXMgYW5kIGNvbmZpZ3VyYXRpb24gaW5mbyBwZXIgREVWIGFuZCByZXBvcnRl ci4NCj4+IERFVkxJTktfQ01EX0hFQUxUSF9SRVBPUlRFUl9TRVQNCj4+ICAgIEFsbG93cyByZXBv cnRlci1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gc2V0dGluZy4NCj4+IERFVkxJTktfQ01EX0hFQUxU SF9SRVBPUlRFUl9SRUNPVkVSDQo+PiAgICBUcmlnZ2VycyBhIHJlcG9ydGVyJ3MgcmVjb3Zlcnkg cHJvY2VkdXJlLg0KPj4gREVWTElOS19DTURfSEVBTFRIX1JFUE9SVEVSX0RJQUdOT1NFDQo+PiAg ICBSZXRyaWV2ZXMgZGlhZ25vc3RpY3MgZGF0YSBmcm9tIGEgcmVwb3J0ZXIgb24gYSBkZXZpY2Uu DQo+PiBERVZMSU5LX0NNRF9IRUFMVEhfUkVQT1JURVJfT0JKRFVNUF9HRVQNCj4gDQo+IFRoZSBh ZGRpdGlvbiBvZiAib2JqZHVtcCIgYW5kIGl0cyBtYXJzaGFsbGluZyBpcyBhIGJpdCBkaXNhcHBv aW50aW5nLg0KPiBJdCBzZWVtZWQgdG8gbWUgd2hlbiByZWdpb24gc25hcHNob3RzIHdlcmUgYWRk ZWQgdGhhdCB0aGV5IHdvdWxkIHNlcnZlDQo+IHRoaXMgZXhhY3QgcHVycG9zZS4gIFRha2luZyBh IHJlZ2lvbiBzbmFwc2hvdCBvciAiY29yZSBkdW1wIiwgaWYgeW91DQo+IHdpbGwsIGFmdGVyIHNv bWV0aGluZyB3ZW50IHNvdXRoLiAgTm93IGl0J3MgY29uZnVzaW5nIHRvIGhhdmUgdHdvDQo+IG1l Y2hhbmlzbXMgc2VydmluZyB0aGUgc2FtZSBwdXJwb3NlLg0KDQpUaGUgbW90aXZhdGlvbiBoZXJl IHdhcyB0aGF0IHRoZSBkcml2ZXIgY2FuIHByb3ZpZGUgcmVwb3J0ZXJzIHRvIGl0cyANCnN1Yi1t b2R1bGVzLCBzdWNoIHRoYXQgZWFjaCByZXBvcnRlciB3aWxsIGJlIGFibGUgdG8gcHJvdmlkZSBh bGwgbmVlZGVkIA0KaW5mbyBhbmQgcmVjb3ZlciBtZXRob2RzIHRvIGZhY2UgcnVuIHRpbWUgZXJy b3JzLg0KDQpUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIG9iamR1bXAgZnVuY3Rpb24gaXMgaW4g dGhlIGhhbmRzIG9mIHRoZSANCnJlcG9ydGVyIGRldmVsb3BlciwgYW5kIGhlIGNhbiBkdW1wIHdo YXRldmVyIGhlIHRoaW5rcyBpdCBpcyBuZWVkZWQuDQpLZWVwIGluIG1pbmQgdGhhdCBhIGRyaXZl ciBjYW4gaGF2ZSBtYW55IHJlcG9ydGVycyAoVFgsIFJYLCBGVywgY29tbWFuZCANCmludGVyZmFj ZSwgZXRjKS4gRm9yIG1vc3Qgb2YgdGhlIHJlcG9ydGVycywgdGhlcmUgaXMgaW1wb3J0YW50IA0K aW5mb3JtYXRpb24gaW4gdGhlIGRyaXZlciB3aGljaCBjYW4gbm90IGJlIGZldGNoZWQgd2l0aCBy ZWdpb24gc25hcHNob3QgDQooaW50ZW5kZWQgZm9yIG1lbW9yeSBmZXRjaGluZyBvbmx5KS4NCkZv ciBTVyBpbmZvLCBkcml2ZXIgc2hhbGwgYnVpbGQgdGhlIGluZm8gYW5kIHNlbmQgaXQgaW50ZXJw cmV0ZWQgKHVubGlrZSANCmFsbCBkdW1wcyAvIHJlZ2lvbiBhdmFpbGFibGUgbWVjaGFuaXNtcykN CkkgaGF2ZSBpbiBwbGFucyB0byBleHRlbmQgdGhlIFRYIHJlcG9ydGVyIHRvIGhhdmUgb2JqZHVt cCBtZXRob2QgaW4gDQp3aGljaCBJIHdpbGwgcGFzcyBtYW55IFNRIFNXIGF0dHJpYnV0ZXMgdGhh dCBjYW4gYmUgdmVyeSBoYW5keSBpbiBhIA0KZGVidWcgc2Vzc2lvbi4NCg0KPiANCj4gSXQncyB1 bmNsZWFyIGZyb20gcXVpY2sgcmVhZGluZyBvZiB0aGUgY29kZSBob3cgaWYgdGhlIGJ1ZmZlcnMg Z2V0DQo+IHRpbWVzdGFtcGVkLiAgQ2FuIHlvdSByZXBvcnQgbW9yZSB0aGFuIG9uZT8NCg0KVGhl IHRpbWVzdGFtcCB3aGljaCBkZXZsaW5rIGhlYWx0aCByZXBvcnRzIG9uLCBpcyB0aGUgdGltZXN0 YW1wIGluIHdoaWNoIA0KaXQgZ290IHRoZSBidWZmZXJzIGZpbGxlZCBieSB0aGUgZHJpdmVyLiBF dmVyeSBkdW1wL2RpYWdub3NlIGhhcyBvbmUgdHMuDQpQZXIgcmVwb3J0ZXIsIGl0IGlzIHBvc3Np YmxlIHRvIHN0b3JlIHVwIHRvIG9uZSBkdW1wLiBvbmx5IGNsZWFyIGNvbW1hbmQgDQpjYW4gcmVt b3ZlIGl0IGFuZCBtYWtlcyB0aGUgcmVwb3J0ZXIgcmVhZHkgdG8gZmV0Y2ggYSBuZXcgb2JqZHVt cC4NCg0KPiANCj4gQWJvdXQgdGhlIG1hcnNoYWxsaW5nLCBJJ20gbm90IHN1cmUgaXQgYmVsb25n cyBpbiB0aGUga2VybmVsLiAgVGhlcmUgaXMNCj4gcHJlY2VkZW50IGZvciBhZGRpbmcgaW50ZXJw cmV0YXRpb24gb2YgRlcgYmxvYnMgaW4gdXNlciBzcGFjZSAoZXRodG9vbCkuDQo+IElNSE8gaXQn cyBhIG1vcmUgc2NhbGFibGUgYXBwcm9hY2gsIGlmIHdlIHdhbnQgdG8gYXZvaWQgaGF2aW5nIDEw MCBrTG9DDQo+IGRyaXZlcnMuICBBbW91bnQgb2YgY29kZSB5b3UgYWRkIHRvIHByaW50IHRoZSBz aW1wbGUgZXhhbXBsZSBmcm9tIGxhc3QNCj4gcGF0Y2ggaXMgbm90IGluc3BpcmluZyBjb25maWRl bmNlLg0KDQpUaGUgaWRlYSB3YXMgdG8gcHJvdmlkZSB0aGUgZGV2ZWxvcGVyIHRoZSBhYmlsaXR5 IHRvIGNyZWF0ZSAidHJlZS1saWtlIiANCm9mIGluZm9ybWF0aW9uLCBpdCBpcyBuZWVkZWQgd2hl biB5b3Ugd2FudCB0byBkZXNjcmliZSBjb21wbGV4IG9iamVjdHMuIA0KVGhpcyBjYXVzZWQgYSBs b25nZXIgY29kaW5nLCBidXQgSSBkb24ndCB0aGluayB3ZSBhcmUgZXZlbiBjbG9zZSB0byB0aGUg DQpzY2FsZSB5b3UgYXJlIHRhbGtpbmcgYWJvdXQuDQpXZSBjYW4gcmVtb3ZlIHRoZSB0cmVlIGZs ZXhpYmlsaXR5LCBhbmQgbW92ZSB0byBhcnJheSBmb3JtYXQsIGl0IHdpbGwgDQptYWtlIHRoZSBj b2RlIG9mIHN0b3JpbmcgZGF0YSBieSB0aGUgZHJpdmVyIHRvIGJlIHNob3J0ZXIsIGJ1dCB3ZSB3 aWxsIA0KbG9zZSB0aGUgYWJpbGl0eSB0byBoYXZlIGl0IGluIHRyZWUtbGlrZSBmb3JtYXQuDQoN CkFuZCBhZ2FpbiwgcmVnYXJkaW5nIGV0aHRvb2wsIGl0IGlzIGEgdG9vbCBmb3IgZHVtcGluZyBI Vy9GVywgdGhpcyBjb3VsZCANCmhhdmUgYmVlbiBhbiBhcmd1bWVudCBmb3IgdGhlIHJlZ2lvbiBz bmFwc2hvdCwgbm90IGZvciB0aGUgZGV2bGluayBoZWFsdGguLi4NCg0KPiANCj4gQW5kIG9uIHRo ZSBiaWtlIHNoZWRkaW5nIHNpZGUgOikgLT4gSSB0aGluayB5b3Ugc2hvdWxkIHN0ZWVyIGNsZWFy IG9mDQo+IGNhbGxpbmcgdGhpcyBvYmpkdW1wLCBhcyBpdCBoYXMgdmVyeSBsaXR0bGUgdG8gZG8g d2l0aCB0aGUNCj4gZnVuY3Rpb25hbGl0eSBvZiB3ZWxsLWtub3duIG9iamR1bXAgdG9vbC4gIEl0 cyBub3QgZXZlbiBjbGVhciB3aGF0IHRoZQ0KPiBvYmplY3QgdGhlIG5hbWUgaXMgcmVmZXJyaW5n IHRvIGlzLg0KTGV0J3MgYWdyZWUgb24gY29uY2VwdCwgd2UgY2FuIGNoYW5nZSBuYW1lIHRvIGR1 bXAuIFJlcG9ydGVyLT5kdW1wIGlzIA0KdmVyeSBjbGVhciB3aGVuIHlvdSBrbm93IHdoYXQgdGhl IHJlcG9ydGVyIGlzLg0KPiANCj4gTG9uZyBzdG9yeSBzaG9ydCB0aGUgb3ZlcmxhcCB3aXRoIHJl Z2lvbiBzbmFwc2hvdHMgbWFrZXMgaXQgdW5jbGVhcg0KPiB3aGF0IHB1cnBvc2UgZWl0aGVyIHNl cnZlcywgYW5kIElNSE8gd2Ugc2hvdWxkIGF2b2lkIHRoZSBtYXJzaGFsbGluZyBieQ0KPiB0ZWFj aGluZyB1c2VyIHNwYWNlIGhvdyB0byBpbnRlcnByZXQgc25hcHNob3RzLiAgUHJlZmVyYWJseSB3 ZSBvbmx5DQo+IGhhdmUgb25lIGR1bXAgbWVjaGFuaXNtLCBhbmQgdXNlciBzcGFjZSBjYW4gYmUg dGF1Z2h0IHRoZSBpbnRlcnByZXRhdGlvbg0KPiBvbmNlLg0KRm9yY2luZyBTVyByZXBvcnRlcnMg dG8gdXNlIHJlZ2lvbiBzbmFwc2hvdCBtZWNoYW5pc20gc291bmRzIGxpa2UgYSBiYWQgDQppZGVh Lg0KDQpUbyBzdW1tYXJpemUsIEluIG9yZGVyIHRvIGhhdmUgdGhlIGhlYWx0aCBzeXN0ZW0gd29y a2luZyBwcm9wZXJseSwgaXQgDQptdXN0IGhhdmUgYSB3YXkgdG8gb2JqZHVtcC9kdW1wIGl0c2Vs ZiBhbmQgcHJvdmlkZSBpdCB0byB0aGUgZGV2ZWxvcGVyIA0KZm9yIGRlYnVnLiBSZW1vdmluZyB0 aGUgb2JqZHVtcCBwYXJ0IHdpbGwgbWFrZSBpdCB1c2VsZXNzIGZvciBydW4tdGltZSANCmRlYnVn Lg0KDQpJIHRoaW5rIHRoaXMgaXMgYSBwb3dlcmZ1bCB0b29sIGFuZCB3ZSBzaGFsbCBub3QgYXNr IHRoZSB1c2VyIGxldmVsIA0Kc2NyaXB0cyB0byBmZXRjaCBpbmZvIGZyb20gbWFueSBvdGhlciBw YXJ0aWFsIHRvb2xzLiBJdCBzaGFsbCBhbGwgYmUgDQpmb2N1c2VkIGluIG9uZSBwbGFjZSAocmVj b3ZlciwgZGlhZ25vc2UsIG9iamR1bXAsIHN0YXRpc3RpY3MpLg0KDQo+IA0KPj4gICAgUmV0cmll dmVzIHRoZSBsYXN0IHN0b3JlZCBvYmpkdW1wLiBEZXZsaW5rIGhlYWx0aA0KPj4gICAgc2F2ZXMg YSBzaW5nbGUgb2JqZHVtcC4gSWYgYW4gb2JqZHVtcCBpcyBub3QgYWxyZWFkeSBzdG9yZWQgYnkg dGhlIGRldmxpbmsNCj4+ICAgIGZvciB0aGlzIHJlcG9ydGVyLCBkZXZsaW5rIGdlbmVyYXRlcyBh IG5ldyBvYmpkdW1wLg0KPj4gICAgT2JqZHVtcCBvdXRwdXQgaXMgZGVmaW5lZCBieSB0aGUgcmVw b3J0ZXIuDQo+PiBERVZMSU5LX0NNRF9IRUFMVEhfUkVQT1JURVJfT0JKRFVNUF9DTEVBUg0KPj4g ICAgQ2xlYXJzIHRoZSBsYXN0IHNhdmVkIG9iamR1bXAgZmlsZSBmb3IgdGhlIHNwZWNpZmllZCBy ZXBvcnRlci4NCj4+DQo+Pg0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmV0bGluaw0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICsgICAgICAg ICAgICAgfA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgICAgICAgICAgICAgfA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxyZXF1ZXN0IGZvciBvcHMNCj4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8KGRp YWdub3NlLA0KPj4gICBtbHg1X2NvcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmxp bmsgICAgIHxyZWNvdmVyLA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHxkdW1wKQ0KPj4gKy0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+PiB8ICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgcmVwb3J0ZXJ8ICAgICAgICAgICAgIHwNCj4+IHwg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0tLXYtLS0tLS0t LS0tKyAgfA0KPj4gfCAgICAgICAgfCAgIG9wcyBleGVjdXRpb24gICAgICAgICAgICB8ICB8ICAg ICAgICAgICAgICAgICAgICB8ICB8DQo+PiB8ICAgICA8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgIHwgIHwNCj4+IHwgICAgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgfCAgfA0KPj4gfCAg ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICArIF4tLS0tLS0tLS0tLS0tLS0t LS0rICB8DQo+PiB8ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgfCBy ZXF1ZXN0IGZvciBvcHMgICAgIHwNCj4+IHwgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICB8IChyZWNvdmVyLCBkdW1wKSAgICAgfA0KPj4gfCAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgIHwgICAgICAgICAgICAgICAgICAgICB8DQo+PiB8ICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICstKy0tLS0tLS0tLS0tLS0tLS0t LSsgIHwNCj4+IHwgICAgICAgIHwgICAgIGhlYWx0aCByZXBvcnQgICAgICAgICAgfCAgfCBoZWFs dGggaGFuZGxlciAgICAgfCAgfA0KPj4gfCAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0+ICAgICAgICAgICAgICAgICAgICB8ICB8DQo+PiB8ICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tLSsgIHwNCj4+IHwgICAg ICAgIHwgICAgIGhlYWx0aCByZXBvcnRlciBjcmVhdGUgfCAgICAgICAgICAgICAgICAgICAgICAg ICAgfA0KPj4gfCAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+ICAgICAgICAg ICAgICAgICAgICAgICAgICB8DQo+PiArLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4+DQo+PiBBdmFpbGFibGUgcmVwb3J0 ZXJzOg0KPj4gSW4gdGhpcyBwYXRjaHNldCwgdGhyZWUgcmVwb3J0ZXJzIG9mIG1seDVlIGRyaXZl ciBhcmUgaW5jbHVkZWQuIFRoZSBGVw0KPj4gcmVwb3J0ZXJzIGltcGxlbWVudCBkZXZsaW5rX2hl YWx0aF9yZXBvcnRlciBkaWFnbm9zdGljLCBvYmplY3QgZHVtcCBhbmQNCj4+IHJlY292ZXJ5IHBy b2NlZHVyZXMuIFRoZSBUWCByZXBvcnRlciBpbXBsZW1lbnRzIGRldmxpbmtfaGVhbHRoX3JlcG9y dGVyDQo+PiBkaWFnbm9zdGljIGFuZCByZWNvdmVyeSBwcm9jZWR1cmVzLg0KPj4NCj4+IFRoaXMg UkZDIGlzIGJhc2VkIG9uIHRoZSBzYW1lIGNvbmNlcHRzIGFzIHByZXZpb3VzIFJGQyBJIHNlbnQg ZWFybGllciB0aGlzDQo+PiB5ZWFyOiAiW1JGQyBQQVRDSCBpcHJvdXRlMi1uZXh0XSBTeXN0ZW0g c3BlY2lmaWNhdGlvbiBoZWFsdGggQVBJIi4gVGhlIEFQSSB3YXMNCj4+IGNoYW5nZWQsIGFsc28g ZGV2bGluayBjb2RlIGFuZCBtbHg1ZSByZXBvcnRlcnMgd2VyZSBub3QgYXZhaWxhYmxlIGF0IHRo ZQ0KPj4gcHJldmlvdXMgUkZDLg0K