Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aItAV-0007tY-64 for pgadmin-hackers@arkaria.postgresql.org; Tue, 12 Jan 2016 07:15:03 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aItAU-0005fH-Ko for pgadmin-hackers@arkaria.postgresql.org; Tue, 12 Jan 2016 07:15:02 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84) (envelope-from ) id 1aItAF-0005Pp-Ol for pgadmin-hackers@postgresql.org; Tue, 12 Jan 2016 07:14:47 +0000 Received: from mail-wm0-x22e.google.com ([2a00:1450:400c:c09::22e]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1aItAB-0000UO-TX for pgadmin-hackers@postgresql.org; Tue, 12 Jan 2016 07:14:47 +0000 Received: by mail-wm0-x22e.google.com with SMTP id u188so243142536wmu.1 for ; Mon, 11 Jan 2016 23:14:43 -0800 (PST) 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:content-type; bh=Z2gpwsM0NMOZMqSpyxFCUjywl0o5u5B6gBZRoM3C/0s=; b=IfJbzdH294kcoq0o294snL0SzZq/3At0zsnuE6FW4TfEu0bG6C1U9xC/RRv+pKdYjC q0aUlqO7w2/CdMR/dUrdNQHK1bclFUq3z5prEZGzDl2VNNuTsbNP2Z2FvMYDDIaowhkm hlIFDEutme2arHFjdhLO6EEfzSX+hiOqwuzip1skDwjTUQJr1ila7JwkwtA54Q2ECIg3 dKwpX2AlPrA8a5xm2NqvUy6Driw8t/UjrGOFKOc5IK/TzS7yOfLteTtSQ/fiuCP6e8HD v2e798JsXik9X57eanuNLI6Vt4JbzIA7b5wpt2nX/CiD+7j16Cio6HSzatBUudbdw+T+ y7dA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to :content-type; bh=Z2gpwsM0NMOZMqSpyxFCUjywl0o5u5B6gBZRoM3C/0s=; b=f5yE/b6fEhgi6Xnb45Cbypt2gGBJmqVidmsY4MO5hznn1WUZDCQl0R+ByFooZKh74X hbXUiZc/ceurGiISmrNuZFg/3glI4IWto84ZuLVSr6g9ayrd/BgAb31sTEjn/ENTc0iW fd13ebBW1AN2P56jpucyKWnRabdmmALz8EmS8gp5iAk0lTZdaef72U6en1DT7/Ru8AD2 LBBeuvl3no9jOK/rFlZvGWdnhxdl8USDk09tlo3jeeg41rQKy912FTCBMbrgwulOmZEE uakorH4V+SoM02YJtU2mxcR31qi2RCNTcjik3eYClvPWCdJHqECLxFOqLidB7I3G1U6F UD0g== X-Gm-Message-State: ALoCoQlMv5psTvImWdDvdNKfTdzeZL0vZ0N2FxVoBzpp1ZTslLP2GZRURVpD+yt196fhKbcbG0sEc0QNO2+ToYxiKJl/vL0brZBgsOY2ruHxBtsmPk9mnMI= X-Received: by 10.194.79.227 with SMTP id m3mr136704110wjx.5.1452582882579; Mon, 11 Jan 2016 23:14:42 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.15.66 with HTTP; Mon, 11 Jan 2016 23:14:12 -0800 (PST) From: Surinder Kumar Date: Tue, 12 Jan 2016 12:44:12 +0530 Message-ID: Subject: [pgAdmin4] [Patch]: Extension Module To: pgadmin-hackers@postgresql.org Content-Type: multipart/mixed; boundary=047d7bf0c6b6b9e3fb05291dcebf X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --047d7bf0c6b6b9e3fb05291dcebf Content-Type: multipart/alternative; boundary=047d7bf0c6b6b9e3f705291dcebd --047d7bf0c6b6b9e3f705291dcebd Content-Type: text/plain; charset=UTF-8 Hi, Please find attached patch for the extension module. Please review it and Let me know for any comments. Thanks, Surinder Kumar --047d7bf0c6b6b9e3f705291dcebd Content-Type: text/html; charset=UTF-8
Hi,

Please find attached patch for the extension module.
Please review it and Let me know for any comments.


Thanks,
Surinder Kumar
--047d7bf0c6b6b9e3f705291dcebd-- --047d7bf0c6b6b9e3fb05291dcebf Content-Type: text/x-patch; charset=US-ASCII; name="extension.patch" Content-Disposition: attachment; filename="extension.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ijb28wdk0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL19faW5pdF9fLnB5IGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2V4dGVuc2lvbnMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMzNmM2ZiYQotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9leHRlbnNpb25zL19faW5pdF9fLnB5CkBAIC0wLDAgKzEs MzU2IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBw Z0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAo QykgMjAxMyAtIDIwMTUsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0K KyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdy ZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworCitpbXBvcnQganNvbgorZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3Rl bXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCByZXF1ZXN0LCBqc29uaWZ5Citmcm9t IGZsYXNrLmV4dC5iYWJlbCBpbXBvcnQgZ2V0dGV4dAorZnJvbSBwZ2FkbWlu LnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgXAorICAg IG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgaW50ZXJuYWxfc2Vy dmVyX2Vycm9yCitmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQg Tm9kZVZpZXcKK2Zyb20gcGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24gaW1w b3J0IENvbGxlY3Rpb25Ob2RlTW9kdWxlCitpbXBvcnQgcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMgYXMgZGF0YWJh c2VzCitmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgcHJlY29uZGl0 aW9uX3JlcXVpcmVkCitmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9y dCBnZXRfZHJpdmVyCitmcm9tIGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9E UklWRVIKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcworCisKK2NsYXNz IEV4dGVuc2lvbk1vZHVsZShDb2xsZWN0aW9uTm9kZU1vZHVsZSk6CisgICAg Tk9ERV9UWVBFID0gImV4dGVuc2lvbiIKKyAgICBDT0xMRUNUSU9OX0xBQkVM ID0gZ2V0dGV4dCgiRXh0ZW5zaW9ucyIpCisKKyAgICBkZWYgX19pbml0X18o c2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoRXh0ZW5z aW9uTW9kdWxlLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisK KyAgICBkZWYgZ2V0X25vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQpOgorICAg ICAgICAiIiIKKyAgICAgICAgR2VuZXJhdGUgdGhlIGNvbGxlY3Rpb24gbm9k ZQorICAgICAgICAiIiIKKyAgICAgICAgeWllbGQgc2VsZi5nZW5lcmF0ZV9i cm93c2VyX2NvbGxlY3Rpb25fbm9kZShkaWQpCisKKyAgICBAcHJvcGVydHkK KyAgICBkZWYgc2NyaXB0X2xvYWQoc2VsZik6CisgICAgICAgICIiIgorICAg ICAgICBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBzZXJ2ZXIsIHdoZW4g YW55IG9mIHRoZSBzZXJ2ZXItZ3JvdXAgbm9kZSBpcworICAgICAgICBpbml0 aWFsaXplZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBkYXRhYmFz ZXMuRGF0YWJhc2VNb2R1bGUuTk9ERV9UWVBFCisKKworYmx1ZXByaW50ID0g RXh0ZW5zaW9uTW9kdWxlKF9fbmFtZV9fKQorCisKK2NsYXNzIEV4dGVuc2lv blZpZXcoTm9kZVZpZXcpOgorICAgIG5vZGVfdHlwZSA9IGJsdWVwcmludC5u b2RlX3R5cGUKKworICAgIHBhcmVudF9pZHMgPSBbCisgICAgICAgICAgICB7 J3R5cGUnOiAnaW50JywgJ2lkJzogJ2dpZCd9LAorICAgICAgICAgICAgeyd0 eXBlJzogJ2ludCcsICdpZCc6ICdzaWQnfSwKKyAgICAgICAgICAgIHsndHlw ZSc6ICdpbnQnLCAnaWQnOiAnZGlkJ30KKyAgICAgICAgICAgIF0KKyAgICBp ZHMgPSBbCisgICAgICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2Vp ZCd9CisgICAgICAgICAgICBdCisKKyAgICBvcGVyYXRpb25zID0gZGljdCh7 CisgICAgICAgICdvYmonOiBbCisgICAgICAgICAgICB7J2dldCc6ICdwcm9w ZXJ0aWVzJywgJ2RlbGV0ZSc6ICdkZWxldGUnLCAncHV0JzogJ3VwZGF0ZSd9 LAorICAgICAgICAgICAgeydnZXQnOiAnbGlzdCcsICdwb3N0JzogJ2NyZWF0 ZSd9CisgICAgICAgIF0sCisgICAgICAgICdkZWxldGUnOiBbeydkZWxldGUn OiAnZGVsZXRlJ31dLAorICAgICAgICAnbm9kZXMnOiBbeydnZXQnOiAnbm9k ZSd9LCB7J2dldCc6ICdub2Rlcyd9XSwKKyAgICAgICAgJ3NxbCc6IFt7J2dl dCc6ICdzcWwnfV0sCisgICAgICAgICdtc3FsJzogW3snZ2V0JzogJ21zcWwn fSwgeydnZXQnOiAnbXNxbCd9XSwKKyAgICAgICAgJ3N0YXRzJzogW3snZ2V0 JzogJ3N0YXRpc3RpY3MnfV0sCisgICAgICAgICdkZXBlbmRlbmN5JzogW3sn Z2V0JzogJ2RlcGVuZGVuY2llcyd9XSwKKyAgICAgICAgJ2RlcGVuZGVudCc6 IFt7J2dldCc6ICdkZXBlbmRlbnRzJ31dLAorICAgICAgICAnbW9kdWxlLmpz JzogW3t9LCB7fSwgeydnZXQnOiAnbW9kdWxlX2pzJ31dLAorICAgICAgICAn YXZhaWxzJzogW3t9LCB7J2dldCc6ICdhdmFpbHMnfV0sCisgICAgICAgICdz Y2hlbWFzJzogW3t9LCB7J2dldCc6ICdzY2hlbWFzJ31dLAorICAgICAgICAn Y2hpbGRyZW4nOiBbeydnZXQnOiAnY2hpbGRyZW4nfV0KKyAgICB9KQorCisg ICAgZGVmIGNoZWNrX3ByZWNvbmRpdGlvbihmKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0 b3Igd2hpY2ggd2lsbCBjaGVja3MKKyAgICAgICAgZGF0YWJhc2UgY29ubmVj dGlvbiBiZWZvcmUgcnVubmluZyB2aWV3LCBpdCB3aWxsIGFsc28gYXR0YWNo ZXMKKyAgICAgICAgbWFuYWdlcixjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9w ZXJ0aWVzIHRvIHNlbGYKKyAgICAgICAgIiIiCisgICAgICAgIEB3cmFwcyhm KQorICAgICAgICBkZWYgd3JhcCgqYXJncywgKiprd2FyZ3MpOgorICAgICAg ICAgICAgIyBIZXJlIGFyZ3NbMF0gd2lsbCBob2xkIHNlbGYgJiBrd2FyZ3Mg d2lsbCBob2xkIGdpZCxzaWQsZGlkCisgICAgICAgICAgICBzZWxmID0gYXJn c1swXQorICAgICAgICAgICAgc2VsZi5tYW5hZ2VyID0gZ2V0X2RyaXZlcihQ R19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9tYW5hZ2VyKGt3YXJnc1sn c2lkJ10pCisgICAgICAgICAgICBzZWxmLmNvbm4gPSBzZWxmLm1hbmFnZXIu Y29ubmVjdGlvbihkaWQ9a3dhcmdzWydkaWQnXSkKKyAgICAgICAgICAgIHNl bGYudGVtcGxhdGVfcGF0aCA9ICdleHRlbnNpb25zL3NxbCcKKworICAgICAg ICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICByZXR1 cm4gd3JhcAorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBs aXN0KHNlbGYsIGdpZCwgc2lkLCBkaWQpOgorICAgICAgICAiIiIKKyAgICAg ICAgSXQgZmV0Y2hlcyBhbGwgZXh0ZW5zaW9ucyBwcm9wZXJ0aWVzIGFuZCBy ZW5kZXIgaW50byBwcm9wZXJ0aWVzCisgICAgICAgIHRhYgorICAgICAgICAi IiIKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSkKKyAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkK KworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAg IHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHJlc3Bv bnNlPXJlc1sncm93cyddLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAK KyAgICAgICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgZGVmIG5vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQpOgorICAgICAg ICAiIiIKKyAgICAgICAgSXQgbGlzdHMgZG93biB0aGUgYWxsIGV4dGVuc2lv bnMgdW5kZXIgdGhlIEV4dGVuc2lvbnMgQ29sbGVjdGlvbiBub2RlCisgICAg ICAgICIiIgorICAgICAgICByZXMgPSBbXQorICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3By b3BlcnRpZXMuc3FsJ10pKQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxm LmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICBmb3Igcm93IGluIHJzZXRb J3Jvd3MnXToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAgICAgICAg ICAgICAgICAgIHNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9k ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvd1snZWlkJ10sCisgICAg ICAgICAgICAgICAgICAgICAgICByb3dbJ25hbWUnXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICdpY29uLWV4dGVuc2lvbicKKyAgICAgICAgICAgICAg ICAgICAgKSkKKworICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNl KAorICAgICAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgICAg IHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICApCisKKyAgICBAY2hlY2tf cHJlY29uZGl0aW9uCisgICAgZGVmIHByb3BlcnRpZXMoc2VsZiwgZ2lkLCBz aWQsIGRpZCwgZWlkKToKKyAgICAgICAgIiIiCisgICAgICAgIEl0IGZldGNo ZXMgdGhlIHByb3BlcnRpZXMgb2YgYSBzaW5nbGUgZXh0ZW5zaW9uCisgICAg ICAgIGFuZCByZW5kZXIgaW4gcHJvcGVydGllcyB0YWIKKworICAgICAgICAi IiIKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwgZWlkPWVp ZCkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor CisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAg ICAgIHJlc3BvbnNlPXJlc1sncm93cyddWzBdLAorICAgICAgICAgICAgICAg IHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICApCisKKyAgICBAY2hlY2tf cHJlY29uZGl0aW9uCisgICAgZGVmIGNyZWF0ZShzZWxmLCBnaWQsIHNpZCwg ZGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2ls bCBjcmVhdGVzIG5ldyB0aGUgZXh0ZW5zaW9uIG9iamVjdAorICAgICAgICAi IiIKKyAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsKKyAgICAgICAgICAgICdu YW1lJywKKyAgICAgICAgICAgICd2ZXJzaW9uJworICAgICAgICBdCisKKyAg ICAgICAgZGF0YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxz ZSBqc29uLmxvYWRzKHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkKKyAgICAgICAg Zm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAgaWYgYXJn IG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pz b25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cz00MTAs CisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MCwKKyAgICAgICAgICAg ICAgICAgICAgZXJyb3Jtc2c9Z2V0dGV4dCgKKyAgICAgICAgICAgICAgICAg ICAgICAgICJDb3VsZG4ndCBmaW5kIHRoZSByZXF1aXJlZCBwYXJhbWV0ZXIg KCVzKS4iICUgYXJnCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg ICAgICAgICApCisKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAor ICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs ICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgIGRhdGE9ZGF0YQor ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgICAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgc3RhdHVzLCBy c2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdCgKKyAgICAgICAgICAgIHJl bmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAg ICAgICAgICAgZW5hbWU9ZGF0YVsnbmFtZSddCisgICAgICAgICAgICApCisg ICAgICAgICkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0 KQorCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAg ICAgICAgcmV0dXJuIGpzb25pZnkoCisgICAgICAgICAgICAgIG5vZGU9c2Vs Zi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAg ICAgICAgICAgICByb3dbJ2VpZCddLAorICAgICAgICAgICAgICAgICAgICBy b3dbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgJ2ljb24tZXh0ZW5z aW9uJworICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisK KyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHVwZGF0ZShzZWxm LCBnaWQsIHNpZCwgZGlkLCBlaWQpOgorICAgICAgICAiIiIKKyAgICAgICAg VGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSBleHRlbnNpb24gb2JqZWN0Cisg ICAgICAgICIiIgorICAgICAgICBkYXRhID0gcmVxdWVzdC5mb3JtIGlmIHJl cXVlc3QuZm9ybSBlbHNlIGpzb24ubG9hZHMocmVxdWVzdC5kYXRhLmRlY29k ZSgpKQorICAgICAgICBTUUwgPSBzZWxmLmdldFNRTChnaWQsIHNpZCwgZGF0 YSwgZGlkLCBlaWQpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYg U1FMIGFuZCBTUUwuc3RyaXAoJ1xuJykgYW5kIFNRTC5zdHJpcCgnICcpOgor ICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChTUUwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBzdWNj ZXNzPTEsCisgICAgICAgICAgICAgICAgICAgIGluZm89IkV4dGVuc2lvbiB1 cGRhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAg ICAgICAgICAgICAgICAgICAnaWQnOiBlaWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAg J2dpZCc6IGdpZAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAg ICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAgICAgIGluZm89Ik5vdGhp bmcgdG8gdXBkYXRlIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT17Cisg ICAgICAgICAgICAgICAgICAgICAgICAnaWQnOiBkaWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAg ICAgICAgJ2dpZCc6IGdpZAorICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMg ZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgZWlkKToKKyAg ICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBkZWxldGUg ZHJvcC9kcm9wIGNhc2NhZGUgdGhlIGV4dGVuc2lvbiBvYmplY3QKKyAgICAg ICAgIiIiCisgICAgICAgIGNhc2NhZGUgPSBUcnVlIGlmIHNlbGYuY21kID09 ICdkZWxldGUnIGVsc2UgRmFsc2UKKyAgICAgICAgdHJ5OgorICAgICAgICAg ICAgIyBjaGVjayBpZiBleHRlbnNpb24gd2l0aCBlaWQgZXhpc3RzCisgICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ2RlbGV0ZS5zcWwnXSksIGVpZD1laWQpCisgICAg ICAgICAgICBzdGF0dXMsIG5hbWUgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2Fs YXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PW5hbWUpCisgICAgICAgICAgICAjIGRyb3AgZXh0ZW5zaW9uCisgICAgICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwgJ2RlbGV0ZS5zcWwnXSksIG5hbWU9bmFtZSwgY2FzY2Fk ZT1jYXNjYWRlKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBzdWNjZXNzPTEs CisgICAgICAgICAgICAgICAgaW5mbz1nZXR0ZXh0KCJFeHRlbnNpb24gZHJv cHBlZCIpLAorICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAg ICAgICAgICAnaWQnOiBkaWQsCisgICAgICAgICAgICAgICAgICAgICdzaWQn OiBzaWQsCisgICAgICAgICAgICAgICAgICAgICdnaWQnOiBnaWQsCisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2Vw dCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNr X3ByZWNvbmRpdGlvbgorICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwgc2lkLCBk aWQsIGVpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gdG8gcmV0dXJuIG1vZGlmaWVkIFNRTAorICAgICAgICAiIiIKKyAg ICAgICAgZGF0YSA9IHJlcXVlc3QuYXJncy5jb3B5KCkKKyAgICAgICAgU1FM ID0gc2VsZi5nZXRTUUwoZ2lkLCBzaWQsIGRhdGEsIGRpZCwgZWlkKQorICAg ICAgICBpZiBTUUwuc3RyaXAoJ1xuJykgYW5kIFNRTC5zdHJpcCgnICcpOgor ICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAg ICAgICAgICAgICAgICAgZGF0YT1TUUwsCisgICAgICAgICAgICAgICAgICAg IHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBl bHNlOgorICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK KyAgICAgICAgICAgICAgICAgICAgZGF0YT0nLS0gTW9kaWZpZWQgU1FMIC0t JywKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAg ICAgICAgICAgICApCisKKyAgICBkZWYgZ2V0U1FMKHNlbGYsIGdpZCwgc2lk LCBkYXRhLCBkaWQsIGVpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAg IFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBzcWwgZnJvbSBtb2RlbCBk YXRhCisgICAgICAgICIiIgorICAgICAgICByZXF1aXJlZF9hcmdzID0gWwor ICAgICAgICAgICAgJ25hbWUnLAorICAgICAgICAgICAgJ3NjaGVtYScsCisg ICAgICAgICAgICAndmVyc2lvbicKKyAgICAgICAgXQorICAgICAgICB0cnk6 CisgICAgICAgICAgICBpZiBlaWQgaXMgbm90IE5vbmU6CisgICAgICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwgZWlkPWVpZCkKKyAg ICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X2RpY3QoU1FMKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgICAgIG9sZF9kYXRhID0g cmVzWydyb3dzJ11bMF0KKyAgICAgICAgICAgICAgICBmb3IgYXJnIGluIHJl cXVpcmVkX2FyZ3M6CisgICAgICAgICAgICAgICAgICAgIGlmIGFyZyBub3Qg aW4gZGF0YToKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbYXJnXSA9 IG9sZF9kYXRhW2FyZ10KKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3VwZGF0 ZS5zcWwnXSksIGRhdGE9ZGF0YSwgb19kYXRhPW9sZF9kYXRhKQorICAgICAg ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5z cWwnXSksIGRhdGE9ZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBTUUwKKyAg ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisK KyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGF2YWlscyhzZWxm LCBnaWQsIHNpZCwgZGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMg ZnVuY3Rpb24gd2l0aCBmZXRjaCBhbGwgdGhlIGF2YWlsYWJsZSBleHRlbnNp b25zCisgICAgICAgICIiIgorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2V4dGVuc2lvbnMu c3FsJ10pKQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhl Y3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cnNldCkKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAg ICAgICAgICAgICAgICBkYXRhPXJzZXRbJ3Jvd3MnXSwKKyAgICAgICAgICAg ICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBzY2hlbWFzKHNlbGYsIGdpZCwg c2lkLCBkaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlv biB3aXRoIGZldGNoIGFsbCB0aGUgc2NoZW1hcworICAgICAgICAiIiIKKyAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsICdzY2hlbWFzLnNxbCddKSkKKyAgICAgICAgc3RhdHVz LCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgZGF0YT1yc2V0 Wydyb3dzJ10sCisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAg ICAgICAgICAgICkKKworICAgIGRlZiBtb2R1bGVfanMoc2VsZik6CisgICAg ICAgICIiIgorICAgICAgICBUaGlzIHByb3BlcnR5IGRlZmluZXMgKGlmIGph dmFzY3JpcHQpIGV4aXN0cyBmb3IgdGhpcyBub2RlLgorICAgICAgICBPdmVy cmlkZSB0aGlzIHByb3BlcnR5IGZvciB5b3VyIG93biBsb2dpYy4KKyAgICAg ICAgIiIiCisgICAgICAgIHJldHVybiBtYWtlX3Jlc3BvbnNlKAorICAgICAg ICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAg ICAgImV4dGVuc2lvbnMvanMvZXh0ZW5zaW9ucy5qcyIsCisgICAgICAgICAg ICAgICAgICAgIF89Z2V0dGV4dAorICAgICAgICAgICAgICAgICAgICApLAor ICAgICAgICAgICAgICAgIDIwMCwgeydDb250ZW50LVR5cGUnOiAnYXBwbGlj YXRpb24veC1qYXZhc2NyaXB0J30KKyAgICAgICAgICAgICAgICApCisKK0V4 dGVuc2lvblZpZXcucmVnaXN0ZXJfbm9kZV92aWV3KGJsdWVwcmludCkKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3N0YXRpYy9pbWcvY29sbC1l eHRlbnNpb24ucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMvc3RhdGljL2ltZy9j b2xsLWV4dGVuc2lvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVk N2NhOTdhMzNlZjU5NWY0NDhiODYyMTE2OGQ1MzFmODZkNTFkNQpHSVQgYmlu YXJ5IHBhdGNoCmxpdGVyYWwgMTAxNwp6Y21WPFYwfHh3d1ApPGg7M0t8TGsw MDBlMU5KTFRxMDAwbUcwMDBtTzB7e1IzQ0BsfEQwMDAwMWI1Y2hfMEl0cCkK ej0+UHglX2ZTayFNU154WigjXk4zcD9SJk9kK19ZdSRpYmolVF42Um9yQiNi bW4hMV81eH0ySmlVSDl8bT1pJHB7CnpSdD43ZXNaeChya0hNQiZtfGtwfVlr Ri1pK1M5cUhvTlRZQ2Z4XnxvSzdjPkg+Qng3bmVNRWpqZk85dlpuUWd6Zwp6 bmFzem8tYHZjLXd3N0tfMHJCZUF3eVM9Z20xalBDSmVKSSRHaj1uJnZ5cSpY Vn5+VlNlUSs/R2t6THUpdisoS0MKej8mWnB1aSVARD81X283SzVMKnRlPEdk fCRFJlRpVWB9cCR0X1UhZlc7UGRSKz4qMiFhLU1aJTR2ZzZnTTtMKUw9Cnpr NTN3NDc5TTNCRFErbGZzQm8mfHhvRTMhOClGJGpkX0xYR241ZFVtSEVKY0Uk KW1+Yih4SzMqdipFcUI9ZmtrJgp6ek42dUBvIV9wSSpQKFg3Zz5rPXRmNzZ4 UCRkSWo/U1ZlOXVnU0xwbj4mfStsc0YyI0RpUClXail8aDxNbGg0NDkKem00 IXVDUHl9ZEw0VnM4VXRDdiFIdjRNNWNqZWRQUEN9JHVqWjZ7eE5KQm9jWEJ4 NCg7KXZrOE1oZF9APTVuSy0jCnpXZih0fE8wPVlFRj1ycnp2eG45MyteeUJM VCRmKkFvQFBJZU4wKyNrV1IrdXJjUU1jSipTRi1zVCZybmZsVkZqdwp6a2FL TSVHPW47QCQqXy1xSVRsX00hc3lHRyY3bnx8UkVeMSpEfDt9JCk0dGZtaHJ6 NkFJYklaQW5xcXt5aSpUJVYKekhoVld0VjsmdTE4SSN0ZElFX05wemticllj OVZmTUx0UFg8Wll4MSZCNVo5T20zfThWWjdGaVBlczlvLVREeCUxCnp3ezZY e1d4JUZYb3JXezVrfl9rck12ezNWTXN6ZXx0IWArfWdKUjVtSGorWG5ZOSgt O1piKlZoQ3gkYzF1VSpIaAp6Um1HPUd6QFJeaGF2VioxSlkzM25SPipUb3lr O3wrTUxNWmJLKV8rWG9qSEFINW08eXZSO0ZUNSMmMWkrWURMMGsKekpISzZf azR1aHdHbHB8MWkrQykhcGk7SitNflpZSWZAflJ0WjVENF8zMGpGI1I7Z3Eq eTsrMktKKkomPSRpdHxLCnpidGJeMVBySX59Iz0paDt6TUB9fFRed20wNT8m RCtZOF5KME1KPG0hNmtgPiZuTCY0SEM+ZCVTUD1gKjRkXyQzWAp6Q29HYVpm VCh8S1NfX3RaQjdVWlFLRCU4T1hjJktMN0orTE84K1JtMGY9QyF7OVQjbUo3 VURGRTAwMDAxYlclPUoKejA2XnkwVyZpKkgwYil4Pkw7IzJkOVlfRUcwMTBx TlMjdG1ZM2xqaFUzbGprVm53JUhfMDAwTWNObGlydStYRVhCCno2Q3AoUmJj cH19MEIlVntLfnh5aVU2OFIyeiN0MytuUyh0dCEzfmhZXnZHZzQyRkw9YEVF Tk5tMHtNITYteTE7KQp6UXhGYXp2TF9jSypiPF9va0ZnMGQ4SGMjVj1FaGAp aCt5Wm1wbGVobmxOWkVkdGdRQGhYMENOZUlXRXB4dyFveU4KbmRjfnRzcDlU bGlkT3pPQyYtKSp8S0gpM3BEMm5ncjAwMDAwTmt2WFh1MG1qZjxLTlV6Cgps aXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0 ZW5zaW9ucy9zdGF0aWMvaW1nL2V4dGVuc2lvbi5wbmcgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0 ZW5zaW9ucy9zdGF0aWMvaW1nL2V4dGVuc2lvbi5wbmcKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMC4uZTNjNTMzMzQ3ODgzZmMxZGVjNzNiY2IyMWIzMmZjNTRl M2MzMTczMgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgOTk2CnpjbVY8QTB+ YEVfUCk8aDszS3xMazAwMGUxTkpMVHEwMDBtRzAwMG1PMHt7UjNDQGx8RDAw MDAxYjVjaF8wSXRwKQp6PT5QeCVgY088JU1RMnpMZl82STYmOXx6ZGQ5OT4t QGEqMm0hSnVuaDdOKXxiUmZ8LWJ4fHpWYm9TS2hhX3cobEcKejttYy1MNFhW VmNRamIpUiFJb04+VVRtNmNkVGxQKyk0OGFlWV9GKCshcXZoKWZJcSRJJGFr QFFNMURlbWIycC15CnpaTklwZyUqVT9aK3wwZVVtUj9RKUAjQHlMdEEzdTlY Rmh2OG1kdjB0Yn5DIU9rKTR4Y2tjM1dzYTQ/KmFVRD9wSAp6QGFmWC08O3N8 Z1AtPEhlY3hXTElUTW4re3llKURxe1FMTCZgMTFNbz9EZz5BXlglRXs7bGsr TXk1YHhrPEpHQykKeihWP0peUGEwcXI5JVVSVVpZWEp9YUhgfEVYc2Q3PVY7 TWt2S0hiY2lzRnpuWVk5KmVAcXNpXmtxMHArYztrfiEjCnohPzVNUHF2NWxp LT4jNj9wPzFOQWFsZTNuKTBOdURrZ2J8bk1RJHZFd3VyOykmWChQJWtsTGUo KnF3c2JuMChaZQp6JiVscUJnKyozUzFaWT9kbnV0VEltcntHTmZweVoyZXRr TTlYQ05xVEN0cjl3aWhWT0FWO2lOX3U2RChUSyN4Y2YKelRuYHYhNyhiT3R3 NGBiPVhDUT5MaHQ9YGl0PHwoI210U0Y/VzxRUWNtJDtUPm0xQlo7RzAqU1V4 OCVXR3Q3JjRCCnpWM0QrdGI4Ukl3Z0YzTHV1I2JOXjdHNHY9PSp5VlJwLV9A a2ptZW9TZG9hRyF6U3pXdiFLYFVIVUtDIU1WdVpTagp6YUlBSlZkcEF5Rjl2 eHlDbGgmZytqWThHR2UkdTtrbFl1b3VUQCppVkQ/dyk+WTs3RXNla1ZDP0RS UjFnWl90UVoKenlLdjk5Wk95WX56QH04NGhCS3tfSkhuKCFsNmZMVmJUbmhG WmZNU2ZWJDZMdWwwcWhHQzIqWj9OUDxUdmhCTH5xCnpVQnwwYyNpdmNjcGcp Um85OEcjV1QqYFA+JGE2fShXOzI+YUk7bH1Xeit0fGZJZWxqbFNjRlNmcmVh WFdaJWYyIwp6TVojdH56Zz9rXk9PQVVwaEkxKjRjcjNWfVFuczgmaWdZMUBZ I0RAWTdIP2IkVDhVQ3RzYm5fMlMlaTIhcmshKWgKeiE+RWFNQ2N2YW15Uj8o VyFLSzgkcUY8Mys5QkNhQVVKKTg8OVg2TG1Fc3MxRFYtPlpUTDNlMj04RVA5 KWhmYXVtCnpMeT53WEVSc0Vkc0RFbygzem1FJGV4YGpzeUltRyY3PUxPT2Zv bH5UY08qJUlORW1KJTdpfUJ8WVJuMSUwMDA0Vwp6UWNoQzxLPDN6SDAwMDAx Vm9PSXYwRWgpME5Ce3I7MzI7YlJhe3ZHZjY5NTFVNjlFOTRvRVFLQTAwKHFR TyteUlcKejB+LXhHNCEmSEJGOH19bFIhS3hiUjJiN15VPzNqMnhTO1Z2TFhi dHdUen4+MFc9UWhWQSl5SF9Ga0x7fTE7aHVrCnpwYUtDUUt6QD03c2B7aTk3 aTBAdmwyVFM4dzFDNz9SJkc3eTspMU5tPDxPWmtDe0EtaDw2fUE8Q2piRGFQ OHFEZQpTUl80ZTYwMDAwPE1OVU1uTFNUYVgtXkwzNwoKbGl0ZXJhbCAwCkhj bVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMvdGVt cGxhdGVzL2V4dGVuc2lvbnMvanMvZXh0ZW5zaW9ucy5qcyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9l eHRlbnNpb25zL3RlbXBsYXRlcy9leHRlbnNpb25zL2pzL2V4dGVuc2lvbnMu anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIxYmY3 YgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3RlbXBs YXRlcy9leHRlbnNpb25zL2pzL2V4dGVuc2lvbnMuanMKQEAgLTAsMCArMSwx ODggQEAKK2RlZmluZSgKKyAgICAgICAgWydqcXVlcnknLCAndW5kZXJzY29y ZScsICd1bmRlcnNjb3JlLnN0cmluZycsICdwZ2FkbWluJywgJ3BnYWRtaW4u YnJvd3NlcicsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbiddLAorZnVu Y3Rpb24oJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyKSB7CisKKyAgaWYg KCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZXh0ZW5zaW9uJ10pIHsKKyAgICB2 YXIgZXh0ZW5zaW9ucyA9IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29sbC1l eHRlbnNpb24nXSA9CisgICAgICBwZ0FkbWluLkJyb3dzZXIuQ29sbGVjdGlv bi5leHRlbmQoeworICAgICAgICBub2RlOiAnZXh0ZW5zaW9uJywKKyAgICAg ICAgbGFiZWw6ICd7eyBfKCdFeHRlbnNpb24nKSB9fScsCisgICAgICAgIHR5 cGU6ICdjb2xsLWV4dGVuc2lvbicsCisgICAgICAgIGNvbHVtbnM6IFsnbmFt ZScsICdvd25lcicsICdjb21tZW50J10KKyAgICAgIH0pOworICB9OworCisg IGlmICghcGdCcm93c2VyLk5vZGVzWydleHRlbnNpb24nXSkgeworICAgIHBn QWRtaW4uQnJvd3Nlci5Ob2Rlc1snZXh0ZW5zaW9uJ10gPQorICAgIHBnQWRt aW4uQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgICBwYXJlbnRfdHlwZTog J2RhdGFiYXNlJywKKyAgICAgIHR5cGU6ICdleHRlbnNpb24nLAorICAgICAg aGFzU1FMOiB0cnVlLAorICAgICAgY2FuRHJvcDogdHJ1ZSwKKyAgICAgIGNh bkRyb3BDYXNjYWRlOiB0cnVlLAorICAgICAgbGFiZWw6ICd7eyBfKCdFeHRl bnNpb24nKSB9fScsCisKKyAgICAgIEluaXQ6IGZ1bmN0aW9uKCl7CisgICAg ICAgIGlmKHRoaXMuaW5pdGlhbGl6ZWQpCisgICAgICAgICAgICByZXR1cm47 CisKKyAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7CisKKyAgICAg ICAgcGdCcm93c2VyLmFkZF9tZW51cyhbeworICAgICAgICAgIG5hbWU6ICdj cmVhdGVfZXh0ZW5zaW9uX29uX2NvbGwnLCBub2RlOiAnY29sbC1leHRlbnNp b24nLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmpl Y3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRp ZXMnLAorICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6 IDQsIGxhYmVsOiAne3sgXygnRXh0ZW5zaW9uLi4uJykgfX0nLAorICAgICAg ICAgIGljb246ICd3Y1RhYkljb24gcGctaWNvbi1leHRlbnNpb24nLCBkYXRh OiB7YWN0aW9uOiAnY3JlYXRlJ30KKyAgICAgICAgfSx7CisgICAgICAgICAg bmFtZTogJ2NyZWF0ZV9leHRlbnNpb24nLCBub2RlOiAnZXh0ZW5zaW9uJywg bW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0Jywg J2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywK KyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBs YWJlbDogJ3t7IF8oJ0V4dGVuc2lvbi4uLicpIH19JywKKyAgICAgICAgICBp Y29uOiAnd2NUYWJJY29uIHBnLWljb24tZXh0ZW5zaW9uJywgZGF0YToge2Fj dGlvbjogJ2NyZWF0ZSd9CisgICAgICAgIH0KKyAgICAgICAgXSk7CisgICAg ICB9LAorICAgICAgbW9kZWw6IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVs LmV4dGVuZCh7CisgICAgICAgIHNjaGVtYTogWworICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgIGlkOiAnbmFtZScsIGxhYmVsOiAne3sgXygnTmFt ZScpfX0nLAorICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTog Wydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCisgICAgICAgICAg ICAgICAgdmlzaWJsZTogdHJ1ZSwgdXJsOidhdmFpbHMnLCBkaXNhYmxlZDog ZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gIW0u aXNOZXcoKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg IHRyYW5zZm9ybTogZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgICAgICAg ICAgICB2YXIgcmVzID0gW107CisgICAgICAgICAgICAgICAgICAgIHZhciBs YWJlbCA9IHRoaXMubW9kZWwuZ2V0KCduYW1lJyk7CisgICAgICAgICAgICAg ICAgICAgIGlmICghdGhpcy5tb2RlbC5pc05ldygpKXsKKyAgICAgICAgICAg ICAgICAgICAgICAgIHJlcy5wdXNoKHtsYWJlbDogbGFiZWwsIHZhbHVlOiBs YWJlbH0pOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKGRhdGEgJiYgXy5pc0FycmF5KGRhdGEp KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goe2xh YmVsOiAnJywgdmFsdWU6ICcnfSk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXy5lYWNoKGRhdGEsIGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKGQuaW5zdGFsbGVkX3ZlcnNpb24g PT0gbnVsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8qIGQgY29udGFpbnMganNvbiBkYXRhIGFuZCBzZXRzIGludG8KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc2VsZWN0J3Mgb3B0 aW9uIGNvbnRyb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXMucHVzaCh7bGFiZWw6IGQubmFtZSwgdmFsdWU6IGR9KTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg ICAgIHJldHVybiByZXM7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgICAgICAvKiBleHRlbmRzIE5vZGVBamF4T3B0aW9uc0NvbnRyb2wgdG8g b3ZlcnJpZGUgdGhlIHByb3BlcnRpZXMKKyAgICAgICAgICAgICAgICAqIGdl dFZhbHVlRnJvbURPTSB3aGljaCB0YWtlcyBzdHJpbmdpZmllZCBkYXRhIGZy b20gb3B0aW9uIG9mCisgICAgICAgICAgICAgICAgKiBzZWxlY3QgY29udHJv bCBhbmQgcGFyc2UgaXQuIEFuZCBgb25DaGFuZ2VgIHRha2VzIHRoZSBzdHJp bmdpZmllZAorICAgICAgICAgICAgICAgICogZGF0YSBmcm9tIHNlbGVjdCdz IG9wdGlvbiwgdGh1cyBjb252ZXJ0IGl0IHRvIGpzb24gZm9ybWF0IGFuZCBz ZXQgdGhlCisgICAgICAgICAgICAgICAgKiBkYXRhIGludG8gTW9kZWwgd2hp Y2ggaXMgdXNlZCB0byBlbmFibGUvZGlzYWJsZSB0aGUgc2NoZW1hIGZpZWxk LgorICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgY29udHJv bDogQmFja2Zvcm0uTm9kZUFqYXhPcHRpb25zQ29udHJvbC5leHRlbmQoewor ICAgICAgICAgICAgICAgICAgICBnZXRWYWx1ZUZyb21ET006IGZ1bmN0aW9u KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlz LmZvcm1hdHRlci50b1Jhdyh0aGlzLiRlbC5maW5kKCJzZWxlY3QiKS52YWwo KSwgdGhpcy5tb2RlbCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gZGF0YS5uYW1lOworICAgICAgICAgICAgICAgICAgICB9LAorICAgICAg ICAgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24oKSB7CisgICAgICAg ICAgICAgICAgICAgICAgICBCYWNrZm9ybS5Ob2RlQWpheE9wdGlvbnNDb250 cm9sLnByb3RvdHlwZS5vbkNoYW5nZS5hcHBseSh0aGlzLCBhcmd1bWVudHMp OworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkVmFsdWUg PSB0aGlzLiRlbC5maW5kKCJzZWxlY3QiKS52YWwoKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgIGlmIChzZWxlY3RlZFZhbHVlLnRyaW0oKSAhPSAiIil7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLmZv cm1hdHRlci50b1JhdyhzZWxlY3RlZFZhbHVlLCB0aGlzLm1vZGVsKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2hhbmdlcyA9IHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAoIV8u aXNOdWxsKGQudmVyc2lvblswXSkgPyBkLnZlcnNpb25bMF06ICcnKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbG9jYXRhYmxlJzog KCFfLmlzTnVsbChkLnJlbG9jYXRhYmxlWzBdKSA/IGQucmVsb2NhdGFibGVb MF06ICcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nj aGVtYSc6ICghXy5pc051bGwoZC5zY2hlbWFbMF0pID8gZC5zY2hlbWFbMF06 ICcnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9kZWwuc2V0KGNoYW5n ZXMpOworICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdmFyIGNoYW5nZXMgPSB7J3ZlcnNpb24n OiAnJywgJ3JlbG9jYXRhYmxlJzogdHJ1ZSwgJ3NjaGVtYSc6ICcnfTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnNldChjaGFu Z2VzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAg fSx7CisgICAgICAgICAgICAgICAgaWQ6ICdlaWQnLCBsYWJlbDogJ3t7IF8o J09pZCcpfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICAgICAgICB0 eXBlOiAndGV4dCcsIGRpc2FibGVkOiB0cnVlLCBtb2RlOiBbJ3Byb3BlcnRp ZXMnLCAnZWRpdCcsICdjcmVhdGUnXQorICAgICAgICAgICAgfSwKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZDogJ293bmVyJywgbGFiZWw6 ICd7eyBfKCdPd25lcicpfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAg ICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddCisg ICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg IGlkOiAnc2NoZW1hJywgbGFiZWw6ICd7eyBfKCdTY2hlbWEnKX19JywgdHlw ZTogJ3RleHQnLCBjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLAorICAg ICAgICAgICAgICAgIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAn ZWRpdCddLCBncm91cDogJ0RlZmluaXRpb24nLCBkZXBzOiBbJ3JlbG9jYXRh YmxlJ10sCisgICAgICAgICAgICAgICAgdXJsOiAnc2NoZW1hcycsIGRpc2Fi bGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIGVu YWJsZSBvciBkaXNhYmxlIHNjaGVtYSBmaWVsZCBpZiBtb2RlbCdzIHJlbG9j YXRhYmxlCisgICAgICAgICAgICAgICAgICAgICogYXR0cmlidXRlIGlzIFRy dWUgb3IgRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIChtLmhhcygncmVsb2NhdGFibGUnKSA/ICFt LmdldCgncmVsb2NhdGFibGUnKSA6IGZhbHNlKTsKKyAgICAgICAgICAgICAg ICB9LAorICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24oZGF0 YSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgcmVzID0gW107CisgICAg ICAgICAgICAgICAgICAgIGlmIChkYXRhICYmIF8uaXNBcnJheShkYXRhKSkg eworICAgICAgICAgICAgICAgICAgICAgICAgXy5lYWNoKGRhdGEsIGZ1bmN0 aW9uKGQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMucHVz aCh7bGFiZWw6IGQuc2NoZW1hLCB2YWx1ZTogZC5zY2hlbWF9KTsKKyAgICAg ICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgIGlkOiAncmVsb2NhdGFibGUnLCBsYWJlbDogJ3t7IF8oJ1Jl bG9jYXRhYmxlPycpfX0nLCBjZWxsOiAnc3dpdGNoJywKKyAgICAgICAgICAg ICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydwcm9wZXJ0aWVzJ10sICdv cHRpb25zJzogeworICAgICAgICAgICAgICAgICAgICAnb25UZXh0JzogJ1ll cycsICdvZmZUZXh0JzogJ05vJywgJ29uQ29sb3InOiAnc3VjY2VzcycsCisg ICAgICAgICAgICAgICAgICAgICdvZmZDb2xvcic6ICdkZWZhdWx0JywgJ3Np emUnOiAnc21hbGwnCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg fSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZDogJ3ZlcnNp b24nLCBsYWJlbDogJ3t7IF8oJ1ZlcnNpb24nKX19JywgY2VsbDogJ3N0cmlu ZycsCisgICAgICAgICAgICAgICAgdHlwZTogJ29wdGlvbnMnLCBtb2RlOiBb J3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwgZ3JvdXA6ICdEZWZp bml0aW9uJywKKyAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsIGNv bnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsIHVybDonYXZhaWxzJywKKyAg ICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICogVHJhbnNmb3Jt IHRoZSBkYXRhIGludG8gdmVyc2lvbiBmb3IgdGhlIHNlbGVjdGVkIGV4dGVu c2lvbi4KKyAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHRy YW5zZm9ybTogZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgICAgICAgICAg ICByZXMgPSBbXTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lv biA9IHRoaXMubW9kZWwuZ2V0KCduYW1lJyk7CisgICAgICAgICAgICAgICAg ICAgIF8uZWFjaChkYXRhLCBmdW5jdGlvbihkdCl7CisgICAgICAgICAgICAg ICAgICAgICAgICBpZihkdC5uYW1lID09IGV4dGVuc2lvbil7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYoZHQudmVyc2lvbiAmJiBfLmlzQXJy YXkoZHQudmVyc2lvbikpeworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBfLmVhY2goZHQudmVyc2lvbiwgZnVuY3Rpb24odil7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMucHVzaCh7IGxhYmVs OiB2LCB2YWx1ZTogdiB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9 KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgIGlkOiAnY29tbWVudCcsIGxhYmVsOiAne3sgXygnQ29t bWVudCcpfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICAgICAgICB0 eXBlOiAnbXVsdGlsaW5lJywgZGlzYWJsZWQ6IHRydWUKKyAgICAgICAgICAg IH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWQ6ICdzbG9u eScsIGxhYmVsOiAne3sgXygnVXNlIFNsb255Jyl9fScsIGNlbGw6ICdzdHJp bmcnLAorICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZGlzYWJsZWQ6 IHRydWUsIG1vZGU6IFsnY3JlYXRlJywgJ2VkaXQnXQorICAgICAgICAgICAg fQorICAgICAgICAgICAgXSwKKyAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9u KCkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICogVHJpZ2dlcnMg c3BlY2lmaWMgZXJyb3IgbWVzc2FnZXMgZm9yIG5hbWUgYW5kCisgICAgICAg ICAgICAqIHZlcnNpb24gaWYgaXQgaXMgZW1wdHkKKyAgICAgICAgICAgICov CisgICAgICAgICAgICB2YXIgY2hhbmdlZEF0dHJzID0gdGhpcy5jaGFuZ2Vk OworICAgICAgICAgICAgaWYgKF8uaGFzKGNoYW5nZWRBdHRycywgdGhpcy5n ZXQoJ25hbWUnKSkgJiYgXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnbmFtZScp KSB8fCBTdHJpbmcodGhpcy5nZXQoJ25hbWUnKSkucmVwbGFjZSgvXlxzK3xc cyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgICAgIHZhciBtc2cg PSAne3sgXygnTmFtZSBjYW4gbm90IGJlIGVtcHR5IScpIH19JzsKKyAgICAg ICAgICAgICAgICB0aGlzLnRyaWdnZXIoJ29uLXN0YXR1cycse21zZzptc2d9 KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAgICAg fQorICAgICAgICAgICAgaWYgKF8uaGFzKGNoYW5nZWRBdHRycywgdGhpcy5n ZXQoJ3ZlcnNpb24nKSkgJiYgXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgndmVy c2lvbicpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ3ZlcnNpb24nKSkucmVwbGFj ZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgICAg IHZhciBtc2cgPSAne3sgXygnVmVyc2lvbiBjYW4gbm90IGJlIGVtcHR5IScp IH19JzsKKyAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoJ29uLXN0YXR1 cycse21zZzptc2d9KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbXNnOwor ICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCdvbi1z dGF0dXMtY2xlYXInKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICB9CisgICAgICB9KQorICAgIH0pCisgIH07CisKKyAgcmV0dXJuIHBn QnJvd3Nlci5Ob2Rlc1snY29sbC1leHRlbnNpb24nXTsKK30pOwpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMv c3FsL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1wbGF0ZXMv ZXh0ZW5zaW9ucy9zcWwvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5hNjhiN2NlCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2V4dGVuc2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvc3FsL2Ny ZWF0ZS5zcWwKQEAgLTAsMCArMSwxMCBAQAoreyM9PT09PT09PT09PT09PT09 PT09PT09PT09Q3JlYXRlIG5ldyBleHRlbnNpb249PT09PT09PT09PT09PT09 PT09PT09I30KK3slIGlmIGRhdGEubmFtZSAlfQorQ1JFQVRFIEVYVEVOU0lP TiB7eyBkYXRhLm5hbWUgfX0KK3slIGlmIGRhdGEuc2NoZW1hICV9CisgIFND SEVNQSB7eyBkYXRhLnNjaGVtYSB9fQoreyUgZW5kaWYgJX0KK3slIGlmIGRh dGEudmVyc2lvbiAlfQorICBWRVJTSU9OICd7eyBkYXRhLnZlcnNpb24gfX0n OworeyUgZW5kaWYgJX0KK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0ZW5zaW9ucy9zcWwvZGVsZXRl LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3RlbXBsYXRlcy9leHRlbnNpb25z L3NxbC9kZWxldGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjEyNzQxZmIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0 ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0ZW5zaW9ucy9zcWwvZGVsZXRlLnNxbApA QCAtMCwwICsxLDggQEAKK3sjPT09PT09PT09PT09PT09PT09PT09PT09PT09 PURyb3AgRXh0ZW5zaW9uIGJ5IG5hbWU9PT09PT09PT09PT09PT09PT09PT09 PT09I30KK3slIGlmIGVpZCAlfQorU0VMRUNUIHguZXh0bmFtZSBmcm9tIHBn X2V4dGVuc2lvbiB4CisgICAgV0hFUkUgeC5vaWQgPSB7eyBlaWQgfX06Omlu dAoreyUgZW5kaWYgJX0KK3slIGlmIG5hbWUgJX0KK0RST1AgRVhURU5TSU9O IHt7IG5hbWUgfX0geyUgaWYgY2FzY2FkZSAlfSBDQVNDQURFIHslIGVuZGlm ICV9Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lv bnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvc3FsL2V4dGVuc2lvbnMuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2V4dGVuc2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvc3FsL2V4 dGVuc2lvbnMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmJmMzk3OWQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5z aW9ucy90ZW1wbGF0ZXMvZXh0ZW5zaW9ucy9zcWwvZXh0ZW5zaW9ucy5zcWwK QEAgLTAsMCArMSwxMiBAQAoreyMgPT09PT09PT09PT09PT09PT09PT09PUZl dGNoIGV4dGVuc2lvbnMgbmFtZXM9PT09PT09PT09PT09PT09PT09PT0jfQor U0VMRUNUCisgICAgYS5uYW1lLCBhLmluc3RhbGxlZF92ZXJzaW9uLAorICAg IGFycmF5X2FnZyhhdi52ZXJzaW9uKSBhcyB2ZXJzaW9uLAorICAgIGFycmF5 X2FnZyhhdi5zY2hlbWEpIGFzIHNjaGVtYSwKKyAgICBhcnJheV9hZ2coYXYu c3VwZXJ1c2VyKSBhcyBzdXBlcnVzZXIsCisgICAgYXJyYXlfYWdnKGF2LnJl bG9jYXRhYmxlKSBhcyByZWxvY2F0YWJsZQorRlJPTQorICAgIHBnX2F2YWls YWJsZV9leHRlbnNpb25zIGEKKyAgICBMRUZUIEpPSU4gcGdfYXZhaWxhYmxl X2V4dGVuc2lvbl92ZXJzaW9ucyBhdiBPTiAoYS5uYW1lID0gYXYubmFtZSkK K0dST1VQIEJZIGEubmFtZSwgYS5pbnN0YWxsZWRfdmVyc2lvbgorT1JERVIg QlkgYS5uYW1lCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1w bGF0ZXMvZXh0ZW5zaW9ucy9zcWwvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv ZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0ZW5zaW9ucy9zcWwvcHJvcGVydGll cy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYw OTg4MwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3Rl bXBsYXRlcy9leHRlbnNpb25zL3NxbC9wcm9wZXJ0aWVzLnNxbApAQCAtMCww ICsxLDE3IEBACit7Iz09PT09PT09PT09PT09PT09PT1GZXRjaCBwcm9wZXJ0 aWVzIG9mIGVhY2ggZXh0ZW5zaW9uIGJ5IG5hbWUgb3Igb2lkPT09PT09PT09 PT09PT09PT09PSN9CitTRUxFQ1QKKyAgICB4Lm9pZCBBUyBlaWQsIHBnX2dl dF91c2VyYnlpZChleHRvd25lcikgQVMgb3duZXIsCisgICAgeC5leHRuYW1l IEFTIG5hbWUsIG4ubnNwbmFtZSBBUyBzY2hlbWEsCisgICAgeC5leHRyZWxv Y2F0YWJsZSBBUyByZWxvY2F0YWJsZSwgeC5leHR2ZXJzaW9uIEFTIHZlcnNp b24sCisgICAgZS5jb21tZW50CitGUk9NCisgICAgcGdfZXh0ZW5zaW9uIHgK KyAgICBMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04geC5leHRuYW1lc3Bh Y2U9bi5vaWQKKyAgICBKT0lOIHBnX2F2YWlsYWJsZV9leHRlbnNpb25zKCkg ZShuYW1lLCBkZWZhdWx0X3ZlcnNpb24sIGNvbW1lbnQpIE9OIHguZXh0bmFt ZT1lLm5hbWUKK3slLSBpZiBlaWQgJX0KKyBXSEVSRSB4Lm9pZCA9IHt7ZWlk fX06OmludAoreyUgZWxpZiBlbmFtZSAlfQorIFdIRVJFIHguZXh0bmFtZSA9 ICd7e2VuYW1lfX0nOjp0ZXh0Cit7JSBlbHNlICV9CisgT1JERVIgQlkgeC5l eHRuYW1lCit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVu c2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvc3FsL3NjaGVtYXMuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2V4dGVuc2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvc3FsL3Nj aGVtYXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmI4ZTNjOTcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9u cy90ZW1wbGF0ZXMvZXh0ZW5zaW9ucy9zcWwvc2NoZW1hcy5zcWwKQEAgLTAs MCArMSwzIEBACit7Iz09PT09PT09PT09PT09PT09PT1mZXRjaCBhbGwgc2No ZW1hcz09PT09PT09PT09PT09PT09PT09PT09PT09I30KK1NFTEVDVCBuc3Bu YW1lIEFzIHNjaGVtYSBGUk9NIHBnX25hbWVzcGFjZQorIE9SREVSIEJZIG5z cG5hbWUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3RlbXBsYXRl cy9leHRlbnNpb25zL3NxbC91cGRhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lv bnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvc3FsL3VwZGF0ZS5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JkYWE2MAotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3RlbXBsYXRlcy9leHRl bnNpb25zL3NxbC91cGRhdGUuc3FsCkBAIC0wLDAgKzEsMTAgQEAKK3sjID09 PT09PT09PT09PT1VcGRhdGUgZXh0ZW5zaW9uIHNjaGVtYT09PT09PT09PT09 PT0gI30KK3slIGlmIGRhdGEuc2NoZW1hICE9IG9fZGF0YS5zY2hlbWEgJX0K K0FMVEVSIEVYVEVOU0lPTiB7eyBvX2RhdGEubmFtZSB9fQorICAgIFNFVCBT Q0hFTUEge3sgZGF0YS5zY2hlbWF8ZSB9fTsKK3slIGVuZGlmICV9Cit7IyA9 PT09PT09PT09PT09VXBkYXRlIGV4dGVuc2lvbiB2ZXJzaW9uPT09PT09PT09 PT09PSAjfQoreyUgaWYgZGF0YS52ZXJzaW9uIGFuZCBkYXRhLnZlcnNpb24g IT0gb19kYXRhLnZlcnNpb24gJX0KK0FMVEVSIEVYVEVOU0lPTiB7eyBvX2Rh dGEubmFtZSB9fQorICAgIFVQREFURSBUTyAne3sgZGF0YS52ZXJzaW9uIH19 JzsKK3slIGVuZGlmICV9Cg== --047d7bf0c6b6b9e3fb05291dcebf Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --047d7bf0c6b6b9e3fb05291dcebf--