From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v9 14/24] drm/i915/dp: Configure i915 Picture parameter Set registers during DSC enabling Date: Mon, 19 Nov 2018 22:17:55 +0200 Message-ID: <20181119201755.GM9144@intel.com> References: <20181114015232.21952-1-manasi.d.navare@intel.com> <20181114015232.21952-15-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181114015232.21952-15-manasi.d.navare@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Manasi Navare Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBOb3YgMTMsIDIwMTggYXQgMDU6NTI6MjJQTSAtMDgwMCwgTWFuYXNpIE5hdmFyZSB3 cm90ZToKPiBBZnRlciBlbmNvZGVyLT5wcmVfZW5hYmxlKCkgaG9vaywgYWZ0ZXIgbGluayB0cmFp bmluZyBzZXF1ZW5jZSBpcwo+IGNvbXBsZXRlZCwgUFBTIHJlZ2lzdGVycyBmb3IgRFNDIGVuY29k ZXIgYXJlIGNvbmZpZ3VyZWQgdXNpbmcgdGhlCj4gRFNDIHN0YXRlIHBhcmFtZXRlcnMgaW4gaW50 ZWxfY3J0Y19zdGF0ZSBhcyBwYXJ0IG9mIERTQyBlbmFibGluZwo+IHJvdXRpbmUgaW4gdGhlIHNv dXJjZS4gRFNDIGVuYWJsaW5nIHJvdXRpbmUgaXMgY2FsbGVkIGFmdGVyCj4gZW5jb2Rlci0+cHJl X2VuYWJsZSgpIGJlZm9yZSBlbmJhbGluZyB0aGUgcGlwZSBhbmQgYWZ0ZXIKPiBjb21wcmVzc2lv biBpcyBlbmFibGVkIG9uIHRoZSBzaW5rLgo+IAo+IHY2Ogo+IGludGVsX2RzY19lbmFibGUgdG8g YmUgcGFydCBvZiBwcmVfZW5hYmxlIGhvb2sgKFZpbGxlKQo+IHY1Ogo+ICogbWFrZSBjcnRjX3N0 YXRlIGNvbnN0IChWaWxsZSkKPiB2NDoKPiAqIFVzZSBjcHVfdHJhbnNjb2RlciBpbnN0ZWFkIG9m IGVuY29kZXItPnR5cGUgZm9yIHVzaW5nIEVEUCB0cmFuc2NvZGVyCj4gRFNDIHJlZ2lzdGVycyhW aWxsZSkKPiAqIEtlZXAgYWxsIFBTUyByZWdzIHRvZ2V0aGVyIChBbnVzaGEpCj4gCj4gdjM6Cj4g KiBDb25maWd1cmUgUGljX3dpZHRoLzIgZm9yIGVhY2ggVkRTQyBlbmdpbmUgd2hlbiB0d28gVkRT QyBlbmdpbmVzIHBlciBwaXBlCj4gYXJlIHVzZWQgKE1hbmFzaSkKPiAqIEFkZCBEU0Mgc2xpY2Vf cm93X3Blcl9mcmFtZSBpbiBQUFMxNiAoTWFuYXNpKQo+IAo+IHYyOgo+ICogRW5hYmxlIFBHMiBw b3dlciB3ZWxsIGZvciBWRFNDIG9uIGVEUAo+IAo+IENjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1 bGFAbGludXguaW50ZWwuY29tPgo+IENjOiBWaWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxp bnV4LmludGVsLmNvbT4KPiBDYzogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50 ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBp bnRlbC5jb20+Cj4gUmV2aWV3ZWQtYnk6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNh QGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAg IHwgICAyICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAgIHwgICA2ICsK PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgICAxICsKPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jICAgIHwgNDE5ICsrKysrKysrKysrKysrKysrKysr KysrKysrKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDQyOCBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggOGZiZjQ1Y2QzZWI4Li5kYmFiZTU0YjBhZTIgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMzQ5MCw2ICszNDkwLDggQEAgZXh0ZXJuIHZv aWQgaW50ZWxfcnBzX21hcmtfaW50ZXJhY3RpdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCj4gIAkJCQkgICAgICAgYm9vbCBpbnRlcmFjdGl2ZSk7Cj4gIGV4dGVybiBib29sIGludGVs X3NldF9tZW1vcnlfY3hzcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJ CQkgIGJvb2wgZW5hYmxlKTsKPiArZXh0ZXJuIHZvaWQgaW50ZWxfZHNjX2VuYWJsZShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiArCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gIAo+ICBpbnQgaTkxNV9yZWdfcmVhZF9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gaW5kZXggYzdkNDE3ZTYyNjJmLi5mNjI3 OWU1NGYxNWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IEBAIC0zMTQ0LDYgKzMx NDQsMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCj4gIAo+ICAJaWYgKCFpc19tc3QpCj4gIAkJaW50ZWxfZGRpX2Vu YWJsZV9waXBlX2Nsb2NrKGNydGNfc3RhdGUpOwo+ICsKPiArCS8qCj4gKwkgKiBFbmFibGUgYW5k IENvbmZpZ3VyZSBEaXNwbGF5IFN0cmVhbSBDb21wcmVzc2lvbiBpbiB0aGUgc291cmNlCj4gKwkg KiBpZiBlbmFibGVkIGluIGludGVsX2NydGNfc3RhdGUuCj4gKwkgKi8KCkRvZXMgdGhlIGNvbW1l bnQgcHJvdmlkZSBzb21lIHVzZWZ1bCBleHRyYSBpbmZvcm1hdGlvbiB0aGF0IGlzbid0Cm9idmlv dXM/Cgo+ICsJaW50ZWxfZHNjX2VuYWJsZShlbmNvZGVyLCBjcnRjX3N0YXRlKTsKPiAgfQo+ICAK PiAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfaGRtaShzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXgg MzkwYzRiMzk3MGRiLi4yMTBkYTllOWQzMWUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4gQEAgLTU0NTgsNiArNTQ1OCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuY29k ZXJzX3ByZV9lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAKPiAgCQlpZiAoZW5jb2Rl ci0+cHJlX2VuYWJsZSkKPiAgCQkJZW5jb2Rlci0+cHJlX2VuYWJsZShlbmNvZGVyLCBjcnRjX3N0 YXRlLCBjb25uX3N0YXRlKTsKPiArCgpsZWZ0b3ZlcnMKCj4gIAl9Cj4gIH0KPiAgCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3Zkc2MuYwo+IGluZGV4IGI2NDRmNjlmMWM5My4uOTRmMzQ2Yjk3YzEwIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwo+IEBAIC01NzcsMyArNTc3LDQyMiBAQCBp bnQgaW50ZWxfZHBfY29tcHV0ZV9kc2NfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs Cj4gIAo+ICAJcmV0dXJuIGludGVsX2NvbXB1dGVfcmNfcGFyYW1ldGVycyh2ZHNjX2NmZyk7Cj4g IH0KPiArCj4gK3N0YXRpYyB2b2lkIGludGVsX2NvbmZpZ3VyZV9wcHNfZm9yX2RzY19lbmNvZGVy KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICsJCQkJCQljb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJc3RydWN0IGludGVsX2NydGMgKmNy dGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAr CWNvbnN0IHN0cnVjdCBkcm1fZHNjX2NvbmZpZyAqdmRzY19jZmcgPSAmY3J0Y19zdGF0ZS0+ZHBf ZHNjX2NmZzsKPiArCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiArCWVudW0gdHJhbnNj b2RlciBjcHVfdHJhbnNjb2RlciA9IGNydGNfc3RhdGUtPmNwdV90cmFuc2NvZGVyOwo+ICsJdTMy IHBwc192YWwgPSAwOwo+ICsJdTMyIHJjX2J1Zl90aHJlc2hfZHdvcmRbNF07Cj4gKwl1MzIgcmNf cmFuZ2VfcGFyYW1zX2R3b3JkWzhdOwo+ICsJdTggbnVtX3Zkc2NfaW5zdGFuY2VzID0gKGNydGNf c3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KSA/IDIgOiAxOwo+ICsJaW50IGkgPSAwOwo+ICsK PiArCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF8wIHJlZ2lzdGVycyAqLwo+ICsJ cHBzX3ZhbCA9IERTQ19WRVJfTUFKIHwgdmRzY19jZmctPmRzY192ZXJzaW9uX21pbm9yIDw8Cj4g KwkJRFNDX1ZFUl9NSU5fU0hJRlQgfAo+ICsJCXZkc2NfY2ZnLT5iaXRzX3Blcl9jb21wb25lbnQg PDwgRFNDX0JQQ19TSElGVCB8Cj4gKwkJdmRzY19jZmctPmxpbmVfYnVmX2RlcHRoIDw8IERTQ19M SU5FX0JVRl9ERVBUSF9TSElGVDsKPiArCWlmICh2ZHNjX2NmZy0+YmxvY2tfcHJlZF9lbmFibGUp Cj4gKwkJcHBzX3ZhbCB8PSBEU0NfQkxPQ0tfUFJFRElDVElPTjsKPiArCWVsc2UKPiArCQlwcHNf dmFsICY9IH5EU0NfQkxPQ0tfUFJFRElDVElPTjsKCkFsbCB0aGVzZSAmPX4gdGhpbmdzIHNlZW0g cmVkdW5kYW50LgoKPiArCWlmICh2ZHNjX2NmZy0+Y29udmVydF9yZ2IpCj4gKwkJcHBzX3ZhbCB8 PSBEU0NfQ09MT1JfU1BBQ0VfQ09OVkVSU0lPTjsKPiArCWVsc2UKPiArCQlwcHNfdmFsICY9IH5E U0NfQ09MT1JfU1BBQ0VfQ09OVkVSU0lPTjsKPiArCWlmICh2ZHNjX2NmZy0+ZW5hYmxlNDIyKQo+ ICsJCXBwc192YWwgfD0gRFNDXzQyMl9FTkFCTEU7Cj4gKwllbHNlCj4gKwkJcHBzX3ZhbCAmPSB+ RFNDXzQyMl9FTkFCTEU7Cj4gKwlpZiAodmRzY19jZmctPnZicl9lbmFibGUpCj4gKwkJcHBzX3Zh bCB8PSBEU0NfVkJSX0VOQUJMRTsKPiArCWVsc2UKPiArCQlwcHNfdmFsICY9IH5EU0NfVkJSX0VO QUJMRTsKPiArCj4gKwlEUk1fSU5GTygiUFBTMCA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7Cj4gKwlp ZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKPiArCQlJOTE1X1dSSVRFKERT Q0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzAsIHBwc192YWwpOwo+ICsJCS8qCj4gKwkJICogSWYg MiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKPiAr CQkgKiBWRFNDCj4gKwkJICovCj4gKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3Nw bGl0KQo+ICsJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzAsIHBwc192 YWwpOwo+ICsJfSBlbHNlIHsKPiArCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1F VEVSX1NFVF8wKHBpcGUpLCBwcHNfdmFsKTsKPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFt cy5kc2Nfc3BsaXQpCj4gKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJf U0VUXzAocGlwZSksCj4gKwkJCQkgICBwcHNfdmFsKTsKPiArCX0KCkkgdGhpbmsgd2UgbmVlZCB0 byBjb21lIHVwIHdpdGggYSB3YXkgdG8gZWxpbWluYXRlIHRoaXMgaG9ycmlibGUKcmVwZXRpdGlv bi4gQnV0IHRoYXQgY2FuIGJlIGRvbmUgYXMgYSBjbGVhbnVwIGxhdGVyLgoKPiArCj4gKwkvKiBQ b3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfMSByZWdpc3RlcnMgKi8KPiArCXBwc192YWwg PSAwOwo+ICsJcHBzX3ZhbCB8PSBEU0NfQlBQKHZkc2NfY2ZnLT5iaXRzX3Blcl9waXhlbCk7CgpX aGF0J3Mgd2l0aCB0aGUgZXh0cmEgfD0gb24gYWxsIG9mIHRoZXNlPwpXaHkgbm90IGp1c3QgaW5p dGlhbGl6ZSB0aGUgdGhpbmcgd2l0aCB0aGUgcHJvcGVyIHZhbHVlIGZyb20gdGhlIHN0YXJ0PwoK PiArCURSTV9JTkZPKCJQUFMxID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKPiArCWlmIChjcHVfdHJh bnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgewo+ICsJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJF X1BBUkFNRVRFUl9TRVRfMSwgcHBzX3ZhbCk7Cj4gKwkJLyoKPiArCQkgKiBJZiAyIFZEU0MgaW5z dGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAo+ICsJCSAqIFZEU0MK PiArCQkgKi8KPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gKwkJ CUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMSwgcHBzX3ZhbCk7Cj4gKwl9 IGVsc2Ugewo+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEo cGlwZSksIHBwc192YWwpOwo+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxp dCkKPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMShwaXBl KSwKPiArCQkJCSAgIHBwc192YWwpOwo+ICsJfQo+ICsKPiArCS8qIFBvcHVsYXRlIFBJQ1RVUkVf UEFSQU1FVEVSX1NFVF8yIHJlZ2lzdGVycyAqLwo+ICsJcHBzX3ZhbCA9IDA7Cj4gKwlwcHNfdmFs IHw9IERTQ19QSUNfSEVJR0hUKHZkc2NfY2ZnLT5waWNfaGVpZ2h0KSB8Cj4gKwkJRFNDX1BJQ19X SURUSCh2ZHNjX2NmZy0+cGljX3dpZHRoIC8gbnVtX3Zkc2NfaW5zdGFuY2VzKTsKPiArCURSTV9J TkZPKCJQUFMyID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKPiArCWlmIChlbmNvZGVyLT50eXBlID09 IElOVEVMX09VVFBVVF9FRFApIHsKPiArCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVU RVJfU0VUXzIsIHBwc192YWwpOwo+ICsJCS8qCj4gKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBh cmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKPiArCQkgKiBWRFNDCj4gKwkJICov Cj4gKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQo+ICsJCQlJOTE1X1dS SVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzIsIHBwc192YWwpOwo+ICsJfSBlbHNlIHsK PiArCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8yKHBpcGUpLCBw cHNfdmFsKTsKPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gKwkJ CUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzIocGlwZSksCj4gKwkJ CQkgICBwcHNfdmFsKTsKPiArCX0KPiArCj4gKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRF Ul9TRVRfMyByZWdpc3RlcnMgKi8KPiArCXBwc192YWwgPSAwOwo+ICsJcHBzX3ZhbCB8PSBEU0Nf U0xJQ0VfSEVJR0hUKHZkc2NfY2ZnLT5zbGljZV9oZWlnaHQpIHwKPiArCQlEU0NfU0xJQ0VfV0lE VEgodmRzY19jZmctPnNsaWNlX3dpZHRoKTsKPiArCURSTV9JTkZPKCJQUFMzID0gMHglMDh4XG4i LCBwcHNfdmFsKTsKPiArCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgewo+ ICsJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMywgcHBzX3ZhbCk7Cj4g KwkJLyoKPiArCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQ UFMgZm9yIHNlY29uZAo+ICsJCSAqIFZEU0MKPiArCQkgKi8KPiArCQlpZiAoY3J0Y19zdGF0ZS0+ ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFN RVRFUl9TRVRfMywgcHBzX3ZhbCk7Cj4gKwl9IGVsc2Ugewo+ICsJCUk5MTVfV1JJVEUoSUNMX0RT QzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzMocGlwZSksIHBwc192YWwpOwo+ICsJCWlmIChjcnRj X3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9Q SUNUVVJFX1BBUkFNRVRFUl9TRVRfMyhwaXBlKSwKPiArCQkJCSAgIHBwc192YWwpOwo+ICsJfQo+ ICsKPiArCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF80IHJlZ2lzdGVycyAqLwo+ ICsJcHBzX3ZhbCA9IDA7Cj4gKwlwcHNfdmFsIHw9IERTQ19JTklUSUFMX1hNSVRfREVMQVkodmRz Y19jZmctPmluaXRpYWxfeG1pdF9kZWxheSkgfAo+ICsJCURTQ19JTklUSUFMX0RFQ19ERUxBWSh2 ZHNjX2NmZy0+aW5pdGlhbF9kZWNfZGVsYXkpOwo+ICsJRFJNX0lORk8oIlBQUzQgPSAweCUwOHhc biIsIHBwc192YWwpOwo+ICsJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7 Cj4gKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF80LCBwcHNfdmFsKTsK PiArCQkvKgo+ICsJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJl IFBQUyBmb3Igc2Vjb25kCj4gKwkJICogVkRTQwo+ICsJCSAqLwo+ICsJCWlmIChjcnRjX3N0YXRl LT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiArCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFS QU1FVEVSX1NFVF80LCBwcHNfdmFsKTsKPiArCX0gZWxzZSB7Cj4gKwkJSTkxNV9XUklURShJQ0xf RFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNChwaXBlKSwgcHBzX3ZhbCk7Cj4gKwkJaWYgKGNy dGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQo+ICsJCQlJOTE1X1dSSVRFKElDTF9EU0Mx X1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF80KHBpcGUpLAo+ICsJCQkJICAgcHBzX3ZhbCk7Cj4gKwl9 Cj4gKwo+ICsJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzUgcmVnaXN0ZXJzICov Cj4gKwlwcHNfdmFsID0gMDsKPiArCXBwc192YWwgfD0gRFNDX1NDQUxFX0lOQ19JTlQodmRzY19j ZmctPnNjYWxlX2luY3JlbWVudF9pbnRlcnZhbCkgfAo+ICsJCURTQ19TQ0FMRV9ERUNfSU5UKHZk c2NfY2ZnLT5zY2FsZV9kZWNyZW1lbnRfaW50ZXJ2YWwpOwo+ICsJRFJNX0lORk8oIlBQUzUgPSAw eCUwOHhcbiIsIHBwc192YWwpOwo+ICsJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJf RURQKSB7Cj4gKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF81LCBwcHNf dmFsKTsKPiArCQkvKgo+ICsJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29u ZmlndXJlIFBQUyBmb3Igc2Vjb25kCj4gKwkJICogVkRTQwo+ICsJCSAqLwo+ICsJCWlmIChjcnRj X3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiArCQkJSTkxNV9XUklURShEU0NDX1BJQ1RV UkVfUEFSQU1FVEVSX1NFVF81LCBwcHNfdmFsKTsKPiArCX0gZWxzZSB7Cj4gKwkJSTkxNV9XUklU RShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNShwaXBlKSwgcHBzX3ZhbCk7Cj4gKwkJ aWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQo+ICsJCQlJOTE1X1dSSVRFKElD TF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF81KHBpcGUpLAo+ICsJCQkJICAgcHBzX3ZhbCk7 Cj4gKwl9Cj4gKwo+ICsJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzYgcmVnaXN0 ZXJzICovCj4gKwlwcHNfdmFsID0gMDsKPiArCXBwc192YWwgfD0gRFNDX0lOSVRJQUxfU0NBTEVf VkFMVUUodmRzY19jZmctPmluaXRpYWxfc2NhbGVfdmFsdWUpIHwKPiArCQlEU0NfRklSU1RfTElO RV9CUEdfT0ZGU0VUKHZkc2NfY2ZnLT5maXJzdF9saW5lX2JwZ19vZmZzZXQpIHwKPiArCQlEU0Nf RkxBVE5FU1NfTUlOX1FQKHZkc2NfY2ZnLT5mbGF0bmVzc19taW5fcXApIHwKPiArCQlEU0NfRkxB VE5FU1NfTUFYX1FQKHZkc2NfY2ZnLT5mbGF0bmVzc19tYXhfcXApOwo+ICsJRFJNX0lORk8oIlBQ UzYgPSAweCUwOHhcbiIsIHBwc192YWwpOwo+ICsJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5T Q09ERVJfRURQKSB7Cj4gKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82 LCBwcHNfdmFsKTsKPiArCQkvKgo+ICsJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRl ZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCj4gKwkJICogVkRTQwo+ICsJCSAqLwo+ICsJCWlm IChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiArCQkJSTkxNV9XUklURShEU0ND X1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82LCBwcHNfdmFsKTsKPiArCX0gZWxzZSB7Cj4gKwkJSTkx NV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNihwaXBlKSwgcHBzX3ZhbCk7 Cj4gKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQo+ICsJCQlJOTE1X1dS SVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82KHBpcGUpLAo+ICsJCQkJICAgcHBz X3ZhbCk7Cj4gKwl9Cj4gKwo+ICsJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzcg cmVnaXN0ZXJzICovCj4gKwlwcHNfdmFsID0gMDsKPiArCXBwc192YWwgfD0gRFNDX1NMSUNFX0JQ R19PRkZTRVQodmRzY19jZmctPnNsaWNlX2JwZ19vZmZzZXQpIHwKPiArCQlEU0NfTkZMX0JQR19P RkZTRVQodmRzY19jZmctPm5mbF9icGdfb2Zmc2V0KTsKPiArCURSTV9JTkZPKCJQUFM3ID0gMHgl MDh4XG4iLCBwcHNfdmFsKTsKPiArCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VE UCkgewo+ICsJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNywgcHBzX3Zh bCk7Cj4gKwkJLyoKPiArCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZp Z3VyZSBQUFMgZm9yIHNlY29uZAo+ICsJCSAqIFZEU0MKPiArCQkgKi8KPiArCQlpZiAoY3J0Y19z dGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJF X1BBUkFNRVRFUl9TRVRfNywgcHBzX3ZhbCk7Cj4gKwl9IGVsc2Ugewo+ICsJCUk5MTVfV1JJVEUo SUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzcocGlwZSksIHBwc192YWwpOwo+ICsJCWlm IChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiArCQkJSTkxNV9XUklURShJQ0xf RFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNyhwaXBlKSwKPiArCQkJCSAgIHBwc192YWwpOwo+ ICsJfQo+ICsKPiArCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF84IHJlZ2lzdGVy cyAqLwo+ICsJcHBzX3ZhbCA9IDA7Cj4gKwlwcHNfdmFsIHw9IERTQ19GSU5BTF9PRkZTRVQodmRz Y19jZmctPmZpbmFsX29mZnNldCkgfAo+ICsJCURTQ19JTklUSUFMX09GRlNFVCh2ZHNjX2NmZy0+ aW5pdGlhbF9vZmZzZXQpOwo+ICsJRFJNX0lORk8oIlBQUzggPSAweCUwOHhcbiIsIHBwc192YWwp Owo+ICsJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7Cj4gKwkJSTkxNV9X UklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF84LCBwcHNfdmFsKTsKPiArCQkvKgo+ICsJ CSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vj b25kCj4gKwkJICogVkRTQwo+ICsJCSAqLwo+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1z LmRzY19zcGxpdCkKPiArCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF84 LCBwcHNfdmFsKTsKPiArCX0gZWxzZSB7Cj4gKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJF X1BBUkFNRVRFUl9TRVRfOChwaXBlKSwgcHBzX3ZhbCk7Cj4gKwkJaWYgKGNydGNfc3RhdGUtPmRz Y19wYXJhbXMuZHNjX3NwbGl0KQo+ICsJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFS QU1FVEVSX1NFVF84KHBpcGUpLAo+ICsJCQkJICAgcHBzX3ZhbCk7Cj4gKwl9Cj4gKwo+ICsJLyog UG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzkgcmVnaXN0ZXJzICovCj4gKwlwcHNfdmFs ID0gMDsKPiArCXBwc192YWwgfD0gRFNDX1JDX01PREVMX1NJWkUoRFNDX1JDX01PREVMX1NJWkVf Q09OU1QpIHwKPiArCQlEU0NfUkNfRURHRV9GQUNUT1IoRFNDX1JDX0VER0VfRkFDVE9SX0NPTlNU KTsKPiArCURSTV9JTkZPKCJQUFM5ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKPiArCWlmIChjcHVf dHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgewo+ICsJCUk5MTVfV1JJVEUoRFNDQV9QSUNU VVJFX1BBUkFNRVRFUl9TRVRfOSwgcHBzX3ZhbCk7Cj4gKwkJLyoKPiArCQkgKiBJZiAyIFZEU0Mg aW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAo+ICsJCSAqIFZE U0MKPiArCQkgKi8KPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4g KwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOSwgcHBzX3ZhbCk7Cj4g Kwl9IGVsc2Ugewo+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VU XzkocGlwZSksIHBwc192YWwpOwo+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19z cGxpdCkKPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOShw aXBlKSwKPiArCQkJCSAgIHBwc192YWwpOwo+ICsJfQo+ICsKPiArCS8qIFBvcHVsYXRlIFBJQ1RV UkVfUEFSQU1FVEVSX1NFVF8xMCByZWdpc3RlcnMgKi8KPiArCXBwc192YWwgPSAwOwo+ICsJcHBz X3ZhbCB8PSBEU0NfUkNfUVVBTlRfSU5DX0xJTUlUMCh2ZHNjX2NmZy0+cmNfcXVhbnRfaW5jcl9s aW1pdDApIHwKPiArCQlEU0NfUkNfUVVBTlRfSU5DX0xJTUlUMSh2ZHNjX2NmZy0+cmNfcXVhbnRf aW5jcl9saW1pdDEpIHwKPiArCQlEU0NfUkNfVEFSR0VUX09GRl9ISUdIKERTQ19SQ19UR1RfT0ZG U0VUX0hJX0NPTlNUKSB8Cj4gKwkJRFNDX1JDX1RBUkdFVF9PRkZfTE9XKERTQ19SQ19UR1RfT0ZG U0VUX0xPX0NPTlNUKTsKPiArCURSTV9JTkZPKCJQUFMxMCA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7 Cj4gKwlpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKPiArCQlJOTE1X1dS SVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEwLCBwcHNfdmFsKTsKPiArCQkvKgo+ICsJ CSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vj b25kCj4gKwkJICogVkRTQwo+ICsJCSAqLwo+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1z LmRzY19zcGxpdCkKPiArCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8x MCwgcHBzX3ZhbCk7Cj4gKwl9IGVsc2Ugewo+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVS RV9QQVJBTUVURVJfU0VUXzEwKHBpcGUpLCBwcHNfdmFsKTsKPiArCQlpZiAoY3J0Y19zdGF0ZS0+ ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9Q QVJBTUVURVJfU0VUXzEwKHBpcGUpLAo+ICsJCQkJICAgcHBzX3ZhbCk7Cj4gKwl9Cj4gKwo+ICsJ LyogUG9wdWxhdGUgUGljdHVyZSBwYXJhbWV0ZXIgc2V0IDE2ICovCj4gKwlwcHNfdmFsID0gMDsK PiArCXBwc192YWwgfD0gRFNDX1NMSUNFX0NIVU5LX1NJWkUodmRzY19jZmctPnNsaWNlX2NodW5r X3NpemUpIHwKPiArCQlEU0NfU0xJQ0VfUEVSX0xJTkUoKHZkc2NfY2ZnLT5waWNfd2lkdGggLyBu dW1fdmRzY19pbnN0YW5jZXMpIC8KPiArCQkJCSAgIHZkc2NfY2ZnLT5zbGljZV93aWR0aCkgfAo+ ICsJCURTQ19TTElDRV9ST1dfUEVSX0ZSQU1FKHZkc2NfY2ZnLT5waWNfaGVpZ2h0IC8KPiArCQkJ CQl2ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0KTsKPiArCURSTV9JTkZPKCJQUFMxNiA9IDB4JTA4eFxu IiwgcHBzX3ZhbCk7Cj4gKwlpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsK PiArCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzE2LCBwcHNfdmFsKTsK PiArCQkvKgo+ICsJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJl IFBQUyBmb3Igc2Vjb25kCj4gKwkJICogVkRTQwo+ICsJCSAqLwo+ICsJCWlmIChjcnRjX3N0YXRl LT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiArCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFS QU1FVEVSX1NFVF8xNiwgcHBzX3ZhbCk7Cj4gKwl9IGVsc2Ugewo+ICsJCUk5MTVfV1JJVEUoSUNM X0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzE2KHBpcGUpLCBwcHNfdmFsKTsKPiArCQlpZiAo Y3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gKwkJCUk5MTVfV1JJVEUoSUNMX0RT QzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzE2KHBpcGUpLAo+ICsJCQkJICAgcHBzX3ZhbCk7Cj4g Kwl9Cj4gKwo+ICsJLyogUG9wdWxhdGUgdGhlIFJDX0JVRl9USFJFU0ggcmVnaXN0ZXJzICovCj4g KwltZW1zZXQocmNfYnVmX3RocmVzaF9kd29yZCwgMCwgc2l6ZW9mKHJjX2J1Zl90aHJlc2hfZHdv cmQpKTsKPiArCWZvciAoaSA9IDA7IGkgPCBEU0NfTlVNX0JVRl9SQU5HRVMgLSAxOyBpKyspIHsK PiArCQlyY19idWZfdGhyZXNoX2R3b3JkW2kvNF0gfD0gKHUzMikodmRzY19jZmctPnJjX2J1Zl90 aHJlc2hbaV0gPDwKPiArCQkJCQkJICBCSVRTX1BFUl9CWVRFICogKGkgJSA0KSk7Cj4gKwkJRFJN X0lORk8oIiBSQ19CVUZfVEhSRVNIJWQgPSAweCUwOHhcbiIsIGksCj4gKwkJCSByY19idWZfdGhy ZXNoX2R3b3JkW2kvNF0pOwo+ICsJfQo+ICsJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09E RVJfRURQKSB7Cj4gKwkJSTkxNV9XUklURShEU0NBX1JDX0JVRl9USFJFU0hfMCwgcmNfYnVmX3Ro cmVzaF9kd29yZFswXSk7Cj4gKwkJSTkxNV9XUklURShEU0NBX1JDX0JVRl9USFJFU0hfMF9VRFcs IHJjX2J1Zl90aHJlc2hfZHdvcmRbMV0pOwo+ICsJCUk5MTVfV1JJVEUoRFNDQV9SQ19CVUZfVEhS RVNIXzEsIHJjX2J1Zl90aHJlc2hfZHdvcmRbMl0pOwo+ICsJCUk5MTVfV1JJVEUoRFNDQV9SQ19C VUZfVEhSRVNIXzFfVURXLCByY19idWZfdGhyZXNoX2R3b3JkWzNdKTsKPiArCQlpZiAoY3J0Y19z dGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpIHsKPiArCQkJSTkxNV9XUklURShEU0NDX1JDX0JV Rl9USFJFU0hfMCwKPiArCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMF0pOwo+ICsJCQlJOTE1 X1dSSVRFKERTQ0NfUkNfQlVGX1RIUkVTSF8wX1VEVywKPiArCQkJCSAgIHJjX2J1Zl90aHJlc2hf ZHdvcmRbMV0pOwo+ICsJCQlJOTE1X1dSSVRFKERTQ0NfUkNfQlVGX1RIUkVTSF8xLAo+ICsJCQkJ ICAgcmNfYnVmX3RocmVzaF9kd29yZFsyXSk7Cj4gKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19CVUZf VEhSRVNIXzFfVURXLAo+ICsJCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFszXSk7Cj4gKwkJfQo+ ICsJfSBlbHNlIHsKPiArCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX0JVRl9USFJFU0hfMChwaXBl KSwKPiArCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFswXSk7Cj4gKwkJSTkxNV9XUklURShJQ0xf RFNDMF9SQ19CVUZfVEhSRVNIXzBfVURXKHBpcGUpLAo+ICsJCQkgICByY19idWZfdGhyZXNoX2R3 b3JkWzFdKTsKPiArCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX0JVRl9USFJFU0hfMShwaXBlKSwK PiArCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFsyXSk7Cj4gKwkJSTkxNV9XUklURShJQ0xfRFND MF9SQ19CVUZfVEhSRVNIXzFfVURXKHBpcGUpLAo+ICsJCQkgICByY19idWZfdGhyZXNoX2R3b3Jk WzNdKTsKPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpIHsKPiArCQkJ STkxNV9XUklURShJQ0xfRFNDMV9SQ19CVUZfVEhSRVNIXzAocGlwZSksCj4gKwkJCQkgICByY19i dWZfdGhyZXNoX2R3b3JkWzBdKTsKPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19CVUZfVEhS RVNIXzBfVURXKHBpcGUpLAo+ICsJCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFsxXSk7Cj4gKwkJ CUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfQlVGX1RIUkVTSF8xKHBpcGUpLAo+ICsJCQkJICAgcmNf YnVmX3RocmVzaF9kd29yZFsyXSk7Cj4gKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfQlVGX1RI UkVTSF8xX1VEVyhwaXBlKSwKPiArCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbM10pOwo+ICsJ CX0KPiArCX0KPiArCj4gKwkvKiBQb3B1bGF0ZSB0aGUgUkNfUkFOR0VfUEFSQU1FVEVSUyByZWdp c3RlcnMgKi8KPiArCW1lbXNldChyY19yYW5nZV9wYXJhbXNfZHdvcmQsIDAsIHNpemVvZihyY19y YW5nZV9wYXJhbXNfZHdvcmQpKTsKPiArCWZvciAoaSA9IDA7IGkgPCBEU0NfTlVNX0JVRl9SQU5H RVM7IGkrKykgewo+ICsJCXJjX3JhbmdlX3BhcmFtc19kd29yZFtpLzJdIHw9ICh1MzIpKCgodmRz Y19jZmctPnJjX3JhbmdlX3BhcmFtc1tpXS5yYW5nZV9icGdfb2Zmc2V0IDw8Cj4gKwkJCQkJCSAg ICAgIFJDX0JQR19PRkZTRVRfU0hJRlQpIHwKPiArCQkJCQkJICAgICAodmRzY19jZmctPnJjX3Jh bmdlX3BhcmFtc1tpXS5yYW5nZV9tYXhfcXAgPDwKPiArCQkJCQkJICAgICAgUkNfTUFYX1FQX1NI SUZUKSB8Cj4gKwkJCQkJCSAgICAgKHZkc2NfY2ZnLT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2Vf bWluX3FwIDw8Cj4gKwkJCQkJCSAgICAgIFJDX01JTl9RUF9TSElGVCkpIDw8IDE2ICogKGkgJSAy KSk7Cj4gKwkJRFJNX0lORk8oIiBSQ19SQU5HRV9QQVJBTV8lZCA9IDB4JTA4eFxuIiwgaSwKPiAr CQkJIHJjX3JhbmdlX3BhcmFtc19kd29yZFtpLzJdKTsKPiArCX0KPiArCWlmIChjcHVfdHJhbnNj b2RlciA9PSBUUkFOU0NPREVSX0VEUCkgewo+ICsJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9Q QVJBTUVURVJTXzAsCj4gKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFswXSk7Cj4gKwkJSTkx NV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfMF9VRFcsCj4gKwkJCSAgIHJjX3Jhbmdl X3BhcmFtc19kd29yZFsxXSk7Cj4gKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRF UlNfMSwKPiArCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzJdKTsKPiArCQlJOTE1X1dSSVRF KERTQ0FfUkNfUkFOR0VfUEFSQU1FVEVSU18xX1VEVywKPiArCQkJICAgcmNfcmFuZ2VfcGFyYW1z X2R3b3JkWzNdKTsKPiArCQlJOTE1X1dSSVRFKERTQ0FfUkNfUkFOR0VfUEFSQU1FVEVSU18yLAo+ ICsJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNF0pOwo+ICsJCUk5MTVfV1JJVEUoRFNDQV9S Q19SQU5HRV9QQVJBTUVURVJTXzJfVURXLAo+ICsJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRb NV0pOwo+ICsJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzMsCj4gKwkJCSAg IHJjX3JhbmdlX3BhcmFtc19kd29yZFs2XSk7Cj4gKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdF X1BBUkFNRVRFUlNfM19VRFcsCj4gKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs3XSk7Cj4g KwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KSB7Cj4gKwkJCUk5MTVfV1JJ VEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzAsCj4gKwkJCQkgICByY19yYW5nZV9wYXJhbXNf ZHdvcmRbMF0pOwo+ICsJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18wX1VE VywKPiArCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsxXSk7Cj4gKwkJCUk5MTVfV1JJVEUo RFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzEsCj4gKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdv cmRbMl0pOwo+ICsJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18xX1VEVywK PiArCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFszXSk7Cj4gKwkJCUk5MTVfV1JJVEUoRFND Q19SQ19SQU5HRV9QQVJBTUVURVJTXzIsCj4gKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRb NF0pOwo+ICsJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18yX1VEVywKPiAr CQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs1XSk7Cj4gKwkJCUk5MTVfV1JJVEUoRFNDQ19S Q19SQU5HRV9QQVJBTUVURVJTXzMsCj4gKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNl0p Owo+ICsJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18zX1VEVywKPiArCQkJ CSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs3XSk7Cj4gKwkJfQo+ICsJfSBlbHNlIHsKPiArCQlJ OTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfMChwaXBlKSwKPiArCQkJICAg cmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzBdKTsKPiArCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JB TkdFX1BBUkFNRVRFUlNfMF9VRFcocGlwZSksCj4gKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29y ZFsxXSk7Cj4gKwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzEocGlw ZSksCj4gKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsyXSk7Cj4gKwkJSTkxNV9XUklURShJ Q0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzFfVURXKHBpcGUpLAo+ICsJCQkgICByY19yYW5n ZV9wYXJhbXNfZHdvcmRbM10pOwo+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFOR0VfUEFS QU1FVEVSU18yKHBpcGUpLAo+ICsJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNF0pOwo+ICsJ CUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVSU18yX1VEVyhwaXBlKSwKPiAr CQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzVdKTsKPiArCQlJOTE1X1dSSVRFKElDTF9EU0Mw X1JDX1JBTkdFX1BBUkFNRVRFUlNfMyhwaXBlKSwKPiArCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3 b3JkWzZdKTsKPiArCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfM19V RFcocGlwZSksCj4gKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs3XSk7Cj4gKwkJaWYgKGNy dGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KSB7Cj4gKwkJCUk5MTVfV1JJVEUoSUNMX0RT QzFfUkNfUkFOR0VfUEFSQU1FVEVSU18wKHBpcGUpLAo+ICsJCQkJICAgcmNfcmFuZ2VfcGFyYW1z X2R3b3JkWzBdKTsKPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJT XzBfVURXKHBpcGUpLAo+ICsJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzFdKTsKPiArCQkJ STkxNV9XUklURShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzEocGlwZSksCj4gKwkJCQkg ICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMl0pOwo+ICsJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JD X1JBTkdFX1BBUkFNRVRFUlNfMV9VRFcocGlwZSksCj4gKwkJCQkgICByY19yYW5nZV9wYXJhbXNf ZHdvcmRbM10pOwo+ICsJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNf MihwaXBlKSwKPiArCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs0XSk7Cj4gKwkJCUk5MTVf V1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18yX1VEVyhwaXBlKSwKPiArCQkJCSAg IHJjX3JhbmdlX3BhcmFtc19kd29yZFs1XSk7Cj4gKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNf UkFOR0VfUEFSQU1FVEVSU18zKHBpcGUpLAo+ICsJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3Jk WzZdKTsKPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzNfVURX KHBpcGUpLAo+ICsJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzddKTsKPiArCQl9Cj4gKwl9 Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfZHNjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKPiArCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSkKPiArewo+ICsKPiArCWlmICghY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5jb21wcmVzc2lv bl9lbmFibGUpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWludGVsX2NvbmZpZ3VyZV9wcHNfZm9yX2Rz Y19lbmNvZGVyKGVuY29kZXIsIGNydGNfc3RhdGUpOwo+ICsKPiArCXJldHVybjsKPiArfQo+IC0t IAo+IDIuMTkuMQoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK