From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: [PATCH 20/23] drm/i915: Keep the TypeC port mode fixed when the port is active Date: Tue, 4 Jun 2019 17:58:23 +0300 Message-ID: <20190604145826.16424-21-imre.deak@intel.com> References: <20190604145826.16424-1-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 96210899DC for ; Tue, 4 Jun 2019 14:59:48 +0000 (UTC) In-Reply-To: <20190604145826.16424-1-imre.deak@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 Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org VGhlIFR5cGVDIHBvcnQgbW9kZSBuZWVkcyB0byBzdGF5IGZpeGVkIHdoZW5ldmVyIHRoZSBwb3J0 IGlzIGFjdGl2ZS4gRG8KdGhhdCBieSBpbnRyb2R1Y2luZyBhIHRjX2xpbmtfcmVmY291bnQgdG8g YWNjb3VudCBmb3IgYWN0aXZlIHBvcnRzLAphdm9pZGluZyBjaGFuZ2luZyB0aGUgcG9ydCBtb2Rl IGlmIGEgcmVmZXJlbmNlIGlzIGhlbGQuCgpEdXJpbmcgdGhlIG1vZGVzZXQgY29tbWl0IHBoYXNl IHdlIGFsc28gaGF2ZSB0byByZXNldCB0aGUgcG9ydCBtb2RlIGFuZAp1cGRhdGUgdGhlIGFjdGl2 ZSBQTEwgcmVmbGVjdGluZyB0aGUgbmV3IHBvcnQgbW9kZS4gV2UgY2FuIGRvIHRoaXMgb25seQpv bmNlIHRoZSBwb3J0IGFuZCBpdHMgb2xkIFBMTCBoYXMgYmVlbiBhbHJlYWR5IGRpc2FibGVkLiBB ZGQgdGhlIG5ldwpjb25uZWN0b3JfdXBkYXRlX3ByZXBhcmUvY29tcGxldGUgaG9va3MgdGhhdCBh cmUgY2FsbGVkIGFyb3VuZCB0aGUgd2hvbGUKZW5hYmxpbmcgc2VxdWVuY2UuIFRoZSBUeXBlQyBz cGVjaWZpYyBob29rcyBvZiB0aGVzZSB3aWxsIHJlc2V0IHRoZSBwb3J0Cm1vZGUsIHVwZGF0ZSB0 aGUgYWN0aXZlIFBMTCBpZiB0aGUgcG9ydCB3aWxsIGJlIGFjdGl2ZSBhbmQgZW5zdXJlIHRoYXQK dGhlIHBvcnQgbW9kZSB3aWxsIHN0YXkgZml4ZWQgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgd2hv bGUgZW5hYmxpbmcKc2VxdWVuY2UgYnkgaG9sZGluZyBhIHRjX2xpbmtfcmVmY291bnQuCgpEdXJp bmcgdGhlIHBvcnQgZW5hYmxpbmcsIHRoZSBwcmVfcGxsX2VuYWJsZS9wb3N0X3BsbF9kaXNhYmxl IGhvb2tzIHdpbGwKdGFrZS9yZWxlYXNlIGEgdGNfbGlua19yZWZjb3VudCB0byBlbnN1cmUgdGhl IHBvcnQgbW9kZSBzdGF5cyBmaXhlZAp3aGlsZSB0aGUgcG9ydCBpcyBhY3RpdmUuCgpDaGFuZ2lu ZyB0aGUgcG9ydCBtb2RlIHNob3VsZCBhbHNvIGJlIGF2b2lkZWQgZHVyaW5nIGNvbm5lY3RvciBk ZXRlY3Rpb24KYW5kIEFVWCB0cmFuc2ZlcnMgaWYgdGhlIHBvcnQgaXMgYWN0aXZlLCB3ZSdsbCBk byB0aGF0IGJ5IGNoZWNraW5nIHRoZQpwb3J0J3MgdGNfbGlua19yZWZjb3VudC4KCldoZW4gcmVz ZXR0aW5nIHRoZSBwb3J0IG1vZGUgd2UgYWxzbyBoYXZlIHRvIHRha2UgaW50byBhY2NvdW50IHRo ZQptYXhpbXVtIGxhbmVzIHByb3ZpZGVkIGJ5IHRoZSBGSUEuIEl0J3MgZ3VhcmFudGVlZCB0byBi ZSA0IGluIFRCVC1hbHQKYW5kIGxlZ2FjeSBtb2RlcywgYnV0IHRoZXJlIG1heSBiZSBsZXNzIGxh bmVzIGF2YWlsYWJsZSBpbiBEUC1hbHQgbW9kZSwKaW4gd2hpY2ggY2FzZSB3ZSBoYXZlIHRvIGZh bGwgYmFjayB0byBUQlQtYWx0IG1vZGUuCgpXaGlsZSBhdCBpdCBhbHNvIHVwZGF0ZSBpY2xfdGNf cGh5X2Nvbm5lY3QoKSdzIGNvZGUgY29tbWVudCwgcmVmbGVjdGluZwp0aGUgY3VycmVudCB3YXkg b2Ygc3dpdGNoaW5nIHRoZSBwb3J0IG1vZGUuCgpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5z eXJqYWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJA ZmZ3bGwuY2g+CkNjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXgu aW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAgICB8IDQ2ICsrKysrKysr KysrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5oICAgICAgfCAgNyArKwogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICB8IDkwICsrKysrKysrKysrKysrKysr KysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgIHwgIDcgKysK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jICAgfCAgNiArKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYyB8IDI4ICsrKysrKystCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcGxsX21nci5oIHwgIDMgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmggICAgICB8ICA5ICsrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5j ICAgICB8ICA3ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90Yy5jICAgICAgIHwgOTMg KysrKysrKysrKysrKysrKysrKystLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90 Yy5oICAgICAgIHwgIDMgKwogMTEgZmlsZXMgY2hhbmdlZCwgMjY5IGluc2VydGlvbnMoKyksIDMw IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rk aS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKaW5kZXggYWQyZjdiYjJmNTBi Li4xMzg5NTA5NDEyNDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rk aS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCkBAIC0zNjEwLDYgKzM2 MTAsMzggQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3NldF9maWFfbGFuZV9jb3VudChzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlJOTE1X1dSSVRFKFBPUlRfVFhfREZMRVhEUE1MRTEs IHZhbCk7CiB9CiAKK3ZvaWQKK2ludGVsX2RkaV9jb25uZWN0b3JfdXBkYXRlX3ByZXBhcmUoc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJCQkJICAgc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0 YXRlID0KKwkJZHJtX2F0b21pY19nZXRfbmV3X2Nvbm5lY3Rvcl9zdGF0ZSgmc3RhdGUtPmJhc2Us CisJCQkJCQkgICAmY29ubmVjdG9yLT5iYXNlKTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9 IGNvbm5fc3RhdGUtPmNydGMgPworCQl0b19pbnRlbF9jcnRjKGNvbm5fc3RhdGUtPmNydGMpIDog TlVMTDsKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9CisJCWNydGMgPyBp bnRlbF9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKSA6IE5VTEw7CisJc3Ry dWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqcHJpbWFyeV9wb3J0ID0KKwkJaW50ZWxfY29ubmVjdG9y X3ByaW1hcnlfZGlnaXRhbF9wb3J0KGNvbm5lY3Rvcik7CisJaW50IHJlcXVpcmVkX2xhbmVzID0g Y3J0Y19zdGF0ZSA/IGNydGNfc3RhdGUtPmxhbmVfY291bnQgOiAxOworCisJV0FSTl9PTihjcnRj ICYmIGNydGMtPmFjdGl2ZSk7CisKKwlpbnRlbF90Y19wb3J0X2dldF9saW5rKHByaW1hcnlfcG9y dCwgcmVxdWlyZWRfbGFuZXMpOworCWlmIChjcnRjX3N0YXRlICYmIGNydGNfc3RhdGUtPmJhc2Uu YWN0aXZlKQorCQlpbnRlbF91cGRhdGVfYWN0aXZlX2RwbGwoc3RhdGUsIGNydGMsICZwcmltYXJ5 X3BvcnQtPmJhc2UpOworfQorCit2b2lkCitpbnRlbF9kZGlfY29ubmVjdG9yX3VwZGF0ZV9jb21w bGV0ZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKKwkJCQkgICAgc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQg KnByaW1hcnlfcG9ydCA9CisJCWludGVsX2Nvbm5lY3Rvcl9wcmltYXJ5X2RpZ2l0YWxfcG9ydChj b25uZWN0b3IpOworCisJaW50ZWxfdGNfcG9ydF9wdXRfbGluayhwcmltYXJ5X3BvcnQpOworfQor CiBzdGF0aWMgdm9pZAogaW50ZWxfZGRpX3ByZV9wbGxfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAogCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLApAQCAtMzYxNywxMCArMzY0OSwxMyBAQCBpbnRlbF9kZGlfcHJlX3BsbF9lbmFibGUoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CiAJc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqZGlnX3BvcnQgPSBlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpOwor CWJvb2wgaXNfdGNfcG9ydCA9IGludGVsX3BvcnRfaXNfdGMoZGV2X3ByaXYsIGVuY29kZXItPnBv cnQpOwogCWVudW0gcG9ydCBwb3J0ID0gZW5jb2Rlci0+cG9ydDsKIAotCWlmIChpbnRlbF9jcnRj X2hhc19kcF9lbmNvZGVyKGNydGNfc3RhdGUpIHx8Ci0JICAgIGludGVsX3BvcnRfaXNfdGMoZGV2 X3ByaXYsIGVuY29kZXItPnBvcnQpKQorCWlmIChpc190Y19wb3J0KQorCQlpbnRlbF90Y19wb3J0 X2dldF9saW5rKGRpZ19wb3J0LCBjcnRjX3N0YXRlLT5sYW5lX2NvdW50KTsKKworCWlmIChpbnRl bF9jcnRjX2hhc19kcF9lbmNvZGVyKGNydGNfc3RhdGUpIHx8IGlzX3RjX3BvcnQpCiAJCWludGVs X2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LAogCQkJCQlpbnRlbF9kZGlfbWFpbl9saW5rX2F1 eF9kb21haW4oZGlnX3BvcnQpKTsKIApAQCAtMzY0NSwxMSArMzY4MCwxNCBAQCBpbnRlbF9kZGlf cG9zdF9wbGxfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIHsKIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2 KTsKIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGVuY190b19kaWdfcG9y dCgmZW5jb2Rlci0+YmFzZSk7CisJYm9vbCBpc190Y19wb3J0ID0gaW50ZWxfcG9ydF9pc190Yyhk ZXZfcHJpdiwgZW5jb2Rlci0+cG9ydCk7CiAKLQlpZiAoaW50ZWxfY3J0Y19oYXNfZHBfZW5jb2Rl cihjcnRjX3N0YXRlKSB8fAotCSAgICBpbnRlbF9wb3J0X2lzX3RjKGRldl9wcml2LCBlbmNvZGVy LT5wb3J0KSkKKwlpZiAoaW50ZWxfY3J0Y19oYXNfZHBfZW5jb2RlcihjcnRjX3N0YXRlKSB8fCBp c190Y19wb3J0KQogCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYs CiAJCQkJCQkgIGludGVsX2RkaV9tYWluX2xpbmtfYXV4X2RvbWFpbihkaWdfcG9ydCkpOworCisJ aWYgKGlzX3RjX3BvcnQpCisJCWludGVsX3RjX3BvcnRfcHV0X2xpbmsoZGlnX3BvcnQpOwogfQog CiB2b2lkIGludGVsX2RkaV9wcmVwYXJlX2xpbmtfcmV0cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuaAppbmRleCA5Y2Y2OTE3NTk0MmUuLjE1NTlk MWZiZjdiZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmgKQEAgLTEyLDYgKzEyLDcgQEAKIAog c3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGU7CiBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTsKK3N0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGU7CiBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yOwogc3RydWN0 IGludGVsX2NydGM7CiBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZTsKQEAgLTM1LDYgKzM2LDEyIEBA IHZvaWQgaW50ZWxfZGRpX3ByZXBhcmVfbGlua19yZXRyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApOwogYm9vbCBpbnRlbF9kZGlfY29ubmVjdG9yX2dldF9od19zdGF0ZShzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IpOwogdm9pZCBpbnRlbF9kZGlfZ2V0X2NvbmZp ZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJCSAgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKnBpcGVfY29uZmlnKTsKK3ZvaWQKK2ludGVsX2RkaV9jb25uZWN0b3JfdXBkYXRlX3By ZXBhcmUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJCQkJICAgc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKK3ZvaWQKK2ludGVsX2RkaV9jb25uZWN0b3JfdXBk YXRlX2NvbXBsZXRlKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAorCQkJCSAgICBz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwogdm9pZCBpbnRlbF9kZGlfc2V0X3Zj X3BheWxvYWRfYWxsb2MoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs CiAJCQkJICAgIGJvb2wgc3RhdGUpOwogdm9pZCBpbnRlbF9kZGlfY29tcHV0ZV9taW5fdm9sdGFn ZV9sZXZlbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggZjg2YjViODQ4Y2JjLi4yYzY1NTg3ZDE2MjIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTUyMCw2ICs1MjAsMjAgQEAgbmVlZHNf bW9kZXNldChjb25zdCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQogCXJldHVybiBkcm1f YXRvbWljX2NydGNfbmVlZHNfbW9kZXNldChzdGF0ZSk7CiB9CiAKK3N0YXRpYyBib29sCitpbnRl bF9jb25uZWN0b3JfbmVlZHNfbW9kZXNldChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0 ZSwKKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9z dGF0ZSwKKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpuZXdfY29u bl9zdGF0ZSkKK3sKKwlpZiAobmV3X2Nvbm5fc3RhdGUtPmNydGMgIT0gb2xkX2Nvbm5fc3RhdGUt PmNydGMgfHwKKwkgICAgKG5ld19jb25uX3N0YXRlLT5jcnRjICYmCisJICAgICBuZWVkc19tb2Rl c2V0KGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKCZzdGF0ZS0+YmFzZSwKKwkJCQkJCQkg bmV3X2Nvbm5fc3RhdGUtPmNydGMpKSkpCisJCXJldHVybiB0cnVlOworCisJcmV0dXJuIGZhbHNl OworfQorCiAvKgogICogUGxhdGZvcm0gc3BlY2lmaWMgaGVscGVycyB0byBjYWxjdWxhdGUgdGhl IHBvcnQgUExMIGxvb3BiYWNrLSAoY2xvY2subSksCiAgKiBhbmQgcG9zdC1kaXZpZGVyIChjbG9j ay5wKSB2YWx1ZXMsIHByZS0gKGNsb2NrLnZjbykgYW5kIHBvc3QtZGl2aWRlZCBmYXN0CkBAIC02 MDMyLDYgKzYwNDYsNTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcyhz dHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKIAlpbnRlbF9mcm9udGJ1ZmZlcl9mbGlw KGRldl9wcml2LCBmYl9iaXRzKTsKIH0KIAorc3RhdGljIHZvaWQgaW50ZWxfY29ubmVjdG9yc191 cGRhdGVfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGU7CisJc3RydWN0IGRybV9jb25u ZWN0b3Jfc3RhdGUgKm5ld19jb25uX3N0YXRlOworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u OworCWludCBpOworCisJZm9yX2VhY2hfb2xkbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZSgmc3RhdGUt PmJhc2UsIGNvbm4sCisJCQkJCSAgIG9sZF9jb25uX3N0YXRlLCBuZXdfY29ubl9zdGF0ZSwgaSkg eworCQlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0 b3IoY29ubik7CisKKwkJaWYgKCFjb25uZWN0b3ItPnVwZGF0ZV9wcmVwYXJlKQorCQkJY29udGlu dWU7CisKKwkJaWYgKCFpbnRlbF9jb25uZWN0b3JfbmVlZHNfbW9kZXNldChzdGF0ZSwKKwkJCQkJ CSAgIG9sZF9jb25uX3N0YXRlLAorCQkJCQkJICAgbmV3X2Nvbm5fc3RhdGUpKQorCQkJY29udGlu dWU7CisKKwkJY29ubmVjdG9yLT51cGRhdGVfcHJlcGFyZShzdGF0ZSwgY29ubmVjdG9yKTsKKwl9 Cit9CisKK3N0YXRpYyB2b2lkIGludGVsX2Nvbm5lY3RvcnNfdXBkYXRlX2NvbXBsZXRlKHN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQoreworCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0 YXRlICpvbGRfY29ubl9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nv bm5fc3RhdGU7CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm47CisJaW50IGk7CisKKwlmb3Jf ZWFjaF9vbGRuZXdfY29ubmVjdG9yX2luX3N0YXRlKCZzdGF0ZS0+YmFzZSwgY29ubiwKKwkJCQkJ ICAgb2xkX2Nvbm5fc3RhdGUsIG5ld19jb25uX3N0YXRlLCBpKSB7CisJCXN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uKTsKKworCQlpZiAo IWNvbm5lY3Rvci0+dXBkYXRlX2NvbXBsZXRlKQorCQkJY29udGludWU7CisKKwkJaWYgKCFpbnRl bF9jb25uZWN0b3JfbmVlZHNfbW9kZXNldChzdGF0ZSwKKwkJCQkJCSAgIG9sZF9jb25uX3N0YXRl LAorCQkJCQkJICAgbmV3X2Nvbm5fc3RhdGUpKQorCQkJY29udGludWU7CisKKwkJY29ubmVjdG9y LT51cGRhdGVfY29tcGxldGUoc3RhdGUsIGNvbm5lY3Rvcik7CisJfQorfQorCiBzdGF0aWMgdm9p ZCBpbnRlbF9lbmNvZGVyc19wcmVfcGxsX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJ CQkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkJCSAgc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKQEAgLTY1NTYsNiArNjYxNiwyOCBAQCBzdGF0 aWMgdm9pZCBpOXh4X3BmaXRfZW5hYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKQogCUk5MTVfV1JJVEUoQkNMUlBBVChjcnRjLT5waXBlKSwgMCk7CiB9CiAKKy8q CisgKiBpbnRlbF9jb25uZWN0b3JfcHJpbWFyeV9kaWdpdGFsX3BvcnQgLSBnZXQgdGhlIHByaW1h cnkgcG9ydCBmb3IgYSBjb25uZWN0b3IKKyAqIEBjb25uZWN0b3I6IGNvbm5lY3RvciBmb3Igd2hp Y2ggdG8gcmV0dXJuIHRoZSBwb3J0CisgKgorICogUmV0dXJucyB0aGUgcHJpbWFyeSBkaWdpdGFs IHBvcnQgZm9yIGEgRFAgTVNULCB0aGUgc2luZ2xlIGRpZ2l0YWwgcG9ydCBmb3IKKyAqIERQIFNT VCBhbmQgSERNSSBhbmQgTlVMTCBmb3IgYWxsIG90aGVyIGNvbm5lY3RvciB0eXBlcy4KKyAqLwor c3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqCitpbnRlbF9jb25uZWN0b3JfcHJpbWFyeV9kaWdp dGFsX3BvcnQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyOworCisJaWYgKGNvbm5lY3Rvci0+bXN0X3BvcnQpCisJCXJl dHVybiBkcF90b19kaWdfcG9ydChjb25uZWN0b3ItPm1zdF9wb3J0KTsKKworCWVuY29kZXIgPSBp bnRlbF9hdHRhY2hlZF9lbmNvZGVyKCZjb25uZWN0b3ItPmJhc2UpOworCWlmIChXQVJOX09OKCFl bmNvZGVyKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXR1cm4gZW5jX3RvX2RpZ19wb3J0KCZlbmNv ZGVyLT5iYXNlKTsKK30KKwogYm9vbCBpbnRlbF9wb3J0X2lzX2NvbWJvcGh5KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwb3J0IHBvcnQpCiB7CiAJaWYgKHBvcnQgPT0g UE9SVF9OT05FKQpAQCAtMTM4MDUsMTQgKzEzODg3LDIwIEBAIHN0YXRpYyB2b2lkIGludGVsX2F0 b21pY19jb21taXRfdGFpbChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJCX0KIAl9 CiAKKwlpZiAoaW50ZWxfc3RhdGUtPm1vZGVzZXQpCisJCWludGVsX2Nvbm5lY3RvcnNfdXBkYXRl X3ByZXBhcmUoaW50ZWxfc3RhdGUpOworCiAJLyogTm93IGVuYWJsZSB0aGUgY2xvY2tzLCBwbGFu ZSwgcGlwZSwgYW5kIGNvbm5lY3RvcnMgdGhhdCB3ZSBzZXQgdXAuICovCiAJZGV2X3ByaXYtPmRp c3BsYXkudXBkYXRlX2NydGNzKHN0YXRlKTsKIAotCWlmIChpbnRlbF9zdGF0ZS0+bW9kZXNldCkK KwlpZiAoaW50ZWxfc3RhdGUtPm1vZGVzZXQpIHsKKwkJaW50ZWxfY29ubmVjdG9yc191cGRhdGVf Y29tcGxldGUoaW50ZWxfc3RhdGUpOworCiAJCWludGVsX3NldF9jZGNsa19wb3N0X3BsYW5lX3Vw ZGF0ZShkZXZfcHJpdiwKIAkJCQkJCSAgJmludGVsX3N0YXRlLT5jZGNsay5hY3R1YWwsCiAJCQkJ CQkgICZkZXZfcHJpdi0+Y2RjbGsuYWN0dWFsLAogCQkJCQkJICBpbnRlbF9zdGF0ZS0+Y2RjbGsu cGlwZSk7CisJfQogCiAJLyogRklYTUU6IFdlIHNob3VsZCBjYWxsIGRybV9hdG9taWNfaGVscGVy X2NvbW1pdF9od19kb25lKCkgaGVyZQogCSAqIGFscmVhZHksIGJ1dCBzdGlsbCBuZWVkIHRoZSBz dGF0ZSBmb3IgdGhlIGRlbGF5ZWQgb3B0aW1pemF0aW9uLiBUbwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMKaW5kZXggYjk4NDQxMGY0MWE0Li4yZjYzNDc2ZTNjZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYwpAQCAtNzE5NSw2ICs3MTk1LDEzIEBAIGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAogCWVsc2UKIAkJaW50ZWxfY29u bmVjdG9yLT5nZXRfaHdfc3RhdGUgPSBpbnRlbF9jb25uZWN0b3JfZ2V0X2h3X3N0YXRlOwogCisJ aWYgKGludGVsX3BvcnRfaXNfdGMoZGV2X3ByaXYsIGludGVsX2VuY29kZXItPnBvcnQpKSB7CisJ CWludGVsX2Nvbm5lY3Rvci0+dXBkYXRlX3ByZXBhcmUgPQorCQkJaW50ZWxfZGRpX2Nvbm5lY3Rv cl91cGRhdGVfcHJlcGFyZTsKKwkJaW50ZWxfY29ubmVjdG9yLT51cGRhdGVfY29tcGxldGUgPQor CQkJaW50ZWxfZGRpX2Nvbm5lY3Rvcl91cGRhdGVfY29tcGxldGU7CisJfQorCiAJLyogaW5pdCBN U1Qgb24gcG9ydHMgdGhhdCBjYW4gc3VwcG9ydCBpdCAqLwogCWlmIChIQVNfRFBfTVNUKGRldl9w cml2KSAmJiAhaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSAmJgogCSAgICAocG9ydCA9PSBQT1JU X0IgfHwgcG9ydCA9PSBQT1JUX0MgfHwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwX21zdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKaW5k ZXggMGNhZjY0NWZiYmI4Li45ZDViMDQ4YjljOTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwX21zdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw X21zdC5jCkBAIC01MDUsNiArNTA1LDEyIEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq aW50ZWxfZHBfYWRkX21zdF9jb25uZWN0b3Ioc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvCiAJaWYg KCFpbnRlbF9jb25uZWN0b3IpCiAJCXJldHVybiBOVUxMOwogCisJaWYgKGludGVsX3BvcnRfaXNf dGMoZGV2X3ByaXYsIGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQpKSB7CisJCWludGVsX2Nvbm5l Y3Rvci0+dXBkYXRlX3ByZXBhcmUgPQorCQkJaW50ZWxfZGRpX2Nvbm5lY3Rvcl91cGRhdGVfcHJl cGFyZTsKKwkJaW50ZWxfY29ubmVjdG9yLT51cGRhdGVfY29tcGxldGUgPQorCQkJaW50ZWxfZGRp X2Nvbm5lY3Rvcl91cGRhdGVfY29tcGxldGU7CisJfQogCWludGVsX2Nvbm5lY3Rvci0+Z2V0X2h3 X3N0YXRlID0gaW50ZWxfZHBfbXN0X2dldF9od19zdGF0ZTsKIAlpbnRlbF9jb25uZWN0b3ItPm1z dF9wb3J0ID0gaW50ZWxfZHA7CiAJaW50ZWxfY29ubmVjdG9yLT5wb3J0ID0gcG9ydDsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCmluZGV4IGNlMDhhMmVlZTU1Zi4uY2UzOTdiNjli MWQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKQEAgLTE5MzksNyArMTkz OSw5IEBAIHN0cnVjdCBpbnRlbF9kcGxsX21nciB7CiAJCQkgIHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyKTsKIAl2b2lkICgqcHV0X2RwbGxzKShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl ICpzdGF0ZSwKIAkJCSAgc3RydWN0IGludGVsX2NydGMgKmNydGMpOwotCisJdm9pZCAoKnVwZGF0 ZV9hY3RpdmVfZHBsbCkoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJCQkJICAg c3RydWN0IGludGVsX2NydGMgKmNydGMsCisJCQkJICAgc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIpOwogCXZvaWQgKCpkdW1wX2h3X3N0YXRlKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCiAJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfZHBsbF9od19zdGF0ZSAqaHdf c3RhdGUpOwogfTsKQEAgLTM0MDEsNiArMzQwMyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50 ZWxfZHBsbF9tZ3IgaWNsX3BsbF9tZ3IgPSB7CiAJLmRwbGxfaW5mbyA9IGljbF9wbGxzLAogCS5n ZXRfZHBsbHMgPSBpY2xfZ2V0X2RwbGxzLAogCS5wdXRfZHBsbHMgPSBpY2xfcHV0X2RwbGxzLAor CS51cGRhdGVfYWN0aXZlX2RwbGwgPSBpY2xfdXBkYXRlX2FjdGl2ZV9kcGxsLAogCS5kdW1wX2h3 X3N0YXRlID0gaWNsX2R1bXBfaHdfc3RhdGUsCiB9OwogCkBAIC0zNTI1LDYgKzM1MjgsMjkgQEAg dm9pZCBpbnRlbF9yZWxlYXNlX3NoYXJlZF9kcGxscyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl ICpzdGF0ZSwKIAlkcGxsX21nci0+cHV0X2RwbGxzKHN0YXRlLCBjcnRjKTsKIH0KIAorLyoqCisg KiBpbnRlbF91cGRhdGVfYWN0aXZlX2RwbGwgLSB1cGRhdGUgdGhlIGFjdGl2ZSBEUExMIGZvciBh IENSVEMvZW5jb2RlcgorICogQHN0YXRlOiBhdG9taWMgc3RhdGUKKyAqIEBjcnRjOiB0aGUgQ1JU QyBmb3Igd2hpY2ggdG8gdXBkYXRlIHRoZSBhY3RpdmUgRFBMTAorICogQGVuY29kZXI6IGVuY29k ZXIgZGV0ZXJtaW5pbmcgdGhlIHR5cGUgb2YgcG9ydCBEUExMCisgKgorICogVXBkYXRlIHRoZSBh Y3RpdmUgRFBMTCBmb3IgdGhlIGdpdmVuIEBjcnRjL0BlbmNvZGVyIGluIEBjcnRjJ3MgYXRvbWlj IHN0YXRlLAorICogZnJvbSB0aGUgcG9ydCBEUExMcyByZXNlcnZlZCBwcmV2aW91c2x5IGJ5IGlu dGVsX3Jlc2VydmVfc2hhcmVkX2RwbGxzKCkuIFRoZQorICogRFBMTCBzZWxlY3RlZCB3aWxsIGJl IGJhc2VkIG9uIHRoZSBjdXJyZW50IG1vZGUgb2YgdGhlIGVuY29kZXIncyBwb3J0LgorICovCit2 b2lkIGludGVsX3VwZGF0ZV9hY3RpdmVfZHBsbChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpz dGF0ZSwKKwkJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAorCQkJICAgICAgc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisJY29uc3Qgc3RydWN0IGludGVs X2RwbGxfbWdyICpkcGxsX21nciA9IGRldl9wcml2LT5kcGxsX21ncjsKKworCWlmIChXQVJOX09O KCFkcGxsX21ncikpCisJCXJldHVybjsKKworCWRwbGxfbWdyLT51cGRhdGVfYWN0aXZlX2RwbGwo c3RhdGUsIGNydGMsIGVuY29kZXIpOworfQorCiAvKioKICAqIGludGVsX3NoYXJlZF9kcGxsX2R1 bXBfaHdfc3RhdGUgLSB3cml0ZSBod19zdGF0ZSB0byBkbWVzZwogICogQGRldl9wcml2OiBpOTE1 IGRybSBkZXZpY2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxf bWdyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5oCmluZGV4IDNiZWE4 MWJkZTM0My4uNTgxN2ZhYTEyOWQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcGxsX21nci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdy LmgKQEAgLTM0Niw2ICszNDYsOSBAQCB2b2lkIGludGVsX3JlbGVhc2Vfc2hhcmVkX2RwbGxzKHN0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkJCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjKTsKIHZvaWQgaWNsX3NldF9hY3RpdmVfcG9ydF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAogCQkJICAgICAgZW51bSBpY2xfcG9ydF9kcGxsX2lkIHBvcnRfZHBs bF9pZCk7Cit2b2lkIGludGVsX3VwZGF0ZV9hY3RpdmVfZHBsbChzdHJ1Y3QgaW50ZWxfYXRvbWlj X3N0YXRlICpzdGF0ZSwKKwkJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAorCQkJICAg ICAgc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpOwogdm9pZCBpbnRlbF9wcmVwYXJlX3No YXJlZF9kcGxsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKIHZv aWQgaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKTsKIHZvaWQgaW50ZWxfZGlzYWJsZV9zaGFyZWRfZHBsbChjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o CmluZGV4IGM2MTk1NWM0MTk3Ni4uYjk2NjU2ZjFiOGQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaApAQCAtMzc1LDYgKzM3NSwxMSBAQCBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yIHsKIAkgKiBh bmQgYWN0aXZlIChpLmUuIGRwbXMgT04gc3RhdGUpLiAqLwogCWJvb2wgKCpnZXRfaHdfc3RhdGUp KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKik7CiAKKwl2b2lkICgqdXBkYXRlX3ByZXBhcmUpKHN0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAorCQkJICAgICAgIHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3Rvcik7CisJdm9pZCAoKnVwZGF0ZV9jb21wbGV0ZSkoc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJCQkJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29u bmVjdG9yKTsKKwogCS8qIFBhbmVsIGluZm8gZm9yIGVEUCBhbmQgTFZEUyAqLwogCXN0cnVjdCBp bnRlbF9wYW5lbCBwYW5lbDsKIApAQCAtMTIzNCw2ICsxMjM5LDggQEAgc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCB7CiAJZW51bSBhdXhfY2ggYXV4X2NoOwogCWVudW0gaW50ZWxfZGlzcGxheV9w b3dlcl9kb21haW4gZGRpX2lvX3Bvd2VyX2RvbWFpbjsKIAlzdHJ1Y3QgbXV0ZXggdGNfbG9jazsK KwlpbnRlbF93YWtlcmVmX3QgdGNfbG9ja193YWtlcmVmOworCWludCB0Y19saW5rX3JlZmNvdW50 OwogCWJvb2wgdGNfbGVnYWN5X3BvcnQ6MTsKIAllbnVtIHRjX3BvcnRfbW9kZSB0Y19tb2RlOwog CkBAIC0xNDg1LDYgKzE0OTIsOCBAQCB2b2lkIGludGVsX3Bwc191bmxvY2tfcmVnc193YShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpbnRlbF9lbmNvZGVyX2Rlc3Ry b3koc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsKIHN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICoKIGludGVsX2VuY29kZXJfY3VycmVudF9tb2RlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyKTsKK3N0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKgoraW50ZWxfY29ubmVjdG9yX3ByaW1h cnlfZGlnaXRhbF9wb3J0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7CiBib29s IGludGVsX3BvcnRfaXNfY29tYm9waHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCBlbnVtIHBvcnQgcG9ydCk7CiBib29sIGludGVsX3BvcnRfaXNfdGMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCk7CiBlbnVtIHRjX3BvcnQgaW50ZWxf cG9ydF90b190YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9oZG1pLmMKaW5kZXggMDk3YmZhNTA0ZWNlLi44OWYwOWUyN2I3NDEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9oZG1pLmMKQEAgLTMwOTIsNiArMzA5MiwxMyBAQCB2b2lkIGludGVsX2hk bWlfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3Bv cnQsCiAJZWxzZQogCQlpbnRlbF9jb25uZWN0b3ItPmdldF9od19zdGF0ZSA9IGludGVsX2Nvbm5l Y3Rvcl9nZXRfaHdfc3RhdGU7CiAKKwlpZiAoaW50ZWxfcG9ydF9pc190YyhkZXZfcHJpdiwgaW50 ZWxfZW5jb2Rlci0+cG9ydCkpIHsKKwkJaW50ZWxfY29ubmVjdG9yLT51cGRhdGVfcHJlcGFyZSA9 CisJCQlpbnRlbF9kZGlfY29ubmVjdG9yX3VwZGF0ZV9wcmVwYXJlOworCQlpbnRlbF9jb25uZWN0 b3ItPnVwZGF0ZV9jb21wbGV0ZSA9CisJCQlpbnRlbF9kZGlfY29ubmVjdG9yX3VwZGF0ZV9jb21w bGV0ZTsKKwl9CisKIAlpbnRlbF9oZG1pX2FkZF9wcm9wZXJ0aWVzKGludGVsX2hkbWksIGNvbm5l Y3Rvcik7CiAKIAlpbnRlbF9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoaW50ZWxfY29ubmVjdG9y LCBpbnRlbF9lbmNvZGVyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3RjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90Yy5jCmluZGV4IDRiMmY1MjViYzJh Ni4uZTc5ZjZjZWIyNmYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90 Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3RjLmMKQEAgLTE4OCwyMSArMTg4 LDEzIEBAIHN0YXRpYyBib29sIGljbF90Y19waHlfaXNfaW5fc2FmZV9tb2RlKHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQogICogZGlzcGxheSwgVVNCLCBldGMuIEFzIGEgcmVz dWx0LCBoYW5kc2hha2luZyB0aHJvdWdoIEZJQSBpcyByZXF1aXJlZCBhcm91bmQKICAqIGNvbm5l Y3QgYW5kIGRpc2Nvbm5lY3QgdG8gY2xlYW5seSB0cmFuc2ZlciBvd25lcnNoaXAgd2l0aCB0aGUg Y29udHJvbGxlciBhbmQKICAqIHNldCB0aGUgdHlwZS1DIHBvd2VyIHN0YXRlLgotICoKLSAqIFdl IGNvdWxkIG9wdCB0byBvbmx5IGRvIHRoZSBjb25uZWN0IGZsb3cgd2hlbiB3ZSBhY3R1YWxseSB0 cnkgdG8gdXNlIHRoZSBBVVgKLSAqIGNoYW5uZWxzIG9yIGRvIGEgbW9kZXNldCwgdGhlbiBpbW1l ZGlhdGVseSBydW4gdGhlIGRpc2Nvbm5lY3QgZmxvdyBhZnRlcgotICogdXNhZ2UsIGJ1dCB0aGVy ZSBhcmUgc29tZSBpbXBsaWNhdGlvbnMgb24gdGhpcyBmb3IgYSBkeW5hbWljIGVudmlyb25tZW50 OgotICogdGhpbmdzIG1heSBnbyBhd2F5IG9yIGNoYW5nZSBiZWhpbmQgb3VyIGJhY2tzLiBTbyBm b3Igbm93IG91ciBkcml2ZXIgaXMKLSAqIGFsd2F5cyB0cnlpbmcgdG8gYWNxdWlyZSBvd25lcnNo aXAgb2YgdGhlIGNvbnRyb2xsZXIgYXMgc29vbiBhcyBpdCBnZXRzIGFuCi0gKiBpbnRlcnJ1cHQg KG9yIHBvbGxzIHN0YXRlIGFuZCBzZWVzIGEgcG9ydCBpcyBjb25uZWN0ZWQpIGFuZCBvbmx5IGdp dmVzIGl0Ci0gKiBiYWNrIHdoZW4gaXQgc2VlcyBhIGRpc2Nvbm5lY3QuIEltcGxlbWVudGF0aW9u IG9mIGEgbW9yZSBmaW5lLWdyYWluZWQgbW9kZWwKLSAqIHdpbGwgcmVxdWlyZSBhIGxvdCBvZiBj b29yZGluYXRpb24gd2l0aCB1c2VyIHNwYWNlIGFuZCB0aG9yb3VnaCB0ZXN0aW5nIGZvcgotICog dGhlIGV4dHJhIHBvc3NpYmxlIGNhc2VzLgogICovCi1zdGF0aWMgdm9pZCBpY2xfdGNfcGh5X2Nv bm5lY3Qoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCitzdGF0aWMgdm9pZCBp Y2xfdGNfcGh5X2Nvbm5lY3Qoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQsCisJ CQkgICAgICAgaW50IHJlcXVpcmVkX2xhbmVzKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYpOwogCWVudW0gdGNf cG9ydCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtPmJhc2Uu cG9ydCk7CisJaW50IG1heF9sYW5lczsKIAogCWlmICghaWNsX3RjX3BoeV9zdGF0dXNfY29tcGxl dGUoZGlnX3BvcnQpKSB7CiAJCURSTV9ERUJVR19LTVMoIlBvcnQgJXM6IFBIWSBub3QgcmVhZHlc biIsCkBAIC0yMTQsOCArMjA2LDkgQEAgc3RhdGljIHZvaWQgaWNsX3RjX3BoeV9jb25uZWN0KHN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQogCSAgICAhV0FSTl9PTihkaWdfcG9y dC0+dGNfbGVnYWN5X3BvcnQpKQogCQlnb3RvIG91dF9zZXRfdGJ0X2FsdF9tb2RlOwogCisJbWF4 X2xhbmVzID0gaW50ZWxfdGNfcG9ydF9maWFfbWF4X2xhbmVfY291bnQoZGlnX3BvcnQpOwogCWlm IChkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQpIHsKLQkJV0FSTl9PTihpbnRlbF90Y19wb3J0X2Zp YV9tYXhfbGFuZV9jb3VudChkaWdfcG9ydCkgIT0gNCk7CisJCVdBUk5fT04obWF4X2xhbmVzICE9 IDQpOwogCQlkaWdfcG9ydC0+dGNfbW9kZSA9IFRDX1BPUlRfTEVHQUNZOwogCiAJCXJldHVybjsK QEAgLTIzMSw2ICsyMjQsMTMgQEAgc3RhdGljIHZvaWQgaWNsX3RjX3BoeV9jb25uZWN0KHN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQogCQlnb3RvIG91dF9zZXRfc2FmZV9tb2Rl OwogCX0KIAorCWlmIChtYXhfbGFuZXMgPCByZXF1aXJlZF9sYW5lcykgeworCQlEUk1fREVCVUdf S01TKCJQb3J0ICVzOiBQSFkgbWF4IGxhbmVzICVkIDwgcmVxdWlyZWQgbGFuZXMgJWRcbiIsCisJ CQkgICAgICB0Y19wb3J0X25hbWUoZGV2X3ByaXYsIHRjX3BvcnQpLAorCQkJICAgICAgbWF4X2xh bmVzLCByZXF1aXJlZF9sYW5lcyk7CisJCWdvdG8gb3V0X3NldF9zYWZlX21vZGU7CisJfQorCiAJ ZGlnX3BvcnQtPnRjX21vZGUgPSBUQ19QT1JUX0RQX0FMVDsKIAogCXJldHVybjsKQEAgLTMxNyw3 ICszMTcsOCBAQCBpbnRlbF90Y19wb3J0X2dldF90YXJnZXRfbW9kZShzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICpkaWdfcG9ydCkKIAkJCQkJICBUQ19QT1JUX1RCVF9BTFQ7CiB9CiAKLXN0YXRp YyB2b2lkIGludGVsX3RjX3BvcnRfcmVzZXRfbW9kZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICpkaWdfcG9ydCkKK3N0YXRpYyB2b2lkIGludGVsX3RjX3BvcnRfcmVzZXRfbW9kZShzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCwKKwkJCQkgICAgIGludCByZXF1aXJlZF9sYW5l cykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19w b3J0LT5iYXNlLmJhc2UuZGV2KTsKIAllbnVtIHRjX3BvcnQgdGNfcG9ydCA9IGludGVsX3BvcnRf dG9fdGMoZGV2X3ByaXYsIGRpZ19wb3J0LT5iYXNlLnBvcnQpOwpAQCAtMzI2LDcgKzMyNyw3IEBA IHN0YXRpYyB2b2lkIGludGVsX3RjX3BvcnRfcmVzZXRfbW9kZShzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICpkaWdfcG9ydCkKIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX2ZsdXNoX3dvcmsoZGV2X3By aXYpOwogCiAJaWNsX3RjX3BoeV9kaXNjb25uZWN0KGRpZ19wb3J0KTsKLQlpY2xfdGNfcGh5X2Nv bm5lY3QoZGlnX3BvcnQpOworCWljbF90Y19waHlfY29ubmVjdChkaWdfcG9ydCwgcmVxdWlyZWRf bGFuZXMpOwogCiAJRFJNX0RFQlVHX0tNUygiUG9ydCAlczogVEMgcG9ydCBtb2RlIHJlc2V0ICgl cyAtPiAlcylcbiIsCiAJCSAgICAgIHRjX3BvcnRfbmFtZShkZXZfcHJpdiwgdGNfcG9ydCksCkBA IC0zMzQsNiArMzM1LDE0IEBAIHN0YXRpYyB2b2lkIGludGVsX3RjX3BvcnRfcmVzZXRfbW9kZShz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKIAkJICAgICAgdGNfcG9ydF9tb2Rl X25hbWUoZGlnX3BvcnQtPnRjX21vZGUpKTsKIH0KIAorc3RhdGljIHZvaWQKK2ludGVsX3RjX3Bv cnRfbGlua19pbml0X3JlZmNvdW50KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0 LAorCQkJCSBpbnQgcmVmY291bnQpCit7CisJV0FSTl9PTihkaWdfcG9ydC0+dGNfbGlua19yZWZj b3VudCk7CisJZGlnX3BvcnQtPnRjX2xpbmtfcmVmY291bnQgPSByZWZjb3VudDsKK30KKwogdm9p ZCBpbnRlbF90Y19wb3J0X3Nhbml0aXplKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19w b3J0KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGln X3BvcnQtPmJhc2UuYmFzZS5kZXYpOwpAQCAtMzU0LDExICszNjMsMTMgQEAgdm9pZCBpbnRlbF90 Y19wb3J0X3Nhbml0aXplKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQogCQkJ RFJNX0RFQlVHX0RSSVZFUigiUG9ydCAlczogUEhZIGRpc2Nvbm5lY3RlZCB3aXRoICVkIGFjdGl2 ZSBsaW5rKHMpXG4iLAogCQkJCQkgdGNfcG9ydF9uYW1lKGRldl9wcml2LCB0Y19wb3J0KSwKIAkJ CQkJIGFjdGl2ZV9saW5rcyk7CisJCWludGVsX3RjX3BvcnRfbGlua19pbml0X3JlZmNvdW50KGRp Z19wb3J0LCBhY3RpdmVfbGlua3MpOworCiAJCWdvdG8gb3V0OwogCX0KIAogCWlmIChkaWdfcG9y dC0+dGNfbGVnYWN5X3BvcnQpCi0JCWljbF90Y19waHlfY29ubmVjdChkaWdfcG9ydCk7CisJCWlj bF90Y19waHlfY29ubmVjdChkaWdfcG9ydCwgMSk7CiAKIG91dDoKIAlEUk1fREVCVUdfRFJJVkVS KCJQb3J0ICVzOiBzYW5pdGl6ZSBtb2RlICglcylcbiIsCkBAIC0zODgsMjcgKzM5OSw2MCBAQCBi b29sIGludGVsX3RjX3BvcnRfY29ubmVjdGVkKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRp Z19wb3J0KQogewogCWJvb2wgaXNfY29ubmVjdGVkOwogCi0JbXV0ZXhfbG9jaygmZGlnX3BvcnQt PnRjX2xvY2spOwotCi0JaWYgKGludGVsX3RjX3BvcnRfbmVlZHNfcmVzZXQoZGlnX3BvcnQpKQot CQlpbnRlbF90Y19wb3J0X3Jlc2V0X21vZGUoZGlnX3BvcnQpOwotCisJaW50ZWxfdGNfcG9ydF9s b2NrKGRpZ19wb3J0KTsKIAlpc19jb25uZWN0ZWQgPSB0Y19wb3J0X2xpdmVfc3RhdHVzX21hc2so ZGlnX3BvcnQpICYKIAkJICAgICAgIEJJVChkaWdfcG9ydC0+dGNfbW9kZSk7Ci0KLQltdXRleF91 bmxvY2soJmRpZ19wb3J0LT50Y19sb2NrKTsKKwlpbnRlbF90Y19wb3J0X3VubG9jayhkaWdfcG9y dCk7CiAKIAlyZXR1cm4gaXNfY29ubmVjdGVkOwogfQogCi12b2lkIGludGVsX3RjX3BvcnRfbG9j ayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKK3N0YXRpYyB2b2lkIF9faW50 ZWxfdGNfcG9ydF9sb2NrKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0LAorCQkJ CSBpbnQgcmVxdWlyZWRfbGFuZXMpCiB7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShkaWdfcG9ydC0+YmFzZS5iYXNlLmRldik7CisJaW50ZWxfd2FrZXJlZl90 IHdha2VyZWY7CisKKwl3YWtlcmVmID0gaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYs IFBPV0VSX0RPTUFJTl9ESVNQTEFZX0NPUkUpOworCiAJbXV0ZXhfbG9jaygmZGlnX3BvcnQtPnRj X2xvY2spOwotCS8qIFRPRE86IHJlc2V0IHRoZSBUeXBlQyBwb3J0IG1vZGUgaWYgbmVlZGVkICov CisKKwlpZiAoIWRpZ19wb3J0LT50Y19saW5rX3JlZmNvdW50ICYmCisJICAgIGludGVsX3RjX3Bv cnRfbmVlZHNfcmVzZXQoZGlnX3BvcnQpKQorCQlpbnRlbF90Y19wb3J0X3Jlc2V0X21vZGUoZGln X3BvcnQsIHJlcXVpcmVkX2xhbmVzKTsKKworCVdBUk5fT04oZGlnX3BvcnQtPnRjX2xvY2tfd2Fr ZXJlZik7CisJZGlnX3BvcnQtPnRjX2xvY2tfd2FrZXJlZiA9IHdha2VyZWY7Cit9CisKK3ZvaWQg aW50ZWxfdGNfcG9ydF9sb2NrKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQor eworCV9faW50ZWxfdGNfcG9ydF9sb2NrKGRpZ19wb3J0LCAxKTsKIH0KIAogdm9pZCBpbnRlbF90 Y19wb3J0X3VubG9jayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKIHsKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LT5iYXNl LmJhc2UuZGV2KTsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZiA9IGZldGNoX2FuZF96ZXJvKCZk aWdfcG9ydC0+dGNfbG9ja193YWtlcmVmKTsKKworCW11dGV4X3VubG9jaygmZGlnX3BvcnQtPnRj X2xvY2spOworCisJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXRfYXN5bmMoZGV2X3ByaXYsIFBPV0VS X0RPTUFJTl9ESVNQTEFZX0NPUkUsCisJCQkJICAgICAgd2FrZXJlZik7Cit9CisKK3ZvaWQgaW50 ZWxfdGNfcG9ydF9nZXRfbGluayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCwK KwkJCSAgICBpbnQgcmVxdWlyZWRfbGFuZXMpCit7CisJX19pbnRlbF90Y19wb3J0X2xvY2soZGln X3BvcnQsIHJlcXVpcmVkX2xhbmVzKTsKKwlkaWdfcG9ydC0+dGNfbGlua19yZWZjb3VudCsrOwor CWludGVsX3RjX3BvcnRfdW5sb2NrKGRpZ19wb3J0KTsKK30KKwordm9pZCBpbnRlbF90Y19wb3J0 X3B1dF9saW5rKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQoreworCW11dGV4 X2xvY2soJmRpZ19wb3J0LT50Y19sb2NrKTsKKwlkaWdfcG9ydC0+dGNfbGlua19yZWZjb3VudC0t OwogCW11dGV4X3VubG9jaygmZGlnX3BvcnQtPnRjX2xvY2spOwogfQogCkBAIC00MTcsNCArNDYx LDUgQEAgaW50ZWxfdGNfcG9ydF9pbml0KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19w b3J0LCBib29sIGlzX2xlZ2FjeSkKIHsKIAltdXRleF9pbml0KCZkaWdfcG9ydC0+dGNfbG9jayk7 CiAJZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0ID0gaXNfbGVnYWN5OworCWRpZ19wb3J0LT50Y19s aW5rX3JlZmNvdW50ID0gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3RjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90Yy5oCmluZGV4IDkxYzZlNzQ1 OWNjOS4uYzE4NzBhY2Y2NTE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF90Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3RjLmgKQEAgLTE0LDYgKzE0 LDkgQEAgaW50IGludGVsX3RjX3BvcnRfZmlhX21heF9sYW5lX2NvdW50KHN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKmRpZ19wb3J0KTsKIHZvaWQgaW50ZWxfdGNfcG9ydF9zYW5pdGl6ZShzdHJ1 Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCk7CiB2b2lkIGludGVsX3RjX3BvcnRfbG9j ayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCk7CiB2b2lkIGludGVsX3RjX3Bv cnRfdW5sb2NrKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KTsKK3ZvaWQgaW50 ZWxfdGNfcG9ydF9nZXRfbGluayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCwK KwkJCSAgICBpbnQgcmVxdWlyZWRfbGFuZXMpOwordm9pZCBpbnRlbF90Y19wb3J0X3B1dF9saW5r KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KTsKIAogdm9pZCBpbnRlbF90Y19w b3J0X2luaXQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQsIGJvb2wgaXNfbGVn YWN5KTsKIAotLSAKMi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZng=