Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w45Rg-001qyo-2F for pgsql-hackers@arkaria.postgresql.org; Sat, 21 Mar 2026 23:09:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w45Rf-00Bw60-0k for pgsql-hackers@arkaria.postgresql.org; Sat, 21 Mar 2026 23:09:27 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w45Re-00Bw5s-1V for pgsql-hackers@lists.postgresql.org; Sat, 21 Mar 2026 23:09:27 +0000 Received: from mail-lf1-x12a.google.com ([2a00:1450:4864:20::12a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w45Rb-00000000PlK-0XOf for pgsql-hackers@lists.postgresql.org; Sat, 21 Mar 2026 23:09:25 +0000 Received: by mail-lf1-x12a.google.com with SMTP id 2adb3069b0e04-5a27eb8311bso1840752e87.1 for ; Sat, 21 Mar 2026 16:09:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774134558; cv=none; d=google.com; s=arc-20240605; b=KAOtMOSm+VpmM9fOgISgdfQi6gmqAugQEFhDGW/edv6wP1Jav6iUdvqQsA5y3WXMNR +FM0QGcj6wE0xn2CassMmS2n9inzLYpFiC+rx3LEiOn4noerwomqLN0AEGJm562rD+2c kENJ8/KucsHBz54KYHQbS7vZgQhYCbI/Q31Ld8qV8hp6PU9zrxTsHV6khbxiDjePyoCc mvABDux034R0sR14l6g1GRY2hx71O31h+KpJb4KNAxzPlclD6qUPXYHBiz9RZpRFwxwK aLUOmlKYTGtBopAQTguFjAhXejWgu6QqZuNtlt7kHCZzC8xI6qSMjyVV3/GWYjzzGMXk dHcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=n50RxEz2CaAP7r4f0hMppr7bzy/pyuAiapr9mSOfoS0=; fh=RdC4mjXphoMxPaSBJXAJbi4V7NJonVLq3AILpRtFYsc=; b=Y7/Y2ihoxIDYYmgeK2TVbvLKb0rU5C9LkFzjl+wFCsqP3F7ABQUDJGN422MErGBFeH B5aSdbXv4T5+C3j82/Qu+orL4COMCDHudivR4ll+rWTfcEu1PA1m120MqniU1pN0fugP /iDt+IW48HXCQqI/7yfGy8ICc0LBw8imW9oU8347gAiOhy7WUCY+VDgIs6kBFT7tPh3F WCTjsO0J+xAHlvQO6TPA8/AUq0MGiFsddthcekcTd150E3tWZrNXNwo1rK2/vX6Qbc9d 7iN5ASOJNiOl4/B1G/jGO0G+qePmb180KuKluoOnBG/GdyOsUL5xthNknnrb87SV+u0C s/Bw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774134558; x=1774739358; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=n50RxEz2CaAP7r4f0hMppr7bzy/pyuAiapr9mSOfoS0=; b=jyEhPY0gKWqO1i7NkefrGBBgLEmeTpYBif/aRi7CNW0+IoidfYbqQIridAQ7zwfeKa irUokjRA8+ELJ45YFOE/gwT443hDtH8/MBXFFokRa3sE+EU+TyH/x9T/+LSl7ZmGT58n AjLjH0ntC41jhCmQl2rAQ0wZKf5RsNnlJwMheRRbztQTWDLFa0ShKTpshfl47vvRK2wm EDon+foIiNfEWAOvEH0dBGRsTdXQVw+cO17Rh9XIh//P4b4E7hB9jgRRIZaRY/lIWpAM dKJLP8gVtmxIrHs6OWO2AzezmLAHf6sVQ96IEm/JuZ62eUNme9wcJxkXKMgsPjChScio DxOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774134558; x=1774739358; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=n50RxEz2CaAP7r4f0hMppr7bzy/pyuAiapr9mSOfoS0=; b=UNTcjKb5jKh9s2JQcUoJpQz/2O56m2ikH6WpITHsLYi9ElN2wpfw6wUI3kE9omo7Sw Qhyo5rBkuMYbMihDtd9j3XMxBWcCtmsiBloApO1W//ThL0ykD5opDu6ZeF4+liAbGHa4 HXuMWF40ZfT2QlV9Q5VOpntM5wS+gPVq7MgJStLTAtp4WqiJfXnCAlEi3ybzd+M7Z2/S wVTdJv4sVJhI00UO6xvJy7yHdG9ue4e+vxCixQ7pkvnGrfNNDINR80oJnIJcM1Ccc0kQ zV7gOcgsaMxFmRZmZP+kS5CDOwojSDR9EeelBKaR6EXsb7XKppn68BDzCjSL7RgVCett +hQA== X-Forwarded-Encrypted: i=1; AJvYcCVElLeHlGvJG/oHbwLRxaPkHbYKqUeruqT7dpl+6GySku52Hi6XnsVRTazX97bVMjo1ZQM+IhQEbseSF7UW@lists.postgresql.org X-Gm-Message-State: AOJu0YwOjgzVyrfLi8y+N/W8EmM6v+q6fFDHb2iwsltrBGGenU1JXBAR OHX80A+YJafR3PrEWQyhfe9NDhybHcKgtXyUdazCvYyuUgPu0u+jk5rBX30lyhUa9Ew75OGeB3B 0E27SVvXZ5zgzog68PJBUiFqwDFnNyPw= X-Gm-Gg: ATEYQzxU5D8eaJTXt3KiY2OeLXzTsuS7b0tAf2MgHWclu7d4/mYP/t0Kj+Ml+RnJSfq 4vNZoujWEi0XH0MVaEaj0xR03XoITCZyZN70m9SNd4qPyidzP/lnklKCD8g30/Tp/Ze6m+BSSGP BB0OoyFVhVolQywCBM+UeaNmmIFhk7GPSZtaotXW1VBs+AHqTzCCqZv9oaAyZaCVd8Bx34JgGhk QKiAS64DEU65zZnJngz/T1cfEXymnj3Zx7W+BZ9aM4Myq+xPPVGlP/L316qb6cZxzXjyV4VgTh1 E5a3 X-Received: by 2002:a05:6512:3b23:b0:5a0:f22a:9ae1 with SMTP id 2adb3069b0e04-5a285b6169bmr2935274e87.20.1774134557358; Sat, 21 Mar 2026 16:09:17 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Gyan Sreejith Date: Sat, 21 Mar 2026 19:09:05 -0400 X-Gm-Features: AaiRm53TbplHrhzJg5RLETrViVcBPGogUdGVI2Pr82gDGeLR3LRQwplZfXd1TJo Message-ID: Subject: Re: [Proposal] Adding Log File Capability to pg_createsubscriber To: Amit Kapila Cc: =?UTF-8?B?S3Vyb2RhLCBIYXlhdG8v6buS55SwIOmavOS6ug==?= , Shlok Kyal , vignesh C , Euler Taveira , "pgsql-hackers@lists.postgresql.org" , Peter Smith Content-Type: multipart/mixed; boundary="000000000000135cb9064d90e489" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000135cb9064d90e489 Content-Type: multipart/alternative; boundary="000000000000135cb8064d90e487" --000000000000135cb8064d90e487 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Mar 21, 2026 at 5:57=E2=80=AFAM Amit Kapila wrote: > > Based on the above information, can we consider renaming the above functions to report_createsub_log() and report_createsub_fatal()? > > Other than the above point, 0001 LGTM. > I have renamed the functions. Regards, Gyan --000000000000135cb8064d90e487 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

On Sat, Mar 21, 202= 6 at 5:57=E2=80=AFAM Amit Kapila <amit.kapila16@gmail.com> wrote:

Based on the above information, can we consider renaming the above=C2=A0
functions to re= port_createsub_log() and report_createsub_fatal()?

Other than the above point, 0001 LGTM.

= I have renamed the functions.

Regards,
G= yan=C2=A0
--000000000000135cb8064d90e487-- --000000000000135cb9064d90e489 Content-Type: application/octet-stream; name="v16-0001-pg_createsubscriber-use-own-reporting-functions.patch" Content-Disposition: attachment; filename="v16-0001-pg_createsubscriber-use-own-reporting-functions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn0xv3zu0 RnJvbSA2ODRjM2I0NGJlMDRjYTkzNDFmY2E4ZDlkNmI3MDU3YTQyMmExMDkyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBXZWQsIDE4IE1hciAyMDI2IDIwOjIwOjUwICswOTAwClN1YmplY3Q6IFtQQVRD SCB2MTYgMS8yXSBwZ19jcmVhdGVzdWJzY3JpYmVyOiB1c2Ugb3duIHJlcG9ydGluZyBmdW5jdGlv bnMKClRoaXMgY29tbWl0IGNvbnZlcnRzIGFsbCBwZ19sb2dfeHh4IGZhbWlsaWVzIHRvIGNhbGwg YSBuZXcgcmVwb3J0aW5nIGZ1bmN0aW9uCnBnX2NyZWF0ZXN1Yl9sb2coKS4gQWxzbywgcGdfZmF0 YWwoKSBpcyBvdmVyd3JpdHRlbiB0byB1c2UgaXRzIG93bi4KClRoaXMgY29tbWl0IGNoYW5nZXMg bm90aGluZyBmcm9tIHRoZSBvdXRzaWRlLCBidXQgaXMgbmVlZGVkIGZvciB0aGUgdXBjb21pbmcK Y29tbWl0LgotLS0KIHNyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMg fCA3NDkgKysrKysrKysrKysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0NzcgaW5zZXJ0aW9u cygrKSwgMjcyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1 cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRl c3Vic2NyaWJlci5jCmluZGV4IDJiYzg0NTA1YWFiLi5iMmJjOWRhZTBiOCAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYworKysgYi9zcmMvYmlu L3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vic2NyaWJlci5jCkBAIC0xNDYsNiArMTQ2LDExIEBA IHN0YXRpYyB2b2lkIGRyb3BfZXhpc3Rpbmdfc3Vic2NyaXB0aW9uKFBHY29ubiAqY29ubiwgY29u c3QgY2hhciAqc3VibmFtZSwKIAkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKmRibmFtZSk7CiBzdGF0 aWMgdm9pZCBnZXRfcHVibGlzaGVyX2RhdGFiYXNlcyhzdHJ1Y3QgQ3JlYXRlU3Vic2NyaWJlck9w dGlvbnMgKm9wdCwKIAkJCQkJCQkJCWJvb2wgZGJuYW1lc3BlY2lmaWVkKTsKK3N0YXRpYyB2b2lk IHJlcG9ydF9jcmVhdGVzdWJfbG9nKGVudW0gcGdfbG9nX2xldmVsLCBlbnVtIHBnX2xvZ19wYXJ0 LAorCQkJCQkJCQkgY29uc3QgY2hhciAqcGdfcmVzdHJpY3QgZm10LC4uLikKKwkJCXBnX2F0dHJp YnV0ZV9wcmludGYoMywgNCk7CitwZ19ub3JldHVybiBzdGF0aWMgdm9pZCByZXBvcnRfY3JlYXRl c3ViX2ZhdGFsKGNvbnN0IGNoYXIgKnBnX3Jlc3RyaWN0IGZtdCwuLi4pCisJCQlwZ19hdHRyaWJ1 dGVfcHJpbnRmKDEsIDIpOwogCiAjZGVmaW5lCVdBSVRfSU5URVJWQUwJMQkJLyogMSBzZWNvbmQg Ki8KIApAQCAtMTc0LDYgKzE3OSwzOCBAQCBzdGF0aWMgYm9vbCByZWNvdmVyeV9lbmRlZCA9IGZh bHNlOwogc3RhdGljIGJvb2wgc3RhbmRieV9ydW5uaW5nID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBy ZWNvdmVyeV9wYXJhbXNfc2V0ID0gZmFsc2U7CiAKKy8qCisgKiBSZXBvcnQgYSBtZXNzYWdlIHdp dGggYSBnaXZlbiBsb2cgbGV2ZWwKKyAqLworc3RhdGljIHZvaWQKK3JlcG9ydF9jcmVhdGVzdWJf bG9nKGVudW0gcGdfbG9nX2xldmVsIGxldmVsLCBlbnVtIHBnX2xvZ19wYXJ0IHBhcnQsCisJCQkJ CSBjb25zdCBjaGFyICpwZ19yZXN0cmljdCBmbXQsLi4uKQoreworCXZhX2xpc3QJCWFyZ3M7CisK Kwl2YV9zdGFydChhcmdzLCBmbXQpOworCisJcGdfbG9nX2dlbmVyaWNfdihsZXZlbCwgcGFydCwg Zm10LCBhcmdzKTsKKworCXZhX2VuZChhcmdzKTsKK30KKworLyoKKyAqIFJlcG9ydCBhIGZhdGFs IGVycm9yIGFuZCBleGl0CisgKi8KK3N0YXRpYyB2b2lkCityZXBvcnRfY3JlYXRlc3ViX2ZhdGFs KGNvbnN0IGNoYXIgKnBnX3Jlc3RyaWN0IGZtdCwuLi4pCit7CisJdmFfbGlzdAkJYXJnczsKKwor CXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CisKKwlwZ19sb2dfZ2VuZXJpY192KFBHX0xPR19FUlJPUiwg UEdfTE9HX1BSSU1BUlksIGZtdCwgYXJncyk7CisKKwl2YV9lbmQoYXJncyk7CisKKwlleGl0KDEp OworfQogCiAvKgogICogQ2xlYW4gdXAgb2JqZWN0cyBjcmVhdGVkIGJ5IHBnX2NyZWF0ZXN1YnNj cmliZXIuCkBAIC0yMDUsNyArMjQyLDggQEAgY2xlYW51cF9vYmplY3RzX2F0ZXhpdCh2b2lkKQog CQlpZiAoZHVyYWJsZV9yZW5hbWUoY29uZl9maWxlbmFtZSwgY29uZl9maWxlbmFtZV9kaXNhYmxl ZCkgIT0gMCkKIAkJewogCQkJLyogZHVyYWJsZV9yZW5hbWUoKSBoYXMgYWxyZWFkeSBsb2dnZWQg c29tZXRoaW5nLiAqLwotCQkJcGdfbG9nX3dhcm5pbmdfaGludCgiQSBtYW51YWwgcmVtb3ZhbCBv ZiB0aGUgcmVjb3ZlcnkgcGFyYW1ldGVycyBtYXkgYmUgcmVxdWlyZWQuIik7CisJCQlyZXBvcnRf Y3JlYXRlc3ViX2xvZyhQR19MT0dfV0FSTklORywgUEdfTE9HX0hJTlQsCisJCQkJCQkJCSAiQSBt YW51YWwgcmVtb3ZhbCBvZiB0aGUgcmVjb3ZlcnkgcGFyYW1ldGVycyBtYXkgYmUgcmVxdWlyZWQu Iik7CiAJCX0KIAl9CiAKQEAgLTIxOSw5ICsyNTcsMTEgQEAgY2xlYW51cF9vYmplY3RzX2F0ZXhp dCh2b2lkKQogCSAqLwogCWlmIChyZWNvdmVyeV9lbmRlZCkKIAl7Ci0JCXBnX2xvZ193YXJuaW5n KCJmYWlsZWQgYWZ0ZXIgdGhlIGVuZCBvZiByZWNvdmVyeSIpOwotCQlwZ19sb2dfd2FybmluZ19o aW50KCJUaGUgdGFyZ2V0IHNlcnZlciBjYW5ub3QgYmUgdXNlZCBhcyBhIHBoeXNpY2FsIHJlcGxp Y2EgYW55bW9yZS4gICIKLQkJCQkJCQkiWW91IG11c3QgcmVjcmVhdGUgdGhlIHBoeXNpY2FsIHJl cGxpY2EgYmVmb3JlIGNvbnRpbnVpbmcuIik7CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xP R19XQVJOSU5HLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgImZhaWxlZCBhZnRlciB0aGUgZW5k IG9mIHJlY292ZXJ5Iik7CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19XQVJOSU5HLCBQ R19MT0dfSElOVCwKKwkJCQkJCQkgIlRoZSB0YXJnZXQgc2VydmVyIGNhbm5vdCBiZSB1c2VkIGFz IGEgcGh5c2ljYWwgcmVwbGljYSBhbnltb3JlLiAgIgorCQkJCQkJCSAiWW91IG11c3QgcmVjcmVh dGUgdGhlIHBoeXNpY2FsIHJlcGxpY2EgYmVmb3JlIGNvbnRpbnVpbmcuIik7CiAJfQogCiAJZm9y IChpbnQgaSA9IDA7IGkgPCBudW1fZGJzOyBpKyspCkBAIC0yNTEsMTcgKzI5MSwyMSBAQCBjbGVh bnVwX29iamVjdHNfYXRleGl0KHZvaWQpCiAJCQkJICovCiAJCQkJaWYgKGRiaW5mby0+bWFkZV9w dWJsaWNhdGlvbikKIAkJCQl7Ci0JCQkJCXBnX2xvZ193YXJuaW5nKCJwdWJsaWNhdGlvbiBcIiVz XCIgY3JlYXRlZCBpbiBkYXRhYmFzZSBcIiVzXCIgb24gcHJpbWFyeSB3YXMgbGVmdCBiZWhpbmQi LAotCQkJCQkJCQkgICBkYmluZm8tPnB1Ym5hbWUsCi0JCQkJCQkJCSAgIGRiaW5mby0+ZGJuYW1l KTsKLQkJCQkJcGdfbG9nX3dhcm5pbmdfaGludCgiRHJvcCB0aGlzIHB1YmxpY2F0aW9uIGJlZm9y ZSB0cnlpbmcgYWdhaW4uIik7CisJCQkJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19XQVJO SU5HLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkJCQkgInB1YmxpY2F0aW9uIFwiJXNcIiBjcmVh dGVkIGluIGRhdGFiYXNlIFwiJXNcIiBvbiBwcmltYXJ5IHdhcyBsZWZ0IGJlaGluZCIsCisJCQkJ CQkJCQkJIGRiaW5mby0+cHVibmFtZSwKKwkJCQkJCQkJCQkgZGJpbmZvLT5kYm5hbWUpOworCQkJ CQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfV0FSTklORywgUEdfTE9HX0hJTlQsCisJCQkJ CQkJCQkJICJEcm9wIHRoaXMgcHVibGljYXRpb24gYmVmb3JlIHRyeWluZyBhZ2Fpbi4iKTsKIAkJ CQl9CiAJCQkJaWYgKGRiaW5mby0+bWFkZV9yZXBsc2xvdCkKIAkJCQl7Ci0JCQkJCXBnX2xvZ193 YXJuaW5nKCJyZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBjcmVhdGVkIGluIGRhdGFiYXNlIFwiJXNc IiBvbiBwcmltYXJ5IHdhcyBsZWZ0IGJlaGluZCIsCi0JCQkJCQkJCSAgIGRiaW5mby0+cmVwbHNs b3RuYW1lLAotCQkJCQkJCQkgICBkYmluZm8tPmRibmFtZSk7Ci0JCQkJCXBnX2xvZ193YXJuaW5n X2hpbnQoIkRyb3AgdGhpcyByZXBsaWNhdGlvbiBzbG90IHNvb24gdG8gYXZvaWQgcmV0ZW50aW9u IG9mIFdBTCBmaWxlcy4iKTsKKwkJCQkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX1dBUk5J TkcsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCQkJCSAicmVwbGljYXRpb24gc2xvdCBcIiVzXCIg Y3JlYXRlZCBpbiBkYXRhYmFzZSBcIiVzXCIgb24gcHJpbWFyeSB3YXMgbGVmdCBiZWhpbmQiLAor CQkJCQkJCQkJCSBkYmluZm8tPnJlcGxzbG90bmFtZSwKKwkJCQkJCQkJCQkgZGJpbmZvLT5kYm5h bWUpOworCQkJCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfV0FSTklORywgUEdfTE9HX0hJ TlQsCisJCQkJCQkJCQkJICJEcm9wIHRoaXMgcmVwbGljYXRpb24gc2xvdCBzb29uIHRvIGF2b2lk IHJldGVudGlvbiBvZiBXQUwgZmlsZXMuIik7CiAJCQkJfQogCQkJfQogCQl9CkBAIC0zNDIsNyAr Mzg2LDggQEAgZ2V0X2Jhc2VfY29ubmluZm8oY29uc3QgY2hhciAqY29ubmluZm8sIGNoYXIgKipk Ym5hbWUpCiAJY29ubl9vcHRzID0gUFFjb25uaW5mb1BhcnNlKGNvbm5pbmZvLCAmZXJybXNnKTsK IAlpZiAoY29ubl9vcHRzID09IE5VTEwpCiAJewotCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBw YXJzZSBjb25uZWN0aW9uIHN0cmluZzogJXMiLCBlcnJtc2cpOworCQlyZXBvcnRfY3JlYXRlc3Vi X2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCSAiY291bGQgbm90IHBh cnNlIGNvbm5lY3Rpb24gc3RyaW5nOiAlcyIsIGVycm1zZyk7CiAJCVBRZnJlZW1lbShlcnJtc2cp OwogCQlyZXR1cm4gTlVMTDsKIAl9CkBAIC00MTksMTQgKzQ2NCwxNSBAQCBnZXRfZXhlY19wYXRo KGNvbnN0IGNoYXIgKmFyZ3YwLCBjb25zdCBjaGFyICpwcm9nbmFtZSkKIAkJCXN0cmxjcHkoZnVs bF9wYXRoLCBwcm9nbmFtZSwgc2l6ZW9mKGZ1bGxfcGF0aCkpOwogCiAJCWlmIChyZXQgPT0gLTEp Ci0JCQlwZ19mYXRhbCgicHJvZ3JhbSBcIiVzXCIgaXMgbmVlZGVkIGJ5ICVzIGJ1dCB3YXMgbm90 IGZvdW5kIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyBcIiVzXCIiLAotCQkJCQkgcHJvZ25hbWUs ICJwZ19jcmVhdGVzdWJzY3JpYmVyIiwgZnVsbF9wYXRoKTsKKwkJCXJlcG9ydF9jcmVhdGVzdWJf ZmF0YWwoInByb2dyYW0gXCIlc1wiIGlzIG5lZWRlZCBieSAlcyBidXQgd2FzIG5vdCBmb3VuZCBp biB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgXCIlc1wiIiwKKwkJCQkJCQkJICAgcHJvZ25hbWUsICJw Z19jcmVhdGVzdWJzY3JpYmVyIiwgZnVsbF9wYXRoKTsKIAkJZWxzZQotCQkJcGdfZmF0YWwoInBy b2dyYW0gXCIlc1wiIHdhcyBmb3VuZCBieSBcIiVzXCIgYnV0IHdhcyBub3QgdGhlIHNhbWUgdmVy c2lvbiBhcyAlcyIsCi0JCQkJCSBwcm9nbmFtZSwgZnVsbF9wYXRoLCAicGdfY3JlYXRlc3Vic2Ny aWJlciIpOworCQkJcmVwb3J0X2NyZWF0ZXN1Yl9mYXRhbCgicHJvZ3JhbSBcIiVzXCIgd2FzIGZv dW5kIGJ5IFwiJXNcIiBidXQgd2FzIG5vdCB0aGUgc2FtZSB2ZXJzaW9uIGFzICVzIiwKKwkJCQkJ CQkJICAgcHJvZ25hbWUsIGZ1bGxfcGF0aCwgInBnX2NyZWF0ZXN1YnNjcmliZXIiKTsKIAl9CiAK LQlwZ19sb2dfZGVidWcoIiVzIHBhdGggaXM6ICAlcyIsIHByb2duYW1lLCBleGVjX3BhdGgpOwor CXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19ERUJVRywgUEdfTE9HX1BSSU1BUlksCisJCQkJ CQkgIiVzIHBhdGggaXM6ICAlcyIsIHByb2duYW1lLCBleGVjX3BhdGgpOwogCiAJcmV0dXJuIGV4 ZWNfcGF0aDsKIH0KQEAgLTQ0MywxNSArNDg5LDE2IEBAIGNoZWNrX2RhdGFfZGlyZWN0b3J5KGNv bnN0IGNoYXIgKmRhdGFkaXIpCiAJdWludDMyCQltYWpvcl92ZXJzaW9uOwogCWNoYXIJICAgKnZl cnNpb25fc3RyOwogCi0JcGdfbG9nX2luZm8oImNoZWNraW5nIGlmIGRpcmVjdG9yeSBcIiVzXCIg aXMgYSBjbHVzdGVyIGRhdGEgZGlyZWN0b3J5IiwKLQkJCQlkYXRhZGlyKTsKKwlyZXBvcnRfY3Jl YXRlc3ViX2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgImNoZWNraW5n IGlmIGRpcmVjdG9yeSBcIiVzXCIgaXMgYSBjbHVzdGVyIGRhdGEgZGlyZWN0b3J5IiwKKwkJCQkJ CSBkYXRhZGlyKTsKIAogCWlmIChzdGF0KGRhdGFkaXIsICZzdGF0YnVmKSAhPSAwKQogCXsKIAkJ aWYgKGVycm5vID09IEVOT0VOVCkKLQkJCXBnX2ZhdGFsKCJkYXRhIGRpcmVjdG9yeSBcIiVzXCIg ZG9lcyBub3QgZXhpc3QiLCBkYXRhZGlyKTsKKwkJCXJlcG9ydF9jcmVhdGVzdWJfZmF0YWwoImRh dGEgZGlyZWN0b3J5IFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsIGRhdGFkaXIpOwogCQllbHNlCi0J CQlwZ19mYXRhbCgiY291bGQgbm90IGFjY2VzcyBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIGRhdGFk aXIpOworCQkJcmVwb3J0X2NyZWF0ZXN1Yl9mYXRhbCgiY291bGQgbm90IGFjY2VzcyBkaXJlY3Rv cnkgXCIlc1wiOiAlbSIsIGRhdGFkaXIpOwogCX0KIAogCS8qCkBAIC00NjIsOSArNTA5LDExIEBA IGNoZWNrX2RhdGFfZGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRhdGFkaXIpCiAJbWFqb3JfdmVyc2lv biA9IEdFVF9QR19NQUpPUlZFUlNJT05fTlVNKGdldF9wZ192ZXJzaW9uKGRhdGFkaXIsICZ2ZXJz aW9uX3N0cikpOwogCWlmIChtYWpvcl92ZXJzaW9uICE9IFBHX01BSk9SVkVSU0lPTl9OVU0pCiAJ ewotCQlwZ19sb2dfZXJyb3IoImRhdGEgZGlyZWN0b3J5IGlzIG9mIHdyb25nIHZlcnNpb24iKTsK LQkJcGdfbG9nX2Vycm9yX2RldGFpbCgiRmlsZSBcIiVzXCIgY29udGFpbnMgXCIlc1wiLCB3aGlj aCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoaXMgcHJvZ3JhbSdzIHZlcnNpb24gXCIlc1wiLiIs Ci0JCQkJCQkJIlBHX1ZFUlNJT04iLCB2ZXJzaW9uX3N0ciwgUEdfTUFKT1JWRVJTSU9OKTsKKwkJ cmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJ CQkgImRhdGEgZGlyZWN0b3J5IGlzIG9mIHdyb25nIHZlcnNpb24iKTsKKwkJcmVwb3J0X2NyZWF0 ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfREVUQUlMLAorCQkJCQkJCSAiRmlsZSBcIiVz XCIgY29udGFpbnMgXCIlc1wiLCB3aGljaCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoaXMgcHJv Z3JhbSdzIHZlcnNpb24gXCIlc1wiLiIsCisJCQkJCQkJICJQR19WRVJTSU9OIiwgdmVyc2lvbl9z dHIsIFBHX01BSk9SVkVSU0lPTik7CiAJCWV4aXQoMSk7CiAJfQogfQpAQCAtNTQ3LDE0ICs1OTYs MTYgQEAgc3RvcmVfcHViX3N1Yl9pbmZvKGNvbnN0IHN0cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0 aW9ucyAqb3B0LAogCQkJZGJpbmZvW2ldLnN1Ym5hbWUgPSBOVUxMOwogCQkvKiBPdGhlciBmaWVs ZHMgd2lsbCBiZSBmaWxsZWQgbGF0ZXIgKi8KIAotCQlwZ19sb2dfZGVidWcoInB1Ymxpc2hlcigl ZCk6IHB1YmxpY2F0aW9uOiAlcyA7IHJlcGxpY2F0aW9uIHNsb3Q6ICVzIDsgY29ubmVjdGlvbiBz dHJpbmc6ICVzIiwgaSwKLQkJCQkJIGRiaW5mb1tpXS5wdWJuYW1lID8gZGJpbmZvW2ldLnB1Ym5h bWUgOiAiKGF1dG8pIiwKLQkJCQkJIGRiaW5mb1tpXS5yZXBsc2xvdG5hbWUgPyBkYmluZm9baV0u cmVwbHNsb3RuYW1lIDogIihhdXRvKSIsCi0JCQkJCSBkYmluZm9baV0ucHViY29ubmluZm8pOwot CQlwZ19sb2dfZGVidWcoInN1YnNjcmliZXIoJWQpOiBzdWJzY3JpcHRpb246ICVzIDsgY29ubmVj dGlvbiBzdHJpbmc6ICVzLCB0d29fcGhhc2U6ICVzIiwgaSwKLQkJCQkJIGRiaW5mb1tpXS5zdWJu YW1lID8gZGJpbmZvW2ldLnN1Ym5hbWUgOiAiKGF1dG8pIiwKLQkJCQkJIGRiaW5mb1tpXS5zdWJj b25uaW5mbywKLQkJCQkJIGRiaW5mb3MudHdvX3BoYXNlID8gInRydWUiIDogImZhbHNlIik7CisJ CXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19ERUJVRywgUEdfTE9HX1BSSU1BUlksCisJCQkJ CQkJICJwdWJsaXNoZXIoJWQpOiBwdWJsaWNhdGlvbjogJXMgOyByZXBsaWNhdGlvbiBzbG90OiAl cyA7IGNvbm5lY3Rpb24gc3RyaW5nOiAlcyIsIGksCisJCQkJCQkJIGRiaW5mb1tpXS5wdWJuYW1l ID8gZGJpbmZvW2ldLnB1Ym5hbWUgOiAiKGF1dG8pIiwKKwkJCQkJCQkgZGJpbmZvW2ldLnJlcGxz bG90bmFtZSA/IGRiaW5mb1tpXS5yZXBsc2xvdG5hbWUgOiAiKGF1dG8pIiwKKwkJCQkJCQkgZGJp bmZvW2ldLnB1YmNvbm5pbmZvKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0RFQlVH LCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgInN1YnNjcmliZXIoJWQpOiBzdWJzY3JpcHRpb246 ICVzIDsgY29ubmVjdGlvbiBzdHJpbmc6ICVzLCB0d29fcGhhc2U6ICVzIiwgaSwKKwkJCQkJCQkg ZGJpbmZvW2ldLnN1Ym5hbWUgPyBkYmluZm9baV0uc3VibmFtZSA6ICIoYXV0bykiLAorCQkJCQkJ CSBkYmluZm9baV0uc3ViY29ubmluZm8sCisJCQkJCQkJIGRiaW5mb3MudHdvX3BoYXNlID8gInRy dWUiIDogImZhbHNlIik7CiAKIAkJaWYgKG51bV9wdWJzID4gMCkKIAkJCXB1YmNlbGwgPSBwdWJj ZWxsLT5uZXh0OwpAQCAtNTgyLDggKzYzMyw5IEBAIGNvbm5lY3RfZGF0YWJhc2UoY29uc3QgY2hh ciAqY29ubmluZm8sIGJvb2wgZXhpdF9vbl9lcnJvcikKIAljb25uID0gUFFjb25uZWN0ZGIoY29u bmluZm8pOwogCWlmIChQUXN0YXR1cyhjb25uKSAhPSBDT05ORUNUSU9OX09LKQogCXsKLQkJcGdf bG9nX2Vycm9yKCJjb25uZWN0aW9uIHRvIGRhdGFiYXNlIGZhaWxlZDogJXMiLAotCQkJCQkgUFFl cnJvck1lc3NhZ2UoY29ubikpOworCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1Is IFBHX0xPR19QUklNQVJZLAorCQkJCQkJCSAiY29ubmVjdGlvbiB0byBkYXRhYmFzZSBmYWlsZWQ6 ICVzIiwKKwkJCQkJCQkgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQlQUWZpbmlzaChjb25uKTsK IAogCQlpZiAoZXhpdF9vbl9lcnJvcikKQEAgLTU5NSw4ICs2NDcsOSBAQCBjb25uZWN0X2RhdGFi YXNlKGNvbnN0IGNoYXIgKmNvbm5pbmZvLCBib29sIGV4aXRfb25fZXJyb3IpCiAJcmVzID0gUFFl eGVjKGNvbm4sIEFMV0FZU19TRUNVUkVfU0VBUkNIX1BBVEhfU1FMKTsKIAlpZiAoUFFyZXN1bHRT dGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCiAJewotCQlwZ19sb2dfZXJyb3IoImNvdWxk IG5vdCBjbGVhciBcInNlYXJjaF9wYXRoXCI6ICVzIiwKLQkJCQkJIFBRcmVzdWx0RXJyb3JNZXNz YWdlKHJlcykpOworCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19Q UklNQVJZLAorCQkJCQkJCSAiY291bGQgbm90IGNsZWFyIFwic2VhcmNoX3BhdGhcIjogJXMiLAor CQkJCQkJCSBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKIAkJUFFjbGVhcihyZXMpOwogCQlQ UWZpbmlzaChjb25uKTsKIApAQCAtNjM1LDI3ICs2ODgsMzEgQEAgZ2V0X3ByaW1hcnlfc3lzaWQo Y29uc3QgY2hhciAqY29ubmluZm8pCiAJUEdyZXN1bHQgICAqcmVzOwogCXVpbnQ2NAkJc3lzaWQ7 CiAKLQlwZ19sb2dfaW5mbygiZ2V0dGluZyBzeXN0ZW0gaWRlbnRpZmllciBmcm9tIHB1Ymxpc2hl ciIpOworCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0dfUFJJTUFSWSwK KwkJCQkJCSAiZ2V0dGluZyBzeXN0ZW0gaWRlbnRpZmllciBmcm9tIHB1Ymxpc2hlciIpOwogCiAJ Y29ubiA9IGNvbm5lY3RfZGF0YWJhc2UoY29ubmluZm8sIHRydWUpOwogCiAJcmVzID0gUFFleGVj KGNvbm4sICJTRUxFQ1Qgc3lzdGVtX2lkZW50aWZpZXIgRlJPTSBwZ19jYXRhbG9nLnBnX2NvbnRy b2xfc3lzdGVtKCkiKTsKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNf T0spCiAJewotCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBnZXQgc3lzdGVtIGlkZW50aWZpZXI6 ICVzIiwKLQkJCQkJIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQlyZXBvcnRfY3JlYXRl c3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCSAiY291bGQgbm90 IGdldCBzeXN0ZW0gaWRlbnRpZmllcjogJXMiLAorCQkJCQkJCSBQUXJlc3VsdEVycm9yTWVzc2Fn ZShyZXMpKTsKIAkJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uLCB0cnVlKTsKIAl9CiAJaWYgKFBR bnR1cGxlcyhyZXMpICE9IDEpCiAJewotCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBnZXQgc3lz dGVtIGlkZW50aWZpZXI6IGdvdCAlZCByb3dzLCBleHBlY3RlZCAlZCByb3ciLAotCQkJCQkgUFFu dHVwbGVzKHJlcyksIDEpOworCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBH X0xPR19QUklNQVJZLAorCQkJCQkJCSAiY291bGQgbm90IGdldCBzeXN0ZW0gaWRlbnRpZmllcjog Z290ICVkIHJvd3MsIGV4cGVjdGVkICVkIHJvdyIsCisJCQkJCQkJIFBRbnR1cGxlcyhyZXMpLCAx KTsKIAkJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uLCB0cnVlKTsKIAl9CiAKIAlzeXNpZCA9IHN0 cnRvdTY0KFBRZ2V0dmFsdWUocmVzLCAwLCAwKSwgTlVMTCwgMTApOwogCi0JcGdfbG9nX2luZm8o InN5c3RlbSBpZGVudGlmaWVyIGlzICUiIFBSSXU2NCAiIG9uIHB1Ymxpc2hlciIsIHN5c2lkKTsK KwlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCisJCQkJ CQkgInN5c3RlbSBpZGVudGlmaWVyIGlzICUiIFBSSXU2NCAiIG9uIHB1Ymxpc2hlciIsIHN5c2lk KTsKIAogCVBRY2xlYXIocmVzKTsKIAlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIGZhbHNlKTsK QEAgLTY3NSwxNSArNzMyLDE3IEBAIGdldF9zdGFuZGJ5X3N5c2lkKGNvbnN0IGNoYXIgKmRhdGFk aXIpCiAJYm9vbAkJY3JjX29rOwogCXVpbnQ2NAkJc3lzaWQ7CiAKLQlwZ19sb2dfaW5mbygiZ2V0 dGluZyBzeXN0ZW0gaWRlbnRpZmllciBmcm9tIHN1YnNjcmliZXIiKTsKKwlyZXBvcnRfY3JlYXRl c3ViX2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgImdldHRpbmcgc3lz dGVtIGlkZW50aWZpZXIgZnJvbSBzdWJzY3JpYmVyIik7CiAKIAljZiA9IGdldF9jb250cm9sZmls ZShkYXRhZGlyLCAmY3JjX29rKTsKIAlpZiAoIWNyY19vaykKLQkJcGdfZmF0YWwoImNvbnRyb2wg ZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQiKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9mYXRhbCgi Y29udHJvbCBmaWxlIGFwcGVhcnMgdG8gYmUgY29ycnVwdCIpOwogCiAJc3lzaWQgPSBjZi0+c3lz dGVtX2lkZW50aWZpZXI7CiAKLQlwZ19sb2dfaW5mbygic3lzdGVtIGlkZW50aWZpZXIgaXMgJSIg UFJJdTY0ICIgb24gc3Vic2NyaWJlciIsIHN5c2lkKTsKKwlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQ R19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgInN5c3RlbSBpZGVudGlmaWVyIGlz ICUiIFBSSXU2NCAiIG9uIHN1YnNjcmliZXIiLCBzeXNpZCk7CiAKIAlwZ19mcmVlKGNmKTsKIApA QCAtNzA0LDExICs3NjMsMTIgQEAgbW9kaWZ5X3N1YnNjcmliZXJfc3lzaWQoY29uc3Qgc3RydWN0 IENyZWF0ZVN1YnNjcmliZXJPcHRpb25zICpvcHQpCiAKIAljaGFyCSAgICpjbWRfc3RyOwogCi0J cGdfbG9nX2luZm8oIm1vZGlmeWluZyBzeXN0ZW0gaWRlbnRpZmllciBvZiBzdWJzY3JpYmVyIik7 CisJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAorCQkJ CQkJICJtb2RpZnlpbmcgc3lzdGVtIGlkZW50aWZpZXIgb2Ygc3Vic2NyaWJlciIpOwogCiAJY2Yg PSBnZXRfY29udHJvbGZpbGUoc3Vic2NyaWJlcl9kaXIsICZjcmNfb2spOwogCWlmICghY3JjX29r KQotCQlwZ19mYXRhbCgiY29udHJvbCBmaWxlIGFwcGVhcnMgdG8gYmUgY29ycnVwdCIpOworCQly ZXBvcnRfY3JlYXRlc3ViX2ZhdGFsKCJjb250cm9sIGZpbGUgYXBwZWFycyB0byBiZSBjb3JydXB0 Iik7CiAKIAkvKgogCSAqIFNlbGVjdCBhIG5ldyBzeXN0ZW0gaWRlbnRpZmllci4KQEAgLTcyMSwz MyArNzgxLDM5IEBAIG1vZGlmeV9zdWJzY3JpYmVyX3N5c2lkKGNvbnN0IHN0cnVjdCBDcmVhdGVT dWJzY3JpYmVyT3B0aW9ucyAqb3B0KQogCWNmLT5zeXN0ZW1faWRlbnRpZmllciB8PSBnZXRwaWQo KSAmIDB4RkZGOwogCiAJaWYgKGRyeV9ydW4pCi0JCXBnX2xvZ19pbmZvKCJkcnktcnVuOiB3b3Vs ZCBzZXQgc3lzdGVtIGlkZW50aWZpZXIgdG8gJSIgUFJJdTY0ICIgb24gc3Vic2NyaWJlciIsCi0J CQkJCWNmLT5zeXN0ZW1faWRlbnRpZmllcik7CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xP R19JTkZPLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgImRyeS1ydW46IHdvdWxkIHNldCBzeXN0 ZW0gaWRlbnRpZmllciB0byAlIiBQUkl1NjQgIiBvbiBzdWJzY3JpYmVyIiwKKwkJCQkJCQkgY2Yt PnN5c3RlbV9pZGVudGlmaWVyKTsKIAllbHNlCiAJewogCQl1cGRhdGVfY29udHJvbGZpbGUoc3Vi c2NyaWJlcl9kaXIsIGNmLCB0cnVlKTsKLQkJcGdfbG9nX2luZm8oInN5c3RlbSBpZGVudGlmaWVy IGlzICUiIFBSSXU2NCAiIG9uIHN1YnNjcmliZXIiLAotCQkJCQljZi0+c3lzdGVtX2lkZW50aWZp ZXIpOworCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlks CisJCQkJCQkJICJzeXN0ZW0gaWRlbnRpZmllciBpcyAlIiBQUkl1NjQgIiBvbiBzdWJzY3JpYmVy IiwKKwkJCQkJCQkgY2YtPnN5c3RlbV9pZGVudGlmaWVyKTsKIAl9CiAKIAlpZiAoZHJ5X3J1bikK LQkJcGdfbG9nX2luZm8oImRyeS1ydW46IHdvdWxkIHJ1biBwZ19yZXNldHdhbCBvbiB0aGUgc3Vi c2NyaWJlciIpOworCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BS SU1BUlksCisJCQkJCQkJICJkcnktcnVuOiB3b3VsZCBydW4gcGdfcmVzZXR3YWwgb24gdGhlIHN1 YnNjcmliZXIiKTsKIAllbHNlCi0JCXBnX2xvZ19pbmZvKCJydW5uaW5nIHBnX3Jlc2V0d2FsIG9u IHRoZSBzdWJzY3JpYmVyIik7CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQ R19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgInJ1bm5pbmcgcGdfcmVzZXR3YWwgb24gdGhlIHN1YnNj cmliZXIiKTsKIAogCWNtZF9zdHIgPSBwc3ByaW50ZigiXCIlc1wiIC1EIFwiJXNcIiA+IFwiJXNc IiIsIHBnX3Jlc2V0d2FsX3BhdGgsCiAJCQkJCSAgIHN1YnNjcmliZXJfZGlyLCBERVZOVUxMKTsK IAotCXBnX2xvZ19kZWJ1ZygicGdfcmVzZXR3YWwgY29tbWFuZCBpczogJXMiLCBjbWRfc3RyKTsK KwlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfREVCVUcsIFBHX0xPR19QUklNQVJZLAorCQkJ CQkJICJwZ19yZXNldHdhbCBjb21tYW5kIGlzOiAlcyIsIGNtZF9zdHIpOwogCiAJaWYgKCFkcnlf cnVuKQogCXsKIAkJaW50CQkJcmMgPSBzeXN0ZW0oY21kX3N0cik7CiAKIAkJaWYgKHJjID09IDAp Ci0JCQlwZ19sb2dfaW5mbygic3VjY2Vzc2Z1bGx5IHJlc2V0IFdBTCBvbiB0aGUgc3Vic2NyaWJl ciIpOworCQkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZ LAorCQkJCQkJCQkgInN1Y2Nlc3NmdWxseSByZXNldCBXQUwgb24gdGhlIHN1YnNjcmliZXIiKTsK IAkJZWxzZQotCQkJcGdfZmF0YWwoImNvdWxkIG5vdCByZXNldCBXQUwgb24gc3Vic2NyaWJlcjog JXMiLCB3YWl0X3Jlc3VsdF90b19zdHIocmMpKTsKKwkJCXJlcG9ydF9jcmVhdGVzdWJfZmF0YWwo ImNvdWxkIG5vdCByZXNldCBXQUwgb24gc3Vic2NyaWJlcjogJXMiLCB3YWl0X3Jlc3VsdF90b19z dHIocmMpKTsKIAl9CiAKIAlwZ19mcmVlKGNmKTsKQEAgLTc3MSwxNSArODM3LDE3IEBAIGdlbmVy YXRlX29iamVjdF9uYW1lKFBHY29ubiAqY29ubikKIAkJCQkgIldIRVJFIGRhdG5hbWUgPSBwZ19j YXRhbG9nLmN1cnJlbnRfZGF0YWJhc2UoKSIpOwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9 IFBHUkVTX1RVUExFU19PSykKIAl7Ci0JCXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9idGFpbiBk YXRhYmFzZSBPSUQ6ICVzIiwKLQkJCQkJIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQly ZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJ CSAiY291bGQgbm90IG9idGFpbiBkYXRhYmFzZSBPSUQ6ICVzIiwKKwkJCQkJCQkgUFFyZXN1bHRF cnJvck1lc3NhZ2UocmVzKSk7CiAJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29ubiwgdHJ1ZSk7CiAJ fQogCiAJaWYgKFBRbnR1cGxlcyhyZXMpICE9IDEpCiAJewotCQlwZ19sb2dfZXJyb3IoImNvdWxk IG5vdCBvYnRhaW4gZGF0YWJhc2UgT0lEOiBnb3QgJWQgcm93cywgZXhwZWN0ZWQgJWQgcm93IiwK LQkJCQkJIFBRbnR1cGxlcyhyZXMpLCAxKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9H X0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgImNvdWxkIG5vdCBvYnRhaW4gZGF0YWJh c2UgT0lEOiBnb3QgJWQgcm93cywgZXhwZWN0ZWQgJWQgcm93IiwKKwkJCQkJCQkgUFFudHVwbGVz KHJlcyksIDEpOwogCQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIHRydWUpOwogCX0KIApAQCAt ODE5LDggKzg4Nyw5IEBAIGZpbmRfcHVibGljYXRpb24oUEdjb25uICpjb25uLCBjb25zdCBjaGFy ICpwdWJuYW1lLCBjb25zdCBjaGFyICpkYm5hbWUpCiAJcmVzID0gUFFleGVjKGNvbm4sIHN0ci0+ ZGF0YSk7CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQogCXsK LQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZmluZCBwdWJsaWNhdGlvbiBcIiVzXCIgaW4gZGF0 YWJhc2UgXCIlc1wiOiAlcyIsCi0JCQkJCSBwdWJuYW1lLCBkYm5hbWUsIFBRZXJyb3JNZXNzYWdl KGNvbm4pKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJ TUFSWSwKKwkJCQkJCQkgImNvdWxkIG5vdCBmaW5kIHB1YmxpY2F0aW9uIFwiJXNcIiBpbiBkYXRh YmFzZSBcIiVzXCI6ICVzIiwKKwkJCQkJCQkgcHVibmFtZSwgZGJuYW1lLCBQUWVycm9yTWVzc2Fn ZShjb25uKSk7CiAJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29ubiwgdHJ1ZSk7CiAJfQogCkBAIC04 NzMsOCArOTQyLDkgQEAgc2V0dXBfcHVibGlzaGVyKHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJp bmZvKQogCQlpZiAoZmluZF9wdWJsaWNhdGlvbihjb25uLCBkYmluZm9baV0ucHVibmFtZSwgZGJp bmZvW2ldLmRibmFtZSkpCiAJCXsKIAkJCS8qIFJldXNlIGV4aXN0aW5nIHB1YmxpY2F0aW9uIG9u IHB1Ymxpc2hlci4gKi8KLQkJCXBnX2xvZ19pbmZvKCJ1c2UgZXhpc3RpbmcgcHVibGljYXRpb24g XCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCi0JCQkJCQlkYmluZm9baV0ucHVibmFtZSwgZGJp bmZvW2ldLmRibmFtZSk7CisJCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfSU5GTywgUEdf TE9HX1BSSU1BUlksCisJCQkJCQkJCSAidXNlIGV4aXN0aW5nIHB1YmxpY2F0aW9uIFwiJXNcIiBp biBkYXRhYmFzZSBcIiVzXCIiLAorCQkJCQkJCQkgZGJpbmZvW2ldLnB1Ym5hbWUsIGRiaW5mb1tp XS5kYm5hbWUpOwogCQkJLyogRG9uJ3QgcmVtb3ZlIHByZS1leGlzdGluZyBwdWJsaWNhdGlvbiBp ZiBhbiBlcnJvciBvY2N1cnMuICovCiAJCQlkYmluZm9baV0ubWFkZV9wdWJsaWNhdGlvbiA9IGZh bHNlOwogCQl9CkBAIC05MTIsOCArOTgyLDkgQEAgc2V0dXBfcHVibGlzaGVyKHN0cnVjdCBMb2dp Y2FsUmVwSW5mbyAqZGJpbmZvKQogCQkJcmVzID0gUFFleGVjKGNvbm4sICJTRUxFQ1QgcGdfbG9n X3N0YW5kYnlfc25hcHNob3QoKSIpOwogCQkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdS RVNfVFVQTEVTX09LKQogCQkJewotCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHdyaXRlIGFu IGFkZGl0aW9uYWwgV0FMIHJlY29yZDogJXMiLAotCQkJCQkJCSBQUXJlc3VsdEVycm9yTWVzc2Fn ZShyZXMpKTsKKwkJCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19Q UklNQVJZLAorCQkJCQkJCQkJICJjb3VsZCBub3Qgd3JpdGUgYW4gYWRkaXRpb25hbCBXQUwgcmVj b3JkOiAlcyIsCisJCQkJCQkJCQkgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CiAJCQkJZGlz Y29ubmVjdF9kYXRhYmFzZShjb25uLCB0cnVlKTsKIAkJCX0KIAkJCVBRY2xlYXIocmVzKTsKQEAg LTkzOCw4ICsxMDA5LDkgQEAgc2VydmVyX2lzX2luX3JlY292ZXJ5KFBHY29ubiAqY29ubikKIAog CWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKIAl7Ci0JCXBnX2xv Z19lcnJvcigiY291bGQgbm90IG9idGFpbiByZWNvdmVyeSBwcm9ncmVzczogJXMiLAotCQkJCQkg UFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xP R19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkJICJjb3VsZCBub3Qgb2J0YWluIHJlY292 ZXJ5IHByb2dyZXNzOiAlcyIsCisJCQkJCQkJIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOwog CQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIHRydWUpOwogCX0KIApAQCAtOTcxLDcgKzEwNDMs OCBAQCBjaGVja19wdWJsaXNoZXIoY29uc3Qgc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8p CiAJaW50CQkJbWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9uczsKIAljaGFyCSAgICptYXhfc2xvdF93 YWxfa2VlcF9zaXplOwogCi0JcGdfbG9nX2luZm8oImNoZWNraW5nIHNldHRpbmdzIG9uIHB1Ymxp c2hlciIpOworCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0dfUFJJTUFS WSwKKwkJCQkJCSAiY2hlY2tpbmcgc2V0dGluZ3Mgb24gcHVibGlzaGVyIik7CiAKIAljb25uID0g Y29ubmVjdF9kYXRhYmFzZShkYmluZm9bMF0ucHViY29ubmluZm8sIHRydWUpOwogCkBAIC05ODEs NyArMTA1NCw4IEBAIGNoZWNrX3B1Ymxpc2hlcihjb25zdCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8g KmRiaW5mbykKIAkgKi8KIAlpZiAoc2VydmVyX2lzX2luX3JlY292ZXJ5KGNvbm4pKQogCXsKLQkJ cGdfbG9nX2Vycm9yKCJwcmltYXJ5IHNlcnZlciBjYW5ub3QgYmUgaW4gcmVjb3ZlcnkiKTsKKwkJ cmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJ CQkgInByaW1hcnkgc2VydmVyIGNhbm5vdCBiZSBpbiByZWNvdmVyeSIpOwogCQlkaXNjb25uZWN0 X2RhdGFiYXNlKGNvbm4sIHRydWUpOwogCX0KIApAQCAtMTAwNyw4ICsxMDgxLDkgQEAgY2hlY2tf cHVibGlzaGVyKGNvbnN0IHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogCiAJaWYgKFBR cmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQogCXsKLQkJcGdfbG9nX2Vycm9y KCJjb3VsZCBub3Qgb2J0YWluIHB1Ymxpc2hlciBzZXR0aW5nczogJXMiLAotCQkJCQkgUFFyZXN1 bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJP UiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkJICJjb3VsZCBub3Qgb2J0YWluIHB1Ymxpc2hlciBz ZXR0aW5nczogJXMiLAorCQkJCQkJCSBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKIAkJZGlz Y29ubmVjdF9kYXRhYmFzZShjb25uLCB0cnVlKTsKIAl9CiAKQEAgLTEwMjIsNDggKzEwOTcsNjMg QEAgY2hlY2tfcHVibGlzaGVyKGNvbnN0IHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQog CiAJUFFjbGVhcihyZXMpOwogCi0JcGdfbG9nX2RlYnVnKCJwdWJsaXNoZXI6IHdhbF9sZXZlbDog JXMiLCB3YWxfbGV2ZWwpOwotCXBnX2xvZ19kZWJ1ZygicHVibGlzaGVyOiBtYXhfcmVwbGljYXRp b25fc2xvdHM6ICVkIiwgbWF4X3JlcHNsb3RzKTsKLQlwZ19sb2dfZGVidWcoInB1Ymxpc2hlcjog Y3VycmVudCByZXBsaWNhdGlvbiBzbG90czogJWQiLCBjdXJfcmVwc2xvdHMpOwotCXBnX2xvZ19k ZWJ1ZygicHVibGlzaGVyOiBtYXhfd2FsX3NlbmRlcnM6ICVkIiwgbWF4X3dhbHNlbmRlcnMpOwot CXBnX2xvZ19kZWJ1ZygicHVibGlzaGVyOiBjdXJyZW50IHdhbCBzZW5kZXJzOiAlZCIsIGN1cl93 YWxzZW5kZXJzKTsKLQlwZ19sb2dfZGVidWcoInB1Ymxpc2hlcjogbWF4X3ByZXBhcmVkX3RyYW5z YWN0aW9uczogJWQiLAotCQkJCSBtYXhfcHJlcGFyZWRfdHJhbnNhY3Rpb25zKTsKLQlwZ19sb2df ZGVidWcoInB1Ymxpc2hlcjogbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZTogJXMiLAotCQkJCSBtYXhf c2xvdF93YWxfa2VlcF9zaXplKTsKKwlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfREVCVUcs IFBHX0xPR19QUklNQVJZLAorCQkJCQkJICJwdWJsaXNoZXI6IHdhbF9sZXZlbDogJXMiLCB3YWxf bGV2ZWwpOworCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19ERUJVRywgUEdfTE9HX1BSSU1B UlksCisJCQkJCQkgInB1Ymxpc2hlcjogbWF4X3JlcGxpY2F0aW9uX3Nsb3RzOiAlZCIsIG1heF9y ZXBzbG90cyk7CisJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0RFQlVHLCBQR19MT0dfUFJJ TUFSWSwKKwkJCQkJCSAicHVibGlzaGVyOiBjdXJyZW50IHJlcGxpY2F0aW9uIHNsb3RzOiAlZCIs IGN1cl9yZXBzbG90cyk7CisJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0RFQlVHLCBQR19M T0dfUFJJTUFSWSwKKwkJCQkJCSAicHVibGlzaGVyOiBtYXhfd2FsX3NlbmRlcnM6ICVkIiwgbWF4 X3dhbHNlbmRlcnMpOworCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19ERUJVRywgUEdfTE9H X1BSSU1BUlksCisJCQkJCQkgInB1Ymxpc2hlcjogY3VycmVudCB3YWwgc2VuZGVyczogJWQiLCBj dXJfd2Fsc2VuZGVycyk7CisJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0RFQlVHLCBQR19M T0dfUFJJTUFSWSwKKwkJCQkJCSAicHVibGlzaGVyOiBtYXhfcHJlcGFyZWRfdHJhbnNhY3Rpb25z OiAlZCIsCisJCQkJCQkgbWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9ucyk7CisJcmVwb3J0X2NyZWF0 ZXN1Yl9sb2coUEdfTE9HX0RFQlVHLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAicHVibGlzaGVy OiBtYXhfc2xvdF93YWxfa2VlcF9zaXplOiAlcyIsCisJCQkJCQkgbWF4X3Nsb3Rfd2FsX2tlZXBf c2l6ZSk7CiAKIAlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIGZhbHNlKTsKIAogCWlmIChzdHJj bXAod2FsX2xldmVsLCAibWluaW1hbCIpID09IDApCiAJewotCQlwZ19sb2dfZXJyb3IoInB1Ymxp c2hlciByZXF1aXJlcyBcIndhbF9sZXZlbFwiID49IFwicmVwbGljYVwiIik7CisJCXJlcG9ydF9j cmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkJICJwdWJs aXNoZXIgcmVxdWlyZXMgXCJ3YWxfbGV2ZWxcIiA+PSBcInJlcGxpY2FcIiIpOwogCQlmYWlsZWQg PSB0cnVlOwogCX0KIAogCWlmIChtYXhfcmVwc2xvdHMgLSBjdXJfcmVwc2xvdHMgPCBudW1fZGJz KQogCXsKLQkJcGdfbG9nX2Vycm9yKCJwdWJsaXNoZXIgcmVxdWlyZXMgJWQgcmVwbGljYXRpb24g c2xvdHMsIGJ1dCBvbmx5ICVkIHJlbWFpbiIsCi0JCQkJCSBudW1fZGJzLCBtYXhfcmVwc2xvdHMg LSBjdXJfcmVwc2xvdHMpOwotCQlwZ19sb2dfZXJyb3JfaGludCgiSW5jcmVhc2UgdGhlIGNvbmZp Z3VyYXRpb24gcGFyYW1ldGVyIFwiJXNcIiB0byBhdCBsZWFzdCAlZC4iLAotCQkJCQkJICAibWF4 X3JlcGxpY2F0aW9uX3Nsb3RzIiwgY3VyX3JlcHNsb3RzICsgbnVtX2Ricyk7CisJCXJlcG9ydF9j cmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkJICJwdWJs aXNoZXIgcmVxdWlyZXMgJWQgcmVwbGljYXRpb24gc2xvdHMsIGJ1dCBvbmx5ICVkIHJlbWFpbiIs CisJCQkJCQkJIG51bV9kYnMsIG1heF9yZXBzbG90cyAtIGN1cl9yZXBzbG90cyk7CisJCXJlcG9y dF9jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX0hJTlQsCisJCQkJCQkJICJJbmNy ZWFzZSB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgXCIlc1wiIHRvIGF0IGxlYXN0ICVkLiIs CisJCQkJCQkJICJtYXhfcmVwbGljYXRpb25fc2xvdHMiLCBjdXJfcmVwc2xvdHMgKyBudW1fZGJz KTsKIAkJZmFpbGVkID0gdHJ1ZTsKIAl9CiAKIAlpZiAobWF4X3dhbHNlbmRlcnMgLSBjdXJfd2Fs c2VuZGVycyA8IG51bV9kYnMpCiAJewotCQlwZ19sb2dfZXJyb3IoInB1Ymxpc2hlciByZXF1aXJl cyAlZCBXQUwgc2VuZGVyIHByb2Nlc3NlcywgYnV0IG9ubHkgJWQgcmVtYWluIiwKLQkJCQkJIG51 bV9kYnMsIG1heF93YWxzZW5kZXJzIC0gY3VyX3dhbHNlbmRlcnMpOwotCQlwZ19sb2dfZXJyb3Jf aGludCgiSW5jcmVhc2UgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIFwiJXNcIiB0byBhdCBs ZWFzdCAlZC4iLAotCQkJCQkJICAibWF4X3dhbF9zZW5kZXJzIiwgY3VyX3dhbHNlbmRlcnMgKyBu dW1fZGJzKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJ TUFSWSwKKwkJCQkJCQkgInB1Ymxpc2hlciByZXF1aXJlcyAlZCBXQUwgc2VuZGVyIHByb2Nlc3Nl cywgYnV0IG9ubHkgJWQgcmVtYWluIiwKKwkJCQkJCQkgbnVtX2RicywgbWF4X3dhbHNlbmRlcnMg LSBjdXJfd2Fsc2VuZGVycyk7CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwg UEdfTE9HX0hJTlQsCisJCQkJCQkJICJJbmNyZWFzZSB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0 ZXIgXCIlc1wiIHRvIGF0IGxlYXN0ICVkLiIsCisJCQkJCQkJICJtYXhfd2FsX3NlbmRlcnMiLCBj dXJfd2Fsc2VuZGVycyArIG51bV9kYnMpOwogCQlmYWlsZWQgPSB0cnVlOwogCX0KIAogCWlmICht YXhfcHJlcGFyZWRfdHJhbnNhY3Rpb25zICE9IDAgJiYgIWRiaW5mb3MudHdvX3BoYXNlKQogCXsK LQkJcGdfbG9nX3dhcm5pbmcoInR3b19waGFzZSBvcHRpb24gd2lsbCBub3QgYmUgZW5hYmxlZCBm b3IgcmVwbGljYXRpb24gc2xvdHMiKTsKLQkJcGdfbG9nX3dhcm5pbmdfZGV0YWlsKCJTdWJzY3Jp cHRpb25zIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZSB0d29fcGhhc2Ugb3B0aW9uIGRpc2FibGVk LiAgIgotCQkJCQkJCSAgIlByZXBhcmVkIHRyYW5zYWN0aW9ucyB3aWxsIGJlIHJlcGxpY2F0ZWQg YXQgQ09NTUlUIFBSRVBBUkVELiIpOwotCQlwZ19sb2dfd2FybmluZ19oaW50KCJZb3UgY2FuIHVz ZSB0aGUgY29tbWFuZC1saW5lIG9wdGlvbiAtLWVuYWJsZS10d28tcGhhc2UgdG8gZW5hYmxlIHR3 b19waGFzZS4iKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX1dBUk5JTkcsIFBHX0xP R19QUklNQVJZLAorCQkJCQkJCSAidHdvX3BoYXNlIG9wdGlvbiB3aWxsIG5vdCBiZSBlbmFibGVk IGZvciByZXBsaWNhdGlvbiBzbG90cyIpOworCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0df V0FSTklORywgUEdfTE9HX0RFVEFJTCwKKwkJCQkJCQkgIlN1YnNjcmlwdGlvbnMgd2lsbCBiZSBj cmVhdGVkIHdpdGggdGhlIHR3b19waGFzZSBvcHRpb24gZGlzYWJsZWQuICAiCisJCQkJCQkJICJQ cmVwYXJlZCB0cmFuc2FjdGlvbnMgd2lsbCBiZSByZXBsaWNhdGVkIGF0IENPTU1JVCBQUkVQQVJF RC4iKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX1dBUk5JTkcsIFBHX0xPR19ISU5U LAorCQkJCQkJCSAiWW91IGNhbiB1c2UgdGhlIGNvbW1hbmQtbGluZSBvcHRpb24gLS1lbmFibGUt dHdvLXBoYXNlIHRvIGVuYWJsZSB0d29fcGhhc2UuIik7CiAJfQogCiAJLyoKQEAgLTEwNzMsOSAr MTE2MywxMSBAQCBjaGVja19wdWJsaXNoZXIoY29uc3Qgc3RydWN0IExvZ2ljYWxSZXBJbmZvICpk YmluZm8pCiAJICovCiAJaWYgKGRyeV9ydW4gJiYgKHN0cmNtcChtYXhfc2xvdF93YWxfa2VlcF9z aXplLCAiLTEiKSAhPSAwKSkKIAl7Ci0JCXBnX2xvZ193YXJuaW5nKCJyZXF1aXJlZCBXQUwgY291 bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBwdWJsaXNoZXIiKTsKLQkJcGdfbG9nX3dhcm5pbmdfaGlu dCgiU2V0IHRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBcIiVzXCIgdG8gLTEgdG8gZW5zdXJl IHRoYXQgcmVxdWlyZWQgV0FMIGZpbGVzIGFyZSBub3QgcHJlbWF0dXJlbHkgcmVtb3ZlZC4iLAot CQkJCQkJCSJtYXhfc2xvdF93YWxfa2VlcF9zaXplIik7CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9n KFBHX0xPR19XQVJOSU5HLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgInJlcXVpcmVkIFdBTCBj b3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIHB1Ymxpc2hlciIpOworCQlyZXBvcnRfY3JlYXRlc3Vi X2xvZyhQR19MT0dfV0FSTklORywgUEdfTE9HX0hJTlQsCisJCQkJCQkJICJTZXQgdGhlIGNvbmZp Z3VyYXRpb24gcGFyYW1ldGVyIFwiJXNcIiB0byAtMSB0byBlbnN1cmUgdGhhdCByZXF1aXJlZCBX QUwgZmlsZXMgYXJlIG5vdCBwcmVtYXR1cmVseSByZW1vdmVkLiIsCisJCQkJCQkJICJtYXhfc2xv dF93YWxfa2VlcF9zaXplIik7CiAJfQogCiAJcGdfZnJlZSh3YWxfbGV2ZWwpOwpAQCAtMTEwNiwx NCArMTE5OCwxNiBAQCBjaGVja19zdWJzY3JpYmVyKGNvbnN0IHN0cnVjdCBMb2dpY2FsUmVwSW5m byAqZGJpbmZvKQogCWludAkJCW1heF9yZXBsb3JpZ2luczsKIAlpbnQJCQltYXhfd3Byb2NzOwog Ci0JcGdfbG9nX2luZm8oImNoZWNraW5nIHNldHRpbmdzIG9uIHN1YnNjcmliZXIiKTsKKwlyZXBv cnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgImNo ZWNraW5nIHNldHRpbmdzIG9uIHN1YnNjcmliZXIiKTsKIAogCWNvbm4gPSBjb25uZWN0X2RhdGFi YXNlKGRiaW5mb1swXS5zdWJjb25uaW5mbywgdHJ1ZSk7CiAKIAkvKiBUaGUgdGFyZ2V0IHNlcnZl ciBtdXN0IGJlIGEgc3RhbmRieSAqLwogCWlmICghc2VydmVyX2lzX2luX3JlY292ZXJ5KGNvbm4p KQogCXsKLQkJcGdfbG9nX2Vycm9yKCJ0YXJnZXQgc2VydmVyIG11c3QgYmUgYSBzdGFuZGJ5Iik7 CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJ CQkJCQkJICJ0YXJnZXQgc2VydmVyIG11c3QgYmUgYSBzdGFuZGJ5Iik7CiAJCWRpc2Nvbm5lY3Rf ZGF0YWJhc2UoY29ubiwgdHJ1ZSk7CiAJfQogCkBAIC0xMTM3LDggKzEyMzEsOSBAQCBjaGVja19z dWJzY3JpYmVyKGNvbnN0IHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogCiAJaWYgKFBR cmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQogCXsKLQkJcGdfbG9nX2Vycm9y KCJjb3VsZCBub3Qgb2J0YWluIHN1YnNjcmliZXIgc2V0dGluZ3M6ICVzIiwKLQkJCQkJIFBRcmVz dWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJS T1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCSAiY291bGQgbm90IG9idGFpbiBzdWJzY3JpYmVy IHNldHRpbmdzOiAlcyIsCisJCQkJCQkJIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOwogCQlk aXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIHRydWUpOwogCX0KIApAQCAtMTE0OCwxMiArMTI0Mywx NiBAQCBjaGVja19zdWJzY3JpYmVyKGNvbnN0IHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZv KQogCWlmIChzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIDMsIDApLCAiIikgIT0gMCkKIAkJcHJpbWFy eV9zbG90X25hbWUgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIDMsIDApKTsKIAotCXBnX2xv Z19kZWJ1Zygic3Vic2NyaWJlcjogbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczogJWQi LAotCQkJCSBtYXhfbHJ3b3JrZXJzKTsKLQlwZ19sb2dfZGVidWcoInN1YnNjcmliZXI6IG1heF9h Y3RpdmVfcmVwbGljYXRpb25fb3JpZ2luczogJWQiLCBtYXhfcmVwbG9yaWdpbnMpOwotCXBnX2xv Z19kZWJ1Zygic3Vic2NyaWJlcjogbWF4X3dvcmtlcl9wcm9jZXNzZXM6ICVkIiwgbWF4X3dwcm9j cyk7CisJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0RFQlVHLCBQR19MT0dfUFJJTUFSWSwK KwkJCQkJCSAic3Vic2NyaWJlcjogbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczogJWQi LAorCQkJCQkJIG1heF9scndvcmtlcnMpOworCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19E RUJVRywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgInN1YnNjcmliZXI6IG1heF9hY3RpdmVfcmVw bGljYXRpb25fb3JpZ2luczogJWQiLCBtYXhfcmVwbG9yaWdpbnMpOworCXJlcG9ydF9jcmVhdGVz dWJfbG9nKFBHX0xPR19ERUJVRywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgInN1YnNjcmliZXI6 IG1heF93b3JrZXJfcHJvY2Vzc2VzOiAlZCIsIG1heF93cHJvY3MpOwogCWlmIChwcmltYXJ5X3Ns b3RfbmFtZSkKLQkJcGdfbG9nX2RlYnVnKCJzdWJzY3JpYmVyOiBwcmltYXJ5X3Nsb3RfbmFtZTog JXMiLCBwcmltYXJ5X3Nsb3RfbmFtZSk7CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19E RUJVRywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkJICJzdWJzY3JpYmVyOiBwcmltYXJ5X3Nsb3Rf bmFtZTogJXMiLCBwcmltYXJ5X3Nsb3RfbmFtZSk7CiAKIAlQUWNsZWFyKHJlcyk7CiAKQEAgLTEx NjEsMjggKzEyNjAsMzQgQEAgY2hlY2tfc3Vic2NyaWJlcihjb25zdCBzdHJ1Y3QgTG9naWNhbFJl cEluZm8gKmRiaW5mbykKIAogCWlmIChtYXhfcmVwbG9yaWdpbnMgPCBudW1fZGJzKQogCXsKLQkJ cGdfbG9nX2Vycm9yKCJzdWJzY3JpYmVyIHJlcXVpcmVzICVkIGFjdGl2ZSByZXBsaWNhdGlvbiBv cmlnaW5zLCBidXQgb25seSAlZCByZW1haW4iLAotCQkJCQkgbnVtX2RicywgbWF4X3JlcGxvcmln aW5zKTsKLQkJcGdfbG9nX2Vycm9yX2hpbnQoIkluY3JlYXNlIHRoZSBjb25maWd1cmF0aW9uIHBh cmFtZXRlciBcIiVzXCIgdG8gYXQgbGVhc3QgJWQuIiwKLQkJCQkJCSAgIm1heF9hY3RpdmVfcmVw bGljYXRpb25fb3JpZ2lucyIsIG51bV9kYnMpOworCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19M T0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCSAic3Vic2NyaWJlciByZXF1aXJlcyAl ZCBhY3RpdmUgcmVwbGljYXRpb24gb3JpZ2lucywgYnV0IG9ubHkgJWQgcmVtYWluIiwKKwkJCQkJ CQkgbnVtX2RicywgbWF4X3JlcGxvcmlnaW5zKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdf TE9HX0VSUk9SLCBQR19MT0dfSElOVCwKKwkJCQkJCQkgIkluY3JlYXNlIHRoZSBjb25maWd1cmF0 aW9uIHBhcmFtZXRlciBcIiVzXCIgdG8gYXQgbGVhc3QgJWQuIiwKKwkJCQkJCQkgIm1heF9hY3Rp dmVfcmVwbGljYXRpb25fb3JpZ2lucyIsIG51bV9kYnMpOwogCQlmYWlsZWQgPSB0cnVlOwogCX0K IAogCWlmIChtYXhfbHJ3b3JrZXJzIDwgbnVtX2RicykKIAl7Ci0JCXBnX2xvZ19lcnJvcigic3Vi c2NyaWJlciByZXF1aXJlcyAlZCBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlcnMsIGJ1dCBvbmx5 ICVkIHJlbWFpbiIsCi0JCQkJCSBudW1fZGJzLCBtYXhfbHJ3b3JrZXJzKTsKLQkJcGdfbG9nX2Vy cm9yX2hpbnQoIkluY3JlYXNlIHRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBcIiVzXCIgdG8g YXQgbGVhc3QgJWQuIiwKLQkJCQkJCSAgIm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMi LCBudW1fZGJzKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0df UFJJTUFSWSwKKwkJCQkJCQkgInN1YnNjcmliZXIgcmVxdWlyZXMgJWQgbG9naWNhbCByZXBsaWNh dGlvbiB3b3JrZXJzLCBidXQgb25seSAlZCByZW1haW4iLAorCQkJCQkJCSBudW1fZGJzLCBtYXhf bHJ3b3JrZXJzKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0df SElOVCwKKwkJCQkJCQkgIkluY3JlYXNlIHRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBcIiVz XCIgdG8gYXQgbGVhc3QgJWQuIiwKKwkJCQkJCQkgIm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dv cmtlcnMiLCBudW1fZGJzKTsKIAkJZmFpbGVkID0gdHJ1ZTsKIAl9CiAKIAlpZiAobWF4X3dwcm9j cyA8IG51bV9kYnMgKyAxKQogCXsKLQkJcGdfbG9nX2Vycm9yKCJzdWJzY3JpYmVyIHJlcXVpcmVz ICVkIHdvcmtlciBwcm9jZXNzZXMsIGJ1dCBvbmx5ICVkIHJlbWFpbiIsCi0JCQkJCSBudW1fZGJz ICsgMSwgbWF4X3dwcm9jcyk7Ci0JCXBnX2xvZ19lcnJvcl9oaW50KCJJbmNyZWFzZSB0aGUgY29u ZmlndXJhdGlvbiBwYXJhbWV0ZXIgXCIlc1wiIHRvIGF0IGxlYXN0ICVkLiIsCi0JCQkJCQkgICJt YXhfd29ya2VyX3Byb2Nlc3NlcyIsIG51bV9kYnMgKyAxKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9s b2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgInN1YnNjcmliZXIgcmVx dWlyZXMgJWQgd29ya2VyIHByb2Nlc3NlcywgYnV0IG9ubHkgJWQgcmVtYWluIiwKKwkJCQkJCQkg bnVtX2RicyArIDEsIG1heF93cHJvY3MpOworCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0df RVJST1IsIFBHX0xPR19ISU5ULAorCQkJCQkJCSAiSW5jcmVhc2UgdGhlIGNvbmZpZ3VyYXRpb24g cGFyYW1ldGVyIFwiJXNcIiB0byBhdCBsZWFzdCAlZC4iLAorCQkJCQkJCSAibWF4X3dvcmtlcl9w cm9jZXNzZXMiLCBudW1fZGJzICsgMSk7CiAJCWZhaWxlZCA9IHRydWU7CiAJfQogCkBAIC0xMjE1 LDE5ICsxMzIwLDIyIEBAIGRyb3BfZXhpc3Rpbmdfc3Vic2NyaXB0aW9uKFBHY29ubiAqY29ubiwg Y29uc3QgY2hhciAqc3VibmFtZSwgY29uc3QgY2hhciAqZGJuYW1lCiAJYXBwZW5kUFFFeHBCdWZm ZXIocXVlcnksICIgRFJPUCBTVUJTQ1JJUFRJT04gJXM7Iiwgc3VibmFtZSk7CiAKIAlpZiAoZHJ5 X3J1bikKLQkJcGdfbG9nX2luZm8oImRyeS1ydW46IHdvdWxkIGRyb3Agc3Vic2NyaXB0aW9uIFwi JXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAotCQkJCQlzdWJuYW1lLCBkYm5hbWUpOworCQlyZXBv cnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkJICJk cnktcnVuOiB3b3VsZCBkcm9wIHN1YnNjcmlwdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wi IiwKKwkJCQkJCQkgc3VibmFtZSwgZGJuYW1lKTsKIAllbHNlCiAJewotCQlwZ19sb2dfaW5mbygi ZHJvcHBpbmcgc3Vic2NyaXB0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAotCQkJCQlz dWJuYW1lLCBkYm5hbWUpOworCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfSU5GTywgUEdf TE9HX1BSSU1BUlksCisJCQkJCQkJICJkcm9wcGluZyBzdWJzY3JpcHRpb24gXCIlc1wiIGluIGRh dGFiYXNlIFwiJXNcIiIsCisJCQkJCQkJIHN1Ym5hbWUsIGRibmFtZSk7CiAKIAkJcmVzID0gUFFl eGVjKGNvbm4sIHF1ZXJ5LT5kYXRhKTsKIAogCQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQ R1JFU19DT01NQU5EX09LKQogCQl7Ci0JCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBkcm9wIHN1 YnNjcmlwdGlvbiBcIiVzXCI6ICVzIiwKLQkJCQkJCSBzdWJuYW1lLCBQUXJlc3VsdEVycm9yTWVz c2FnZShyZXMpKTsKKwkJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9H X1BSSU1BUlksCisJCQkJCQkJCSAiY291bGQgbm90IGRyb3Agc3Vic2NyaXB0aW9uIFwiJXNcIjog JXMiLAorCQkJCQkJCQkgc3VibmFtZSwgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CiAJCQlk aXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIHRydWUpOwogCQl9CiAKQEAgLTEyNjEsOCArMTM2OSw5 IEBAIGNoZWNrX2FuZF9kcm9wX2V4aXN0aW5nX3N1YnNjcmlwdGlvbnMoUEdjb25uICpjb25uLAog CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQogCXsKLQkJcGdf bG9nX2Vycm9yKCJjb3VsZCBub3Qgb2J0YWluIHByZS1leGlzdGluZyBzdWJzY3JpcHRpb25zOiAl cyIsCi0JCQkJCSBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKKwkJcmVwb3J0X2NyZWF0ZXN1 Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgImNvdWxkIG5vdCBv YnRhaW4gcHJlLWV4aXN0aW5nIHN1YnNjcmlwdGlvbnM6ICVzIiwKKwkJCQkJCQkgUFFyZXN1bHRF cnJvck1lc3NhZ2UocmVzKSk7CiAJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29ubiwgdHJ1ZSk7CiAJ fQogCkBAIC0xMzczLDcgKzE0ODIsOCBAQCBzZXR1cF9yZWNvdmVyeShjb25zdCBzdHJ1Y3QgTG9n aWNhbFJlcEluZm8gKmRiaW5mbywgY29uc3QgY2hhciAqZGF0YWRpciwgY29uc3QgYwogCQkJCQkJ ICBsc24pOwogCX0KIAotCXBnX2xvZ19kZWJ1ZygicmVjb3ZlcnkgcGFyYW1ldGVyczpcbiVzIiwg cmVjb3Zlcnljb25mY29udGVudHMtPmRhdGEpOworCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xP R19ERUJVRywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgInJlY292ZXJ5IHBhcmFtZXRlcnM6XG4l cyIsIHJlY292ZXJ5Y29uZmNvbnRlbnRzLT5kYXRhKTsKIAogCWlmICghZHJ5X3J1bikKIAl7CkBA IC0xMzg1LDEwICsxNDk1LDEwIEBAIHNldHVwX3JlY292ZXJ5KGNvbnN0IHN0cnVjdCBMb2dpY2Fs UmVwSW5mbyAqZGJpbmZvLCBjb25zdCBjaGFyICpkYXRhZGlyLCBjb25zdCBjCiAJCQkJIElOQ0xV REVEX0NPTkZfRklMRSk7CiAJCWZkID0gZm9wZW4oY29uZl9maWxlbmFtZSwgInciKTsKIAkJaWYg KGZkID09IE5VTEwpCi0JCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCI6ICVt IiwgY29uZl9maWxlbmFtZSk7CisJCQlyZXBvcnRfY3JlYXRlc3ViX2ZhdGFsKCJjb3VsZCBub3Qg b3BlbiBmaWxlIFwiJXNcIjogJW0iLCBjb25mX2ZpbGVuYW1lKTsKIAogCQlpZiAoZndyaXRlKHJl Y292ZXJ5Y29uZmNvbnRlbnRzLT5kYXRhLCByZWNvdmVyeWNvbmZjb250ZW50cy0+bGVuLCAxLCBm ZCkgIT0gMSkKLQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgd3JpdGUgdG8gZmlsZSBcIiVzXCI6ICVt IiwgY29uZl9maWxlbmFtZSk7CisJCQlyZXBvcnRfY3JlYXRlc3ViX2ZhdGFsKCJjb3VsZCBub3Qg d3JpdGUgdG8gZmlsZSBcIiVzXCI6ICVtIiwgY29uZl9maWxlbmFtZSk7CiAKIAkJZmNsb3NlKGZk KTsKIAkJcmVjb3ZlcnlfcGFyYW1zX3NldCA9IHRydWU7CkBAIC0xNDI3LDkgKzE1MzcsMTEgQEAg ZHJvcF9wcmltYXJ5X3JlcGxpY2F0aW9uX3Nsb3Qoc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmlu Zm8sIGNvbnN0IGNoYXIgKnNsb3RuYW0KIAl9CiAJZWxzZQogCXsKLQkJcGdfbG9nX3dhcm5pbmco ImNvdWxkIG5vdCBkcm9wIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIG9uIHByaW1hcnkiLAotCQkJ CQkgICBzbG90bmFtZSk7Ci0JCXBnX2xvZ193YXJuaW5nX2hpbnQoIkRyb3AgdGhpcyByZXBsaWNh dGlvbiBzbG90IHNvb24gdG8gYXZvaWQgcmV0ZW50aW9uIG9mIFdBTCBmaWxlcy4iKTsKKwkJcmVw b3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX1dBUk5JTkcsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJ CSAiY291bGQgbm90IGRyb3AgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgb24gcHJpbWFyeSIsCisJ CQkJCQkJIHNsb3RuYW1lKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX1dBUk5JTkcs IFBHX0xPR19ISU5ULAorCQkJCQkJCSAiRHJvcCB0aGlzIHJlcGxpY2F0aW9uIHNsb3Qgc29vbiB0 byBhdm9pZCByZXRlbnRpb24gb2YgV0FMIGZpbGVzLiIpOwogCX0KIH0KIApAQCAtMTQ2MSw5ICsx NTczLDExIEBAIGRyb3BfZmFpbG92ZXJfcmVwbGljYXRpb25fc2xvdHMoc3RydWN0IExvZ2ljYWxS ZXBJbmZvICpkYmluZm8pCiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlwZ19sb2dfd2FybmluZygiY291 bGQgbm90IG9idGFpbiBmYWlsb3ZlciByZXBsaWNhdGlvbiBzbG90IGluZm9ybWF0aW9uOiAlcyIs Ci0JCQkJCQkgICBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKLQkJCXBnX2xvZ193YXJuaW5n X2hpbnQoIkRyb3AgdGhlIGZhaWxvdmVyIHJlcGxpY2F0aW9uIHNsb3RzIG9uIHN1YnNjcmliZXIg c29vbiB0byBhdm9pZCByZXRlbnRpb24gb2YgV0FMIGZpbGVzLiIpOworCQkJcmVwb3J0X2NyZWF0 ZXN1Yl9sb2coUEdfTE9HX1dBUk5JTkcsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCQkgImNvdWxk IG5vdCBvYnRhaW4gZmFpbG92ZXIgcmVwbGljYXRpb24gc2xvdCBpbmZvcm1hdGlvbjogJXMiLAor CQkJCQkJCQkgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCQlyZXBvcnRfY3JlYXRlc3Vi X2xvZyhQR19MT0dfV0FSTklORywgUEdfTE9HX0hJTlQsCisJCQkJCQkJCSAiRHJvcCB0aGUgZmFp bG92ZXIgcmVwbGljYXRpb24gc2xvdHMgb24gc3Vic2NyaWJlciBzb29uIHRvIGF2b2lkIHJldGVu dGlvbiBvZiBXQUwgZmlsZXMuIik7CiAJCX0KIAogCQlQUWNsZWFyKHJlcyk7CkBAIC0xNDcxLDgg KzE1ODUsMTAgQEAgZHJvcF9mYWlsb3Zlcl9yZXBsaWNhdGlvbl9zbG90cyhzdHJ1Y3QgTG9naWNh bFJlcEluZm8gKmRiaW5mbykKIAl9CiAJZWxzZQogCXsKLQkJcGdfbG9nX3dhcm5pbmcoImNvdWxk IG5vdCBkcm9wIGZhaWxvdmVyIHJlcGxpY2F0aW9uIHNsb3QiKTsKLQkJcGdfbG9nX3dhcm5pbmdf aGludCgiRHJvcCB0aGUgZmFpbG92ZXIgcmVwbGljYXRpb24gc2xvdHMgb24gc3Vic2NyaWJlciBz b29uIHRvIGF2b2lkIHJldGVudGlvbiBvZiBXQUwgZmlsZXMuIik7CisJCXJlcG9ydF9jcmVhdGVz dWJfbG9nKFBHX0xPR19XQVJOSU5HLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgImNvdWxkIG5v dCBkcm9wIGZhaWxvdmVyIHJlcGxpY2F0aW9uIHNsb3QiKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9s b2coUEdfTE9HX1dBUk5JTkcsIFBHX0xPR19ISU5ULAorCQkJCQkJCSAiRHJvcCB0aGUgZmFpbG92 ZXIgcmVwbGljYXRpb24gc2xvdHMgb24gc3Vic2NyaWJlciBzb29uIHRvIGF2b2lkIHJldGVudGlv biBvZiBXQUwgZmlsZXMuIik7CiAJfQogfQogCkBAIC0xNDk0LDExICsxNjEwLDEzIEBAIGNyZWF0 ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoUEdjb25uICpjb25uLCBzdHJ1Y3QgTG9naWNhbFJl cEluZm8gKmRiaW5mbykKIAlBc3NlcnQoY29ubiAhPSBOVUxMKTsKIAogCWlmIChkcnlfcnVuKQot CQlwZ19sb2dfaW5mbygiZHJ5LXJ1bjogd291bGQgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90 IFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIgb24gcHVibGlzaGVyIiwKLQkJCQkJc2xvdF9uYW1l LCBkYmluZm8tPmRibmFtZSk7CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQ R19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgImRyeS1ydW46IHdvdWxkIGNyZWF0ZSB0aGUgcmVwbGlj YXRpb24gc2xvdCBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIG9uIHB1Ymxpc2hlciIsCisJCQkJ CQkJIHNsb3RfbmFtZSwgZGJpbmZvLT5kYm5hbWUpOwogCWVsc2UKLQkJcGdfbG9nX2luZm8oImNy ZWF0aW5nIHRoZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIgb24g cHVibGlzaGVyIiwKLQkJCQkJc2xvdF9uYW1lLCBkYmluZm8tPmRibmFtZSk7CisJCXJlcG9ydF9j cmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgImNyZWF0 aW5nIHRoZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIgb24gcHVi bGlzaGVyIiwKKwkJCQkJCQkgc2xvdF9uYW1lLCBkYmluZm8tPmRibmFtZSk7CiAKIAlzbG90X25h bWVfZXNjID0gUFFlc2NhcGVMaXRlcmFsKGNvbm4sIHNsb3RfbmFtZSwgc3RybGVuKHNsb3RfbmFt ZSkpOwogCkBAIC0xNTA5LDE2ICsxNjI3LDE4IEBAIGNyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9u X3Nsb3QoUEdjb25uICpjb25uLCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbykKIAogCVBR ZnJlZW1lbShzbG90X25hbWVfZXNjKTsKIAotCXBnX2xvZ19kZWJ1ZygiY29tbWFuZCBpczogJXMi LCBzdHItPmRhdGEpOworCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19ERUJVRywgUEdfTE9H X1BSSU1BUlksCisJCQkJCQkgImNvbW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKIAogCWlmICgh ZHJ5X3J1bikKIAl7CiAJCXJlcyA9IFBRZXhlYyhjb25uLCBzdHItPmRhdGEpOwogCQlpZiAoUFFy ZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCiAJCXsKLQkJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IGNyZWF0ZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBpbiBkYXRhYmFzZSBc IiVzXCI6ICVzIiwKLQkJCQkJCSBzbG90X25hbWUsIGRiaW5mby0+ZGJuYW1lLAotCQkJCQkJIFBR cmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9H X0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkJICJjb3VsZCBub3QgY3JlYXRlIHJlcGxp Y2F0aW9uIHNsb3QgXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIjogJXMiLAorCQkJCQkJCQkgc2xv dF9uYW1lLCBkYmluZm8tPmRibmFtZSwKKwkJCQkJCQkJIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJl cykpOwogCQkJUFFjbGVhcihyZXMpOwogCQkJZGVzdHJveVBRRXhwQnVmZmVyKHN0cik7CiAJCQly ZXR1cm4gTlVMTDsKQEAgLTE1NDcsMTEgKzE2NjcsMTMgQEAgZHJvcF9yZXBsaWNhdGlvbl9zbG90 KFBHY29ubiAqY29ubiwgc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8sCiAJQXNzZXJ0KGNv bm4gIT0gTlVMTCk7CiAKIAlpZiAoZHJ5X3J1bikKLQkJcGdfbG9nX2luZm8oImRyeS1ydW46IHdv dWxkIGRyb3AgdGhlIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIs Ci0JCQkJCXNsb3RfbmFtZSwgZGJpbmZvLT5kYm5hbWUpOworCQlyZXBvcnRfY3JlYXRlc3ViX2xv ZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkJICJkcnktcnVuOiB3b3VsZCBk cm9wIHRoZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJ CQkJCSBzbG90X25hbWUsIGRiaW5mby0+ZGJuYW1lKTsKIAllbHNlCi0JCXBnX2xvZ19pbmZvKCJk cm9wcGluZyB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwK LQkJCQkJc2xvdF9uYW1lLCBkYmluZm8tPmRibmFtZSk7CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9n KFBHX0xPR19JTkZPLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgImRyb3BwaW5nIHRoZSByZXBs aWNhdGlvbiBzbG90IFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJCQkJCSBzbG90X25h bWUsIGRiaW5mby0+ZGJuYW1lKTsKIAogCXNsb3RfbmFtZV9lc2MgPSBQUWVzY2FwZUxpdGVyYWwo Y29ubiwgc2xvdF9uYW1lLCBzdHJsZW4oc2xvdF9uYW1lKSk7CiAKQEAgLTE1NTksMTUgKzE2ODEs MTcgQEAgZHJvcF9yZXBsaWNhdGlvbl9zbG90KFBHY29ubiAqY29ubiwgc3RydWN0IExvZ2ljYWxS ZXBJbmZvICpkYmluZm8sCiAKIAlQUWZyZWVtZW0oc2xvdF9uYW1lX2VzYyk7CiAKLQlwZ19sb2df ZGVidWcoImNvbW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKKwlyZXBvcnRfY3JlYXRlc3ViX2xv ZyhQR19MT0dfREVCVUcsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJICJjb21tYW5kIGlzOiAlcyIs IHN0ci0+ZGF0YSk7CiAKIAlpZiAoIWRyeV9ydW4pCiAJewogCQlyZXMgPSBQUWV4ZWMoY29ubiwg c3RyLT5kYXRhKTsKIAkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09L KQogCQl7Ci0JCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBkcm9wIHJlcGxpY2F0aW9uIHNsb3Qg XCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIjogJXMiLAotCQkJCQkJIHNsb3RfbmFtZSwgZGJpbmZv LT5kYm5hbWUsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQkJcmVwb3J0X2NyZWF0ZXN1 Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkJICJjb3VsZCBub3Qg ZHJvcCByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCI6ICVzIiwKKwkJ CQkJCQkJIHNsb3RfbmFtZSwgZGJpbmZvLT5kYm5hbWUsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJl cykpOwogCQkJZGJpbmZvLT5tYWRlX3JlcGxzbG90ID0gZmFsc2U7CS8qIGRvbid0IHRyeSBhZ2Fp bi4gKi8KIAkJfQogCkBAIC0xNTg3LDI1ICsxNzExLDMyIEBAIHBnX2N0bF9zdGF0dXMoY29uc3Qg Y2hhciAqcGdfY3RsX2NtZCwgaW50IHJjKQogCXsKIAkJaWYgKFdJRkVYSVRFRChyYykpCiAJCXsK LQkJCXBnX2xvZ19lcnJvcigicGdfY3RsIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAlZCIsIFdFWElU U1RBVFVTKHJjKSk7CisJCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xP R19QUklNQVJZLAorCQkJCQkJCQkgInBnX2N0bCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJWQiLAor CQkJCQkJCQkgV0VYSVRTVEFUVVMocmMpKTsKIAkJfQogCQllbHNlIGlmIChXSUZTSUdOQUxFRChy YykpCiAJCXsKICNpZiBkZWZpbmVkKFdJTjMyKQotCQkJcGdfbG9nX2Vycm9yKCJwZ19jdGwgd2Fz IHRlcm1pbmF0ZWQgYnkgZXhjZXB0aW9uIDB4JVgiLAotCQkJCQkJIFdURVJNU0lHKHJjKSk7Ci0J CQlwZ19sb2dfZXJyb3JfZGV0YWlsKCJTZWUgQyBpbmNsdWRlIGZpbGUgXCJudHN0YXR1cy5oXCIg Zm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGhleGFkZWNpbWFsIHZhbHVlLiIpOworCQkJcmVwb3J0 X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkJICJw Z19jdGwgd2FzIHRlcm1pbmF0ZWQgYnkgZXhjZXB0aW9uIDB4JVgiLAorCQkJCQkJCQkgV1RFUk1T SUcocmMpKTsKKwkJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX0RF VEFJTCwKKwkJCQkJCQkJICJTZWUgQyBpbmNsdWRlIGZpbGUgXCJudHN0YXR1cy5oXCIgZm9yIGEg ZGVzY3JpcHRpb24gb2YgdGhlIGhleGFkZWNpbWFsIHZhbHVlLiIpOwogI2Vsc2UKLQkJCXBnX2xv Z19lcnJvcigicGdfY3RsIHdhcyB0ZXJtaW5hdGVkIGJ5IHNpZ25hbCAlZDogJXMiLAotCQkJCQkJ IFdURVJNU0lHKHJjKSwgcGdfc3Ryc2lnbmFsKFdURVJNU0lHKHJjKSkpOworCQkJcmVwb3J0X2Ny ZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkJICJwZ19j dGwgd2FzIHRlcm1pbmF0ZWQgYnkgc2lnbmFsICVkOiAlcyIsCisJCQkJCQkJCSBXVEVSTVNJRyhy YyksIHBnX3N0cnNpZ25hbChXVEVSTVNJRyhyYykpKTsKICNlbmRpZgogCQl9CiAJCWVsc2UKIAkJ ewotCQkJcGdfbG9nX2Vycm9yKCJwZ19jdGwgZXhpdGVkIHdpdGggdW5yZWNvZ25pemVkIHN0YXR1 cyAlZCIsIHJjKTsKKwkJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9H X1BSSU1BUlksCisJCQkJCQkJCSAicGdfY3RsIGV4aXRlZCB3aXRoIHVucmVjb2duaXplZCBzdGF0 dXMgJWQiLCByYyk7CiAJCX0KIAotCQlwZ19sb2dfZXJyb3JfZGV0YWlsKCJUaGUgZmFpbGVkIGNv bW1hbmQgd2FzOiAlcyIsIHBnX2N0bF9jbWQpOworCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19M T0dfRVJST1IsIFBHX0xPR19ERVRBSUwsCisJCQkJCQkJICJUaGUgZmFpbGVkIGNvbW1hbmQgd2Fz OiAlcyIsIHBnX2N0bF9jbWQpOwogCQlleGl0KDEpOwogCX0KIH0KQEAgLTE2NTAsMTIgKzE3ODEs MTQgQEAgc3RhcnRfc3RhbmRieV9zZXJ2ZXIoY29uc3Qgc3RydWN0IENyZWF0ZVN1YnNjcmliZXJP cHRpb25zICpvcHQsIGJvb2wgcmVzdHJpY3RlZF8KIAlpZiAocmVzdHJpY3RfbG9naWNhbF93b3Jr ZXIpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHBnX2N0bF9jbWQsICIgLW8gXCItYyBtYXhfbG9n aWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzPTBcIiIpOwogCi0JcGdfbG9nX2RlYnVnKCJwZ19jdGwg Y29tbWFuZCBpczogJXMiLCBwZ19jdGxfY21kLT5kYXRhKTsKKwlyZXBvcnRfY3JlYXRlc3ViX2xv ZyhQR19MT0dfREVCVUcsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJICJwZ19jdGwgY29tbWFuZCBp czogJXMiLCBwZ19jdGxfY21kLT5kYXRhKTsKIAlyYyA9IHN5c3RlbShwZ19jdGxfY21kLT5kYXRh KTsKIAlwZ19jdGxfc3RhdHVzKHBnX2N0bF9jbWQtPmRhdGEsIHJjKTsKIAlzdGFuZGJ5X3J1bm5p bmcgPSB0cnVlOwogCWRlc3Ryb3lQUUV4cEJ1ZmZlcihwZ19jdGxfY21kKTsKLQlwZ19sb2dfaW5m bygic2VydmVyIHdhcyBzdGFydGVkIik7CisJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lO Rk8sIFBHX0xPR19QUklNQVJZLAorCQkJCQkJICJzZXJ2ZXIgd2FzIHN0YXJ0ZWQiKTsKIH0KIAog c3RhdGljIHZvaWQKQEAgLTE2NjYsMTEgKzE3OTksMTMgQEAgc3RvcF9zdGFuZGJ5X3NlcnZlcihj b25zdCBjaGFyICpkYXRhZGlyKQogCiAJcGdfY3RsX2NtZCA9IHBzcHJpbnRmKCJcIiVzXCIgc3Rv cCAtRCBcIiVzXCIgLXMiLCBwZ19jdGxfcGF0aCwKIAkJCQkJCSAgZGF0YWRpcik7Ci0JcGdfbG9n X2RlYnVnKCJwZ19jdGwgY29tbWFuZCBpczogJXMiLCBwZ19jdGxfY21kKTsKKwlyZXBvcnRfY3Jl YXRlc3ViX2xvZyhQR19MT0dfREVCVUcsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJICJwZ19jdGwg Y29tbWFuZCBpczogJXMiLCBwZ19jdGxfY21kKTsKIAlyYyA9IHN5c3RlbShwZ19jdGxfY21kKTsK IAlwZ19jdGxfc3RhdHVzKHBnX2N0bF9jbWQsIHJjKTsKIAlzdGFuZGJ5X3J1bm5pbmcgPSBmYWxz ZTsKLQlwZ19sb2dfaW5mbygic2VydmVyIHdhcyBzdG9wcGVkIik7CisJcmVwb3J0X2NyZWF0ZXN1 Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAorCQkJCQkJICJzZXJ2ZXIgd2FzIHN0 b3BwZWQiKTsKIH0KIAogLyoKQEAgLTE2ODksNyArMTgyNCw4IEBAIHdhaXRfZm9yX2VuZF9yZWNv dmVyeShjb25zdCBjaGFyICpjb25uaW5mbywgY29uc3Qgc3RydWN0IENyZWF0ZVN1YnNjcmliZXJP cHRpb25zCiAJYm9vbAkJcmVhZHkgPSBmYWxzZTsKIAlpbnQJCQl0aW1lciA9IDA7CiAKLQlwZ19s b2dfaW5mbygid2FpdGluZyBmb3IgdGhlIHRhcmdldCBzZXJ2ZXIgdG8gcmVhY2ggdGhlIGNvbnNp c3RlbnQgc3RhdGUiKTsKKwlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfSU5GTywgUEdfTE9H X1BSSU1BUlksCisJCQkJCQkgIndhaXRpbmcgZm9yIHRoZSB0YXJnZXQgc2VydmVyIHRvIHJlYWNo IHRoZSBjb25zaXN0ZW50IHN0YXRlIik7CiAKIAljb25uID0gY29ubmVjdF9kYXRhYmFzZShjb25u aW5mbywgdHJ1ZSk7CiAKQEAgLTE3MDcsNyArMTg0Myw4IEBAIHdhaXRfZm9yX2VuZF9yZWNvdmVy eShjb25zdCBjaGFyICpjb25uaW5mbywgY29uc3Qgc3RydWN0IENyZWF0ZVN1YnNjcmliZXJPcHRp b25zCiAJCWlmIChvcHQtPnJlY292ZXJ5X3RpbWVvdXQgPiAwICYmIHRpbWVyID49IG9wdC0+cmVj b3ZlcnlfdGltZW91dCkKIAkJewogCQkJc3RvcF9zdGFuZGJ5X3NlcnZlcihzdWJzY3JpYmVyX2Rp cik7Ci0JCQlwZ19sb2dfZXJyb3IoInJlY292ZXJ5IHRpbWVkIG91dCIpOworCQkJcmVwb3J0X2Ny ZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkJICJyZWNv dmVyeSB0aW1lZCBvdXQiKTsKIAkJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29ubiwgdHJ1ZSk7CiAJ CX0KIApAQCAtMTcxOSwxMCArMTg1NiwxMiBAQCB3YWl0X2Zvcl9lbmRfcmVjb3ZlcnkoY29uc3Qg Y2hhciAqY29ubmluZm8sIGNvbnN0IHN0cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0aW9ucwogCWRp c2Nvbm5lY3RfZGF0YWJhc2UoY29ubiwgZmFsc2UpOwogCiAJaWYgKCFyZWFkeSkKLQkJcGdfZmF0 YWwoInNlcnZlciBkaWQgbm90IGVuZCByZWNvdmVyeSIpOworCQlyZXBvcnRfY3JlYXRlc3ViX2Zh dGFsKCJzZXJ2ZXIgZGlkIG5vdCBlbmQgcmVjb3ZlcnkiKTsKIAotCXBnX2xvZ19pbmZvKCJ0YXJn ZXQgc2VydmVyIHJlYWNoZWQgdGhlIGNvbnNpc3RlbnQgc3RhdGUiKTsKLQlwZ19sb2dfaW5mb19o aW50KCJJZiBwZ19jcmVhdGVzdWJzY3JpYmVyIGZhaWxzIGFmdGVyIHRoaXMgcG9pbnQsIHlvdSBt dXN0IHJlY3JlYXRlIHRoZSBwaHlzaWNhbCByZXBsaWNhIGJlZm9yZSBjb250aW51aW5nLiIpOwor CXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJ CSAidGFyZ2V0IHNlcnZlciByZWFjaGVkIHRoZSBjb25zaXN0ZW50IHN0YXRlIik7CisJcmVwb3J0 X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19ISU5ULAorCQkJCQkJICJJZiBwZ19j cmVhdGVzdWJzY3JpYmVyIGZhaWxzIGFmdGVyIHRoaXMgcG9pbnQsIHlvdSBtdXN0IHJlY3JlYXRl IHRoZSBwaHlzaWNhbCByZXBsaWNhIGJlZm9yZSBjb250aW51aW5nLiIpOwogfQogCiAvKgpAQCAt MTc0OSw4ICsxODg4LDkgQEAgY3JlYXRlX3B1YmxpY2F0aW9uKFBHY29ubiAqY29ubiwgc3RydWN0 IExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCiAJcmVzID0gUFFleGVjKGNvbm4sIHN0ci0+ZGF0YSk7 CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQogCXsKLQkJcGdf bG9nX2Vycm9yKCJjb3VsZCBub3Qgb2J0YWluIHB1YmxpY2F0aW9uIGluZm9ybWF0aW9uOiAlcyIs Ci0JCQkJCSBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9s b2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgImNvdWxkIG5vdCBvYnRh aW4gcHVibGljYXRpb24gaW5mb3JtYXRpb246ICVzIiwKKwkJCQkJCQkgUFFyZXN1bHRFcnJvck1l c3NhZ2UocmVzKSk7CiAJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29ubiwgdHJ1ZSk7CiAJfQogCkBA IC0xNzYzLDggKzE5MDMsMTAgQEAgY3JlYXRlX3B1YmxpY2F0aW9uKFBHY29ubiAqY29ubiwgc3Ry dWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCiAJCSAqIHBnX2NyZWF0ZXN1YnNjcmliZXJfIHBy ZWZpeCBmb2xsb3dlZCBieSB0aGUgZXhhY3QgZGF0YWJhc2Ugb2lkIGFuZAogCQkgKiBhIHJhbmRv bSBudW1iZXIuCiAJCSAqLwotCQlwZ19sb2dfZXJyb3IoInB1YmxpY2F0aW9uIFwiJXNcIiBhbHJl YWR5IGV4aXN0cyIsIGRiaW5mby0+cHVibmFtZSk7Ci0JCXBnX2xvZ19lcnJvcl9oaW50KCJDb25z aWRlciByZW5hbWluZyB0aGlzIHB1YmxpY2F0aW9uIGJlZm9yZSBjb250aW51aW5nLiIpOworCQly ZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJ CSAicHVibGljYXRpb24gXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwgZGJpbmZvLT5wdWJuYW1lKTsK KwkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfSElOVCwKKwkJCQkJ CQkgIkNvbnNpZGVyIHJlbmFtaW5nIHRoaXMgcHVibGljYXRpb24gYmVmb3JlIGNvbnRpbnVpbmcu Iik7CiAJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29ubiwgdHJ1ZSk7CiAJfQogCkBAIC0xNzcyLDI0 ICsxOTE0LDI4IEBAIGNyZWF0ZV9wdWJsaWNhdGlvbihQR2Nvbm4gKmNvbm4sIHN0cnVjdCBMb2dp Y2FsUmVwSW5mbyAqZGJpbmZvKQogCXJlc2V0UFFFeHBCdWZmZXIoc3RyKTsKIAogCWlmIChkcnlf cnVuKQotCQlwZ19sb2dfaW5mbygiZHJ5LXJ1bjogd291bGQgY3JlYXRlIHB1YmxpY2F0aW9uIFwi JXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAotCQkJCQlkYmluZm8tPnB1Ym5hbWUsIGRiaW5mby0+ ZGJuYW1lKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklN QVJZLAorCQkJCQkJCSAiZHJ5LXJ1bjogd291bGQgY3JlYXRlIHB1YmxpY2F0aW9uIFwiJXNcIiBp biBkYXRhYmFzZSBcIiVzXCIiLAorCQkJCQkJCSBkYmluZm8tPnB1Ym5hbWUsIGRiaW5mby0+ZGJu YW1lKTsKIAllbHNlCi0JCXBnX2xvZ19pbmZvKCJjcmVhdGluZyBwdWJsaWNhdGlvbiBcIiVzXCIg aW4gZGF0YWJhc2UgXCIlc1wiIiwKLQkJCQkJZGJpbmZvLT5wdWJuYW1lLCBkYmluZm8tPmRibmFt ZSk7CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0dfUFJJTUFSWSwK KwkJCQkJCQkgImNyZWF0aW5nIHB1YmxpY2F0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIi LAorCQkJCQkJCSBkYmluZm8tPnB1Ym5hbWUsIGRiaW5mby0+ZGJuYW1lKTsKIAogCWFwcGVuZFBR RXhwQnVmZmVyKHN0ciwgIkNSRUFURSBQVUJMSUNBVElPTiAlcyBGT1IgQUxMIFRBQkxFUyIsCiAJ CQkJCSAgaXB1Ym5hbWVfZXNjKTsKIAotCXBnX2xvZ19kZWJ1ZygiY29tbWFuZCBpczogJXMiLCBz dHItPmRhdGEpOworCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19ERUJVRywgUEdfTE9HX1BS SU1BUlksCisJCQkJCQkgImNvbW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKIAogCWlmICghZHJ5 X3J1bikKIAl7CiAJCXJlcyA9IFBRZXhlYyhjb25uLCBzdHItPmRhdGEpOwogCQlpZiAoUFFyZXN1 bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQogCQl7Ci0JCQlwZ19sb2dfZXJyb3Io ImNvdWxkIG5vdCBjcmVhdGUgcHVibGljYXRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIjog JXMiLAotCQkJCQkJIGRiaW5mby0+cHVibmFtZSwgZGJpbmZvLT5kYm5hbWUsIFBRcmVzdWx0RXJy b3JNZXNzYWdlKHJlcykpOworCQkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQ R19MT0dfUFJJTUFSWSwKKwkJCQkJCQkJICJjb3VsZCBub3QgY3JlYXRlIHB1YmxpY2F0aW9uIFwi JXNcIiBpbiBkYXRhYmFzZSBcIiVzXCI6ICVzIiwKKwkJCQkJCQkJIGRiaW5mby0+cHVibmFtZSwg ZGJpbmZvLT5kYm5hbWUsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOwogCQkJZGlzY29ubmVj dF9kYXRhYmFzZShjb25uLCB0cnVlKTsKIAkJfQogCQlQUWNsZWFyKHJlcyk7CkBAIC0xODE5LDI1 ICsxOTY1LDI5IEBAIGRyb3BfcHVibGljYXRpb24oUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpw dWJuYW1lLCBjb25zdCBjaGFyICpkYm5hbWUsCiAJcHVibmFtZV9lc2MgPSBQUWVzY2FwZUlkZW50 aWZpZXIoY29ubiwgcHVibmFtZSwgc3RybGVuKHB1Ym5hbWUpKTsKIAogCWlmIChkcnlfcnVuKQot CQlwZ19sb2dfaW5mbygiZHJ5LXJ1bjogd291bGQgZHJvcCBwdWJsaWNhdGlvbiBcIiVzXCIgaW4g ZGF0YWJhc2UgXCIlc1wiIiwKLQkJCQkJcHVibmFtZSwgZGJuYW1lKTsKKwkJcmVwb3J0X2NyZWF0 ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCSAiZHJ5LXJ1bjog d291bGQgZHJvcCBwdWJsaWNhdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKKwkJCQkJ CQkgcHVibmFtZSwgZGJuYW1lKTsKIAllbHNlCi0JCXBnX2xvZ19pbmZvKCJkcm9wcGluZyBwdWJs aWNhdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKLQkJCQkJcHVibmFtZSwgZGJuYW1l KTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAor CQkJCQkJCSAiZHJvcHBpbmcgcHVibGljYXRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIs CisJCQkJCQkJIHB1Ym5hbWUsIGRibmFtZSk7CiAKIAlhcHBlbmRQUUV4cEJ1ZmZlcihzdHIsICJE Uk9QIFBVQkxJQ0FUSU9OICVzIiwgcHVibmFtZV9lc2MpOwogCiAJUFFmcmVlbWVtKHB1Ym5hbWVf ZXNjKTsKIAotCXBnX2xvZ19kZWJ1ZygiY29tbWFuZCBpczogJXMiLCBzdHItPmRhdGEpOworCXJl cG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19ERUJVRywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkg ImNvbW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKIAogCWlmICghZHJ5X3J1bikKIAl7CiAJCXJl cyA9IFBRZXhlYyhjb25uLCBzdHItPmRhdGEpOwogCQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAh PSBQR1JFU19DT01NQU5EX09LKQogCQl7Ci0JCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBkcm9w IHB1YmxpY2F0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCI6ICVzIiwKLQkJCQkJCSBwdWJu YW1lLCBkYm5hbWUsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQkJcmVwb3J0X2NyZWF0 ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkJICJjb3VsZCBu b3QgZHJvcCBwdWJsaWNhdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiOiAlcyIsCisJCQkJ CQkJCSBwdWJuYW1lLCBkYm5hbWUsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOwogCQkJKm1h ZGVfcHVibGljYXRpb24gPSBmYWxzZTsJLyogZG9uJ3QgdHJ5IGFnYWluLiAqLwogCiAJCQkvKgpA QCAtMTg3MiwxNSArMjAyMiwxNyBAQCBjaGVja19hbmRfZHJvcF9wdWJsaWNhdGlvbnMoUEdjb25u ICpjb25uLCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbykKIAogCWlmIChkcm9wX2FsbF9w dWJzKQogCXsKLQkJcGdfbG9nX2luZm8oImRyb3BwaW5nIGFsbCBleGlzdGluZyBwdWJsaWNhdGlv bnMgaW4gZGF0YWJhc2UgXCIlc1wiIiwKLQkJCQkJZGJpbmZvLT5kYm5hbWUpOworCQlyZXBvcnRf Y3JlYXRlc3ViX2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkJICJkcm9w cGluZyBhbGwgZXhpc3RpbmcgcHVibGljYXRpb25zIGluIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkJ CQkJIGRiaW5mby0+ZGJuYW1lKTsKIAogCQkvKiBGZXRjaCBhbGwgcHVibGljYXRpb24gbmFtZXMg Ki8KIAkJcmVzID0gUFFleGVjKGNvbm4sICJTRUxFQ1QgcHVibmFtZSBGUk9NIHBnX2NhdGFsb2cu cGdfcHVibGljYXRpb247Iik7CiAJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RV UExFU19PSykKIAkJewotCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb2J0YWluIHB1YmxpY2F0 aW9uIGluZm9ybWF0aW9uOiAlcyIsCi0JCQkJCQkgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7 CisJCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAor CQkJCQkJCQkgImNvdWxkIG5vdCBvYnRhaW4gcHVibGljYXRpb24gaW5mb3JtYXRpb246ICVzIiwK KwkJCQkJCQkJIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOwogCQkJUFFjbGVhcihyZXMpOwog CQkJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uLCB0cnVlKTsKIAkJfQpAQCAtMTkwMywxMSArMjA1 NSwxMyBAQCBjaGVja19hbmRfZHJvcF9wdWJsaWNhdGlvbnMoUEdjb25uICpjb25uLCBzdHJ1Y3Qg TG9naWNhbFJlcEluZm8gKmRiaW5mbykKIAkJZWxzZQogCQl7CiAJCQlpZiAoZHJ5X3J1bikKLQkJ CQlwZ19sb2dfaW5mbygiZHJ5LXJ1bjogd291bGQgcHJlc2VydmUgZXhpc3RpbmcgcHVibGljYXRp b24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCi0JCQkJCQkJZGJpbmZvLT5wdWJuYW1lLCBk YmluZm8tPmRibmFtZSk7CisJCQkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBH X0xPR19QUklNQVJZLAorCQkJCQkJCQkJICJkcnktcnVuOiB3b3VsZCBwcmVzZXJ2ZSBleGlzdGlu ZyBwdWJsaWNhdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKKwkJCQkJCQkJCSBkYmlu Zm8tPnB1Ym5hbWUsIGRiaW5mby0+ZGJuYW1lKTsKIAkJCWVsc2UKLQkJCQlwZ19sb2dfaW5mbygi cHJlc2VydmUgZXhpc3RpbmcgcHVibGljYXRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIs Ci0JCQkJCQkJZGJpbmZvLT5wdWJuYW1lLCBkYmluZm8tPmRibmFtZSk7CisJCQkJcmVwb3J0X2Ny ZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCQkJICJwcmVz ZXJ2ZSBleGlzdGluZyBwdWJsaWNhdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKKwkJ CQkJCQkJCSBkYmluZm8tPnB1Ym5hbWUsIGRiaW5mby0+ZGJuYW1lKTsKIAkJfQogCX0KIH0KQEAg LTE5NDEsMTEgKzIwOTUsMTMgQEAgY3JlYXRlX3N1YnNjcmlwdGlvbihQR2Nvbm4gKmNvbm4sIGNv bnN0IHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogCXJlcGxzbG90bmFtZV9lc2MgPSBQ UWVzY2FwZUxpdGVyYWwoY29ubiwgZGJpbmZvLT5yZXBsc2xvdG5hbWUsIHN0cmxlbihkYmluZm8t PnJlcGxzbG90bmFtZSkpOwogCiAJaWYgKGRyeV9ydW4pCi0JCXBnX2xvZ19pbmZvKCJkcnktcnVu OiB3b3VsZCBjcmVhdGUgc3Vic2NyaXB0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAot CQkJCQlkYmluZm8tPnN1Ym5hbWUsIGRiaW5mby0+ZGJuYW1lKTsKKwkJcmVwb3J0X2NyZWF0ZXN1 Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCSAiZHJ5LXJ1bjogd291 bGQgY3JlYXRlIHN1YnNjcmlwdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKKwkJCQkJ CQkgZGJpbmZvLT5zdWJuYW1lLCBkYmluZm8tPmRibmFtZSk7CiAJZWxzZQotCQlwZ19sb2dfaW5m bygiY3JlYXRpbmcgc3Vic2NyaXB0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAotCQkJ CQlkYmluZm8tPnN1Ym5hbWUsIGRiaW5mby0+ZGJuYW1lKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9s b2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCSAiY3JlYXRpbmcgc3Vic2Ny aXB0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJCQkJCSBkYmluZm8tPnN1Ym5h bWUsIGRiaW5mby0+ZGJuYW1lKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyKHN0ciwKIAkJCQkJICAi Q1JFQVRFIFNVQlNDUklQVElPTiAlcyBDT05ORUNUSU9OICVzIFBVQkxJQ0FUSU9OICVzICIKQEAg LTE5NTksMTUgKzIxMTUsMTcgQEAgY3JlYXRlX3N1YnNjcmlwdGlvbihQR2Nvbm4gKmNvbm4sIGNv bnN0IHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogCVBRZnJlZW1lbShwdWJjb25uaW5m b19lc2MpOwogCVBRZnJlZW1lbShyZXBsc2xvdG5hbWVfZXNjKTsKIAotCXBnX2xvZ19kZWJ1Zygi Y29tbWFuZCBpczogJXMiLCBzdHItPmRhdGEpOworCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xP R19ERUJVRywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgImNvbW1hbmQgaXM6ICVzIiwgc3RyLT5k YXRhKTsKIAogCWlmICghZHJ5X3J1bikKIAl7CiAJCXJlcyA9IFBRZXhlYyhjb25uLCBzdHItPmRh dGEpOwogCQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQogCQl7 Ci0JCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgc3Vic2NyaXB0aW9uIFwiJXNcIiBp biBkYXRhYmFzZSBcIiVzXCI6ICVzIiwKLQkJCQkJCSBkYmluZm8tPnN1Ym5hbWUsIGRiaW5mby0+ ZGJuYW1lLCBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKKwkJCXJlcG9ydF9jcmVhdGVzdWJf bG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkJCSAiY291bGQgbm90IGNy ZWF0ZSBzdWJzY3JpcHRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIjogJXMiLAorCQkJCQkJ CQkgZGJpbmZvLT5zdWJuYW1lLCBkYmluZm8tPmRibmFtZSwgUFFyZXN1bHRFcnJvck1lc3NhZ2Uo cmVzKSk7CiAJCQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIHRydWUpOwogCQl9CiAJCVBRY2xl YXIocmVzKTsKQEAgLTIwMTEsMTUgKzIxNjksMTcgQEAgc2V0X3JlcGxpY2F0aW9uX3Byb2dyZXNz KFBHY29ubiAqY29ubiwgY29uc3Qgc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8sIGNvbnMK IAlyZXMgPSBQUWV4ZWMoY29ubiwgc3RyLT5kYXRhKTsKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVz KSAhPSBQR1JFU19UVVBMRVNfT0spCiAJewotCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvYnRh aW4gc3Vic2NyaXB0aW9uIE9JRDogJXMiLAotCQkJCQkgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVz KSk7CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlks CisJCQkJCQkJICJjb3VsZCBub3Qgb2J0YWluIHN1YnNjcmlwdGlvbiBPSUQ6ICVzIiwKKwkJCQkJ CQkgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CiAJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29u biwgdHJ1ZSk7CiAJfQogCiAJaWYgKFBRbnR1cGxlcyhyZXMpICE9IDEgJiYgIWRyeV9ydW4pCiAJ ewotCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvYnRhaW4gc3Vic2NyaXB0aW9uIE9JRDogZ290 ICVkIHJvd3MsIGV4cGVjdGVkICVkIHJvdyIsCi0JCQkJCSBQUW50dXBsZXMocmVzKSwgMSk7CisJ CXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJ CQkJICJjb3VsZCBub3Qgb2J0YWluIHN1YnNjcmlwdGlvbiBPSUQ6IGdvdCAlZCByb3dzLCBleHBl Y3RlZCAlZCByb3ciLAorCQkJCQkJCSBQUW50dXBsZXMocmVzKSwgMSk7CiAJCWRpc2Nvbm5lY3Rf ZGF0YWJhc2UoY29ubiwgdHJ1ZSk7CiAJfQogCkBAIC0yMDQzLDI2ICsyMjAzLDMwIEBAIHNldF9y ZXBsaWNhdGlvbl9wcm9ncmVzcyhQR2Nvbm4gKmNvbm4sIGNvbnN0IHN0cnVjdCBMb2dpY2FsUmVw SW5mbyAqZGJpbmZvLCBjb25zCiAJb3JpZ2lubmFtZSA9IHBzcHJpbnRmKCJwZ18ldSIsIHN1Ym9p ZCk7CiAKIAlpZiAoZHJ5X3J1bikKLQkJcGdfbG9nX2luZm8oImRyeS1ydW46IHdvdWxkIHNldCB0 aGUgcmVwbGljYXRpb24gcHJvZ3Jlc3MgKG5vZGUgbmFtZSBcIiVzXCIsIExTTiAlcykgaW4gZGF0 YWJhc2UgXCIlc1wiIiwKLQkJCQkJb3JpZ2lubmFtZSwgbHNuc3RyLCBkYmluZm8tPmRibmFtZSk7 CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0dfUFJJTUFSWSwKKwkJ CQkJCQkgImRyeS1ydW46IHdvdWxkIHNldCB0aGUgcmVwbGljYXRpb24gcHJvZ3Jlc3MgKG5vZGUg bmFtZSBcIiVzXCIsIExTTiAlcykgaW4gZGF0YWJhc2UgXCIlc1wiIiwKKwkJCQkJCQkgb3JpZ2lu bmFtZSwgbHNuc3RyLCBkYmluZm8tPmRibmFtZSk7CiAJZWxzZQotCQlwZ19sb2dfaW5mbygic2V0 dGluZyB0aGUgcmVwbGljYXRpb24gcHJvZ3Jlc3MgKG5vZGUgbmFtZSBcIiVzXCIsIExTTiAlcykg aW4gZGF0YWJhc2UgXCIlc1wiIiwKLQkJCQkJb3JpZ2lubmFtZSwgbHNuc3RyLCBkYmluZm8tPmRi bmFtZSk7CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0dfUFJJTUFS WSwKKwkJCQkJCQkgInNldHRpbmcgdGhlIHJlcGxpY2F0aW9uIHByb2dyZXNzIChub2RlIG5hbWUg XCIlc1wiLCBMU04gJXMpIGluIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkJCQkJIG9yaWdpbm5hbWUs IGxzbnN0ciwgZGJpbmZvLT5kYm5hbWUpOwogCiAJcmVzZXRQUUV4cEJ1ZmZlcihzdHIpOwogCWFw cGVuZFBRRXhwQnVmZmVyKHN0ciwKIAkJCQkJICAiU0VMRUNUIHBnX2NhdGFsb2cucGdfcmVwbGlj YXRpb25fb3JpZ2luX2FkdmFuY2UoJyVzJywgJyVzJykiLAogCQkJCQkgIG9yaWdpbm5hbWUsIGxz bnN0cik7CiAKLQlwZ19sb2dfZGVidWcoImNvbW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKKwly ZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfREVCVUcsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJ ICJjb21tYW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CiAKIAlpZiAoIWRyeV9ydW4pCiAJewogCQly ZXMgPSBQUWV4ZWMoY29ubiwgc3RyLT5kYXRhKTsKIAkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykg IT0gUEdSRVNfVFVQTEVTX09LKQogCQl7Ci0JCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBzZXQg cmVwbGljYXRpb24gcHJvZ3Jlc3MgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCI6ICVzIiwKLQkJCQkJ CSBkYmluZm8tPnN1Ym5hbWUsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQkJcmVwb3J0 X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkJICJj b3VsZCBub3Qgc2V0IHJlcGxpY2F0aW9uIHByb2dyZXNzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wi OiAlcyIsCisJCQkJCQkJCSBkYmluZm8tPnN1Ym5hbWUsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJl cykpOwogCQkJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uLCB0cnVlKTsKIAkJfQogCQlQUWNsZWFy KHJlcyk7CkBAIC0yMDkzLDIzICsyMjU3LDI3IEBAIGVuYWJsZV9zdWJzY3JpcHRpb24oUEdjb25u ICpjb25uLCBjb25zdCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbykKIAlzdWJuYW1lID0g UFFlc2NhcGVJZGVudGlmaWVyKGNvbm4sIGRiaW5mby0+c3VibmFtZSwgc3RybGVuKGRiaW5mby0+ c3VibmFtZSkpOwogCiAJaWYgKGRyeV9ydW4pCi0JCXBnX2xvZ19pbmZvKCJkcnktcnVuOiB3b3Vs ZCBlbmFibGUgc3Vic2NyaXB0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAotCQkJCQlk YmluZm8tPnN1Ym5hbWUsIGRiaW5mby0+ZGJuYW1lKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2co UEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCSAiZHJ5LXJ1bjogd291bGQgZW5h YmxlIHN1YnNjcmlwdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKKwkJCQkJCQkgZGJp bmZvLT5zdWJuYW1lLCBkYmluZm8tPmRibmFtZSk7CiAJZWxzZQotCQlwZ19sb2dfaW5mbygiZW5h Ymxpbmcgc3Vic2NyaXB0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAotCQkJCQlkYmlu Zm8tPnN1Ym5hbWUsIGRiaW5mby0+ZGJuYW1lKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdf TE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCSAiZW5hYmxpbmcgc3Vic2NyaXB0aW9u IFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJCQkJCSBkYmluZm8tPnN1Ym5hbWUsIGRi aW5mby0+ZGJuYW1lKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyKHN0ciwgIkFMVEVSIFNVQlNDUklQ VElPTiAlcyBFTkFCTEUiLCBzdWJuYW1lKTsKIAotCXBnX2xvZ19kZWJ1ZygiY29tbWFuZCBpczog JXMiLCBzdHItPmRhdGEpOworCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19ERUJVRywgUEdf TE9HX1BSSU1BUlksCisJCQkJCQkgImNvbW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKIAogCWlm ICghZHJ5X3J1bikKIAl7CiAJCXJlcyA9IFBRZXhlYyhjb25uLCBzdHItPmRhdGEpOwogCQlpZiAo UFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQogCQl7Ci0JCQlwZ19sb2df ZXJyb3IoImNvdWxkIG5vdCBlbmFibGUgc3Vic2NyaXB0aW9uIFwiJXNcIjogJXMiLAotCQkJCQkJ IGRiaW5mby0+c3VibmFtZSwgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCQlyZXBvcnRf Y3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCQkgImNv dWxkIG5vdCBlbmFibGUgc3Vic2NyaXB0aW9uIFwiJXNcIjogJXMiLAorCQkJCQkJCQkgZGJpbmZv LT5zdWJuYW1lLCBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKIAkJCWRpc2Nvbm5lY3RfZGF0 YWJhc2UoY29ubiwgdHJ1ZSk7CiAJCX0KIApAQCAtMjE1NCw3ICsyMzIyLDkgQEAgZ2V0X3B1Ymxp c2hlcl9kYXRhYmFzZXMoc3RydWN0IENyZWF0ZVN1YnNjcmliZXJPcHRpb25zICpvcHQsCiAJcmVz ID0gUFFleGVjKGNvbm4sICJTRUxFQ1QgZGF0bmFtZSBGUk9NIHBnX2RhdGFiYXNlIFdIRVJFIGRh dGlzdGVtcGxhdGUgPSBmYWxzZSBBTkQgZGF0YWxsb3djb25uIEFORCBkYXRjb25ubGltaXQgPD4g LTIgT1JERVIgQlkgMSIpOwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExF U19PSykKIAl7Ci0JCXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9idGFpbiBhIGxpc3Qgb2YgZGF0 YWJhc2VzOiAlcyIsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQlyZXBvcnRfY3JlYXRl c3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCSAiY291bGQgbm90 IG9idGFpbiBhIGxpc3Qgb2YgZGF0YWJhc2VzOiAlcyIsCisJCQkJCQkJIFBRcmVzdWx0RXJyb3JN ZXNzYWdlKHJlcykpOwogCQlQUWNsZWFyKHJlcyk7CiAJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29u biwgdHJ1ZSk7CiAJfQpAQCAtMjI1OCw5ICsyNDI4LDExIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogI2lmbmRlZiBXSU4zMgogCWlmIChnZXRldWlkKCkgPT0gMCkKIAl7Ci0JCXBnX2xv Z19lcnJvcigiY2Fubm90IGJlIGV4ZWN1dGVkIGJ5IFwicm9vdFwiIik7Ci0JCXBnX2xvZ19lcnJv cl9oaW50KCJZb3UgbXVzdCBydW4gJXMgYXMgdGhlIFBvc3RncmVTUUwgc3VwZXJ1c2VyLiIsCi0J CQkJCQkgIHByb2duYW1lKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQ R19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgImNhbm5vdCBiZSBleGVjdXRlZCBieSBcInJvb3RcIiIp OworCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19ISU5ULAorCQkJ CQkJCSAiWW91IG11c3QgcnVuICVzIGFzIHRoZSBQb3N0Z3JlU1FMIHN1cGVydXNlci4iLAorCQkJ CQkJCSBwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CiAJfQogI2VuZGlmCkBAIC0yMjgyLDcgKzI0NTQs NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQkJbnVtX2RicysrOwogCQkJCX0K IAkJCQllbHNlCi0JCQkJCXBnX2ZhdGFsKCJkYXRhYmFzZSBcIiVzXCIgc3BlY2lmaWVkIG1vcmUg dGhhbiBvbmNlIGZvciAtZC8tLWRhdGFiYXNlIiwgb3B0YXJnKTsKKwkJCQkJcmVwb3J0X2NyZWF0 ZXN1Yl9mYXRhbCgiZGF0YWJhc2UgXCIlc1wiIHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZSBmb3Ig LWQvLS1kYXRhYmFzZSIsIG9wdGFyZyk7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdEJzoKIAkJCQlz dWJzY3JpYmVyX2RpciA9IHBnX3N0cmR1cChvcHRhcmcpOwpAQCAtMjMyMyw3ICsyNDk1LDcgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJCW51bV9wdWJzKys7CiAJCQkJfQogCQkJ CWVsc2UKLQkJCQkJcGdfZmF0YWwoInB1YmxpY2F0aW9uIFwiJXNcIiBzcGVjaWZpZWQgbW9yZSB0 aGFuIG9uY2UgZm9yIC0tcHVibGljYXRpb24iLCBvcHRhcmcpOworCQkJCQlyZXBvcnRfY3JlYXRl c3ViX2ZhdGFsKCJwdWJsaWNhdGlvbiBcIiVzXCIgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlIGZv ciAtLXB1YmxpY2F0aW9uIiwgb3B0YXJnKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgMzoKIAkJCQlp ZiAoIXNpbXBsZV9zdHJpbmdfbGlzdF9tZW1iZXIoJm9wdC5yZXBsc2xvdF9uYW1lcywgb3B0YXJn KSkKQEAgLTIzMzIsNyArMjUwNCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJ CQludW1fcmVwbHNsb3RzKys7CiAJCQkJfQogCQkJCWVsc2UKLQkJCQkJcGdfZmF0YWwoInJlcGxp Y2F0aW9uIHNsb3QgXCIlc1wiIHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZSBmb3IgLS1yZXBsaWNh dGlvbi1zbG90Iiwgb3B0YXJnKTsKKwkJCQkJcmVwb3J0X2NyZWF0ZXN1Yl9mYXRhbCgicmVwbGlj YXRpb24gc2xvdCBcIiVzXCIgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlIGZvciAtLXJlcGxpY2F0 aW9uLXNsb3QiLCBvcHRhcmcpOwogCQkJCWJyZWFrOwogCQkJY2FzZSA0OgogCQkJCWlmICghc2lt cGxlX3N0cmluZ19saXN0X21lbWJlcigmb3B0LnN1Yl9uYW1lcywgb3B0YXJnKSkKQEAgLTIzNDEs MTcgKzI1MTMsMTkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJCW51bV9zdWJz Kys7CiAJCQkJfQogCQkJCWVsc2UKLQkJCQkJcGdfZmF0YWwoInN1YnNjcmlwdGlvbiBcIiVzXCIg c3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlIGZvciAtLXN1YnNjcmlwdGlvbiIsIG9wdGFyZyk7CisJ CQkJCXJlcG9ydF9jcmVhdGVzdWJfZmF0YWwoInN1YnNjcmlwdGlvbiBcIiVzXCIgc3BlY2lmaWVk IG1vcmUgdGhhbiBvbmNlIGZvciAtLXN1YnNjcmlwdGlvbiIsIG9wdGFyZyk7CiAJCQkJYnJlYWs7 CiAJCQljYXNlIDU6CiAJCQkJaWYgKCFzaW1wbGVfc3RyaW5nX2xpc3RfbWVtYmVyKCZvcHQub2Jq ZWN0dHlwZXNfdG9fY2xlYW4sIG9wdGFyZykpCiAJCQkJCXNpbXBsZV9zdHJpbmdfbGlzdF9hcHBl bmQoJm9wdC5vYmplY3R0eXBlc190b19jbGVhbiwgb3B0YXJnKTsKIAkJCQllbHNlCi0JCQkJCXBn X2ZhdGFsKCJvYmplY3QgdHlwZSBcIiVzXCIgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlIGZvciAt LWNsZWFuIiwgb3B0YXJnKTsKKwkJCQkJcmVwb3J0X2NyZWF0ZXN1Yl9mYXRhbCgib2JqZWN0IHR5 cGUgXCIlc1wiIHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZSBmb3IgLS1jbGVhbiIsIG9wdGFyZyk7 CiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCS8qIGdldG9wdF9sb25nIGFscmVhZHkgZW1p dHRlZCBhIGNvbXBsYWludCAqLwotCQkJCXBnX2xvZ19lcnJvcl9oaW50KCJUcnkgXCIlcyAtLWhl bHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iLCBwcm9nbmFtZSk7CisJCQkJcmVwb3J0X2NyZWF0 ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfSElOVCwKKwkJCQkJCQkJCSAiVHJ5IFwiJXMg LS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiwKKwkJCQkJCQkJCSBwcm9nbmFtZSk7CiAJ CQkJZXhpdCgxKTsKIAkJfQogCX0KQEAgLTIzNzIsOSArMjU0NiwxMiBAQCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKIAogCQlpZiAoYmFkX3N3aXRjaCkKIAkJewotCQkJcGdfbG9nX2Vycm9y KCJvcHRpb25zICVzIGFuZCAlcyBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIsCi0JCQkJCQkgYmFk X3N3aXRjaCwgIi1hLy0tYWxsIik7Ci0JCQlwZ19sb2dfZXJyb3JfaGludCgiVHJ5IFwiJXMgLS1o ZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiwgcHJvZ25hbWUpOworCQkJcmVwb3J0X2NyZWF0 ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkJICJvcHRpb25z ICVzIGFuZCAlcyBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIsCisJCQkJCQkJCSBiYWRfc3dpdGNo LCAiLWEvLS1hbGwiKTsKKwkJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdf TE9HX0hJTlQsCisJCQkJCQkJCSAiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRp b24uIiwKKwkJCQkJCQkJIHByb2duYW1lKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAl9CkBAIC0yMzgy LDE3ICsyNTU5LDIxIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCS8qIEFueSBub24t b3B0aW9uIGFyZ3VtZW50cz8gKi8KIAlpZiAob3B0aW5kIDwgYXJnYykKIAl7Ci0JCXBnX2xvZ19l cnJvcigidG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKSIs Ci0JCQkJCSBhcmd2W29wdGluZF0pOwotCQlwZ19sb2dfZXJyb3JfaGludCgiVHJ5IFwiJXMgLS1o ZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiwgcHJvZ25hbWUpOworCQlyZXBvcnRfY3JlYXRl c3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCSAidG9vIG1hbnkg Y29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKSIsCisJCQkJCQkJIGFyZ3Zb b3B0aW5kXSk7CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX0hJ TlQsCisJCQkJCQkJICJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iLCBw cm9nbmFtZSk7CiAJCWV4aXQoMSk7CiAJfQogCiAJLyogUmVxdWlyZWQgYXJndW1lbnRzICovCiAJ aWYgKHN1YnNjcmliZXJfZGlyID09IE5VTEwpCiAJewotCQlwZ19sb2dfZXJyb3IoIm5vIHN1YnNj cmliZXIgZGF0YSBkaXJlY3Rvcnkgc3BlY2lmaWVkIik7Ci0JCXBnX2xvZ19lcnJvcl9oaW50KCJU cnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iLCBwcm9nbmFtZSk7CisJCXJl cG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkJ ICJubyBzdWJzY3JpYmVyIGRhdGEgZGlyZWN0b3J5IHNwZWNpZmllZCIpOworCQlyZXBvcnRfY3Jl YXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19ISU5ULAorCQkJCQkJCSAiVHJ5IFwiJXMg LS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiwgcHJvZ25hbWUpOwogCQlleGl0KDEpOwog CX0KIApAQCAtMjQwMiw3ICsyNTgzLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJ CWNoYXIJCWN3ZFtNQVhQR1BBVEhdOwogCiAJCWlmICghZ2V0Y3dkKGN3ZCwgTUFYUEdQQVRIKSkK LQkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgZGV0ZXJtaW5lIGN1cnJlbnQgZGlyZWN0b3J5Iik7CisJ CQlyZXBvcnRfY3JlYXRlc3ViX2ZhdGFsKCJjb3VsZCBub3QgZGV0ZXJtaW5lIGN1cnJlbnQgZGly ZWN0b3J5Iik7CiAJCW9wdC5zb2NrZXRfZGlyID0gcGdfc3RyZHVwKGN3ZCk7CiAJCWNhbm9uaWNh bGl6ZV9wYXRoKG9wdC5zb2NrZXRfZGlyKTsKIAl9CkBAIC0yNDE5LDIyICsyNjAwLDI3IEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkgKiBpZGVudGljYWwgZW50cmllcyBmb3IgcGh5 c2ljYWwgYW5kIGxvZ2ljYWwgcmVwbGljYXRpb24uIElmIHRoZXJlIGlzCiAJCSAqIG5vdCwgd2Ug d291bGQgZmFpbCBhbnl3YXkuCiAJCSAqLwotCQlwZ19sb2dfZXJyb3IoIm5vIHB1Ymxpc2hlciBj b25uZWN0aW9uIHN0cmluZyBzcGVjaWZpZWQiKTsKLQkJcGdfbG9nX2Vycm9yX2hpbnQoIlRyeSBc IiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLiIsIHByb2duYW1lKTsKKwkJcmVwb3J0 X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgIm5v IHB1Ymxpc2hlciBjb25uZWN0aW9uIHN0cmluZyBzcGVjaWZpZWQiKTsKKwkJcmVwb3J0X2NyZWF0 ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfSElOVCwKKwkJCQkJCQkgIlRyeSBcIiVzIC0t aGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLiIsIHByb2duYW1lKTsKIAkJZXhpdCgxKTsKIAl9 CiAKIAlpZiAoZHJ5X3J1bikKLQkJcGdfbG9nX2luZm8oIkV4ZWN1dGluZyBpbiBkcnktcnVuIG1v ZGUuXG4iCi0JCQkJCSJUaGUgdGFyZ2V0IGRpcmVjdG9yeSB3aWxsIG5vdCBiZSBtb2RpZmllZC4i KTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAor CQkJCQkJCSAiRXhlY3V0aW5nIGluIGRyeS1ydW4gbW9kZS5cbiIKKwkJCQkJCQkgIlRoZSB0YXJn ZXQgZGlyZWN0b3J5IHdpbGwgbm90IGJlIG1vZGlmaWVkLiIpOwogCi0JcGdfbG9nX2luZm8oInZh bGlkYXRpbmcgcHVibGlzaGVyIGNvbm5lY3Rpb24gc3RyaW5nIik7CisJcmVwb3J0X2NyZWF0ZXN1 Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAorCQkJCQkJICJ2YWxpZGF0aW5nIHB1 Ymxpc2hlciBjb25uZWN0aW9uIHN0cmluZyIpOwogCXB1Yl9iYXNlX2Nvbm5pbmZvID0gZ2V0X2Jh c2VfY29ubmluZm8ob3B0LnB1Yl9jb25uaW5mb19zdHIsCiAJCQkJCQkJCQkJICAmZGJuYW1lX2Nv bm5pbmZvKTsKIAlpZiAocHViX2Jhc2VfY29ubmluZm8gPT0gTlVMTCkKIAkJZXhpdCgxKTsKIAot CXBnX2xvZ19pbmZvKCJ2YWxpZGF0aW5nIHN1YnNjcmliZXIgY29ubmVjdGlvbiBzdHJpbmciKTsK KwlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCisJCQkJ CQkgInZhbGlkYXRpbmcgc3Vic2NyaWJlciBjb25uZWN0aW9uIHN0cmluZyIpOwogCXN1Yl9iYXNl X2Nvbm5pbmZvID0gZ2V0X3N1Yl9jb25uaW5mbygmb3B0KTsKIAogCS8qCkBAIC0yNDUxLDcgKzI2 MzcsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCWlmIChvcHQuZGF0YWJhc2Vf bmFtZXMuaGVhZCA9PSBOVUxMKQogCXsKLQkJcGdfbG9nX2luZm8oIm5vIGRhdGFiYXNlIHdhcyBz cGVjaWZpZWQiKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19Q UklNQVJZLAorCQkJCQkJCSAibm8gZGF0YWJhc2Ugd2FzIHNwZWNpZmllZCIpOwogCiAJCS8qCiAJ CSAqIFRyeSB0byBvYnRhaW4gdGhlIGRibmFtZSBmcm9tIHRoZSBwdWJsaXNoZXIgY29ubmluZm8u IElmIGRibmFtZQpAQCAtMjQ2MiwxNCArMjY0OSwxNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKIAkJCXNpbXBsZV9zdHJpbmdfbGlzdF9hcHBlbmQoJm9wdC5kYXRhYmFzZV9uYW1lcywg ZGJuYW1lX2Nvbm5pbmZvKTsKIAkJCW51bV9kYnMrKzsKIAotCQkJcGdfbG9nX2luZm8oImRhdGFi YXNlIG5hbWUgXCIlc1wiIHdhcyBleHRyYWN0ZWQgZnJvbSB0aGUgcHVibGlzaGVyIGNvbm5lY3Rp b24gc3RyaW5nIiwKLQkJCQkJCWRibmFtZV9jb25uaW5mbyk7CisJCQlyZXBvcnRfY3JlYXRlc3Vi X2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkJCSAiZGF0YWJhc2UgbmFt ZSBcIiVzXCIgd2FzIGV4dHJhY3RlZCBmcm9tIHRoZSBwdWJsaXNoZXIgY29ubmVjdGlvbiBzdHJp bmciLAorCQkJCQkJCQkgZGJuYW1lX2Nvbm5pbmZvKTsKIAkJfQogCQllbHNlCiAJCXsKLQkJCXBn X2xvZ19lcnJvcigibm8gZGF0YWJhc2UgbmFtZSBzcGVjaWZpZWQiKTsKLQkJCXBnX2xvZ19lcnJv cl9oaW50KCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iLAotCQkJCQkJ CSAgcHJvZ25hbWUpOworCQkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19M T0dfUFJJTUFSWSwKKwkJCQkJCQkJICJubyBkYXRhYmFzZSBuYW1lIHNwZWNpZmllZCIpOworCQkJ cmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfSElOVCwKKwkJCQkJCQkJ ICJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iLAorCQkJCQkJCQkgcHJv Z25hbWUpOwogCQkJZXhpdCgxKTsKIAkJfQogCX0KQEAgLTI0NzcsMjMgKzI2NjcsMjkgQEAgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJLyogTnVtYmVyIG9mIG9iamVjdCBuYW1lcyBtdXN0 IG1hdGNoIG51bWJlciBvZiBkYXRhYmFzZXMgKi8KIAlpZiAobnVtX3B1YnMgPiAwICYmIG51bV9w dWJzICE9IG51bV9kYnMpCiAJewotCQlwZ19sb2dfZXJyb3IoIndyb25nIG51bWJlciBvZiBwdWJs aWNhdGlvbiBuYW1lcyBzcGVjaWZpZWQiKTsKLQkJcGdfbG9nX2Vycm9yX2RldGFpbCgiVGhlIG51 bWJlciBvZiBzcGVjaWZpZWQgcHVibGljYXRpb24gbmFtZXMgKCVkKSBtdXN0IG1hdGNoIHRoZSBu dW1iZXIgb2Ygc3BlY2lmaWVkIGRhdGFiYXNlIG5hbWVzICglZCkuIiwKLQkJCQkJCQludW1fcHVi cywgbnVtX2Ricyk7CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9H X1BSSU1BUlksCisJCQkJCQkJICJ3cm9uZyBudW1iZXIgb2YgcHVibGljYXRpb24gbmFtZXMgc3Bl Y2lmaWVkIik7CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX0RF VEFJTCwKKwkJCQkJCQkgIlRoZSBudW1iZXIgb2Ygc3BlY2lmaWVkIHB1YmxpY2F0aW9uIG5hbWVz ICglZCkgbXVzdCBtYXRjaCB0aGUgbnVtYmVyIG9mIHNwZWNpZmllZCBkYXRhYmFzZSBuYW1lcyAo JWQpLiIsCisJCQkJCQkJIG51bV9wdWJzLCBudW1fZGJzKTsKIAkJZXhpdCgxKTsKIAl9CiAJaWYg KG51bV9zdWJzID4gMCAmJiBudW1fc3VicyAhPSBudW1fZGJzKQogCXsKLQkJcGdfbG9nX2Vycm9y KCJ3cm9uZyBudW1iZXIgb2Ygc3Vic2NyaXB0aW9uIG5hbWVzIHNwZWNpZmllZCIpOwotCQlwZ19s b2dfZXJyb3JfZGV0YWlsKCJUaGUgbnVtYmVyIG9mIHNwZWNpZmllZCBzdWJzY3JpcHRpb24gbmFt ZXMgKCVkKSBtdXN0IG1hdGNoIHRoZSBudW1iZXIgb2Ygc3BlY2lmaWVkIGRhdGFiYXNlIG5hbWVz ICglZCkuIiwKLQkJCQkJCQludW1fc3VicywgbnVtX2Ricyk7CisJCXJlcG9ydF9jcmVhdGVzdWJf bG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkJICJ3cm9uZyBudW1iZXIg b2Ygc3Vic2NyaXB0aW9uIG5hbWVzIHNwZWNpZmllZCIpOworCQlyZXBvcnRfY3JlYXRlc3ViX2xv ZyhQR19MT0dfRVJST1IsIFBHX0xPR19ERVRBSUwsCisJCQkJCQkJICJUaGUgbnVtYmVyIG9mIHNw ZWNpZmllZCBzdWJzY3JpcHRpb24gbmFtZXMgKCVkKSBtdXN0IG1hdGNoIHRoZSBudW1iZXIgb2Yg c3BlY2lmaWVkIGRhdGFiYXNlIG5hbWVzICglZCkuIiwKKwkJCQkJCQkgbnVtX3N1YnMsIG51bV9k YnMpOwogCQlleGl0KDEpOwogCX0KIAlpZiAobnVtX3JlcGxzbG90cyA+IDAgJiYgbnVtX3JlcGxz bG90cyAhPSBudW1fZGJzKQogCXsKLQkJcGdfbG9nX2Vycm9yKCJ3cm9uZyBudW1iZXIgb2YgcmVw bGljYXRpb24gc2xvdCBuYW1lcyBzcGVjaWZpZWQiKTsKLQkJcGdfbG9nX2Vycm9yX2RldGFpbCgi VGhlIG51bWJlciBvZiBzcGVjaWZpZWQgcmVwbGljYXRpb24gc2xvdCBuYW1lcyAoJWQpIG11c3Qg bWF0Y2ggdGhlIG51bWJlciBvZiBzcGVjaWZpZWQgZGF0YWJhc2UgbmFtZXMgKCVkKS4iLAotCQkJ CQkJCW51bV9yZXBsc2xvdHMsIG51bV9kYnMpOworCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19M T0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCSAid3JvbmcgbnVtYmVyIG9mIHJlcGxp Y2F0aW9uIHNsb3QgbmFtZXMgc3BlY2lmaWVkIik7CisJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBH X0xPR19FUlJPUiwgUEdfTE9HX0RFVEFJTCwKKwkJCQkJCQkgIlRoZSBudW1iZXIgb2Ygc3BlY2lm aWVkIHJlcGxpY2F0aW9uIHNsb3QgbmFtZXMgKCVkKSBtdXN0IG1hdGNoIHRoZSBudW1iZXIgb2Yg c3BlY2lmaWVkIGRhdGFiYXNlIG5hbWVzICglZCkuIiwKKwkJCQkJCQkgbnVtX3JlcGxzbG90cywg bnVtX2Ricyk7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0yNTA0LDkgKzI3MDAsMTEgQEAgbWFpbihp bnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQlkYmluZm9zLm9iamVjdHR5cGVzX3RvX2NsZWFuIHw9 IE9CSkVDVFRZUEVfUFVCTElDQVRJT05TOwogCQllbHNlCiAJCXsKLQkJCXBnX2xvZ19lcnJvcigi aW52YWxpZCBvYmplY3QgdHlwZSBcIiVzXCIgc3BlY2lmaWVkIGZvciAlcyIsCi0JCQkJCQkgY2Vs bC0+dmFsLCAiLS1jbGVhbiIpOwotCQkJcGdfbG9nX2Vycm9yX2hpbnQoIlRoZSB2YWxpZCB2YWx1 ZSBpczogXCIlc1wiIiwgInB1YmxpY2F0aW9ucyIpOworCQkJcmVwb3J0X2NyZWF0ZXN1Yl9sb2co UEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkJICJpbnZhbGlkIG9iamVjdCB0 eXBlIFwiJXNcIiBzcGVjaWZpZWQgZm9yICVzIiwKKwkJCQkJCQkJIGNlbGwtPnZhbCwgIi0tY2xl YW4iKTsKKwkJCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX0hJTlQs CisJCQkJCQkJCSAiVGhlIHZhbGlkIHZhbHVlIGlzOiBcIiVzXCIiLCAicHVibGljYXRpb25zIik7 CiAJCQlleGl0KDEpOwogCQl9CiAJfQpAQCAtMjUzNyw3ICsyNzM1LDcgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiAJcHViX3N5c2lkID0gZ2V0X3ByaW1hcnlfc3lzaWQoZGJpbmZvcy5k YmluZm9bMF0ucHViY29ubmluZm8pOwogCXN1Yl9zeXNpZCA9IGdldF9zdGFuZGJ5X3N5c2lkKHN1 YnNjcmliZXJfZGlyKTsKIAlpZiAocHViX3N5c2lkICE9IHN1Yl9zeXNpZCkKLQkJcGdfZmF0YWwo InN1YnNjcmliZXIgZGF0YSBkaXJlY3RvcnkgaXMgbm90IGEgY29weSBvZiB0aGUgc291cmNlIGRh dGFiYXNlIGNsdXN0ZXIiKTsKKwkJcmVwb3J0X2NyZWF0ZXN1Yl9mYXRhbCgic3Vic2NyaWJlciBk YXRhIGRpcmVjdG9yeSBpcyBub3QgYSBjb3B5IG9mIHRoZSBzb3VyY2UgZGF0YWJhc2UgY2x1c3Rl ciIpOwogCiAJLyogU3Vic2NyaWJlciBQSUQgZmlsZSAqLwogCXNucHJpbnRmKHBpZGZpbGUsIE1B WFBHUEFUSCwgIiVzL3Bvc3RtYXN0ZXIucGlkIiwgc3Vic2NyaWJlcl9kaXIpOwpAQCAtMjU1MCw4 ICsyNzQ4LDEwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCSAqLwogCWlmIChzdGF0 KHBpZGZpbGUsICZzdGF0YnVmKSA9PSAwKQogCXsKLQkJcGdfbG9nX2Vycm9yKCJzdGFuZGJ5IHNl cnZlciBpcyBydW5uaW5nIik7Ci0JCXBnX2xvZ19lcnJvcl9oaW50KCJTdG9wIHRoZSBzdGFuZGJ5 IHNlcnZlciBhbmQgdHJ5IGFnYWluLiIpOworCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0df RVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCSAic3RhbmRieSBzZXJ2ZXIgaXMgcnVubmlu ZyIpOworCQlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19ISU5ULAor CQkJCQkJCSAiU3RvcCB0aGUgc3RhbmRieSBzZXJ2ZXIgYW5kIHRyeSBhZ2Fpbi4iKTsKIAkJZXhp dCgxKTsKIAl9CiAKQEAgLTI1NjAsNyArMjc2MCw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCSAqIGJ5IGNvbW1hbmQtbGluZSBvcHRpb25zKS4gVGhlIGdvYWwgaXMgdG8gYXZvaWQg Y29ubmVjdGlvbnMgZHVyaW5nIHRoZQogCSAqIHRyYW5zZm9ybWF0aW9uIHN0ZXBzLgogCSAqLwot CXBnX2xvZ19pbmZvKCJzdGFydGluZyB0aGUgc3RhbmRieSBzZXJ2ZXIgd2l0aCBjb21tYW5kLWxp bmUgb3B0aW9ucyIpOworCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0df UFJJTUFSWSwKKwkJCQkJCSAic3RhcnRpbmcgdGhlIHN0YW5kYnkgc2VydmVyIHdpdGggY29tbWFu ZC1saW5lIG9wdGlvbnMiKTsKIAlzdGFydF9zdGFuZGJ5X3NlcnZlcigmb3B0LCB0cnVlLCBmYWxz ZSk7CiAKIAkvKiBDaGVjayBpZiB0aGUgc3RhbmRieSBzZXJ2ZXIgaXMgcmVhZHkgZm9yIGxvZ2lj YWwgcmVwbGljYXRpb24gKi8KQEAgLTI1NzYsNyArMjc3Nyw4IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogCSAqIGd1YXJhbnRlZXMgaXQpICpiZWZvcmUqIGNyZWF0aW5nIHRoZSByZXBs aWNhdGlvbiBzbG90cyBpbgogCSAqIHNldHVwX3B1Ymxpc2hlcigpLgogCSAqLwotCXBnX2xvZ19p bmZvKCJzdG9wcGluZyB0aGUgc3Vic2NyaWJlciIpOworCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBH X0xPR19JTkZPLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAic3RvcHBpbmcgdGhlIHN1YnNjcmli ZXIiKTsKIAlzdG9wX3N0YW5kYnlfc2VydmVyKHN1YnNjcmliZXJfZGlyKTsKIAogCS8qIENyZWF0 ZSB0aGUgcmVxdWlyZWQgb2JqZWN0cyBmb3IgZWFjaCBkYXRhYmFzZSBvbiBwdWJsaXNoZXIgKi8K QEAgLTI1OTAsNyArMjc5Miw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCSAqIHVu dGlsIGFjY2VwdGluZyBjb25uZWN0aW9ucy4gV2UgZG9uJ3Qgd2FudCB0byBzdGFydCBsb2dpY2Fs IHJlcGxpY2F0aW9uCiAJICogZHVyaW5nIHNldHVwLgogCSAqLwotCXBnX2xvZ19pbmZvKCJzdGFy dGluZyB0aGUgc3Vic2NyaWJlciIpOworCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZP LCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAic3RhcnRpbmcgdGhlIHN1YnNjcmliZXIiKTsKIAlz dGFydF9zdGFuZGJ5X3NlcnZlcigmb3B0LCB0cnVlLCB0cnVlKTsKIAogCS8qIFdhaXRpbmcgdGhl IHN1YnNjcmliZXIgdG8gYmUgcHJvbW90ZWQgKi8KQEAgLTI2MTEsNyArMjgxNCw4IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWRyb3BfZmFpbG92ZXJfcmVwbGljYXRpb25fc2xvdHMo ZGJpbmZvcy5kYmluZm8pOwogCiAJLyogU3RvcCB0aGUgc3Vic2NyaWJlciAqLwotCXBnX2xvZ19p bmZvKCJzdG9wcGluZyB0aGUgc3Vic2NyaWJlciIpOworCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBH X0xPR19JTkZPLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAic3RvcHBpbmcgdGhlIHN1YnNjcmli ZXIiKTsKIAlzdG9wX3N0YW5kYnlfc2VydmVyKHN1YnNjcmliZXJfZGlyKTsKIAogCS8qIENoYW5n ZSBzeXN0ZW0gaWRlbnRpZmllciBmcm9tIHN1YnNjcmliZXIgKi8KQEAgLTI2MTksNyArMjgyMyw4 IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJc3VjY2VzcyA9IHRydWU7CiAKLQlw Z19sb2dfaW5mbygiRG9uZSEiKTsKKwlyZXBvcnRfY3JlYXRlc3ViX2xvZyhQR19MT0dfSU5GTywg UEdfTE9HX1BSSU1BUlksCisJCQkJCQkgIkRvbmUhIik7CiAKIAlyZXR1cm4gMDsKIH0KLS0gCjIu NDMuMAoK --000000000000135cb9064d90e489 Content-Type: application/octet-stream; name="v16-0002-Add-a-new-argument-l-logdir-to-pg_createsubscrib.patch" Content-Disposition: attachment; filename="v16-0002-Add-a-new-argument-l-logdir-to-pg_createsubscrib.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn0xv40h1 RnJvbSBjNzVhZWM1NWQxZTExZmFkNDQ3YjlkZGE0MGE5Yjk4MzFkM2VlYWFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHeWFuIFNyZWVqaXRoIDxneWFuLnNyZWVqaXRoQGdtYWlsLmNv bT4KRGF0ZTogU2F0LCAyMSBNYXIgMjAyNiAxOTowNTozNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg djE2IDIvMl0gQWRkIGEgbmV3IGFyZ3VtZW50IC1sIDxsb2dkaXI+IHRvCiBwZ19jcmVhdGVzdWJz Y3JpYmVyLgoKRW5hYmxpbmcgdGhlIG9wdGlvbiB0byB3cml0ZSBtZXNzYWdlcyB0byBsb2cgZmls ZXMgaW4gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnkuCkEgbmV3IGRpcmVjdG9yeSBpcyBjcmVhdGVk IGlmIHJlcXVpcmVkLiBBIHN1YmRpcmVjdG9yeSBpcyBjcmVhdGVkIHdpdGggdGltZXN0YW1wIGFz IGl0cyBuYW1lLCBhbmQgaXQgd2lsbCBjb250YWluIHR3byBuZXcgbG9nZmlsZXM6CjEuIHBnX2Ny ZWF0ZXN1YnNjcmliZXJfc2VydmVyLmxvZyAgLSBjYXB0dXJlcyBtZXNzYWdlcyByZWxhdGVkIHRv IHN0YXJ0aW5nIGFuZCBzdG9wcGluZyB0aGUgc3RhbmRieSBzZXJ2ZXIuCjIuIHBnX2NyZWF0ZXN1 YnNjcmliZXJfaW50ZXJuYWwubG9nIC0gY2FwdHVyZXMgaW50ZXJuYWwgZGlhZ25vc3RpYyBvdXRw dXQgZnJvbSBwZ19jcmVhdGVzdWJzY3JpYmVyLgoKRm9yIGV4YW1wbGUsIGlmIHdlIHNwZWNpZnkg LWwgYWJjIGFzIGFuIGFyZ3VtZW50LCBhbmQgaWYgdGhlIHRpbWVzdGFtcCBvbiBydW5uaW5nIGl0 IGlzIDIwMjYwMTE5VDIwNDMxNy4yMDQsIGEgZGlyZWN0b3J5IGFiYyBpcyBjcmVhdGVkIGlmIGl0 IGRvZXNuJ3QgZXhpc3QgYWxyZWFkeSwgd2l0aCAyMDI2MDExOVQyMDQzMTcuMjA0IGFzIGl0cyBz dWJkaXJlY3RvcnkgYW5kIGl0IHdpbGwgY29udGFpbiB0aGUgdHdvIGxvZyBmaWxlcyBwZ19jcmVh dGVzdWJzY3JpYmVyX3NlcnZlci5sb2cgYW5kIHBnX2NyZWF0ZXN1YnNjcmliZXJfaW50ZXJuYWwu bG9nCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9wZ19jcmVhdGVzdWJzY3JpYmVyLnNnbWwgICAgIHwg IDI5ICsrKwogc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYyAgIHwg MTc0ICsrKysrKysrKysrKysrKysrLQogLi4uL3QvMDQwX3BnX2NyZWF0ZXN1YnNjcmliZXIucGwg ICAgICAgICAgICAgIHwgIDQxICsrKystCiAzIGZpbGVzIGNoYW5nZWQsIDIzMiBpbnNlcnRpb25z KCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX2Ny ZWF0ZXN1YnNjcmliZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfY3JlYXRlc3Vic2NyaWJl ci5zZ21sCmluZGV4IGNmNDVmZjM1NzNkLi5mZjYzNWJhMjZjYiAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9wZ19jcmVhdGVzdWJzY3JpYmVyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9wZ19jcmVhdGVzdWJzY3JpYmVyLnNnbWwKQEAgLTEzNiw2ICsxMzYsMzUgQEAgUG9zdGdyZVNR TCBkb2N1bWVudGF0aW9uCiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CiAK KyAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48b3B0aW9uPi1sIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5kaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4K KyAgICAgPHRlcm0+PG9wdGlvbj4tLWxvZ2Rpcj08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+ZGlyZWN0b3J5PC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CisgICAgIDxsaXN0aXRl bT4KKyAgICAgIDxwYXJhPgorICAgICAgIFNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIGxvZyBkaXJl Y3RvcnkuIEEgbmV3IGRpcmVjdG9yeSBpcyBjcmVhdGVkIHdpdGgKKyAgICAgICB0aGlzIG5hbWUg aWYgaXQgZG9lcyBub3QgZXhpc3QuIEEgc3ViZGlyZWN0b3J5IHdpdGggYSB0aW1lc3RhbXAKKyAg ICAgICBpbmRpY2F0aW5nIHRoZSB0aW1lIGF0IHdoaWNoIDxhcHBsaWNhdGlvbj5wZ19jcmVhdGVz dWJzY3JpYmVyPC9hcHBsaWNhdGlvbj4KKyAgICAgICB3YXMgcnVuIHdpbGwgYmUgY3JlYXRlZC4g VGhlIGZvbGxvd2luZyB0d28gbG9nIGZpbGVzIHdpbGwgYmUgY3JlYXRlZCBpbgorICAgICAgIHRo ZSBzdWJkaXJlY3Rvcnkgd2l0aCBhIHVtYXNrIG9mIDA3NyBzbyB0aGF0IGFjY2VzcyBpcyBkaXNh bGxvd2VkIHRvCisgICAgICAgb3RoZXIgdXNlcnMgYnkgZGVmYXVsdC4KKyAgICAgICA8aXRlbWl6 ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICA8 bGl0ZXJhbD5wZ19jcmVhdGVzdWJzY3JpYmVyX3NlcnZlci5sb2c8L2xpdGVyYWw+IHdoaWNoIGNh cHR1cmVzIGxvZ3MKKyAgICAgICAgICByZWxhdGVkIHRvIHN0b3BwaW5nIGFuZCBzdGFydGluZyB0 aGUgc3RhbmRieSBzZXJ2ZXIsCisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+ CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxsaXRlcmFs PnBnX2NyZWF0ZXN1YnNjcmliZXJfaW50ZXJuYWwubG9nPC9saXRlcmFsPiB3aGljaCBjYXB0dXJl cworICAgICAgICAgIGludGVybmFsIGRpYWdub3N0aWMgb3V0cHV0ICh2YWxpZGF0aW9ucywgY2hl Y2tzLCBldGMuKQorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAg IDwvaXRlbWl6ZWRsaXN0PgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwv dmFybGlzdGVudHJ5PgorCiAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgPHRlcm0+PG9wdGlvbj4t bjwvb3B0aW9uPjwvdGVybT4KICAgICAgPHRlcm0+PG9wdGlvbj4tLWRyeS1ydW48L29wdGlvbj48 L3Rlcm0+CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vic2Ny aWJlci5jIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYwppbmRl eCBiMmJjOWRhZTBiOC4uZjBkYThhMjIzNTQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYmFzZWJh Y2t1cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMKKysrIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3Bn X2NyZWF0ZXN1YnNjcmliZXIuYwpAQCAtNDksMTAgKzQ5LDE0IEBACiAjZGVmaW5lIElOQ0xVREVE X0NPTkZfRklMRQkJCSJwZ19jcmVhdGVzdWJzY3JpYmVyLmNvbmYiCiAjZGVmaW5lIElOQ0xVREVE X0NPTkZfRklMRV9ESVNBQkxFRAlJTkNMVURFRF9DT05GX0ZJTEUgIi5kaXNhYmxlZCIKIAorI2Rl ZmluZSBTRVJWRVJfTE9HX0ZJTEVfTkFNRSAicGdfY3JlYXRlc3Vic2NyaWJlcl9zZXJ2ZXIiCisj ZGVmaW5lIElOVEVSTkFMX0xPR19GSUxFX05BTUUgInBnX2NyZWF0ZXN1YnNjcmliZXJfaW50ZXJu YWwiCisKIC8qIENvbW1hbmQtbGluZSBvcHRpb25zICovCiBzdHJ1Y3QgQ3JlYXRlU3Vic2NyaWJl ck9wdGlvbnMKIHsKIAljaGFyCSAgICpjb25maWdfZmlsZTsJLyogY29uZmlndXJhdGlvbiBmaWxl ICovCisJY2hhcgkgICAqbG9nX2RpcjsJCS8qIGxvZyBkaXJlY3RvcnkgbmFtZSAqLwogCWNoYXIJ ICAgKnB1Yl9jb25uaW5mb19zdHI7CS8qIHB1Ymxpc2hlciBjb25uZWN0aW9uIHN0cmluZyAqLwog CWNoYXIJICAgKnNvY2tldF9kaXI7CQkvKiBkaXJlY3RvcnkgZm9yIFVuaXgtZG9tYWluIHNvY2tl dCwgaWYgYW55ICovCiAJY2hhcgkgICAqc3ViX3BvcnQ7CQkvKiBzdWJzY3JpYmVyIHBvcnQgbnVt YmVyICovCkBAIC0xNDksOCArMTUzLDE0IEBAIHN0YXRpYyB2b2lkIGdldF9wdWJsaXNoZXJfZGF0 YWJhc2VzKHN0cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0aW9ucyAqb3B0LAogc3RhdGljIHZvaWQg cmVwb3J0X2NyZWF0ZXN1Yl9sb2coZW51bSBwZ19sb2dfbGV2ZWwsIGVudW0gcGdfbG9nX3BhcnQs CiAJCQkJCQkJCSBjb25zdCBjaGFyICpwZ19yZXN0cmljdCBmbXQsLi4uKQogCQkJcGdfYXR0cmli dXRlX3ByaW50ZigzLCA0KTsKK3N0YXRpYyB2b2lkIHJlcG9ydF9jcmVhdGVzdWJfbG9nX3YoZW51 bSBwZ19sb2dfbGV2ZWwgbGV2ZWwsIGVudW0gcGdfbG9nX3BhcnQgcGFydCwKKwkJCQkJCQkJICAg Y29uc3QgY2hhciAqcGdfcmVzdHJpY3QgZm10LCB2YV9saXN0IGFyZ3MpCisJCQlwZ19hdHRyaWJ1 dGVfcHJpbnRmKDMsIDApOwogcGdfbm9yZXR1cm4gc3RhdGljIHZvaWQgcmVwb3J0X2NyZWF0ZXN1 Yl9mYXRhbChjb25zdCBjaGFyICpwZ19yZXN0cmljdCBmbXQsLi4uKQogCQkJcGdfYXR0cmlidXRl X3ByaW50ZigxLCAyKTsKK3N0YXRpYyB2b2lkIGludGVybmFsX2xvZ19maWxlX3dyaXRlKGVudW0g cGdfbG9nX2xldmVsIGxldmVsLAorCQkJCQkJCQkJY29uc3QgY2hhciAqcGdfcmVzdHJpY3QgZm10 LCB2YV9saXN0IGFyZ3MpCisJCQlwZ19hdHRyaWJ1dGVfcHJpbnRmKDIsIDApOwogCiAjZGVmaW5l CVdBSVRfSU5URVJWQUwJMQkJLyogMSBzZWNvbmQgKi8KIApAQCAtMTcyLDYgKzE4Miw5IEBAIHN0 YXRpYyBwZ19wcm5nX3N0YXRlIHBybmdfc3RhdGU7CiBzdGF0aWMgY2hhciAqcGdfY3RsX3BhdGgg PSBOVUxMOwogc3RhdGljIGNoYXIgKnBnX3Jlc2V0d2FsX3BhdGggPSBOVUxMOwogCitzdGF0aWMg RklMRSAqaW50ZXJuYWxfbG9nX2ZpbGVfZnAgPSBOVUxMOwkvKiBGaWxlIHB0ciB0byBsb2cgYWxs IG1lc3NhZ2VzIHRvICovCitzdGF0aWMgY2hhciBsb2dkaXJbTUFYUEdQQVRIXTsJLyogRGlyZWN0 b3J5IGxvZyBmaWxlcyBhcmUgcHV0IChpZiBzcGVjaWZpZWQpICovCisKIC8qIHN0YW5kYnkgLyBz dWJzY3JpYmVyIGRhdGEgZGlyZWN0b3J5ICovCiBzdGF0aWMgY2hhciAqc3Vic2NyaWJlcl9kaXIg PSBOVUxMOwogCkBAIC0xODAsOCArMTkzLDI4IEBAIHN0YXRpYyBib29sIHN0YW5kYnlfcnVubmlu ZyA9IGZhbHNlOwogc3RhdGljIGJvb2wgcmVjb3ZlcnlfcGFyYW1zX3NldCA9IGZhbHNlOwogCiAv KgotICogUmVwb3J0IGEgbWVzc2FnZSB3aXRoIGEgZ2l2ZW4gbG9nIGxldmVsCisgKiBSZXBvcnQg YSBtZXNzYWdlIHdpdGggYSBnaXZlbiBsb2cgbGV2ZWwgdG8gc3RkZXJyIGFuZCBsb2cgZmlsZQor ICogKGlmIHNwZWNpZmllZCkuCiAgKi8KK3N0YXRpYyB2b2lkCityZXBvcnRfY3JlYXRlc3ViX2xv Z192KGVudW0gcGdfbG9nX2xldmVsIGxldmVsLCBlbnVtIHBnX2xvZ19wYXJ0IHBhcnQsCisJCQkJ CSAgIGNvbnN0IGNoYXIgKnBnX3Jlc3RyaWN0IGZtdCwgdmFfbGlzdCBhcmdzKQoreworCWlmIChp bnRlcm5hbF9sb2dfZmlsZV9mcCAhPSBOVUxMKQorCXsKKwkJLyogT3V0cHV0IHRvIGJvdGggc3Rk ZXJyIGFuZCB0aGUgbG9nIGZpbGUgKi8KKwkJdmFfbGlzdAkJYXJnX2NweTsKKworCQl2YV9jb3B5 KGFyZ19jcHksIGFyZ3MpOworCQlwZ19sb2dfZ2VuZXJpY192KGxldmVsLCBwYXJ0LCBmbXQsIGFy Z19jcHkpOworCQl2YV9lbmQoYXJnX2NweSk7CisKKwkJaW50ZXJuYWxfbG9nX2ZpbGVfd3JpdGUo bGV2ZWwsIGZtdCwgYXJncyk7CisJfQorCWVsc2UKKwkJcGdfbG9nX2dlbmVyaWNfdihsZXZlbCwg cGFydCwgZm10LCBhcmdzKTsKK30KKwogc3RhdGljIHZvaWQKIHJlcG9ydF9jcmVhdGVzdWJfbG9n KGVudW0gcGdfbG9nX2xldmVsIGxldmVsLCBlbnVtIHBnX2xvZ19wYXJ0IHBhcnQsCiAJCQkJCSBj b25zdCBjaGFyICpwZ19yZXN0cmljdCBmbXQsLi4uKQpAQCAtMTkwLDcgKzIyMyw3IEBAIHJlcG9y dF9jcmVhdGVzdWJfbG9nKGVudW0gcGdfbG9nX2xldmVsIGxldmVsLCBlbnVtIHBnX2xvZ19wYXJ0 IHBhcnQsCiAKIAl2YV9zdGFydChhcmdzLCBmbXQpOwogCi0JcGdfbG9nX2dlbmVyaWNfdihsZXZl bCwgcGFydCwgZm10LCBhcmdzKTsKKwlyZXBvcnRfY3JlYXRlc3ViX2xvZ192KGxldmVsLCBwYXJ0 LCBmbXQsIGFyZ3MpOwogCiAJdmFfZW5kKGFyZ3MpOwogfQpAQCAtMjA1LDcgKzIzOCw3IEBAIHJl cG9ydF9jcmVhdGVzdWJfZmF0YWwoY29uc3QgY2hhciAqcGdfcmVzdHJpY3QgZm10LC4uLikKIAog CXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CiAKLQlwZ19sb2dfZ2VuZXJpY192KFBHX0xPR19FUlJPUiwg UEdfTE9HX1BSSU1BUlksIGZtdCwgYXJncyk7CisJcmVwb3J0X2NyZWF0ZXN1Yl9sb2dfdihQR19M T0dfRVJST1IsIFBHX0xPR19QUklNQVJZLCBmbXQsIGFyZ3MpOwogCiAJdmFfZW5kKGFyZ3MpOwog CkBAIC0zMTMsNiArMzQ2LDEyIEBAIGNsZWFudXBfb2JqZWN0c19hdGV4aXQodm9pZCkKIAogCWlm IChzdGFuZGJ5X3J1bm5pbmcpCiAJCXN0b3Bfc3RhbmRieV9zZXJ2ZXIoc3Vic2NyaWJlcl9kaXIp OworCisJaWYgKGludGVybmFsX2xvZ19maWxlX2ZwICE9IE5VTEwpCisJeworCQlmY2xvc2UoaW50 ZXJuYWxfbG9nX2ZpbGVfZnApOworCQlpbnRlcm5hbF9sb2dfZmlsZV9mcCA9IE5VTEw7CisJfQog fQogCiBzdGF0aWMgdm9pZApAQCAtMzI3LDYgKzM2Niw3IEBAIHVzYWdlKHZvaWQpCiAJCQkgIiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZXMgYW5kIGRhdGFiYXNlcyB0 aGF0IGRvbid0IGFsbG93IGNvbm5lY3Rpb25zXG4iKSk7CiAJcHJpbnRmKF8oIiAgLWQsIC0tZGF0 YWJhc2U9REJOQU1FICAgICAgICAgICBkYXRhYmFzZSBpbiB3aGljaCB0byBjcmVhdGUgYSBzdWJz Y3JpcHRpb25cbiIpKTsKIAlwcmludGYoXygiICAtRCwgLS1wZ2RhdGE9REFUQURJUiAgICAgICAg ICAgIGxvY2F0aW9uIGZvciB0aGUgc3Vic2NyaWJlciBkYXRhIGRpcmVjdG9yeVxuIikpOworCXBy aW50ZihfKCIgIC1sLCAtLWxvZ2Rpcj1MT0dESVIgICAgICAgICAgICAgbG9jYXRpb24gZm9yIHRo ZSBsb2cgZGlyZWN0b3J5XG4iKSk7CiAJcHJpbnRmKF8oIiAgLW4sIC0tZHJ5LXJ1biAgICAgICAg ICAgICAgICAgICBkcnkgcnVuLCBqdXN0IHNob3cgd2hhdCB3b3VsZCBiZSBkb25lXG4iKSk7CiAJ cHJpbnRmKF8oIiAgLXAsIC0tc3Vic2NyaWJlci1wb3J0PVBPUlQgICAgICBzdWJzY3JpYmVyIHBv cnQgbnVtYmVyIChkZWZhdWx0ICVzKVxuIiksIERFRkFVTFRfU1VCX1BPUlQpOwogCXByaW50Zihf KCIgIC1QLCAtLXB1Ymxpc2hlci1zZXJ2ZXI9Q09OTlNUUiAgcHVibGlzaGVyIGNvbm5lY3Rpb24g c3RyaW5nXG4iKSk7CkBAIC03NjEsNiArODAxLDcgQEAgbW9kaWZ5X3N1YnNjcmliZXJfc3lzaWQo Y29uc3Qgc3RydWN0IENyZWF0ZVN1YnNjcmliZXJPcHRpb25zICpvcHQpCiAJYm9vbAkJY3JjX29r OwogCXN0cnVjdCB0aW1ldmFsIHR2OwogCisJY2hhcgkgICAqb3V0X2ZpbGU7CiAJY2hhcgkgICAq Y21kX3N0cjsKIAogCXJlcG9ydF9jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0dfUFJJ TUFSWSwKQEAgLTc5OSw4ICs4NDAsMjAgQEAgbW9kaWZ5X3N1YnNjcmliZXJfc3lzaWQoY29uc3Qg c3RydWN0IENyZWF0ZVN1YnNjcmliZXJPcHRpb25zICpvcHQpCiAJCXJlcG9ydF9jcmVhdGVzdWJf bG9nKFBHX0xPR19JTkZPLCBQR19MT0dfUFJJTUFSWSwKIAkJCQkJCQkgInJ1bm5pbmcgcGdfcmVz ZXR3YWwgb24gdGhlIHN1YnNjcmliZXIiKTsKIAotCWNtZF9zdHIgPSBwc3ByaW50ZigiXCIlc1wi IC1EIFwiJXNcIiA+IFwiJXNcIiIsIHBnX3Jlc2V0d2FsX3BhdGgsCi0JCQkJCSAgIHN1YnNjcmli ZXJfZGlyLCBERVZOVUxMKTsKKwkvKgorCSAqIFJlZGlyZWN0aW5nIHRoZSBvdXRwdXQgdG8gdGhl IGxvZ2ZpbGUgaWYgc3BlY2lmaWVkLiBTaW5jZSB0aGUgb3V0cHV0CisJICogd291bGQgYmUgdmVy eSBzaG9ydCwgYXJvdW5kIG9uZSBsaW5lLCB3ZSBkbyBub3QgcHJvdmlkZSBhIHNlcGFyYXRlIGZp bGUKKwkgKiBmb3IgaXQ7IGl0J3MgZG9uZSBhcyBhIHBhcnQgb2YgdGhlIHNlcnZlciBsb2cuCisJ ICovCisJaWYgKG9wdC0+bG9nX2RpcikKKwkJb3V0X2ZpbGUgPSBwc3ByaW50ZigiJXMvJXMubG9n IiwgbG9nZGlyLCBTRVJWRVJfTE9HX0ZJTEVfTkFNRSk7CisJZWxzZQorCQlvdXRfZmlsZSA9IERF Vk5VTEw7CisKKwljbWRfc3RyID0gcHNwcmludGYoIlwiJXNcIiAtRCBcIiVzXCIgPj4gXCIlc1wi IiwgcGdfcmVzZXR3YWxfcGF0aCwKKwkJCQkJICAgc3Vic2NyaWJlcl9kaXIsIG91dF9maWxlKTsK KwlpZiAob3B0LT5sb2dfZGlyKQorCQlwZ19mcmVlKG91dF9maWxlKTsKIAogCXJlcG9ydF9jcmVh dGVzdWJfbG9nKFBHX0xPR19ERUJVRywgUEdfTE9HX1BSSU1BUlksCiAJCQkJCQkgInBnX3Jlc2V0 d2FsIGNvbW1hbmQgaXM6ICVzIiwgY21kX3N0cik7CkBAIC04MTcsNiArODcwLDcgQEAgbW9kaWZ5 X3N1YnNjcmliZXJfc3lzaWQoY29uc3Qgc3RydWN0IENyZWF0ZVN1YnNjcmliZXJPcHRpb25zICpv cHQpCiAJfQogCiAJcGdfZnJlZShjZik7CisJcGdfZnJlZShjbWRfc3RyKTsKIH0KIAogLyoKQEAg LTEwMjMsNiArMTA3Nyw4OSBAQCBzZXJ2ZXJfaXNfaW5fcmVjb3ZlcnkoUEdjb25uICpjb25uKQog CXJldHVybiByZXQgPT0gMDsKIH0KIAorc3RhdGljIHZvaWQKK2ludGVybmFsX2xvZ19maWxlX3dy aXRlKGVudW0gcGdfbG9nX2xldmVsIGxldmVsLCBjb25zdCBjaGFyICpwZ19yZXN0cmljdCBmbXQs CisJCQkJCQl2YV9saXN0IGFyZ3MpCit7CisJQXNzZXJ0KGludGVybmFsX2xvZ19maWxlX2ZwKTsK KworCS8qIERvIG5vdGhpbmcgaWYgbG9nIGxldmVsIGlzIHRvbyBsb3cuICovCisJaWYgKGxldmVs IDwgX19wZ19sb2dfbGV2ZWwpCisJCXJldHVybjsKKworCXZmcHJpbnRmKGludGVybmFsX2xvZ19m aWxlX2ZwLCBfKGZtdCksIGFyZ3MpOworCisJZnByaW50ZihpbnRlcm5hbF9sb2dfZmlsZV9mcCwg IlxuIik7CisJZmZsdXNoKGludGVybmFsX2xvZ19maWxlX2ZwKTsKK30KKworLyoKKyAqIE9wZW4g YSBuZXcgbG9nZmlsZSB3aXRoIHByb3BlciBwZXJtaXNzaW9ucy4KKyAqIEZyb20gc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYworICovCitzdGF0aWMgRklMRSAqCitsb2dmaWxlX29w ZW4oY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKm1vZGUpCit7CisJRklMRQkgICAq Zmg7CisJbW9kZV90CQlvdW1hc2s7CisKKwlvdW1hc2sgPSB1bWFzaygobW9kZV90KSAoKH4oU19J UlVTUiB8IFNfSVdVU1IpKSAmIChTX0lSV1hVIHwgU19JUldYRyB8IFNfSVJXWE8pKSk7CisJZmgg PSBmb3BlbihmaWxlbmFtZSwgbW9kZSk7CisJdW1hc2sob3VtYXNrKTsKKworCWlmIChmaCkKKwl7 CisJCXNldHZidWYoZmgsIE5VTEwsIFBHX0lPTEJGLCAwKTsKKworI2lmZGVmIFdJTjMyCisJCS8q IHVzZSBDUkxGIGxpbmUgZW5kaW5ncyBvbiBXaW5kb3dzICovCisJCV9zZXRtb2RlKF9maWxlbm8o ZmgpLCBfT19URVhUKTsKKyNlbmRpZgorCX0KKwllbHNlCisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qg b3BlbiBsb2cgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkgZmlsZW5hbWUpOworCisJcmV0dXJuIGZo OworfQorCitzdGF0aWMgdm9pZAorbWFrZV9vdXRwdXRfZGlycyhjb25zdCBjaGFyICpsb2dfYmFz ZWRpcikKK3sKKwljaGFyCQl0aW1lc3RhbXBbMTI4XTsKKwlzdHJ1Y3QgdGltZXZhbCB0dmFsOwor CXRpbWVfdAkJbm93OworCXN0cnVjdCB0bQl0bWJ1ZjsKKwlpbnQJCQlsZW47CisKKwkvKiBHZW5l cmF0ZSB0aW1lc3RhbXAgKi8KKwlnZXR0aW1lb2ZkYXkoJnR2YWwsIE5VTEwpOworCW5vdyA9IHR2 YWwudHZfc2VjOworCisJc3RyZnRpbWUodGltZXN0YW1wLCBzaXplb2YodGltZXN0YW1wKSwgIiVZ JW0lZFQlSCVNJVMiLAorCQkJIGxvY2FsdGltZV9yKCZub3csICZ0bWJ1ZikpOworCisJLyogYXBw ZW5kIG1pbGxpc2Vjb25kcyAqLworCXNucHJpbnRmKHRpbWVzdGFtcCArIHN0cmxlbih0aW1lc3Rh bXApLAorCQkJIHNpemVvZih0aW1lc3RhbXApIC0gc3RybGVuKHRpbWVzdGFtcCksICIuJTAzdSIs CisJCQkgKHVuc2lnbmVkIGludCkgKHR2YWwudHZfdXNlYyAvIDEwMDApKTsKKworCS8qIEJ1aWxk IHRpbWVzdGFtcCBkaXJlY3RvcnkgcGF0aCAqLworCWxlbiA9IHNucHJpbnRmKGxvZ2RpciwgTUFY UEdQQVRILCAiJXMvJXMiLCBsb2dfYmFzZWRpciwgdGltZXN0YW1wKTsKKworCWlmIChsZW4gPj0g TUFYUEdQQVRIKQorCQlwZ19mYXRhbCgiZGlyZWN0b3J5IHBhdGggZm9yIGxvZyBmaWxlcywgJXMv JXMsIGlzIHRvbyBsb25nIiwKKwkJCQkgbG9nZGlyLCB0aW1lc3RhbXApOworCisJLyogQ3JlYXRl IGJhc2UgZGlyZWN0b3J5IChpZ25vcmUgaWYgZXhpc3RzKSAqLworCWlmIChta2Rpcihsb2dfYmFz ZWRpciwgU19JUldYVSkgPCAwICYmIGVycm5vICE9IEVFWElTVCkKKwkJcGdfZmF0YWwoImNvdWxk IG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBsb2dfYmFzZWRpcik7CisKKwkvKiBD cmVhdGUgQkFTRV9ESVIvJHRpbWVzdGFtcCAqLworCWlmIChta2Rpcihsb2dkaXIsIFNfSVJXWFUp IDwgMCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJXNcIjogJW0i LCBsb2dkaXIpOworfQorCiAvKgogICogSXMgdGhlIHByaW1hcnkgc2VydmVyIHJlYWR5IGZvciBs b2dpY2FsIHJlcGxpY2F0aW9uPwogICoKQEAgLTE3ODEsNiArMTkxOCw5IEBAIHN0YXJ0X3N0YW5k Ynlfc2VydmVyKGNvbnN0IHN0cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0aW9ucyAqb3B0LCBib29s IHJlc3RyaWN0ZWRfCiAJaWYgKHJlc3RyaWN0X2xvZ2ljYWxfd29ya2VyKQogCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihwZ19jdGxfY21kLCAiIC1vIFwiLWMgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25f d29ya2Vycz0wXCIiKTsKIAorCWlmIChvcHQtPmxvZ19kaXIpCisJCWFwcGVuZFBRRXhwQnVmZmVy KHBnX2N0bF9jbWQsICIgLWwgXCIlcy8lcy5sb2dcIiIsIGxvZ2RpciwgU0VSVkVSX0xPR19GSUxF X05BTUUpOworCiAJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0RFQlVHLCBQR19MT0dfUFJJ TUFSWSwKIAkJCQkJCSAicGdfY3RsIGNvbW1hbmQgaXM6ICVzIiwgcGdfY3RsX2NtZC0+ZGF0YSk7 CiAJcmMgPSBzeXN0ZW0ocGdfY3RsX2NtZC0+ZGF0YSk7CkBAIC0yMzUxLDYgKzI0OTEsNyBAQCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJeyJhbGwiLCBub19hcmd1bWVudCwgTlVMTCwg J2EnfSwKIAkJeyJkYXRhYmFzZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnZCd9LAogCQl7 InBnZGF0YSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnRCd9LAorCQl7ImxvZ2RpciIsIHJl cXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnbCd9LAogCQl7ImRyeS1ydW4iLCBub19hcmd1bWVudCwg TlVMTCwgJ24nfSwKIAkJeyJzdWJzY3JpYmVyLXBvcnQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVM TCwgJ3AnfSwKIAkJeyJwdWJsaXNoZXItc2VydmVyIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEws ICdQJ30sCkBAIC0yNDA5LDYgKzI1NTAsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK IAkvKiBEZWZhdWx0IHNldHRpbmdzICovCiAJc3Vic2NyaWJlcl9kaXIgPSBOVUxMOwogCW9wdC5j b25maWdfZmlsZSA9IE5VTEw7CisJb3B0LmxvZ19kaXIgPSBOVUxMOwogCW9wdC5wdWJfY29ubmlu Zm9fc3RyID0gTlVMTDsKIAlvcHQuc29ja2V0X2RpciA9IE5VTEw7CiAJb3B0LnN1Yl9wb3J0ID0g REVGQVVMVF9TVUJfUE9SVDsKQEAgLTI0MzksNyArMjU4MSw3IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogCiAJZ2V0X3Jlc3RyaWN0ZWRfdG9rZW4oKTsKIAotCXdoaWxlICgoYyA9IGdl dG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJhZDpEOm5wOlA6czp0OlRVOnYiLAorCXdoaWxlICgoYyA9 IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJhZDpEOmw6bnA6UDpzOnQ6VFU6diIsCiAJCQkJCQkJ bG9uZ19vcHRpb25zLCAmb3B0aW9uX2luZGV4KSkgIT0gLTEpCiAJewogCQlzd2l0Y2ggKGMpCkBA IC0yNDYwLDYgKzI2MDIsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJc3Vi c2NyaWJlcl9kaXIgPSBwZ19zdHJkdXAob3B0YXJnKTsKIAkJCQljYW5vbmljYWxpemVfcGF0aChz dWJzY3JpYmVyX2Rpcik7CiAJCQkJYnJlYWs7CisJCQljYXNlICdsJzoKKwkJCQlvcHQubG9nX2Rp ciA9IHBnX3N0cmR1cChvcHRhcmcpOworCQkJCWNhbm9uaWNhbGl6ZV9wYXRoKG9wdC5sb2dfZGly KTsKKwkJCQlicmVhazsKIAkJCWNhc2UgJ24nOgogCQkJCWRyeV9ydW4gPSB0cnVlOwogCQkJCWJy ZWFrOwpAQCAtMjYwNyw2ICsyNzUzLDE5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQog CQlleGl0KDEpOwogCX0KIAorCWlmIChvcHQubG9nX2RpciAhPSBOVUxMKQorCXsKKwkJY2hhcgkg ICAqaW50ZXJuYWxfbG9nX2ZpbGU7CisKKwkJbWFrZV9vdXRwdXRfZGlycyhvcHQubG9nX2Rpcik7 CisJCWludGVybmFsX2xvZ19maWxlID0gcHNwcmludGYoIiVzLyVzLmxvZyIsIGxvZ2RpciwKKwkJ CQkJCQkJCSBJTlRFUk5BTF9MT0dfRklMRV9OQU1FKTsKKworCQkvKiBsb2dmaWxlX29wZW4oKSB3 aWxsIGV4aXQgaWYgdGhlcmUgaXMgYW4gZXJyb3IgKi8KKwkJaW50ZXJuYWxfbG9nX2ZpbGVfZnAg PSBsb2dmaWxlX29wZW4oaW50ZXJuYWxfbG9nX2ZpbGUsICJhIik7CisJCXBnX2ZyZWUoaW50ZXJu YWxfbG9nX2ZpbGUpOworCX0KKwogCWlmIChkcnlfcnVuKQogCQlyZXBvcnRfY3JlYXRlc3ViX2xv ZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCiAJCQkJCQkJICJFeGVjdXRpbmcgaW4gZHJ5 LXJ1biBtb2RlLlxuIgpAQCAtMjgyNiw1ICsyOTg1LDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAJcmVwb3J0X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZ LAogCQkJCQkJICJEb25lISIpOwogCisJaWYgKGludGVybmFsX2xvZ19maWxlX2ZwICE9IE5VTEwp CisJCWZjbG9zZShpbnRlcm5hbF9sb2dfZmlsZV9mcCk7CisKIAlyZXR1cm4gMDsKIH0KZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzA0MF9wZ19jcmVhdGVzdWJzY3JpYmVyLnBs IGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3QvMDQwX3BnX2NyZWF0ZXN1YnNjcmliZXIucGwKaW5k ZXggMGMyN2ZjYTdiYjcuLjg1ODA4MmM3MGRmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2Jhc2Vi YWNrdXAvdC8wNDBfcGdfY3JlYXRlc3Vic2NyaWJlci5wbAorKysgYi9zcmMvYmluL3BnX2Jhc2Vi YWNrdXAvdC8wNDBfcGdfY3JlYXRlc3Vic2NyaWJlci5wbApAQCAtMTQsNiArMTQsNyBAQCBwcm9n cmFtX3ZlcnNpb25fb2soJ3BnX2NyZWF0ZXN1YnNjcmliZXInKTsKIHByb2dyYW1fb3B0aW9uc19o YW5kbGluZ19vaygncGdfY3JlYXRlc3Vic2NyaWJlcicpOwogCiBteSAkZGF0YWRpciA9IFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOjp0ZW1wZGlyOworbXkgJGxvZ2RpciA9IFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOjp0ZW1wZGlyOwogCiAjIEdlbmVyYXRlIGEgZGF0YWJhc2Ugd2l0aCBhIG5hbWUg bWFkZSBvZiBhIHJhbmdlIG9mIEFTQ0lJIGNoYXJhY3RlcnMuCiAjIEV4dHJhY3RlZCBmcm9tIDAw Ml9wZ191cGdyYWRlLnBsLgpAQCAtMzYyLDkgKzM2MywzNSBAQCBjb21tYW5kX29rKAogCQknLS1z dWJzY3JpcHRpb24nID0+ICdzdWIyJywKIAkJJy0tZGF0YWJhc2UnID0+ICRkYjEsCiAJCSctLWRh dGFiYXNlJyA9PiAkZGIyLAorCQknLS1sb2dkaXInID0+ICRsb2dkaXIsCiAJXSwKIAkncnVuIHBn X2NyZWF0ZXN1YnNjcmliZXIgLS1kcnktcnVuIG9uIG5vZGUgUycpOwogCisjIENoZWNrIHRoYXQg dGhlIGxvZyBmaWxlcyB3ZXJlIGNyZWF0ZWQKK215IEBzZXJ2ZXJfbG9nX2ZpbGVzID0gZ2xvYiAi JGxvZ2Rpci8qL3BnX2NyZWF0ZXN1YnNjcmliZXJfc2VydmVyLmxvZyI7CitpcyhzY2FsYXIoQHNl cnZlcl9sb2dfZmlsZXMpLAorCTEsICJwZ19jcmVhdGVzdWJzY3JpYmVyX3NlcnZlci5sb2cgZmls ZSB3YXMgY3JlYXRlZCIpOworbXkgJHNlcnZlcl9sb2dfZmlsZV9zaXplID0gLXMgJHNlcnZlcl9s b2dfZmlsZXNbMF07Citpc250KCRzZXJ2ZXJfbG9nX2ZpbGVfc2l6ZSwgMCwKKwkicGdfY3JlYXRl c3Vic2NyaWJlcl9zZXJ2ZXIubG9nIGZpbGUgbm90IGVtcHR5Iik7CitteSAkc2VydmVyX2xvZyA9 IHNsdXJwX2ZpbGUoJHNlcnZlcl9sb2dfZmlsZXNbMF0pOworbGlrZSgKKwkkc2VydmVyX2xvZywK Kwlxci9jb25zaXN0ZW50IHJlY292ZXJ5IHN0YXRlIHJlYWNoZWQvLAorCSJzZXJ2ZXIgcmVhY2hl ZCBjb25zaXN0ZW50IHJlY292ZXJ5IHN0YXRlIik7CisKK215IEBpbnRlcm5hbF9sb2dfZmlsZXMg PSBnbG9iICIkbG9nZGlyLyovcGdfY3JlYXRlc3Vic2NyaWJlcl9pbnRlcm5hbC5sb2ciOworaXMo c2NhbGFyKEBpbnRlcm5hbF9sb2dfZmlsZXMpLAorCTEsICJwZ19jcmVhdGVzdWJzY3JpYmVyX2lu dGVybmFsLmxvZyBmaWxlIHdhcyBjcmVhdGVkIik7CitteSAkaW50ZXJuYWxfbG9nX2ZpbGVfc2l6 ZSA9IC1zICRpbnRlcm5hbF9sb2dfZmlsZXNbMF07Citpc250KCRpbnRlcm5hbF9sb2dfZmlsZV9z aXplLCAwLAorCSJwZ19jcmVhdGVzdWJzY3JpYmVyX2ludGVybmFsLmxvZyBmaWxlIG5vdCBlbXB0 eSIpOworbXkgJGludGVybmFsX2xvZyA9IHNsdXJwX2ZpbGUoJGludGVybmFsX2xvZ19maWxlc1sw XSk7CitsaWtlKAorCSRpbnRlcm5hbF9sb2csCisJcXIvdGFyZ2V0IHNlcnZlciByZWFjaGVkIHRo ZSBjb25zaXN0ZW50IHN0YXRlLywKKwkibG9nIHNob3dzIGNvbnNpc3RlbnQgc3RhdGUgcmVhY2hl ZCIpOworCiAjIENoZWNrIGlmIG5vZGUgUyBpcyBzdGlsbCBhIHN0YW5kYnkKICRub2RlX3MtPnN0 YXJ0OwogaXMoJG5vZGVfcy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTRUxFQ1QgcGdfY2F0YWxv Zy5wZ19pc19pbl9yZWNvdmVyeSgpJyksCkBAIC00NDQsNyArNDcxLDggQEAgaXMoc2NhbGFyKCgp ID0gJHN0ZGVyciA9fiAvd291bGQgY3JlYXRlIHN1YnNjcmlwdGlvbi9nKSwKIAogIyBDcmVhdGUg YSB1c2VyLWRlZmluZWQgcHVibGljYXRpb24sIGFuZCBhIHRhYmxlIHRoYXQgaXMgbm90IGEgbWVt YmVyIG9mIHRoYXQKICMgcHVibGljYXRpb24uCi0kbm9kZV9wLT5zYWZlX3BzcWwoJGRiMSwgcXEo Ciskbm9kZV9wLT5zYWZlX3BzcWwoCisJJGRiMSwgcXEoCiAJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RfcHViMyBGT1IgVEFCTEUgdGJsMTsKIAlDUkVBVEUgVEFCTEUgbm90X3JlcGxpY2F0ZWQgKGEg aW50KTsKICkpOwpAQCAtNTQwLDggKzU2OCw3IEBAIHNlY29uZCByb3cKIHRoaXJkIHJvdyksCiAJ ImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya3MgaW4gZGF0YWJhc2UgJGRiMSIpOwogJHJlc3VsdCA9 ICRub2RlX3MtPnNhZmVfcHNxbCgkZGIxLCAnU0VMRUNUICogRlJPTSBub3RfcmVwbGljYXRlZCcp OwotaXMoJHJlc3VsdCwgcXEoKSwKLQkidGFibGUgaXMgbm90IHJlcGxpY2F0ZWQgaW4gZGF0YWJh c2UgJGRiMSIpOworaXMoJHJlc3VsdCwgcXEoKSwgInRhYmxlIGlzIG5vdCByZXBsaWNhdGVkIGlu IGRhdGFiYXNlICRkYjEiKTsKIAogIyBDaGVjayByZXN1bHQgaW4gZGF0YWJhc2UgJGRiMgogJHJl c3VsdCA9ICRub2RlX3MtPnNhZmVfcHNxbCgkZGIyLCAnU0VMRUNUICogRlJPTSB0YmwyJyk7CkBA IC01NTUsOCArNTgyLDEwIEBAIG15ICRzeXNpZF9zID0gJG5vZGVfcy0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiBpc250KCRzeXNpZF9wLCAkc3lzaWRfcywgJ3N5c3RlbSBpZGVudGlmaWVyIHdhcyBj aGFuZ2VkJyk7CiAKICMgVmVyaWZ5IHRoYXQgcHViMiB3YXMgY3JlYXRlZCBpbiAkZGIyCi1pcygk bm9kZV9wLT5zYWZlX3BzcWwoJGRiMiwgIlNFTEVDVCBDT1VOVCgqKSBGUk9NIHBnX3B1YmxpY2F0 aW9uIFdIRVJFIHB1Ym5hbWUgPSAncHViMiciKSwKLQknMScsICJwdWJsaWNhdGlvbiBwdWIyIHdh cyBjcmVhdGVkIGluICRkYjIiKTsKK2lzKCAkbm9kZV9wLT5zYWZlX3BzcWwoCisJCSRkYjIsICJT RUxFQ1QgQ09VTlQoKikgRlJPTSBwZ19wdWJsaWNhdGlvbiBXSEVSRSBwdWJuYW1lID0gJ3B1YjIn IiksCisJJzEnLAorCSJwdWJsaWNhdGlvbiBwdWIyIHdhcyBjcmVhdGVkIGluICRkYjIiKTsKIAog IyBHZXQgc3Vic2NyaXB0aW9uIGFuZCBwdWJsaWNhdGlvbiBuYW1lcwogJHJlc3VsdCA9ICRub2Rl X3MtPnNhZmVfcHNxbCgKQEAgLTU4MSw3ICs2MTAsNyBAQCAkcmVzdWx0ID0gJG5vZGVfcy0+c2Fm ZV9wc3FsKAogICAgICkKICk7CiAKLWlzKCRyZXN1bHQsIHFxKCRkYjF8e3Rlc3RfcHViM30KK2lz KCAkcmVzdWx0LCBxcSgkZGIxfHt0ZXN0X3B1YjN9CiAkZGIyfHtwdWIyfSksCiAJInN1YnNjcmlw dGlvbnMgdXNlIHRoZSBjb3JyZWN0IHB1YmxpY2F0aW9ucyIpOwogCi0tIAoyLjQzLjAKCg== --000000000000135cb9064d90e489--