From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915/icl: combo port vswing programming changes per BSPEC Date: Mon, 3 Dec 2018 21:53:10 +0200 Message-ID: <20181203195310.GI9144@intel.com> References: <1543618681-15255-1-git-send-email-clinton.a.taylor@intel.com> <20181203121959.GF9144@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id B689C89F38 for ; Mon, 3 Dec 2018 19:53:13 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Clint Taylor Cc: Intel-gfx@lists.freedesktop.org, Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBEZWMgMDMsIDIwMTggYXQgMTE6MzQ6MTZBTSAtMDgwMCwgQ2xpbnQgVGF5bG9yIHdy b3RlOgo+IAo+IAo+IE9uIDEyLzAzLzIwMTggMDQ6MTkgQU0sIFZpbGxlIFN5cmrDpGzDpCB3cm90 ZToKPiA+IE9uIEZyaSwgTm92IDMwLCAyMDE4IGF0IDAyOjU4OjAxUE0gLTA4MDAsIGNsaW50b24u YS50YXlsb3JAaW50ZWwuY29tIHdyb3RlOgo+ID4+IEZyb206IENsaW50IFRheWxvciA8Y2xpbnRv bi5hLnRheWxvckBpbnRlbC5jb20+Cj4gPj4KPiA+PiBJbiBBdWd1c3QgMjAxOCB0aGUgQlNQRUMg Y2hhbmdlZCB0aGUgSUNMIHBvcnQgcHJvZ3JhbW1pbmcgc2VxdWVuY2UgdG8KPiA+PiBjbG9zZWx5 IHJlc2VtYmxlIGVhcmxpZXIgZ2VuIHByb2dyYW1taW5nIHNlcXVlbmNlLgo+ID4+Cj4gPj4gQlNw ZWM6IDIxMjU3Cj4gPj4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20+Cj4gPj4gQ2M6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPiA+PiBD YzogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+ID4+IFNpZ25lZC1vZmYt Ynk6IENsaW50IFRheWxvciA8Y2xpbnRvbi5hLnRheWxvckBpbnRlbC5jb20+Cj4gPj4gLS0tCj4g Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgfCAgIDQgKwo+ID4+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAgIHwgMjIzICsrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgfCAgIDMgLQo+ID4+ICAgMyBmaWxlcyBjaGFuZ2VkLCA4NiBpbnNlcnRpb25zKCsp LCAxNDQgZGVsZXRpb25zKC0pCj4gPj4KPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+PiBp bmRleCBkM2VmOTc5Li5lNjMyZTk5IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmgKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o Cj4gPj4gQEAgLTE4NjYsNiArMTg2NiwxMCBAQCBlbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCB7Cj4g Pj4gICAKPiA+PiAgICNkZWZpbmUgQ05MX1BPUlRfVFhfRFc3X0dSUChwb3J0KQlfTU1JTyhfQ05M X1BPUlRfVFhfRFdfR1JQKChwb3J0KSwgNykpCj4gPj4gICAjZGVmaW5lIENOTF9QT1JUX1RYX0RX N19MTjAocG9ydCkJX01NSU8oX0NOTF9QT1JUX1RYX0RXX0xOMCgocG9ydCksIDcpKQo+ID4+ICsj ZGVmaW5lIElDTF9QT1JUX1RYX0RXN19BVVgocG9ydCkJX01NSU8oX0lDTF9QT1JUX1RYX0RXX0FV WCg3LCBwb3J0KSkKPiA+PiArI2RlZmluZSBJQ0xfUE9SVF9UWF9EVzdfR1JQKHBvcnQpCV9NTUlP KF9JQ0xfUE9SVF9UWF9EV19HUlAoNywgcG9ydCkpCj4gPj4gKyNkZWZpbmUgSUNMX1BPUlRfVFhf RFc3X0xOMChwb3J0KQlfTU1JTyhfSUNMX1BPUlRfVFhfRFdfTE4oNywgMCwgcG9ydCkpCj4gPj4g KyNkZWZpbmUgSUNMX1BPUlRfVFhfRFc3X0xOKHBvcnQsIGxuKQlfTU1JTyhfSUNMX1BPUlRfVFhf RFdfTE4oNywgbG4sIHBvcnQpKQo+ID4+ICAgI2RlZmluZSAgIE5fU0NBTEFSKHgpCQkJKCh4KSA8 PCAyNCkKPiA+PiAgICNkZWZpbmUgICBOX1NDQUxBUl9NQVNLCQkJKDB4N0YgPDwgMjQpCj4gPj4g ICAKPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4+IGluZGV4IDYxZDcxNDUuLjIxOTQ2 NGU5IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4g Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+PiBAQCAtNDkzLDEw MyArNDkzLDYzIEBAIHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyB7Cj4gPj4gICAJeyAweDIsIDB4 N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDAwICAgNDAwICAgICAgMC4wICAgKi8KPiA+PiAg IH07Cj4gPj4gICAKPiA+PiAtc3RydWN0IGljbF9jb21ib19waHlfZGRpX2J1Zl90cmFucyB7Cj4g Pj4gLQl1MzIgZHcyX3N3aW5nX3NlbGVjdDsKPiA+PiAtCXUzMiBkdzJfc3dpbmdfc2NhbGFyOwo+ ID4+IC0JdTMyIGR3NF9zY2FsaW5nOwo+ID4+IC19Owo+ID4+IC0KPiA+PiAtLyogVm9sdGFnZSBT d2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMC44NVYgZm9yIERQICovCj4gPj4gLXN0YXRpYyBj b25zdCBzdHJ1Y3QgaWNsX2NvbWJvX3BoeV9kZGlfYnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRp X3RyYW5zbGF0aW9uc19kcF9oZG1pXzBfODVWW10gPSB7Cj4gPj4gLQkJCQkvKiBWb2x0YWdlIG1W ICBkYiAgICAqLwo+ID4+IC0JeyAweDIsIDB4OTgsIDB4MDAxOCB9LAkvKiA0MDAgICAgICAgICAw LjAgICAqLwo+ID4+IC0JeyAweDIsIDB4OTgsIDB4MzAxNSB9LAkvKiA0MDAgICAgICAgICAzLjUg ICAqLwo+ID4+IC0JeyAweDIsIDB4OTgsIDB4NjAxMiB9LAkvKiA0MDAgICAgICAgICA2LjAgICAq Lwo+ID4+IC0JeyAweDIsIDB4OTgsIDB4OTAwRiB9LAkvKiA0MDAgICAgICAgICA5LjUgICAqLwo+ ID4+IC0JeyAweEIsIDB4NzAsIDB4MDAxOCB9LAkvKiA2MDAgICAgICAgICAwLjAgICAqLwo+ID4+ IC0JeyAweEIsIDB4NzAsIDB4MzAxNSB9LAkvKiA2MDAgICAgICAgICAzLjUgICAqLwo+ID4+IC0J eyAweEIsIDB4NzAsIDB4NjAxMiB9LAkvKiA2MDAgICAgICAgICA2LjAgICAqLwo+ID4+IC0JeyAw eDUsIDB4MDAsIDB4MDAxOCB9LAkvKiA4MDAgICAgICAgICAwLjAgICAqLwo+ID4+IC0JeyAweDUs IDB4MDAsIDB4MzAxNSB9LAkvKiA4MDAgICAgICAgICAzLjUgICAqLwo+ID4+IC0JeyAweDYsIDB4 OTgsIDB4MDAxOCB9LAkvKiAxMjAwICAgICAgICAwLjAgICAqLwo+ID4+IC19Owo+ID4+IC0KPiA+ PiAtLyogRklYTUUgLSBBZnRlciB0YWJsZSBpcyB1cGRhdGVkIGluIEJzcGVjICovCj4gPj4gLS8q IFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1pbmcgZm9yIFZjY0lPIDAuODVWIGZvciBlRFAgKi8KPiA+ PiAtc3RhdGljIGNvbnN0IHN0cnVjdCBpY2xfY29tYm9fcGh5X2RkaV9idWZfdHJhbnMgaWNsX2Nv bWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF8wXzg1VltdID0gewo+ID4+IC0JCQkJLyogVm9s dGFnZSBtViAgZGIgICAgKi8KPiA+PiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDIwMCAgICAg ICAgIDAuMCAgICovCj4gPj4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAyMDAgICAgICAgICAx LjUgICAqLwo+ID4+IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMjAwICAgICAgICAgNC4wICAg Ki8KPiA+PiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDIwMCAgICAgICAgIDYuMCAgICovCj4g Pj4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAyNTAgICAgICAgICAwLjAgICAqLwo+ID4+IC0J eyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMjUwICAgICAgICAgMS41ICAgKi8KPiA+PiAtCXsgMHgw LCAweDAwLCAweDAwIH0sCS8qIDI1MCAgICAgICAgIDQuMCAgICovCj4gPj4gLQl7IDB4MCwgMHgw MCwgMHgwMCB9LAkvKiAzMDAgICAgICAgICAwLjAgICAqLwo+ID4+IC0JeyAweDAsIDB4MDAsIDB4 MDAgfSwJLyogMzAwICAgICAgICAgMS41ICAgKi8KPiA+PiAtCXsgMHgwLCAweDAwLCAweDAwIH0s CS8qIDM1MCAgICAgICAgIDAuMCAgICovCj4gPj4gKy8qIGljbF9jb21ib19waHlfZGRpX3RyYW5z bGF0aW9ucyAqLwo+ID4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGlj bF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0gewo+ID4+ICsJCQkJCQkvKiBOVCBt ViBUcmFucyBtViBkYiAgICAqLwo+ID4+ICsJeyAweEEsIDB4MzUsIDB4M0YsIDB4MDAsIDB4MDAg fSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KPiA+PiArCXsgMHhBLCAweDRGLCAweDM3LCAw eDAwLCAweDA4IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICovCj4gPj4gKwl7IDB4QywgMHg3 MSwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLwo+ID4+ICsJ eyAweDYsIDB4N0YsIDB4MkIsIDB4MDAsIDB4MTQgfSwJLyogMzUwICAgOTAwICAgICAgOC4yICAg Ki8KPiA+PiArCXsgMHhBLCAweDRDLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAg ICAgIDAuMCAgICovCj4gPj4gKwl7IDB4QywgMHg3MywgMHgzNCwgMHgwMCwgMHgwQiB9LAkvKiA1 MDAgICA3MDAgICAgICAyLjkgICAqLwo+ID4+ICsJeyAweDYsIDB4N0YsIDB4MkYsIDB4MDAsIDB4 MTAgfSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KPiA+PiArCXsgMHhDLCAweDZDLCAweDND LCAweDAwLCAweDAzIH0sCS8qIDY1MCAgIDcwNSAgICAgIDAuNiAgICovCj4gPj4gKwl7IDB4Niwg MHg3RiwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwo+ID4+ ICsJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4w ICAgKi8KPiA+PiAgIH07Cj4gPj4gICAKPiA+PiAtLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWlu ZyBmb3IgVmNjSU8gMC45NVYgZm9yIERQICovCj4gPj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWNs X2NvbWJvX3BoeV9kZGlfYnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19k cF9oZG1pXzBfOTVWW10gPSB7Cj4gPj4gLQkJCQkvKiBWb2x0YWdlIG1WICBkYiAgICAqLwo+ID4+ IC0JeyAweDIsIDB4OTgsIDB4MDAxOCB9LAkvKiA0MDAgICAgICAgICAwLjAgICAqLwo+ID4+IC0J eyAweDIsIDB4OTgsIDB4MzAxNSB9LAkvKiA0MDAgICAgICAgICAzLjUgICAqLwo+ID4+IC0JeyAw eDIsIDB4OTgsIDB4NjAxMiB9LAkvKiA0MDAgICAgICAgICA2LjAgICAqLwo+ID4+IC0JeyAweDIs IDB4OTgsIDB4OTAwRiB9LAkvKiA0MDAgICAgICAgICA5LjUgICAqLwo+ID4+IC0JeyAweDQsIDB4 OTgsIDB4MDAxOCB9LAkvKiA2MDAgICAgICAgICAwLjAgICAqLwo+ID4+IC0JeyAweDQsIDB4OTgs IDB4MzAxNSB9LAkvKiA2MDAgICAgICAgICAzLjUgICAqLwo+ID4+IC0JeyAweDQsIDB4OTgsIDB4 NjAxMiB9LAkvKiA2MDAgICAgICAgICA2LjAgICAqLwo+ID4+IC0JeyAweDUsIDB4NzYsIDB4MDAx OCB9LAkvKiA4MDAgICAgICAgICAwLjAgICAqLwo+ID4+IC0JeyAweDUsIDB4NzYsIDB4MzAxNSB9 LAkvKiA4MDAgICAgICAgICAzLjUgICAqLwo+ID4+IC0JeyAweDYsIDB4OTgsIDB4MDAxOCB9LAkv KiAxMjAwICAgICAgICAwLjAgICAqLwo+ID4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlf YnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfbG93c3dpbmdbXSA9 IHsKPiA+PiArCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KPiA+PiArCXsgMHgwLCAw eDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDIwMCAgIDIwMCAgICAgIDAuMCAgICovCj4gPj4g Kwl7IDB4OCwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAyMDAgICAyNTAgICAgICAxLjkg ICAqLwo+ID4+ICsJeyAweDEsIDB4N0YsIDB4MzMsIDB4MDAsIDB4MEMgfSwJLyogMjAwICAgMzAw ICAgICAgMy41ICAgKi8KPiA+PiArCXsgMHg5LCAweDdGLCAweDMxLCAweDAwLCAweDBFIH0sCS8q IDIwMCAgIDM1MCAgICAgIDQuOSAgICovCj4gPj4gKwl7IDB4OCwgMHg3RiwgMHgzRiwgMHgwMCwg MHgwMCB9LAkvKiAyNTAgICAyNTAgICAgICAwLjAgICAqLwo+ID4+ICsJeyAweDEsIDB4N0YsIDB4 MzgsIDB4MDAsIDB4MDcgfSwJLyogMjUwICAgMzAwICAgICAgMS42ICAgKi8KPiA+PiArCXsgMHg5 LCAweDdGLCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDI1MCAgIDM1MCAgICAgIDIuOSAgICovCj4g Pj4gKwl7IDB4MSwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzMDAgICAzMDAgICAgICAw LjAgICAqLwo+ID4+ICsJeyAweDksIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMzAwICAg MzUwICAgICAgMS4zICAgKi8KPiA+PiArCXsgMHg5LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0s CS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCj4gPj4gICB9Owo+ID4+ICAgCj4gPj4gLS8qIEZJ WE1FIC0gQWZ0ZXIgdGFibGUgaXMgdXBkYXRlZCBpbiBCc3BlYyAqLwo+ID4+IC0vKiBWb2x0YWdl IFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAwLjk1ViBmb3IgZURQICovCj4gPj4gLXN0YXRp YyBjb25zdCBzdHJ1Y3QgaWNsX2NvbWJvX3BoeV9kZGlfYnVmX3RyYW5zIGljbF9jb21ib19waHlf ZGRpX3RyYW5zbGF0aW9uc19lZHBfMF85NVZbXSA9IHsKPiA+PiAtCQkJCS8qIFZvbHRhZ2UgbVYg IGRiICAgICovCj4gPj4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAyMDAgICAgICAgICAwLjAg ICAqLwo+ID4+IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMjAwICAgICAgICAgMS41ICAgKi8K PiA+PiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDIwMCAgICAgICAgIDQuMCAgICovCj4gPj4g LQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAyMDAgICAgICAgICA2LjAgICAqLwo+ID4+IC0JeyAw eDAsIDB4MDAsIDB4MDAgfSwJLyogMjUwICAgICAgICAgMC4wICAgKi8KPiA+PiAtCXsgMHgwLCAw eDAwLCAweDAwIH0sCS8qIDI1MCAgICAgICAgIDEuNSAgICovCj4gPj4gLQl7IDB4MCwgMHgwMCwg MHgwMCB9LAkvKiAyNTAgICAgICAgICA0LjAgICAqLwo+ID4+IC0JeyAweDAsIDB4MDAsIDB4MDAg fSwJLyogMzAwICAgICAgICAgMC4wICAgKi8KPiA+PiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8q IDMwMCAgICAgICAgIDEuNSAgICovCj4gPj4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAzNTAg ICAgICAgICAwLjAgICAqLwo+ID4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3Ry YW5zIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyM1tdID0gewo+ID4+ICsJ CQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+ID4+ICsJeyAweEEsIDB4MzUsIDB4M0Ys IDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KPiA+PiArCXsgMHhBLCAw eDRGLCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICovCj4gPj4g Kwl7IDB4QywgMHg3MSwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAg ICAqLwo+ID4+ICsJeyAweDYsIDB4N0YsIDB4MkIsIDB4MDAsIDB4MTQgfSwJLyogMzUwICAgOTAw ICAgICAgOC4yICAgKi8KPiA+PiArCXsgMHhBLCAweDRDLCAweDNGLCAweDAwLCAweDAwIH0sCS8q IDUwMCAgIDUwMCAgICAgIDAuMCAgICovCj4gPj4gKwl7IDB4QywgMHg3MywgMHgzNCwgMHgwMCwg MHgwQiB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLwo+ID4+ICsJeyAweDYsIDB4N0YsIDB4 MkYsIDB4MDAsIDB4MTAgfSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KPiA+PiArCXsgMHhD LCAweDZDLCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCj4g Pj4gKwl7IDB4NiwgMHg3RiwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAgICA5MDAgICAgICAz LjUgICAqLwo+ID4+ICsJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAg OTAwICAgICAgMC4wICAgKi8KPiA+PiAgIH07Cj4gPj4gICAKPiA+PiAtLyogVm9sdGFnZSBTd2lu ZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMS4wNVYgZm9yIERQICovCj4gPj4gLXN0YXRpYyBjb25z dCBzdHJ1Y3QgaWNsX2NvbWJvX3BoeV9kZGlfYnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRpX3Ry YW5zbGF0aW9uc19kcF9oZG1pXzFfMDVWW10gPSB7Cj4gPj4gLQkJCQkvKiBWb2x0YWdlIG1WICBk YiAgICAqLwo+ID4+IC0JeyAweDIsIDB4OTgsIDB4MDAxOCB9LAkvKiA0MDAgICAgICAgICAwLjAg ICAqLwo+ID4+IC0JeyAweDIsIDB4OTgsIDB4MzAxNSB9LAkvKiA0MDAgICAgICAgICAzLjUgICAq Lwo+ID4+IC0JeyAweDIsIDB4OTgsIDB4NjAxMiB9LAkvKiA0MDAgICAgICAgICA2LjAgICAqLwo+ ID4+IC0JeyAweDIsIDB4OTgsIDB4OTAwRiB9LAkvKiA0MDAgICAgICAgICA5LjUgICAqLwo+ID4+ IC0JeyAweDQsIDB4OTgsIDB4MDAxOCB9LAkvKiA2MDAgICAgICAgICAwLjAgICAqLwo+ID4+IC0J eyAweDQsIDB4OTgsIDB4MzAxNSB9LAkvKiA2MDAgICAgICAgICAzLjUgICAqLwo+ID4+IC0JeyAw eDQsIDB4OTgsIDB4NjAxMiB9LAkvKiA2MDAgICAgICAgICA2LjAgICAqLwo+ID4+IC0JeyAweDUs IDB4NzEsIDB4MDAxOCB9LAkvKiA4MDAgICAgICAgICAwLjAgICAqLwo+ID4+IC0JeyAweDUsIDB4 NzEsIDB4MzAxNSB9LAkvKiA4MDAgICAgICAgICAzLjUgICAqLwo+ID4+IC0JeyAweDYsIDB4OTgs IDB4MDAxOCB9LAkvKiAxMjAwICAgICAgICAwLjAgICAqLwo+ID4+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGNubF9kZGlfYnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1p W10gPSB7Cj4gPj4gKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCj4gPj4gKwl7IDB4 QSwgMHg2MCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA0NTAgICA0NTAgICAgICAwLjAgICAqLwo+ ID4+ICsJeyAweEIsIDB4NzMsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogNDUwICAgNjUwICAgICAg My4yICAgKi8KPiA+PiArCXsgMHg2LCAweDdGLCAweDMxLCAweDAwLCAweDBFIH0sCS8qIDQ1MCAg IDg1MCAgICAgIDUuNSAgICovCj4gPj4gKwl7IDB4QiwgMHg3MywgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiA2NTAgICA2NTAgICAgICAwLjAgICBBTFMgKi8KPiA+PiArCXsgMHg2LCAweDdGLCAweDM3 LCAweDAwLCAweDA4IH0sCS8qIDY1MCAgIDg1MCAgICAgIDIuMyAgICovCj4gPj4gKwl7IDB4Niwg MHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA4NTAgICA4NTAgICAgICAwLjAgICAqLwo+ID4+ ICsJeyAweDYsIDB4N0YsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgODUwICAgICAgMy4w ICAgKi8KPiA+PiAgIH07Cj4gPj4gICAKPiA+PiAtLyogRklYTUUgLSBBZnRlciB0YWJsZSBpcyB1 cGRhdGVkIGluIEJzcGVjICovCj4gPj4gLS8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1pbmcgZm9y IFZjY0lPIDEuMDVWIGZvciBlRFAgKi8KPiA+PiAtc3RhdGljIGNvbnN0IHN0cnVjdCBpY2xfY29t Ym9fcGh5X2RkaV9idWZfdHJhbnMgaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF8x XzA1VltdID0gewo+ID4+IC0JCQkJLyogVm9sdGFnZSBtViAgZGIgICAgKi8KPiA+PiAtCXsgMHgw LCAweDAwLCAweDAwIH0sCS8qIDIwMCAgICAgICAgIDAuMCAgICovCj4gPj4gLQl7IDB4MCwgMHgw MCwgMHgwMCB9LAkvKiAyMDAgICAgICAgICAxLjUgICAqLwo+ID4+IC0JeyAweDAsIDB4MDAsIDB4 MDAgfSwJLyogMjAwICAgICAgICAgNC4wICAgKi8KPiA+PiAtCXsgMHgwLCAweDAwLCAweDAwIH0s CS8qIDIwMCAgICAgICAgIDYuMCAgICovCj4gPj4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAy NTAgICAgICAgICAwLjAgICAqLwo+ID4+IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMjUwICAg ICAgICAgMS41ICAgKi8KPiA+PiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDI1MCAgICAgICAg IDQuMCAgICovCj4gPj4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAzMDAgICAgICAgICAwLjAg ICAqLwo+ID4+IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMzAwICAgICAgICAgMS41ICAgKi8K PiA+PiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgICAgICAgIDAuMCAgICovCj4gPj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgaWNsX2NvbWJvX3BoeV9kZGlf dHJhbnNsYXRpb25zX21pcGlbXSA9IHsKPiA+PiArCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIg ICAgKi8KPiA+PiArCXsgMHgyLCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQwMCAgIDQw MCAgICAgIDAuMCAgICovCj4gPj4gICB9Owo+ID4+ICAgCj4gPj4gICBzdHJ1Y3QgaWNsX21nX3Bo eV9kZGlfYnVmX3RyYW5zIHsKPiA+PiBAQCAtODcwLDQzICs4MzAsMjcgQEAgc3RhdGljIGludCBz a2xfYnVmX3RyYW5zX251bV9lbnRyaWVzKGVudW0gcG9ydCBwb3J0LCBpbnQgbl9lbnRyaWVzKQo+ ID4+ICAgCX0KPiA+PiAgIH0KPiA+PiAgIAo+ID4+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGljbF9j b21ib19waHlfZGRpX2J1Zl90cmFucyAqCj4gPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2Rk aV9idWZfdHJhbnMgKgo+ID4+ICAgaWNsX2dldF9jb21ib19idWZfdHJhbnMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCwKPiA+PiAgIAkJCWludCB0eXBl LCBpbnQgKm5fZW50cmllcykKPiA+PiAgIHsKPiA+PiAtCXUzMiB2b2x0YWdlID0gSTkxNV9SRUFE KElDTF9QT1JUX0NPTVBfRFczKHBvcnQpKSAmIFZPTFRBR0VfSU5GT19NQVNLOwo+ID4+ICAgCj4g Pj4gICAJaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCAmJiBkZXZfcHJpdi0+dmJ0LmVkcC5s b3dfdnN3aW5nKSB7Cj4gPj4gLQkJc3dpdGNoICh2b2x0YWdlKSB7Cj4gPj4gLQkJY2FzZSBWT0xU QUdFX0lORk9fMF84NVY6Cj4gPj4gLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21i b19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfMF84NVYpOwo+ID4+IC0JCQlyZXR1cm4gaWNsX2Nv bWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF8wXzg1VjsKPiA+PiAtCQljYXNlIFZPTFRBR0Vf SU5GT18wXzk1VjoKPiA+PiAtCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3Bo eV9kZGlfdHJhbnNsYXRpb25zX2VkcF8wXzk1Vik7Cj4gPj4gLQkJCXJldHVybiBpY2xfY29tYm9f cGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwXzBfOTVWOwo+ID4+IC0JCWNhc2UgVk9MVEFHRV9JTkZP XzFfMDVWOgo+ID4+IC0JCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2Rk aV90cmFuc2xhdGlvbnNfZWRwXzFfMDVWKTsKPiA+PiAtCQkJcmV0dXJuIGljbF9jb21ib19waHlf ZGRpX3RyYW5zbGF0aW9uc19lZHBfMV8wNVY7Cj4gPj4gLQkJZGVmYXVsdDoKPiA+PiAtCQkJTUlT U0lOR19DQVNFKHZvbHRhZ2UpOwo+ID4+IC0JCQlyZXR1cm4gTlVMTDsKPiA+PiAtCQl9Cj4gPj4g LQl9IGVsc2Ugewo+ID4+IC0JCXN3aXRjaCAodm9sdGFnZSkgewo+ID4+IC0JCWNhc2UgVk9MVEFH RV9JTkZPXzBfODVWOgo+ID4+IC0JCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9f cGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGRtaV8wXzg1Vik7Cj4gPj4gLQkJCXJldHVybiBpY2xf Y29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGRtaV8wXzg1VjsKPiA+PiAtCQljYXNlIFZP TFRBR0VfSU5GT18wXzk1VjoKPiA+PiAtCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2Nv bWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hkbWlfMF85NVYpOwo+ID4+IC0JCQlyZXR1cm4g aWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hkbWlfMF85NVY7Cj4gPj4gLQkJY2Fz ZSBWT0xUQUdFX0lORk9fMV8wNVY6Cj4gPj4gLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGlj bF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oZG1pXzFfMDVWKTsKPiA+PiAtCQkJcmV0 dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oZG1pXzFfMDVWOwo+ID4+IC0J CWRlZmF1bHQ6Cj4gPj4gLQkJCU1JU1NJTkdfQ0FTRSh2b2x0YWdlKTsKPiA+PiAtCQkJcmV0dXJu IE5VTEw7Cj4gPj4gLQkJfQo+ID4+ICsJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21i b19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfbG93c3dpbmcpOwo+ID4+ICsJCXJldHVybiBpY2xf Y29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2xvd3N3aW5nOwo+ID4+ICsJfSBlbHNlIGlm ICh0eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKPiA+PiArCQkqbl9lbnRyaWVzID0gQVJSQVlf U0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjMpOwo+ID4+ICsJCXJl dHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjM7Cj4gPj4gKwl9IGVs c2UgaWYgKCh0eXBlID09IElOVEVMX09VVFBVVF9EUCkgfHwgKHR5cGUgPT0gSU5URUxfT1VUUFVU X0RESSkgfHwKPiA+PiArCQkgICAgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0RQX01TVCkpIHsKPiA+ IEkgd291bGQgbW92ZSB0aGUgaGRtaSBjYXNlIGZpcnN0IHRvIG1hdGNoIGhvdyBtb3N0IG90aGVy IHBsYXRmb3JtcyBkbwo+ID4gaXQsIGFuZCB0byBlbGltaW5hdGUgdGhpcyBjb21wbGljYXRlZCBE UCBjaGVjay4KPiBBZ3JlZWQuCj4gPgo+ID4+ICsJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGlj bF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcCk7Cj4gPj4gKwkJcmV0dXJuIGljbF9jb21i b19waHlfZGRpX3RyYW5zbGF0aW9uc19kcDsKPiA+PiArCX0gZWxzZSBpZiAodHlwZSA9PSBJTlRF TF9PVVRQVVRfSERNSSkgewo+ID4+ICsJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21i b19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pKTsKPiA+PiArCQlyZXR1cm4gaWNsX2NvbWJvX3Bo eV9kZGlfdHJhbnNsYXRpb25zX2hkbWk7Cj4gPj4gICAJfQo+ID4+ICsKPiA+PiArCXJldHVybiBO VUxMOwo+ID4+ICAgfQo+ID4+ICAgCj4gPj4gICBzdGF0aWMgaW50IGludGVsX2RkaV9oZG1pX2xl dmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwb3J0IHBvcnQpCj4g Pj4gQEAgLTI0NjMsNyArMjQwNyw3IEBAIHN0YXRpYyB2b2lkIGNubF9kZGlfdnN3aW5nX3NlcXVl bmNlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4+ICAgc3RhdGljIHZvaWQgaWNs X2RkaV9jb21ib192c3dpbmdfcHJvZ3JhbShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gPj4gICAJCQkJCSB1MzIgbGV2ZWwsIGVudW0gcG9ydCBwb3J0LCBpbnQgdHlwZSkKPiA+ PiAgIHsKPiA+PiAtCWNvbnN0IHN0cnVjdCBpY2xfY29tYm9fcGh5X2RkaV9idWZfdHJhbnMgKmRk aV90cmFuc2xhdGlvbnMgPSBOVUxMOwo+ID4+ICsJY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3Ry YW5zICpkZGlfdHJhbnNsYXRpb25zID0gTlVMTDsKPiA+PiAgIAl1MzIgbl9lbnRyaWVzLCB2YWw7 Cj4gPj4gICAJaW50IGxuOwo+ID4+ICAgCj4gPj4gQEAgLTI0NzcsMzQgKzI0MjEsMjMgQEAgc3Rh dGljIHZvaWQgaWNsX2RkaV9jb21ib192c3dpbmdfcHJvZ3JhbShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gPj4gICAJCWxldmVsID0gbl9lbnRyaWVzIC0gMTsKPiA+PiAgIAl9 Cj4gPj4gICAKPiA+PiAtCS8qIFNldCBQT1JUX1RYX0RXNSBSdGVybSBTZWwgdG8gMTEwYi4gKi8K PiA+PiArCS8qIFNldCBQT1JUX1RYX0RXNSAqLwo+ID4+ICAgCXZhbCA9IEk5MTVfUkVBRChJQ0xf UE9SVF9UWF9EVzVfTE4wKHBvcnQpKTsKPiA+PiAtCXZhbCAmPSB+UlRFUk1fU0VMRUNUX01BU0s7 Cj4gPj4gKwl2YWwgJj0gfihTQ0FMSU5HX01PREVfU0VMX01BU0sgfCBSVEVSTV9TRUxFQ1RfTUFT SyB8Cj4gPj4gKwkJICBUQVAyX0RJU0FCTEUgfCBUQVAzX0RJU0FCTEUpOwo+ID4+ICsJdmFsIHw9 IFNDQUxJTkdfTU9ERV9TRUwoMHgyKTsKPiA+PiAgIAl2YWwgfD0gUlRFUk1fU0VMRUNUKDB4Nik7 Cj4gPj4gLQlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNV9HUlAocG9ydCksIHZhbCk7Cj4gPj4g LQo+ID4+IC0JLyogUHJvZ3JhbSBQT1JUX1RYX0RXNSAqLwo+ID4+IC0JdmFsID0gSTkxNV9SRUFE KElDTF9QT1JUX1RYX0RXNV9MTjAocG9ydCkpOwo+ID4+IC0JLyogU2V0IERpc2FibGVUYXAyIGFu ZCBEaXNhYmxlVGFwMyBpZiBNSVBJIERTSQo+ID4+IC0JICogQ2xlYXIgRGlzYWJsZVRhcDIgYW5k IERpc2FibGVUYXAzIGZvciBhbGwgb3RoZXIgUG9ydHMKPiA+PiAtCSAqLwo+ID4+IC0JaWYgKHR5 cGUgPT0gSU5URUxfT1VUUFVUX0RTSSkgewo+ID4+IC0JCXZhbCB8PSBUQVAyX0RJU0FCTEU7Cj4g Pj4gLQkJdmFsIHw9IFRBUDNfRElTQUJMRTsKPiA+PiAtCX0gZWxzZSB7Cj4gPj4gLQkJdmFsICY9 IH5UQVAyX0RJU0FCTEU7Cj4gPj4gLQkJdmFsICY9IH5UQVAzX0RJU0FCTEU7Cj4gPj4gLQl9Cj4g Pj4gKwl2YWwgfD0gVEFQM19ESVNBQkxFOwo+ID4+ICAgCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhf RFc1X0dSUChwb3J0KSwgdmFsKTsKPiA+PiAgIAo+ID4+ICAgCS8qIFByb2dyYW0gUE9SVF9UWF9E VzIgKi8KPiA+PiAgIAl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFcyX0xOMChwb3J0KSk7 Cj4gPj4gICAJdmFsICY9IH4oU1dJTkdfU0VMX0xPV0VSX01BU0sgfCBTV0lOR19TRUxfVVBQRVJf TUFTSyB8Cj4gPj4gICAJCSBSQ09NUF9TQ0FMQVJfTUFTSyk7Cj4gPj4gLQl2YWwgfD0gU1dJTkdf U0VMX1VQUEVSKGRkaV90cmFuc2xhdGlvbnNbbGV2ZWxdLmR3Ml9zd2luZ19zZWxlY3QpOwo+ID4+ IC0JdmFsIHw9IFNXSU5HX1NFTF9MT1dFUihkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5kdzJfc3dp bmdfc2VsZWN0KTsKPiA+PiArCXZhbCB8PSBTV0lOR19TRUxfVVBQRVIoZGRpX3RyYW5zbGF0aW9u c1tsZXZlbF0uZHcyX3N3aW5nX3NlbCk7Cj4gPj4gKwl2YWwgfD0gU1dJTkdfU0VMX0xPV0VSKGRk aV90cmFuc2xhdGlvbnNbbGV2ZWxdLmR3Ml9zd2luZ19zZWwpOwo+ID4+ICAgCS8qIFByb2dyYW0g UmNvbXAgc2NhbGFyIGZvciBldmVyeSB0YWJsZSBlbnRyeSAqLwo+ID4+IC0JdmFsIHw9IFJDT01Q X1NDQUxBUihkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5kdzJfc3dpbmdfc2NhbGFyKTsKPiA+PiAr CXZhbCB8PSBSQ09NUF9TQ0FMQVIoMHg5OCk7Cj4gPj4gICAJSTkxNV9XUklURShJQ0xfUE9SVF9U WF9EVzJfR1JQKHBvcnQpLCB2YWwpOwo+ID4+ICAgCj4gPj4gICAJLyogUHJvZ3JhbSBQT1JUX1RY X0RXNCAqLwo+ID4+IEBAIC0yNTEzLDkgKzI0NDYsMTcgQEAgc3RhdGljIHZvaWQgaWNsX2RkaV9j b21ib192c3dpbmdfcHJvZ3JhbShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g Pj4gICAJCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzRfTE4ocG9ydCwgbG4pKTsKPiA+ PiAgIAkJdmFsICY9IH4oUE9TVF9DVVJTT1JfMV9NQVNLIHwgUE9TVF9DVVJTT1JfMl9NQVNLIHwK PiA+PiAgIAkJCSBDVVJTT1JfQ09FRkZfTUFTSyk7Cj4gPj4gLQkJdmFsIHw9IGRkaV90cmFuc2xh dGlvbnNbbGV2ZWxdLmR3NF9zY2FsaW5nOwo+ID4+ICsJCXZhbCB8PSBQT1NUX0NVUlNPUl8xKGRk aV90cmFuc2xhdGlvbnNbbGV2ZWxdLmR3NF9wb3N0X2N1cnNvcl8xKTsKPiA+PiArCQl2YWwgfD0g UE9TVF9DVVJTT1JfMihkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5kdzRfcG9zdF9jdXJzb3JfMik7 Cj4gPj4gKwkJdmFsIHw9IENVUlNPUl9DT0VGRihkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5kdzRf Y3Vyc29yX2NvZWZmKTsKPiA+PiAgIAkJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzRfTE4ocG9y dCwgbG4pLCB2YWwpOwo+ID4+ICAgCX0KPiA+PiArCj4gPj4gKwkvKiBQcm9ncmFtIFBPUlRfVFhf RFc3ICovCj4gPiBUaGUgY29tbWVudCBpcyByZWR1bmRhbnQuCj4gSXQncyBjb25zaXN0ZW50IHdp dGggdGhlIG90aGVyIGNvbW1lbnRzIGluIHRoZSBmdW5jdGlvbi4gVGhlIENOTCAKPiBmdW5jdGlv biBhbHNvIGhhcyB0aGUgZXhhY3Qgc2FtZSBjb21tZW50LiBBcmUgeW91IHN1cmUgeW91IHdhbnQg bWUgdG8gCj4gcmVtb3ZlIHRoaXMgY29tbWVudD8KCk1laC4gSSBndWVzcyBrZWVwIGl0IGl0IGl0 J3MgY29uc2lzdGVudCB3aXRoIHRoZSByZXN0LiBPciBzZW5kIGEgcGF0Y2gKdG8gbnVrZSBhbGwg dGhlIHJlZHVuZGFudCBjb21tZW50cy4KCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==