From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Srivatsa, Anusha" Subject: RE: [PATCH v5 20/28] drm/i915/dp: Configure i915 Picture parameter Set registers during DSC enabling Date: Wed, 17 Oct 2018 16:58:05 +0000 Message-ID: <83F5C7385F545743AD4FB2A62F75B07347F77EED@ORSMSX108.amr.corp.intel.com> References: <20181005232306.31133-1-manasi.d.navare@intel.com> <20181005232306.31133-21-manasi.d.navare@intel.com> <83F5C7385F545743AD4FB2A62F75B07347F774C3@ORSMSX108.amr.corp.intel.com> <20181016210247.GE8224@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181016210247.GE8224@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Navare, Manasi D" Cc: "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org Cgo+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPkZyb206IE5hdmFyZSwgTWFuYXNpIEQKPlNl bnQ6IFR1ZXNkYXksIE9jdG9iZXIgMTYsIDIwMTggMjowMyBQTQo+VG86IFNyaXZhdHNhLCBBbnVz aGEgPGFudXNoYS5zcml2YXRzYUBpbnRlbC5jb20+Cj5DYzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZzsgZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgSmFuaSBOaWt1bGEK PjxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+OyBWaWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KPlN1YmplY3Q6IFJlOiBbUEFUQ0ggdjUgMjAvMjhdIGRybS9p OTE1L2RwOiBDb25maWd1cmUgaTkxNSBQaWN0dXJlIHBhcmFtZXRlciBTZXQKPnJlZ2lzdGVycyBk dXJpbmcgRFNDIGVuYWJsaW5nCj4KPk9uIFR1ZSwgT2N0IDE2LCAyMDE4IGF0IDEyOjU4OjI0UE0g LTA3MDAsIFNyaXZhdHNhLCBBbnVzaGEgd3JvdGU6Cj4+Cj4+Cj4+ID4tLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQo+PiA+RnJvbTogTmF2YXJlLCBNYW5hc2kgRAo+PiA+U2VudDogRnJpZGF5LCBP Y3RvYmVyIDUsIDIwMTggNDoyMyBQTQo+PiA+VG86IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmc7IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gPkNjOiBOYXZhcmUsIE1h bmFzaSBEIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPjsgSmFuaSBOaWt1bGEKPj4gPjxqYW5p Lm5pa3VsYUBsaW51eC5pbnRlbC5jb20+OyBWaWxsZSBTeXJqYWxhCj4+ID48dmlsbGUuc3lyamFs YUBsaW51eC5pbnRlbC5jb20+OyBTcml2YXRzYSwgQW51c2hhCj4+ID48YW51c2hhLnNyaXZhdHNh QGludGVsLmNvbT4KPj4gPlN1YmplY3Q6IFtQQVRDSCB2NSAyMC8yOF0gZHJtL2k5MTUvZHA6IENv bmZpZ3VyZSBpOTE1IFBpY3R1cmUKPj4gPnBhcmFtZXRlciBTZXQgcmVnaXN0ZXJzIGR1cmluZyBE U0MgZW5hYmxpbmcKPj4gPgo+PiA+QWZ0ZXIgZW5jb2Rlci0+cHJlX2VuYWJsZSgpIGhvb2ssIGFm dGVyIGxpbmsgdHJhaW5pbmcgc2VxdWVuY2UgaXMKPj4gPmNvbXBsZXRlZCwgUFBTIHJlZ2lzdGVy cyBmb3IgRFNDIGVuY29kZXIgYXJlIGNvbmZpZ3VyZWQgdXNpbmcgdGhlIERTQwo+PiA+c3RhdGUg cGFyYW1ldGVycyBpbiBpbnRlbF9jcnRjX3N0YXRlIGFzIHBhcnQgb2YgRFNDIGVuYWJsaW5nIHJv dXRpbmUKPj4gPmluIHRoZSBzb3VyY2UuIERTQyBlbmFibGluZyByb3V0aW5lIGlzIGNhbGxlZCBh ZnRlcgo+PiA+ZW5jb2Rlci0+cHJlX2VuYWJsZSgpIGJlZm9yZSBlbmJhbGluZyB0aGUgcGlwZSBh bmQgYWZ0ZXIKPj4gPmNvbXByZXNzaW9uIGlzIGVuYWJsZWQgb24gdGhlIHNpbmsuCj4+ID4KPj4g PnYzOgo+PiA+KiBDb25maWd1cmUgUGljX3dpZHRoLzIgZm9yIGVhY2ggVkRTQyBlbmdpbmUgd2hl biB0d28gVkRTQyBlbmdpbmVzCj4+ID5wZXIgcGlwZSBhcmUgdXNlZCAoTWFuYXNpKQo+PiA+KiBB ZGQgRFNDIHNsaWNlX3Jvd19wZXJfZnJhbWUgaW4gUFBTMTYgKE1hbmFzaSkKPj4gPgo+PiA+djI6 Cj4+ID4qIEVuYWJsZSBQRzIgcG93ZXIgd2VsbCBmb3IgVkRTQyBvbiBlRFAKPj4gPgo+PiA+Q2M6 IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+Cj4+ID5DYzogVmlsbGUg U3lyamFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4+ID5DYzogQW51c2hhIFNy aXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29tPgo+PiA+U2lnbmVkLW9mZi1ieTogTWFu YXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KU29tZSBjb21tZW50cyBpbmxp bmUuLi4uLgoKPj4KPj4gPi0tLQo+PiA+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg ICAgICB8ICAgMiArCj4+ID4gZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwg ICA2ICsKPj4gPiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMgICAgfCA0MTggKysr KysrKysrKysrKysrKysrKysrKysrKysrCj4+ID4gMyBmaWxlcyBjaGFuZ2VkLCA0MjYgaW5zZXJ0 aW9ucygrKQo+PiA+Cj4+ID5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+PiA+Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGluZGV4IDkzZTU3YjI3 MWQzYi4uYjQ5OTg1ZjVkMDhjCj4+ID4xMDA2NDQKPj4gPi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKPj4gPisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK Pj4gPkBAIC0zNTA2LDYgKzM1MDYsOCBAQCBleHRlcm4gdm9pZCBpbnRlbF9ycHNfbWFya19pbnRl cmFjdGl2ZShzdHJ1Y3QKPj4gPmRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4+ID4gCQkJCSAgICAg ICBib29sIGludGVyYWN0aXZlKTsKPj4gPiBleHRlcm4gYm9vbCBpbnRlbF9zZXRfbWVtb3J5X2N4 c3Ioc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiA+IAkJCQkgIGJvb2wgZW5h YmxlKTsKPj4gPitleHRlcm4gdm9pZCBpbnRlbF9kc2NfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAo+PiA+KwkJCSAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUpOwo+PiA+Cj4+ID4gaW50IGk5MTVfcmVnX3JlYWRfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKPj4gPiAJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwo+PiA+ ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+PiA+Yi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gPmluZGV4IDRlYmY3YzgzMDg1 Yy4uZjdjYjQxNzc1YzU3IDEwMDY0NAo+PiA+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCj4+ID4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPj4gPkBAIC01NDgwLDYgKzU0ODAsMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5jb2RlcnNf cHJlX2VuYWJsZShzdHJ1Y3QKPj4gPmRybV9jcnRjICpjcnRjLAo+PiA+Cj4+ID4gCQlpZiAoZW5j b2Rlci0+cHJlX2VuYWJsZSkKPj4gPiAJCQllbmNvZGVyLT5wcmVfZW5hYmxlKGVuY29kZXIsIGNy dGNfc3RhdGUsIGNvbm5fc3RhdGUpOwo+PiA+Kwo+PiA+KwkJLyoKPj4gPisJCSAqIEVuYWJsZSBh bmQgQ29uZmlndXJlIERpc3BsYXkgU3RyZWFtIENvbXByZXNzaW9uIGluIHRoZQo+PiA+c291cmNl Cj4+ID4rCQkgKiBpZiBlbmFibGVkIGluIGludGVsX2NydGNfc3RhdGUuCj4+ID4rCQkgKi8KPj4g PisJCWludGVsX2RzY19lbmFibGUoZW5jb2RlciwgY3J0Y19zdGF0ZSk7Cj4+ID4gCX0KPj4gPiB9 Cj4+ID4KPj4gPmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMK Pj4gPmIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jCj4+ID5pbmRleCA1OTQxOTZh OWQwZjQuLjFmMmI1ZGM4MmYxNiAxMDA2NDQKPj4gPi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3Zkc2MuYwo+PiA+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5j Cj4+ID5AQCAtNTgwLDMgKzU4MCw0MjEgQEAgaW50IGludGVsX2RwX2NvbXB1dGVfZHNjX3BhcmFt cyhzdHJ1Y3QgaW50ZWxfZHAKPj4gPippbnRlbF9kcCwKPj4gPgo+PiA+IAlyZXR1cm4gMDsKPj4g PiB9Cj4+ID4rCj4+ID4rc3RhdGljIHZvaWQgaW50ZWxfY29uZmlndXJlX3Bwc19mb3JfZHNjX2Vu Y29kZXIoc3RydWN0IGludGVsX2VuY29kZXIKPiplbmNvZGVyLAo+PiA+KwkJCQkJCXN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlCj4+ID4qY3J0Y19zdGF0ZSkgewo+PiA+KwlzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPj4gPisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRl dik7Cj4+ID4rCXN0cnVjdCBkcm1fZHNjX2NvbmZpZyAqdmRzY19jZmcgPSAmY3J0Y19zdGF0ZS0+ ZHBfZHNjX2NmZzsKPj4gPisJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+PiA+Kwl1MzIg cHBzX3ZhbCA9IDA7Cj4+ID4rCXUzMiByY19idWZfdGhyZXNoX2R3b3JkWzRdOwo+PiA+Kwl1MzIg cmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzhdOwo+PiA+Kwl1OCBudW1fdmRzY19pbnN0YW5jZXMgPSAo Y3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpID8gMiA6IDE7Cj4+ID4rCWludCBpID0g MDsKPj4gPisKPj4gPisJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzAgcmVnaXN0 ZXJzICovCj4+ID4rCXBwc192YWwgPSBEU0NfVkVSX01BSiB8IHZkc2NfY2ZnLT5kc2NfdmVyc2lv bl9taW5vciA8PAo+PiA+KwkJRFNDX1ZFUl9NSU5fU0hJRlQgfAo+PiA+KwkJdmRzY19jZmctPmJp dHNfcGVyX2NvbXBvbmVudCA8PCBEU0NfQlBDX1NISUZUIHwKPj4gPisJCXZkc2NfY2ZnLT5saW5l X2J1Zl9kZXB0aCA8PCBEU0NfTElORV9CVUZfREVQVEhfU0hJRlQ7Cj4+ID4rCWlmICh2ZHNjX2Nm Zy0+YmxvY2tfcHJlZF9lbmFibGUpCj4+ID4rCQlwcHNfdmFsIHw9IERTQ19CTE9DS19QUkVESUNU SU9OOwo+PiA+KwllbHNlCj4+ID4rCQlwcHNfdmFsICY9IH5EU0NfQkxPQ0tfUFJFRElDVElPTjsK Pj4gPisJaWYgKHZkc2NfY2ZnLT5jb252ZXJ0X3JnYikKPj4gPisJCXBwc192YWwgfD0gRFNDX0NP TE9SX1NQQUNFX0NPTlZFUlNJT047Cj4+ID4rCWVsc2UKPj4gPisJCXBwc192YWwgJj0gfkRTQ19D T0xPUl9TUEFDRV9DT05WRVJTSU9OOwo+PiA+KwlpZiAodmRzY19jZmctPmVuYWJsZTQyMikKPj4g PisJCXBwc192YWwgfD0gRFNDXzQyMl9FTkFCTEU7Cj4+ID4rCWVsc2UKPj4gPisJCXBwc192YWwg Jj0gfkRTQ180MjJfRU5BQkxFOwo+PiA+KwlpZiAodmRzY19jZmctPnZicl9lbmFibGUpCj4+ID4r CQlwcHNfdmFsIHw9IERTQ19WQlJfRU5BQkxFOwo+PiA+KwllbHNlCj4+ID4rCQlwcHNfdmFsICY9 IH5EU0NfVkJSX0VOQUJMRTsKPj4gPisKPj4gPisJRFJNX0lORk8oIlBQUzAgPSAweCUwOHhcbiIs IHBwc192YWwpOwo+PiA+KwlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7 Cj4+ID4rCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzAsIHBwc192YWwp Owo+PiA+KwkJLyoKPj4gPisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29u ZmlndXJlIFBQUyBmb3Igc2Vjb25kCj4+ID4rCQkgKiBWRFNDCj4+ID4rCQkgKi8KPj4gPisJCWlm IChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPj4gPisJCQlJOTE1X1dSSVRFKERT Q0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzAsCj4+ID5wcHNfdmFsKTsKPj4gPisJfSBlbHNlIHsK Pj4gPisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzAocGlwZSks Cj4+ID5wcHNfdmFsKTsKPj4gPisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxp dCkKPj4gPisKPj4gPglJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8w KHBpcGUpLAo+PiA+KwkJCQkgICBwcHNfdmFsKTsKPj4gPisJfQo+PiA+Kwo+PiA+KwkvKiBQb3B1 bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfMSByZWdpc3RlcnMgKi8KPj4gPisJcHBzX3ZhbCA9 IDA7Cj4+ID4rCXBwc192YWwgfD0gRFNDX0JQUCh2ZHNjX2NmZy0+Yml0c19wZXJfcGl4ZWwpOwo+ PiA+KwlEUk1fSU5GTygiUFBTMSA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7Cj4+ID4rCWlmIChlbmNv ZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKPj4gPisJCUk5MTVfV1JJVEUoRFNDQV9Q SUNUVVJFX1BBUkFNRVRFUl9TRVRfMSwgcHBzX3ZhbCk7Cj4+ID4rCQkvKgo+PiA+KwkJICogSWYg MiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKPj4g PisJCSAqIFZEU0MKPj4gPisJCSAqLwo+PiA+KwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMu ZHNjX3NwbGl0KQo+PiA+KwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRf MSwKPj4gPnBwc192YWwpOwo+PiA+Kwl9IGVsc2Ugewo+PiA+KwkJSTkxNV9XUklURShJQ0xfRFND MF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMShwaXBlKSwKPj4gPnBwc192YWwpOwo+PiA+KwkJaWYg KGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQo+PiA+Kwo+PiA+CUk5MTVfV1JJVEUo SUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEocGlwZSksCj4+ID4rCQkJCSAgIHBwc192 YWwpOwo+PiA+Kwl9Cj4+ID4rCj4+ID4rCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NF VF8yIHJlZ2lzdGVycyAqLwo+PiA+KwlwcHNfdmFsID0gMDsKPj4gPisJcHBzX3ZhbCB8PSBEU0Nf UElDX0hFSUdIVCh2ZHNjX2NmZy0+cGljX2hlaWdodCkgfAo+PiA+KwkJRFNDX1BJQ19XSURUSCh2 ZHNjX2NmZy0+cGljX3dpZHRoIC8gbnVtX3Zkc2NfaW5zdGFuY2VzKTsKPj4gPisJRFJNX0lORk8o IlBQUzIgPSAweCUwOHhcbiIsIHBwc192YWwpOwo+PiA+KwlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJ TlRFTF9PVVRQVVRfRURQKSB7Cj4+ID4rCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVU RVJfU0VUXzIsIHBwc192YWwpOwo+PiA+KwkJLyoKPj4gPisJCSAqIElmIDIgVkRTQyBpbnN0YW5j ZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCj4+ID4rCQkgKiBWRFNDCj4+ ID4rCQkgKi8KPj4gPisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPj4g PisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzIsCj4+ID5wcHNfdmFs KTsKPj4gPisJfSBlbHNlIHsKPj4gPisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJB TUVURVJfU0VUXzIocGlwZSksCj4+ID5wcHNfdmFsKTsKPj4gPisJCWlmIChjcnRjX3N0YXRlLT5k c2NfcGFyYW1zLmRzY19zcGxpdCkKPj4gPisKPj4gPglJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RV UkVfUEFSQU1FVEVSX1NFVF8yKHBpcGUpLAo+PiA+KwkJCQkgICBwcHNfdmFsKTsKPj4gPisJfQo+ PiA+Kwo+PiA+KwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfMyByZWdpc3RlcnMg Ki8KPj4gPisJcHBzX3ZhbCA9IDA7Cj4+ID4rCXBwc192YWwgfD0gRFNDX1NMSUNFX0hFSUdIVCh2 ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0KSB8Cj4+ID4rCQlEU0NfU0xJQ0VfV0lEVEgodmRzY19jZmct PnNsaWNlX3dpZHRoKTsKPj4gPisJRFJNX0lORk8oIlBQUzMgPSAweCUwOHhcbiIsIHBwc192YWwp Owo+PiA+KwlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7Cj4+ID4rCQlJ OTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzMsIHBwc192YWwpOwo+PiA+KwkJ LyoKPj4gPisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQ UyBmb3Igc2Vjb25kCj4+ID4rCQkgKiBWRFNDCj4+ID4rCQkgKi8KPj4gPisJCWlmIChjcnRjX3N0 YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPj4gPisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVS RV9QQVJBTUVURVJfU0VUXzMsCj4+ID5wcHNfdmFsKTsKPj4gPisJfSBlbHNlIHsKPj4gPisJCUk5 MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzMocGlwZSksCj4+ID5wcHNf dmFsKTsKPj4gPisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPj4gPisK Pj4gPglJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8zKHBpcGUpLAo+ PiA+KwkJCQkgICBwcHNfdmFsKTsKPj4gPisJfQo+PiA+Kwo+PiA+KwkvKiBQb3B1bGF0ZSBQSUNU VVJFX1BBUkFNRVRFUl9TRVRfNCByZWdpc3RlcnMgKi8KPj4gPisJcHBzX3ZhbCA9IDA7Cj4+ID4r CXBwc192YWwgfD0gRFNDX0lOSVRJQUxfWE1JVF9ERUxBWSh2ZHNjX2NmZy0+aW5pdGlhbF94bWl0 X2RlbGF5KSB8Cj4+ID4rCQlEU0NfSU5JVElBTF9ERUNfREVMQVkodmRzY19jZmctPmluaXRpYWxf ZGVjX2RlbGF5KTsKPj4gPisJRFJNX0lORk8oIlBQUzQgPSAweCUwOHhcbiIsIHBwc192YWwpOwo+ PiA+KwlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7Cj4+ID4rCQlJOTE1 X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzQsIHBwc192YWwpOwo+PiA+KwkJLyoK Pj4gPisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBm b3Igc2Vjb25kCj4+ID4rCQkgKiBWRFNDCj4+ID4rCQkgKi8KPj4gPisJCWlmIChjcnRjX3N0YXRl LT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPj4gPisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9Q QVJBTUVURVJfU0VUXzQsCj4+ID5wcHNfdmFsKTsKPj4gPisJfSBlbHNlIHsKPj4gPisJCUk5MTVf V1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzQocGlwZSksCj4+ID5wcHNfdmFs KTsKPj4gPisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPj4gPisKPj4g PglJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF80KHBpcGUpLAo+PiA+ KwkJCQkgICBwcHNfdmFsKTsKPj4gPisJfQo+PiA+Kwo+PiA+KwkvKiBQb3B1bGF0ZSBQSUNUVVJF X1BBUkFNRVRFUl9TRVRfNSByZWdpc3RlcnMgKi8KPj4gPisJcHBzX3ZhbCA9IDA7Cj4+ID4rCXBw c192YWwgfD0gRFNDX1NDQUxFX0lOQ19JTlQodmRzY19jZmctPnNjYWxlX2luY3JlbWVudF9pbnRl cnZhbCkgfAo+PiA+KwkJRFNDX1NDQUxFX0RFQ19JTlQodmRzY19jZmctPnNjYWxlX2RlY3JlbWVu dF9pbnRlcnZhbCk7Cj4+ID4rCURSTV9JTkZPKCJQUFM1ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsK Pj4gPisJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewo+PiA+KwkJSTkx NV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF81LCBwcHNfdmFsKTsKPj4gPisJCS8q Cj4+ID4rCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMg Zm9yIHNlY29uZAo+PiA+KwkJICogVkRTQwo+PiA+KwkJICovCj4+ID4rCQlpZiAoY3J0Y19zdGF0 ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4+ID4rCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVf UEFSQU1FVEVSX1NFVF81LAo+PiA+cHBzX3ZhbCk7Cj4+ID4rCX0gZWxzZSB7Cj4+ID4rCQlJOTE1 X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF81KHBpcGUpLAo+PiA+cHBzX3Zh bCk7Cj4+ID4rCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4+ID4rCj4+ ID4JSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNShwaXBlKSwKPj4g PisJCQkJICAgcHBzX3ZhbCk7Cj4+ID4rCX0KPj4gPisKPj4gPisJLyogUG9wdWxhdGUgUElDVFVS RV9QQVJBTUVURVJfU0VUXzYgcmVnaXN0ZXJzICovCj4+ID4rCXBwc192YWwgPSAwOwo+PiA+Kwlw cHNfdmFsIHw9IERTQ19JTklUSUFMX1NDQUxFX1ZBTFVFKHZkc2NfY2ZnLT5pbml0aWFsX3NjYWxl X3ZhbHVlKSB8Cj4+ID4rCQlEU0NfRklSU1RfTElORV9CUEdfT0ZGU0VUKHZkc2NfY2ZnLT5maXJz dF9saW5lX2JwZ19vZmZzZXQpCj4+ID58Cj4+ID4rCQlEU0NfRkxBVE5FU1NfTUlOX1FQKHZkc2Nf Y2ZnLT5mbGF0bmVzc19taW5fcXApIHwKPj4gPisJCURTQ19GTEFUTkVTU19NQVhfUVAodmRzY19j ZmctPmZsYXRuZXNzX21heF9xcCk7Cj4+ID4rCURSTV9JTkZPKCJQUFM2ID0gMHglMDh4XG4iLCBw cHNfdmFsKTsKPj4gPisJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewo+ PiA+KwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82LCBwcHNfdmFsKTsK Pj4gPisJCS8qCj4+ID4rCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZp Z3VyZSBQUFMgZm9yIHNlY29uZAo+PiA+KwkJICogVkRTQwo+PiA+KwkJICovCj4+ID4rCQlpZiAo Y3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4+ID4rCQkJSTkxNV9XUklURShEU0ND X1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82LAo+PiA+cHBzX3ZhbCk7Cj4+ID4rCX0gZWxzZSB7Cj4+ ID4rCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82KHBpcGUpLAo+ PiA+cHBzX3ZhbCk7Cj4+ID4rCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQp Cj4+ID4rCj4+ID4JSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNihw aXBlKSwKPj4gPisJCQkJICAgcHBzX3ZhbCk7Cj4+ID4rCX0KPj4gPisKPj4gPisJLyogUG9wdWxh dGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzcgcmVnaXN0ZXJzICovCj4+ID4rCXBwc192YWwgPSAw Owo+PiA+KwlwcHNfdmFsIHw9IERTQ19TTElDRV9CUEdfT0ZGU0VUKHZkc2NfY2ZnLT5zbGljZV9i cGdfb2Zmc2V0KSB8Cj4+ID4rCQlEU0NfTkZMX0JQR19PRkZTRVQodmRzY19jZmctPm5mbF9icGdf b2Zmc2V0KTsKPj4gPisJRFJNX0lORk8oIlBQUzcgPSAweCUwOHhcbiIsIHBwc192YWwpOwo+PiA+ KwlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7Cj4+ID4rCQlJOTE1X1dS SVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzcsIHBwc192YWwpOwo+PiA+KwkJLyoKPj4g PisJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Ig c2Vjb25kCj4+ID4rCQkgKiBWRFNDCj4+ID4rCQkgKi8KPj4gPisJCWlmIChjcnRjX3N0YXRlLT5k c2NfcGFyYW1zLmRzY19zcGxpdCkKPj4gPisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJB TUVURVJfU0VUXzcsCj4+ID5wcHNfdmFsKTsKPj4gPisJfSBlbHNlIHsKPj4gPisJCUk5MTVfV1JJ VEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzcocGlwZSksCj4+ID5wcHNfdmFsKTsK Pj4gPisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPj4gPisKPj4gPglJ OTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF83KHBpcGUpLAo+PiA+KwkJ CQkgICBwcHNfdmFsKTsKPj4gPisJfQo+PiA+Kwo+PiA+KwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BB UkFNRVRFUl9TRVRfOCByZWdpc3RlcnMgKi8KPj4gPisJcHBzX3ZhbCA9IDA7Cj4+ID4rCXBwc192 YWwgfD0gRFNDX0ZJTkFMX09GRlNFVCh2ZHNjX2NmZy0+ZmluYWxfb2Zmc2V0KSB8Cj4+ID4rCQlE U0NfSU5JVElBTF9PRkZTRVQodmRzY19jZmctPmluaXRpYWxfb2Zmc2V0KTsKPj4gPisJRFJNX0lO Rk8oIlBQUzggPSAweCUwOHhcbiIsIHBwc192YWwpOwo+PiA+KwlpZiAoZW5jb2Rlci0+dHlwZSA9 PSBJTlRFTF9PVVRQVVRfRURQKSB7Cj4+ID4rCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJB TUVURVJfU0VUXzgsIHBwc192YWwpOwo+PiA+KwkJLyoKPj4gPisJCSAqIElmIDIgVkRTQyBpbnN0 YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCj4+ID4rCQkgKiBWRFND Cj4+ID4rCQkgKi8KPj4gPisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkK Pj4gPisJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzgsCj4+ID5wcHNf dmFsKTsKPj4gPisJfSBlbHNlIHsKPj4gPisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9Q QVJBTUVURVJfU0VUXzgocGlwZSksCj4+ID5wcHNfdmFsKTsKPj4gPisJCWlmIChjcnRjX3N0YXRl LT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPj4gPisKPj4gPglJOTE1X1dSSVRFKElDTF9EU0MxX1BJ Q1RVUkVfUEFSQU1FVEVSX1NFVF84KHBpcGUpLAo+PiA+KwkJCQkgICBwcHNfdmFsKTsKPj4gPisJ fQo+PiA+Kwo+PiA+KwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfOSByZWdpc3Rl cnMgKi8KPj4gPisJcHBzX3ZhbCA9IDA7Cj4+ID4rCXBwc192YWwgfD0gRFNDX1JDX01PREVMX1NJ WkUoRFNDX1JDX01PREVMX1NJWkVfQ09OU1QpIHwKPj4gPisJCURTQ19SQ19FREdFX0ZBQ1RPUihE U0NfUkNfRURHRV9GQUNUT1JfQ09OU1QpOwo+PiA+KwlEUk1fSU5GTygiUFBTOSA9IDB4JTA4eFxu IiwgcHBzX3ZhbCk7Cj4+ID4rCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFAp IHsKPj4gPisJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOSwgcHBzX3Zh bCk7Cj4+ID4rCQkvKgo+PiA+KwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBj b25maWd1cmUgUFBTIGZvciBzZWNvbmQKPj4gPisJCSAqIFZEU0MKPj4gPisJCSAqLwo+PiA+KwkJ aWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQo+PiA+KwkJCUk5MTVfV1JJVEUo RFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOSwKPj4gPnBwc192YWwpOwo+PiA+Kwl9IGVsc2Ug ewo+PiA+KwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOShwaXBl KSwKPj4gPnBwc192YWwpOwo+PiA+KwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3Nw bGl0KQo+PiA+Kwo+PiA+CUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VU XzkocGlwZSksCj4+ID4rCQkJCSAgIHBwc192YWwpOwo+PiA+Kwl9Cj4+ID4rCj4+ID4rCS8qIFBv cHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xMCByZWdpc3RlcnMgKi8KPj4gPisJcHBzX3Zh bCA9IDA7Cj4+ID4rCXBwc192YWwgfD0gRFNDX1JDX1FVQU5UX0lOQ19MSU1JVDAodmRzY19jZmct Cj4+ID4+cmNfcXVhbnRfaW5jcl9saW1pdDApIHwKPj4gPisJCURTQ19SQ19RVUFOVF9JTkNfTElN SVQxKHZkc2NfY2ZnLT5yY19xdWFudF9pbmNyX2xpbWl0MSkgfAo+PiA+KwkJRFNDX1JDX1RBUkdF VF9PRkZfSElHSChEU0NfUkNfVEdUX09GRlNFVF9ISV9DT05TVCkgfAo+PiA+KwkJRFNDX1JDX1RB UkdFVF9PRkZfTE9XKERTQ19SQ19UR1RfT0ZGU0VUX0xPX0NPTlNUKTsKPj4gPisJRFJNX0lORk8o IlBQUzEwID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKPj4gPisJaWYgKGVuY29kZXItPnR5cGUgPT0g SU5URUxfT1VUUFVUX0VEUCkgewo+PiA+KwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1F VEVSX1NFVF8xMCwgcHBzX3ZhbCk7Cj4+ID4rCQkvKgo+PiA+KwkJICogSWYgMiBWRFNDIGluc3Rh bmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKPj4gPisJCSAqIFZEU0MK Pj4gPisJCSAqLwo+PiA+KwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQo+ PiA+KwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMTAsCj4+ID5wcHNf dmFsKTsKPj4gPisJfSBlbHNlIHsKPj4gPisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9Q QVJBTUVURVJfU0VUXzEwKHBpcGUpLAo+PiA+cHBzX3ZhbCk7Cj4+ID4rCQlpZiAoY3J0Y19zdGF0 ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4+ID4rCj4+ID4JSTkxNV9XUklURShJQ0xfRFNDMV9Q SUNUVVJFX1BBUkFNRVRFUl9TRVRfMTAocGlwZSksCj4+ID4rCQkJCSAgIHBwc192YWwpOwo+PiA+ Kwl9Cj4+ID4rCj4+ID4rCS8qIFBvcHVsYXRlIHRoZSBSQ19CVUZfVEhSRVNIIHJlZ2lzdGVycyAq Lwo+PiA+KwltZW1zZXQocmNfYnVmX3RocmVzaF9kd29yZCwgMCwgc2l6ZW9mKHJjX2J1Zl90aHJl c2hfZHdvcmQpKTsKPj4gPisJZm9yIChpID0gMDsgaSA8IERTQ19OVU1fQlVGX1JBTkdFUyAtIDE7 IGkrKykgewo+PiA+KwkJcmNfYnVmX3RocmVzaF9kd29yZFtpLzRdIHw9ICh1MzIpKHZkc2NfY2Zn LT5yY19idWZfdGhyZXNoW2ldIDw8Cj4+ID4rCQkJCQkJICBCSVRTX1BFUl9CWVRFICogKGkgJSA0 KSk7Cj4+ID4rCQlEUk1fSU5GTygiIFJDX0JVRl9USFJFU0glZCA9IDB4JTA4eFxuIiwgaSwKPj4g PisJCQkgcmNfYnVmX3RocmVzaF9kd29yZFtpLzRdKTsKPj4gPisJfQo+PiA+KwlpZiAoZW5jb2Rl ci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7Cj4+ID4rCQlJOTE1X1dSSVRFKERTQ0FfUkNf QlVGX1RIUkVTSF8wLAo+PiA+cmNfYnVmX3RocmVzaF9kd29yZFswXSk7Cj4+ID4rCQlJOTE1X1dS SVRFKERTQ0FfUkNfQlVGX1RIUkVTSF8wX1VEVywKPj4gPnJjX2J1Zl90aHJlc2hfZHdvcmRbMV0p Owo+PiA+KwkJSTkxNV9XUklURShEU0NBX1JDX0JVRl9USFJFU0hfMSwKPj4gPnJjX2J1Zl90aHJl c2hfZHdvcmRbMl0pOwo+PiA+KwkJSTkxNV9XUklURShEU0NBX1JDX0JVRl9USFJFU0hfMV9VRFcs Cj4+ID5yY19idWZfdGhyZXNoX2R3b3JkWzNdKTsKPj4gPisJCWlmIChjcnRjX3N0YXRlLT5kc2Nf cGFyYW1zLmRzY19zcGxpdCkgewo+PiA+KwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19CVUZfVEhSRVNI XzAsCj4+ID4rCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMF0pOwo+PiA+KwkJCUk5MTVfV1JJ VEUoRFNDQ19SQ19CVUZfVEhSRVNIXzBfVURXLAo+PiA+KwkJCQkgICByY19idWZfdGhyZXNoX2R3 b3JkWzFdKTsKPj4gPisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfQlVGX1RIUkVTSF8xLAo+PiA+KwkJ CQkgICByY19idWZfdGhyZXNoX2R3b3JkWzJdKTsKPj4gPisJCQlJOTE1X1dSSVRFKERTQ0NfUkNf QlVGX1RIUkVTSF8xX1VEVywKPj4gPisJCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFszXSk7Cj4+ ID4rCQl9Cj4+ID4rCX0gZWxzZSB7Cj4+ID4rCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX0JVRl9U SFJFU0hfMChwaXBlKSwKPj4gPisJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzBdKTsKPj4gPisJ CUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfQlVGX1RIUkVTSF8wX1VEVyhwaXBlKSwKPj4gPisJCQkg ICByY19idWZfdGhyZXNoX2R3b3JkWzFdKTsKPj4gPisJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNf QlVGX1RIUkVTSF8xKHBpcGUpLAo+PiA+KwkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMl0pOwo+ PiA+KwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19CVUZfVEhSRVNIXzFfVURXKHBpcGUpLAo+PiA+ KwkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbM10pOwo+PiA+KwkJaWYgKGNydGNfc3RhdGUtPmRz Y19wYXJhbXMuZHNjX3NwbGl0KSB7Cj4+ID4rCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19CVUZf VEhSRVNIXzAocGlwZSksCj4+ID4rCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMF0pOwo+PiA+ KwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfQlVGX1RIUkVTSF8wX1VEVyhwaXBlKSwKPj4gPisJ CQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFsxXSk7Cj4+ID4rCQkJSTkxNV9XUklURShJQ0xfRFND MV9SQ19CVUZfVEhSRVNIXzEocGlwZSksCj4+ID4rCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRb Ml0pOwo+PiA+KwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfQlVGX1RIUkVTSF8xX1VEVyhwaXBl KSwKPj4gPisJCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFszXSk7Cj4+ID4rCQl9Cj4+ID4rCX0K Pj4gPisKPj4gPisJLyogUG9wdWxhdGUgdGhlIFJDX1JBTkdFX1BBUkFNRVRFUlMgcmVnaXN0ZXJz ICovCj4+ID4rCW1lbXNldChyY19yYW5nZV9wYXJhbXNfZHdvcmQsIDAsIHNpemVvZihyY19yYW5n ZV9wYXJhbXNfZHdvcmQpKTsKPj4gPisJZm9yIChpID0gMDsgaSA8IERTQ19OVU1fQlVGX1JBTkdF UzsgaSsrKSB7Cj4+ID4rCQlyY19yYW5nZV9wYXJhbXNfZHdvcmRbaS8yXSB8PSAodTMyKSgoKHZk c2NfY2ZnLQo+PiA+PnJjX3JhbmdlX3BhcmFtc1tpXS5yYW5nZV9icGdfb2Zmc2V0IDw8Cj4+ID4r CQkJCQkJICAgICAgUkNfQlBHX09GRlNFVF9TSElGVCkgfAo+PiA+KwkJCQkJCSAgICAgKHZkc2Nf Y2ZnLQo+PiA+PnJjX3JhbmdlX3BhcmFtc1tpXS5yYW5nZV9tYXhfcXAgPDwKPj4gPisJCQkJCQkg ICAgICBSQ19NQVhfUVBfU0hJRlQpIHwKPj4gPisJCQkJCQkgICAgICh2ZHNjX2NmZy0KPj4gPj5y Y19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfbWluX3FwIDw8Cj4+ID4rCQkJCQkJICAgICAgUkNfTUlO X1FQX1NISUZUKSkgPDwgMTYgKgo+PiA+KGkgJSAyKSk7Cj4+ID4rCQlEUk1fSU5GTygiIFJDX1JB TkdFX1BBUkFNXyVkID0gMHglMDh4XG4iLCBpLAo+PiA+KwkJCSByY19yYW5nZV9wYXJhbXNfZHdv cmRbaS8yXSk7Cj4+ID4rCX0KPj4gPisJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVU X0VEUCkgewo+PiA+KwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfMCwKPj4g PisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMF0pOwo+PiA+KwkJSTkxNV9XUklURShEU0NB X1JDX1JBTkdFX1BBUkFNRVRFUlNfMF9VRFcsCj4+ID4rCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3 b3JkWzFdKTsKPj4gPisJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzEsCj4+ ID4rCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzJdKTsKPj4gPisJCUk5MTVfV1JJVEUoRFND QV9SQ19SQU5HRV9QQVJBTUVURVJTXzFfVURXLAo+PiA+KwkJCSAgIHJjX3JhbmdlX3BhcmFtc19k d29yZFszXSk7Cj4+ID4rCQlJOTE1X1dSSVRFKERTQ0FfUkNfUkFOR0VfUEFSQU1FVEVSU18yLAo+ PiA+KwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs0XSk7Cj4+ID4rCQlJOTE1X1dSSVRFKERT Q0FfUkNfUkFOR0VfUEFSQU1FVEVSU18yX1VEVywKPj4gPisJCQkgICByY19yYW5nZV9wYXJhbXNf ZHdvcmRbNV0pOwo+PiA+KwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfMywK Pj4gPisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNl0pOwo+PiA+KwkJSTkxNV9XUklURShE U0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfM19VRFcsCj4+ID4rCQkJICAgcmNfcmFuZ2VfcGFyYW1z X2R3b3JkWzddKTsKPj4gPisJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkg ewo+PiA+KwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzAsCj4+ID4rCQkJ CSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFswXSk7Cj4+ID4rCQkJSTkxNV9XUklURShEU0NDX1JD X1JBTkdFX1BBUkFNRVRFUlNfMF9VRFcsCj4+ID4rCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29y ZFsxXSk7Cj4+ID4rCQkJSTkxNV9XUklURShEU0NDX1JDX1JBTkdFX1BBUkFNRVRFUlNfMSwKPj4g PisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzJdKTsKPj4gPisJCQlJOTE1X1dSSVRFKERT Q0NfUkNfUkFOR0VfUEFSQU1FVEVSU18xX1VEVywKPj4gPisJCQkJICAgcmNfcmFuZ2VfcGFyYW1z X2R3b3JkWzNdKTsKPj4gPisJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18y LAo+PiA+KwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNF0pOwo+PiA+KwkJCUk5MTVfV1JJ VEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzJfVURXLAo+PiA+KwkJCQkgICByY19yYW5nZV9w YXJhbXNfZHdvcmRbNV0pOwo+PiA+KwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVU RVJTXzMsCj4+ID4rCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs2XSk7Cj4+ID4rCQkJSTkx NV9XUklURShEU0NDX1JDX1JBTkdFX1BBUkFNRVRFUlNfM19VRFcsCj4+ID4rCQkJCSAgIHJjX3Jh bmdlX3BhcmFtc19kd29yZFs3XSk7Cj4+ID4rCQl9Cj4+ID4rCX0gZWxzZSB7Cj4+ID4rCQlJOTE1 X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfMChwaXBlKSwKPj4gPisJCQkgICBy Y19yYW5nZV9wYXJhbXNfZHdvcmRbMF0pOwo+PiA+KwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19S QU5HRV9QQVJBTUVURVJTXzBfVURXKHBpcGUpLAo+PiA+KwkJCSAgIHJjX3JhbmdlX3BhcmFtc19k d29yZFsxXSk7Cj4+ID4rCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNf MShwaXBlKSwKPj4gPisJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMl0pOwo+PiA+KwkJSTkx NV9XUklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzFfVURXKHBpcGUpLAo+PiA+KwkJ CSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFszXSk7Cj4+ID4rCQlJOTE1X1dSSVRFKElDTF9EU0Mw X1JDX1JBTkdFX1BBUkFNRVRFUlNfMihwaXBlKSwKPj4gPisJCQkgICByY19yYW5nZV9wYXJhbXNf ZHdvcmRbNF0pOwo+PiA+KwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJT XzJfVURXKHBpcGUpLAo+PiA+KwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs1XSk7Cj4+ID4r CQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfMyhwaXBlKSwKPj4gPisJ CQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNl0pOwo+PiA+KwkJSTkxNV9XUklURShJQ0xfRFND MF9SQ19SQU5HRV9QQVJBTUVURVJTXzNfVURXKHBpcGUpLAo+PiA+KwkJCSAgIHJjX3JhbmdlX3Bh cmFtc19kd29yZFs3XSk7Cj4+ID4rCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3Bs aXQpIHsKPj4gPisKPj4gPglJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNf MChwaXBlKSwKPj4gPisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzBdKTsKPj4gPisKPj4g PglJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfMF9VRFcocGlwZSksCj4+ ID4rCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsxXSk7Cj4+ID4rCj4+ID4JSTkxNV9XUklU RShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzEocGlwZSksCj4+ID4rCQkJCSAgIHJjX3Jh bmdlX3BhcmFtc19kd29yZFsyXSk7Cj4+ID4rCj4+ID4JSTkxNV9XUklURShJQ0xfRFNDMV9SQ19S QU5HRV9QQVJBTUVURVJTXzFfVURXKHBpcGUpLAo+PiA+KwkJCQkgICByY19yYW5nZV9wYXJhbXNf ZHdvcmRbM10pOwo+PiA+Kwo+PiA+CUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1F VEVSU18yKHBpcGUpLAo+PiA+KwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNF0pOwo+PiA+ Kwo+PiA+CUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18yX1VEVyhwaXBl KSwKPj4gPisJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzVdKTsKPj4gPisKPj4gPglJOTE1 X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfMyhwaXBlKSwKPj4gPisJCQkJICAg cmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzZdKTsKPj4gPisKPj4gPglJOTE1X1dSSVRFKElDTF9EU0Mx X1JDX1JBTkdFX1BBUkFNRVRFUlNfM19VRFcocGlwZSksCj4+ID4rCQkJCSAgIHJjX3JhbmdlX3Bh cmFtc19kd29yZFs3XSk7Cj4+ID4rCQl9Cj4+ID4rCX0KPj4KPj4gQW55IHNwZWNpZmljIHJlYXNv biBmb3IgUFBTMTYgdG8gYmUgYWZ0ZXIgUkNfUkFOR0VfUEFSQU1FVEVSUyBhbmQKPlJDX0JVRl9U SFJFU0g/Cj4+Cj4+IEFudXNoYQo+Cj5UaGF0cyBqdXN0IGhvdyBpdHMgb3JkZXJlZCBpbiB0aGUg YnNwZWMuCgpKdXN0IHRoaW5raW5nIG91dCBsb3VkLCBpZiBpbiBmdXR1cmUsIHdlIG5lZWQgdG8g dXNlIHRoZSByZXN0IG9mIHRoZSBQUFMgcmVnaXN0ZXJzLCB0aGVuIHdlIGhhdmUgUFBTMC0xMCwg UkNfUkFOR0VfUEFSQU1FVEVSUyBhbmQgUkNfQlVGX1RIUkVTSCBhbmQgYWdhaW4gUFBTIHJlZ2lz dGVycy4uLi4gCk1pZ2h0IGJlIGdvb2QgdG8gaGF2ZSBhbGwgUFBTIHJlZ2lzdGVycyB0b2dldGhl cj8KCkJ1dCB0aGF0IGlzIGp1c3QgYSB0aG91Z2h0LCBsZWZ0IHRvIHlvdSBpZiB5b3Ugd2FudCB0 byBjaGFuZ2UgdGhlIG9yZGVyLiBQYXRjaCBvdGhlcndpc2UgbG9va3MgZ29vZC4KClJldmlld2Vk LWJ5OiBBbnVzaGEgU3JpdmF0c2EgPGFudXNoYS5zcml2YXRzYUBpbnRlbC5jb20+CgpBbnVzaGEg Cj5NYW5hc2kKPgo+PiA+KwkvKiBQb3B1bGF0ZSBQaWN0dXJlIHBhcmFtZXRlciBzZXQgMTYgKi8K Pj4gPisJcHBzX3ZhbCA9IDA7Cj4+ID4rCXBwc192YWwgfD0gRFNDX1NMSUNFX0NIVU5LX1NJWkUo dmRzY19jZmctPnNsaWNlX2NodW5rX3NpemUpIHwKPj4gPisJCURTQ19TTElDRV9QRVJfTElORSgo dmRzY19jZmctPnBpY193aWR0aCAvCj4+ID5udW1fdmRzY19pbnN0YW5jZXMpIC8KPj4gPisJCQkJ ICAgdmRzY19jZmctPnNsaWNlX3dpZHRoKSB8Cj4+ID4rCQlEU0NfU0xJQ0VfUk9XX1BFUl9GUkFN RSh2ZHNjX2NmZy0+cGljX2hlaWdodCAvCj4+ID4rCQkJCQl2ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0 KTsKPj4gPisJRFJNX0lORk8oIlBQUzE2ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKPj4gPisJaWYg KGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewo+PiA+KwkJSTkxNV9XUklURShE U0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xNiwgcHBzX3ZhbCk7Cj4+ID4rCQkvKgo+PiA+KwkJ ICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNv bmQKPj4gPisJCSAqIFZEU0MKPj4gPisJCSAqLwo+PiA+KwkJaWYgKGNydGNfc3RhdGUtPmRzY19w YXJhbXMuZHNjX3NwbGl0KQo+PiA+KwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRF Ul9TRVRfMTYsCj4+ID5wcHNfdmFsKTsKPj4gPisJfSBlbHNlIHsKPj4gPisJCUk5MTVfV1JJVEUo SUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzE2KHBpcGUpLAo+PiA+cHBzX3ZhbCk7Cj4+ ID4rCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4+ID4rCj4+ID4JSTkx NV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMTYocGlwZSksCj4+ID4rCQkJ CSAgIHBwc192YWwpOwo+PiA+Kwl9Cj4+ID4rfQo+PiA+Kwo+PiA+K3ZvaWQgaW50ZWxfZHNjX2Vu YWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPj4gPisJCSAgICAgIHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKSB7Cj4+ID4rCj4+ID4rCWlmICghY3J0Y19zdGF0 ZS0+ZHNjX3BhcmFtcy5jb21wcmVzc2lvbl9lbmFibGUpCj4+ID4rCQlyZXR1cm47Cj4+ID4rCj4+ ID4rCWludGVsX2NvbmZpZ3VyZV9wcHNfZm9yX2RzY19lbmNvZGVyKGVuY29kZXIsIGNydGNfc3Rh dGUpOwo+PiA+Kwo+PiA+KwlyZXR1cm47Cj4+ID4rfQo+PiA+LS0KPj4gPjIuMTguMAo+PgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK