From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 638B26E315 for ; Fri, 30 Mar 2018 20:50:08 +0000 (UTC) From: Scott D Phillips In-Reply-To: <20180330195625.22529-1-scott.d.phillips@intel.com> References: <20180330195625.22529-1-scott.d.phillips@intel.com> Date: Fri, 30 Mar 2018 13:50:06 -0700 Message-ID: <877ept1e69.fsf@intel.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t] tools/aubdump: dump 48-bit addresses 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: igt-dev@lists.freedesktop.org, Jordan Justen List-ID: U2NvdHQgRCBQaGlsbGlwcyA8c2NvdHQuZC5waGlsbGlwc0BpbnRlbC5jb20+IHdyaXRlczoKCj4g Rm9yIGdlbjEwKywgd3JpdGUgb3V0IFBQR1RUIHRhYmxlcyBpbiBhdWIgZmlsZXMgc28gdGhhdCBm dWxsCj4gNDgtYml0IGFkZHJlc3NlcyBjYW4gYmUgc2VyaWFsaXplZC4KPgo+IFNpZ25lZC1vZmYt Ynk6IFNjb3R0IEQgUGhpbGxpcHMgPHNjb3R0LmQucGhpbGxpcHNAaW50ZWwuY29tPgo+IENjOiBK b3JkYW4gSnVzdGVuIDxqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPgo+IC0tLQo+ICBsaWIvaW50 ZWxfYXViLmggfCAgIDMgKy0KPiAgdG9vbHMvYXViZHVtcC5jIHwgMjc2ICsrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIDIgZmlsZXMgY2hh bmdlZCwgMTI1IGluc2VydGlvbnMoKyksIDE1NCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQg YS9saWIvaW50ZWxfYXViLmggYi9saWIvaW50ZWxfYXViLmgKPiBpbmRleCA5Y2E1NDhlZC4uMjg4 ODUxNTAgMTAwNjQ0Cj4gLS0tIGEvbGliL2ludGVsX2F1Yi5oCj4gKysrIGIvbGliL2ludGVsX2F1 Yi5oCj4gQEAgLTExNyw3ICsxMTcsOCBAQAo+ICAvKiBEVzMgKi8KPiAgCj4gICNkZWZpbmUgQVVC X01FTV9UUkFDRV9NRU1PUllfQUREUkVTU19TUEFDRV9NQVNLCQkweGYwMDAwMDAwCj4gLSNkZWZp bmUgQVVCX01FTV9UUkFDRV9NRU1PUllfQUREUkVTU19TUEFDRV9MT0NBTAkoMSA8PCAyOCkKPiAr I2RlZmluZSBBVUJfTUVNX1RSQUNFX01FTU9SWV9BRERSRVNTX1NQQUNFX0dHVFQJCSgwIDw8IDI4 KQo+ICsjZGVmaW5lIEFVQl9NRU1fVFJBQ0VfTUVNT1JZX0FERFJFU1NfU1BBQ0VfUEhZU0lDQUwJ KDIgPDwgMjgpCj4gICNkZWZpbmUgQVVCX01FTV9UUkFDRV9NRU1PUllfQUREUkVTU19TUEFDRV9H R1RUX0VOVFJZCSg0IDw8IDI4KQo+ICAKPiAgLyoqCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2F1YmR1 bXAuYyBiL3Rvb2xzL2F1YmR1bXAuYwo+IGluZGV4IDI2NzA2MWIwLi43OGZkYTkzYyAxMDA2NDQK PiAtLS0gYS90b29scy9hdWJkdW1wLmMKPiArKysgYi90b29scy9hdWJkdW1wLmMKPiBAQCAtNTYs NiArNTYsMTIgQEAKPiAgCV9hIDwgX2IgPyBfYSA6IF9iOwkJXAo+ICB9KQo+ICAKPiArI2RlZmlu ZSBtYXgoYSwgYikgKHsJCQlcCj4gKwl0eXBlb2YoYSkgX2EgPSAoYSk7CQlcCj4gKwl0eXBlb2Yo YikgX2IgPSAoYik7CQlcCj4gKwlfYSA+IF9iID8gX2EgOiBfYjsJCVwKPiArfSkKPiArCj4gICNk ZWZpbmUgSFdTX1BHQV9SQ1NVTklUCQkweDAyMDgwCj4gICNkZWZpbmUgSFdTX1BHQV9WQ1NVTklU MAkweDEyMDgwCj4gICNkZWZpbmUgSFdTX1BHQV9CQ1NVTklUCQkweDIyMDgwCj4gQEAgLTEwNywx MiArMTEzLDE0IEBACj4gICNkZWZpbmUgU1RBVElDX0dHVFRfTUFQX0VORCAoVklERU9fQ09OVEVY VF9BRERSICsgUFBIV1NQX1NJWkUgKyBHRU44X0xSX0NPTlRFWFRfT1RIRVJfU0laRSkKPiAgI2Rl ZmluZSBTVEFUSUNfR0dUVF9NQVBfU0laRSAoU1RBVElDX0dHVFRfTUFQX0VORCAtIFNUQVRJQ19H R1RUX01BUF9TVEFSVCkKPiAgCj4gLSNkZWZpbmUgQ09OVEVYVF9GTEFHUyAoMHgyMjkpCS8qIE5v cm1hbCBQcmlvcml0eSB8IEwzLUxMQyBDb2hlcmVuY3kgfAo+IC0JTGVnYWN5IENvbnRleHQgd2l0 aCBubyA2NCBiaXQgVkEgc3VwcG9ydCB8IFZhbGlkICovCj4gKyNkZWZpbmUgUE1MNF9QSFlTX0FE RFIgKCh1aW50NjRfdCkoU1RBVElDX0dHVFRfTUFQX0VORCkpCj4gKwo+ICsjZGVmaW5lIENPTlRF WFRfRkxBR1MgKDB4MzM5KQkvKiBOb3JtYWwgUHJpb3JpdHkgfCBMMy1MTEMgQ29oZXJlbmN5IHwK PiArCVBQR1RUIEVuYWJsZWQgfCBMZWdhY3kgQ29udGV4dCB3aXRoIDY0IGJpdCBWQSBzdXBwb3J0 IHwgVmFsaWQgKi8KPiAgCj4gLSNkZWZpbmUgUkVOREVSX0NPTlRFWFRfREVTQ1JJUFRPUiAgKCh1 aW50NjRfdCkxIDw8IDMyIHwgUkVOREVSX0NPTlRFWFRfQUREUiAgfCBDT05URVhUX0ZMQUdTKQo+ IC0jZGVmaW5lIEJMSVRURVJfQ09OVEVYVF9ERVNDUklQVE9SICgodWludDY0X3QpMiA8PCAzMiB8 IEJMSVRURVJfQ09OVEVYVF9BRERSIHwgQ09OVEVYVF9GTEFHUykKPiAtI2RlZmluZSBWSURFT19D T05URVhUX0RFU0NSSVBUT1IgICAoKHVpbnQ2NF90KTMgPDwgMzIgfCBWSURFT19DT05URVhUX0FE RFIgICB8IENPTlRFWFRfRkxBR1MpCj4gKyNkZWZpbmUgUkVOREVSX0NPTlRFWFRfREVTQ1JJUFRP UiAgKCh1aW50NjRfdCkxIDw8IDYyIHwgUkVOREVSX0NPTlRFWFRfQUREUiAgfCBDT05URVhUX0ZM QUdTKQo+ICsjZGVmaW5lIEJMSVRURVJfQ09OVEVYVF9ERVNDUklQVE9SICgodWludDY0X3QpMiA8 PCA2MiB8IEJMSVRURVJfQ09OVEVYVF9BRERSIHwgQ09OVEVYVF9GTEFHUykKPiArI2RlZmluZSBW SURFT19DT05URVhUX0RFU0NSSVBUT1IgICAoKHVpbnQ2NF90KTMgPDwgNjIgfCBWSURFT19DT05U RVhUX0FERFIgICB8IENPTlRFWFRfRkxBR1MpCj4gIAo+ICBzdGF0aWMgY29uc3QgdWludDMyX3Qg cmVuZGVyX2NvbnRleHRfaW5pdFtHRU4xMF9MUl9DT05URVhUX1JFTkRFUl9TSVpFIC8KPiAgCQkJ CQkgIHNpemVvZih1aW50MzJfdCldID0gewo+IEBAIC0xNDQsOCArMTUyLDggQEAgc3RhdGljIGNv bnN0IHVpbnQzMl90IHJlbmRlcl9jb250ZXh0X2luaXRbR0VOMTBfTFJfQ09OVEVYVF9SRU5ERVJf U0laRSAvCj4gIAkweDIyODAgLyogUERQMl9MRFcgKi8sCQkwLAo+ICAJMHgyMjdDIC8qIFBEUDFf VURXICovLAkJMCwKPiAgCTB4MjI3OCAvKiBQRFAxX0xEVyAqLywJCTAsCj4gLQkweDIyNzQgLyog UERQMF9VRFcgKi8sCQkwLAo+IC0JMHgyMjcwIC8qIFBEUDBfTERXICovLAkJMCwKPiArCTB4MjI3 NCAvKiBQRFAwX1VEVyAqLywJCVBNTDRfUEhZU19BRERSID4+IDMyLAo+ICsJMHgyMjcwIC8qIFBE UDBfTERXICovLAkJUE1MNF9QSFlTX0FERFIsCj4gIAkvKiBNSV9OT09QICovCj4gIAkwLCAwLCAw LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAo+ICAKPiBAQCAtMTgyLDggKzE5MCw4IEBAIHN0 YXRpYyBjb25zdCB1aW50MzJfdCBibGl0dGVyX2NvbnRleHRfaW5pdFtHRU44X0xSX0NPTlRFWFRf T1RIRVJfU0laRSAvCj4gIAkweDIyMjgwIC8qIFBEUDJfTERXICovLAkJMCwKPiAgCTB4MjIyN0Mg LyogUERQMV9VRFcgKi8sCQkwLAo+ICAJMHgyMjI3OCAvKiBQRFAxX0xEVyAqLywJCTAsCj4gLQkw eDIyMjc0IC8qIFBEUDBfVURXICovLAkJMCwKPiAtCTB4MjIyNzAgLyogUERQMF9MRFcgKi8sCQkw LAo+ICsJMHgyMjI3NCAvKiBQRFAwX1VEVyAqLywJCVBNTDRfUEhZU19BRERSID4+IDMyLAo+ICsJ MHgyMjI3MCAvKiBQRFAwX0xEVyAqLywJCVBNTDRfUEhZU19BRERSLAo+ICAJLyogTUlfTk9PUCAq Lwo+ICAJMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKPiAgCj4gQEAgLTIxNyw4 ICsyMjUsOCBAQCBzdGF0aWMgY29uc3QgdWludDMyX3QgdmlkZW9fY29udGV4dF9pbml0W0dFTjhf TFJfQ09OVEVYVF9PVEhFUl9TSVpFIC8KPiAgCTB4MUMyODAgLyogUERQMl9MRFcgKi8sCQkwLAo+ ICAJMHgxQzI3QyAvKiBQRFAxX1VEVyAqLywJCTAsCj4gIAkweDFDMjc4IC8qIFBEUDFfTERXICov LAkJMCwKPiAtCTB4MUMyNzQgLyogUERQMF9VRFcgKi8sCQkwLAo+IC0JMHgxQzI3MCAvKiBQRFAw X0xEVyAqLywJCTAsCj4gKwkweDFDMjc0IC8qIFBEUDBfVURXICovLAkJUE1MNF9QSFlTX0FERFIg Pj4gMzIsCj4gKwkweDFDMjcwIC8qIFBEUDBfTERXICovLAkJUE1MNF9QSFlTX0FERFIsCj4gIAkv KiBNSV9OT09QICovCj4gIAkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAo+ICAK PiBAQCAtMzE2LDEyICszMjQsNiBAQCBhbGlnbl91MzIodWludDMyX3QgdiwgdWludDMyX3QgYSkK PiAgCXJldHVybiAodiArIGEgLSAxKSAmIH4oYSAtIDEpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW5s aW5lIHVpbnQ2NF90Cj4gLWFsaWduX3U2NCh1aW50NjRfdCB2LCB1aW50NjRfdCBhKQo+IC17Cj4g LQlyZXR1cm4gKHYgKyBhIC0gMSkgJiB+KGEgLSAxKTsKPiAtfQo+IC0KPiAgc3RhdGljIHZvaWQK PiAgZHdvcmRfb3V0KHVpbnQzMl90IGRhdGEpCj4gIHsKPiBAQCAtMzgyLDEzMiArMzg0LDEwMSBA QCByZWdpc3Rlcl93cml0ZV9vdXQodWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsdWUpCj4gIAlk d29yZF9vdXQodmFsdWUpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZAo+IC1nZW44X2VtaXRfZ2d0 dF9wdGVfZm9yX3JhbmdlKHVpbnQ2NF90IHN0YXJ0LCB1aW50NjRfdCBlbmQpCj4gLXsKPiAtCXVp bnQ2NF90IGVudHJ5X2FkZHI7Cj4gLQl1aW50NjRfdCBwYWdlX251bTsKPiAtCXVpbnQ2NF90IGVu ZF9hbGlnbmVkID0gYWxpZ25fdTY0KGVuZCwgNDA5Nik7Cj4gLQo+IC0JaWYgKHN0YXJ0ID49IGVu ZCB8fCBlbmQgPiAoMXVsbCA8PCAzMikpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCWVudHJ5X2FkZHIg PSBzdGFydCAmIH4oNDA5NiAtIDEpOwo+IC0JZG8gewo+IC0JCXBhZ2VfbnVtID0gZW50cnlfYWRk ciA+PiAyMTsKPiAtCQl1aW50NjRfdCBsYXN0X3BhZ2VfZW50cnkgPQo+IC0JCQltaW4oKHBhZ2Vf bnVtICsgMSkgPDwgMjEsIGVuZF9hbGlnbmVkKTsKPiAtCQl1aW50NjRfdCBudW1fZW50cmllcyA9 IChsYXN0X3BhZ2VfZW50cnkgLSBlbnRyeV9hZGRyKSA+PiAxMjsKPiAtCQltZW1fdHJhY2VfbWVt b3J5X3dyaXRlX2hlYWRlcl9vdXQoCj4gLQkJCWVudHJ5X2FkZHIgPj4gOSwgbnVtX2VudHJpZXMg KiBHRU44X1BURV9TSVpFLAo+IC0JCQlBVUJfTUVNX1RSQUNFX01FTU9SWV9BRERSRVNTX1NQQUNF X0dHVFRfRU5UUlkpOwo+IC0JCXdoaWxlIChudW1fZW50cmllcy0tID4gMCkgewo+IC0JCQlkd29y ZF9vdXQoKGVudHJ5X2FkZHIgJiB+KDQwOTYgLSAxKSkgfAo+IC0JCQkgICAgICAgICAgMyAvKiBy ZWFkL3dyaXRlIHwgcHJlc2VudCAqLyk7Cj4gLQkJCWR3b3JkX291dChlbnRyeV9hZGRyID4+IDMy KTsKPiAtCQkJZW50cnlfYWRkciArPSA0MDk2Owo+IC0JCX0KPiAtCX0gd2hpbGUgKGVudHJ5X2Fk ZHIgPCBlbmQpOwo+IC19Cj4gLQo+IC0vKioKPiAtICogU2V0cyBiaXRzIGBzdGFydGAgdGhyb3Vn aCBgZW5kYCAtIDEgaW4gdGhlIGJpdG1hcCBhcnJheS4KPiAtICovCj4gLXN0YXRpYyB2b2lkCj4g LXNldF9iaXRtYXBfcmFuZ2UodWludDMyX3QgKmJpdG1hcCwgdWludDMyX3Qgc3RhcnQsIHVpbnQz Ml90IGVuZCkKPiAtewo+IC0JdWludDMyX3QgcG9zID0gc3RhcnQ7Cj4gLQl3aGlsZSAocG9zIDwg ZW5kKSB7Cj4gLQkJY29uc3QgdWludDMyX3QgYml0ID0gMSA8PCAocG9zICYgMHgxZik7Cj4gLQkJ aWYgKGJpdCA9PSAxICYmIChlbmQgLSBwb3MpID4gMzIpIHsKPiAtCQkJYml0bWFwW3BvcyA+PiA1 XSA9IDB4ZmZmZmZmZmY7Cj4gLQkJCXBvcyArPSAzMjsKPiAtCQl9IGVsc2Ugewo+IC0JCQliaXRt YXBbcG9zID4+IDVdIHw9IGJpdDsKPiAtCQkJcG9zKys7Cj4gLQkJfQo+IC0JfQo+IC19Cj4gLQo+ IC0vKioKPiAtICogRmluZHMgdGhlIG5leHQgYHNldGAgKG9yIGNsZWFyKSBiaXQgaW4gdGhlIGJp dG1hcCBhcnJheS4KPiAtICoKPiAtICogVGhlIHNlYXJjaCBzdGFydHMgYXQgYCpzdGFydGAgYW5k IG9ubHkgY2hlY2tzIHVudGlsIGBlbmRgIC0gMS4KPiAtICoKPiAtICogSWYgZm91bmQsIHJldHVy bnMgdHJ1ZSwgYW5kIHRoZSBmb3VuZCBiaXQgaW5kZXggaW4gYCpzdGFydGAuCj4gLSAqLwo+IC1z dGF0aWMgYm9vbAo+IC1maW5kX2JpdG1hcF9iaXQodWludDMyX3QgKmJpdG1hcCwgYm9vbCBzZXQs IHVpbnQzMl90ICpzdGFydCwgdWludDMyX3QgZW5kKQo+IC17Cj4gLQl1aW50MzJfdCBwb3MgPSAq c3RhcnQ7Cj4gLQljb25zdCB1aW50MzJfdCBuZWdfZHcgPSBzZXQgPyAwIDogLTE7Cj4gLQl3aGls ZSAocG9zIDwgZW5kKSB7Cj4gLQkJY29uc3QgdWludDMyX3QgZHcgPSBiaXRtYXBbcG9zID4+IDVd Owo+IC0JCWNvbnN0IHVpbnQzMl90IGJpdCA9IDEgPDwgKHBvcyAmIDB4MWYpOwo+IC0JCWlmICgh IShkdyAmIGJpdCkgPT0gc2V0KSB7Cj4gLQkJCSpzdGFydCA9IHBvczsKPiAtCQkJcmV0dXJuIHRy dWU7Cj4gLQkJfSBlbHNlIGlmIChiaXQgPT0gMSAmJiBkdyA9PSBuZWdfZHcpCj4gLQkJCXBvcyAr PSAzMjsKPiAtCQllbHNlCj4gLQkJCXBvcysrOwo+IC0JfQo+IC0JcmV0dXJuIGZhbHNlOwo+IC19 Cj4gLQo+IC0vKioKPiAtICogRmluZHMgYSByYW5nZSBvZiBjbGVhciBiaXRzIHdpdGhpbiB0aGUg Yml0bWFwIGFycmF5Lgo+IC0gKgo+IC0gKiBUaGUgc2VhcmNoIHN0YXJ0cyBhdCBgKnN0YXJ0YCBh bmQgb25seSBjaGVja3MgdW50aWwgYCplbmRgIC0gMS4KPiAtICoKPiAtICogSWYgZm91bmQsIHJl dHVybnMgdHJ1ZSwgYW5kIGAqc3RhcnRgIGFuZCBgKmVuZGAgYXJlIHNldCBmb3IgdGhlCj4gLSAq IHJhbmdlIG9mIGNsZWFyIGJpdHMuCj4gLSAqLwo+IC1zdGF0aWMgYm9vbAo+IC1maW5kX2JpdG1h cF9jbGVhcl9iaXRfcmFuZ2UodWludDMyX3QgKmJpdG1hcCwgdWludDMyX3QgKnN0YXJ0LCB1aW50 MzJfdCAqZW5kKQo+IC17Cj4gLQlpZiAoZmluZF9iaXRtYXBfYml0KGJpdG1hcCwgZmFsc2UsIHN0 YXJ0LCAqZW5kKSkgewo+IC0JCXVpbnQzMl90IGZvdW5kX2VuZCA9ICpzdGFydDsKPiAtCQlpZiAo ZmluZF9iaXRtYXBfYml0KGJpdG1hcCwgdHJ1ZSwgJmZvdW5kX2VuZCwgKmVuZCkpCj4gLQkJCSpl bmQgPSBmb3VuZF9lbmQ7Cj4gLQkJcmV0dXJuIHRydWU7Cj4gLQl9Cj4gLQlyZXR1cm4gZmFsc2U7 Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkCj4gLWdlbjhfbWFwX2dndHRfcmFuZ2UodWludDY0X3Qg c3RhcnQsIHVpbnQ2NF90IGVuZCkKPiAtewo+IC0JdWludDMyX3QgcG9zMSwgcG9zMiwgZW5kX3Bv czsKPiAtCXN0YXRpYyB1aW50MzJfdCAqYml0bWFwID0gTlVMTDsKPiAtCWlmIChiaXRtYXAgPT0g TlVMTCkgewo+IC0JCS8qIDRHaUIgKDMyLWJpdHMpIG9mIDRLaUIgcGFnZXMgKDEyLWJpdHMpIGlu IGR3b3JkcyAoNS1iaXRzKSAqLwo+IC0JCWJpdG1hcCA9IGNhbGxvYygxIDw8ICgzMiAtIDEyIC0g NSksIHNpemVvZigqYml0bWFwKSk7Cj4gLQkJaWYgKGJpdG1hcCA9PSBOVUxMKQo+IC0JCQlyZXR1 cm47Cj4gLQl9Cj4gLQo+IC0JcG9zMSA9IHN0YXJ0ID4+IDEyOwo+IC0JZW5kX3BvcyA9IChlbmQg KyA0MDk2IC0gMSkgPj4gMTI7Cj4gLQl3aGlsZSAocG9zMSA8IGVuZF9wb3MpIHsKPiAtCQlwb3My ID0gZW5kX3BvczsKPiAtCQlpZiAoIWZpbmRfYml0bWFwX2NsZWFyX2JpdF9yYW5nZShiaXRtYXAs ICZwb3MxLCAmcG9zMikpCj4gLQkJCWJyZWFrOwo+IC0KPiAtCQlpZiAodmVyYm9zZSkKPiAtCQkJ cHJpbnRmKCJNQVBQSU5HIDB4JTA4bHgtMHglMDhseFxuIiwKPiAtCQkJICAgICAgICh1aW50NjRf dClwb3MxIDw8IDEyLCAodWludDY0X3QpcG9zMiA8PCAxMik7Cj4gLQkJZ2VuOF9lbWl0X2dndHRf cHRlX2Zvcl9yYW5nZSgodWludDY0X3QpcG9zMSA8PCAxMiwKPiAtCQkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh1aW50NjRfdClwb3MyIDw8IDEyKTsKPiAtCQlzZXRfYml0bWFwX3Jhbmdl KGJpdG1hcCwgKHVpbnQ2NF90KXBvczEsICh1aW50NjRfdClwb3MyKTsKPiAtCQlwb3MxID0gcG9z MjsKPiAtCX0KPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQKPiAtZ2VuOF9tYXBfYmFzZV9zaXplKHVp bnQ2NF90IGJhc2UsIHVpbnQ2NF90IHNpemUpCj4gLXsKPiAtCWdlbjhfbWFwX2dndHRfcmFuZ2Uo YmFzZSwgYmFzZSArIHNpemUpOwo+IC19Cj4gLQo+ICtzdGF0aWMgc3RydWN0IHBwZ3R0X3RhYmxl IHsKPiArCXVpbnQ2NF90IHBoeXNfYWRkcjsKPiArCXN0cnVjdCBwcGd0dF90YWJsZSAqc3VidGFi bGVzWzUxMl07Cj4gK30gcG1sNCA9IHtQTUw0X1BIWVNfQUREUn07Cj4gKwo+ICtzdGF0aWMgdm9p ZAo+ICtwb3B1bGF0ZV9wcGd0dF90YWJsZShzdHJ1Y3QgcHBndHRfdGFibGUgKnRhYmxlLCBpbnQg c3RhcnQsIGludCBlbmQsCj4gKwkJICAgICBpbnQgbGV2ZWwpCj4gK3sKPiArCXN0YXRpYyB1aW50 NjRfdCBwaHlzX2FkZHJzX2FsbG9jYXRvciA9IChQTUw0X1BIWVNfQUREUiA+PiAxMikgKyAxOwo+ ICsJdWludDY0X3QgZW50cmllc1s1MTJdID0gezB9Owo+ICsJaW50IGRpcnR5X3N0YXJ0ID0gNTEy LCBkaXJ0eV9lbmQgPSAwOwoKZW5kIGlzIG9uZSBwYXN0IHRoZSBsYXN0IGVsZW1lbnQgdG8gcG9w dWxhdGUsIGluIHRoZSByYW5nZSBbMSwgNTEyXS4gVGhlCmJpdCBtYXNrcyB0aGF0IGdlbmVyYXRl IGl0IGluIG1hcF9wcGd0dCB3aWxsIGFsaWFzIDUxMiB0byB6ZXJvLiBTbyB0aGlzCm5lZWRzOgoK CWlmIChlbmQgPT0gMCkKCQllbmQgPSA1MTI7Cgo+ICsKPiArCWZvciAoaW50IGkgPSBzdGFydDsg aSA8IGVuZDsgaSsrKSB7Cj4gKwkJaWYgKCF0YWJsZS0+c3VidGFibGVzW2ldKSB7Cj4gKwkJCWRp cnR5X3N0YXJ0ID0gbWluKGRpcnR5X3N0YXJ0LCBpKTsKPiArCQkJZGlydHlfZW5kID0gbWF4KGRp cnR5X2VuZCwgaSArIDEpOwo+ICsJCQlpZiAobGV2ZWwgPT0gMSkgewo+ICsJCQkJdGFibGUtPnN1 YnRhYmxlc1tpXSA9Cj4gKwkJCQkJKHZvaWQgKikocGh5c19hZGRyc19hbGxvY2F0b3IrKyA8PCAx Mik7Cj4gKwkJCX0gZWxzZSB7Cj4gKwkJCQl0YWJsZS0+c3VidGFibGVzW2ldID0KPiArCQkJCQlj YWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBwcGd0dF90YWJsZSkpOwo+ICsJCQkJdGFibGUtPnN1YnRh Ymxlc1tpXS0+cGh5c19hZGRyID0KPiArCQkJCQlwaHlzX2FkZHJzX2FsbG9jYXRvcisrIDw8IDEy Owo+ICsJCQl9Cj4gKwkJfQo+ICsJCWVudHJpZXNbaV0gPSAzIC8qIHJlYWQvd3JpdGUgfCBwcmVz ZW50ICovIHwKPiArCQkJKGxldmVsID09IDEgPyAodWludDY0X3QpdGFibGUtPnN1YnRhYmxlc1tp XSA6Cj4gKwkJCSB0YWJsZS0+c3VidGFibGVzW2ldLT5waHlzX2FkZHIpOwo+ICsJfQo+ICsKPiAr CWlmIChkaXJ0eV9zdGFydCA8IGRpcnR5X2VuZCkgewo+ICsJCXVpbnQ2NF90IHdyaXRlX2FkZHIg PSB0YWJsZS0+cGh5c19hZGRyICsgZGlydHlfc3RhcnQgKgo+ICsJCQlzaXplb2YodWludDY0X3Qp Owo+ICsJCXVpbnQ2NF90IHdyaXRlX3NpemUgPSAoZGlydHlfZW5kIC0gZGlydHlfc3RhcnQpICoK PiArCQkJc2l6ZW9mKHVpbnQ2NF90KTsKPiArCQltZW1fdHJhY2VfbWVtb3J5X3dyaXRlX2hlYWRl cl9vdXQod3JpdGVfYWRkciwgd3JpdGVfc2l6ZSwKPiArCQkJCQkJICBBVUJfTUVNX1RSQUNFX01F TU9SWV9BRERSRVNTX1NQQUNFX1BIWVNJQ0FMKTsKPiArCQlkYXRhX291dChlbnRyaWVzICsgZGly dHlfc3RhcnQsIHdyaXRlX3NpemUpOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICtt YXBfcHBndHQodWludDY0X3Qgc3RhcnQsIHVpbnQ2NF90IHNpemUpCj4gK3sKPiArCXVpbnQ2NF90 IGw0X3N0YXJ0ID0gc3RhcnQgJiAweGZmODAwMDAwMDAwMDsKPiArCXVpbnQ2NF90IGwzX3N0YXJ0 ID0gc3RhcnQgJiAweGZmZmZjMDAwMDAwMDsKPiArCXVpbnQ2NF90IGwyX3N0YXJ0ID0gc3RhcnQg JiAweGZmZmZmZmUwMDAwMDsKPiArCXVpbnQ2NF90IGwxX3N0YXJ0ID0gc3RhcnQgJiAweGZmZmZm ZmZmZjAwMDsKPiArCXVpbnQ2NF90IGw0X2VuZCA9IChzdGFydCArIHNpemUgKyAoMVVMTCA8PCAz OSkgLSAxKSAmIDB4ZmY4MDAwMDAwMDAwOwo+ICsJdWludDY0X3QgbDNfZW5kID0gKHN0YXJ0ICsg c2l6ZSArICgxVUxMIDw8IDMwKSAtIDEpICYgMHhmZmZmYzAwMDAwMDA7Cj4gKwl1aW50NjRfdCBs Ml9lbmQgPSAoc3RhcnQgKyBzaXplICsgKDFVTEwgPDwgMjEpIC0gMSkgJiAweGZmZmZmZmUwMDAw MDsKPiArCXVpbnQ2NF90IGwxX2VuZCA9IChzdGFydCArIHNpemUgKyAoMVVMTCA8PCAxMikgLSAx KSAmIDB4ZmZmZmZmZmZmMDAwOwo+ICsKPiArI2RlZmluZSBMNF9pbmRleChhZGRyKSAoKChhZGRy KSA+PiAzOSkgJiAweDFmZikKPiArI2RlZmluZSBMM19pbmRleChhZGRyKSAoKChhZGRyKSA+PiAz MCkgJiAweDFmZikKPiArI2RlZmluZSBMMl9pbmRleChhZGRyKSAoKChhZGRyKSA+PiAyMSkgJiAw eDFmZikKPiArI2RlZmluZSBMMV9pbmRleChhZGRyKSAoKChhZGRyKSA+PiAxMikgJiAweDFmZikK PiArCj4gKyNkZWZpbmUgTDNfdGFibGUoYWRkcikgKHBtbDQuc3VidGFibGVzW0w0X2luZGV4KGFk ZHIpXSkKPiArI2RlZmluZSBMMl90YWJsZShhZGRyKSAoTDNfdGFibGUoYWRkciktPnN1YnRhYmxl c1tMM19pbmRleChhZGRyKV0pCj4gKyNkZWZpbmUgTDFfdGFibGUoYWRkcikgKEwyX3RhYmxlKGFk ZHIpLT5zdWJ0YWJsZXNbTDJfaW5kZXgoYWRkcildKQo+ICsKPiArCXBvcHVsYXRlX3BwZ3R0X3Rh YmxlKCZwbWw0LCBMNF9pbmRleChsNF9zdGFydCksIEw0X2luZGV4KGw0X2VuZCksIDQpOwo+ICsK PiArCWZvciAodWludDY0X3QgYSA9IGw0X3N0YXJ0OyBhIDwgbDRfZW5kOyBhICs9ICgxVUxMIDw8 IDM5KSkgewo+ICsJCXVpbnQ2NF90IF9zdGFydCA9IG1heChhLCBsM19zdGFydCk7Cj4gKwkJdWlu dDY0X3QgX2VuZCA9IG1pbihhICsgKDFVTEwgPDwgMzkpLCBsM19lbmQpOwo+ICsKPiArCQlwb3B1 bGF0ZV9wcGd0dF90YWJsZShMM190YWJsZShhKSwgTDNfaW5kZXgoX3N0YXJ0KSwKPiArCQkJCSAg ICAgTDNfaW5kZXgoX2VuZCksIDMpOwo+ICsJfQo+ICsKPiArCWZvciAodWludDY0X3QgYSA9IGwz X3N0YXJ0OyBhIDwgbDNfZW5kOyBhICs9ICgxVUxMIDw8IDMwKSkgewo+ICsJCXVpbnQ2NF90IF9z dGFydCA9IG1heChhLCBsMl9zdGFydCk7Cj4gKwkJdWludDY0X3QgX2VuZCA9IG1pbihhICsgKDFV TEwgPDwgMzApLCBsMl9lbmQpOwo+ICsKPiArCQlwb3B1bGF0ZV9wcGd0dF90YWJsZShMMl90YWJs ZShhKSwgTDJfaW5kZXgoX3N0YXJ0KSwKPiArCQkJCSAgICAgTDJfaW5kZXgoX2VuZCksIDIpOwo+ ICsJfQo+ICsKPiArCWZvciAodWludDY0X3QgYSA9IGwyX3N0YXJ0OyBhIDwgbDJfZW5kOyBhICs9 ICgxVUxMIDw8IDIxKSkgewo+ICsJCXVpbnQ2NF90IF9zdGFydCA9IG1heChhLCBsMV9zdGFydCk7 Cj4gKwkJdWludDY0X3QgX2VuZCA9IG1pbihhICsgKDFVTEwgPDwgMjEpLCBsMV9lbmQpOwo+ICsK PiArCQlwb3B1bGF0ZV9wcGd0dF90YWJsZShMMV90YWJsZShhKSwgTDFfaW5kZXgoX3N0YXJ0KSwK PiArCQkJCSAgICAgTDFfaW5kZXgoX2VuZCksIDEpOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMg dWludDY0X3QKPiArcHBndHRfbG9va3VwKHVpbnQ2NF90IHBwZ3R0X2FkZHIpCj4gK3sKPiArCXJl dHVybiAodWludDY0X3QpTDFfdGFibGUocHBndHRfYWRkciktPnN1YnRhYmxlc1tMMV9pbmRleChw cGd0dF9hZGRyKV07Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkCj4gQEAgLTUyNCwyNiArNDk1LDMz IEBAIGdlbjEwX3dyaXRlX2hlYWRlcih2b2lkKQo+ICAJZHdvcmRzID0gNSArIGFwcF9uYW1lX2xl biAvIHNpemVvZih1aW50MzJfdCk7Cj4gIAlkd29yZF9vdXQoQ01EX01FTV9UUkFDRV9WRVJTSU9O IHwgKGR3b3JkcyAtIDEpKTsKPiAgCWR3b3JkX291dChBVUJfTUVNX1RSQUNFX1ZFUlNJT05fRklM RV9WRVJTSU9OKTsKPiAtCWR3b3JkX291dChBVUJfTUVNX1RSQUNFX1ZFUlNJT05fREVWSUNFX0NO TCB8Cj4gLQkJICBBVUJfTUVNX1RSQUNFX1ZFUlNJT05fTUVUSE9EX1BIWSk7Cj4gKwlkd29yZF9v dXQoQVVCX01FTV9UUkFDRV9WRVJTSU9OX0RFVklDRV9DTkwpOwo+ICAJZHdvcmRfb3V0KDApOwkJ LyogdmVyc2lvbiAqLwo+ICAJZHdvcmRfb3V0KDApOwkJLyogdmVyc2lvbiAqLwo+ICAJZGF0YV9v dXQoYXBwX25hbWUsIGFwcF9uYW1lX2xlbik7Cj4gIAo+ICsJLyogR0dUVCBQVCAqLwo+ICsJdWlu dDMyX3QgZ2d0dF9wdGVzID0gU1RBVElDX0dHVFRfTUFQX1NJWkUgPj4gMTI7Cj4gKwo+ICsJbWVt X3RyYWNlX21lbW9yeV93cml0ZV9oZWFkZXJfb3V0KFNUQVRJQ19HR1RUX01BUF9TVEFSVCA+PiAx MiwKPiArCQkJCQkgIGdndHRfcHRlcyAqIEdFTjhfUFRFX1NJWkUsCj4gKwkJCQkJICBBVUJfTUVN X1RSQUNFX01FTU9SWV9BRERSRVNTX1NQQUNFX0dHVFRfRU5UUlkpOwo+ICsJZm9yICh1aW50MzJf dCBpID0gMDsgaSA8IGdndHRfcHRlczsgaSsrKSB7Cj4gKwkJZHdvcmRfb3V0KDMgKyAweDEwMDAg KiBpICsgU1RBVElDX0dHVFRfTUFQX1NUQVJUKTsKPiArCQlkd29yZF9vdXQoMCk7Cj4gKwl9Cj4g Kwo+ICAJLyogUkVOREVSX1JJTkcgKi8KPiAtCWdlbjhfbWFwX2Jhc2Vfc2l6ZShSRU5ERVJfUklO R19BRERSLCBSSU5HX1NJWkUpOwo+ICAJbWVtX3RyYWNlX21lbW9yeV93cml0ZV9oZWFkZXJfb3V0 KFJFTkRFUl9SSU5HX0FERFIsIFJJTkdfU0laRSwKPiAtCQkJCQkgIEFVQl9NRU1fVFJBQ0VfTUVN T1JZX0FERFJFU1NfU1BBQ0VfTE9DQUwpOwo+ICsJCQkJCSAgQVVCX01FTV9UUkFDRV9NRU1PUllf QUREUkVTU19TUEFDRV9HR1RUKTsKPiAgCWZvciAodWludDMyX3QgaSA9IDA7IGkgPCBSSU5HX1NJ WkU7IGkgKz0gc2l6ZW9mKHVpbnQzMl90KSkKPiAgCQlkd29yZF9vdXQoMCk7Cj4gIAo+ICAJLyog UkVOREVSX1BQSFdTUCAqLwo+IC0JZ2VuOF9tYXBfYmFzZV9zaXplKFJFTkRFUl9DT05URVhUX0FE RFIsCj4gLQkgICAgICAgICAgICAgICAgICAgUFBIV1NQX1NJWkUgKyBzaXplb2YocmVuZGVyX2Nv bnRleHRfaW5pdCkpOwo+ICAJbWVtX3RyYWNlX21lbW9yeV93cml0ZV9oZWFkZXJfb3V0KFJFTkRF Ul9DT05URVhUX0FERFIsCj4gIAkJCQkJICBQUEhXU1BfU0laRSArCj4gIAkJCQkJICBzaXplb2Yo cmVuZGVyX2NvbnRleHRfaW5pdCksCj4gLQkJCQkJICBBVUJfTUVNX1RSQUNFX01FTU9SWV9BRERS RVNTX1NQQUNFX0xPQ0FMKTsKPiArCQkJCQkgIEFVQl9NRU1fVFJBQ0VfTUVNT1JZX0FERFJFU1Nf U1BBQ0VfR0dUVCk7Cj4gIAlmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgUFBIV1NQX1NJWkU7IGkg Kz0gc2l6ZW9mKHVpbnQzMl90KSkKPiAgCQlkd29yZF9vdXQoMCk7Cj4gIAo+IEBAIC01NTEsMTkg KzUyOSwxNiBAQCBnZW4xMF93cml0ZV9oZWFkZXIodm9pZCkKPiAgCWRhdGFfb3V0KHJlbmRlcl9j b250ZXh0X2luaXQsIHNpemVvZihyZW5kZXJfY29udGV4dF9pbml0KSk7Cj4gIAo+ICAJLyogQkxJ VFRFUl9SSU5HICovCj4gLQlnZW44X21hcF9iYXNlX3NpemUoQkxJVFRFUl9SSU5HX0FERFIsIFJJ TkdfU0laRSk7Cj4gIAltZW1fdHJhY2VfbWVtb3J5X3dyaXRlX2hlYWRlcl9vdXQoQkxJVFRFUl9S SU5HX0FERFIsIFJJTkdfU0laRSwKPiAtCQkJCQkgIEFVQl9NRU1fVFJBQ0VfTUVNT1JZX0FERFJF U1NfU1BBQ0VfTE9DQUwpOwo+ICsJCQkJCSAgQVVCX01FTV9UUkFDRV9NRU1PUllfQUREUkVTU19T UEFDRV9HR1RUKTsKPiAgCWZvciAodWludDMyX3QgaSA9IDA7IGkgPCBSSU5HX1NJWkU7IGkgKz0g c2l6ZW9mKHVpbnQzMl90KSkKPiAgCQlkd29yZF9vdXQoMCk7Cj4gIAo+ICAJLyogQkxJVFRFUl9Q UEhXU1AgKi8KPiAtCWdlbjhfbWFwX2Jhc2Vfc2l6ZShCTElUVEVSX0NPTlRFWFRfQUREUiwKPiAt CSAgICAgICAgICAgICAgICAgICBQUEhXU1BfU0laRSArIHNpemVvZihibGl0dGVyX2NvbnRleHRf aW5pdCkpOwo+ICAJbWVtX3RyYWNlX21lbW9yeV93cml0ZV9oZWFkZXJfb3V0KEJMSVRURVJfQ09O VEVYVF9BRERSLAo+ICAJCQkJCSAgUFBIV1NQX1NJWkUgKwo+ICAJCQkJCSAgc2l6ZW9mKGJsaXR0 ZXJfY29udGV4dF9pbml0KSwKPiAtCQkJCQkgIEFVQl9NRU1fVFJBQ0VfTUVNT1JZX0FERFJFU1Nf U1BBQ0VfTE9DQUwpOwo+ICsJCQkJCSAgQVVCX01FTV9UUkFDRV9NRU1PUllfQUREUkVTU19TUEFD RV9HR1RUKTsKPiAgCWZvciAodWludDMyX3QgaSA9IDA7IGkgPCBQUEhXU1BfU0laRTsgaSArPSBz aXplb2YodWludDMyX3QpKQo+ICAJCWR3b3JkX291dCgwKTsKPiAgCj4gQEAgLTU3MSwxOSArNTQ2 LDE2IEBAIGdlbjEwX3dyaXRlX2hlYWRlcih2b2lkKQo+ICAJZGF0YV9vdXQoYmxpdHRlcl9jb250 ZXh0X2luaXQsIHNpemVvZihibGl0dGVyX2NvbnRleHRfaW5pdCkpOwo+ICAKPiAgCS8qIFZJREVP X1JJTkcgKi8KPiAtCWdlbjhfbWFwX2Jhc2Vfc2l6ZShWSURFT19SSU5HX0FERFIsIFJJTkdfU0la RSk7Cj4gIAltZW1fdHJhY2VfbWVtb3J5X3dyaXRlX2hlYWRlcl9vdXQoVklERU9fUklOR19BRERS LCBSSU5HX1NJWkUsCj4gLQkJCQkJICBBVUJfTUVNX1RSQUNFX01FTU9SWV9BRERSRVNTX1NQQUNF X0xPQ0FMKTsKPiArCQkJCQkgIEFVQl9NRU1fVFJBQ0VfTUVNT1JZX0FERFJFU1NfU1BBQ0VfR0dU VCk7Cj4gIAlmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgUklOR19TSVpFOyBpICs9IHNpemVvZih1 aW50MzJfdCkpCj4gIAkJZHdvcmRfb3V0KDApOwo+ICAKPiAgCS8qIFZJREVPX1BQSFdTUCAqLwo+ IC0JZ2VuOF9tYXBfYmFzZV9zaXplKFZJREVPX0NPTlRFWFRfQUREUiwKPiAtCSAgICAgICAgICAg ICAgICAgICBQUEhXU1BfU0laRSArIHNpemVvZih2aWRlb19jb250ZXh0X2luaXQpKTsKPiAgCW1l bV90cmFjZV9tZW1vcnlfd3JpdGVfaGVhZGVyX291dChWSURFT19DT05URVhUX0FERFIsCj4gIAkJ CQkJICBQUEhXU1BfU0laRSArCj4gIAkJCQkJICBzaXplb2YodmlkZW9fY29udGV4dF9pbml0KSwK PiAtCQkJCQkgIEFVQl9NRU1fVFJBQ0VfTUVNT1JZX0FERFJFU1NfU1BBQ0VfTE9DQUwpOwo+ICsJ CQkJCSAgQVVCX01FTV9UUkFDRV9NRU1PUllfQUREUkVTU19TUEFDRV9HR1RUKTsKPiAgCWZvciAo dWludDMyX3QgaSA9IDA7IGkgPCBQUEhXU1BfU0laRTsgaSArPSBzaXplb2YodWludDMyX3QpKQo+ ICAJCWR3b3JkX291dCgwKTsKPiAgCj4gQEAgLTY1NCwxNSArNjI2LDEzIEBAIGF1Yl93cml0ZV90 cmFjZV9ibG9jayh1aW50MzJfdCB0eXBlLCB2b2lkICp2aXJ0dWFsLCB1aW50MzJfdCBzaXplLCB1 aW50NjRfdCBndHRfCj4gIAlzdGF0aWMgY29uc3QgY2hhciBudWxsX2Jsb2NrWzggKiA0MDk2XTsK PiAgCj4gIAlmb3IgKHVpbnQzMl90IG9mZnNldCA9IDA7IG9mZnNldCA8IHNpemU7IG9mZnNldCAr PSBibG9ja19zaXplKSB7Cj4gLQkJYmxvY2tfc2l6ZSA9IHNpemUgLSBvZmZzZXQ7Cj4gLQo+IC0J CWlmIChibG9ja19zaXplID4gOCAqIDQwOTYpCj4gLQkJCWJsb2NrX3NpemUgPSA4ICogNDA5NjsK PiArCQlibG9ja19zaXplID0gbWluKDggKiA0MDk2LCBzaXplIC0gb2Zmc2V0KTsKPiAgCj4gIAkJ aWYgKGdlbiA+PSAxMCkgewo+IC0JCQltZW1fdHJhY2VfbWVtb3J5X3dyaXRlX2hlYWRlcl9vdXQo Z3R0X29mZnNldCArIG9mZnNldCwKPiArCQkJYmxvY2tfc2l6ZSA9IG1pbig0MDk2LCBibG9ja19z aXplKTsKPiArCQkJbWVtX3RyYWNlX21lbW9yeV93cml0ZV9oZWFkZXJfb3V0KHBwZ3R0X2xvb2t1 cChndHRfb2Zmc2V0ICsgb2Zmc2V0KSwKPiAgCQkJCQkJCSAgYmxvY2tfc2l6ZSwKPiAtCQkJCQkJ CSAgQVVCX01FTV9UUkFDRV9NRU1PUllfQUREUkVTU19TUEFDRV9MT0NBTCk7Cj4gKwkJCQkJCQkg IEFVQl9NRU1fVFJBQ0VfTUVNT1JZX0FERFJFU1NfU1BBQ0VfUEhZU0lDQUwpOwo+ICAJCX0gZWxz ZSB7Cj4gIAkJCWR3b3JkX291dChDTURfQVVCX1RSQUNFX0hFQURFUl9CTE9DSyB8Cj4gIAkJCQkg ICgoYWRkcl9iaXRzID4gMzIgPyA2IDogNSkgLSAyKSk7Cj4gQEAgLTc1MCwxNyArNzIwLDE3IEBA IGF1Yl9kdW1wX2V4ZWNsaXN0KHVpbnQ2NF90IGJhdGNoX29mZnNldCwgaW50IHJpbmdfZmxhZykK PiAgCX0KPiAgCj4gIAltZW1fdHJhY2VfbWVtb3J5X3dyaXRlX2hlYWRlcl9vdXQocmluZ19hZGRy LCAxNiwKPiAtCQkJCQkgIEFVQl9NRU1fVFJBQ0VfTUVNT1JZX0FERFJFU1NfU1BBQ0VfTE9DQUwp Owo+IC0JZHdvcmRfb3V0KEFVQl9NSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCAoMyAtIDIpKTsKPiAr CQkJCQkgIEFVQl9NRU1fVFJBQ0VfTUVNT1JZX0FERFJFU1NfU1BBQ0VfR0dUVCk7Cj4gKwlkd29y ZF9vdXQoQVVCX01JX0JBVENIX0JVRkZFUl9TVEFSVCB8IC8qIHBwZ3R0ICovIDB4MTAwIHwgKDMg LSAyKSk7Cj4gIAlkd29yZF9vdXQoYmF0Y2hfb2Zmc2V0ICYgMHhGRkZGRkZGRik7Cj4gIAlkd29y ZF9vdXQoYmF0Y2hfb2Zmc2V0ID4+IDMyKTsKPiAgCWR3b3JkX291dCgwIC8qIE1JX05PT1AgKi8p Owo+ICAKPiAgCW1lbV90cmFjZV9tZW1vcnlfd3JpdGVfaGVhZGVyX291dChyaW5nX2FkZHIgKyA4 MTkyICsgMjAsIDQsCj4gLQkJCQkJICBBVUJfTUVNX1RSQUNFX01FTU9SWV9BRERSRVNTX1NQQUNF X0xPQ0FMKTsKPiArCQkJCQkgIEFVQl9NRU1fVFJBQ0VfTUVNT1JZX0FERFJFU1NfU1BBQ0VfR0dU VCk7Cj4gIAlkd29yZF9vdXQoMCk7IC8qIFJJTkdfQlVGRkVSX0hFQUQgKi8KPiAgCW1lbV90cmFj ZV9tZW1vcnlfd3JpdGVfaGVhZGVyX291dChyaW5nX2FkZHIgKyA4MTkyICsgMjgsIDQsCj4gLQkJ CQkJICBBVUJfTUVNX1RSQUNFX01FTU9SWV9BRERSRVNTX1NQQUNFX0xPQ0FMKTsKPiArCQkJCQkg IEFVQl9NRU1fVFJBQ0VfTUVNT1JZX0FERFJFU1NfU1BBQ0VfR0dUVCk7Cj4gIAlkd29yZF9vdXQo MTYpOyAvKiBSSU5HX0JVRkZFUl9UQUlMICovCj4gIAo+ICAJaWYgKGdlbiA+PSAxMSkgewo+IEBA IC05MzYsNyArOTA2LDcgQEAgZHVtcF9leGVjYnVmZmVyMihpbnQgZmQsIHN0cnVjdCBkcm1faTkx NV9nZW1fZXhlY2J1ZmZlcjIgKmV4ZWNidWZmZXIyKQo+ICAJfQo+ICAKPiAgCWlmIChnZW4gPj0g MTApCj4gLQkJb2Zmc2V0ID0gU1RBVElDX0dHVFRfTUFQX0VORDsKPiArCQlvZmZzZXQgPSAweDEw MDA7Cj4gIAllbHNlCj4gIAkJb2Zmc2V0ID0gZ3R0X3NpemUoKTsKPiAgCj4gQEAgLTk3Niw3ICs5 NDYsNyBAQCBkdW1wX2V4ZWNidWZmZXIyKGludCBmZCwgc3RydWN0IGRybV9pOTE1X2dlbV9leGVj YnVmZmVyMiAqZXhlY2J1ZmZlcjIpCj4gIAkJZmFpbF9pZihiby0+bWFwID09IE1BUF9GQUlMRUQs ICJpbnRlbF9hdWJkdW1wOiBibyBtbWFwIGZhaWxlZFxuIik7Cj4gIAo+ICAJCWlmIChnZW4gPj0g MTApCj4gLQkJCWdlbjhfbWFwX2dndHRfcmFuZ2UoYm8tPm9mZnNldCwgYm8tPm9mZnNldCArIGJv LT5zaXplKTsKPiArCQkJbWFwX3BwZ3R0KGJvLT5vZmZzZXQsIGJvLT5zaXplKTsKPiAgCX0KPiAg Cj4gIAliYXRjaF9pbmRleCA9IChleGVjYnVmZmVyMi0+ZmxhZ3MgJiBJOTE1X0VYRUNfQkFUQ0hf RklSU1QpID8gMCA6Cj4gLS0gCj4gMi4xNC4zCj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+IGlndC1kZXYgbWFpbGluZyBsaXN0Cj4gaWd0LWRldkBs aXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2lndC1kZXYKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3Qt ZGV2Cg==