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 1loh0k-0004QH-GA for pgadmin-hackers@arkaria.postgresql.org; Thu, 03 Jun 2021 06:39:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1loh0j-0004V7-Bp for pgadmin-hackers@arkaria.postgresql.org; Thu, 03 Jun 2021 06:39:21 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1loh0i-0004Uw-RV for pgadmin-hackers@lists.postgresql.org; Thu, 03 Jun 2021 06:39:21 +0000 Received: from mail-yb1-xb29.google.com ([2607:f8b0:4864:20::b29]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1loh0g-0000Nz-7D for pgadmin-hackers@postgresql.org; Thu, 03 Jun 2021 06:39:19 +0000 Received: by mail-yb1-xb29.google.com with SMTP id m9so887358ybo.5 for ; Wed, 02 Jun 2021 23:39:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=WRMkra795xp74NLPGz8+lp5JVcInXxTPUvioxcJLRUc=; b=Bf7f4BVD+sNxNx5WGEms20Is55TfzwGJIQq1Xb2dQ0O9SL2Y/b7p17t03QNQGD7K8W qflM+4lnHMYQDW/6yQclUP+Oh607H0mzum2Y14UQcJCDFqfapFGjrLV8KbHzxpzU+9WN VsAjehDLHRKqrtGRYuVd5quhaw8WOx0WSccc6rH4pk/SZUy/CnFIxxK9LKSf2XlAA+/e x3wQkl/XIhUwQag8TxWdIoz5/HB1/qeozw4adTdGYyrm2o5Gtlpyyis/KVhcfVQdxA1t QLzoKGs4/NNBJ7DxIF9F5JCCsgy++PgI9CMWUczRNhsvHfPAOd+IpKK0pDISFvjOO34O R4gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=WRMkra795xp74NLPGz8+lp5JVcInXxTPUvioxcJLRUc=; b=AxVnfMF0LPxgO4ONPorzBlRzglBLyakHcEoK2f38VpOuMgHuij/D47bMP+VyPJaKnT WlHwVOzPoaFLed8Feru3G1i9MKS7x1aI12BQwVN8LGlX5fU5tk8dfxdpart15LZcy7Rj GGHS1APBQQZCj2m3EHU6wkJE2kVJTJMoXptJCCylIAepQqW4a82ALeaXCyg8W1kGx7qy CyxbqkB/BrlO4yeRk86Dy6OuK7+lAgPqP81kNjLq/cSYdOPQkfBxBTW3TlDopqf6uQHY irwuwvH0lUN09/t7nZfBTzrYaXUql4ls33ZfEzeh8jhDLzlp1T4XoaRyL/ME+WknvEoD lepg== X-Gm-Message-State: AOAM531m2pvYsXjicj6YLwNE88UquYMFWC9LZ+a0RaGBnllWJS3C3mEa CQ5t18U3Ub5yMmVxBFaLvzCvMyw+HyQ7EI+gQEBH+0elrkAL1opauYyT/Zyj2bLoFXulgrKGRyK lbeQEZXfTqUWwjwqG55nmfz69YySspT9TzsDHRInNWTy97gycLH2M32a99pzzdEkOGEa1YisvwC Ze3Klnkk98Cvpys+5iDFqXAmMniav00X7Gn0DkMOcqsA3lbxkn9Y7ZScf8Tjt1pkBUrw== X-Google-Smtp-Source: ABdhPJzvmTSQUxct3tCd2DYs22dquupNc3fwnriFWpL6ptVQI8a2hFoxHKL0pBjktz/MUYmhu+hhSyu1V1CE6i82ET0= X-Received: by 2002:a25:8b08:: with SMTP id i8mr48077179ybl.370.1622702356079; Wed, 02 Jun 2021 23:39:16 -0700 (PDT) MIME-Version: 1.0 From: Nikhil Mohite Date: Thu, 3 Jun 2021 12:09:05 +0530 Message-ID: Subject: [pgAdmin][RM-6460]: Need a mechanism to detect a corrupt/broken config DB file. To: pgadmin-hackers Content-Type: multipart/mixed; boundary="00000000000082e24205c3d6d5d5" X-CLOUD-SEC-AV-Info: enterprisedb,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: Archived-At: Precedence: bulk --00000000000082e24205c3d6d5d5 Content-Type: multipart/alternative; boundary="00000000000082e24105c3d6d5d3" --00000000000082e24105c3d6d5d3 Content-Type: text/plain; charset="UTF-8" Hi Hackers, Please find the attached patch for RM-6460 : Need a mechanism to detect a corrupt/broken config DB file. 1. Added checks if all tables added in the model are present in SQLite DB or not. 2. If migrations fail it will backup older file and try migrations with the newly created file. (User will get notification on UI for the location of the backup file and newly created.) 3. If the user deleted any table from SQLite DB pgAdmin will not run on the next restart and it will add the missing table list in the logs. -- *Thanks & Regards,* *Nikhil Mohite* *Software Engineer.* *EDB Postgres* *Mob.No: +91-7798364578.* --00000000000082e24105c3d6d5d3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Please find the attached pa= tch for=C2=A0RM-6460= :=C2=A0 Need a mechanism to detect a corrupt/broken config DB file.

1. Added checks if all tables added in the model are = present in SQLite DB or not.
2. If migrations fail it will backup= older file and try migrations with the newly created file.=C2=A0
(User will get notification on UI=C2=A0for the location=C2=A0of the backup= file and newly created.)
3. If the user deleted any table from S= QLite DB pgAdmin will not run on the next restart and it will add the missi= ng table list in the logs.

--
<= b>Thanks & Regards,
<= b>Nikhil Mohite
= Software Engineer.
Mob.No: +91-7798364578.
--00000000000082e24105c3d6d5d3-- --00000000000082e24205c3d6d5d5 Content-Type: application/octet-stream; name="RM_6460.patch" Content-Disposition: attachment; filename="RM_6460.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kpgiyx5n0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vX19pbml0 X18ucHkKaW5kZXggNmUzOTVmNDIuLjlhYTQ3ZDBkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9f X2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9fX2luaXRfXy5weQpAQCAtMTQsNiArMTQsOCBA QCBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCByZQogaW1wb3J0IGlwYWRkcmVzcworaW1w b3J0IHRyYWNlYmFjaworCiBmcm9tIHR5cGVzIGltcG9ydCBNZXRob2RUeXBlCiBmcm9tIGNvbGxl Y3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IGltcG9ydF9t b2R1bGUKQEAgLTM4LDggKzQwLDggQEAgZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBQZ0FkbWlu TW9kdWxlLCBkcml2ZXIsIEtleU1hbmFnZXIKIGZyb20gcGdhZG1pbi51dGlscy5wcmVmZXJlbmNl cyBpbXBvcnQgUHJlZmVyZW5jZXMKIGZyb20gcGdhZG1pbi51dGlscy5zZXNzaW9uIGltcG9ydCBj cmVhdGVfc2Vzc2lvbl9pbnRlcmZhY2UsIHBnYV91bmF1dGhvcmlzZWQKIGZyb20gcGdhZG1pbi51 dGlscy52ZXJzaW9uZWRfdGVtcGxhdGVfbG9hZGVyIGltcG9ydCBWZXJzaW9uZWRUZW1wbGF0ZUxv YWRlcgotZnJvbSBkYXRldGltZSBpbXBvcnQgdGltZWRlbHRhCi1mcm9tIHBnYWRtaW4uc2V0dXAg aW1wb3J0IGdldF92ZXJzaW9uLCBzZXRfdmVyc2lvbgorZnJvbSBkYXRldGltZSBpbXBvcnQgdGlt ZWRlbHRhLCBkYXRldGltZQorZnJvbSBwZ2FkbWluLnNldHVwIGltcG9ydCBnZXRfdmVyc2lvbiwg c2V0X3ZlcnNpb24sIGNoZWNrX2RiX3RhYmxlcwogZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1w b3J0IGludGVybmFsX3NlcnZlcl9lcnJvciwgbWFrZV9qc29uX3Jlc3BvbnNlCiBmcm9tIHBnYWRt aW4udXRpbHMuY3NyZiBpbXBvcnQgcGdDU1JGUHJvdGVjdAogZnJvbSBwZ2FkbWluIGltcG9ydCBh dXRoZW50aWNhdGUKQEAgLTM1NiwxOCArMzU4LDQ4IEBAIGRlZiBjcmVhdGVfYXBwKGFwcF9uYW1l PU5vbmUpOgogCiAgICAgICAgICMgSWYgdmVyc2lvbiBub3QgYXZhaWxhYmxlLCB1c2VyIG11c3Qg aGF2ZSBhYm9ydGVkLiBUYWJsZXMgYXJlIG5vdAogICAgICAgICAjIGNyZWF0ZWQgYW5kIHNvIGl0 cyBhbiBlbXB0eSBkYgotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoU1FMSVRFX1BBVEgp IG9yIGdldF92ZXJzaW9uKCkgPT0gLTE6CisgICAgICAgIHZlcnNpb24gPSBnZXRfdmVyc2lvbigp CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhTUUxJVEVfUEFUSCkgb3IgdmVyc2lvbiA9 PSAtMToKICAgICAgICAgICAgICMgSWYgcnVubmluZyBpbiBjbGkgbW9kZSB0aGVuIGRvbid0IHRy eSB0byB1cGdyYWRlLCBqdXN0IHJhaXNlCiAgICAgICAgICAgICAjIHRoZSBleGNlcHRpb24KICAg ICAgICAgICAgIGlmIG5vdCBjbGlfbW9kZToKLSAgICAgICAgICAgICAgICBkYl91cGdyYWRlKGFw cCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGRiX3VwZ3JhZGUo YXBwKQorICAgICAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWydDT1JSVVBURURfREJfQkFDS1VQ X0ZJTEUnXSA9ICcnCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAg ICAgICAgICAgICAgICAgICBiYWNrdXBfZmlsZV9uYW1lID0gInswfS57MX0iLmZvcm1hdCgKKyAg ICAgICAgICAgICAgICAgICAgICAgIFNRTElURV9QQVRILCBkYXRldGltZS5ub3coKS5zdHJmdGlt ZSgnJVklbSVkJUglTSVTJykpCisgICAgICAgICAgICAgICAgICAgIG9zLnJlbmFtZShTUUxJVEVf UEFUSCwgYmFja3VwX2ZpbGVfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgYXBwLmxvZ2dlci5l cnJvcignRXhjZXB0aW9uIGluIGRhdGFiYXNlIG1pZ3JhdGlvbjogJworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICd7MH0nLmZvcm1hdChlKSkKKyAgICAgICAgICAgICAgICAg ICAgYXBwLmxvZ2dlci5pbmZvKCdDcmVhdGluZyBuZXcgZGF0YWJhc2UgZmlsZS4nKQorICAgICAg ICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBkYl91cGdyYWRlKGFw cCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLmVudmlyb25bCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ0NPUlJVUFRFRF9EQl9CQUNLVVBfRklMRSddID0gYmFja3VwX2ZpbGVfbmFt ZQorICAgICAgICAgICAgICAgICAgICAgICAgYXBwLmxvZ2dlci5pbmZvKCdEYXRhYmFzZSBtaWdy YXRpb24gY29tcGxldGVkLicpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g YXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5sb2dnZXIuZXJyb3IoJ0RhdGFiYXNl IG1pZ3JhdGlvbiBmYWlsZWQnKQorICAgICAgICAgICAgICAgICAgICAgICAgYXBwLmxvZ2dlci5l cnJvcih0cmFjZWJhY2suZm9ybWF0X2V4YygpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFp c2UgUnVudGltZUVycm9yKCdNaWdyYXRpb24gZmFpbGVkJykKKworICAgICAgICAgICAgICAgICMg Y2hlY2sgYWxsIHRhYmxlcyBhcmUgcHJlc2VudCBpbiB0aGUgZGIuCisgICAgICAgICAgICAgICAg aXNfZGJfZXJyb3IsIGludmFsaWRfdGJfbmFtZXMgPSBjaGVja19kYl90YWJsZXMoKQorICAgICAg ICAgICAgICAgIGlmIGlzX2RiX2Vycm9yOgorICAgICAgICAgICAgICAgICAgICBhcHAubG9nZ2Vy LmVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgJ1RhYmxlKHMpIHswfSBub3QgcHJlc2Vu dCBpbiB0aGUnCisgICAgICAgICAgICAgICAgICAgICAgICAnIGRiJy5mb3JtYXQoaW52YWxpZF90 Yl9uYW1lcykpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKKyAgICAg ICAgICAgICAgICAgICAgICAgICdFeGNlcHRpb24gaW4gZGF0YWJhc2UgdGFibGVzLCBUYWJsZShz KSB7MH0gJworICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCBwcmVzZW50Jy5mb3JtYXQoaW52 YWxpZF90Yl9uYW1lcykpCisKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgaWYg bm90IG9zLnBhdGguZXhpc3RzKFNRTElURV9QQVRIKToKICAgICAgICAgICAgICAgICAgICAgcmFp c2UgRmlsZU5vdEZvdW5kRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICAnU1FMaXRlIGRh dGFiYXNlIGZpbGUgIicgKyBTUUxJVEVfUEFUSCArCiAgICAgICAgICAgICAgICAgICAgICAgICAn IiBkb2VzIG5vdCBleGlzdHMuJykKLSAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3Io J1NwZWNpZmllZCBTUUxpdGUgZGF0YWJhc2UgZmlsZSAnCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdpcyBub3QgdmFsaWQuJykKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50 aW1lRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdTcGVjaWZpZWQgU1FMaXRlIGRhdGFiYXNl IGZpbGUgaXMgbm90IHZhbGlkLicpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzY2hlbWFf dmVyc2lvbiA9IGdldF92ZXJzaW9uKCkKIApAQCAtMzc2LDYgKzQwOCwxNyBAQCBkZWYgY3JlYXRl X2FwcChhcHBfbmFtZT1Ob25lKToKICAgICAgICAgICAgIGlmIENVUlJFTlRfU0NIRU1BX1ZFUlNJ T04gPj0gc2NoZW1hX3ZlcnNpb246CiAgICAgICAgICAgICAgICAgZGJfdXBncmFkZShhcHApCiAK KyAgICAgICAgICAgICMgY2hlY2sgYWxsIHRhYmxlcyBhcmUgcHJlc2VudCBpbiB0aGUgZGIuCisg ICAgICAgICAgICBpc19kYl9lcnJvciwgaW52YWxpZF90Yl9uYW1lcyA9IGNoZWNrX2RiX3RhYmxl cygpCisgICAgICAgICAgICBpZiBpc19kYl9lcnJvcjoKKyAgICAgICAgICAgICAgICBhcHAubG9n Z2VyLmVycm9yKAorICAgICAgICAgICAgICAgICAgICAnVGFibGUocykgInswfSIgbm90IHByZXNl bnQgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgJ2RhdGFiYXNlJy5mb3JtYXQoaW52YWxp ZF90Yl9uYW1lcykpCisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAorICAgICAg ICAgICAgICAgICAgICAnRXhjZXB0aW9uIGluIGRhdGFiYXNlIHRhYmxlcywgVGFibGUocykgInsw fSIgbm90IHByZXNlbnQnCisgICAgICAgICAgICAgICAgICAgICcgaW4gdGhlIGRhdGFiYXNlLicu Zm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZF90Yl9uYW1lcykpCisKICAg ICAgICAgICAgICMgVXBkYXRlIHNjaGVtYSB2ZXJzaW9uIHRvIHRoZSBsYXRlc3QKICAgICAgICAg ICAgIGlmIENVUlJFTlRfU0NIRU1BX1ZFUlNJT04gPiBzY2hlbWFfdmVyc2lvbjoKICAgICAgICAg ICAgICAgICBzZXRfdmVyc2lvbihDVVJSRU5UX1NDSEVNQV9WRVJTSU9OKQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvX19p bml0X18ucHkKaW5kZXggZWRiZDQ5MWUuLjVhNmExYzQ2IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi9icm93c2VyL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvX19pbml0X18u cHkKQEAgLTM0Miw2ICszNDIsNyBAQCBjbGFzcyBCcm93c2VyTW9kdWxlKFBnQWRtaW5Nb2R1bGUp OgogICAgICAgICAgICAgbGlzdDogYSBsaXN0IG9mIHVybCBlbmRwb2ludHMgZXhwb3NlZCB0byB0 aGUgY2xpZW50LgogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIFtCUk9XU0VSX0lOREVYLCAn YnJvd3Nlci5ub2RlcycsCisgICAgICAgICAgICAgICAgJ2Jyb3dzZXIuY2hlY2tfY29ycnVwdGVk X2RiX2ZpbGUnLAogICAgICAgICAgICAgICAgICdicm93c2VyLmNoZWNrX21hc3Rlcl9wYXNzd29y ZCcsCiAgICAgICAgICAgICAgICAgJ2Jyb3dzZXIuc2V0X21hc3Rlcl9wYXNzd29yZCcsCiAgICAg ICAgICAgICAgICAgJ2Jyb3dzZXIucmVzZXRfbWFzdGVyX3Bhc3N3b3JkJywKQEAgLTk1MCw2ICs5 NTEsMTkgQEAgZGVmIGZvcm1fbWFzdGVyX3Bhc3N3b3JkX3Jlc3BvbnNlKGV4aXN0aW5nPVRydWUs IHByZXNlbnQ9RmFsc2UsIGVycm1zZz1Ob25lKToKICAgICB9KQogCiAKK0BibHVlcHJpbnQucm91 dGUoIi9jaGVja19jb3JydXB0ZWRfZGJfZmlsZSIsCisgICAgICAgICAgICAgICAgIGVuZHBvaW50 PSJjaGVja19jb3JydXB0ZWRfZGJfZmlsZSIsIG1ldGhvZHM9WyJHRVQiXSkKK2RlZiBjaGVja19j b3JydXB0ZWRfZGJfZmlsZSgpOgorICAgICIiIgorICAgIEdldCB0aGUgY29ycnVwdGVkIGRhdGFi YXNlIGZpbGUgcGF0aC4KKyAgICAiIiIKKyAgICBmaWxlX2xvY2F0aW9uID0gb3MuZW52aXJvblsn Q09SUlVQVEVEX0RCX0JBQ0tVUF9GSUxFJ10gXAorICAgICAgICBpZiAnQ09SUlVQVEVEX0RCX0JB Q0tVUF9GSUxFJyBpbiBvcy5lbnZpcm9uIGVsc2UgJycKKyAgICAjIHJlc2V0IHRoZSBjb3JydXB0 ZWQgZGIgZmlsZSBwYXRoIGluIGVudi4KKyAgICBvcy5lbnZpcm9uWydDT1JSVVBURURfREJfQkFD S1VQX0ZJTEUnXSA9ICcnCisgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZShkYXRhPWZpbGVf bG9jYXRpb24pCisKKwogQGJsdWVwcmludC5yb3V0ZSgiL21hc3Rlcl9wYXNzd29yZCIsIGVuZHBv aW50PSJjaGVja19tYXN0ZXJfcGFzc3dvcmQiLAogICAgICAgICAgICAgICAgICBtZXRob2RzPVsi R0VUIl0pCiBkZWYgY2hlY2tfbWFzdGVyX3Bhc3N3b3JkKCk6CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3N0YXRpYy9qcy9icm93c2VyLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z dGF0aWMvanMvYnJvd3Nlci5qcwppbmRleCA0NmRmYjRmMS4uYmE4NGNhNDEgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2Jyb3dzZXIuanMKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zdGF0aWMvanMvYnJvd3Nlci5qcwpAQCAtNTk0LDcgKzU5NCw3IEBAIGRlZmlu ZSgncGdhZG1pbi5icm93c2VyJywgWwogICAgICAgfSwgMzAwMDAwKTsKIAogICAgICAgb2JqLnNl dF9tYXN0ZXJfcGFzc3dvcmQoJycpOwotCisgICAgICBvYmouY2hlY2tfY29ycnVwdGVkX2RiX2Zp bGUoKTsKICAgICAgIG9iai5FdmVudHMub24oJ3BnYWRtaW46YnJvd3Nlcjp0cmVlOmFkZCcsIG9i ai5vbkFkZFRyZWVOb2RlLCBvYmopOwogICAgICAgb2JqLkV2ZW50cy5vbigncGdhZG1pbjpicm93 c2VyOnRyZWU6dXBkYXRlJywgb2JqLm9uVXBkYXRlVHJlZU5vZGUsIG9iaik7CiAgICAgICBvYmou RXZlbnRzLm9uKCdwZ2FkbWluOmJyb3dzZXI6dHJlZTpyZWZyZXNoJywgb2JqLm9uUmVmcmVzaFRy ZWVOb2RlLCBvYmopOwpAQCAtNjA3LDcgKzYwNywzNSBAQCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3Nl cicsIFsKICAgICAgIG9iai5yZWdpc3Rlcl90b19hY3Rpdml0eV9saXN0ZW5lcihkb2N1bWVudCk7 CiAgICAgICBvYmouc3RhcnRfaW5hY3Rpdml0eV90aW1lb3V0X2RhZW1vbigpOwogICAgIH0sCisg ICAgY2hlY2tfY29ycnVwdGVkX2RiX2ZpbGU6IGZ1bmN0aW9uKCkgeworICAgICAgJC5hamF4KHsK KyAgICAgICAgdXJsOiB1cmxfZm9yKCdicm93c2VyLmNoZWNrX2NvcnJ1cHRlZF9kYl9maWxlJyks CisgICAgICAgIHR5cGU6ICdHRVQnLAorICAgICAgICBkYXRhVHlwZTogJ2pzb24nLAorICAgICAg ICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLAorICAgICAgfSkuZG9uZSgocmVzKT0+ IHsKKyAgICAgICAgaWYocmVzLmRhdGEubGVuZ3RoID4gMCkgeworCisgICAgICAgICAgQWxlcnRp ZnkuYWxlcnQoCisgICAgICAgICAgICAnV2FybmluZycsCisgICAgICAgICAgICAncGdBZG1pbiBk ZXRlY3RlZCB1bnJlY292ZXJhYmxlIGNvcnJ1cHRpb24gaW4gaXRcJ3MgU1FMaXRlIGNvbmZpZ3Vy YXRpb24gZGF0YWJhc2UuICcgKworICAgICAgICAgICAgJ1RoZSBkYXRhYmFzZSBoYXMgYmVlbiBi YWNrZWQgdXAgYW5kIHJlY3JlYXRlZCB3aXRoIGRlZmF1bHQgc2V0dGluZ3MuICcrCisgICAgICAg ICAgICAnSXQgbWF5IGJlIHBvc3NpYmxlIHRvIHJlY292ZXIgZGF0YSBzdWNoIGFzIHF1ZXJ5IGhp c3RvcnkgbWFudWFsbHkgZnJvbSAnKworICAgICAgICAgICAgJ3RoZSBvcmlnaW5hbC9jb3JydXB0 IGZpbGUgdXNpbmcgYSB0b29sIHN1Y2ggYXMgREIgQnJvd3NlciBmb3IgU1FMaXRlIGlmIGRlc2ly ZWQuJysKKyAgICAgICAgICAgICc8YnI+PGJyPk9yaWdpbmFsIGZpbGU6ICcgKyByZXMuZGF0YSAr ICc8YnI+UmVwbGFjZW1lbnQgZmlsZTogJyArCisgICAgICAgICAgICByZXMuZGF0YS5zdWJzdHJp bmcoMCwgcmVzLmRhdGEubGVuZ3RoIC0gMTQpCisgICAgICAgICAgKQorICAgICAgICAgICAgLnNl dCh7J2Nsb3NhYmxlJzogdHJ1ZSwKKyAgICAgICAgICAgICAgJ29ub2snOiBmdW5jdGlvbigpIHsK KyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0pOworCiAKKyAgICAgICAgfQorICAgICAg fSkuZmFpbChmdW5jdGlvbih4aHIsIHN0YXR1cywgZXJyb3IpIHsKKyAgICAgICAgQWxlcnRpZnku YWxlcnQoZXJyb3IpOworICAgICAgfSk7CisgICAgfSwKICAgICBpbml0X21hc3Rlcl9wYXNzd29y ZDogZnVuY3Rpb24oKSB7CiAgICAgICBsZXQgc2VsZiA9IHRoaXM7CiAgICAgICAvLyBNYXN0ZXIg cGFzc3dvcmQgZGlhbG9nCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zZXR1cC9fX2luaXRfXy5w eSBiL3dlYi9wZ2FkbWluL3NldHVwL19faW5pdF9fLnB5CmluZGV4IDA0NTcxZTllLi43NzlhNzIx NyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc2V0dXAvX19pbml0X18ucHkKKysrIGIvd2ViL3Bn YWRtaW4vc2V0dXAvX19pbml0X18ucHkKQEAgLTExLDMgKzExLDQgQEAgZnJvbSAudXNlcl9pbmZv IGltcG9ydCB1c2VyX2luZm8KIGZyb20gLmRiX3ZlcnNpb24gaW1wb3J0IGdldF92ZXJzaW9uLCBz ZXRfdmVyc2lvbgogZnJvbSAuZGJfdXBncmFkZSBpbXBvcnQgZGJfdXBncmFkZQogZnJvbSAuZGF0 YV9kaXJlY3RvcnkgaW1wb3J0IGNyZWF0ZV9hcHBfZGF0YV9kaXJlY3RvcnkKK2Zyb20gLmRiX3Rh YmxlX2NoZWNrIGltcG9ydCBjaGVja19kYl90YWJsZXMKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L3NldHVwL2RiX3RhYmxlX2NoZWNrLnB5IGIvd2ViL3BnYWRtaW4vc2V0dXAvZGJfdGFibGVfY2hl Y2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjRkYTg2YzI3Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc2V0dXAvZGJfdGFibGVfY2hlY2sucHkKQEAgLTAs MCArMSwzMiBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNR TCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIxLCBUaGUgcGdBZG1pbiBEZXZl bG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3Rn cmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZnJvbSBwZ2FkbWluLm1vZGVs IGltcG9ydCBWZXJzaW9uCitmcm9tIHBnYWRtaW4ubW9kZWwgaW1wb3J0IGRiCisKKworZGVmIGdl dF9kYl90YWJsZV9uYW1lcygpOgorICAgIGRiX3RhYmxlX25hbWVzID0gZGIubWV0YWRhdGEudGFi bGVzLmtleXMoKSBpZiBkYi5tZXRhZGF0YS50YWJsZXMgZWxzZSAwCisgICAgcmV0dXJuIGRiX3Rh YmxlX25hbWVzCisKKworZGVmIGNoZWNrX2RiX3RhYmxlcygpOgorICAgIGlzX2Vycm9yID0gRmFs c2UKKyAgICBpbnZhbGlkX3RiX25hbWVzID0gbGlzdCgpCisgICAgZGJfdGFibGVfbmFtZXMgPSBn ZXRfZGJfdGFibGVfbmFtZXMoKQorICAgICMgY2hlY2sgdGFibGUgaXMgYWN0dWFsbHkgcHJlc2Vu dCBpbiB0aGUgZGIuCisgICAgZm9yIHRhYmxlX25hbWUgaW4gZGJfdGFibGVfbmFtZXM6CisgICAg ICAgIGlmIG5vdCBkYi5lbmdpbmUuZGlhbGVjdC5oYXNfdGFibGUoZGIuZW5naW5lLCB0YWJsZV9u YW1lKToKKyAgICAgICAgICAgIGludmFsaWRfdGJfbmFtZXMuYXBwZW5kKHRhYmxlX25hbWUpCisg ICAgICAgICAgICBpc19lcnJvciA9IFRydWUKKworICAgIGlmIGlzX2Vycm9yOgorICAgICAgICBy ZXR1cm4gVHJ1ZSwgaW52YWxpZF90Yl9uYW1lcworICAgIGVsc2U6CisgICAgICAgIHJldHVybiBG YWxzZSwgaW52YWxpZF90Yl9uYW1lcwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc2V0dXAvZGJf dmVyc2lvbi5weSBiL3dlYi9wZ2FkbWluL3NldHVwL2RiX3ZlcnNpb24ucHkKaW5kZXggYWQyODEx YTEuLjUwNjA3NTgzIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zZXR1cC9kYl92ZXJzaW9uLnB5 CisrKyBiL3dlYi9wZ2FkbWluL3NldHVwL2RiX3ZlcnNpb24ucHkKQEAgLTE2LDcgKzE2LDEwIEBA IGRlZiBnZXRfdmVyc2lvbigpOgogICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgIHJldHVy biAtMQogCi0gICAgcmV0dXJuIHZlcnNpb24udmFsdWUKKyAgICBpZiB2ZXJzaW9uOgorICAgICAg ICByZXR1cm4gdmVyc2lvbi52YWx1ZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAtMQogCiAK IGRlZiBzZXRfdmVyc2lvbihuZXdfdmVyc2lvbik6Cg== --00000000000082e24205c3d6d5d5--