From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [RFC,6/8] EDAC, mce_amd: Convert to seq_buf From: Borislav Petkov Message-Id: <20170725154601.27427-7-bp@alien8.de> Date: Tue, 25 Jul 2017 17:45:59 +0200 To: linux-edac Cc: Steven Rostedt , Tony Luck , Yazen Ghannam , X86 ML , LKML List-ID: RnJvbTogQm9yaXNsYXYgUGV0a292IDxicEBzdXNlLmRlPgoKQ29udmVydCB0aGUgcGFydCB3aGlj aCBkZWNvZGVzIHRoZSBlcnJvciBkZXNjcmlwdGlvbiB0byB0aGUgc2VxdWVuY2UKYnVmZmVyIGZh Y2lsaXR5IGFuZCB0aHVzIHNhdmUgb3Vyc2VsdmVzIHRoZSBtYW55IHByaW50aygpIGludm9jYXRp b25zCmJ1aWxkaW5nIHRoZSBkZWNvZGVkIHN0cmluZy4KCk5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdl LgoKU2lnbmVkLW9mZi1ieTogQm9yaXNsYXYgUGV0a292IDxicEBzdXNlLmRlPgotLS0KIGRyaXZl cnMvZWRhYy9tY2VfYW1kLmMgfCAyMDMgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCspLCA5NSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2VkYWMvbWNlX2FtZC5jIGIvZHJpdmVy cy9lZGFjL21jZV9hbWQuYwppbmRleCBhMTFhNjcxYzdhMzguLjFmNWU5YmIxNjFmMyAxMDA2NDQK LS0tIGEvZHJpdmVycy9lZGFjL21jZV9hbWQuYworKysgYi9kcml2ZXJzL2VkYWMvbWNlX2FtZC5j CkBAIC0xLDMgKzEsNCBAQAorI2luY2x1ZGUgPGxpbnV4L3NlcV9idWYuaD4KICNpbmNsdWRlIDxs aW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAKQEAgLTMwNiw2ICszMDcs MTEgQEAgc3RhdGljIHN0cnVjdCBzbWNhX21jZV9kZXNjIHNtY2FfbWNlX2Rlc2NzW10gPSB7CiAJ W1NNQ0FfU01VXQk9IHsgc21jYV9zbXVfbWNlX2Rlc2MsCUFSUkFZX1NJWkUoc21jYV9zbXVfbWNl X2Rlc2MpCX0sCiB9OwogCisvKiAxMjggYmVjYXVzZSwgd2VsbCwgbmljZSBhbmQgcm91bmQgLSB0 d28gY2FjaGVsaW5lcy4gKi8KKyNkZWZpbmUgQlVGX0xFTiAgICAgICAgMTI4CitzdGF0aWMgY2hh ciBfX2Vycl9idWZbQlVGX0xFTl07CitzdGF0aWMgc3RydWN0IHNlcV9idWYgc2I7CisKIHN0YXRp YyBib29sIGYxMmhfbWMwX21jZSh1MTYgZWMsIHU4IHhlYykKIHsKIAlib29sIHJldCA9IGZhbHNl OwpAQCAtMzE1LDkgKzMyMSw5IEBAIHN0YXRpYyBib29sIGYxMmhfbWMwX21jZSh1MTYgZWMsIHU4 IHhlYykKIAkJcmV0ID0gdHJ1ZTsKIAogCQlpZiAobGwgPT0gTExfTDIpCi0JCQlwcl9jb250KCJk dXJpbmcgTDEgbGluZWZpbGwgZnJvbSBMMi5cbiIpOworCQkJc2VxX2J1Zl9wcmludGYoJnNiLCAi ZHVyaW5nIEwxIGxpbmVmaWxsIGZyb20gTDIuXG4iKTsKIAkJZWxzZSBpZiAobGwgPT0gTExfTDEp Ci0JCQlwcl9jb250KCJEYXRhL1RhZyAlcyBlcnJvci5cbiIsIFI0X01TRyhlYykpOworCQkJc2Vx X2J1Zl9wcmludGYoJnNiLCAiRGF0YS9UYWcgJXMgZXJyb3IuXG4iLCBSNF9NU0coZWMpKTsKIAkJ ZWxzZQogCQkJcmV0ID0gZmFsc2U7CiAJfQpAQCAtMzI3LDcgKzMzMyw3IEBAIHN0YXRpYyBib29s IGYxMmhfbWMwX21jZSh1MTYgZWMsIHU4IHhlYykKIHN0YXRpYyBib29sIGYxMGhfbWMwX21jZSh1 MTYgZWMsIHU4IHhlYykKIHsKIAlpZiAoUjQoZWMpID09IFI0X0dFTiAmJiBMTChlYykgPT0gTExf TDEpIHsKLQkJcHJfY29udCgiZHVyaW5nIGRhdGEgc2NydWIuXG4iKTsKKwkJc2VxX2J1Zl9wcmlu dGYoJnNiLCAiZHVyaW5nIGRhdGEgc2NydWIuXG4iKTsKIAkJcmV0dXJuIHRydWU7CiAJfQogCXJl dHVybiBmMTJoX21jMF9tY2UoZWMsIHhlYyk7CkBAIC0zMzYsNyArMzQyLDcgQEAgc3RhdGljIGJv b2wgZjEwaF9tYzBfbWNlKHUxNiBlYywgdTggeGVjKQogc3RhdGljIGJvb2wgazhfbWMwX21jZSh1 MTYgZWMsIHU4IHhlYykKIHsKIAlpZiAoQlVTX0VSUk9SKGVjKSkgewotCQlwcl9jb250KCJkdXJp bmcgc3lzdGVtIGxpbmVmaWxsLlxuIik7CisJCXNlcV9idWZfcHJpbnRmKCZzYiwgImR1cmluZyBz eXN0ZW0gbGluZWZpbGwuXG4iKTsKIAkJcmV0dXJuIHRydWU7CiAJfQogCkBAIC0zNTYsMTQgKzM2 MiwxNCBAQCBzdGF0aWMgYm9vbCBjYXRfbWMwX21jZSh1MTYgZWMsIHU4IHhlYykKIAkJc3dpdGNo IChyNCkgewogCQljYXNlIFI0X0RSRDoKIAkJY2FzZSBSNF9EV1I6Ci0JCQlwcl9jb250KCJEYXRh L1RhZyBwYXJpdHkgZXJyb3IgZHVlIHRvICVzLlxuIiwKLQkJCQkocjQgPT0gUjRfRFJEID8gImxv YWQvaHcgcHJmIiA6ICJzdG9yZSIpKTsKKwkJCXNlcV9idWZfcHJpbnRmKCZzYiwgIkRhdGEvVGFn IHBhcml0eSBlcnJvciBkdWUgdG8gJXMuXG4iLAorCQkJCQkocjQgPT0gUjRfRFJEID8gImxvYWQv aHcgcHJmIiA6ICJzdG9yZSIpKTsKIAkJCWJyZWFrOwogCQljYXNlIFI0X0VWSUNUOgotCQkJcHJf Y29udCgiQ29weWJhY2sgcGFyaXR5IGVycm9yIG9uIGEgdGFnIG1pc3MuXG4iKTsKKwkJCXNlcV9i dWZfcHJpbnRmKCZzYiwgIkNvcHliYWNrIHBhcml0eSBlcnJvciBvbiBhIHRhZyBtaXNzLlxuIik7 CiAJCQlicmVhazsKIAkJY2FzZSBSNF9TTk9PUDoKLQkJCXByX2NvbnQoIlRhZyBwYXJpdHkgZXJy b3IgZHVyaW5nIHNub29wLlxuIik7CisJCQlzZXFfYnVmX3ByaW50Zigmc2IsICJUYWcgcGFyaXR5 IGVycm9yIGR1cmluZyBzbm9vcC5cbiIpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlyZXQg PSBmYWxzZTsKQEAgLTM3MywxNyArMzc5LDE3IEBAIHN0YXRpYyBib29sIGNhdF9tYzBfbWNlKHUx NiBlYywgdTggeGVjKQogCQlpZiAoKElJKGVjKSAhPSBJSV9NRU0gJiYgSUkoZWMpICE9IElJX0lP KSB8fCBMTChlYykgIT0gTExfTEcpCiAJCQlyZXR1cm4gZmFsc2U7CiAKLQkJcHJfY29udCgiU3lz dGVtIHJlYWQgZGF0YSBlcnJvciBvbiBhICIpOworCQlzZXFfYnVmX3ByaW50Zigmc2IsICJTeXN0 ZW0gcmVhZCBkYXRhIGVycm9yIG9uIGEgIik7CiAKIAkJc3dpdGNoIChyNCkgewogCQljYXNlIFI0 X1JEOgotCQkJcHJfY29udCgiVExCIHJlbG9hZC5cbiIpOworCQkJc2VxX2J1Zl9wcmludGYoJnNi LCAiVExCIHJlbG9hZC5cbiIpOwogCQkJYnJlYWs7CiAJCWNhc2UgUjRfRFdSOgotCQkJcHJfY29u dCgic3RvcmUuXG4iKTsKKwkJCXNlcV9idWZfcHJpbnRmKCZzYiwgInN0b3JlLlxuIik7CiAJCQli cmVhazsKIAkJY2FzZSBSNF9EUkQ6Ci0JCQlwcl9jb250KCJsb2FkLlxuIik7CisJCQlzZXFfYnVm X3ByaW50Zigmc2IsICJsb2FkLlxuIik7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXJldCA9 IGZhbHNlOwpAQCAtNDAzLDI4ICs0MDksMjggQEAgc3RhdGljIGJvb2wgZjE1aF9tYzBfbWNlKHUx NiBlYywgdTggeGVjKQogCiAJCXN3aXRjaCAoeGVjKSB7CiAJCWNhc2UgMHgwOgotCQkJcHJfY29u dCgiRGF0YSBBcnJheSBhY2Nlc3MgZXJyb3IuXG4iKTsKKwkJCXNlcV9idWZfcHJpbnRmKCZzYiwg IkRhdGEgQXJyYXkgYWNjZXNzIGVycm9yLlxuIik7CiAJCQlicmVhazsKIAogCQljYXNlIDB4MToK LQkJCXByX2NvbnQoIlVDIGVycm9yIGR1cmluZyBhIGxpbmVmaWxsIGZyb20gTDIvTkIuXG4iKTsK KwkJCXNlcV9idWZfcHJpbnRmKCZzYiwgIlVDIGVycm9yIGR1cmluZyBhIGxpbmVmaWxsIGZyb20g TDIvTkIuXG4iKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgMHgyOgogCQljYXNlIDB4MTE6Ci0JCQlw cl9jb250KCJTVFEgYWNjZXNzIGVycm9yLlxuIik7CisJCQlzZXFfYnVmX3ByaW50Zigmc2IsICJT VFEgYWNjZXNzIGVycm9yLlxuIik7CiAJCQlicmVhazsKIAogCQljYXNlIDB4MzoKLQkJCXByX2Nv bnQoIlNDQiBhY2Nlc3MgZXJyb3IuXG4iKTsKKwkJCXNlcV9idWZfcHJpbnRmKCZzYiwgIlNDQiBh Y2Nlc3MgZXJyb3IuXG4iKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgMHgxMDoKLQkJCXByX2NvbnQo IlRhZyBlcnJvci5cbiIpOworCQkJc2VxX2J1Zl9wcmludGYoJnNiLCAiVGFnIGVycm9yLlxuIik7 CiAJCQlicmVhazsKIAogCQljYXNlIDB4MTI6Ci0JCQlwcl9jb250KCJMRFEgYWNjZXNzIGVycm9y LlxuIik7CisJCQlzZXFfYnVmX3ByaW50Zigmc2IsICJMRFEgYWNjZXNzIGVycm9yLlxuIik7CiAJ CQlicmVhazsKIAogCQlkZWZhdWx0OgpAQCAtNDMzLDEyICs0MzksMTIgQEAgc3RhdGljIGJvb2wg ZjE1aF9tYzBfbWNlKHUxNiBlYywgdTggeGVjKQogCX0gZWxzZSBpZiAoQlVTX0VSUk9SKGVjKSkg ewogCiAJCWlmICgheGVjKQotCQkJcHJfY29udCgiU3lzdGVtIFJlYWQgRGF0YSBFcnJvci5cbiIp OworCQkJc2VxX2J1Zl9wcmludGYoJnNiLCAiU3lzdGVtIFJlYWQgRGF0YSBFcnJvci5cbiIpOwog CQllbHNlCi0JCQlwcl9jb250KCIgSW50ZXJuYWwgZXJyb3IgY29uZGl0aW9uIHR5cGUgJWQuXG4i LCB4ZWMpOworCQkJc2VxX2J1Zl9wcmludGYoJnNiLCAiIEludGVybmFsIGVycm9yIGNvbmRpdGlv biB0eXBlICVkLlxuIiwgeGVjKTsKIAl9IGVsc2UgaWYgKElOVF9FUlJPUihlYykpIHsKIAkJaWYg KHhlYyA8PSAweDFmKQotCQkJcHJfY29udCgiSGFyZHdhcmUgQXNzZXJ0LlxuIik7CisJCQlzZXFf YnVmX3ByaW50Zigmc2IsICJIYXJkd2FyZSBBc3NlcnQuXG4iKTsKIAkJZWxzZQogCQkJcmV0ID0g ZmFsc2U7CiAKQEAgLTQ1MywxMyArNDU5LDEzIEBAIHN0YXRpYyB2b2lkIGRlY29kZV9tYzBfbWNl KHN0cnVjdCBtY2UgKm0pCiAJdTE2IGVjID0gRUMobS0+c3RhdHVzKTsKIAl1OCB4ZWMgPSBYRUMo bS0+c3RhdHVzLCB4ZWNfbWFzayk7CiAKLQlwcl9lbWVyZyhIV19FUlIgIk1DMCBFcnJvcjogIik7 CisJc2VxX2J1Zl9wcmludGYoJnNiLCBIV19FUlIgIk1DMCBFcnJvcjogIik7CiAKIAkvKiBUTEIg ZXJyb3Igc2lnbmF0dXJlcyBhcmUgdGhlIHNhbWUgYWNyb3NzIGZhbWlsaWVzICovCiAJaWYgKFRM Ql9FUlJPUihlYykpIHsKIAkJaWYgKFRUKGVjKSA9PSBUVF9EQVRBKSB7Ci0JCQlwcl9jb250KCIl cyBUTEIgJXMuXG4iLCBMTF9NU0coZWMpLAotCQkJCSgoeGVjID09IDIpID8gImxvY2tlZCBtaXNz IgorCQkJc2VxX2J1Zl9wcmludGYoJnNiLCAiJXMgVExCICVzLlxuIiwgTExfTVNHKGVjKSwKKwkJ CQkJKCh4ZWMgPT0gMikgPyAibG9ja2VkIG1pc3MiCiAJCQkJCSAgICA6ICh4ZWMgPyAibXVsdGlt YXRjaCIgOiAicGFyaXR5IikpKTsKIAkJCXJldHVybjsKIAkJfQpAQCAtNDc4LDE5ICs0ODQsMTkg QEAgc3RhdGljIGJvb2wgazhfbWMxX21jZSh1MTYgZWMsIHU4IHhlYykKIAkJcmV0dXJuIGZhbHNl OwogCiAJaWYgKGxsID09IDB4MikKLQkJcHJfY29udCgiZHVyaW5nIGEgbGluZWZpbGwgZnJvbSBM Mi5cbiIpOworCQlzZXFfYnVmX3ByaW50Zigmc2IsICJkdXJpbmcgYSBsaW5lZmlsbCBmcm9tIEwy LlxuIik7CiAJZWxzZSBpZiAobGwgPT0gMHgxKSB7CiAJCXN3aXRjaCAoUjQoZWMpKSB7CiAJCWNh c2UgUjRfSVJEOgotCQkJcHJfY29udCgiUGFyaXR5IGVycm9yIGR1cmluZyBkYXRhIGxvYWQuXG4i KTsKKwkJCXNlcV9idWZfcHJpbnRmKCZzYiwgIlBhcml0eSBlcnJvciBkdXJpbmcgZGF0YSBsb2Fk LlxuIik7CiAJCQlicmVhazsKIAogCQljYXNlIFI0X0VWSUNUOgotCQkJcHJfY29udCgiQ29weWJh Y2sgUGFyaXR5L1ZpY3RpbSBlcnJvci5cbiIpOworCQkJc2VxX2J1Zl9wcmludGYoJnNiLCAiQ29w eWJhY2sgUGFyaXR5L1ZpY3RpbSBlcnJvci5cbiIpOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBSNF9T Tk9PUDoKLQkJCXByX2NvbnQoIlRhZyBTbm9vcCBlcnJvci5cbiIpOworCQkJc2VxX2J1Zl9wcmlu dGYoJnNiLCAiVGFnIFNub29wIGVycm9yLlxuIik7CiAJCQlicmVhazsKIAogCQlkZWZhdWx0OgpA QCAtNTE1LDEzICs1MjEsMTMgQEAgc3RhdGljIGJvb2wgY2F0X21jMV9tY2UodTE2IGVjLCB1OCB4 ZWMpCiAJCXJldHVybiBmYWxzZTsKIAogCWlmIChyNCA9PSBSNF9JUkQpCi0JCXByX2NvbnQoIkRh dGEvdGFnIGFycmF5IHBhcml0eSBlcnJvciBmb3IgYSB0YWcgaGl0LlxuIik7CisJCXNlcV9idWZf cHJpbnRmKCZzYiwgIkRhdGEvdGFnIGFycmF5IHBhcml0eSBlcnJvciBmb3IgYSB0YWcgaGl0Llxu Iik7CiAJZWxzZSBpZiAocjQgPT0gUjRfU05PT1ApCi0JCXByX2NvbnQoIlRhZyBlcnJvciBkdXJp bmcgc25vb3AvdmljdGltaXphdGlvbi5cbiIpOworCQlzZXFfYnVmX3ByaW50Zigmc2IsICJUYWcg ZXJyb3IgZHVyaW5nIHNub29wL3ZpY3RpbWl6YXRpb24uXG4iKTsKIAllbHNlIGlmICh4ZWMgPT0g MHgwKQotCQlwcl9jb250KCJUYWcgcGFyaXR5IGVycm9yIGZyb20gdmljdGltIGNhc3RvdXQuXG4i KTsKKwkJc2VxX2J1Zl9wcmludGYoJnNiLCAiVGFnIHBhcml0eSBlcnJvciBmcm9tIHZpY3RpbSBj YXN0b3V0LlxuIik7CiAJZWxzZSBpZiAoeGVjID09IDB4MikKLQkJcHJfY29udCgiTWljcm9jb2Rl IHBhdGNoIFJBTSBwYXJpdHkgZXJyb3IuXG4iKTsKKwkJc2VxX2J1Zl9wcmludGYoJnNiLCAiTWlj cm9jb2RlIHBhdGNoIFJBTSBwYXJpdHkgZXJyb3IuXG4iKTsKIAllbHNlCiAJCXJldCA9IGZhbHNl OwogCkBAIC01MzcsMTkgKzU0MywxOSBAQCBzdGF0aWMgYm9vbCBmMTVoX21jMV9tY2UodTE2IGVj LCB1OCB4ZWMpCiAKIAlzd2l0Y2ggKHhlYykgewogCWNhc2UgMHgwIC4uLiAweGE6Ci0JCXByX2Nv bnQoIiVzLlxuIiwgZjE1aF9tYzFfbWNlX2Rlc2NbeGVjXSk7CisJCXNlcV9idWZfcHJpbnRmKCZz YiwgIiVzLlxuIiwgZjE1aF9tYzFfbWNlX2Rlc2NbeGVjXSk7CiAJCWJyZWFrOwogCiAJY2FzZSAw eGQ6Ci0JCXByX2NvbnQoIiVzLlxuIiwgZjE1aF9tYzFfbWNlX2Rlc2NbeGVjLTJdKTsKKwkJc2Vx X2J1Zl9wcmludGYoJnNiLCAiJXMuXG4iLCBmMTVoX21jMV9tY2VfZGVzY1t4ZWMtMl0pOwogCQli cmVhazsKIAogCWNhc2UgMHgxMDoKLQkJcHJfY29udCgiJXMuXG4iLCBmMTVoX21jMV9tY2VfZGVz Y1t4ZWMtNF0pOworCQlzZXFfYnVmX3ByaW50Zigmc2IsICIlcy5cbiIsIGYxNWhfbWMxX21jZV9k ZXNjW3hlYy00XSk7CiAJCWJyZWFrOwogCiAJY2FzZSAweDExIC4uLiAweDE1OgotCQlwcl9jb250 KCJEZWNvZGVyICVzIHBhcml0eSBlcnJvci5cbiIsIGYxNWhfbWMxX21jZV9kZXNjW3hlYy00XSk7 CisJCXNlcV9idWZfcHJpbnRmKCZzYiwgIkRlY29kZXIgJXMgcGFyaXR5IGVycm9yLlxuIiwgZjE1 aF9tYzFfbWNlX2Rlc2NbeGVjLTRdKTsKIAkJYnJlYWs7CiAKIAlkZWZhdWx0OgpAQCAtNTYzLDE4 ICs1NjksMTggQEAgc3RhdGljIHZvaWQgZGVjb2RlX21jMV9tY2Uoc3RydWN0IG1jZSAqbSkKIAl1 MTYgZWMgPSBFQyhtLT5zdGF0dXMpOwogCXU4IHhlYyA9IFhFQyhtLT5zdGF0dXMsIHhlY19tYXNr KTsKIAotCXByX2VtZXJnKEhXX0VSUiAiTUMxIEVycm9yOiAiKTsKKwlzZXFfYnVmX3ByaW50Zigm c2IsIEhXX0VSUiAiTUMxIEVycm9yOiAiKTsKIAogCWlmIChUTEJfRVJST1IoZWMpKQotCQlwcl9j b250KCIlcyBUTEIgJXMuXG4iLCBMTF9NU0coZWMpLAotCQkJKHhlYyA/ICJtdWx0aW1hdGNoIiA6 ICJwYXJpdHkgZXJyb3IiKSk7CisJCXNlcV9idWZfcHJpbnRmKCZzYiwgIiVzIFRMQiAlcy5cbiIs IExMX01TRyhlYyksCisJCQkJKHhlYyA/ICJtdWx0aW1hdGNoIiA6ICJwYXJpdHkgZXJyb3IiKSk7 CiAJZWxzZSBpZiAoQlVTX0VSUk9SKGVjKSkgewogCQlib29sIGs4ID0gKGJvb3RfY3B1X2RhdGEu eDg2ID09IDB4ZiAmJiAobS0+c3RhdHVzICYgQklUXzY0KDU4KSkpOwogCi0JCXByX2NvbnQoImR1 cmluZyAlcy5cbiIsIChrOCA/ICJzeXN0ZW0gbGluZWZpbGwiIDogIk5CIGRhdGEgcmVhZCIpKTsK KwkJc2VxX2J1Zl9wcmludGYoJnNiLCAiZHVyaW5nICVzLlxuIiwgKGs4ID8gInN5c3RlbSBsaW5l ZmlsbCIgOiAiTkIgZGF0YSByZWFkIikpOwogCX0gZWxzZSBpZiAoSU5UX0VSUk9SKGVjKSkgewog CQlpZiAoeGVjIDw9IDB4M2YpCi0JCQlwcl9jb250KCJIYXJkd2FyZSBBc3NlcnQuXG4iKTsKKwkJ CXNlcV9idWZfcHJpbnRmKCZzYiwgIkhhcmR3YXJlIEFzc2VydC5cbiIpOwogCQllbHNlCiAJCQln b3RvIHdyb25nX21jMV9tY2U7CiAJfSBlbHNlIGlmIChmYW1fb3BzLT5tYzFfbWNlKGVjLCB4ZWMp KQpAQCAtNTkzLDI3ICs1OTksMjcgQEAgc3RhdGljIGJvb2wgazhfbWMyX21jZSh1MTYgZWMsIHU4 IHhlYykKIAlib29sIHJldCA9IHRydWU7CiAKIAlpZiAoeGVjID09IDB4MSkKLQkJcHJfY29udCgi IGluIHRoZSB3cml0ZSBkYXRhIGJ1ZmZlcnMuXG4iKTsKKwkJc2VxX2J1Zl9wcmludGYoJnNiLCAi IGluIHRoZSB3cml0ZSBkYXRhIGJ1ZmZlcnMuXG4iKTsKIAllbHNlIGlmICh4ZWMgPT0gMHgzKQot CQlwcl9jb250KCIgaW4gdGhlIHZpY3RpbSBkYXRhIGJ1ZmZlcnMuXG4iKTsKKwkJc2VxX2J1Zl9w cmludGYoJnNiLCAiIGluIHRoZSB2aWN0aW0gZGF0YSBidWZmZXJzLlxuIik7CiAJZWxzZSBpZiAo eGVjID09IDB4MiAmJiBNRU1fRVJST1IoZWMpKQotCQlwcl9jb250KCI6ICVzIGVycm9yIGluIHRo ZSBMMiBjYWNoZSB0YWdzLlxuIiwgUjRfTVNHKGVjKSk7CisJCXNlcV9idWZfcHJpbnRmKCZzYiwg IjogJXMgZXJyb3IgaW4gdGhlIEwyIGNhY2hlIHRhZ3MuXG4iLCBSNF9NU0coZWMpKTsKIAllbHNl IGlmICh4ZWMgPT0gMHgwKSB7CiAJCWlmIChUTEJfRVJST1IoZWMpKQotCQkJcHJfY29udCgiJXMg ZXJyb3IgaW4gYSBQYWdlIERlc2NyaXB0b3IgQ2FjaGUgb3IgR3Vlc3QgVExCLlxuIiwKLQkJCQlU VF9NU0coZWMpKTsKKwkJCXNlcV9idWZfcHJpbnRmKCZzYiwgIiVzIGVycm9yIGluIGEgUGFnZSBE ZXNjcmlwdG9yIENhY2hlIG9yIEd1ZXN0IFRMQi5cbiIsCisJCQkJCVRUX01TRyhlYykpOwogCQll bHNlIGlmIChCVVNfRVJST1IoZWMpKQotCQkJcHJfY29udCgiOiAlcy9FQ0MgZXJyb3IgaW4gZGF0 YSByZWFkIGZyb20gTkI6ICVzLlxuIiwKLQkJCQlSNF9NU0coZWMpLCBQUF9NU0coZWMpKTsKKwkJ CXNlcV9idWZfcHJpbnRmKCZzYiwgIjogJXMvRUNDIGVycm9yIGluIGRhdGEgcmVhZCBmcm9tIE5C OiAlcy5cbiIsCisJCQkJCVI0X01TRyhlYyksIFBQX01TRyhlYykpOwogCQllbHNlIGlmIChNRU1f RVJST1IoZWMpKSB7CiAJCQl1OCByNCA9IFI0KGVjKTsKIAogCQkJaWYgKHI0ID49IDB4NykKLQkJ CQlwcl9jb250KCI6ICVzIGVycm9yIGR1cmluZyBkYXRhIGNvcHliYWNrLlxuIiwKLQkJCQkJUjRf TVNHKGVjKSk7CisJCQkJc2VxX2J1Zl9wcmludGYoJnNiLCAiOiAlcyBlcnJvciBkdXJpbmcgZGF0 YSBjb3B5YmFjay5cbiIsCisJCQkJCQlSNF9NU0coZWMpKTsKIAkJCWVsc2UgaWYgKHI0IDw9IDB4 MSkKLQkJCQlwcl9jb250KCI6ICVzIHBhcml0eS9FQ0MgZXJyb3IgZHVyaW5nIGRhdGEgIgotCQkJ CQkiYWNjZXNzIGZyb20gTDIuXG4iLCBSNF9NU0coZWMpKTsKKwkJCQlzZXFfYnVmX3ByaW50Zigm c2IsCisiOiAlcyBwYXJpdHkvRUNDIGVycm9yIGR1cmluZyBkYXRhIGFjY2VzcyBmcm9tIEwyLlxu IiwgUjRfTVNHKGVjKSk7CiAJCQllbHNlCiAJCQkJcmV0ID0gZmFsc2U7CiAJCX0gZWxzZQpAQCAt NjMwLDI0ICs2MzYsMjQgQEAgc3RhdGljIGJvb2wgZjE1aF9tYzJfbWNlKHUxNiBlYywgdTggeGVj KQogCiAJaWYgKFRMQl9FUlJPUihlYykpIHsKIAkJaWYgKHhlYyA9PSAweDApCi0JCQlwcl9jb250 KCJEYXRhIHBhcml0eSBUTEIgcmVhZCBlcnJvci5cbiIpOworCQkJc2VxX2J1Zl9wcmludGYoJnNi LCAiRGF0YSBwYXJpdHkgVExCIHJlYWQgZXJyb3IuXG4iKTsKIAkJZWxzZSBpZiAoeGVjID09IDB4 MSkKLQkJCXByX2NvbnQoIlBvaXNvbiBkYXRhIHByb3ZpZGVkIGZvciBUTEIgZmlsbC5cbiIpOwor CQkJc2VxX2J1Zl9wcmludGYoJnNiLCAiUG9pc29uIGRhdGEgcHJvdmlkZWQgZm9yIFRMQiBmaWxs LlxuIik7CiAJCWVsc2UKIAkJCXJldCA9IGZhbHNlOwogCX0gZWxzZSBpZiAoQlVTX0VSUk9SKGVj KSkgewogCQlpZiAoeGVjID4gMikKIAkJCXJldCA9IGZhbHNlOwogCi0JCXByX2NvbnQoIkVycm9y IGR1cmluZyBhdHRlbXB0ZWQgTkIgZGF0YSByZWFkLlxuIik7CisJCXNlcV9idWZfcHJpbnRmKCZz YiwgIkVycm9yIGR1cmluZyBhdHRlbXB0ZWQgTkIgZGF0YSByZWFkLlxuIik7CiAJfSBlbHNlIGlm IChNRU1fRVJST1IoZWMpKSB7CiAJCXN3aXRjaCAoeGVjKSB7CiAJCWNhc2UgMHg0IC4uLiAweGM6 Ci0JCQlwcl9jb250KCIlcy5cbiIsIGYxNWhfbWMyX21jZV9kZXNjW3hlYyAtIDB4NF0pOworCQkJ c2VxX2J1Zl9wcmludGYoJnNiLCAiJXMuXG4iLCBmMTVoX21jMl9tY2VfZGVzY1t4ZWMgLSAweDRd KTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgMHgxMCAuLi4gMHgxNDoKLQkJCXByX2NvbnQoIiVzLlxu IiwgZjE1aF9tYzJfbWNlX2Rlc2NbeGVjIC0gMHg3XSk7CisJCQlzZXFfYnVmX3ByaW50Zigmc2Is ICIlcy5cbiIsIGYxNWhfbWMyX21jZV9kZXNjW3hlYyAtIDB4N10pOwogCQkJYnJlYWs7CiAKIAkJ ZGVmYXVsdDoKQEAgLTY1NSw3ICs2NjEsNyBAQCBzdGF0aWMgYm9vbCBmMTVoX21jMl9tY2UodTE2 IGVjLCB1OCB4ZWMpCiAJCX0KIAl9IGVsc2UgaWYgKElOVF9FUlJPUihlYykpIHsKIAkJaWYgKHhl YyA8PSAweDNmKQotCQkJcHJfY29udCgiSGFyZHdhcmUgQXNzZXJ0LlxuIik7CisJCQlzZXFfYnVm X3ByaW50Zigmc2IsICJIYXJkd2FyZSBBc3NlcnQuXG4iKTsKIAkJZWxzZQogCQkJcmV0ID0gZmFs c2U7CiAJfQpAQCAtNjcyLDI5ICs2NzgsMjkgQEAgc3RhdGljIGJvb2wgZjE2aF9tYzJfbWNlKHUx NiBlYywgdTggeGVjKQogCiAJc3dpdGNoICh4ZWMpIHsKIAljYXNlIDB4MDQgLi4uIDB4MDU6Ci0J CXByX2NvbnQoIiVjQlVGRiBwYXJpdHkgZXJyb3IuXG4iLCAocjQgPT0gUjRfUkQpID8gJ0knIDog J08nKTsKKwkJc2VxX2J1Zl9wcmludGYoJnNiLCAiJWNCVUZGIHBhcml0eSBlcnJvci5cbiIsIChy NCA9PSBSNF9SRCkgPyAnSScgOiAnTycpOwogCQlicmVhazsKIAogCWNhc2UgMHgwOSAuLi4gMHgw YjoKIAljYXNlIDB4MGQgLi4uIDB4MGY6Ci0JCXByX2NvbnQoIkVDQyBlcnJvciBpbiBMMiB0YWcg KCVzKS5cbiIsCi0JCQkoKHI0ID09IFI0X0dFTikgICA/ICJCYW5rUmVxIiA6Ci0JCQkoKHI0ID09 IFI0X1NOT09QKSA/ICJQcmIiICAgICA6ICJGaWxsIikpKTsKKwkJc2VxX2J1Zl9wcmludGYoJnNi LCAiRUNDIGVycm9yIGluIEwyIHRhZyAoJXMpLlxuIiwKKwkJCQkoKHI0ID09IFI0X0dFTikgICA/ ICJCYW5rUmVxIiA6CisJCQkJKChyNCA9PSBSNF9TTk9PUCkgPyAiUHJiIiAgICAgOiAiRmlsbCIp KSk7CiAJCWJyZWFrOwogCiAJY2FzZSAweDEwIC4uLiAweDE5OgogCWNhc2UgMHgxYjoKLQkJcHJf Y29udCgiRUNDIGVycm9yIGluIEwyIGRhdGEgYXJyYXkgKCVzKS5cbiIsCi0JCQkoKChyNCA9PSBS NF9SRCkgJiYgISh4ZWMgJiAweDMpKSA/ICJIaXQiICA6Ci0JCQkoKHI0ID09IFI0X0dFTikgICA/ ICJBdHRyIiA6Ci0JCQkoKHI0ID09IFI0X0VWSUNUKSA/ICJWaWN0IiA6ICJGaWxsIikpKSk7CisJ CXNlcV9idWZfcHJpbnRmKCZzYiwgIkVDQyBlcnJvciBpbiBMMiBkYXRhIGFycmF5ICglcykuXG4i LAorCQkJCSgoKHI0ID09IFI0X1JEKSAmJiAhKHhlYyAmIDB4MykpID8gIkhpdCIgIDoKKwkJCQko KHI0ID09IFI0X0dFTikgICA/ICJBdHRyIiA6CisJCQkJKChyNCA9PSBSNF9FVklDVCkgPyAiVmlj dCIgOiAiRmlsbCIpKSkpOwogCQlicmVhazsKIAogCWNhc2UgMHgxYyAuLi4gMHgxZDoKIAljYXNl IDB4MWY6Ci0JCXByX2NvbnQoIlBhcml0eSBlcnJvciBpbiBMMiBhdHRyaWJ1dGUgYml0cyAoJXMp LlxuIiwKLQkJCSgocjQgPT0gUjRfUkQpICA/ICJIaXQiICA6Ci0JCQkoKHI0ID09IFI0X0dFTikg PyAiQXR0ciIgOiAiRmlsbCIpKSk7CisJCXNlcV9idWZfcHJpbnRmKCZzYiwgIlBhcml0eSBlcnJv ciBpbiBMMiBhdHRyaWJ1dGUgYml0cyAoJXMpLlxuIiwKKwkJCQkoKHI0ID09IFI0X1JEKSAgPyAi SGl0IiAgOgorCQkJCSgocjQgPT0gUjRfR0VOKSA/ICJBdHRyIiA6ICJGaWxsIikpKTsKIAkJYnJl YWs7CiAKIAlkZWZhdWx0OgpAQCAtNzA5LDEwICs3MTUsMTAgQEAgc3RhdGljIHZvaWQgZGVjb2Rl X21jMl9tY2Uoc3RydWN0IG1jZSAqbSkKIAl1MTYgZWMgPSBFQyhtLT5zdGF0dXMpOwogCXU4IHhl YyA9IFhFQyhtLT5zdGF0dXMsIHhlY19tYXNrKTsKIAotCXByX2VtZXJnKEhXX0VSUiAiTUMyIEVy cm9yOiAiKTsKKwlzZXFfYnVmX3ByaW50Zigmc2IsIEhXX0VSUiAiTUMyIEVycm9yOiAiKTsKIAog CWlmICghZmFtX29wcy0+bWMyX21jZShlYywgeGVjKSkKLQkJcHJfY29udChIV19FUlIgIkNvcnJ1 cHRlZCBNQzIgTUNFIGluZm8/XG4iKTsKKwkJcHJfZW1lcmcoSFdfRVJSICJDb3JydXB0ZWQgTUMy IE1DRSBpbmZvP1xuIik7CiB9CiAKIHN0YXRpYyB2b2lkIGRlY29kZV9tYzNfbWNlKHN0cnVjdCBt Y2UgKm0pCkBAIC03MjYsNyArNzMyLDcgQEAgc3RhdGljIHZvaWQgZGVjb2RlX21jM19tY2Uoc3Ry dWN0IG1jZSAqbSkKIAkJcmV0dXJuOwogCX0KIAotCXByX2VtZXJnKEhXX0VSUiAiTUMzIEVycm9y Iik7CisJc2VxX2J1Zl9wcmludGYoJnNiLCBIV19FUlIgIk1DMyBFcnJvciIpOwogCiAJaWYgKHhl YyA9PSAweDApIHsKIAkJdTggcjQgPSBSNChlYyk7CkBAIC03MzQsNyArNzQwLDcgQEAgc3RhdGlj IHZvaWQgZGVjb2RlX21jM19tY2Uoc3RydWN0IG1jZSAqbSkKIAkJaWYgKCFCVVNfRVJST1IoZWMp IHx8IChyNCAhPSBSNF9EUkQgJiYgcjQgIT0gUjRfRFdSKSkKIAkJCWdvdG8gd3JvbmdfbWMzX21j ZTsKIAotCQlwcl9jb250KCIgZHVyaW5nICVzLlxuIiwgUjRfTVNHKGVjKSk7CisJCXNlcV9idWZf cHJpbnRmKCZzYiwgIiBkdXJpbmcgJXMuXG4iLCBSNF9NU0coZWMpKTsKIAl9IGVsc2UKIAkJZ290 byB3cm9uZ19tYzNfbWNlOwogCkBAIC03NTIsNyArNzU4LDcgQEAgc3RhdGljIHZvaWQgZGVjb2Rl X21jNF9tY2Uoc3RydWN0IG1jZSAqbSkKIAl1OCB4ZWMgPSBYRUMobS0+c3RhdHVzLCAweDFmKTsK IAl1OCBvZmZzZXQgPSAwOwogCi0JcHJfZW1lcmcoSFdfRVJSICJNQzQgRXJyb3IgKG5vZGUgJWQp OiAiLCBub2RlX2lkKTsKKwlzZXFfYnVmX3ByaW50Zigmc2IsIEhXX0VSUiAiTUM0IEVycm9yIChu b2RlICVkKTogIiwgbm9kZV9pZCk7CiAKIAlzd2l0Y2ggKHhlYykgewogCWNhc2UgMHgwIC4uLiAw eGU6CkBAIC03NjMsNyArNzY5LDcgQEAgc3RhdGljIHZvaWQgZGVjb2RlX21jNF9tY2Uoc3RydWN0 IG1jZSAqbSkKIAkJCWlmIChmYW0gPT0gMHgxMSkKIAkJCQlnb3RvIHdyb25nX21jNF9tY2U7CiAK LQkJCXByX2NvbnQoIiVzLlxuIiwgbWM0X21jZV9kZXNjW3hlY10pOworCQkJc2VxX2J1Zl9wcmlu dGYoJnNiLCAiJXMuXG4iLCBtYzRfbWNlX2Rlc2NbeGVjXSk7CiAKIAkJCWlmIChkZWNvZGVfZHJh bV9lY2MpCiAJCQkJZGVjb2RlX2RyYW1fZWNjKG5vZGVfaWQsIG0pOwpAQCAtNzczLDE2ICs3Nzks MTYgQEAgc3RhdGljIHZvaWQgZGVjb2RlX21jNF9tY2Uoc3RydWN0IG1jZSAqbSkKIAogCWNhc2Ug MHhmOgogCQlpZiAoVExCX0VSUk9SKGVjKSkKLQkJCXByX2NvbnQoIkdBUlQgVGFibGUgV2FsayBk YXRhIGVycm9yLlxuIik7CisJCQlzZXFfYnVmX3ByaW50Zigmc2IsICJHQVJUIFRhYmxlIFdhbGsg ZGF0YSBlcnJvci5cbiIpOwogCQllbHNlIGlmIChCVVNfRVJST1IoZWMpKQotCQkJcHJfY29udCgi RE1BIEV4Y2x1c2lvbiBWZWN0b3IgVGFibGUgV2FsayBlcnJvci5cbiIpOworCQkJc2VxX2J1Zl9w cmludGYoJnNiLCAiRE1BIEV4Y2x1c2lvbiBWZWN0b3IgVGFibGUgV2FsayBlcnJvci5cbiIpOwog CQllbHNlCiAJCQlnb3RvIHdyb25nX21jNF9tY2U7CiAJCXJldHVybjsKIAogCWNhc2UgMHgxOToK IAkJaWYgKGZhbSA9PSAweDE1IHx8IGZhbSA9PSAweDE2KQotCQkJcHJfY29udCgiQ29tcHV0ZSBV bml0IERhdGEgRXJyb3IuXG4iKTsKKwkJCXNlcV9idWZfcHJpbnRmKCZzYiwgIkNvbXB1dGUgVW5p dCBEYXRhIEVycm9yLlxuIik7CiAJCWVsc2UKIAkJCWdvdG8gd3JvbmdfbWM0X21jZTsKIAkJcmV0 dXJuOwpAQCAtNzk1LDcgKzgwMSw3IEBAIHN0YXRpYyB2b2lkIGRlY29kZV9tYzRfbWNlKHN0cnVj dCBtY2UgKm0pCiAJCWdvdG8gd3JvbmdfbWM0X21jZTsKIAl9CiAKLQlwcl9jb250KCIlcy5cbiIs IG1jNF9tY2VfZGVzY1t4ZWMgLSBvZmZzZXRdKTsKKwlzZXFfYnVmX3ByaW50Zigmc2IsICIlcy5c biIsIG1jNF9tY2VfZGVzY1t4ZWMgLSBvZmZzZXRdKTsKIAlyZXR1cm47CiAKICB3cm9uZ19tYzRf bWNlOgpAQCAtODExLDIwICs4MTcsMjAgQEAgc3RhdGljIHZvaWQgZGVjb2RlX21jNV9tY2Uoc3Ry dWN0IG1jZSAqbSkKIAlpZiAoZmFtID09IDB4ZiB8fCBmYW0gPT0gMHgxMSkKIAkJZ290byB3cm9u Z19tYzVfbWNlOwogCi0JcHJfZW1lcmcoSFdfRVJSICJNQzUgRXJyb3I6ICIpOworCXNlcV9idWZf cHJpbnRmKCZzYiwgSFdfRVJSICJNQzUgRXJyb3I6ICIpOwogCiAJaWYgKElOVF9FUlJPUihlYykp IHsKIAkJaWYgKHhlYyA8PSAweDFmKSB7Ci0JCQlwcl9jb250KCJIYXJkd2FyZSBBc3NlcnQuXG4i KTsKKwkJCXNlcV9idWZfcHJpbnRmKCZzYiwgIkhhcmR3YXJlIEFzc2VydC5cbiIpOwogCQkJcmV0 dXJuOwogCQl9IGVsc2UKIAkJCWdvdG8gd3JvbmdfbWM1X21jZTsKIAl9CiAKIAlpZiAoeGVjID09 IDB4MCB8fCB4ZWMgPT0gMHhjKQotCQlwcl9jb250KCIlcy5cbiIsIG1jNV9tY2VfZGVzY1t4ZWNd KTsKKwkJc2VxX2J1Zl9wcmludGYoJnNiLCAiJXMuXG4iLCBtYzVfbWNlX2Rlc2NbeGVjXSk7CiAJ ZWxzZSBpZiAoeGVjIDw9IDB4ZCkKLQkJcHJfY29udCgiJXMgcGFyaXR5IGVycm9yLlxuIiwgbWM1 X21jZV9kZXNjW3hlY10pOworCQlzZXFfYnVmX3ByaW50Zigmc2IsICIlcyBwYXJpdHkgZXJyb3Iu XG4iLCBtYzVfbWNlX2Rlc2NbeGVjXSk7CiAJZWxzZQogCQlnb3RvIHdyb25nX21jNV9tY2U7CiAK QEAgLTgzOCwxMiArODQ0LDEyIEBAIHN0YXRpYyB2b2lkIGRlY29kZV9tYzZfbWNlKHN0cnVjdCBt Y2UgKm0pCiB7CiAJdTggeGVjID0gWEVDKG0tPnN0YXR1cywgeGVjX21hc2spOwogCi0JcHJfZW1l cmcoSFdfRVJSICJNQzYgRXJyb3I6ICIpOworCXNlcV9idWZfcHJpbnRmKCZzYiwgSFdfRVJSICJN QzYgRXJyb3I6ICIpOwogCiAJaWYgKHhlYyA+IDB4NSkKIAkJZ290byB3cm9uZ19tYzZfbWNlOwog Ci0JcHJfY29udCgiJXMgcGFyaXR5IGVycm9yLlxuIiwgbWM2X21jZV9kZXNjW3hlY10pOworCXNl cV9idWZfcHJpbnRmKCZzYiwgIiVzIHBhcml0eSBlcnJvci5cbiIsIG1jNl9tY2VfZGVzY1t4ZWNd KTsKIAlyZXR1cm47CiAKICB3cm9uZ19tYzZfbWNlOgpAQCAtODcxLDEzICs4NzcsMTMgQEAgc3Rh dGljIHZvaWQgZGVjb2RlX3NtY2FfZXJyb3Ioc3RydWN0IG1jZSAqbSkKIAliYW5rX3R5cGUgPSBo d2lkLT5iYW5rX3R5cGU7CiAJaXBfbmFtZSA9IHNtY2FfZ2V0X2xvbmdfbmFtZShiYW5rX3R5cGUp OwogCi0JcHJfZW1lcmcoSFdfRVJSICIlcyBFeHRlbmRlZCBFcnJvciBDb2RlOiAlZFxuIiwgaXBf bmFtZSwgeGVjKTsKKwlzZXFfYnVmX3ByaW50Zigmc2IsIEhXX0VSUiAiJXMgRXh0ZW5kZWQgRXJy b3IgQ29kZTogJWRcbiIsIGlwX25hbWUsIHhlYyk7CiAKIAkvKiBPbmx5IHByaW50IHRoZSBkZWNv ZGUgb2YgdmFsaWQgZXJyb3IgY29kZXMgKi8KIAlpZiAoeGVjIDwgc21jYV9tY2VfZGVzY3NbYmFu a190eXBlXS5udW1fZGVzY3MgJiYKIAkJCShod2lkLT54ZWNfYml0bWFwICYgQklUX1VMTCh4ZWMp KSkgewotCQlwcl9lbWVyZyhIV19FUlIgIiVzIEVycm9yOiAiLCBpcF9uYW1lKTsKLQkJcHJfY29u dCgiJXMuXG4iLCBzbWNhX21jZV9kZXNjc1tiYW5rX3R5cGVdLmRlc2NzW3hlY10pOworCQlzZXFf YnVmX3ByaW50Zigmc2IsIEhXX0VSUiAiJXMgRXJyb3I6ICIsIGlwX25hbWUpOworCQlzZXFfYnVm X3ByaW50Zigmc2IsICIlcy5cbiIsIHNtY2FfbWNlX2Rlc2NzW2JhbmtfdHlwZV0uZGVzY3NbeGVj XSk7CiAJfQogCiAJaWYgKGJhbmtfdHlwZSA9PSBTTUNBX1VNQyAmJiB4ZWMgPT0gMCAmJiBkZWNv ZGVfZHJhbV9lY2MpCkBAIC04ODcsMjUgKzg5MywyNSBAQCBzdGF0aWMgdm9pZCBkZWNvZGVfc21j YV9lcnJvcihzdHJ1Y3QgbWNlICptKQogc3RhdGljIGlubGluZSB2b2lkIGFtZF9kZWNvZGVfZXJy X2NvZGUodTE2IGVjKQogewogCWlmIChJTlRfRVJST1IoZWMpKSB7Ci0JCXByX2VtZXJnKEhXX0VS UiAiaW50ZXJuYWw6ICVzXG4iLCBVVV9NU0coZWMpKTsKKwkJc2VxX2J1Zl9wcmludGYoJnNiLCBI V19FUlIgImludGVybmFsOiAlc1xuIiwgVVVfTVNHKGVjKSk7CiAJCXJldHVybjsKIAl9CiAKLQlw cl9lbWVyZyhIV19FUlIgImNhY2hlIGxldmVsOiAlcyIsIExMX01TRyhlYykpOworCXNlcV9idWZf cHJpbnRmKCZzYiwgSFdfRVJSICJjYWNoZSBsZXZlbDogJXMiLCBMTF9NU0coZWMpKTsKIAogCWlm IChCVVNfRVJST1IoZWMpKQotCQlwcl9jb250KCIsIG1lbS9pbzogJXMiLCBJSV9NU0coZWMpKTsK KwkJc2VxX2J1Zl9wcmludGYoJnNiLCAiLCBtZW0vaW86ICVzIiwgSUlfTVNHKGVjKSk7CiAJZWxz ZQotCQlwcl9jb250KCIsIHR4OiAlcyIsIFRUX01TRyhlYykpOworCQlzZXFfYnVmX3ByaW50Zigm c2IsICIsIHR4OiAlcyIsIFRUX01TRyhlYykpOwogCiAJaWYgKE1FTV9FUlJPUihlYykgfHwgQlVT X0VSUk9SKGVjKSkgewotCQlwcl9jb250KCIsIG1lbS10eDogJXMiLCBSNF9NU0coZWMpKTsKKwkJ c2VxX2J1Zl9wcmludGYoJnNiLCAiLCBtZW0tdHg6ICVzIiwgUjRfTVNHKGVjKSk7CiAKIAkJaWYg KEJVU19FUlJPUihlYykpCi0JCQlwcl9jb250KCIsIHBhcnQtcHJvYzogJXMgKCVzKSIsIFBQX01T RyhlYyksIFRPX01TRyhlYykpOworCQkJc2VxX2J1Zl9wcmludGYoJnNiLCAiLCBwYXJ0LXByb2M6 ICVzICglcykiLCBQUF9NU0coZWMpLCBUT19NU0coZWMpKTsKIAl9CiAKLQlwcl9jb250KCJcbiIp OworCXNlcV9idWZfcHJpbnRmKCZzYiwgIlxuIik7CiB9CiAKIC8qCkBAIC05NDgsNiArOTU0LDkg QEAgYW1kX2RlY29kZV9tY2Uoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdW5zaWduZWQgbG9u ZyB2YWwsIHZvaWQgKmRhdGEpCiAJaWYgKGFtZF9maWx0ZXJfbWNlKG0pKQogCQlyZXR1cm4gTk9U SUZZX1NUT1A7CiAKKwkvKiBcMCB0ZXJtaW5hdGVkICovCisJc2VxX2J1Zl9pbml0KCZzYiwgX19l cnJfYnVmLCBCVUZfTEVOKTsKKwogCXByX2VtZXJnKEhXX0VSUiAiJXNcbiIsIGRlY29kZV9lcnJv cl9zdGF0dXMobSkpOwogCiAJcHJfZW1lcmcoSFdfRVJSICJDUFU6JWQgKCV4OiV4OiV4KSBNQyVk X1NUQVRVU1slc3wlc3wlc3wlc3wlcyIsCkBAIC0xMDQ0LDYgKzEwNTMsMTAgQEAgYW1kX2RlY29k ZV9tY2Uoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdW5zaWduZWQgbG9uZyB2YWwsIHZvaWQg KmRhdGEpCiAgZXJyX2NvZGU6CiAJYW1kX2RlY29kZV9lcnJfY29kZShtLT5zdGF0dXMgJiAweGZm ZmYpOwogCisJcHJfZW1lcmcoIiUuKnNcbiIsIChpbnQpc2IubGVuLCBzYi5idWZmZXIpOworCisJ c2VxX2J1Zl9jbGVhcl9idWYoJnNiKTsKKwogCXJldHVybiBOT1RJRllfU1RPUDsKIH0KIAo=