From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH intel-gpu-tools] tools: Added intel_dpio_read and intel_dpio_write Date: Fri, 03 Aug 2012 10:05:41 +0300 Message-ID: <87y5lw316i.fsf@intel.com> References: <1343909236-17870-1-git-send-email-vijay.a.purushothaman@intel.com> <25e00d42d0c3a1f04db332d79a69b63d@bwidawsk.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 719039E794 for ; Fri, 3 Aug 2012 00:02:24 -0700 (PDT) In-Reply-To: <25e00d42d0c3a1f04db332d79a69b63d@bwidawsk.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Ben Widawsky , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAwMiBBdWcgMjAxMiwgQmVuIFdpZGF3c2t5IDxiZW5AYndpZGF3c2submV0PiB3cm90 ZToKPiBPbiAyMDEyLTA4LTAyIDA1OjA3LCBWaWpheSBQdXJ1c2hvdGhhbWFuIHdyb3RlOgo+PiBJ biBWYWxsZXl2aWV3IHRoZSBEUExMIGFuZCBsYW5lIGNvbnRyb2wgcmVnaXN0ZXJzIGFyZSBhY2Nl c3NpYmxlIG9ubHkKPj4gdGhyb3VnaCBzaWRlIGJhbmQgZmFicmljIGNhbGxlZCBEUElPLiBBZGRl ZCB0d28gdG9vbHMgdG8gcmVhZCBhbmQgCj4+IHdyaXRlCj4+IHJlZ2lzdGVycyByZXNpZGluZyBp biB0aGlzIHNwYWNlLgo+Cj4gQ291bGQgSSBjb252aW5jZSB5b3UgdG8gdXNlIHRoZSBjZW50cmFs aXplZCByZWFkL3dyaXRlIG1taW8gZnVuY3Rpb25zPwo+IE90aGVyd2lzZSwgZXZlcnl0aGluZyBz ZWVtcyBmaW5lIHRvIG1lIGhlcmUuCgpUaGUgaW50cm9kdWNlZCBpbnRlbF9kcGlvX3JlYWQuYyBh bmQgaW50ZWxfZHBpb193cml0ZS5jIGZpbGVzIGFyZSBhbG1vc3QKdGhlIHNhbWUuIFRoZXkgY291 bGQgc2hhcmUgbW9zdCBvZiB0aGUgY29kZSBpbnN0ZWFkIG9mIGR1cGxpY2F0aW9uLCBJTU8uCgpC UiwKSmFuaS4KCgo+Cj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFZpamF5IFB1cnVzaG90aGFtYW4gPHZp amF5LmEucHVydXNob3RoYW1hbkBpbnRlbC5jb20+Cj4+IC0tLQo+PiAgdG9vbHMvTWFrZWZpbGUu YW0gICAgICAgIHwgICAgMiArCj4+ICB0b29scy9pbnRlbF9kcGlvX3JlYWQuYyAgfCAgMTA1Cj4+ ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gIHRvb2xz L2ludGVsX2RwaW9fd3JpdGUuYyB8ICAxMDMKPj4gKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCj4+ICAzIGZpbGVzIGNoYW5nZWQsIDIxMCBpbnNlcnRpb25zKCsp Cj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvaW50ZWxfZHBpb19yZWFkLmMKPj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCB0b29scy9pbnRlbF9kcGlvX3dyaXRlLmMKPj4KPj4gZGlmZiAtLWdpdCBh L3Rvb2xzL01ha2VmaWxlLmFtIGIvdG9vbHMvTWFrZWZpbGUuYW0KPj4gaW5kZXggZDQ2MWYzOC4u NzFmYjA4NyAxMDA2NDQKPj4gLS0tIGEvdG9vbHMvTWFrZWZpbGUuYW0KPj4gKysrIGIvdG9vbHMv TWFrZWZpbGUuYW0KPj4gQEAgLTE1LDYgKzE1LDggQEAgYmluX1BST0dSQU1TID0gCQkJCVwKPj4g IAlpbnRlbF9yZWdfd3JpdGUgCQlcCj4+ICAJaW50ZWxfcmVnX3JlYWQgCQkJXAo+PiAgCWludGVs X2ZvcmNld2FrZWQJCVwKPj4gKwlpbnRlbF9kcGlvX3JlYWQJCQlcCj4+ICsJaW50ZWxfZHBpb193 cml0ZQkJXAo+PiAgCWludGVsX2wzX3Bhcml0eQo+Pgo+PiAgbm9pbnN0X1BST0dSQU1TID0gCQkJ XAo+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfZHBpb19yZWFkLmMgYi90b29scy9pbnRlbF9k cGlvX3JlYWQuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi44Yjky NGZkCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvdG9vbHMvaW50ZWxfZHBpb19yZWFkLmMKPj4g QEAgLTAsMCArMSwxMDUgQEAKPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgwqkgMjAxMiBJbnRlbCBD b3Jwb3JhdGlvbgo+PiArICoKPj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIAo+PiBvYnRhaW5pbmcgYQo+PiArICogY29weSBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQo+ PiAiU29mdHdhcmUiKSwKPj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IAo+PiBsaW1pdGF0aW9uCj4+ICsgKiB0aGUgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgCj4+ IHN1YmxpY2Vuc2UsCj4+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSAKPj4gdGhlCj4+ICsgKiBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyAKPj4gY29uZGl0aW9u czoKPj4gKyAqCj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIAo+PiB0aGUgbmV4dAo+PiArICogcGFyYWdyYXBoKSBz aGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIAo+PiBwb3J0aW9u cyBvZiB0aGUKPj4gKyAqIFNvZnR3YXJlLgo+PiArICoKPj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAo+PiBFWFBSRVNT IE9SCj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS QU5USUVTIE9GIAo+PiBNRVJDSEFOVEFCSUxJVFksCj4+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gCj4+IEVWRU5UIFNIQUxM Cj4+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUwo+PiBPUiBPVEhFUgo+PiArICogTElBQklMSVRZLCBXSEVUSEVSIElO IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIAo+PiBBUklTSU5HCj4+ ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUgVVNFIE9SIAo+PiBPVEhFUgo+PiArICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+PiAr ICoKPj4gKyAqIEF1dGhvcnM6Cj4+ICsgKgkJVmlqYXkgUHVydXNob3RoYW1hbiA8dmlqYXkuYS5w dXJ1c2hvdGhhbWFuQGludGVsLmNvbT4KPj4gKyAqCj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUg PHVuaXN0ZC5oPgo+PiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+PiArI2luY2x1ZGUgPHN0ZGlvLmg+ Cj4+ICsjaW5jbHVkZSA8ZXJyLmg+Cj4+ICsjaW5jbHVkZSA8c3RyaW5nLmg+Cj4+ICsjaW5jbHVk ZSAiaW50ZWxfZ3B1X3Rvb2xzLmgiCj4+ICsKPj4gKyNkZWZpbmUgVkxWX0RJU1BMQVlfQkFTRQkJ MHgxODAwMDAKPj4gKyNkZWZpbmUgRFBJT19QS1QJCQkJMHgyMTAwCj4+ICsjZGVmaW5lICBEUElP X1JJRAkJCQkoMCA8PCAyNCkKPj4gKyNkZWZpbmUgIERQSU9fT1BfV1JJVEUJCQkoMSA8PCAxNikK Pj4gKyNkZWZpbmUgIERQSU9fT1BfUkVBRAkJCSgwIDw8IDE2KQo+PiArI2RlZmluZSAgRFBJT19Q T1JUSUQJCQkoMHgxMiA8PCA4KQo+PiArI2RlZmluZSAgRFBJT19CWVRFCQkJCSgweGYgPDwgNCkK Pj4gKyNkZWZpbmUgIERQSU9fQlVTWQkJCQkoMSA8PCAwKQo+PiArI2RlZmluZSBEUElPX0RBVEEJ CQkJMHgyMTA0Cj4+ICsjZGVmaW5lIERQSU9fUkVHCQkJCTB4MjEwOAo+PiArCj4+ICtzdGF0aWMg dWludDMyX3Qgdmx2X2Rpc3BsYXlfcmVnX3JlYWQodWludDMyX3QgcmVnKQo+PiArewo+PiArCXJl ZyArPSBWTFZfRElTUExBWV9CQVNFOwo+PiArCXJldHVybiAoKih2b2xhdGlsZSB1aW50MzJfdCAq KSgodm9sYXRpbGUgY2hhciopbW1pbyArIHJlZykpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9p ZCB2bHZfZGlzcGxheV9yZWdfd3JpdGUodWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCj4+ICt7 Cj4+ICsJdm9sYXRpbGUgdWludDMyX3QgKnB0cjsKPj4gKwo+PiArCXJlZyArPSBWTFZfRElTUExB WV9CQVNFOwo+PiArCXB0ciA9ICh2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9sYXRpbGUgY2hhciAq KSBtbWlvICsgcmVnKTsKPj4gKwkqcHRyID0gdmFsOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9p ZCB1c2FnZShjaGFyICpjbWRuYW1lKQo+PiArewo+PiArCXByaW50ZigiV2FybmluZyA6IFRoaXMg cHJvZ3JhbSB3aWxsIHdvcmsgb25seSBvbiBWYWxsZXl2aWV3XG4iKTsKPj4gKwlwcmludGYoIlVz YWdlOiAlcyBbYWRkcl1cbiIsIGNtZG5hbWUpOwo+PiArCXByaW50ZigiXHQgYWRkciA6IGluIDB4 WFhYWCBmb3JtYXRcbiIpOwo+PiArfQo+PiArCj4+ICtpbnQgbWFpbihpbnQgYXJnYywgY2hhcioq IGFyZ3YpCj4+ICt7Cj4+ICsJaW50IHJldCA9IDA7Cj4+ICsJdWludDMyX3QgcmVnLCB2YWw7Cj4+ ICsJY2hhciAqY21kbmFtZSA9IHN0cmR1cChhcmd2WzBdKTsKPj4gKwo+PiArCWlmIChhcmdjICE9 IDIpIHsKPj4gKwkJdXNhZ2UoY21kbmFtZSk7Cj4+ICsJCXJldCA9IDE7Cj4+ICsJCWdvdG8gb3V0 Owo+PiArCX0KPj4gKwo+PiArCXNzY2FuZihhcmd2WzFdLCAiMHgleCIsICZyZWcpOwo+PiArCj4+ ICsJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCk7 Cj4+ICsKPj4gKwkvKiBDaGVjayB3aGV0aGVyIHRoZSBzaWRlIGJhbmQgZmFicmljIGlzIHJlYWR5 IHRvIGFjY2VwdCBjb21tYW5kcyAKPj4gKi8KPj4gKwlkbyB7Cj4+ICsJCXVzbGVlcCgxKTsKPj4g Kwl9IHdoaWxlICh2bHZfZGlzcGxheV9yZWdfcmVhZChEUElPX1BLVCkgJiBEUElPX0JVU1kpOwo+ PiArCj4+ICsJdmx2X2Rpc3BsYXlfcmVnX3dyaXRlKERQSU9fUkVHLCByZWcpOwo+PiArCXZsdl9k aXNwbGF5X3JlZ193cml0ZShEUElPX1BLVCwgRFBJT19SSUQgfCBEUElPX09QX1JFQUQgfCAKPj4g RFBJT19QT1JUSUQgfAo+PiArCQkJCQkJCURQSU9fQllURSk7Cj4+ICsJZG8gewo+PiArCQl1c2xl ZXAoMSk7Cj4+ICsJfSB3aGlsZSAodmx2X2Rpc3BsYXlfcmVnX3JlYWQoRFBJT19QS1QpICYgRFBJ T19CVVNZKTsKPj4gKwo+PiArCXZhbCA9IHZsdl9kaXNwbGF5X3JlZ19yZWFkKERQSU9fREFUQSk7 Cj4+ICsKPj4gKwlwcmludGYoIlJlYWQgRFBJTyByZWdpc3RlcjogMHgleCAtIFZhbHVlIDogMHgl eFxuIiwgcmVnLCB2YWwpOwo+PiArCj4+ICsJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsK Pj4gKwo+PiArb3V0Ogo+PiArCWZyZWUoY21kbmFtZSk7Cj4+ICsJcmV0dXJuIHJldDsKPj4gK30K Pj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2RwaW9fd3JpdGUuYyBiL3Rvb2xzL2ludGVsX2Rw aW9fd3JpdGUuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi45NmI3 MmRkCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvdG9vbHMvaW50ZWxfZHBpb193cml0ZS5jCj4+ IEBAIC0wLDAgKzEsMTAzIEBACj4+ICsvKgo+PiArICogQ29weXJpZ2h0IMKpIDIwMTIgSW50ZWwg Q29ycG9yYXRpb24KPj4gKyAqCj4+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiAKPj4gb2J0YWluaW5nIGEKPj4gKyAqIGNvcHkg b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUK Pj4gIlNvZnR3YXJlIiksCj4+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCAKPj4gbGltaXRhdGlvbgo+PiArICogdGhlIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIAo+ PiBzdWJsaWNlbnNlLAo+PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gCj4+IHRoZQo+PiArICogU29mdHdhcmUgaXMg ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgCj4+IGNvbmRpdGlv bnM6Cj4+ICsgKgo+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyAKPj4gdGhlIG5leHQKPj4gKyAqIHBhcmFncmFwaCkg c2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCAKPj4gcG9ydGlv bnMgb2YgdGhlCj4+ICsgKiBTb2Z0d2FyZS4KPj4gKyAqCj4+ICsgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKPj4gRVhQUkVT UyBPUgo+PiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiAKPj4gTUVSQ0hBTlRBQklMSVRZLAo+PiArICogRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIAo+PiBFVkVOVCBTSEFM TAo+PiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sIERBTUFHRVMKPj4gT1IgT1RIRVIKPj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJ TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCAKPj4gQVJJU0lORwo+ PiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiAKPj4gT1RIRVIKPj4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPj4g KyAqCj4+ICsgKiBBdXRob3JzOgo+PiArICoJCVZpamF5IFB1cnVzaG90aGFtYW4gPHZpamF5LmEu cHVydXNob3RoYW1hbkBpbnRlbC5jb20+Cj4+ICsgKgo+PiArICovCj4+ICsKPj4gKyNpbmNsdWRl IDx1bmlzdGQuaD4KPj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4KPj4gKyNpbmNsdWRlIDxzdGRpby5o Pgo+PiArI2luY2x1ZGUgPGVyci5oPgo+PiArI2luY2x1ZGUgPHN0cmluZy5oPgo+PiArI2luY2x1 ZGUgImludGVsX2dwdV90b29scy5oIgo+PiArCj4+ICsjZGVmaW5lIFZMVl9ESVNQTEFZX0JBU0UJ CTB4MTgwMDAwCj4+ICsjZGVmaW5lIERQSU9fUEtUCQkJCTB4MjEwMAo+PiArI2RlZmluZSAgRFBJ T19SSUQJCQkJKDAgPDwgMjQpCj4+ICsjZGVmaW5lICBEUElPX09QX1dSSVRFCQkJKDEgPDwgMTYp Cj4+ICsjZGVmaW5lICBEUElPX09QX1JFQUQJCQkoMCA8PCAxNikKPj4gKyNkZWZpbmUgIERQSU9f UE9SVElECQkJKDB4MTIgPDwgOCkKPj4gKyNkZWZpbmUgIERQSU9fQllURQkJCQkoMHhmIDw8IDQp Cj4+ICsjZGVmaW5lICBEUElPX0JVU1kJCQkJKDEgPDwgMCkKPj4gKyNkZWZpbmUgRFBJT19EQVRB CQkJCTB4MjEwNAo+PiArI2RlZmluZSBEUElPX1JFRwkJCQkweDIxMDgKPj4gKwo+PiArc3RhdGlj IHVpbnQzMl90IHZsdl9kaXNwbGF5X3JlZ19yZWFkKHVpbnQzMl90IHJlZykKPj4gK3sKPj4gKwly ZWcgKz0gVkxWX0RJU1BMQVlfQkFTRTsKPj4gKwlyZXR1cm4gKCoodm9sYXRpbGUgdWludDMyX3Qg KikoKHZvbGF0aWxlIGNoYXIqKW1taW8gKyByZWcpKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZv aWQgdmx2X2Rpc3BsYXlfcmVnX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQo+PiAr ewo+PiArCXZvbGF0aWxlIHVpbnQzMl90ICpwdHI7Cj4+ICsKPj4gKwlyZWcgKz0gVkxWX0RJU1BM QVlfQkFTRTsKPj4gKwlwdHIgPSAodm9sYXRpbGUgdWludDMyX3QgKikoKHZvbGF0aWxlIGNoYXIg KikgbW1pbyArIHJlZyk7Cj4+ICsJKnB0ciA9IHZhbDsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZv aWQgdXNhZ2UoY2hhciAqY21kbmFtZSkKPj4gK3sKPj4gKwlwcmludGYoIldhcm5pbmcgOiBUaGlz IHByb2dyYW0gd2lsbCB3b3JrIG9ubHkgb24gVmFsbGV5dmlld1xuIik7Cj4+ICsJcHJpbnRmKCJV c2FnZTogJXMgW2FkZHJdIFt2YWxdXG4iLCBjbWRuYW1lKTsKPj4gKwlwcmludGYoIlx0IGFkZHIg OiBpbiAweFhYWFggZm9ybWF0XG4iKTsKPj4gK30KPj4gKwo+PiAraW50IG1haW4oaW50IGFyZ2Ms IGNoYXIqKiBhcmd2KQo+PiArewo+PiArCWludCByZXQgPSAwOwo+PiArCXVpbnQzMl90IHJlZywg dmFsOwo+PiArCWNoYXIgKmNtZG5hbWUgPSBzdHJkdXAoYXJndlswXSk7Cj4+ICsKPj4gKwlpZiAo YXJnYyAhPSAzKSB7Cj4+ICsJCXVzYWdlKGNtZG5hbWUpOwo+PiArCQlyZXQgPSAxOwo+PiArCQln b3RvIG91dDsKPj4gKwl9Cj4+ICsKPj4gKwlzc2NhbmYoYXJndlsxXSwgIjB4JXgiLCAmcmVnKTsK Pj4gKwlzc2NhbmYoYXJndlsyXSwgIjB4JXgiLCAmdmFsKTsKPj4gKwo+PiArCWludGVsX3JlZ2lz dGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDApOwo+PiArCj4+ICsJLyog Q2hlY2sgd2hldGhlciB0aGUgc2lkZSBiYW5kIGZhYnJpYyBpcyByZWFkeSB0byBhY2NlcHQgY29t bWFuZHMgCj4+ICovCj4+ICsJZG8gewo+PiArCQl1c2xlZXAoMSk7Cj4+ICsJfSB3aGlsZSAodmx2 X2Rpc3BsYXlfcmVnX3JlYWQoRFBJT19QS1QpICYgRFBJT19CVVNZKTsKPj4gKwo+PiArCXZsdl9k aXNwbGF5X3JlZ193cml0ZShEUElPX0RBVEEsIHZhbCk7Cj4+ICsJdmx2X2Rpc3BsYXlfcmVnX3dy aXRlKERQSU9fUkVHLCByZWcpOwo+PiArCXZsdl9kaXNwbGF5X3JlZ193cml0ZShEUElPX1BLVCwg RFBJT19SSUQgfCBEUElPX09QX1dSSVRFIHwgCj4+IERQSU9fUE9SVElEIHwKPj4gKwkJCQkJCQlE UElPX0JZVEUpOwo+PiArCWRvIHsKPj4gKwkJdXNsZWVwKDEpOwo+PiArCX0gd2hpbGUgKHZsdl9k aXNwbGF5X3JlZ19yZWFkKERQSU9fUEtUKSAmIERQSU9fQlVTWSk7Cj4+ICsKPj4gKwlpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOwo+PiArCj4+ICtvdXQ6Cj4+ICsJZnJlZShjbWRuYW1lKTsK Pj4gKwlyZXR1cm4gcmV0Owo+PiArfQo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK