Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jJaG8-0003GF-JD for pgadmin-hackers@arkaria.postgresql.org; Wed, 01 Apr 2020 10:06:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jJaG5-0003Hj-B3 for pgadmin-hackers@arkaria.postgresql.org; Wed, 01 Apr 2020 10:06:05 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jJaG4-0003Hb-WF for pgadmin-hackers@lists.postgresql.org; Wed, 01 Apr 2020 10:06:05 +0000 Received: from mail-ed1-x541.google.com ([2a00:1450:4864:20::541]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jJaG1-00068l-Bp for pgadmin-hackers@postgresql.org; Wed, 01 Apr 2020 10:06:04 +0000 Received: by mail-ed1-x541.google.com with SMTP id a20so28988554edj.2 for ; Wed, 01 Apr 2020 03:06:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=UnwqZgzGYr9AOumo6RolGvw7zOBdA+/9au98ZlTXhsA=; b=UMZuXnmcf6lwpd2Df5GzxUAPBv0mun94sZO6xwr+lk/jLSy32zraGqUIB+KZHcRpEW DS5F2O1AKlRMIlwl9k2AYE1f3WU9t/BjnikgFWjobKFN/XcVD5v0SC5bm9Mc1C8PJJi6 CukAWliYC2mtoRFjA3Opf0A4IOahlHNoQcho9ckUSkdLdeiUgn1kdhHLxq8515G5M4or G1IaTPd6VlrZ+oy1x4/XP5G97EEs61inmXhmaKd9/U/VC+z2qA3bG91hpACBxWe9NB0m pqfqfZZlDvac5sHC1lDtmbrcgvYqvvDDLUuSKIQzXbuhx3nw+yfb0J1HInaEdsu0zGfC vq7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=UnwqZgzGYr9AOumo6RolGvw7zOBdA+/9au98ZlTXhsA=; b=PsZDwH9Z2SD8iMSu7dA0ULvtoex6cxR59d7CJhkBQE3Je5ELNsZSEisfHrOA2NLXd8 wlPhVYDZjH0zs9bU0F+vdz0Olm5OEbssSFp/DbEtkpgbygVgy8/C0VZgAifOYgV678lt zrezUGLEifVePbxrO+ftU/y0t51eoooMfsJxxSTGvPypeAStR92UNNsEVIqkOvjDIxd8 8CAjsy8DY9Rn2vGUvPk/En7qkgvaCPwjAeU24kg4tooKBmnvqTV3Wpy5BoHqnNTgxNnZ JkK28/Agc2HYD9Df9XVdRdb15SjJsEpJvZRZZpvGmpi7sVdRBF3HJDuiwqN4IXiwHUM4 5C4g== X-Gm-Message-State: ANhLgQ1rIQfNVQU2JsmJBzY+ZW9mnVJNkCq6LVJNdMlHhlKbbbWpFeZi c3U9nXuvHtBL5Vclp62f5P8d/KilmNMu5Jfg00af/jrPi/necD6XI+EvF51HVNOt/O4MtLp8ae3 Ok9bUnXji85r30Nq7s609x/dvkwqxz2Z6l8HTPZSUE3qPPBQFGRo7t+hsgXMF5JwLWXk0RZtF50 ZzZtUMYLwJM8U9rzpNdSgARbpjUYwRLqQTLJm/wxgty7ZMKzk7z+E= X-Google-Smtp-Source: ADFU+vtRLK4fHxfg3iK2KK36OPUWHxmt0FtSNdQBE9xcqaVKRO/hPBao0cF1B7HydvwmkrSnFlZCXHQO57eicMMSVuQ= X-Received: by 2002:a17:906:f187:: with SMTP id gs7mr19826125ejb.138.1585735557856; Wed, 01 Apr 2020 03:05:57 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Aditya Toshniwal Date: Wed, 1 Apr 2020 15:35:21 +0530 Message-ID: Subject: Re: [pgAdmin][RM5181] Add support for parameters toast_tuple_target and parallel_workers of table To: Akshay Joshi Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000a284ad05a237d41e" X-CLOUD-SEC-AV-Info: edb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000a284ad05a237d41e Content-Type: multipart/alternative; boundary="000000000000a284ab05a237d41c" --000000000000a284ab05a237d41c Content-Type: text/plain; charset="UTF-8" Hi Akshay, On Wed, Apr 1, 2020 at 2:51 PM Akshay Joshi wrote: > Hi Aditya > > API/RESQL test cases are failing for EPAS/PG 9.6 and maybe above. Please > fix and resend the patch. > The SQL is corrected for 9.6 versions. Others seems to be working fine. Attached is the updated patch. Please review. > > On Mon, Mar 30, 2020 at 7:47 PM Aditya Toshniwal < > aditya.toshniwal@enterprisedb.com> wrote: > >> Hi Hackers, >> >> Attached is a patch to add support for parameters toast_tuple_target (PG >> v11+) and parallel_workers(PG 9.6+) of table. Refer - >> https://www.postgresql.org/docs/11/sql-createtable.html#SQL-CREATETABLE-STORAGE-PARAMETERS >> . >> >> Both the parameters are added in the advanced tab of table dialog. >> >> The patch also fixes a related issue - RM5180, where autovacuum_enabled >> parameter is added automatically in the RE-SQL when table has been created >> with WITH parameter. >> >> Please review. >> >> -- >> Thanks and Regards, >> Aditya Toshniwal >> pgAdmin Hacker | Sr. Software Engineer | EnterpriseDB India | Pune >> "Don't Complain about Heat, Plant a TREE" >> > > > -- > *Thanks & Regards* > *Akshay Joshi* > > *Sr. Software Architect* > *EnterpriseDB Software India Private Limited* > *Mobile: +91 976-788-8246* > -- Thanks and Regards, Aditya Toshniwal pgAdmin Hacker | Sr. Software Engineer | EnterpriseDB India | Pune "Don't Complain about Heat, Plant a TREE" --000000000000a284ab05a237d41c Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Akshay,

On Wed, Apr 1, 2020 at 2:5= 1 PM Akshay Joshi <aksh= ay.joshi@enterprisedb.com> wrote:
Hi Aditya

API/= RESQL test cases are failing for EPAS/PG 9.6 and maybe above. Please fix an= d resend the patch.
The SQL is corrected for 9.6 v= ersions. Others seems to be working fine. Attached is the updated patch.
Please review.=C2=A0

On Mon, Mar 30, 2020 at 7:47 PM Aditya Toshniwal <aditya.tosh= niwal@enterprisedb.com> wrote:
Hi Hackers,
Attached is a=C2=A0patch to= add support for parameters toast_tuple_target (PG v11+) and parallel_worke= rs(PG 9.6+) of table. Refer -=C2=A0https://www.postgresql.org/docs/11/sql-createtable.html#SQL-CREATETAB= LE-STORAGE-PARAMETERS.

Both the param= eters are added in the advanced tab of table dialog.

The patch also fixes a related issue - RM5180, where=C2=A0autov= acuum_enabled parameter is added automatically in the RE-SQL when table has= been created with WITH parameter.

Please= review.

--
Thanks and Regards,
A= ditya Toshniwal
= pgAdmin Hacker | Sr. Software Engineer |=C2=A0EnterpriseDB India = |=C2=A0Pune
&qu= ot;Don't Complain about Heat, Plant a TREE"


--
Thanks & Regards
Akshay Joshi
<= font color=3D"#3333FF">Sr. Software Architect=
<= font color=3D"#000000" face=3D"arial, sans-serif">EnterpriseDB Software = India Private Limited
Mobile: +91 976-788-8246=


--
Thanks and Regards,Aditya Toshniwal
pgAdmin Hacker | Sr. S= oftware Engineer |=C2=A0EnterpriseDB India |=C2=A0Pune
"Don't Complain about Heat= , Plant a TREE"
=
--000000000000a284ab05a237d41c-- --000000000000a284ad05a237d41e Content-Type: application/octet-stream; name="RM5181_5180_v2.patch" Content-Disposition: attachment; filename="RM5181_5180_v2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k8h5zgm80 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvdGFibGUuanMgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3Rh dGljL2pzL3RhYmxlLmpzCmluZGV4IDYxNzYxNzk0Zi4uZjFkZDI3ZGM1IDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvc3RhdGljL2pzL3RhYmxlLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvdGFi bGUuanMKQEAgLTI5MSw2ICsyOTEsOCBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScsIFsK ICAgICAgICAgICB0cmlnZ2VyY291bnQ6IHVuZGVmaW5lZCwKICAgICAgICAgICByZWxwZXJzaXN0 ZW5jZTogdW5kZWZpbmVkLAogICAgICAgICAgIGZpbGxmYWN0b3I6IHVuZGVmaW5lZCwKKyAgICAg ICAgICB0b2FzdF90dXBsZV90YXJnZXQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICBwYXJhbGxlbF93 b3JrZXJzOiB1bmRlZmluZWQsCiAgICAgICAgICAgcmVsb2Z0eXBlOiB1bmRlZmluZWQsCiAgICAg ICAgICAgdHlwbmFtZTogdW5kZWZpbmVkLAogICAgICAgICAgIGxhYmVsczogdW5kZWZpbmVkLApA QCAtNzc5LDYgKzc4MSwyNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScsIFsKICAgICAg ICAgICAgIHJldHVybiBtLmluU2NoZW1hKCk7CiAgICAgICAgICAgfSwKICAgICAgICAgfSx7Cisg ICAgICAgICAgaWQ6ICd0b2FzdF90dXBsZV90YXJnZXQnLCBsYWJlbDogZ2V0dGV4dCgnVG9hc3Qg dHVwbGUgdGFyZ2V0JyksIHR5cGU6ICdpbnQnLAorICAgICAgICAgIG1vZGU6IFsnY3JlYXRlJywg J2VkaXQnXSwgbWluOiAxMjgsIG1pbl92ZXJzaW9uOiAxMTAwMDAsCisgICAgICAgICAgZ3JvdXA6 IGdldHRleHQoJ2FkdmFuY2VkJyksCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgICAgIGlmKG0uZ2V0KCdpc19wYXJ0aXRpb25lZCcpKSB7CisgICAgICAgICAgICAg IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG0uaW5TY2hl bWEoKTsKKyAgICAgICAgICB9LAorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3BhcmFsbGVs X3dvcmtlcnMnLCBsYWJlbDogZ2V0dGV4dCgnUGFyYWxsZWwgd29ya2VycycpLCB0eXBlOiAnaW50 JywKKyAgICAgICAgICBtb2RlOiBbJ2NyZWF0ZScsICdlZGl0J10sIGdyb3VwOiBnZXR0ZXh0KCdh ZHZhbmNlZCcpLCBtaW5fdmVyc2lvbjogOTA2MDAsCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0 aW9uKG0pIHsKKyAgICAgICAgICAgIGlmKG0uZ2V0KCdpc19wYXJ0aXRpb25lZCcpKSB7CisgICAg ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu IG0uaW5TY2hlbWEoKTsKKyAgICAgICAgICB9LAorICAgICAgICB9LAorICAgICAgICB7CiAgICAg ICAgICAgaWQ6ICdyZWxoYXNvaWRzJywgbGFiZWw6IGdldHRleHQoJ0hhcyBPSURzPycpLCBjZWxs OiAnc3dpdGNoJywKICAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydwcm9wZXJ0aWVz JywgJ2NyZWF0ZScsICdlZGl0J10sCiAgICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ2FkdmFuY2Vk JyksCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlcy9zcWwvMTBfcGx1cy9j cmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZXMvc3FsLzEwX3BsdXMvY3JlYXRl LnNxbAppbmRleCA0NzhlNmQ3NTIuLmRhZmM4N2FhMiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy90YWJsZXMvc3FsLzEwX3BsdXMvY3JlYXRlLnNxbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL3RhYmxlcy9zcWwvMTBfcGx1cy9jcmVhdGUuc3FsCkBAIC03Nyw3ICs3Nyw4IEBAIENB Q0hFIHt7Yy5zZXFjYWNoZXxpbnR9fSB7JSBlbmRpZiAlfQogeyUgZW5kaWYgJX0KIFdJVEggKAog ICAgIE9JRFMgPSB7JSBpZiBkYXRhLnJlbGhhc29pZHMgJX1UUlVFeyUgZWxzZSAlfUZBTFNFeyUg ZW5kaWYgJX17JSBpZiBkYXRhLmZpbGxmYWN0b3IgJX0sCi0gICAgRklMTEZBQ1RPUiA9IHt7IGRh dGEuZmlsbGZhY3RvciB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5hdXRvdmFjdXVtX2N1c3RvbSAl fSwKKyAgICBGSUxMRkFDVE9SID0ge3sgZGF0YS5maWxsZmFjdG9yIH19eyUgZW5kaWYgJX17JSBp ZiBkYXRhLnBhcmFsbGVsX3dvcmtlcnMgaXMgZGVmaW5lZCBhbmQgZGF0YS5wYXJhbGxlbF93b3Jr ZXJzICE9ICcnIGFuZCBkYXRhLnBhcmFsbGVsX3dvcmtlcnMgIT0gTm9uZSAlfSwKKyAgICBwYXJh bGxlbF93b3JrZXJzID0ge3sgZGF0YS5wYXJhbGxlbF93b3JrZXJzIH19eyUgZW5kaWYgJX17JSBp ZiBkYXRhLmF1dG92YWN1dW1fY3VzdG9tICV9LAogICAgIGF1dG92YWN1dW1fZW5hYmxlZCA9IHsl IGlmIGRhdGEuYXV0b3ZhY3V1bV9lbmFibGVkICV9VFJVRXslIGVsc2UgJX1GQUxTRXslIGVuZGlm ICV9eyUgZW5kaWYgJX17JSBpZiBkYXRhLnRvYXN0X2F1dG92YWN1dW0gJX0sCiAgICAgdG9hc3Qu YXV0b3ZhY3V1bV9lbmFibGVkID0geyUgaWYgZGF0YS50b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQg JX1UUlVFeyUgZWxzZSAlfUZBTFNFeyUgZW5kaWYgJX0KIHslIGVuZGlmICV9eyUgaWYgZGF0YS5h dXRvdmFjdXVtX2VuYWJsZWQgYW5kIGRhdGEudmFjdXVtX3RhYmxlfGxlbmd0aCA+IDAgJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGVzL3NxbC8xMF9wbHVzL3Byb3BlcnRp ZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZXMvc3FsLzEwX3BsdXMvcHJvcGVydGll cy5zcWwKaW5kZXggZTliYjIyODI3Li4zZDMxZmU2MGUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZW1wbGF0ZXMvdGFibGVzL3NxbC8xMF9wbHVzL3Byb3BlcnRpZXMuc3FsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90ZW1wbGF0ZXMvdGFibGVzL3NxbC8xMF9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0yNyw2ICsy Nyw3IEBAIFNFTEVDVCByZWwub2lkLCByZWwucmVsbmFtZSBBUyBuYW1lLCByZWwucmVsdGFibGVz cGFjZSBBUyBzcGNvaWQscmVsLnJlbGFjbCBBUyByCiAJCVdIRVJFIGkuaW5ocmVsaWQgPSByZWwu b2lkKSBBUyBpbmhlcml0ZWRfdGFibGVzX2NudCwKIAkoQ0FTRSBXSEVOIHJlbC5yZWxwZXJzaXN0 ZW5jZSA9ICd1JyBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIHJlbHBlcnNpc3RlbmNlLAog CXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnZmls bGZhY3Rvcj0oWzAtOV0qKScpIEFTIGZpbGxmYWN0b3IsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0 cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdwYXJhbGxlbF93b3JrZXJzPShbMC05XSop JykgQVMgcGFyYWxsZWxfd29ya2VycywKIAkoQ0FTRSBXSEVOIChzdWJzdHJpbmcoYXJyYXlfdG9f c3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZW5hYmxlZD0oW2Et enwwLTldKiknKSA9ICd0cnVlJykKIAkgIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgYXV0 b3ZhY3V1bV9lbmFibGVkLAogCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlv bnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkPShbMC05XSopJykgQVMg YXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkLApAQCAtNTYsNyArNTcsNyBAQCBTRUxFQ1QgcmVs Lm9pZCwgcmVsLnJlbG5hbWUgQVMgbmFtZSwgcmVsLnJlbHRhYmxlc3BhY2UgQVMgc3Bjb2lkLHJl bC5yZWxhY2wgQVMgcgogCXR5cC50eXByZWxpZCBBUyB0eXBvaWQsCiAJKENBU0UgV0hFTiByZWwu cmVsdG9hc3RyZWxpZCA9IDAgVEhFTiBmYWxzZSBFTFNFIHRydWUgRU5EKSBBUyBoYXN0b2FzdHRh YmxlLAogICAgIC0tIEFkZGVkIGZvciBwZ0FkbWluNAotCShDQVNFIFdIRU4gYXJyYXlfbGVuZ3Ro KHJlbC5yZWxvcHRpb25zLCAxKSA+IDAgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyBhdXRv dmFjdXVtX2N1c3RvbSwKKwkoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIGxp a2UgJyVhdXRvdmFjdXVtJScpIEFTIGF1dG92YWN1dW1fY3VzdG9tLAogCShDQVNFIFdIRU4gYXJy YXlfbGVuZ3RoKHRzdC5yZWxvcHRpb25zLCAxKSA+IDAgQU5EIHJlbC5yZWx0b2FzdHJlbGlkICE9 IDAgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyB0b2FzdF9hdXRvdmFjdXVtLAogCiAJKFNF TEVDVCBhcnJheV9hZ2cocHJvdmlkZXIgfHwgJz0nIHx8IGxhYmVsKSBGUk9NIHBnX3NlY2xhYmVs cyBzbDEgV0hFUkUgc2wxLm9iam9pZD1yZWwub2lkIEFORCBzbDEub2Jqc3ViaWQ9MCkgQVMgc2Vj bGFiZWxzLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZXMvc3FsLzExX3Bs dXMvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGVzL3NxbC8xMV9wbHVzL2Ny ZWF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5jYWVjOGY1MjAK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlcy9zcWwvMTFfcGx1 cy9jcmVhdGUuc3FsCkBAIC0wLDAgKzEsMTg3IEBACit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFz L3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCRUwgJX0KK3slIGltcG9ydCAnbWFjcm9zL3NjaGVt YXMvcHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJVklMRUdFICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy92 YXJpYWJsZS5tYWNyb3MnIGFzIFZBUklBQkxFICV9Cit7JSBpbXBvcnQgJ2NvbHVtbnMvbWFjcm9z L3NlY3VyaXR5Lm1hY3JvcycgYXMgQ09MVU1OX1NFQ0xBQkVMICV9Cit7JSBpbXBvcnQgJ2NvbHVt bnMvbWFjcm9zL3ByaXZpbGVnZS5tYWNyb3MnIGFzIENPTFVNTl9QUklWSUxFR0UgJX0KK3slIGlt cG9ydCAndGFibGVzL3NxbC9tYWNyb3MvY29uc3RyYWludHMubWFjcm8nIGFzIENPTlNUUkFJTlRT ICV9Cit7JSBpbXBvcnQgJ3R5cGVzL21hY3Jvcy9nZXRfZnVsbF90eXBlX3NxbF9mb3JtYXQubWFj cm9zJyBhcyBHRVRfVFlQRSAlfQoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09I30KK3sjPT09PT09IE1BSU4gVEFCTEUgVEVNUExBVEUgU1RBUlRTIEhFUkUgPT09 PT09I30KK3sjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSN9Cit7 IworIElmIHVzZXIgaGFzIG5vdCBwcm92aWRlZCBhbnkgZGV0YWlscyBidXQgb25seSBuYW1lIHRo ZW4KKyBhZGQgZW1wdHkgYnJhY2tldCB3aXRoIHRhYmxlIG5hbWUKKyN9Cit7JSBzZXQgZW1wdHlf YnJhY2tldCA9ICIiJX0KK3slIGlmIGRhdGEuY29sbF9pbmhlcml0c3xsZW5ndGggPT0gMCBhbmQg IGRhdGEuY29sdW1uc3xsZW5ndGggPT0gMCBhbmQgbm90IGRhdGEudHlwbmFtZSBhbmQgbm90IGRh dGEubGlrZV9yZWxhdGlvbiBhbmQgZGF0YS5wcmltYXJ5X2tleXxsZW5ndGggPT0gMCBhbmQgZGF0 YS51bmlxdWVfY29uc3RyYWludHxsZW5ndGggPT0gMCBhbmQgZGF0YS5mb3JlaWduX2tleXxsZW5n dGggPT0gMCBhbmQgZGF0YS5jaGVja19jb25zdHJhaW50fGxlbmd0aCA9PSAwIGFuZCBkYXRhLmV4 Y2x1ZGVfY29uc3RyYWludHxsZW5ndGggPT0gMCAlfQoreyUgc2V0IGVtcHR5X2JyYWNrZXQgPSAi XG4oXG4pIiV9Cit7JSBlbmRpZiAlfQorQ1JFQVRFIHslIGlmIGRhdGEucmVscGVyc2lzdGVuY2Ug JX1VTkxPR0dFRCB7JSBlbmRpZiAlfVRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBk YXRhLm5hbWUpfX17e2VtcHR5X2JyYWNrZXR9fQoreyUgaWYgZGF0YS50eXBuYW1lICV9CisgICAg T0Yge3sgZGF0YS50eXBuYW1lIH19Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5saWtlX3JlbGF0 aW9uIG9yIGRhdGEuY29sbF9pbmhlcml0cyBvciBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCBvciBk YXRhLnByaW1hcnlfa2V5fGxlbmd0aCA+IDAgb3IgZGF0YS51bmlxdWVfY29uc3RyYWludHxsZW5n dGggPiAwIG9yIGRhdGEuZm9yZWlnbl9rZXl8bGVuZ3RoID4gMCBvciBkYXRhLmNoZWNrX2NvbnN0 cmFpbnR8bGVuZ3RoID4gMCBvciBkYXRhLmV4Y2x1ZGVfY29uc3RyYWludHxsZW5ndGggPiAwICV9 CisoCit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5saWtlX3JlbGF0aW9uICV9CisgICAgTElLRSB7 eyBkYXRhLmxpa2VfcmVsYXRpb24gfX17JSBpZiBkYXRhLmxpa2VfZGVmYXVsdF92YWx1ZSAlfQor CisgICAgICAgIElOQ0xVRElORyBERUZBVUxUU3slIGVuZGlmICV9eyUgaWYgZGF0YS5saWtlX2Nv bnN0cmFpbnRzICV9CisKKyAgICAgICAgSU5DTFVESU5HIENPTlNUUkFJTlRTeyUgZW5kaWYgJX17 JSBpZiBkYXRhLmxpa2VfaW5kZXhlcyAlfQorCisgICAgICAgIElOQ0xVRElORyBJTkRFWEVTeyUg ZW5kaWYgJX17JSBpZiBkYXRhLmxpa2Vfc3RvcmFnZSAlfQorCisgICAgICAgIElOQ0xVRElORyBT VE9SQUdFeyUgZW5kaWYgJX17JSBpZiBkYXRhLmxpa2VfY29tbWVudHMgJX0KKworICAgICAgICBJ TkNMVURJTkcgQ09NTUVOVFN7JSBlbmRpZiAlfXslIGlmIGRhdGEuY29sdW1uc3xsZW5ndGggPiAw ICV9LAoreyUgZW5kaWYgJX0KKworeyUgZW5kaWYgJX0KK3sjIyMgQWRkIGNvbHVtbnMgIyMjfQor eyUgaWYgZGF0YS5jb2x1bW5zIGFuZCBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCAlfQoreyUgZm9y IGMgaW4gZGF0YS5jb2x1bW5zICV9Cit7JSBpZiBjLm5hbWUgYW5kIGMuY2x0eXBlICV9CisgICAg eyUgaWYgYy5pbmhlcml0ZWRmcm9tdGFibGUgJX0tLSBJbmhlcml0ZWQgZnJvbSB0YWJsZSB7e2Mu aW5oZXJpdGVkZnJvbXRhYmxlfX06IHslIGVsaWYgYy5pbmhlcml0ZWRmcm9tdHlwZSAlfS0tIElu aGVyaXRlZCBmcm9tIHR5cGUge3tjLmluaGVyaXRlZGZyb210eXBlfX06IHslIGVuZGlmICV9e3tj b25ufHF0SWRlbnQoYy5uYW1lKX19IHslIGlmIGlzX3NxbCAlfXt7Yy5kaXNwbGF5dHlwbmFtZX19 eyUgZWxzZSAlfXt7IEdFVF9UWVBFLkNSRUFURV9UWVBFX1NRTChjb25uLCBjLmNsdHlwZSwgYy5h dHRsZW4sIGMuYXR0cHJlY2lzaW9uLCBjLmhhc1NxckJyYWNrZXQpIH19eyUgZW5kaWYgJX17JSBp ZiBjLmNvbGxzcGNuYW1lICV9IENPTExBVEUge3tjLmNvbGxzcGNuYW1lfX17JSBlbmRpZiAlfXsl IGlmIGMuYXR0bm90bnVsbCAlfSBOT1QgTlVMTHslIGVuZGlmICV9eyUgaWYgYy5kZWZ2YWwgaXMg ZGVmaW5lZCBhbmQgYy5kZWZ2YWwgaXMgbm90IG5vbmUgYW5kIGMuZGVmdmFsICE9ICcnICV9IERF RkFVTFQge3tjLmRlZnZhbH19eyUgZW5kaWYgJX0KK3slIGlmIGMuY29sY29uc3R5cGUgPT0gJ2kn IGFuZCBjLmF0dGlkZW50aXR5IGFuZCBjLmF0dGlkZW50aXR5ICE9ICcnICV9Cit7JSBpZiBjLmF0 dGlkZW50aXR5ID09ICdhJyAlfSBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZeyUgZWxpZiBj LmF0dGlkZW50aXR5ID09ICdkJyAlfSBHRU5FUkFURUQgQlkgREVGQVVMVCBBUyBJREVOVElUWXsl IGVuZGlmICV9Cit7JSBpZiBjLnNlcWluY3JlbWVudCBvciBjLnNlcWN5Y2xlIG9yIGMuc2VxaW5j cmVtZW50IG9yIGMuc2Vxc3RhcnQgb3IgYy5zZXFtaW4gb3IgYy5zZXFtYXggb3IgYy5zZXFjYWNo ZSAlfSAoIHslIGVuZGlmICV9Cit7JSBpZiBjLnNlcWN5Y2xlIGlzIGRlZmluZWQgYW5kIGMuc2Vx Y3ljbGUgJX0KK0NZQ0xFIHslIGVuZGlmICV9eyUgaWYgYy5zZXFpbmNyZW1lbnQgaXMgZGVmaW5l ZCBhbmQgYy5zZXFpbmNyZW1lbnR8aW50KC0xKSA+IC0xICV9CitJTkNSRU1FTlQge3tjLnNlcWlu Y3JlbWVudHxpbnR9fSB7JSBlbmRpZiAlfXslIGlmIGMuc2Vxc3RhcnQgaXMgZGVmaW5lZCBhbmQg Yy5zZXFzdGFydHxpbnQoLTEpID4gLTElfQorU1RBUlQge3tjLnNlcXN0YXJ0fGludH19IHslIGVu ZGlmICV9eyUgaWYgYy5zZXFtaW4gaXMgZGVmaW5lZCBhbmQgYy5zZXFtaW58aW50KC0xKSA+IC0x JX0KK01JTlZBTFVFIHt7Yy5zZXFtaW58aW50fX0geyUgZW5kaWYgJX17JSBpZiBjLnNlcW1heCBp cyBkZWZpbmVkIGFuZCBjLnNlcW1heHxpbnQoLTEpID4gLTElfQorTUFYVkFMVUUge3tjLnNlcW1h eHxpbnR9fSB7JSBlbmRpZiAlfXslIGlmIGMuc2VxY2FjaGUgaXMgZGVmaW5lZCBhbmQgYy5zZXFj YWNoZXxpbnQoLTEpID4gLTElfQorQ0FDSEUge3tjLnNlcWNhY2hlfGludH19IHslIGVuZGlmICV9 Cit7JSBpZiBjLnNlcWluY3JlbWVudCBvciBjLnNlcWN5Y2xlIG9yIGMuc2VxaW5jcmVtZW50IG9y IGMuc2Vxc3RhcnQgb3IgYy5zZXFtaW4gb3IgYy5zZXFtYXggb3IgYy5zZXFjYWNoZSAlfSl7JSBl bmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGlmIG5vdCBsb29wLmxhc3QgJX0sCit7JSBlbmRpZiAl fQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3sjIE1hY3JvIHRvIHJl bmRlciBmb3IgY29uc3RyYWludHMgI30KK3slIGlmIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3RoID4g MCAlfXslIGlmIGRhdGEuY29sdW1uc3xsZW5ndGggPiAwICV9LHslIGVuZGlmICV9Cit7e0NPTlNU UkFJTlRTLlBSSU1BUllfS0VZKGNvbm4sIGRhdGEucHJpbWFyeV9rZXlbMF0pfX17JSBlbmRpZiAl fXslIGlmIGRhdGEudW5pcXVlX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCAlfXslIGlmIGRhdGEuY29s dW1uc3xsZW5ndGggPiAwIG9yIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3RoID4gMCAlfSx7JSBlbmRp ZiAlfQore3tDT05TVFJBSU5UUy5VTklRVUUoY29ubiwgZGF0YS51bmlxdWVfY29uc3RyYWludCl9 fXslIGVuZGlmICV9eyUgaWYgZGF0YS5mb3JlaWduX2tleXxsZW5ndGggPiAwICV9eyUgaWYgZGF0 YS5jb2x1bW5zfGxlbmd0aCA+IDAgb3IgZGF0YS5wcmltYXJ5X2tleXxsZW5ndGggPiAwIG9yIGRh dGEudW5pcXVlX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCAlfSx7JSBlbmRpZiAlfQore3tDT05TVFJB SU5UUy5GT1JFSUdOX0tFWShjb25uLCBkYXRhLmZvcmVpZ25fa2V5KX19eyUgZW5kaWYgJX17JSBp ZiBkYXRhLmNoZWNrX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCAlfXslIGlmIGRhdGEuY29sdW1uc3xs ZW5ndGggPiAwIG9yIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3RoID4gMCBvciBkYXRhLnVuaXF1ZV9j b25zdHJhaW50fGxlbmd0aCA+IDAgb3IgZGF0YS5mb3JlaWduX2tleXxsZW5ndGggPiAwICV9LHsl IGVuZGlmICV9Cit7e0NPTlNUUkFJTlRTLkNIRUNLKGNvbm4sIGRhdGEuY2hlY2tfY29uc3RyYWlu dCl9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5leGNsdWRlX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCAl fXslIGlmIGRhdGEuY29sdW1uc3xsZW5ndGggPiAwIG9yIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3Ro ID4gMCBvciBkYXRhLnVuaXF1ZV9jb25zdHJhaW50fGxlbmd0aCA+IDAgb3IgZGF0YS5mb3JlaWdu X2tleXxsZW5ndGggPiAwIG9yIGRhdGEuY2hlY2tfY29uc3RyYWludHxsZW5ndGggPiAwICV9LHsl IGVuZGlmICV9Cit7e0NPTlNUUkFJTlRTLkVYQ0xVREUoY29ubiwgZGF0YS5leGNsdWRlX2NvbnN0 cmFpbnQpfX17JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5saWtlX3JlbGF0aW9uIG9yIGRhdGEuY29s bF9pbmhlcml0cyBvciBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCBvciBkYXRhLnByaW1hcnlfa2V5 fGxlbmd0aCA+IDAgb3IgZGF0YS51bmlxdWVfY29uc3RyYWludHxsZW5ndGggPiAwIG9yIGRhdGEu Zm9yZWlnbl9rZXl8bGVuZ3RoID4gMCBvciBkYXRhLmNoZWNrX2NvbnN0cmFpbnR8bGVuZ3RoID4g MCBvciBkYXRhLmV4Y2x1ZGVfY29uc3RyYWludHxsZW5ndGggPiAwICV9CisKKyl7JSBlbmRpZiAl fXslIGlmIGRhdGEucmVsa2luZCBpcyBkZWZpbmVkIGFuZCBkYXRhLnJlbGtpbmQgPT0gJ3AnICV9 IFBBUlRJVElPTiBCWSB7eyBkYXRhLnBhcnRpdGlvbl9zY2hlbWUgfX0geyUgZW5kaWYgJX0KKwor eyMjIyBJZiB3ZSBhcmUgaW5oZXJpdGluZyBpdCBmcm9tIGFub3RoZXIgdGFibGUocykgIyMjfQor eyUgaWYgZGF0YS5jb2xsX2luaGVyaXRzICV9CisgICAgSU5IRVJJVFMgKHslIGZvciB2YWwgaW4g ZGF0YS5jb2xsX2luaGVyaXRzICV9eyUgaWYgbG9vcC5pbmRleCAhPSAxICV9LCB7JSBlbmRpZiAl fXt7dmFsfX17JSBlbmRmb3IgJX0pCit7JSBlbmRpZiAlfQorV0lUSCAoCisgICAgT0lEUyA9IHsl IGlmIGRhdGEucmVsaGFzb2lkcyAlfVRSVUV7JSBlbHNlICV9RkFMU0V7JSBlbmRpZiAlfXslIGlm IGRhdGEuZmlsbGZhY3RvciAlfSwKKyAgICBGSUxMRkFDVE9SID0ge3sgZGF0YS5maWxsZmFjdG9y IH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnBhcmFsbGVsX3dvcmtlcnMgaXMgZGVmaW5lZCBhbmQg ZGF0YS5wYXJhbGxlbF93b3JrZXJzICE9ICcnIGFuZCBkYXRhLnBhcmFsbGVsX3dvcmtlcnMgIT0g Tm9uZSAlfSwKKyAgICBwYXJhbGxlbF93b3JrZXJzID0ge3sgZGF0YS5wYXJhbGxlbF93b3JrZXJz IH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnRvYXN0X3R1cGxlX3RhcmdldCBpcyBkZWZpbmVkIGFu ZCBkYXRhLnRvYXN0X3R1cGxlX3RhcmdldCAhPSAnJyBhbmQgZGF0YS50b2FzdF90dXBsZV90YXJn ZXQgIT0gTm9uZSAlfSwKKyAgICB0b2FzdF90dXBsZV90YXJnZXQgPSB7eyBkYXRhLnRvYXN0X3R1 cGxlX3RhcmdldCB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5hdXRvdmFjdXVtX2N1c3RvbSAlfSwK KyAgICBhdXRvdmFjdXVtX2VuYWJsZWQgPSB7JSBpZiBkYXRhLmF1dG92YWN1dW1fZW5hYmxlZCAl fVRSVUV7JSBlbHNlICV9RkFMU0V7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgZGF0YS50b2Fz dF9hdXRvdmFjdXVtICV9LAorICAgIHRvYXN0LmF1dG92YWN1dW1fZW5hYmxlZCA9IHslIGlmIGRh dGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkICV9VFJVRXslIGVsc2UgJX1GQUxTRXslIGVuZGlm ICV9Cit7JSBlbmRpZiAlfXslIGlmIGRhdGEuYXV0b3ZhY3V1bV9lbmFibGVkIGFuZCBkYXRhLnZh Y3V1bV90YWJsZXxsZW5ndGggPiAwICV9Cit7JSBmb3Igb3B0IGluIGRhdGEudmFjdXVtX3RhYmxl ICV9eyUgaWYgb3B0Lm5hbWUgYW5kIG9wdC52YWx1ZSAlfQorLAorICAgIHt7b3B0Lm5hbWV9fSA9 IHt7b3B0LnZhbHVlfX17JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9eyUgZW5kaWYgJX17JSBpZiBk YXRhLnRvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCBhbmQgZGF0YS52YWN1dW1fdG9hc3R8bGVuZ3Ro ID4gMCAlfQoreyUgZm9yIG9wdCBpbiBkYXRhLnZhY3V1bV90b2FzdCAlfXslIGlmIG9wdC5uYW1l IGFuZCBvcHQudmFsdWUgJX0KKywKKyAgICB0b2FzdC57e29wdC5uYW1lfX0gPSB7e29wdC52YWx1 ZX19eyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfXslIGVuZGlmICV9CisKK3sjIyMgU1FMIGZvciBU YWJsZXNwYWNlICMjI30KK3slIGlmIGRhdGEuc3BjbmFtZSAlfQorKQorVEFCTEVTUEFDRSB7eyBj b25ufHF0SWRlbnQoZGF0YS5zcGNuYW1lKSB9fTsKK3slIGVsc2UgJX0KKyk7Cit7JSBlbmRpZiAl fQoreyMjIyBBbHRlciBTUUwgZm9yIE93bmVyICMjI30KK3slIGlmIGRhdGEucmVsb3duZXIgJX0K KworQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQor ICAgIE9XTkVSIHRvIHt7Y29ubnxxdElkZW50KGRhdGEucmVsb3duZXIpfX07Cit7JSBlbmRpZiAl fQoreyMjIyBTZWN1cml0eSBMYWJlbHMgb24gVGFibGUgIyMjfQoreyUgaWYgZGF0YS5zZWNsYWJl bHMgYW5kIGRhdGEuc2VjbGFiZWxzfGxlbmd0aCA+IDAgJX0KKworeyUgZm9yIHIgaW4gZGF0YS5z ZWNsYWJlbHMgJX0KK3t7IFNFQ0xBQkVMLlNFVChjb25uLCAnVEFCTEUnLCBkYXRhLm5hbWUsIHIu cHJvdmlkZXIsIHIubGFiZWwsIGRhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRp ZiAlfQoreyMjIyAgQUNMIG9uIFRhYmxlICMjI30KK3slIGlmIGRhdGEucmVsYWNsICV9CisKK3sl IGZvciBwcml2IGluIGRhdGEucmVsYWNsICV9Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUQUJM RScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0 aF9ncmFudCwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7IyMj IFNRTCBmb3IgQ09NTUVOVCAjIyN9Cit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CitDT01NRU5U IE9OIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAgICBJ UyB7e2RhdGEuZGVzY3JpcHRpb258cXRMaXRlcmFsfX07Cit7JSBlbmRpZiAlfQoreyM9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sjPT09PT09IE1BSU4gVEFC TEUgVEVNUExBVEUgRU5EUyBIRVJFID09PT09PSN9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0jfQoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09I30KK3sjICBDT0xVTU4gU1BFQ0lGSUMgVEVNUExBVEVTIFNUQVJUUyBIRVJF ICAgICN9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jfQor eyUgaWYgZGF0YS5jb2x1bW5zIGFuZCBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCAlfQoreyUgZm9y IGMgaW4gZGF0YS5jb2x1bW5zICV9Cit7JSBpZiBjLmRlc2NyaXB0aW9uICV9CisKK0NPTU1FTlQg T04gQ09MVU1OIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUsIGMubmFtZSl9 fQorICAgIElTIHt7Yy5kZXNjcmlwdGlvbnxxdExpdGVyYWx9fTsKK3slIGVuZGlmICV9Cit7IyMj ICBBZGQgdmFyaWFibGVzIHRvIGNvbHVtbiAjIyN9Cit7JSBpZiBjLmF0dG9wdGlvbnMgYW5kIGMu YXR0b3B0aW9uc3xsZW5ndGggPiAwICV9CisKK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRh dGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAgICB7eyBWQVJJQUJMRS5TRVQoY29ubiwgJ0NPTFVN TicsIGMubmFtZSwgYy5hdHRvcHRpb25zKSB9fQorCit7JSBlbmRpZiAlfQoreyMjIyAgQWx0ZXIg Y29sdW1uIHN0YXRpc3RpY3MgdmFsdWUgIyMjfQoreyUgaWYgYy5hdHRzdGF0dGFyZ2V0IGlzIGRl ZmluZWQgYW5kIGMuYXR0c3RhdHRhcmdldCA+IC0xICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJ ZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgQUxURVIgQ09MVU1OIHt7Y29ubnxx dFR5cGVJZGVudChjLm5hbWUpfX0gU0VUIFNUQVRJU1RJQ1Mge3tjLmF0dHN0YXR0YXJnZXR9fTsK KworeyUgZW5kaWYgJX0KK3sjIyMgIEFsdGVyIGNvbHVtbiBzdG9yYWdlIHZhbHVlICMjI30KK3sl IGlmIGMuYXR0c3RvcmFnZSBpcyBkZWZpbmVkIGFuZCBjLmF0dHN0b3JhZ2UgIT0gYy5kZWZhdWx0 c3RvcmFnZSAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEu bmFtZSl9fQorICAgIEFMVEVSIENPTFVNTiB7e2Nvbm58cXRUeXBlSWRlbnQoYy5uYW1lKX19IFNF VCBTVE9SQUdFIHslaWYgYy5hdHRzdG9yYWdlID09ICdwJyAlfQorUExBSU57JSBlbGlmIGMuYXR0 c3RvcmFnZSA9PSAnbSclfU1BSU57JSBlbGlmIGMuYXR0c3RvcmFnZSA9PSAnZSclfQorRVhURVJO QUx7JSBlbGlmIGMuYXR0c3RvcmFnZSA9PSAneCclfUVYVEVOREVEeyUgZW5kaWYgJX07CisKK3sl IGVuZGlmICV9Cit7IyMjICBBQ0wgIyMjfQoreyUgaWYgYy5hdHRhY2wgYW5kIGMuYXR0YWNsfGxl bmd0aCA+IDAgJX0KKworeyUgZm9yIHByaXYgaW4gYy5hdHRhY2wgJX0KK3t7IENPTFVNTl9QUklW SUxFR0UuQVBQTFkoY29ubiwgZGF0YS5zY2hlbWEsIGRhdGEubmFtZSwgYy5uYW1lLCBwcml2Lmdy YW50ZWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50KSB9fQoreyUgZW5kZm9y ICV9Cit7JSBlbmRpZiAlfQoreyMjIyAgU2VjdXJpdHkgTGFibGVzICMjI30KK3slIGlmIGMuc2Vj bGFiZWxzIGFuZCBjLnNlY2xhYmVsc3xsZW5ndGggPiAwICV9CisKK3slIGZvciByIGluIGMuc2Vj bGFiZWxzICV9Cit7eyBDT0xVTU5fU0VDTEFCRUwuQVBQTFkoY29ubiwgJ0NPTFVNTicsZGF0YS5z Y2hlbWEsIGRhdGEubmFtZSwgYy5uYW1lLCByLnByb3ZpZGVyLCByLmxhYmVsKSB9fQoreyUgZW5k Zm9yICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyM9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sjICAgQ09MVU1OIFNQRUNJ RklDIFRFTVBMQVRFUyBFTkRTIEhFUkUgICAgICN9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0jfQoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PSN9Cit7IyAgIENPTlNUUkFJTlRTIFNQRUNJRklDIFRFTVBMQVRFUyAgICAgI30KK3sj PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jfQore3tDT05TVFJBSU5UUy5D T05TVFJBSU5UX0NPTU1FTlRTKGNvbm4sIGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUsIGRhdGEucHJp bWFyeV9rZXkpfX0KK3t7Q09OU1RSQUlOVFMuQ09OU1RSQUlOVF9DT01NRU5UUyhjb25uLCBkYXRh LnNjaGVtYSwgZGF0YS5uYW1lLCBkYXRhLnVuaXF1ZV9jb25zdHJhaW50KX19Cit7e0NPTlNUUkFJ TlRTLkNPTlNUUkFJTlRfQ09NTUVOVFMoY29ubiwgZGF0YS5zY2hlbWEsIGRhdGEubmFtZSwgZGF0 YS5mb3JlaWduX2tleSl9fQore3tDT05TVFJBSU5UUy5DT05TVFJBSU5UX0NPTU1FTlRTKGNvbm4s IGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUsIGRhdGEuY2hlY2tfY29uc3RyYWludCl9fQore3tDT05T VFJBSU5UUy5DT05TVFJBSU5UX0NPTU1FTlRTKGNvbm4sIGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUs IGRhdGEuZXhjbHVkZV9jb25zdHJhaW50KX19CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL3RhYmxlcy9zcWwvMTFfcGx1cy9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvdGFibGVzL3NxbC8xMV9wbHVzL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMC4uM2FjN2NlYWU4Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy90YWJsZXMvc3FsLzExX3BsdXMvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSw3 NyBAQAorU0VMRUNUIHJlbC5vaWQsIHJlbC5yZWxuYW1lIEFTIG5hbWUsIHJlbC5yZWx0YWJsZXNw YWNlIEFTIHNwY29pZCxyZWwucmVsYWNsIEFTIHJlbGFjbF9zdHIsCisgIChDQVNFIFdIRU4gbGVu Z3RoKHNwYy5zcGNuYW1lKSA+IDAgVEhFTiBzcGMuc3BjbmFtZSBFTFNFCisgICAgKFNFTEVDVCBz cC5zcGNuYW1lIEZST00gcGdfZGF0YWJhc2UgZHRiCisgICAgSk9JTiBwZ190YWJsZXNwYWNlIHNw IE9OIGR0Yi5kYXR0YWJsZXNwYWNlPXNwLm9pZAorICAgIFdIRVJFIGR0Yi5vaWQgPSB7eyBkaWQg fX06Om9pZCkKKyAgRU5EKSBhcyBzcGNuYW1lLAorICAoc2VsZWN0IG5zcG5hbWUgRlJPTSBwZ19u YW1lc3BhY2UgV0hFUkUgb2lkID0ge3tzY2lkfX06Om9pZCApIGFzIHNjaGVtYSwKKyAgcGdfZ2V0 X3VzZXJieWlkKHJlbC5yZWxvd25lcikgQVMgcmVsb3duZXIsIHJlbC5yZWxoYXNvaWRzLCByZWwu cmVsa2luZCwKKyAgKENBU0UgV0hFTiByZWwucmVsa2luZCA9ICdwJyBUSEVOIHRydWUgRUxTRSBm YWxzZSBFTkQpIEFTIGlzX3BhcnRpdGlvbmVkLAorICByZWwucmVsaGFzc3ViY2xhc3MsIHJlbC5y ZWx0dXBsZXM6OmJpZ2ludCwgZGVzLmRlc2NyaXB0aW9uLCBjb24uY29ubmFtZSwgY29uLmNvbmtl eSwKKwlFWElTVFMoc2VsZWN0IDEgRlJPTSBwZ190cmlnZ2VyCisJCQlKT0lOIHBnX3Byb2MgcHQg T04gcHQub2lkPXRnZm9pZCBBTkQgcHQucHJvbmFtZT0nbG9ndHJpZ2dlcicKKwkJCUpPSU4gcGdf cHJvYyBwYyBPTiBwYy5wcm9uYW1lc3BhY2U9cHQucHJvbmFtZXNwYWNlIEFORCBwYy5wcm9uYW1l PSdzbG9ueXZlcnNpb24nCisJCQlXSEVSRSB0Z3JlbGlkPXJlbC5vaWQpIEFTIGlzcmVwbCwKKwko U0VMRUNUIGNvdW50KCopIEZST00gcGdfdHJpZ2dlciBXSEVSRSB0Z3JlbGlkPXJlbC5vaWQgQU5E IHRnaXNpbnRlcm5hbCA9IEZBTFNFKSBBUyB0cmlnZ2VyY291bnQsCisJKFNFTEVDVCBBUlJBWShT RUxFQ1QgQ0FTRSBXSEVOIChuc3BuYW1lIE5PVCBMSUtFICdwZ1xfJScpIFRIRU4KKyAgICAgICAg ICAgIHF1b3RlX2lkZW50KG5zcG5hbWUpfHwnLid8fHF1b3RlX2lkZW50KGMucmVsbmFtZSkKKyAg ICAgICAgICAgIEVMU0UgcXVvdGVfaWRlbnQoYy5yZWxuYW1lKSBFTkQgQVMgaW5oZXJpdGVkX3Rh YmxlcworICAgIEZST00gcGdfaW5oZXJpdHMgaQorICAgIEpPSU4gcGdfY2xhc3MgYyBPTiBjLm9p ZCA9IGkuaW5ocGFyZW50CisgICAgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZD1jLnJlbG5h bWVzcGFjZQorICAgIFdIRVJFIGkuaW5ocmVsaWQgPSByZWwub2lkIE9SREVSIEJZIGluaHNlcW5v KSkgQVMgY29sbF9pbmhlcml0cywKKyAgKFNFTEVDVCBjb3VudCgqKQorCQlGUk9NIHBnX2luaGVy aXRzIGkKKyAgICAgIEpPSU4gcGdfY2xhc3MgYyBPTiBjLm9pZCA9IGkuaW5ocGFyZW50CisgICAg ICBKT0lOIHBnX25hbWVzcGFjZSBuIE9OIG4ub2lkPWMucmVsbmFtZXNwYWNlCisJCVdIRVJFIGku aW5ocmVsaWQgPSByZWwub2lkKSBBUyBpbmhlcml0ZWRfdGFibGVzX2NudCwKKwkoQ0FTRSBXSEVO IHJlbC5yZWxwZXJzaXN0ZW5jZSA9ICd1JyBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIHJl bHBlcnNpc3RlbmNlLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMs ICcsJykgRlJPTSAnZmlsbGZhY3Rvcj0oWzAtOV0qKScpIEFTIGZpbGxmYWN0b3IsCisJc3Vic3Ry aW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdwYXJhbGxlbF93 b3JrZXJzPShbMC05XSopJykgQVMgcGFyYWxsZWxfd29ya2VycywKKwlzdWJzdHJpbmcoYXJyYXlf dG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ3RvYXN0X3R1cGxlX3RhcmdldD0o WzAtOV0qKScpIEFTIHRvYXN0X3R1cGxlX3RhcmdldCwKKwkoQ0FTRSBXSEVOIChzdWJzdHJpbmco YXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZW5h YmxlZD0oW2EtenwwLTldKiknKSA9ICd0cnVlJykKKwkgIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVO RCkgQVMgYXV0b3ZhY3V1bV9lbmFibGVkLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVs LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkPShbMC05 XSopJykgQVMgYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkLAorCXN1YnN0cmluZyhhcnJheV90 b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fc2Nh bGVfZmFjdG9yPShbMC05XSpbLl0/WzAtOV0qKScpIEFTIGF1dG92YWN1dW1fdmFjdXVtX3NjYWxl X2ZhY3RvciwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcp IEZST00gJ2F1dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQ9KFswLTldKiknKSBBUyBhdXRvdmFj dXVtX2FuYWx5emVfdGhyZXNob2xkLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJl bG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9hbmFseXplX3NjYWxlX2ZhY3Rvcj0oWzAt OV0qWy5dP1swLTldKiknKSBBUyBhdXRvdmFjdXVtX2FuYWx5emVfc2NhbGVfZmFjdG9yLAorCXN1 YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3Zh Y3V1bV92YWN1dW1fY29zdF9kZWxheT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fdmFjdXVtX2Nv c3RfZGVsYXksCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywn KSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0PShbMC05XSopJykgQVMgYXV0b3Zh Y3V1bV92YWN1dW1fY29zdF9saW1pdCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5y ZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZnJlZXplX21pbl9hZ2U9KFswLTldKikn KSBBUyBhdXRvdmFjdXVtX2ZyZWV6ZV9taW5fYWdlLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJp bmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZT0o WzAtOV0qKScpIEFTIGF1dG92YWN1dW1fZnJlZXplX21heF9hZ2UsCisJc3Vic3RyaW5nKGFycmF5 X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2ZyZWV6ZV90 YWJsZV9hZ2U9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2UsCisJKENB U0UgV0hFTiAoc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBG Uk9NICdhdXRvdmFjdXVtX2VuYWJsZWQ9KFthLXp8MC05XSopJykgPSAgJ3RydWUnKQorCSAgVEhF TiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyB0b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQsCisJc3Vi c3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFj dXVtX3ZhY3V1bV90aHJlc2hvbGQ9KFswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX3ZhY3V1 bV90aHJlc2hvbGQsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywg JywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3I9KFswLTldKlsuXT9bMC05 XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFjdG9yLAorCXN1YnN0cmlu ZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9h bmFseXplX3RocmVzaG9sZD0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fYW5hbHl6ZV90 aHJlc2hvbGQsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywn KSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5emVfc2NhbGVfZmFjdG9yPShbMC05XSpbLl0/WzAtOV0q KScpIEFTIHRvYXN0X2F1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3IsCisJc3Vic3RyaW5n KGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3Zh Y3V1bV9jb3N0X2RlbGF5PShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV92YWN1dW1fY29z dF9kZWxheSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcp IEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQ9KFswLTldKiknKSBBUyB0b2FzdF9h dXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0LAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmco dHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfbWluX2FnZT0oWzAt OV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fZnJlZXplX21pbl9hZ2UsCisJc3Vic3RyaW5nKGFy cmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2ZyZWV6 ZV9tYXhfYWdlPShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZSwK KwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1 dG92YWN1dW1fZnJlZXplX3RhYmxlX2FnZT0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1f ZnJlZXplX3RhYmxlX2FnZSwKKwlhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykg QVMgdGFibGVfdmFjdXVtX3NldHRpbmdzX3N0ciwKKwlhcnJheV90b19zdHJpbmcodHN0LnJlbG9w dGlvbnMsICcsJykgQVMgdG9hc3RfdGFibGVfdmFjdXVtX3NldHRpbmdzX3N0ciwKKwlyZWwucmVs b3B0aW9ucyBBUyByZWxvcHRpb25zLCB0c3QucmVsb3B0aW9ucyBBUyB0b2FzdF9yZWxvcHRpb25z LCByZWwucmVsb2Z0eXBlLAorCUNBU0UgV0hFTiB0eXAudHlwbmFtZSBJUyBOT1QgTlVMTCBUSEVO IChzZWxlY3QgcXVvdGVfaWRlbnQobnNwbmFtZSkgRlJPTSBwZ19uYW1lc3BhY2UgV0hFUkUgb2lk ID0ge3tzY2lkfX06Om9pZCApfHwnLid8fHF1b3RlX2lkZW50KHR5cC50eXBuYW1lKSBFTFNFIHR5 cC50eXBuYW1lIEVORCBBUyB0eXBuYW1lLAorCXR5cC50eXByZWxpZCBBUyB0eXBvaWQsCisJKENB U0UgV0hFTiByZWwucmVsdG9hc3RyZWxpZCA9IDAgVEhFTiBmYWxzZSBFTFNFIHRydWUgRU5EKSBB UyBoYXN0b2FzdHRhYmxlLAorICAgIC0tIEFkZGVkIGZvciBwZ0FkbWluNAorCShhcnJheV90b19z dHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgbGlrZSAnJWF1dG92YWN1dW0lJykgQVMgYXV0b3Zh Y3V1bV9jdXN0b20sCisJKENBU0UgV0hFTiBhcnJheV9sZW5ndGgodHN0LnJlbG9wdGlvbnMsIDEp ID4gMCBBTkQgcmVsLnJlbHRvYXN0cmVsaWQgIT0gMCBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQp IEFTIHRvYXN0X2F1dG92YWN1dW0sCisKKwkoU0VMRUNUIGFycmF5X2FnZyhwcm92aWRlciB8fCAn PScgfHwgbGFiZWwpIEZST00gcGdfc2VjbGFiZWxzIHNsMSBXSEVSRSBzbDEub2Jqb2lkPXJlbC5v aWQgQU5EIHNsMS5vYmpzdWJpZD0wKSBBUyBzZWNsYWJlbHMsCisJKENBU0UgV0hFTiByZWwub2lk IDw9IHt7IGRhdGxhc3RzeXNvaWR9fTo6b2lkIFRIRU4gdHJ1ZSBFbFNFIGZhbHNlIEVORCkgQVMg aXNfc3lzX3RhYmxlCisJLS0gQWRkZWQgZm9yIHBhcnRpdGlvbiB0YWJsZQorICAgIHslIGlmIHRp ZCAlfSwgKENBU0UgV0hFTiByZWwucmVsa2luZCA9ICdwJyBUSEVOIHBnX2dldF9wYXJ0a2V5ZGVm KHt7IHRpZCB9fTo6b2lkKSBFTFNFICcnIEVORCkgQVMgcGFydGl0aW9uX3NjaGVtZSB7JSBlbmRp ZiAlfQorRlJPTSBwZ19jbGFzcyByZWwKKyAgTEVGVCBPVVRFUiBKT0lOIHBnX3RhYmxlc3BhY2Ug c3BjIG9uIHNwYy5vaWQ9cmVsLnJlbHRhYmxlc3BhY2UKKyAgTEVGVCBPVVRFUiBKT0lOIHBnX2Rl c2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1yZWwub2lkIEFORCBkZXMub2Jqc3ViaWQ9MCBB TkQgZGVzLmNsYXNzb2lkPSdwZ19jbGFzcyc6OnJlZ2NsYXNzKQorICBMRUZUIE9VVEVSIEpPSU4g cGdfY29uc3RyYWludCBjb24gT04gY29uLmNvbnJlbGlkPXJlbC5vaWQgQU5EIGNvbi5jb250eXBl PSdwJworICBMRUZUIE9VVEVSIEpPSU4gcGdfY2xhc3MgdHN0IE9OIHRzdC5vaWQgPSByZWwucmVs dG9hc3RyZWxpZAorICBMRUZUIEpPSU4gcGdfdHlwZSB0eXAgT04gcmVsLnJlbG9mdHlwZT10eXAu b2lkCitXSEVSRSByZWwucmVsa2luZCBJTiAoJ3InLCdzJywndCcsJ3AnKSBBTkQgcmVsLnJlbG5h bWVzcGFjZSA9IHt7IHNjaWQgfX06Om9pZAorQU5EIE5PVCByZWwucmVsaXNwYXJ0aXRpb24KK3sl IGlmIHRpZCAlfSAgQU5EIHJlbC5vaWQgPSB7eyB0aWQgfX06Om9pZCB7JSBlbmRpZiAlfQorT1JE RVIgQlkgcmVsLnJlbG5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxl cy9zcWwvMTFfcGx1cy91cGRhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZXMvc3Fs LzExX3BsdXMvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAu LjBmMjdkYmVkMgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGVz L3NxbC8xMV9wbHVzL3VwZGF0ZS5zcWwKQEAgLTAsMCArMSwyNDUgQEAKK3slIGltcG9ydCAnbWFj cm9zL3NjaGVtYXMvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJFTCAlfQoreyUgaW1wb3J0ICdt YWNyb3Mvc2NoZW1hcy9wcml2aWxlZ2UubWFjcm9zJyBhcyBQUklWSUxFR0UgJX0KK3slIGltcG9y dCAnbWFjcm9zL3ZhcmlhYmxlLm1hY3JvcycgYXMgVkFSSUFCTEUgJX0KK3sjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sjIyBSZW5hbWUgdGFi bGUgIyN9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyN9Cit7JSBpZiBkYXRhLm5hbWUgYW5kIGRhdGEubmFtZSAhPSBvX2RhdGEubmFtZSAlfQor QUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQob19kYXRhLnNjaGVtYSwgb19kYXRhLm5hbWUpfX0K KyAgICBSRU5BTUUgVE8ge3tjb25ufHF0SWRlbnQoZGF0YS5uYW1lKX19OworCit7JSBlbmRpZiAl fQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj fQoreyMjIENoYW5nZSB0YWJsZSBzY2hlbWEgIyN9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBpZiBkYXRhLnNjaGVtYSBhbmQgZGF0 YS5zY2hlbWEgIT0gb19kYXRhLnNjaGVtYSAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQo b19kYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgIFNFVCBTQ0hFTUEge3tjb25ufHF0SWRlbnQo ZGF0YS5zY2hlbWEpfX07CisKK3slIGVuZGlmICV9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgQ2hhbmdlIHRhYmxlIG93bmVyICMj fQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj fQoreyUgaWYgZGF0YS5yZWxvd25lciBhbmQgZGF0YS5yZWxvd25lciAhPSBvX2RhdGEucmVsb3du ZXIgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUp fX0KKyAgICBPV05FUiBUTyB7e2Nvbm58cXRJZGVudChkYXRhLnJlbG93bmVyKX19OworCit7JSBl bmRpZiAlfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjfQoreyMjIFVwZGF0ZSBJbmhlcml0cyB0YWJsZSBkZWZpbml0aW9uICMjfQoreyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYg ZGF0YS5jb2xsX2luaGVyaXRzX2FkZGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciB2YWwgaW4gZGF0 YS5jb2xsX2luaGVyaXRzX2FkZGVkICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRh LnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgSU5IRVJJVCB7e3ZhbH19OworCit7JSBlbmRmb3Ig JX0KK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLmNvbGxfaW5oZXJpdHNfcmVtb3ZlZHxsZW5ndGgg PiAwICV9Cit7JSBmb3IgdmFsIGluIGRhdGEuY29sbF9pbmhlcml0c19yZW1vdmVkICV9CitBTFRF UiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgTk8g SU5IRVJJVCB7e3ZhbH19OworCit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7IyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgQ2hhbmdl IGhhc09JRCBhdHRyaWJ1dGUgb2YgdGFibGUgIyN9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBpZiBkYXRhLnJlbGhhc29pZHMgaXMg ZGVmaW5lZCBhbmQgZGF0YS5yZWxoYXNvaWRzICE9IG9fZGF0YS5yZWxoYXNvaWRzICV9CitBTFRF UiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgU0VU IHslIGlmIGRhdGEucmVsaGFzb2lkcyAlfVdJVEh7JSBlbHNlICV9V0lUSE9VVHslIGVuZGlmICV9 IE9JRFM7CisKK3slIGVuZGlmICV9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgQ2hhbmdlIHRhYmxlc3BhY2UgIyN9Cit7IyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBpZiBk YXRhLnNwY25hbWUgYW5kIGRhdGEuc3BjbmFtZSAhPSBvX2RhdGEuc3BjbmFtZSAlfQorQUxURVIg VEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQorICAgIFNFVCBU QUJMRVNQQUNFIHt7Y29ubnxxdElkZW50KGRhdGEuc3BjbmFtZSl9fTsKKworeyUgZW5kaWYgJX0K K3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30K K3sjIyBjaGFuZ2UgZmlsbGZhY3RvciBzZXR0aW5ncyAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3slIGlmIGRhdGEuZmlsbGZhY3Rv ciBhbmQgZGF0YS5maWxsZmFjdG9yICE9IG9fZGF0YS5maWxsZmFjdG9yICV9CitBTFRFUiBUQUJM RSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgU0VUIChGSUxM RkFDVE9SPXt7ZGF0YS5maWxsZmFjdG9yfX0pOworeyUgZWxpZiAoZGF0YS5maWxsZmFjdG9yID09 ICcnIG9yIGRhdGEuZmlsbGZhY3RvciA9PSBOb25lKSBhbmQgZGF0YS5maWxsZmFjdG9yICE9IG9f ZGF0YS5maWxsZmFjdG9yICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVt YSwgZGF0YS5uYW1lKX19CisgICAgUkVTRVQgKEZJTExGQUNUT1IpOworCit7JSBlbmRpZiAlfQor Cit7IyMgY2hhbmdlIHBhcmFsbGVsX3dvcmtlcnMgc2V0dGluZ3MgIyN9Cit7IyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBpZiAoZGF0YS5w YXJhbGxlbF93b3JrZXJzID09ICcnIG9yIGRhdGEucGFyYWxsZWxfd29ya2VycyA9PSBOb25lKSBh bmQgZGF0YS5wYXJhbGxlbF93b3JrZXJzICE9IG9fZGF0YS5wYXJhbGxlbF93b3JrZXJzICV9CitB TFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAg UkVTRVQgKHBhcmFsbGVsX3dvcmtlcnMpOworeyUgZWxpZiBkYXRhLnBhcmFsbGVsX3dvcmtlcnMg aXMgZGVmaW5lZCBhbmQgZGF0YS5wYXJhbGxlbF93b3JrZXJzICE9IG9fZGF0YS5wYXJhbGxlbF93 b3JrZXJzICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5u YW1lKX19CisgICAgU0VUIChwYXJhbGxlbF93b3JrZXJzPXt7ZGF0YS5wYXJhbGxlbF93b3JrZXJz fX0pOworCit7JSBlbmRpZiAlfQorCit7IyMgY2hhbmdlIHRvYXN0X3R1cGxlX3RhcmdldCBzZXR0 aW5ncyAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjI30KK3slIGlmIChkYXRhLnRvYXN0X3R1cGxlX3RhcmdldCA9PSAnJyBvciBkYXRhLnRv YXN0X3R1cGxlX3RhcmdldCA9PSBOb25lKSBhbmQgZGF0YS50b2FzdF90dXBsZV90YXJnZXQgIT0g b19kYXRhLnRvYXN0X3R1cGxlX3RhcmdldCAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQo ZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQorICAgIFJFU0VUICh0b2FzdF90dXBsZV90YXJnZXQp OworeyUgZWxpZiBkYXRhLnRvYXN0X3R1cGxlX3RhcmdldCBpcyBkZWZpbmVkIGFuZCBkYXRhLnRv YXN0X3R1cGxlX3RhcmdldCAhPSBvX2RhdGEudG9hc3RfdHVwbGVfdGFyZ2V0ICV9CitBTFRFUiBU QUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgU0VUICh0 b2FzdF90dXBsZV90YXJnZXQ9e3tkYXRhLnRvYXN0X3R1cGxlX3RhcmdldH19KTsKKworeyUgZW5k aWYgJX0KKworeyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgVGFibGUgQXV0 b1ZhY3V1bSBzZXR0aW5ncyAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQor eyUgaWYgZGF0YS52YWN1dW1fdGFibGUgaXMgZGVmaW5lZCBhbmQgZGF0YS52YWN1dW1fdGFibGUu c2V0X3ZhbHVlc3xsZW5ndGggPiAwICV9Cit7JSBzZXQgaGFzX3ZhY3V1bV9zZXQgPSB0cnVlICV9 Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS52YWN1dW1fdGFibGUgaXMgZGVmaW5lZCBhbmQgZGF0 YS52YWN1dW1fdGFibGUucmVzZXRfdmFsdWVzfGxlbmd0aCA+IDAgJX0KK3slIHNldCBoYXNfdmFj dXVtX3Jlc2V0ID0gdHJ1ZSAlfQoreyUgZW5kaWYgJX0KK3slIGlmIG9fZGF0YS5hdXRvdmFjdXVt X2N1c3RvbSBhbmQgZGF0YS5hdXRvdmFjdXVtX2N1c3RvbSA9PSBmYWxzZSAlfQorQUxURVIgVEFC TEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fSBSRVNFVCAoCisgICAg YXV0b3ZhY3V1bV9lbmFibGVkLAorICAgIGF1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3Is CisgICAgYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZCwKKyAgICBhdXRvdmFjdXVtX2ZyZWV6 ZV9tYXhfYWdlLAorICAgIGF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXksCisgICAgYXV0b3Zh Y3V1bV92YWN1dW1fY29zdF9saW1pdCwKKyAgICBhdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0 b3IsCisgICAgYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkLAorICAgIGF1dG92YWN1dW1fZnJl ZXplX21pbl9hZ2UsCisgICAgYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlCispOworeyUgZWxz ZSAlfQoreyUgaWYgZGF0YS5hdXRvdmFjdXVtX2VuYWJsZWQgaXMgZGVmaW5lZCBvciBoYXNfdmFj dXVtX3NldCAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEu bmFtZSl9fSBTRVQgKAoreyUgaWYgZGF0YS5hdXRvdmFjdXVtX2VuYWJsZWQgaXMgZGVmaW5lZCBh bmQgZGF0YS5hdXRvdmFjdXVtX2VuYWJsZWQgIT0gb19kYXRhLmF1dG92YWN1dW1fZW5hYmxlZCAl fQorICAgIGF1dG92YWN1dW1fZW5hYmxlZCA9IHslIGlmIGRhdGEuYXV0b3ZhY3V1bV9lbmFibGVk ICV9dHJ1ZXslIGVsc2UgJX1mYWxzZXslIGVuZGlmICV9eyUgaWYgaGFzX3ZhY3V1bV9zZXQgJX0s Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGlmIGhhc192YWN1dW1fc2V0ICV9Cit7JSBm b3Igb3B0IGluIGRhdGEudmFjdXVtX3RhYmxlLnNldF92YWx1ZXMgJX17JSBpZiBvcHQubmFtZSBh bmQgb3B0LnZhbHVlICV9CisgICAge3tvcHQubmFtZX19ID0ge3tvcHQudmFsdWV9fXslIGlmIG5v dCBsb29wLmxhc3QgJX0sCit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQor eyUgZW5kaWYgJX0KKworKTsKK3slIGVuZGlmICV9Cit7JSBpZiBoYXNfdmFjdXVtX3Jlc2V0ICV9 CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19IFJF U0VUICgKK3slIGZvciBvcHQgaW4gZGF0YS52YWN1dW1fdGFibGUucmVzZXRfdmFsdWVzICV9eyUg aWYgb3B0Lm5hbWUgJX0KKyAgICB7e29wdC5uYW1lfX17JSBpZiBub3QgbG9vcC5sYXN0ICV9LAor eyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KKworKTsKK3slIGVuZGlmICV9 Cit7JSBlbmRpZiAlfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7 IyMgVG9hc3QgdGFibGUgQXV0b1ZhY3V1bSBzZXR0aW5ncyAjI30KK3sjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0YS52YWN1dW1fdG9hc3QgaXMgZGVmaW5l ZCBhbmQgZGF0YS52YWN1dW1fdG9hc3Quc2V0X3ZhbHVlc3xsZW5ndGggPiAwICV9Cit7JSBzZXQg aGFzX3ZhY3V1bV90b2FzdF9zZXQgPSB0cnVlICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS52 YWN1dW1fdG9hc3QgaXMgZGVmaW5lZCBhbmQgZGF0YS52YWN1dW1fdG9hc3QucmVzZXRfdmFsdWVz fGxlbmd0aCA+IDAgJX0KK3slIHNldCBoYXNfdmFjdXVtX3RvYXN0X3Jlc2V0ID0gdHJ1ZSAlfQor eyUgZW5kaWYgJX0KK3slIGlmIG9fZGF0YS50b2FzdF9hdXRvdmFjdXVtIGFuZCBkYXRhLnRvYXN0 X2F1dG92YWN1dW0gPT0gZmFsc2UgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEu c2NoZW1hLCBkYXRhLm5hbWUpfX0gUkVTRVQgKAorICAgIHRvYXN0LmF1dG92YWN1dW1fZW5hYmxl ZCwKKyAgICB0b2FzdC5hdXRvdmFjdXVtX2ZyZWV6ZV9tYXhfYWdlLAorICAgIHRvYXN0LmF1dG92 YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXksCisgICAgdG9hc3QuYXV0b3ZhY3V1bV92YWN1dW1fY29z dF9saW1pdCwKKyAgICB0b2FzdC5hdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IsCisgICAg dG9hc3QuYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkLAorICAgIHRvYXN0LmF1dG92YWN1dW1f ZnJlZXplX21pbl9hZ2UsCisgICAgdG9hc3QuYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlLAor ICAgIHRvYXN0LmF1dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQsCisgICAgdG9hc3QuYXV0b3Zh Y3V1bV9hbmFseXplX3NjYWxlX2ZhY3RvcgorKTsKK3slIGVsc2UgJX0KK3slIGlmIGRhdGEudG9h c3RfYXV0b3ZhY3V1bV9lbmFibGVkIGlzIGRlZmluZWQgb3IgaGFzX3ZhY3V1bV90b2FzdF9zZXQg JX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0g U0VUICgKK3slIGlmIGRhdGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkIGlzIGRlZmluZWQgYW5k IGRhdGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkICE9IG9fZGF0YS50b2FzdF9hdXRvdmFjdXVt X2VuYWJsZWQgJX0KKyAgICB0b2FzdC5hdXRvdmFjdXVtX2VuYWJsZWQgPSB7JSBpZiBkYXRhLnRv YXN0X2F1dG92YWN1dW1fZW5hYmxlZCAlfXRydWV7JSBlbHNlICV9ZmFsc2V7JSBlbmRpZiAlfXsl IGlmIGhhc192YWN1dW1fdG9hc3Rfc2V0ICV9LAoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7 JSBpZiBoYXNfdmFjdXVtX3RvYXN0X3NldCAlfQoreyUgZm9yIG9wdCBpbiBkYXRhLnZhY3V1bV90 b2FzdC5zZXRfdmFsdWVzICV9eyUgaWYgb3B0Lm5hbWUgYW5kIG9wdC52YWx1ZSAlfQorICAgIHRv YXN0Lnt7b3B0Lm5hbWV9fSA9IHt7b3B0LnZhbHVlfX17JSBpZiBub3QgbG9vcC5sYXN0ICV9LAor eyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9CisKKyk7 Cit7JSBlbmRpZiAlfQoreyUgaWYgaGFzX3ZhY3V1bV90b2FzdF9yZXNldCAlfQorQUxURVIgVEFC TEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fSBSRVNFVCAoCit7JSBm b3Igb3B0IGluIGRhdGEudmFjdXVtX3RvYXN0LnJlc2V0X3ZhbHVlcyAlfXslIGlmIG9wdC5uYW1l ICV9CisgICAgdG9hc3Que3tvcHQubmFtZX19eyUgaWYgbm90IGxvb3AubGFzdCAlfSwKK3slIGVu ZGlmICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9CisKKyk7Cit7JSBlbmRpZiAlfQoreyUg ZW5kaWYgJX0KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjI30KK3sjIyBDaGFuZ2UgdGFibGUgY29tbWVudHMgIyN9Cit7IyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBpZiBkYXRhLmRlc2Ny aXB0aW9uIGlzIGRlZmluZWQgYW5kIGRhdGEuZGVzY3JpcHRpb24gIT0gb19kYXRhLmRlc2NyaXB0 aW9uICV9CitDT01NRU5UIE9OIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRh Lm5hbWUpfX0KKyAgSVMge3tkYXRhLmRlc2NyaXB0aW9ufHF0TGl0ZXJhbH19OworCit7JSBlbmRp ZiAlfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjfQoreyMjIFVwZGF0ZSB0YWJsZSBQcml2aWxlZ2VzICMjfQoreyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0YS5yZWxhY2wg JX0KK3slIGlmICdkZWxldGVkJyBpbiBkYXRhLnJlbGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0 YS5yZWxhY2wuZGVsZXRlZCAlfQore3sgUFJJVklMRUdFLlVOU0VUQUxMKGNvbm4sICdUQUJMRScs IHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQor eyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBkYXRhLnJlbGFjbCAlfQoreyUgZm9yIHBy aXYgaW4gZGF0YS5yZWxhY2wuY2hhbmdlZCAlfQore3sgUFJJVklMRUdFLlVOU0VUQUxMKGNvbm4s ICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBkYXRhLnNjaGVtYSkgfX0KK3t7IFBS SVZJTEVHRS5TRVQoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIHByaXYu d2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZv ciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdhZGRlZCcgaW4gZGF0YS5yZWxhY2wgJX0KK3slIGZv ciBwcml2IGluIGRhdGEucmVsYWNsLmFkZGVkICV9Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdU QUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYu d2l0aF9ncmFudCwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7 JSBlbmRpZiAlfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjfQoreyMjIFVwZGF0ZSB0YWJsZSBTZWN1cml0eUxhYmVsICMjfQoreyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0 YS5zZWNsYWJlbHMgYW5kIGRhdGEuc2VjbGFiZWxzfGxlbmd0aCA+IDAgJX0KK3slIHNldCBzZWNs YWJlbHMgPSBkYXRhLnNlY2xhYmVscyAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBh bmQgc2VjbGFiZWxzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxz LmRlbGV0ZWQgJX0KK3t7IFNFQ0xBQkVMLlVOU0VUKGNvbm4sICdUQUJMRScsIGRhdGEubmFtZSwg ci5wcm92aWRlciwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7 JSBpZiAnYWRkZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFkZGVkfGxlbmd0aCA+IDAg JX0KK3slIGZvciByIGluIHNlY2xhYmVscy5hZGRlZCAlfQore3sgU0VDTEFCRUwuU0VUKGNvbm4s ICdUQUJMRScsIGRhdGEubmFtZSwgci5wcm92aWRlciwgci5sYWJlbCwgZGF0YS5zY2hlbWEpIH19 Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gc2VjbGFiZWxz IGFuZCBzZWNsYWJlbHMuY2hhbmdlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJl bHMuY2hhbmdlZCAlfQore3sgU0VDTEFCRUwuU0VUKGNvbm4sICdUQUJMRScsIGRhdGEubmFtZSwg ci5wcm92aWRlciwgci5sYWJlbCwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVu ZGlmICV9CisKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3Rh Ymxlcy9zcWwvMTJfcGx1cy9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZXMv c3FsLzEyX3BsdXMvY3JlYXRlLnNxbAppbmRleCBjNTI4NjFiMGMuLjQ4NmJjMzA5MSAxMDA2NDQK LS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZXMvc3FsLzEyX3BsdXMvY3JlYXRlLnNxbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlcy9zcWwvMTJfcGx1cy9jcmVhdGUuc3FsCkBA IC0xNyw3ICsxNyw3IEBACiB7JSBzZXQgZW1wdHlfYnJhY2tldCA9ICJcbihcbikiJX0KIHslIGVu ZGlmICV9CiB7JSBzZXQgd2l0aF9jbGF1c2UgPSBmYWxzZSV9Ci17JSBpZiBkYXRhLmZpbGxmYWN0 b3Igb3IgZGF0YS5hdXRvdmFjdXVtX2N1c3RvbSBvciBkYXRhLmF1dG92YWN1dW1fZW5hYmxlZCBv ciBkYXRhLnRvYXN0X2F1dG92YWN1dW0gb3IgZGF0YS50b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQg b3IgKGRhdGEuYXV0b3ZhY3V1bV9lbmFibGVkIGFuZCBkYXRhLnZhY3V1bV90YWJsZXxsZW5ndGgg PiAwKSBvciAoZGF0YS50b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQgYW5kIGRhdGEudmFjdXVtX3Rv YXN0fGxlbmd0aCA+IDApICV9Cit7JSBpZiBkYXRhLmZpbGxmYWN0b3Igb3IgZGF0YS5wYXJhbGxl bF93b3JrZXJzIG9yIGRhdGEudG9hc3RfdHVwbGVfdGFyZ2V0IG9yIGRhdGEuYXV0b3ZhY3V1bV9j dXN0b20gb3IgZGF0YS5hdXRvdmFjdXVtX2VuYWJsZWQgb3IgZGF0YS50b2FzdF9hdXRvdmFjdXVt IG9yIGRhdGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkIG9yIChkYXRhLmF1dG92YWN1dW1fZW5h YmxlZCBhbmQgZGF0YS52YWN1dW1fdGFibGV8bGVuZ3RoID4gMCkgb3IgKGRhdGEudG9hc3RfYXV0 b3ZhY3V1bV9lbmFibGVkIGFuZCBkYXRhLnZhY3V1bV90b2FzdHxsZW5ndGggPiAwKSAlfQogeyUg c2V0IHdpdGhfY2xhdXNlID0gdHJ1ZSV9CiB7JSBlbmRpZiAlfQogQ1JFQVRFIHslIGlmIGRhdGEu cmVscGVyc2lzdGVuY2UgJX1VTkxPR0dFRCB7JSBlbmRpZiAlfVRBQkxFIHt7Y29ubnxxdElkZW50 KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX17e2VtcHR5X2JyYWNrZXR9fQpAQCAtODYsNyArODYs MTMgQEAgQ0FDSEUge3tjLnNlcWNhY2hlfGludH19IHslIGVuZGlmICV9CiB7JSBzZXQgYWRkX2Nv bW1hID0gZmFsc2UlfQogV0lUSCAoCiB7JSBpZiBkYXRhLmZpbGxmYWN0b3IgJX17JSBzZXQgYWRk X2NvbW1hID0gdHJ1ZSV9Ci0gICAgRklMTEZBQ1RPUiA9IHt7IGRhdGEuZmlsbGZhY3RvciB9fXsl IGVuZGlmICV9eyUgaWYgZGF0YS5hdXRvdmFjdXVtX2N1c3RvbSAlfQorICAgIEZJTExGQUNUT1Ig PSB7eyBkYXRhLmZpbGxmYWN0b3IgfX17JSBlbmRpZiAlfXslIGlmIGRhdGEucGFyYWxsZWxfd29y a2VycyAlfQoreyUgaWYgYWRkX2NvbW1hICV9LAoreyUgZW5kaWYgJX0KKyAgICBwYXJhbGxlbF93 b3JrZXJzID0ge3sgZGF0YS5wYXJhbGxlbF93b3JrZXJzIH19eyUgc2V0IGFkZF9jb21tYSA9IHRy dWUlfXslIGVuZGlmICV9eyUgaWYgZGF0YS50b2FzdF90dXBsZV90YXJnZXQgJX0KK3slIGlmIGFk ZF9jb21tYSAlfSwKK3slIGVuZGlmICV9CisgICAgdG9hc3RfdHVwbGVfdGFyZ2V0ID0ge3sgZGF0 YS50b2FzdF90dXBsZV90YXJnZXQgfX17JSBzZXQgYWRkX2NvbW1hID0gdHJ1ZSV9eyUgZW5kaWYg JX17JSBpZiBkYXRhLmF1dG92YWN1dW1fY3VzdG9tICV9CiB7JSBpZiBhZGRfY29tbWEgJX0sCiB7 JSBlbmRpZiAlfQogICAgIGF1dG92YWN1dW1fZW5hYmxlZCA9IHslIGlmIGRhdGEuYXV0b3ZhY3V1 bV9lbmFibGVkICV9VFJVRXslIGVsc2UgJX1GQUxTRXslIGVuZGlmICV9eyUgc2V0IGFkZF9jb21t YSA9IHRydWUlfXslIGVuZGlmICV9eyUgaWYgZGF0YS50b2FzdF9hdXRvdmFjdXVtICV9CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlcy9zcWwvMTJfcGx1cy9wcm9wZXJ0aWVz LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGVzL3NxbC8xMl9wbHVzL3Byb3BlcnRpZXMu c3FsCmluZGV4IGU3ZDE5MDU1ZC4uM2Q5YjFmNjIyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL3RhYmxlcy9zcWwvMTJfcGx1cy9wcm9wZXJ0aWVzLnNxbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL3RhYmxlcy9zcWwvMTJfcGx1cy9wcm9wZXJ0aWVzLnNxbApAQCAtMjcsNiArMjcs OCBAQCBTRUxFQ1QgcmVsLm9pZCwgcmVsLnJlbG5hbWUgQVMgbmFtZSwgcmVsLnJlbHRhYmxlc3Bh Y2UgQVMgc3Bjb2lkLHJlbC5yZWxhY2wgQVMgcgogCQlXSEVSRSBpLmluaHJlbGlkID0gcmVsLm9p ZCkgQVMgaW5oZXJpdGVkX3RhYmxlc19jbnQsCiAJKENBU0UgV0hFTiByZWwucmVscGVyc2lzdGVu Y2UgPSAndScgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyByZWxwZXJzaXN0ZW5jZSwKIAlz dWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2ZpbGxm YWN0b3I9KFswLTldKiknKSBBUyBmaWxsZmFjdG9yLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJp bmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAncGFyYWxsZWxfd29ya2Vycz0oWzAtOV0qKScp IEFTIHBhcmFsbGVsX3dvcmtlcnMsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVs b3B0aW9ucywgJywnKSBGUk9NICd0b2FzdF90dXBsZV90YXJnZXQ9KFswLTldKiknKSBBUyB0b2Fz dF90dXBsZV90YXJnZXQsCiAJKENBU0UgV0hFTiAoc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhy ZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2VuYWJsZWQ9KFthLXp8MC05XSop JykgPSAndHJ1ZScpCiAJICBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIGF1dG92YWN1dW1f ZW5hYmxlZCwKIAlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcp IEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZD0oWzAtOV0qKScpIEFTIGF1dG92YWN1 dW1fdmFjdXVtX3RocmVzaG9sZCwKQEAgLTU2LDcgKzU4LDcgQEAgU0VMRUNUIHJlbC5vaWQsIHJl bC5yZWxuYW1lIEFTIG5hbWUsIHJlbC5yZWx0YWJsZXNwYWNlIEFTIHNwY29pZCxyZWwucmVsYWNs IEFTIHIKIAl0eXAudHlwcmVsaWQgQVMgdHlwb2lkLAogCShDQVNFIFdIRU4gcmVsLnJlbHRvYXN0 cmVsaWQgPSAwIFRIRU4gZmFsc2UgRUxTRSB0cnVlIEVORCkgQVMgaGFzdG9hc3R0YWJsZSwKICAg ICAtLSBBZGRlZCBmb3IgcGdBZG1pbjQKLQkoQ0FTRSBXSEVOIGFycmF5X2xlbmd0aChyZWwucmVs b3B0aW9ucywgMSkgPiAwIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgYXV0b3ZhY3V1bV9j dXN0b20sCisJKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBsaWtlICclYXV0 b3ZhY3V1bSUnKSBBUyBhdXRvdmFjdXVtX2N1c3RvbSwKIAkoQ0FTRSBXSEVOIGFycmF5X2xlbmd0 aCh0c3QucmVsb3B0aW9ucywgMSkgPiAwIEFORCByZWwucmVsdG9hc3RyZWxpZCAhPSAwIFRIRU4g dHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgdG9hc3RfYXV0b3ZhY3V1bSwKIAogCShTRUxFQ1QgYXJy YXlfYWdnKHByb3ZpZGVyIHx8ICc9JyB8fCBsYWJlbCkgRlJPTSBwZ19zZWNsYWJlbHMgc2wxIFdI RVJFIHNsMS5vYmpvaWQ9cmVsLm9pZCBBTkQgc2wxLm9ianN1YmlkPTApIEFTIHNlY2xhYmVscywK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGVzL3NxbC8xMl9wbHVzL3VwZGF0 ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlcy9zcWwvMTJfcGx1cy91cGRhdGUuc3Fs CmluZGV4IDNlZDEyMzAyZC4uZTI0MTVhZDJhIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL3RhYmxlcy9zcWwvMTJfcGx1cy91cGRhdGUuc3FsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvdGFibGVzL3NxbC8xMl9wbHVzL3VwZGF0ZS5zcWwKQEAgLTYxLDYgKzYxLDI5IEBAIEFMVEVS IFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KICAgICBSRVNF VCAoRklMTEZBQ1RPUik7CiAKIHslIGVuZGlmICV9CisKK3sjIyBjaGFuZ2UgcGFyYWxsZWxfd29y a2VycyBzZXR0aW5ncyAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjI30KK3slIGlmIChkYXRhLnBhcmFsbGVsX3dvcmtlcnMgPT0gJycgb3Ig ZGF0YS5wYXJhbGxlbF93b3JrZXJzID09IE5vbmUpIGFuZCBkYXRhLnBhcmFsbGVsX3dvcmtlcnMg IT0gb19kYXRhLnBhcmFsbGVsX3dvcmtlcnMgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50 KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAgICBSRVNFVCAocGFyYWxsZWxfd29ya2Vycyk7 Cit7JSBlbGlmIGRhdGEucGFyYWxsZWxfd29ya2VycyBpcyBkZWZpbmVkIGFuZCBkYXRhLnBhcmFs bGVsX3dvcmtlcnMgIT0gb19kYXRhLnBhcmFsbGVsX3dvcmtlcnMgJX0KK0FMVEVSIFRBQkxFIHt7 Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAgICBTRVQgKHBhcmFsbGVs X3dvcmtlcnM9e3tkYXRhLnBhcmFsbGVsX3dvcmtlcnN9fSk7CisKK3slIGVuZGlmICV9CisKK3sj IyBjaGFuZ2UgdG9hc3RfdHVwbGVfdGFyZ2V0IHNldHRpbmdzICMjfQoreyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgKGRhdGEudG9h c3RfdHVwbGVfdGFyZ2V0ID09ICcnIG9yIGRhdGEudG9hc3RfdHVwbGVfdGFyZ2V0ID09IE5vbmUp IGFuZCBkYXRhLnRvYXN0X3R1cGxlX3RhcmdldCAhPSBvX2RhdGEudG9hc3RfdHVwbGVfdGFyZ2V0 ICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19 CisgICAgUkVTRVQgKHRvYXN0X3R1cGxlX3RhcmdldCk7Cit7JSBlbGlmIGRhdGEudG9hc3RfdHVw bGVfdGFyZ2V0IGlzIGRlZmluZWQgYW5kIGRhdGEudG9hc3RfdHVwbGVfdGFyZ2V0ICE9IG9fZGF0 YS50b2FzdF90dXBsZV90YXJnZXQgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEu c2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAgICBTRVQgKHRvYXN0X3R1cGxlX3RhcmdldD17e2RhdGEu dG9hc3RfdHVwbGVfdGFyZ2V0fX0pOworCit7JSBlbmRpZiAlfQorCiB7IyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjI30KIHsjIyBUYWJsZSBBdXRvVmFjdXVtIHNldHRpbmdzICMjfQogeyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL3RhYmxlcy9zcWwvOS42X3BsdXMvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvdGFibGVzL3NxbC85LjZfcGx1cy9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMC4uYTc0NDdlMzZiCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy90YWJsZXMvc3FsLzkuNl9wbHVzL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwxNzQgQEAK K3slIGltcG9ydCAnbWFjcm9zL3NjaGVtYXMvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJFTCAl fQoreyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9wcml2aWxlZ2UubWFjcm9zJyBhcyBQUklWSUxF R0UgJX0KK3slIGltcG9ydCAnbWFjcm9zL3ZhcmlhYmxlLm1hY3JvcycgYXMgVkFSSUFCTEUgJX0K K3slIGltcG9ydCAnY29sdW1ucy9tYWNyb3Mvc2VjdXJpdHkubWFjcm9zJyBhcyBDT0xVTU5fU0VD TEFCRUwgJX0KK3slIGltcG9ydCAnY29sdW1ucy9tYWNyb3MvcHJpdmlsZWdlLm1hY3JvcycgYXMg Q09MVU1OX1BSSVZJTEVHRSAlfQoreyUgaW1wb3J0ICd0YWJsZXMvc3FsL21hY3Jvcy9jb25zdHJh aW50cy5tYWNybycgYXMgQ09OU1RSQUlOVFMgJX0KK3slIGltcG9ydCAndHlwZXMvbWFjcm9zL2dl dF9mdWxsX3R5cGVfc3FsX2Zvcm1hdC5tYWNyb3MnIGFzIEdFVF9UWVBFICV9Cit7Iz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jfQoreyM9PT09PT0gTUFJTiBUQUJM RSBURU1QTEFURSBTVEFSVFMgSEVSRSA9PT09PT0jfQoreyM9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09I30KK3sjCisgSWYgdXNlciBoYXMgbm90IHByb3ZpZGVkIGFu eSBkZXRhaWxzIGJ1dCBvbmx5IG5hbWUgdGhlbgorIGFkZCBlbXB0eSBicmFja2V0IHdpdGggdGFi bGUgbmFtZQorI30KK3slIHNldCBlbXB0eV9icmFja2V0ID0gIiIlfQoreyUgaWYgZGF0YS5jb2xs X2luaGVyaXRzfGxlbmd0aCA9PSAwIGFuZCAgZGF0YS5jb2x1bW5zfGxlbmd0aCA9PSAwIGFuZCBu b3QgZGF0YS50eXBuYW1lIGFuZCBub3QgZGF0YS5saWtlX3JlbGF0aW9uIGFuZCBkYXRhLnByaW1h cnlfa2V5fGxlbmd0aCA9PSAwIGFuZCBkYXRhLnVuaXF1ZV9jb25zdHJhaW50fGxlbmd0aCA9PSAw IGFuZCBkYXRhLmZvcmVpZ25fa2V5fGxlbmd0aCA9PSAwIGFuZCBkYXRhLmNoZWNrX2NvbnN0cmFp bnR8bGVuZ3RoID09IDAgYW5kIGRhdGEuZXhjbHVkZV9jb25zdHJhaW50fGxlbmd0aCA9PSAwICV9 Cit7JSBzZXQgZW1wdHlfYnJhY2tldCA9ICJcbihcbikiJX0KK3slIGVuZGlmICV9CitDUkVBVEUg eyUgaWYgZGF0YS5yZWxwZXJzaXN0ZW5jZSAlfVVOTE9HR0VEIHslIGVuZGlmICV9VEFCTEUge3tj b25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fXt7ZW1wdHlfYnJhY2tldH19Cit7 JSBpZiBkYXRhLnR5cG5hbWUgJX0KKyAgICBPRiB7eyBkYXRhLnR5cG5hbWUgfX0KK3slIGVuZGlm ICV9Cit7JSBpZiBkYXRhLmxpa2VfcmVsYXRpb24gb3IgZGF0YS5jb2xsX2luaGVyaXRzIG9yIGRh dGEuY29sdW1uc3xsZW5ndGggPiAwIG9yIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3RoID4gMCBvciBk YXRhLnVuaXF1ZV9jb25zdHJhaW50fGxlbmd0aCA+IDAgb3IgZGF0YS5mb3JlaWduX2tleXxsZW5n dGggPiAwIG9yIGRhdGEuY2hlY2tfY29uc3RyYWludHxsZW5ndGggPiAwIG9yIGRhdGEuZXhjbHVk ZV9jb25zdHJhaW50fGxlbmd0aCA+IDAgJX0KKygKK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLmxp a2VfcmVsYXRpb24gJX0KKyAgICBMSUtFIHt7IGRhdGEubGlrZV9yZWxhdGlvbiB9fXslIGlmIGRh dGEubGlrZV9kZWZhdWx0X3ZhbHVlICV9CisKKyAgICAgICAgSU5DTFVESU5HIERFRkFVTFRTeyUg ZW5kaWYgJX17JSBpZiBkYXRhLmxpa2VfY29uc3RyYWludHMgJX0KKworICAgICAgICBJTkNMVURJ TkcgQ09OU1RSQUlOVFN7JSBlbmRpZiAlfXslIGlmIGRhdGEubGlrZV9pbmRleGVzICV9CisKKyAg ICAgICAgSU5DTFVESU5HIElOREVYRVN7JSBlbmRpZiAlfXslIGlmIGRhdGEubGlrZV9zdG9yYWdl ICV9CisKKyAgICAgICAgSU5DTFVESU5HIFNUT1JBR0V7JSBlbmRpZiAlfXslIGlmIGRhdGEubGlr ZV9jb21tZW50cyAlfQorCisgICAgICAgIElOQ0xVRElORyBDT01NRU5UU3slIGVuZGlmICV9eyUg aWYgZGF0YS5jb2x1bW5zfGxlbmd0aCA+IDAgJX0sCit7JSBlbmRpZiAlfQorCit7JSBlbmRpZiAl fQoreyMjIyBBZGQgY29sdW1ucyAjIyN9Cit7JSBpZiBkYXRhLmNvbHVtbnMgYW5kIGRhdGEuY29s dW1uc3xsZW5ndGggPiAwICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbHVtbnMgJX0KK3slIGlmIGMu bmFtZSBhbmQgYy5jbHR5cGUgJX0KKyAgICB7JSBpZiBjLmluaGVyaXRlZGZyb210YWJsZSAlfS0t IEluaGVyaXRlZCBmcm9tIHRhYmxlIHt7Yy5pbmhlcml0ZWRmcm9tdGFibGV9fTogeyUgZWxpZiBj LmluaGVyaXRlZGZyb210eXBlICV9LS0gSW5oZXJpdGVkIGZyb20gdHlwZSB7e2MuaW5oZXJpdGVk ZnJvbXR5cGV9fTogeyUgZW5kaWYgJX17e2Nvbm58cXRJZGVudChjLm5hbWUpfX0geyUgaWYgaXNf c3FsICV9e3tjLmRpc3BsYXl0eXBuYW1lfX17JSBlbHNlICV9e3sgR0VUX1RZUEUuQ1JFQVRFX1RZ UEVfU1FMKGNvbm4sIGMuY2x0eXBlLCBjLmF0dGxlbiwgYy5hdHRwcmVjaXNpb24sIGMuaGFzU3Fy QnJhY2tldCkgfX17JSBlbmRpZiAlfXslIGlmIGMuY29sbHNwY25hbWUgJX0gQ09MTEFURSB7e2Mu Y29sbHNwY25hbWV9fXslIGVuZGlmICV9eyUgaWYgYy5hdHRub3RudWxsICV9IE5PVCBOVUxMeyUg ZW5kaWYgJX17JSBpZiBjLmRlZnZhbCBpcyBkZWZpbmVkIGFuZCBjLmRlZnZhbCBpcyBub3Qgbm9u ZSBhbmQgYy5kZWZ2YWwgIT0gJycgJX0gREVGQVVMVCB7e2MuZGVmdmFsfX17JSBlbmRpZiAlfQor eyUgaWYgbm90IGxvb3AubGFzdCAlfSwKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyUgZW5k Zm9yICV9Cit7JSBlbmRpZiAlfQoreyMgTWFjcm8gdG8gcmVuZGVyIGZvciBjb25zdHJhaW50cyAj fQoreyUgaWYgZGF0YS5wcmltYXJ5X2tleXxsZW5ndGggPiAwICV9eyUgaWYgZGF0YS5jb2x1bW5z fGxlbmd0aCA+IDAgJX0seyUgZW5kaWYgJX0KK3t7Q09OU1RSQUlOVFMuUFJJTUFSWV9LRVkoY29u biwgZGF0YS5wcmltYXJ5X2tleVswXSl9fXslIGVuZGlmICV9eyUgaWYgZGF0YS51bmlxdWVfY29u c3RyYWludHxsZW5ndGggPiAwICV9eyUgaWYgZGF0YS5jb2x1bW5zfGxlbmd0aCA+IDAgb3IgZGF0 YS5wcmltYXJ5X2tleXxsZW5ndGggPiAwICV9LHslIGVuZGlmICV9Cit7e0NPTlNUUkFJTlRTLlVO SVFVRShjb25uLCBkYXRhLnVuaXF1ZV9jb25zdHJhaW50KX19eyUgZW5kaWYgJX17JSBpZiBkYXRh LmZvcmVpZ25fa2V5fGxlbmd0aCA+IDAgJX17JSBpZiBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCBv ciBkYXRhLnByaW1hcnlfa2V5fGxlbmd0aCA+IDAgb3IgZGF0YS51bmlxdWVfY29uc3RyYWludHxs ZW5ndGggPiAwICV9LHslIGVuZGlmICV9Cit7e0NPTlNUUkFJTlRTLkZPUkVJR05fS0VZKGNvbm4s IGRhdGEuZm9yZWlnbl9rZXkpfX17JSBlbmRpZiAlfXslIGlmIGRhdGEuY2hlY2tfY29uc3RyYWlu dHxsZW5ndGggPiAwICV9eyUgaWYgZGF0YS5jb2x1bW5zfGxlbmd0aCA+IDAgb3IgZGF0YS5wcmlt YXJ5X2tleXxsZW5ndGggPiAwIG9yIGRhdGEudW5pcXVlX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCBv ciBkYXRhLmZvcmVpZ25fa2V5fGxlbmd0aCA+IDAgJX0seyUgZW5kaWYgJX0KK3t7Q09OU1RSQUlO VFMuQ0hFQ0soY29ubiwgZGF0YS5jaGVja19jb25zdHJhaW50KX19eyUgZW5kaWYgJX17JSBpZiBk YXRhLmV4Y2x1ZGVfY29uc3RyYWludHxsZW5ndGggPiAwICV9eyUgaWYgZGF0YS5jb2x1bW5zfGxl bmd0aCA+IDAgb3IgZGF0YS5wcmltYXJ5X2tleXxsZW5ndGggPiAwIG9yIGRhdGEudW5pcXVlX2Nv bnN0cmFpbnR8bGVuZ3RoID4gMCBvciBkYXRhLmZvcmVpZ25fa2V5fGxlbmd0aCA+IDAgb3IgZGF0 YS5jaGVja19jb25zdHJhaW50fGxlbmd0aCA+IDAgJX0seyUgZW5kaWYgJX0KK3t7Q09OU1RSQUlO VFMuRVhDTFVERShjb25uLCBkYXRhLmV4Y2x1ZGVfY29uc3RyYWludCl9fXslIGVuZGlmICV9Cit7 JSBpZiBkYXRhLmxpa2VfcmVsYXRpb24gb3IgZGF0YS5jb2xsX2luaGVyaXRzIG9yIGRhdGEuY29s dW1uc3xsZW5ndGggPiAwIG9yIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3RoID4gMCBvciBkYXRhLnVu aXF1ZV9jb25zdHJhaW50fGxlbmd0aCA+IDAgb3IgZGF0YS5mb3JlaWduX2tleXxsZW5ndGggPiAw IG9yIGRhdGEuY2hlY2tfY29uc3RyYWludHxsZW5ndGggPiAwIG9yIGRhdGEuZXhjbHVkZV9jb25z dHJhaW50fGxlbmd0aCA+IDAgJX0KKworKXslIGVuZGlmICV9eyUgaWYgZGF0YS5yZWxraW5kIGlz IGRlZmluZWQgYW5kIGRhdGEucmVsa2luZCA9PSAncCcgJX0gUEFSVElUSU9OIEJZIHt7IGRhdGEu cGFydGl0aW9uX3NjaGVtZSB9fSB7JSBlbmRpZiAlfQorCit7IyMjIElmIHdlIGFyZSBpbmhlcml0 aW5nIGl0IGZyb20gYW5vdGhlciB0YWJsZShzKSAjIyN9Cit7JSBpZiBkYXRhLmNvbGxfaW5oZXJp dHMgJX0KKyAgICBJTkhFUklUUyAoeyUgZm9yIHZhbCBpbiBkYXRhLmNvbGxfaW5oZXJpdHMgJX17 JSBpZiBsb29wLmluZGV4ICE9IDEgJX0sIHslIGVuZGlmICV9e3t2YWx9fXslIGVuZGZvciAlfSkK K3slIGVuZGlmICV9CitXSVRIICgKKyAgICBPSURTID0geyUgaWYgZGF0YS5yZWxoYXNvaWRzICV9 VFJVRXslIGVsc2UgJX1GQUxTRXslIGVuZGlmICV9eyUgaWYgZGF0YS5maWxsZmFjdG9yICV9LAor ICAgIEZJTExGQUNUT1IgPSB7eyBkYXRhLmZpbGxmYWN0b3IgfX17JSBlbmRpZiAlfXslIGlmIGRh dGEuYXV0b3ZhY3V1bV9jdXN0b20gJX0seyUgaWYgZGF0YS5wYXJhbGxlbF93b3JrZXJzIGlzIGRl ZmluZWQgYW5kIGRhdGEucGFyYWxsZWxfd29ya2VycyAhPSAnJyAlfSwKKyAgICBwYXJhbGxlbF93 b3JrZXJzID0ge3sgZGF0YS5wYXJhbGxlbF93b3JrZXJzIH19eyUgZW5kaWYgJX0KKyAgICBhdXRv dmFjdXVtX2VuYWJsZWQgPSB7JSBpZiBkYXRhLmF1dG92YWN1dW1fZW5hYmxlZCAlfVRSVUV7JSBl bHNlICV9RkFMU0V7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgZGF0YS50b2FzdF9hdXRvdmFj dXVtICV9LAorICAgIHRvYXN0LmF1dG92YWN1dW1fZW5hYmxlZCA9IHslIGlmIGRhdGEudG9hc3Rf YXV0b3ZhY3V1bV9lbmFibGVkICV9VFJVRXslIGVsc2UgJX1GQUxTRXslIGVuZGlmICV9Cit7JSBl bmRpZiAlfXslIGlmIGRhdGEuYXV0b3ZhY3V1bV9lbmFibGVkIGFuZCBkYXRhLnZhY3V1bV90YWJs ZXxsZW5ndGggPiAwICV9Cit7JSBmb3Igb3B0IGluIGRhdGEudmFjdXVtX3RhYmxlICV9eyUgaWYg b3B0Lm5hbWUgYW5kIG9wdC52YWx1ZSAlfQorLAorICAgIHt7b3B0Lm5hbWV9fSA9IHt7b3B0LnZh bHVlfX17JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9eyUgZW5kaWYgJX17JSBpZiBkYXRhLnRvYXN0 X2F1dG92YWN1dW1fZW5hYmxlZCBhbmQgZGF0YS52YWN1dW1fdG9hc3R8bGVuZ3RoID4gMCAlfQor eyUgZm9yIG9wdCBpbiBkYXRhLnZhY3V1bV90b2FzdCAlfXslIGlmIG9wdC5uYW1lIGFuZCBvcHQu dmFsdWUgJX0KKywKKyAgICB0b2FzdC57e29wdC5uYW1lfX0gPSB7e29wdC52YWx1ZX19eyUgZW5k aWYgJX0KK3slIGVuZGZvciAlfXslIGVuZGlmICV9CisKK3sjIyMgU1FMIGZvciBUYWJsZXNwYWNl ICMjI30KK3slIGlmIGRhdGEuc3BjbmFtZSAlfQorKQorVEFCTEVTUEFDRSB7eyBjb25ufHF0SWRl bnQoZGF0YS5zcGNuYW1lKSB9fTsKK3slIGVsc2UgJX0KKyk7Cit7JSBlbmRpZiAlfQoreyMjIyBB bHRlciBTUUwgZm9yIE93bmVyICMjI30KK3slIGlmIGRhdGEucmVsb3duZXIgJX0KKworQUxURVIg VEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQorICAgIE9XTkVS IHRvIHt7Y29ubnxxdElkZW50KGRhdGEucmVsb3duZXIpfX07Cit7JSBlbmRpZiAlfQoreyMjIyBT ZWN1cml0eSBMYWJlbHMgb24gVGFibGUgIyMjfQoreyUgaWYgZGF0YS5zZWNsYWJlbHMgYW5kIGRh dGEuc2VjbGFiZWxzfGxlbmd0aCA+IDAgJX0KKworeyUgZm9yIHIgaW4gZGF0YS5zZWNsYWJlbHMg JX0KK3t7IFNFQ0xBQkVMLlNFVChjb25uLCAnVEFCTEUnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIs IHIubGFiZWwsIGRhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyMj IyAgQUNMIG9uIFRhYmxlICMjI30KK3slIGlmIGRhdGEucmVsYWNsICV9CisKK3slIGZvciBwcml2 IGluIGRhdGEucmVsYWNsICV9Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUQUJMRScsIHByaXYu Z3JhbnRlZSwgZGF0YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCwg ZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7IyMjIFNRTCBmb3Ig Q09NTUVOVCAjIyN9Cit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CitDT01NRU5UIE9OIFRBQkxF IHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAgICBJUyB7e2RhdGEu ZGVzY3JpcHRpb258cXRMaXRlcmFsfX07Cit7JSBlbmRpZiAlfQoreyM9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sjPT09PT09IE1BSU4gVEFCTEUgVEVNUExB VEUgRU5EUyBIRVJFID09PT09PSN9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0jfQoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09I30KK3sjICBDT0xVTU4gU1BFQ0lGSUMgVEVNUExBVEVTIFNUQVJUUyBIRVJFICAgICN9Cit7 Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jfQoreyUgaWYgZGF0 YS5jb2x1bW5zIGFuZCBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCAlfQoreyUgZm9yIGMgaW4gZGF0 YS5jb2x1bW5zICV9Cit7JSBpZiBjLmRlc2NyaXB0aW9uICV9CisKK0NPTU1FTlQgT04gQ09MVU1O IHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUsIGMubmFtZSl9fQorICAgIElT IHt7Yy5kZXNjcmlwdGlvbnxxdExpdGVyYWx9fTsKK3slIGVuZGlmICV9Cit7IyMjICBBZGQgdmFy aWFibGVzIHRvIGNvbHVtbiAjIyN9Cit7JSBpZiBjLmF0dG9wdGlvbnMgYW5kIGMuYXR0b3B0aW9u c3xsZW5ndGggPiAwICV9CisKK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1h LCBkYXRhLm5hbWUpfX0KKyAgICB7eyBWQVJJQUJMRS5TRVQoY29ubiwgJ0NPTFVNTicsIGMubmFt ZSwgYy5hdHRvcHRpb25zKSB9fQorCit7JSBlbmRpZiAlfQoreyMjIyAgQWx0ZXIgY29sdW1uIHN0 YXRpc3RpY3MgdmFsdWUgIyMjfQoreyUgaWYgYy5hdHRzdGF0dGFyZ2V0IGlzIGRlZmluZWQgYW5k IGMuYXR0c3RhdHRhcmdldCA+IC0xICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRh LnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgQUxURVIgQ09MVU1OIHt7Y29ubnxxdFR5cGVJZGVu dChjLm5hbWUpfX0gU0VUIFNUQVRJU1RJQ1Mge3tjLmF0dHN0YXR0YXJnZXR9fTsKKworeyUgZW5k aWYgJX0KK3sjIyMgIEFsdGVyIGNvbHVtbiBzdG9yYWdlIHZhbHVlICMjI30KK3slIGlmIGMuYXR0 c3RvcmFnZSBpcyBkZWZpbmVkIGFuZCBjLmF0dHN0b3JhZ2UgIT0gYy5kZWZhdWx0c3RvcmFnZSAl fQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQor ICAgIEFMVEVSIENPTFVNTiB7e2Nvbm58cXRUeXBlSWRlbnQoYy5uYW1lKX19IFNFVCBTVE9SQUdF IHslaWYgYy5hdHRzdG9yYWdlID09ICdwJyAlfQorUExBSU57JSBlbGlmIGMuYXR0c3RvcmFnZSA9 PSAnbSclfU1BSU57JSBlbGlmIGMuYXR0c3RvcmFnZSA9PSAnZSclfQorRVhURVJOQUx7JSBlbGlm IGMuYXR0c3RvcmFnZSA9PSAneCclfUVYVEVOREVEeyUgZW5kaWYgJX07CisKK3slIGVuZGlmICV9 Cit7IyMjICBBQ0wgIyMjfQoreyUgaWYgYy5hdHRhY2wgYW5kIGMuYXR0YWNsfGxlbmd0aCA+IDAg JX0KKworeyUgZm9yIHByaXYgaW4gYy5hdHRhY2wgJX0KKyAgICB7eyBDT0xVTU5fUFJJVklMRUdF LkFQUExZKGNvbm4sIGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUsIGMubmFtZSwgcHJpdi5ncmFudGVl LCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCkgfX0KK3slIGVuZGZvciAlfQor eyUgZW5kaWYgJX0KK3sjIyMgIFNlY3VyaXR5IExhYmxlcyAjIyN9Cit7JSBpZiBjLnNlY2xhYmVs cyBhbmQgYy5zZWNsYWJlbHN8bGVuZ3RoID4gMCAlfQorCit7JSBmb3IgciBpbiBjLnNlY2xhYmVs cyAlfQore3sgQ09MVU1OX1NFQ0xBQkVMLkFQUExZKGNvbm4sICdDT0xVTU4nLGRhdGEuc2NoZW1h LCBkYXRhLm5hbWUsIGMubmFtZSwgci5wcm92aWRlciwgci5sYWJlbCkgfX0KK3slIGVuZGZvciAl fQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3sjPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSN9Cit7IyAgIENPTFVNTiBTUEVDSUZJQyBU RU1QTEFURVMgRU5EUyBIRVJFICAgICAjfQoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09I30KK3sjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0jfQoreyMgICBDT05TVFJBSU5UUyBTUEVDSUZJQyBURU1QTEFURVMgICAgICN9Cit7Iz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3t7Q09OU1RSQUlOVFMuQ09OU1RS QUlOVF9DT01NRU5UUyhjb25uLCBkYXRhLnNjaGVtYSwgZGF0YS5uYW1lLCBkYXRhLnByaW1hcnlf a2V5KX19Cit7e0NPTlNUUkFJTlRTLkNPTlNUUkFJTlRfQ09NTUVOVFMoY29ubiwgZGF0YS5zY2hl bWEsIGRhdGEubmFtZSwgZGF0YS51bmlxdWVfY29uc3RyYWludCl9fQore3tDT05TVFJBSU5UUy5D T05TVFJBSU5UX0NPTU1FTlRTKGNvbm4sIGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUsIGRhdGEuZm9y ZWlnbl9rZXkpfX0KK3t7Q09OU1RSQUlOVFMuQ09OU1RSQUlOVF9DT01NRU5UUyhjb25uLCBkYXRh LnNjaGVtYSwgZGF0YS5uYW1lLCBkYXRhLmNoZWNrX2NvbnN0cmFpbnQpfX0KK3t7Q09OU1RSQUlO VFMuQ09OU1RSQUlOVF9DT01NRU5UUyhjb25uLCBkYXRhLnNjaGVtYSwgZGF0YS5uYW1lLCBkYXRh LmV4Y2x1ZGVfY29uc3RyYWludCl9fQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90 YWJsZXMvc3FsLzkuNl9wbHVzL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90 YWJsZXMvc3FsLzkuNl9wbHVzL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMC4uODA0NTFmMTJkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy90YWJsZXMvc3FsLzkuNl9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsNzIg QEAKK1NFTEVDVCByZWwub2lkLCByZWwucmVsbmFtZSBBUyBuYW1lLCByZWwucmVsdGFibGVzcGFj ZSBBUyBzcGNvaWQscmVsLnJlbGFjbCBBUyByZWxhY2xfc3RyLAorICAoQ0FTRSBXSEVOIGxlbmd0 aChzcGMuc3BjbmFtZSkgPiAwIFRIRU4gc3BjLnNwY25hbWUgRUxTRQorICAgIChTRUxFQ1Qgc3Au c3BjbmFtZSBGUk9NIHBnX2RhdGFiYXNlIGR0YgorICAgIEpPSU4gcGdfdGFibGVzcGFjZSBzcCBP TiBkdGIuZGF0dGFibGVzcGFjZT1zcC5vaWQKKyAgICBXSEVSRSBkdGIub2lkID0ge3sgZGlkIH19 OjpvaWQpCisgIEVORCkgYXMgc3BjbmFtZSwKKyAgKHNlbGVjdCBuc3BuYW1lIEZST00gcGdfbmFt ZXNwYWNlIFdIRVJFIG9pZCA9IHt7c2NpZH19OjpvaWQgKSBhcyBzY2hlbWEsCisgIHBnX2dldF91 c2VyYnlpZChyZWwucmVsb3duZXIpIEFTIHJlbG93bmVyLCByZWwucmVsaGFzb2lkcywKKyAgcmVs LnJlbGhhc3N1YmNsYXNzLCByZWwucmVsdHVwbGVzOjpiaWdpbnQsIGRlcy5kZXNjcmlwdGlvbiwg Y29uLmNvbm5hbWUsIGNvbi5jb25rZXksCisJRVhJU1RTKHNlbGVjdCAxIEZST00gcGdfdHJpZ2dl cgorCQkJSk9JTiBwZ19wcm9jIHB0IE9OIHB0Lm9pZD10Z2ZvaWQgQU5EIHB0LnByb25hbWU9J2xv Z3RyaWdnZXInCisJCQlKT0lOIHBnX3Byb2MgcGMgT04gcGMucHJvbmFtZXNwYWNlPXB0LnByb25h bWVzcGFjZSBBTkQgcGMucHJvbmFtZT0nc2xvbnl2ZXJzaW9uJworCQkJV0hFUkUgdGdyZWxpZD1y ZWwub2lkKSBBUyBpc3JlcGwsCisJKFNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3RyaWdnZXIgV0hF UkUgdGdyZWxpZD1yZWwub2lkIEFORCB0Z2lzaW50ZXJuYWwgPSBGQUxTRSkgQVMgdHJpZ2dlcmNv dW50LAorCShTRUxFQ1QgQVJSQVkoU0VMRUNUIENBU0UgV0hFTiAobnNwbmFtZSBOT1QgTElLRSAn cGdcXyUnKSBUSEVOCisgICAgICAgICAgICBxdW90ZV9pZGVudChuc3BuYW1lKXx8Jy4nfHxxdW90 ZV9pZGVudChjLnJlbG5hbWUpCisgICAgICAgICAgICBFTFNFIHF1b3RlX2lkZW50KGMucmVsbmFt ZSkgRU5EIEFTIGluaGVyaXRlZF90YWJsZXMKKyAgICBGUk9NIHBnX2luaGVyaXRzIGkKKyAgICBK T0lOIHBnX2NsYXNzIGMgT04gYy5vaWQgPSBpLmluaHBhcmVudAorICAgIEpPSU4gcGdfbmFtZXNw YWNlIG4gT04gbi5vaWQ9Yy5yZWxuYW1lc3BhY2UKKyAgICBXSEVSRSBpLmluaHJlbGlkID0gcmVs Lm9pZCBPUkRFUiBCWSBpbmhzZXFubykpIEFTIGNvbGxfaW5oZXJpdHMsCisgIChTRUxFQ1QgY291 bnQoKikKKwkJRlJPTSBwZ19pbmhlcml0cyBpCisgICAgICBKT0lOIHBnX2NsYXNzIGMgT04gYy5v aWQgPSBpLmluaHBhcmVudAorICAgICAgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZD1jLnJl bG5hbWVzcGFjZQorCQlXSEVSRSBpLmluaHJlbGlkID0gcmVsLm9pZCkgQVMgaW5oZXJpdGVkX3Rh Ymxlc19jbnQsCisJKENBU0UgV0hFTiByZWwucmVscGVyc2lzdGVuY2UgPSAndScgVEhFTiB0cnVl IEVMU0UgZmFsc2UgRU5EKSBBUyByZWxwZXJzaXN0ZW5jZSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9f c3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2ZpbGxmYWN0b3I9KFswLTldKiknKSBB UyBmaWxsZmFjdG9yLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMs ICcsJykgRlJPTSAncGFyYWxsZWxfd29ya2Vycz0oWzAtOV0qKScpIEFTIHBhcmFsbGVsX3dvcmtl cnMsCisJKENBU0UgV0hFTiAoc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9u cywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2VuYWJsZWQ9KFthLXp8MC05XSopJykgPSAndHJ1ZScp CisJICBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIGF1dG92YWN1dW1fZW5hYmxlZCwKKwlz dWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92 YWN1dW1fdmFjdXVtX3RocmVzaG9sZD0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fdmFjdXVtX3Ro cmVzaG9sZCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcp IEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX3NjYWxlX2ZhY3Rvcj0oWzAtOV0qWy5dP1swLTldKikn KSBBUyBhdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IsCisJc3Vic3RyaW5nKGFycmF5X3Rv X3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5emVfdGhy ZXNob2xkPShbMC05XSopJykgQVMgYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZCwKKwlzdWJz dHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1 dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3I9KFswLTldKlsuXT9bMC05XSopJykgQVMgYXV0b3ZhY3V1 bV9hbmFseXplX3NjYWxlX2ZhY3RvciwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5y ZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXk9KFswLTld KiknKSBBUyBhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5LAorCXN1YnN0cmluZyhhcnJheV90 b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fY29z dF9saW1pdD0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQsCisJc3Vi c3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFj dXVtX2ZyZWV6ZV9taW5fYWdlPShbMC05XSopJykgQVMgYXV0b3ZhY3V1bV9mcmVlemVfbWluX2Fn ZSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00g J2F1dG92YWN1dW1fZnJlZXplX21heF9hZ2U9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX2ZyZWV6 ZV9tYXhfYWdlLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcs JykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlPShbMC05XSopJykgQVMgYXV0b3Zh Y3V1bV9mcmVlemVfdGFibGVfYWdlLAorCShDQVNFIFdIRU4gKHN1YnN0cmluZyhhcnJheV90b19z dHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9lbmFibGVkPShbYS16 fDAtOV0qKScpID0gICd0cnVlJykKKwkgIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgdG9h c3RfYXV0b3ZhY3V1bV9lbmFibGVkLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJl bG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkPShbMC05XSop JykgQVMgdG9hc3RfYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkLAorCXN1YnN0cmluZyhhcnJh eV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1f c2NhbGVfZmFjdG9yPShbMC05XSpbLl0/WzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fdmFj dXVtX3NjYWxlX2ZhY3RvciwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRp b25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQ9KFswLTldKiknKSBB UyB0b2FzdF9hdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkLAorCXN1YnN0cmluZyhhcnJheV90 b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9hbmFseXplX3Nj YWxlX2ZhY3Rvcj0oWzAtOV0qWy5dP1swLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX2FuYWx5 emVfc2NhbGVfZmFjdG9yLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlv bnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheT0oWzAtOV0qKScpIEFT IHRvYXN0X2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXksCisJc3Vic3RyaW5nKGFycmF5X3Rv X3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0 X2xpbWl0PShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdCwK KwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1 dG92YWN1dW1fZnJlZXplX21pbl9hZ2U9KFswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX2Zy ZWV6ZV9taW5fYWdlLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMs ICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZT0oWzAtOV0qKScpIEFTIHRvYXN0 X2F1dG92YWN1dW1fZnJlZXplX21heF9hZ2UsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0 c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2U9KFsw LTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2UsCisJYXJyYXlfdG9f c3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEFTIHRhYmxlX3ZhY3V1bV9zZXR0aW5nc19zdHIs CisJYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEFTIHRvYXN0X3RhYmxlX3Zh Y3V1bV9zZXR0aW5nc19zdHIsCisJcmVsLnJlbG9wdGlvbnMgQVMgcmVsb3B0aW9ucywgdHN0LnJl bG9wdGlvbnMgQVMgdG9hc3RfcmVsb3B0aW9ucywgcmVsLnJlbG9mdHlwZSwKKwlDQVNFIFdIRU4g dHlwLnR5cG5hbWUgSVMgTk9UIE5VTEwgVEhFTiAoc2VsZWN0IHF1b3RlX2lkZW50KG5zcG5hbWUp IEZST00gcGdfbmFtZXNwYWNlIFdIRVJFIG9pZCA9IHt7c2NpZH19OjpvaWQgKXx8Jy4nfHxxdW90 ZV9pZGVudCh0eXAudHlwbmFtZSkgRUxTRSB0eXAudHlwbmFtZSBFTkQgQVMgdHlwbmFtZSwKKwl0 eXAudHlwcmVsaWQgQVMgdHlwb2lkLAorCShDQVNFIFdIRU4gcmVsLnJlbHRvYXN0cmVsaWQgPSAw IFRIRU4gZmFsc2UgRUxTRSB0cnVlIEVORCkgQVMgaGFzdG9hc3R0YWJsZSwKKyAgICAtLSBBZGRl ZCBmb3IgcGdBZG1pbjQKKwkoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIGxp a2UgJyVhdXRvdmFjdXVtJScpIEFTIGF1dG92YWN1dW1fY3VzdG9tLAorCShDQVNFIFdIRU4gYXJy YXlfbGVuZ3RoKHRzdC5yZWxvcHRpb25zLCAxKSA+IDAgQU5EIHJlbC5yZWx0b2FzdHJlbGlkICE9 IDAgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyB0b2FzdF9hdXRvdmFjdXVtLAorCisJKFNF TEVDVCBhcnJheV9hZ2cocHJvdmlkZXIgfHwgJz0nIHx8IGxhYmVsKSBGUk9NIHBnX3NlY2xhYmVs cyBzbDEgV0hFUkUgc2wxLm9iam9pZD1yZWwub2lkIEFORCBzbDEub2Jqc3ViaWQ9MCkgQVMgc2Vj bGFiZWxzLAorCShDQVNFIFdIRU4gcmVsLm9pZCA8PSB7eyBkYXRsYXN0c3lzb2lkfX06Om9pZCBU SEVOIHRydWUgRWxTRSBmYWxzZSBFTkQpIEFTIGlzX3N5c190YWJsZQorRlJPTSBwZ19jbGFzcyBy ZWwKKyAgTEVGVCBPVVRFUiBKT0lOIHBnX3RhYmxlc3BhY2Ugc3BjIG9uIHNwYy5vaWQ9cmVsLnJl bHRhYmxlc3BhY2UKKyAgTEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVz Lm9iam9pZD1yZWwub2lkIEFORCBkZXMub2Jqc3ViaWQ9MCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19j bGFzcyc6OnJlZ2NsYXNzKQorICBMRUZUIE9VVEVSIEpPSU4gcGdfY29uc3RyYWludCBjb24gT04g Y29uLmNvbnJlbGlkPXJlbC5vaWQgQU5EIGNvbi5jb250eXBlPSdwJworICBMRUZUIE9VVEVSIEpP SU4gcGdfY2xhc3MgdHN0IE9OIHRzdC5vaWQgPSByZWwucmVsdG9hc3RyZWxpZAorICBMRUZUIEpP SU4gcGdfdHlwZSB0eXAgT04gcmVsLnJlbG9mdHlwZT10eXAub2lkCitXSEVSRSByZWwucmVsa2lu ZCBJTiAoJ3InLCdzJywndCcpIEFORCByZWwucmVsbmFtZXNwYWNlID0ge3sgc2NpZCB9fTo6b2lk Cit7JSBpZiB0aWQgJX0gIEFORCByZWwub2lkID0ge3sgdGlkIH19OjpvaWQgeyUgZW5kaWYgJX0K K09SREVSIEJZIHJlbC5yZWxuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90 YWJsZXMvc3FsLzkuNl9wbHVzL3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxl cy9zcWwvOS42X3BsdXMvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAuLjk4ZTllYmY0YgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv dGFibGVzL3NxbC85LjZfcGx1cy91cGRhdGUuc3FsCkBAIC0wLDAgKzEsMjMzIEBACit7JSBpbXBv cnQgJ21hY3Jvcy9zY2hlbWFzL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCRUwgJX0KK3slIGlt cG9ydCAnbWFjcm9zL3NjaGVtYXMvcHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJVklMRUdFICV9Cit7 JSBpbXBvcnQgJ21hY3Jvcy92YXJpYWJsZS5tYWNyb3MnIGFzIFZBUklBQkxFICV9Cit7IyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgUmVu YW1lIHRhYmxlICMjfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0YS5uYW1lIGFuZCBkYXRhLm5hbWUgIT0gb19kYXRhLm5h bWUgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KG9fZGF0YS5zY2hlbWEsIG9fZGF0YS5u YW1lKX19CisgICAgUkVOQU1FIFRPIHt7Y29ubnxxdElkZW50KGRhdGEubmFtZSl9fTsKKworeyUg ZW5kaWYgJX0KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjI30KK3sjIyBDaGFuZ2UgdGFibGUgc2NoZW1hICMjfQoreyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0YS5zY2hlbWEg YW5kIGRhdGEuc2NoZW1hICE9IG9fZGF0YS5zY2hlbWEgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxx dElkZW50KG9fZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQorICBTRVQgU0NIRU1BIHt7Y29ubnxx dElkZW50KGRhdGEuc2NoZW1hKX19OworCit7JSBlbmRpZiAlfQoreyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyMjIENoYW5nZSB0YWJsZSBv d25lciAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjI30KK3slIGlmIGRhdGEucmVsb3duZXIgYW5kIGRhdGEucmVsb3duZXIgIT0gb19kYXRh LnJlbG93bmVyICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0 YS5uYW1lKX19CisgICAgT1dORVIgVE8ge3tjb25ufHF0SWRlbnQoZGF0YS5yZWxvd25lcil9fTsK KworeyUgZW5kaWYgJX0KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjI30KK3sjIyBVcGRhdGUgSW5oZXJpdHMgdGFibGUgZGVmaW5pdGlvbiAjI30K K3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30K K3slIGlmIGRhdGEuY29sbF9pbmhlcml0c19hZGRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgdmFs IGluIGRhdGEuY29sbF9pbmhlcml0c19hZGRlZCAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRl bnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQorICAgIElOSEVSSVQge3t2YWx9fTsKKworeyUg ZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5jb2xsX2luaGVyaXRzX3JlbW92ZWR8 bGVuZ3RoID4gMCAlfQoreyUgZm9yIHZhbCBpbiBkYXRhLmNvbGxfaW5oZXJpdHNfcmVtb3ZlZCAl fQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQor ICAgIE5PIElOSEVSSVQge3t2YWx9fTsKKworeyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyMj IENoYW5nZSBoYXNPSUQgYXR0cmlidXRlIG9mIHRhYmxlICMjfQoreyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0YS5yZWxoYXNv aWRzIGlzIGRlZmluZWQgYW5kIGRhdGEucmVsaGFzb2lkcyAhPSBvX2RhdGEucmVsaGFzb2lkcyAl fQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQor ICAgIFNFVCB7JSBpZiBkYXRhLnJlbGhhc29pZHMgJX1XSVRIeyUgZWxzZSAlfVdJVEhPVVR7JSBl bmRpZiAlfSBPSURTOworCit7JSBlbmRpZiAlfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyMjIENoYW5nZSB0YWJsZXNwYWNlICMjfQor eyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQor eyUgaWYgZGF0YS5zcGNuYW1lIGFuZCBkYXRhLnNwY25hbWUgIT0gb19kYXRhLnNwY25hbWUgJX0K K0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAg ICBTRVQgVEFCTEVTUEFDRSB7e2Nvbm58cXRJZGVudChkYXRhLnNwY25hbWUpfX07CisKK3slIGVu ZGlmICV9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyN9Cit7IyMgY2hhbmdlIGZpbGxmYWN0b3Igc2V0dGluZ3MgIyN9Cit7IyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBpZiBkYXRhLmZp bGxmYWN0b3IgYW5kIGRhdGEuZmlsbGZhY3RvciAhPSBvX2RhdGEuZmlsbGZhY3RvciAlfQorQUxU RVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQorICAgIFNF VCAoRklMTEZBQ1RPUj17e2RhdGEuZmlsbGZhY3Rvcn19KTsKK3slIGVsaWYgKGRhdGEuZmlsbGZh Y3RvciA9PSAnJyBvciBkYXRhLmZpbGxmYWN0b3IgPT0gTm9uZSkgYW5kIGRhdGEuZmlsbGZhY3Rv ciAhPSBvX2RhdGEuZmlsbGZhY3RvciAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0 YS5zY2hlbWEsIGRhdGEubmFtZSl9fQorICAgIFJFU0VUIChGSUxMRkFDVE9SKTsKKworeyUgZW5k aWYgJX0KKworeyMjIGNoYW5nZSBwYXJhbGxlbF93b3JrZXJzIHNldHRpbmdzICMjfQoreyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYg KGRhdGEucGFyYWxsZWxfd29ya2VycyA9PSAnJyBvciBkYXRhLnBhcmFsbGVsX3dvcmtlcnMgPT0g Tm9uZSkgYW5kIGRhdGEucGFyYWxsZWxfd29ya2VycyAhPSBvX2RhdGEucGFyYWxsZWxfd29ya2Vy cyAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9 fQorICAgIFJFU0VUIChwYXJhbGxlbF93b3JrZXJzKTsKK3slIGVsaWYgZGF0YS5wYXJhbGxlbF93 b3JrZXJzIGlzIGRlZmluZWQgYW5kIGRhdGEucGFyYWxsZWxfd29ya2VycyAhPSBvX2RhdGEucGFy YWxsZWxfd29ya2VycyAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEs IGRhdGEubmFtZSl9fQorICAgIFNFVCAocGFyYWxsZWxfd29ya2Vycz17e2RhdGEucGFyYWxsZWxf d29ya2Vyc319KTsKKworeyUgZW5kaWYgJX0KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjfQoreyMjIFRhYmxlIEF1dG9WYWN1dW0gc2V0dGluZ3MgIyN9Cit7IyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjI30KK3slIGlmIGRhdGEudmFjdXVtX3RhYmxlIGlzIGRlZmluZWQgYW5k IGRhdGEudmFjdXVtX3RhYmxlLnNldF92YWx1ZXN8bGVuZ3RoID4gMCAlfQoreyUgc2V0IGhhc192 YWN1dW1fc2V0ID0gdHJ1ZSAlfQoreyUgZW5kaWYgJX0KK3slIGlmIGRhdGEudmFjdXVtX3RhYmxl IGlzIGRlZmluZWQgYW5kIGRhdGEudmFjdXVtX3RhYmxlLnJlc2V0X3ZhbHVlc3xsZW5ndGggPiAw ICV9Cit7JSBzZXQgaGFzX3ZhY3V1bV9yZXNldCA9IHRydWUgJX0KK3slIGVuZGlmICV9Cit7JSBp ZiBvX2RhdGEuYXV0b3ZhY3V1bV9jdXN0b20gYW5kIGRhdGEuYXV0b3ZhY3V1bV9jdXN0b20gPT0g ZmFsc2UgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5h bWUpfX0gUkVTRVQgKAorICAgIGF1dG92YWN1dW1fZW5hYmxlZCwKKyAgICBhdXRvdmFjdXVtX2Fu YWx5emVfc2NhbGVfZmFjdG9yLAorICAgIGF1dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQsCisg ICAgYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZSwKKyAgICBhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0 X2RlbGF5LAorICAgIGF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQsCisgICAgYXV0b3ZhY3V1 bV92YWN1dW1fc2NhbGVfZmFjdG9yLAorICAgIGF1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCwK KyAgICBhdXRvdmFjdXVtX2ZyZWV6ZV9taW5fYWdlLAorICAgIGF1dG92YWN1dW1fZnJlZXplX3Rh YmxlX2FnZQorKTsKK3slIGVsc2UgJX0KK3slIGlmIGRhdGEuYXV0b3ZhY3V1bV9lbmFibGVkIGlz IGRlZmluZWQgb3IgaGFzX3ZhY3V1bV9zZXQgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50 KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0gU0VUICgKK3slIGlmIGRhdGEuYXV0b3ZhY3V1bV9l bmFibGVkIGlzIGRlZmluZWQgYW5kIGRhdGEuYXV0b3ZhY3V1bV9lbmFibGVkICE9IG9fZGF0YS5h dXRvdmFjdXVtX2VuYWJsZWQgJX0KKyAgICBhdXRvdmFjdXVtX2VuYWJsZWQgPSB7JSBpZiBkYXRh LmF1dG92YWN1dW1fZW5hYmxlZCAlfXRydWV7JSBlbHNlICV9ZmFsc2V7JSBlbmRpZiAlfXslIGlm IGhhc192YWN1dW1fc2V0ICV9LAoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7JSBpZiBoYXNf dmFjdXVtX3NldCAlfQoreyUgZm9yIG9wdCBpbiBkYXRhLnZhY3V1bV90YWJsZS5zZXRfdmFsdWVz ICV9eyUgaWYgb3B0Lm5hbWUgYW5kIG9wdC52YWx1ZSAlfQorICAgIHt7b3B0Lm5hbWV9fSA9IHt7 b3B0LnZhbHVlfX17JSBpZiBub3QgbG9vcC5sYXN0ICV9LAoreyUgZW5kaWYgJX0KK3slIGVuZGlm ICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9CisKKyk7Cit7JSBlbmRpZiAlfQoreyUgaWYg aGFzX3ZhY3V1bV9yZXNldCAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hl bWEsIGRhdGEubmFtZSl9fSBSRVNFVCAoCit7JSBmb3Igb3B0IGluIGRhdGEudmFjdXVtX3RhYmxl LnJlc2V0X3ZhbHVlcyAlfXslIGlmIG9wdC5uYW1lICV9CisgICAge3tvcHQubmFtZX19eyUgaWYg bm90IGxvb3AubGFzdCAlfSwKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9 CisKKyk7Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjfQoreyMjIFRvYXN0IHRhYmxlIEF1dG9WYWN1dW0gc2V0dGluZ3MgIyN9 Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3slIGlmIGRhdGEudmFj dXVtX3RvYXN0IGlzIGRlZmluZWQgYW5kIGRhdGEudmFjdXVtX3RvYXN0LnNldF92YWx1ZXN8bGVu Z3RoID4gMCAlfQoreyUgc2V0IGhhc192YWN1dW1fdG9hc3Rfc2V0ID0gdHJ1ZSAlfQoreyUgZW5k aWYgJX0KK3slIGlmIGRhdGEudmFjdXVtX3RvYXN0IGlzIGRlZmluZWQgYW5kIGRhdGEudmFjdXVt X3RvYXN0LnJlc2V0X3ZhbHVlc3xsZW5ndGggPiAwICV9Cit7JSBzZXQgaGFzX3ZhY3V1bV90b2Fz dF9yZXNldCA9IHRydWUgJX0KK3slIGVuZGlmICV9Cit7JSBpZiBvX2RhdGEudG9hc3RfYXV0b3Zh Y3V1bSBhbmQgZGF0YS50b2FzdF9hdXRvdmFjdXVtID09IGZhbHNlICV9CitBTFRFUiBUQUJMRSB7 e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19IFJFU0VUICgKKyAgICB0b2Fz dC5hdXRvdmFjdXVtX2VuYWJsZWQsCisgICAgdG9hc3QuYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2Fn ZSwKKyAgICB0b2FzdC5hdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5LAorICAgIHRvYXN0LmF1 dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQsCisgICAgdG9hc3QuYXV0b3ZhY3V1bV92YWN1dW1f c2NhbGVfZmFjdG9yLAorICAgIHRvYXN0LmF1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCwKKyAg ICB0b2FzdC5hdXRvdmFjdXVtX2ZyZWV6ZV9taW5fYWdlLAorICAgIHRvYXN0LmF1dG92YWN1dW1f ZnJlZXplX3RhYmxlX2FnZSwKKyAgICB0b2FzdC5hdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xk LAorICAgIHRvYXN0LmF1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3IKKyk7Cit7JSBlbHNl ICV9Cit7JSBpZiBkYXRhLnRvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCBpcyBkZWZpbmVkIG9yIGhh c192YWN1dW1fdG9hc3Rfc2V0ICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNj aGVtYSwgZGF0YS5uYW1lKX19IFNFVCAoCit7JSBpZiBkYXRhLnRvYXN0X2F1dG92YWN1dW1fZW5h YmxlZCBpcyBkZWZpbmVkIGFuZCBkYXRhLnRvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCAhPSBvX2Rh dGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkICV9CisgICAgdG9hc3QuYXV0b3ZhY3V1bV9lbmFi bGVkID0geyUgaWYgZGF0YS50b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQgJX10cnVleyUgZWxzZSAl fWZhbHNleyUgZW5kaWYgJX17JSBpZiBoYXNfdmFjdXVtX3RvYXN0X3NldCAlfSwKK3slIGVuZGlm ICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgaGFzX3ZhY3V1bV90b2FzdF9zZXQgJX0KK3slIGZvciBv cHQgaW4gZGF0YS52YWN1dW1fdG9hc3Quc2V0X3ZhbHVlcyAlfXslIGlmIG9wdC5uYW1lIGFuZCBv cHQudmFsdWUgJX0KKyAgICB0b2FzdC57e29wdC5uYW1lfX0gPSB7e29wdC52YWx1ZX19eyUgaWYg bm90IGxvb3AubGFzdCAlfSwKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9 Cit7JSBlbmRpZiAlfQorCispOworeyUgZW5kaWYgJX0KK3slIGlmIGhhc192YWN1dW1fdG9hc3Rf cmVzZXQgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5h bWUpfX0gUkVTRVQgKAoreyUgZm9yIG9wdCBpbiBkYXRhLnZhY3V1bV90b2FzdC5yZXNldF92YWx1 ZXMgJX17JSBpZiBvcHQubmFtZSAlfQorICAgIHRvYXN0Lnt7b3B0Lm5hbWV9fXslIGlmIG5vdCBs b29wLmxhc3QgJX0sCit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQorCisp OworeyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgQ2hhbmdlIHRhYmxlIGNvbW1lbnRzICMj fQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj fQoreyUgaWYgZGF0YS5kZXNjcmlwdGlvbiBpcyBkZWZpbmVkIGFuZCBkYXRhLmRlc2NyaXB0aW9u ICE9IG9fZGF0YS5kZXNjcmlwdGlvbiAlfQorQ09NTUVOVCBPTiBUQUJMRSB7e2Nvbm58cXRJZGVu dChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgIElTIHt7ZGF0YS5kZXNjcmlwdGlvbnxxdExp dGVyYWx9fTsKKworeyUgZW5kaWYgJX0KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sjIyBVcGRhdGUgdGFibGUgUHJpdmlsZWdlcyAjI30K K3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30K K3slIGlmIGRhdGEucmVsYWNsICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4gZGF0YS5yZWxhY2wgJX0K K3slIGZvciBwcml2IGluIGRhdGEucmVsYWNsLmRlbGV0ZWQgJX0KK3t7IFBSSVZJTEVHRS5VTlNF VEFMTChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUsIGRhdGEubmFtZSwgZGF0YS5zY2hlbWEp IH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gZGF0YS5y ZWxhY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEucmVsYWNsLmNoYW5nZWQgJX0KK3t7IFBSSVZJ TEVHRS5VTlNFVEFMTChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUsIGRhdGEubmFtZSwgZGF0 YS5zY2hlbWEpIH19Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRl ZSwgZGF0YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCwgZGF0YS5z Y2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnYWRkZWQnIGluIGRh dGEucmVsYWNsICV9Cit7JSBmb3IgcHJpdiBpbiBkYXRhLnJlbGFjbC5hZGRlZCAlfQore3sgUFJJ VklMRUdFLlNFVChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUsIGRhdGEubmFtZSwgcHJpdi53 aXRob3V0X2dyYW50LCBwcml2LndpdGhfZ3JhbnQsIGRhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9y ICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sjIyBVcGRhdGUgdGFibGUgU2VjdXJpdHlM YWJlbCAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjI30KK3slIGlmIGRhdGEuc2VjbGFiZWxzIGFuZCBkYXRhLnNlY2xhYmVsc3xsZW5ndGgg PiAwICV9Cit7JSBzZXQgc2VjbGFiZWxzID0gZGF0YS5zZWNsYWJlbHMgJX0KK3slIGlmICdkZWxl dGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5kZWxldGVkfGxlbmd0aCA+IDAgJX0KK3sl IGZvciByIGluIHNlY2xhYmVscy5kZWxldGVkICV9Cit7eyBTRUNMQUJFTC5VTlNFVChjb25uLCAn VEFCTEUnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIsIGRhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9y ICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2FkZGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVs cy5hZGRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuYWRkZWQgJX0KK3t7 IFNFQ0xBQkVMLlNFVChjb25uLCAnVEFCTEUnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIsIHIubGFi ZWwsIGRhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2No YW5nZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmNoYW5nZWR8bGVuZ3RoID4gMCAlfQor eyUgZm9yIHIgaW4gc2VjbGFiZWxzLmNoYW5nZWQgJX0KK3t7IFNFQ0xBQkVMLlNFVChjb25uLCAn VEFCTEUnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIsIHIubGFiZWwsIGRhdGEuc2NoZW1hKSB9fQor eyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQorCit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy90YWJsZXMvc3FsL2RlZmF1bHQvcHJvcGVydGllcy5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL3RhYmxlcy9zcWwvZGVmYXVsdC9wcm9wZXJ0aWVzLnNxbAppbmRleCA5 MzJlN2ZmYTUuLjQ3Njg2YTI4MCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJs ZXMvc3FsL2RlZmF1bHQvcHJvcGVydGllcy5zcWwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90 YWJsZXMvc3FsL2RlZmF1bHQvcHJvcGVydGllcy5zcWwKQEAgLTU3LDcgKzU3LDcgQEAgRlJPTSAo CiAJCXR5cC50eXByZWxpZCBBUyB0eXBvaWQsCiAJCShDQVNFIFdIRU4gcmVsLnJlbHRvYXN0cmVs aWQgPSAwIFRIRU4gZmFsc2UgRUxTRSB0cnVlIEVORCkgQVMgaGFzdG9hc3R0YWJsZSwKIAkJCS0t IEFkZGVkIGZvciBwZ0FkbWluNAotCQkoQ0FTRSBXSEVOIGFycmF5X2xlbmd0aChyZWwucmVsb3B0 aW9ucywgMSkgPiAwIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgYXV0b3ZhY3V1bV9jdXN0 b20sCisJCShhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgbGlrZSAnJWF1dG92 YWN1dW0lJykgQVMgYXV0b3ZhY3V1bV9jdXN0b20sCiAJCShDQVNFIFdIRU4gYXJyYXlfbGVuZ3Ro KHRzdC5yZWxvcHRpb25zLCAxKSA+IDAgQU5EIHJlbC5yZWx0b2FzdHJlbGlkICE9IDAgVEhFTiB0 cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyB0b2FzdF9hdXRvdmFjdXVtLAogCiAJCUFSUkFZW106OnZh cmNoYXJbXSBBUyBzZWNsYWJlbHMsCg== --000000000000a284ad05a237d41e--