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 1vqQf0-00AdSU-1Y for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Feb 2026 06:58:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vqQez-007G28-23 for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Feb 2026 06:58:46 +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 1vqQez-007G20-0X for pgsql-hackers@lists.postgresql.org; Thu, 12 Feb 2026 06:58:46 +0000 Received: from mail-oo1-xc35.google.com ([2607:f8b0:4864:20::c35]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vqQex-00000000H6H-1WMg for pgsql-hackers@lists.postgresql.org; Thu, 12 Feb 2026 06:58:45 +0000 Received: by mail-oo1-xc35.google.com with SMTP id 006d021491bc7-67242e24be4so1768985eaf.1 for ; Wed, 11 Feb 2026 22:58:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770879521; cv=none; d=google.com; s=arc-20240605; b=NN4pLx+FDM9gQTnM+BKAGGvNDgxc6xa5EkRg/XB3uXQ/g5iC5WAkwG0hqfc3slG/ff 4qwZK87BsOTntBSxX1iVQnLRjJUwlA2tXmqCpJyqVrc2/apMb9np4k1IZHEpDIwhs+Is 8/8lQgcBdHU+8nM5a0wfeLRP0TC15xO5VZMsJVKAQvgkTWW6/fk0HSdjl6qs3rKYSKtQ x369jdbUqqGsNluZE52IahWaoBbZxbvIcAfHo/0w1s6zKLtNrj7I/adfcrSR9V97JmgO lVwCQqvX9CyKF33CF28Hwsfr87r62N84Y5QJ/8oIXWWVhAJrpp60hkxtM9hL4jGMeARk sCRw== 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=0gZPM02Gc6YikaQOTI73UJ4wXW7uJRTM/Zl4RzygJMY=; fh=TfHYX/ltViONWYGcCpbpITOqatbtaK/lRgH04tPtfyc=; b=IQkLES+MpP2Ovw1qNXzPo6zAf9sScI46N3OKBAC7wMWQWbmQ8Fzl7565jU6AS8OFN1 a5z6bRTFA1FDFAakQoxXCg5H5/g084FxqIQaDZbDfRA/9JeCcTZ/Ucgx4BT1RtodECwj HYJs1t0UZGptdQylQE8Kxjqvdcuo3pVReHyX7b+Zlp1NDmUrjb/JrSWYxazXlODqCUB5 ewnxda1wguTJuUC78OmZIyT5StfIhTl1iBUl0ruW+vZ+14XSD/xV1ElcadA4BkLWZnBU /lYp3IeB+L99nNOGTV+OoCDRP8bsvuCqDTsaFc1TqG6/1UyE2TUyX9gXxNZAvnBhHoNx VlBg==; 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=1770879521; x=1771484321; 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=0gZPM02Gc6YikaQOTI73UJ4wXW7uJRTM/Zl4RzygJMY=; b=E0LLE0kc/BkSwrKM0v6lRZ2fqaJqh2JeErBkLb7bGa01FfKbSa6qK8NK4hu2LaCAPv h2Nh3aVO5eRCUNATg9/xeRCk9v8SUIsCu2AUydPwL62r5HBUUL8IyXfJnYXAmuHs5mHS rvyGVdnSAM8Ads4aR9MJaaN6bOs/5YKJaZ/i9bAMgNgHS7HOxKUG8NXJytYXD084aPeE OiI+K4AUgvw1JIXxwm9HdJE4jAi4GSldJNMyMpTDAOQepU6Y1EC4xGgRur7IK+CTX7ap GyKUFj09cGvuV4jKCVx6upvMyc9lG0ID7KT8URZkqrspyLdL409LddCAh484W6Ut06dp AyjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770879521; x=1771484321; 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=0gZPM02Gc6YikaQOTI73UJ4wXW7uJRTM/Zl4RzygJMY=; b=AK3LgWk2zthxJxtNbLjqdGVzNllUw3DipVkY4wFnNwUML/6XngOfdrk38O8Igg2uNz YfuGQtDTe7GhK3m3T/sKdXn8RgW1Ps/HaHdKo5N7ZZcBJgbP+AbKd6foEE1eu1SB8gnp U4Opb/+20d89ajZ6y/5pRV3u9G9KVRpXWiaTkB3Z4cSEknaQzV6o2Lx9GtV651TocCDP gBjQ0t994VsxU3dILuFOF4KnQz661HThYP4jrmiIYqXBKhLf9xxD7qa/Kr8RH8Dc5Yf6 LkXYYasux2jhMSLlDW+X89imnDqaVESQUc+LqWsu2UgylDQrPwzUc2NYZ0Ox8bNfBC9l YRJQ== X-Forwarded-Encrypted: i=1; AJvYcCVf+ZR8k0n6Y8hyFtSIcvdJc8UFEKrEZaxFxRVzCXuYDw5tiZ8KBBpuVuWyZbyZAFPnfd+kK4fOW/r1vVOO@lists.postgresql.org X-Gm-Message-State: AOJu0YxoWBi0V70ocRXmT+nmT5cmexwK4MfpTZFduCA9hkkPYT/me09n WminseYbTx64ZNbF12RSb9BGLLR8+HGPchxddFGziYIhR1DDOs/G99OlAOEvyi1QLqhN30EpAyV pw+RkYiQteuA7j/fQrL6g1zS5nnYAxDs= X-Gm-Gg: AZuq6aIsUPlcvt9zm16xhxzQ+M/ExvSO82+zieh6Xmhz1rKZ+vvYzrQXMsct02tGa/F GemGSagZdQ9V3tGgYREbMUnkqTIIpZlgI+XwES35ObLLGuDEdVJLJws9Eed6pFtZmf+ZOLWj1i4 5pc4DGW/oXwCj2HDKbYjP8TMnTc6pxvkrF4t/PcT+SgHz4QhT48+QjVgiDfC7mxMeF/i0gu0cOs LbUl2xosgHuYehbJ0kBIE3efgPfrWGZMHY1B7b5GJWlHuQCfWHhynZtehPXTtwZGWTURYDyO2Q0 VyZ7cRvBrY5wk9my5+HD X-Received: by 2002:a05:6820:f022:b0:668:d715:1098 with SMTP id 006d021491bc7-6759b1f599cmr802957eaf.59.1770879521271; Wed, 11 Feb 2026 22:58:41 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Shlok Kyal Date: Thu, 12 Feb 2026 12:28:28 +0530 X-Gm-Features: AZwV_QjmIwsRfEIvgOri2sxQoE12a9f9Be7euqwLT_qhOdsIj7K55ChTxcqiwUw Message-ID: Subject: Re: Skipping schema changes in publication To: "David G. Johnston" Cc: shveta malik , vignesh C , Amit Kapila , Peter Smith , Dilip Kumar , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000ce9078064a9b044c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ce9078064a9b044c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, 11 Feb 2026 at 11:32, David G. Johnston wrote: > > On Tuesday, February 10, 2026, shveta malik wrot= e: >> >> > >> > The attached v42 version patch has the changes for the same. >> > >> >> Thanks, will review. > > > Publication names are unique within the database. In check_publications_= except_list, the use of =E2=80=9Cselect distinct=E2=80=9D when pulling from= pg_publication by name is unnecessary. Furthermore, if we only have a sin= gle publication name it is unnecessary to perform the check and thus no nee= d to even run the query. > > David J. > > > +check_publications_except_list(WalReceiverConn *wrconn, List *publicatio= ns) > +{ > + WalRcvExecResult *res; > + StringInfoData cmd; > + TupleTableSlot *slot; > + Oid tableRow[1] =3D {TEXTOID}; > + List *except_publications =3D NIL; > + > + initStringInfo(&cmd); > + appendStringInfoString(&cmd, > + "SELECT DISTINCT p.pubname\n" > + " FROM pg_catalog.pg_publication p\n" > + " WHERE p.pubname IN ("); > + > + GetPublicationsStr(publications, &cmd, true); > + > + appendStringInfoString(&cmd, > + ")\n" > + " AND EXISTS (SELECT 1\n" > + " FROM pg_catalog.pg_publication_rel pr\n" > + " WHERE pr.prpubid =3D p.oid\n" > + " AND pr.prexcept IS TRUE)"); Hi David, We have addressed the comments in the latest v43 patch. Also we have refactored the code in 'pg_get_publication_effective_tables' and added comments to make it simpler to understand. Thanks, Shlok Kyal --000000000000ce9078064a9b044c Content-Type: application/octet-stream; name="v43-0002-Extended-tests-for-EXCEPT-TABLE-patch.patch" Content-Disposition: attachment; filename="v43-0002-Extended-tests-for-EXCEPT-TABLE-patch.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlj3o8m31 RnJvbSBlNDIyNzhlNDRmNTA5YjJjMWZkODBmYmZhM2JmMTE1NDJhMzFjZTkzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgNCBGZWIgMjAyNiAxMjoyNzo1NyArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjQz IDIvMl0gRXh0ZW5kZWQgdGVzdHMgZm9yIEVYQ0VQVCBUQUJMRSBwYXRjaAoKVGhpcyBwYXRjaCBj b250YWlucyBleHRyYSB0ZXN0cyBmb3IgRVhDRVBUIFRBQkxFIHBhdGNoLiBQdXJwb3NlIG9mIHRo aXMKdGVzdHMgdG8ga2VlcCB0cmFjayBvZiB0ZXN0cyB3aGljaCBvbmNlIGJyb2tlIHRoZSBwYXRj aC4KCkJhc2VkIG9uIGRpc2N1c3Npb24gaW4gZnV0dXJlIHdlIG1heSBwaWNrIHVwIHNvbWUgdGVz dCB0byBpbmNsdWRlIGluCnRoZSBtYWluIHBhdGNoLgotLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzEwMV90ZXN0LnBsIHwgMTM2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmls ZSBjaGFuZ2VkLCAxMzYgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzEwMV90ZXN0LnBsCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMTAxX3Rlc3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8xMDFfdGVzdC5w bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmU0ZGZjM2E3MTMKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8xMDFfdGVzdC5wbApAQCAt MCwwICsxLDEzNiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisjCisjIEV4dGVuZGVkIHRlc3QgZm9yIEVYQ0VQVCBUQUJMRQorCit1 c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOworCit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0 OjpNb3JlOworCisjIC0tLS0tLS0tCisjIFB1Ymxpc2hlcgorIyAtLS0tLS0tLQorbXkgJHB1Ymxp c2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiskcHVi bGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRwdWJsaXNoZXIt PmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxKAord2FsX2xldmVsID0gbG9naWNh bAorbG9nX21pbl9tZXNzYWdlcyA9IElORk8KK2xvZ19zdGF0ZW1lbnQgPSBhbGwKK3dhbF9yZWNl aXZlcl90aW1lb3V0ID0gMAord2FsX3NlbmRlcl90aW1lb3V0ID0gMAorKSk7CiskcHVibGlzaGVy LT5zdGFydDsKKworIyBDcmVhdGUgYSBwYXJ0aXRpb24gc3RydWN0dXJlOgorIyBzYzEudDEKKyMg ICAtIHNjMS5jaGlsZDEKKyMgICAgICAgLSBzYzEuY2hpbGQxXzEKKyMgICAgICAgLSBzYzEuY2hp bGQxXzIKKyMgICAtIHNjMS5jaGlsZDIKKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxKAorCUNSRUFURSBTQ0hFTUEgc2MxOworCUNSRUFURSBUQUJMRSBzYzEudDEoaWQgaW50 KSBQQVJUSVRJT04gQlkgUkFOR0UoaWQpOworCUNSRUFURSBUQUJMRSBzYzEuY2hpbGQxKGlkIGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFKGlkKTsKKwlDUkVBVEUgVEFCTEUgc2MxLmNoaWxkMiBQQVJU SVRJT04gT0Ygc2MxLnQxIEZPUiBWQUxVRVMgRlJPTSAoMTAxKSBUTyAoMjAwKTsKKwlDUkVBVEUg VEFCTEUgc2MxLmNoaWxkMV8xIFBBUlRJVElPTiBPRiBzYzEuY2hpbGQxIEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDUwKTsKKwlDUkVBVEUgVEFCTEUgc2MxLmNoaWxkMV8yIFBBUlRJVElPTiBPRiBz YzEuY2hpbGQxIEZPUiBWQUxVRVMgRlJPTSAoNTEpIFRPICgxMDApOworCUFMVEVSIFRBQkxFIHNj MS50MSBBVFRBQ0ggUEFSVElUSU9OIHNjMS5jaGlsZDEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MTAwKTsKKykpOworCisjIC0tLS0tLS0tLS0KKyMgU3Vic2NyaWJlcgorIyAtLS0tLS0tLS0tCitt eSAkY29ubnN0ciA9ICRwdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Citt eSAkc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJl cicpOworJHN1YnNjcmliZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwor JHN1YnNjcmliZXItPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxKAord2FsX2xl dmVsID0gbG9naWNhbAorbG9nX21pbl9tZXNzYWdlcyA9IElORk8KK2xvZ19zdGF0ZW1lbnQgPSBh bGwKK3dhbF9yZWNlaXZlcl90aW1lb3V0ID0gMAord2FsX3NlbmRlcl90aW1lb3V0ID0gMAorKSk7 Ciskc3Vic2NyaWJlci0+c3RhcnQ7CisKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3Rn cmVzJywgcSgKKwlDUkVBVEUgU0NIRU1BIHNjMTsKKwlDUkVBVEUgVEFCTEUgc2MxLnQxKGlkIGlu dCk7CisJQ1JFQVRFIFRBQkxFIHNjMS5jaGlsZDEoaWQgaW50KTsKKwlDUkVBVEUgVEFCTEUgc2Mx LmNoaWxkMV8xKGlkIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjMS5jaGlsZDFfMihpZCBpbnQpOwor CUNSRUFURSBUQUJMRSBzYzEuY2hpbGQyKGlkIGludCk7CispKTsKKworIyBUZXN0IDE6CisjIENy ZWF0ZSB0d28gcHVibGljYXRpb25zLCBvbmUgd2l0aCAiQUxMIFRBQkxFUyBFWENFUFQiLCBvdGhl ciB3aXRoICJGT1IgVEFCTEUiCisjIFRhYmxlcyBzcGVjaWZpZWQgaW4gIkVYQ0VQVCIgYW5kICJG T1IgVEFCTEUiIGFyZSBwYXJ0IG9mIHNhbWUgcGFydGl0aW9uIHRyZWUKKyRwdWJsaXNoZXItPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxKAorCUlOU0VSVCBJTlRPIHNjMS50MSBWQUxVRVMgKDEp LCAoNTEpLCAoMTAxKTsKKwlDUkVBVEUgUFVCTElDQVRJT04gcHViMSBGT1IgQUxMIFRBQkxFUyBF WENFUFQgVEFCTEUgKHNjMS5jaGlsZDIpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 ID0gdHJ1ZSk7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjIgRk9SIFRBQkxFIHNjMS5jaGlsZDFf MSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUpOworKSk7Ciskc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gc3ViMSBD T05ORUNUSU9OICckY29ubnN0cicgUFVCTElDQVRJT04gcHViMSwgcHViMjsiKTsKKworIyBDaGVj ayBmb3IgdGFibGVzeW5jCiskc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMo JHB1Ymxpc2hlciwgJ3N1YjEnKTsKK215ICRyZXN1bHQgPQorICAkc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjMS50MSBPUkRFUiBCWSBpZCIpOworaXMo ICRyZXN1bHQsIHFxKDEKKzUxKSwgJ2NoZWNrIGRhdGEgYWZ0ZXIgdGFibGVzeW5jJyk7CisKKyMg Q2hlY2sgZm9yIGluY3JlbWVudGFsIHN5bmMKKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJJTlNFUlQgSU5UTyBzYzEudDEgVkFMVUVTICgxKSwgKDUxKSwgKDEwMSkiKTsKKyRz dWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkcHVibGlzaGVyLCAnc3ViMScp OworJHJlc3VsdCA9CisgICRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCAqIEZST00gc2MxLnQxIE9SREVSIEJZIGlkIik7CitpcyggJHJlc3VsdCwgcXEoMQorMQorNTEK KzUxKSwgJ2NoZWNrIGRhdGEgYWZ0ZXIgaW5jcmVtZW50YWwgc3luYycpOworCisjIGNsZWFudXAK KyRwdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxKAorCURST1AgUFVCTElDQVRJ T04gcHViMSwgcHViMjsKKwlUUlVOQ0FURSBzYzEudDE7CispKTsKKyRzdWJzY3JpYmVyLT5zYWZl X3BzcWwoCisJJ3Bvc3RncmVzJywgcSgKKwlEUk9QIFNVQlNDUklQVElPTiBzdWIxOworCVRSVU5D QVRFIHNjMS50MTsKKykpOworCisjIFRlc3QgMjogQ3JlYXRlIHB1YmxpY2F0aW9uIHdpdGggRVhD RVBUIFRBQkxFIGxpc3QgaGF2aW5nIGFsbCBwYXJ0aXRpb25zIG9mCisjIHBhcnRpY3VsYXIgbGV2 ZWwKKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxKAorCUlOU0VSVCBJTlRP IHNjMS50MSBWQUxVRVMgKDEpLCAoNTEpLCAoMTAxKTsKKwlDUkVBVEUgUFVCTElDQVRJT04gcHVi MSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjMS5jaGlsZDIsIHNjMS5jaGlsZDEpIFdJ VEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CispKTsKKyRzdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiBzdWIxIENPTk5F Q1RJT04gJyRjb25uc3RyJyBQVUJMSUNBVElPTiBwdWIxOyIpOworCisjIENoZWNrIGZvciB0YWJs ZXN5bmMKKyRzdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkcHVibGlzaGVy LCAnc3ViMScpOworJHJlc3VsdCA9CisgICRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCAqIEZST00gc2MxLnQxIE9SREVSIEJZIGlkIik7CitpcygkcmVzdWx0LCBxcSgp LCAnY2hlY2sgZGF0YSBhZnRlciB0YWJsZXN5bmMnKTsKKworIyBDaGVjayBmb3IgaW5jcmVtZW50 YWwgc3luYworJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRP IHNjMS50MSBWQUxVRVMgKDEpLCAoNTEpLCAoMTAxKSIpOworJHN1YnNjcmliZXItPndhaXRfZm9y X3N1YnNjcmlwdGlvbl9zeW5jKCRwdWJsaXNoZXIsICdzdWIxJyk7CiskcmVzdWx0ID0KKyAgJHN1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzYzEudDEgT1JE RVIgQlkgaWQiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayBkYXRhIGFmdGVyIGluY3JlbWVu dGFsIHN5bmMnKTsKKworZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjM0LjEKCg== --000000000000ce9078064a9b044c Content-Type: application/octet-stream; name="v43-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Disposition: attachment; filename="v43-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlj3o8lu0 RnJvbSBlOWNiMjI3Yzc2MDMxNzI4YmE2OWM2N2NmYWM5MzM3YTM1MThlMjJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjggSmFuIDIwMjYgMTA6NDc6MDIgKzA1MzAKU3ViamVjdDogW1BBVENIIHY0MyAxLzJd IFNraXAgcHVibGlzaGluZyB0aGUgdGFibGVzIHNwZWNpZmllZCBpbiBFWENFUFQgVEFCTEUuCgpB IG5ldyAiRVhDRVBUIFRBQkxFIiBjbGF1c2UgZm9yIENSRUFURSBQVUJMSUNBVElPTiBhbGxvd3Mg b25lIG9yIG1vcmUKdGFibGVzIHRvIGJlIGV4Y2x1ZGVkLiBUaGUgcHVibGlzaGVyIHdpbGwgbm90 IHNlbmQgdGhlIGRhdGEgb2YgZXhjbHVkZWQKdGFibGVzIHRvIHRoZSBzdWJzY3JpYmVyLgoKVGhl IG5ldyBzeW50YXggYWxsb3dzIHNwZWNpZnlpbmcgZXhjbHVkZWQgcmVsYXRpb25zIHdoZW4gY3Jl YXRpbmcgYQpwdWJsaWNhdGlvbi4gRm9yIGV4YW1wbGU6CkNSRUFURSBQVUJMSUNBVElPTiBwdWIx IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodDEsdDIpOwoKQSBuZXcgY29sdW1uICJwcmV4 Y2VwdCIgaXMgYWRkZWQgdG8gdGFibGUgInBnX3B1YmxpY2F0aW9uX3JlbCIsIHRvIGZsYWcKdGhl IHJlbGF0aW9ucyB0aGF0IHRoZSB1c2VyIHdhbnRzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgcHVibGlj YXRpb25zLgoKRm9yIEVYQ0VQVCBUQUJMRSBvbiBwYXJ0aXRpb24gdGFibGVzLCBleHRlbmRlZCBm ZXRjaF9yZW1vdGVfdGFibGVfaW5mbygpIHRvCmNvbXB1dGUgdGhlIGVmZmVjdGl2ZSBzZXQgb2Yg cmVsYXRpb25zIHVzZWQgZm9yIHRoZSBpbml0aWFsIENPUFkuIFdoZW4KZXhjbHVzaW9ucyBhcmUg cHJlc2VudCwgdGhlIHJvb3QgcGFydGl0aW9uZWQgdGFibGUgY2FuIG5vIGxvbmdlciBiZSB1c2Vk CmRpcmVjdGx5OyBpbnN0ZWFkLCBkZXJpdmUgdGhlIGxpc3Qgb2Ygbm9uLWV4Y2x1ZGVkIGxlYWYg cGFydGl0aW9ucyBhbmQKY29tYmluZSB0aGVtIHdpdGggVU5JT04gQUxMLiBXaGVuIG5vIGV4Y2x1 c2lvbnMgZXhpc3QsIHJldGFpbiB0aGUgZXhpc3RpbmcKYmVoYXZpb3IgYW5kIGNvcHkgZnJvbSB0 aGUgcm9vdCByZWxhdGlvbiBhcyBiZWZvcmUuCkFsc28gdXBkYXRlZCB0aGUgYmVoYXZpb3VyIG9m IGluY3JlbWVudGFsIHN5bmMgZm9yIHBhcnRpdGlvbiB0YWJsZXMgYXMKcGVyIGFwcHJvYWNoIDEu CkFwcHJvYWNoIDEgaXMgZGlzY3Vzc2VkIGF0OgpodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9t ZXNzYWdlLWlkL0NBSnB5MHVEODFIUnJNWXI3Uy02QVY0VzJQdGJHS00tbmYyRDg5enNvTUhKOWpa c3NVZ0BtYWlsLmdtYWlsLmNvbQoKcGdfZHVtcCBpcyB1cGRhdGVkIGZvciB0aGUgbmV3IEVYQ0VQ VCBUQUJMRSBzeW50YXguCgpUaGUgcHNxbCBcZCBmYW1pbHkgb2YgY29tbWFuZHMgY2FuIG5vdyBk aXNwbGF5IGV4Y2x1ZGVkIHRhYmxlcy4KCkJ1bXAgY2F0YWxvZyB2ZXJzaW9uLgotLS0KIGRvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAxMCArCiBkb2Mvc3Jj L3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAgfCAgIDYgKy0KIGRvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgICAgICB8ICA1NSArLQogZG9jL3NyYy9z Z21sL3JlZi9wc3FsLXJlZi5zZ21sICAgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgICAgICAgICAgfCA1NjUgKysrKysrKysrKysrKysr KystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAgICAgICAgfCAxMDkg KystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jICAgICAgIHwgIDc5 ICsrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgICA0 ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgNDIg Ky0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8IDE1MCAr KysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgIHwgMjA0 ICsrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgICB8 ICAyMSArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgIHwg IDY4ICsrKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsICAgICAgICAgICAgICB8ICAz MCArCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgODcg KystCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICAgICAgfCAgMTIg Ky0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAgNyAr CiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggICAgICAgICAgfCAgMTUgKy0K IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmggICAgICB8ICAgMSArCiBz cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgIDMgKwogc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgIHwgICA2ICsKIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0ICAgICB8ICA5MiArKy0KIHNyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCAgICAgICAgICB8ICAzNiArLQogc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkICAgICAgICAgICAgIHwgICAxICsKIC4uLi90LzAz N19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwgICAgICAgICB8IDMxNCArKysrKysrKysrCiBz cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDEgKwogMjcg ZmlsZXMgY2hhbmdlZCwgMTc3MiBpbnNlcnRpb25zKCspLCAxNTIgZGVsZXRpb25zKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4 Y2VwdF90YWJsZS5wbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggMzMyMTkzNTY1ZTIuLmQ0MGU1Y2MxMDkw IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvY2F0YWxvZ3Muc2dtbApAQCAtNjU4MSw2ICs2NTgxLDE2IEBAIFNDUkFNLVNIQS0yNTYkPHJl cGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2Vh YmxlPiZsCiAgICAgICBpZiB0aGVyZSBpcyBubyBwdWJsaWNhdGlvbiBxdWFsaWZ5aW5nIGNvbmRp dGlvbi48L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CisgICAgICA8c3RydWN0ZmllbGQ+cHJleGNlcHQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5i b29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVHJ1ZSBpZiB0 aGUgcmVsYXRpb24gaXMgZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRpb24uIFNlZQorICAgICAg IDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdC10 YWJsZSI+PGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFsPjwvbGluaz4uCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAg ICAgICAgPHN0cnVjdGZpZWxkPnByYXR0cnM8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQydmVjdG9y PC90eXBlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dt bCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggNTAyOGZlOWFm MDkuLmYwMTI4MWZkNGY5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNh dGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAg LTExNiw3ICsxMTYsMTEgQEAKICAgIDxsaXRlcmFsPkZPUiBUQUJMRVMgSU4gU0NIRU1BPC9saXRl cmFsPiwgPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+LAogICAgb3IgPGxpdGVyYWw+ Rk9SIEFMTCBTRVFVRU5DRVM8L2xpdGVyYWw+LiBVbmxpa2UgdGFibGVzLCBzZXF1ZW5jZXMgY2Fu IGJlCiAgICBzeW5jaHJvbml6ZWQgYXQgYW55IHRpbWUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBz ZWUKLSAgIDx4cmVmIGxpbmtlbmQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tc2VxdWVuY2VzIi8+Lgor ICAgPHhyZWYgbGlua2VuZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1zZXF1ZW5jZXMiLz4uIFdoZW4g YSBwdWJsaWNhdGlvbiBpcworICAgY3JlYXRlZCB3aXRoIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVT PC9saXRlcmFsPiwgdGFibGVzIGNhbiBiZSBleHBsaWNpdGx5CisgICBleGNsdWRlZCBmcm9tIHB1 YmxpY2F0aW9uIHVzaW5nIHRoZQorICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXB1YmxpY2F0 aW9uLXBhcmFtcy1mb3ItZXhjZXB0LXRhYmxlIj48bGl0ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVy YWw+PC9saW5rPgorICAgY2xhdXNlLgogICA8L3BhcmE+CiAKICAgPHBhcmE+CmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbAppbmRleCA2ZWZiYjkxNWNlYy4uNzMwYjljNGJj ZWQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbApAQCAtMzIsMTIg KzMyLDE2IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bmFtZTwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9hbGxfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9m OjwvcGhyYXNlPgogCi0gICAgQUxMIFRBQkxFUworICAgIEFMTCBUQUJMRVMgWyBFWENFUFQgWyBU QUJMRSBdICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJsZV9vYmpl Y3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KICAgICBBTEwgU0VRVUVOQ0VTCiAKIDxwaHJh c2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9hbmRfY29sdW1uczwv cmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgogCiAgICAgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4u IF0gKSBdIFsgV0hFUkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lv bjwvcmVwbGFjZWFibGU+ICkgXQorCis8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+ZXhjZXB0X3RhYmxlX29iamVjdDwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgor CisgICAgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8 L3JlcGxhY2VhYmxlPiBbICogXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCkBA IC0xNjQsNyArMTY4LDggQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICA8bGlzdGl0ZW0+CiAgICAgIDxwYXJh PgogICAgICAgTWFya3MgdGhlIHB1YmxpY2F0aW9uIGFzIG9uZSB0aGF0IHJlcGxpY2F0ZXMgY2hh bmdlcyBmb3IgYWxsIHRhYmxlcyBpbgotICAgICAgdGhlIGRhdGFiYXNlLCBpbmNsdWRpbmcgdGFi bGVzIGNyZWF0ZWQgaW4gdGhlIGZ1dHVyZS4KKyAgICAgIHRoZSBkYXRhYmFzZSwgaW5jbHVkaW5n IHRhYmxlcyBjcmVhdGVkIGluIHRoZSBmdXR1cmUuIFRhYmxlcyBsaXN0ZWQgaW4KKyAgICAgIEVY Q0VQVCBUQUJMRSBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRpb24uCiAgICAgIDwvcGFy YT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xODQsNiArMTg5LDM1 IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFt ZTwvcmVwbGFjZWFibGU+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisg ICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNl cHQtdGFibGUiPgorICAgIDx0ZXJtPjxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0ZXJhbD48L3Rl cm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgY2xhdXNlIHNwZWNp ZmllcyBhIGxpc3Qgb2YgdGFibGVzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gdGhlCisgICAgICBwdWJs aWNhdGlvbi4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIEZvciBpbmhlcml0ZWQg dGFibGVzLCBpZiA8bGl0ZXJhbD5PTkxZPC9saXRlcmFsPiBpcyBzcGVjaWZpZWQgYmVmb3JlIHRo ZQorICAgICAgdGFibGUgbmFtZSwgb25seSB0aGF0IHRhYmxlIGlzIGV4Y2x1ZGVkIGZyb20gdGhl IHB1YmxpY2F0aW9uLiBJZgorICAgICAgPGxpdGVyYWw+T05MWTwvbGl0ZXJhbD4gaXMgbm90IHNw ZWNpZmllZCwgdGhlIHRhYmxlIGFuZCBhbGwgaXRzIGRlc2NlbmRhbnQKKyAgICAgIHRhYmxlcyAo aWYgYW55KSBhcmUgZXhjbHVkZWQuIE9wdGlvbmFsbHksIDxsaXRlcmFsPio8L2xpdGVyYWw+IGNh biBiZQorICAgICAgc3BlY2lmaWVkIGFmdGVyIHRoZSB0YWJsZSBuYW1lIHRvIGV4cGxpY2l0bHkg aW5kaWNhdGUgdGhhdCBkZXNjZW5kYW50CisgICAgICB0YWJsZXMgYXJlIGV4Y2x1ZGVkLgorICAg ICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgRm9yIHBhcnRpdGlvbmVkIHRhYmxlcywgd2hl biBhIHRhYmxlIGlzIHNwZWNpZmllZCBpbiBFWENFUFQgVEFCTEUsIHRoZW4KKyAgICAgIGNoYW5n ZXMgdG8gdGhhdCB0YWJsZSBhbmQgYWxsIG9mIGl0cyBwYXJ0aXRpb25zICh0aGF0IGlzLCB0aGUg ZW50aXJlCisgICAgICBwYXJ0aXRpb24gc3VidHJlZSByb290ZWQgYXQgdGhhdCB0YWJsZSkgYXJl IG5vdCByZXBsaWNhdGVkLiBUaGlzIGJlaGF2aW9yCisgICAgICBpcyB0aGUgc2FtZSByZWdhcmRs ZXNzIG9mIHdoZXRoZXIKKyAgICAgIDxsaXRlcmFsPnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 PC9saXRlcmFsPiBpcyBzZXQgdG8KKyAgICAgIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+IG9yIDxs aXRlcmFsPmZhbHNlPC9saXRlcmFsPi4gVGhlCisgICAgICA8bGl0ZXJhbD5wdWJsaXNoX3ZpYV9w YXJ0aXRpb25fcm9vdDwvbGl0ZXJhbD4gc2V0dGluZyBvbmx5IGRldGVybWluZXMKKyAgICAgIHdo aWNoIHJlbGF0aW9uIGlzIHVzZWQgYXMgdGhlIHB1Ymxpc2hpbmcgcmVsYXRpb24gZm9yIHJlcGxp Y2F0ZWQgY2hhbmdlcywKKyAgICAgIGFuZCBkb2VzIG5vdCBhZmZlY3QgZXhjbHVzaW9uIHNlbWFu dGljcy4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4K KwogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy13aXRo Ij4KICAgICA8dGVybT48bGl0ZXJhbD5XSVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnB1YmxpY2F0aW9uX3BhcmFtZXRlcjwvcmVwbGFjZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+XSBbLCAuLi4gXSApPC9saXRlcmFs PjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CkBAIC00ODksNiArNTIzLDIzIEBAIENSRUFURSBQVUJM SUNBVElPTiBhbGxfc2VxdWVuY2VzIEZPUiBBTEwgU0VRVUVOQ0VTOwogICAgYWxsIHNlcXVlbmNl cyBmb3Igc3luY2hyb25pemF0aW9uOgogPHByb2dyYW1saXN0aW5nPgogQ1JFQVRFIFBVQkxJQ0FU SU9OIGFsbF90YWJsZXNfc2VxdWVuY2VzIEZPUiBBTEwgVEFCTEVTLCBBTEwgU0VRVUVOQ0VTOwor PC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgQ3JlYXRlIGEgcHVi bGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIGNoYW5nZXMgaW4gYWxsIHRhYmxlcyBleGNlcHQK KyAgIDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiBhbmQgPHN0cnVjdG5hbWU+ZGVwYXJ0 bWVudHM8L3N0cnVjdG5hbWU+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFBVQkxJQ0FUSU9O IGFsbF90YWJsZXNfZXhjZXB0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAodXNlcnMsIGRlcGFydG1l bnRzKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIENyZWF0 ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVzIGFsbCBzZXF1ZW5jZXMgZm9yIHN5bmNocm9u aXphdGlvbiwgYW5kCisgICBhbGwgY2hhbmdlcyBpbiBhbGwgdGFibGVzIGV4Y2VwdCA8c3RydWN0 bmFtZT51c2Vyczwvc3RydWN0bmFtZT4gYW5kCisgICA8c3RydWN0bmFtZT5kZXBhcnRtZW50czwv c3RydWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgUFVCTElDQVRJT04gYWxsX3Nl cXVlbmNlc190YWJsZXNfZXhjZXB0IEZPUiBBTEwgU0VRVUVOQ0VTLCBBTEwgVEFCTEVTIEVYQ0VQ VCAodXNlcnMsIGRlcGFydG1lbnRzKTsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgIDwvcGFyYT4KICA8 L3JlZnNlY3QxPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCmluZGV4IDhiMWQ5NDhiYTA1Li4xMDQ1YmM2 YTAyYyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbApAQCAtMjEwMyw4ICsyMTAzLDkgQEAgU0VMRUNU ICQxIFxwYXJzZSBzdG10MQogICAgICAgICBsaXN0ZWQuCiAgICAgICAgIElmIDxsaXRlcmFsPng8 L2xpdGVyYWw+IGlzIGFwcGVuZGVkIHRvIHRoZSBjb21tYW5kIG5hbWUsIHRoZSByZXN1bHRzCiAg ICAgICAgIGFyZSBkaXNwbGF5ZWQgaW4gZXhwYW5kZWQgbW9kZS4KLSAgICAgICAgSWYgPGxpdGVy YWw+KzwvbGl0ZXJhbD4gaXMgYXBwZW5kZWQgdG8gdGhlIGNvbW1hbmQgbmFtZSwgdGhlIHRhYmxl cyBhbmQKLSAgICAgICAgc2NoZW1hcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBwdWJsaWNhdGlvbiBh cmUgc2hvd24gYXMgd2VsbC4KKyAgICAgICAgSWYgPGxpdGVyYWw+KzwvbGl0ZXJhbD4gaXMgYXBw ZW5kZWQgdG8gdGhlIGNvbW1hbmQgbmFtZSwgdGhlIHRhYmxlcywKKyAgICAgICAgZXhjbHVkZWQg dGFibGVzLCBhbmQgc2NoZW1hcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBwdWJsaWNhdGlvbiBhcmUg c2hvd24KKyAgICAgICAgYXMgd2VsbC4KICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3Rp dGVtPgogICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmMKaW5kZXggOWE0NzkxYzU3M2UuLjNmYzkxMWZmMDI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5jCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb25fbmFtZXNwYWNlLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaCIKKyNpbmNsdWRlICJjYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2lu Y2x1ZGUgImNvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIK QEAgLTM2Niw5ICszNjcsMTEgQEAgR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQg cHVib2lkLCBMaXN0ICphbmNlc3RvcnMsIGludCAqYW5jZXN0b3JfbGV2ZWwKIAlmb3JlYWNoKGxj LCBhbmNlc3RvcnMpCiAJewogCQlPaWQJCQlhbmNlc3RvciA9IGxmaXJzdF9vaWQobGMpOwotCQlM aXN0CSAgICphcHViaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IpOworCQlM aXN0CSAgICphcHViaWRzID0gTklMOwogCQlMaXN0CSAgICphc2NoZW1hUHViaWRzID0gTklMOwog CisJCUdldFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yLCAmYXB1YmlkcywgTlVMTCk7CisK IAkJbGV2ZWwrKzsKIAogCQlpZiAobGlzdF9tZW1iZXJfb2lkKGFwdWJpZHMsIHB1Ym9pZCkpCkBA IC00ODIsNiArNDg1LDggQEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVi bGljYXRpb25SZWxJbmZvICpwcmksCiAJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpOwogCXZhbHVl c1tBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcnJlbGlkIC0gMV0gPQogCQlPYmplY3RJZEdldERh dHVtKHJlbGlkKTsKKwl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJleGNlcHQgLSAx XSA9CisJCUJvb2xHZXREYXR1bShwcmktPmV4Y2VwdCk7CiAKIAkvKiBBZGQgcXVhbGlmaWNhdGlv bnMsIGlmIGF2YWlsYWJsZSAqLwogCWlmIChwcmktPndoZXJlQ2xhdXNlICE9IE5VTEwpCkBAIC03 NDksMzggKzc1NCw1OCBAQCBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNj aGVtYWlkLCBib29sIGlmX25vdF9leGlzdHMpCiAJcmV0dXJuIG15c2VsZjsKIH0KIAotLyogR2V0 cyBsaXN0IG9mIHB1YmxpY2F0aW9uIG9pZHMgZm9yIGEgcmVsYXRpb24gKi8KLUxpc3QgKgotR2V0 UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlkKQorLyoKKyAqIEdldCB0aGUgbGlzdCBvZiBw dWJsaWNhdGlvbiBvaWRzIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmllZCByZWxhdGlvbi4KKyAq CisgKiBQYXJhbWV0ZXIgJ3B1YmlkcycgcmV0dXJucyB0aGUgT2lkcyBvZiB0aGUgcHVibGljYXRp b25zIHRoZSByZWxhdGlvbiBpcyBwYXJ0CisgKiBvZi4gUGFyYW1ldGVyICdleGNlcHRfcHViaWRz JyByZXR1cm5zIHRoZSBPaWRzIG9mIHB1YmxpY2F0aW9ucyB0aGUgcmVsYXRpb24KKyAqIGlzIGV4 Y2x1ZGVkIGZyb20uCisgKgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWYgdGhlIHJl bGF0aW9uIGlzIHBhcnQgb2YgYW55IHB1YmxpY2F0aW9uLgorICovCitib29sCitHZXRSZWxhdGlv blB1YmxpY2F0aW9ucyhPaWQgcmVsaWQsIExpc3QgKipwdWJpZHMsIExpc3QgKipleGNlcHRfcHVi aWRzKQogewotCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKIAlDYXRDTGlzdCAgICpwdWJyZWxsaXN0 OwotCWludAkJCWk7CisJYm9vbAkJZm91bmQgPSBmYWxzZTsKIAogCS8qIEZpbmQgYWxsIHB1Ymxp Y2F0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHJlbGF0aW9uLiAqLwogCXB1YnJlbGxpc3QgPSBT ZWFyY2hTeXNDYWNoZUxpc3QxKFBVQkxJQ0FUSU9OUkVMTUFQLAogCQkJCQkJCQkJIE9iamVjdElk R2V0RGF0dW0ocmVsaWQpKTsKLQlmb3IgKGkgPSAwOyBpIDwgcHVicmVsbGlzdC0+bl9tZW1iZXJz OyBpKyspCisJZm9yIChpbnQgaSA9IDA7IGkgPCBwdWJyZWxsaXN0LT5uX21lbWJlcnM7IGkrKykK IAl7CiAJCUhlYXBUdXBsZQl0dXAgPSAmcHVicmVsbGlzdC0+bWVtYmVyc1tpXS0+dHVwbGU7Ci0J CU9pZAkJCXB1YmlkID0gKChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCkp LT5wcnB1YmlkOworCQlGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCBwdWJyZWwgPSAoRm9ybV9wZ19w dWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOworCQlPaWQJCQlwdWJpZCA9IHB1YnJlbC0+ cHJwdWJpZDsKIAotCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHB1YmlkKTsKKwkJaWYg KHB1YnJlbC0+cHJleGNlcHQpCisJCXsKKwkJCWlmIChleGNlcHRfcHViaWRzKQorCQkJCSpleGNl cHRfcHViaWRzID0gbGFwcGVuZF9vaWQoKmV4Y2VwdF9wdWJpZHMsIHB1YmlkKTsKKwkJfQorCQll bHNlCisJCXsKKwkJCWlmIChwdWJpZHMpCisJCQkJKnB1YmlkcyA9IGxhcHBlbmRfb2lkKCpwdWJp ZHMsIHB1YmlkKTsKKwkJCWZvdW5kID0gdHJ1ZTsKKwkJfQogCX0KIAogCVJlbGVhc2VTeXNDYWNo ZUxpc3QocHVicmVsbGlzdCk7CiAKLQlyZXR1cm4gcmVzdWx0OworCXJldHVybiBmb3VuZDsKIH0K IAogLyoKLSAqIEdldHMgbGlzdCBvZiByZWxhdGlvbiBvaWRzIGZvciBhIHB1YmxpY2F0aW9uLgor ICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gZ2V0IHRoZSBsaXN0IG9mIHJlbGF0aW9uIE9pZHMgZm9y IGEgcHVibGljYXRpb24uCiAgKgotICogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIEZPUiBUQUJM RSBwdWJsaWNhdGlvbnMsIHRoZSBGT1IgQUxMIFRBQkxFUy9TRVFVRU5DRVMKLSAqIHNob3VsZCB1 c2UgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoKS4KKyAqIElmIGV4Y2VwdF9mbGFnIGlzIHRy dWUsIHJldHVybnMgdGhlIGxpc3Qgb2YgcmVsYXRpb25zIGV4Y2x1ZGVkIGZyb20gdGhlCisgKiBw dWJsaWNhdGlvbjsgb3RoZXJ3aXNlLCByZXR1cm5zIHRoZSBsaXN0IG9mIHJlbGF0aW9ucyBpbmNs dWRlZCBpbiB0aGUKKyAqIHB1YmxpY2F0aW9uLgogICovCi1MaXN0ICoKLUdldFB1YmxpY2F0aW9u UmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQorc3Rh dGljIExpc3QgKgorZ2V0X3B1YmxpY2F0aW9uX3JlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0 aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKKwkJCQkJCSAgYm9vbCBleGNlcHRfZmxhZykKIHsKIAlM aXN0CSAgICpyZXN1bHQ7CiAJUmVsYXRpb24JcHVicmVsc3JlbDsKQEAgLTgwNSw4ICs4MzAsMTAg QEAgR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQg cHViX3BhcnRvcHQpCiAJCUZvcm1fcGdfcHVibGljYXRpb25fcmVsIHB1YnJlbDsKIAogCQlwdWJy ZWwgPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOwotCQlyZXN1bHQg PSBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMocmVzdWx0LCBwdWJfcGFydG9wdCwKLQkJ CQkJCQkJCQkJCXB1YnJlbC0+cHJyZWxpZCk7CisKKwkJaWYgKGV4Y2VwdF9mbGFnID09IHB1YnJl bC0+cHJleGNlcHQpCisJCQlyZXN1bHQgPSBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMo cmVzdWx0LCBwdWJfcGFydG9wdCwKKwkJCQkJCQkJCQkJCQlwdWJyZWwtPnBycmVsaWQpOwogCX0K IAogCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CkBAIC04MTksNiArODQ2LDg1IEBAIEdldFB1Ymxp Y2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0 KQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBSZXR1cm4gdGhlIGxpc3Qgb2YgcmVsYXRp b24gT2lkcyBmb3IgYSBwdWJsaWNhdGlvbi4KKyAqCisgKiBGb3IgYSBGT1IgVEFCTEUgcHVibGlj YXRpb24sIHRoaXMgcmV0dXJucyB0aGUgbGlzdCBvZiByZWxhdGlvbnMgZXhwbGljaXRseQorICog aW5jbHVkZWQgaW4gdGhlIHB1YmxpY2F0aW9uLgorICoKKyAqIFB1YmxpY2F0aW9ucyBkZWNsYXJl ZCB3aXRoIEZPUiBBTEwgVEFCTEVTIHNob3VsZCB1c2UKKyAqIEdldEFsbFB1YmxpY2F0aW9uUmVs YXRpb25zKCkgdG8gb2J0YWluIHRoZSBjb21wbGV0ZSBzZXQgb2YgdGFibGVzIGNvdmVyZWQgYnkK KyAqIHRoZSBwdWJsaWNhdGlvbi4KKyAqLworTGlzdCAqCitHZXRQdWJsaWNhdGlvbkluY2x1ZGVk UmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQorewor CUFzc2VydCghR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGx0YWJsZXMpOworCisJcmV0dXJuIGdl dF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0LCBmYWxzZSk7Cit9CisK Ky8qCisgKiBSZXR1cm4gdGhlIGxpc3Qgb2YgdGFibGVzIE9pZHMgZXhjbHVkZWQgZnJvbSBhIHB1 YmxpY2F0aW9uLgorICogVGhpcyBpcyBvbmx5IGFwcGxpY2FibGUgZm9yIEZPUiBBTEwgVEFCTEVT IHB1YmxpY2F0aW9ucy4KKyAqLworTGlzdCAqCitHZXRBbGxQdWJsaWNhdGlvbkV4Y2x1ZGVkVGFi bGVzKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQoreworCUxpc3QJ ICAgKnJlbGlkcyA9IGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0 LCB0cnVlKTsKKwlib29sCQlpc19wYXJlbnRfZXhjbHVkZWQgPSB0cnVlOworCisJQXNzZXJ0KEdl dFB1YmxpY2F0aW9uKHB1YmlkKS0+YWxsdGFibGVzKTsKKworCXdoaWxlIChpc19wYXJlbnRfZXhj bHVkZWQpCisJeworCQlMaXN0CSAgICpwYXJlbnRpZHMgPSBOSUw7CisJCUxpc3QJICAgKmN1cnIg PSBOSUw7CisKKwkJZm9yZWFjaF9vaWQocmVsaWQsIHJlbGlkcykKKwkJeworCQkJT2lkCQkJcGFy ZW50aWQ7CisKKwkJCWlmICghZ2V0X3JlbF9yZWxpc3BhcnRpdGlvbihyZWxpZCkpCisJCQkJY29u dGludWU7CisKKwkJCXBhcmVudGlkID0gZ2V0X3BhcnRpdGlvbl9wYXJlbnQocmVsaWQsIGZhbHNl KTsKKworCQkJaWYgKGxpc3RfbWVtYmVyX29pZChyZWxpZHMsIHBhcmVudGlkKSkKKwkJCQljb250 aW51ZTsKKworCQkJcGFyZW50aWRzID0gbGlzdF9hcHBlbmRfdW5pcXVlX29pZChwYXJlbnRpZHMs IHBhcmVudGlkKTsKKwkJfQorCisJCWZvcmVhY2hfb2lkKHBhcmVudGlkLCBwYXJlbnRpZHMpCisJ CXsKKwkJCUxpc3QJICAgKnBhcnRpdGlvbmlkczsKKwkJCWJvb2wJCWFsbF9wYXJ0aXRpb25zX2V4 Y2x1ZGVkID0gdHJ1ZTsKKworCQkJcGFydGl0aW9uaWRzID0gZmluZF9pbmhlcml0YW5jZV9jaGls ZHJlbihwYXJlbnRpZCwgTm9Mb2NrKTsKKworCQkJZm9yZWFjaF9vaWQocGFydGl0aW9uaWQsIHBh cnRpdGlvbmlkcykKKwkJCXsKKwkJCQlpZiAoIWxpc3RfbWVtYmVyX29pZChyZWxpZHMsIHBhcnRp dGlvbmlkKSkKKwkJCQl7CisJCQkJCWFsbF9wYXJ0aXRpb25zX2V4Y2x1ZGVkID0gZmFsc2U7CisJ CQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKworCQkJaWYgKGFsbF9wYXJ0aXRpb25zX2V4Y2x1ZGVk KQorCQkJCWN1cnIgPSBsYXBwZW5kX29pZChjdXJyLCBwYXJlbnRpZCk7CisJCX0KKworCQlpZiAo Y3VyciA9PSBOSUwpCisJCQlpc19wYXJlbnRfZXhjbHVkZWQgPSBmYWxzZTsKKwkJZWxzZQorCQkJ cmVsaWRzID0gbGlzdF9jb25jYXQocmVsaWRzLCBjdXJyKTsKKwl9CisKKwlyZXR1cm4gcmVsaWRz OworfQorCiAvKgogICogR2V0cyBsaXN0IG9mIHB1YmxpY2F0aW9uIG9pZHMgZm9yIHB1YmxpY2F0 aW9ucyBtYXJrZWQgYXMgRk9SIEFMTCBUQUJMRVMuCiAgKi8KQEAgLTg2NCwxOCArOTcwLDMwIEBA IEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKQogICogcGFydGl0aW9uZWQgdGFibGVzLCB3 ZSBtdXN0IGV4Y2x1ZGUgcGFydGl0aW9ucyBpbiBmYXZvciBvZiBpbmNsdWRpbmcgdGhlCiAgKiBy b290IHBhcnRpdGlvbmVkIHRhYmxlcy4gVGhpcyBpcyBub3QgYXBwbGljYWJsZSB0byBGT1IgQUxM IFNFUVVFTkNFUwogICogcHVibGljYXRpb24uCisgKgorICogRm9yIGEgRk9SIEFMTCBUQUJMRVMg cHVibGljYXRpb24sIHRoZSByZXR1cm5lZCBsaXN0IGV4Y2x1ZGVzIHRhYmxlcyBtZW50aW9uZWQK KyAqIGluIEVYQ0VQVCBUQUJMRSBjbGF1c2UuCiAgKi8KIExpc3QgKgotR2V0QWxsUHVibGljYXRp b25SZWxhdGlvbnMoY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCitHZXRBbGxQdWJsaWNh dGlvblJlbGF0aW9ucyhQdWJsaWNhdGlvbiAqcHViLCBjaGFyIHJlbGtpbmQpCiB7CiAJUmVsYXRp b24JY2xhc3NSZWw7CiAJU2NhbktleURhdGEga2V5WzFdOwogCVRhYmxlU2NhbkRlc2Mgc2NhbjsK IAlIZWFwVHVwbGUJdHVwbGU7CiAJTGlzdAkgICAqcmVzdWx0ID0gTklMOworCUxpc3QJICAgKmV4 Y2VwdGxpc3QgPSBOSUw7CisJYm9vbAkJcHVidmlhcm9vdCA9IHB1Yi0+cHVidmlhcm9vdDsKKwlP aWQJCQlwdWJpZCA9IHB1Yi0+b2lkOwogCiAJQXNzZXJ0KCEocmVsa2luZCA9PSBSRUxLSU5EX1NF UVVFTkNFICYmIHB1YnZpYXJvb3QpKTsKIAorCWlmIChyZWxraW5kID09IFJFTEtJTkRfUkVMQVRJ T04pCisJCWV4Y2VwdGxpc3QgPSBHZXRBbGxQdWJsaWNhdGlvbkV4Y2x1ZGVkVGFibGVzKHB1Ymlk LCBwdWJ2aWFyb290ID8KKwkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UIDoKKwkJ CQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKKworCiAJY2xhc3NSZWwgPSB0YWJs ZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKIAogCVNjYW5LZXlJ bml0KCZrZXlbMF0sCkBAIC04OTEsNyArMTAwOSw4IEBAIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRp b25zKGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQogCQlPaWQJCQlyZWxpZCA9IHJlbEZv cm0tPm9pZDsKIAogCQlpZiAoaXNfcHVibGlzaGFibGVfY2xhc3MocmVsaWQsIHJlbEZvcm0pICYm Ci0JCQkhKHJlbEZvcm0tPnJlbGlzcGFydGl0aW9uICYmIHB1YnZpYXJvb3QpKQorCQkJIShyZWxG b3JtLT5yZWxpc3BhcnRpdGlvbiAmJiBwdWJ2aWFyb290KSAmJgorCQkJIWxpc3RfbWVtYmVyX29p ZChleGNlcHRsaXN0LCByZWxpZCkpCiAJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHJl bGlkKTsKIAl9CiAKQEAgLTkxMiw3ICsxMDMxLDggQEAgR2V0QWxsUHVibGljYXRpb25SZWxhdGlv bnMoY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCiAJCQlPaWQJCQlyZWxpZCA9IHJlbEZv cm0tPm9pZDsKIAogCQkJaWYgKGlzX3B1Ymxpc2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3JtKSAm JgotCQkJCSFyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbikKKwkJCQkhcmVsRm9ybS0+cmVsaXNwYXJ0 aXRpb24gJiYKKwkJCQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdGxpc3QsIHJlbGlkKSkKIAkJCQly ZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHJlbGlkKTsKIAkJfQogCkBAIC0xMTE2LDYgKzEy MzYsMzk3IEBAIEdldFB1YmxpY2F0aW9uQnlOYW1lKGNvbnN0IGNoYXIgKnB1Ym5hbWUsIGJvb2wg bWlzc2luZ19vaykKIAlyZXR1cm4gT2lkSXNWYWxpZChvaWQpID8gR2V0UHVibGljYXRpb24ob2lk KSA6IE5VTEw7CiB9CiAKKy8qIEhlbHBlcjogQ2hlY2sgc3lzY2FjaGUgZm9yIHByZXhjZXB0IGZs YWcgKi8KK2Jvb2wKK2lzX3JlbGlkX3B1Ymxpc2hlZF9hc19leGNlcHQoT2lkIHJlbGlkLCBPaWQg cHViaWQpCit7CisJSGVhcFR1cGxlCXR1cDsKKwlib29sCQlyZXN1bHQgPSBmYWxzZTsKKworCXR1 cCA9IFNlYXJjaFN5c0NhY2hlMihQVUJMSUNBVElPTlJFTE1BUCwgT2JqZWN0SWRHZXREYXR1bShy ZWxpZCksIE9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0 dXApKQorCXsKKwkJRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwgcHJmb3JtID0gKEZvcm1fcGdfcHVi bGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKKworCQlyZXN1bHQgPSBwcmZvcm0tPnByZXhj ZXB0OworCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwl9CisJcmV0dXJuIHJlc3VsdDsKK30KKwor LyoKKyAqIHB1YmxpY2F0aW9uX2hhc19hbnlfZXhjZXB0aW9uCisgKgorICogUmV0dXJucyB0cnVl IGlmIHRoZSBnaXZlbiBwdWJsaWNhdGlvbiBPSUQgaGFzIGF0IGxlYXN0IG9uZSBlbnRyeSBpbgor ICogcGdfcHVibGljYXRpb25fcmVsIG1hcmtlZCBhcyBhbiBleGNlcHRpb24gKHByZXhjZXB0ID0g dHJ1ZSkuCisgKi8KK2Jvb2wKK3B1YmxpY2F0aW9uX2hhc19hbnlfZXhjZXB0aW9uKE9pZCBwdWJp ZCkKK3sKKwlSZWxhdGlvbglwdWJSZWw7CisJU2NhbktleURhdGEgc2tleTsKKwlTeXNTY2FuRGVz YyBzY2FuOworCUhlYXBUdXBsZQl0dXA7CisJYm9vbAkJZm91bmQgPSBmYWxzZTsKKworCS8qIE9w ZW4gcGdfcHVibGljYXRpb25fcmVsIHdpdGggQWNjZXNzU2hhcmVMb2NrICovCisJcHViUmVsID0g dGFibGVfb3BlbihQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisK KwkvKgorCSAqICogTG9vayB1cCBieSBwdWJsaWNhdGlvbiBPSUQuIFVzaW5nIHRoZSBpbmRleCBv biAocHJwdWJpZCkgaXMgaGlnaGx5CisJICogZWZmaWNpZW50LgorCSAqLworCVNjYW5LZXlJbml0 KCZza2V5LAorCQkJCUFudW1fcGdfcHVibGljYXRpb25fcmVsX3BycHViaWQsCisJCQkJQlRFcXVh bFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsK KworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocHViUmVsLAorCQkJCQkJCSAgUHVibGljYXRp b25SZWxQcnJlbGlkUHJwdWJpZEluZGV4SWQsCisJCQkJCQkJICB0cnVlLCBOVUxMLCAxLCAmc2tl eSk7CisKKwkvKiBXZSBvbmx5IG5lZWQgdG8gZmluZCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBw cmV4Y2VwdCA9IHRydWUgKi8KKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXAgPSBzeXN0YWJs ZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJCUZvcm1fcGdfcHVibGljYXRpb25fcmVsIHB1YnJlbGZv cm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOworCisJCWlmIChw dWJyZWxmb3JtLT5wcmV4Y2VwdCkKKwkJeworCQkJZm91bmQgPSB0cnVlOworCQkJYnJlYWs7CisJ CX0KKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3NlKHB1YlJlbCwg QWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiBmb3VuZDsKK30KKworLyoKKyAqIGlzX3JlbGlk X3B1Ymxpc2hlZF9leHBsaWNpdGx5CisgKgorICogQ2hlY2tzIGlmIHRoZSBnaXZlbiByZWxhdGlv biBPSUQgaXMgZXhwbGljaXRseSBwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbi4KKyAqIFRoaXMgY29y cmVzcG9uZHMgdG8gdGhlICdGT1IgVEFCTEUnIHN5bnRheC4KKyAqLworc3RhdGljIGJvb2wKK2lz X3JlbGlkX3B1Ymxpc2hlZF9leHBsaWNpdGx5KE9pZCByZWxpZCwgT2lkIHB1YmlkKQoreworCS8q CisJICogU2VhcmNoIHRoZSBzeXNjYWNoZSBmb3IgcGdfcHVibGljYXRpb25fcmVsIHVzaW5nIHRo ZSAocmVsaWQsIHB1YmlkKQorCSAqIGluZGV4LgorCSAqLworCXJldHVybiBTZWFyY2hTeXNDYWNo ZUV4aXN0czIoUFVCTElDQVRJT05SRUxNQVAsCisJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKHJl bGlkKSwKKwkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKK30KKworLyoKKyAqIGlz X3NjaGVtYV9wdWJsaXNoZWQKKyAqCisgKiBDaGVja3MgaWYgdGhlIGdpdmVuIG5hbWVzcGFjZSBP SUQgaXMgcGFydCBvZiB0aGUgcHVibGljYXRpb24ncworICogc2NoZW1hIGxpc3QuIFRoaXMgY29y cmVzcG9uZHMgdG8gdGhlICdGT1IgVEFCTEVTIElOIFNDSEVNQScgc3ludGF4LgorICovCitzdGF0 aWMgYm9vbAoraXNfc2NoZW1hX3B1Ymxpc2hlZChPaWQgbnNwaWQsIE9pZCBwdWJpZCkKK3sKKwkv KgorCSAqIFNlYXJjaCB0aGUgc3lzY2FjaGUgZm9yIHBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSB1 c2luZyB0aGUgKG5zcGlkLAorCSAqIHB1YmlkKSBpbmRleC4KKwkgKi8KKwlyZXR1cm4gU2VhcmNo U3lzQ2FjaGVFeGlzdHMyKFBVQkxJQ0FUSU9OTkFNRVNQQUNFTUFQLAorCQkJCQkJCQkgT2JqZWN0 SWRHZXREYXR1bShuc3BpZCksCisJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7Cit9 CisKKy8qCisgKiBpc19yZWxpZF9wdWJsaXNoZWRfYXNfZXhjZXB0X3dpdGhfYW5jZXN0b3JzCisg KgorICogQ2hlY2sgaWYgdGhlIHJlbGF0aW9uICdyZWxpZCcgb3IgYW55IG9mIGl0cyBwYXJ0aXRp b24gYW5jZXN0b3JzIGFyZQorICogZXhwbGljaXRseSBleGNsdWRlZCBpbiB0aGUgZ2l2ZW4gcHVi bGljYXRpb24uCisgKi8KK3N0YXRpYyBib29sCitpc19yZWxpZF9wdWJsaXNoZWRfYXNfZXhjZXB0 X3dpdGhfYW5jZXN0b3JzKE9pZCByZWxpZCwgT2lkIHB1YmlkKQoreworCUxpc3QJICAgKmFuY2Vz dG9yczsKKwlMaXN0Q2VsbCAgICpsYzsKKwlib29sCQlleGNsdWRlZCA9IGZhbHNlOworCisJLyog Q2hlY2sgdGhlIHJlbGF0aW9uIGl0c2VsZiBmaXJzdCAqLworCWlmIChpc19yZWxpZF9wdWJsaXNo ZWRfYXNfZXhjZXB0KHJlbGlkLCBwdWJpZCkpCisJCXJldHVybiB0cnVlOworCisJLyogQ2hlY2sg dGhlIGluaGVyaXRhbmNlIGNoYWluICovCisJYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNl c3RvcnMocmVsaWQpOworCisJZm9yZWFjaChsYywgYW5jZXN0b3JzKQorCXsKKwkJT2lkCQkJYW5j ZXN0b3IgPSBsZmlyc3Rfb2lkKGxjKTsKKworCQlpZiAoaXNfcmVsaWRfcHVibGlzaGVkX2FzX2V4 Y2VwdChhbmNlc3RvciwgcHViaWQpKQorCQl7CisJCQlleGNsdWRlZCA9IHRydWU7CisJCQlicmVh azsKKwkJfQorCX0KKworCWxpc3RfZnJlZShhbmNlc3RvcnMpOworCisJcmV0dXJuIGV4Y2x1ZGVk OworfQorCisvKgorICogcGdfZ2V0X3B1YmxpY2F0aW9uX2VmZmVjdGl2ZV90YWJsZXMKKyAqCisg KiBHaXZlbiBhIHJvb3QgcmVsYXRpb24gYW5kIGEgbGlzdCBvZiBwdWJsaWNhdGlvbnMsIGNhbGN1 bGF0ZSB0aGUgc2V0IG9mCisgKiByZWxhdGlvbnMgdGhhdCBhcmUgZWZmZWN0aXZlbHkgcHVibGlz aGVkLiBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IKKyAqICJGT1IgQUxMIFRBQkxFUyIgcHVibGljYXRp b25zIHRoYXQgdXNlICJFWENFUFQgVEFCTEUiIGZpbHRlcnMuCisgKgorICogVGhlIGZ1bmN0aW9u IHJlc29sdmVzIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBzZXQgb2YgYW5jZXN0b3JzIHRoYXQgY292 ZXIKKyAqIGFsbCBub24tZXhjbHVkZWQgbGVhZiBwYXJ0aXRpb25zLgorICovCitEYXR1bQorcGdf Z2V0X3B1YmxpY2F0aW9uX2VmZmVjdGl2ZV90YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlG dW5jQ2FsbENvbnRleHQgKmZ1bmNjdHg7CisJTGlzdAkgICAqcmVzdWx0czsKKworCWlmIChTUkZf SVNfRklSU1RDQUxMKCkpCisJeworCQlPaWQJCQlyb290X3JlbGlkID0gUEdfR0VUQVJHX09JRCgw KTsKKwkJQXJyYXlUeXBlICAqcHViX25hbWVzX2FycmF5ID0gUEdfR0VUQVJHX0FSUkFZVFlQRV9Q KDEpOworCQlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisJCUxpc3QJICAgKnB1Yl9vaWRzID0g TklMOworCQlEYXR1bQkgICAqcHViX2RhdHVtczsKKwkJYm9vbAkgICAqcHViX251bGxzOworCQlp bnQJCQlwdWJfY291bnQ7CisJCVR1cGxlRGVzYwl0dXBkZXNjOworCQlMaXN0CSAgICpmaW5hbF9v dXRwdXQgPSBOSUw7CisJCWJvb2wJCWhhc19jbGVhbl9hbGxfdGFibGVzX3B1YiA9IGZhbHNlOwor CQlib29sCQloYXNfYW55X2V4Y2x1c2lvbiA9IGZhbHNlOworCQlMaXN0CSAgICpleGNlcHRfcHVi X25hbWVzID0gTklMOworCQlPaWQJCQlleGNlcHRfcHViX2lkOworCisJCWZ1bmNjdHggPSBTUkZf RklSU1RDQUxMX0lOSVQoKTsKKworCQlkZWNvbnN0cnVjdF9hcnJheShwdWJfbmFtZXNfYXJyYXks IFRFWFRPSUQsIC0xLCBmYWxzZSwgJ2knLAorCQkJCQkJICAmcHViX2RhdHVtcywgJnB1Yl9udWxs cywgJnB1Yl9jb3VudCk7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgcHViX2NvdW50OyBpKyspCisJ CXsKKwkJCWlmICghcHViX251bGxzW2ldKQorCQkJeworCQkJCWNoYXIJICAgKnB1Ym5hbWUgPSBU ZXh0RGF0dW1HZXRDU3RyaW5nKHB1Yl9kYXR1bXNbaV0pOworCisJCQkJcHViX29pZHMgPSBsYXBw ZW5kX29pZChwdWJfb2lkcywgZ2V0X3B1YmxpY2F0aW9uX29pZChwdWJuYW1lLCBmYWxzZSkpOwor CQkJfQorCQl9CisKKwkJLyoKKwkJICogRGV0ZXJtaW5lIGlmIHdlIGNhbiBhdm9pZCB0aGUgZXhw ZW5zaXZlIGV4cGFuc2lvbi4gSWYgYW55CisJCSAqIHB1YmxpY2F0aW9uIGlzICdGT1IgQUxMIFRB QkxFUycgd2l0aCBubyBleGNlcHRpb25zLCBvciBpZgorCQkgKiBhYnNvbHV0ZWx5IG5vIGV4Y2Vw dGlvbnMgZXhpc3QgYWNyb3NzIGFsbCBwdWJzLCB0aGUgcm9vdCBpcyB0aGUKKwkJICogcmVzdWx0 LgorCQkgKi8KKwkJZm9yZWFjaF9vaWQocHVib2lkLCBwdWJfb2lkcykKKwkJeworCQkJSGVhcFR1 cGxlCXB1YlR1cDsKKwkJCUZvcm1fcGdfcHVibGljYXRpb24gcHViZm9ybTsKKworCQkJcHViVHVw ID0gU2VhcmNoU3lzQ2FjaGUxKFBVQkxJQ0FUSU9OT0lELCBPYmplY3RJZEdldERhdHVtKHB1Ym9p ZCkpOworCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHB1YlR1cCkpCisJCQkJY29udGludWU7CisK KwkJCXB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHB1YlR1cCk7CisJ CQlpZiAocHViZm9ybS0+cHViYWxsdGFibGVzKQorCQkJeworCQkJCS8qIENoZWNrIGZvciBhbnkg ZXhjbHVzaW9uIGVudHJpZXMgaW4gdGhpcyBwdWJsaWNhdGlvbiAqLworCQkJCWlmIChwdWJsaWNh dGlvbl9oYXNfYW55X2V4Y2VwdGlvbihwdWJvaWQpKQorCQkJCXsKKwkJCQkJZXhjZXB0X3B1Yl9u YW1lcyA9IGxhcHBlbmQoZXhjZXB0X3B1Yl9uYW1lcywKKwkJCQkJCQkJCQkJICAgbWFrZVN0cmlu ZyhwdWJmb3JtLT5wdWJuYW1lLmRhdGEpKTsKKwkJCQkJaGFzX2FueV9leGNsdXNpb24gPSB0cnVl OworCQkJCQlleGNlcHRfcHViX2lkID0gcHViZm9ybS0+b2lkOworCQkJCX0KKwkJCQllbHNlCisJ CQkJeworCQkJCQkvKgorCQkJCQkgKiBGb3VuZCBhIHB1YmxpY2F0aW9uIHRoYXQgaW5jbHVkZXMg ZXZlcnl0aGluZyB3aXRob3V0CisJCQkJCSAqIGV4Y2VwdGlvbi4KKwkJCQkJICovCisJCQkJCWhh c19jbGVhbl9hbGxfdGFibGVzX3B1YiA9IHRydWU7CisJCQkJfQorCQkJfQorCisJCQlSZWxlYXNl U3lzQ2FjaGUocHViVHVwKTsKKwkJfQorCisJCWlmIChsaXN0X2xlbmd0aChleGNlcHRfcHViX25h bWVzKSA+IDEpCisJCXsKKwkJCVN0cmluZ0luZm8JcHViX25hbWVzID0gbWFrZVN0cmluZ0luZm8o KTsKKworCQkJR2V0UHVibGljYXRpb25zU3RyKGV4Y2VwdF9wdWJfbmFtZXMsIHB1Yl9uYW1lcywg dHJ1ZSk7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9O T1RfU1VQUE9SVEVEKSwKKwkJCQkJZXJybXNnKCJjYW5ub3QgdXNlIG11bHRpcGxlIHB1YmxpY2F0 aW9ucyB3aXRoIEVYQ0VQVCBUQUJMRSBsaXN0cyIpLAorCQkJCQllcnJkZXRhaWwoIlRoZSBmb2xs b3dpbmcgcHVibGljYXRpb25zIGhhdmUgZXhjZXB0aW9uczogJXMuIiwKKwkJCQkJCQkgIHB1Yl9u YW1lcy0+ZGF0YSkpOworCQl9CisKKwkJLyogUmV0dXJuIHJvb3QgaW1tZWRpYXRlbHkgaWYgbm8g ZmlsdGVyaW5nIGxvZ2ljIGlzIG5lZWRlZCAqLworCQlpZiAoaGFzX2NsZWFuX2FsbF90YWJsZXNf cHViIHx8ICFoYXNfYW55X2V4Y2x1c2lvbikKKwkJeworCQkJb2xkY29udGV4dCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhmdW5jY3R4LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgpOworCQkJZmluYWxf b3V0cHV0ID0gbGlzdF9tYWtlMV9vaWQocm9vdF9yZWxpZCk7CisJCQlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY29udGV4dCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlMaXN0CSAgICphbGxfdGFi bGVzOworCQkJTGlzdAkgICAqYWxsX2xlYXZlcyA9IE5JTDsKKwkJCUxpc3QJICAgKmV4Y2x1ZGVk X2xlYXZlcyA9IE5JTDsKKwkJCUxpc3QJICAgKmFsbG93ZWRfbGVhdmVzID0gTklMOworCQkJTGlz dAkgICAqY2FuZGlkYXRlX2xpc3QgPSBOSUw7CisKKwkJCS8qIEdldCBhbGwgdGhlIGxlYWYgcmVs YXRpb25zICovCisJCQlhbGxfbGVhdmVzID0gR2V0UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25z KGFsbF9sZWF2ZXMsCisJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfTEVBRiwKKwkJCQkJ CQkJCQkJCQkJcm9vdF9yZWxpZCk7CisJCQlmb3JlYWNoX29pZChjdXJyX3JlbGlkLCBhbGxfbGVh dmVzKQorCQkJeworCQkJCS8qCisJCQkJICogVGFibGUgaXMgYWxsb3dlZCBpZiBpdCdzIG5vdCBl eGNsdWRlZCBieSB0aGUgJ2V4Y2VwdCcKKwkJCQkgKiBwdWJsaWNhdGlvbiAoY2hlY2tpbmcgYW5j ZXN0b3JzIGFzIHdlbGwpLgorCQkJCSAqLworCQkJCWlmIChpc19yZWxpZF9wdWJsaXNoZWRfYXNf ZXhjZXB0X3dpdGhfYW5jZXN0b3JzKGN1cnJfcmVsaWQsIGV4Y2VwdF9wdWJfaWQpKQorCQkJCQll eGNsdWRlZF9sZWF2ZXMgPSBsYXBwZW5kX29pZChleGNsdWRlZF9sZWF2ZXMsIGN1cnJfcmVsaWQp OworCQkJCWVsc2UKKwkJCQkJYWxsb3dlZF9sZWF2ZXMgPSBsYXBwZW5kX29pZChhbGxvd2VkX2xl YXZlcywgY3Vycl9yZWxpZCk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBFeGNsdWRlZCB0YWJsZXMg d2lsbCBiZSBpbmNsdWRlZCBpZiB0aGV5IGFyZSBpbmNsdWRlZCBpbiBvdGhlcgorCQkJICogcHVi bGljYXRpb25zLgorCQkJICovCisJCQlmb3JlYWNoX29pZChjdXJyX3JlbGlkLCBleGNsdWRlZF9s ZWF2ZXMpCisJCQl7CisJCQkJZm9yZWFjaF9vaWQocHViaWQsIHB1Yl9vaWRzKQorCQkJCXsKKwkJ CQkJLyogRXhjbHVkZWQgcmVsYXRpb24gaGFzIGFscmVhZHkgYmVlbiBoYW5kbGVkICovCisJCQkJ CWlmIChwdWJpZCA9PSBleGNlcHRfcHViX2lkKQorCQkJCQkJY29udGludWU7CisKKwkJCQkJLyog Q2hlY2sgaWYgdGhlIHRhYmxlIGl0c2VsZiBvciBpdHMgc2NoZW1hIGlzIGluIHRoZSBwdWIuICov CisJCQkJCWlmIChpc19yZWxpZF9wdWJsaXNoZWRfZXhwbGljaXRseShjdXJyX3JlbGlkLCBwdWJp ZCkgfHwKKwkJCQkJCWlzX3NjaGVtYV9wdWJsaXNoZWQoZ2V0X3JlbF9uYW1lc3BhY2UoY3Vycl9y ZWxpZCksIHB1YmlkKSkKKwkJCQkJeworCQkJCQkJYWxsb3dlZF9sZWF2ZXMgPSBsYXBwZW5kX29p ZChhbGxvd2VkX2xlYXZlcywgY3Vycl9yZWxpZCk7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7 CisJCQkJCQkvKgorCQkJCQkJICogR2V0IHRoZSBpbmhlcml0YW5jZSBjaGFpbiBmb3IgdGhlIGN1 cnJlbnQgdGFibGUKKwkJCQkJCSAqIG9uY2UKKwkJCQkJCSAqLworCQkJCQkJTGlzdAkgICAqYW5j ZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMoY3Vycl9yZWxpZCk7CisKKwkJCQkJCS8q CisJCQkJCQkgKiBDaGVjayBpZiBhbnkgYW5jZXN0b3Igb3IgYW4gYW5jZXN0b3IncyBzY2hlbWEg aXMgaW4KKwkJCQkJCSAqIHRoZSBwdWIuCisJCQkJCQkgKi8KKwkJCQkJCWZvcmVhY2hfb2lkKGFu Y19vaWQsIGFuY2VzdG9ycykKKwkJCQkJCXsKKwkJCQkJCQlpZiAoaXNfcmVsaWRfcHVibGlzaGVk X2V4cGxpY2l0bHkoYW5jX29pZCwgcHViaWQpIHx8CisJCQkJCQkJCWlzX3NjaGVtYV9wdWJsaXNo ZWQoZ2V0X3JlbF9uYW1lc3BhY2UoYW5jX29pZCksIHB1YmlkKSkKKwkJCQkJCQkJYWxsb3dlZF9s ZWF2ZXMgPSBsYXBwZW5kX29pZChhbGxvd2VkX2xlYXZlcywgY3Vycl9yZWxpZCk7CisJCQkJCQl9 CisJCQkJCX0KKwkJCQl9CisJCQl9CisKKwkJCS8qIEJvdHRvbS1VcCBDb2xsYXBzZS4gQ2hlY2sg aWYgcGFyZW50cyBjYW4gcmVwcmVzZW50IGNoaWxkcmVuICovCisJCQlhbGxfdGFibGVzID0gZmlu ZF9hbGxfaW5oZXJpdG9ycyhyb290X3JlbGlkLCBBY2Nlc3NTaGFyZUxvY2ssIE5VTEwpOworCQkJ Y2FuZGlkYXRlX2xpc3QgPSBsaXN0X2NvcHkoYWxsb3dlZF9sZWF2ZXMpOworCQkJZm9yZWFjaF9v aWQoY3Vycl9yZWxpZCwgYWxsX3RhYmxlcykKKwkJCXsKKwkJCQlpZiAoZ2V0X3JlbF9yZWxraW5k KGN1cnJfcmVsaWQpID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCQkJeworCQkJCQlM aXN0CSAgICpicmFuY2hfbGVhdmVzID0gTklMOworCQkJCQlib29sCQlhbGxfYWxsb3dlZCA9IHRy dWU7CisKKwkJCQkJYnJhbmNoX2xlYXZlcyA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9u cyhicmFuY2hfbGVhdmVzLAorCQkJCQkJCQkJCQkJCQkJCSAgIFBVQkxJQ0FUSU9OX1BBUlRfTEVB RiwKKwkJCQkJCQkJCQkJCQkJCQkgICBjdXJyX3JlbGlkKTsKKworCQkJCQlpZiAobGlzdF9sZW5n dGgoYnJhbmNoX2xlYXZlcykgPT0gMCkKKwkJCQkJCWFsbF9hbGxvd2VkID0gZmFsc2U7CisJCQkJ CWVsc2UKKwkJCQkJeworCQkJCQkJZm9yZWFjaF9vaWQobGNiX29pZCwgYnJhbmNoX2xlYXZlcykK KwkJCQkJCXsKKwkJCQkJCQlpZiAoIWxpc3RfbWVtYmVyX29pZChhbGxvd2VkX2xlYXZlcywgbGNi X29pZCkpCisJCQkJCQkJeworCQkJCQkJCQlhbGxfYWxsb3dlZCA9IGZhbHNlOworCQkJCQkJCQli cmVhazsKKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCX0KKworCQkJCQlpZiAoYWxsX2FsbG93ZWQp CisJCQkJCQljYW5kaWRhdGVfbGlzdCA9IGxpc3RfYXBwZW5kX3VuaXF1ZV9vaWQoY2FuZGlkYXRl X2xpc3QsIGN1cnJfcmVsaWQpOworCQkJCX0KKwkJCX0KKworCQkJLyoKKwkJCSAqIERlZHVwbGlj YXRlOiBPbmx5IGtlZXAgdGhlIGhpZ2hlc3QgbGV2ZWwgcmVwcmVzZW50YXRpdmUgb2YgYW55CisJ CQkgKiBicmFuY2gKKwkJCSAqLworCQkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhmdW5jY3R4LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgpOworCQkJZm9yZWFjaF9vaWQoY3Vycl9y ZWxpZCwgY2FuZGlkYXRlX2xpc3QpCisJCQl7CisJCQkJT2lkCQkJcGFyZW50X29pZCA9IGdldF9w YXJ0aXRpb25fcGFyZW50KGN1cnJfcmVsaWQsIGZhbHNlKTsKKworCQkJCWlmIChwYXJlbnRfb2lk ID09IEludmFsaWRPaWQgfHwgIWxpc3RfbWVtYmVyX29pZChjYW5kaWRhdGVfbGlzdCwgcGFyZW50 X29pZCkpCisJCQkJCWZpbmFsX291dHB1dCA9IGxhcHBlbmRfb2lkKGZpbmFsX291dHB1dCwgY3Vy cl9yZWxpZCk7CisJCQl9CisKKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsK KwkJfQorCisJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZnVuY2N0eC0+bXVs dGlfY2FsbF9tZW1vcnlfY3R4KTsKKwkJLyogQ29uc3RydWN0IGEgdHVwbGUgZGVzY3JpcHRvciBm b3IgdGhlIHJlc3VsdCByb3dzLiAqLworCQl0dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURl c2MoMik7CisJCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMSwgInNj aGVtYW5hbWUiLAorCQkJCQkJICAgVEVYVE9JRCwgLTEsIDApOworCQlUdXBsZURlc2NJbml0RW50 cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDIsICJyZWxuYW1lIiwKKwkJCQkJCSAgIFRFWFRPSUQs IC0xLCAwKTsKKworCQlmdW5jY3R4LT50dXBsZV9kZXNjID0gQmxlc3NUdXBsZURlc2ModHVwZGVz Yyk7CisJCWZ1bmNjdHgtPnVzZXJfZmN0eCA9IGZpbmFsX291dHB1dDsKKworCQlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisJfQorCisJLyogU1JGIFBlci1jYWxsIFJlc3VtZSAq LworCWZ1bmNjdHggPSBTUkZfUEVSQ0FMTF9TRVRVUCgpOworCXJlc3VsdHMgPSAoTGlzdCAqKSBm dW5jY3R4LT51c2VyX2ZjdHg7CisKKwlpZiAoZnVuY2N0eC0+Y2FsbF9jbnRyIDwgbGlzdF9sZW5n dGgocmVzdWx0cykpCisJeworCQlPaWQJCQljdXJyZW50X3JlbGlkID0gbGlzdF9udGhfb2lkKHJl c3VsdHMsIChpbnQpIGZ1bmNjdHgtPmNhbGxfY250cik7CisJCUhlYXBUdXBsZQlyZXR0dXBsZTsK KwkJRGF0dW0JCXZhbHVlc1syXTsKKwkJYm9vbAkJbnVsbHNbMl0gPSB7ZmFsc2UsIGZhbHNlfTsK KworCQl2YWx1ZXNbMF0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGdldF9uYW1lc3BhY2VfbmFtZShn ZXRfcmVsX25hbWVzcGFjZShjdXJyZW50X3JlbGlkKSkpOworCQl2YWx1ZXNbMV0gPSBDU3RyaW5n R2V0VGV4dERhdHVtKGdldF9yZWxfbmFtZShjdXJyZW50X3JlbGlkKSk7CisKKwkJcmV0dHVwbGUg PSBoZWFwX2Zvcm1fdHVwbGUoZnVuY2N0eC0+dHVwbGVfZGVzYywgdmFsdWVzLCBudWxscyk7CisJ CVNSRl9SRVRVUk5fTkVYVChmdW5jY3R4LCBIZWFwVHVwbGVHZXREYXR1bShyZXR0dXBsZSkpOwor CX0KKworCVNSRl9SRVRVUk5fRE9ORShmdW5jY3R4KTsKK30KKwogLyoKICAqIEdldCBpbmZvcm1h dGlvbiBvZiB0aGUgdGFibGVzIGluIHRoZSBnaXZlbiBwdWJsaWNhdGlvbiBhcnJheS4KICAqCkBA IC0xMTY4LDE3ICsxNjc5LDE3IEBAIHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMoUEdfRlVOQ1RJ T05fQVJHUykKIAkJCSAqIHRob3NlLiBPdGhlcndpc2UsIGdldCB0aGUgcGFydGl0aW9uZWQgdGFi bGUgaXRzZWxmLgogCQkJICovCiAJCQlpZiAocHViX2VsZW0tPmFsbHRhYmxlcykKLQkJCQlwdWJf ZWxlbV90YWJsZXMgPSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhSRUxLSU5EX1JFTEFUSU9O LAotCQkJCQkJCQkJCQkJCQkJIHB1Yl9lbGVtLT5wdWJ2aWFyb290KTsKKwkJCQlwdWJfZWxlbV90 YWJsZXMgPSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJfZWxlbSwKKwkJCQkJCQkJCQkJ CQkJCSBSRUxLSU5EX1JFTEFUSU9OKTsKIAkJCWVsc2UKIAkJCXsKIAkJCQlMaXN0CSAgICpyZWxp ZHMsCiAJCQkJCQkgICAqc2NoZW1hcmVsaWRzOwogCi0JCQkJcmVsaWRzID0gR2V0UHVibGljYXRp b25SZWxhdGlvbnMocHViX2VsZW0tPm9pZCwKLQkJCQkJCQkJCQkJCSBwdWJfZWxlbS0+cHVidmlh cm9vdCA/Ci0JCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UIDoKLQkJCQkJCQkJCQkJ CSBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOworCQkJCXJlbGlkcyA9IEdldFB1YmxpY2F0aW9uSW5j bHVkZWRSZWxhdGlvbnMocHViX2VsZW0tPm9pZCwKKwkJCQkJCQkJCQkJCQkJIHB1Yl9lbGVtLT5w dWJ2aWFyb290ID8KKwkJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6CisJCQkJ CQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOwogCQkJCXNjaGVtYXJlbGlkcyA9IEdl dEFsbFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKHB1Yl9lbGVtLT5vaWQsCiAJCQkJCQkJCQkJ CQkJCQkJcHViX2VsZW0tPnB1YnZpYXJvb3QgPwogCQkJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9O X1BBUlRfUk9PVCA6CkBAIC0xMzY3LDcgKzE4NzgsNyBAQCBwZ19nZXRfcHVibGljYXRpb25fc2Vx dWVuY2VzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXB1YmxpY2F0aW9uID0gR2V0UHVibGljYXRpb25C eU5hbWUocHVibmFtZSwgZmFsc2UpOwogCiAJCWlmIChwdWJsaWNhdGlvbi0+YWxsc2VxdWVuY2Vz KQotCQkJc2VxdWVuY2VzID0gR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoUkVMS0lORF9TRVFV RU5DRSwgZmFsc2UpOworCQkJc2VxdWVuY2VzID0gR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMo cHVibGljYXRpb24sIFJFTEtJTkRfU0VRVUVOQ0UpOwogCiAJCWZ1bmNjdHgtPnVzZXJfZmN0eCA9 IHNlcXVlbmNlczsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRp b25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCBm YzNhNGMxOWU2NS4uNmJiODE2YjIxOWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3B1YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9u Y21kcy5jCkBAIC0xOTgsNyArMTk4LDEyIEBAIE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExp c3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCiAJCXN3aXRjaCAocHVi b2JqLT5wdWJvYmp0eXBlKQogCQl7CisJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9UQUJM RToKKwkJCQlwdWJvYmotPnB1YnRhYmxlLT5leGNlcHQgPSB0cnVlOworCQkJCSpyZWxzID0gbGFw cGVuZCgqcmVscywgcHVib2JqLT5wdWJ0YWJsZSk7CisJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJ Q0FUSU9OT0JKX1RBQkxFOgorCQkJCXB1Ym9iai0+cHVidGFibGUtPmV4Y2VwdCA9IGZhbHNlOwog CQkJCSpyZWxzID0gbGFwcGVuZCgqcmVscywgcHVib2JqLT5wdWJ0YWJsZSk7CiAJCQkJYnJlYWs7 CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9TQ0hFTUE6CkBAIC01MTksOCArNTI0 LDggQEAgSW52YWxpZGF0ZVB1YlJlbFN5bmNDYWNoZShPaWQgcHViaWQsIGJvb2wgcHViYWxsdGFi bGVzKQogCQkgKiBhIHRhcmdldC4gSG93ZXZlciwgV0FMIHJlY29yZHMgZm9yIFRSVU5DQVRFIHNw ZWNpZnkgYm90aCBhIHJvb3QgYW5kCiAJCSAqIGl0cyBsZWF2ZXMuCiAJCSAqLwotCQlyZWxpZHMg PSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwKLQkJCQkJCQkJCQkgUFVCTElDQVRJT05f UEFSVF9BTEwpOworCQlyZWxpZHMgPSBHZXRQdWJsaWNhdGlvbkluY2x1ZGVkUmVsYXRpb25zKHB1 YmlkLAorCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKIAkJc2NoZW1hcmVsaWRz ID0gR2V0QWxsU2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCiAJCQkJCQkJCQkJCQkJ CVBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKIApAQCAtOTI5LDU1ICs5MzQsNjEgQEAgQ3JlYXRlUHVi bGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQp CiAJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKIAogCS8qIEFzc29jaWF0ZSBvYmplY3RzIHdp dGggdGhlIHB1YmxpY2F0aW9uLiAqLwotCWlmIChzdG10LT5mb3JfYWxsX3RhYmxlcykKKwlPYmpl Y3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlv bnMsCisJCQkJCQkJICAgJnNjaGVtYWlkbGlzdCk7CisKKwkvKiBGT1IgVEFCTEVTIElOIFNDSEVN QSByZXF1aXJlcyBzdXBlcnVzZXIgKi8KKwlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCAmJiAhc3Vw ZXJ1c2VyKCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VGRklD SUVOVF9QUklWSUxFR0UpLAorCQkJCWVycm1zZygibXVzdCBiZSBzdXBlcnVzZXIgdG8gY3JlYXRl IEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpY2F0aW9uIikpOworCisJLyogQWRkIHJlbGF0aW9u cyAodGFibGVzKSB0byB0aGUgcHVibGljYXRpb24uICovCisJaWYgKHJlbGF0aW9ucyAhPSBOSUwp CiAJewogCQkvKgotCQkgKiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24g aW5mbyBpcyByZWJ1aWx0LiBTZXF1ZW5jZXMKLQkJICogcHVibGljYXRpb24gZG9lc24ndCByZXF1 aXJlIGludmFsaWRhdGlvbiwgYXMgcmVwbGljYSBpZGVudGl0eQotCQkgKiBjaGVja3MgZG9uJ3Qg YXBwbHkgdG8gdGhlbS4KKwkJICogVGhlICdyZWxhdGlvbnMnIGxpc3QgY2FuIGJlIG5vbi1lbXB0 eSBpbiBvbmx5IHR3byBjYXNlczoKKwkJICoKKwkJICogMS4gQ1JFQVRFIFBVQkxJQ0FUSU9OIC4u LiBGT1IgVEFCTEUgSW4gdGhpcyBjYXNlLCAncmVsYXRpb25zJworCQkgKiBjb250YWlucyB0aGUg bGlzdCBvZiBzcGVjaWZpZWQgdGFibGVzLgorCQkgKgorCQkgKiAyLiBDUkVBVEUgUFVCTElDQVRJ T04gLi4uIEZPUiBBTEwgVEFCTEVTIEluIHRoaXMgY2FzZSwgJ3JlbGF0aW9ucycKKwkJICogY29u dGFpbnMgdGhlIGxpc3Qgb2YgdGFibGVzIHNwZWNpZmllZCBpbiB0aGUgRVhDRVBUIFRBQkxFIGNs YXVzZS4KKwkJICogRHVyaW5nIHBhcnNpbmcsIHRoZSAnZXhjZXB0JyBmbGFnIGlzIHNldCBmb3Ig dGhlIGFzc29jaWF0ZWQKKwkJICogUHVibGljYXRpb25SZWxJbmZvIG9iamVjdHMuCiAJCSAqLwot CQlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUFsbCgpOwotCX0KLQllbHNlIGlmICghc3RtdC0+Zm9y X2FsbF9zZXF1ZW5jZXMpCi0JewotCQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5w dWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCi0JCQkJCQkJCSAgICZzY2hlbWFpZGxpc3Qp OworCQlMaXN0CSAgICpyZWxzOwogCi0JCS8qIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHJlcXVpcmVz IHN1cGVydXNlciAqLwotCQlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCAmJiAhc3VwZXJ1c2VyKCkp Ci0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQllcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BS SVZJTEVHRSksCi0JCQkJCWVycm1zZygibXVzdCBiZSBzdXBlcnVzZXIgdG8gY3JlYXRlIEZPUiBU QUJMRVMgSU4gU0NIRU1BIHB1YmxpY2F0aW9uIikpOwotCi0JCWlmIChyZWxhdGlvbnMgIT0gTklM KQotCQl7Ci0JCQlMaXN0CSAgICpyZWxzOworCQlyZWxzID0gT3BlblRhYmxlTGlzdChyZWxhdGlv bnMpOworCQlUcmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMocmVscywgcHN0YXRlLT5wX3NvdXJjZXRl eHQsCisJCQkJCQkJCSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CiAKLQkJCXJlbHMgPSBP cGVuVGFibGVMaXN0KHJlbGF0aW9ucyk7Ci0JCQlUcmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMocmVs cywgcHN0YXRlLT5wX3NvdXJjZXRleHQsCi0JCQkJCQkJCQkgcHVibGlzaF92aWFfcGFydGl0aW9u X3Jvb3QpOworCQlDaGVja1B1YlJlbGF0aW9uQ29sdW1uTGlzdChzdG10LT5wdWJuYW1lLCByZWxz LAorCQkJCQkJCQkgICBzY2hlbWFpZGxpc3QgIT0gTklMLAorCQkJCQkJCQkgICBwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdCk7CiAKLQkJCUNoZWNrUHViUmVsYXRpb25Db2x1bW5MaXN0KHN0bXQt PnB1Ym5hbWUsIHJlbHMsCi0JCQkJCQkJCQkgICBzY2hlbWFpZGxpc3QgIT0gTklMLAotCQkJCQkJ CQkJICAgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwotCi0JCQlQdWJsaWNhdGlvbkFkZFRh YmxlcyhwdWJvaWQsIHJlbHMsIHRydWUsIE5VTEwpOwotCQkJQ2xvc2VUYWJsZUxpc3QocmVscyk7 Ci0JCX0KKwkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsK KwkJQ2xvc2VUYWJsZUxpc3QocmVscyk7CisJfQogCi0JCWlmIChzY2hlbWFpZGxpc3QgIT0gTklM KQotCQl7Ci0JCQkvKgotCQkJICogU2NoZW1hIGxvY2sgaXMgaGVsZCB1bnRpbCB0aGUgcHVibGlj YXRpb24gaXMgY3JlYXRlZCB0byBwcmV2ZW50Ci0JCQkgKiBjb25jdXJyZW50IHNjaGVtYSBkZWxl dGlvbi4KLQkJCSAqLwotCQkJTG9ja1NjaGVtYUxpc3Qoc2NoZW1haWRsaXN0KTsKLQkJCVB1Ymxp Y2F0aW9uQWRkU2NoZW1hcyhwdWJvaWQsIHNjaGVtYWlkbGlzdCwgdHJ1ZSwgTlVMTCk7Ci0JCX0K KwlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCkKKwl7CisJCS8qCisJCSAqIFNjaGVtYSBsb2NrIGlz IGhlbGQgdW50aWwgdGhlIHB1YmxpY2F0aW9uIGlzIGNyZWF0ZWQgdG8gcHJldmVudAorCQkgKiBj b25jdXJyZW50IHNjaGVtYSBkZWxldGlvbi4KKwkJICovCisJCUxvY2tTY2hlbWFMaXN0KHNjaGVt YWlkbGlzdCk7CisJCVB1YmxpY2F0aW9uQWRkU2NoZW1hcyhwdWJvaWQsIHNjaGVtYWlkbGlzdCwg dHJ1ZSwgTlVMTCk7CiAJfQogCiAJdGFibGVfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsK IAorCWlmIChzdG10LT5mb3JfYWxsX3RhYmxlcykKKwl7CisJCS8qIEludmFsaWRhdGUgcmVsY2Fj aGUgc28gdGhhdCBwdWJsaWNhdGlvbiBpbmZvIGlzIHJlYnVpbHQuICovCisJCUNhY2hlSW52YWxp ZGF0ZVJlbGNhY2hlQWxsKCk7CisJfQorCiAJSW52b2tlT2JqZWN0UG9zdENyZWF0ZUhvb2soUHVi bGljYXRpb25SZWxhdGlvbklkLCBwdWJvaWQsIDApOwogCiAJLyoKQEAgLTEwNTAsOCArMTA2MSw4 IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJs aWNhdGlvblN0bXQgKnN0bXQsCiAJCUxvY2tEYXRhYmFzZU9iamVjdChQdWJsaWNhdGlvblJlbGF0 aW9uSWQsIHB1YmZvcm0tPm9pZCwgMCwKIAkJCQkJCSAgIEFjY2Vzc1NoYXJlTG9jayk7CiAKLQkJ cm9vdF9yZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsCi0JCQkJ CQkJCQkJCSAgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwkJcm9vdF9yZWxpZHMgPSBHZXRQdWJs aWNhdGlvbkluY2x1ZGVkUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKKwkJCQkJCQkJCQkJCQkgIFBV QkxJQ0FUSU9OX1BBUlRfUk9PVCk7CiAKIAkJZm9yZWFjaChsYywgcm9vdF9yZWxpZHMpCiAJCXsK QEAgLTExNzAsOCArMTE4MSw4IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCSAqIHRyZWVzLCBub3QganVz dCB0aG9zZSBleHBsaWNpdGx5IG1lbnRpb25lZCBpbiB0aGUgcHVibGljYXRpb24uCiAJCSAqLwog CQlpZiAocm9vdF9yZWxpZHMgPT0gTklMKQotCQkJcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxh dGlvbnMocHViZm9ybS0+b2lkLAotCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9BTEwpOwor CQkJcmVsaWRzID0gR2V0UHVibGljYXRpb25JbmNsdWRlZFJlbGF0aW9ucyhwdWJmb3JtLT5vaWQs CisJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKIAkJZWxzZQogCQl7CiAJCQkv KgpAQCAtMTI1Niw4ICsxMjY3LDggQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJUHVibGljYXRpb25Ecm9wVGFibGVz KHB1YmlkLCByZWxzLCBmYWxzZSk7CiAJZWxzZQkJCQkJCS8qIEFQX1NldE9iamVjdHMgKi8KIAl7 Ci0JCUxpc3QJICAgKm9sZHJlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAot CQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCQlMaXN0CSAgICpvbGRyZWxp ZHMgPSBHZXRQdWJsaWNhdGlvbkluY2x1ZGVkUmVsYXRpb25zKHB1YmlkLAorCQkJCQkJCQkJCQkJ CQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CiAJCUxpc3QJICAgKmRlbHJlbHMgPSBOSUw7CiAJ CUxpc3RDZWxsICAgKm9sZGxjOwogCkBAIC0xMzU4LDYgKzEzNjksNyBAQCBBbHRlclB1YmxpY2F0 aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQkJ CW9sZHJlbCA9IHBhbGxvY19vYmplY3QoUHVibGljYXRpb25SZWxJbmZvKTsKIAkJCQlvbGRyZWwt PndoZXJlQ2xhdXNlID0gTlVMTDsKIAkJCQlvbGRyZWwtPmNvbHVtbnMgPSBOSUw7CisJCQkJb2xk cmVsLT5leGNlcHQgPSBmYWxzZTsKIAkJCQlvbGRyZWwtPnJlbGF0aW9uID0gdGFibGVfb3Blbihv bGRyZWxpZCwKIAkJCQkJCQkJCQkJICBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwogCQkJCWRl bHJlbHMgPSBsYXBwZW5kKGRlbHJlbHMsIG9sZHJlbCk7CkBAIC0xNDA4LDcgKzE0MjAsOCBAQCBB bHRlclB1YmxpY2F0aW9uU2NoZW1hcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAkJTGlz dENlbGwgICAqbGM7CiAJCUxpc3QJICAgKnJlbG9pZHM7CiAKLQkJcmVsb2lkcyA9IEdldFB1Ymxp Y2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwkJ cmVsb2lkcyA9IEdldFB1YmxpY2F0aW9uSW5jbHVkZWRSZWxhdGlvbnMocHViZm9ybS0+b2lkLAor CQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOwogCiAJCWZvcmVhY2gobGMsIHJl bG9pZHMpCiAJCXsKQEAgLTE3NzEsNiArMTc4NCw3IEBAIE9wZW5UYWJsZUxpc3QoTGlzdCAqdGFi bGVzKQogCQlwdWJfcmVsLT5yZWxhdGlvbiA9IHJlbDsKIAkJcHViX3JlbC0+d2hlcmVDbGF1c2Ug PSB0LT53aGVyZUNsYXVzZTsKIAkJcHViX3JlbC0+Y29sdW1ucyA9IHQtPmNvbHVtbnM7CisJCXB1 Yl9yZWwtPmV4Y2VwdCA9IHQtPmV4Y2VwdDsKIAkJcmVscyA9IGxhcHBlbmQocmVscywgcHViX3Jl bCk7CiAJCXJlbGlkcyA9IGxhcHBlbmRfb2lkKHJlbGlkcywgbXlyZWxpZCk7CiAKQEAgLTE4NDMs NiArMTg1Nyw3IEBAIE9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKQogCiAJCQkJLyogY2hpbGQg aW5oZXJpdHMgY29sdW1uIGxpc3QgZnJvbSBwYXJlbnQgKi8KIAkJCQlwdWJfcmVsLT5jb2x1bW5z ID0gdC0+Y29sdW1uczsKKwkJCQlwdWJfcmVsLT5leGNlcHQgPSB0LT5leGNlcHQ7CiAJCQkJcmVs cyA9IGxhcHBlbmQocmVscywgcHViX3JlbCk7CiAJCQkJcmVsaWRzID0gbGFwcGVuZF9vaWQocmVs aWRzLCBjaGlsZHJlbGlkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vi c2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5j CmluZGV4IDBiM2M4NDk5YjQ5Li4yMWExYjJkZmU0YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1 YnNjcmlwdGlvbmNtZHMuYwpAQCAtNTQ5LDYgKzU0OSw4MCBAQCBjaGVja19wdWJsaWNhdGlvbnMo V2FsUmVjZWl2ZXJDb25uICp3cmNvbm4sIExpc3QgKnB1YmxpY2F0aW9ucykKIAl9CiB9CiAKKy8q CisgKiBUaHJvd3MgYW4gRVJST1IgaWYgbXVsdGlwbGUgcHVibGljYXRpb25zIHdpdGggZXhjZXB0 aW9ucyBhcmUgZm91bmQuCisgKgorICogVGhpcyBjaGVjayBpcyBtYW5kYXRvcnkgYmVjYXVzZSBs b2dpY2FsIHJlcGxpY2F0aW9uIGN1cnJlbnRseSBkb2VzIG5vdAorICogc3VwcG9ydCBzdWJzY3Jp YmluZyB0byBtdWx0aXBsZSBwdWJsaWNhdGlvbnMgaWYgbW9yZSB0aGFuIG9uZSBvZiB0aGVtCisg KiB1c2VzIGFuIGV4Y2x1c2lvbiBsaXN0LgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcHVibGlj YXRpb25zX2V4Y2VwdF9saXN0KFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLCBMaXN0ICpwdWJsaWNh dGlvbnMpCit7CisJTGlzdAkgICAqZXhjZXB0X3B1YmxpY2F0aW9ucyA9IE5JTDsKKworCWlmIChs aXN0X2xlbmd0aChwdWJsaWNhdGlvbnMpID4gMSkKKwl7CisJCVdhbFJjdkV4ZWNSZXN1bHQgKnJl czsKKwkJU3RyaW5nSW5mb0RhdGEgY21kOworCQlUdXBsZVRhYmxlU2xvdCAqc2xvdDsKKwkJT2lk CQkJdGFibGVSb3dbMV0gPSB7VEVYVE9JRH07CisKKwkJaW5pdFN0cmluZ0luZm8oJmNtZCk7CisJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwKKwkJCQkJCQkgICAiU0VMRUNUIHAucHVibmFt ZVxuIgorCQkJCQkJCSAgICIgRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKKwkJ CQkJCQkgICAiIFdIRVJFIHAucHVibmFtZSBJTiAoIik7CisKKwkJR2V0UHVibGljYXRpb25zU3Ry KHB1YmxpY2F0aW9ucywgJmNtZCwgdHJ1ZSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm Y21kLAorCQkJCQkJCSAgICIpXG4iCisJCQkJCQkJICAgIiAgIEFORCBFWElTVFMgKFNFTEVDVCAx XG4iCisJCQkJCQkJICAgIiAgICAgICAgICAgICAgICAgRlJPTSBwZ19jYXRhbG9nLnBnX3B1Ymxp Y2F0aW9uX3JlbCBwclxuIgorCQkJCQkJCSAgICIgICAgICAgICAgICAgICAgV0hFUkUgcHIucHJw dWJpZCA9IHAub2lkXG4iCisJCQkJCQkJICAgIiAgICAgICAgICAgICAgICAgIEFORCBwci5wcmV4 Y2VwdCBJUyBUUlVFKSIpOworCisJCXJlcyA9IHdhbHJjdl9leGVjKHdyY29ubiwgY21kLmRhdGEs IDEsIHRhYmxlUm93KTsKKwkJcGZyZWUoY21kLmRhdGEpOworCisJCWlmIChyZXMtPnN0YXR1cyAh PSBXQUxSQ1ZfT0tfVFVQTEVTKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJybXNnKCJjb3Vs ZCBub3QgcmVjZWl2ZSBsaXN0IG9mIHB1YmxpY2F0aW9ucyBmcm9tIHRoZSBwdWJsaXNoZXI6ICVz IiwKKwkJCQkJCSAgIHJlcy0+ZXJyKSk7CisKKwkJc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxl U2xvdChyZXMtPnR1cGxlZGVzYywgJlRUU09wc01pbmltYWxUdXBsZSk7CisJCXdoaWxlICh0dXBs ZXN0b3JlX2dldHR1cGxlc2xvdChyZXMtPnR1cGxlc3RvcmUsIHRydWUsIGZhbHNlLCBzbG90KSkK KwkJeworCQkJY2hhcgkgICAqcHVibmFtZTsKKwkJCWJvb2wJCWlzbnVsbDsKKworCQkJcHVibmFt ZSA9IFRleHREYXR1bUdldENTdHJpbmcoc2xvdF9nZXRhdHRyKHNsb3QsIDEsICZpc251bGwpKTsK KwkJCUFzc2VydCghaXNudWxsKTsKKworCQkJZXhjZXB0X3B1YmxpY2F0aW9ucyA9IGxhcHBlbmQo ZXhjZXB0X3B1YmxpY2F0aW9ucywgbWFrZVN0cmluZyhwdWJuYW1lKSk7CisJCQlFeGVjQ2xlYXJU dXBsZShzbG90KTsKKwkJfQorCisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7 CisKKwkJd2FscmN2X2NsZWFyX3Jlc3VsdChyZXMpOworCX0KKworCWlmIChsaXN0X2xlbmd0aChl eGNlcHRfcHVibGljYXRpb25zKSA+IDEpCisJeworCQlTdHJpbmdJbmZvRGF0YSBwdWJuYW1lczsK KworCQlpbml0U3RyaW5nSW5mbygmcHVibmFtZXMpOworCQlHZXRQdWJsaWNhdGlvbnNTdHIoZXhj ZXB0X3B1YmxpY2F0aW9ucywgJnB1Ym5hbWVzLCBmYWxzZSk7CisKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAor CQkJCWVycm1zZygicHVibGljYXRpb25zICVzIGFyZSBkZWZpbmVkIHdpdGggRVhDRVBUIFRBQkxF IiwgcHVibmFtZXMuZGF0YSksCisJCQkJZXJyaGludCgiU3Vic2NyaXB0aW9uIGNhbm5vdCBiZSBj cmVhdGVkIHVzaW5nIG11bHRpcGxlIHB1YmxpY2F0aW9ucyB0aGF0IHNwZWNpZnkgRVhDRVBUIFRB QkxFLiIpKTsKKwl9Cit9CisKIC8qCiAgKiBBdXhpbGlhcnkgZnVuY3Rpb24gdG8gYnVpbGQgYSB0 ZXh0IGFycmF5IG91dCBvZiBhIGxpc3Qgb2YgU3RyaW5nIG5vZGVzLgogICovCkBAIC03OTUsNiAr ODY5LDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vi c2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCWNoYXIJCXJlbGF0aW9uX3N0YXRlOwogCiAJCQljaGVj a19wdWJsaWNhdGlvbnMod3Jjb25uLCBwdWJsaWNhdGlvbnMpOworCQkJY2hlY2tfcHVibGljYXRp b25zX2V4Y2VwdF9saXN0KHdyY29ubiwgcHVibGljYXRpb25zKTsKIAkJCWNoZWNrX3B1YmxpY2F0 aW9uc19vcmlnaW5fdGFibGVzKHdyY29ubiwgcHVibGljYXRpb25zLAogCQkJCQkJCQkJCQkgb3B0 cy5jb3B5X2RhdGEsCiAJCQkJCQkJCQkJCSBvcHRzLnJldGFpbmRlYWR0dXBsZXMsIG9wdHMub3Jp Z2luLApAQCAtOTU5LDYgKzEwMzQsOCBAQCBBbHRlclN1YnNjcmlwdGlvbl9yZWZyZXNoKFN1YnNj cmlwdGlvbiAqc3ViLCBib29sIGNvcHlfZGF0YSwKIAkJaWYgKHZhbGlkYXRlX3B1YmxpY2F0aW9u cykKIAkJCWNoZWNrX3B1YmxpY2F0aW9ucyh3cmNvbm4sIHZhbGlkYXRlX3B1YmxpY2F0aW9ucyk7 CiAKKwkJY2hlY2tfcHVibGljYXRpb25zX2V4Y2VwdF9saXN0KHdyY29ubiwgc3ViLT5wdWJsaWNh dGlvbnMpOworCiAJCS8qIEdldCB0aGUgcmVsYXRpb24gbGlzdCBmcm9tIHB1Ymxpc2hlci4gKi8K IAkJcHVicmVscyA9IGZldGNoX3JlbGF0aW9uX2xpc3Qod3Jjb25uLCBzdWItPnB1YmxpY2F0aW9u cyk7CiAKQEAgLTI5NDAsNiArMzAxNyw4IEBAIGZldGNoX3JlbGF0aW9uX2xpc3QoV2FsUmVjZWl2 ZXJDb25uICp3cmNvbm4sIExpc3QgKnB1YmxpY2F0aW9ucykKIAkJCQkJCSBwdWJfbmFtZXMuZGF0 YSk7CiAJfQogCisJZWxvZyhMT0csICJmZXRjaF9yZWxhdGlvbl9saXN0OiBleGVjdXRpbmcgcXVl cnkgdG8gZmV0Y2ggZWZmZWN0aXZlcmVsYXRpb25zOiBcbiVzIiwKKwkJIGNtZC5kYXRhKTsKIAlw ZnJlZShwdWJfbmFtZXMuZGF0YSk7CiAKIAlyZXMgPSB3YWxyY3ZfZXhlYyh3cmNvbm4sIGNtZC5k YXRhLCBjb2x1bW5fY291bnQsIHRhYmxlUm93KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5k ZXggZjk3NmMwZTVjN2UuLmE1MzUxZmM1OWM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpA QCAtODY4OCw3ICs4Njg4LDcgQEAgQVRFeGVjU2V0RXhwcmVzc2lvbihBbHRlcmVkVGFibGVJbmZv ICp0YWIsIFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAkgKiBleHByZXNzaW9u cy4KIAkgKi8KIAlpZiAoYXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVB TCAmJgotCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKHJlbCkpICE9 IE5JTCkKKwkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBO VUxMLCBOVUxMKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJIGVycm1zZygiQUxURVIgVEFCTEUgLyBTRVQgRVhQUkVT U0lPTiBpcyBub3Qgc3VwcG9ydGVkIGZvciB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW5zIGluIHRh YmxlcyB0aGF0IGFyZSBwYXJ0IG9mIGEgcHVibGljYXRpb24iKSwKQEAgLTE4ODg0LDcgKzE4ODg0 LDcgQEAgQVRQcmVwQ2hhbmdlUGVyc2lzdGVuY2UoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxh dGlvbiByZWwsIGJvb2wgdG9Mb2dnZWQpCiAJICogVU5MT0dHRUQsIGFzIFVOTE9HR0VEIHRhYmxl cyBjYW4ndCBiZSBwdWJsaXNoZWQuCiAJICovCiAJaWYgKCF0b0xvZ2dlZCAmJgotCQlHZXRSZWxh dGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKHJlbCkpICE9IE5JTCkKKwkJR2V0UmVs YXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBOVUxMLCBOVUxMKSkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVR VUlTSVRFX1NUQVRFKSwKIAkJCQkgZXJybXNnKCJjYW5ub3QgY2hhbmdlIHRhYmxlIFwiJXNcIiB0 byB1bmxvZ2dlZCBiZWNhdXNlIGl0IGlzIHBhcnQgb2YgYSBwdWJsaWNhdGlvbiIsCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQppbmRleCA3MTNlZTVjMTBhMi4uZDNjM2U5ZjU5YzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMjAzLDYg KzIwMyw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NDQVNiaXRzKGludCBjYXNfYml0cywgaW50IGxv Y2F0aW9uLCBjb25zdCBjaGFyICpjb25zdHJUeXBlLAogc3RhdGljIFBhcnRpdGlvblN0cmF0ZWd5 IHBhcnNlUGFydGl0aW9uU3RyYXRlZ3koY2hhciAqc3RyYXRlZ3ksIGludCBsb2NhdGlvbiwKIAkJ CQkJCQkJCQkJCWNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsKIHN0YXRpYyB2b2lkIHByZXByb2Nl c3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29iamVjdHNfbGlzdCwKKwkJCQkJCQkJ CQkJTGlzdCAqKnB1Ym9iamVjdHMsCiAJCQkJCQkJCQkJCWJvb2wgKmFsbF90YWJsZXMsCiAJCQkJ CQkJCQkJCWJvb2wgKmFsbF9zZXF1ZW5jZXMsCiAJCQkJCQkJCQkJCWNvcmVfeXlzY2FuX3QgeXlz Y2FubmVyKTsKQEAgLTQ1NSw2ICs0NTYsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZp ZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQkJ CVRyaWdnZXJUcmFuc2l0aW9ucyBUcmlnZ2VyUmVmZXJlbmNpbmcKIAkJCQl2YWN1dW1fcmVsYXRp b25fbGlzdCBvcHRfdmFjdXVtX3JlbGF0aW9uX2xpc3QKIAkJCQlkcm9wX29wdGlvbl9saXN0IHB1 Yl9vYmpfbGlzdCBwdWJfYWxsX29ial90eXBlX2xpc3QKKwkJCQlwdWJfZXhjZXB0X29ial9saXN0 IG9wdF9wdWJfZXhjZXB0X2NsYXVzZQogCiAldHlwZSA8cmV0Y2xhdXNlPiByZXR1cm5pbmdfY2xh dXNlCiAldHlwZSA8bm9kZT4JcmV0dXJuaW5nX29wdGlvbgpAQCAtNTkyLDYgKzU5NCw3IEBAIHN0 YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICph bGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8bm9kZT4JdmFyX3ZhbHVlIHpvbmVfdmFsdWUK ICV0eXBlIDxyb2xlc3BlYz4gYXV0aF9pZGVudCBSb2xlU3BlYyBvcHRfZ3JhbnRlZF9ieQogJXR5 cGUgPHB1YmxpY2F0aW9ub2JqZWN0c3BlYz4gUHVibGljYXRpb25PYmpTcGVjCisldHlwZSA8cHVi bGljYXRpb25vYmplY3RzcGVjPiBQdWJsaWNhdGlvbkV4Y2VwdE9ialNwZWMKICV0eXBlIDxwdWJs aWNhdGlvbmFsbG9iamVjdHNwZWM+IFB1YmxpY2F0aW9uQWxsT2JqU3BlYwogCiAldHlwZSA8a2V5 d29yZD4gdW5yZXNlcnZlZF9rZXl3b3JkIHR5cGVfZnVuY19uYW1lX2tleXdvcmQKQEAgLTEwNzky LDcgKzEwNzk1LDcgQEAgQWx0ZXJPd25lclN0bXQ6IEFMVEVSIEFHR1JFR0FURSBhZ2dyZWdhdGVf d2l0aF9hcmd0eXBlcyBPV05FUiBUTyBSb2xlU3BlYwogICoKICAqIHB1Yl9hbGxfb2JqX3R5cGUg aXMgb25lIG9mOgogICoKLSAqCQlUQUJMRVMKKyAqCQlUQUJMRVMgW0VYQ0VQVCBbVEFCTEVdICgg dGFibGUgWywgLi4uXSApXQogICoJCVNFUVVFTkNFUwogICoKICAqIENSRUFURSBQVUJMSUNBVElP TiBGT1IgcHViX29iaiBbLCAuLi5dIFtXSVRIIG9wdGlvbnNdCkBAIC0xMDgxOCw3ICsxMDgyMSw4 IEBAIENyZWF0ZVB1YmxpY2F0aW9uU3RtdDoKIAkJCQkJQ3JlYXRlUHVibGljYXRpb25TdG10ICpu ID0gbWFrZU5vZGUoQ3JlYXRlUHVibGljYXRpb25TdG10KTsKIAogCQkJCQluLT5wdWJuYW1lID0g JDM7Ci0JCQkJCXByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoJDUsICZuLT5mb3JfYWxs X3RhYmxlcywKKwkJCQkJcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdCgkNSwgJm4tPnB1 Ym9iamVjdHMsCisJCQkJCQkJCQkJCQkJJm4tPmZvcl9hbGxfdGFibGVzLAogCQkJCQkJCQkJCQkJ CSZuLT5mb3JfYWxsX3NlcXVlbmNlcywKIAkJCQkJCQkJCQkJCQl5eXNjYW5uZXIpOwogCQkJCQlu LT5vcHRpb25zID0gJDY7CkBAIC0xMDg1OCw2ICsxMDg2Miw3IEBAIFB1YmxpY2F0aW9uT2JqU3Bl YzoKIAkJCQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQyOwogCQkJCQkkJC0+cHVidGFibGUt PmNvbHVtbnMgPSAkMzsKIAkJCQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQ0OworCQkJ CQkkJC0+bG9jYXRpb24gPSBAMTsKIAkJCQl9CiAJCQl8IFRBQkxFUyBJTl9QIFNDSEVNQSBDb2xJ ZAogCQkJCXsKQEAgLTEwOTMzLDExICsxMDkzOCwxOSBAQCBwdWJfb2JqX2xpc3Q6CVB1YmxpY2F0 aW9uT2JqU3BlYwogCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CiAJOwogCitvcHRfcHVi X2V4Y2VwdF9jbGF1c2U6CisJCQlFWENFUFQgb3B0X3RhYmxlICcoJyBwdWJfZXhjZXB0X29ial9s aXN0ICcpJwl7ICQkID0gJDQ7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJCQkJCXsgJCQgPSBOSUw7 IH0KKwkJOworCiBQdWJsaWNhdGlvbkFsbE9ialNwZWM6Ci0JCQkJQUxMIFRBQkxFUworCQkJCUFM TCBUQUJMRVMgb3B0X3B1Yl9leGNlcHRfY2xhdXNlCiAJCQkJCXsKIAkJCQkJCSQkID0gbWFrZU5v ZGUoUHVibGljYXRpb25BbGxPYmpTcGVjKTsKIAkJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElD QVRJT05fQUxMX1RBQkxFUzsKKwkJCQkJCSQkLT5leGNlcHRfdGFibGVzID0gJDM7CisJCQkJCQlp ZigkJC0+ZXhjZXB0X3RhYmxlcyAhPSBOVUxMKQorCQkJCQkJCXByZXByb2Nlc3NfcHVib2JqX2xp c3QoJCQtPmV4Y2VwdF90YWJsZXMsIHl5c2Nhbm5lcik7CiAJCQkJCQkkJC0+bG9jYXRpb24gPSBA MTsKIAkJCQkJfQogCQkJCXwgQUxMIFNFUVVFTkNFUwpAQCAtMTA5NTQsNiArMTA5NjcsMjMgQEAg cHViX2FsbF9vYmpfdHlwZV9saXN0OglQdWJsaWNhdGlvbkFsbE9ialNwZWMKIAkJCQkJeyAkJCA9 IGxhcHBlbmQoJDEsICQzKTsgfQogCTsKIAorUHVibGljYXRpb25FeGNlcHRPYmpTcGVjOgorCQkJ IHJlbGF0aW9uX2V4cHIKKwkJCQl7CisJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpT cGVjKTsKKwkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9FWENFUFRfVEFCTEU7 CisJCQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOworCQkJCQkk JC0+cHVidGFibGUtPmV4Y2VwdCA9IHRydWU7CisJCQkJCSQkLT5wdWJ0YWJsZS0+cmVsYXRpb24g PSAkMTsKKwkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CisJCQkJfQorCTsKKworcHViX2V4Y2VwdF9v YmpfbGlzdDogUHVibGljYXRpb25FeGNlcHRPYmpTcGVjCisJCQkJCXsgJCQgPSBsaXN0X21ha2Ux KCQxKTsgfQorCQkJfCBwdWJfZXhjZXB0X29ial9saXN0ICcsJyBQdWJsaWNhdGlvbkV4Y2VwdE9i alNwZWMKKwkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQorCTsKIAogLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCiAgKgpAQCAtMTk3OTQsOCArMTk4MjQsOSBAQCBwYXJzZVBhcnRpdGlvblN0cmF0 ZWd5KGNoYXIgKnN0cmF0ZWd5LCBpbnQgbG9jYXRpb24sIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVy KQogICogQWxzbywgY2hlY2tzIGlmIHRoZSBwdWJfb2JqZWN0X3R5cGUgaGFzIGJlZW4gc3BlY2lm aWVkIG1vcmUgdGhhbiBvbmNlLgogICovCiBzdGF0aWMgdm9pZAotcHJlcHJvY2Vzc19wdWJfYWxs X29ianR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LCBib29sICphbGxfdGFibGVzLAot CQkJCQkJCQlib29sICphbGxfc2VxdWVuY2VzLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKK3By ZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29iamVjdHNfbGlzdCwgTGlz dCAqKnB1Ym9iamVjdHMsCisJCQkJCQkJCWJvb2wgKmFsbF90YWJsZXMsIGJvb2wgKmFsbF9zZXF1 ZW5jZXMsCisJCQkJCQkJCWNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogewogCWlmICghYWxsX29i amVjdHNfbGlzdCkKIAkJcmV0dXJuOwpAQCAtMTk4MTUsNiArMTk4NDYsNyBAQCBwcmVwcm9jZXNz X3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9vYmplY3RzX2xpc3QsIGJvb2wgKmFsbF90 YWJsZXMsCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ob2JqLT5sb2NhdGlvbikpOwogCiAJCQkq YWxsX3RhYmxlcyA9IHRydWU7CisJCQkqcHVib2JqZWN0cyA9IGxpc3RfY29uY2F0KCpwdWJvYmpl Y3RzLCBvYmotPmV4Y2VwdF90YWJsZXMpOwogCQl9CiAJCWVsc2UgaWYgKG9iai0+cHVib2JqdHlw ZSA9PSBQVUJMSUNBVElPTl9BTExfU0VRVUVOQ0VTKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCAxOWEzYzIxYTg2My4uYzQxZmU0MWVhN2Eg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtNzE2 LDIxICs3MTYsMjggQEAgY29weV9yZWFkX2RhdGEodm9pZCAqb3V0YnVmLCBpbnQgbWlucmVhZCwg aW50IG1heHJlYWQpCiAgKiBtZXNzYWdlIHByb3ZpZGVzIGR1cmluZyByZXBsaWNhdGlvbi4KICAq CiAgKiBUaGlzIGZ1bmN0aW9uIGFsc28gcmV0dXJucyAoYSkgdGhlIHJlbGF0aW9uIHF1YWxpZmlj YXRpb25zIHRvIGJlIHVzZWQgaW4KLSAqIHRoZSBDT1BZIGNvbW1hbmQsIGFuZCAoYikgd2hldGhl ciB0aGUgcmVtb3RlIHJlbGF0aW9uIGhhcyBwdWJsaXNoZWQgYW55Ci0gKiBnZW5lcmF0ZWQgY29s dW1uLgorICogdGhlIENPUFkgY29tbWFuZCwgKGIpIHdoZXRoZXIgdGhlIHJlbW90ZSByZWxhdGlv biBoYXMgcHVibGlzaGVkIGFueQorICogZ2VuZXJhdGVkIGNvbHVtbiwgYW5kIChjKSBjb21wdXRl cyB0aGUgZWZmZWN0aXZlIHNldCBvZiByZWxhdGlvbnMgdG8gYmUgdXNlZAorICogYXMgQ09QWSBz b3VyY2VzIHdoZW4gZXhjbHVzaW9ucyBhcmUgcHJlc2VudC4gV2hlbiBubyBleGNsdXNpb25zIGV4 aXN0LCB0aGUKKyAqIGxpc3QgcmVtYWlucyBlbXB0eSBhbmQgdGhlIHJvb3QgcmVsYXRpb24gaXMg dXNlZCBhcy1pcy4gV2hlbiBleGNsdXNpb25zCisgKiBleGlzdCwgdGhlIGxpc3QgY29udGFpbnMg bGVhZiByZWxhdGlvbnMgdGhhdCBhcmUgbm90IGV4Y2x1ZGVkIGFuZCBtdXN0IGJlCisgKiBjb21i aW5lZCB1c2luZyBVTklPTiBBTEwuCiAgKi8KIHN0YXRpYyB2b2lkCiBmZXRjaF9yZW1vdGVfdGFi bGVfaW5mbyhjaGFyICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLCBMb2dpY2FsUmVwUmVsYXRpb24g KmxyZWwsCi0JCQkJCQlMaXN0ICoqcXVhbCwgYm9vbCAqZ2VuY29sX3B1Ymxpc2hlZCkKKwkJCQkJ CUxpc3QgKipxdWFsLCBib29sICpnZW5jb2xfcHVibGlzaGVkLAorCQkJCQkJTGlzdCAqKmVmZmVj dGl2ZV9yZWxhdGlvbnMpCiB7CiAJV2FsUmN2RXhlY1Jlc3VsdCAqcmVzOwogCVN0cmluZ0luZm9E YXRhIGNtZDsKIAlUdXBsZVRhYmxlU2xvdCAqc2xvdDsKLQlPaWQJCQl0YWJsZVJvd1tdID0ge09J RE9JRCwgQ0hBUk9JRCwgQ0hBUk9JRH07CisJT2lkCQkJdGFibGVSb3dbXSA9IHtPSURPSUQsIENI QVJPSUQsIENIQVJPSUQsIEJPT0xPSUR9OwogCU9pZAkJCWF0dHJSb3dbXSA9IHtJTlQyT0lELCBU RVhUT0lELCBPSURPSUQsIEJPT0xPSUQsIEJPT0xPSUR9OwogCU9pZAkJCXF1YWxSb3dbXSA9IHtU RVhUT0lEfTsKKwlPaWQJCQlmaWx0ZXJ0YWJsZVJvd1tdID0ge1RFWFRPSUQsIFRFWFRPSUR9Owog CWJvb2wJCWlzbnVsbDsKIAlpbnQJCQluYXR0OworCWJvb2wJCWlzX3BhcnRpdGlvbjsKIAlTdHJp bmdJbmZvCXB1Yl9uYW1lcyA9IE5VTEw7CiAJQml0bWFwc2V0ICAqaW5jbHVkZWRfY29scyA9IE5V TEw7CiAJaW50CQkJc2VydmVyX3ZlcnNpb24gPSB3YWxyY3Zfc2VydmVyX3ZlcnNpb24oTG9nUmVw V29ya2VyV2FsUmN2Q29ubik7CkBAIC03NDAsNyArNzQ3LDcgQEAgZmV0Y2hfcmVtb3RlX3RhYmxl X2luZm8oY2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwgTG9naWNhbFJlcFJlbGF0aW9uICps cmVsLAogCiAJLyogRmlyc3QgZmV0Y2ggT2lkIGFuZCByZXBsaWNhIGlkZW50aXR5LiAqLwogCWlu aXRTdHJpbmdJbmZvKCZjbWQpOwotCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgIlNFTEVDVCBjLm9p ZCwgYy5yZWxyZXBsaWRlbnQsIGMucmVsa2luZCIKKwlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJT RUxFQ1QgYy5vaWQsIGMucmVscmVwbGlkZW50LCBjLnJlbGtpbmQsIGMucmVsaXNwYXJ0aXRpb24i CiAJCQkJCSAiICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyIKIAkJCQkJICIgIElOTkVSIEpP SU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbiIKIAkJCQkJICIgICAgICAgIE9OIChjLnJlbG5h bWVzcGFjZSA9IG4ub2lkKSIKQEAgLTc3MCw2ICs3NzcsOCBAQCBmZXRjaF9yZW1vdGVfdGFibGVf aW5mbyhjaGFyICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLCBMb2dpY2FsUmVwUmVsYXRpb24gKmxy ZWwsCiAJQXNzZXJ0KCFpc251bGwpOwogCWxyZWwtPnJlbGtpbmQgPSBEYXR1bUdldENoYXIoc2xv dF9nZXRhdHRyKHNsb3QsIDMsICZpc251bGwpKTsKIAlBc3NlcnQoIWlzbnVsbCk7CisJaXNfcGFy dGl0aW9uID0gRGF0dW1HZXRCb29sKHNsb3RfZ2V0YXR0cihzbG90LCA0LCAmaXNudWxsKSk7CisJ QXNzZXJ0KCFpc251bGwpOwogCiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsK IAl3YWxyY3ZfY2xlYXJfcmVzdWx0KHJlcyk7CkBAIC05NTQsNiArOTYzLDc1IEBAIGZldGNoX3Jl bW90ZV90YWJsZV9pbmZvKGNoYXIgKm5zcG5hbWUsIGNoYXIgKnJlbG5hbWUsIExvZ2ljYWxSZXBS ZWxhdGlvbiAqbHJlbCwKIAogCXdhbHJjdl9jbGVhcl9yZXN1bHQocmVzKTsKIAorCWlmIChzZXJ2 ZXJfdmVyc2lvbiA+PSAxOTAwMDAgJiYgIWlzX3BhcnRpdGlvbiAmJgorCQlscmVsLT5yZWxraW5k ID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJeworCQlyZXNldFN0cmluZ0luZm8oJmNt ZCk7CisKKwkJLyoKKwkJICogVGhpcyBxdWVyeSByZWN1cnNpdmVseSB0cmF2ZXJzZXMgdGhlIGlu aGVyaXRhbmNlIChwYXJ0aXRpb24pIHRyZWUKKwkJICogc3RhcnRpbmcgZnJvbSB0aGUgZ2l2ZW4g dGFibGUgT0lEIGFuZCBkZXRlcm1pbmVzIHdoaWNoIGxlYWYKKwkJICogcmVsYXRpb25zIHNob3Vs ZCBiZSBpbmNsdWRlZCBmb3IgcmVwbGljYXRpb24uIEV4Y2x1c2lvbiBwcm9wYWdhdGVzCisJCSAq IGZyb20gcGFyZW50IHRvIGNoaWxkLCBhbmQgYSByZWxhdGlvbiBpcyBhbHNvIHRyZWF0ZWQgYXMg ZXhjbHVkZWQgaWYKKwkJICogaXQgaXMgZXhwbGljaXRseSBtYXJrZWQgd2l0aCBwcmV4Y2VwdCA9 IHRydWUgaW4gcGdfcHVibGljYXRpb25fcmVsCisJCSAqIGZvciB0aGUgc3BlY2lmaWVkIHB1Ymxp Y2F0aW9ucy4gVGhlIGZpbmFsIHJlc3VsdCByZXR1cm5zIG9ubHkKKwkJICogbm9uIGV4Y2x1ZGVk IGxlYWYgcmVsYXRpb25zLgorCQkgKi8KKwkJYXBwZW5kU3RyaW5nSW5mbygmY21kLCAiU0VMRUNU IHNjaGVtYW5hbWUsIHJlbG5hbWUgRlJPTSBwZ19nZXRfcHVibGljYXRpb25fZWZmZWN0aXZlX3Rh YmxlcygldSwgQVJSQVlbJXNdKTsiLAorCQkJCQkJIGxyZWwtPnJlbW90ZWlkLAorCQkJCQkJIHB1 Yl9uYW1lcy0+ZGF0YSk7CisKKwkJZWxvZyhMT0csICJFeGVjdXRpbmcgcXVlcnkgdG8gZ2V0IHRo ZSB0YWJsZXM6XG4lcyIsIGNtZC5kYXRhKTsKKwkJcmVzID0gd2FscmN2X2V4ZWMoTG9nUmVwV29y a2VyV2FsUmN2Q29ubiwgY21kLmRhdGEsCisJCQkJCQkgIGxlbmd0aG9mKGZpbHRlcnRhYmxlUm93 KSwgZmlsdGVydGFibGVSb3cpOworCisJCWlmIChyZXMtPnN0YXR1cyAhPSBXQUxSQ1ZfT0tfVFVQ TEVTKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0NPTk5FQ1RJT05f RkFJTFVSRSksCisJCQkJCWVycm1zZygiY291bGQgbm90IGdldCBub24gZXhjbHVkZWQgdGFibGUg bGlzdCBmb3IgdGFibGUgXCIlcy4lc1wiIGZyb20gcHVibGlzaGVyOiAlcyIsCisJCQkJCQkJbnNw bmFtZSwgcmVsbmFtZSwgcmVzLT5lcnIpKTsKKworCQkvKgorCQkgKiBTdG9yZSB0aGUgdGFibGVz IGFzIGEgbGlzdCBvZiBzY2hlbWFuYW1lIGFuZCB0YWJsZW5hbWUuCisJCSAqLworCQlzbG90ID0g TWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KHJlcy0+dHVwbGVkZXNjLCAmVFRTT3BzTWluaW1hbFR1 cGxlKTsKKwkJd2hpbGUgKHR1cGxlc3RvcmVfZ2V0dHVwbGVzbG90KHJlcy0+dHVwbGVzdG9yZSwg dHJ1ZSwgZmFsc2UsIHNsb3QpKQorCQl7CisJCQlRdWFsaWZpZWRSZWxhdGlvbk5hbWUgKnJlbGlu Zm8gPSBwYWxsb2Nfb2JqZWN0KFF1YWxpZmllZFJlbGF0aW9uTmFtZSk7CisKKwkJCXJlbGluZm8t PnNjaGVtYW5hbWUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHNsb3RfZ2V0YXR0cihzbG90LCAxLCAm aXNudWxsKSk7CisJCQlBc3NlcnQoIWlzbnVsbCk7CisJCQlyZWxpbmZvLT5yZWxuYW1lID0gVGV4 dERhdHVtR2V0Q1N0cmluZyhzbG90X2dldGF0dHIoc2xvdCwgMiwgJmlzbnVsbCkpOworCQkJQXNz ZXJ0KCFpc251bGwpOworCisJCQkqZWZmZWN0aXZlX3JlbGF0aW9ucyA9IGxhcHBlbmQoKmVmZmVj dGl2ZV9yZWxhdGlvbnMsIHJlbGluZm8pOworCisJCQlFeGVjQ2xlYXJUdXBsZShzbG90KTsKKwkJ fQorCisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisKKwkJLyoKKwkJICog SWYgdGhlcmUgaXMgZXhhY3RseSBvbmUgaXRlbSBpbiB0aGUgZWZmZWN0aXZlX3JlbGF0aW9ucyBs aXN0IGFuZCBpdAorCQkgKiBlcXVhbHMgdGhlIHRhYmxlIGJlaW5nIHByb2Nlc3NlZCwgdGhhdCBt ZWFucyBubyBhY3R1YWwgZXhjbHVzaW9uCisJCSAqIG9jY3VycmVkLgorCQkgKi8KKwkJaWYgKGxp c3RfbGVuZ3RoKCplZmZlY3RpdmVfcmVsYXRpb25zKSA9PSAxKQorCQl7CisJCQlRdWFsaWZpZWRS ZWxhdGlvbk5hbWUgKnJlbGluZm87CisKKwkJCXJlbGluZm8gPSBsaW5pdGlhbCgqZWZmZWN0aXZl X3JlbGF0aW9ucyk7CisJCQlpZiAoc3RyY21wKG5zcG5hbWUsIHJlbGluZm8tPnNjaGVtYW5hbWUp ID09IDAgJiYKKwkJCQlzdHJjbXAocmVsbmFtZSwgcmVsaW5mby0+cmVsbmFtZSkgPT0gMCkKKwkJ CXsKKwkJCQlwZnJlZShyZWxpbmZvLT5zY2hlbWFuYW1lKTsKKwkJCQlwZnJlZShyZWxpbmZvLT5y ZWxuYW1lKTsKKwkJCQlsaXN0X2ZyZWVfZGVlcCgqZWZmZWN0aXZlX3JlbGF0aW9ucyk7CisJCQkJ KmVmZmVjdGl2ZV9yZWxhdGlvbnMgPSBOSUw7CisJCQl9CisJCX0KKwl9CisKIAkvKgogCSAqIEdl dCByZWxhdGlvbidzIHJvdyBmaWx0ZXIgZXhwcmVzc2lvbnMuIERJU1RJTkNUIGF2b2lkcyB0aGUg c2FtZQogCSAqIGV4cHJlc3Npb24gb2YgYSB0YWJsZSBpbiBtdWx0aXBsZSBwdWJsaWNhdGlvbnMg ZnJvbSBiZWluZyBpbmNsdWRlZApAQCAtMTA0Myw2ICsxMTIxLDcgQEAgY29weV90YWJsZShSZWxh dGlvbiByZWwpCiAJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWxtYXBlbnRyeTsKIAlMb2dpY2Fs UmVwUmVsYXRpb24gbHJlbDsKIAlMaXN0CSAgICpxdWFsID0gTklMOworCUxpc3QJICAgKmVmZmVj dGl2ZV9yZWxhdGlvbnMgPSBOSUw7CiAJV2FsUmN2RXhlY1Jlc3VsdCAqcmVzOwogCVN0cmluZ0lu Zm9EYXRhIGNtZDsKIAlDb3B5RnJvbVN0YXRlIGNzdGF0ZTsKQEAgLTEwNTQsNyArMTEzMyw3IEBA IGNvcHlfdGFibGUoUmVsYXRpb24gcmVsKQogCS8qIEdldCB0aGUgcHVibGlzaGVyIHJlbGF0aW9u IGluZm8uICovCiAJZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oZ2V0X25hbWVzcGFjZV9uYW1lKFJl bGF0aW9uR2V0TmFtZXNwYWNlKHJlbCkpLAogCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1l KHJlbCksICZscmVsLCAmcXVhbCwKLQkJCQkJCQkmZ2VuY29sX3B1Ymxpc2hlZCk7CisJCQkJCQkJ JmdlbmNvbF9wdWJsaXNoZWQsICZlZmZlY3RpdmVfcmVsYXRpb25zKTsKIAogCS8qIFB1dCB0aGUg cmVsYXRpb24gaW50byByZWxtYXAuICovCiAJbG9naWNhbHJlcF9yZWxtYXBfdXBkYXRlKCZscmVs KTsKQEAgLTEwNjYsMTIgKzExNDUsNjQgQEAgY29weV90YWJsZShSZWxhdGlvbiByZWwpCiAJLyog U3RhcnQgY29weSBvbiB0aGUgcHVibGlzaGVyLiAqLwogCWluaXRTdHJpbmdJbmZvKCZjbWQpOwog CisKKwlpZiAoZWZmZWN0aXZlX3JlbGF0aW9ucyAmJiBsaXN0X2xlbmd0aChlZmZlY3RpdmVfcmVs YXRpb25zKSkKKwl7CisJCWJvb2wgZmlyc3QgPSB0cnVlOworCisJCS8qCisJCSAqIEJ1aWxkIGEg c2luZ2xlIENPUFkgY29tbWFuZCB0byBzeW5jaHJvbml6ZSBhbGwgcmVzb2x2ZWQgcmVsYXRpb25z CisJCSAqIGludG8gdGhlIHJvb3QgdGFibGUuCisJCSAqCisJCSAqIFRoZSBhcnJheSAnZWZmZWN0 aXZlX3JlbGF0aW9ucycgY29udGFpbnMgdGhlIGxlYWYgdGFibGVzIG9mCisJCSAqIHBhcnRpdGlv biBoaWVyYXJjaGllcywgd2l0aCBleGNsdWRlZCBzdWJ0cmVlcyByZW1vdmVkIGFjY29yZGluZyB0 bworCQkgKiB0aGUgRVhDRVBUIGNsYXVzZXMuIFRoaXMgYXBwbGllcyBvbmx5IHdoZW4KKwkJICog J3B1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290JyBpcyBlbmFibGVkLCBzaW5jZSB0aGUgaW5pdGlh bCBzeW5jIG11c3QKKwkJICogcm91dGUgYWxsIGNoYW5nZXMgdG8gdGhlIHJvb3QgdGFibGUuCisJ CSAqCisJCSAqIFdlIGNvbnN0cnVjdCBhIFVOSU9OIEFMTCBxdWVyeSB0aGF0IGNvbWJpbmVzIGRh dGEgZnJvbSBtdWx0aXBsZSBsZWFmCisJCSAqIHJlbGF0aW9ucyBpbnRvIG9uZSBzdWItQ09QWSBz dGF0ZW1lbnQsIGVuc3VyaW5nIGFsbCByb3dzIGFyZSBjb3BpZWQKKwkJICogY29uc2lzdGVudGx5 IGludG8gdGhlIHJvb3QgdGFibGUuCisJCSAqLworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZj bWQsICJDT1BZIChcbiIpOworCQlmb3JlYWNoX3B0cihRdWFsaWZpZWRSZWxhdGlvbk5hbWUsIHJl bGluZm8sIGVmZmVjdGl2ZV9yZWxhdGlvbnMpCisJCXsKKwkJCWlmICghZmlyc3QpCisJCQkJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAiVU5JT04gQUxMXG4iKTsKKworCQkJZmlyc3QgPSBm YWxzZTsKKworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAiU0VMRUNUICIpOworCisJ CQkvKiBJZiB0aGUgdGFibGUgaGFzIGNvbHVtbnMsIHRoZW4gc3BlY2lmeSB0aGUgY29sdW1ucyAq LworCQkJaWYgKGxyZWwubmF0dHMpCisJCQl7CisJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBscmVs Lm5hdHRzOyBpKyspCisJCQkJeworCQkJCQlpZiAoaSA+IDApCisJCQkJCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKCZjbWQsICIsICIpOworCisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNt ZCwgcXVvdGVfaWRlbnRpZmllcihscmVsLmF0dG5hbWVzW2ldKSk7CisJCQkJfQorCQkJfQorCQkJ ZWxzZQorCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIiAqICIpOworCisJCQlhcHBl bmRTdHJpbmdJbmZvKCZjbWQsICIgRlJPTSAgJXNcbiIsCisJCQkJCQkJIHF1b3RlX3F1YWxpZmll ZF9pZGVudGlmaWVyKHJlbGluZm8tPnNjaGVtYW5hbWUsCisJCQkJCQkJCQkJCQkJCXJlbGluZm8t PnJlbG5hbWUpKTsKKwkJfQorCisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIilcbiIp OworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsICJUTyBTVERPVVQiKTsKKwl9CiAJLyog UmVndWxhciBvciBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIG5vIHJvdyBmaWx0ZXIgb3IgZ2VuZXJh dGVkIGNvbHVtbnMgKi8KLQlpZiAoKGxyZWwucmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8 IGxyZWwucmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQotCQkmJiBxdWFsID09 IE5JTCAmJiAhZ2VuY29sX3B1Ymxpc2hlZCkKKwllbHNlIGlmICgobHJlbC5yZWxraW5kID09IFJF TEtJTkRfUkVMQVRJT04gfHwKKwkJCSAgbHJlbC5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9O RURfVEFCTEUpICYmCisJCQkgcXVhbCA9PSBOSUwgJiYgIWdlbmNvbF9wdWJsaXNoZWQpCiAJewog CQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJDT1BZICVzIiwKLQkJCQkJCSBxdW90ZV9xdWFsaWZp ZWRfaWRlbnRpZmllcihscmVsLm5zcG5hbWUsIGxyZWwucmVsbmFtZSkpOworCQkJCQkJcXVvdGVf cXVhbGlmaWVkX2lkZW50aWZpZXIobHJlbC5uc3BuYW1lLCBscmVsLnJlbG5hbWUpKTsKIAogCQkv KiBJZiB0aGUgdGFibGUgaGFzIGNvbHVtbnMsIHRoZW4gc3BlY2lmeSB0aGUgY29sdW1ucyAqLwog CQlpZiAobHJlbC5uYXR0cykKQEAgLTExNTcsNiArMTI4OCw3IEBAIGNvcHlfdGFibGUoUmVsYXRp b24gcmVsKQogCX0KIAogCXJlcyA9IHdhbHJjdl9leGVjKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4s IGNtZC5kYXRhLCAwLCBOVUxMKTsKKwllbG9nKExPRywgIlRhYmxlc3luYyB3b3JrZXI6IEV4ZWN1 dGluZyBxdWVyeSB0byBnZXQgdGhlIGluaXRpYWwgc3luYyBkYXRhOlxuJXMiLCBjbWQuZGF0YSk7 CiAJcGZyZWUoY21kLmRhdGEpOwogCWlmIChyZXMtPnN0YXR1cyAhPSBXQUxSQ1ZfT0tfQ09QWV9P VVQpCiAJCWVyZXBvcnQoRVJST1IsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQv cGdvdXRwdXQuYwppbmRleCBlMDE2ZjY0ZTBiMy4uODBkZjAyMWYzZDUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMTc5NywxMiArMTc5NywxNyBA QCBwZ291dHB1dF9zaHV0ZG93bihMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgpCiAgKiB0byBz aWxlbnRseSBjb250aW51ZSB0aGUgcmVwbGljYXRpb24gaW4gdGhlIGFic2VuY2Ugb2YgYSBtaXNz aW5nIHB1YmxpY2F0aW9uLgogICogVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIHdlIGFsbG93IHRo ZSB1c2VycyB0byBjcmVhdGUgcHVibGljYXRpb25zIGFmdGVyIHRoZXkKICAqIGhhdmUgc3BlY2lm aWVkIHRoZSByZXF1aXJlZCBwdWJsaWNhdGlvbnMgYXQgdGhlIHRpbWUgb2YgcmVwbGljYXRpb24g c3RhcnQuCisgKiBXZSBhbHNvIGVuZm9yY2UgdGhhdCBubyBtb3JlIHRoYW4gb25lIHB1YmxpY2F0 aW9uIGluIHRoZSBsaXN0IG1heSBjb250YWluCisgKiBhbiBFWENFUFQgVEFCTEUgY2xhdXNlLiBV c2luZyBtdWx0aXBsZSBwdWJsaWNhdGlvbnMgd2l0aCBleGNlcHRpb25zIGlzCisgKiBjdXJyZW50 bHkgdW5zdXBwb3J0ZWQgdG8gcHJldmVudCBub24tZGV0ZXJtaW5pc3RpYyBmaWx0ZXJpbmcgYmVo YXZpb3IKKyAqIGFjcm9zcyBvdmVybGFwcGluZyBwdWJsaWNhdGlvbiBzZXRzLgogICovCiBzdGF0 aWMgTGlzdCAqCiBMb2FkUHVibGljYXRpb25zKExpc3QgKnB1Ym5hbWVzKQogewogCUxpc3QJICAg KnJlc3VsdCA9IE5JTDsKIAlMaXN0Q2VsbCAgICpsYzsKKwlMaXN0CSAgICpleGNlcHRfcHViX25h bWVzID0gTklMOwogCiAJZm9yZWFjaChsYywgcHVibmFtZXMpCiAJewpAQCAtMTgxMCw3ICsxODE1 LDEzIEBAIExvYWRQdWJsaWNhdGlvbnMoTGlzdCAqcHVibmFtZXMpCiAJCVB1YmxpY2F0aW9uICpw dWIgPSBHZXRQdWJsaWNhdGlvbkJ5TmFtZShwdWJuYW1lLCB0cnVlKTsKIAogCQlpZiAocHViKQor CQl7CiAJCQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwgcHViKTsKKworCQkJLyogQ2hlY2sgaWYg dGhpcyBwdWJsaWNhdGlvbiBoYXMgYW4gRVhDRVBUIFRBQkxFIGxpc3QuICovCisJCQlpZiAocHVi bGljYXRpb25faGFzX2FueV9leGNlcHRpb24ocHViLT5vaWQpKQorCQkJCWV4Y2VwdF9wdWJfbmFt ZXMgPSBsYXBwZW5kKGV4Y2VwdF9wdWJfbmFtZXMsIHBzdHJkdXAocHVibmFtZSkpOworCQl9CiAJ CWVsc2UKIAkJCWVyZXBvcnQoV0FSTklORywKIAkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKQEAgLTE4MTksNiArMTgzMCwzNCBAQCBMb2FkUHVi bGljYXRpb25zKExpc3QgKnB1Ym5hbWVzKQogCQkJCQllcnJoaW50KCJDcmVhdGUgdGhlIHB1Ymxp Y2F0aW9uIGlmIGl0IGRvZXMgbm90IGV4aXN0LiIpKTsKIAl9CiAKKwkvKgorCSAqIElmIG1vcmUg dGhhbiBvbmUgcHVibGljYXRpb24gaGFzIGFuIEVYQ0VQVCBsaXN0LCB0aHJvdyBhbiBlcnJvciBs aXN0aW5nCisJICogYWxsIHRoZSBwcm9ibGVtYXRpYyBwdWJsaWNhdGlvbnMuCisJICovCisJaWYg KGxpc3RfbGVuZ3RoKGV4Y2VwdF9wdWJfbmFtZXMpID4gMSkKKwl7CisJCVN0cmluZ0luZm9EYXRh IHB1Yl9uYW1lc19zdHI7CisJCWJvb2wJCWZpcnN0ID0gdHJ1ZTsKKworCQlpbml0U3RyaW5nSW5m bygmcHViX25hbWVzX3N0cik7CisKKwkJZm9yZWFjaF9wdHIoY2hhciwgbmFtZSwgZXhjZXB0X3B1 Yl9uYW1lcykKKwkJeworCQkJaWYgKCFmaXJzdCkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KCZwdWJfbmFtZXNfc3RyLCAiLCAiKTsKKworCQkJYXBwZW5kU3RyaW5nSW5mbygmcHViX25hbWVz X3N0ciwgIlwiJXNcIiIsIG5hbWUpOworCQkJZmlyc3QgPSBmYWxzZTsKKwkJfQorCisJCWVyZXBv cnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJ CQkJZXJybXNnKCJjYW5ub3QgdXNlIG11bHRpcGxlIHB1YmxpY2F0aW9ucyB3aXRoIEVYQ0VQVCBU QUJMRSBsaXN0cyIpLAorCQkJCWVycmRldGFpbCgiVGhlIGZvbGxvd2luZyBwdWJsaWNhdGlvbnMg aGF2ZSBleGNlcHRpb25zOiAlcy4iLAorCQkJCQkJICBwdWJfbmFtZXNfc3RyLmRhdGEpKTsKKwl9 CisKKwlsaXN0X2ZyZWVfZGVlcChleGNlcHRfcHViX25hbWVzKTsKIAlyZXR1cm4gcmVzdWx0Owog fQogCkBAIC0yMDQxLDYgKzIwODAsNjUgQEAgc2V0X3NjaGVtYV9zZW50X2luX3N0cmVhbWVkX3R4 bihSZWxhdGlvblN5bmNFbnRyeSAqZW50cnksIFRyYW5zYWN0aW9uSWQgeGlkKQogCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogfQogCisvKgorICogcHVibGljYXRpb25faGFzX2VmZmVj dGl2ZV90YWJsZXMKKyAqCisgKiBDaGVja3MgaWYgdGhlIHB1YmxpY2F0aW9uIGhhcyBhbnkgZWZm ZWN0aXZlIGRhdGEgaW4gYSBwYXJ0aXRpb24gdHJlZS4KKyAqIFJldHVybnMgdHJ1ZSBpZiBhdCBs ZWFzdCBvbmUgbGVhZiBpcyBOT1QgZXhjbHVkZWQuCisgKi8KK3N0YXRpYyBib29sCitwdWJsaWNh dGlvbl9oYXNfZWZmZWN0aXZlX3RhYmxlcyhPaWQgcm9vdF9yZWxpZCwgT2lkIHB1YmlkKQorewor CUxpc3QJICAgKmFsbF9sZWF2ZXMgPSBOSUw7CisJYm9vbAkJYXRfbGVhc3Rfb25lX2FsbG93ZWQg PSBmYWxzZTsKKworCS8qIEdldCBhbGwgbGVhZiByZWxhdGlvbnMgaW4gdGhlIGhpZXJhcmNoeSAq LworCWFsbF9sZWF2ZXMgPSBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMoTklMLAorCQkJ CQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9MRUFGLAorCQkJCQkJCQkJCQkJcm9vdF9yZWxpZCk7 CisKKwkvKgorCSAqIFRyYXZlcnNlIGxlYXZlcy4gSWYgd2UgZmluZCBldmVuIE9ORSBsZWFmIHRo YXQgaXMgbm90IGV4Y2x1ZGVkIGJ5IHRoZQorCSAqIHB1YmxpY2F0aW9uJ3MgRVhDRVBUIGxpc3Qs IHRoZSB0cmVlIGlzIGVmZmVjdGl2ZS4KKwkgKi8KKwlmb3JlYWNoX29pZChjdXJyX3JlbGlkLCBh bGxfbGVhdmVzKQorCXsKKwkJTGlzdAkgICAqYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNl c3RvcnMoY3Vycl9yZWxpZCk7CisJCWJvb2wJCWlzX2V4Y2x1ZGVkID0gZmFsc2U7CisKKwkJLyog MS4gQ2hlY2sgaWYgdGhlIGxlYWYgaXRzZWxmIGlzIGFuIGV4Y2VwdGlvbiAqLworCQlpZiAoaXNf cmVsaWRfcHVibGlzaGVkX2FzX2V4Y2VwdChjdXJyX3JlbGlkLCBwdWJpZCkpCisJCQlpc19leGNs dWRlZCA9IHRydWU7CisJCWVsc2UKKwkJeworCQkJLyogQ2hlY2sgaWYgYW55IGFuY2VzdG9yIGlz IGFuIGV4Y2VwdGlvbiAqLworCQkJZm9yZWFjaF9vaWQoYW5jZXN0b3IsIGFuY2VzdG9ycykKKwkJ CXsKKwkJCQlpZiAoaXNfcmVsaWRfcHVibGlzaGVkX2FzX2V4Y2VwdChhbmNlc3RvciwgcHViaWQp KQorCQkJCXsKKwkJCQkJaXNfZXhjbHVkZWQgPSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9CisJ CQl9CisJCX0KKworCQlsaXN0X2ZyZWUoYW5jZXN0b3JzKTsKKworCQkvKgorCQkgKiBJZiB0aGlz IGxlYWYgaXMgbm90IGV4Y2x1ZGVkLCBpdCBtZWFucyB0aGUgcHVibGljYXRpb24gZWZmZWN0aXZl bHkKKwkJICogaW5jbHVkZXMgZGF0YSBmcm9tIHRoaXMgdHJlZS4KKwkJICovCisJCWlmICghaXNf ZXhjbHVkZWQpCisJCXsKKwkJCWF0X2xlYXN0X29uZV9hbGxvd2VkID0gdHJ1ZTsKKwkJCWJyZWFr OworCQl9CisJfQorCisJbGlzdF9mcmVlKGFsbF9sZWF2ZXMpOworCXJldHVybiBhdF9sZWFzdF9v bmVfYWxsb3dlZDsKK30KKwogLyoKICAqIEZpbmQgb3IgY3JlYXRlIGVudHJ5IGluIHRoZSByZWxh dGlvbiBzY2hlbWEgY2FjaGUuCiAgKgpAQCAtMjA4OCw3ICsyMTg2LDcgQEAgZ2V0X3JlbF9zeW5j X2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJaWYgKCFlbnRy eS0+cmVwbGljYXRlX3ZhbGlkKQogCXsKIAkJT2lkCQkJc2NoZW1hSWQgPSBnZXRfcmVsX25hbWVz cGFjZShyZWxpZCk7Ci0JCUxpc3QJICAgKnB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25z KHJlbGlkKTsKKwkJTGlzdAkgICAqcHViaWRzID0gTklMOwogCiAJCS8qCiAJCSAqIFdlIGRvbid0 IGFjcXVpcmUgYSBsb2NrIG9uIHRoZSBuYW1lc3BhY2Ugc3lzdGVtIHRhYmxlIGFzIHdlIGJ1aWxk CkBAIC0yMTAyLDYgKzIyMDAsMTEgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAq ZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCWJvb2wJCWFtX3BhcnRpdGlvbiA9IGdldF9yZWxf cmVsaXNwYXJ0aXRpb24ocmVsaWQpOwogCQljaGFyCQlyZWxraW5kID0gZ2V0X3JlbF9yZWxraW5k KHJlbGlkKTsKIAkJTGlzdAkgICAqcmVsX3B1YmxpY2F0aW9ucyA9IE5JTDsKKwkJYm9vbAkJcm9v dF9hbmNlc3Rvcl9wdWJsaXNoZWRfdmlhX2FueSA9IGZhbHNlOworCQlPaWQJCQlyb290X2FuY2Vz dG9yID0gSW52YWxpZE9pZDsKKwkJTGlzdAkgICAqYW5jZXN0b3JzID0gTklMOworCisJCUdldFJl bGF0aW9uUHVibGljYXRpb25zKHJlbGlkLCAmcHViaWRzLCBOVUxMKTsKIAogCQkvKiBSZWxvYWQg cHVibGljYXRpb25zIGlmIG5lZWRlZCBiZWZvcmUgdXNlLiAqLwogCQlpZiAoIXB1YmxpY2F0aW9u c192YWxpZCkKQEAgLTIxODAsNiArMjI4MywzMiBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRw dXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJZW50cnktPmVzdGF0ZSA9IE5VTEw7 CiAJCW1lbXNldChlbnRyeS0+ZXhwcnN0YXRlLCAwLCBzaXplb2YoZW50cnktPmV4cHJzdGF0ZSkp OwogCisJCS8qCisJCSAqIFByZS1jYWxjdWxhdGUgaWYgdGhlIHJvb3QgYW5jZXN0b3IgaXMgcHVi bGlzaGVkIHZpYSBhbnkgcHVidmlhcm9vdAorCQkgKiBwdWJsaWNhdGlvbi4gVGhpcyBhdm9pZHMg bmVzdGluZyBsb29wcyBpbnNpZGUgdGhlIG1haW4gcHVibGljYXRpb24KKwkJICogY2hlY2suCisJ CSAqLworCQlpZiAoYW1fcGFydGl0aW9uKQorCQl7CisJCQlhbmNlc3RvcnMgPSBnZXRfcGFydGl0 aW9uX2FuY2VzdG9ycyhyZWxpZCk7CisJCQlyb290X2FuY2VzdG9yID0gbGxhc3Rfb2lkKGFuY2Vz dG9ycyk7CisKKwkJCWZvcmVhY2gobGMsIGRhdGEtPnB1YmxpY2F0aW9ucykKKwkJCXsKKwkJCQlQ dWJsaWNhdGlvbiAqcHViaW5mbyA9IGxmaXJzdChsYyk7CisKKwkJCQlpZiAocHViaW5mby0+YWxs dGFibGVzICYmIHB1YmluZm8tPnB1YnZpYXJvb3QgJiYKKwkJCQkJcHVibGljYXRpb25faGFzX2Fu eV9leGNlcHRpb24ocHViaW5mby0+b2lkKSkKKwkJCQl7CisJCQkJCWlmIChwdWJsaWNhdGlvbl9o YXNfZWZmZWN0aXZlX3RhYmxlcyhyb290X2FuY2VzdG9yLCBwdWJpbmZvLT5vaWQpKQorCQkJCQl7 CisJCQkJCQlyb290X2FuY2VzdG9yX3B1Ymxpc2hlZF92aWFfYW55ID0gdHJ1ZTsKKwkJCQkJCWJy ZWFrOworCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisKIAkJLyoKIAkJICogQnVpbGQgcHVibGlj YXRpb24gY2FjaGUuIFdlIGNhbid0IHVzZSBvbmUgcHJvdmlkZWQgYnkgcmVsY2FjaGUgYXMKIAkJ ICogcmVsY2FjaGUgY29uc2lkZXJzIGFsbCBwdWJsaWNhdGlvbnMgdGhhdCB0aGUgZ2l2ZW4gcmVs YXRpb24gaXMgaW4sCkBAIC0yMjAyLDIwICsyMzMxLDQzIEBAIGdldF9yZWxfc3luY19lbnRyeShQ R091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJLyoKIAkJCSAqIElmIHRo aXMgaXMgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiwgcGljayB0aGUgcGFydGl0aW9uCiAJ CQkgKiByb290IGFuZCBzZXQgdGhlIGFuY2VzdG9yIGxldmVsIGFjY29yZGluZ2x5LgorCQkJICoK KwkJCSAqIElmIHRoaXMgaXMgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiBhbmQgaXQgaGFz IGFuIEVYQ0VQVAorCQkJICogVEFCTEUgbGlzdDoKKwkJCSAqCisJCQkgKiBJZiB0aGUgcmVsYXRp b24gaXMgYSBwYXJ0aXRpb24sIGNoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQKKwkJCSAqIHJlbGF0 aW9uIG9yIGFueSBvZiB0aGUgYW5jZXN0b3JzIGlzIGluY2x1ZGVkIGluIHRoZSBFWENFUFQKKwkJ CSAqIFRBQkxFIGxpc3QuIElmIHNvLCBkbyBub3QgcHVibGlzaCB0aGUgY2hhbmdlLiBUaGlzIGlz IGRvbmUKKwkJCSAqIGlycmVzcGVjdGl2ZSBvZiBwdWJ2aWFyb290IHNldHRpbmcuCisJCQkgKgor CQkJICogIkRvIG5vdCBwdWJsaXNoIHRoZSBjaGFuZ2UiIGlzIGFjaGlldmVkIGJ5IGtlZXBpbmcg dGhlIHZhcmlhYmxlCisJCQkgKiAicHVibGlzaCIgc2V0IHRvIGZhbHNlLiBBbmQgZXZlbnR1YWxs eSwgZW50cnktPnB1YmFjdGlvbnMgd2lsbAorCQkJICogcmVtYWluIGFsbCBmYWxzZSBmb3IgdGhp cyBwdWJsaWNhdGlvbi4KIAkJCSAqLwogCQkJaWYgKHB1Yi0+YWxsdGFibGVzKQogCQkJewotCQkJ CXB1Ymxpc2ggPSB0cnVlOwotCQkJCWlmIChwdWItPnB1YnZpYXJvb3QgJiYgYW1fcGFydGl0aW9u KQorCQkJCUxpc3QJICAgKmV4Y2VwdHB1YmlkcyA9IE5JTDsKKworCQkJCWlmIChhbV9wYXJ0aXRp b24pCiAJCQkJewotCQkJCQlMaXN0CSAgICphbmNlc3RvcnMgPSBnZXRfcGFydGl0aW9uX2FuY2Vz dG9ycyhyZWxpZCk7CisJCQkJCWZvcmVhY2hfb2lkKGFuY2VzdG9yLCBhbmNlc3RvcnMpCisJCQkJ CQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvciwgTlVMTCwgJmV4Y2VwdHB1Ymlkcyk7 CiAKLQkJCQkJcHViX3JlbGlkID0gbGxhc3Rfb2lkKGFuY2VzdG9ycyk7Ci0JCQkJCWFuY2VzdG9y X2xldmVsID0gbGlzdF9sZW5ndGgoYW5jZXN0b3JzKTsKKwkJCQkJaWYgKHB1Yi0+cHVidmlhcm9v dCkKKwkJCQkJeworCQkJCQkJcHViX3JlbGlkID0gcm9vdF9hbmNlc3RvcjsKKwkJCQkJCWFuY2Vz dG9yX2xldmVsID0gbGlzdF9sZW5ndGgoYW5jZXN0b3JzKTsKKwkJCQkJfQogCQkJCX0KLQkJCX0K IAotCQkJaWYgKCFwdWJsaXNoKQorCQkJCUdldFJlbGF0aW9uUHVibGljYXRpb25zKHJlbGlkLCBO VUxMLCAmZXhjZXB0cHViaWRzKTsKKworCQkJCWlmICghbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdHB1 YmlkcywgcHViLT5vaWQpKQorCQkJCQlwdWJsaXNoID0gdHJ1ZTsKKworCQkJCWxpc3RfZnJlZShl eGNlcHRwdWJpZHMpOworCQkJfQorCQkJZWxzZSBpZiAoIXB1Ymxpc2gpCiAJCQl7CiAJCQkJYm9v bAkJYW5jZXN0b3JfcHVibGlzaGVkID0gZmFsc2U7CiAKQEAgLTIyMjksMTkgKzIzODEsMzIgQEAg Z2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24p CiAJCQkJewogCQkJCQlPaWQJCQlhbmNlc3RvcjsKIAkJCQkJaW50CQkJbGV2ZWw7Ci0JCQkJCUxp c3QJICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKLQotCQkJ CQlhbmNlc3RvciA9IEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24ocHViLT5vaWQsCi0J CQkJCQkJCQkJCQkJCQkgICBhbmNlc3RvcnMsCi0JCQkJCQkJCQkJCQkJCQkgICAmbGV2ZWwpOwog Ci0JCQkJCWlmIChhbmNlc3RvciAhPSBJbnZhbGlkT2lkKQorCQkJCQlpZiAocm9vdF9hbmNlc3Rv cl9wdWJsaXNoZWRfdmlhX2FueSkKIAkJCQkJewotCQkJCQkJYW5jZXN0b3JfcHVibGlzaGVkID0g dHJ1ZTsKLQkJCQkJCWlmIChwdWItPnB1YnZpYXJvb3QpCisJCQkJCQkvKgorCQkJCQkJICogVGhl IHJvb3QgYW5jZXN0b3IgaXMgYWxyZWFkeSBrbm93biB0byBiZSBwdWJsaXNoZWQKKwkJCQkJCSAq IHZpYSBhICJGT1IgQUxMIFRBQkxFUyBFWENFUFQiIHB1YmxpY2F0aW9uLiBQdWJsaXNoCisJCQkJ CQkgKiB2aWEgdGhlIHJvb3QgdGFibGUgaWYgaXQgaXMgZXhwbGljaXRseSBpbmNsdWRlZCwgb3IK KwkJCQkJCSAqIGlmIGl0cyBzY2hlbWEgaXMgcGFydCBvZiB0aGUgcHVibGljYXRpb24uCisJCQkJ CQkgKi8KKwkJCQkJCXB1Yl9yZWxpZCA9IHJvb3RfYW5jZXN0b3I7CisJCQkJCQlhbmNlc3Rvcl9s ZXZlbCA9IGxpc3RfbGVuZ3RoKGFuY2VzdG9ycyk7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7 CisJCQkJCQlhbmNlc3RvciA9IEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24ocHViLT5v aWQsCisJCQkJCQkJCQkJCQkJCQkJICAgYW5jZXN0b3JzLAorCQkJCQkJCQkJCQkJCQkJCSAgICZs ZXZlbCk7CisKKwkJCQkJCWlmIChhbmNlc3RvciAhPSBJbnZhbGlkT2lkKQogCQkJCQkJewotCQkJ CQkJCXB1Yl9yZWxpZCA9IGFuY2VzdG9yOwotCQkJCQkJCWFuY2VzdG9yX2xldmVsID0gbGV2ZWw7 CisJCQkJCQkJYW5jZXN0b3JfcHVibGlzaGVkID0gdHJ1ZTsKKwkJCQkJCQlpZiAocHViLT5wdWJ2 aWFyb290KQorCQkJCQkJCXsKKwkJCQkJCQkJcHViX3JlbGlkID0gYW5jZXN0b3I7CisJCQkJCQkJ CWFuY2VzdG9yX2xldmVsID0gbGV2ZWw7CisJCQkJCQkJfQogCQkJCQkJfQogCQkJCQl9CiAJCQkJ fQpAQCAtMjI1OSw2ICsyNDI0LDkgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAq ZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQkgKiBEb24ndCBwdWJsaXNoIGNoYW5nZXMgZm9y IHBhcnRpdGlvbmVkIHRhYmxlcywgYmVjYXVzZQogCQkJICogcHVibGlzaGluZyB0aG9zZSBvZiBp dHMgcGFydGl0aW9ucyBzdWZmaWNlcywgdW5sZXNzIHBhcnRpdGlvbgogCQkJICogY2hhbmdlcyB3 b24ndCBiZSBwdWJsaXNoZWQgZHVlIHRvIHB1YnZpYXJvb3QgYmVpbmcgc2V0LgorCQkJICoKKwkJ CSAqIElmIHRoZSByZWxhdGlvbiBpcyBwYXJ0IG9mIEVYQ0VQVCBUQUJMRSBsaXN0IG9mIGEgcHVi bGljYXRpb24sCisJCQkgKiB0aGUgJ3B1Ymxpc2gnIHZhcmlhYmxlIGlzIGFscmVhZHkgc2V0IHRv IGZhbHNlLgogCQkJICovCiAJCQlpZiAocHVibGlzaCAmJgogCQkJCShyZWxraW5kICE9IFJFTEtJ TkRfUEFSVElUSU9ORURfVEFCTEUgfHwgcHViLT5wdWJ2aWFyb290KSkKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jCmluZGV4IDZiNjM0YzlmZmYxLi5kYzAyMWRiYjZjZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jCkBAIC01Nzg4LDcgKzU3ODgsOSBAQCBSZWxhdGlvbkdldEV4Y2x1 c2lvbkluZm8oUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIHZvaWQKIFJlbGF0aW9uQnVpbGRQdWJs aWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykK IHsKLQlMaXN0CSAgICpwdWJvaWRzOworCUxpc3QJICAgKnB1Ym9pZHMgPSBOSUw7CisJTGlzdAkg ICAqZXhjZXB0cHVib2lkcyA9IE5JTDsKKwlMaXN0CSAgICphbGx0YWJsZXNwdWJvaWRzOwogCUxp c3RDZWxsICAgKmxjOwogCU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCU9pZAkJCXNjaGVtYWlkOwpA QCAtNTgyNiw3ICs1ODI4LDcgQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlv biByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogCXB1YmRlc2MtPmdlbmNvbHNf dmFsaWRfZm9yX2RlbGV0ZSA9IHRydWU7CiAKIAkvKiBGZXRjaCB0aGUgcHVibGljYXRpb24gbWVt YmVyc2hpcCBpbmZvLiAqLwotCXB1Ym9pZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhyZWxp ZCk7CisJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVsaWQsICZwdWJvaWRzLCAmZXhjZXB0cHVi b2lkcyk7CiAJc2NoZW1haWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShyZWxhdGlvbik7CiAJcHVi b2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywgR2V0U2NoZW1hUHVibGljYXRp b25zKHNjaGVtYWlkKSk7CiAKQEAgLTU4MzgsMTYgKzU4NDAsMjUgQEAgUmVsYXRpb25CdWlsZFB1 YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNj KQogCQlmb3JlYWNoKGxjLCBhbmNlc3RvcnMpCiAJCXsKIAkJCU9pZAkJCWFuY2VzdG9yID0gbGZp cnN0X29pZChsYyk7CisJCQlMaXN0CSAgICphbmNlc3Rvcl9wdWJvaWRzID0gTklMOworCQkJTGlz dAkgICAqYW5jZXN0b3JfZXhjZXB0cHVib2lkcyA9IE5JTDsKIAotCQkJcHVib2lkcyA9IGxpc3Rf Y29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKLQkJCQkJCQkJCQkJIEdldFJlbGF0aW9uUHVibGlj YXRpb25zKGFuY2VzdG9yKSk7CisJCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3Rvciwg JmFuY2VzdG9yX3B1Ym9pZHMsCisJCQkJCQkJCQkmYW5jZXN0b3JfZXhjZXB0cHVib2lkcyk7CisK KwkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIGFuY2VzdG9yX3B1 Ym9pZHMpOwogCQkJc2NoZW1haWQgPSBnZXRfcmVsX25hbWVzcGFjZShhbmNlc3Rvcik7CiAJCQlw dWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLAogCQkJCQkJCQkJCQkgR2V0 U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYWlkKSk7CisJCQlleGNlcHRwdWJvaWRzID0gbGlzdF9j b25jYXRfdW5pcXVlX29pZChleGNlcHRwdWJvaWRzLAorCQkJCQkJCQkJCQkJICAgYW5jZXN0b3Jf ZXhjZXB0cHVib2lkcyk7CiAJCX0KIAl9Ci0JcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9v aWQocHVib2lkcywgR2V0QWxsVGFibGVzUHVibGljYXRpb25zKCkpOwogCisJYWxsdGFibGVzcHVi b2lkcyA9IEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucygpOworCXB1Ym9pZHMgPSBsaXN0X2NvbmNh dF91bmlxdWVfb2lkKHB1Ym9pZHMsCisJCQkJCQkJCQkgbGlzdF9kaWZmZXJlbmNlX29pZChhbGx0 YWJsZXNwdWJvaWRzLAorCQkJCQkJCQkJCQkJCQkgZXhjZXB0cHVib2lkcykpOwogCWZvcmVhY2go bGMsIHB1Ym9pZHMpCiAJewogCQlPaWQJCQlwdWJpZCA9IGxmaXJzdF9vaWQobGMpOwpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMKaW5kZXggMmMzNzU0ZDAyMGYuLmI4Zjk3ODg2MzJhIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ2MzUs OSArNDYzNSw1NSBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAkJCShzdHJjbXAo UFFnZXR2YWx1ZShyZXMsIGksIGlfcHVidmlhcm9vdCksICJ0IikgPT0gMCk7CiAJCXB1YmluZm9b aV0ucHViZ2VuY29sc190eXBlID0KIAkJCSooUFFnZXR2YWx1ZShyZXMsIGksIGlfcHViZ2VuY29s cykpOworCQlwdWJpbmZvW2ldLmV4Y2VwdF90YWJsZXMgPSAoU2ltcGxlUHRyTGlzdCkKKwkJewor CQkJTlVMTCwgTlVMTAorCQl9OwogCiAJCS8qIERlY2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gZHVt cCBpdCAqLwogCQlzZWxlY3REdW1wYWJsZU9iamVjdCgmKHB1YmluZm9baV0uZG9iaiksIGZvdXQp OworCisJCS8qCisJCSAqIEdldCB0aGUgbGlzdCBvZiB0YWJsZXMgZm9yIHB1YmxpY2F0aW9ucyBz cGVjaWZpZWQgd2l0aCB0aGUgRVhDRVBUCisJCSAqIFRBQkxFIGNsYXVzZS4gVGhpcyBpcyBpbnRy b2R1Y2VkIGluIFBvc3RncmVTUUwgMTkuCisJCSAqCisJCSAqIEVYQ0VQVCBUQUJMRVMgaXMgcHJv Y2Vzc2VkIGhlcmUgYW5kIG91dHB1dCBkaXJlY3RseSBieQorCQkgKiBkdW1wUHVibGljYXRpb24o KS4gVGhpcyBkaWZmZXJzIGZyb20gdGhlIGFwcHJvYWNoIHVzZWQgaW4KKwkJICogZHVtcFB1Ymxp Y2F0aW9uVGFibGUoKSBhbmQgZHVtcFB1YmxpY2F0aW9uTmFtZXNwYWNlKCksIHNpbmNlIHRoYXQK KwkJICogYXBwcm9hY2ggd291bGQgcmVxdWlyZSBFWENFUFQgVEFCTEUgc3VwcG9ydCBmb3IgQUxU RVIgUFVCTElDQVRJT04sCisJCSAqIHdoaWNoIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLgor CQkgKi8KKwkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTkwMDAwKQorCQl7CisJCQlpbnQJ CQludGJsczsKKwkJCVBHcmVzdWx0ICAgKnJlc190YmxzOworCisJCQlyZXNldFBRRXhwQnVmZmVy KHF1ZXJ5KTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LAorCQkJCQkJCSAgIlNFTEVDVCBw cnJlbGlkXG4iCisJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbFxu IgorCQkJCQkJCSAgIldIRVJFIHBycHViaWQgPSAldSBhbmQgcHJleGNlcHQiLAorCQkJCQkJCSAg cHViaW5mb1tpXS5kb2JqLmNhdElkLm9pZCk7CisKKwkJCXJlc190YmxzID0gRXhlY3V0ZVNxbFF1 ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOworCisJCQludGJscyA9IFBR bnR1cGxlcyhyZXNfdGJscyk7CisKKwkJCWZvciAoaW50IGogPSAwOyBqIDwgbnRibHM7IGorKykK KwkJCXsKKwkJCQlPaWQJCQlwcnJlbGlkOworCQkJCVRhYmxlSW5mbyAgKnRiaW5mbzsKKworCQkJ CXBycmVsaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXNfdGJscywgaiwgMCkpOworCisJCQkJdGJp bmZvID0gZmluZFRhYmxlQnlPaWQocHJyZWxpZCk7CisKKwkJCQlpZiAodGJpbmZvICE9IE5VTEwp CisJCQkJCXNpbXBsZV9wdHJfbGlzdF9hcHBlbmQoJnB1YmluZm9baV0uZXhjZXB0X3RhYmxlcywg dGJpbmZvKTsKKwkJCX0KKworCQkJUFFjbGVhcihyZXNfdGJscyk7CisJCX0KIAl9CiAKIGNsZWFu dXA6CkBAIC00Njc3LDcgKzQ3MjMsMjUgQEAgZHVtcFB1YmxpY2F0aW9uKEFyY2hpdmUgKmZvdXQs IGNvbnN0IFB1YmxpY2F0aW9uSW5mbyAqcHViaW5mbykKIAlpZiAocHViaW5mby0+cHViYWxsdGFi bGVzICYmIHB1YmluZm8tPnB1YmFsbHNlcXVlbmNlcykKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo cXVlcnksICIgRk9SIEFMTCBUQUJMRVMsIEFMTCBTRVFVRU5DRVMiKTsKIAllbHNlIGlmIChwdWJp bmZvLT5wdWJhbGx0YWJsZXMpCisJeworCQlpbnQJCQluX2V4Y2x1ZGVkID0gMDsKKwogCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBGT1IgQUxMIFRBQkxFUyIpOworCisJCS8qIEluY2x1 ZGUgRVhDRVBUIFRBQkxFIGNsYXVzZSBpZiB0aGVyZSBhcmUgZXhjZXB0X3RhYmxlcy4gKi8KKwkJ Zm9yIChTaW1wbGVQdHJMaXN0Q2VsbCAqY2VsbCA9IHB1YmluZm8tPmV4Y2VwdF90YWJsZXMuaGVh ZDsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHQpCisJCXsKKwkJCVRhYmxlSW5mbyAgKnRiaW5mbyA9 IChUYWJsZUluZm8gKikgY2VsbC0+cHRyOworCisJCQlpZiAoKytuX2V4Y2x1ZGVkID09IDEpCisJ CQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgRVhDRVBUIFRBQkxFICgiKTsKKwkJCWVs c2UKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgIik7CisJCQlhcHBlbmRQUUV4 cEJ1ZmZlcihxdWVyeSwgIk9OTFkgJXMiLCBmbXRRdWFsaWZpZWREdW1wYWJsZSh0YmluZm8pKTsK KwkJfQorCQlpZiAobl9leGNsdWRlZCA+IDApCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVy eSwgIikiKTsKKwl9CiAJZWxzZSBpZiAocHViaW5mby0+cHViYWxsc2VxdWVuY2VzKQogCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBGT1IgQUxMIFNFUVVFTkNFUyIpOwogCkBAIC00ODU3 LDYgKzQ5MjEsNyBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUlu Zm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCiAJLyogQ29sbGVjdCBhbGwgcHVibGljYXRp b24gbWVtYmVyc2hpcCBpbmZvLiAqLwogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE1MDAw MCkKKwl7CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiU0VMRUNUIHRh Ymxlb2lkLCBvaWQsIHBycHViaWQsIHBycmVsaWQsICIKIAkJCQkJCQkgInBnX2NhdGFsb2cucGdf Z2V0X2V4cHIocHJxdWFsLCBwcnJlbGlkKSBBUyBwcnJlbHF1YWwsICIKQEAgLTQ4NjksNiArNDkz NCw5IEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0Ymxp bmZvW10sIGludCBudW1UYWJsZXMpCiAJCQkJCQkJICIgICAgICBXSEVSRSBhdHRyZWxpZCA9IHBy LnBycmVsaWQgQU5EIGF0dG51bSA9IHByYXR0cnNbc10pXG4iCiAJCQkJCQkJICIgIEVMU0UgTlVM TCBFTkQpIHByYXR0cnMgIgogCQkJCQkJCSAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9u X3JlbCBwciIpOworCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxOTAwMDApCisJCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBXSEVSRSBOT1QgcHIucHJleGNlcHQiKTsKKwl9CiAJ ZWxzZQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVDVCB0YWJs ZW9pZCwgb2lkLCBwcnB1YmlkLCBwcnJlbGlkLCAiCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA0YzRiMTRlNWZj Ny4uZDE0MWViNjZkMTcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysr IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNjc2LDYgKzY3Niw3IEBAIHR5cGVkZWYg c3RydWN0IF9QdWJsaWNhdGlvbkluZm8KIAlib29sCQlwdWJ0cnVuY2F0ZTsKIAlib29sCQlwdWJ2 aWFyb290OwogCVB1Ymxpc2hHZW5jb2xzVHlwZSBwdWJnZW5jb2xzX3R5cGU7CisJU2ltcGxlUHRy TGlzdCBleGNlcHRfdGFibGVzOwogfSBQdWJsaWNhdGlvbkluZm87CiAKIC8qCmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAw Ml9wZ19kdW1wLnBsCmluZGV4IGE4ZGNjMmI1Yzc1Li41NGVhZTU3N2M5MSAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3Qv MDAyX3BnX2R1bXAucGwKQEAgLTMxNzAsNiArMzE3MCwzNiBAQCBteSAldGVzdHMgPSAoCiAJCWxp a2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAogCX0sCiAKKwkn Q1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjgnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUwLAorCQlj cmVhdGVfc3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWI4IEZPUiBBTEwgVEFCTEVT IEVYQ0VQVCAoZHVtcF90ZXN0LnRlc3RfdGFibGUpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlc UUNSRUFURSBQVUJMSUNBVElPTiBwdWI4IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoT05M WSBkdW1wX3Rlc3QudGVzdF90YWJsZSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwg ZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBz ZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKKwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1 YjknID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUwLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NS RUFURSBQVUJMSUNBVElPTiBwdWI5IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoZHVtcF90 ZXN0LnRlc3RfdGFibGUsIGR1bXBfdGVzdC50ZXN0X3NlY29uZF90YWJsZSk7JywKKwkJcmVnZXhw ID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjkgRk9SIEFMTCBUQUJMRVMgRVhD RVBUIFRBQkxFIChPTkxZIGR1bXBfdGVzdC50ZXN0X3RhYmxlLCBPTkxZIGR1bXBfdGVzdC50ZXN0 X3NlY29uZF90YWJsZSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0 cnVuY2F0ZScpO1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bv c3RfZGF0YSA9PiAxLCB9LAorCX0sCisKKwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEwJyA9PiB7 CisJCWNyZWF0ZV9vcmRlciA9PiA5MiwKKwkJY3JlYXRlX3NxbCA9PgorCQkgICdDUkVBVEUgUFVC TElDQVRJT04gcHViMTAgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChkdW1wX3Rlc3QudGVz dF9pbmhlcml0YW5jZV9wYXJlbnQpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBQ VUJMSUNBVElPTiBwdWIxMCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKE9OTFkgZHVtcF90 ZXN0LnRlc3RfaW5oZXJpdGFuY2VfcGFyZW50LCBPTkxZIGR1bXBfdGVzdC50ZXN0X2luaGVyaXRh bmNlX2NoaWxkKSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5j YXRlJyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9k YXRhID0+IDEsIH0sCisJfSwKKwogCSdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEnID0+IHsKIAkJ Y3JlYXRlX29yZGVyID0+IDUwLAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgU1VCU0NSSVBUSU9O IHN1YjEKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMKaW5kZXggMzU4NGM0ZTE0MjguLjFiZmVjMGJkM2VmIDEwMDY0NAotLS0gYS9z cmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAt MzA3MywxNyArMzA3MywzNCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpz Y2hlbWFuYW1lLAogCQkJCQkJCQkgICIgICAgICAgICAgV0hFUkUgYXR0cmVsaWQgPSBwci5wcnJl bGlkIEFORCBhdHRudW0gPSBwcmF0dHJzW3NdKVxuIgogCQkJCQkJCQkgICIgICAgICAgIEVMU0Ug TlVMTCBFTkQpICIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBc biIKLQkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHBy IE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgotCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxv Zy5wZ19jbGFzcyBjIE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgotCQkJCQkJCQkgICJXSEVSRSBw ci5wcnJlbGlkID0gJyVzJ1xuIgorCQkJCQkJCQkgICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19wdWJs aWNhdGlvbl9yZWwgcHIgT04gcC5vaWQgPSBwci5wcnB1YmlkXG4iCisJCQkJCQkJCSAgIgkJSk9J TiBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgT04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCisJCQkJCQkJ CSAgIldIRVJFIHByLnBycmVsaWQgPSAnJXMnXG4iLAorCQkJCQkJCQkgIG9pZCwgb2lkLCBvaWQp OworCisJCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQorCQkJCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cigmYnVmLCAiIEFORCBOT1QgcHIucHJleGNlcHRcbiIpOworCisJCQkJYXBwZW5kUFFF eHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkJICAiVU5JT05cbiIKIAkJCQkJCQkJICAiU0VMRUNUIHB1 Ym5hbWVcbiIKLQkJCQkJCQkJICAiICAgICAsIE5VTExcbiIKLQkJCQkJCQkJICAiICAgICAsIE5V TExcbiIKKwkJCQkJCQkJICAiCQksIE5VTExcbiIKKwkJCQkJCQkJICAiCQksIE5VTExcbiIKIAkJ CQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKLQkJCQkJCQkJICAi V0hFUkUgcC5wdWJhbGx0YWJsZXMgQU5EIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlz aGFibGUoJyVzJylcbiIKLQkJCQkJCQkJICAiT1JERVIgQlkgMTsiLAotCQkJCQkJCQkgIG9pZCwg b2lkLCBvaWQsIG9pZCk7CisJCQkJCQkJCSAgIldIRVJFIHAucHViYWxsdGFibGVzIEFORCBwZ19j YXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycpXG4iLAorCQkJCQkJCQkgIG9p ZCk7CisKKwkJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCisJCQkJCWFwcGVuZFBRRXhw QnVmZmVyKCZidWYsCisJCQkJCQkJCQkgICIgICAgIEFORCBOT1QgRVhJU1RTIChcbiIKKwkJCQkJ CQkJCSAgIgkJU0VMRUNUIDFcbiIKKwkJCQkJCQkJCSAgIgkJRlJPTSBwZ19jYXRhbG9nLnBnX3B1 YmxpY2F0aW9uX3JlbCBwclxuIgorCQkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdfY2xh c3MgcGNcbiIKKwkJCQkJCQkJCSAgIgkJT04gcHIucHJyZWxpZCA9IHBjLm9pZFxuIgorCQkJCQkJ CQkJICAiCQlXSEVSRSBwci5wcnJlbGlkID0gJyVzJyBBTkQgcHIucHJwdWJpZCA9IHAub2lkKVxu IiwKKwkJCQkJCQkJCSAgb2lkKTsKKworCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICJP UkRFUiBCWSAxOyIpOwogCQkJfQogCQkJZWxzZQogCQkJewpAQCAtMzEzNCw2ICszMTUxLDM1IEBA IGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQlQUWNs ZWFyKHJlc3VsdCk7CiAJCX0KIAorCQkvKiBQcmludCBwdWJsaWNhdGlvbnMgdGhhdCB0aGUgdGFi bGUgaXMgZXhwbGljaXRseSBleGNsdWRlZCBmcm9tICovCisJCWlmIChwc2V0LnN2ZXJzaW9uID49 IDE5MDAwMCkKKwkJeworCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkgICJTRUxF Q1QgcHVibmFtZVxuIgorCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBw XG4iCisJCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiBw Lm9pZCA9IHByLnBycHViaWRcbiIKKwkJCQkJCQkgICJXSEVSRSBwci5wcnJlbGlkID0gJyVzJ1xu IEFORCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJCSAgIk9SREVSIEJZIDE7Iiwgb2lkKTsKKworCQkJ cmVzdWx0ID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCQkJaWYgKCFyZXN1bHQpCisJCQkJZ290byBl cnJvcl9yZXR1cm47CisJCQllbHNlCisJCQkJdHVwbGVzID0gUFFudHVwbGVzKHJlc3VsdCk7CisK KwkJCWlmICh0dXBsZXMgPiAwKQorCQkJCXByaW50VGFibGVBZGRGb290ZXIoJmNvbnQsIF8oIkV4 Y2VwdCBQdWJsaWNhdGlvbnM6IikpOworCisJCQkvKiBNaWdodCBiZSBhbiBlbXB0eSBzZXQgLSB0 aGF0J3Mgb2sgKi8KKwkJCWZvciAoaSA9IDA7IGkgPCB0dXBsZXM7IGkrKykKKwkJCXsKKwkJCQlw cmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiICAgIFwiJXNcIiIsIFBRZ2V0dmFsdWUocmVzdWx0LCBp LCAwKSk7CisKKwkJCQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250LCBidWYuZGF0YSk7CisJCQl9 CisJCQlQUWNsZWFyKHJlc3VsdCk7CisJCX0KKwogCQkvKgogCQkgKiBJZiB2ZXJib3NlLCBwcmlu dCBOT1QgTlVMTCBjb25zdHJhaW50cy4KIAkJICovCkBAIC02NzUzLDggKzY3OTksMTIgQEAgZGVz Y3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJCQkJCQkgICIgICAgIHBn X2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByXG4iCiAJCQkJCQkJICAiV0hFUkUgYy5yZWxu YW1lc3BhY2UgPSBuLm9pZFxuIgogCQkJCQkJCSAgIiAgQU5EIGMub2lkID0gcHIucHJyZWxpZFxu IgotCQkJCQkJCSAgIiAgQU5EIHByLnBycHViaWQgPSAnJXMnXG4iCi0JCQkJCQkJICAiT1JERVIg QlkgMSwyIiwgcHViaWQpOworCQkJCQkJCSAgIiAgQU5EIHByLnBycHViaWQgPSAnJXMnXG4iLCBw dWJpZCk7CisKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJCQlhcHBlbmRQUUV4 cEJ1ZmZlcigmYnVmLCAiICBBTkQgTk9UIHByLnByZXhjZXB0XG4iKTsKKworCQkJYXBwZW5kUFFF eHBCdWZmZXIoJmJ1ZiwgIk9SREVSIEJZIDEsMiIpOwogCQkJaWYgKCFhZGRGb290ZXJUb1B1Ymxp Y2F0aW9uRGVzYygmYnVmLCBfKCJUYWJsZXM6IiksIGZhbHNlLCAmY29udCkpCiAJCQkJZ290byBl cnJvcl9yZXR1cm47CiAKQEAgLTY3NzIsNiArNjgyMiwyMyBAQCBkZXNjcmliZVB1YmxpY2F0aW9u cyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCX0KIAkJ fQorCQllbHNlCisJCXsKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJCXsKKwkJ CQkvKiBHZXQgdGhlIGV4Y2x1ZGVkIHRhYmxlcyBmb3IgdGhlIHNwZWNpZmllZCBwdWJsaWNhdGlv biAqLworCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCSAgIlNFTEVDVCBjb25j YXQoYy5yZWxuYW1lc3BhY2U6OnJlZ25hbWVzcGFjZSwgJy4nLCBjLnJlbG5hbWUpXG4iCisJCQkJ CQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjXG4iCisJCQkJCQkJCSAgIiAgICAgSk9J TiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiBjLm9pZCA9IHByLnBycmVsaWRc biIKKwkJCQkJCQkJICAiV0hFUkUgcHIucHJwdWJpZCA9ICclcydcbiIKKwkJCQkJCQkJICAiICBB TkQgcHIucHJleGNlcHRcbiIKKwkJCQkJCQkJICAiT1JERVIgQlkgMSIsIHB1YmlkKTsKKwkJCQlp ZiAoIWFkZEZvb3RlclRvUHVibGljYXRpb25EZXNjKCZidWYsIF8oIkV4Y2VwdCB0YWJsZXM6Iiks CisJCQkJCQkJCQkJCQl0cnVlLCAmY29udCkpCisJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOworCQkJ fQorCQl9CiAKIAkJcHJpbnRUYWJsZSgmY29udCwgcHNldC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0 LmxvZ2ZpbGUpOwogCQlwcmludFRhYmxlQ2xlYW51cCgmY29udCk7CmRpZmYgLS1naXQgYS9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmlu LmMKaW5kZXggOGI5MWJjMDAwNjIuLjM5NDA0ZWEwZjY5IDEwMDY0NAotLS0gYS9zcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5j CkBAIC0zNjY5LDcgKzM2NjksMTcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5f aWQsCiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnks ICJGT1IiLCAiQUxMIikpCiAJCUNPTVBMRVRFX1dJVEgoIlRBQkxFUyIsICJTRVFVRU5DRVMiKTsK IAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZP UiIsICJBTEwiLCAiVEFCTEVTIikpCi0JCUNPTVBMRVRFX1dJVEgoIldJVEggKCIpOworCQlDT01Q TEVURV9XSVRIKCJFWENFUFQgVEFCTEUgKCIsICJXSVRIICgiKTsKKwllbHNlIGlmIChNYXRjaGVz KCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVT IiwgIkVYQ0VQVCIpKQorCQlDT01QTEVURV9XSVRIKCJUQUJMRSAoIik7CisJZWxzZSBpZiAoTWF0 Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRB QkxFUyIsICJFWENFUFQiLCAiVEFCTEUiKSkKKwkJQ09NUExFVEVfV0lUSCgiKCIpOworCWVsc2Ug aWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFM TCIsICJUQUJMRVMiLCAiRVhDRVBUIiwgIlRBQkxFIiwgIigiKSkKKwkJQ09NUExFVEVfV0lUSF9T Q0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzKTsKKwllbHNlIGlmIChNYXRjaGVz KCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVT IiwgIkVYQ0VQVCIsICJUQUJMRSIsICIoIiwgTWF0Y2hBbnlOKSAmJiBlbmRzX3dpdGgocHJldl93 ZCwgJywnKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2Zf dGFibGVzKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIsICIoIiwgTWF0 Y2hBbnlOKSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEgoIiki KTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwg IkZPUiIsICJUQUJMRVMiKSkKIAkJQ09NUExFVEVfV0lUSCgiSU4gU0NIRU1BIik7CiAJZWxzZSBp ZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFC TEUiLCBNYXRjaEFueSkgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQKaW5kZXggODNmNjUwMWRmMzguLmI2ZGEyMDBmZmVlIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQKQEAgLTEyMzM2LDYgKzEyMzM2LDEzIEBACiAgIHByb25hbWUgPT4gJ3BnX3JlbGF0 aW9uX2lzX3B1Ymxpc2hhYmxlJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAogICBwcm9yZXR0eXBlID0+ ICdib29sJywgcHJvYXJndHlwZXMgPT4gJ3JlZ2NsYXNzJywKICAgcHJvc3JjID0+ICdwZ19yZWxh dGlvbl9pc19wdWJsaXNoYWJsZScgfSwKK3sgb2lkID0+ICc5MDAyJywgZGVzY3IgPT4gJ2dldCBl ZmZlY3RpdmUgdGFibGVzIGZvciBwdWJsaWNhdGlvbicsCisgIHByb25hbWUgPT4gJ3BnX2dldF9w dWJsaWNhdGlvbl9lZmZlY3RpdmVfdGFibGVzJywgIHByb3Jvd3MgPT4gJzEwMDAnLAorICBwcm9y ZXRzZXQgPT4gJ3QnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3JldHR5cGUgPT4gJ3JlY29y ZCcsIHByb2FyZ3R5cGVzID0+ICdvaWQgX3RleHQnLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne29p ZCxfdGV4dCx0ZXh0LHRleHR9JywgcHJvYXJnbW9kZXMgPT4gJ3tpLGksbyxvfScsCisgIHByb2Fy Z25hbWVzID0+ICd7cm9vdF9yZWxpZCxwdWJfbmFtZXMsc2NoZW1hbmFtZSxyZWxuYW1lfScsCisg IHByb3NyYyA9PiAncGdfZ2V0X3B1YmxpY2F0aW9uX2VmZmVjdGl2ZV90YWJsZXMnIH0sCiAKICMg cmxzCiB7IG9pZCA9PiAnMzI5OCcsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKaW5k ZXggMzY4YmVjY2E4OTkuLmQ5ODgxYTliNjEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5oCkBAIC0xNDYsMTQgKzE0NiwxNiBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblJl bEluZm8KIAlSZWxhdGlvbglyZWxhdGlvbjsKIAlOb2RlCSAgICp3aGVyZUNsYXVzZTsKIAlMaXN0 CSAgICpjb2x1bW5zOworCWJvb2wJCWV4Y2VwdDsKIH0gUHVibGljYXRpb25SZWxJbmZvOwogCiBl eHRlcm4gUHVibGljYXRpb24gKkdldFB1YmxpY2F0aW9uKE9pZCBwdWJpZCk7CiBleHRlcm4gUHVi bGljYXRpb24gKkdldFB1YmxpY2F0aW9uQnlOYW1lKGNvbnN0IGNoYXIgKnB1Ym5hbWUsIGJvb2wg bWlzc2luZ19vayk7Ci1leHRlcm4gTGlzdCAqR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJl bGlkKTsKK2V4dGVybiBib29sIEdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCwgTGlz dCAqKnB1YmlkcywgTGlzdCAqKmV4Y2VwdF9wdWJpZHMpOwogCiAvKi0tLS0tLS0tLQotICogRXhw ZWN0ZWQgdmFsdWVzIGZvciBwdWJfcGFydG9wdCBwYXJhbWV0ZXIgb2YgR2V0UHVibGljYXRpb25S ZWxhdGlvbnMoKSwKKyAqIEV4cGVjdGVkIHZhbHVlcyBmb3IgcHViX3BhcnRvcHQgcGFyYW1ldGVy IG9mCisgKiBHZXRQdWJsaWNhdGlvbkluY2x1ZGVkUmVsYXRpb25zKCksIGFuZCBHZXRBbGxQdWJs aWNhdGlvbkV4Y2x1ZGVkVGFibGVzKCksCiAgKiB3aGljaCBhbGxvd3MgY2FsbGVycyB0byBzcGVj aWZ5IHdoaWNoIHBhcnRpdGlvbnMgb2YgcGFydGl0aW9uZWQgdGFibGVzCiAgKiBtZW50aW9uZWQg aW4gdGhlIHB1YmxpY2F0aW9uIHRoZXkgZXhwZWN0IHRvIHNlZS4KICAqCkBAIC0xNjgsOSArMTcw LDEyIEBAIHR5cGVkZWYgZW51bSBQdWJsaWNhdGlvblBhcnRPcHQKIAlQVUJMSUNBVElPTl9QQVJU X0FMTCwKIH0gUHVibGljYXRpb25QYXJ0T3B0OwogCi1leHRlcm4gTGlzdCAqR2V0UHVibGljYXRp b25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOwor ZXh0ZXJuIExpc3QgKkdldFB1YmxpY2F0aW9uSW5jbHVkZWRSZWxhdGlvbnMoT2lkIHB1YmlkLAor CQkJCQkJCQkJCQkgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKK2V4dGVybiBMaXN0 ICpHZXRBbGxQdWJsaWNhdGlvbkV4Y2x1ZGVkVGFibGVzKE9pZCBwdWJpZCwKKwkJCQkJCQkJCQkJ IFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7CiBleHRlcm4gTGlzdCAqR2V0QWxsVGFi bGVzUHVibGljYXRpb25zKHZvaWQpOwotZXh0ZXJuIExpc3QgKkdldEFsbFB1YmxpY2F0aW9uUmVs YXRpb25zKGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KTsKK2V4dGVybiBMaXN0ICpHZXRB bGxQdWJsaWNhdGlvblJlbGF0aW9ucyhQdWJsaWNhdGlvbiAqcHViLCBjaGFyIHJlbGtpbmQpOwog ZXh0ZXJuIExpc3QgKkdldFB1YmxpY2F0aW9uU2NoZW1hcyhPaWQgcHViaWQpOwogZXh0ZXJuIExp c3QgKkdldFNjaGVtYVB1YmxpY2F0aW9ucyhPaWQgc2NoZW1haWQpOwogZXh0ZXJuIExpc3QgKkdl dFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwKQEAgLTE4NSw2ICsxOTAs OCBAQCBleHRlcm4gT2lkCUdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24oT2lkIHB1Ym9p ZCwgTGlzdCAqYW5jZXN0b3JzLAogCiBleHRlcm4gYm9vbCBpc19wdWJsaXNoYWJsZV9yZWxhdGlv bihSZWxhdGlvbiByZWwpOwogZXh0ZXJuIGJvb2wgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKE9pZCBw dWJpZCk7CitleHRlcm4gYm9vbCBpc19yZWxpZF9wdWJsaXNoZWRfYXNfZXhjZXB0KE9pZCByZWxp ZCwgT2lkIHB1YmlkKTsKK2V4dGVybiBib29sIHB1YmxpY2F0aW9uX2hhc19hbnlfZXhjZXB0aW9u KE9pZCBwdWJpZCk7CiBleHRlcm4gYm9vbCBjaGVja19hbmRfZmV0Y2hfY29sdW1uX2xpc3QoUHVi bGljYXRpb24gKnB1YiwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCU1lbW9yeUNvbnRleHQgbWN4dCwg Qml0bWFwc2V0ICoqY29scyk7CiBleHRlcm4gT2JqZWN0QWRkcmVzcyBwdWJsaWNhdGlvbl9hZGRf cmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmggYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oCmluZGV4IDNhODc5MGU4NDgyLi5lM2NjYmE1ZWM3 OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaAor KysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oCkBAIC0zMSw2ICsz MSw3IEBAIENBVEFMT0cocGdfcHVibGljYXRpb25fcmVsLDYxMDYsUHVibGljYXRpb25SZWxSZWxh dGlvbklkKQogCU9pZAkJCW9pZDsJCQkvKiBvaWQgKi8KIAlPaWQJCQlwcnB1YmlkIEJLSV9MT09L VVAocGdfcHVibGljYXRpb24pOyAvKiBPaWQgb2YgdGhlIHB1YmxpY2F0aW9uICovCiAJT2lkCQkJ cHJyZWxpZCBCS0lfTE9PS1VQKHBnX2NsYXNzKTsJLyogT2lkIG9mIHRoZSByZWxhdGlvbiAqLwor CWJvb2wJCXByZXhjZXB0IEJLSV9ERUZBVUxUKGYpOwkvKiBleGNsdWRlIHRoZSByZWxhdGlvbiAq LwogCiAjaWZkZWYJQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0 YXJ0IGhlcmUgKi8KIAlwZ19ub2RlX3RyZWUgcHJxdWFsOwkJLyogcXVhbGlmaWNhdGlvbnMgKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCA2NDZkNmNlZDc2My4uNTI4MjQyNWI0ZGQgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTQzMDAsNiArNDMwMCw3IEBAIHR5cGVkZWYgc3RydWN0IFB1 YmxpY2F0aW9uVGFibGUKIAlSYW5nZVZhciAgICpyZWxhdGlvbjsJCS8qIHJlbGF0aW9uIHRvIGJl IHB1Ymxpc2hlZCAqLwogCU5vZGUJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAq LwogCUxpc3QJICAgKmNvbHVtbnM7CQkvKiBMaXN0IG9mIGNvbHVtbnMgaW4gYSBwdWJsaWNhdGlv biB0YWJsZSAqLworCWJvb2wJCWV4Y2VwdDsJCQkvKiBleGNsdWRlIHRoZSByZWxhdGlvbiAqLwog fSBQdWJsaWNhdGlvblRhYmxlOwogCiAvKgpAQCAtNDMwOCw2ICs0MzA5LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUHVibGljYXRpb25UYWJsZQogdHlwZWRlZiBlbnVtIFB1YmxpY2F0aW9uT2JqU3BlY1R5 cGUKIHsKIAlQVUJMSUNBVElPTk9CSl9UQUJMRSwJCS8qIEEgdGFibGUgKi8KKwlQVUJMSUNBVElP Tk9CSl9FWENFUFRfVEFCTEUsCS8qIEEgdGFibGUgdG8gYmUgZXhjbHVkZWQgKi8KIAlQVUJMSUNB VElPTk9CSl9UQUJMRVNfSU5fU0NIRU1BLAkvKiBBbGwgdGFibGVzIGluIHNjaGVtYSAqLwogCVBV QkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9DVVJfU0NIRU1BLAkvKiBBbGwgdGFibGVzIGluIGZpcnN0 IGVsZW1lbnQgb2YKIAkJCQkJCQkJCQkJICogc2VhcmNoX3BhdGggKi8KQEAgLTQzMzYsNiArNDMz OCw3IEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uQWxsT2JqU3BlYwogewogCU5vZGVUYWcJ CXR5cGU7CiAJUHVibGljYXRpb25BbGxPYmpUeXBlIHB1Ym9ianR5cGU7CS8qIHR5cGUgb2YgdGhp cyBwdWJsaWNhdGlvbiBvYmplY3QgKi8KKwlMaXN0CSAgICpleGNlcHRfdGFibGVzOwkvKiBMaXN0 IG9mIHRhYmxlcyB0byBiZSBleGNsdWRlZCAqLwogCVBhcnNlTG9jCWxvY2F0aW9uOwkJLyogdG9r ZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIH0gUHVibGljYXRpb25BbGxPYmpTcGVj OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwu aCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IGMxMjg1 ZmRkMWJjLi5jYWI5NzUzMTI3NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2lu dGVybmFsLmgKQEAgLTIzNCw2ICsyMzQsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxBcHBs eVdvcmtlckluZm8KIAlQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7CiB9IFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvOwogCit0eXBlZGVmIHN0cnVjdCBRdWFsaWZpZWRSZWxhdGlvbk5h bWUKK3sKKwljaGFyCSAgICpzY2hlbWFuYW1lOworCWNoYXIJICAgKnJlbG5hbWU7Cit9IFF1YWxp ZmllZFJlbGF0aW9uTmFtZTsKKwogLyogTWFpbiBtZW1vcnkgY29udGV4dCBmb3IgYXBwbHkgd29y a2VyLiBQZXJtYW5lbnQgZHVyaW5nIHdvcmtlciBsaWZldGltZS4gKi8KIGV4dGVybiBQR0RMTElN UE9SVCBNZW1vcnlDb250ZXh0IEFwcGx5Q29udGV4dDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCA3ZmI0OWFhZjI5Yi4uYThlMjFlOGU5YjEgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC0yMTMsMzMgKzIxMywx MDMgQEAgTm90LW51bGwgY29uc3RyYWludHM6CiAgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg dCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAg fCBmICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKICgxIHJvdykKIAotRFJPUCBUQUJM RSB0ZXN0cHViX3RibDI7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0 ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVt YTsKLUNSRUFURSBUQUJMRSB0ZXN0cHViX3RibDMgKGEgaW50KTsKLUNSRUFURSBUQUJMRSB0ZXN0 cHViX3RibDNhIChiIHRleHQpIElOSEVSSVRTICh0ZXN0cHViX3RibDMpOwogU0VUIGNsaWVudF9t aW5fbWVzc2FnZXMgPSAnRVJST1InOwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIzIEZPUiBU QUJMRSB0ZXN0cHViX3RibDM7Ci1DUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxF IE9OTFkgdGVzdHB1Yl90YmwzOworLS0gRXhjbHVkZSB0YWJsZXMgdXNpbmcgRk9SIEFMTCBUQUJM RVMgRVhDRVBUIFRBQkxFICh0YWJsZWxpc3QpCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3JhbGx0YWJsZXNfZXhjZXB0dGFibGUgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0 cHViX3RibDEsIHRlc3RwdWJfdGJsMik7CitcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNl cHR0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUKKyAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCBm ICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg bm9uZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1 Yl90YmwxIgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwyIgorCistLSBFeGNsdWRlIHRhYmxlcyB1 c2luZyBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKHRhYmxlbGlzdCkKK0NSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEgRk9SIEFMTCBUQUJMRVMgRVhDRVBU ICh0ZXN0cHViX3RibDEpOworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUx CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMQorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAg ICAgICAgICAgICB8IGYKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibDEi CisKKy0tIENoZWNrIHRoYXQgdGhlIHRhYmxlIGRlc2NyaXB0aW9uIGxpc3RzIHdoYXQgcHVibGlj YXRpb25zIGFyZSBleGNsdWRpbmcgaXQKK1xkIHRlc3RwdWJfdGJsMQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVzdHB1Yl90YmwxIgorIENvbHVtbiB8ICBUeXBl ICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBpZCAgICAgfCBpbnRl Z2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCBuZXh0dmFsKCd0ZXN0cHViX3RibDFfaWRfc2Vx Jzo6cmVnY2xhc3MpCisgZGF0YSAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwg CitJbmRleGVzOgorICAgICJ0ZXN0cHViX3RibDFfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChp ZCkKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9mb3JhbGx0YWJsZXMiCitFeGNlcHQgUHVi bGljYXRpb25zOgorICAgICJ0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSIKKyAgICAi dGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxIgorCiBSRVNFVCBjbGllbnRfbWluX21l c3NhZ2VzOworRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVz dHB1Yl9mb3JfdGJsX3NjaGVtYSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUsIHRl c3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3Ri bF9wYXJlbnQgKGEgaW50KTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9jaGlsZCAoYiB0ZXh0 KSBJTkhFUklUUyAodGVzdHB1Yl90YmxfcGFyZW50KTsKK1NFVCBjbGllbnRfbWluX21lc3NhZ2Vz ID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1 Yl90YmxfcGFyZW50OwogXGRScCsgdGVzdHB1YjMKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzCiAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZp YSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KICByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZgogVGFibGVzOgotICAgICJwdWJsaWMudGVz dHB1Yl90YmwzIgotICAgICJwdWJsaWMudGVzdHB1Yl90YmwzYSIKKyAgICAicHVibGljLnRlc3Rw dWJfdGJsX2NoaWxkIgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfcGFyZW50IgogCitDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkgdGVzdHB1Yl90YmxfcGFyZW50Owog XGRScCsgdGVzdHB1YjQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI0CiAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KICByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUg ICAgICAgICAgICAgIHwgZgogVGFibGVzOgotICAgICJwdWJsaWMudGVzdHB1Yl90YmwzIgorICAg ICJwdWJsaWMudGVzdHB1Yl90YmxfcGFyZW50IgogCi1EUk9QIFRBQkxFIHRlc3RwdWJfdGJsMywg dGVzdHB1Yl90YmwzYTsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1YjMsIHRlc3RwdWI0OworLS0g RXhjbHVkZSBwYXJlbnQgdGFibGUsIG9taXR0aW5nIGJvdGggb2YgJ09OTFknIGFuZCAnKicKK0NS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRl c3RwdWJfdGJsX3BhcmVudCk7CitcZFJwKyB0ZXN0cHViNQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5z IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgorICAg ICJwdWJsaWMudGVzdHB1Yl90YmxfY2hpbGQiCisgICAgInB1YmxpYy50ZXN0cHViX3RibF9wYXJl bnQiCisKKy0tIEVYQ0VQVCB3aXRoICcqJzogZXhjbHVkZSB0YWJsZSBhbmQgYWxsIGRlc2NlbmRh bnRzCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjYgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRB QkxFICh0ZXN0cHViX3RibF9wYXJlbnQgKik7CitcZFJwKyB0ZXN0cHViNgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjYKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVl bmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRl ZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFi bGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfY2hpbGQiCisgICAgInB1YmxpYy50ZXN0cHVi X3RibF9wYXJlbnQiCisKKy0tIEVYQ0VQVCB3aXRoIE9OTFk6IGV4Y2x1ZGUgdGFibGUgYnV0IG5v dCBkZXNjZW5kYW50cworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI3IEZPUiBBTEwgVEFCTEVT IEVYQ0VQVCBUQUJMRSAoT05MWSB0ZXN0cHViX3RibF9wYXJlbnQpOworXGRScCsgdGVzdHB1YjcK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWI3CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwg ZgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsX3BhcmVudCIKKworUkVT RVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0RST1AgVEFCTEUgdGVzdHB1Yl90YmxfcGFyZW50LCB0 ZXN0cHViX3RibF9jaGlsZDsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1YjMsIHRlc3RwdWI0LCB0 ZXN0cHViNSwgdGVzdHB1YjYsIHRlc3RwdWI3OwogLS0tIFRlc3RzIGZvciBwdWJsaWNhdGlvbnMg d2l0aCBTRVFVRU5DRVMKIENSRUFURSBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwOwogQ1JFQVRF IFNFUVVFTkNFIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTE7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJs aWNhdGlvbi5zcWwKaW5kZXggODViMDBiZDY3YzguLmY3OTBmZTQ5NTE4IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC0xMDUsMjAgKzEwNSw0MCBAQCBTRUxFQ1QgcHVibmFt ZSwgcHViYWxsdGFibGVzIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZSA9ICd0ZXN0 cHViX2ZvcmFsbAogXGQrIHRlc3RwdWJfdGJsMgogXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXMK IAorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworLS0gRXhjbHVkZSB0YWJsZXMg dXNpbmcgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0YWJsZWxpc3QpCitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUgRk9SIEFMTCBUQUJMRVMg RVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibDEsIHRlc3RwdWJfdGJsMik7CitcZFJwKyB0ZXN0cHVi X2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQorLS0gRXhjbHVkZSB0YWJsZXMgdXNpbmcgRk9SIEFM TCBUQUJMRVMgRVhDRVBUICh0YWJsZWxpc3QpCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAodGVzdHB1Yl90 YmwxKTsKK1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMQorLS0gQ2hlY2sg dGhhdCB0aGUgdGFibGUgZGVzY3JpcHRpb24gbGlzdHMgd2hhdCBwdWJsaWNhdGlvbnMgYXJlIGV4 Y2x1ZGluZyBpdAorXGQgdGVzdHB1Yl90YmwxCisKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7 CiBEUk9QIFRBQkxFIHRlc3RwdWJfdGJsMjsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3Jh bGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0ZXN0cHViX2Zv cl90Ymxfc2NoZW1hOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcywgdGVz dHB1Yl9mb3J0YWJsZSwgdGVzdHB1Yl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEs IHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19l eGNlcHR0YWJsZTE7CiAKLUNSRUFURSBUQUJMRSB0ZXN0cHViX3RibDMgKGEgaW50KTsKLUNSRUFU RSBUQUJMRSB0ZXN0cHViX3RibDNhIChiIHRleHQpIElOSEVSSVRTICh0ZXN0cHViX3RibDMpOwor Q1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudCAoYSBpbnQpOworQ1JFQVRFIFRBQkxFIHRl c3RwdWJfdGJsX2NoaWxkIChiIHRleHQpIElOSEVSSVRTICh0ZXN0cHViX3RibF9wYXJlbnQpOwog U0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RwdWIzIEZPUiBUQUJMRSB0ZXN0cHViX3RibDM7Ci1DUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 YjQgRk9SIFRBQkxFIE9OTFkgdGVzdHB1Yl90YmwzOwotUkVTRVQgY2xpZW50X21pbl9tZXNzYWdl czsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1Yl90YmxfcGFy ZW50OwogXGRScCsgdGVzdHB1YjMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNCBGT1IgVEFC TEUgT05MWSB0ZXN0cHViX3RibF9wYXJlbnQ7CiBcZFJwKyB0ZXN0cHViNAorLS0gRXhjbHVkZSBw YXJlbnQgdGFibGUsIG9taXR0aW5nIGJvdGggb2YgJ09OTFknIGFuZCAnKicKK0NSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViNSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJs X3BhcmVudCk7CitcZFJwKyB0ZXN0cHViNQorLS0gRVhDRVBUIHdpdGggJyonOiBleGNsdWRlIHRh YmxlIGFuZCBhbGwgZGVzY2VuZGFudHMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBGT1Ig QUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsX3BhcmVudCAqKTsKK1xkUnArIHRl c3RwdWI2CistLSBFWENFUFQgd2l0aCBPTkxZOiBleGNsdWRlIHRhYmxlIGJ1dCBub3QgZGVzY2Vu ZGFudHMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNyBGT1IgQUxMIFRBQkxFUyBFWENFUFQg VEFCTEUgKE9OTFkgdGVzdHB1Yl90YmxfcGFyZW50KTsKK1xkUnArIHRlc3RwdWI3CiAKLURST1Ag VEFCTEUgdGVzdHB1Yl90YmwzLCB0ZXN0cHViX3RibDNhOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0 cHViMywgdGVzdHB1YjQ7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworRFJPUCBUQUJMRSB0 ZXN0cHViX3RibF9wYXJlbnQsIHRlc3RwdWJfdGJsX2NoaWxkOworRFJPUCBQVUJMSUNBVElPTiB0 ZXN0cHViMywgdGVzdHB1YjQsIHRlc3RwdWI1LCB0ZXN0cHViNiwgdGVzdHB1Yjc7CiAKIC0tLSBU ZXN0cyBmb3IgcHVibGljYXRpb25zIHdpdGggU0VRVUVOQ0VTCiBDUkVBVEUgU0VRVUVOQ0UgcmVn cmVzc19wdWJfc2VxMDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5i dWlsZCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAppbmRleCBhNGM3ZGJhZmY1 OS4uMDcyODJhYTNjMTggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5i dWlsZAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKQEAgLTQ2LDYgKzQ2 LDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDM0X3RlbXBvcmFsLnBsJywKICAgICAgICd0LzAz NV9jb25mbGljdHMucGwnLAogICAgICAgJ3QvMDM2X3NlcXVlbmNlcy5wbCcsCisgICAgICAndC8w MzdfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsJywKICAgICAgICd0LzEwMF9idWdzLnBsJywK ICAgICBdLAogICB9LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3Jl cF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19y ZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmY5NDM2YzllNTBlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbApAQCAtMCwwICsxLDMxNCBA QAorCisjIENvcHlyaWdodCAoYykgMjAyMS0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorCisjIExvZ2ljYWwgcmVwbGljYXRpb24gdGVzdHMgZm9yIEVYQ0VQVCBUQUJM RSBwdWJsaWNhdGlvbnMKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0 OjpNb3JlOworCisjIEluaXRpYWxpemUgcHVibGlzaGVyIG5vZGUKK215ICRub2RlX3B1Ymxpc2hl ciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9kZV9w dWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfcHVi bGlzaGVyLT5zdGFydDsKKworIyBJbml0aWFsaXplIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVf c3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicp OworJG5vZGVfc3Vic2NyaWJlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7 Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorIyBFWENFUFQgVEFCTEUgdGVzdCBjYXNlcyBmb3Igbm9ybWFs IHRhYmxlcworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor IyBDcmVhdGUgc2NoZW1hcyBhbmQgdGFibGVzIG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFNDSEVNQSBzY2gxOworCUNS RUFURSBUQUJMRSBzY2gxLnRhYjEgQVMgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDEwKSBBUyBh OworKSk7CisKKyMgQ3JlYXRlIHNjaGVtYXMgYW5kIHRhYmxlcyBvbiBzdWJzY3JpYmVyCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFNDSEVN QSBzY2gxOworCUNSRUFURSBUQUJMRSBzY2gxLnRhYjEgKGEgaW50KTsKKykpOworCisjIFNldHVw IGxvZ2ljYWwgcmVwbGljYXRpb24sIGFuZCBjcmVhdGUgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNs b3QgdG8gaGVscCB3aXRoCisjIGxhdGVyIHRlc3RzLgorbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0g JG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9w dWJfc2NoZW1hIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2NoMS50YWIxKSIKKyk7CisK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19jcmVh dGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCd0ZXN0X3Nsb3QnLCAncGdvdXRwdXQnKSIpOwor Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlND UklQVElPTiB0YXBfc3ViX3NjaGVtYSBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBV QkxJQ0FUSU9OIHRhcF9wdWJfc2NoZW1hIgorKTsKKworIyBXYWl0IGZvciBpbml0aWFsIHRhYmxl IHN5bmMgdG8gZmluaXNoCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25f c3luYygkbm9kZV9wdWJsaXNoZXIsCisJJ3RhcF9zdWJfc2NoZW1hJyk7CisKKyMgQ2hlY2sgdGhl IHRhYmxlIGRhdGEgZG9lcyBub3Qgc3luYyBmb3IgZXhjbHVkZWQgdGFibGUKK215ICRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50 KCopLCBtaW4oYSksIG1heChhKSBGUk9NIHNjaDEudGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMHx8 KSwKKwknY2hlY2sgdGhlcmUgaXMgbm8gaW5pdGlhbCBkYXRhIGNvcGllZCBmb3IgdGhlIGV4Y2x1 ZGVkIHRhYmxlJyk7CisKKyMgSW5zZXJ0IHNvbWUgZGF0YSB0byB0aGUgZXhjbHVkZWQgdGFibGUu Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyBz Y2gxLnRhYjEgVkFMVUVTKGdlbmVyYXRlX3NlcmllcygxMSwyMCkpIik7CisKKyMgVmVyaWZ5IHRo YXQgZGF0YSBpbnNlcnRlZCB0byBleGNsdWRlZCB0YWJsZSBpcyBub3QgcHVibGlzaGVkLgorJHJl c3VsdCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBj b3VudCgqKSA9IDAgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2JpbmFyeV9jaGFuZ2VzKCd0ZXN0 X3Nsb3QnLCBOVUxMLCBOVUxMLCAncHJvdG9fdmVyc2lvbicsICcxJywgJ3B1YmxpY2F0aW9uX25h bWVzJywgJ3RhcF9zdWJfc2NoZW1hJykiCispOworaXMoJHJlc3VsdCwgcXEodCksICdjaGVjayBu byBjaGFuZ2VzIGZvciBleGNsdWRlZCB0YWJsZSBpbiByZXBsaWNhdGlvbiBzbG90Jyk7CisKKyMg VmVyaWZ5IHRoYXQgZGF0YSBpbnNlcnRlZCB0byB0aGUgZXhjbHVkZWQgdGFibGUgaXMgbm90IHJl cGxpY2F0ZWQuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfc2No ZW1hJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIGNvdW50KCopLCBtaW4oYSksIG1heChhKSBGUk9NIHNjaDEudGFiMSIpOwor aXMoJHJlc3VsdCwgcXEoMHx8KSwgJ2NoZWNrIHJlcGxpY2F0ZWQgaW5zZXJ0cyBvbiBzdWJzY3Jp YmVyJyk7CisKKyMgY2xlYW51cAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJEUk9QIFNVQlNDUklQVElPTiB0YXBfc3ViX3NjaGVtYSIpOworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJRFJPUCBQVUJMSUNBVElPTiB0YXBfcHVi X3NjaGVtYTsKKwlUUlVOQ0FURSBUQUJMRSBzY2gxLnRhYjE7CispKTsKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgc2NoMS50YWIxIik7CisK KyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgRVhDRVBU IFRBQkxFIHRlc3QgY2FzZXMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcworIyBDaGVjayBiZWhhdmlv ciBvZiBFWENFUFQgVEFCTEUgd2l0aCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCBvbiBhCisj IHBhcnRpdGlvbmVkIHRhYmxlIGFuZCBpdHMgcGFydGl0aW9ucy4KKyMgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgU2V0dXAgcGFydGl0aW9uZWQgdGFibGUg YW5kIHBhcnRpdGlvbnMgb24gdGhlIHB1Ymxpc2hlciB0aGF0IG1hcCB0byBub3JtYWwKKyMgdGFi bGVzIG9uIHRoZSBzdWJzY3JpYmVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9z dGdyZXMnLCBxcSgKKwlDUkVBVEUgVEFCTEUgc2NoMS50MShhIGludCkgUEFSVElUSU9OIEJZIFJB TkdFKGEpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQxIFBBUlRJVElPTiBPRiBzY2gxLnQxIEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwMCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDIoYSBp bnQpIFBBUlRJVElPTiBCWSBSQU5HRShhKTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0Ml8xIFBB UlRJVElPTiBPRiBzY2gxLnBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoMTAxKSBUTyAoMTUwKTsKKwlD UkVBVEUgVEFCTEUgc2NoMS5wYXJ0Ml8yIFBBUlRJVElPTiBPRiBzY2gxLnBhcnQyIEZPUiBWQUxV RVMgRlJPTSAoMTUxKSBUTyAoMjAwKTsKKwlBTFRFUiBUQUJMRSBzY2gxLnQxIEFUVEFDSCBQQVJU SVRJT04gc2NoMS5wYXJ0MiBGT1IgVkFMVUVTIEZST00gKDEwMSkgVE8gKDIwMCk7CispKTsKKwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBU QUJMRSBzY2gxLnQxKGEgaW50KTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0MShhIGludCk7CisJ Q1JFQVRFIFRBQkxFIHNjaDEucGFydDIoYSBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQy XzEoYSBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQyXzIoYSBpbnQpOworKSk7CisKKyMg RXhjbHVkaW5nIHRoZSByb290IHBhcnRpdGlvbmVkIHRhYmxlIGV4Y2x1ZGVzIGFsbCBpdHMgcGFy dGl0aW9ucyBhcyB3ZWxsIHdoZW4KKyMgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxz ZS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFU RSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChz Y2gxLnQxKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKTsKKwlJTlNF UlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAoMSksICgxMDEpLCAoMTUxKTsKKykpOworJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFw X3N1Yl9wYXJ0IENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFw X3B1Yl9wYXJ0IgorKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9z eW5jKCRub2RlX3B1Ymxpc2hlciwgJ3RhcF9zdWJfcGFydCcpOworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHNsb3RfbmFtZSBGUk9NIHBnX3JlcGxpY2F0 aW9uX3Nsb3RfYWR2YW5jZSgndGVzdF9zbG90JywgcGdfY3VycmVudF93YWxfbHNuKCkpOyIKKyk7 Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyBz Y2gxLnQxIFZBTFVFUyAoMiksICgxMDIpLCAoMTUyKSIpOworCisjIFZlcmlmeSB0aGF0IGRhdGEg aW5zZXJ0ZWQgdG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGlzIG5vdCBwdWJsaXNoZWQgd2hlbiBp dCBpcworIyBleGNsdWRlZCB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZS4K KyRyZXN1bHQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxF Q1QgY291bnQoKikgPSAwIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9iaW5hcnlfY2hhbmdlcygn dGVzdF9zbG90JywgTlVMTCwgTlVMTCwgJ3Byb3RvX3ZlcnNpb24nLCAnMScsICdwdWJsaWNhdGlv bl9uYW1lcycsICd0YXBfcHViX3BhcnQnKSIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJ3RhcF9zdWJfcGFydCcpOworCisjIENoZWNrIHRoYXQgbm8gcm93cyBhcmUgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEudDEiKTsKK2lzKCRyZXN1bHQsIHFx KCksICdjaGVjayByb3dzIG9uIHJvb3QgdGFibGUnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQxIik7 CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiB0YWJsZSBzY2gxLnBhcnQxJyk7CisK KyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCAqIEZST00gc2NoMS5wYXJ0MiIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24g dGFibGUgc2NoMS5wYXJ0MicpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDJfMSIpOworaXMoJHJl c3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0Ml8xJyk7CisKKyRyZXN1 bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAq IEZST00gc2NoMS5wYXJ0Ml8yIik7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiB0 YWJsZSBzY2gxLnBhcnQyXzInKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJEUk9QIFNVQlNDUklQVElPTiB0YXBfc3ViX3BhcnQiKTsKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydDsi KTsKKworIyBFeGNsdWRpbmcgdGhlIHJvb3QgcGFydGl0aW9uZWQgdGFibGUgZXhjbHVkZXMgYWxs IGl0cyBwYXJ0aXRpb25zIGFzIHdlbGwgd2hlbgorIyBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9v dCA9IHRydWUuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgK KwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBU QUJMRSAoc2NoMS50MSkgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlKTsK KykpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBT VUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0IENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicg UFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0IgorKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3RhcF9zdWJfcGFydCcpOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHNsb3RfbmFtZSBG Uk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RfYWR2YW5jZSgndGVzdF9zbG90JywgcGdfY3VycmVudF93 YWxfbHNuKCkpOyIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAoMyksICgxMDMpLCAoMTUzKTsiKTsKKworIyBW ZXJpZnkgdGhhdCBkYXRhIGluc2VydGVkIHRvIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBpcyBub3Qg cHVibGlzaGVkIHdoZW4gaXQgaXMKKyMgZXhjbHVkZWQgd2l0aCBwdWJsaXNoX3ZpYV9wYXJ0aXRp b25fcm9vdCA9IHRydWUuCiskcmVzdWx0ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopID0gMCBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRf YmluYXJ5X2NoYW5nZXMoJ3Rlc3Rfc2xvdCcsIE5VTEwsIE5VTEwsICdwcm90b192ZXJzaW9uJywg JzEnLCAncHVibGljYXRpb25fbmFtZXMnLCAndGFwX3B1Yl9wYXJ0JykiCispOworJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3BhcnQnKTsKKworIyBDaGVjayB0aGF0 IG5vIHJvd3MgYXJlIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcgorJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnQxIik7 CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiByb290IHRhYmxlJyk7CisKKyRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZS T00gc2NoMS5wYXJ0MSIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUg c2NoMS5wYXJ0MScpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDIiKTsKK2lzKCRyZXN1bHQsIHFxKCks ICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFydDInKTsKKworJHJlc3VsdCA9CisgICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBh cnQyXzEiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFy dDJfMScpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDJfMiIpOworaXMoJHJlc3VsdCwgcXEoKSwg J2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0Ml8yJyk7CisKKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0Iik7 Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBQVUJMSUNBVElP TiB0YXBfcHViX3BhcnQ7Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1Qgc2xvdF9uYW1lIEZST00gcGdfcmVwbGljYXRpb25fc2xvdF9hZHZhbmNlKCd0 ZXN0X3Nsb3QnLCBwZ19jdXJyZW50X3dhbF9sc24oKSk7IgorKTsKKworIyBFeGNsdWRpbmcgb25l IG9mIHRoZSBjaGlsZCBwYXJ0aXRpb24gdGFibGUgd2l0aAorIyBwdWJsaXNoX3ZpYV9wYXJ0aXRp b25fcm9vdCA9IHRydWUgc2hvdWxkIHJlcGxpY2F0ZSB0aGUgb3RoZXIgcGFydGl0aW9ucy4KKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCVRSVU5DQVRFIHNj aDEudDE7CisJSU5TRVJUIElOVE8gc2NoMS50MSBWQUxVRVMgKDMpLCAoMTAzKSwgKDE1Myk7CisJ Q1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFC TEUgKHNjaDEucGFydDIpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7 CispKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlU UlVOQ0FURSBzY2gxLnQxOworCUNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0IENPTk5F Q1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0OworKSk7 Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJs aXNoZXIsICd0YXBfc3ViX3BhcnQnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBzbG90X25hbWUgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90X2FkdmFu Y2UoJ3Rlc3Rfc2xvdCcsIHBnX2N1cnJlbnRfd2FsX2xzbigpKTsiCispOworCisjIFZlcmlmeSB0 aGF0IGRhdGEgaW5zZXJ0ZWQgdG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGlzIG5vdCBwdWJsaXNo ZWQgd2hlbiBpdCBpcworIyBleGNsdWRlZCB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 ID0gdHJ1ZS4KKyRyZXN1bHQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgY291bnQoKikgPSAwIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9iaW5hcnlf Y2hhbmdlcygndGVzdF9zbG90JywgTlVMTCwgTlVMTCwgJ3Byb3RvX3ZlcnNpb24nLCAnMScsICdw dWJsaWNhdGlvbl9uYW1lcycsICd0YXBfcHViX3BhcnQnKSIKKyk7Ciskbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfcGFydCcpOworCisjIENoZWNrIHRoYXQgdGFibGUg ZGF0YSAxMDMgYW5kIDE1MyB3aGljaCBpcyBwcmVzZW50IGluIHNjaDEuc2NoMS5wYXJ0MiBzaG91 bGQKKyMgbm90IGJlIHJlcGxpY2F0ZWQuCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEudDEiKTsKK2lzKCRyZXN1bHQs IHFxKDMpLCAnY2hlY2sgcm93cyBvbiByb290IHRhYmxlJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0 MSIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0MScp OworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgKiBGUk9NIHNjaDEucGFydDIiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dz IG9uIHRhYmxlIHNjaDEucGFydDInKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQyXzEiKTsKK2lz KCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFydDJfMScpOworCisk cmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgKiBGUk9NIHNjaDEucGFydDJfMiIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mg b24gdGFibGUgc2NoMS5wYXJ0Ml8yJyk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiRFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0Iik7Ciskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViX3Bh cnQ7Iik7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KyMgVGVzdCB3aGVuIGEgc3Vic2NyaXB0aW9uIGlzIHN1YnNjcmliaW5nIHRvIG11bHRpcGxlIHB1 YmxpY2F0aW9ucworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorIyBNdWx0aXBsZSBwdWJsaWNhdGlvbnMgd2l0aCBFWENFUFQgbGlzdHMgc2hvdWxkIHRocm93 IGFuIGVycm9yCitteSAoJHN0ZG91dCwgJHN0ZGVycik7CisKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViMSBG T1IgQUxMIFRBQkxFUyBFWENFUFQgKHNjaDEudGFiMSk7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRh cF9wdWIyIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoc2NoMS50MSk7CispKTsKKworKCRyZXN1bHQs ICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGVfc3Vic2NyaWJlci0+cHNxbCgncG9zdGdyZXMnLAor CSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25u c3RyJyBQVUJMSUNBVElPTiB0YXBfcHViMSwgdGFwX3B1YjIiCispOworbGlrZSgKKwkkc3RkZXJy LAorCXFyL0VSUk9SOiAgcHVibGljYXRpb25zICJ0YXBfcHViMSIsICJ0YXBfcHViMiIgYXJlIGRl ZmluZWQgd2l0aCBFWENFUFQgVEFCTEUvLAorCSdzdWJzY3JpcHRpb24gd2l0aCBtdWx0aXBsZSBF WENFUFQgVEFCTEUgcHVibGljYXRpb24nKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gdGFwX3B1YjInKTsKKworIyBBIHRhYmxlIGlz IGV4Y2x1ZGUgdXNpbmcgQUxMIFRBQkxFIC4uIEVYQ0VQVCBUQUJMRSBidXQgaW5jbHVkZWQgdXNp bmcgRk9SCisjIFRBQkxFCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LCBxcSgKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YjIgRk9SIFRBQkxFIHNjaDEudGFiMTsK KwlJTlNFUlQgSU5UTyBzY2gxLnRhYjEgVkFMVUVTKDEpOworKSk7Ciskbm9kZV9zdWJzY3JpYmVy LT5wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNU SU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWIxLCB0YXBfcHViMiIK Kyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9w dWJsaXNoZXIsICd0YXBfc3ViJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHFxKElOU0VSVCBJTlRPIHNjaDEudGFiMSBWQUxVRVMoMikpKTsKKyRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1YicpOworCiskcmVzdWx0ID0gJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUICogRlJPTSBzY2gxLnRhYjEg T1JERVIgQlkgYSIpOworaXMoICRyZXN1bHQsIHFxKDEKKzIpLAorCSJjaGVjayByZXBsaWNhdGlv biBvZiB0YWJsZSBleGNsdWRlZCBhIHB1YmxpY2F0aW9uIGFuZCBpbmNsdWRlZCBieSBhbm90aGVy IgorKTsKKworIyBBbHRlciBzdWJzY3JpcHRpb24gcmVmcmVzaCB0aHJvd3MgZXJyb3Igd2hlbiBz dWJzY3JpcHRpb24gaGFzIG11bHRpcGxlCisjIHB1YmxpY2F0aW9ucyB3aXRoIEVYQ0VQVCBUQUJM RQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJRFJPUCBQ VUJMSUNBVElPTiB0YXBfcHViMjsKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YjIgRk9SIEFM TCBUQUJMRVMgRVhDRVBUIChzY2gxLnQxKTsKKykpOworCisoJHJlc3VsdCwgJHN0ZG91dCwgJHN0 ZGVycikgPSAkbm9kZV9zdWJzY3JpYmVyLT5wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlND UklQVElPTiB0YXBfc3ViIFJFRlJFU0ggUFVCTElDQVRJT04iKTsKK2xpa2UoCisJJHN0ZGVyciwK Kwlxci9FUlJPUjogIHB1YmxpY2F0aW9ucyAidGFwX3B1YjEiLCAidGFwX3B1YjIiIGFyZSBkZWZp bmVkIHdpdGggRVhDRVBUIFRBQkxFLywKKwknc3Vic2NyaXB0aW9uIHdpdGggbXVsdGlwbGUgRVhD RVBUIFRBQkxFIHB1YmxpY2F0aW9uJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c3RvcCgnZmFzdCcp OworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMzljNzY2 OTFjODYuLjZhOGMxYWUxMjFmIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjQyMSw2 ICsyNDIxLDcgQEAgUVROb2RlCiBRVUVSWVRZUEUKIFF1YWxDb3N0CiBRdWFsSXRlbQorUXVhbGlm aWVkUmVsYXRpb25OYW1lCiBRdWVyeQogUXVlcnlDb21wbGV0aW9uCiBRdWVyeURlc2MKLS0gCjIu MzQuMQoK --000000000000ce9078064a9b044c--