From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <6c87fea83175c1790a32c55d128d751eb43185a6.camel@bootlin.com> From: Paul Kocialkowski Date: Fri, 10 May 2019 09:42:06 +0200 In-Reply-To: <419d16c1869b4f63e79fa9cf0f14dd32aa0db502.camel@intel.com> 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> MIME-Version: 1.0 Subject: [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: "Ser, Simon" , "lyude@redhat.com" , "Deak, Imre" Cc: David Airlie , dri-devel@lists.freedesktop.org, "igt-dev@lists.freedesktop.org" , Thomas Petazzoni , Sean Paul List-ID: SGksCgpTbyB0aGlzIHRocmVhZCBoYXMgZHJpZnRlZCBvZmYgZnJvbSBJR1QgdG8gYSBnZW5lcmFs IERSTSBpbXByb3ZlbWVudCwKc28gcmVuYW1pbmcgdGhlIHRocmVhZCBhbmQgYWRkaW5nIHNvbWUg Q0NzLgoKSXQncyBhYm91dCBhdm9pZGluZyBmdWxsIHJlcHJvYmVzICh3aGljaCBtYXkgaW5jbHVk ZSBzbG93IEVESUQgcmVhZHMsCmV0Yykgd2hlbiBhIGNvbm5lY3RvciBjaGFuZ2Ugd2FzIGRldGVj dGVkLCBieSBwcm92aWRpbmcgaW5mb3JtYXRpb24KYWJvdXQgdGhlIGNvbm5lY3RvciBhbmQgdGhl IG5ldyBzdGF0ZSB0byB1c2Vyc3BhY2UuIFRoaXMgd2F5LCB1c2Vyc3BhY2UKY2FuIHJlcHJvYmUg dGhlIGNoYW5nZWQgY29ubmVjdG9yIGFsb25lIChvciBub3QgcmVwcm9iZSBhdCBhbGwgaW4gY2Fz ZQpvZiBhIGRpc2Nvbm5lY3QpLgoKSXQgZmVlbHMgbGlrZSB0aGVyZSBpcyBncm93aW5nIHRlbXB0 YXRpb24gdG8gaGF2ZSBwZXItZHJpdmVyIGhhY2tzIHRvCmF2b2lkIGZ1bGwgcmVwcm9iZXMgd2hl biB0aGUgZHJpdmVyIGtub3dzIHRoYXQgbm90aGluZyBjaGFuZ2VkLCBidXQgSQp0aGluayBpdCBt YWtlcyBtb3JlIHNlbnNlIHRvIGZpeHVwIHRoZSB1ZXZlbnQgd2Ugc2VuZCB0byBtYWtlIHN1cmUg dGhhdAp1c2Vyc3BhY2Uga25vd3Mgd2hhdCB0byBwcm9iZSBleGFjdGx5LgoKT24gRnJpLCAyMDE5 LTA1LTEwIGF0IDA2OjU1ICswMDAwLCBTZXIsIFNpbW9uIHdyb3RlOgo+IE9uIFRodSwgMjAxOS0w NS0wOSBhdCAxMTo1NiAtMDQwMCwgTHl1ZGUgUGF1bCB3cm90ZToKPiA+IEknbSBpbiBzdXBwb3J0 IG9mIHRoaXMgYXMgd2VsbCwgd2UgcmVhbGx5IGNvdWxkIHVzZSBiZXR0ZXIgaG90cGx1ZyBldmVu dHMuCj4gPiBGZWVsIGZyZWUgdG8gY2MgcGF0Y2hlcyB0byBtZSBmb3IgcmV2aWV3IDopCj4gCj4g QW55IGlkZWEocykgaG93IHRoZSBBUEkgd291bGQgbG9vayBsaWtlPwoKRnJvbSBhIHF1aWNrIGNo YXQgb24gSVJDIHllc3RlcmRheSwgaXQgc2VlbXMgdGhhdCBqdXN0IGFkZGluZyBlbnRyaWVzCnRv IHRoZSB1ZXZlbnQgd291bGQgZG8gYW5kIHdvdWxkIGJlIGJhY2t3YXJkcy1jb21wYXRpYmxlICh3 ZWxsLApwcm92aWRlZCB0aGF0IHRoZSB1c2Vyc3BhY2UgdWV2ZW50IHBhcnNlcnMgd2lsbCBub3Qg ZmFpbCBpZiBzb21ldGhpbmcKZXh0cmEgdG8gIkhPVFBMVUc9MSIgaXMgcHJvdmlkZWQpLgoKQ3Vy cmVudGx5LCB0aGUgbm90aWZpY2F0aW9uIGlzIHNlbnQgZ2xvYmFsbHkgYXQgZWFjaCByb3VuZCBv ZiBkZXRlY3RlZApjb25uZWN0b3IgY2hhbmdlICh3aGljaCBtYXkgY29uY2VybiBtdWx0aXBsZSBj b25uZWN0b3JzKS4gU28gSSB0aGluayB3ZQpzaG91bGQganVzdCBsaXN0IHRoZSBjb25uZWN0b3Jz IHRoYXQgY2hhbmdlZCBpbiB0aGUgdWV2ZW50IGFuZCB0aGVpcgpuZXcgc3RhdGUuIFNvIG15IHBy b3Bvc2FsIGhlcmUgaXMgc29tZXRoaW5nIGxpa2U6CgpIT1RQTFVHPTEKQ09OTkVDVE9SX0lEPTQ3 ClNUQVRVUz1Db25uZWN0ZWQKQ09OTkVDVE9SX0lEPTQ4ClNUQVRVUz1EaXNjb25uZWN0ZWQKCldo ZXJlIGVhY2ggU1RBVFVTIGVudHJ5IHdvdWxkIHJlZmVyIHRvIHRoZSBwcmV2aW91cyBDT05ORUNU T1JfSUQgZW50cnkuCgpXaGF0IGRvIHlvdSB0aGluaz8KCkNoZWVycywKClBhdWwKCj4gPiBPbiBU aHUsIDIwMTktMDUtMDkgYXQgMTQ6MjQgKzAyMDAsIFBhdWwgS29jaWFsa293c2tpIHdyb3RlOgo+ ID4gPiBIaSwKPiA+ID4gCj4gPiA+IE9uIFRodSwgMjAxOS0wNS0wOSBhdCAxNTowOCArMDMwMCwg SW1yZSBEZWFrIHdyb3RlOgo+ID4gPiA+IE9uIFRodSwgTWF5IDA5LCAyMDE5IGF0IDA5OjI1OjQx QU0gKzAyMDAsIFBhdWwgS29jaWFsa293c2tpIHdyb3RlOgo+ID4gPiA+ID4gT24gV2VkLCAyMDE5 LTA1LTA4IGF0IDExOjI0ICswMzAwLCBJbXJlIERlYWsgd3JvdGU6Cj4gPiA+ID4gPiA+IEFmdGVy IHNjaGVkdWxpbmcgYW4gSFBEIHRvZ2dsZSBldmVudCwgbWFrZSBzdXJlIHRoYXQgd2Ugd2FpdCBm b3IgdGhlCj4gPiA+ID4gPiA+IGhvdHBsdWcgZXZlbnQgZm9yIGVhY2ggY29ubmVjdG9yIHRoYXQg bWF5IGJlIHNlbnQgYnkgdGhlIGRyaXZlci4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IERlcGVu ZGluZyBvbiB0aGUgc2NoZWR1bGluZyB0aGVyZSBjb3VsZCBiZSAxIGV2ZW50IG9yIGFzIG1hbnkg ZXZlbnRzCj4gPiA+ID4gPiA+IGFzCj4gPiA+ID4gPiA+IGNvbm5lY3RvcnMgd2Ugc2NoZWR1bGVk IGFuIEhQRCB0b2dnbGUgZXZlbnQgb24sIGRlcGVuZGluZyBvbiB0aGUKPiA+ID4gPiA+ID4gdGlt aW5nLgo+ID4gPiA+ID4gPiBTbyBpZiB3ZSBkb24ndCB5ZXQgc2VlIHRoZSBleHBlY3RlZCBjb25u ZWN0b3Igc3RhdGUgb24gYSBnaXZlbgo+ID4gPiA+ID4gPiBjb25uZWN0b3IKPiA+ID4gPiA+ID4g dHJ5IHRvIHdhaXQgZm9yIGFuIGFkZGl0aW9uYWwgaG90cGx1ZyBldmVudCBhbmQgcmVwcm9iZS9y ZWNoZWNrIHRoZQo+ID4gPiA+ID4gPiBzdGF0ZS4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gVGhpcyBj aGFuZ2VzIG1ha2VzIGdvb2Qgc2Vuc2UgdG8gbWUsIHNvOgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBS ZXZpZXdlZC1CeTogUGF1bCBLb2NpYWxrb3dza2kgPHBhdWwua29jaWFsa293c2tpQGJvb3RsaW4u Y29tPgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBBbmQgaXQgYnJpbmdzIGJhY2sgaGFyZCBmZWVsaW5n cyBhYm91dCB0aGUgaG90cGx1ZyBpbnRlcmZhY2Ugd2UgaGF2ZQo+ID4gPiA+ID4gdG9kYXkuLi4K PiA+ID4gPiAKPiA+ID4gPiBZZXMsIEkgd2FzIHN1cnByaXNlZCB0b28gbm90IGZpbmQgYW55IHdh eSB0byBpZGVudGlmeSB3aGljaCBjb25uZWN0b3IocykKPiA+ID4gPiB0aGUgaG90cGx1ZyBldmVu dCBpcyBhc3NvY2lhdGVkIHdpdGguIFdlIGRpc2N1c3NlZCB3aXRoIFZpbGxlIGlmIGl0J2QKPiA+ ID4gPiBtYWtlIHNlbnNlIHRvIGFkZCBhIGNvbm5lY3RvciBJRCBtYXAgdG8gdGhlIHVldmVudCwg YnV0IG5vdCBzdXJlIGlmIGl0J2QKPiA+ID4gPiBiZSB1c2VmdWwgb3V0c2lkZSBvZiB0aGlzIHRl c3QsIG9yIGhvdyB0aGF0IHdvdWxkIGFsaWduIHdpdGggQ2hyaXMnCj4gPiA+ID4gY29ubmVjdG9y IHByb2JlIHN0YXRlIGdlbmVyYXRpb24gaWRlYS4KPiA+ID4gCj4gPiA+IEVpdGhlciB3YXksIEkn bSBkZWZpbml0ZWx5IGluIGZhdm9yIG9mIGhhdmluZyBzb21ldGhpbmcgbW9yZSByZWxpYWJsZQo+ ID4gPiB0byBleHBvc2UgdG8gdXNlcnNwYWNlLiBIYXZpbmcgc29tZXRoaW5nIHRvIGNvcnJlbGF0 ZSBlYWNoIGV2ZW50IHRvIG9uZQo+ID4gPiAob3IgbW9yZSkgY29ubmVjdG9yKHMpIHNvdW5kcyBn b29kIHRvIG1lLgo+ID4gPiAKPiA+ID4gQW5kIEkgdGhpbmsgdGhlcmUgaXMgYSBnZW5lcmFsIG5l ZWQgZm9yIHRoaXMsIGl0J3Mgbm90IGp1c3QgSUdULgo+ID4gPiAKPiA+ID4gQ3VycmVudGx5LCBl dmVyeSB1c2Vyc3BhY2UgYXBwbGljYXRpb24gdXNpbmcgRFJNIGhhcyB0byBkbyBhIGZ1bGwKPiA+ ID4gcmVwcm9iZSBvbmNlIGEgaG90cGx1ZyB1ZXZlbnQgaXMgcmVjZWl2ZWQsIHdoaWNoIGlzIHJl YWxseSBub3Qgb3B0aW1hbC4KPiA+ID4gSWYgYW4gZW50cnkgaWRlbnRpZnlpbmcgdGhlIGNvbm5l Y3RvciB3YXMgYWxzbyBwcm92aWRlZCwgdXNlcnNwYWNlCj4gPiA+IGNvdWxkIG9ubHkgcmVwcm9i ZSB0aGF0IGNvbm5lY3Rvci4gVGhlIHN0ZXAgYWZ0ZXIgdGhhdCB3b3VsZCBiZSBoYXZpbmcKPiA+ ID4gdGhlIGluZGljYXRpb24gb2Ygd2hldGhlciB0aGUgY29ubmVjdG9yIHdhcyBjb25uZWN0ZWQg b3IgZGlzY29ubmVjdGVkCj4gPiA+IGRpcmVjdGx5IGluIHVldmVudCB0b28sIHNvIHRoYXQgbm8g cHJvYmluZyBuZWVkcyB0byBiZSBkb25lIGF0IGFsbCB3aGVuCj4gPiA+IGEgZ2l2ZW4gY29ubmVj dG9yIGlzIGRpc2Nvbm5lY3RlZC4KPiA+ID4gCj4gPiA+IEFueXdheSwgaWYgeW91J3JlIGludGVy ZXN0ZWQgaW4gdGhlIGlkZWEgYW5kIHRoYXQgVmlsbGUgYW5kIENocmlzIGFyZQo+ID4gPiBpbiBm YXZvciwgSSByZWFsbHkgdGhpbmsgaXQgd291bGQgYmUgd29ydGggZml4aW5nIHRoYXQuIEFuZCB3 ZSdkIG9ubHkKPiA+ID4gYmUgYWRkaW5nIG5ldyBlbGVtZW50cyB0byB1ZXZlbnQsIHNvIHRoYXQg d291bGQgc3RheSBiYWNrd2FyZC0KPiA+ID4gY29tcGF0aWJsZSB0b28uCj4gPiA+IAo+ID4gPiBD aGVlcnMsCj4gPiA+IAo+ID4gPiBQYXVsCj4gPiA+IAo+ID4gPiA+ID4gPiB2MjoKPiA+ID4gPiA+ ID4gLSBzL2lndF9hc3NlcnQoeCA+PSB5KS9pZ3RfYXNzZXJ0X2x0ZSh5LCB4KS8gdG8gc2VlIHRo ZSBhY3R1YWwgbGltaXRzCj4gPiA+ID4gPiA+IGluCj4gPiA+ID4gPiA+ICAgdGhlIGRlYnVnZ2lu ZyBvdXRwdXQuIChMeXVkZSkKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IEJ1Z3ppbGxhOiBodHRw czovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA1MzQKPiA+ID4gPiA+ ID4gQ2M6IFBhdWwgS29jaWFsa293c2tpIDxwYXVsLmtvY2lhbGtvd3NraUBib290bGluLmNvbT4K PiA+ID4gPiA+ID4gQ2M6IEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhhdC5jb20+Cj4gPiA+ID4gPiA+ IFNpZ25lZC1vZmYtYnk6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPiA+ID4gPiA+ ID4gUmV2aWV3ZWQtYnk6IEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhhdC5jb20+Cj4gPiA+ID4gPiA+ IC0tLQo+ID4gPiA+ID4gPiAgdGVzdHMva21zX2NoYW1lbGl1bS5jIHwgNDUgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCj4gPiA+ID4gPiA+IC0KPiA+ID4gPiA+ID4g IDEgZmlsZSBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQo+ID4gPiA+ ID4gPiAKPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19jaGFtZWxpdW0uYyBiL3Rl c3RzL2ttc19jaGFtZWxpdW0uYwo+ID4gPiA+ID4gPiBpbmRleCA3MTRlNWUwNi4uNTAyZjFlZmEg MTAwNjQ0Cj4gPiA+ID4gPiA+IC0tLSBhL3Rlc3RzL2ttc19jaGFtZWxpdW0uYwo+ID4gPiA+ID4g PiArKysgYi90ZXN0cy9rbXNfY2hhbWVsaXVtLmMKPiA+ID4gPiA+ID4gQEAgLTI4NCwxMSArMjg0 LDMyIEBAIHRlc3RfZWRpZF9yZWFkKGRhdGFfdCAqZGF0YSwgc3RydWN0Cj4gPiA+ID4gPiA+IGNo YW1lbGl1bV9wb3J0ICpwb3J0LAo+ID4gPiA+ID4gPiAgCWRybU1vZGVGcmVlQ29ubmVjdG9yKGNv bm5lY3Rvcik7Cj4gPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gKy8qIFdh aXQgZm9yIGhvdHBsdWcgYW5kIHJldHVybiB0aGUgcmVtYWluaW5nIHRpbWUgbGVmdCBmcm9tIHRp bWVvdXQKPiA+ID4gPiA+ID4gKi8KPiA+ID4gPiA+ID4gK3N0YXRpYyBib29sIHdhaXRfZm9yX2hv dHBsdWcoc3RydWN0IHVkZXZfbW9uaXRvciAqbW9uLCBpbnQgKnRpbWVvdXQpCj4gPiA+ID4gPiA+ ICt7Cj4gPiA+ID4gPiA+ICsJc3RydWN0IHRpbWVzcGVjIHN0YXJ0LCBlbmQ7Cj4gPiA+ID4gPiA+ ICsJaW50IGVsYXBzZWQ7Cj4gPiA+ID4gPiA+ICsJYm9vbCBkZXRlY3RlZDsKPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiArCWlndF9hc3NlcnRfZXEoaWd0X2dldHRpbWUoJnN0YXJ0KSwgMCk7Cj4g PiA+ID4gPiA+ICsJZGV0ZWN0ZWQgPSBpZ3RfaG90cGx1Z19kZXRlY3RlZChtb24sICp0aW1lb3V0 KTsKPiA+ID4gPiA+ID4gKwlpZ3RfYXNzZXJ0X2VxKGlndF9nZXR0aW1lKCZlbmQpLCAwKTsKPiA+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArCWVsYXBzZWQgPSBpZ3RfdGltZV9lbGFwc2VkKCZzdGFy dCwgJmVuZCk7Cj4gPiA+ID4gPiA+ICsJaWd0X2Fzc2VydF9sdGUoMCwgZWxhcHNlZCk7Cj4gPiA+ ID4gPiA+ICsJKnRpbWVvdXQgPSBtYXgoMCwgKnRpbWVvdXQgLSBlbGFwc2VkKTsKPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPiArCXJldHVybiBkZXRlY3RlZDsKPiA+ID4gPiA+ID4gK30KPiA+ID4g PiA+ID4gKwo+ID4gPiA+ID4gPiAgc3RhdGljIHZvaWQKPiA+ID4gPiA+ID4gIHRyeV9zdXNwZW5k X3Jlc3VtZV9ocGQoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQsCj4g PiA+ID4gPiA+ICAJCSAgICAgICBlbnVtIGlndF9zdXNwZW5kX3N0YXRlIHN0YXRlLCBlbnVtCj4g PiA+ID4gPiA+IGlndF9zdXNwZW5kX3Rlc3QgdGVzdCwKPiA+ID4gPiA+ID4gIAkJICAgICAgIHN0 cnVjdCB1ZGV2X21vbml0b3IgKm1vbiwgYm9vbCBjb25uZWN0ZWQpCj4gPiA+ID4gPiA+ICB7Cj4g PiA+ID4gPiA+ICsJZHJtTW9kZUNvbm5lY3Rpb24gdGFyZ2V0X3N0YXRlID0gY29ubmVjdGVkID8K PiA+ID4gPiA+ID4gRFJNX01PREVfRElTQ09OTkVDVEVEIDoKPiA+ID4gPiA+ID4gKwkJCQkJCSAg ICAgRFJNX01PREVfQ09OTkVDVEUKPiA+ID4gPiA+ID4gRDsKPiA+ID4gPiA+ID4gKwlpbnQgdGlt ZW91dCA9IEhPVFBMVUdfVElNRU9VVDsKPiA+ID4gPiA+ID4gIAlpbnQgZGVsYXk7Cj4gPiA+ID4g PiA+ICAJaW50IHA7Cj4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gQEAgLTMxMCwxNyArMzMxLDI5 IEBAIHRyeV9zdXNwZW5kX3Jlc3VtZV9ocGQoZGF0YV90ICpkYXRhLCBzdHJ1Y3QKPiA+ID4gPiA+ ID4gY2hhbWVsaXVtX3BvcnQgKnBvcnQsCj4gPiA+ID4gPiA+ICAJfQo+ID4gPiA+ID4gPiAgCj4g PiA+ID4gPiA+ICAJaWd0X3N5c3RlbV9zdXNwZW5kX2F1dG9yZXN1bWUoc3RhdGUsIHRlc3QpOwo+ ID4gPiA+ID4gPiArCWlndF9hc3NlcnQod2FpdF9mb3JfaG90cGx1Zyhtb24sICZ0aW1lb3V0KSk7 Cj4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gLQlpZ3RfYXNzZXJ0KGlndF9ob3RwbHVnX2RldGVj dGVkKG1vbiwgSE9UUExVR19USU1FT1VUKSk7Cj4gPiA+ID4gPiA+ICAJaWYgKHBvcnQpIHsKPiA+ ID4gPiA+ID4gLQkJaWd0X2Fzc2VydF9lcShyZXByb2JlX2Nvbm5lY3RvcihkYXRhLCBwb3J0KSwg Y29ubmVjdGVkCj4gPiA+ID4gPiA+ID8KPiA+ID4gPiA+ID4gLQkJCSAgICAgIERSTV9NT0RFX0RJ U0NPTk5FQ1RFRCA6Cj4gPiA+ID4gPiA+IERSTV9NT0RFX0NPTk5FQ1RFRCk7Cj4gPiA+ID4gPiA+ ICsJCWlndF9hc3NlcnRfZXEocmVwcm9iZV9jb25uZWN0b3IoZGF0YSwgcG9ydCksCj4gPiA+ID4g PiA+IHRhcmdldF9zdGF0ZSk7Cj4gPiA+ID4gPiA+ICAJfSBlbHNlIHsKPiA+ID4gPiA+ID4gIAkJ Zm9yIChwID0gMDsgcCA8IGRhdGEtPnBvcnRfY291bnQ7IHArKykgewo+ID4gPiA+ID4gPiArCQkJ ZHJtTW9kZUNvbm5lY3Rpb24gY3VycmVudF9zdGF0ZTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4g PiAgCQkJcG9ydCA9IGRhdGEtPnBvcnRzW3BdOwo+ID4gPiA+ID4gPiAtCQkJaWd0X2Fzc2VydF9l cShyZXByb2JlX2Nvbm5lY3RvcihkYXRhLCBwb3J0KSwKPiA+ID4gPiA+ID4gY29ubmVjdGVkID8K PiA+ID4gPiA+ID4gLQkJCQkgICAgICBEUk1fTU9ERV9ESVNDT05ORUNURUQgOgo+ID4gPiA+ID4g PiAtCQkJCSAgICAgIERSTV9NT0RFX0NPTk5FQ1RFRCk7Cj4gPiA+ID4gPiA+ICsJCQkvKgo+ID4g PiA+ID4gPiArCQkJICogVGhlcmUgY291bGQgYmUgYXMgbWFueSBob3RwbHVnIGV2ZW50cyBzZW50 Cj4gPiA+ID4gPiA+IGJ5Cj4gPiA+ID4gPiA+ICsJCQkgKiBkcml2ZXIgYXMgY29ubmVjdG9ycyB3 ZSBzY2hlZHVsZWQgYW4gSFBECj4gPiA+ID4gPiA+IHRvZ2dsZSBvbgo+ID4gPiA+ID4gPiArCQkJ ICogYWJvdmUsIGRlcGVuZGluZyBvbiB0aW1pbmcuIFNvIGlmIHdlJ3JlIG5vdAo+ID4gPiA+ID4g PiBzZWVpbmcKPiA+ID4gPiA+ID4gKwkJCSAqIHRoZSBleHBlY3RlZCBjb25uZWN0b3Igc3RhdGUg dHJ5IHRvIHdhaXQKPiA+ID4gPiA+ID4gZm9yIGFuIEhQRAo+ID4gPiA+ID4gPiArCQkJICogZXZl bnQgZm9yIGVhY2ggY29ubmVjdG9yL3BvcnQuCj4gPiA+ID4gPiA+ICsJCQkgKi8KPiA+ID4gPiA+ ID4gKwkJCWN1cnJlbnRfc3RhdGUgPSByZXByb2JlX2Nvbm5lY3RvcihkYXRhLCBwb3J0KTsKPiA+ ID4gPiA+ID4gKwkJCWlmIChwID4gMCAmJiBjdXJyZW50X3N0YXRlICE9IHRhcmdldF9zdGF0ZSkg ewo+ID4gPiA+ID4gPiArCQkJCWlndF9hc3NlcnQod2FpdF9mb3JfaG90cGx1Zyhtb24sCj4gPiA+ ID4gPiA+ICZ0aW1lb3V0KSk7Cj4gPiA+ID4gPiA+ICsJCQkJY3VycmVudF9zdGF0ZSA9Cj4gPiA+ ID4gPiA+IHJlcHJvYmVfY29ubmVjdG9yKGRhdGEsIHBvcnQpOwo+ID4gPiA+ID4gPiArCQkJfQo+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJCQlpZ3RfYXNzZXJ0X2VxKGN1cnJlbnRfc3RhdGUs IHRhcmdldF9zdGF0ZSk7Cj4gPiA+ID4gPiA+ICAJCX0KPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4g PiAgCQlwb3J0ID0gTlVMTDsKPiA+ID4gPiA+IC0tIAo+ID4gPiA+ID4gUGF1bCBLb2NpYWxrb3dz a2ksIEJvb3RsaW4KPiA+ID4gPiA+IEVtYmVkZGVkIExpbnV4IGFuZCBrZXJuZWwgZW5naW5lZXJp bmcKPiA+ID4gPiA+IGh0dHBzOi8vYm9vdGxpbi5jb20KPiA+ID4gPiA+IAotLSAKUGF1bCBLb2Np YWxrb3dza2ksIEJvb3RsaW4KRW1iZWRkZWQgTGludXggYW5kIGtlcm5lbCBlbmdpbmVlcmluZwpo dHRwczovL2Jvb3RsaW4uY29tCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1k ZXY=