From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: From: Paul Kocialkowski Date: Fri, 10 May 2019 10:00:43 +0200 In-Reply-To: References: <20190506175123.16445-1-imre.deak@intel.com> <20190508082442.7800-1-imre.deak@intel.com> <0a6aa43b2bc6db4e6b6f0fa3b31749cd62764160.camel@bootlin.com> <20190509120845.GC11264@ideak-desk.fi.intel.com> <856d50c4dfb80a98d73ed93bc0edf7ef8cc008d0.camel@bootlin.com> <274ecc5762db9314ef39fb2d9cec852b652b902c.camel@redhat.com> <419d16c1869b4f63e79fa9cf0f14dd32aa0db502.camel@intel.com> <6c87fea83175c1790a32c55d128d751eb43185a6.camel@bootlin.com> MIME-Version: 1.0 Subject: Re: [igt-dev] Improving DRM connector hotplug uevents List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Daniel Vetter Cc: "igt-dev@lists.freedesktop.org" , dri-devel , David Airlie , Thomas Petazzoni , Sean Paul List-ID: SGksCgpPbiBGcmksIDIwMTktMDUtMTAgYXQgMDk6NTYgKzAyMDAsIERhbmllbCBWZXR0ZXIgd3Jv dGU6Cj4gT24gRnJpLCBNYXkgMTAsIDIwMTkgYXQgOTo0MiBBTSBQYXVsIEtvY2lhbGtvd3NraQo+ IDxwYXVsLmtvY2lhbGtvd3NraUBib290bGluLmNvbT4gd3JvdGU6Cj4gPiBIaSwKPiA+IAo+ID4g U28gdGhpcyB0aHJlYWQgaGFzIGRyaWZ0ZWQgb2ZmIGZyb20gSUdUIHRvIGEgZ2VuZXJhbCBEUk0g aW1wcm92ZW1lbnQsCj4gPiBzbyByZW5hbWluZyB0aGUgdGhyZWFkIGFuZCBhZGRpbmcgc29tZSBD Q3MuCj4gPiAKPiA+IEl0J3MgYWJvdXQgYXZvaWRpbmcgZnVsbCByZXByb2JlcyAod2hpY2ggbWF5 IGluY2x1ZGUgc2xvdyBFRElEIHJlYWRzLAo+ID4gZXRjKSB3aGVuIGEgY29ubmVjdG9yIGNoYW5n ZSB3YXMgZGV0ZWN0ZWQsIGJ5IHByb3ZpZGluZyBpbmZvcm1hdGlvbgo+ID4gYWJvdXQgdGhlIGNv bm5lY3RvciBhbmQgdGhlIG5ldyBzdGF0ZSB0byB1c2Vyc3BhY2UuIFRoaXMgd2F5LCB1c2Vyc3Bh Y2UKPiA+IGNhbiByZXByb2JlIHRoZSBjaGFuZ2VkIGNvbm5lY3RvciBhbG9uZSAob3Igbm90IHJl cHJvYmUgYXQgYWxsIGluIGNhc2UKPiA+IG9mIGEgZGlzY29ubmVjdCkuCj4gPiAKPiA+IEl0IGZl ZWxzIGxpa2UgdGhlcmUgaXMgZ3Jvd2luZyB0ZW1wdGF0aW9uIHRvIGhhdmUgcGVyLWRyaXZlciBo YWNrcyB0bwo+ID4gYXZvaWQgZnVsbCByZXByb2JlcyB3aGVuIHRoZSBkcml2ZXIga25vd3MgdGhh dCBub3RoaW5nIGNoYW5nZWQsIGJ1dCBJCj4gPiB0aGluayBpdCBtYWtlcyBtb3JlIHNlbnNlIHRv IGZpeHVwIHRoZSB1ZXZlbnQgd2Ugc2VuZCB0byBtYWtlIHN1cmUgdGhhdAo+ID4gdXNlcnNwYWNl IGtub3dzIHdoYXQgdG8gcHJvYmUgZXhhY3RseS4KPiA+IAo+ID4gT24gRnJpLCAyMDE5LTA1LTEw IGF0IDA2OjU1ICswMDAwLCBTZXIsIFNpbW9uIHdyb3RlOgo+ID4gPiBPbiBUaHUsIDIwMTktMDUt MDkgYXQgMTE6NTYgLTA0MDAsIEx5dWRlIFBhdWwgd3JvdGU6Cj4gPiA+ID4gSSdtIGluIHN1cHBv cnQgb2YgdGhpcyBhcyB3ZWxsLCB3ZSByZWFsbHkgY291bGQgdXNlIGJldHRlciBob3RwbHVnIGV2 ZW50cy4KPiA+ID4gPiBGZWVsIGZyZWUgdG8gY2MgcGF0Y2hlcyB0byBtZSBmb3IgcmV2aWV3IDop Cj4gPiA+IAo+ID4gPiBBbnkgaWRlYShzKSBob3cgdGhlIEFQSSB3b3VsZCBsb29rIGxpa2U/Cj4g PiAKPiA+IEZyb20gYSBxdWljayBjaGF0IG9uIElSQyB5ZXN0ZXJkYXksIGl0IHNlZW1zIHRoYXQg anVzdCBhZGRpbmcgZW50cmllcwo+ID4gdG8gdGhlIHVldmVudCB3b3VsZCBkbyBhbmQgd291bGQg YmUgYmFja3dhcmRzLWNvbXBhdGlibGUgKHdlbGwsCj4gPiBwcm92aWRlZCB0aGF0IHRoZSB1c2Vy c3BhY2UgdWV2ZW50IHBhcnNlcnMgd2lsbCBub3QgZmFpbCBpZiBzb21ldGhpbmcKPiA+IGV4dHJh IHRvICJIT1RQTFVHPTEiIGlzIHByb3ZpZGVkKS4KPiA+IAo+ID4gQ3VycmVudGx5LCB0aGUgbm90 aWZpY2F0aW9uIGlzIHNlbnQgZ2xvYmFsbHkgYXQgZWFjaCByb3VuZCBvZiBkZXRlY3RlZAo+ID4g Y29ubmVjdG9yIGNoYW5nZSAod2hpY2ggbWF5IGNvbmNlcm4gbXVsdGlwbGUgY29ubmVjdG9ycyku IFNvIEkgdGhpbmsgd2UKPiA+IHNob3VsZCBqdXN0IGxpc3QgdGhlIGNvbm5lY3RvcnMgdGhhdCBj aGFuZ2VkIGluIHRoZSB1ZXZlbnQgYW5kIHRoZWlyCj4gPiBuZXcgc3RhdGUuIFNvIG15IHByb3Bv c2FsIGhlcmUgaXMgc29tZXRoaW5nIGxpa2U6Cj4gPiAKPiA+IEhPVFBMVUc9MQo+ID4gQ09OTkVD VE9SX0lEPTQ3Cj4gPiBTVEFUVVM9Q29ubmVjdGVkCj4gPiBDT05ORUNUT1JfSUQ9NDgKPiA+IFNU QVRVUz1EaXNjb25uZWN0ZWQKPiA+IAo+ID4gV2hlcmUgZWFjaCBTVEFUVVMgZW50cnkgd291bGQg cmVmZXIgdG8gdGhlIHByZXZpb3VzIENPTk5FQ1RPUl9JRCBlbnRyeS4KPiA+IAo+ID4gV2hhdCBk byB5b3UgdGhpbms/Cj4gCj4gV2UgaGF2ZSB0aGUgYmV0dGVyIHVldmVudCBhbHJlYWR5LCBhbGwg d2UgbmVlZCBpcyB3aXJpbmcgdXAsIGxvdHMgb2YKPiBjb2RlLCBhbmQgdXNlcnNwYWNlIGZvciBp dC4gT2ssIG5vdCBxdWl0ZSwgcGF0Y2ggaXMgc3RpbGwgaW4gZmxpZ2h0Ogo+IAo+IGh0dHBzOi8v cGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvMTA5MDY2NzcvCgpBaCBncmVhdCB0byBzZWUgdGhh dCEKCj4gVGhlIHJlYWwgdHJvdWJsZSBpc24ndCB0aGUgbmV3IGV2ZW50LCBidXQgbWFraW5nIHN1 cmUgaXQgZ29lcyBvdXQgZm9yCj4gYW55dGhpbmcgdGhhdCBtaWdodCBoYXZlIGNoYW5nZWQuIFRo ZXJlJ3MgYSBsb3QgbW9yZSBjb25uZWN0b3Igc3RhdHVzCj4gdGhhbiBqdXN0IHRoZSBTVEFUVVMg cHJvcGVydHkuCgpXaHkgdGhvdWdoPyBJIHRob3VnaHQgdGhpcyB3YXMgYSBob3RwbHVnIGludGVy ZmFjZSwgbm90IGEgZ2VuZXJhbAoic29tZXRoaW5nLWFib3V0LXRoZS1jb25uZWN0b3ItY2hhbmdl ZCIuIFRvIG1lLCBob3RwbHVnIGlzIHByZXR0eQpiaW5hcnk6IGVpdGhlciBpdCdzIGNvbm5lY3Rl ZCwgZWl0aGVyIGl0J3Mgbm90LgoKRG8gd2UgYWxyZWFkeSBzZW5kIG91dCBob3RwbHVnIHVldmVu dHMgd2hlbiBzb21ldGhpbmcgZWxzZSB0aGFuIHRoZQpzdGF0dXMgY2hhbmdlZD8gSWYgc28sIG1h eWJlIHdlIHNob3VsZCBjb25zaWRlciBoYW5kbGluZyB0aGUgcmVzdApzZXBhcmF0ZWx5IGZyb20g aG90cGx1Zy4KCkxvb2tpbmcgYXQgZHJtX3Byb2JlX2hlbHBlci5jJ3Mgb3V0cHV0X3BvbGxfZXhl Y3V0ZSwgbXkgdW5kZXJzdGFuZGluZwppcyB0aGF0IGRybV9rbXNfaGVscGVyX2hvdHBsdWdfZXZl bnQgaXMgb25seSBjYWxsZWQgd2hlbiB0aGUgc3RhdHVzCmNoYW5nZWQsIG5vdCBvdGhlciBwcm9w cy4gCgpDaGVlcnMsCgpQYXVsCgo+IC1EYW5pZWwKPiAKPiA+IENoZWVycywKPiA+IAo+ID4gUGF1 bAo+ID4gCj4gPiA+ID4gT24gVGh1LCAyMDE5LTA1LTA5IGF0IDE0OjI0ICswMjAwLCBQYXVsIEtv Y2lhbGtvd3NraSB3cm90ZToKPiA+ID4gPiA+IEhpLAo+ID4gPiA+ID4gCj4gPiA+ID4gPiBPbiBU aHUsIDIwMTktMDUtMDkgYXQgMTU6MDggKzAzMDAsIEltcmUgRGVhayB3cm90ZToKPiA+ID4gPiA+ ID4gT24gVGh1LCBNYXkgMDksIDIwMTkgYXQgMDk6MjU6NDFBTSArMDIwMCwgUGF1bCBLb2NpYWxr b3dza2kgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gT24gV2VkLCAyMDE5LTA1LTA4IGF0IDExOjI0ICsw MzAwLCBJbXJlIERlYWsgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gPiBBZnRlciBzY2hlZHVsaW5nIGFu IEhQRCB0b2dnbGUgZXZlbnQsIG1ha2Ugc3VyZSB0aGF0IHdlIHdhaXQgZm9yIHRoZQo+ID4gPiA+ ID4gPiA+ID4gaG90cGx1ZyBldmVudCBmb3IgZWFjaCBjb25uZWN0b3IgdGhhdCBtYXkgYmUgc2Vu dCBieSB0aGUgZHJpdmVyLgo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBEZXBlbmRp bmcgb24gdGhlIHNjaGVkdWxpbmcgdGhlcmUgY291bGQgYmUgMSBldmVudCBvciBhcyBtYW55IGV2 ZW50cwo+ID4gPiA+ID4gPiA+ID4gYXMKPiA+ID4gPiA+ID4gPiA+IGNvbm5lY3RvcnMgd2Ugc2No ZWR1bGVkIGFuIEhQRCB0b2dnbGUgZXZlbnQgb24sIGRlcGVuZGluZyBvbiB0aGUKPiA+ID4gPiA+ ID4gPiA+IHRpbWluZy4KPiA+ID4gPiA+ID4gPiA+IFNvIGlmIHdlIGRvbid0IHlldCBzZWUgdGhl IGV4cGVjdGVkIGNvbm5lY3RvciBzdGF0ZSBvbiBhIGdpdmVuCj4gPiA+ID4gPiA+ID4gPiBjb25u ZWN0b3IKPiA+ID4gPiA+ID4gPiA+IHRyeSB0byB3YWl0IGZvciBhbiBhZGRpdGlvbmFsIGhvdHBs dWcgZXZlbnQgYW5kIHJlcHJvYmUvcmVjaGVjayB0aGUKPiA+ID4gPiA+ID4gPiA+IHN0YXRlLgo+ ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IFRoaXMgY2hhbmdlcyBtYWtlcyBnb29kIHNlbnNl IHRvIG1lLCBzbzoKPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBSZXZpZXdlZC1CeTogUGF1 bCBLb2NpYWxrb3dza2kgPHBhdWwua29jaWFsa293c2tpQGJvb3RsaW4uY29tPgo+ID4gPiA+ID4g PiA+IAo+ID4gPiA+ID4gPiA+IEFuZCBpdCBicmluZ3MgYmFjayBoYXJkIGZlZWxpbmdzIGFib3V0 IHRoZSBob3RwbHVnIGludGVyZmFjZSB3ZSBoYXZlCj4gPiA+ID4gPiA+ID4gdG9kYXkuLi4KPiA+ ID4gPiA+ID4gCj4gPiA+ID4gPiA+IFllcywgSSB3YXMgc3VycHJpc2VkIHRvbyBub3QgZmluZCBh bnkgd2F5IHRvIGlkZW50aWZ5IHdoaWNoIGNvbm5lY3RvcihzKQo+ID4gPiA+ID4gPiB0aGUgaG90 cGx1ZyBldmVudCBpcyBhc3NvY2lhdGVkIHdpdGguIFdlIGRpc2N1c3NlZCB3aXRoIFZpbGxlIGlm IGl0J2QKPiA+ID4gPiA+ID4gbWFrZSBzZW5zZSB0byBhZGQgYSBjb25uZWN0b3IgSUQgbWFwIHRv IHRoZSB1ZXZlbnQsIGJ1dCBub3Qgc3VyZSBpZiBpdCdkCj4gPiA+ID4gPiA+IGJlIHVzZWZ1bCBv dXRzaWRlIG9mIHRoaXMgdGVzdCwgb3IgaG93IHRoYXQgd291bGQgYWxpZ24gd2l0aCBDaHJpcycK PiA+ID4gPiA+ID4gY29ubmVjdG9yIHByb2JlIHN0YXRlIGdlbmVyYXRpb24gaWRlYS4KPiA+ID4g PiA+IAo+ID4gPiA+ID4gRWl0aGVyIHdheSwgSSdtIGRlZmluaXRlbHkgaW4gZmF2b3Igb2YgaGF2 aW5nIHNvbWV0aGluZyBtb3JlIHJlbGlhYmxlCj4gPiA+ID4gPiB0byBleHBvc2UgdG8gdXNlcnNw YWNlLiBIYXZpbmcgc29tZXRoaW5nIHRvIGNvcnJlbGF0ZSBlYWNoIGV2ZW50IHRvIG9uZQo+ID4g PiA+ID4gKG9yIG1vcmUpIGNvbm5lY3RvcihzKSBzb3VuZHMgZ29vZCB0byBtZS4KPiA+ID4gPiA+ IAo+ID4gPiA+ID4gQW5kIEkgdGhpbmsgdGhlcmUgaXMgYSBnZW5lcmFsIG5lZWQgZm9yIHRoaXMs IGl0J3Mgbm90IGp1c3QgSUdULgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBDdXJyZW50bHksIGV2ZXJ5 IHVzZXJzcGFjZSBhcHBsaWNhdGlvbiB1c2luZyBEUk0gaGFzIHRvIGRvIGEgZnVsbAo+ID4gPiA+ ID4gcmVwcm9iZSBvbmNlIGEgaG90cGx1ZyB1ZXZlbnQgaXMgcmVjZWl2ZWQsIHdoaWNoIGlzIHJl YWxseSBub3Qgb3B0aW1hbC4KPiA+ID4gPiA+IElmIGFuIGVudHJ5IGlkZW50aWZ5aW5nIHRoZSBj b25uZWN0b3Igd2FzIGFsc28gcHJvdmlkZWQsIHVzZXJzcGFjZQo+ID4gPiA+ID4gY291bGQgb25s eSByZXByb2JlIHRoYXQgY29ubmVjdG9yLiBUaGUgc3RlcCBhZnRlciB0aGF0IHdvdWxkIGJlIGhh dmluZwo+ID4gPiA+ID4gdGhlIGluZGljYXRpb24gb2Ygd2hldGhlciB0aGUgY29ubmVjdG9yIHdh cyBjb25uZWN0ZWQgb3IgZGlzY29ubmVjdGVkCj4gPiA+ID4gPiBkaXJlY3RseSBpbiB1ZXZlbnQg dG9vLCBzbyB0aGF0IG5vIHByb2JpbmcgbmVlZHMgdG8gYmUgZG9uZSBhdCBhbGwgd2hlbgo+ID4g PiA+ID4gYSBnaXZlbiBjb25uZWN0b3IgaXMgZGlzY29ubmVjdGVkLgo+ID4gPiA+ID4gCj4gPiA+ ID4gPiBBbnl3YXksIGlmIHlvdSdyZSBpbnRlcmVzdGVkIGluIHRoZSBpZGVhIGFuZCB0aGF0IFZp bGxlIGFuZCBDaHJpcyBhcmUKPiA+ID4gPiA+IGluIGZhdm9yLCBJIHJlYWxseSB0aGluayBpdCB3 b3VsZCBiZSB3b3J0aCBmaXhpbmcgdGhhdC4gQW5kIHdlJ2Qgb25seQo+ID4gPiA+ID4gYmUgYWRk aW5nIG5ldyBlbGVtZW50cyB0byB1ZXZlbnQsIHNvIHRoYXQgd291bGQgc3RheSBiYWNrd2FyZC0K PiA+ID4gPiA+IGNvbXBhdGlibGUgdG9vLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBDaGVlcnMsCj4g PiA+ID4gPiAKPiA+ID4gPiA+IFBhdWwKPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gdjI6Cj4g PiA+ID4gPiA+ID4gPiAtIHMvaWd0X2Fzc2VydCh4ID49IHkpL2lndF9hc3NlcnRfbHRlKHksIHgp LyB0byBzZWUgdGhlIGFjdHVhbCBsaW1pdHMKPiA+ID4gPiA+ID4gPiA+IGluCj4gPiA+ID4gPiA+ ID4gPiAgIHRoZSBkZWJ1Z2dpbmcgb3V0cHV0LiAoTHl1ZGUpCj4gPiA+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gPiA+IEJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3df YnVnLmNnaT9pZD0xMTA1MzQKPiA+ID4gPiA+ID4gPiA+IENjOiBQYXVsIEtvY2lhbGtvd3NraSA8 cGF1bC5rb2NpYWxrb3dza2lAYm9vdGxpbi5jb20+Cj4gPiA+ID4gPiA+ID4gPiBDYzogTHl1ZGUg UGF1bCA8bHl1ZGVAcmVkaGF0LmNvbT4KPiA+ID4gPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IElt cmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPiA+ID4gPiA+ID4gPiA+IFJldmlld2VkLWJ5 OiBMeXVkZSBQYXVsIDxseXVkZUByZWRoYXQuY29tPgo+ID4gPiA+ID4gPiA+ID4gLS0tCj4gPiA+ ID4gPiA+ID4gPiAgdGVzdHMva21zX2NoYW1lbGl1bS5jIHwgNDUgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tCj4gPiA+ID4gPiA+ID4gPiAtCj4gPiA+ID4gPiA+ID4g PiAgMSBmaWxlIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCj4gPiA+ ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS90ZXN0cy9rbXNfY2hhbWVs aXVtLmMgYi90ZXN0cy9rbXNfY2hhbWVsaXVtLmMKPiA+ID4gPiA+ID4gPiA+IGluZGV4IDcxNGU1 ZTA2Li41MDJmMWVmYSAxMDA2NDQKPiA+ID4gPiA+ID4gPiA+IC0tLSBhL3Rlc3RzL2ttc19jaGFt ZWxpdW0uYwo+ID4gPiA+ID4gPiA+ID4gKysrIGIvdGVzdHMva21zX2NoYW1lbGl1bS5jCj4gPiA+ ID4gPiA+ID4gPiBAQCAtMjg0LDExICsyODQsMzIgQEAgdGVzdF9lZGlkX3JlYWQoZGF0YV90ICpk YXRhLCBzdHJ1Y3QKPiA+ID4gPiA+ID4gPiA+IGNoYW1lbGl1bV9wb3J0ICpwb3J0LAo+ID4gPiA+ ID4gPiA+ID4gICAgIGRybU1vZGVGcmVlQ29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gPiA+ID4gPiA+ ID4gPiAgfQo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiArLyogV2FpdCBmb3IgaG90 cGx1ZyBhbmQgcmV0dXJuIHRoZSByZW1haW5pbmcgdGltZSBsZWZ0IGZyb20gdGltZW91dAo+ID4g PiA+ID4gPiA+ID4gKi8KPiA+ID4gPiA+ID4gPiA+ICtzdGF0aWMgYm9vbCB3YWl0X2Zvcl9ob3Rw bHVnKHN0cnVjdCB1ZGV2X21vbml0b3IgKm1vbiwgaW50ICp0aW1lb3V0KQo+ID4gPiA+ID4gPiA+ ID4gK3sKPiA+ID4gPiA+ID4gPiA+ICsgICBzdHJ1Y3QgdGltZXNwZWMgc3RhcnQsIGVuZDsKPiA+ ID4gPiA+ID4gPiA+ICsgICBpbnQgZWxhcHNlZDsKPiA+ID4gPiA+ID4gPiA+ICsgICBib29sIGRl dGVjdGVkOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gKyAgIGlndF9hc3NlcnRf ZXEoaWd0X2dldHRpbWUoJnN0YXJ0KSwgMCk7Cj4gPiA+ID4gPiA+ID4gPiArICAgZGV0ZWN0ZWQg PSBpZ3RfaG90cGx1Z19kZXRlY3RlZChtb24sICp0aW1lb3V0KTsKPiA+ID4gPiA+ID4gPiA+ICsg ICBpZ3RfYXNzZXJ0X2VxKGlndF9nZXR0aW1lKCZlbmQpLCAwKTsKPiA+ID4gPiA+ID4gPiA+ICsK PiA+ID4gPiA+ID4gPiA+ICsgICBlbGFwc2VkID0gaWd0X3RpbWVfZWxhcHNlZCgmc3RhcnQsICZl bmQpOwo+ID4gPiA+ID4gPiA+ID4gKyAgIGlndF9hc3NlcnRfbHRlKDAsIGVsYXBzZWQpOwo+ID4g PiA+ID4gPiA+ID4gKyAgICp0aW1lb3V0ID0gbWF4KDAsICp0aW1lb3V0IC0gZWxhcHNlZCk7Cj4g PiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArICAgcmV0dXJuIGRldGVjdGVkOwo+ID4g PiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICBzdGF0aWMg dm9pZAo+ID4gPiA+ID4gPiA+ID4gIHRyeV9zdXNwZW5kX3Jlc3VtZV9ocGQoZGF0YV90ICpkYXRh LCBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQsCj4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAg ICAgICAgICAgZW51bSBpZ3Rfc3VzcGVuZF9zdGF0ZSBzdGF0ZSwgZW51bQo+ID4gPiA+ID4gPiA+ ID4gaWd0X3N1c3BlbmRfdGVzdCB0ZXN0LAo+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB1ZGV2X21vbml0b3IgKm1vbiwgYm9vbCBjb25uZWN0ZWQpCj4gPiA+ID4gPiA+ ID4gPiAgewo+ID4gPiA+ID4gPiA+ID4gKyAgIGRybU1vZGVDb25uZWN0aW9uIHRhcmdldF9zdGF0 ZSA9IGNvbm5lY3RlZCA/Cj4gPiA+ID4gPiA+ID4gPiBEUk1fTU9ERV9ESVNDT05ORUNURUQgOgo+ ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIERSTV9NT0RFX0NPTk5FQ1RFCj4gPiA+ID4gPiA+ID4gPiBEOwo+ID4gPiA+ID4gPiA+ ID4gKyAgIGludCB0aW1lb3V0ID0gSE9UUExVR19USU1FT1VUOwo+ID4gPiA+ID4gPiA+ID4gICAg IGludCBkZWxheTsKPiA+ID4gPiA+ID4gPiA+ICAgICBpbnQgcDsKPiA+ID4gPiA+ID4gPiA+IAo+ ID4gPiA+ID4gPiA+ID4gQEAgLTMxMCwxNyArMzMxLDI5IEBAIHRyeV9zdXNwZW5kX3Jlc3VtZV9o cGQoZGF0YV90ICpkYXRhLCBzdHJ1Y3QKPiA+ID4gPiA+ID4gPiA+IGNoYW1lbGl1bV9wb3J0ICpw b3J0LAo+ID4gPiA+ID4gPiA+ID4gICAgIH0KPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ ID4gICAgIGlndF9zeXN0ZW1fc3VzcGVuZF9hdXRvcmVzdW1lKHN0YXRlLCB0ZXN0KTsKPiA+ID4g PiA+ID4gPiA+ICsgICBpZ3RfYXNzZXJ0KHdhaXRfZm9yX2hvdHBsdWcobW9uLCAmdGltZW91dCkp Owo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiAtICAgaWd0X2Fzc2VydChpZ3RfaG90 cGx1Z19kZXRlY3RlZChtb24sIEhPVFBMVUdfVElNRU9VVCkpOwo+ID4gPiA+ID4gPiA+ID4gICAg IGlmIChwb3J0KSB7Cj4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICBpZ3RfYXNzZXJ0X2VxKHJl cHJvYmVfY29ubmVjdG9yKGRhdGEsIHBvcnQpLCBjb25uZWN0ZWQKPiA+ID4gPiA+ID4gPiA+ID8K PiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgRFJNX01PREVfRElTQ09O TkVDVEVEIDoKPiA+ID4gPiA+ID4gPiA+IERSTV9NT0RFX0NPTk5FQ1RFRCk7Cj4gPiA+ID4gPiA+ ID4gPiArICAgICAgICAgICBpZ3RfYXNzZXJ0X2VxKHJlcHJvYmVfY29ubmVjdG9yKGRhdGEsIHBv cnQpLAo+ID4gPiA+ID4gPiA+ID4gdGFyZ2V0X3N0YXRlKTsKPiA+ID4gPiA+ID4gPiA+ICAgICB9 IGVsc2Ugewo+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgZm9yIChwID0gMDsgcCA8IGRhdGEt PnBvcnRfY291bnQ7IHArKykgewo+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICBk cm1Nb2RlQ29ubmVjdGlvbiBjdXJyZW50X3N0YXRlOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICBwb3J0ID0gZGF0YS0+cG9ydHNbcF07Cj4gPiA+ ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgIGlndF9hc3NlcnRfZXEocmVwcm9iZV9jb25u ZWN0b3IoZGF0YSwgcG9ydCksCj4gPiA+ID4gPiA+ID4gPiBjb25uZWN0ZWQgPwo+ID4gPiA+ID4g PiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSTV9NT0RFX0RJU0NPTk5F Q1RFRCA6Cj4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RFJNX01PREVfQ09OTkVDVEVEKTsKPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg LyoKPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICogVGhlcmUgY291bGQgYmUg YXMgbWFueSBob3RwbHVnIGV2ZW50cyBzZW50Cj4gPiA+ID4gPiA+ID4gPiBieQo+ID4gPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgKiBkcml2ZXIgYXMgY29ubmVjdG9ycyB3ZSBzY2hl ZHVsZWQgYW4gSFBECj4gPiA+ID4gPiA+ID4gPiB0b2dnbGUgb24KPiA+ID4gPiA+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICogYWJvdmUsIGRlcGVuZGluZyBvbiB0aW1pbmcuIFNvIGlmIHdl J3JlIG5vdAo+ID4gPiA+ID4gPiA+ID4gc2VlaW5nCj4gPiA+ID4gPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAqIHRoZSBleHBlY3RlZCBjb25uZWN0b3Igc3RhdGUgdHJ5IHRvIHdhaXQKPiA+ ID4gPiA+ID4gPiA+IGZvciBhbiBIUEQKPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICogZXZlbnQgZm9yIGVhY2ggY29ubmVjdG9yL3BvcnQuCj4gPiA+ID4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAqLwo+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICBj dXJyZW50X3N0YXRlID0gcmVwcm9iZV9jb25uZWN0b3IoZGF0YSwgcG9ydCk7Cj4gPiA+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgIGlmIChwID4gMCAmJiBjdXJyZW50X3N0YXRlICE9IHRh cmdldF9zdGF0ZSkgewo+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg IGlndF9hc3NlcnQod2FpdF9mb3JfaG90cGx1Zyhtb24sCj4gPiA+ID4gPiA+ID4gPiAmdGltZW91 dCkpOwo+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRf c3RhdGUgPQo+ID4gPiA+ID4gPiA+ID4gcmVwcm9iZV9jb25uZWN0b3IoZGF0YSwgcG9ydCk7Cj4g PiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIH0KPiA+ID4gPiA+ID4gPiA+ICsKPiA+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgaWd0X2Fzc2VydF9lcShjdXJyZW50X3N0 YXRlLCB0YXJnZXRfc3RhdGUpOwo+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgfQo+ID4gPiA+ ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICBwb3J0ID0gTlVMTDsKPiA+ID4g PiA+ID4gPiAtLQo+ID4gPiA+ID4gPiA+IFBhdWwgS29jaWFsa293c2tpLCBCb290bGluCj4gPiA+ ID4gPiA+ID4gRW1iZWRkZWQgTGludXggYW5kIGtlcm5lbCBlbmdpbmVlcmluZwo+ID4gPiA+ID4g PiA+IGh0dHBzOi8vYm9vdGxpbi5jb20KPiA+ID4gPiA+ID4gPiAKPiA+IC0tCj4gPiBQYXVsIEtv Y2lhbGtvd3NraSwgQm9vdGxpbgo+ID4gRW1iZWRkZWQgTGludXggYW5kIGtlcm5lbCBlbmdpbmVl cmluZwo+ID4gaHR0cHM6Ly9ib290bGluLmNvbQo+ID4gCj4gCj4gCi0tIApQYXVsIEtvY2lhbGtv d3NraSwgQm9vdGxpbgpFbWJlZGRlZCBMaW51eCBhbmQga2VybmVsIGVuZ2luZWVyaW5nCmh0dHBz Oi8vYm9vdGxpbi5jb20KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==