From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 1/4] drm/i915/icl: Assign Master slave crtc links for Transcoder Port Sync Date: Wed, 12 Jun 2019 22:30:55 +0300 Message-ID: <20190612193055.GR5942@intel.com> References: <20190423154901.15222-1-manasi.d.navare@intel.com> <20190423154901.15222-2-manasi.d.navare@intel.com> <22e58e8c-53be-3fa6-46b8-8ed6c5a446da@linux.intel.com> <20190612190426.GQ5942@intel.com> <20190612191101.GB5765@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 CF07788BF3 for ; Wed, 12 Jun 2019 19:30:59 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190612191101.GB5765@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: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKdW4gMTIsIDIwMTkgYXQgMTI6MTE6MDJQTSAtMDcwMCwgTWFuYXNpIE5hdmFyZSB3 cm90ZToKPiBPbiBXZWQsIEp1biAxMiwgMjAxOSBhdCAxMDowNDoyNlBNICswMzAwLCBWaWxsZSBT eXJqw6Rsw6Qgd3JvdGU6Cj4gPiBPbiBXZWQsIEp1biAxMiwgMjAxOSBhdCAxMTozOTowM0FNICsw MjAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90ZToKPiA+ID4gT3AgMjMtMDQtMjAxOSBvbSAxNzo0 OCBzY2hyZWVmIE1hbmFzaSBOYXZhcmU6Cj4gPiA+ID4gSW4gY2FzZSBvZiB0aWxlZCBkaXNwbGF5 cyB3aGVuIHRoZSB0d28gdGlsZXMgYXJlIHNlbnQgYWNyb3NzIHR3byBDUlRDcwo+ID4gPiA+IG92 ZXIgdHdvIHNlcGFyYXRlIERQIFNTVCBjb25uZWN0b3JzLCB3ZSBuZWVkIGEgbWVjaGFuaXNtIHRv IHN5bmNocm9uaXplCj4gPiA+ID4gdGhlIHR3byBDUlRDcyBhbmQgdGhlaXIgY29ycmVzcG9uZGlu ZyB0cmFuc2NvZGVycy4KPiA+ID4gPiBTbyB1c2UgdGhlIG1hc3Rlci1zbGF2ZSBtb2RlIHdoZXJl IHRoZXJlIGlzIG9uZSBtYXN0ZXIgY29ycmVzcG9uZGluZwo+ID4gPiA+IHRvIGxhc3QgaG9yaXpv bnRhbCBhbmQgdmVydGljYWwgdGlsZSB0aGF0IG5lZWRzIHRvIGJlIGdlbmxvY2tlZCB3aXRoCj4g PiA+ID4gYWxsIG90aGVyIHNsYXZlIHRpbGVzLgo+ID4gPiA+IFRoaXMgcGF0Y2ggaWRlbnRpZmll cyBzYXZlcyB0aGUgbWFzdGVyIENSVEMgcG9pbnRlciBpbiBhbGwgdGhlIHNsYXZlCj4gPiA+ID4g Q1JUQyBzdGF0ZXMuIFRoaXMgcG9pbnRlciBpcyBuZWVkZWQgdG8gc2VsZWN0IHRoZSBtYXN0ZXIg Q1JUQy90cmFuc2NvZGVyCj4gPiA+ID4gd2hpbGUgY29uZmlndXJpbmcgdHJhbnNjb2RlciBwb3J0 IHN5bmMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHNsYXZlcy4KPiA+ID4gPgo+ID4gPiA+IHYyOgo+ ID4gPiA+ICogTW92ZSB0aGlzIHRvIGludGVsX21vZGVfc2V0X3BpcGVfY29uZmlnKEphbmkgTiwg VmlsbGUpCj4gPiA+ID4gKiBVc2Ugc2xhdmVfYml0bWFzayB0byBzYXZlIGFzc29jaWF0ZWQgc2xh dmVzIGluIG1hc3RlciBjcnRjIHN0YXRlIChWaWxsZSkKPiA+ID4gPgo+ID4gPiA+IENjOiBEYW5p ZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+ID4gPiA+IENjOiBWaWxsZSBTeXJq w6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4gPiA+IENjOiBNYWFydGVu IExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+ID4gPiA+IENj OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgo+ID4gPiA+IFNpZ25lZC1v ZmYtYnk6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4gPiA+ID4g LS0tCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDg5ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmggICAgIHwgIDYgKysKPiA+ID4gPiAgMiBmaWxlcyBjaGFuZ2VkLCA5NSBpbnNl cnRpb25zKCspCj4gPiA+ID4KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j Cj4gPiA+ID4gaW5kZXggYjI3NjM0NTc3OWU2Li45MmRlYTIyMzE0OTkgMTAwNjQ0Cj4gPiA+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+ID4gQEAgLTExMzE2LDYg KzExMzE2LDg2IEBAIHN0YXRpYyBpbnQgaWNsX2NoZWNrX252MTJfcGxhbmVzKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4gPiA+ICAJcmV0dXJuIDA7Cj4gPiA+ID4gIH0K PiA+ID4gPiAgCj4gPiA+ID4gK3N0YXRpYyBpbnQgaWNsX2FkZF9nZW5sb2NrX2NydGNzKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKPiA+ID4gPiArCQkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKPiA+ID4gPiArCQkJCSBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUp Cj4gPiA+ID4gK3sKPiA+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwo+ID4gPiA+ICsJc3RydWN0IGRy bV9jb25uZWN0b3IgKm1hc3Rlcl9jb25uZWN0b3IsICpjb25uZWN0b3I7Cj4gPiA+ID4gKwlzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubmVjdG9yX3N0YXRlOwo+ID4gPiA+ICsJc3RydWN0 IGRybV9jb25uZWN0b3JfbGlzdF9pdGVyIGNvbm5faXRlcjsKPiA+ID4gPiArCXN0cnVjdCBkcm1f Y3J0YyAqbWFzdGVyX2NydGMgPSBOVUxMOwo+ID4gPiA+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRl ICptYXN0ZXJfY3J0Y19zdGF0ZTsKPiA+ID4gPiArCWludCBpLCB0aWxlX2dyb3VwX2lkOwo+ID4g PiA+ICsKPiA+ID4gPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEpCj4gPiA+ID4gKwkJ cmV0dXJuIDA7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJLyoKPiA+ID4gPiArCSAqIEluIGNhc2Ugb2Yg dGlsZWQgZGlzcGxheXMgdGhlcmUgY291bGQgYmUgb25lIG9yIG1vcmUgc2xhdmVzIGJ1dCB0aGVy ZSBpcwo+ID4gPiA+ICsJICogb25seSBvbmUgbWFzdGVyLiBMZXRzIG1ha2UgdGhlIENSVEMgdXNl ZCBieSB0aGUgY29ubmVjdG9yIGNvcnJlc3BvbmRpbmcKPiA+ID4gPiArCSAqIHRvIHRoZSBsYXN0 IGhvcml6b25hbCBhbmQgbGFzdCB2ZXJ0aWNhbCB0aWxlIGEgbWFzdGVyL2dlbmxvY2sgQ1JUQy4K PiA+ID4gPiArCSAqIEFsbCB0aGUgb3RoZXIgQ1JUQ3MgY29ycmVzcG9uZGluZyB0byBvdGhlciB0 aWxlcyBvZiB0aGUgc2FtZSBUaWxlIGdyb3VwCj4gPiA+ID4gKwkgKiBhcmUgdGhlIHNsYXZlIENS VENzIGFuZCBob2xkIGEgcG9pbnRlciB0byB0aGVpciBnZW5sb2NrIENSVEMuCj4gPiA+ID4gKwkg Ki8KPiA+ID4gPiArCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5l Y3RvciwgY29ubmVjdG9yX3N0YXRlLCBpKSB7Cj4gPiA+ID4gKwkJaWYgKGNvbm5lY3Rvcl9zdGF0 ZS0+Y3J0YyAhPSBjcnRjKQo+ID4gPiA+ICsJCQljb250aW51ZTsKPiA+ID4gPiArCQlpZiAoIWNv bm5lY3Rvci0+aGFzX3RpbGUpCj4gPiA+ID4gKwkJCWNvbnRpbnVlOwo+ID4gPiA+ICsJCWlmIChj b25uZWN0b3ItPnRpbGVfaF9sb2MgPT0gY29ubmVjdG9yLT5udW1faF90aWxlIC0gMSAmJgo+ID4g PiA+ICsJCSAgICBjb25uZWN0b3ItPnRpbGVfdl9sb2MgPT0gY29ubmVjdG9yLT5udW1fdl90aWxl IC0gMSkKPiA+ID4gPiArCQkJY29udGludWU7Cj4gPiA+ID4gKwkJY3J0Y19zdGF0ZS0+bWFzdGVy X2NydGMgPSBOVUxMOwo+ID4gPiA+ICsJCXRpbGVfZ3JvdXBfaWQgPSBjb25uZWN0b3ItPnRpbGVf Z3JvdXAtPmlkOwo+ID4gPiA+ICsJCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2JlZ2luKCZkZXZf cHJpdi0+ZHJtLCAmY29ubl9pdGVyKTsKPiA+ID4gPiArCQlkcm1fZm9yX2VhY2hfY29ubmVjdG9y X2l0ZXIobWFzdGVyX2Nvbm5lY3RvciwgJmNvbm5faXRlcikgewo+ID4gPiA+ICsJCQlzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbWFzdGVyX2Nvbm5fc3RhdGUgPSBOVUxMOwo+ID4gPiA+ICsK PiA+ID4gPiArCQkJaWYgKCFtYXN0ZXJfY29ubmVjdG9yLT5oYXNfdGlsZSkKPiA+ID4gPiArCQkJ CWNvbnRpbnVlOwo+ID4gPiA+ICsJCQlpZiAobWFzdGVyX2Nvbm5lY3Rvci0+dGlsZV9oX2xvYyAh PSBtYXN0ZXJfY29ubmVjdG9yLT5udW1faF90aWxlIC0gMSB8fAo+ID4gPiA+ICsJCQkgICAgbWFz dGVyX2Nvbm5lY3Rvci0+dGlsZV92X2xvYyAhPSBtYXN0ZXJfY29ubmVjdG9yLT5udW1fdl90aWxl IC0gMSkKPiA+ID4gPiArCQkJCWNvbnRpbnVlOwo+ID4gPiA+ICsJCQlpZiAobWFzdGVyX2Nvbm5l Y3Rvci0+dGlsZV9ncm91cC0+aWQgIT0gdGlsZV9ncm91cF9pZCkKPiA+ID4gPiArCQkJCWNvbnRp bnVlOwo+ID4gPiA+ICsKPiA+ID4gPiArCQkJbWFzdGVyX2Nvbm5fc3RhdGUgPSBkcm1fYXRvbWlj X2dldF9jb25uZWN0b3Jfc3RhdGUoc3RhdGUsCj4gPiA+ID4gKwkJCQkJCQkJCSAgIG1hc3Rlcl9j b25uZWN0b3IpOwo+ID4gPiA+ICsJCQlpZiAoSVNfRVJSKG1hc3Rlcl9jb25uX3N0YXRlKSkgewo+ ID4gPiA+ICsJCQkJZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJfZW5kKCZjb25uX2l0ZXIpOwo+ID4g PiA+ICsJCQkJcmV0dXJuIFBUUl9FUlIobWFzdGVyX2Nvbm5fc3RhdGUpOwo+ID4gPiA+ICsJCQl9 Cj4gPiA+ID4gKwkJCWlmIChtYXN0ZXJfY29ubl9zdGF0ZS0+Y3J0Yykgewo+ID4gPiA+ICsJCQkJ bWFzdGVyX2NydGMgPSBtYXN0ZXJfY29ubl9zdGF0ZS0+Y3J0YzsKPiA+ID4gPiArCQkJCWJyZWFr Owo+ID4gPiA+ICsJCQl9Cj4gPiA+ID4gKwkJfQo+ID4gPiA+ICsJCWRybV9jb25uZWN0b3JfbGlz dF9pdGVyX2VuZCgmY29ubl9pdGVyKTsKPiA+ID4gPiArCj4gPiA+ID4gKwkJaWYgKCFtYXN0ZXJf Y3J0Yykgewo+ID4gPiA+ICsJCQlEUk1fREVCVUdfS01TKCJDb3VsZCBub3QgYWRkIE1hc3RlciBD UlRDIGZvciBTbGF2ZSBDUlRDICVkXG4iLAo+ID4gPiA+ICsJCQkJICAgICAgY29ubmVjdG9yX3N0 YXRlLT5jcnRjLT5iYXNlLmlkKTsKPiA+ID4gPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4g KwkJfQo+ID4gPiA+ICsKPiA+ID4gPiArCQltYXN0ZXJfY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNf Z2V0X2NydGNfc3RhdGUoc3RhdGUsCj4gPiA+ID4gKwkJCQkJCQkgICAgICBtYXN0ZXJfY3J0Yyk7 Cj4gPiA+ID4gKwkJaWYgKElTX0VSUihtYXN0ZXJfY3J0Y19zdGF0ZSkpCj4gPiA+ID4gKwkJCXJl dHVybiBQVFJfRVJSKG1hc3Rlcl9jcnRjX3N0YXRlKTsKPiA+ID4gPiArCj4gPiA+ID4gKwkJY3J0 Y19zdGF0ZS0+bWFzdGVyX2NydGMgPSB0b19pbnRlbF9jcnRjKG1hc3Rlcl9jcnRjKTsKPiA+ID4g PiArCQl0b19pbnRlbF9jcnRjX3N0YXRlKG1hc3Rlcl9jcnRjX3N0YXRlKS0+dHJhbnNfcG9ydF9z eW5jX3NsYXZlcyB8PQo+ID4gPiA+ICsJCQlCSVQodG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZSk7 Cj4gPiA+ID4gKwkJRFJNX0RFQlVHX0tNUygiTWFzdGVyIENSVEMgPSAlZCBhZGRlZCBmb3IgU2xh dmUgQ1JUQyA9ICVkXG4sIHNsYXZlIGJpdG1hc3QgPSAlZCIsCj4gPiA+ID4gKwkJCSAgICAgIG1h c3Rlcl9jcnRjLT5iYXNlLmlkLAo+ID4gPiA+ICsJCQkgICAgICBjcnRjX3N0YXRlLT5iYXNlLmNy dGMtPmJhc2UuaWQsCj4gPiA+ID4gKwkJCSAgICAgIHRvX2ludGVsX2NydGNfc3RhdGUobWFzdGVy X2NydGNfc3RhdGUpLT50cmFuc19wb3J0X3N5bmNfc2xhdmVzKTsKPiA+ID4gPiArCX0KPiA+ID4g PiArCj4gPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiAgc3Rh dGljIGludCBpbnRlbF9jcnRjX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4g PiA+ID4gIAkJCQkgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gPiA+ID4g IHsKPiA+ID4gPiBAQCAtMTE3OTUsNiArMTE4NzUsOSBAQCBjbGVhcl9pbnRlbF9jcnRjX3N0YXRl KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4gPiA+ICAJaWYgKElTX0c0 WChkZXZfcHJpdikgfHwKPiA+ID4gPiAgCSAgICBJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJ U19DSEVSUllWSUVXKGRldl9wcml2KSkKPiA+ID4gPiAgCQlzYXZlZF9zdGF0ZS0+d20gPSBjcnRj X3N0YXRlLT53bTsKPiA+ID4gPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQo+ID4g PiA+ICsJCXNhdmVkX3N0YXRlLT50cmFuc19wb3J0X3N5bmNfc2xhdmVzID0KPiA+ID4gPiArCQkJ Y3J0Y19zdGF0ZS0+dHJhbnNfcG9ydF9zeW5jX3NsYXZlczsKPiA+ID4gPiAgCj4gPiA+ID4gIAkv KiBLZWVwIGJhc2UgZHJtX2NydGNfc3RhdGUgaW50YWN0LCBvbmx5IGNsZWFyIG91ciBleHRlbmRl ZCBzdHJ1Y3QgKi8KPiA+ID4gPiAgCUJVSUxEX0JVR19PTihvZmZzZXRvZihzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSwgYmFzZSkpOwo+ID4gPiA+IEBAIC0xMTg4OCw2ICsxMTk3MSwxMiBAQCBpbnRl bF9tb2Rlc2V0X3BpcGVfY29uZmlnKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ID4gPiAgCWRy bV9tb2RlX3NldF9jcnRjaW5mbygmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZSwKPiA+ ID4gPiAgCQkJICAgICAgQ1JUQ19TVEVSRU9fRE9VQkxFKTsKPiA+ID4gPiAgCj4gPiA+ID4gKwly ZXQgPSBpY2xfYWRkX2dlbmxvY2tfY3J0Y3MoY3J0YywgcGlwZV9jb25maWcsIHN0YXRlKTsKPiA+ ID4gPiArCWlmIChyZXQpIHsKPiA+ID4gPiArCQlEUk1fREVCVUdfS01TKCJcbjhLIERlYnVnOiBD YW5ub3QgYXNzaWduIGdlbmxvY2sgY3J0Y3MiKTsKPiA+ID4gPiArCQlyZXR1cm4gcmV0Owo+ID4g PiA+ICsJfQo+ID4gPiA+ICsKPiA+ID4gPiAgCS8qIFBhc3Mgb3VyIG1vZGUgdG8gdGhlIGNvbm5l Y3RvcnMgYW5kIHRoZSBDUlRDIHRvIGdpdmUgdGhlbSBhIGNoYW5jZSB0bwo+ID4gPiA+ICAJICog YWRqdXN0IGl0IGFjY29yZGluZyB0byBsaW1pdGF0aW9ucyBvciBjb25uZWN0b3IgcHJvcGVydGll cywgYW5kIGFsc28KPiA+ID4gPiAgCSAqIGEgY2hhbmNlIHRvIHJlamVjdCB0aGUgbW9kZSBlbnRp cmVseS4KPiA+ID4gCj4gPiA+IEkgdGhnaW5rIHdlIHNob3VsZCBleHRlbmQgb24gdGhpcyB0byBt YWtlIG1hc3Rlci9zbGF2ZSBtb2RlIHdvcmsgYnkgZG9pbmcgd2hhdCBtYXR0IHJvcGVyIHdhcyB3 b3JraW5nIG9uLCBpbiBjb2xsYWJvcmF0aW9uIHdpdGggVmlsbGU/Cj4gPiA+IAo+ID4gPiBjcnRj LT5zdGF0ZSBwb2ludHMgdG8gZHJtX2NydGNfc3RhdGUsIHdoaWNoIGlzIHRoZSB1YXBpIHN0YXRl LCBidXQgYWxzbyBjb250YWlucyBhIHNoYWRvdyBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSwgd2hp Y2ggaXMgdGhlIGFjdHVhbCBodyBzdGF0ZS4gSXQgaGFzIGl0cyBvd24gZHJtX2NydGNfc3RhdGUg b2JqZWN0IGZvciB0aGUgcmVhbCBzdGF0ZSwgd2hpY2ggZ2V0cyBjb3BpZWQgYWZ0ZXIgY2hlY2su Cj4gPiA+IAo+ID4gPiBUaGlzIHNob3VsZCB0aGVuIGFsc28gYmUgZG9uZSBmb3IgaW50ZWxfcGxh bmVfc3RhdGUsIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gY29ycmVjdGx5IGhhbmRsZSB0aGlzIG1v ZGUuCj4gPiAKPiA+IEkgZG9uJ3QgdGhpbmsgdGhlcmUncyBhbnkgbGlua2FnZSBiZXR3ZWVuIHRo aXMgYW5kIHRoZSAyLXBpcGUtMS1wb3J0Cj4gPiBjYXNlcyBvdGhlciB0aGFuIHdlIG1pZ2h0IHdh bnQgdG8gaGFuZGxlIHRpbGVkIGRpc3BsYXlzIHRoYXQgd2F5IG9uZQo+ID4gZGF5IHRvIG1ha2Ug bGlmZSBlYXNpZXIgZm9yIHVzZXJzcGFjZS4gQnV0IHRoYXQgaGFzIG90aGVyIGlzc3VlcyBzdWNo Cj4gPiBhcyB3ZSdkIGhhdmUgdG8gZ2VuZXJhdGUgYSBuZXcgRURJRCBmb3IgdGhlIHdob2xlIGRp c3BsYXkgZnJvbSB0aGUgRURJRHMKPiA+IG9mIHRoZSB0aWxlcy4KPiA+IAo+ID4gQWxzbyB3ZSBt YXliZSB3YW50IHBvcnQgc3luYyBmb3IgMTAwJSBpbmRlcGVuZGVudCBkaXNwbGF5cyB0b28uIFNv IElNTwo+ID4gbm8gcG9pbnQgaW4gdHJ5aW5nIHRvIHNob2Vob3JuIGJvdGggdGhpbmdzIGludG8g dGhlIHNhbWUgYnVja2V0Lgo+IAo+IEkgYWdyZWUsIGFsc28gdGhlIHRpbGVkIGRpc3BsYXkgY2Fz ZSBpcyBzaW1wbGUgaW4gdGVybXMgb2YgdGhlIHN0YXRlcyBzaW5jZSBpdHMgMiBjb25uZWN0b3Jz IGFuZCAyIGNydGNzIGV4cG9zZWQgdG8gdGhlIHVzZXJzcGFjZQo+IHNvIHRoZSB1c2Vyc3BhY2Ug d2lsbCBjcmVhdGUgdHdvIHN0YXRlcyBhbmQgdGhleSBhcmUgdXNlZCBhcyBpcyBmb3IgdGhlIHR3 byBjcnRjcywgdGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0aGF0IHdlIG5lZWQgdG8gcHJvZ3JhbQo+ IG9uZSBhcyBhIHNsYXZlIGFuZCB0aGUgb3RoZXIgYXMgbWFzdGVyIGFuZCBmaW5kIGEgd2F5IHRv IHN0b3JlIGEgcG9pbnRlciB0byBtYXN0ZXIgZnJvbSB0aGUgc2xhdmUgc2luY2Ugd2UgbmVlZCB0 byB1c2UgdGhhdAo+IHRvIGNvbmZpZ3VyZSBhbmQgZW5hYmxlIHRyYW5zY29kZXIgcG9ydCBzeW5j IHdoaWxlIGVuYWJsaW5nIHNsYXZlIENSVEMuCj4gCj4gU28gb24gdGhvc2UgbGluZXMsIGlmIGkg c3RvcmUgdGhlIG1hc3RlciB0cmFuc2NvZGVyIGRpcmVjdGx5IGluIHRoZSBzbGF2ZSBjcnRjIHN0 YXRlIHRoZW4gdHJhbnMgPSAwIGlzIHZhbGlkIGZvciB0cmFucyBBIHRoZW4gaG93Cj4gZG8gSSBp ZGVudGlmeSB3aGljaCBjcnRjIGlzIHNsYXZlPwo+IEN1cnJlbnRseSBJIGNoZWNrIGZvciAhbWFz dGVyX2NydGMgYW5kIHRoYXQgdGVsbHMgbWUgdGhhdCBpdCBpcyBub3Qgc2xhdmUuCgpJTlZBTElE X1RSQU5TQ09EREVSIG9yIHNvbWV0aGluZz8KCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4