Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qJ1cR-0007W7-OU for pgsql-hackers@arkaria.postgresql.org; Tue, 11 Jul 2023 00:52:44 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qJ1cP-0008S9-He for pgsql-hackers@arkaria.postgresql.org; Tue, 11 Jul 2023 00:52:41 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qJ1cO-0008S0-Mb for pgsql-hackers@lists.postgresql.org; Tue, 11 Jul 2023 00:52:41 +0000 Received: from mail-oa1-x35.google.com ([2001:4860:4864:20::35]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qJ1cJ-003ATV-S5 for pgsql-hackers@postgresql.org; Tue, 11 Jul 2023 00:52:39 +0000 Received: by mail-oa1-x35.google.com with SMTP id 586e51a60fabf-1b45fe36cd9so2000143fac.2 for ; Mon, 10 Jul 2023 17:52:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=neon-tech.20221208.gappssmtp.com; s=20221208; t=1689036755; x=1691628755; h=in-reply-to:references:message-id:to:subject:cc:from:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=D3e+PUCuG9pGFFczA7Pc+knJt8W9oli+9emklF2hOAs=; b=AQtZxf29GNhUWUk2LV8RvNoOh5wIQMGDVsb45YZXyX45cbWb8XDxrm1/fR1UoDvB3p FhHJ2qocKUO+dizt7VrS5Oe89ZMAakPwDlVbVmpNCx3o0lb0RsiyWuvcGiSX5Ff4XQ2u Qz8hG9k2D0QqjDrHTTvThC7SUqr5XTmvM56k5Pna6o02E0oWh4gTwt56EN52hoeqrF1s CkDOrmVE5S6PLhW0b3QsdMG9wE+gXu7H070SM0BR4XPI+e9Jp6BgXNYT8glSRmrD2pf9 SIP7MG0lP2H5JV1RK3H2/kd/V3FkVv8GeD67UAiaPzhwjoKMjr1LB17zqU3plx0Zvk9I vY8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689036755; x=1691628755; h=in-reply-to:references:message-id:to:subject:cc:from:date :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=D3e+PUCuG9pGFFczA7Pc+knJt8W9oli+9emklF2hOAs=; b=ZhTYCd7/i3EZku6gxiU6qtoa8+p4uIrQwZ+YcK4jyKCiRAY0hLyvlWdPOe1/rlWsZ2 W1Sremdj4AFM1ddEnbiOzGRWgqmOUhyB31fwCVl+whva/l6oGDoU5StaeUTG41Dcy/ul SEMCEXXknz7pbg6Q/nHq7evZEb4FSUofZbwcruakA78sqWRZdHUFXksac4nW8A53ggpp R4ohKFhM+zTyrOdYb+Q9tXfcDjVkikDcybqzazKo8steCDSIt8Qx2UvRU7/9I1MVxpTE wx9SpRLRzbRVheCbdiIJy+ifW4s45P/KqcNN52R0aNsfZcEJV9ryXwRxHnLSCZWkakJ3 sTFw== X-Gm-Message-State: ABy/qLaTUWbtkXCU9BTxeVQPtCNahcPqggP3hSTTN/ehZSDAEhc+rGVL a9K22I+yzaQOAfGvn0kbZXSjEQ== X-Google-Smtp-Source: APBJJlFE6rvCJGt77BMrDJjCM5SasTlzMaA9lL7TVk+XGIiCXZkCMTUwnZKHn1+x2835Ir7OYuw3Fg== X-Received: by 2002:a05:6870:d1c4:b0:1b4:624a:e35 with SMTP id b4-20020a056870d1c400b001b4624a0e35mr6919221oac.11.1689036755101; Mon, 10 Jul 2023 17:52:35 -0700 (PDT) Received: from localhost ([2607:fb90:f280:130d:3996:e070:71ee:42fb]) by smtp.gmail.com with ESMTPSA id el40-20020a056870f6a800b001b3d93884fdsm499773oab.57.2023.07.10.17.52.33 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 10 Jul 2023 17:52:34 -0700 (PDT) Content-Type: multipart/mixed; boundary=0ddffbd61bedfbb4a84fe2aa54c4562bbcc676e581a5cdf66bf6ee17b444 Mime-Version: 1.0 Date: Mon, 10 Jul 2023 19:52:32 -0500 From: "Tristan Partin" Cc: "PostgreSQL-development" Subject: Re: BUG #17946: LC_MONETARY & DO LANGUAGE plperl - BUG To: "Tristan Partin" , , "Heikki Linnakangas" , "Tom Lane" , Message-Id: X-Mailer: aerc 0.15.2-84-g9a3ccd9a95db References: <17946-3e84cb577e9551c3@postgresql.org> <1564676.1685043220@sss.pgh.pa.us> <555bb26e-c27c-ab65-028f-3fd5b82df9de@iki.fi> <1645ebad-798f-87ad-43ac-72d2bf14d2d6@cd> In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0ddffbd61bedfbb4a84fe2aa54c4562bbcc676e581a5cdf66bf6ee17b444 Content-Type: multipart/alternative; boundary=8012fe431331191a62e3674a75f200790160c29ad126fb8935a3208a7aa8 --8012fe431331191a62e3674a75f200790160c29ad126fb8935a3208a7aa8 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8 Here is an up to date patch given some churn on the master branch. --=20 Tristan Partin Neon (https://neon.tech) --8012fe431331191a62e3674a75f200790160c29ad126fb8935a3208a7aa8-- --0ddffbd61bedfbb4a84fe2aa54c4562bbcc676e581a5cdf66bf6ee17b444 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v3-0001-Skip-checking-for-uselocale-on-Windows.patch Content-Type: text/x-patch; charset=utf-8; name=v3-0001-Skip-checking-for-uselocale-on-Windows.patch RnJvbSBiNjhjZWM0ODE3NjhjN2M2MzVlYzQ4MzI5YjQ3NjRlY2VkMjY0NTcyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IEZyaSwgMzAgSnVuIDIwMjMgMDk6MzE6MDQgLTA1MDAKU3ViamVjdDogW1BBVENIIHYzIDEv M10gU2tpcCBjaGVja2luZyBmb3IgdXNlbG9jYWxlIG9uIFdpbmRvd3MKCldpbmRvd3MgZG9lc24n dCBoYXZlIHVzZWxvY2FsZSwgc28gc2tpcCBpdC4KLS0tCiBtZXNvbi5idWlsZCB8IDIgKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKaW5kZXggMGM0NGYxOWNiOS4uMzM1NmY3MmJmMCAx MDA2NDQKLS0tIGEvbWVzb24uYnVpbGQKKysrIGIvbWVzb24uYnVpbGQKQEAgLTI0MzgsNyArMjQz OCw3IEBAIGZ1bmNfY2hlY2tzID0gWwogICBbJ3N0cnNpZ25hbCddLAogICBbJ3N5bmNfZmlsZV9y YW5nZSddLAogICBbJ3N5bmNmcyddLAotICBbJ3VzZWxvY2FsZSddLAorICBbJ3VzZWxvY2FsZScs IHsnc2tpcCc6IGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJ31dLAogICBbJ3djc3RvbWJzX2wnXSwK IF0KIAotLSAKVHJpc3RhbiBQYXJ0aW4KTmVvbiAoaHR0cHM6Ly9uZW9uLnRlY2gpCgo= --0ddffbd61bedfbb4a84fe2aa54c4562bbcc676e581a5cdf66bf6ee17b444 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v3-0002-Add-locale_is_c-function.patch Content-Type: text/x-patch; charset=utf-8; name=v3-0002-Add-locale_is_c-function.patch RnJvbSAzMjA3Njk0YTFkMjE0YTdkNWI4NDRmM2Y2ZGZkODM3ODQwODE3MmFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IEZyaSwgMzAgSnVuIDIwMjMgMTE6MTM6MjkgLTA1MDAKU3ViamVjdDogW1BBVENIIHYzIDIv M10gQWRkIGxvY2FsZV9pc19jIGZ1bmN0aW9uCgpJbiBzb21lIHBsYWNlcyB0aHJvdWdob3V0IHRo ZSBjb2RlYmFzZSwgdGhlcmUgYXJlIHN0cmluZyBjb21wYXJpc29ucyBmb3IKbG9jYWxlcyBtYXRj aGluZyBDIG9yIFBPU0lYLiBFbmNhcHN1bGF0ZSB0aGlzIGxvZ2ljIGludG8gYSBzaW5nbGUKZnVu Y3Rpb24gYW5kIHVzZSBpdC4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMg fCAzOSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9p bml0L3Bvc3Rpbml0LmMgfCAgNCArLS0tCiBzcmMvYmFja2VuZC91dGlscy9tYi9tYnV0aWxzLmMg ICAgfCAgNSArKy0tCiBzcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaCAgICAgfCAgMSArCiA0 IGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9wZ19sb2NhbGUuYwppbmRleCBhYTlkYTk5MzA4Li4wNDdjMDJkYmFiIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3BnX2xvY2FsZS5jCkBAIC0xOTEsNiArMTkxLDIzIEBAIHdjc3RvbWJzX2woY2hh ciAqZGVzdCwgY29uc3Qgd2NoYXJfdCAqc3JjLCBzaXplX3QgbiwgbG9jYWxlX3QgbG9jKQogfQog I2VuZGlmCiAKKworLyoKKyAqIENoZWNrIGlmIGEgbG9jYWxlIGlzIHRoZSBDIGxvY2FsZQorICoK KyAqIFBPU0lYIGlzIGFuIGFsaWFzIGZvciBDLiBQYXNzaW5nIGluZ29yZV9jYXNlIGFzIHRydWUg d2lsbCB1c2UKKyAqIHBnX3N0cmNhc2VjbXAoKSBpbnN0ZWFkIG9mIHN0cmNtcCgpLgorICovCiti b29sCitsb2NhbGVfaXNfYyhjb25zdCBjaGFyICpsb2NhbGUsIGJvb2wgaWdub3JlX2Nhc2UpCit7 CisJaWYgKCFpZ25vcmVfY2FzZSkKKwkJcmV0dXJuIHN0cmNtcChsb2NhbGUsICJDIikgPT0gMCB8 fCBzdHJjbXAobG9jYWxlLCAiUE9TSVgiKSA9PSAwOworCisJcmV0dXJuIHBnX3N0cmNhc2VjbXAo bG9jYWxlLCAiQyIpID09IDAgfHwgcGdfc3RyY2FzZWNtcChsb2NhbGUsICJQT1NJWCIpID09IDA7 Cit9CisKKwogLyoKICAqIHBnX3Blcm1fc2V0bG9jYWxlCiAgKgpAQCAtMTI3NiwxMCArMTI5Myw4 IEBAIGxvb2t1cF9jb2xsYXRpb25fY2FjaGUoT2lkIGNvbGxhdGlvbiwgYm9vbCBzZXRfZmxhZ3Mp CiAJCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoQ09MTE9JRCwgdHAsIEFudW1fcGdf Y29sbGF0aW9uX2NvbGxjdHlwZSk7CiAJCQljb2xsY3R5cGUgPSBUZXh0RGF0dW1HZXRDU3RyaW5n KGRhdHVtKTsKIAotCQkJY2FjaGVfZW50cnktPmNvbGxhdGVfaXNfYyA9ICgoc3RyY21wKGNvbGxj b2xsYXRlLCAiQyIpID09IDApIHx8Ci0JCQkJCQkJCQkJIChzdHJjbXAoY29sbGNvbGxhdGUsICJQ T1NJWCIpID09IDApKTsKLQkJCWNhY2hlX2VudHJ5LT5jdHlwZV9pc19jID0gKChzdHJjbXAoY29s bGN0eXBlLCAiQyIpID09IDApIHx8Ci0JCQkJCQkJCQkgICAoc3RyY21wKGNvbGxjdHlwZSwgIlBP U0lYIikgPT0gMCkpOworCQkJY2FjaGVfZW50cnktPmNvbGxhdGVfaXNfYyA9IGxvY2FsZV9pc19j KGNvbGxjb2xsYXRlLCBmYWxzZSk7CisJCQljYWNoZV9lbnRyeS0+Y3R5cGVfaXNfYyA9IGxvY2Fs ZV9pc19jKGNvbGxjdHlwZSwgZmFsc2UpOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMTMyNywxMiAr MTM0Miw4IEBAIGxjX2NvbGxhdGVfaXNfYyhPaWQgY29sbGF0aW9uKQogCQlpZiAoIWxvY2FsZXB0 cikKIAkJCWVsb2coRVJST1IsICJpbnZhbGlkIExDX0NPTExBVEUgc2V0dGluZyIpOwogCi0JCWlm IChzdHJjbXAobG9jYWxlcHRyLCAiQyIpID09IDApCi0JCQlyZXN1bHQgPSB0cnVlOwotCQllbHNl IGlmIChzdHJjbXAobG9jYWxlcHRyLCAiUE9TSVgiKSA9PSAwKQotCQkJcmVzdWx0ID0gdHJ1ZTsK LQkJZWxzZQotCQkJcmVzdWx0ID0gZmFsc2U7CisJCXJlc3VsdCA9IGxvY2FsZV9pc19jKGxvY2Fs ZXB0ciwgZmFsc2UpOworCiAJCXJldHVybiAoYm9vbCkgcmVzdWx0OwogCX0KIApAQCAtMTM4MCwx MiArMTM5MSw4IEBAIGxjX2N0eXBlX2lzX2MoT2lkIGNvbGxhdGlvbikKIAkJaWYgKCFsb2NhbGVw dHIpCiAJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBMQ19DVFlQRSBzZXR0aW5nIik7CiAKLQkJaWYg KHN0cmNtcChsb2NhbGVwdHIsICJDIikgPT0gMCkKLQkJCXJlc3VsdCA9IHRydWU7Ci0JCWVsc2Ug aWYgKHN0cmNtcChsb2NhbGVwdHIsICJQT1NJWCIpID09IDApCi0JCQlyZXN1bHQgPSB0cnVlOwot CQllbHNlCi0JCQlyZXN1bHQgPSBmYWxzZTsKKwkJcmVzdWx0ID0gbG9jYWxlX2lzX2MobG9jYWxl cHRyLCBmYWxzZSk7CisKIAkJcmV0dXJuIChib29sKSByZXN1bHQ7CiAJfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgYi9zcmMvYmFja2VuZC91dGlscy9p bml0L3Bvc3Rpbml0LmMKaW5kZXggMGY5YjkyYjMyZS4uYTkyYTBjNDM4ZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2luaXQvcG9zdGluaXQuYwpAQCAtNDE5LDkgKzQxOSw3IEBAIENoZWNrTXlEYXRhYmFzZShjb25z dCBjaGFyICpuYW1lLCBib29sIGFtX3N1cGVydXNlciwgYm9vbCBvdmVycmlkZV9hbGxvd19jb25u ZWN0CiAJCQkJCQkgICAiIHdoaWNoIGlzIG5vdCByZWNvZ25pemVkIGJ5IHNldGxvY2FsZSgpLiIs IGN0eXBlKSwKIAkJCQkgZXJyaGludCgiUmVjcmVhdGUgdGhlIGRhdGFiYXNlIHdpdGggYW5vdGhl ciBsb2NhbGUgb3IgaW5zdGFsbCB0aGUgbWlzc2luZyBsb2NhbGUuIikpKTsKIAotCWlmIChzdHJj bXAoY3R5cGUsICJDIikgPT0gMCB8fAotCQlzdHJjbXAoY3R5cGUsICJQT1NJWCIpID09IDApCi0J CWRhdGFiYXNlX2N0eXBlX2lzX2MgPSB0cnVlOworCWRhdGFiYXNlX2N0eXBlX2lzX2MgPSBsb2Nh bGVfaXNfYyhjdHlwZSwgZmFsc2UpOwogCiAJaWYgKGRiZm9ybS0+ZGF0bG9jcHJvdmlkZXIgPT0g Q09MTFBST1ZJREVSX0lDVSkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tYi9t YnV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9tYi9tYnV0aWxzLmMKaW5kZXggNjdhMWFiMmFi Mi4uOTk3MTU2NTE1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWIvbWJ1dGlscy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21iL21idXRpbHMuYwpAQCAtMzksNiArMzksNyBAQAog I2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNp bmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3BnX2xvY2FsZS5oIgog I2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidmFyYXR0LmgiCiAKQEAgLTEy MzcsOSArMTIzOCw3IEBAIHBnX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KGNvbnN0IGNoYXIgKmRv bWFpbm5hbWUpCiAJaW50CQkJbmV3X21zZ2VuYzsKIAogI2lmbmRlZiBXSU4zMgotCWNvbnN0IGNo YXIgKmN0eXBlID0gc2V0bG9jYWxlKExDX0NUWVBFLCBOVUxMKTsKLQotCWlmIChwZ19zdHJjYXNl Y21wKGN0eXBlLCAiQyIpID09IDAgfHwgcGdfc3RyY2FzZWNtcChjdHlwZSwgIlBPU0lYIikgPT0g MCkKKwlpZiAobG9jYWxlX2lzX2MobG9jYWxlX2N0eXBlLCB0cnVlKSkKICNlbmRpZgogCQlpZiAo ZW5jb2RpbmcgIT0gUEdfU1FMX0FTQ0lJICYmCiAJCQlyYXdfcGdfYmluZF90ZXh0ZG9tYWluX2Nv ZGVzZXQoZG9tYWlubmFtZSwgZW5jb2RpbmcpKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRp bHMvcGdfbG9jYWxlLmggYi9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaAppbmRleCA2NDQ3 YmVhOGUwLi5lMDhkOTZlMDk5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2Nh bGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaApAQCAtNTQsNiArNTQsNyBA QCBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBkYXRhYmFzZV9jdHlwZV9pc19jOwogZXh0ZXJuIGJv b2wgY2hlY2tfbG9jYWxlKGludCBjYXRlZ29yeSwgY29uc3QgY2hhciAqbG9jYWxlLCBjaGFyICoq Y2Fub25uYW1lKTsKIGV4dGVybiBjaGFyICpwZ19wZXJtX3NldGxvY2FsZShpbnQgY2F0ZWdvcnks IGNvbnN0IGNoYXIgKmxvY2FsZSk7CiAKK2V4dGVybiBib29sIGxvY2FsZV9pc19jKGNvbnN0IGNo YXIgKmxvY2FsZSwgYm9vbCBpZ25vcmVfY2FzZSk7CiBleHRlcm4gYm9vbCBsY19jb2xsYXRlX2lz X2MoT2lkIGNvbGxhdGlvbik7CiBleHRlcm4gYm9vbCBsY19jdHlwZV9pc19jKE9pZCBjb2xsYXRp b24pOwogCi0tIApUcmlzdGFuIFBhcnRpbgpOZW9uIChodHRwczovL25lb24udGVjaCkKCg== --0ddffbd61bedfbb4a84fe2aa54c4562bbcc676e581a5cdf66bf6ee17b444 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v3-0003-Use-thread-safe-locale-APIs.patch Content-Type: text/x-patch; charset=utf-8; name=v3-0003-Use-thread-safe-locale-APIs.patch RnJvbSBiYzBhNzlmZDBiMWNmNWY0NWM5M2RmZDQwZmMwMGMwNTQ2NDZmYjAwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IE1vbiwgMyBKdWwgMjAyMyAwODo1MTo1OSAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggdjMgMy8z XSBVc2UgdGhyZWFkLXNhZmUgbG9jYWxlIEFQSXMKCnNldGxvY2FsZSgpIGhhcyBiZWVuIGEgdGhv cm4gaW4gUG9zdGdyZXMncyBzaWRlIGZvciBhIHdoaWxlLiBNb3N0CnJlY2VudGx5IHRoaXMgaGFz IG1hbmlmZXN0ZWQgaW4gYnVnICMxNzk0NiB3aGVyZSBsb2FkaW5nIGxpYnBlcmwgd291bGQKY2F1 c2UgdGhlIGxvY2FsaXphdGlvbiB0byBjaGFuZ2Ugb3V0IGZyb20gdW5kZXIgUG9zdGdyZXMuIE9u IFdpbmRvd3MsCnVzZSBfRU5BQkxFX1BFUl9USFJFQURfTE9DQUxFLgotLS0KIHNyYy9iYWNrZW5k L21haW4vbWFpbi5jICAgICAgICAgICAgfCAgNTUgKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2Nhc2guYyAgICAgICB8ICAyOSArKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5n LmMgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYyAgfCAzODggKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGlu aXQuYyAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21iL21idXRpbHMuYyAgICAgfCAgIDIg Ky0KIHNyYy9jb21tb24vZXhlYy5jICAgICAgICAgICAgICAgICAgfCAgMTYgLS0KIHNyYy9pbmNs dWRlL3V0aWxzL3BnX2xvY2FsZS5oICAgICAgfCAgIDIgKy0KIDggZmlsZXMgY2hhbmdlZCwgMzI1 IGluc2VydGlvbnMoKyksIDE4MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9tYWluL21haW4uYyBiL3NyYy9iYWNrZW5kL21haW4vbWFpbi5jCmluZGV4IGVkMTFlOGJlN2Yu LjA5M2RmODhmMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL21haW4vbWFpbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL21haW4vbWFpbi5jCkBAIC01OSw2ICs1OSwxMSBAQCBpbnQKIG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIHsKIAlib29sCQlkb19jaGVja19yb290ID0gdHJ1ZTsKKwljaGFy CSAgICpjb2xsYXRlX2xvY2FsZTsKKwljaGFyCSAgICpjdHlwZV9sb2NhbGU7CisjaWZkZWYgTENf TUVTU0FHRVMKKwljaGFyCSAgICptZXNzYWdlc19sb2NhbGU7CisjZW5kaWYKIAogCXJlYWNoZWRf bWFpbiA9IHRydWU7CiAKQEAgLTExMSwxNSArMTE2LDM5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAkgKiB0aGVzZSBzZXQgdG8gIkMiIHRoZW4gbWVzc2FnZSBsb2NhbGl6YXRpb24g bWlnaHQgbm90IHdvcmsgd2VsbCBpbiB0aGUKIAkgKiBwb3N0bWFzdGVyLgogCSAqLwotCWluaXRf bG9jYWxlKCJMQ19DT0xMQVRFIiwgTENfQ09MTEFURSwgIiIpOwotCWluaXRfbG9jYWxlKCJMQ19D VFlQRSIsIExDX0NUWVBFLCAiIik7CisKKwkvKgorCSAqIFNhdmUgb2ZmIHRoZSBvcmlnaW5hbCBs b2NhbGUgdmFsdWVzIHByaW9yIHRvIHRoZSBmaXJzdCBjYWxsIG9mCisJICogdXNlbG9jYWxlKCku IFRoaXMgZW5zdXJlcyB0aGF0IHdlIGRvbid0IGNhbGwgcGdfc2V0bG9jYWxlKCkgd2l0aCBhbiBl bXB0eQorCSAqIHN0cmluZy4gU2VlIHRoZSBmdW5jdGlvbiBjb21tZW50IGZvciBwZ19zZXRsb2Nh bGUoKSBmb3IgZnVydGhlcgorCSAqIGV4cGxhbmF0aW9uLiBOb3RlIHRoYXQgdGhpcyByZXN0cmlj dGlvbiBkb2Vzbid0IGV4aXN0IG9uIFdpbmRvd3MsIGJ1dCB3ZQorCSAqIGNhbiB1c2UgdGhlIHNh bWUgY29kZSBwYXRoIGFueXdheS4KKwkgKi8KKwljb2xsYXRlX2xvY2FsZSA9IHNldGxvY2FsZShM Q19DT0xMQVRFLCAiIik7CisJY3R5cGVfbG9jYWxlID0gc2V0bG9jYWxlKExDX0NUWVBFLCAiIik7 CisKKyNpZmRlZiBMQ19NRVNTQUdFUworCW1lc3NhZ2VzX2xvY2FsZSA9IHNldGxvY2FsZShMQ19N RVNTQUdFUywgIiIpOworI2VuZGlmCisKKworI2lmZGVmIEhBVkVfX0NPTkZJR1RIUkVBRExPQ0FM RQorCS8qCisJICogVGhpcyBjYWxsIGNvdWxkIG1vc3QgbGlrZWx5IGhhcHBlbiBzb29uZXIsIGJ1 dCBqdXN0IHRvIGVyciBvbiB0aGUgc2lkZSBvZgorCSAqIGNhdXRpb24sIGNhbGwgaXQgYWZ0ZXIg YWJzb3JiaW5nIGxvY2FsZXMgZnJvbSB0aGUgZW52aXJvbm1lbnQuCisJICovCisJX2NvbmZpZ3Ro cmVhZGxvY2FsZShfRU5BQkxFX1BFUl9USFJFQURfTE9DQUxFKTsKKyNlbmRpZgorCisJaW5pdF9s b2NhbGUoIkxDX0NPTExBVEUiLCBMQ19DT0xMQVRFLCBjb2xsYXRlX2xvY2FsZSk7CisJaW5pdF9s b2NhbGUoIkxDX0NUWVBFIiwgTENfQ1RZUEUsIGN0eXBlX2xvY2FsZSk7CiAKIAkvKgogCSAqIExD X01FU1NBR0VTIHdpbGwgZ2V0IHNldCBsYXRlciBkdXJpbmcgR1VDIG9wdGlvbiBwcm9jZXNzaW5n LCBidXQgd2Ugc2V0CiAJICogaXQgaGVyZSB0byBhbGxvdyBzdGFydHVwIGVycm9yIG1lc3NhZ2Vz IHRvIGJlIGxvY2FsaXplZC4KIAkgKi8KICNpZmRlZiBMQ19NRVNTQUdFUwotCWluaXRfbG9jYWxl KCJMQ19NRVNTQUdFUyIsIExDX01FU1NBR0VTLCAiIik7CisJaW5pdF9sb2NhbGUoIkxDX01FU1NB R0VTIiwgTENfTUVTU0FHRVMsIG1lc3NhZ2VzX2xvY2FsZSk7CiAjZW5kaWYKIAogCS8qCkBAIC0x MzAsMTMgKzE1OSw2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlpbml0X2xvY2Fs ZSgiTENfTlVNRVJJQyIsIExDX05VTUVSSUMsICJDIik7CiAJaW5pdF9sb2NhbGUoIkxDX1RJTUUi LCBMQ19USU1FLCAiQyIpOwogCi0JLyoKLQkgKiBOb3cgdGhhdCB3ZSBoYXZlIGFic29yYmVkIGFz IG11Y2ggYXMgd2Ugd2lzaCB0byBmcm9tIHRoZSBsb2NhbGUKLQkgKiBlbnZpcm9ubWVudCwgcmVt b3ZlIGFueSBMQ19BTEwgc2V0dGluZywgc28gdGhhdCB0aGUgZW52aXJvbm1lbnQKLQkgKiB2YXJp YWJsZXMgaW5zdGFsbGVkIGJ5IHBnX3Blcm1fc2V0bG9jYWxlIGhhdmUgZm9yY2UuCi0JICovCi0J dW5zZXRlbnYoIkxDX0FMTCIpOwotCiAJLyoKIAkgKiBDYXRjaCBzdGFuZGFyZCBvcHRpb25zIGJl Zm9yZSBkb2luZyBtdWNoIGVsc2UsIGluIHBhcnRpY3VsYXIgYmVmb3JlIHdlCiAJICogaW5zaXN0 IG9uIG5vdCBiZWluZyByb290LgpAQCAtMzA3LDggKzMyOSwxNyBAQCBzdGFydHVwX2hhY2tzKGNv bnN0IGNoYXIgKnByb2duYW1lKQogc3RhdGljIHZvaWQKIGluaXRfbG9jYWxlKGNvbnN0IGNoYXIg KmNhdGVnb3J5bmFtZSwgaW50IGNhdGVnb3J5LCBjb25zdCBjaGFyICpsb2NhbGUpCiB7Ci0JaWYg KHBnX3Blcm1fc2V0bG9jYWxlKGNhdGVnb3J5LCBsb2NhbGUpID09IE5VTEwgJiYKLQkJcGdfcGVy bV9zZXRsb2NhbGUoY2F0ZWdvcnksICJDIikgPT0gTlVMTCkKKwkvKgorCSAqIFNpbmNlIHdlIGFy ZSBpbml0aWFsaXppbmcgZ2xvYmFsIGxvY2FsZXMsIE5VTEwgYW5kIGVtcHR5IHN0cmluZyBhcmUK KwkgKiBpbnZhbGlkIGFyZ3VtZW50cy4gU2VlIHRoZSBwZ19zZXRsb2NhbGUoKSBmdW5jdGlvbiBk ZXNjcmlwdGlvbiBmb3IgbW9yZQorCSAqIGV4cGxhbmF0aW9uIG9uIHRoZSBlbXB0eSBzdHJpbmcu IE5VTEwganVzdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgaW4gdGhpcworCSAqIGNvbnRleHQgb2YgaW5p dGlhbGl6aW5nIGxvY2FsZXMuCisJICovCisJQXNzZXJ0KGxvY2FsZSk7CisJQXNzZXJ0KGxvY2Fs ZVswXSAhPSAnXDAnKTsKKworCWlmIChwZ19zZXRsb2NhbGUoY2F0ZWdvcnksIGxvY2FsZSkgPT0g TlVMTCAmJgorCQlwZ19zZXRsb2NhbGUoY2F0ZWdvcnksICJDIikgPT0gTlVMTCkKIAkJZWxvZyhG QVRBTCwgImNvdWxkIG5vdCBhZG9wdCBcIiVzXCIgbG9jYWxlIG5vciBDIGxvY2FsZSBmb3IgJXMi LAogCQkJIGxvY2FsZSwgY2F0ZWdvcnluYW1lKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9jYXNoLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvY2FzaC5jCmluZGV4IDMy ZmJhZDJmNTcuLjVjMjU0ZDkxMmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9j YXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Nhc2guYwpAQCAtMTExLDYgKzExMSwx MSBAQCBjYXNoX2luKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkgICAqY3N5bWJvbDsKIAlzdHJ1Y3Qg bGNvbnYgKmxjb252ZXJ0ID0gUEdMQ19sb2NhbGVjb252KCk7CiAKKwlpZiAobGNvbnZlcnQgPT0g TlVMTCkKKwkJZXJldHVybihlc2NvbnRleHQsIChEYXR1bSkgMCwKKwkJCQkoZXJyY29kZShFUlJD T0RFX09VVF9PRl9NRU1PUlkpLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1v cnkgZm9yIGxvY2FsZSBpbmZvcm1hdGlvbiIpKSk7CisKIAkvKgogCSAqIGZyYWNfZGlnaXRzIHdp bGwgYmUgQ0hBUl9NQVggaW4gc29tZSBsb2NhbGVzLCBub3RhYmx5IEMuICBIb3dldmVyLCBqdXN0 CiAJICogdGVzdGluZyBmb3IgPT0gQ0hBUl9NQVggaXMgcmlza3ksIGJlY2F1c2Ugb2YgY29tcGls ZXJzIGxpa2UgZ2NjIHRoYXQKQEAgLTMyNSw2ICszMzAsMTEgQEAgY2FzaF9vdXQoUEdfRlVOQ1RJ T05fQVJHUykKIAkJCQlzZXBfYnlfc3BhY2U7CiAJc3RydWN0IGxjb252ICpsY29udmVydCA9IFBH TENfbG9jYWxlY29udigpOwogCisJaWYgKGxjb252ZXJ0ID09IE5VTEwpCisJCWVyZXR1cm4oZmNp bmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVN T1JZKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBsb2NhbGUg aW5mb3JtYXRpb24iKSkpOworCiAJLyogc2VlIGNvbW1lbnRzIGFib3V0IGZyYWNfZGlnaXRzIGlu IGNhc2hfaW4oKSAqLwogCXBvaW50cyA9IGxjb252ZXJ0LT5mcmFjX2RpZ2l0czsKIAlpZiAocG9p bnRzIDwgMCB8fCBwb2ludHMgPiAxMCkKQEAgLTEwMzYsNiArMTA0NiwxMSBAQCBjYXNoX251bWVy aWMoUEdfRlVOQ1RJT05fQVJHUykKIAlpbnQJCQlmcG9pbnQ7CiAJc3RydWN0IGxjb252ICpsY29u dmVydCA9IFBHTENfbG9jYWxlY29udigpOwogCisJaWYgKGxjb252ZXJ0ID09IE5VTEwpCisJCWVy ZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9P VVRfT0ZfTUVNT1JZKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZv ciBsb2NhbGUgaW5mb3JtYXRpb24iKSkpOworCiAJLyogc2VlIGNvbW1lbnRzIGFib3V0IGZyYWNf ZGlnaXRzIGluIGNhc2hfaW4oKSAqLwogCWZwb2ludCA9IGxjb252ZXJ0LT5mcmFjX2RpZ2l0czsK IAlpZiAoZnBvaW50IDwgMCB8fCBmcG9pbnQgPiAxMCkKQEAgLTEwOTUsNiArMTExMCwxMSBAQCBu dW1lcmljX2Nhc2goUEdfRlVOQ1RJT05fQVJHUykKIAlEYXR1bQkJbnVtZXJpY19zY2FsZTsKIAlz dHJ1Y3QgbGNvbnYgKmxjb252ZXJ0ID0gUEdMQ19sb2NhbGVjb252KCk7CiAKKwlpZiAobGNvbnZl cnQgPT0gTlVMTCkKKwkJZXJldHVybihmY2luZm8tPmNvbnRleHQsIChEYXR1bSkgMCwKKwkJCQko ZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkpLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBh bGxvY2F0ZSBtZW1vcnkgZm9yIGxvY2FsZSBpbmZvcm1hdGlvbiIpKSk7CisKIAkvKiBzZWUgY29t bWVudHMgYWJvdXQgZnJhY19kaWdpdHMgaW4gY2FzaF9pbigpICovCiAJZnBvaW50ID0gbGNvbnZl cnQtPmZyYWNfZGlnaXRzOwogCWlmIChmcG9pbnQgPCAwIHx8IGZwb2ludCA+IDEwKQpAQCAtMTEy OCw2ICsxMTQ4LDExIEBAIGludDRfY2FzaChQR19GVU5DVElPTl9BUkdTKQogCWludAkJCWk7CiAJ c3RydWN0IGxjb252ICpsY29udmVydCA9IFBHTENfbG9jYWxlY29udigpOwogCisJaWYgKGxjb252 ZXJ0ID09IE5VTEwpCisJCWVyZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVNT1JZKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3Qg YWxsb2NhdGUgbWVtb3J5IGZvciBsb2NhbGUgaW5mb3JtYXRpb24iKSkpOworCiAJLyogc2VlIGNv bW1lbnRzIGFib3V0IGZyYWNfZGlnaXRzIGluIGNhc2hfaW4oKSAqLwogCWZwb2ludCA9IGxjb252 ZXJ0LT5mcmFjX2RpZ2l0czsKIAlpZiAoZnBvaW50IDwgMCB8fCBmcG9pbnQgPiAxMCkKQEAgLTEx NTgsNiArMTE4MywxMCBAQCBpbnQ4X2Nhc2goUEdfRlVOQ1RJT05fQVJHUykKIAlpbnQJCQlpOwog CXN0cnVjdCBsY29udiAqbGNvbnZlcnQgPSBQR0xDX2xvY2FsZWNvbnYoKTsKIAorCWVyZXR1cm4o ZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCisJCQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9N RU1PUlkpLAorCQkJIGVycm1zZygiY291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgbG9jYWxl IGluZm9ybWF0aW9uIikpKTsKKwogCS8qIHNlZSBjb21tZW50cyBhYm91dCBmcmFjX2RpZ2l0cyBp biBjYXNoX2luKCkgKi8KIAlmcG9pbnQgPSBsY29udmVydC0+ZnJhY19kaWdpdHM7CiAJaWYgKGZw b2ludCA8IDAgfHwgZnBvaW50ID4gMTApCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvZm9ybWF0dGluZy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcuYwppbmRl eCBlMjdlYThlZjk3Li5kOGRiY2JkNTZiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvZm9ybWF0dGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMK QEAgLTUwNDksMTIgKzUwNDksMTIgQEAgTlVNX3ByZXBhcmVfbG9jYWxlKE5VTVByb2MgKk5wKQog CQkvKgogCQkgKiBQb3NpdGl2ZSAvIE5lZ2F0aXZlIG51bWJlciBzaWduCiAJCSAqLwotCQlpZiAo bGNvbnYtPm5lZ2F0aXZlX3NpZ24gJiYgKmxjb252LT5uZWdhdGl2ZV9zaWduKQorCQlpZiAobGNv bnYgJiYgbGNvbnYtPm5lZ2F0aXZlX3NpZ24gJiYgKmxjb252LT5uZWdhdGl2ZV9zaWduKQogCQkJ TnAtPkxfbmVnYXRpdmVfc2lnbiA9IGxjb252LT5uZWdhdGl2ZV9zaWduOwogCQllbHNlCiAJCQlO cC0+TF9uZWdhdGl2ZV9zaWduID0gIi0iOwogCi0JCWlmIChsY29udi0+cG9zaXRpdmVfc2lnbiAm JiAqbGNvbnYtPnBvc2l0aXZlX3NpZ24pCisJCWlmIChsY29udiAmJiBsY29udi0+cG9zaXRpdmVf c2lnbiAmJiAqbGNvbnYtPnBvc2l0aXZlX3NpZ24pCiAJCQlOcC0+TF9wb3NpdGl2ZV9zaWduID0g bGNvbnYtPnBvc2l0aXZlX3NpZ247CiAJCWVsc2UKIAkJCU5wLT5MX3Bvc2l0aXZlX3NpZ24gPSAi KyI7CkBAIC01MDYyLDkgKzUwNjIsOCBAQCBOVU1fcHJlcGFyZV9sb2NhbGUoTlVNUHJvYyAqTnAp CiAJCS8qCiAJCSAqIE51bWJlciBkZWNpbWFsIHBvaW50CiAJCSAqLwotCQlpZiAobGNvbnYtPmRl Y2ltYWxfcG9pbnQgJiYgKmxjb252LT5kZWNpbWFsX3BvaW50KQorCQlpZiAobGNvbnYgJiYgbGNv bnYtPmRlY2ltYWxfcG9pbnQgJiYgKmxjb252LT5kZWNpbWFsX3BvaW50KQogCQkJTnAtPmRlY2lt YWwgPSBsY29udi0+ZGVjaW1hbF9wb2ludDsKLQogCQllbHNlCiAJCQlOcC0+ZGVjaW1hbCA9ICIu IjsKIApAQCAtNTA3OCw3ICs1MDc3LDcgQEAgTlVNX3ByZXBhcmVfbG9jYWxlKE5VTVByb2MgKk5w KQogCQkgKiBidXQgIiIgZm9yIHRob3VzYW5kc19zZXAsIHNvIHdlIHNldCB0aGUgdGhvdXNhbmRz X3NlcCB0b28uCiAJCSAqIGh0dHA6Ly9hcmNoaXZlcy5wb3N0Z3Jlc3FsLm9yZy9wZ3NxbC1oYWNr ZXJzLzIwMDctMTEvbXNnMDA3NzIucGhwCiAJCSAqLwotCQlpZiAobGNvbnYtPnRob3VzYW5kc19z ZXAgJiYgKmxjb252LT50aG91c2FuZHNfc2VwKQorCQlpZiAobGNvbnYgJiYgbGNvbnYtPnRob3Vz YW5kc19zZXAgJiYgKmxjb252LT50aG91c2FuZHNfc2VwKQogCQkJTnAtPkxfdGhvdXNhbmRzX3Nl cCA9IGxjb252LT50aG91c2FuZHNfc2VwOwogCQkvKiBNYWtlIHN1cmUgdGhvdXNhbmRzIHNlcGFy YXRvciBkb2Vzbid0IG1hdGNoIGRlY2ltYWwgcG9pbnQgc3ltYm9sLiAqLwogCQllbHNlIGlmIChz dHJjbXAoTnAtPmRlY2ltYWwsICIsIikgIT0gMCkKQEAgLTUwODksNyArNTA4OCw3IEBAIE5VTV9w cmVwYXJlX2xvY2FsZShOVU1Qcm9jICpOcCkKIAkJLyoKIAkJICogQ3VycmVuY3kgc3ltYm9sCiAJ CSAqLwotCQlpZiAobGNvbnYtPmN1cnJlbmN5X3N5bWJvbCAmJiAqbGNvbnYtPmN1cnJlbmN5X3N5 bWJvbCkKKwkJaWYgKGxjb252ICYmIGxjb252LT5jdXJyZW5jeV9zeW1ib2wgJiYgKmxjb252LT5j dXJyZW5jeV9zeW1ib2wpCiAJCQlOcC0+TF9jdXJyZW5jeV9zeW1ib2wgPSBsY29udi0+Y3VycmVu Y3lfc3ltYm9sOwogCQllbHNlCiAJCQlOcC0+TF9jdXJyZW5jeV9zeW1ib2wgPSAiICI7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcGdfbG9jYWxlLmMKaW5kZXggMDQ3YzAyZGJhYi4uMTc4ZjM4NzYzMCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ19sb2NhbGUuYwpAQCAtOTgsNiArOTgsMjMgQEAgY2hhcgkgICAqbG9jYWxl X3RpbWU7CiAKIGludAkJCWljdV92YWxpZGF0aW9uX2xldmVsID0gV0FSTklORzsKIAorI2lmZGVm IEhBVkVfVVNFTE9DQUxFCisvKgorICogQ3VycmVudCBsb2NhbGUgc2V0dGluZ3MKKyAqCisgKiB1 c2Vsb2NhbGUoKSBhbmQgZnJpZW5kcyBkb24ndCBoYXZlIGFuIGVxdWl2YWxlbnQgdG8gc2V0bG9j YWxlKGNhdCwgTlVMTCksIHNvCisgKiBhcyB3ZSBzZXQgbG9jYWxlcyBmb3IgdmFyaW91cyBjYXRl Z29yaWVzLCBzdGFzaCB0aGVtIGZvciByZXRyaWV2YWwgYXMgbmVlZGVkLgorICovCitzdGF0aWMg c3RydWN0IHsKKwljaGFyICpjb2xsYXRlOworCWNoYXIgKmN0eXBlOworCWNoYXIgKm1lc3NhZ2Vz OworCWNoYXIgKm1vbmV0YXJ5OworCWNoYXIgKm51bWVyaWM7CisJY2hhciAqdGltZTsKK30gY3Vy cl9sb2NhbGVzID0geyAwIH07CisjZW5kaWYgLyogSEFWRV9VU0VMT0NBTEUgKi8KKwogLyoKICAq IGxjX3RpbWUgbG9jYWxpemF0aW9uIGNhY2hlLgogICoKQEAgLTIwOCwyOCArMjI1LDE0NSBAQCBs b2NhbGVfaXNfYyhjb25zdCBjaGFyICpsb2NhbGUsIGJvb2wgaWdub3JlX2Nhc2UpCiB9CiAKIAor I2lmZGVmIEhBVkVfVVNFTE9DQUxFCisvKgorICogVHVybnMgbG9jYWxlIGNhdGVnb3JpZXMgaW50 byB0aGVpciBtYXNrIGVxdWl2YWxlbnRzIGZvciB1c2UgaW4gbmV3bG9jYWxlKDMpCisgKgorICog R0NDIGhhcyB0aGUgbWFza3MgZGVmaW5lZCBhcyAoMSA8PCBjYXRlZ29yeSksIGJ1dCB0aGlzIGlz bid0IGd1YXJhbnRlZWQgdG8gYmUKKyAqIHRoZSBzYW1lIGluIG90aGVyIGxpYmNzLgorICovCitz dGF0aWMgaW50CitjYXRlZ29yeV90b19tYXNrKGludCBjYXRlZ29yeSkKK3sKKwlzd2l0Y2ggKGNh dGVnb3J5KSB7CisJY2FzZSBMQ19BTEw6CisJCXJldHVybiBMQ19BTExfTUFTSzsKKwljYXNlIExD X0NPTExBVEU6CisJCXJldHVybiBMQ19DT0xMQVRFX01BU0s7CisJY2FzZSBMQ19DVFlQRToKKwkJ cmV0dXJuIExDX0NUWVBFX01BU0s7CisjaWZkZWYgTENfTUVTU0FHRVMKKwljYXNlIExDX01FU1NB R0VTOgorCQlyZXR1cm4gTENfTUVTU0FHRVNfTUFTSzsKKyNlbmRpZgorCWNhc2UgTENfTU9ORVRB Ulk6CisJCXJldHVybiBMQ19NT05FVEFSWV9NQVNLOworCWNhc2UgTENfTlVNRVJJQzoKKwkJcmV0 dXJuIExDX05VTUVSSUNfTUFTSzsKKwljYXNlIExDX1RJTUU6CisJCXJldHVybiBMQ19USU1FX01B U0s7CisJfQorCisJcGdfdW5yZWFjaGFibGUoKTsKK30KKworCitzdGF0aWMgY2hhciAqCitwZ19n ZXRsb2NhbGUoaW50IGNhdGVnb3J5KQoreworCXN3aXRjaCAoY2F0ZWdvcnkpIHsKKwljYXNlIExD X0NPTExBVEU6CisJCXJldHVybiBjdXJyX2xvY2FsZXMuY29sbGF0ZTsKKwljYXNlIExDX0NUWVBF OgorCQlyZXR1cm4gY3Vycl9sb2NhbGVzLmN0eXBlOworCWNhc2UgTENfTUVTU0FHRVM6CisJCXJl dHVybiBjdXJyX2xvY2FsZXMubWVzc2FnZXM7CisJY2FzZSBMQ19NT05FVEFSWToKKwkJcmV0dXJu IGN1cnJfbG9jYWxlcy5tb25ldGFyeTsKKwljYXNlIExDX05VTUVSSUM6CisJCXJldHVybiBjdXJy X2xvY2FsZXMubnVtZXJpYzsKKwljYXNlIExDX1RJTUU6CisJCXJldHVybiBjdXJyX2xvY2FsZXMu dGltZTsKKwlkZWZhdWx0OgorCQlwZ191bnJlYWNoYWJsZSgpOworCX0KK30KKyNlbmRpZiAvKiBI QVZFX1VTRUxPQ0FMRSAqLworCisKIC8qCi0gKiBwZ19wZXJtX3NldGxvY2FsZQotICoKLSAqIFRo aXMgd3JhcHMgdGhlIGxpYmMgZnVuY3Rpb24gc2V0bG9jYWxlKCksIHdpdGggdHdvIGFkZGl0aW9u cy4gIEZpcnN0LCB3aGVuCi0gKiBjaGFuZ2luZyBMQ19DVFlQRSwgdXBkYXRlIGdldHRleHQncyBl bmNvZGluZyBmb3IgdGhlIGN1cnJlbnQgbWVzc2FnZQotICogZG9tYWluLiAgR05VIGdldHRleHQg YXV0b21hdGljYWxseSB0cmFja3MgTENfQ1RZUEUgb24gbW9zdCBwbGF0Zm9ybXMsIGJ1dAotICog bm90IG9uIFdpbmRvd3MuICBTZWNvbmQsIGlmIHRoZSBvcGVyYXRpb24gaXMgc3VjY2Vzc2Z1bCwg dGhlIGNvcnJlc3BvbmRpbmcKLSAqIExDX1hYWCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQg dG8gbWF0Y2guICBCeSBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudAotICogdmFyaWFibGUsIHdlIGVu c3VyZSB0aGF0IGFueSBzdWJzZXF1ZW50IHVzZSBvZiBzZXRsb2NhbGUoLi4uLCAiIikgd2lsbAot ICogcHJlc2VydmUgdGhlIHNldHRpbmdzIG1hZGUgdGhyb3VnaCB0aGlzIHJvdXRpbmUuICBPZiBj b3Vyc2UsIExDX0FMTCBtdXN0Ci0gKiBhbHNvIGJlIHVuc2V0IHRvIGZ1bGx5IGVuc3VyZSB0aGF0 LCBidXQgdGhhdCBoYXMgdG8gYmUgZG9uZSBlbHNld2hlcmUgYWZ0ZXIKLSAqIGFsbCB0aGUgaW5k aXZpZHVhbCBMQ19YWFggdmFyaWFibGVzIGhhdmUgYmVlbiBzZXQgY29ycmVjdGx5LiAgKFRoYW5r IHlvdQotICogUGVybCBmb3IgbWFraW5nIHRoaXMga2x1Z2UgbmVjZXNzYXJ5LikKKyAqIHBnX3Nl dGxvY2FsZQorICoKKyAqIFRoaXMgd3JhcHMgdGhlIGxpYmMgZnVuY3Rpb25zIHVzZWxvY2FsZSgp IG9yIHNldGxvY2FsZSgpIChkZXBlbmRpbmcgb24gdGhlCisgKiBwbGF0Zm9ybSksIHdpdGggYSBz aW5nbGUgYWRkaXRpb24uICBXaGVuIGNoYW5naW5nIExDX0NUWVBFLCB1cGRhdGUgZ2V0dGV4dCdz CisgKiBlbmNvZGluZyBmb3IgdGhlIGN1cnJlbnQgbWVzc2FnZSBkb21haW4uIEdOVSBnZXR0ZXh0 IGF1dG9tYXRpY2FsbHkgdHJhY2tzCisgKiBMQ19DVFlQRSBvbiBtb3N0IHBsYXRmb3JtcywgYnV0 IG5vdCBvbiBXaW5kb3dzLiAgVGhpcyBmdW5jdGlvbiB3aWxsIGFib3J0IGlmCisgKiBsb2NhbGUg aXMgdGhlIGVtcHR5IHN0cmluZy4gIEEgd29ya2Fyb3VuZCBpcyB0byBwYXNzIHRoZSBvdXRwdXQg b2YKKyAqIHNldGxvY2FsZShjYXRlZ29yeSwgIiIpIHRvIHRoZSBsb2NhbGUgYXJndW1lbnQuCiAg Ki8KIGNoYXIgKgotcGdfcGVybV9zZXRsb2NhbGUoaW50IGNhdGVnb3J5LCBjb25zdCBjaGFyICps b2NhbGUpCitwZ19zZXRsb2NhbGUoaW50IGNhdGVnb3J5LCBjb25zdCBjaGFyICpsb2NhbGUpCiB7 CiAJY2hhcgkgICAqcmVzdWx0OwotCWNvbnN0IGNoYXIgKmVudnZhcjsKKyNpZmRlZiBIQVZFX1VT RUxPQ0FMRQorCWNoYXIJICAqKnNhdmU7CisJaW50CQkJY2F0ZWdvcnlfbWFzazsKKwlsb2NhbGVf dAlwcmV2X2xvY2FsZTsKKwlsb2NhbGVfdAl0ZW1wX2xvY2FsZTsKKwlsb2NhbGVfdAl3b3JrX2xv Y2FsZTsKKworCWlmIChsb2NhbGUgPT0gTlVMTCkKKwkJcmV0dXJuIHBnX2dldGxvY2FsZShjYXRl Z29yeSk7CisKKwlBc3NlcnQobG9jYWxlWzBdICE9ICdcMCcpOworCisJY2F0ZWdvcnlfbWFzayA9 IGNhdGVnb3J5X3RvX21hc2soY2F0ZWdvcnkpOworCisJcHJldl9sb2NhbGUgPSB1c2Vsb2NhbGUo KGxvY2FsZV90KSAwKTsKKwlBc3NlcnQoc2F2ZWRfbG9jYWxlICE9IChsb2NhbGVfdCkgMCk7CisK KwlyZXN1bHQgPSBzdHJkdXAobG9jYWxlKTsKKwl3b3JrX2xvY2FsZSA9IGR1cGxvY2FsZShwcmV2 X2xvY2FsZSk7CisJaWYgKCFyZXN1bHQgfHwgd29ya19sb2NhbGUgPT0gKGxvY2FsZV90KSAwKSB7 CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVNT1JZKSwK KwkJCQkgZXJybXNnKCJvdXQgb2YgbWVtb3J5IikpKTsKKworCQlyZXR1cm4gTlVMTDsKKwl9CisK Kwl0ZW1wX2xvY2FsZSA9IG5ld2xvY2FsZShjYXRlZ29yeV9tYXNrLCBsb2NhbGUsIHdvcmtfbG9j YWxlKTsKKwlpZiAodGVtcF9sb2NhbGUgPT0gKGxvY2FsZV90KSAwKSB7CisJCWZyZWVsb2NhbGUo d29ya19sb2NhbGUpOworCisJCXJldHVybiBOVUxMOwkJCS8qIGZhbGwgb3V0IGltbWVkaWF0ZWx5 IG9uIGZhaWx1cmUgKi8KKwl9CisJd29ya19sb2NhbGUgPSB0ZW1wX2xvY2FsZTsKKworCXVzZWxv Y2FsZSh3b3JrX2xvY2FsZSk7CisJaWYgKHByZXZfbG9jYWxlICE9IExDX0dMT0JBTF9MT0NBTEUp CisJCWZyZWVsb2NhbGUocHJldl9sb2NhbGUpOworCisJLyoKKwkgKiBDb3B5aW5nIHRoZSBsb2Nh bGUgbXVzdCBvY2N1ciBiZWZvcmUgd2UgcG90ZW50aWFsbHkgYmluZCB0aGUgdGV4dCBkb21haW4u CisJICovCisJc3dpdGNoIChjYXRlZ29yeSkgeworCWNhc2UgTENfQ09MTEFURToKKwkJc2F2ZSA9 ICZjdXJyX2xvY2FsZXMuY29sbGF0ZTsKKwkJYnJlYWs7CisJY2FzZSBMQ19DVFlQRToKKwkJc2F2 ZSA9ICZjdXJyX2xvY2FsZXMuY3R5cGU7CisJCWJyZWFrOworCWNhc2UgTENfTUVTU0FHRVM6CisJ CXNhdmUgPSAmY3Vycl9sb2NhbGVzLm1lc3NhZ2VzOworCQlicmVhazsKKwljYXNlIExDX01PTkVU QVJZOgorCQlzYXZlID0gJmN1cnJfbG9jYWxlcy5tb25ldGFyeTsKKwkJYnJlYWs7CisJY2FzZSBM Q19OVU1FUklDOgorCQlzYXZlID0gJmN1cnJfbG9jYWxlcy5udW1lcmljOworCQlicmVhazsKKwlj YXNlIExDX1RJTUU6CisJCXNhdmUgPSAmY3Vycl9sb2NhbGVzLnRpbWU7CisJCWJyZWFrOworCWRl ZmF1bHQ6CisJCXBnX3VucmVhY2hhYmxlKCk7CisJfQorCisJLyogRnJlZSBvbGQgbG9jYWxlIHN0 cmluZywgYW5kIHN0YXNoIHRoZSBuZXcgb25lICovCisJZnJlZSgqc2F2ZSk7CisJKnNhdmUgPSBy ZXN1bHQ7CiAKLSNpZm5kZWYgV0lOMzIKLQlyZXN1bHQgPSBzZXRsb2NhbGUoY2F0ZWdvcnksIGxv Y2FsZSk7CiAjZWxzZQogCiAJLyoKQEAgLTI0OCwxMSArMzgyLDEyIEBAIHBnX3Blcm1fc2V0bG9j YWxlKGludCBjYXRlZ29yeSwgY29uc3QgY2hhciAqbG9jYWxlKQogCWVsc2UKICNlbmRpZgogCQly ZXN1bHQgPSBzZXRsb2NhbGUoY2F0ZWdvcnksIGxvY2FsZSk7Ci0jZW5kaWYJCQkJCQkJLyogV0lO MzIgKi8KIAogCWlmIChyZXN1bHQgPT0gTlVMTCkKIAkJcmV0dXJuIHJlc3VsdDsJCQkvKiBmYWxs IG91dCBpbW1lZGlhdGVseSBvbiBmYWlsdXJlICovCiAKKyNlbmRpZiAvKiBIQVZFX1VTRUxPQ0FM RSAqLworCiAJLyoKIAkgKiBVc2UgdGhlIHJpZ2h0IGVuY29kaW5nIGluIHRyYW5zbGF0ZWQgbWVz c2FnZXMuICBVbmRlciBFTkFCTEVfTkxTLCBsZXQKIAkgKiBwZ19iaW5kX3RleHRkb21haW5fY29k ZXNldCgpIGZpZ3VyZSBpdCBvdXQuICBVbmRlciAhRU5BQkxFX05MUywgbWVzc2FnZQpAQCAtMjYy LDExICszOTcsMTMgQEAgcGdfcGVybV9zZXRsb2NhbGUoaW50IGNhdGVnb3J5LCBjb25zdCBjaGFy ICpsb2NhbGUpCiAJICovCiAJaWYgKGNhdGVnb3J5ID09IExDX0NUWVBFKQogCXsKKyNpZm5kZWYg SEFWRV9VU0VMT0NBTEUKIAkJc3RhdGljIGNoYXIgc2F2ZV9sY19jdHlwZVtMT0NBTEVfTkFNRV9C VUZMRU5dOwogCiAJCS8qIGNvcHkgc2V0bG9jYWxlKCkgcmV0dXJuIHZhbHVlIGJlZm9yZSBjYWxs ZWUgaW52b2tlcyBpdCBhZ2FpbiAqLwogCQlzdHJsY3B5KHNhdmVfbGNfY3R5cGUsIHJlc3VsdCwg c2l6ZW9mKHNhdmVfbGNfY3R5cGUpKTsKIAkJcmVzdWx0ID0gc2F2ZV9sY19jdHlwZTsKKyNlbmRp ZgogCiAjaWZkZWYgRU5BQkxFX05MUwogCQlTZXRNZXNzYWdlRW5jb2RpbmcocGdfYmluZF90ZXh0 ZG9tYWluX2NvZGVzZXQodGV4dGRvbWFpbihOVUxMKSkpOwpAQCAtMjc1LDQyICs0MTIsNiBAQCBw Z19wZXJtX3NldGxvY2FsZShpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmxvY2FsZSkKICNlbmRp ZgogCX0KIAotCXN3aXRjaCAoY2F0ZWdvcnkpCi0JewotCQljYXNlIExDX0NPTExBVEU6Ci0JCQll bnZ2YXIgPSAiTENfQ09MTEFURSI7Ci0JCQlicmVhazsKLQkJY2FzZSBMQ19DVFlQRToKLQkJCWVu dnZhciA9ICJMQ19DVFlQRSI7Ci0JCQlicmVhazsKLSNpZmRlZiBMQ19NRVNTQUdFUwotCQljYXNl IExDX01FU1NBR0VTOgotCQkJZW52dmFyID0gIkxDX01FU1NBR0VTIjsKLSNpZmRlZiBXSU4zMgot CQkJcmVzdWx0ID0gSXNvTG9jYWxlTmFtZShsb2NhbGUpOwotCQkJaWYgKHJlc3VsdCA9PSBOVUxM KQotCQkJCXJlc3VsdCA9IChjaGFyICopIGxvY2FsZTsKLQkJCWVsb2coREVCVUczLCAiSXNvTG9j YWxlTmFtZSgpIGV4ZWN1dGVkOyBsb2NhbGU6IFwiJXNcIiIsIHJlc3VsdCk7Ci0jZW5kaWYJCQkJ CQkJLyogV0lOMzIgKi8KLQkJCWJyZWFrOwotI2VuZGlmCQkJCQkJCS8qIExDX01FU1NBR0VTICov Ci0JCWNhc2UgTENfTU9ORVRBUlk6Ci0JCQllbnZ2YXIgPSAiTENfTU9ORVRBUlkiOwotCQkJYnJl YWs7Ci0JCWNhc2UgTENfTlVNRVJJQzoKLQkJCWVudnZhciA9ICJMQ19OVU1FUklDIjsKLQkJCWJy ZWFrOwotCQljYXNlIExDX1RJTUU6Ci0JCQllbnZ2YXIgPSAiTENfVElNRSI7Ci0JCQlicmVhazsK LQkJZGVmYXVsdDoKLQkJCWVsb2coRkFUQUwsICJ1bnJlY29nbml6ZWQgTEMgY2F0ZWdvcnk6ICVk IiwgY2F0ZWdvcnkpOwotCQkJcmV0dXJuIE5VTEw7CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICov Ci0JfQotCi0JaWYgKHNldGVudihlbnZ2YXIsIHJlc3VsdCwgMSkgIT0gMCkKLQkJcmV0dXJuIE5V TEw7Ci0KIAlyZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMjgsNiArNDI5LDQ3IEBAIHBnX3Blcm1f c2V0bG9jYWxlKGludCBjYXRlZ29yeSwgY29uc3QgY2hhciAqbG9jYWxlKQogYm9vbAogY2hlY2tf bG9jYWxlKGludCBjYXRlZ29yeSwgY29uc3QgY2hhciAqbG9jYWxlLCBjaGFyICoqY2Fub25uYW1l KQogeworI2lmZGVmIEhBVkVfVVNFTE9DQUxFCisJbG9jYWxlX3QJc2F2ZWRfbG9jYWxlOworCWxv Y2FsZV90CXRlbXBfbG9jYWxlOworCWxvY2FsZV90CXdvcmtfbG9jYWxlOworCWludAkJCWNhdGVn b3J5X21hc2s7CisKKwljYXRlZ29yeV9tYXNrID0gY2F0ZWdvcnlfdG9fbWFzayhjYXRlZ29yeSk7 CisKKwlpZiAoY2Fub25uYW1lKQorCQkqY2Fub25uYW1lID0gTlVMTDsJCS8qIGluIGNhc2Ugb2Yg ZmFpbHVyZSAqLworCisJc2F2ZWRfbG9jYWxlID0gdXNlbG9jYWxlKChsb2NhbGVfdCkgMCk7CisJ d29ya19sb2NhbGUgPSBkdXBsb2NhbGUoc2F2ZWRfbG9jYWxlKTsKKwlpZiAod29ya19sb2NhbGUg PT0gKGxvY2FsZV90KSAwKSB7CisJCWlmIChlcnJubyA9PSBFTk9NRU0pCisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkpLAorCQkJCQkgZXJybXNn KCJvdXQgb2YgbWVtb3J5IikpKTsKKworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJdGVtcF9sb2Nh bGUgPSBuZXdsb2NhbGUoY2F0ZWdvcnlfbWFzaywgbG9jYWxlLCB3b3JrX2xvY2FsZSk7CisJaWYg KHRlbXBfbG9jYWxlID09IChsb2NhbGVfdCkgMCkgeworCQlmcmVlbG9jYWxlKHdvcmtfbG9jYWxl KTsKKworCQlyZXR1cm4gZmFsc2U7CisJfQorCXdvcmtfbG9jYWxlID0gdGVtcF9sb2NhbGU7CisK Kwl1c2Vsb2NhbGUod29ya19sb2NhbGUpOworCWlmIChjYW5vbm5hbWUpCisJCSpjYW5vbm5hbWUg PSBwc3RyZHVwKGxvY2FsZSk7IC8qIFRPRE86IFRoaXMgZG9lcyBub3QgaGFuZGxlICIiIGFzIHRo ZSBsb2NhbGUgKi8KKworCXVzZWxvY2FsZShzYXZlZF9sb2NhbGUpOworCWZyZWVsb2NhbGUod29y a19sb2NhbGUpOworCisJcmV0dXJuIHRydWU7CisKKyNlbHNlCisKIAljaGFyCSAgICpzYXZlOwog CWNoYXIJICAgKnJlczsKIApAQCAtMzU0LDYgKzQ5Niw3IEBAIGNoZWNrX2xvY2FsZShpbnQgY2F0 ZWdvcnksIGNvbnN0IGNoYXIgKmxvY2FsZSwgY2hhciAqKmNhbm9ubmFtZSkKIAlwZnJlZShzYXZl KTsKIAogCXJldHVybiAocmVzICE9IE5VTEwpOworI2VuZGlmIC8qIEhBVkVfVVNFTE9DQUxFICov CiB9CiAKIApAQCAtMzY2LDcgKzUwOSw3IEBAIGNoZWNrX2xvY2FsZShpbnQgY2F0ZWdvcnksIGNv bnN0IGNoYXIgKmxvY2FsZSwgY2hhciAqKmNhbm9ubmFtZSkKICAqCiAgKiBOb3RlOiB3ZSBhY2Nl cHQgdmFsdWUgPSAiIiBhcyBzZWxlY3RpbmcgdGhlIHBvc3RtYXN0ZXIncyBlbnZpcm9ubWVudAog ICogdmFsdWUsIHdoYXRldmVyIGl0IHdhcyAoc28gbG9uZyBhcyB0aGUgZW52aXJvbm1lbnQgc2V0 dGluZyBpcyBsZWdhbCkuCi0gKiBUaGlzIHdpbGwgaGF2ZSBiZWVuIGxvY2tlZCBkb3duIGJ5IGFu IGVhcmxpZXIgY2FsbCB0byBwZ19wZXJtX3NldGxvY2FsZS4KKyAqIFRoaXMgd2lsbCBoYXZlIGJl ZW4gbG9ja2VkIGRvd24gYnkgYW4gZWFybGllciBjYWxsIHRvIHBnX3NldGxvY2FsZS4KICAqLwog Ym9vbAogY2hlY2tfbG9jYWxlX21vbmV0YXJ5KGNoYXIgKipuZXd2YWwsIHZvaWQgKipleHRyYSwg R3VjU291cmNlIHNvdXJjZSkKQEAgLTQ0NSw3ICs1ODgsNyBAQCBhc3NpZ25fbG9jYWxlX21lc3Nh Z2VzKGNvbnN0IGNoYXIgKm5ld3ZhbCwgdm9pZCAqZXh0cmEpCiAJICogV2UgaWdub3JlIGZhaWx1 cmUsIGFzIHBlciBjb21tZW50IGFib3ZlLgogCSAqLwogI2lmZGVmIExDX01FU1NBR0VTCi0JKHZv aWQpIHBnX3Blcm1fc2V0bG9jYWxlKExDX01FU1NBR0VTLCBuZXd2YWwpOworCSh2b2lkKSBwZ19z ZXRsb2NhbGUoTENfTUVTU0FHRVMsIG5ld3ZhbCk7CiAjZW5kaWYKIH0KIApAQCAtNTQxLDExICs2 ODQsOCBAQCBQR0xDX2xvY2FsZWNvbnYodm9pZCkKIAlzdGF0aWMgYm9vbCBDdXJyZW50TG9jYWxl Q29udkFsbG9jYXRlZCA9IGZhbHNlOwogCXN0cnVjdCBsY29udiAqZXh0bGNvbnY7CiAJc3RydWN0 IGxjb252IHdvcmtsY29udjsKLQljaGFyCSAgICpzYXZlX2xjX21vbmV0YXJ5OwotCWNoYXIJICAg KnNhdmVfbGNfbnVtZXJpYzsKLSNpZmRlZiBXSU4zMgotCWNoYXIJICAgKnNhdmVfbGNfY3R5cGU7 Ci0jZW5kaWYKKwlsb2NhbGVfdAlzYXZlZF9sb2NhbGU7CisJbG9jYWxlX3QJd29ya19sb2NhbGU7 CiAKIAkvKiBEaWQgd2UgZG8gaXQgYWxyZWFkeT8gKi8KIAlpZiAoQ3VycmVudExvY2FsZUNvbnZW YWxpZCkKQEAgLTU3MiwxNiArNzEyLDE1IEBAIFBHTENfbG9jYWxlY29udih2b2lkKQogCSAqLwog CW1lbXNldCgmd29ya2xjb252LCAwLCBzaXplb2Yod29ya2xjb252KSk7CiAKLQkvKiBTYXZlIHBy ZXZhaWxpbmcgdmFsdWVzIG9mIG1vbmV0YXJ5IGFuZCBudW1lcmljIGxvY2FsZXMgKi8KLQlzYXZl X2xjX21vbmV0YXJ5ID0gc2V0bG9jYWxlKExDX01PTkVUQVJZLCBOVUxMKTsKLQlpZiAoIXNhdmVf bGNfbW9uZXRhcnkpCi0JCWVsb2coRVJST1IsICJzZXRsb2NhbGUoTlVMTCkgZmFpbGVkIik7Ci0J c2F2ZV9sY19tb25ldGFyeSA9IHBzdHJkdXAoc2F2ZV9sY19tb25ldGFyeSk7CisJLyogU2F2ZSBw cmV2YWlsaW5nIGxvY2FsZSAqLworCXNhdmVkX2xvY2FsZSA9IHVzZWxvY2FsZSgobG9jYWxlX3Qp IDApOworCUFzc2VydChzYXZlZF9sb2NhbGUgIT0gKGxvY2FsZV90KSAwKTsKIAotCXNhdmVfbGNf bnVtZXJpYyA9IHNldGxvY2FsZShMQ19OVU1FUklDLCBOVUxMKTsKLQlpZiAoIXNhdmVfbGNfbnVt ZXJpYykKLQkJZWxvZyhFUlJPUiwgInNldGxvY2FsZShOVUxMKSBmYWlsZWQiKTsKLQlzYXZlX2xj X251bWVyaWMgPSBwc3RyZHVwKHNhdmVfbGNfbnVtZXJpYyk7CisJd29ya19sb2NhbGUgPSBkdXBs b2NhbGUoc2F2ZWRfbG9jYWxlKTsKKwlpZiAod29ya19sb2NhbGUgPT0gKGxvY2FsZV90KSAwKQor CQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCisJ CQkJIGVycm1zZygib3V0IG9mIG1lbW9yeSIpKSk7CiAKICNpZmRlZiBXSU4zMgogCkBAIC01OTks MzcgKzczOCwzNyBAQCBQR0xDX2xvY2FsZWNvbnYodm9pZCkKIAkgKiByZXN1bHRzLiAgSGVuY2Us IHdlIG11c3QgdGVtcG9yYXJpbHkgc2V0IHRoYXQgY2F0ZWdvcnkgYXMgd2VsbC4KIAkgKi8KIAot CS8qIFNhdmUgcHJldmFpbGluZyB2YWx1ZSBvZiBjdHlwZSBsb2NhbGUgKi8KLQlzYXZlX2xjX2N0 eXBlID0gc2V0bG9jYWxlKExDX0NUWVBFLCBOVUxMKTsKLQlpZiAoIXNhdmVfbGNfY3R5cGUpCi0J CWVsb2coRVJST1IsICJzZXRsb2NhbGUoTlVMTCkgZmFpbGVkIik7Ci0Jc2F2ZV9sY19jdHlwZSA9 IHBzdHJkdXAoc2F2ZV9sY19jdHlwZSk7Ci0KIAkvKiBIZXJlIGJlZ2lucyB0aGUgY3JpdGljYWwg c2VjdGlvbiB3aGVyZSB3ZSBtdXN0IG5vdCB0aHJvdyBlcnJvciAqLwogCiAJLyogdXNlIG51bWVy aWMgdG8gc2V0IHRoZSBjdHlwZSAqLwotCXNldGxvY2FsZShMQ19DVFlQRSwgbG9jYWxlX251bWVy aWMpOworCXdvcmtfbG9jYWxlID0gbmV3bG9jYWxlKExDX0NUWVBFX01BU0ssIGxvY2FsZV9udW1l cmljLCB3b3JrX2xvY2FsZSk7CisJQXNzZXJ0KHdvcmtfbG9jYWxlICE9IChsb2NhbGVfdCkgMCk7 CiAjZW5kaWYKIAogCS8qIEdldCBmb3JtYXR0aW5nIGluZm9ybWF0aW9uIGZvciBudW1lcmljICov Ci0Jc2V0bG9jYWxlKExDX05VTUVSSUMsIGxvY2FsZV9udW1lcmljKTsKKwl3b3JrX2xvY2FsZSA9 IG5ld2xvY2FsZShMQ19OVU1FUklDX01BU0ssIGxvY2FsZV9udW1lcmljLCB3b3JrX2xvY2FsZSk7 CisJQXNzZXJ0KHdvcmtfbG9jYWxlICE9IChsb2NhbGVfdCkgMCk7CisJdXNlbG9jYWxlKHdvcmtf bG9jYWxlKTsKIAlleHRsY29udiA9IGxvY2FsZWNvbnYoKTsKIAotCS8qIE11c3QgY29weSBkYXRh IG5vdyBpbiBjYXNlIHNldGxvY2FsZSgpIG92ZXJ3cml0ZXMgaXQgKi8KKwkvKiBNdXN0IGNvcHkg ZGF0YSBub3cgaW4gY2FzZSB1cGRhdGluZyB0aGUgbG9jYWxlIG92ZXJ3cml0ZXMgaXQgKi8KIAl3 b3JrbGNvbnYuZGVjaW1hbF9wb2ludCA9IHN0cmR1cChleHRsY29udi0+ZGVjaW1hbF9wb2ludCk7 CiAJd29ya2xjb252LnRob3VzYW5kc19zZXAgPSBzdHJkdXAoZXh0bGNvbnYtPnRob3VzYW5kc19z ZXApOwogCXdvcmtsY29udi5ncm91cGluZyA9IHN0cmR1cChleHRsY29udi0+Z3JvdXBpbmcpOwog CiAjaWZkZWYgV0lOMzIKIAkvKiB1c2UgbW9uZXRhcnkgdG8gc2V0IHRoZSBjdHlwZSAqLwotCXNl dGxvY2FsZShMQ19DVFlQRSwgbG9jYWxlX21vbmV0YXJ5KTsKKwl3b3JrX2xvY2FsZSA9IG5ld2xv Y2FsZShMQ19DVFlQRV9NQVNLLCBsb2NhbGVfbW9uZXRhcnksIHdvcmtfbG9jYWxlKTsKKwlBc3Nl cnQod29ya19sb2NhbGUgIT0gKGxvY2FsZV90KSAwKTsKICNlbmRpZgogCiAJLyogR2V0IGZvcm1h dHRpbmcgaW5mb3JtYXRpb24gZm9yIG1vbmV0YXJ5ICovCi0Jc2V0bG9jYWxlKExDX01PTkVUQVJZ LCBsb2NhbGVfbW9uZXRhcnkpOworCXdvcmtfbG9jYWxlID0gbmV3bG9jYWxlKExDX01PTkVUQVJZ X01BU0ssIGxvY2FsZV9tb25ldGFyeSwgd29ya19sb2NhbGUpOworCUFzc2VydCh3b3JrX2xvY2Fs ZSAhPSAobG9jYWxlX3QpIDApOworCXVzZWxvY2FsZSh3b3JrX2xvY2FsZSk7CiAJZXh0bGNvbnYg PSBsb2NhbGVjb252KCk7CiAKLQkvKiBNdXN0IGNvcHkgZGF0YSBub3cgaW4gY2FzZSBzZXRsb2Nh bGUoKSBvdmVyd3JpdGVzIGl0ICovCisJLyogTXVzdCBjb3B5IGRhdGEgbm93IGluIGNhc2UgdXBk YXRpbmcgdGhlIGxvY2FsZSBvdmVyd3JpdGVzIGl0ICovCiAJd29ya2xjb252LmludF9jdXJyX3N5 bWJvbCA9IHN0cmR1cChleHRsY29udi0+aW50X2N1cnJfc3ltYm9sKTsKIAl3b3JrbGNvbnYuY3Vy cmVuY3lfc3ltYm9sID0gc3RyZHVwKGV4dGxjb252LT5jdXJyZW5jeV9zeW1ib2wpOwogCXdvcmts Y29udi5tb25fZGVjaW1hbF9wb2ludCA9IHN0cmR1cChleHRsY29udi0+bW9uX2RlY2ltYWxfcG9p bnQpOwpAQCAtNjQ3LDIyICs3ODYsOSBAQCBQR0xDX2xvY2FsZWNvbnYodm9pZCkKIAl3b3JrbGNv bnYucF9zaWduX3Bvc24gPSBleHRsY29udi0+cF9zaWduX3Bvc247CiAJd29ya2xjb252Lm5fc2ln bl9wb3NuID0gZXh0bGNvbnYtPm5fc2lnbl9wb3NuOwogCi0JLyoKLQkgKiBSZXN0b3JlIHRoZSBw cmV2YWlsaW5nIGxvY2FsZSBzZXR0aW5nczsgZmFpbHVyZSB0byBkbyBzbyBpcyBmYXRhbC4KLQkg KiBQb3NzaWJseSB3ZSBjb3VsZCBsaW1wIGFsb25nIHdpdGggbm9uZGVmYXVsdCBMQ19NT05FVEFS WSBvciBMQ19OVU1FUklDLAotCSAqIGJ1dCBwcm9jZWVkaW5nIHdpdGggdGhlIHdyb25nIHZhbHVl IG9mIExDX0NUWVBFIHdvdWxkIGNlcnRhaW5seSBiZSBiYWQKLQkgKiBuZXdzOyBhbmQgY29uc2lk ZXJpbmcgdGhhdCB0aGUgcHJldmFpbGluZyBMQ19NT05FVEFSWSBhbmQgTENfTlVNRVJJQwotCSAq IGFyZSBhbG1vc3QgY2VydGFpbmx5ICJDIiwgdGhlcmUncyByZWFsbHkgbm8gcmVhc29uIHRoYXQg cmVzdG9yaW5nIHRob3NlCi0JICogc2hvdWxkIGZhaWwuCi0JICovCi0jaWZkZWYgV0lOMzIKLQlp ZiAoIXNldGxvY2FsZShMQ19DVFlQRSwgc2F2ZV9sY19jdHlwZSkpCi0JCWVsb2coRkFUQUwsICJm YWlsZWQgdG8gcmVzdG9yZSBMQ19DVFlQRSB0byBcIiVzXCIiLCBzYXZlX2xjX2N0eXBlKTsKLSNl bmRpZgotCWlmICghc2V0bG9jYWxlKExDX01PTkVUQVJZLCBzYXZlX2xjX21vbmV0YXJ5KSkKLQkJ ZWxvZyhGQVRBTCwgImZhaWxlZCB0byByZXN0b3JlIExDX01PTkVUQVJZIHRvIFwiJXNcIiIsIHNh dmVfbGNfbW9uZXRhcnkpOwotCWlmICghc2V0bG9jYWxlKExDX05VTUVSSUMsIHNhdmVfbGNfbnVt ZXJpYykpCi0JCWVsb2coRkFUQUwsICJmYWlsZWQgdG8gcmVzdG9yZSBMQ19OVU1FUklDIHRvIFwi JXNcIiIsIHNhdmVfbGNfbnVtZXJpYyk7CisJLyogUmVzdG9yZSB0aGUgcHJldmFpbGluZyBsb2Nh bGUgc2V0dGluZ3M7IGZhaWx1cmUgdG8gZG8gc28gaXMgZmF0YWwuICovCisJdXNlbG9jYWxlKHNh dmVkX2xvY2FsZSk7CisJZnJlZWxvY2FsZSh3b3JrX2xvY2FsZSk7CiAKIAkvKgogCSAqIEF0IHRo aXMgcG9pbnQgd2UndmUgZG9uZSBvdXIgYmVzdCB0byBjbGVhbiB1cCwgYW5kIGNhbiBjYWxsIGZ1 bmN0aW9ucwpAQCAtNjczLDEzICs3OTksNiBAQCBQR0xDX2xvY2FsZWNvbnYodm9pZCkKIAl7CiAJ CWludAkJCWVuY29kaW5nOwogCi0JCS8qIFJlbGVhc2UgdGhlIHBzdHJkdXAnZCBsb2NhbGUgbmFt ZXMgKi8KLQkJcGZyZWUoc2F2ZV9sY19tb25ldGFyeSk7Ci0JCXBmcmVlKHNhdmVfbGNfbnVtZXJp Yyk7Ci0jaWZkZWYgV0lOMzIKLQkJcGZyZWUoc2F2ZV9sY19jdHlwZSk7Ci0jZW5kaWYKLQogCQkv KiBJZiBhbnkgb2YgdGhlIHByZWNlZGluZyBzdHJkdXAgY2FsbHMgZmFpbGVkLCBjb21wbGFpbiBu b3cuICovCiAJCWlmICghc3RydWN0X2xjb252X2lzX3ZhbGlkKCZ3b3JrbGNvbnYpKQogCQkJZXJl cG9ydChFUlJPUiwKQEAgLTgyNiwxMCArOTQ1LDggQEAgY2FjaGVfbG9jYWxlX3RpbWUodm9pZCkK IAlib29sCQlzdHJmdGltZWZhaWwgPSBmYWxzZTsKIAlpbnQJCQllbmNvZGluZzsKIAlpbnQJCQlp OwotCWNoYXIJICAgKnNhdmVfbGNfdGltZTsKLSNpZmRlZiBXSU4zMgotCWNoYXIJICAgKnNhdmVf bGNfY3R5cGU7Ci0jZW5kaWYKKwlsb2NhbGVfdAlzYXZlZF9sb2NhbGU7CisJbG9jYWxlX3QJd29y a19sb2NhbGU7CiAKIAkvKiBkaWQgd2UgZG8gdGhpcyBhbHJlYWR5PyAqLwogCWlmIChDdXJyZW50 TENUaW1lVmFsaWQpCkBAIC04NDQsMTEgKzk2MSwxNSBAQCBjYWNoZV9sb2NhbGVfdGltZSh2b2lk KQogCSAqIHJlc3VsdHMgYWZ0ZXJ3YXJkcy4KIAkgKi8KIAotCS8qIFNhdmUgcHJldmFpbGluZyB2 YWx1ZSBvZiB0aW1lIGxvY2FsZSAqLwotCXNhdmVfbGNfdGltZSA9IHNldGxvY2FsZShMQ19USU1F LCBOVUxMKTsKLQlpZiAoIXNhdmVfbGNfdGltZSkKLQkJZWxvZyhFUlJPUiwgInNldGxvY2FsZShO VUxMKSBmYWlsZWQiKTsKLQlzYXZlX2xjX3RpbWUgPSBwc3RyZHVwKHNhdmVfbGNfdGltZSk7CisJ LyogU2F2ZSBwcmV2YWlsaW5nIGxvY2FsZSAqLworCXNhdmVkX2xvY2FsZSA9IHVzZWxvY2FsZSgo bG9jYWxlX3QpIDApOworCUFzc2VydChzYXZlZF9sb2NhbGUgIT0gKGxvY2FsZV90KSAwKTsKKwor CXdvcmtfbG9jYWxlID0gZHVwbG9jYWxlKHNhdmVkX2xvY2FsZSk7CisJaWYgKHdvcmtfbG9jYWxl ID09IChsb2NhbGVfdCkgMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X09VVF9PRl9NRU1PUlkpLAorCQkJCSBlcnJtc2coIm91dCBvZiBtZW1vcnkiKSkpOwogCiAjaWZk ZWYgV0lOMzIKIApAQCAtODU5LDE3ICs5ODAsMTQgQEAgY2FjaGVfbG9jYWxlX3RpbWUodm9pZCkK IAkgKiB0aGUgZW5jb2Rpbmcgd2UnbGwgZ2V0IGJhY2sgZnJvbSBzdHJmdGltZV93aW4zMigpLgog CSAqLwogCi0JLyogU2F2ZSBwcmV2YWlsaW5nIHZhbHVlIG9mIGN0eXBlIGxvY2FsZSAqLwotCXNh dmVfbGNfY3R5cGUgPSBzZXRsb2NhbGUoTENfQ1RZUEUsIE5VTEwpOwotCWlmICghc2F2ZV9sY19j dHlwZSkKLQkJZWxvZyhFUlJPUiwgInNldGxvY2FsZShOVUxMKSBmYWlsZWQiKTsKLQlzYXZlX2xj X2N0eXBlID0gcHN0cmR1cChzYXZlX2xjX2N0eXBlKTsKLQogCS8qIHVzZSBsY190aW1lIHRvIHNl dCB0aGUgY3R5cGUgKi8KLQlzZXRsb2NhbGUoTENfQ1RZUEUsIGxvY2FsZV90aW1lKTsKKwl3b3Jr X2xvY2FsZSA9IG5ld2xvY2FsZShMQ19DVFlQRV9NQVNLLCBsb2NhbGVfdGltZSwgd29ya19sb2Nh bGUpOworCUFzc2VydCh3b3JrX2xvY2FsZSAhPSAobG9jYWxlX3QpIDApOwogI2VuZGlmCiAKLQlz ZXRsb2NhbGUoTENfVElNRSwgbG9jYWxlX3RpbWUpOworCXdvcmtfbG9jYWxlID0gbmV3bG9jYWxl KExDX1RJTUVfTUFTSywgbG9jYWxlX3RpbWUsIHdvcmtfbG9jYWxlKTsKKwlBc3NlcnQod29ya19s b2NhbGUgIT0gKGxvY2FsZV90KSAwKTsKKwl1c2Vsb2NhbGUod29ya19sb2NhbGUpOwogCiAJLyog V2UgdXNlIHRpbWVzIGNsb3NlIHRvIGN1cnJlbnQgdGltZSBhcyBkYXRhIGZvciBzdHJmdGltZSgp LiAqLwogCXRpbWVub3cgPSB0aW1lKE5VTEwpOwpAQCAtOTE3LDEyICsxMDM1LDggQEAgY2FjaGVf bG9jYWxlX3RpbWUodm9pZCkKIAkgKiBSZXN0b3JlIHRoZSBwcmV2YWlsaW5nIGxvY2FsZSBzZXR0 aW5nczsgYXMgaW4gUEdMQ19sb2NhbGVjb252KCksCiAJICogZmFpbHVyZSB0byBkbyBzbyBpcyBm YXRhbC4KIAkgKi8KLSNpZmRlZiBXSU4zMgotCWlmICghc2V0bG9jYWxlKExDX0NUWVBFLCBzYXZl X2xjX2N0eXBlKSkKLQkJZWxvZyhGQVRBTCwgImZhaWxlZCB0byByZXN0b3JlIExDX0NUWVBFIHRv IFwiJXNcIiIsIHNhdmVfbGNfY3R5cGUpOwotI2VuZGlmCi0JaWYgKCFzZXRsb2NhbGUoTENfVElN RSwgc2F2ZV9sY190aW1lKSkKLQkJZWxvZyhGQVRBTCwgImZhaWxlZCB0byByZXN0b3JlIExDX1RJ TUUgdG8gXCIlc1wiIiwgc2F2ZV9sY190aW1lKTsKKwl1c2Vsb2NhbGUoc2F2ZWRfbG9jYWxlKTsK KwlmcmVlbG9jYWxlKHdvcmtfbG9jYWxlKTsKIAogCS8qCiAJICogQXQgdGhpcyBwb2ludCB3ZSd2 ZSBkb25lIG91ciBiZXN0IHRvIGNsZWFuIHVwLCBhbmQgY2FuIHRocm93IGVycm9ycywgb3IKQEAg LTkzMSwxMiArMTA0NSw2IEBAIGNhY2hlX2xvY2FsZV90aW1lKHZvaWQpCiAJaWYgKHN0cmZ0aW1l ZmFpbCkKIAkJZWxvZyhFUlJPUiwgInN0cmZ0aW1lKCkgZmFpbGVkOiAlbSIpOwogCi0JLyogUmVs ZWFzZSB0aGUgcHN0cmR1cCdkIGxvY2FsZSBuYW1lcyAqLwotCXBmcmVlKHNhdmVfbGNfdGltZSk7 Ci0jaWZkZWYgV0lOMzIKLQlwZnJlZShzYXZlX2xjX2N0eXBlKTsKLSNlbmRpZgotCiAjaWZuZGVm IFdJTjMyCiAKIAkvKgpAQCAtMTMzMSwxOCArMTQzOSwxNCBAQCBsY19jb2xsYXRlX2lzX2MoT2lk IGNvbGxhdGlvbikKIAlpZiAoY29sbGF0aW9uID09IERFRkFVTFRfQ09MTEFUSU9OX09JRCkKIAl7 CiAJCXN0YXRpYyBpbnQJcmVzdWx0ID0gLTE7Ci0JCWNoYXIJICAgKmxvY2FsZXB0cjsKIAogCQlp ZiAoZGVmYXVsdF9sb2NhbGUucHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKIAkJCXJldHVy biBmYWxzZTsKIAogCQlpZiAocmVzdWx0ID49IDApCiAJCQlyZXR1cm4gKGJvb2wpIHJlc3VsdDsK LQkJbG9jYWxlcHRyID0gc2V0bG9jYWxlKExDX0NPTExBVEUsIE5VTEwpOwotCQlpZiAoIWxvY2Fs ZXB0cikKLQkJCWVsb2coRVJST1IsICJpbnZhbGlkIExDX0NPTExBVEUgc2V0dGluZyIpOwogCi0J CXJlc3VsdCA9IGxvY2FsZV9pc19jKGxvY2FsZXB0ciwgZmFsc2UpOworCQlyZXN1bHQgPSBsb2Nh bGVfaXNfYyhjdXJyX2xvY2FsZXMuY29sbGF0ZSwgZmFsc2UpOwogCiAJCXJldHVybiAoYm9vbCkg cmVzdWx0OwogCX0KQEAgLTEzNzUsMjMgKzE0NzksMTkgQEAgbGNfY3R5cGVfaXNfYyhPaWQgY29s bGF0aW9uKQogCiAJLyoKIAkgKiBJZiB3ZSdyZSBhc2tlZCBhYm91dCB0aGUgZGVmYXVsdCBjb2xs YXRpb24sIHdlIGhhdmUgdG8gaW5xdWlyZSBvZiB0aGUgQwotCSAqIGxpYnJhcnkuICBDYWNoZSB0 aGUgcmVzdWx0IHNvIHdlIG9ubHkgaGF2ZSB0byBjb21wdXRlIGl0IG9uY2UuCisJICogbGlicmFy eS4KIAkgKi8KIAlpZiAoY29sbGF0aW9uID09IERFRkFVTFRfQ09MTEFUSU9OX09JRCkKIAl7CiAJ CXN0YXRpYyBpbnQJcmVzdWx0ID0gLTE7Ci0JCWNoYXIJICAgKmxvY2FsZXB0cjsKIAogCQlpZiAo ZGVmYXVsdF9sb2NhbGUucHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKIAkJCXJldHVybiBm YWxzZTsKIAogCQlpZiAocmVzdWx0ID49IDApCiAJCQlyZXR1cm4gKGJvb2wpIHJlc3VsdDsKLQkJ bG9jYWxlcHRyID0gc2V0bG9jYWxlKExDX0NUWVBFLCBOVUxMKTsKLQkJaWYgKCFsb2NhbGVwdHIp Ci0JCQllbG9nKEVSUk9SLCAiaW52YWxpZCBMQ19DVFlQRSBzZXR0aW5nIik7CiAKLQkJcmVzdWx0 ID0gbG9jYWxlX2lzX2MobG9jYWxlcHRyLCBmYWxzZSk7CisJCXJlc3VsdCA9IGxvY2FsZV9pc19j KGN1cnJfbG9jYWxlcy5jdHlwZSwgZmFsc2UpOwogCiAJCXJldHVybiAoYm9vbCkgcmVzdWx0Owog CX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwppbmRleCBhOTJhMGM0MzhmLi4wNzQxZjU2NjZi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCkBAIC00MDUsMTQgKzQwNSwxNCBAQCBDaGVj a015RGF0YWJhc2UoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBhbV9zdXBlcnVzZXIsIGJvb2wgb3Zl cnJpZGVfYWxsb3dfY29ubmVjdAogCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChEQVRB QkFTRU9JRCwgdHVwLCBBbnVtX3BnX2RhdGFiYXNlX2RhdGN0eXBlKTsKIAljdHlwZSA9IFRleHRE YXR1bUdldENTdHJpbmcoZGF0dW0pOwogCi0JaWYgKHBnX3Blcm1fc2V0bG9jYWxlKExDX0NPTExB VEUsIGNvbGxhdGUpID09IE5VTEwpCisJaWYgKHBnX3NldGxvY2FsZShMQ19DT0xMQVRFLCBjb2xs YXRlKSA9PSBOVUxMKQogCQllcmVwb3J0KEZBVEFMLAogCQkJCShlcnJtc2coImRhdGFiYXNlIGxv Y2FsZSBpcyBpbmNvbXBhdGlibGUgd2l0aCBvcGVyYXRpbmcgc3lzdGVtIiksCiAJCQkJIGVycmRl dGFpbCgiVGhlIGRhdGFiYXNlIHdhcyBpbml0aWFsaXplZCB3aXRoIExDX0NPTExBVEUgXCIlc1wi LCAiCiAJCQkJCQkgICAiIHdoaWNoIGlzIG5vdCByZWNvZ25pemVkIGJ5IHNldGxvY2FsZSgpLiIs IGNvbGxhdGUpLAogCQkJCSBlcnJoaW50KCJSZWNyZWF0ZSB0aGUgZGF0YWJhc2Ugd2l0aCBhbm90 aGVyIGxvY2FsZSBvciBpbnN0YWxsIHRoZSBtaXNzaW5nIGxvY2FsZS4iKSkpOwogCi0JaWYgKHBn X3Blcm1fc2V0bG9jYWxlKExDX0NUWVBFLCBjdHlwZSkgPT0gTlVMTCkKKwlpZiAocGdfc2V0bG9j YWxlKExDX0NUWVBFLCBjdHlwZSkgPT0gTlVMTCkKIAkJZXJlcG9ydChGQVRBTCwKIAkJCQkoZXJy bXNnKCJkYXRhYmFzZSBsb2NhbGUgaXMgaW5jb21wYXRpYmxlIHdpdGggb3BlcmF0aW5nIHN5c3Rl bSIpLAogCQkJCSBlcnJkZXRhaWwoIlRoZSBkYXRhYmFzZSB3YXMgaW5pdGlhbGl6ZWQgd2l0aCBM Q19DVFlQRSBcIiVzXCIsICIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21iL21idXRp bHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21iL21idXRpbHMuYwppbmRleCA5OTcxNTY1MTVjLi44 ZGM3ZGE0N2JkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tYi9tYnV0aWxzLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWIvbWJ1dGlscy5jCkBAIC0xMjM4LDcgKzEyMzgsNyBAQCBw Z19iaW5kX3RleHRkb21haW5fY29kZXNldChjb25zdCBjaGFyICpkb21haW5uYW1lKQogCWludAkJ CW5ld19tc2dlbmM7CiAKICNpZm5kZWYgV0lOMzIKLQlpZiAobG9jYWxlX2lzX2MobG9jYWxlX2N0 eXBlLCB0cnVlKSkKKwlpZiAobG9jYWxlX2lzX2MocGdfc2V0bG9jYWxlKExDX0NUWVBFLCBOVUxM KSwgdHJ1ZSkpCiAjZW5kaWYKIAkJaWYgKGVuY29kaW5nICE9IFBHX1NRTF9BU0NJSSAmJgogCQkJ cmF3X3BnX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KGRvbWFpbm5hbWUsIGVuY29kaW5nKSkKZGlm ZiAtLWdpdCBhL3NyYy9jb21tb24vZXhlYy5jIGIvc3JjL2NvbW1vbi9leGVjLmMKaW5kZXggZjIw OWI5MzRkZi4uZjdhOTY0M2JlNCAxMDA2NDQKLS0tIGEvc3JjL2NvbW1vbi9leGVjLmMKKysrIGIv c3JjL2NvbW1vbi9leGVjLmMKQEAgLTQzOCwyMiArNDM4LDYgQEAgc2V0X3BnbG9jYWxlX3Bnc2Vy dmljZShjb25zdCBjaGFyICphcmd2MCwgY29uc3QgY2hhciAqYXBwKQogCWNoYXIJCXBhdGhbTUFY UEdQQVRIXTsKIAljaGFyCQlteV9leGVjX3BhdGhbTUFYUEdQQVRIXTsKIAotCS8qIGRvbid0IHNl dCBMQ19BTEwgaW4gdGhlIGJhY2tlbmQgKi8KLQlpZiAoc3RyY21wKGFwcCwgUEdfVEVYVERPTUFJ TigicG9zdGdyZXMiKSkgIT0gMCkKLQl7Ci0JCXNldGxvY2FsZShMQ19BTEwsICIiKTsKLQotCQkv KgotCQkgKiBPbmUgY291bGQgbWFrZSBhIGNhc2UgZm9yIHJlcHJvZHVjaW5nIGhlcmUgUG9zdG1h c3Rlck1haW4oKSdzIHRlc3QKLQkJICogZm9yIHdoZXRoZXIgdGhlIHByb2Nlc3MgaXMgbXVsdGl0 aHJlYWRlZC4gIFVubGlrZSB0aGUgcG9zdG1hc3RlciwKLQkJICogbm8gZnJvbnRlbmQgcHJvZ3Jh bSBjYWxscyBzaWdwcm9jbWFzaygpIG9yIG90aGVyd2lzZSBwcm92aWRlcyBmb3IKLQkJICogbXV0 dWFsIGV4Y2x1c2lvbiBiZXR3ZWVuIHNpZ25hbCBoYW5kbGVycy4gIFdoaWxlIGZyb250ZW5kcyB1 c2luZwotCQkgKiBmb3JrKCksIGlmIG11bHRpdGhyZWFkZWQsIGFyZSBmb3JtYWxseSBleHBvc2Vk IHRvIHVuZGVmaW5lZAotCQkgKiBiZWhhdmlvciwgd2UgaGF2ZSBub3Qgd2l0bmVzc2VkIGEgY29u Y3JldGUgYnVnLiAgVGhlcmVmb3JlLAotCQkgKiBjb21wbGFpbmluZyBhYm91dCBtdWx0aXRocmVh ZGluZyBoZXJlIG1heSBiZSBtZXJlIHBlZGFudHJ5LgotCQkgKi8KLQl9Ci0KIAlpZiAoZmluZF9t eV9leGVjKGFyZ3YwLCBteV9leGVjX3BhdGgpIDwgMCkKIAkJcmV0dXJuOwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BnX2xv Y2FsZS5oCmluZGV4IGUwOGQ5NmUwOTkuLjU4NWNkZDM5MzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL3BnX2xvY2FsZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BnX2xvY2FsZS5o CkBAIC01Miw3ICs1Miw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBjaGFyICpsb2NhbGl6ZWRfZnVs bF9tb250aHNbXTsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGRhdGFiYXNlX2N0eXBlX2lzX2M7 CiAKIGV4dGVybiBib29sIGNoZWNrX2xvY2FsZShpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmxv Y2FsZSwgY2hhciAqKmNhbm9ubmFtZSk7Ci1leHRlcm4gY2hhciAqcGdfcGVybV9zZXRsb2NhbGUo aW50IGNhdGVnb3J5LCBjb25zdCBjaGFyICpsb2NhbGUpOworZXh0ZXJuIGNoYXIgKnBnX3NldGxv Y2FsZShpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmxvY2FsZSk7CiAKIGV4dGVybiBib29sIGxv Y2FsZV9pc19jKGNvbnN0IGNoYXIgKmxvY2FsZSwgYm9vbCBpZ25vcmVfY2FzZSk7CiBleHRlcm4g Ym9vbCBsY19jb2xsYXRlX2lzX2MoT2lkIGNvbGxhdGlvbik7Ci0tIApUcmlzdGFuIFBhcnRpbgpO ZW9uIChodHRwczovL25lb24udGVjaCkKCg== --0ddffbd61bedfbb4a84fe2aa54c4562bbcc676e581a5cdf66bf6ee17b444--