From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: [PATCH v7 09/19] drm/i915/dsc: Define & Compute VESA DSC params Date: Thu, 1 Nov 2018 23:46:49 -0700 Message-ID: <20181102064659.8991-10-manasi.d.navare@intel.com> References: <20181102064659.8991-1-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181102064659.8991-1-manasi.d.navare@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogR2F1cmF2IEsgU2luZ2ggPGdhdXJhdi5rLnNpbmdoQGludGVsLmNvbT4KClRoaXMgcGF0 Y2hlcyBkb2VzIHRoZSBmb2xsb3dpbmc6CgoxLiBUaGlzIHBhdGNoIGRlZmluZXMgYWxsIHRoZSBE U0MgcGFyYW1ldGVycyBhcyBwZXIgdGhlIFZFU0EKRFNDIHNwZWNpZmljYXRpb24uIFRoZXNlIGFy ZSBzdG9yZWQgaW4gdGhlIGVuY29kZXIgYW5kIHVzZWQKdG8gY29tcHV0ZSB0aGUgUFBTIHBhcmFt ZXRlcnMgdG8gYmUgc2VudCB0byB0aGUgU2luay4KMi4gQ29tcHV0ZSBhbGwgdGhlIERTQyBwYXJh bWV0ZXJzIHdoaWNoIGFyZSBkZXJpdmVkIGZyb20gRFNDCnN0YXRlIG9mIGludGVsX2NydGNfc3Rh dGUuCjMuIENvbXB1dGUgYWxsIHBhcmFtZXRlcnMgdGhhdCBhcmUgVkVTQSBEU0Mgc3BlY2lmaWMK ClRoaXMgY29tcHV0YXRpb24gaGFwcGVucyBpbiB0aGUgYXRvbWljIGNoZWNrIHBoYXNlIGR1cmlu Zwpjb21wdXRlX2NvbmZpZygpIHRvIHZhbGlkYXRlIGlmIGRpc3BsYXkgc3RyZWFtIGNvbXByZXNz aW9uCmNhbiBiZSBlbmFibGVkIGZvciB0aGUgcmVxdWVzdGVkIG1vZGUuCgp2NzogKEZyb20gTWFu YXNpKQoqIERvbnQgdXNlIHNpZ25lZCBpbnQgZm9yIHJjX3JhbmdlX3BhcmFtcyAoTWFuYXNpKQoq IE1hc2sgdGhlIHJhbmdlX2JwZ19vZmZzZXQgdG8gdXNlIG9ubHkgNiBiaXRzCiogQWRkIFNQRFgg aWRlbnRpZmllciAoQ2hyaXMgV2lsc29uKQp2NiAoRnJvbSBNYW5hc2kpOgoqIEFkZCBhIGNoZWNr IGZvciBsaW5lX2J1Zl9kZXB0aCByZXR1cm4gdmFsdWUgKEFudXNoYSkKKiBSZW1vdmUgRFJNIERT QyBjb25zdGFudHMgdG8gZGlmZmVyZW50IHBhdGNoIChNYW5hc2kpCnY1IChGcm9tIE1hbmFzaSk6 CiogQWRkIGxvZ2ljIHRvIGxpbWl0IHRoZSBtYXggbGluZSBidWYgZGVwdGggZm9yIERTQyAxLjEg dG8gMTMKYXMgcGVyIERTQyAxLjEgc3BlYwoqIEZpeCBkaW0gY2hlY2twYXRjaCB3YXJuaW5ncy9j aGVja3MKCnY0IChGcm9tIEdhdXJhdik6CiogUmViYXNlIG9uIGxhdGVzdCBkcm0gdGlwCiogcmVu YW1lIHZhcmlhYmxlIG5hbWUoTWFuYXNpKQoqIFBvcHVsYXRlIGxpbmVidWZfZGVwdGggdmFyaWFi bGUoTWFuYXNpKQoKdjMgKEZyb20gR2F1cmF2KToKKiBSZWJhc2UgbXkgcHJldmlvdXMgcGF0Y2hl cyBvbiB0b3Agb2YgTWFuYXNpJ3MgbGF0ZXN0IHBhdGNoCnNlcmllcwoqIFVzaW5nID4+biByYXRo ZXIgdGhhbiAvMl5uIChNYW5hc2kpCiogQ2hhbmdlIHRoZSBjb21taXQgbWVzc2FnZSB0byBleHBs YWluIHdoYXQgdGhlIHBhdGNoIGlzIGRvaW5nKEdhdXJhdikKCkZpeGVkIHJldmlldyBjb21tZW50 cyBmcm9tIFZpbGxlOgoqIERvbid0IHVzZSBtYWNybyBUV09TX0NPTVBMRU1FTlQKKiBNZW50aW9u IGluIGNvbW1lbnQgYWJvdXQgdGhlIHNvdXJjZSBvZiBSQyBwYXJhbXMKKiBSZXR1cm4gZGlyZWN0 bHkgZnJvbSBjYXNlIHN0YXRlbWVudHMKKiBVc2luZyBzaW5nbGUgYXNzc2lnbm1lbnQgZm9yIGFz c2lnbmluZyByY19yYW5nZV9wYXJhbXMKKiBVc2luZyA8PG4gcmF0aGVyIHRoYW4gKjJebiBhbmQg cmVtb3ZpbmcgdGhlIGNvbW1lbnRzCmFib3V0IHRoZSBmaXhlZCBwb2ludCBudW1iZXJzCgp2MiAo RnJvbSBNYW5hc2kpOgoqIFVwZGF0ZSBsb2dpYyBmb3IgbWlub3IgdmVyc2lvbiB0byBjb25zaWRl ciB0aGUgZHBjZCB2YWx1ZQphbmQgd2hhdCBzdXBwb3J0ZWQgYnkgdGhlIEhXIHBsYXRmb3JtCiog VXNlIERSTSBEU0MgY29uZmlnIHN0cnVjdCBpbnN0ZWFkIG9mIGludGVsX2RwIHN0cnVjdAoqIE1v dmUgdGhlIERTQyBjb25zdGFudHMgdG8gRFJNIERTQyBoZWFkZXIgZmlsZQoqIFVzZSB1MTYsIHU4 IHdoZXJlIGJpZ2dlciBkYXRhIHR5cGVzIG5vdCBuZWVkZWQKKiAqIENvbXB1dGUgdGhlIERTQyBw YXJhbWV0ZXJzIGFzIHBhcnQgb2YgRFNDIGNvbXB1dGUgY29uZmlnCnNpbmNlIHRoZSBjb21wdXRh dGlvbiBjYW4gZmFpbCAoTWFuYXNpKQoKQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51 eC5pbnRlbC5jb20+CkNjOiBWaWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVs LmNvbT4KQ2M6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KQ2M6 IEdhdXJhdiBLIFNpbmdoIDxnYXVyYXYuay5zaW5naEBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6 IEdhdXJhdiBLIFNpbmdoIDxnYXVyYXYuay5zaW5naEBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6 IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+CkNvLWRldmVsb3BlZC1i eTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6 IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwLmMgICB8ICAgNyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAg fCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jIHwgNDU1ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oICAgICAg IHwgICAzICsKIDUgZmlsZXMgY2hhbmdlZCwgNDcxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDI4YzdkNzg4NGU4OC4uYTUxYTlhZTBmNDk2IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQpAQCAtMTU2LDcgKzE1Niw4IEBAIGk5MTUteSArPSBkdm9fY2g3MDE3 Lm8gXAogCSAgaW50ZWxfc2R2by5vIFwKIAkgIGludGVsX3R2Lm8gXAogCSAgdmx2X2RzaS5vIFwK LQkgIHZsdl9kc2lfcGxsLm8KKwkgIHZsdl9kc2lfcGxsLm8gXAorCSAgaW50ZWxfdmRzYy5vCiAK ICMgUG9zdC1tb3J0ZW0gZGVidWcgYW5kIEdQVSBoYW5nIHN0YXRlIGNhcHR1cmUKIGk5MTUtJChD T05GSUdfRFJNX0k5MTVfQ0FQVFVSRV9FUlJPUikgKz0gaTkxNV9ncHVfZXJyb3IubwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwLmMKaW5kZXggMWIxMGUyN2IzZTJiLi4xMzg5MTg5MGQwNDEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYwpAQCAtMjA2OSw2ICsyMDY5LDEzIEBAIHN0YXRpYyBib29sIGludGVs X2RwX2RzY19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCQkJcmV0 dXJuIGZhbHNlOwogCQl9CiAJfQorCWlmIChpbnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoaW50 ZWxfZHAsIHBpcGVfY29uZmlnKSA8IDApIHsKKwkJRFJNX0VSUk9SKCJDYW5ub3QgY29tcHV0ZSB2 YWxpZCBEU0MgcGFyYW1ldGVycyBmb3IgSW5wdXQgQnBwID0gJWQiCisJCQkgICJDb21wcmVzc2Vk IEJQUCA9ICVkXG4iLAorCQkJICBwaXBlX2NvbmZpZy0+cGlwZV9icHAsCisJCQkgIHBpcGVfY29u ZmlnLT5kc2NfcGFyYW1zLmNvbXByZXNzZWRfYnBwKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KIAlw aXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5jb21wcmVzc2lvbl9lbmFibGUgPSB0cnVlOwogCURSTV9E RUJVR19LTVMoIkRQIERTQyBjb21wdXRlZCB3aXRoIElucHV0IEJwcCA9ICVkICIKIAkJICAgICAg IkNvbXByZXNzZWQgQnBwID0gJWQgU2xpY2UgQ291bnQgPSAlZFxuIiwKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKaW5kZXggNDkxODcyMzUzY2YwLi4zYjU3MTQ2NzY2YmIgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCkBAIC0xODUzLDYgKzE4NTMsMTAgQEAgdWludDE2X3QgaW50ZWxfZHBfZHNj X2dldF9vdXRwdXRfYnBwKGludCBsaW5rX2Nsb2NrLCB1aW50OF90IGxhbmVfY291bnQsCiB1aW50 OF90IGludGVsX2RwX2RzY19nZXRfc2xpY2VfY291bnQoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwgaW50IG1vZGVfY2xvY2ssCiAJCQkJICAgICBpbnQgbW9kZV9oZGlzcGxheSk7CiAKKy8qIGlu dGVsX3Zkc2MuYyAqLworaW50IGludGVsX2RwX2NvbXB1dGVfZHNjX3BhcmFtcyhzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAorCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZp Zyk7CisKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGludGVsX2RwX3VudXNlZF9sYW5lX21h c2soaW50IGxhbmVfY291bnQpCiB7CiAJcmV0dXJuIH4oKDEgPDwgbGFuZV9jb3VudCkgLSAxKSAm IDB4ZjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjBhMTkxOGYyZjY0MwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwpAQCAtMCwwICsxLDQ1NSBAQAorLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IE1JVAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE4IEludGVsIENvcnBv cmF0aW9uCisgKgorICogQXV0aG9yOiBHYXVyYXYgSyBTaW5naCA8Z2F1cmF2Lmsuc2luZ2hAaW50 ZWwuY29tPgorICogICAgICAgICBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwu Y29tPgorICovCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9pOTE1X2Ry bS5oPgorI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCisKK2Vu dW0gUk9XX0lOREVYX0JQUCB7CisJUk9XX0lOREVYXzZCUFAgPSAwLAorCVJPV19JTkRFWF84QlBQ LAorCVJPV19JTkRFWF8xMEJQUCwKKwlST1dfSU5ERVhfMTJCUFAsCisJUk9XX0lOREVYXzE1QlBQ LAorCU1BWF9ST1dfSU5ERVgKK307CisKK2VudW0gQ09MVU1OX0lOREVYX0JQQyB7CisJQ09MVU1O X0lOREVYXzhCUEMgPSAwLAorCUNPTFVNTl9JTkRFWF8xMEJQQywKKwlDT0xVTU5fSU5ERVhfMTJC UEMsCisJQ09MVU1OX0lOREVYXzE0QlBDLAorCUNPTFVNTl9JTkRFWF8xNkJQQywKKwlNQVhfQ09M VU1OX0lOREVYCit9OworCisjZGVmaW5lIERTQ19TVVBQT1JURURfVkVSU0lPTl9NSU4JCTEKKwor LyogRnJvbSBEU0NfdjEuMTEgc3BlYywgcmNfcGFyYW1ldGVyX1NldCBzeW50YXggZWxlbWVudCB0 eXBpY2FsbHkgY29uc3RhbnQgKi8KK3N0YXRpYyB1MTYgcmNfYnVmX3RocmVzaFtdID0geworCTg5 NiwgMTc5MiwgMjY4OCwgMzU4NCwgNDQ4MCwgNTM3NiwgNjI3MiwgNjcyMCwgNzE2OCwgNzYxNiwK Kwk3NzQ0LCA3ODcyLCA4MDAwLCA4MDY0Cit9OworCitzdHJ1Y3QgcmNfcGFyYW1ldGVycyB7CisJ dTE2IGluaXRpYWxfeG1pdF9kZWxheTsKKwl1OCBmaXJzdF9saW5lX2JwZ19vZmZzZXQ7CisJdTE2 IGluaXRpYWxfb2Zmc2V0OworCXU4IGZsYXRuZXNzX21pbl9xcDsKKwl1OCBmbGF0bmVzc19tYXhf cXA7CisJdTggcmNfcXVhbnRfaW5jcl9saW1pdDA7CisJdTggcmNfcXVhbnRfaW5jcl9saW1pdDE7 CisJc3RydWN0IGRybV9kc2NfcmNfcmFuZ2VfcGFyYW1ldGVycyByY19yYW5nZV9wYXJhbXNbRFND X05VTV9CVUZfUkFOR0VTXTsKK307CisKKy8qCisgKiBTZWxlY3RlZCBSYXRlIENvbnRyb2wgUmVs YXRlZCBQYXJhbWV0ZXIgUmVjb21tZW5kZWQgVmFsdWVzCisgKiBmcm9tIERTQ192MS4xMSBzcGVj ICYgQyBNb2RlbCByZWxlYXNlOiBEU0NfbW9kZWxfMjAxNjEyMTIKKyAqLworc3RhdGljIHN0cnVj dCByY19wYXJhbWV0ZXJzIHJjX3BhcmFtc1tdW01BWF9DT0xVTU5fSU5ERVhdID0geworeworCS8q IDZCUFAvOEJQQyAqLworCXsgNzY4LCAxNSwgNjE0NCwgMywgMTMsIDExLCAxMSwgeworCQl7IDAs IDQsIDAgfSwgeyAxLCA2LCAtMiB9LCB7IDMsIDgsIC0yIH0sIHsgNCwgOCwgLTQgfSwKKwkJeyA1 LCA5LCAtNiB9LCB7IDUsIDksIC02IH0sIHsgNiwgOSwgLTYgfSwgeyA2LCAxMCwgLTggfSwKKwkJ eyA3LCAxMSwgLTggfSwgeyA4LCAxMiwgLTEwIH0sIHsgOSwgMTIsIC0xMCB9LCB7IDEwLCAxMiwg LTEyIH0sCisJCXsgMTAsIDEyLCAtMTIgfSwgeyAxMSwgMTIsIC0xMiB9LCB7IDEzLCAxNCwgLTEy IH0KKwkJfQorCX0sCisJLyogNkJQUC8xMEJQQyAqLworCXsgNzY4LCAxNSwgNjE0NCwgNywgMTcs IDE1LCAxNSwgeworCQl7IDAsIDgsIDAgfSwgeyAzLCAxMCwgLTIgfSwgeyA3LCAxMiwgLTIgfSwg eyA4LCAxMiwgLTQgfSwKKwkJeyA5LCAxMywgLTYgfSwgeyA5LCAxMywgLTYgfSwgeyAxMCwgMTMs IC02IH0sIHsgMTAsIDE0LCAtOCB9LAorCQl7IDExLCAxNSwgLTggfSwgeyAxMiwgMTYsIC0xMCB9 LCB7IDEzLCAxNiwgLTEwIH0sCisJCXsgMTQsIDE2LCAtMTIgfSwgeyAxNCwgMTYsIC0xMiB9LCB7 IDE1LCAxNiwgLTEyIH0sCisJCXsgMTcsIDE4LCAtMTIgfQorCQl9CisJfSwKKwkvKiA2QlBQLzEy QlBDICovCisJeyA3NjgsIDE1LCA2MTQ0LCAxMSwgMjEsIDE5LCAxOSwgeworCQl7IDAsIDEyLCAw IH0sIHsgNSwgMTQsIC0yIH0sIHsgMTEsIDE2LCAtMiB9LCB7IDEyLCAxNiwgLTQgfSwKKwkJeyAx MywgMTcsIC02IH0sIHsgMTMsIDE3LCAtNiB9LCB7IDE0LCAxNywgLTYgfSwgeyAxNCwgMTgsIC04 IH0sCisJCXsgMTUsIDE5LCAtOCB9LCB7IDE2LCAyMCwgLTEwIH0sIHsgMTcsIDIwLCAtMTAgfSwK KwkJeyAxOCwgMjAsIC0xMiB9LCB7IDE4LCAyMCwgLTEyIH0sIHsgMTksIDIwLCAtMTIgfSwKKwkJ eyAyMSwgMjIsIC0xMiB9CisJCX0KKwl9LAorCS8qIDZCUFAvMTRCUEMgKi8KKwl7IDc2OCwgMTUs IDYxNDQsIDE1LCAyNSwgMjMsIDI3LCB7CisJCXsgMCwgMTYsIDAgfSwgeyA3LCAxOCwgLTIgfSwg eyAxNSwgMjAsIC0yIH0sIHsgMTYsIDIwLCAtNCB9LAorCQl7IDE3LCAyMSwgLTYgfSwgeyAxNywg MjEsIC02IH0sIHsgMTgsIDIxLCAtNiB9LCB7IDE4LCAyMiwgLTggfSwKKwkJeyAxOSwgMjMsIC04 IH0sIHsgMjAsIDI0LCAtMTAgfSwgeyAyMSwgMjQsIC0xMCB9LAorCQl7IDIyLCAyNCwgLTEyIH0s IHsgMjIsIDI0LCAtMTIgfSwgeyAyMywgMjQsIC0xMiB9LAorCQl7IDI1LCAyNiwgLTEyIH0KKwkJ fQorCX0sCisJLyogNkJQUC8xNkJQQyAqLworCXsgNzY4LCAxNSwgNjE0NCwgMTksIDI5LCAyNywg MjcsIHsKKwkJeyAwLCAyMCwgMCB9LCB7IDksIDIyLCAtMiB9LCB7IDE5LCAyNCwgLTIgfSwgeyAy MCwgMjQsIC00IH0sCisJCXsgMjEsIDI1LCAtNiB9LCB7IDIxLCAyNSwgLTYgfSwgeyAyMiwgMjUs IC02IH0sIHsgMjIsIDI2LCAtOCB9LAorCQl7IDIzLCAyNywgLTggfSwgeyAyNCwgMjgsIC0xMCB9 LCB7IDI1LCAyOCwgLTEwIH0sCisJCXsgMjYsIDI4LCAtMTIgfSwgeyAyNiwgMjgsIC0xMiB9LCB7 IDI3LCAyOCwgLTEyIH0sCisJCXsgMjksIDMwLCAtMTIgfQorCQl9CisJfSwKK30sCit7CisJLyog OEJQUC84QlBDICovCisJeyA1MTIsIDEyLCA2MTQ0LCAzLCAxMiwgMTEsIDExLCB7CisJCXsgMCwg NCwgMiB9LCB7IDAsIDQsIDAgfSwgeyAxLCA1LCAwIH0sIHsgMSwgNiwgLTIgfSwKKwkJeyAzLCA3 LCAtNCB9LCB7IDMsIDcsIC02IH0sIHsgMywgNywgLTggfSwgeyAzLCA4LCAtOCB9LAorCQl7IDMs IDksIC04IH0sIHsgMywgMTAsIC0xMCB9LCB7IDUsIDExLCAtMTAgfSwgeyA1LCAxMiwgLTEyIH0s CisJCXsgNSwgMTMsIC0xMiB9LCB7IDcsIDEzLCAtMTIgfSwgeyAxMywgMTUsIC0xMiB9CisJCX0K Kwl9LAorCS8qIDhCUFAvMTBCUEMgKi8KKwl7IDUxMiwgMTIsIDYxNDQsIDcsIDE2LCAxNSwgMTUs IHsKKwkJeyAwLCA0LCAyIH0sIHsgNCwgOCwgMCB9LCB7IDUsIDksIDAgfSwgeyA1LCAxMCwgLTIg fSwKKwkJeyA3LCAxMSwgLTQgfSwgeyA3LCAxMSwgLTYgfSwgeyA3LCAxMSwgLTggfSwgeyA3LCAx MiwgLTggfSwKKwkJeyA3LCAxMywgLTggfSwgeyA3LCAxNCwgLTEwIH0sIHsgOSwgMTUsIC0xMCB9 LCB7IDksIDE2LCAtMTIgfSwKKwkJeyA5LCAxNywgLTEyIH0sIHsgMTEsIDE3LCAtMTIgfSwgeyAx NywgMTksIC0xMiB9CisJCX0KKwl9LAorCS8qIDhCUFAvMTJCUEMgKi8KKwl7IDUxMiwgMTIsIDYx NDQsIDExLCAyMCwgMTksIDE5LCB7CisJCXsgMCwgMTIsIDIgfSwgeyA0LCAxMiwgMCB9LCB7IDks IDEzLCAwIH0sIHsgOSwgMTQsIC0yIH0sCisJCXsgMTEsIDE1LCAtNCB9LCB7IDExLCAxNSwgLTYg fSwgeyAxMSwgMTUsIC04IH0sIHsgMTEsIDE2LCAtOCB9LAorCQl7IDExLCAxNywgLTggfSwgeyAx MSwgMTgsIC0xMCB9LCB7IDEzLCAxOSwgLTEwIH0sCisJCXsgMTMsIDIwLCAtMTIgfSwgeyAxMywg MjEsIC0xMiB9LCB7IDE1LCAyMSwgLTEyIH0sCisJCXsgMjEsIDIzLCAtMTIgfQorCQl9CisJfSwK KwkvKiA4QlBQLzE0QlBDICovCisJeyA1MTIsIDEyLCA2MTQ0LCAxNSwgMjQsIDIzLCAyMywgewor CQl7IDAsIDEyLCAwIH0sIHsgNSwgMTMsIDAgfSwgeyAxMSwgMTUsIDAgfSwgeyAxMiwgMTcsIC0y IH0sCisJCXsgMTUsIDE5LCAtNCB9LCB7IDE1LCAxOSwgLTYgfSwgeyAxNSwgMTksIC04IH0sIHsg MTUsIDIwLCAtOCB9LAorCQl7IDE1LCAyMSwgLTggfSwgeyAxNSwgMjIsIC0xMCB9LCB7IDE3LCAy MiwgLTEwIH0sCisJCXsgMTcsIDIzLCAtMTIgfSwgeyAxNywgMjMsIC0xMiB9LCB7IDIxLCAyNCwg LTEyIH0sCisJCXsgMjQsIDI1LCAtMTIgfQorCQl9CisJfSwKKwkvKiA4QlBQLzE2QlBDICovCisJ eyA1MTIsIDEyLCA2MTQ0LCAxOSwgMjgsIDI3LCAyNywgeworCQl7IDAsIDEyLCAyIH0sIHsgNiwg MTQsIDAgfSwgeyAxMywgMTcsIDAgfSwgeyAxNSwgMjAsIC0yIH0sCisJCXsgMTksIDIzLCAtNCB9 LCB7IDE5LCAyMywgLTYgfSwgeyAxOSwgMjMsIC04IH0sIHsgMTksIDI0LCAtOCB9LAorCQl7IDE5 LCAyNSwgLTggfSwgeyAxOSwgMjYsIC0xMCB9LCB7IDIxLCAyNiwgLTEwIH0sCisJCXsgMjEsIDI3 LCAtMTIgfSwgeyAyMSwgMjcsIC0xMiB9LCB7IDI1LCAyOCwgLTEyIH0sCisJCXsgMjgsIDI5LCAt MTIgfQorCQl9CisJfSwKK30sCit7CisJLyogMTBCUFAvOEJQQyAqLworCXsgNDEwLCAxNSwgNTYz MiwgMywgMTIsIDExLCAxMSwgeworCQl7IDAsIDMsIDIgfSwgeyAwLCA0LCAwIH0sIHsgMSwgNSwg MCB9LCB7IDIsIDYsIC0yIH0sCisJCXsgMywgNywgLTQgfSwgeyAzLCA3LCAtNiB9LCB7IDMsIDcs IC04IH0sIHsgMywgOCwgLTggfSwKKwkJeyAzLCA5LCAtOCB9LCB7IDMsIDksIC0xMCB9LCB7IDUs IDEwLCAtMTAgfSwgeyA1LCAxMCwgLTEwIH0sCisJCXsgNSwgMTEsIC0xMiB9LCB7IDcsIDExLCAt MTIgfSwgeyAxMSwgMTIsIC0xMiB9CisJCX0KKwl9LAorCS8qIDEwQlBQLzEwQlBDICovCisJeyA0 MTAsIDE1LCA1NjMyLCA3LCAxNiwgMTUsIDE1LCB7CisJCXsgMCwgNywgMiB9LCB7IDQsIDgsIDAg fSwgeyA1LCA5LCAwIH0sIHsgNiwgMTAsIC0yIH0sCisJCXsgNywgMTEsIC00IH0sIHsgNywgMTEs IC02IH0sIHsgNywgMTEsIC04IH0sIHsgNywgMTIsIC04IH0sCisJCXsgNywgMTMsIC04IH0sIHsg NywgMTMsIC0xMCB9LCB7IDksIDE0LCAtMTAgfSwgeyA5LCAxNCwgLTEwIH0sCisJCXsgOSwgMTUs IC0xMiB9LCB7IDExLCAxNSwgLTEyIH0sIHsgMTUsIDE2LCAtMTIgfQorCQl9CisJfSwKKwkvKiAx MEJQUC8xMkJQQyAqLworCXsgNDEwLCAxNSwgNTYzMiwgMTEsIDIwLCAxOSwgMTksIHsKKwkJeyAw LCAxMSwgMiB9LCB7IDQsIDEyLCAwIH0sIHsgOSwgMTMsIDAgfSwgeyAxMCwgMTQsIC0yIH0sCisJ CXsgMTEsIDE1LCAtNCB9LCB7IDExLCAxNSwgLTYgfSwgeyAxMSwgMTUsIC04IH0sIHsgMTEsIDE2 LCAtOCB9LAorCQl7IDExLCAxNywgLTggfSwgeyAxMSwgMTcsIC0xMCB9LCB7IDEzLCAxOCwgLTEw IH0sCisJCXsgMTMsIDE4LCAtMTAgfSwgeyAxMywgMTksIC0xMiB9LCB7IDE1LCAxOSwgLTEyIH0s CisJCXsgMTksIDIwLCAtMTIgfQorCQl9CisJfSwKKwkvKiAxMEJQUC8xNEJQQyAqLworCXsgNDEw LCAxNSwgNTYzMiwgMTUsIDI0LCAyMywgMjMsIHsKKwkJeyAwLCAxMSwgMiB9LCB7IDUsIDEzLCAw IH0sIHsgMTEsIDE1LCAwIH0sIHsgMTMsIDE4LCAtMiB9LAorCQl7IDE1LCAxOSwgLTQgfSwgeyAx NSwgMTksIC02IH0sIHsgMTUsIDE5LCAtOCB9LCB7IDE1LCAyMCwgLTggfSwKKwkJeyAxNSwgMjEs IC04IH0sIHsgMTUsIDIxLCAtMTAgfSwgeyAxNywgMjIsIC0xMCB9LAorCQl7IDE3LCAyMiwgLTEw IH0sIHsgMTcsIDIzLCAtMTIgfSwgeyAxOSwgMjMsIC0xMiB9LAorCQl7IDIzLCAyNCwgLTEyIH0K KwkJfQorCX0sCisJLyogMTBCUFAvMTZCUEMgKi8KKwl7IDQxMCwgMTUsIDU2MzIsIDE5LCAyOCwg MjcsIDI3LCB7CisJCXsgMCwgMTEsIDIgfSwgeyA2LCAxNCwgMCB9LCB7IDEzLCAxNywgMCB9LCB7 IDE2LCAyMCwgLTIgfSwKKwkJeyAxOSwgMjMsIC00IH0sIHsgMTksIDIzLCAtNiB9LCB7IDE5LCAy MywgLTggfSwgeyAxOSwgMjQsIC04IH0sCisJCXsgMTksIDI1LCAtOCB9LCB7IDE5LCAyNSwgLTEw IH0sIHsgMjEsIDI2LCAtMTAgfSwKKwkJeyAyMSwgMjYsIC0xMCB9LCB7IDIxLCAyNywgLTEyIH0s IHsgMjMsIDI3LCAtMTIgfSwKKwkJeyAyNywgMjgsIC0xMiB9CisJCX0KKwl9LAorfSwKK3sKKwkv KiAxMkJQUC84QlBDICovCisJeyAzNDEsIDE1LCAyMDQ4LCAzLCAxMiwgMTEsIDExLCB7CisJCXsg MCwgMiwgMiB9LCB7IDAsIDQsIDAgfSwgeyAxLCA1LCAwIH0sIHsgMSwgNiwgLTIgfSwKKwkJeyAz LCA3LCAtNCB9LCB7IDMsIDcsIC02IH0sIHsgMywgNywgLTggfSwgeyAzLCA4LCAtOCB9LAorCQl7 IDMsIDksIC04IH0sIHsgMywgMTAsIC0xMCB9LCB7IDUsIDExLCAtMTAgfSwKKwkJeyA1LCAxMiwg LTEyIH0sIHsgNSwgMTMsIC0xMiB9LCB7IDcsIDEzLCAtMTIgfSwgeyAxMywgMTUsIC0xMiB9CisJ CX0KKwl9LAorCS8qIDEyQlBQLzEwQlBDICovCisJeyAzNDEsIDE1LCAyMDQ4LCA3LCAxNiwgMTUs IDE1LCB7CisJCXsgMCwgMiwgMiB9LCB7IDIsIDUsIDAgfSwgeyAzLCA3LCAwIH0sIHsgNCwgOCwg LTIgfSwKKwkJeyA2LCA5LCAtNCB9LCB7IDcsIDEwLCAtNiB9LCB7IDcsIDExLCAtOCB9LCB7IDcs IDEyLCAtOCB9LAorCQl7IDcsIDEzLCAtOCB9LCB7IDcsIDE0LCAtMTAgfSwgeyA5LCAxNSwgLTEw IH0sIHsgOSwgMTYsIC0xMiB9LAorCQl7IDksIDE3LCAtMTIgfSwgeyAxMSwgMTcsIC0xMiB9LCB7 IDE3LCAxOSwgLTEyIH0KKwkJfQorCX0sCisJLyogMTJCUFAvMTJCUEMgKi8KKwl7IDM0MSwgMTUs IDIwNDgsIDExLCAyMCwgMTksIDE5LCB7CisJCXsgMCwgNiwgMiB9LCB7IDQsIDksIDAgfSwgeyA3 LCAxMSwgMCB9LCB7IDgsIDEyLCAtMiB9LAorCQl7IDEwLCAxMywgLTQgfSwgeyAxMSwgMTQsIC02 IH0sIHsgMTEsIDE1LCAtOCB9LCB7IDExLCAxNiwgLTggfSwKKwkJeyAxMSwgMTcsIC04IH0sIHsg MTEsIDE4LCAtMTAgfSwgeyAxMywgMTksIC0xMCB9LAorCQl7IDEzLCAyMCwgLTEyIH0sIHsgMTMs IDIxLCAtMTIgfSwgeyAxNSwgMjEsIC0xMiB9LAorCQl7IDIxLCAyMywgLTEyIH0KKwkJfQorCX0s CisJLyogMTJCUFAvMTRCUEMgKi8KKwl7IDM0MSwgMTUsIDIwNDgsIDE1LCAyNCwgMjMsIDIzLCB7 CisJCXsgMCwgNiwgMiB9LCB7IDcsIDEwLCAwIH0sIHsgOSwgMTMsIDAgfSwgeyAxMSwgMTYsIC0y IH0sCisJCXsgMTQsIDE3LCAtNCB9LCB7IDE1LCAxOCwgLTYgfSwgeyAxNSwgMTksIC04IH0sIHsg MTUsIDIwLCAtOCB9LAorCQl7IDE1LCAyMCwgLTggfSwgeyAxNSwgMjEsIC0xMCB9LCB7IDE3LCAy MSwgLTEwIH0sCisJCXsgMTcsIDIxLCAtMTIgfSwgeyAxNywgMjEsIC0xMiB9LCB7IDE5LCAyMiwg LTEyIH0sCisJCXsgMjIsIDIzLCAtMTIgfQorCQl9CisJfSwKKwkvKiAxMkJQUC8xNkJQQyAqLwor CXsgMzQxLCAxNSwgMjA0OCwgMTksIDI4LCAyNywgMjcsIHsKKwkJeyAwLCA2LCAyIH0sIHsgNiwg MTEsIDAgfSwgeyAxMSwgMTUsIDAgfSwgeyAxNCwgMTgsIC0yIH0sCisJCXsgMTgsIDIxLCAtNCB9 LCB7IDE5LCAyMiwgLTYgfSwgeyAxOSwgMjMsIC04IH0sIHsgMTksIDI0LCAtOCB9LAorCQl7IDE5 LCAyNCwgLTggfSwgeyAxOSwgMjUsIC0xMCB9LCB7IDIxLCAyNSwgLTEwIH0sCisJCXsgMjEsIDI1 LCAtMTIgfSwgeyAyMSwgMjUsIC0xMiB9LCB7IDIzLCAyNiwgLTEyIH0sCisJCXsgMjYsIDI3LCAt MTIgfQorCQl9CisJfSwKK30sCit7CisJLyogMTVCUFAvOEJQQyAqLworCXsgMjczLCAxNSwgMjA0 OCwgMywgMTIsIDExLCAxMSwgeworCQl7IDAsIDAsIDEwIH0sIHsgMCwgMSwgOCB9LCB7IDAsIDEs IDYgfSwgeyAwLCAyLCA0IH0sCisJCXsgMSwgMiwgMiB9LCB7IDEsIDMsIDAgfSwgeyAxLCAzLCAt MiB9LCB7IDIsIDQsIC00IH0sCisJCXsgMiwgNSwgLTYgfSwgeyAzLCA1LCAtOCB9LCB7IDQsIDYs IC0xMCB9LCB7IDQsIDcsIC0xMCB9LAorCQl7IDUsIDcsIC0xMiB9LCB7IDcsIDgsIC0xMiB9LCB7 IDgsIDksIC0xMiB9CisJCX0KKwl9LAorCS8qIDE1QlBQLzEwQlBDICovCisJeyAyNzMsIDE1LCAy MDQ4LCA3LCAxNiwgMTUsIDE1LCB7CisJCXsgMCwgMiwgMTAgfSwgeyAyLCA1LCA4IH0sIHsgMywg NSwgNiB9LCB7IDQsIDYsIDQgfSwKKwkJeyA1LCA2LCAyIH0sIHsgNSwgNywgMCB9LCB7IDUsIDcs IC0yIH0sIHsgNiwgOCwgLTQgfSwKKwkJeyA2LCA5LCAtNiB9LCB7IDcsIDksIC04IH0sIHsgOCwg MTAsIC0xMCB9LCB7IDgsIDExLCAtMTAgfSwKKwkJeyA5LCAxMSwgLTEyIH0sIHsgMTEsIDEyLCAt MTIgfSwgeyAxMiwgMTMsIC0xMiB9CisJCX0KKwl9LAorCS8qIDE1QlBQLzEyQlBDICovCisJeyAy NzMsIDE1LCAyMDQ4LCAxMSwgMjAsIDE5LCAxOSwgeworCQl7IDAsIDQsIDEwIH0sIHsgMiwgNywg OCB9LCB7IDQsIDksIDYgfSwgeyA2LCAxMSwgNCB9LAorCQl7IDksIDExLCAyIH0sIHsgOSwgMTEs IDAgfSwgeyA5LCAxMiwgLTIgfSwgeyAxMCwgMTIsIC00IH0sCisJCXsgMTEsIDEzLCAtNiB9LCB7 IDExLCAxMywgLTggfSwgeyAxMiwgMTQsIC0xMCB9LAorCQl7IDEzLCAxNSwgLTEwIH0sIHsgMTMs IDE1LCAtMTIgfSwgeyAxNSwgMTYsIC0xMiB9LAorCQl7IDE2LCAxNywgLTEyIH0KKwkJfQorCX0s CisJLyogMTVCUFAvMTRCUEMgKi8KKwl7IDI3MywgMTUsIDIwNDgsIDE1LCAyNCwgMjMsIDIzLCB7 CisJCXsgMCwgNCwgMTAgfSwgeyAzLCA4LCA4IH0sIHsgNiwgMTEsIDYgfSwgeyA5LCAxNCwgNCB9 LAorCQl7IDEzLCAxNSwgMiB9LCB7IDEzLCAxNSwgMCB9LCB7IDEzLCAxNiwgLTIgfSwgeyAxNCwg MTYsIC00IH0sCisJCXsgMTUsIDE3LCAtNiB9LCB7IDE1LCAxNywgLTggfSwgeyAxNiwgMTgsIC0x MCB9LAorCQl7IDE3LCAxOSwgLTEwIH0sIHsgMTcsIDE5LCAtMTIgfSwgeyAxOSwgMjAsIC0xMiB9 LAorCQl7IDIwLCAyMSwgLTEyIH0KKwkJfQorCX0sCisJLyogMTVCUFAvMTZCUEMgKi8KKwl7IDI3 MywgMTUsIDIwNDgsIDE5LCAyOCwgMjcsIDI3LCB7CisJCXsgMCwgNCwgMTAgfSwgeyA0LCA5LCA4 IH0sIHsgOCwgMTMsIDYgfSwgeyAxMiwgMTcsIDQgfSwKKwkJeyAxNywgMTksIDIgfSwgeyAxNywg MjAsIDAgfSwgeyAxNywgMjAsIC0yIH0sIHsgMTgsIDIwLCAtNCB9LAorCQl7IDE5LCAyMSwgLTYg fSwgeyAxOSwgMjEsIC04IH0sIHsgMjAsIDIyLCAtMTAgfSwKKwkJeyAyMSwgMjMsIC0xMCB9LCB7 IDIxLCAyMywgLTEyIH0sIHsgMjMsIDI0LCAtMTIgfSwKKwkJeyAyNCwgMjUsIC0xMiB9CisJCX0K Kwl9Cit9Cit9OworCitzdGF0aWMgaW50IGdldF9yb3dfaW5kZXhfZm9yX3JjX3BhcmFtcyh1MTYg Y29tcHJlc3NlZF9icHApCit7CisJc3dpdGNoIChjb21wcmVzc2VkX2JwcCkgeworCWNhc2UgNjoK KwkJcmV0dXJuIFJPV19JTkRFWF82QlBQOworCWNhc2UgODoKKwkJcmV0dXJuIFJPV19JTkRFWF84 QlBQOworCWNhc2UgMTA6CisJCXJldHVybiBST1dfSU5ERVhfMTBCUFA7CisJY2FzZSAxMjoKKwkJ cmV0dXJuIFJPV19JTkRFWF8xMkJQUDsKKwljYXNlIDE1OgorCQlyZXR1cm4gUk9XX0lOREVYXzE1 QlBQOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KK30KKworc3RhdGljIGludCBn ZXRfY29sdW1uX2luZGV4X2Zvcl9yY19wYXJhbXModTggYml0c19wZXJfY29tcG9uZW50KQorewor CXN3aXRjaCAoYml0c19wZXJfY29tcG9uZW50KSB7CisJY2FzZSA4OgorCQlyZXR1cm4gQ09MVU1O X0lOREVYXzhCUEM7CisJY2FzZSAxMDoKKwkJcmV0dXJuIENPTFVNTl9JTkRFWF8xMEJQQzsKKwlj YXNlIDEyOgorCQlyZXR1cm4gQ09MVU1OX0lOREVYXzEyQlBDOworCWNhc2UgMTQ6CisJCXJldHVy biBDT0xVTU5fSU5ERVhfMTRCUEM7CisJY2FzZSAxNjoKKwkJcmV0dXJuIENPTFVNTl9JTkRFWF8x NkJQQzsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKKwl9Cit9CisKK2ludCBpbnRlbF9k cF9jb21wdXRlX2RzY19wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJCQlzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCit7CisJc3RydWN0IGRybV9kc2NfY29u ZmlnICp2ZHNjX2NmZyA9ICZwaXBlX2NvbmZpZy0+ZHBfZHNjX2NmZzsKKwl1MTYgY29tcHJlc3Nl ZF9icHAgPSBwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5jb21wcmVzc2VkX2JwcDsKKwl1OCBpID0g MDsKKwl1OCByb3dfaW5kZXggPSAwOworCXU4IGNvbHVtbl9pbmRleCA9IDA7CisJdTggbGluZV9i dWZfZGVwdGggPSAwOworCisJdmRzY19jZmctPnBpY193aWR0aCA9IHBpcGVfY29uZmlnLT5iYXNl LmFkanVzdGVkX21vZGUuY3J0Y19oZGlzcGxheTsKKwl2ZHNjX2NmZy0+cGljX2hlaWdodCA9IHBp cGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y192ZGlzcGxheTsKKwl2ZHNjX2NmZy0+ c2xpY2Vfd2lkdGggPSBESVZfUk9VTkRfVVAodmRzY19jZmctPnBpY193aWR0aCwKKwkJCQkJICAg ICBwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5zbGljZV9jb3VudCk7CisJLyoKKwkgKiBTbGljZSBI ZWlnaHQgb2YgOCB3b3JrcyBmb3IgYWxsIGN1cnJlbnRseSBhdmFpbGFibGUgcGFuZWxzLiBTbyBz dGFydAorCSAqIHdpdGggdGhhdCBpZiBwaWNfaGVpZ2h0IGlzIGFuIGludGVncmFsIG11bHRpcGxl IG9mIDguCisJICogRXZlbnR1YWxseSBhZGQgbG9naWMgdG8gdHJ5IG11bHRpcGxlIHNsaWNlIGhl aWdodHMuCisJICovCisJaWYgKHZkc2NfY2ZnLT5waWNfaGVpZ2h0ICUgOCA9PSAwKQorCQl2ZHNj X2NmZy0+c2xpY2VfaGVpZ2h0ID0gODsKKwllbHNlIGlmICh2ZHNjX2NmZy0+cGljX2hlaWdodCAl IDQgPT0gMCkKKwkJdmRzY19jZmctPnNsaWNlX2hlaWdodCA9IDQ7CisJZWxzZQorCQl2ZHNjX2Nm Zy0+c2xpY2VfaGVpZ2h0ID0gMjsKKworCS8qIFZhbHVlcyBmaWxsZWQgZnJvbSBEU0MgU2luayBE UENEICovCisJdmRzY19jZmctPmRzY192ZXJzaW9uX21ham9yID0KKwkJKGludGVsX2RwLT5kc2Nf ZHBjZFtEUF9EU0NfUkVWIC0gRFBfRFNDX1NVUFBPUlRdICYKKwkJIERQX0RTQ19NQUpPUl9NQVNL KSA+PiBEUF9EU0NfTUFKT1JfU0hJRlQ7CisJdmRzY19jZmctPmRzY192ZXJzaW9uX21pbm9yID0K KwkJbWluKERTQ19TVVBQT1JURURfVkVSU0lPTl9NSU4sCisJCSAgICAoaW50ZWxfZHAtPmRzY19k cGNkW0RQX0RTQ19SRVYgLSBEUF9EU0NfU1VQUE9SVF0gJgorCQkgICAgIERQX0RTQ19NSU5PUl9N QVNLKSA+PiBEUF9EU0NfTUlOT1JfU0hJRlQpOworCisJdmRzY19jZmctPmNvbnZlcnRfcmdiID0g aW50ZWxfZHAtPmRzY19kcGNkW0RQX0RTQ19ERUNfQ09MT1JfRk9STUFUX0NBUCAtIERQX0RTQ19T VVBQT1JUXSAmCisJCURQX0RTQ19SR0I7CisKKwlsaW5lX2J1Zl9kZXB0aCA9IGRybV9kcF9kc2Nf c2lua19saW5lX2J1Zl9kZXB0aChpbnRlbF9kcC0+ZHNjX2RwY2QpOworCWlmICghbGluZV9idWZf ZGVwdGgpIHsKKwkJRFJNX0RFQlVHX0tNUygiRFNDIFNpbmsgTGluZSBCdWZmZXIgRGVwdGggaW52 YWxpZFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwlpZiAodmRzY19jZmctPmRzY192ZXJz aW9uX21pbm9yID09IDIpCisJCXZkc2NfY2ZnLT5saW5lX2J1Zl9kZXB0aCA9IChsaW5lX2J1Zl9k ZXB0aCA9PSBEU0NfMV8yX01BWF9MSU5FQlVGX0RFUFRIX0JJVFMpID8KKwkJCURTQ18xXzJfTUFY X0xJTkVCVUZfREVQVEhfVkFMIDogbGluZV9idWZfZGVwdGg7CisJZWxzZQorCQl2ZHNjX2NmZy0+ bGluZV9idWZfZGVwdGggPSAobGluZV9idWZfZGVwdGggPiBEU0NfMV8xX01BWF9MSU5FQlVGX0RF UFRIX0JJVFMpID8KKwkJCURTQ18xXzFfTUFYX0xJTkVCVUZfREVQVEhfQklUUyA6IGxpbmVfYnVm X2RlcHRoOworCisJLyogR2VuIDExIGRvZXMgbm90IHN1cHBvcnQgWUNiQ3IgKi8KKwl2ZHNjX2Nm Zy0+ZW5hYmxlNDIyID0gZmFsc2U7CisJLyogR2VuIDExIGRvZXMgbm90IHN1cHBvcnQgVkJSICov CisJdmRzY19jZmctPnZicl9lbmFibGUgPSBmYWxzZTsKKwl2ZHNjX2NmZy0+YmxvY2tfcHJlZF9l bmFibGUgPQorCQkJaW50ZWxfZHAtPmRzY19kcGNkW0RQX0RTQ19CTEtfUFJFRElDVElPTl9TVVBQ T1JUIC0gRFBfRFNDX1NVUFBPUlRdICYKKwkJRFBfRFNDX0JMS19QUkVESUNUSU9OX0lTX1NVUFBP UlRFRDsKKworCS8qIEdlbiAxMSBvbmx5IHN1cHBvcnRzIGludGVncmFsIHZhbHVlcyBvZiBicHAg Ki8KKwl2ZHNjX2NmZy0+Yml0c19wZXJfcGl4ZWwgPSBjb21wcmVzc2VkX2JwcCA8PCA0OworCXZk c2NfY2ZnLT5iaXRzX3Blcl9jb21wb25lbnQgPSBwaXBlX2NvbmZpZy0+cGlwZV9icHAgLyAzOwor CisJZm9yIChpID0gMDsgaSA8IERTQ19OVU1fQlVGX1JBTkdFUyAtIDE7IGkrKykgeworCQkvKgor CQkgKiBzaXggMHMgYXJlIGFwcGVuZGVkIHRvIHRoZSBsc2Igb2YgZWFjaCB0aHJlc2hvbGQgdmFs dWUKKwkJICogaW50ZXJuYWxseSBpbiBoL3cuCisJCSAqIE9ubHkgOCBiaXRzIGFyZSBhbGxvd2Vk IGZvciBwcm9ncmFtbWluZyBSY0J1ZlRocmVzaG9sZAorCQkgKi8KKwkJdmRzY19jZmctPnJjX2J1 Zl90aHJlc2hbaV0gPSByY19idWZfdGhyZXNoW2ldID4+IDY7CisJfQorCisJLyoKKwkgKiBGb3Ig NmJwcCwgUkMgQnVmZmVyIHRocmVzaG9sZCAxMiBhbmQgMTMgbmVlZCBhIGRpZmZlcmVudCB2YWx1 ZQorCSAqIGFzIHBlciBDIE1vZGVsCisJICovCisJaWYgKGNvbXByZXNzZWRfYnBwID09IDYpIHsK KwkJdmRzY19jZmctPnJjX2J1Zl90aHJlc2hbMTJdID0gMHg3QzsKKwkJdmRzY19jZmctPnJjX2J1 Zl90aHJlc2hbMTNdID0gMHg3RDsKKwl9CisKKwlyb3dfaW5kZXggPSBnZXRfcm93X2luZGV4X2Zv cl9yY19wYXJhbXMoY29tcHJlc3NlZF9icHApOworCWNvbHVtbl9pbmRleCA9CisJCWdldF9jb2x1 bW5faW5kZXhfZm9yX3JjX3BhcmFtcyh2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50KTsKKwor CWlmIChyb3dfaW5kZXggPCAwIHx8IGNvbHVtbl9pbmRleCA8IDApCisJCXJldHVybiAtRUlOVkFM OworCisJdmRzY19jZmctPmZpcnN0X2xpbmVfYnBnX29mZnNldCA9CisJCXJjX3BhcmFtc1tyb3df aW5kZXhdW2NvbHVtbl9pbmRleF0uZmlyc3RfbGluZV9icGdfb2Zmc2V0OworCXZkc2NfY2ZnLT5p bml0aWFsX3htaXRfZGVsYXkgPQorCQlyY19wYXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhd LmluaXRpYWxfeG1pdF9kZWxheTsKKwl2ZHNjX2NmZy0+aW5pdGlhbF9vZmZzZXQgPQorCQlyY19w YXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhdLmluaXRpYWxfb2Zmc2V0OworCXZkc2NfY2Zn LT5mbGF0bmVzc19taW5fcXAgPQorCQlyY19wYXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhd LmZsYXRuZXNzX21pbl9xcDsKKwl2ZHNjX2NmZy0+ZmxhdG5lc3NfbWF4X3FwID0KKwkJcmNfcGFy YW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5mbGF0bmVzc19tYXhfcXA7CisJdmRzY19jZmct PnJjX3F1YW50X2luY3JfbGltaXQwID0KKwkJcmNfcGFyYW1zW3Jvd19pbmRleF1bY29sdW1uX2lu ZGV4XS5yY19xdWFudF9pbmNyX2xpbWl0MDsKKwl2ZHNjX2NmZy0+cmNfcXVhbnRfaW5jcl9saW1p dDEgPQorCQlyY19wYXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhdLnJjX3F1YW50X2luY3Jf bGltaXQxOworCisJZm9yIChpID0gMDsgaSA8IERTQ19OVU1fQlVGX1JBTkdFUzsgaSsrKSB7CisJ CXZkc2NfY2ZnLT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfbWluX3FwID0KKwkJCXJjX3BhcmFt c1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0ucmNfcmFuZ2VfcGFyYW1zW2ldLnJhbmdlX21pbl9x cDsKKwkJdmRzY19jZmctPnJjX3JhbmdlX3BhcmFtc1tpXS5yYW5nZV9tYXhfcXAgPQorCQkJcmNf cGFyYW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2Vf bWF4X3FwOworCQkvKgorCQkgKiBSYW5nZSBCUEcgT2Zmc2V0IHVzZXMgMidzIGNvbXBsZW1lbnQg YW5kIGlzIG9ubHkgYSA2IGJpdHMuIFNvCisJCSAqIG1hc2sgaXQgdG8gZ2V0IG9ubHkgNiBiaXRz LgorCQkgKi8KKwkJdmRzY19jZmctPnJjX3JhbmdlX3BhcmFtc1tpXS5yYW5nZV9icGdfb2Zmc2V0 ID0KKwkJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0ucmNfcmFuZ2VfcGFyYW1z W2ldLnJhbmdlX2JwZ19vZmZzZXQgJgorCQkJRFNDX1JBTkdFX0JQR19PRkZTRVRfTUFTSzsKKwl9 CisKKwkvKgorCSAqIEJpdHNQZXJDb21wb25lbnQgdmFsdWUgZGV0ZXJtaW5lcyBtdXhfd29yZF9z aXplOgorCSAqIFdoZW4gQml0c1BlckNvbXBvbmVudCBpcyAxMmJwYywgbXV4V29yZFNpemUgd2ls bCBiZSBlcXVhbCB0byA2NCBiaXRzCisJICogV2hlbiBCaXRzUGVyQ29tcG9uZW50IGlzIDggb3Ig MTBicGMsIG11eFdvcmRTaXplIHdpbGwgYmUgZXF1YWwgdG8KKwkgKiA0OCBiaXRzCisJICovCisJ aWYgKHZkc2NfY2ZnLT5iaXRzX3Blcl9jb21wb25lbnQgPT0gOCB8fAorCSAgICB2ZHNjX2NmZy0+ Yml0c19wZXJfY29tcG9uZW50ID09IDEwKQorCQl2ZHNjX2NmZy0+bXV4X3dvcmRfc2l6ZSA9IERT Q19NVVhfV09SRF9TSVpFXzhfMTBfQlBDOworCWVsc2UgaWYgKHZkc2NfY2ZnLT5iaXRzX3Blcl9j b21wb25lbnQgPT0gMTIpCisJCXZkc2NfY2ZnLT5tdXhfd29yZF9zaXplID0gRFNDX01VWF9XT1JE X1NJWkVfMTJfQlBDOworCisJLyogUkNfTU9ERUxfU0laRSBpcyBhIGNvbnN0YW50IGFjcm9zcyBh bGwgY29uZmlndXJhdGlvbnMgKi8KKwl2ZHNjX2NmZy0+cmNfbW9kZWxfc2l6ZSA9IERTQ19SQ19N T0RFTF9TSVpFX0NPTlNUOworCS8qIEluaXRpYWxTY2FsZVZhbHVlIGlzIGEgNiBiaXQgdmFsdWUg d2l0aCAzIGZyYWN0aW9uYWwgYml0cyAoVTMuMykgKi8KKwl2ZHNjX2NmZy0+aW5pdGlhbF9zY2Fs ZV92YWx1ZSA9ICh2ZHNjX2NmZy0+cmNfbW9kZWxfc2l6ZSA8PCAzKSAvCisJCSh2ZHNjX2NmZy0+ cmNfbW9kZWxfc2l6ZSAtIHZkc2NfY2ZnLT5pbml0aWFsX29mZnNldCk7CisKKwlyZXR1cm4gMDsK K30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIuaCBiL2luY2x1ZGUvZHJt L2RybV9kcF9oZWxwZXIuaAppbmRleCAwZmJhOGQyMTk4YTQuLmRhYjk5NGUyZjA0ZSAxMDA2NDQK LS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9k cF9oZWxwZXIuaApAQCAtMTg3LDYgKzE4Nyw5IEBACiAKICNkZWZpbmUgRFBfR1VJRAkJCQkgICAg MHgwMzAgICAvKiAxLjIgKi8KIAorI2RlZmluZSBEUF9EU0NfUkNfUElYRUxTX1BFUl9HUk9VUAkJ MworI2RlZmluZSBEUF9EU0NfU0NBTEVfREVDUkVNRU5UX0lOVEVSVkFMX01BWAk0MDk1CisKICNk ZWZpbmUgRFBfRFNDX1NVUFBPUlQgICAgICAgICAgICAgICAgICAgICAgMHgwNjAgICAvKiBEUCAx LjQgKi8KICMgZGVmaW5lIERQX0RTQ19ERUNPTVBSRVNTSU9OX0lTX1NVUFBPUlRFRCAgKDEgPDwg MCkKIAotLSAKMi4xOC4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK