From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by gabe.freedesktop.org (Postfix) with ESMTPS id 497218993B for ; Mon, 13 May 2019 09:19:45 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id m4so16545254edd.8 for ; Mon, 13 May 2019 02:19:45 -0700 (PDT) Date: Mon, 13 May 2019 11:19:37 +0200 From: Daniel Vetter Message-ID: <20190513091937.GO17751@phenom.ffwll.local> References: <20190509080914.2957-1-janusz.krzysztofik@linux.intel.com> <20190509080914.2957-2-janusz.krzysztofik@linux.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190509080914.2957-2-janusz.krzysztofik@linux.intel.com> Subject: Re: [igt-dev] [PATCH i-g-t v9 1/1] tests: Add a new test for device hot unplug 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: Janusz Krzysztofik Cc: janusz.krzysztofik@intel.com, Petri Latvala , igt-dev@lists.freedesktop.org, Daniel Vetter List-ID: T24gVGh1LCBNYXkgMDksIDIwMTkgYXQgMTA6MDk6MTRBTSArMDIwMCwgSmFudXN6IEtyenlzenRv ZmlrIHdyb3RlOgo+IEZyb206IEphbnVzeiBLcnp5c3p0b2ZpayA8amFudXN6LmtyenlzenRvZmlr QGludGVsLmNvbT4KPiAKPiBUaGVyZSBpcyBhIHRlc3Qgd2hpY2ggdmVyaWZpZXMgdW5sb2FkaW5n IG9mIGk5MTUgZHJpdmVyIG1vZHVsZSBidXQgbm8gdGVzdAo+IGV4aXN0cyB0aGF0IGNoZWNrcyBo b3cgYSBkcml2ZXIgYmVoYXZlcyB3aGVuIGl0IGdldHMgdW5ib3VuZCBmcm9tIGEgZGV2aWNlCj4g b3Igd2hlbiB0aGUgZGV2aWNlIGdldHMgdW5wbHVnZ2VkLiAgUHJvdmlkZSBzdWNoIHRlc3QgdXNp bmcgc3lzZnMKPiBpbnRlcmZhY2UuCj4gCj4gVHdvIG1pbmltYWxpc3RpYyBzdWJ0ZXN0cyAtICJ1 bmJpbmQtcmViaW5kIiBhbmQgInVucGx1Zy1yZXNjYW4iIC0gcGVyZm9ybQo+IGRlc2lyZWQgb3Bl cmF0aW9ucyBvbiBhIERSTSBkZXZpY2Ugd2hpY2ggaXMgYmVsZWl2ZWQgdG8gYmUgbm90IGluIHVz ZS4KPiAKPiBBIHN1YnRlc3QgbmFtZWQgImRybV9vcGVuLWhvdHVucGx1ZyIgdW5wbHVncyBhIERS TSBkZXZpY2Ugd2hpbGUga2VlcGluZwo+IGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4uCj4gCj4gQSAi Z2VtX2J1ZmZlci1ob3R1bnBsdWciIHN1YnRlc3QgcGVyZm9ybXMgZGV2aWNlIHVucGx1ZyB3aGls ZSBrZWVwaXVnIGEKPiBHRU0gYnVmZmVyIG9iamVjdCBhbGxvY2F0ZWQsIHdoaWxlIGEgImdlbV9t bWFwLWhvdHVucGx1ZyIgc3VidGVzdCBkb2VzIHRoZQo+IHNhbWUgd2l0aCB0aGUgR0VNIGJ1ZmZl ciBvYmplY3QgYWRkaXRpb25hbGx5IG1tYXBwZWQuCj4gCj4gTmV4dCB0d28gc3VidGVzdHMgd29y ayBvbmx5IHdpdGggaTkxNSBvciBJbnRlbCBkcml2ZXIuICBPbmUgb2YgdGhlbSAtCj4gImk5MTVf Y29udGV4dC1ob3R1bnBsdWciIC0gcGVyZm9ybXMgZGV2aWNlIHVucGx1ZyB3aGlsZSBrZWVwaW5n IGFuIGV4dHJhCj4gR0VNIGNvbnRleHQgYWxsb2NhdGVkLiAgVGhlIG90aGVyIG9uZSAtICJpOTE1 X3NwaW4taG90dW5wbHVnIiAtIHRyaWVzIHRvCj4gdW5wbHVnIGEgZGV2aWNlIHdpdGggYW4gYWN0 aXZlIHNwaW4gYmF0Y2guCj4gCj4gVGhlIGxhc3QgdHdvIHN1YnRlc3RzIHZlcmlmeSBkcml2ZXIg YmVoYXZpb3IgYWZ0ZXIgYSBkZXZpY2UgIGhhcyBiZWVuIGhvdAo+IHVucGx1Z2dlZC4gIEZpcnN0 IG9mIHRoZW0sIGNhbGxlZCAiZHJtLWhvdHVucGx1Zy11bmxvYWQiLCBjaGVja3MgaWYgYW4KPiBv cGVuIGZpbGUgZGVzY3JpcHRvciBvZiBhbiB1bnBsdWdnZWQgZGV2aWNlIHN0aWxsIHByb3RlY3Rz IHRoZSBkcml2ZXIKPiBtb2R1bGUgZnJvbSBiZWluZyB1bmxvYWRlZC4gIFRoZSBsYXN0IG9uZSAt ICJpOTE1LWhvdHVucGx1Zy13cml0ZSIgLQo+IGNoZWNrcyBob3cgdGhlIGk5MTUgZHJpdmVyIHBv aW50aW5nIHRvIGFuIHVucGx1Z2dlZCBkZXZpY2UgcmVzcG9uZHMgdG8gYQo+IEdFTSB3cml0ZSBJ T0NUTCBvcGVyYXRpb24uCj4gCj4gU2lnbmVkLW9mZi1ieTogSmFudXN6IEtyenlzenRvZmlrIDxq YW51c3oua3J6eXN6dG9maWtAaW50ZWwuY29tPgoKVGhhbmtzIGZvciByZXdvcmtpbmcsIHRoaXMg bG9va3MgZ29vZCB0byBtZSBhbmQgd2UncmUgZ29pbmcgdGhlIHJpZ2h0CmRpcmVjdGlvbiBJIHRo aW5rLgoKV2hlbiByZXNlbmRpbmcgcGF0Y2hlcyBwbGVhc2UgYWx3YXlzIGluY2x1ZGUgYSBwZXIt cGF0Y2ggY2hhbmdlbG9nIGluIHRoZQpjb21taXQgbWVzc2FnZSwgZXhwbGFpbmluZyB3aGF0IHlv dSd2ZSBjaGFuZ2VkLCB3aHkgKGUuZy4gc3VnZ2VzdGVkIGJ5CiRyZXZpZXdlcl9uYW1lKSwgY29t cGFyZWQgdG8gdGhlIHByZXZpb3VzIHZlcnNpb24uCgo+IC0tLQo+ICB0ZXN0cy9NYWtlZmlsZS5z b3VyY2VzIHwgICAxICsKPiAgdGVzdHMvY29yZV9ob3R1bnBsdWcuYyB8IDQ2MiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICB0ZXN0cy9tZXNvbi5idWlsZCAgICAg IHwgICAxICsKPiAgMyBmaWxlcyBjaGFuZ2VkLCA0NjQgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgdGVzdHMvY29yZV9ob3R1bnBsdWcuYwo+IAo+IGRpZmYgLS1naXQgYS90ZXN0 cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+IGluZGV4IDdmOTIx ZjZjLi4wODk0MmYwMCAxMDA2NDQKPiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gKysr IGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+IEBAIC0xNiw2ICsxNiw3IEBAIFRFU1RTX3Byb2dz ID0gXAo+ICAJY29yZV9nZXRjbGllbnQgXAo+ICAJY29yZV9nZXRzdGF0cyBcCj4gIAljb3JlX2dl dHZlcnNpb24gXAo+ICsJY29yZV9ob3R1bnBsdWcgXAo+ICAJY29yZV9zZXRtYXN0ZXJfdnNfYXV0 aCBcCj4gIAlkZWJ1Z2ZzX3Rlc3QgXAo+ICAJZHJtX2ltcG9ydF9leHBvcnQgXAo+IGRpZmYgLS1n aXQgYS90ZXN0cy9jb3JlX2hvdHVucGx1Zy5jIGIvdGVzdHMvY29yZV9ob3R1bnBsdWcuYwo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLjA4ZTdiMmFiCj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL3Rlc3RzL2NvcmVfaG90dW5wbHVnLmMKPiBAQCAtMCwwICsxLDQ2MiBAQAo+ ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsg KiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl cnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0 ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2Yg dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNo YWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg dGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJ TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9S IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9U SEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICog SU4gVEhFIFNPRlRXQVJFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJpZ3QuaCIKPiArI2luY2x1 ZGUgImlndF9kZXZpY2UuaCIKPiArI2luY2x1ZGUgImlndF9kdW1teWxvYWQuaCIKPiArI2luY2x1 ZGUgImlndF9rbW9kLmgiCj4gKyNpbmNsdWRlICJpZ3Rfc3lzZnMuaCIKPiArCj4gKyNpbmNsdWRl IDxsaW1pdHMuaD4KPiArI2luY2x1ZGUgPHN0cmluZy5oPgo+ICsjaW5jbHVkZSA8dW5pc3RkLmg+ Cj4gKwo+ICsvKiBSZS1iaW5kIHRoZSBkcml2ZXIgdG8gdGhlIGRldmljZSAqLwo+ICtzdGF0aWMg dm9pZCBkcml2ZXJfYmluZChpbnQgZHJ2LCBjb25zdCBjaGFyICphZGRyKQo+ICt7Cj4gKwlpZ3Rf c2V0X3RpbWVvdXQoNjAsICJEcml2ZXIgcmUtYmluZCB0aW1lb3V0ISIpOwo+ICsJaWd0X3N5c2Zz X3NldChkcnYsICJiaW5kIiwgYWRkcik7Cj4gKwlpZ3RfcmVzZXRfdGltZW91dCgpOwo+ICsKPiAr CWNsb3NlKGRydik7Cj4gK30KPiArCj4gKy8qIFVuYmluZCB0aGUgZHJpdmVyIGZyb20gdGhlIGRl dmljZSAqLwo+ICtzdGF0aWMgdm9pZCBkcml2ZXJfdW5iaW5kKGludCBkcnYsIGNvbnN0IGNoYXIg KmFkZHIpCj4gK3sKPiArCWlndF9zZXRfdGltZW91dCg2MCwgIkRyaXZlciB1bmJpbmQgdGltZW91 dCEiKTsKPiArCWlndF9zeXNmc19zZXQoZHJ2LCAidW5iaW5kIiwgYWRkcik7Cj4gKwlpZ3RfcmVz ZXRfdGltZW91dCgpOwo+ICsKPiArCS8qIGRvbid0IGNsb3NlIGRydiwgaXQgd2lsbCBiZSB1c2Vk IGZvciBkcml2ZXIgcmViaW5kaW5nICovCj4gK30KPiArCj4gKy8qIFJlLWRpc2NvdmVyIHRoZSBk ZXZpY2UgYnkgcmVzY2FubmluZyBpdHMgYnVzICovCj4gK3N0YXRpYyB2b2lkIGJ1c19yZXNjYW4o aW50IGJ1cykKPiArewo+ICsJaWd0X3NldF90aW1lb3V0KDYwLCAiQnVzIHJlc2NhbiB0aW1lb3V0 ISIpOwo+ICsJaWd0X3N5c2ZzX3NldChidXMsICJyZXNjYW4iLCAiMSIpOwo+ICsJaWd0X3Jlc2V0 X3RpbWVvdXQoKTsKPiArCj4gKwljbG9zZShidXMpOwo+ICt9Cj4gKwo+ICsvKiBSZW1vdmUgKHZp cnR1YWxseSB1bnBsdWcpIHRoZSBkZXZpY2UgZnJvbSBpdHMgYnVzICovCj4gK3N0YXRpYyB2b2lk IGRldmljZV91bnBsdWcoaW50IGRldikKPiArewo+ICsJaWd0X3NldF90aW1lb3V0KDYwLCAiRGV2 aWNlIHVucGx1ZyB0aW1lb3V0ISIpOwo+ICsJaWd0X3N5c2ZzX3NldChkZXYsICJkZXZpY2UvcmVt b3ZlIiwgIjEiKTsKPiArCWlndF9yZXNldF90aW1lb3V0KCk7Cj4gKwo+ICsJY2xvc2UoZGV2KTsK PiArfQo+ICsKPiArc3RhdGljIGJvb2wgbW9kdWxlX3VubG9hZChpbnQgY2hpcHNldCwgY29uc3Qg Y2hhciAqbW9kdWxlKQo+ICt7Cj4gKwlpZiAoY2hpcHNldCA9PSBEUklWRVJfSU5URUwpCj4gKwkJ cmV0dXJuIGlndF9pOTE1X2RyaXZlcl91bmxvYWQoKSA9PSBJR1RfRVhJVF9TVUNDRVNTOwo+ICsJ ZWxzZQo+ICsJCXJldHVybiBpZ3Rfa21vZF91bmxvYWQobW9kdWxlLCAwKSA9PSAwOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCB1bmJpbmRfcmViaW5kKGludCBjaGlwc2V0KQo+ICt7Cj4gKwlpbnQg ZmQsIGRldiwgZHJ2LCBsZW47CgpQbGVhc2UgcmVuYW1lIHRoZXNlIHRvIGZkX2RybSwgZmRfc3lz ZnNfZGV2IGFuZCBmZF9zeXNmX2Rydiwgb3Igc29tZXRoaW5nCmVsc2UgdGhhdCBpbmRpY2F0ZXMg dGhleSdyZSBmaWxlIGRlc2NyaXB0b3JzLiBTYW1lIGZvciBmdW5jdGlvbiBhcmd1bWVudHMuClRo ZSBjb2RlIGdldHMgdmVyeSBjb25mdXNpbmcgdG8gcmVhZCBvdGhlcndpc2UuCgpidHcgSSB0aGlu ayB0aGlzIHdlbnQgYSB0aW55IGJpdCB0b28gbXVjaCBpbnRvIHRoZSAibm8gZnJhbWV3b3JrIGF0 IGFsbCIKZGlyZWN0aW9uLiBJIHRoaW5rIGEgbGl0dGxlIGRhdGEgc3RydWN0dXJlIHRoYXQgY29u dGFpbnMgdGhlIHZhcmlvdXMgZmRzCndlIG5lZWQsIHBsdXMgYSBoZWxwZXIgZnVuY3Rpb24gdG8g c2V0IHRoZW0gYWxsIHVwIHdvdWxkIGJlIHVzZWZ1bC4gVGhlbgp5b3UgY2FuIGNhbGwgdGhhdCBh cyBuZWVkZWQsIHBsdXMgd2UgaGF2ZSBhIHBsYWNlIHRvIGFkZCBvdGhlcgp0ZXN0LXJlbGV2YW50 IGRhdGEgdG8gcGFzcyBhcm91bmQuIEJ1dCBhcy1pcyB0aGUgY29kZSBsb29rcyBvayB0b28sIHVw IHRvCnlvdS4KCkJ1dCBvdGhlcndpc2UgSSBsaWtlIHRoZSBvcGVuLWNvZGVkIHRlc3Qgc3RydWN0 dXJlIGEgbG90LCBtYWtlcyBpdCBtdWNoCmVhc2llciB0byBmb2xsb3cgYWxvbmcgYW5kIHVuZGVy c3RhbmQgd2hhdCdzIGdvaW5nIG9uLgoKPiArCWNoYXIgcGF0aFtQQVRIX01BWF07Cj4gKwljb25z dCBjaGFyICphZGRyOwo+ICsKPiArCWZkID0gX19kcm1fb3Blbl9kcml2ZXIoY2hpcHNldCk7Cj4g KwlpZ3RfYXNzZXJ0KGZkID49IDApOwo+ICsKPiArCWRldiA9IGlndF9zeXNmc19vcGVuKGZkKTsK PiArCWlndF9hc3NlcnQoZGV2ID49IDApOwo+ICsKPiArCWNsb3NlKGZkKTsKPiArCj4gKwkvKiBj b2xsZWN0IGluZm9ybWF0aW9uIHJlcXVpcmVkIGZvciBkcml2ZXIgYmluZC91bmJpbmQgKi8KPiAr CWRydiA9IG9wZW5hdChkZXYsICJkZXZpY2UvZHJpdmVyIiwgT19ESVJFQ1RPUlkpOwo+ICsJaWd0 X2Fzc2VydChkcnYgPj0gMCk7Cj4gKwo+ICsJbGVuID0gcmVhZGxpbmthdChkZXYsICJkZXZpY2Ui LCBwYXRoLCBzaXplb2YocGF0aCkgLSAxKTsKPiArCXBhdGhbbGVuXSA9ICdcMCc7Cj4gKwlhZGRy ID0gc3RycmNocihwYXRoLCAnLycpICsgMTsKPiArCj4gKwljbG9zZShkZXYpOwo+ICsKPiArCWln dF9kZWJ1ZygidW5iaW5kaW5nIGRyaXZlclxuIik7Cj4gKyAgICAgICAgZHJpdmVyX3VuYmluZChk cnYsIGFkZHIpOwoKU3RyYW5nZSBpbmRlbnRpbmcgaGVyZS4gU29tZSBvdGhlciBwbGFjZXMgbGlr ZSB0aGlzIHRvby4KCj4gKwo+ICsJaWd0X2RlYnVnKCJyZWJpbmRpbmcgZHJpdmVyXG4iKTsKPiAr CWRyaXZlcl9iaW5kKGRydiwgYWRkcik7Cj4gKwo+ICsJaWd0X2RlYnVnKCJyZW9wZW5pbmcgZGV2 aWNlXG4iKTsKPiArCWZkID0gX19kcm1fb3Blbl9kcml2ZXIoY2hpcHNldCk7Cj4gKwlpZ3RfYXNz ZXJ0KGZkID49IDApOwo+ICsKPiArCWNsb3NlKGZkKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQg dW5wbHVnX3Jlc2NhbihpbnQgY2hpcHNldCkKPiArewo+ICsJaW50IGZkLCBkZXYsIGJ1czsKPiAr Cj4gKwlmZCA9IF9fZHJtX29wZW5fZHJpdmVyKGNoaXBzZXQpOwo+ICsJaWd0X2Fzc2VydChmZCA+ PSAwKTsKPiArCj4gKwlkZXYgPSBpZ3Rfc3lzZnNfb3BlbihmZCk7Cj4gKwlpZ3RfYXNzZXJ0KGRl diA+PSAwKTsKPiArCj4gKwljbG9zZShmZCk7Cj4gKwo+ICsJLyogY29sbGVjdCBpbmZvcm1hdGlv biByZXF1aXJlZCBmb3IgYnVzIHJlc2NhbiAqLwo+ICsJYnVzID0gb3BlbmF0KGRldiwgImRldmlj ZS9zdWJzeXN0ZW0iLCBPX0RJUkVDVE9SWSk7Cj4gKwlpZ3RfYXNzZXJ0KGJ1cyA+PSAwKTsKPiAr Cj4gKwlpZ3RfZGVidWcoInVucGx1Z2dpbmcgZGV2aWNlXG4iKTsKPiArICAgICAgICBkZXZpY2Vf dW5wbHVnKGRldik7Cj4gKwo+ICsJaWd0X2RlYnVnKCJyZWNvdmVyaW5nIGRldmljZVxuIik7Cj4g KwlidXNfcmVzY2FuKGJ1cyk7Cj4gKwo+ICsJaWd0X2RlYnVnKCJyZW9wZW5pbmcgZHJpdmVyXG4i KTsKPiArCWZkID0gX19kcm1fb3Blbl9kcml2ZXIoY2hpcHNldCk7Cj4gKwlpZ3RfYXNzZXJ0KGZk ID49IDApOwo+ICsKPiArCWNsb3NlKGZkKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZHJtX29w ZW5faG90dW5wbHVnKGludCBjaGlwc2V0KQo+ICt7Cj4gKwlpbnQgZmQsIGRldiwgYnVzOwo+ICsK PiArCWZkID0gX19kcm1fb3Blbl9kcml2ZXIoY2hpcHNldCk7Cj4gKwlpZ3RfYXNzZXJ0KGZkID49 IDApOwo+ICsKPiArCWRldiA9IGlndF9zeXNmc19vcGVuKGZkKTsKPiArCWlndF9hc3NlcnQoZGV2 ID49IDApOwo+ICsKPiArCS8qIGNvbGxlY3QgaW5mb3JtYXRpb24gcmVxdWlyZWQgZm9yIGJ1cyBy ZXNjYW4gKi8KPiArCWJ1cyA9IG9wZW5hdChkZXYsICJkZXZpY2Uvc3Vic3lzdGVtIiwgT19ESVJF Q1RPUlkpOwo+ICsJaWd0X2Fzc2VydChidXMgPj0gMCk7Cj4gKwo+ICsJaWd0X2RlYnVnKCJ1bnBs dWdnaW5nIGRldmljZVxuIik7Cj4gKyAgICAgICAgZGV2aWNlX3VucGx1ZyhkZXYpOwo+ICsKPiAr CWlndF9kZWJ1ZygicmVjb3ZlcmluZyBkZXZpY2VcbiIpOwo+ICsJYnVzX3Jlc2NhbihidXMpOwo+ ICsKPiArCWlndF9kZWJ1ZygiY2xvc2luZyBkZXZpY2VcbiIpOwo+ICsJY2xvc2UoZmQpOwo+ICsK PiArCWlndF9kZWJ1ZygicmVvcGVuaW5nIGRyaXZlclxuIik7Cj4gKwlmZCA9IF9fZHJtX29wZW5f ZHJpdmVyKGNoaXBzZXQpOwo+ICsJaWd0X2Fzc2VydChmZCA+PSAwKTsKPiArCj4gKwljbG9zZShm ZCk7Cj4gK30KClRlc3RjYXNlcyBsZ3RtIHVwIHRvIGhlcmUuIEkgdGhpbmsgdGhpcyB3b3VsZCBt YWtlIHNlbnNlIGFzIHRoZSBmaXJzdCBzZXQKb2YgdGVzdHMgdG8gbWVyZ2UgKHRvZ2V0aGVyIHdp dGggdGhlIGJhc2ljIGhvdHVucGx1ZyBrZXJuZWwgZml4ZXMpLgoKPiArCj4gK3N0YXRpYyB2b2lk IGdlbV9idWZmZXJfaG90dW5wbHVnKGludCBjaGlwc2V0KQo+ICt7Cj4gKwlpbnQgZmQsIGRldiwg YnVzOwo+ICsJc3RydWN0IGlndF9mYiBmYjsKPiArCj4gKwlmZCA9IF9fZHJtX29wZW5fZHJpdmVy KGNoaXBzZXQpOwo+ICsJaWd0X2Fzc2VydChmZCA+PSAwKTsKPiArCj4gKwlpZ3RfZGVidWcoImNy ZWF0aW5nIEdFTSBvYmplY3RcbiIpOwo+ICsJaWd0X2NyZWF0ZV9ib19mb3JfZmIoZmQsIDEsIDEs IERSTV9GT1JNQVRfWFJHQjg4ODgsIDAsICZmYik7CgpUaGlzIGlzIGEga21zIGZ1bmN0aW9uLCBh bmQgZmFpcmx5IGhpZ2gtbGV2ZWwuIEkgdGhpbmsgZm9yIHRoZSB1bnBsdWcKdGVzdHMgd2Ugc2hv dWxkIGhhdmUgbW9yZSBsb3ctbGV2ZWwgY29udHJvbCBvdmVyIHdoYXQgd2UncmUgZG9pbmcuIEhl cmUncwp0aGUgdGVzdGNhc2VzIEkgaGF2ZSBpbiBtaW5kOgoKLSBhIGdlbmVyaWMgZ2VtX2R1bWJf bW1hcC1ob3R1bnBsdWcgdGVzdGNhc2Ugd2hpY2ggdXNlcyB0aGUgZHVtYiBpb2N0bHMuCiAgTmVl ZHMgdG8gY2hlY2sgdGhhdCB0aG9zZSBleGlzdCAoZS5nLiBpZiB3ZSBoYXZlIGk5MTUgd2l0aG91 dCBrbXMKICBlbmFibGVkLCBhdG0gZG9lc24ndCBleGlzdCB5ZXQgYnV0IG1pZ2h0IGhhcHBlbiku CgotIGk5MTUgc3BlY2lmaWMgdGVzdGNhc2VzIGZvciB0aGUgdmFyaW91cyBtbWFwIG1vZGVzIGk5 MTUgc3VwcG9ydHM6IGd0dAogIG1tYXAsIHdjIGFuZCBjYWNoZWQgY3B1IG1tYXAuCgpOb3RlIHRo YXQgZm9yIGFsbCBvZiB0aGVzZSB5b3UgbXVzdCBmaXJzdCB3cml0ZSBpbnRvIHRoZSBtbWFwIHJl Z2lvbiwgaW4KbWFueSBjYXNlcyB0aGUgbW1hcCB3b24ndCBiZSBmdWxseSBpbnN0YW50aWF0ZWQg d2l0aG91dCB0aGF0IChpLmUuIGtlcm5lbAp3aWxsIG5vdCBhbGxvY2F0ZSBhY3R1YWxseSBncHUg bWVtb3J5LCBvbmx5IHNvbWUgbWV0YWRhdGEgdG8gZGVzY3JpYmUgd2hhdAp5b3Ugd2FudCkuIEJl Y2F1c2Ugb2YgdGhpcyBkZWxheWVkIGFsbG9jYXRpb24ganVzdCB0ZXN0aW5nIHdpdGggYSBidWZm ZXIKYWxsb2NhdGVkIGlzIHByb2JhYmx5IG5vdCB0aGF0IGludGVyZXN0aW5nLCBJJ2QgZHJvcCB0 aGF0IHN1YnRlc3QuIE9mYyBpZgphbGxvY2F0aW5nIGl0c2VsZiB5aWVsZHMgYnVncyBpbiB0ZXN0 aW5nLCB0aGVuIGRlZmluaXRlbHkga2VlcCBpdCEKCj4gKwo+ICsJZGV2ID0gaWd0X3N5c2ZzX29w ZW4oZmQpOwo+ICsJaWd0X2Fzc2VydChkZXYgPj0gMCk7Cj4gKwo+ICsJLyogY29sbGVjdCBpbmZv cm1hdGlvbiByZXF1aXJlZCBmb3IgYnVzIHJlc2NhbiAqLwo+ICsJYnVzID0gb3BlbmF0KGRldiwg ImRldmljZS9zdWJzeXN0ZW0iLCBPX0RJUkVDVE9SWSk7Cj4gKwlpZ3RfYXNzZXJ0KGJ1cyA+PSAw KTsKPiArCj4gKwlpZ3RfZGVidWcoInVucGx1Z2dpbmcgZGV2aWNlXG4iKTsKPiArICAgICAgICBk ZXZpY2VfdW5wbHVnKGRldik7Cj4gKwo+ICsJaWd0X2RlYnVnKCJyZWNvdmVyaW5nIGRldmljZVxu Iik7Cj4gKwlidXNfcmVzY2FuKGJ1cyk7Cj4gKwo+ICsJaWd0X2RlYnVnKCJjbG9zaW5nIGRldmlj ZVxuIik7Cj4gKwljbG9zZShmZCk7Cj4gKwo+ICsJaWd0X2RlYnVnKCJyZW9wZW5pbmcgZHJpdmVy XG4iKTsKPiArCWZkID0gX19kcm1fb3Blbl9kcml2ZXIoY2hpcHNldCk7Cj4gKwlpZ3RfYXNzZXJ0 KGZkID49IDApOwo+ICsKPiArCWNsb3NlKGZkKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZ2Vt X21tYXBfaG90dW5wbHVnKGludCBjaGlwc2V0KQo+ICt7Cj4gKwlpbnQgZmQsIGRldiwgYnVzOwo+ ICsJc3RydWN0IGlndF9mYiBmYjsKPiArCj4gKwlmZCA9IF9fZHJtX29wZW5fZHJpdmVyKGNoaXBz ZXQpOwo+ICsJaWd0X2Fzc2VydChmZCA+PSAwKTsKPiArCj4gKwlpZ3RfZGVidWcoIm1tYXBwaW5n IEdFTSBvYmplY3RcbiIpOwo+ICsJaWd0X2NyZWF0ZV9ib19mb3JfZmIoZmQsIDEsIDEsIERSTV9G T1JNQVRfWFJHQjg4ODgsIDAsICZmYik7Cj4gKwlpZ3RfaWdub3JlX3dhcm4oaWd0X2ZiX21hcF9i dWZmZXIoZmQsICZmYikpOwo+ICsKPiArCWRldiA9IGlndF9zeXNmc19vcGVuKGZkKTsKPiArCWln dF9hc3NlcnQoZGV2ID49IDApOwo+ICsKPiArCS8qIGNvbGxlY3QgaW5mb3JtYXRpb24gcmVxdWly ZWQgZm9yIGJ1cyByZXNjYW4gKi8KPiArCWJ1cyA9IG9wZW5hdChkZXYsICJkZXZpY2Uvc3Vic3lz dGVtIiwgT19ESVJFQ1RPUlkpOwo+ICsJaWd0X2Fzc2VydChidXMgPj0gMCk7Cj4gKwo+ICsJaWd0 X2RlYnVnKCJ1bnBsdWdnaW5nIGRldmljZVxuIik7Cj4gKyAgICAgICAgZGV2aWNlX3VucGx1Zyhk ZXYpOwo+ICsKPiArCWlndF9kZWJ1ZygicmVjb3ZlcmluZyBkZXZpY2VcbiIpOwo+ICsJYnVzX3Jl c2NhbihidXMpOwo+ICsKPiArCWlndF9kZWJ1ZygiY2xvc2luZyBkZXZpY2VcbiIpOwo+ICsJY2xv c2UoZmQpOwo+ICsKPiArCWlndF9kZWJ1ZygicmVvcGVuaW5nIGRyaXZlclxuIik7Cj4gKwlmZCA9 IF9fZHJtX29wZW5fZHJpdmVyKGNoaXBzZXQpOwo+ICsJaWd0X2Fzc2VydChmZCA+PSAwKTsKPiAr Cj4gKwljbG9zZShmZCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGk5MTVfY29udGV4dF9ob3R1 bnBsdWcoaW50IGNoaXBzZXQpCj4gK3sKPiArCWludCBmZCwgZGV2LCBidXM7Cj4gKwo+ICsJZmQg PSBfX2RybV9vcGVuX2RyaXZlcihjaGlwc2V0KTsKPiArCWlndF9hc3NlcnQoZmQgPj0gMCk7Cj4g Kwo+ICsJZ2VtX3JlcXVpcmVfY29udGV4dHMoZmQpOwo+ICsKPiArCWlndF9kZWJ1ZygiY3JlYXRp bmcgR0VNIGNvbnRleHRcbiIpOwo+ICsJaWd0X2lnbm9yZV93YXJuKGdlbV9jb250ZXh0X2NyZWF0 ZShmZCkpOwo+ICsKPiArCWRldiA9IGlndF9zeXNmc19vcGVuKGZkKTsKPiArCWlndF9hc3NlcnQo ZGV2ID49IDApOwo+ICsKPiArCS8qIGNvbGxlY3QgaW5mb3JtYXRpb24gcmVxdWlyZWQgZm9yIGJ1 cyByZXNjYW4gKi8KPiArCWJ1cyA9IG9wZW5hdChkZXYsICJkZXZpY2Uvc3Vic3lzdGVtIiwgT19E SVJFQ1RPUlkpOwo+ICsJaWd0X2Fzc2VydChidXMgPj0gMCk7Cj4gKwo+ICsJaWd0X2RlYnVnKCJ1 bnBsdWdnaW5nIGRldmljZVxuIik7Cj4gKyAgICAgICAgZGV2aWNlX3VucGx1ZyhkZXYpOwo+ICsK PiArCWlndF9kZWJ1ZygicmVjb3ZlcmluZyBkZXZpY2VcbiIpOwo+ICsJYnVzX3Jlc2NhbihidXMp Owo+ICsKPiArCWlndF9kZWJ1ZygiY2xvc2luZyBkZXZpY2VcbiIpOwo+ICsJY2xvc2UoZmQpOwo+ ICsKPiArCWlndF9kZWJ1ZygicmVvcGVuaW5nIGRyaXZlclxuIik7Cj4gKwlmZCA9IF9fZHJtX29w ZW5fZHJpdmVyKGNoaXBzZXQpOwo+ICsJaWd0X2Fzc2VydChmZCA+PSAwKTsKPiArCj4gKwlpZ3Rf ZGVidWcoInBlcmZvcm1pbmcgaGVhbHRoY2hlY2tcbiIpOwo+ICsJZ2VtX3Rlc3RfZW5naW5lKGZk LCBBTExfRU5HSU5FUyk7Cj4gKwo+ICsJY2xvc2UoZmQpOwoKSSB0aGluayBmb3IgY29udGV4dCB3 ZSBhZ2FpbiBoYXZlIHRoZSBpc3N1ZSB0aGF0IGFsbG9jYXRpbmcgb25lIGRvZXNuJ3QgZG8KbXVj aCwgd2UgbmVlZCB0byB1c2UgaXQgZmlyc3QuIEJ1dCBmb3IgYSBzaW1wbGUgY29udGV4dCB0ZXN0 IHdlIHdhbnQgdG8KbWFrZSBzdXJlIHRoYXQgdGhlIGJhdGNoIGhhcyBzdG9wcGVkLiBBbHNvLCB5 b3UgZG9uJ3QgbmVlZCB0byBhbGxvY2F0ZSBhCmNvbnRleHQsIHRoZXJlJ3MgYSBkZWZhdWx0IGNv bnRleHQgYWxsb2NhdGVkIHdoZW4geW91IG9wZW4gYW4gZmQuIEhlcmUncwpteSB0ZXN0Y2FzZSBp ZGVhOgoKLSBvcGVuIGZkCi0gcnVuIGEgc2ltcGxlIGJhdGNoICh0aGlzIG1lYW5zIHlvdSBuZWVk IHNvbWUgYnVmZmVycyBhbmQgc3R1ZmYsIGFuZCB0aGUKICBrZXJuZWwgd2lsbCBhbGxvY2F0ZSBj b250ZXh0cywgYnVmZmVycyBhbmQgbWFwIHRoZW0gYWxsIGludG8geW91cgogIGNvbnRleHQpLiBn ZW1fdGVzdF9lbmdpbmUgbWlnaHQgZG8gdGhpcywgbWludXMgdGhlICJrZWVwIHRoZSBidWZmZXIK ICBtYXBwZWQiIHBhcnQuCi0gbWFrZSBzdXJlIHlvdSBkb24ndCByZWxlYXNlIHlvdXIgYmF0Y2hi dWZmZXIgKHdlIHdhbnQgdGhlIGtlcm5lbCB0byBkbwogIHRoZSBjbGVhbnVwIGZvciB1cykuCi0g aG90dW5wbHVnIGFuZCB1c3VhbCB0YWlsIG9mIHRoZSB0ZXN0Y2FzZQoKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgaTkxNV9zcGluX2hvdHVucGx1ZyhpbnQgY2hpcHNldCkKPiArewo+ICsJaW50IGZk LCBkZXYsIGJ1czsKPiArCj4gKwlmZCA9IF9fZHJtX29wZW5fZHJpdmVyKGNoaXBzZXQpOwo+ICsJ aWd0X2Fzc2VydChmZCA+PSAwKTsKPiArCj4gKwlpZ3RfZGVidWcoInN1Ym1pdHRpbmcgZHVtbXkg bG9hZFxuIik7Cj4gKwlpZ3RfaWdub3JlX3dhcm4oaWd0X3NwaW5fbmV3KGZkKSk7Cj4gKwo+ICsJ ZGV2ID0gaWd0X3N5c2ZzX29wZW4oZmQpOwo+ICsJaWd0X2Fzc2VydChkZXYgPj0gMCk7Cj4gKwo+ ICsJLyogY29sbGVjdCBpbmZvcm1hdGlvbiByZXF1aXJlZCBmb3IgYnVzIHJlc2NhbiAqLwo+ICsJ YnVzID0gb3BlbmF0KGRldiwgImRldmljZS9zdWJzeXN0ZW0iLCBPX0RJUkVDVE9SWSk7Cj4gKwlp Z3RfYXNzZXJ0KGJ1cyA+PSAwKTsKPiArCj4gKwlpZ3RfZGVidWcoInVucGx1Z2dpbmcgZGV2aWNl XG4iKTsKPiArICAgICAgICBkZXZpY2VfdW5wbHVnKGRldik7Cj4gKwo+ICsJaWd0X2RlYnVnKCJy ZWNvdmVyaW5nIGRldmljZVxuIik7Cj4gKwlidXNfcmVzY2FuKGJ1cyk7Cj4gKwo+ICsJaWd0X2Rl YnVnKCJjbG9zaW5nIGRldmljZVxuIik7Cj4gKwljbG9zZShmZCk7Cj4gKwo+ICsJaWd0X2RlYnVn KCJyZW9wZW5pbmcgZHJpdmVyXG4iKTsKPiArCWZkID0gX19kcm1fb3Blbl9kcml2ZXIoY2hpcHNl dCk7Cj4gKwlpZ3RfYXNzZXJ0KGZkID49IDApOwo+ICsKPiArCWlndF9kZWJ1ZygicGVyZm9ybWlu ZyBoZWFsdGhjaGVja1xuIik7Cj4gKwlnZW1fdGVzdF9lbmdpbmUoZmQsIEFMTF9FTkdJTkVTKTsK PiArCj4gKwljbG9zZShmZCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGRybV9ob3R1bnBsdWdf dW5sb2FkKGludCBjaGlwc2V0LCBjb25zdCBjaGFyICptb2R1bGUpCj4gK3sKPiArCWludCBmZCwg ZGV2LCBidXM7Cj4gKwo+ICsJZmQgPSBfX2RybV9vcGVuX2RyaXZlcihjaGlwc2V0KTsKPiArCWln dF9hc3NlcnQoZmQgPj0gMCk7Cj4gKwo+ICsJZGV2ID0gaWd0X3N5c2ZzX29wZW4oZmQpOwo+ICsJ aWd0X2Fzc2VydChkZXYgPj0gMCk7Cj4gKwo+ICsJLyogY29sbGVjdCBpbmZvcm1hdGlvbiByZXF1 aXJlZCBmb3IgYnVzIHJlc2NhbiAqLwo+ICsJYnVzID0gb3BlbmF0KGRldiwgImRldmljZS9zdWJz eXN0ZW0iLCBPX0RJUkVDVE9SWSk7Cj4gKwlpZ3RfYXNzZXJ0KGJ1cyA+PSAwKTsKPiArCj4gKwlp Z3RfZGVidWcoInVucGx1Z2dpbmcgZGV2aWNlXG4iKTsKPiArICAgICAgICBkZXZpY2VfdW5wbHVn KGRldik7Cj4gKwo+ICsJaWd0X2RlYnVnKCJ0cnlpbmcgdG8gdW5sb2FkIG1vZHVsZVxuIik7Cj4g KwlpZ3RfYXNzZXJ0KCFtb2R1bGVfdW5sb2FkKGNoaXBzZXQsIG1vZHVsZSkpOwo+ICsKPiArCWln dF9kZWJ1ZygiY2xvc2luZyBkZXZpY2VcbiIpOwo+ICsJY2xvc2UoZmQpOwo+ICsKPiArCWlndF9k ZWJ1ZygidW5sb2FkaW5nIG1vZHVsZVxuIik7Cj4gKwlpZ3RfYXNzZXJ0KG1vZHVsZV91bmxvYWQo Y2hpcHNldCwgbW9kdWxlKSk7Cj4gKwo+ICsJaWd0X2RlYnVnKCJyZWNvdmVyaW5nIGRldmljZVxu Iik7Cj4gKwlidXNfcmVzY2FuKGJ1cyk7Cj4gKwo+ICsJaWd0X2RlYnVnKCJyZW9wZW5pbmcgZHJp dmVyXG4iKTsKPiArCWZkID0gX19kcm1fb3Blbl9kcml2ZXIoY2hpcHNldCk7Cj4gKwlpZ3RfYXNz ZXJ0KGZkID49IDApOwo+ICsKPiArCWNsb3NlKGZkKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQg aTkxNV9ob3R1bnBsdWdfd3JpdGUoaW50IGNoaXBzZXQpCj4gK3sKPiArCWludCBmZCwgZGV2LCBi dXMsIGdlbTsKPiArCWNvbnN0IHVpbnQzMl90IGJiZSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Cj4g Kwo+ICsJZmQgPSBfX2RybV9vcGVuX2RyaXZlcihjaGlwc2V0KTsKPiArCWlndF9hc3NlcnQoZmQg Pj0gMCk7Cj4gKwo+ICsJaWd0X3JlcXVpcmVfZ2VtKGZkKTsKPiArCj4gKwlpZ3RfZGVidWcoImNy ZWF0aW5nIEdFTSBidWZmZXIgb2JqZWN0XG4iKTsKPiArCWdlbSA9IGdlbV9jcmVhdGUoZmQsIDEp Owo+ICsKPiArCWRldiA9IGlndF9zeXNmc19vcGVuKGZkKTsKPiArCWlndF9hc3NlcnQoZGV2ID49 IDApOwo+ICsKPiArCS8qIGNvbGxlY3QgaW5mb3JtYXRpb24gcmVxdWlyZWQgZm9yIGJ1cyByZXNj YW4gKi8KPiArCWJ1cyA9IG9wZW5hdChkZXYsICJkZXZpY2Uvc3Vic3lzdGVtIiwgT19ESVJFQ1RP UlkpOwo+ICsJaWd0X2Fzc2VydChidXMgPj0gMCk7Cj4gKwo+ICsJaWd0X2RlYnVnKCJ1bnBsdWdn aW5nIGRldmljZVxuIik7Cj4gKyAgICAgICAgZGV2aWNlX3VucGx1ZyhkZXYpOwo+ICsKPiArCWln dF9kZWJ1ZygidHJ5aW5nIHRvIHdyaXRlIHRvIEdFTSBidWZmZXJcbiIpOwo+ICsJaWd0X2Fzc2Vy dF9uZXEoX19nZW1fd3JpdGUoZmQsIGdlbSwgMCwgJmJiZSwgc2l6ZW9mKGJiZSkpLCAwKTsKCkkg dGhpbmsgd2UgY291bGQgcmVuYW1lIHRoaXMgdG8gb3VyIGdlbmVyYWwgInRlc3QgaW9jdGxzIGFm dGVyIGhvdHVucGx1ZyIKdGVzdGNhc2UsIGFuZCBnbyB0aHJvdWdoIHRoZSBlbnRpcmUgbGlzdCBv ZiBpb2N0bHMuCgpBbHNvIEkgdGhpbmsgdGVzdGluZyBmb3IgYW4gZXhwbGljaXQgZXJybm8gd291 bGQgYmUgZ29vZCBoZXJlLCBJIHRoaW5rCi1FSU8gaXMgdGhlIHJpZ2h0IG9uZSBmb3IgIm9vcHMg dGhlIGRldmljZSBpcyBnb25lIi4gTmVlZCB0byBkb3VibGUgY2hlY2sKd2l0aCBDaHJpcyBXaWxz b24sIGhlIHRlbmRzIHRvIGhhdmUgZ29vZCBpbnNpZ2h0cyBvbiB0aGVzZSB1YXBpIGRldGFpbHMu CgpUaGVzZSBob3R1bnBsdWcgaW9jdGwgdGVzdGNhc2UgbWlnaHQgYmUgYSBnb29kIDJuZCBzdGVw IG9mIGxhbmRpbmcgdGhpcy4KVGhlIG1vZHVsZSB1bmxvYWQgdGVzdGNhc2Ugc2hvdWxkIGFsc28g YmUgZmFpcmx5IGVhc3kgdG8gZ2V0IGFsbCBmaXhlZCB1cAphbmQgbGFuZGVkLgoKVGhlbiB3ZSBj YW4gc3RhcnQgbG9va2luZyBhdCB0aGUgbmFzdGllciBvbmVzLCBtYXliZSBzdGFydCB3aXRoIG1t YXAsIGFuZAp0aGUgdXNlZC1idXQtbm93LWlkbGUgY29udGV4dC4gVGhlbiBidXN5YmF0Y2guIEFu ZCBldmVuIGxhdGVyICh3ZSdyZQp0YWxraW5nIG1vbnRocyBoZXJlIEkgdGhpbmspIHdlIGNhbiBz dGFydCBsb29raW5nIGF0IGRtYS1idWYvZG1hLWZlbmNlCnNoYXJpbmcgYW5kIHN0dWZmIGxpa2Ug dGhhdC4gRXZlbiBsYXRlciB0aGVuIGluLWZsaWdodCBrbXMgcmVxdWVzdHMuCgpUaGlzIGlzIGFs bCBnb2luZyB0byBiZSBsb3RzIG9mIGZ1biA6LSkKCkNoZWVycywgRGFuaWVsCgo+ICsKPiArCWln dF9kZWJ1ZygicmVjb3ZlcmluZyBkZXZpY2VcbiIpOwo+ICsJYnVzX3Jlc2NhbihidXMpOwo+ICsK PiArCWlndF9kZWJ1ZygiY2xvc2luZyBkZXZpY2VcbiIpOwo+ICsJY2xvc2UoZmQpOwo+ICsKPiAr CWlndF9kZWJ1ZygicmVvcGVuaW5nIGRyaXZlclxuIik7Cj4gKwlmZCA9IF9fZHJtX29wZW5fZHJp dmVyKGNoaXBzZXQpOwo+ICsJaWd0X2Fzc2VydChmZCA+PSAwKTsKPiArCj4gKwlpZ3RfZGVidWco InBlcmZvcm1pbmcgaGVhbHRoY2hlY2tcbiIpOwo+ICsJZ2VtX3Rlc3RfZW5naW5lKGZkLCBBTExf RU5HSU5FUyk7Cj4gKwo+ICsJY2xvc2UoZmQpOwo+ICt9Cj4gKwo+ICtpZ3RfbWFpbiB7Cj4gKwlp bnQgY2hpcHNldDsKPiArCWNoYXIgKm1vZHVsZTsKPiArCj4gKwlpZ3RfZml4dHVyZSB7Cj4gKwkJ Y2hhciBwYXRoW1BBVEhfTUFYXTsKPiArCQlpbnQgZmQsIGRldiwgbGVuOwo+ICsKPiArCQkvKioK PiArCQkgKiBTaW5jZSBzb21lIHN1YnRlc3RzIGRlcGVuZCBvbiBzdWNjZXNzZnVsIHVubG9hZCBv ZiBhIGRyaXZlcgo+ICsJCSAqIG1vZHVsZSwgZG9uJ3QgdXNlIGRybV9vcGVuX2RyaXZlcigpIGFz IGl0IGtlZXBzIGEgZGV2aWNlIGZpbGUKPiArCQkgKiBkZXNjcmlwdG9yIG9wZW4gZm9yIGV4aXQg aGFuZGxlciB1c2UgYW5kIHRoYXQgZWZmZWN0aXZlbHkKPiArCQkgKiBwcmV2ZW50cyB0aGUgbW9k dWxlIGZyb20gYmVpbmcgdW5sb2FkZWQuCj4gKwkJICovCj4gKwkJZmQgPSBfX2RybV9vcGVuX2Ry aXZlcihEUklWRVJfQU5ZKTsKPiArCQlpZ3RfYXNzZXJ0KGZkID49IDApOwo+ICsKPiArCQlpZiAo aXNfaTkxNV9kZXZpY2UoZmQpKSB7Cj4gKwkJCWNoaXBzZXQgPSBEUklWRVJfSU5URUw7Cj4gKwkJ CW1vZHVsZSA9IHN0cmR1cCgiaTkxNSIpOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCWNoaXBzZXQgPSBE UklWRVJfQU5ZOwo+ICsKPiArCQkJLyogQ2FwdHVyZSBtb2R1bGUgbmFtZSB0byBiZSB1bmxvYWRl ZCAqLwo+ICsJCQlkZXYgPSBpZ3Rfc3lzZnNfb3BlbihmZCk7Cj4gKwkJCWxlbiA9IHJlYWRsaW5r YXQoZGV2LCAiZGV2aWNlL2RyaXZlci9tb2R1bGUiLCBwYXRoLAo+ICsJCQkJCSBzaXplb2YocGF0 aCkgLSAxKTsKPiArCQkJY2xvc2UoZGV2KTsKPiArCQkJcGF0aFtsZW5dID0gJ1wwJzsKPiArCQkJ bW9kdWxlID0gc3RyZHVwKHN0cnJjaHIocGF0aCwgJy8nKSArIDEpOwo+ICsJCX0KPiArCQljbG9z ZShmZCk7Cj4gKwo+ICsJCWlndF9pbmZvKCJSdW5uaW5nIHRoZSB0ZXN0IG9uIGRyaXZlciBcIiVz XCIsIGNoaXBzZXQgbWFzayAlIzB4XG4iLAo+ICsJCQkgbW9kdWxlLCBjaGlwc2V0KTsKPiArCX0K PiArCj4gKwlpZ3Rfc3VidGVzdCgidW5iaW5kLXJlYmluZCIpCj4gKwkJdW5iaW5kX3JlYmluZChj aGlwc2V0KTsKPiArCj4gKwlpZ3Rfc3VidGVzdCgidW5wbHVnLXJlc2NhbiIpCj4gKwkJdW5wbHVn X3Jlc2NhbihjaGlwc2V0KTsKPiArCj4gKwlpZ3Rfc3VidGVzdCgiZHJtX29wZW4taG90dW5wbHVn IikKPiArCQlkcm1fb3Blbl9ob3R1bnBsdWcoY2hpcHNldCk7Cj4gKwo+ICsJaWd0X3N1YnRlc3Qo ImdlbV9idWZmZXItaG90dW5wbHVnIikKPiArCQlnZW1fYnVmZmVyX2hvdHVucGx1ZyhjaGlwc2V0 KTsKPiArCj4gKwlpZ3Rfc3VidGVzdCgiZ2VtX21tYXAtaG90dW5wbHVnIikKPiArCQlnZW1fbW1h cF9ob3R1bnBsdWcoY2hpcHNldCk7Cj4gKwo+ICsJaWd0X3N1YnRlc3QoImk5MTVfY29udGV4dC1o b3R1bnBsdWciKQo+ICsJCWk5MTVfY29udGV4dF9ob3R1bnBsdWcoY2hpcHNldCk7Cj4gKwo+ICsJ aWd0X3N1YnRlc3QoImk5MTVfc3Bpbi1ob3R1bnBsdWciKQo+ICsJCWk5MTVfc3Bpbl9ob3R1bnBs dWcoY2hpcHNldCk7Cj4gKwo+ICsJaWd0X3N1YnRlc3QoImRybS1ob3R1bnBsdWctdW5sb2FkIikK PiArCQlkcm1faG90dW5wbHVnX3VubG9hZChjaGlwc2V0LCBtb2R1bGUpOwo+ICsKPiArCWlndF9z dWJ0ZXN0KCJpOTE1LWhvdHVucGx1Zy13cml0ZSIpCj4gKwkJaTkxNV9ob3R1bnBsdWdfd3JpdGUo Y2hpcHNldCk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9t ZXNvbi5idWlsZAo+IGluZGV4IDcxMTk3OWI0Li5mZjM5MWM5NCAxMDA2NDQKPiAtLS0gYS90ZXN0 cy9tZXNvbi5idWlsZAo+ICsrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCj4gQEAgLTMsNiArMyw3IEBA IHRlc3RfcHJvZ3MgPSBbCj4gIAknY29yZV9nZXRjbGllbnQnLAo+ICAJJ2NvcmVfZ2V0c3RhdHMn LAo+ICAJJ2NvcmVfZ2V0dmVyc2lvbicsCj4gKwknY29yZV9ob3R1bnBsdWcnLAo+ICAJJ2NvcmVf c2V0bWFzdGVyX3ZzX2F1dGgnLAo+ICAJJ2RlYnVnZnNfdGVzdCcsCj4gIAknZHJtX2ltcG9ydF9l eHBvcnQnLAo+IC0tIAo+IDIuMjAuMQo+IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5n aW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0 CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==