From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.0 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2983FC432BE for ; Thu, 29 Jul 2021 15:06:44 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D997F60720 for ; Thu, 29 Jul 2021 15:06:43 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org D997F60720 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 6FD086E157; Thu, 29 Jul 2021 15:06:43 +0000 (UTC) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 836EE6E155 for ; Thu, 29 Jul 2021 15:06:41 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10060"; a="211019749" X-IronPort-AV: E=Sophos;i="5.84,278,1620716400"; d="scan'208";a="211019749" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jul 2021 08:06:39 -0700 X-IronPort-AV: E=Sophos;i="5.84,278,1620716400"; d="scan'208";a="465109099" Received: from mburby-mobl.amr.corp.intel.com (HELO msatwood-mobl) ([10.255.228.145]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jul 2021 08:06:38 -0700 Date: Thu, 29 Jul 2021 08:06:20 -0700 From: Matt Atwood To: Matt Roper ;, intel-gfx@lists.freedesktop.org Message-ID: <20210729150620.GA3816@msatwood-mobl> References: <20210723174239.1551352-1-matthew.d.roper@intel.com> <20210723174239.1551352-24-matthew.d.roper@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210723174239.1551352-24-matthew.d.roper@intel.com> Subject: Re: [Intel-gfx] [PATCH v3 23/30] drm/i915/dg2: Add MPLLB programming for SNPS PHY X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gRnJpLCBKdWwgMjMsIDIwMjEgYXQgMTA6NDI6MzJBTSAtMDcwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBERzIncyBTTlBTIFBIWXMgaW5jb3Jwb3JhdGUgYSBkZWRpY2F0ZWQgcG9ydCBQTEwgY2Fs bGVkIE1QTExCIHdoaWNoCj4gdGFrZXMgdGhlIHBsYWNlIG9mIHRoZSBzaGFyZWQgRFBMTHMgd2Un dmUgdXNlZCBvbiBwYXN0IHBsYXRmb3Jtcy4gIExldCdzCj4gYWRkIHRoZSBNUExMQiBwcm9ncmFt bWluZyBzZXF1ZW5jZXM7IHRoZXknbGwgYmUgcGx1Z2dlZCBpbnRvIHRoZSByZXN0IG9mCj4gdGhl IGNvZGUgaW4gZnV0dXJlIHBhdGNoZXMuCj4gCj4gQnNwZWM6IDU0MDMyCj4gQnNwZWM6IDUzODgx Cj4gQ2M6IEx1Y2FzIERlIE1hcmNoaSA8bHVjYXMuZGVtYXJjaGlAaW50ZWwuY29tPgo+IFNpZ25l ZC1vZmYtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+Cj4gU2lnbmVk LW9mZi1ieTogVmFuZGl0YSBLdWxrYXJuaSA8dmFuZGl0YS5rdWxrYXJuaUBpbnRlbC5jb20+Cj4g U2lnbmVkLW9mZi1ieTogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KPiBTaWdu ZWQtb2ZmLWJ5OiBOaWRoaSBHdXB0YSA8bmlkaGkxLmd1cHRhQGludGVsLmNvbT4KUmV2aWV3ZWQt Ynk6IE1hdHQgQXR3b29kIDxtYXR0aGV3LnMuYXR3b29kQGludGVsLmNvbT4KPiAtLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAxICsKPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgIHwgICAxICsKPiAgLi4u L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oICAgIHwgIDE3ICstCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBsbC5jICAgICB8ICAxMiArLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3NucHNfcGh5LmMgfCA1MTcgKysrKysr KysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc25wc19w aHkuaCB8ICAxOCArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICAgICAg ICAgICB8ICA1NiArKwo+ICA3IGZpbGVzIGNoYW5nZWQsIDYxNiBpbnNlcnRpb25zKCspLCA2IGRl bGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9zbnBzX3BoeS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX3NucHNfcGh5LmgKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ IGluZGV4IDEwYjNiYjYyMDdiYS4uZDg3ZGJmODdjZmRhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZp bGUKPiBAQCAtMjY3LDYgKzI2Nyw3IEBAIGk5MTUteSArPSBcCj4gIAlkaXNwbGF5L2ludGVsX3Bw cy5vIFwKPiAgCWRpc3BsYXkvaW50ZWxfcXBfdGFibGVzLm8gXAo+ICAJZGlzcGxheS9pbnRlbF9z ZHZvLm8gXAo+ICsJZGlzcGxheS9pbnRlbF9zbnBzX3BoeS5vIFwKPiAgCWRpc3BsYXkvaW50ZWxf dHYubyBcCj4gIAlkaXNwbGF5L2ludGVsX3Zkc2MubyBcCj4gIAlkaXNwbGF5L2ludGVsX3Zyci5v IFwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNw bGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+IGlu ZGV4IDQwMGYwNjJkNzg1YS4uOGU4OGVmNTQwN2Q4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtNTksNiArNTksNyBAQAo+ICAjaW5j bHVkZSAiZGlzcGxheS9pbnRlbF9oZG1pLmgiCj4gICNpbmNsdWRlICJkaXNwbGF5L2ludGVsX2x2 ZHMuaCIKPiAgI2luY2x1ZGUgImRpc3BsYXkvaW50ZWxfc2R2by5oIgo+ICsjaW5jbHVkZSAiZGlz cGxheS9pbnRlbF9zbnBzX3BoeS5oIgo+ICAjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF90di5oIgo+ ICAjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF92ZHNjLmgiCj4gICNpbmNsdWRlICJkaXNwbGF5L2lu dGVsX3Zyci5oIgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXlfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheV90eXBlcy5oCj4gaW5kZXggMTlkOGQzZWVmYmMyLi4wMDMyMGQ4OWQyNjYgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVz LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlw ZXMuaAo+IEBAIC04ODQsNiArODg0LDE4IEBAIGVudW0gaW50ZWxfb3V0cHV0X2Zvcm1hdCB7Cj4g IAlJTlRFTF9PVVRQVVRfRk9STUFUX1lDQkNSNDQ0LAo+ICB9Owo+ICAKPiArc3RydWN0IGludGVs X21wbGxiX3N0YXRlIHsKPiArCXUzMiBjbG9jazsgLyogaW4gS0h6ICovCj4gKwl1MzIgcmVmX2Nv bnRyb2w7Cj4gKwl1MzIgbXBsbGJfY3A7Cj4gKwl1MzIgbXBsbGJfZGl2Owo+ICsJdTMyIG1wbGxi X2RpdjI7Cj4gKwl1MzIgbXBsbGJfZnJhY24xOwo+ICsJdTMyIG1wbGxiX2ZyYWNuMjsKPiArCXUz MiBtcGxsYl9zc2NlbjsKPiArCXUzMiBtcGxsYl9zc2NzdGVwOwo+ICt9Owo+ICsKPiAgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgewo+ICAJLyoKPiAgCSAqIHVhcGkgKGRybSkgc3RhdGUuIFRoaXMg aXMgdGhlIHNvZnR3YXJlIHN0YXRlIHNob3duIHRvIHVzZXJzcGFjZS4KPiBAQCAtMTAxOCw3ICsx MDMwLDEwIEBAIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlIHsKPiAgCXN0cnVjdCBpbnRlbF9zaGFy ZWRfZHBsbCAqc2hhcmVkX2RwbGw7Cj4gIAo+ICAJLyogQWN0dWFsIHJlZ2lzdGVyIHN0YXRlIG9m IHRoZSBkcGxsLCBmb3Igc2hhcmVkIGRwbGwgY3Jvc3MtY2hlY2tpbmcuICovCj4gLQlzdHJ1Y3Qg aW50ZWxfZHBsbF9od19zdGF0ZSBkcGxsX2h3X3N0YXRlOwo+ICsJdW5pb24gewo+ICsJCXN0cnVj dCBpbnRlbF9kcGxsX2h3X3N0YXRlIGRwbGxfaHdfc3RhdGU7Cj4gKwkJc3RydWN0IGludGVsX21w bGxiX3N0YXRlIG1wbGxiX3N0YXRlOwo+ICsJfTsKPiAgCj4gIAkvKgo+ICAJICogSUNMIHJlc2Vy dmVkIERQTExzIGZvciB0aGUgQ1JUQy9wb3J0LiBUaGUgYWN0aXZlIFBMTCBpcyBzZWxlY3RlZCBi eQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwbGwu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBsbC5jCj4gaW5kZXggODk2 MzVkYTlmNmY2Li4xNDUxNWU2MmMwNWUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kcGxsLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2RwbGwuYwo+IEBAIC0xMSw2ICsxMSw3IEBACj4gICNpbmNsdWRlICJpbnRlbF9s dmRzLmgiCj4gICNpbmNsdWRlICJpbnRlbF9wYW5lbC5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfc2lk ZWJhbmQuaCIKPiArI2luY2x1ZGUgImRpc3BsYXkvaW50ZWxfc25wc19waHkuaCIKPiAgCj4gIHN0 cnVjdCBpbnRlbF9saW1pdCB7Cj4gIAlzdHJ1Y3Qgewo+IEBAIC05MjMsMTIgKzkyNCwxMyBAQCBz dGF0aWMgaW50IGhzd19jcnRjX2NvbXB1dGVfY2xvY2soc3RydWN0IGludGVsX2NydGMgKmNydGMs Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJh c2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlID0KPiAgCQl0b19p bnRlbF9hdG9taWNfc3RhdGUoY3J0Y19zdGF0ZS0+dWFwaS5zdGF0ZSk7Cj4gKwlzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciA9Cj4gKwkJaW50ZWxfZ2V0X2NydGNfbmV3X2VuY29kZXIoc3Rh dGUsIGNydGNfc3RhdGUpOwo+ICAKPiAtCWlmICghaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0 YXRlLCBJTlRFTF9PVVRQVVRfRFNJKSB8fAo+IC0JICAgIERJU1BMQVlfVkVSKGRldl9wcml2KSA+ PSAxMSkgewo+IC0JCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0KPiAtCQkJaW50ZWxf Z2V0X2NydGNfbmV3X2VuY29kZXIoc3RhdGUsIGNydGNfc3RhdGUpOwo+IC0KPiArCWlmIChJU19E RzIoZGV2X3ByaXYpKSB7Cj4gKwkJcmV0dXJuIGludGVsX21wbGxiX2NhbGNfc3RhdGUoY3J0Y19z dGF0ZSwgZW5jb2Rlcik7Cj4gKwl9IGVsc2UgaWYgKCFpbnRlbF9jcnRjX2hhc190eXBlKGNydGNf c3RhdGUsIElOVEVMX09VVFBVVF9EU0kpIHx8Cj4gKwkJICAgRElTUExBWV9WRVIoZGV2X3ByaXYp ID49IDExKSB7Cj4gIAkJaWYgKCFpbnRlbF9yZXNlcnZlX3NoYXJlZF9kcGxscyhzdGF0ZSwgY3J0 YywgZW5jb2RlcikpIHsKPiAgCQkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sCj4gIAkJCQkg ICAgImZhaWxlZCB0byBmaW5kIFBMTCBmb3IgcGlwZSAlY1xuIiwKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zbnBzX3BoeS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zbnBzX3BoeS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwMDAwMDAuLjZkOTIwNTkwNjU5NQo+IC0tLSAvZGV2L251bGwKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3NucHNfcGh5LmMKPiBAQCAtMCww ICsxLDUxNyBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCj4gKy8qCj4gKyAq IENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCj4gKyAqLwo+ICsKPiArI2luY2x1 ZGUgImludGVsX2RlLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9kaXNwbGF5X3R5cGVzLmgiCj4gKyNp bmNsdWRlICJpbnRlbF9zbnBzX3BoeS5oIgo+ICsKPiArLyoqCj4gKyAqIERPQzogU3lub3BzaXMg UEhZIHN1cHBvcnQKPiArICoKPiArICogU3lub3BzaXMgUEhZcyBhcmUgcHJpbWFyaWx5IHByb2dy YW1tZWQgYnkgbG9va2luZyB1cCBtYWdpYyByZWdpc3RlciB2YWx1ZXMKPiArICogaW4gdGFibGVz IHJhdGhlciB0aGFuIGNhbGN1bGF0aW5nIHRoZSBuZWNlc3NhcnkgdmFsdWVzIGF0IHJ1bnRpbWUu Cj4gKyAqCj4gKyAqIE9mIHNwZWNpYWwgbm90ZSBpcyB0aGF0IHRoZSBTTlBTIFBIWXMgaW5jbHVk ZSBhIGRlZGljYXRlZCBwb3J0IFBMTCwga25vd24gYXMKPiArICogYW4gIk1QTExCLiIgIFRoZSBN UExMQiByZXBsYWNlcyB0aGUgc2hhcmVkIERQTEwgZnVuY3Rpb25hbGl0eSB1c2VkIG9uIG90aGVy Cj4gKyAqIHBsYXRmb3JtcyBhbmQgbXVzdCBiZSBwcm9ncmFtbWluZyBkaXJlY3RseSBkdXJpbmcg dGhlIG1vZGVzZXQgc2VxdWVuY2UKPiArICogc2luY2UgaXQgaXMgbm90IGhhbmRsZWQgYnkgdGhl IHNoYXJlZCBEUExMIGZyYW1ld29yayBhcyBvbiBvdGhlciBwbGF0Zm9ybXMuCj4gKyAqLwo+ICsK PiArLyoKPiArICogQmFzaWMgRFAgbGluayByYXRlcyB3aXRoIDEwMCBNSHogcmVmZXJlbmNlIGNs b2NrLgo+ICsgKi8KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfbXBsbGJfc3RhdGUg ZGcyX2RwX3Jicl8xMDAgPSB7Cj4gKwkuY2xvY2sgPSAxNjIwMDAsCj4gKwkucmVmX2NvbnRyb2wg PQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX1JFRl9DT05UUk9MX1JFRl9SQU5HRSwgMyks Cj4gKwkubXBsbGJfY3AgPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0NQX0lO VCwgNCkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0NQX1BST1AsIDIwKSB8 Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfSU5UX0dTLCA2NSkgfAo+ICsJ CVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0NQX1BST1BfR1MsIDEyNyksCj4gKwkubXBs bGJfZGl2ID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9ESVY1X0NMS19FTiwg MSkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX1RYX0NMS19ESVYsIDIpIHwK PiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9QTUlYX0VOLCAxKSB8Cj4gKwkJUkVH X0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfVjJJLCAyKSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAo U05QU19QSFlfTVBMTEJfRlJFUV9WQ08sIDIpLAo+ICsJLm1wbGxiX2RpdjIgPQo+ICsJCVJFR19G SUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX1JFRl9DTEtfRElWLCAyKSB8Cj4gKwkJUkVHX0ZJRUxE X1BSRVAoU05QU19QSFlfTVBMTEJfTVVMVElQTElFUiwgMjI2KSwKPiArCS5tcGxsYl9mcmFjbjEg PQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZSQUNOX0NHR19VUERBVEVfRU4s IDEpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkFDTl9FTiwgMSkgfAo+ ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZSQUNOX0RFTiwgNSksCj4gKwkubXBs bGJfZnJhY24yID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkFDTl9RVU9U LCAzOTMyMSkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZSQUNOX1JFTSwg MyksCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX21wbGxiX3N0YXRlIGRn Ml9kcF9oYnIxXzEwMCA9IHsKPiArCS5jbG9jayA9IDI3MDAwMCwKPiArCS5yZWZfY29udHJvbCA9 Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfUkVGX0NPTlRST0xfUkVGX1JBTkdFLCAzKSwK PiArCS5tcGxsYl9jcCA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfSU5U LCA0KSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfUFJPUCwgMjApIHwK PiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9DUF9JTlRfR1MsIDY1KSB8Cj4gKwkJ UkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfUFJPUF9HUywgMTI3KSwKPiArCS5tcGxs Yl9kaXYgPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0RJVjVfQ0xLX0VOLCAx KSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfVFhfQ0xLX0RJViwgMSkgfAo+ ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX1YySSwgMikgfAo+ICsJCVJFR19GSUVM RF9QUkVQKFNOUFNfUEhZX01QTExCX0ZSRVFfVkNPLCAzKSwKPiArCS5tcGxsYl9kaXYyID0KPiAr CQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9SRUZfQ0xLX0RJViwgMikgfAo+ICsJCVJF R19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX01VTFRJUExJRVIsIDE4NCksCj4gKwkubXBsbGJf ZnJhY24xID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkFDTl9DR0dfVVBE QVRFX0VOLCAxKSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfRlJBQ05fREVO LCAxKSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfbXBsbGJfc3RhdGUg ZGcyX2RwX2hicjJfMTAwID0gewo+ICsJLmNsb2NrID0gNTQwMDAwLAo+ICsJLnJlZl9jb250cm9s ID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9SRUZfQ09OVFJPTF9SRUZfUkFOR0UsIDMp LAo+ICsJLm1wbGxiX2NwID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9DUF9J TlQsIDQpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9DUF9QUk9QLCAyMCkg fAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0NQX0lOVF9HUywgNjUpIHwKPiAr CQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9DUF9QUk9QX0dTLCAxMjcpLAo+ICsJLm1w bGxiX2RpdiA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfRElWNV9DTEtfRU4s IDEpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9WMkksIDIpIHwKPiArCQlS RUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkVRX1ZDTywgMyksCj4gKwkubXBsbGJfZGl2 MiA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfUkVGX0NMS19ESVYsIDIpIHwK PiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9NVUxUSVBMSUVSLCAxODQpLAo+ICsJ Lm1wbGxiX2ZyYWNuMSA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfRlJBQ05f Q0dHX1VQREFURV9FTiwgMSkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZS QUNOX0RFTiwgMSksCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX21wbGxi X3N0YXRlIGRnMl9kcF9oYnIzXzEwMCA9IHsKPiArCS5jbG9jayA9IDgxMDAwMCwKPiArCS5yZWZf Y29udHJvbCA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfUkVGX0NPTlRST0xfUkVGX1JB TkdFLCAzKSwKPiArCS5tcGxsYl9jcCA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBM TEJfQ1BfSU5ULCA0KSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfUFJP UCwgMTkpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9DUF9JTlRfR1MsIDY1 KSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfUFJPUF9HUywgMTI3KSwK PiArCS5tcGxsYl9kaXYgPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0RJVjVf Q0xLX0VOLCAxKSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfVjJJLCAyKSwK PiArCS5tcGxsYl9kaXYyID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9SRUZf Q0xLX0RJViwgMikgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX01VTFRJUExJ RVIsIDI5MiksCj4gKwkubXBsbGJfZnJhY24xID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BI WV9NUExMQl9GUkFDTl9DR0dfVVBEQVRFX0VOLCAxKSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05Q U19QSFlfTVBMTEJfRlJBQ05fREVOLCAxKSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgaW50ZWxfbXBsbGJfc3RhdGUgKmRnMl9kcF8xMDBfdGFibGVzW10gPSB7Cj4gKwkmZGcyX2Rw X3Jicl8xMDAsCj4gKwkmZGcyX2RwX2hicjFfMTAwLAo+ICsJJmRnMl9kcF9oYnIyXzEwMCwKPiAr CSZkZzJfZHBfaGJyM18xMDAsCj4gKwlOVUxMLAo+ICt9Owo+ICsKPiArLyoKPiArICogQmFzaWMg RFAgbGluayByYXRlcyB3aXRoIDM4LjQgTUh6IHJlZmVyZW5jZSBjbG9jay4KPiArICovCj4gKwo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX21wbGxiX3N0YXRlIGRnMl9kcF9yYnJfMzhfNCA9 IHsKPiArCS5jbG9jayA9IDE2MjAwMCwKPiArCS5yZWZfY29udHJvbCA9Cj4gKwkJUkVHX0ZJRUxE X1BSRVAoU05QU19QSFlfUkVGX0NPTlRST0xfUkVGX1JBTkdFLCAxKSwKPiArCS5tcGxsYl9jcCA9 Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfSU5ULCA1KSB8Cj4gKwkJUkVH X0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfUFJPUCwgMjUpIHwKPiArCQlSRUdfRklFTERf UFJFUChTTlBTX1BIWV9NUExMQl9DUF9JTlRfR1MsIDY1KSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAo U05QU19QSFlfTVBMTEJfQ1BfUFJPUF9HUywgMTI3KSwKPiArCS5tcGxsYl9kaXYgPQo+ICsJCVJF R19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0RJVjVfQ0xLX0VOLCAxKSB8Cj4gKwkJUkVHX0ZJ RUxEX1BSRVAoU05QU19QSFlfTVBMTEJfVFhfQ0xLX0RJViwgMikgfAo+ICsJCVJFR19GSUVMRF9Q UkVQKFNOUFNfUEhZX01QTExCX1BNSVhfRU4sIDEpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBT X1BIWV9NUExMQl9WMkksIDIpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9G UkVRX1ZDTywgMiksCj4gKwkubXBsbGJfZGl2MiA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19Q SFlfTVBMTEJfUkVGX0NMS19ESVYsIDEpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9N UExMQl9NVUxUSVBMSUVSLCAzMDQpLAo+ICsJLm1wbGxiX2ZyYWNuMSA9Cj4gKwkJUkVHX0ZJRUxE X1BSRVAoU05QU19QSFlfTVBMTEJfRlJBQ05fQ0dHX1VQREFURV9FTiwgMSkgfAo+ICsJCVJFR19G SUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZSQUNOX0VOLCAxKSB8Cj4gKwkJUkVHX0ZJRUxEX1BS RVAoU05QU19QSFlfTVBMTEJfRlJBQ05fREVOLCAxKSwKPiArCS5tcGxsYl9mcmFjbjIgPQo+ICsJ CVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZSQUNOX1FVT1QsIDQ5MTUyKSwKPiArfTsK PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfbXBsbGJfc3RhdGUgZGcyX2RwX2hicjFf MzhfNCA9IHsKPiArCS5jbG9jayA9IDI3MDAwMCwKPiArCS5yZWZfY29udHJvbCA9Cj4gKwkJUkVH X0ZJRUxEX1BSRVAoU05QU19QSFlfUkVGX0NPTlRST0xfUkVGX1JBTkdFLCAxKSwKPiArCS5tcGxs Yl9jcCA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfSU5ULCA1KSB8Cj4g KwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfUFJPUCwgMjUpIHwKPiArCQlSRUdf RklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9DUF9JTlRfR1MsIDY1KSB8Cj4gKwkJUkVHX0ZJRUxE X1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfUFJPUF9HUywgMTI3KSwKPiArCS5tcGxsYl9kaXYgPQo+ ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0RJVjVfQ0xLX0VOLCAxKSB8Cj4gKwkJ UkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfVFhfQ0xLX0RJViwgMSkgfAo+ICsJCVJFR19G SUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX1BNSVhfRU4sIDEpIHwKPiArCQlSRUdfRklFTERfUFJF UChTTlBTX1BIWV9NUExMQl9WMkksIDIpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9N UExMQl9GUkVRX1ZDTywgMyksCj4gKwkubXBsbGJfZGl2MiA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAo U05QU19QSFlfTVBMTEJfUkVGX0NMS19ESVYsIDEpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBT X1BIWV9NUExMQl9NVUxUSVBMSUVSLCAyNDgpLAo+ICsJLm1wbGxiX2ZyYWNuMSA9Cj4gKwkJUkVH X0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfRlJBQ05fQ0dHX1VQREFURV9FTiwgMSkgfAo+ICsJ CVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZSQUNOX0VOLCAxKSB8Cj4gKwkJUkVHX0ZJ RUxEX1BSRVAoU05QU19QSFlfTVBMTEJfRlJBQ05fREVOLCAxKSwKPiArCS5tcGxsYl9mcmFjbjIg PQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZSQUNOX1FVT1QsIDQwOTYwKSwK PiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfbXBsbGJfc3RhdGUgZGcyX2Rw X2hicjJfMzhfNCA9IHsKPiArCS5jbG9jayA9IDU0MDAwMCwKPiArCS5yZWZfY29udHJvbCA9Cj4g KwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfUkVGX0NPTlRST0xfUkVGX1JBTkdFLCAxKSwKPiAr CS5tcGxsYl9jcCA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfSU5ULCA1 KSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfUFJPUCwgMjUpIHwKPiAr CQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9DUF9JTlRfR1MsIDY1KSB8Cj4gKwkJUkVH X0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfUFJPUF9HUywgMTI3KSwKPiArCS5tcGxsYl9k aXYgPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0RJVjVfQ0xLX0VOLCAxKSB8 Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfUE1JWF9FTiwgMSkgfAo+ICsJCVJF R19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX1YySSwgMikgfAo+ICsJCVJFR19GSUVMRF9QUkVQ KFNOUFNfUEhZX01QTExCX0ZSRVFfVkNPLCAzKSwKPiArCS5tcGxsYl9kaXYyID0KPiArCQlSRUdf RklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9SRUZfQ0xLX0RJViwgMSkgfAo+ICsJCVJFR19GSUVM RF9QUkVQKFNOUFNfUEhZX01QTExCX01VTFRJUExJRVIsIDI0OCksCj4gKwkubXBsbGJfZnJhY24x ID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkFDTl9DR0dfVVBEQVRFX0VO LCAxKSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfRlJBQ05fRU4sIDEpIHwK PiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkFDTl9ERU4sIDEpLAo+ICsJLm1w bGxiX2ZyYWNuMiA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfRlJBQ05fUVVP VCwgNDA5NjApLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9tcGxsYl9z dGF0ZSBkZzJfZHBfaGJyM18zOF80ID0gewo+ICsJLmNsb2NrID0gODEwMDAwLAo+ICsJLnJlZl9j b250cm9sID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9SRUZfQ09OVFJPTF9SRUZfUkFO R0UsIDEpLAo+ICsJLm1wbGxiX2NwID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExM Ql9DUF9JTlQsIDYpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9DUF9QUk9Q LCAyNikgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0NQX0lOVF9HUywgNjUp IHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9DUF9QUk9QX0dTLCAxMjcpLAo+ ICsJLm1wbGxiX2RpdiA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfRElWNV9D TEtfRU4sIDEpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9QTUlYX0VOLCAx KSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfVjJJLCAyKSwKPiArCS5tcGxs Yl9kaXYyID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9SRUZfQ0xLX0RJViwg MSkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX01VTFRJUExJRVIsIDM4OCks Cj4gKwkubXBsbGJfZnJhY24xID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9G UkFDTl9DR0dfVVBEQVRFX0VOLCAxKSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBM TEJfRlJBQ05fRU4sIDEpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkFD Tl9ERU4sIDEpLAo+ICsJLm1wbGxiX2ZyYWNuMiA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19Q SFlfTVBMTEJfRlJBQ05fUVVPVCwgNjE0NDApLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBpbnRlbF9tcGxsYl9zdGF0ZSAqZGcyX2RwXzM4XzRfdGFibGVzW10gPSB7Cj4gKwkmZGcy X2RwX3Jicl8zOF80LAo+ICsJJmRnMl9kcF9oYnIxXzM4XzQsCj4gKwkmZGcyX2RwX2hicjJfMzhf NCwKPiArCSZkZzJfZHBfaGJyM18zOF80LAo+ICsJTlVMTCwKPiArfTsKPiArCj4gKy8qCj4gKyAq IGVEUCBsaW5rIHJhdGVzIHdpdGggMTAwIE1IeiByZWZlcmVuY2UgY2xvY2suCj4gKyAqLwo+ICsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9tcGxsYl9zdGF0ZSBkZzJfZWRwX3IyMTYgPSB7 Cj4gKwkuY2xvY2sgPSAyMTYwMDAsCj4gKwkucmVmX2NvbnRyb2wgPQo+ICsJCVJFR19GSUVMRF9Q UkVQKFNOUFNfUEhZX1JFRl9DT05UUk9MX1JFRl9SQU5HRSwgMyksCj4gKwkubXBsbGJfY3AgPQo+ ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0NQX0lOVCwgNCkgfAo+ICsJCVJFR19G SUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0NQX1BST1AsIDE5KSB8Cj4gKwkJUkVHX0ZJRUxEX1BS RVAoU05QU19QSFlfTVBMTEJfQ1BfSU5UX0dTLCA2NSkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNO UFNfUEhZX01QTExCX0NQX1BST1BfR1MsIDEyNyksCj4gKwkubXBsbGJfZGl2ID0KPiArCQlSRUdf RklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9ESVY1X0NMS19FTiwgMSkgfAo+ICsJCVJFR19GSUVM RF9QUkVQKFNOUFNfUEhZX01QTExCX1RYX0NMS19ESVYsIDIpIHwKPiArCQlSRUdfRklFTERfUFJF UChTTlBTX1BIWV9NUExMQl9QTUlYX0VOLCAxKSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19Q SFlfTVBMTEJfVjJJLCAyKSwKPiArCS5tcGxsYl9kaXYyID0KPiArCQlSRUdfRklFTERfUFJFUChT TlBTX1BIWV9NUExMQl9SRUZfQ0xLX0RJViwgMikgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNf UEhZX01QTExCX01VTFRJUExJRVIsIDMxMiksCj4gKwkubXBsbGJfZnJhY24xID0KPiArCQlSRUdf RklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkFDTl9DR0dfVVBEQVRFX0VOLCAxKSB8Cj4gKwkJ UkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfRlJBQ05fRU4sIDEpIHwKPiArCQlSRUdfRklF TERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkFDTl9ERU4sIDUpLAo+ICsJLm1wbGxiX2ZyYWNuMiA9 Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfRlJBQ05fUVVPVCwgNTI0MjgpIHwK PiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkFDTl9SRU0sIDQpLAo+ICsJLm1w bGxiX3NzY2VuID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9TU0NfRU4sIDEp IHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9TU0NfUEVBSywgNTA5NjEpLAo+ ICsJLm1wbGxiX3NzY3N0ZXAgPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX1NT Q19TVEVQU0laRSwgNjU3NTIpLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRl bF9tcGxsYl9zdGF0ZSBkZzJfZWRwX3IyNDMgPSB7Cj4gKwkuY2xvY2sgPSAyNDMwMDAsCj4gKwku cmVmX2NvbnRyb2wgPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX1JFRl9DT05UUk9MX1JF Rl9SQU5HRSwgMyksCj4gKwkubXBsbGJfY3AgPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZ X01QTExCX0NQX0lOVCwgNCkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0NQ X1BST1AsIDIwKSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfSU5UX0dT LCA2NSkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0NQX1BST1BfR1MsIDEy NyksCj4gKwkubXBsbGJfZGl2ID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9E SVY1X0NMS19FTiwgMSkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX1RYX0NM S19ESVYsIDIpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9QTUlYX0VOLCAx KSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfVjJJLCAyKSwKPiArCS5tcGxs Yl9kaXYyID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9SRUZfQ0xLX0RJViwg MikgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX01VTFRJUExJRVIsIDM1Niks Cj4gKwkubXBsbGJfZnJhY24xID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9G UkFDTl9DR0dfVVBEQVRFX0VOLCAxKSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBM TEJfRlJBQ05fRU4sIDEpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkFD Tl9ERU4sIDUpLAo+ICsJLm1wbGxiX2ZyYWNuMiA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19Q SFlfTVBMTEJfRlJBQ05fUVVPVCwgMjYyMTQpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BI WV9NUExMQl9GUkFDTl9SRU0sIDIpLAo+ICsJLm1wbGxiX3NzY2VuID0KPiArCQlSRUdfRklFTERf UFJFUChTTlBTX1BIWV9NUExMQl9TU0NfRU4sIDEpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBT X1BIWV9NUExMQl9TU0NfUEVBSywgNTczMzEpLAo+ICsJLm1wbGxiX3NzY3N0ZXAgPQo+ICsJCVJF R19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX1NTQ19TVEVQU0laRSwgNzM5NzEpLAo+ICt9Owo+ ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9tcGxsYl9zdGF0ZSBkZzJfZWRwX3IzMjQg PSB7Cj4gKwkuY2xvY2sgPSAzMjQwMDAsCj4gKwkucmVmX2NvbnRyb2wgPQo+ICsJCVJFR19GSUVM RF9QUkVQKFNOUFNfUEhZX1JFRl9DT05UUk9MX1JFRl9SQU5HRSwgMyksCj4gKwkubXBsbGJfY3Ag PQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0NQX0lOVCwgNCkgfAo+ICsJCVJF R19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0NQX1BST1AsIDIwKSB8Cj4gKwkJUkVHX0ZJRUxE X1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfSU5UX0dTLCA2NSkgfAo+ICsJCVJFR19GSUVMRF9QUkVQ KFNOUFNfUEhZX01QTExCX0NQX1BST1BfR1MsIDEyNyksCj4gKwkubXBsbGJfZGl2ID0KPiArCQlS RUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9ESVY1X0NMS19FTiwgMSkgfAo+ICsJCVJFR19G SUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX1RYX0NMS19ESVYsIDEpIHwKPiArCQlSRUdfRklFTERf UFJFUChTTlBTX1BIWV9NUExMQl9QTUlYX0VOLCAxKSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05Q U19QSFlfTVBMTEJfVjJJLCAyKSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJf RlJFUV9WQ08sIDIpLAo+ICsJLm1wbGxiX2RpdjIgPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNf UEhZX01QTExCX1JFRl9DTEtfRElWLCAyKSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlf TVBMTEJfTVVMVElQTElFUiwgMjI2KSwKPiArCS5tcGxsYl9mcmFjbjEgPQo+ICsJCVJFR19GSUVM RF9QUkVQKFNOUFNfUEhZX01QTExCX0ZSQUNOX0NHR19VUERBVEVfRU4sIDEpIHwKPiArCQlSRUdf RklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkFDTl9FTiwgMSkgfAo+ICsJCVJFR19GSUVMRF9Q UkVQKFNOUFNfUEhZX01QTExCX0ZSQUNOX0RFTiwgNSksCj4gKwkubXBsbGJfZnJhY24yID0KPiAr CQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9GUkFDTl9RVU9ULCAzOTMyMSkgfAo+ICsJ CVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZSQUNOX1JFTSwgMyksCj4gKwkubXBsbGJf c3NjZW4gPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX1NTQ19FTiwgMSkgfAo+ ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX1NTQ19QRUFLLCAzODIyMSksCj4gKwku bXBsbGJfc3Njc3RlcCA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfU1NDX1NU RVBTSVpFLCA0OTMxNCksCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX21w bGxiX3N0YXRlIGRnMl9lZHBfcjQzMiA9IHsKPiArCS5jbG9jayA9IDQzMjAwMCwKPiArCS5yZWZf Y29udHJvbCA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfUkVGX0NPTlRST0xfUkVGX1JB TkdFLCAzKSwKPiArCS5tcGxsYl9jcCA9Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBM TEJfQ1BfSU5ULCA0KSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfUFJP UCwgMTkpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9DUF9JTlRfR1MsIDY1 KSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfQ1BfUFJPUF9HUywgMTI3KSwK PiArCS5tcGxsYl9kaXYgPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0RJVjVf Q0xLX0VOLCAxKSB8Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfVFhfQ0xLX0RJ ViwgMSkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX1BNSVhfRU4sIDEpIHwK PiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9WMkksIDIpLAo+ICsJLm1wbGxiX2Rp djIgPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX1JFRl9DTEtfRElWLCAyKSB8 Cj4gKwkJUkVHX0ZJRUxEX1BSRVAoU05QU19QSFlfTVBMTEJfTVVMVElQTElFUiwgMzEyKSwKPiAr CS5tcGxsYl9mcmFjbjEgPQo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZSQUNO X0NHR19VUERBVEVfRU4sIDEpIHwKPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9NUExMQl9G UkFDTl9FTiwgMSkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01QTExCX0ZSQUNOX0RF TiwgNSksCj4gKwkubXBsbGJfZnJhY24yID0KPiArCQlSRUdfRklFTERfUFJFUChTTlBTX1BIWV9N UExMQl9GUkFDTl9RVU9ULCA1MjQyOCkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZX01Q TExCX0ZSQUNOX1JFTSwgNCksCj4gKwkubXBsbGJfc3NjZW4gPQo+ICsJCVJFR19GSUVMRF9QUkVQ KFNOUFNfUEhZX01QTExCX1NTQ19FTiwgMSkgfAo+ICsJCVJFR19GSUVMRF9QUkVQKFNOUFNfUEhZ X01QTExCX1NTQ19QRUFLLCA1MDk2MSksCj4gKwkubXBsbGJfc3Njc3RlcCA9Cj4gKwkJUkVHX0ZJ RUxEX1BSRVAoU05QU19QSFlfTVBMTEJfU1NDX1NURVBTSVpFLCA2NTc1MiksCj4gK307Cj4gKwo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX21wbGxiX3N0YXRlICpkZzJfZWRwX3RhYmxlc1td ID0gewo+ICsJJmRnMl9kcF9yYnJfMTAwLAo+ICsJJmRnMl9lZHBfcjIxNiwKPiArCSZkZzJfZWRw X3IyNDMsCj4gKwkmZGcyX2RwX2hicjFfMTAwLAo+ICsJJmRnMl9lZHBfcjMyNCwKPiArCSZkZzJf ZWRwX3I0MzIsCj4gKwkmZGcyX2RwX2hicjJfMTAwLAo+ICsJJmRnMl9kcF9oYnIzXzEwMCwKPiAr CU5VTEwsCj4gK307Cj4gKwo+ICtpbnQgaW50ZWxfbXBsbGJfY2FsY19zdGF0ZShzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiArCQkJICAgc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIpCj4gK3sKPiArCWNvbnN0IHN0cnVjdCBpbnRlbF9tcGxsYl9zdGF0ZSAqKnRhYmxl czsKPiArCWludCBpOwo+ICsKPiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUs IElOVEVMX09VVFBVVF9FRFApKSB7Cj4gKwkJdGFibGVzID0gZGcyX2VkcF90YWJsZXM7Cj4gKwl9 IGVsc2UgaWYgKGludGVsX2NydGNfaGFzX2RwX2VuY29kZXIoY3J0Y19zdGF0ZSkpIHsKPiArCQkv Kgo+ICsJCSAqIEZJWE1FOiBJbml0aWFsbHkgd2UncmUganVzdCBlbmFibGluZyB0aGUgImNvbWJv IiBvdXRwdXRzIG9uCj4gKwkJICogcG9ydCBBLUQuICBUaGUgTVBMTEIgZm9yIHRob3NlIHBvcnRz IHRha2VzIGFuIGlucHV0IGZyb20gdGhlCj4gKwkJICogIkRpc3BsYXkgRmlsdGVyIFBMTCIgd2hp Y2ggYWx3YXlzIGhhcyBhbiBvdXRwdXQgZnJlcXVlbmN5Cj4gKwkJICogb2YgMTAwIE1IeiwgaGVu Y2UgdGhlIHVzZSBvZiB0aGUgXzEwMCB0YWJsZXMgYmVsb3cuCj4gKwkJICoKPiArCQkgKiBPbmNl IHdlIGVuYWJsZSBwb3J0IFRDMSBpdCB3aWxsIGVpdGhlciB1c2UgdGhlIHNhbWUgMTAwIE1Iego+ ICsJCSAqICJEaXNwbGF5IEZpbHRlciBQTEwiICh3aGVuIHN0cmFwcGVkIHRvIHN1cHBvcnQgYSBu YXRpdmUKPiArCQkgKiBkaXNwbGF5IGNvbm5lY3Rpb24pIG9yIGRpZmZlcmVudCAzOC40IE1IeiAi RmlsdGVyIFBMTCIgd2hlbgo+ICsJCSAqIHN0cmFwcGVkIHRvIHN1cHBvcnQgYSBVU0IgY29ubmVj dGlvbiwgc28gd2UnbGwgbmVlZCB0byBjaGVjawo+ICsJCSAqIHRoYXQgdG8gZGV0ZXJtaW5lIHdo aWNoIHRhYmxlIHRvIHVzZS4KPiArCQkgKi8KPiArCQlpZiAoMCkKPiArCQkJdGFibGVzID0gZGcy X2RwXzM4XzRfdGFibGVzOwo+ICsJCWVsc2UKPiArCQkJdGFibGVzID0gZGcyX2RwXzEwMF90YWJs ZXM7Cj4gKwl9IGVsc2Ugewo+ICsJCS8qIFRPRE86IEFkZCBIRE1JIHN1cHBvcnQgKi8KPiArCQlN SVNTSU5HX0NBU0UoZW5jb2Rlci0+dHlwZSk7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4g Kwo+ICsJZm9yIChpID0gMDsgdGFibGVzW2ldOyBpKyspIHsKPiArCQlpZiAoY3J0Y19zdGF0ZS0+ cG9ydF9jbG9jayA8PSB0YWJsZXNbaV0tPmNsb2NrKSB7Cj4gKwkJCWNydGNfc3RhdGUtPm1wbGxi X3N0YXRlID0gKnRhYmxlc1tpXTsKPiArCQkJcmV0dXJuIDA7Cj4gKwkJfQo+ICsJfQo+ICsKPiAr CXJldHVybiAtRUlOVkFMOwo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX21wbGxiX2VuYWJsZShzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiArCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICsJY29uc3Qgc3RydWN0IGludGVs X21wbGxiX3N0YXRlICpwbGxfc3RhdGUgPSAmY3J0Y19zdGF0ZS0+bXBsbGJfc3RhdGU7Cj4gKwll bnVtIHBoeSBwaHkgPSBpbnRlbF9wb3J0X3RvX3BoeShkZXZfcHJpdiwgZW5jb2Rlci0+cG9ydCk7 Cj4gKwlpOTE1X3JlZ190IGVuYWJsZV9yZWcgPSAocGh5IDw9IFBIWV9EID8KPiArCQkJCSBERzJf UExMX0VOQUJMRShwaHkpIDogTUdfUExMX0VOQUJMRSgwKSk7Cj4gKwo+ICsJLyoKPiArCSAqIDMu IFNvZnR3YXJlIHByb2dyYW1zIHRoZSBmb2xsb3dpbmcgUExMIHJlZ2lzdGVycyBmb3IgdGhlIGRl c2lyZWQKPiArCSAqIGZyZXF1ZW5jeS4KPiArCSAqLwo+ICsJaW50ZWxfZGVfd3JpdGUoZGV2X3By aXYsIFNOUFNfUEhZX01QTExCX0NQKHBoeSksIHBsbF9zdGF0ZS0+bXBsbGJfY3ApOwo+ICsJaW50 ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIFNOUFNfUEhZX01QTExCX0RJVihwaHkpLCBwbGxfc3RhdGUt Pm1wbGxiX2Rpdik7Cj4gKwlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgU05QU19QSFlfTVBMTEJf RElWMihwaHkpLCBwbGxfc3RhdGUtPm1wbGxiX2RpdjIpOwo+ICsJaW50ZWxfZGVfd3JpdGUoZGV2 X3ByaXYsIFNOUFNfUEhZX01QTExCX1NTQ0VOKHBoeSksIHBsbF9zdGF0ZS0+bXBsbGJfc3NjZW4p Owo+ICsJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIFNOUFNfUEhZX01QTExCX1NTQ1NURVAocGh5 KSwgcGxsX3N0YXRlLT5tcGxsYl9zc2NzdGVwKTsKPiArCWludGVsX2RlX3dyaXRlKGRldl9wcml2 LCBTTlBTX1BIWV9NUExMQl9GUkFDTjEocGh5KSwgcGxsX3N0YXRlLT5tcGxsYl9mcmFjbjEpOwo+ ICsJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIFNOUFNfUEhZX01QTExCX0ZSQUNOMihwaHkpLCBw bGxfc3RhdGUtPm1wbGxiX2ZyYWNuMik7Cj4gKwo+ICsJLyoKPiArCSAqIDQuIElmIHRoZSBmcmVx dWVuY3kgd2lsbCByZXN1bHQgaW4gYSBjaGFuZ2UgdG8gdGhlIHZvbHRhZ2UKPiArCSAqIHJlcXVp cmVtZW50LCBmb2xsb3cgdGhlIERpc3BsYXkgVm9sdGFnZSBGcmVxdWVuY3kgU3dpdGNoaW5nIC0K PiArCSAqIFNlcXVlbmNlIEJlZm9yZSBGcmVxdWVuY3kgQ2hhbmdlLgo+ICsJICoKPiArCSAqIFdl IGhhbmRsZSB0aGlzIHN0ZXAgaW4gYnh0X3NldF9jZGNsaygpLgo+ICsJICovCj4gKwo+ICsJLyog NS4gU29mdHdhcmUgc2V0cyBEUExMX0VOQUJMRSBbUExMIEVuYWJsZV0gdG8gIjEiLiAqLwo+ICsJ aW50ZWxfdW5jb3JlX3JtdygmZGV2X3ByaXYtPnVuY29yZSwgZW5hYmxlX3JlZywgMCwgUExMX0VO QUJMRSk7Cj4gKwo+ICsJLyoKPiArCSAqIDkuIFNvZnR3YXJlIHNldHMgU05QU19QSFlfTVBMTEJf RElWIGRwX21wbGxiX2ZvcmNlX2VuIHRvICIxIi4gVGhpcwo+ICsJICogd2lsbCBrZWVwIHRoZSBQ TEwgcnVubmluZyBkdXJpbmcgdGhlIERESSBsYW5lIHByb2dyYW1taW5nIGFuZCBhbnkKPiArCSAq IHR5cGVDIERQIGNhYmxlIGRpc2Nvbm5lY3QuIERvIG5vdCBzZXQgdGhlIGZvcmNlIGJlZm9yZSBl bmFibGluZyB0aGUKPiArCSAqIFBMTCBiZWNhdXNlIHRoYXQgd2lsbCBzdGFydCB0aGUgUExMIGJl Zm9yZSBpdCBoYXMgc2FtcGxlZCB0aGUKPiArCSAqIGRpdmlkZXIgdmFsdWVzLgo+ICsJICovCj4g KwlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgU05QU19QSFlfTVBMTEJfRElWKHBoeSksCj4gKwkJ ICAgICAgIHBsbF9zdGF0ZS0+bXBsbGJfZGl2IHwgU05QU19QSFlfTVBMTEJfRk9SQ0VfRU4pOwo+ ICsKPiArCS8qCj4gKwkgKiAxMC4gU29mdHdhcmUgcG9sbHMgb24gcmVnaXN0ZXIgRFBMTF9FTkFC TEUgW1BMTCBMb2NrXSB0byBjb25maXJtIFBMTAo+ICsJICogaXMgbG9ja2VkIGF0IG5ldyBzZXR0 aW5ncy4gVGhpcyByZWdpc3RlciBiaXQgaXMgc2FtcGxpbmcgUEhZCj4gKwkgKiBkcF9tcGxsYl9z dGF0ZSBpbnRlcmZhY2Ugc2lnbmFsLgo+ICsJICovCj4gKwlpZiAoaW50ZWxfZGVfd2FpdF9mb3Jf c2V0KGRldl9wcml2LCBlbmFibGVfcmVnLCBQTExfTE9DSywgNSkpCj4gKwkJRFJNX0VSUk9SKCJQ b3J0ICVjIFBMTCBub3QgbG9ja2VkXG4iLCBwaHlfbmFtZShwaHkpKTsKPiArCj4gKwkvKgo+ICsJ ICogMTEuIElmIHRoZSBmcmVxdWVuY3kgd2lsbCByZXN1bHQgaW4gYSBjaGFuZ2UgdG8gdGhlIHZv bHRhZ2UKPiArCSAqIHJlcXVpcmVtZW50LCBmb2xsb3cgdGhlIERpc3BsYXkgVm9sdGFnZSBGcmVx dWVuY3kgU3dpdGNoaW5nIC0KPiArCSAqIFNlcXVlbmNlIEFmdGVyIEZyZXF1ZW5jeSBDaGFuZ2Uu Cj4gKwkgKgo+ICsJICogV2UgaGFuZGxlIHRoaXMgc3RlcCBpbiBieHRfc2V0X2NkY2xrKCkuCj4g KwkgKi8KPiArfQo+ICsKPiArdm9pZCBpbnRlbF9tcGxsYl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiArCWVudW0gcGh5IHBoeSA9IGludGVs X3BvcnRfdG9fcGh5KGRldl9wcml2LCBlbmNvZGVyLT5wb3J0KTsKPiArCWk5MTVfcmVnX3QgZW5h YmxlX3JlZyA9IChwaHkgPD0gUEhZX0QgPwo+ICsJCQkJIERHMl9QTExfRU5BQkxFKHBoeSkgOiBN R19QTExfRU5BQkxFKDApKTsKPiArCj4gKwkvKgo+ICsJICogMS4gSWYgdGhlIGZyZXF1ZW5jeSB3 aWxsIHJlc3VsdCBpbiBhIGNoYW5nZSB0byB0aGUgdm9sdGFnZQo+ICsJICogcmVxdWlyZW1lbnQs IGZvbGxvdyB0aGUgRGlzcGxheSBWb2x0YWdlIEZyZXF1ZW5jeSBTd2l0Y2hpbmcgLQo+ICsJICog U2VxdWVuY2UgQmVmb3JlIEZyZXF1ZW5jeSBDaGFuZ2UuCj4gKwkgKgo+ICsJICogV2UgaGFuZGxl IHRoaXMgc3RlcCBpbiBieHRfc2V0X2NkY2xrKCkuCj4gKwkgKi8KPiArCj4gKwkvKiAyLiBTb2Z0 d2FyZSBwcm9ncmFtcyBEUExMX0VOQUJMRSBbUExMIEVuYWJsZV0gdG8gIjAiICovCj4gKwlpbnRl bF91bmNvcmVfcm13KCZkZXZfcHJpdi0+dW5jb3JlLCBlbmFibGVfcmVnLCBQTExfRU5BQkxFLCAw KTsKPiArCj4gKwkvKgo+ICsJICogNC4gU29mdHdhcmUgcHJvZ3JhbXMgU05QU19QSFlfTVBMTEJf RElWIGRwX21wbGxiX2ZvcmNlX2VuIHRvICIwIi4KPiArCSAqIFRoaXMgd2lsbCBhbGxvdyB0aGUg UExMIHRvIHN0b3AgcnVubmluZy4KPiArCSAqLwo+ICsJaW50ZWxfdW5jb3JlX3JtdygmZGV2X3By aXYtPnVuY29yZSwgU05QU19QSFlfTVBMTEJfRElWKHBoeSksCj4gKwkJCSBTTlBTX1BIWV9NUExM Ql9GT1JDRV9FTiwgMCk7Cj4gKwo+ICsJLyoKPiArCSAqIDUuIFNvZnR3YXJlIHBvbGxzIERQTExf RU5BQkxFIFtQTEwgTG9ja10gZm9yIFBIWSBhY2tub3dsZWRnbWVudAo+ICsJICogKGRwX3R4WF9h Y2spIHRoYXQgdGhlIG5ldyB0cmFuc21pdHRlciBzZXR0aW5nIHJlcXVlc3QgaXMgY29tcGxldGVk Lgo+ICsJICovCj4gKwlpZiAoaW50ZWxfZGVfd2FpdF9mb3JfY2xlYXIoZGV2X3ByaXYsIGVuYWJs ZV9yZWcsIFBMTF9MT0NLLCA1KSkKPiArCQlEUk1fRVJST1IoIlBvcnQgJWMgUExMIG5vdCBsb2Nr ZWRcbiIsIHBoeV9uYW1lKHBoeSkpOwo+ICsKPiArCS8qCj4gKwkgKiA2LiBJZiB0aGUgZnJlcXVl bmN5IHdpbGwgcmVzdWx0IGluIGEgY2hhbmdlIHRvIHRoZSB2b2x0YWdlCj4gKwkgKiByZXF1aXJl bWVudCwgZm9sbG93IHRoZSBEaXNwbGF5IFZvbHRhZ2UgRnJlcXVlbmN5IFN3aXRjaGluZyAtCj4g KwkgKiBTZXF1ZW5jZSBBZnRlciBGcmVxdWVuY3kgQ2hhbmdlLgo+ICsJICoKPiArCSAqIFdlIGhh bmRsZSB0aGlzIHN0ZXAgaW4gYnh0X3NldF9jZGNsaygpLgo+ICsJICovCj4gK30KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zbnBzX3BoeS5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zbnBzX3BoeS5oCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjIwNWFiNDZmMGI2Nwo+IC0tLSAvZGV2L251 bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3NucHNfcGh5LmgK PiBAQCAtMCwwICsxLDE4IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8K PiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KPiArICovCj4g Kwo+ICsjaWZuZGVmIF9fSU5URUxfU05QU19QSFlfSF9fCj4gKyNkZWZpbmUgX19JTlRFTF9TTlBT X1BIWV9IX18KPiArCj4gK3N0cnVjdCBpbnRlbF9lbmNvZGVyOwo+ICtzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZTsKPiArCj4gK2ludCBpbnRlbF9tcGxsYl9jYWxjX3N0YXRlKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkgICBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2Rlcik7Cj4gK3ZvaWQgaW50ZWxfbXBsbGJfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+ICsJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7 Cj4gK3ZvaWQgaW50ZWxfbXBsbGJfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl cik7Cj4gKwo+ICsjZW5kaWYgLyogX19JTlRFTF9TTlBTX1BIWV9IX18gKi8KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmgKPiBpbmRleCA0NWNjNzZmODg3MzguLjM3ZDgyY2JmYmE2YiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC0yMjg2LDYgKzIyODYsNTcgQEAgc3RhdGljIGlubGlu ZSBib29sIGk5MTVfbW1pb19yZWdfdmFsaWQoaTkxNV9yZWdfdCByZWcpCj4gICNkZWZpbmUgICBN R19EUF9NT0RFX0NGR19EUF9YMl9NT0RFCQkJKDEgPDwgNykKPiAgI2RlZmluZSAgIE1HX0RQX01P REVfQ0ZHX0RQX1gxX01PREUJCQkoMSA8PCA2KQo+ICAKPiArLyoKPiArICogREcyIFNOUFMgUEhZ IHJlZ2lzdGVycyAoVEMxID0gUEhZX0UpCj4gKyAqLwo+ICsjZGVmaW5lIF9TTlBTX1BIWV9BX0JB U0UJCQkweDE2ODAwMAo+ICsjZGVmaW5lIF9TTlBTX1BIWV9CX0JBU0UJCQkweDE2OTAwMAo+ICsj ZGVmaW5lIF9TTlBTX1BIWShwaHkpCQkJCV9QSFkocGh5LCBcCj4gKwkJCQkJCSAgICAgX1NOUFNf UEhZX0FfQkFTRSwgXAo+ICsJCQkJCQkgICAgIF9TTlBTX1BIWV9CX0JBU0UpCj4gKyNkZWZpbmUg X1NOUFMyKHBoeSwgcmVnKQkJCShfU05QU19QSFkocGh5KSAtIFwKPiArCQkJCQkJIF9TTlBTX1BI WV9BX0JBU0UgKyAocmVnKSkKPiArI2RlZmluZSBfTU1JT19TTlBTKHBoeSwgcmVnKQkJCV9NTUlP KF9TTlBTMihwaHksIHJlZykpCj4gKyNkZWZpbmUgX01NSU9fU05QU19MTihsbiwgcGh5LCByZWcp CQlfTU1JTyhfU05QUzIocGh5LCBcCj4gKwkJCQkJCQkgICAgIChyZWcpICsgKGxuKSAqIDB4MTAp KQo+ICsKPiArI2RlZmluZSBTTlBTX1BIWV9NUExMQl9DUChwaHkpCQkJX01NSU9fU05QUyhwaHks IDB4MTY4MDAwKQo+ICsjZGVmaW5lICAgU05QU19QSFlfTVBMTEJfQ1BfSU5UCQkJUkVHX0dFTk1B U0soMzEsIDI1KQo+ICsjZGVmaW5lICAgU05QU19QSFlfTVBMTEJfQ1BfSU5UX0dTCQlSRUdfR0VO TUFTSygyMywgMTcpCj4gKyNkZWZpbmUgICBTTlBTX1BIWV9NUExMQl9DUF9QUk9QCQlSRUdfR0VO TUFTSygxNSwgOSkKPiArI2RlZmluZSAgIFNOUFNfUEhZX01QTExCX0NQX1BST1BfR1MJCVJFR19H RU5NQVNLKDcsIDEpCj4gKwo+ICsjZGVmaW5lIFNOUFNfUEhZX01QTExCX0RJVihwaHkpCQkJX01N SU9fU05QUyhwaHksIDB4MTY4MDA0KQo+ICsjZGVmaW5lICAgU05QU19QSFlfTVBMTEJfRk9SQ0Vf RU4JCVJFR19CSVQoMzEpCj4gKyNkZWZpbmUgICBTTlBTX1BIWV9NUExMQl9ESVY1X0NMS19FTgkJ UkVHX0JJVCgyOSkKPiArI2RlZmluZSAgIFNOUFNfUEhZX01QTExCX1YySQkJCVJFR19HRU5NQVNL KDI3LCAyNikKPiArI2RlZmluZSAgIFNOUFNfUEhZX01QTExCX0ZSRVFfVkNPCQlSRUdfR0VOTUFT SygyNSwgMjQpCj4gKyNkZWZpbmUgICBTTlBTX1BIWV9NUExMQl9QTUlYX0VOCQlSRUdfQklUKDEw KQo+ICsjZGVmaW5lICAgU05QU19QSFlfTVBMTEJfVFhfQ0xLX0RJVgkJUkVHX0dFTk1BU0soNywg NSkKPiArCj4gKyNkZWZpbmUgU05QU19QSFlfTVBMTEJfRlJBQ04xKHBoeSkJCV9NTUlPX1NOUFMo cGh5LCAweDE2ODAwOCkKPiArI2RlZmluZSAgIFNOUFNfUEhZX01QTExCX0ZSQUNOX0VOCQlSRUdf QklUKDMxKQo+ICsjZGVmaW5lICAgU05QU19QSFlfTVBMTEJfRlJBQ05fQ0dHX1VQREFURV9FTglS RUdfQklUKDMwKQo+ICsjZGVmaW5lICAgU05QU19QSFlfTVBMTEJfRlJBQ05fREVOCQlSRUdfR0VO TUFTSygxNSwgMCkKPiArCj4gKyNkZWZpbmUgU05QU19QSFlfTVBMTEJfRlJBQ04yKHBoeSkJCV9N TUlPX1NOUFMocGh5LCAweDE2ODAwQykKPiArI2RlZmluZSAgIFNOUFNfUEhZX01QTExCX0ZSQUNO X1JFTQkJUkVHX0dFTk1BU0soMzEsIDE2KQo+ICsjZGVmaW5lICAgU05QU19QSFlfTVBMTEJfRlJB Q05fUVVPVAkJUkVHX0dFTk1BU0soMTUsIDApCj4gKwo+ICsjZGVmaW5lIFNOUFNfUEhZX01QTExC X1NTQ0VOKHBoeSkJCV9NTUlPX1NOUFMocGh5LCAweDE2ODAxNCkKPiArI2RlZmluZSAgIFNOUFNf UEhZX01QTExCX1NTQ19FTgkJCVJFR19CSVQoMzEpCj4gKyNkZWZpbmUgICBTTlBTX1BIWV9NUExM Ql9TU0NfUEVBSwkJUkVHX0dFTk1BU0soMjksIDEwKQo+ICsKPiArI2RlZmluZSBTTlBTX1BIWV9N UExMQl9TU0NTVEVQKHBoeSkJCV9NTUlPX1NOUFMocGh5LCAweDE2ODAxOCkKPiArI2RlZmluZSAg IFNOUFNfUEhZX01QTExCX1NTQ19TVEVQU0laRQkJUkVHX0dFTk1BU0soMzEsIDExKQo+ICsKPiAr I2RlZmluZSBTTlBTX1BIWV9NUExMQl9ESVYyKHBoeSkJCV9NTUlPX1NOUFMocGh5LCAweDE2ODAx QykKPiArI2RlZmluZSAgIFNOUFNfUEhZX01QTExCX1JFRl9DTEtfRElWCQlSRUdfR0VOTUFTSygx NCwgMTIpCj4gKyNkZWZpbmUgICBTTlBTX1BIWV9NUExMQl9NVUxUSVBMSUVSCQlSRUdfR0VOTUFT SygxMSwgMCkKPiArCj4gKyNkZWZpbmUgU05QU19QSFlfUkVGX0NPTlRST0wocGh5KQkJX01NSU9f U05QUyhwaHksIDB4MTY4MTg4KQo+ICsjZGVmaW5lICAgU05QU19QSFlfUkVGX0NPTlRST0xfUkVG X1JBTkdFCVJFR19HRU5NQVNLKDMxLCAyNykKPiArCj4gIC8qIFRoZSBzcGVjIGRlZmluZXMgdGhp cyBvbmx5IGZvciBCWFQgUEhZMCwgYnV0IGxldHMgYXNzdW1lIHRoYXQgdGhpcwo+ICAgKiB3b3Vs ZCBleGlzdCBmb3IgUEhZMSB0b28gaWYgaXQgaGFkIGEgc2Vjb25kIGNoYW5uZWwuCj4gICAqLwo+ IEBAIC0xMDYwOCw2ICsxMDY1OSwxMSBAQCBlbnVtIHNrbF9wb3dlcl9nYXRlIHsKPiAgI2RlZmlu ZSBDTkxfRFBMTF9FTkFCTEUocGxsKQlfTU1JT19QTEwzKHBsbCwgRFBMTDBfRU5BQkxFLCBEUExM MV9FTkFCTEUsIFwKPiAgCQkJCQkgICBfQURMU19EUExMMl9FTkFCTEUsIF9BRExTX0RQTEwzX0VO QUJMRSkKPiAgCj4gKyNkZWZpbmUgX0RHMl9QTEwzX0VOQUJMRQkweDQ2MDFDCj4gKwo+ICsjZGVm aW5lIERHMl9QTExfRU5BQkxFKHBsbCkgX01NSU9fUExMMyhwbGwsIERQTEwwX0VOQUJMRSwgRFBM TDFfRU5BQkxFLCBcCj4gKwkJCQkgICAgICAgX0FETFNfRFBMTDJfRU5BQkxFLCBfREcyX1BMTDNf RU5BQkxFKQo+ICsKPiAgI2RlZmluZSBUQlRfUExMX0VOQUJMRQkJX01NSU8oMHg0NjAyMCkKPiAg Cj4gICNkZWZpbmUgX01HX1BMTDFfRU5BQkxFCQkweDQ2MDMwCj4gLS0gCj4gMi4yNS40Cj4gCj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1n ZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=