From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 14/24] drm/i915/dp: Allow big joiner modes in intel_dp_mode_valid(), v2. Date: Tue, 8 Oct 2019 20:50:10 +0300 Message-ID: <20191008175010.GV1208@intel.com> References: <20191004113514.17064-1-maarten.lankhorst@linux.intel.com> <20191004113514.17064-15-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9668F6E889 for ; Tue, 8 Oct 2019 17:50:13 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191004113514.17064-15-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBPY3QgMDQsIDIwMTkgYXQgMDE6MzU6MDRQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gU21hbGwgY2hhbmdlcyB0byBpbnRlbF9kcF9tb2RlX3ZhbGlkKCksIGFsbG93 IGxpc3RpbmcgbW9kZXMgdGhhdAo+IGNhbiBvbmx5IGJlIHN1cHBvcnRlZCBpbiB0aGUgYmlnam9p bmVyIGNvbmZpZ3VyYXRpb24sIHdoaWNoIGlzCj4gbm90IHN1cHBvcnRlZCB5ZXQuCj4gCj4gZURQ IGRvZXMgbm90IHN1cHBvcnQgYmlnam9pbmVyLCBzbyBkbyBub3QgZXhwb3NlIGJpZ2pvaW5lciBv bmx5Cj4gbW9kZXMgb24gdGhlIGVEUCBwb3J0Lgo+IAo+IENoYW5nZXMgc2luY2UgdjE6Cj4gLSBE aXNhbGxvdyBiaWdqb2luZXIgb24gZURQLgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFu a2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYyB8IDkyICsrKysrKysrKysrKysrKysr KystLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDcyIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9u cygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMKPiBpbmRleCA0 Mjk3NzM4NjU1YzYuLjVjNzMyM2FmMDhiMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2RwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2RwLmMKPiBAQCAtMjQ0LDcgKzI0NCw3IEBAIGludGVsX2RwX21heF9kYXRhX3Jh dGUoaW50IG1heF9saW5rX2Nsb2NrLCBpbnQgbWF4X2xhbmVzKQo+ICB9Cj4gIAo+ICBzdGF0aWMg aW50Cj4gLWludGVsX2RwX2Rvd25zdHJlYW1fbWF4X2RvdGNsb2NrKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApCj4gK2ludGVsX2RwX2Rvd25zdHJlYW1fbWF4X2RvdGNsb2NrKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsIGJvb2wgYWxsb3dfYmlnam9pbmVyKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2Rw KTsKPiAgCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gJmludGVsX2RpZ19wb3J0LT5i YXNlOwo+IEBAIC0yNTQsNiArMjU0LDkgQEAgaW50ZWxfZHBfZG93bnN0cmVhbV9tYXhfZG90Y2xv Y2soc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCj4gIAlpbnQgdHlwZSA9IGludGVsX2Rw LT5kb3duc3RyZWFtX3BvcnRzWzBdICYgRFBfRFNfUE9SVF9UWVBFX01BU0s7Cj4gIAo+ICsJaWYg KGFsbG93X2JpZ2pvaW5lciAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQo+ICsJCW1heF9k b3RjbGsgKj0gMjsKPiArCgpUaGlzIGNvZGUgaXMgbm93IHJhdGhlciBjb25mdXNpbmcuIE9LLCB0 aGlzIGZ1bmN0aW9uIGlzIGFscmVhZHkgbWlzbmFtZWQKYmVjYXVzZSBpdCBjaGVja3MgYm90aCB0 aGUgc291cmNlIGFuZCBkb3duc3RyZWFtIGRvdGNsb2NrIGxpbWl0cy4KCkkgc3VzcGVjdCB0aGlz IHNob3VsZCBhbGwgbG9vayBhIGJpdCBtb3JlIGxpa2U6Cgpzb3VyY2VfbWF4X2RvdGNsb2NrKCkK ewoJaWYgKHBvcnRfY2FuX2RvX2JpZ2pvaW5lciAmJiBkc2Nfc3VwcG9ydGVkKQoJCXJldHVybiAy Km1heF9kb3RjbG9jazsKCWVsc2UKCQlyZXR1cm4gbWF4X2RvdGNsb2NrOwp9CgptYXhfZG90Y2xv Y2sgPSBzb3VyY2VfbWF4X2RvdGNsb2NrKCk7CmRzX21heF9kb3RjbG9jayA9IGRzX21heF9kb3Rj bG9jaygpCmlmIChkc19tYXhfZG90Y2xvY2spCgltYXhfZG90Y2xvY2sgPSBtaW4obWF4X2RvdGNs b2NrLCBkc19tYXhfZG90Y2xvY2spOwoKCj4gIAlpZiAodHlwZSAhPSBEUF9EU19QT1JUX1RZUEVf VkdBKQo+ICAJCXJldHVybiBtYXhfZG90Y2xrOwo+ICAKPiBAQCAtNTA2LDcgKzUwOSw4IEBAIHNt YWxsX2pvaW5lcl9yYW1fc2l6ZV9iaXRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ ICAKPiAgc3RhdGljIHUxNiBpbnRlbF9kcF9kc2NfZ2V0X291dHB1dF9icHAoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCj4gIAkJCQkgICAgICAgdTMyIGxpbmtfY2xvY2ssIHUzMiBsYW5l X2NvdW50LAo+IC0JCQkJICAgICAgIHUzMiBtb2RlX2Nsb2NrLCB1MzIgbW9kZV9oZGlzcGxheSkK PiArCQkJCSAgICAgICB1MzIgbW9kZV9jbG9jaywgdTMyIG1vZGVfaGRpc3BsYXksCj4gKwkJCQkg ICAgICAgYm9vbCBiaWdqb2luZXIpCj4gIHsKPiAgCXUzMiBiaXRzX3Blcl9waXhlbCwgbWF4X2Jw cF9zbWFsbF9qb2luZXJfcmFtOwo+ICAJaW50IGk7Cj4gQEAgLTUyNCw2ICs1MjgsMTAgQEAgc3Rh dGljIHUxNiBpbnRlbF9kcF9kc2NfZ2V0X291dHB1dF9icHAoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUsCj4gIAkvKiBTbWFsbCBKb2luZXIgQ2hlY2s6IG91dHB1dCBicHAgPD0gam9pbmVy IFJBTSAoYml0cykgLyBIb3Jpei4gd2lkdGggKi8KPiAgCW1heF9icHBfc21hbGxfam9pbmVyX3Jh bSA9IHNtYWxsX2pvaW5lcl9yYW1fc2l6ZV9iaXRzKGk5MTUpIC8KPiAgCQltb2RlX2hkaXNwbGF5 Owo+ICsKPiArCWlmIChiaWdqb2luZXIpCj4gKwkJbWF4X2JwcF9zbWFsbF9qb2luZXJfcmFtICo9 IDI7Cj4gKwo+ICAJRFJNX0RFQlVHX0tNUygiTWF4IHNtYWxsIGpvaW5lciBicHA6ICV1XG4iLCBt YXhfYnBwX3NtYWxsX2pvaW5lcl9yYW0pOwo+ICAKPiAgCS8qCj4gQEAgLTUzMiw2ICs1NDAsMTUg QEAgc3RhdGljIHUxNiBpbnRlbF9kcF9kc2NfZ2V0X291dHB1dF9icHAoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsCj4gIAkgKi8KPiAgCWJpdHNfcGVyX3BpeGVsID0gbWluKGJpdHNfcGVy X3BpeGVsLCBtYXhfYnBwX3NtYWxsX2pvaW5lcl9yYW0pOwo+ICAKPiArCWlmIChiaWdqb2luZXIp IHsKPiArCQl1MzIgbWF4X2JwcF9iaWdqb2luZXIgPQo+ICsJCQlpOTE1LT5tYXhfY2RjbGtfZnJl cSAqIDQ4IC8KPiArCQkJaW50ZWxfZHBfbW9kZV90b19mZWNfY2xvY2sobW9kZV9jbG9jayk7Cj4g Kwo+ICsJCURSTV9ERUJVR19LTVMoIk1heCBiaWcgam9pbmVyIGJwcDogJXVcbiIsIG1heF9icHBf Ymlnam9pbmVyKTsKPiArCQliaXRzX3Blcl9waXhlbCA9IG1pbihiaXRzX3Blcl9waXhlbCwgbWF4 X2JwcF9iaWdqb2luZXIpOwo+ICsJfQo+ICsKPiAgCS8qIEVycm9yIG91dCBpZiB0aGUgbWF4IGJw cCBpcyBsZXNzIHRoYW4gc21hbGxlc3QgYWxsb3dlZCB2YWxpZCBicHAgKi8KPiAgCWlmIChiaXRz X3Blcl9waXhlbCA8IHZhbGlkX2RzY19icHBbMF0pIHsKPiAgCQlEUk1fREVCVUdfS01TKCJVbnN1 cHBvcnRlZCBCUFAgJXUsIG1pbiAldVxuIiwKPiBAQCAtNTU0LDcgKzU3MSw4IEBAIHN0YXRpYyB1 MTYgaW50ZWxfZHBfZHNjX2dldF9vdXRwdXRfYnBwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAo+ICB9Cj4gIAo+ICBzdGF0aWMgdTggaW50ZWxfZHBfZHNjX2dldF9zbGljZV9jb3VudChz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+IC0JCQkJICAgICAgIGludCBtb2RlX2Nsb2NrLCBp bnQgbW9kZV9oZGlzcGxheSkKPiArCQkJCSAgICAgICBpbnQgbW9kZV9jbG9jaywgaW50IG1vZGVf aGRpc3BsYXksCj4gKwkJCQkgICAgICAgYm9vbCBiaWdqb2luZXIpCj4gIHsKPiAgCXU4IG1pbl9z bGljZV9jb3VudCwgaTsKPiAgCWludCBtYXhfc2xpY2Vfd2lkdGg7Cj4gQEAgLTU3OSwxMiArNTk3 LDIwIEBAIHN0YXRpYyB1OCBpbnRlbF9kcF9kc2NfZ2V0X3NsaWNlX2NvdW50KHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsCj4gIAo+ICAJLyogRmluZCB0aGUgY2xvc2VzdCBtYXRjaCB0byB0aGUg dmFsaWQgc2xpY2UgY291bnQgdmFsdWVzICovCj4gIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0la RSh2YWxpZF9kc2Nfc2xpY2Vjb3VudCk7IGkrKykgewo+IC0JCWlmICh2YWxpZF9kc2Nfc2xpY2Vj b3VudFtpXSA+Cj4gLQkJICAgIGRybV9kcF9kc2Nfc2lua19tYXhfc2xpY2VfY291bnQoaW50ZWxf ZHAtPmRzY19kcGNkLAo+IC0JCQkJCQkgICAgZmFsc2UpKQo+ICsJCXU4IHRlc3Rfc2xpY2VfY291 bnQgPSBiaWdqb2luZXIgPwo+ICsJCQkyICogdmFsaWRfZHNjX3NsaWNlY291bnRbaV0gOgo+ICsJ CQl2YWxpZF9kc2Nfc2xpY2Vjb3VudFtpXTsKPiArCj4gKwkJaWYgKHRlc3Rfc2xpY2VfY291bnQg Pgo+ICsJCSAgICBkcm1fZHBfZHNjX3NpbmtfbWF4X3NsaWNlX2NvdW50KGludGVsX2RwLT5kc2Nf ZHBjZCwgZmFsc2UpKQo+ICAJCQlicmVhazsKPiAtCQlpZiAobWluX3NsaWNlX2NvdW50ICA8PSB2 YWxpZF9kc2Nfc2xpY2Vjb3VudFtpXSkKPiAtCQkJcmV0dXJuIHZhbGlkX2RzY19zbGljZWNvdW50 W2ldOwo+ICsKPiArCQkvKiBiaWcgam9pbmVyIG5lZWRzIHNtYWxsIGpvaW5lciB0byBiZSBlbmFi bGVkICovCj4gKwkJaWYgKGJpZ2pvaW5lciAmJiB0ZXN0X3NsaWNlX2NvdW50IDwgNCkKPiArCQkJ Y29udGludWU7Cj4gKwo+ICsJCWlmIChtaW5fc2xpY2VfY291bnQgPD0gdGVzdF9zbGljZV9jb3Vu dCkKPiArCQkJcmV0dXJuIHRlc3Rfc2xpY2VfY291bnQ7Cj4gIAl9Cj4gIAo+ICAJRFJNX0RFQlVH X0tNUygiVW5zdXBwb3J0ZWQgU2xpY2UgQ291bnQgJWRcbiIsIG1pbl9zbGljZV9jb3VudCk7Cj4g QEAgLTYwNCwxMSArNjMwLDE1IEBAIGludGVsX2RwX21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvciwKPiAgCWludCBtYXhfZG90Y2xrOwo+ICAJdTE2IGRzY19tYXhfb3V0 cHV0X2JwcCA9IDA7Cj4gIAl1OCBkc2Nfc2xpY2VfY291bnQgPSAwOwo+ICsJYm9vbCBkc2MgPSBm YWxzZSwgYmlnam9pbmVyID0gZmFsc2U7Cj4gIAo+ICAJaWYgKG1vZGUtPmZsYWdzICYgRFJNX01P REVfRkxBR19EQkxTQ0FOKQo+ICAJCXJldHVybiBNT0RFX05PX0RCTEVTQ0FOOwo+ICAKPiAtCW1h eF9kb3RjbGsgPSBpbnRlbF9kcF9kb3duc3RyZWFtX21heF9kb3RjbG9jayhpbnRlbF9kcCk7Cj4g KwlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0RCTENMSykKPiArCQlyZXR1cm4gTU9E RV9IX0lMTEVHQUw7Cj4gKwo+ICsJbWF4X2RvdGNsayA9IGludGVsX2RwX2Rvd25zdHJlYW1fbWF4 X2RvdGNsb2NrKGludGVsX2RwLCBmYWxzZSk7Cj4gIAo+ICAJaWYgKGludGVsX2RwX2lzX2VkcChp bnRlbF9kcCkgJiYgZml4ZWRfbW9kZSkgewo+ICAJCWlmIChtb2RlLT5oZGlzcGxheSA+IGZpeGVk X21vZGUtPmhkaXNwbGF5KQo+IEBAIC02MjAsNiArNjUwLDIxIEBAIGludGVsX2RwX21vZGVfdmFs aWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCQl0YXJnZXRfY2xvY2sgPSBm aXhlZF9tb2RlLT5jbG9jazsKPiAgCX0KPiAgCj4gKwlpZiAobW9kZS0+Y2xvY2sgPCAxMDAwMCkK PiArCQlyZXR1cm4gTU9ERV9DTE9DS19MT1c7Cj4gKwo+ICsJaWYgKHRhcmdldF9jbG9jayA+IG1h eF9kb3RjbGspIHsKPiArCQlpZiAoaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkKPiArCQkJcmV0 dXJuIE1PREVfQ0xPQ0tfSElHSDsKPiArCj4gKwkJbWF4X2RvdGNsayA9IGludGVsX2RwX2Rvd25z dHJlYW1fbWF4X2RvdGNsb2NrKGludGVsX2RwLCB0cnVlKTsKPiArCj4gKwkJaWYgKHRhcmdldF9j bG9jayA+IG1heF9kb3RjbGspCj4gKwkJCXJldHVybiBNT0RFX0NMT0NLX0hJR0g7Cj4gKwo+ICsJ CWJpZ2pvaW5lciA9IHRydWU7Cj4gKwl9Cj4gKwo+ICAJbWF4X2xpbmtfY2xvY2sgPSBpbnRlbF9k cF9tYXhfbGlua19yYXRlKGludGVsX2RwKTsKPiAgCW1heF9sYW5lcyA9IGludGVsX2RwX21heF9s YW5lX2NvdW50KGludGVsX2RwKTsKPiAgCj4gQEAgLTY0NCwyMyArNjg5LDI4IEBAIGludGVsX2Rw X21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCQkJCQkJCSAg ICBtYXhfbGlua19jbG9jaywKPiAgCQkJCQkJCSAgICBtYXhfbGFuZXMsCj4gIAkJCQkJCQkgICAg dGFyZ2V0X2Nsb2NrLAo+IC0JCQkJCQkJICAgIG1vZGUtPmhkaXNwbGF5KSA+PiA0Owo+ICsJCQkJ CQkJICAgIG1vZGUtPmhkaXNwbGF5LAo+ICsJCQkJCQkJICAgIGJpZ2pvaW5lcikgPj4gNDsKPiAg CQkJZHNjX3NsaWNlX2NvdW50ID0KPiAgCQkJCWludGVsX2RwX2RzY19nZXRfc2xpY2VfY291bnQo aW50ZWxfZHAsCj4gIAkJCQkJCQkgICAgIHRhcmdldF9jbG9jaywKPiAtCQkJCQkJCSAgICAgbW9k ZS0+aGRpc3BsYXkpOwo+ICsJCQkJCQkJICAgICBtb2RlLT5oZGlzcGxheSwKPiArCQkJCQkJCSAg ICAgYmlnam9pbmVyKTsKPiAgCQl9Cj4gKwo+ICsJCWRzYyA9IGRzY19tYXhfb3V0cHV0X2JwcCAm JiBkc2Nfc2xpY2VfY291bnQ7Cj4gIAl9Cj4gIAo+IC0JaWYgKChtb2RlX3JhdGUgPiBtYXhfcmF0 ZSAmJiAhKGRzY19tYXhfb3V0cHV0X2JwcCAmJiBkc2Nfc2xpY2VfY291bnQpKSB8fAo+IC0JICAg IHRhcmdldF9jbG9jayA+IG1heF9kb3RjbGspCj4gKwkvKiBiaWcgam9pbmVyIGNvbmZpZ3VyYXRp b24gbmVlZHMgRFNDICovCj4gKwlpZiAoYmlnam9pbmVyICYmICFkc2MpIHsKPiArCQlEUk1fREVC VUdfS01TKCJMaW5rIGNsb2NrIG5lZWRzIGJpZ2pvaW5lciwgYnV0IERTQyBvciBGRUMgbm90IGF2 YWlsYWJsZVxuIik7Cj4gIAkJcmV0dXJuIE1PREVfQ0xPQ0tfSElHSDsKPiArCX0KPiAgCj4gLQlp ZiAobW9kZS0+Y2xvY2sgPCAxMDAwMCkKPiAtCQlyZXR1cm4gTU9ERV9DTE9DS19MT1c7Cj4gLQo+ IC0JaWYgKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19EQkxDTEspCj4gLQkJcmV0dXJuIE1P REVfSF9JTExFR0FMOwo+ICsJaWYgKG1vZGVfcmF0ZSA+IG1heF9yYXRlICYmICFkc2MpIHsKPiAr CQlEUk1fREVCVUdfS01TKCJDYW5ub3QgZHJpdmUgd2l0aG91dCBEU0NcbiIpOwo+ICsJCXJldHVy biBNT0RFX0NMT0NLX0hJR0g7Cj4gKwl9Cj4gIAo+ICAJcmV0dXJuIGludGVsX21vZGVfdmFsaWRf bWF4X3BsYW5lX3NpemUoZGV2X3ByaXYsIG1vZGUpOwo+ICB9Cj4gQEAgLTIwNzIsMTEgKzIxMjIs MTMgQEAgc3RhdGljIGludCBpbnRlbF9kcF9kc2NfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCwKPiAgCQkJCQkJICAgIHBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrLAo+ICAJ CQkJCQkgICAgcGlwZV9jb25maWctPmxhbmVfY291bnQsCj4gIAkJCQkJCSAgICBhZGp1c3RlZF9t b2RlLT5jcnRjX2Nsb2NrLAo+IC0JCQkJCQkgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxh eSk7Cj4gKwkJCQkJCSAgICBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5LAo+ICsJCQkJCQkg ICAgZmFsc2UpOwo+ICAJCWRzY19kcF9zbGljZV9jb3VudCA9Cj4gIAkJCWludGVsX2RwX2RzY19n ZXRfc2xpY2VfY291bnQoaW50ZWxfZHAsCj4gIAkJCQkJCSAgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0 Y19jbG9jaywKPiAtCQkJCQkJICAgICBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5KTsKPiAr CQkJCQkJICAgICBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5LAo+ICsJCQkJCQkgICAgIGZh bHNlKTsKPiAgCQlpZiAoIWRzY19tYXhfb3V0cHV0X2JwcCB8fCAhZHNjX2RwX3NsaWNlX2NvdW50 KSB7Cj4gIAkJCURSTV9ERUJVR19LTVMoIkNvbXByZXNzZWQgQlBQL1NsaWNlIENvdW50IG5vdCBz dXBwb3J0ZWRcbiIpOwo+ICAJCQlyZXR1cm4gLUVJTlZBTDsKPiAtLSAKPiAyLjIzLjAKPiAKPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdm eCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApW aWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4