From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HDoAV-0002dZ-VN for qemu-devel@nongnu.org; Sun, 04 Feb 2007 15:41:00 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HDoAV-0002dH-65 for qemu-devel@nongnu.org; Sun, 04 Feb 2007 15:40:59 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HDoAU-0002d3-WE for qemu-devel@nongnu.org; Sun, 04 Feb 2007 15:40:59 -0500 Received: from ug-out-1314.google.com ([66.249.92.175]) by monty-python.gnu.org with esmtp (Exim 4.52) id 1HDoAT-0002JT-SX for qemu-devel@nongnu.org; Sun, 04 Feb 2007 15:40:58 -0500 Received: by ug-out-1314.google.com with SMTP id j40so1131239ugd for ; Sun, 04 Feb 2007 12:40:57 -0800 (PST) Message-ID: <9cfa10eb0702041240p2a0f0dc7k1f53dff50d44f04f@mail.gmail.com> Date: Sun, 4 Feb 2007 22:40:56 +0200 From: "Marko Kohtala" In-Reply-To: <9cfa10eb0702041236x12b69e2ai269f9a79b6b344f2@mail.gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_40231_25581670.1170621656306" References: <9cfa10eb0702041236x12b69e2ai269f9a79b6b344f2@mail.gmail.com> Subject: [Qemu-devel] Re: [PATCH] parport EPP support for Linux Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_40231_25581670.1170621656306 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Darn. I managed to send an older version of the patch. Here is the latest. Sorry for the junk. Marko On 2/4/07, Marko Kohtala wrote: > Hi. > > With the attached patch I am able to use Kodak Advantix FD 300 APS > scanner from Win98 when hosted under Linux ix86. It adds EPP support > and fixes some register bits to match real hw so port identification > works better. > > I tried to separate the linux dependencies with #ifdef __linux__, but > can not test this does not break compilation for other ports of qemu. > > Suggestions are welcome, but I also welcome you to make the > enhancements yourself. This is good enough for me. > > I hope it is good enough for inclusion in Qemu. It applies and was > tested against current CVS. > > Marko > > > ------=_Part_40231_25581670.1170621656306 Content-Type: text/x-patch; name=parallel-epp.patch; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_exrxuk0y Content-Disposition: attachment; filename="parallel-epp.patch" ZGlmZiAtLWdpdCBhL2h3L3BhcmFsbGVsLmMgYi9ody9wYXJhbGxlbC5jCmluZGV4IGNiYTk1NjEu LmJkNjFlNWUgMTAwNjQ0Ci0tLSBhL2h3L3BhcmFsbGVsLmMKKysrIGIvaHcvcGFyYWxsZWwuYwpA QCAtMiw2ICsyLDcgQEAKICAqIFFFTVUgUGFyYWxsZWwgUE9SVCBlbXVsYXRpb24KICAqIAogICog Q29weXJpZ2h0IChjKSAyMDAzLTIwMDUgRmFicmljZSBCZWxsYXJkCisgKiBDb3B5cmlnaHQgKGMp IDIwMDcgTWFya28gS29odGFsYQogICogCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAgKiBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m dHdhcmUiKSwgdG8gZGVhbApAQCAtMjUsNiArMjYsMTggQEAKIAogLy8jZGVmaW5lIERFQlVHX1BB UkFMTEVMCiAKKyNpZmRlZiBERUJVR19QQVJBTExFTAorI2RlZmluZSBwZGVidWcoZm10LCBhcmcu Li4pIHByaW50ZigicHA6ICIgZm10LCAjI2FyZykKKyNlbHNlCisjZGVmaW5lIHBkZWJ1ZyhmbXQs IGFyZy4uLikgKCh2b2lkKTApCisjZW5kaWYKKworI2RlZmluZSBQQVJBX1JFR19EQVRBIDAKKyNk ZWZpbmUgUEFSQV9SRUdfU1RTIDEKKyNkZWZpbmUgUEFSQV9SRUdfQ1RSIDIKKyNkZWZpbmUgUEFS QV9SRUdfRVBQX0FERFIgMworI2RlZmluZSBQQVJBX1JFR19FUFBfREFUQSA0CisKIC8qCiAgKiBU aGVzZSBhcmUgdGhlIGRlZmluaXRpb25zIGZvciB0aGUgUHJpbnRlciBTdGF0dXMgUmVnaXN0ZXIK ICAqLwpAQCAtMzMsMjQgKzQ2LDMzIEBACiAjZGVmaW5lIFBBUkFfU1RTX1BBUEVSCTB4MjAJLyog T3V0IG9mIHBhcGVyICovCiAjZGVmaW5lIFBBUkFfU1RTX09OTElORQkweDEwCS8qIE9ubGluZSAq LwogI2RlZmluZSBQQVJBX1NUU19FUlJPUgkweDA4CS8qIEVycm9yIGNvbXBsZW1lbnQgKi8KKyNk ZWZpbmUgUEFSQV9TVFNfVE1PVVQJMHgwMQkvKiBFUFAgdGltZW91dCAqLwogCiAvKgogICogVGhl c2UgYXJlIHRoZSBkZWZpbml0aW9ucyBmb3IgdGhlIFByaW50ZXIgQ29udHJvbCBSZWdpc3Rlcgog ICovCisjZGVmaW5lIFBBUkFfQ1RSX0RJUgkweDIwCS8qIERpcmVjdGlvbiAoMT1yZWFkLCAwPXdy aXRlKSAqLwogI2RlZmluZSBQQVJBX0NUUl9JTlRFTgkweDEwCS8qIElSUSBFbmFibGUgKi8KICNk ZWZpbmUgUEFSQV9DVFJfU0VMRUNUCTB4MDgJLyogU2VsZWN0IEluIGNvbXBsZW1lbnQgKi8KICNk ZWZpbmUgUEFSQV9DVFJfSU5JVAkweDA0CS8qIEluaXRpYWxpemUgUHJpbnRlciBjb21wbGVtZW50 ICovCiAjZGVmaW5lIFBBUkFfQ1RSX0FVVE9MRgkweDAyCS8qIEF1dG8gbGluZWZlZWQgY29tcGxl bWVudCAqLwogI2RlZmluZSBQQVJBX0NUUl9TVFJPQkUJMHgwMQkvKiBTdHJvYmUgY29tcGxlbWVu dCAqLwogCisjZGVmaW5lIFBBUkFfQ1RSX1NJR05BTCAoUEFSQV9DVFJfU0VMRUNUfFBBUkFfQ1RS X0lOSVR8UEFSQV9DVFJfQVVUT0xGfFBBUkFfQ1RSX1NUUk9CRSkKKwogc3RydWN0IFBhcmFsbGVs U3RhdGUgewotICAgIHVpbnQ4X3QgZGF0YTsKLSAgICB1aW50OF90IHN0YXR1czsgLyogcmVhZCBv bmx5IHJlZ2lzdGVyICovCisgICAgdWludDhfdCBkYXRhdzsKKyAgICB1aW50OF90IGRhdGFyOwor ICAgIHVpbnQ4X3Qgc3RhdHVzOwogICAgIHVpbnQ4X3QgY29udHJvbDsKKyAgICB1aW50OF90IGFk ZHI7CisgICAgaW50IG1vZGU7CiAgICAgaW50IGlycTsKICAgICBpbnQgaXJxX3BlbmRpbmc7CiAg ICAgQ2hhckRyaXZlclN0YXRlICpjaHI7CiAgICAgaW50IGh3X2RyaXZlcjsKKyAgICBpbnQgZXBw X3RpbWVvdXQ7CisgICAgdWludDMyX3QgbGFzdF9yZWFkX29mZnNldDsgLyogRm9yIGRlYnVnZ2lu ZyAqLwogfTsKIAogc3RhdGljIHZvaWQgcGFyYWxsZWxfdXBkYXRlX2lycShQYXJhbGxlbFN0YXRl ICpzKQpAQCAtNjEsOTYgKzgzLDM1MSBAQCBzdGF0aWMgdm9pZCBwYXJhbGxlbF91cGRhdGVfaXJx KFBhcmFsbGVsU3RhdGUgKnMpCiAgICAgICAgIHBpY19zZXRfaXJxKHMtPmlycSwgMCk7CiB9CiAK LXN0YXRpYyB2b2lkIHBhcmFsbGVsX2lvcG9ydF93cml0ZSh2b2lkICpvcGFxdWUsIHVpbnQzMl90 IGFkZHIsIHVpbnQzMl90IHZhbCkKKyNpZmRlZiBfX2xpbnV4X18KKyNpbmNsdWRlIDxsaW51eC9w YXJwb3J0Lmg+CitzdGF0aWMgaW50IGh3X21vZGUoUGFyYWxsZWxTdGF0ZSAqcywgdWludDE2X3Qg bW9kZSkKK3sKKyAgICBpZiAocy0+bW9kZSAhPSBtb2RlKSB7CisJaW50IG0gPSBtb2RlOworCWlm IChxZW11X2Nocl9pb2N0bChzLT5jaHIsIENIUl9JT0NUTF9QUF9TRVRNT0RFLCAmbSkgPCAwKQor CSAgICByZXR1cm4gMDsKKwlzLT5tb2RlID0gbW9kZTsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9 CisjZW5kaWYKKworc3RhdGljIHZvaWQKK3BhcmFsbGVsX2lvcG9ydF93cml0ZV9zdyh2b2lkICpv cGFxdWUsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCkKIHsKICAgICBQYXJhbGxlbFN0YXRl ICpzID0gb3BhcXVlOwogICAgIAorICAgIHBkZWJ1Zygid3JpdGUgYWRkcj0weCUwMnggdmFsPTB4 JTAyeFxuIiwgYWRkciwgdmFsKTsKKworICAgIGFkZHIgJj0gNzsKKyAgICBzd2l0Y2goYWRkcikg eworICAgIGNhc2UgUEFSQV9SRUdfREFUQToKKwlzLT5kYXRhdyA9IHZhbDsKKwlwYXJhbGxlbF91 cGRhdGVfaXJxKHMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBBUkFfUkVHX0NUUjoKKwlp ZiAoKHZhbCAmIFBBUkFfQ1RSX0lOSVQpID09IDAgKSB7CisJICAgIHMtPnN0YXR1cyA9IFBBUkFf U1RTX0JVU1k7CisJICAgIHMtPnN0YXR1cyB8PSBQQVJBX1NUU19BQ0s7CisJICAgIHMtPnN0YXR1 cyB8PSBQQVJBX1NUU19PTkxJTkU7CisJICAgIHMtPnN0YXR1cyB8PSBQQVJBX1NUU19FUlJPUjsK Kwl9CisJZWxzZSBpZiAodmFsICYgUEFSQV9DVFJfU0VMRUNUKSB7CisJICAgIGlmICh2YWwgJiBQ QVJBX0NUUl9TVFJPQkUpIHsKKwkJcy0+c3RhdHVzICY9IH5QQVJBX1NUU19CVVNZOworCQlpZiAo KHMtPmNvbnRyb2wgJiBQQVJBX0NUUl9TVFJPQkUpID09IDApCisJCSAgICBxZW11X2Nocl93cml0 ZShzLT5jaHIsICZzLT5kYXRhdywgMSk7CisJICAgIH0gZWxzZSB7CisJCWlmIChzLT5jb250cm9s ICYgUEFSQV9DVFJfSU5URU4pIHsKKwkJICAgIHMtPmlycV9wZW5kaW5nID0gMTsKKwkJfQorCSAg ICB9CisJfQorCXBhcmFsbGVsX3VwZGF0ZV9pcnEocyk7CisJcy0+Y29udHJvbCA9IHZhbDsKKyAg ICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBwYXJhbGxlbF9pb3BvcnRfd3Jp dGVfaHcodm9pZCAqb3BhcXVlLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCit7CisgICAg UGFyYWxsZWxTdGF0ZSAqcyA9IG9wYXF1ZTsKKyAgICB1aW50OF90IHBhcm0gPSB2YWw7CisKKyAg ICAvKiBTb21ldGltZXMgcHJvZ3JhbXMgZG8gc2V2ZXJhbCB3cml0ZXMgZm9yIHRpbWluZyBwdXJw b3NlcyBvbiBvbGQKKyAgICAgICBIVy4gVGFrZSBjYXJlIG5vdCB0byB3YXN0ZSB0aW1lIG9uIHdy aXRlcyB0aGF0IGRvIG5vdGhpbmcuICovCisKKyAgICBzLT5sYXN0X3JlYWRfb2Zmc2V0ID0gfjBV OworCiAgICAgYWRkciAmPSA3OwotI2lmZGVmIERFQlVHX1BBUkFMTEVMCi0gICAgcHJpbnRmKCJw YXJhbGxlbDogd3JpdGUgYWRkcj0weCUwMnggdmFsPTB4JTAyeFxuIiwgYWRkciwgdmFsKTsKLSNl bmRpZgogICAgIHN3aXRjaChhZGRyKSB7Ci0gICAgY2FzZSAwOgotICAgICAgICBpZiAocy0+aHdf ZHJpdmVyKSB7Ci0gICAgICAgICAgICBzLT5kYXRhID0gdmFsOwotICAgICAgICAgICAgcWVtdV9j aHJfaW9jdGwocy0+Y2hyLCBDSFJfSU9DVExfUFBfV1JJVEVfREFUQSwgJnMtPmRhdGEpOwotICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgcy0+ZGF0YSA9IHZhbDsKLSAgICAgICAgICAgIHBh cmFsbGVsX3VwZGF0ZV9pcnEocyk7Ci0gICAgICAgIH0KKyAgICBjYXNlIFBBUkFfUkVHX0RBVEE6 CisgICAgICAgIGlmIChzLT5kYXRhdyA9PSB2YWwpCisJICAgIHJldHVybjsKKwlwZGVidWcoIndk JTAyeFxuIiwgdmFsKTsKKwlxZW11X2Nocl9pb2N0bChzLT5jaHIsIENIUl9JT0NUTF9QUF9XUklU RV9EQVRBLCAmcGFybSk7CisJcy0+ZGF0YXcgPSB2YWw7CiAgICAgICAgIGJyZWFrOwotICAgIGNh c2UgMjoKLSAgICAgICAgaWYgKHMtPmh3X2RyaXZlcikgewotICAgICAgICAgICAgcy0+Y29udHJv bCA9IHZhbDsKLSAgICAgICAgICAgIHFlbXVfY2hyX2lvY3RsKHMtPmNociwgQ0hSX0lPQ1RMX1BQ X1dSSVRFX0NPTlRST0wsICZzLT5jb250cm9sKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg ICAgIGlmICgodmFsICYgUEFSQV9DVFJfSU5JVCkgPT0gMCApIHsKLSAgICAgICAgICAgICAgICBz LT5zdGF0dXMgPSBQQVJBX1NUU19CVVNZOwotICAgICAgICAgICAgICAgIHMtPnN0YXR1cyB8PSBQ QVJBX1NUU19BQ0s7Ci0gICAgICAgICAgICAgICAgcy0+c3RhdHVzIHw9IFBBUkFfU1RTX09OTElO RTsKLSAgICAgICAgICAgICAgICBzLT5zdGF0dXMgfD0gUEFSQV9TVFNfRVJST1I7Ci0gICAgICAg ICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICh2YWwgJiBQQVJBX0NUUl9TRUxFQ1QpIHsKLSAg ICAgICAgICAgICAgICBpZiAodmFsICYgUEFSQV9DVFJfU1RST0JFKSB7Ci0gICAgICAgICAgICAg ICAgICAgIHMtPnN0YXR1cyAmPSB+UEFSQV9TVFNfQlVTWTsKLSAgICAgICAgICAgICAgICAgICAg aWYgKChzLT5jb250cm9sICYgUEFSQV9DVFJfU1RST0JFKSA9PSAwKQotICAgICAgICAgICAgICAg ICAgICAgICAgcWVtdV9jaHJfd3JpdGUocy0+Y2hyLCAmcy0+ZGF0YSwgMSk7Ci0gICAgICAgICAg ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHMtPmNvbnRyb2wgJiBQQVJB X0NUUl9JTlRFTikgewotICAgICAgICAgICAgICAgICAgICAgICAgcy0+aXJxX3BlbmRpbmcgPSAx OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg fQotICAgICAgICAgICAgcGFyYWxsZWxfdXBkYXRlX2lycShzKTsKLSAgICAgICAgICAgIHMtPmNv bnRyb2wgPSB2YWw7Ci0gICAgICAgIH0KKyAgICBjYXNlIFBBUkFfUkVHX1NUUzoKKwlwZGVidWco IndzJTAyeFxuIiwgdmFsKTsKKwlpZiAodmFsICYgUEFSQV9TVFNfVE1PVVQpCisJICAgIHMtPmVw cF90aW1lb3V0ID0gMDsKKwlicmVhazsKKyAgICBjYXNlIFBBUkFfUkVHX0NUUjoKKyAgICAgICAg dmFsIHw9IDB4YzA7CisgICAgICAgIGlmIChzLT5jb250cm9sID09IHZhbCkKKwkgICAgcmV0dXJu OworCXBkZWJ1Zygid2MlMDJ4XG4iLCB2YWwpOworCXFlbXVfY2hyX2lvY3RsKHMtPmNociwgQ0hS X0lPQ1RMX1BQX1dSSVRFX0NPTlRST0wsICZwYXJtKTsKKyNpZmRlZiBfX2xpbnV4X18KKwkvKiBM ZXQncyBiZSBuaWNlIGFuZCByZXR1cm4gdGhlIHBhcnBvcnQgZGV2aWNlIHRvIGNvbXBhdGlibGUK KwkgICBtb2RlIHdoZW4gd2Ugc2VlbSB0byBiZSBuZWdvdGlhdGluZyBvdXQgb2YgRVBQLiAqLwor CWlmICgodmFsICYgUEFSQV9DVFJfU0lHTkFMKSAhPSBQQVJBX0NUUl9JTklUKQorCSAgICBod19t b2RlKHMsIElFRUUxMjg0X01PREVfQ09NUEFUKTsKKyNlbmRpZgorCXMtPmNvbnRyb2wgPSB2YWw7 CiAgICAgICAgIGJyZWFrOworI2lmZGVmIF9fbGludXhfXworICAgIGNhc2UgUEFSQV9SRUdfRVBQ X0FERFI6CisJaWYgKChzLT5jb250cm9sICYgKFBBUkFfQ1RSX0RJUnxQQVJBX0NUUl9TSUdOQUwp KSAhPSBQQVJBX0NUUl9JTklUKQorCSAgICAvKiBDb250cm9scyBub3QgY29ycmVjdCBmb3IgRVBQ IGFkZHJlc3MgY3ljbGUsIHNvIGRvIG5vdGhpbmcgKi8KKwkgICAgcGRlYnVnKCJ3YSUwMnggc1xu IiwgdmFsKTsKKwllbHNlIGlmIChod19tb2RlKHMsIElFRUUxMjg0X01PREVfRVBQfElFRUUxMjg0 X0FERFIpKSB7CisJICAgIGludCBuID0gd3JpdGUoKGludClzLT5jaHItPm9wYXF1ZSwgJnBhcm0s IDEpOworCSAgICBpZiAobiAhPSAxKSB7CisJCXMtPmVwcF90aW1lb3V0ID0gMTsKKwkJcGRlYnVn KCJ3YSUwMnggdFxuIiwgdmFsKTsKKwkgICAgfQorCSAgICBlbHNlCisJCXBkZWJ1Zygid2ElMDJ4 XG4iLCB2YWwpOworCX0KKwllbHNlCisJICAgIHBkZWJ1Zygid2ElMDJ4IG1cbiIsIHZhbCk7CisJ YnJlYWs7CisgICAgY2FzZSBQQVJBX1JFR19FUFBfREFUQToKKwlpZiAoKHMtPmNvbnRyb2wgJiAo UEFSQV9DVFJfRElSfFBBUkFfQ1RSX1NJR05BTCkpICE9IFBBUkFfQ1RSX0lOSVQpCisJICAgIC8q IENvbnRyb2xzIG5vdCBjb3JyZWN0IGZvciBFUFAgZGF0YSBjeWNsZSwgc28gZG8gbm90aGluZyAq LworCSAgICBwZGVidWcoIndlJTAyeCBzXG4iLCB2YWwpOworCWVsc2UgaWYgKGh3X21vZGUocywg SUVFRTEyODRfTU9ERV9FUFApKSB7CisJICAgIGludCBuID0gd3JpdGUoKGludClzLT5jaHItPm9w YXF1ZSwgJnBhcm0sIDEpOworCSAgICBpZiAobiAhPSAxKSB7CisJCXMtPmVwcF90aW1lb3V0ID0g MTsKKwkJcGRlYnVnKCJ3ZSUwMnggdFxuIiwgdmFsKTsKKwkgICAgfQorCSAgICBlbHNlCisJCXBk ZWJ1Zygid2UlMDJ4XG4iLCB2YWwpOworCX0KKwllbHNlCisJICAgIHBkZWJ1Zygid2UlMDJ4IG1c biIsIHZhbCk7CisJYnJlYWs7CisjZW5kaWYKKyAgICB9Cit9CisKKyNpZmRlZiBfX2xpbnV4X18K K3N0YXRpYyB2b2lkCitwYXJhbGxlbF9pb3BvcnRfZXBwZGF0YV93cml0ZV9odzIodm9pZCAqb3Bh cXVlLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCit7CisgICAgUGFyYWxsZWxTdGF0ZSAq cyA9IG9wYXF1ZTsKKyAgICBpZiAoKHMtPmNvbnRyb2wgJiAoUEFSQV9DVFJfRElSfFBBUkFfQ1RS X1NJR05BTCkpICE9IFBBUkFfQ1RSX0lOSVQpIHsKKwkvKiBDb250cm9scyBub3QgY29ycmVjdCBm b3IgRVBQIGRhdGEgY3ljbGUsIHNvIGRvIG5vdGhpbmcgKi8KKwlwZGVidWcoIndlJTA0eCBzXG4i LCB2YWwpOworCXJldHVybjsKKyAgICB9CisgICAgcGRlYnVnKCJ3ZSUwNHhcbiIsIHZhbCk7Cisg ICAgaWYgKGh3X21vZGUocywgSUVFRTEyODRfTU9ERV9FUFApKSB7CisJdWludDE2X3QgZXBwZGF0 YSA9IGNwdV90b19sZTE2KHZhbCk7CisJaW50IG4gPSB3cml0ZSgoaW50KXMtPmNoci0+b3BhcXVl LCAodWludDhfdCopJmVwcGRhdGEsIHNpemVvZihlcHBkYXRhKSk7CisJaWYgKG4gIT0gc2l6ZW9m KGVwcGRhdGEpKQorCSAgICBzLT5lcHBfdGltZW91dCA9IDE7CisgICAgfQorfQorCitzdGF0aWMg dm9pZAorcGFyYWxsZWxfaW9wb3J0X2VwcGRhdGFfd3JpdGVfaHc0KHZvaWQgKm9wYXF1ZSwgdWlu dDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQoreworICAgIFBhcmFsbGVsU3RhdGUgKnMgPSBvcGFx dWU7CisgICAgaWYgKChzLT5jb250cm9sICYgKFBBUkFfQ1RSX0RJUnxQQVJBX0NUUl9TSUdOQUwp KSAhPSBQQVJBX0NUUl9JTklUKSB7CisJLyogQ29udHJvbHMgbm90IGNvcnJlY3QgZm9yIEVQUCBk YXRhIGN5Y2xlLCBzbyBkbyBub3RoaW5nICovCisJcGRlYnVnKCJ3ZSUwOHggc1xuIiwgdmFsKTsK KwlyZXR1cm47CisgICAgfQorICAgIHBkZWJ1Zygid2UlMDh4XG4iLCB2YWwpOworICAgIGlmICho d19tb2RlKHMsIElFRUUxMjg0X01PREVfRVBQKSkgeworCXVpbnQzMl90IGVwcGRhdGEgPSBjcHVf dG9fbGUzMih2YWwpOworCS8qIFhYWCBGaXhtZTogZG9uJ3QgYnJlYWsgYWJzdHJhY3Rpb25zLCB1 c2UgbW9yZSBnZW5lcmljCisJICAgaW50ZXJmYWNlICovCisJaW50IG4gPSB3cml0ZSgoaW50KXMt PmNoci0+b3BhcXVlLCAodWludDhfdCopJmVwcGRhdGEsIHNpemVvZihlcHBkYXRhKSk7CisJaWYg KG4gIT0gc2l6ZW9mKGVwcGRhdGEpKQorCSAgICBzLT5lcHBfdGltZW91dCA9IDE7CiAgICAgfQog fQorI2VuZGlmCiAKLXN0YXRpYyB1aW50MzJfdCBwYXJhbGxlbF9pb3BvcnRfcmVhZCh2b2lkICpv cGFxdWUsIHVpbnQzMl90IGFkZHIpCitzdGF0aWMgdWludDMyX3QgcGFyYWxsZWxfaW9wb3J0X3Jl YWRfc3codm9pZCAqb3BhcXVlLCB1aW50MzJfdCBhZGRyKQogewogICAgIFBhcmFsbGVsU3RhdGUg KnMgPSBvcGFxdWU7CiAgICAgdWludDMyX3QgcmV0ID0gMHhmZjsKIAogICAgIGFkZHIgJj0gNzsK ICAgICBzd2l0Y2goYWRkcikgewotICAgIGNhc2UgMDoKLSAgICAgICAgaWYgKHMtPmh3X2RyaXZl cikgewotICAgICAgICAgICAgcWVtdV9jaHJfaW9jdGwocy0+Y2hyLCBDSFJfSU9DVExfUFBfUkVB RF9EQVRBLCAmcy0+ZGF0YSk7Ci0gICAgICAgIH0gCi0gICAgICAgIHJldCA9IHMtPmRhdGE7IAor ICAgIGNhc2UgUEFSQV9SRUdfREFUQToKKwlpZiAocy0+Y29udHJvbCAmIFBBUkFfQ1RSX0RJUikK KwkgICAgcmV0ID0gcy0+ZGF0YXI7CisJZWxzZQorCSAgICByZXQgPSBzLT5kYXRhdzsKICAgICAg ICAgYnJlYWs7Ci0gICAgY2FzZSAxOgotICAgICAgICBpZiAocy0+aHdfZHJpdmVyKSB7Ci0gICAg ICAgICAgICBxZW11X2Nocl9pb2N0bChzLT5jaHIsIENIUl9JT0NUTF9QUF9SRUFEX1NUQVRVUywg JnMtPnN0YXR1cyk7Ci0gICAgICAgICAgICByZXQgPSBzLT5zdGF0dXM7IAotICAgICAgICB9IGVs c2UgewotICAgICAgICAgICAgcmV0ID0gcy0+c3RhdHVzOwotICAgICAgICAgICAgcy0+aXJxX3Bl bmRpbmcgPSAwOwotICAgICAgICAgICAgaWYgKChzLT5zdGF0dXMgJiBQQVJBX1NUU19CVVNZKSA9 PSAwICYmIChzLT5jb250cm9sICYgUEFSQV9DVFJfU1RST0JFKSA9PSAwKSB7Ci0gICAgICAgICAg ICAgICAgLyogWFhYIEZpeG1lOiB3YWl0IDUgbWljcm9zZWNvbmRzICovCi0gICAgICAgICAgICAg ICAgaWYgKHMtPnN0YXR1cyAmIFBBUkFfU1RTX0FDSykKLSAgICAgICAgICAgICAgICAgICAgcy0+ c3RhdHVzICY9IH5QQVJBX1NUU19BQ0s7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg ICAgICAgICAgICAgIC8qIFhYWCBGaXhtZTogd2FpdCA1IG1pY3Jvc2Vjb25kcyAqLwotICAgICAg ICAgICAgICAgICAgICBzLT5zdGF0dXMgfD0gUEFSQV9TVFNfQUNLOwotICAgICAgICAgICAgICAg ICAgICBzLT5zdGF0dXMgfD0gUEFSQV9TVFNfQlVTWTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg ICAgICAgICB9Ci0gICAgICAgICAgICBwYXJhbGxlbF91cGRhdGVfaXJxKHMpOwotICAgICAgICB9 CisgICAgY2FzZSBQQVJBX1JFR19TVFM6CisJcmV0ID0gcy0+c3RhdHVzOworCXMtPmlycV9wZW5k aW5nID0gMDsKKwlpZiAoKHMtPnN0YXR1cyAmIFBBUkFfU1RTX0JVU1kpID09IDAgJiYgKHMtPmNv bnRyb2wgJiBQQVJBX0NUUl9TVFJPQkUpID09IDApIHsKKwkgICAgLyogWFhYIEZpeG1lOiB3YWl0 IDUgbWljcm9zZWNvbmRzICovCisJICAgIGlmIChzLT5zdGF0dXMgJiBQQVJBX1NUU19BQ0spCisJ CXMtPnN0YXR1cyAmPSB+UEFSQV9TVFNfQUNLOworCSAgICBlbHNlIHsKKwkJLyogWFhYIEZpeG1l OiB3YWl0IDUgbWljcm9zZWNvbmRzICovCisJCXMtPnN0YXR1cyB8PSBQQVJBX1NUU19BQ0s7CisJ CXMtPnN0YXR1cyB8PSBQQVJBX1NUU19CVVNZOworCSAgICB9CisJfQorCXBhcmFsbGVsX3VwZGF0 ZV9pcnEocyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICAgICAgaWYgKHMtPmh3 X2RyaXZlcikgewotICAgICAgICAgICAgcWVtdV9jaHJfaW9jdGwocy0+Y2hyLCBDSFJfSU9DVExf UFBfUkVBRF9DT05UUk9MLCAmcy0+Y29udHJvbCk7Ci0gICAgICAgIH0KKyAgICBjYXNlIFBBUkFf UkVHX0NUUjoKICAgICAgICAgcmV0ID0gcy0+Y29udHJvbDsKICAgICAgICAgYnJlYWs7CiAgICAg fQotI2lmZGVmIERFQlVHX1BBUkFMTEVMCi0gICAgcHJpbnRmKCJwYXJhbGxlbDogcmVhZCBhZGRy PTB4JTAyeCB2YWw9MHglMDJ4XG4iLCBhZGRyLCByZXQpOworICAgIHBkZWJ1ZygicmVhZCBhZGRy PTB4JTAyeCB2YWw9MHglMDJ4XG4iLCBhZGRyLCByZXQpOworICAgIHJldHVybiByZXQ7Cit9CisK K3N0YXRpYyB1aW50MzJfdCBwYXJhbGxlbF9pb3BvcnRfcmVhZF9odyh2b2lkICpvcGFxdWUsIHVp bnQzMl90IGFkZHIpCit7CisgICAgUGFyYWxsZWxTdGF0ZSAqcyA9IG9wYXF1ZTsKKyAgICB1aW50 OF90IHJldCA9IDB4ZmY7CisgICAgYWRkciAmPSA3OworICAgIHN3aXRjaChhZGRyKSB7CisgICAg Y2FzZSBQQVJBX1JFR19EQVRBOgorCXFlbXVfY2hyX2lvY3RsKHMtPmNociwgQ0hSX0lPQ1RMX1BQ X1JFQURfREFUQSwgJnJldCk7CisJaWYgKHMtPmxhc3RfcmVhZF9vZmZzZXQgIT0gYWRkciB8fCBz LT5kYXRhciAhPSByZXQpCisJICAgIHBkZWJ1ZygicmQlMDJ4XG4iLCByZXQpOworICAgICAgICBz LT5kYXRhciA9IHJldDsgCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUEFSQV9SRUdfU1RTOgor CXFlbXVfY2hyX2lvY3RsKHMtPmNociwgQ0hSX0lPQ1RMX1BQX1JFQURfU1RBVFVTLCAmcmV0KTsK KwlyZXQgJj0gflBBUkFfU1RTX1RNT1VUOworCWlmIChzLT5lcHBfdGltZW91dCkKKwkgICAgcmV0 IHw9IFBBUkFfU1RTX1RNT1VUOworCWlmIChzLT5sYXN0X3JlYWRfb2Zmc2V0ICE9IGFkZHIgfHwg cy0+c3RhdHVzICE9IHJldCkKKwkgICAgcGRlYnVnKCJycyUwMnhcbiIsIHJldCk7CisJcy0+c3Rh dHVzID0gcmV0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBBUkFfUkVHX0NUUjoKKyAgICAg ICAgLyogcy0+Y29udHJvbCBoYXMgc29tZSBiaXRzIGZpeGVkIHRvIDEuIEl0IGlzIHplcm8gb25s eSB3aGVuCisJICAgaXQgaGFzIG5vdCBiZWVuIHlldCB3cml0dGVuIHRvLiAgKi8KKwlpZiAocy0+ Y29udHJvbCA9PSAwKSB7CisJICAgIHFlbXVfY2hyX2lvY3RsKHMtPmNociwgQ0hSX0lPQ1RMX1BQ X1JFQURfQ09OVFJPTCwgJnJldCk7CisJICAgIGlmIChzLT5sYXN0X3JlYWRfb2Zmc2V0ICE9IGFk ZHIpCisJCXBkZWJ1ZygicmMlMDJ4XG4iLCByZXQpOworCSAgICBzLT5jb250cm9sID0gcmV0Owor CX0KKwllbHNlIHsKKwkgICAgcmV0ID0gcy0+Y29udHJvbDsKKwkgICAgaWYgKHMtPmxhc3RfcmVh ZF9vZmZzZXQgIT0gYWRkcikKKwkJcGRlYnVnKCJyYyUwMnhcbiIsIHJldCk7CisJfQorICAgICAg ICBicmVhazsKKyNpZmRlZiBfX2xpbnV4X18KKyAgICBjYXNlIFBBUkFfUkVHX0VQUF9BRERSOgor CWlmICgocy0+Y29udHJvbCAmIChQQVJBX0NUUl9ESVJ8UEFSQV9DVFJfU0lHTkFMKSkgIT0gKFBB UkFfQ1RSX0RJUnxQQVJBX0NUUl9JTklUKSkKKwkgICAgLyogQ29udHJvbHMgbm90IGNvcnJlY3Qg Zm9yIEVQUCBhZGRyIGN5Y2xlLCBzbyBkbyBub3RoaW5nICovCisJICAgIHBkZWJ1ZygicmElMDJ4 IHNcbiIsIHJldCk7CisJZWxzZSBpZiAoaHdfbW9kZShzLCBJRUVFMTI4NF9NT0RFX0VQUHxJRUVF MTI4NF9BRERSKSkgeworCSAgICAvKiBYWFggRml4bWU6IGRvbid0IGJyZWFrIGFic3RyYWN0aW9u cywgdXNlIG1vcmUgZ2VuZXJpYworCSAgICAgICBpbnRlcmZhY2UuIFdlIGNhbiBub3QgcG9sbCwg d2UgaGF2ZSB0byByZWFkLiBUaGUgZGV2aWNlCisJICAgICAgIHdhaXRzIHVzIHRvIHJlYWQsIGl0 J2xsIG5vdCBzZW5kIHVzIGFueXRoaW5nIHNvIHBvbGwgaXMKKwkgICAgICAgbm8gZ29vZC4gV2Ug aGF2ZSB0byByZWFkLiBSZWFkIGhhZCBiZXR0ZXIgYmUgY29tcGxldGVkCisJICAgICAgIGJlZm9y ZSB3ZSByZXR1cm4uIE5lZWQgYW4gQVBJIGZvciB0aGF0LiAqLworCSAgICBpbnQgbiA9IHJlYWQo KGludClzLT5jaHItPm9wYXF1ZSwgJnJldCwgMSk7CisJICAgIGlmIChuICE9IDEpIHsKKwkJcy0+ ZXBwX3RpbWVvdXQgPSAxOworCQlwZGVidWcoInJhJTAyeCB0XG4iLCByZXQpOworCSAgICB9CisJ ICAgIGVsc2UKKwkJcGRlYnVnKCJyYSUwMnhcbiIsIHJldCk7CisJfQorCWVsc2UKKwkgICAgcGRl YnVnKCJyYSBtXG4iKTsKKwlicmVhazsKKyAgICBjYXNlIFBBUkFfUkVHX0VQUF9EQVRBOgorCWlm ICgocy0+Y29udHJvbCAmIChQQVJBX0NUUl9ESVJ8UEFSQV9DVFJfU0lHTkFMKSkgIT0gKFBBUkFf Q1RSX0RJUnxQQVJBX0NUUl9JTklUKSkKKwkgICAgLyogQ29udHJvbHMgbm90IGNvcnJlY3QgZm9y IEVQUCBkYXRhIGN5Y2xlLCBzbyBkbyBub3RoaW5nICovCisJICAgIHBkZWJ1ZygicmUlMDJ4IHNc biIsIHJldCk7CisJZWxzZSBpZiAoaHdfbW9kZShzLCBJRUVFMTI4NF9NT0RFX0VQUCkpIHsKKwkg ICAgLyogWFhYIEZpeG1lOiBkb24ndCBicmVhayBhYnN0cmFjdGlvbnMsIHVzZSBtb3JlIGdlbmVy aWMKKwkgICAgICAgaW50ZXJmYWNlICovCisJICAgIGludCBuID0gcmVhZCgoaW50KXMtPmNoci0+ b3BhcXVlLCAmcmV0LCAxKTsKKwkgICAgaWYgKG4gIT0gMSkgeworCQlzLT5lcHBfdGltZW91dCA9 IDE7CisJCXBkZWJ1ZygicmUlMDJ4IHRcbiIsIHJldCk7CisJICAgIH0KKwkgICAgZWxzZQorCQlw ZGVidWcoInJlJTAyeFxuIiwgcmV0KTsKKwl9CisJZWxzZQorCSAgICBwZGVidWcoInJlIG1cbiIp OworCWJyZWFrOworICAgIH0KICNlbmRpZgorICAgIHMtPmxhc3RfcmVhZF9vZmZzZXQgPSBhZGRy OworICAgIHJldHVybiByZXQ7Cit9CisKKyNpZmRlZiBfX2xpbnV4X18KK3N0YXRpYyB1aW50MzJf dAorcGFyYWxsZWxfaW9wb3J0X2VwcGRhdGFfcmVhZF9odzIodm9pZCAqb3BhcXVlLCB1aW50MzJf dCBhZGRyKQoreworICAgIFBhcmFsbGVsU3RhdGUgKnMgPSBvcGFxdWU7CisgICAgdWludDMyX3Qg cmV0ID0gfjBVOworICAgIGlmICgocy0+Y29udHJvbCAmIChQQVJBX0NUUl9ESVJ8UEFSQV9DVFJf U0lHTkFMKSkgIT0gKFBBUkFfQ1RSX0RJUnxQQVJBX0NUUl9JTklUKSkgeworCS8qIENvbnRyb2xz IG5vdCBjb3JyZWN0IGZvciBFUFAgZGF0YSBjeWNsZSwgc28gZG8gbm90aGluZyAqLworCXBkZWJ1 ZygicmUlMDR4IHNcbiIsIHJldCk7CisJcmV0dXJuIHJldDsKKyAgICB9CisgICAgaWYgKGh3X21v ZGUocywgSUVFRTEyODRfTU9ERV9FUFApKSB7CisJdWludDE2X3QgZXBwZGF0YTsKKwkvKiBYWFgg Rml4bWU6IGRvbid0IGJyZWFrIGFic3RyYWN0aW9ucywgdXNlIG1vcmUgZ2VuZXJpYworCSAgIGlu dGVyZmFjZSAqLworCWludCBuID0gcmVhZCgoaW50KXMtPmNoci0+b3BhcXVlLCAmZXBwZGF0YSwg c2l6ZW9mKGVwcGRhdGEpKTsKKwlpZiAobiAhPSBzaXplb2YoZXBwZGF0YSkpCisJICAgIHMtPmVw cF90aW1lb3V0ID0gMTsKKwllbHNlCisJICAgIHJldCA9IGxlMTZfdG9fY3B1KGVwcGRhdGEpOwor ICAgIH0KKyAgICBwZGVidWcoInJlJTA0eFxuIiwgcmV0KTsKKyAgICByZXR1cm4gcmV0OworfQor CitzdGF0aWMgdWludDMyX3QKK3BhcmFsbGVsX2lvcG9ydF9lcHBkYXRhX3JlYWRfaHc0KHZvaWQg Km9wYXF1ZSwgdWludDMyX3QgYWRkcikKK3sKKyAgICBQYXJhbGxlbFN0YXRlICpzID0gb3BhcXVl OworICAgIHVpbnQzMl90IHJldCA9IH4wVTsKKyAgICBpZiAoKHMtPmNvbnRyb2wgJiAoUEFSQV9D VFJfRElSfFBBUkFfQ1RSX1NJR05BTCkpICE9IChQQVJBX0NUUl9ESVJ8UEFSQV9DVFJfSU5JVCkp IHsKKwkvKiBDb250cm9scyBub3QgY29ycmVjdCBmb3IgRVBQIGRhdGEgY3ljbGUsIHNvIGRvIG5v dGhpbmcgKi8KKwlwZGVidWcoInJlJTA4eCBzXG4iLCByZXQpOworCXJldHVybiByZXQ7CisgICAg fQorICAgIGlmIChod19tb2RlKHMsIElFRUUxMjg0X01PREVfRVBQKSkgeworCXVpbnQzMl90IGVw cGRhdGE7CisJLyogWFhYIEZpeG1lOiBkb24ndCBicmVhayBhYnN0cmFjdGlvbnMsIHVzZSBtb3Jl IGdlbmVyaWMKKwkgICBpbnRlcmZhY2UgKi8KKwlpbnQgbiA9IHJlYWQoKGludClzLT5jaHItPm9w YXF1ZSwgJmVwcGRhdGEsIHNpemVvZihlcHBkYXRhKSk7CisJaWYgKG4gIT0gc2l6ZW9mKGVwcGRh dGEpKQorCSAgICBzLT5lcHBfdGltZW91dCA9IDE7CisJZWxzZQorCSAgICByZXQgPSBsZTMyX3Rv X2NwdShlcHBkYXRhKTsKKyAgICB9CisgICAgcGRlYnVnKCJyZSUwOHhcbiIsIHJldCk7CisgICAg cmV0dXJuIHJldDsKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCBwYXJhbGxlbF9pb3BvcnRfZWNw X3dyaXRlKHZvaWQgKm9wYXF1ZSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQoreworICAg IGFkZHIgJj0gNzsKKyAgICBwZGVidWcoIndlY3AlZD0lMDJ4XG4iLCBhZGRyLCB2YWwpOworfQor CitzdGF0aWMgdWludDMyX3QgcGFyYWxsZWxfaW9wb3J0X2VjcF9yZWFkKHZvaWQgKm9wYXF1ZSwg dWludDMyX3QgYWRkcikKK3sKKyAgICB1aW50OF90IHJldCA9IDB4ZmY7CisgICAgYWRkciAmPSA3 OworICAgIHBkZWJ1ZygicmVjcCVkOiUwMnhcbiIsIGFkZHIsIHJldCk7CiAgICAgcmV0dXJuIHJl dDsKIH0KIApAQCAtMTY5LDE1ICs0NDYsMzEgQEAgUGFyYWxsZWxTdGF0ZSAqcGFyYWxsZWxfaW5p dChpbnQgYmFzZSwgaW50IGlycSwgQ2hhckRyaXZlclN0YXRlICpjaHIpCiAgICAgICAgIHMtPmh3 X2RyaXZlciA9IDE7CiAKICAgICBzLT5pcnEgPSBpcnE7Ci0gICAgcy0+ZGF0YSA9IDA7CisgICAg cy0+ZGF0YXIgPSB+MDsKKyAgICBzLT5kYXRhdyA9IH4wOwogICAgIHMtPnN0YXR1cyA9IFBBUkFf U1RTX0JVU1k7CiAgICAgcy0+c3RhdHVzIHw9IFBBUkFfU1RTX0FDSzsKICAgICBzLT5zdGF0dXMg fD0gUEFSQV9TVFNfT05MSU5FOwogICAgIHMtPnN0YXR1cyB8PSBQQVJBX1NUU19FUlJPUjsKICAg ICBzLT5jb250cm9sID0gUEFSQV9DVFJfU0VMRUNUOwogICAgIHMtPmNvbnRyb2wgfD0gUEFSQV9D VFJfSU5JVDsKKyAgICBzLT5hZGRyID0gfjA7CiAKLSAgICByZWdpc3Rlcl9pb3BvcnRfd3JpdGUo YmFzZSwgOCwgMSwgcGFyYWxsZWxfaW9wb3J0X3dyaXRlLCBzKTsKLSAgICByZWdpc3Rlcl9pb3Bv cnRfcmVhZChiYXNlLCA4LCAxLCBwYXJhbGxlbF9pb3BvcnRfcmVhZCwgcyk7CisgICAgaWYgKHMt Pmh3X2RyaXZlcikgeworCXJlZ2lzdGVyX2lvcG9ydF93cml0ZShiYXNlLCA4LCAxLCBwYXJhbGxl bF9pb3BvcnRfd3JpdGVfaHcsIHMpOworCXJlZ2lzdGVyX2lvcG9ydF9yZWFkKGJhc2UsIDgsIDEs IHBhcmFsbGVsX2lvcG9ydF9yZWFkX2h3LCBzKTsKKyNpZmRlZiBfX2xpbnV4X18KKwlyZWdpc3Rl cl9pb3BvcnRfd3JpdGUoYmFzZSs0LCAxLCAyLCBwYXJhbGxlbF9pb3BvcnRfZXBwZGF0YV93cml0 ZV9odzIsIHMpOworCXJlZ2lzdGVyX2lvcG9ydF9yZWFkKGJhc2UrNCwgMSwgMiwgcGFyYWxsZWxf aW9wb3J0X2VwcGRhdGFfcmVhZF9odzIsIHMpOworCXJlZ2lzdGVyX2lvcG9ydF93cml0ZShiYXNl KzQsIDEsIDQsIHBhcmFsbGVsX2lvcG9ydF9lcHBkYXRhX3dyaXRlX2h3NCwgcyk7CisJcmVnaXN0 ZXJfaW9wb3J0X3JlYWQoYmFzZSs0LCAxLCA0LCBwYXJhbGxlbF9pb3BvcnRfZXBwZGF0YV9yZWFk X2h3NCwgcyk7CisJcmVnaXN0ZXJfaW9wb3J0X3dyaXRlKGJhc2UrMHg0MDAsIDgsIDEsIHBhcmFs bGVsX2lvcG9ydF9lY3Bfd3JpdGUsIHMpOworCXJlZ2lzdGVyX2lvcG9ydF9yZWFkKGJhc2UrMHg0 MDAsIDgsIDEsIHBhcmFsbGVsX2lvcG9ydF9lY3BfcmVhZCwgcyk7CisjZW5kaWYKKyAgICB9Cisg ICAgZWxzZSB7CisJcmVnaXN0ZXJfaW9wb3J0X3dyaXRlKGJhc2UsIDgsIDEsIHBhcmFsbGVsX2lv cG9ydF93cml0ZV9zdywgcyk7CisJcmVnaXN0ZXJfaW9wb3J0X3JlYWQoYmFzZSwgOCwgMSwgcGFy YWxsZWxfaW9wb3J0X3JlYWRfc3csIHMpOworICAgIH0KICAgICByZXR1cm4gczsKIH0KZGlmZiAt LWdpdCBhL3ZsLmMgYi92bC5jCmluZGV4IDU3NDQ1MmQuLmJjM2I0YzEgMTAwNjQ0Ci0tLSBhL3Zs LmMKKysrIGIvdmwuYwpAQCAtMTgxOCw3ICsxODE4LDEwIEBAIHN0YXRpYyBpbnQgcHBfaW9jdGwo Q2hhckRyaXZlclN0YXRlICpjaHIsIGludCBjbWQsIHZvaWQgKmFyZykKICAgICBjYXNlIENIUl9J T0NUTF9QUF9SRUFEX0NPTlRST0w6CiAgICAgICAgIGlmIChpb2N0bChmZCwgUFBSQ09OVFJPTCwg JmIpIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtRU5PVFNVUDsKLSAgICAgICAgKih1aW50OF90 ICopYXJnID0gYjsKKwkvKiBMaW51eCBnaXZlcyBvbmx5IHRoZSBsb3dlc3QgYml0cywgYW5kIG5v IHdheSB0byBrbm93IGRhdGEKKwkgICBkaXJlY3Rpb24hIEZvciBiZXR0ZXIgY29tcGF0aWJpbGl0 eSBzZXQgdGhlIGZpeGVkIHVwcGVyCisJICAgYml0cy4gKi8KKyAgICAgICAgKih1aW50OF90ICop YXJnID0gYiB8IDB4YzA7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ0hSX0lPQ1RMX1BQX1dS SVRFX0NPTlRST0w6CiAgICAgICAgIGIgPSAqKHVpbnQ4X3QgKilhcmc7CkBAIC0xODMwLDYgKzE4 MzMsMTAgQEAgc3RhdGljIGludCBwcF9pb2N0bChDaGFyRHJpdmVyU3RhdGUgKmNociwgaW50IGNt ZCwgdm9pZCAqYXJnKQogICAgICAgICAgICAgcmV0dXJuIC1FTk9UU1VQOwogICAgICAgICAqKHVp bnQ4X3QgKilhcmcgPSBiOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIENIUl9JT0NUTF9QUF9T RVRNT0RFOgorICAgICAgICBpZiAoaW9jdGwoZmQsIFBQU0VUTU9ERSwgYXJnKSA8IDApCisgICAg ICAgICAgICByZXR1cm4gLUVOT1RTVVA7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAg ICAgICAgIHJldHVybiAtRU5PVFNVUDsKICAgICB9CmRpZmYgLS1naXQgYS92bC5oIGIvdmwuaApp bmRleCBkNDkyZjNlLi4wYmRjMjk2IDEwMDY0NAotLS0gYS92bC5oCisrKyBiL3ZsLmgKQEAgLTI4 Niw2ICsyODYsNyBAQCB0eXBlZGVmIHN0cnVjdCB7CiAjZGVmaW5lIENIUl9JT0NUTF9QUF9SRUFE X0NPTlRST0wgICAgIDUKICNkZWZpbmUgQ0hSX0lPQ1RMX1BQX1dSSVRFX0NPTlRST0wgICAgNgog I2RlZmluZSBDSFJfSU9DVExfUFBfUkVBRF9TVEFUVVMgICAgICA3CisjZGVmaW5lIENIUl9JT0NU TF9QUF9TRVRNT0RFICAgICAgICAgIDgKIAogdHlwZWRlZiB2b2lkIElPRXZlbnRIYW5kbGVyKHZv aWQgKm9wYXF1ZSwgaW50IGV2ZW50KTsKIAo= ------=_Part_40231_25581670.1170621656306--