Return-Path: Delivered-To: apmail-incubator-libcloud-archive@minotaur.apache.org Received: (qmail 48219 invoked from network); 28 Apr 2010 18:50:47 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 28 Apr 2010 18:50:47 -0000 Received: (qmail 6499 invoked by uid 500); 28 Apr 2010 18:50:47 -0000 Delivered-To: apmail-incubator-libcloud-archive@incubator.apache.org Received: (qmail 6424 invoked by uid 500); 28 Apr 2010 18:50:47 -0000 Mailing-List: contact libcloud-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: libcloud@incubator.apache.org Delivered-To: mailing list libcloud@incubator.apache.org Received: (qmail 6416 invoked by uid 99); 28 Apr 2010 18:50:47 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 28 Apr 2010 18:50:47 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: local policy) Received: from [66.33.206.127] (HELO mail.hq.newdream.net) (66.33.206.127) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 28 Apr 2010 18:50:40 +0000 Received: from mail.hq.newdream.net (localhost [127.0.0.1]) by mail.hq.newdream.net (Postfix) with ESMTP id A2A0026A10 for ; Wed, 28 Apr 2010 11:50:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=hq.newdream.net; h= mime-version:date:message-id:subject:from:to:content-type; s= drama; bh=rwQPTByqP41xj5hxZV5gyz74JOY=; b=oLgXj9/vkcQY6Nu8A/Oyk2 4VplVAnr60TS1mY5SdobMHHfWelvergDG+hl0To28kz4bem+3sr/lXDIxQ1Hscic B/gj8XQE7EAcBLnkzneIbXtO9ID5+REFx73cxOuM0XhxtBT3NghZoIPBJgvNO41x ORF+/kJHOZmu/4rN4VsrI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=hq.newdream.net; h= mime-version:date:message-id:subject:from:to:content-type; q= dns; s=drama; b=i+7NvmGzpt2HZGChVT6io0n35IDt+CLgGDiReSdFK9Bef/8w jQopOxITLTqYC/QEkY5w8jPHAm/oY4lgNduYruX0zXfnZMa2Koo4tWHh0o6gnKej 9IE+x+UDYGAyaT1uWb15TJZzdgxhnw696Z/+CFhtiJgcdPyNDGwB212+dFc= Received: from mail-vw0-f47.google.com (mail-vw0-f47.google.com [209.85.212.47]) by mail.hq.newdream.net (Postfix) with ESMTP id 58FED26834 for ; Wed, 28 Apr 2010 11:50:18 -0700 (PDT) Received: by vws1 with SMTP id 1so1199340vws.6 for ; Wed, 28 Apr 2010 11:50:17 -0700 (PDT) MIME-Version: 1.0 Received: by 10.220.121.152 with SMTP id h24mr1860362vcr.81.1272480615880; Wed, 28 Apr 2010 11:50:15 -0700 (PDT) Received: by 10.220.77.158 with HTTP; Wed, 28 Apr 2010 11:50:15 -0700 (PDT) Date: Wed, 28 Apr 2010 11:50:15 -0700 Message-ID: From: Kyle Marsh To: libcloud@incubator.apache.org Content-Type: multipart/mixed; boundary=001636d347d01800c60485507b2c X-Virus-Checked: Checked by ClamAV on apache.org Subject: [libcloud] DreamHost Driver --001636d347d01800c60485507b2c Content-Type: text/plain; charset=ISO-8859-1 The Dreamhost Driver patch has been updated as per Jeremy's suggestions. Just like last time, there are two files, "dreamhost_driver.patch" containing the output from `git-format-patch` and "dreamhost_driver_squash.patch" containing the output from `git-diff`. The squashed patch is attached here, as well. Any further comments would be appreciated. ~Kyle Marsh --001636d347d01800c60485507b2c Content-Type: text/x-patch; charset=US-ASCII; name="dreamhost_driver_squash.patch" Content-Disposition: attachment; filename="dreamhost_driver_squash.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g8ki3and0 ZGlmZiAtLWdpdCBhL2xpYmNsb3VkL2RyaXZlcnMvZHJlYW1ob3N0LnB5IGIvbGliY2xvdWQvZHJp dmVycy9kcmVhbWhvc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTAw MWRlNgotLS0gL2Rldi9udWxsCisrKyBiL2xpYmNsb3VkL2RyaXZlcnMvZHJlYW1ob3N0LnB5CkBA IC0wLDAgKzEsMjM0IEBACisjIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRh dGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZQorIyBjb250cmlidXRvciBsaWNlbnNlIGFncmVl bWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlIGRpc3RyaWJ1dGVkIHdpdGgKKyMgdGhpcyB3b3Jr IGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlw LgorIyBsaWJjbG91ZC5vcmcgbGljZW5zZXMgdGhpcyBmaWxlIHRvIFlvdSB1bmRlciB0aGUgQXBh Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wCisjICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3Qg dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoCisjIHRoZSBMaWNlbnNlLiAg WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgICBodHRwOi8v d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVk IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorIyBk aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi IEJBU0lTLAorIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorIyBsaW1pdGF0aW9ucyB1 bmRlciB0aGUgTGljZW5zZS4KKyIiIgorRHJlYW1Ib3N0IERyaXZlcgorIiIiCitmcm9tIGxpYmNs b3VkLmludGVyZmFjZSBpbXBvcnQgSU5vZGVEcml2ZXIKK2Zyb20gbGliY2xvdWQuYmFzZSBpbXBv cnQgQ29ubmVjdGlvbktleSwgUmVzcG9uc2UsIE5vZGVEcml2ZXIsIE5vZGUKK2Zyb20gbGliY2xv dWQuYmFzZSBpbXBvcnQgTm9kZVNpemUsIE5vZGVJbWFnZSwgTm9kZUxvY2F0aW9uCitmcm9tIGxp YmNsb3VkLnR5cGVzIGltcG9ydCBQcm92aWRlciwgTm9kZVN0YXRlLCBJbnZhbGlkQ3JlZHNFeGNl cHRpb24KKyNmcm9tIHpvcGUuaW50ZXJmYWNlIGltcG9ydCBpbXBsZW1lbnRzCitpbXBvcnQgdXVp ZAorCisjIEpTT04gaXMgaW5jbHVkZWQgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgc3RhcnRpbmcg d2l0aCBQeXRob24gMi42LiAgRm9yIDIuNQorIyBhbmQgMi40LCB0aGVyZSdzIGEgc2ltcGxlanNv biBlZ2cgYXQ6IGh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9zaW1wbGVqc29uCit0cnk6IGlt cG9ydCBqc29uCitleGNlcHQ6IGltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworIiIiCitEcmVh bUhvc3QgUHJpdmF0ZSBTZXJ2ZXJzIGNhbiBiZSByZXNpemVkIG9uIHRoZSBmbHksIGJ1dCBMaWJj bG91ZCBkb2Vzbid0CitjdXJyZW50bHkgc3VwcG9ydCBleHRlbnNpb25zIHRvIGl0cyBpbnRlcmZh Y2UsIHNvIHdlJ2xsIHB1dCBzb21lIGJhc2ljIHNpemVzCitpbiBmb3Igbm9kZSBjcmVhdGlvbi4K KyIiIgorREhfUFNfU0laRVMgPSB7CisgICAgJ21pbmltdW0nOiB7CisgICAgICAgICdpZCcgOiAn bWluaW11bScsCisgICAgICAgICduYW1lJyA6ICdNaW5pbXVtIERIIFBTIHNpemUnLAorICAgICAg ICAncmFtJyA6IDMwMCwKKyAgICAgICAgJ3ByaWNlJyA6IDE1LAorICAgICAgICAnZGlzaycgOiBO b25lLAorICAgICAgICAnYmFuZHdpZHRoJyA6IE5vbmUKKyAgICB9LAorICAgICdtYXhpbXVtJzog eworICAgICAgICAnaWQnIDogJ21heGltdW0nLAorICAgICAgICAnbmFtZScgOiAnTWF4aW11bSBE SCBQUyBzaXplJywKKyAgICAgICAgJ3JhbScgOiA0MDAwLAorICAgICAgICAncHJpY2UnIDogMjAw LAorICAgICAgICAnZGlzaycgOiBOb25lLAorICAgICAgICAnYmFuZHdpZHRoJyA6IE5vbmUKKyAg ICB9LAorICAgICdkZWZhdWx0JzogeworICAgICAgICAnaWQnIDogJ2RlZmF1bHQnLAorICAgICAg ICAnbmFtZScgOiAnRGVmYXVsdCBESCBQUyBzaXplJywKKyAgICAgICAgJ3JhbScgOiAyMzAwLAor ICAgICAgICAncHJpY2UnIDogMTE1LAorICAgICAgICAnZGlzaycgOiBOb25lLAorICAgICAgICAn YmFuZHdpZHRoJyA6IE5vbmUKKyAgICB9LAorICAgICdsb3cnOiB7CisgICAgICAgICdpZCcgOiAn bG93JywKKyAgICAgICAgJ25hbWUnIDogJ0RIIFBTIHdpdGggMUdCIFJBTScsCisgICAgICAgICdy YW0nIDogMTAwMCwKKyAgICAgICAgJ3ByaWNlJyA6IDUwLAorICAgICAgICAnZGlzaycgOiBOb25l LAorICAgICAgICAnYmFuZHdpZHRoJyA6IE5vbmUKKyAgICB9LAorICAgICdoaWdoJzogeworICAg ICAgICAnaWQnIDogJ2hpZ2gnLAorICAgICAgICAnbmFtZScgOiAnREggUFMgd2l0aCAzR0IgUkFN JywKKyAgICAgICAgJ3JhbScgOiAzMDAwLAorICAgICAgICAncHJpY2UnIDogMTUwLAorICAgICAg ICAnZGlzaycgOiBOb25lLAorICAgICAgICAnYmFuZHdpZHRoJyA6IE5vbmUKKyAgICB9LAorfQor CitjbGFzcyBEcmVhbWhvc3RBUElFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBkZWYgX19zdHJf XyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuYXJnc1swXQorICAgIGRlZiBfX3JlcHJfXyhz ZWxmKToKKyAgICAgICAgcmV0dXJuICI8RHJlYW1ob3N0RXhjZXB0aW9uICclcyc+IiAlIChzZWxm LmFyZ3NbMF0pCisKK2NsYXNzIERyZWFtaG9zdFJlc3BvbnNlKFJlc3BvbnNlKToKKyAgICAiIiIK KyAgICBSZXNwb25zZSBjbGFzcyBmb3IgRHJlYW1Ib3N0IFBTCisgICAgIiIiCisKKyAgICBkZWYg cGFyc2VfYm9keShzZWxmKToKKyAgICAgICAgcmVzcCA9IGpzb24ubG9hZHMoc2VsZi5ib2R5KQor ICAgICAgICBpZiByZXNwWydyZXN1bHQnXSAhPSAnc3VjY2Vzcyc6CisgICAgICAgICAgICByYWlz ZSBFeGNlcHRpb24oc2VsZi5hcGlfcGFyc2VfZXJyb3IocmVzcCkpCisgICAgICAgIHJldHVybiBy ZXNwWydkYXRhJ10KKworICAgIGRlZiBwYXJzZV9lcnJvcihzZWxmKToKKyAgICAgICAgcmFpc2Ug RXhjZXB0aW9uCisKKyAgICBkZWYgYXBpX3BhcnNlX2Vycm9yKHNlbGYsIHJlc3BvbnNlKToKKyAg ICAgICAgaWYgcmVzcG9uc2UuaGFzX2tleSgnZGF0YScpOgorICAgICAgICAgICAgaWYgcmVzcG9u c2VbJ2RhdGEnXSA9PSAnaW52YWxpZF9hcGlfa2V5JzoKKyAgICAgICAgICAgICAgICByYWlzZSBJ bnZhbGlkQ3JlZHNFeGNlcHRpb24sICJPb3BzISAgWW91J3ZlIGVudGVyZWQgYW4gaW52YWxpZCBB UEkga2V5IgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBEcmVhbWhv c3RBUElFeGNlcHRpb24ocmVzcG9uc2VbJ2RhdGEnXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAg ICAgIHJhaXNlIERyZWFtaG9zdEFQSUV4Y2VwdGlvbigiVW5rbm93biBwcm9ibGVtOiAlcyIgJSAo c2VsZi5ib2R5KSkKKworY2xhc3MgRHJlYW1ob3N0Q29ubmVjdGlvbihDb25uZWN0aW9uS2V5KToK KyAgICAiIiIKKyAgICBDb25uZWN0aW9uIGNsYXNzIHRvIGNvbm5lY3QgdG8gRHJlYW1Ib3N0J3Mg QVBJIHNlcnZlcnMKKyAgICAiIiIKKworICAgIGhvc3QgPSAnYXBpLmRyZWFtaG9zdC5jb20nCisg ICAgcmVzcG9uc2VDbHMgPSBEcmVhbWhvc3RSZXNwb25zZQorICAgIGZvcm1hdCA9ICdqc29uJwor CisgICAgZGVmIGFkZF9kZWZhdWx0X3BhcmFtcyhzZWxmLCBwYXJhbXMpOgorICAgICAgICAiIiIK KyAgICAgICAgQWRkIGtleSBhbmQgZm9ybWF0IHBhcmFtZXRlcnMgdG8gdGhlIHJlcXVlc3QuICBF dmVudHVhbGx5IHNob3VsZCBhZGQKKyAgICAgICAgdW5pcXVlX2lkIHRvIHByZXZlbnQgcmUtZXhl Y3V0aW9uIG9mIGEgc2luZ2xlIHJlcXVlc3QuCisgICAgICAgICIiIgorICAgICAgICBwYXJhbXNb J2tleSddID0gc2VsZi5rZXkKKyAgICAgICAgcGFyYW1zWydmb3JtYXQnXSA9IHNlbGYuZm9ybWF0 CisgICAgICAgICNwYXJhbXNbJ3VuaXF1ZV9pZCddID0gZ2VuZXJhdGVfdW5pcXVlX2lkKCkKKyAg ICAgICAgcmV0dXJuIHBhcmFtcworCisKK2NsYXNzIERyZWFtaG9zdE5vZGVEcml2ZXIoTm9kZURy aXZlcik6CisgICAgIiIiCisgICAgTm9kZSBEcml2ZXIgZm9yIERyZWFtSG9zdCBQUworICAgICIi IgorICAgIHR5cGUgPSBQcm92aWRlci5EUkVBTUhPU1QKKyAgICBuYW1lID0gIkRyZWFtaG9zdCIK KyAgICBjb25uZWN0aW9uQ2xzID0gRHJlYW1ob3N0Q29ubmVjdGlvbgorICAgIF9zaXplcyA9IERI X1BTX1NJWkVTCisKKyAgICBkZWYgY3JlYXRlX25vZGUoc2VsZiwgKiprd2FyZ3MpOgorICAgICAg ICBzaXplID0ga3dhcmdzWydzaXplJ10ucmFtCisgICAgICAgIHBhcmFtcyA9IHsKKyAgICAgICAg ICAgICdjbWQnIDogJ2RyZWFtaG9zdF9wcy1hZGRfcHMnLAorICAgICAgICAgICAgJ21vdmVkYXRh JyA6IGt3YXJnc1snbW92ZWRhdGEnXSwKKyAgICAgICAgICAgICd0eXBlJyA6IGt3YXJnc1snaW1h Z2UnXS5uYW1lLAorICAgICAgICAgICAgJ3NpemUnIDogc2l6ZQorICAgICAgICB9CisgICAgICAg IGRhdGEgPSBzZWxmLmNvbm5lY3Rpb24ucmVxdWVzdCgnLycsIHBhcmFtcykub2JqZWN0CisgICAg ICAgIHJldHVybiBOb2RlKAorICAgICAgICAgICAgaWQgPSBkYXRhWydhZGRlZF8nICsga3dhcmdz WydpbWFnZSddLm5hbWVdLAorICAgICAgICAgICAgbmFtZSA9IGRhdGFbJ2FkZGVkXycgKyBrd2Fy Z3NbJ2ltYWdlJ10ubmFtZV0sCisgICAgICAgICAgICBzdGF0ZSA9IE5vZGVTdGF0ZS5QRU5ESU5H LAorICAgICAgICAgICAgcHVibGljX2lwID0gW10sCisgICAgICAgICAgICBwcml2YXRlX2lwID0g W10sCisgICAgICAgICAgICBkcml2ZXIgPSBzZWxmLmNvbm5lY3Rpb24uZHJpdmVyLAorICAgICAg ICAgICAgZXh0cmEgPSB7CisgICAgICAgICAgICAgICAgJ3R5cGUnIDoga3dhcmdzWydpbWFnZSdd Lm5hbWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgKQorCisgICAgZGVmIGRlc3Ryb3lfbm9kZShz ZWxmLCBub2RlKToKKyAgICAgICAgcGFyYW1zID0geworICAgICAgICAgICAgJ2NtZCcgOiAnZHJl YW1ob3N0X3BzLXJlbW92ZV9wcycsCisgICAgICAgICAgICAncHMnIDogbm9kZS5pZAorICAgICAg ICB9CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbm5lY3Rpb24ucmVx dWVzdCgnLycsIHBhcmFtcykuc3VjY2VzcygpCisgICAgICAgIGV4Y2VwdCBEcmVhbWhvc3RBUElF eGNlcHRpb246CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiByZWJvb3Rfbm9k ZShzZWxmLCBub2RlKToKKyAgICAgICAgcGFyYW1zID0geworICAgICAgICAgICAgJ2NtZCcgOiAn ZHJlYW1ob3N0X3BzLXJlYm9vdCcsCisgICAgICAgICAgICAncHMnIDogbm9kZS5pZAorICAgICAg ICB9CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbm5lY3Rpb24ucmVx dWVzdCgnLycsIHBhcmFtcykuc3VjY2VzcygpCisgICAgICAgIGV4Y2VwdCBEcmVhbWhvc3RBUElF eGNlcHRpb246CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBsaXN0X25vZGVz KHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgZGF0YSA9IHNlbGYuY29ubmVjdGlvbi5yZXF1ZXN0 KCcvJywgeyAnY21kJyA6ICdkcmVhbWhvc3RfcHMtbGlzdF9wcycgfSkub2JqZWN0CisgICAgICAg IHJldHVybiBbc2VsZi5fdG9fbm9kZShuKSBmb3IgbiBpbiBkYXRhXQorCisgICAgZGVmIGxpc3Rf aW1hZ2VzKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgZGF0YSA9IHNlbGYuY29ubmVjdGlvbi5y ZXF1ZXN0KCcvJywgeyAnY21kJyA6ICdkcmVhbWhvc3RfcHMtbGlzdF9pbWFnZXMnIH0pLm9iamVj dAorICAgICAgICBpbWFnZXMgPSBbXQorICAgICAgICBmb3IgaW1nIGluIGRhdGE6CisgICAgICAg ICAgICBpbWFnZXMuYXBwZW5kKE5vZGVJbWFnZSgKKyAgICAgICAgICAgICAgICBpZCA9IGltZ1sn aW1hZ2UnXSwKKyAgICAgICAgICAgICAgICBuYW1lID0gaW1nWydpbWFnZSddLAorICAgICAgICAg ICAgICAgIGRyaXZlciA9IHNlbGYuY29ubmVjdGlvbi5kcml2ZXIKKyAgICAgICAgICAgICkpCisg ICAgICAgIHJldHVybiBpbWFnZXMKKworICAgIGRlZiBsaXN0X3NpemVzKHNlbGYsICoqa3dhcmdz KToKKyAgICAgICAgcmV0dXJuIFsgTm9kZVNpemUoZHJpdmVyPXNlbGYuY29ubmVjdGlvbi5kcml2 ZXIsICoqaSkKKyAgICAgICAgICAgIGZvciBpIGluIHNlbGYuX3NpemVzLnZhbHVlcygpIF0KKwor ICAgIGRlZiBsaXN0X2xvY2F0aW9ucyhzZWxmLCAqKmt3YXJncyk6CisgICAgICAgIHJhaXNlIE5v dEltcGxlbWVudGVkRXJyb3IsIFwKKyAgICAgICAgICAgICdZb3UgY2Fubm90IHNlbGVjdCBhIGxv Y2F0aW9uIGZvciBEcmVhbUhvc3QgUHJpdmF0ZSBTZXJ2ZXJzIGF0IHRoaXMgdGltZS4nCisKKyAg ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgICMgUHJp dmF0ZSBNZXRob2RzIChoZWxwZXJzIGFuZCBleHRlbnNpb25zKSAjCisgICAgIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBkZWYgX3Jlc2l6ZV9ub2RlKHNl bGYsIG5vZGUsIHNpemUpOgorICAgICAgICBpZiAoc2l6ZSA8IDMwMCBvciBzaXplID4gNDAwMCk6 CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBwYXJhbXMgPSB7CisgICAgICAg ICAgICAnY21kJyA6ICdkcmVhbWhvc3RfcHMtc2V0X3NpemUnLAorICAgICAgICAgICAgJ3BzJyA6 IG5vZGUuaWQsCisgICAgICAgICAgICAnc2l6ZScgOiBzaXplCisgICAgICAgIH0KKyAgICAgICAg dHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29ubmVjdGlvbi5yZXF1ZXN0KCcvJywgcGFy YW1zKS5zdWNjZXNzKCkKKyAgICAgICAgZXhjZXB0IERyZWFtaG9zdEFQSUV4Y2VwdGlvbjoKKyAg ICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF90b19ub2RlKHNlbGYsIGRhdGEpOgor ICAgICAgICAiIiIKKyAgICAgICAgQ29udmVydCB0aGUgZGF0YSBmcm9tIGEgRHJlYW1ob3N0UmVz cG9uc2Ugb2JqZWN0IGludG8gYSBOb2RlCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gTm9k ZSgKKyAgICAgICAgICAgIGlkID0gZGF0YVsncHMnXSwKKyAgICAgICAgICAgIG5hbWUgPSBkYXRh WydwcyddLAorICAgICAgICAgICAgc3RhdGUgPSBOb2RlU3RhdGUuVU5LTk9XTiwKKyAgICAgICAg ICAgIHB1YmxpY19pcCA9IFtkYXRhWydpcCddXSwKKyAgICAgICAgICAgIHByaXZhdGVfaXAgPSBb XSwKKyAgICAgICAgICAgIGRyaXZlciA9IHNlbGYuY29ubmVjdGlvbi5kcml2ZXIsCisgICAgICAg ICAgICBleHRyYSA9IHsKKyAgICAgICAgICAgICAgICAnY3VycmVudF9zaXplJyA6IGRhdGFbJ21l bW9yeV9tYiddLAorICAgICAgICAgICAgICAgICdhY2NvdW50X2lkJyA6IGRhdGFbJ2FjY291bnRf aWQnXSwKKyAgICAgICAgICAgICAgICAndHlwZScgOiBkYXRhWyd0eXBlJ10KKyAgICAgICAgICAg IH0KKyAgICAgICAgKQorCmRpZmYgLS1naXQgYS9saWJjbG91ZC9wcm92aWRlcnMucHkgYi9saWJj bG91ZC9wcm92aWRlcnMucHkKaW5kZXggM2U1NTU5ZS4uZTk0ZjNlMCAxMDA2NDQKLS0tIGEvbGli Y2xvdWQvcHJvdmlkZXJzLnB5CisrKyBiL2xpYmNsb3VkL3Byb3ZpZGVycy5weQpAQCAtNDksNiAr NDksOCBAQCBEUklWRVJTID0gewogICAgICAgICAoJ2xpYmNsb3VkLmRyaXZlcnMuZWMyJywgJ0V1 Y05vZGVEcml2ZXInKSwKICAgICBQcm92aWRlci5JQk06CiAgICAgICAgICgnbGliY2xvdWQuZHJp dmVycy5pYm0nLCAnSUJNTm9kZURyaXZlcicpLAorICAgIFByb3ZpZGVyLkRSRUFNSE9TVDoKKyAg ICAgICAgKCdsaWJjbG91ZC5kcml2ZXJzLmRyZWFtaG9zdCcsICdEcmVhbWhvc3ROb2RlRHJpdmVy JyksCiB9CiAKIGRlZiBnZXRfZHJpdmVyKHByb3ZpZGVyKToKZGlmZiAtLWdpdCBhL2xpYmNsb3Vk L3R5cGVzLnB5IGIvbGliY2xvdWQvdHlwZXMucHkKaW5kZXggODVmMzU4Yy4uM2IzNzgxZCAxMDA2 NDQKLS0tIGEvbGliY2xvdWQvdHlwZXMucHkKKysrIGIvbGliY2xvdWQvdHlwZXMucHkKQEAgLTMy LDYgKzMyLDcgQEAgY2xhc3MgUHJvdmlkZXIob2JqZWN0KToKICAgICBAY3ZhciBWQ0xPVUQ6IHZt d2FyZSB2Q2xvdWQKICAgICBAY3ZhciBSSU1VSE9TVElORzogUmltdUhvc3RpbmcuY29tCiAgICAg QGN2YXIgRUNQOiBFbm9tYWx5CisgICAgQGN2YXIgRFJFQU1IT1NUOiBEcmVhbUhvc3QgUHJpdmF0 ZSBTZXJ2ZXIKICAgICAiIiIKICAgICBEVU1NWSA9IDAKICAgICBFQzIgPSAxICAjIGRlcHJlY2F0 ZWQgbmFtZQpAQCAtNTEsNiArNTIsNyBAQCBjbGFzcyBQcm92aWRlcihvYmplY3QpOgogICAgIEVV Q0FMWVBUVVMgPSAxMwogICAgIEVDUCA9IDE0CiAgICAgSUJNID0gMTUKKyAgICBEUkVBTUhPU1Qg PSAxNgogCiBjbGFzcyBOb2RlU3RhdGUob2JqZWN0KToKICAgICAiIiIKZGlmZiAtLWdpdCBhL3Rl c3QvX19pbml0X18ucHkgYi90ZXN0L19faW5pdF9fLnB5CmluZGV4IDI2NDVmYzYuLjk4NzM4MTAg MTAwNjQ0Ci0tLSBhL3Rlc3QvX19pbml0X18ucHkKKysrIGIvdGVzdC9fX2luaXRfXy5weQpAQCAt MTE5LDcgKzExOSw3IEBAIGNsYXNzIE1vY2tIdHRwKG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYu dHlwZToKICAgICAgICAgICAgIG1ldGhfbmFtZSA9ICclc18lcycgJSAobWV0aF9uYW1lLCBzZWxm LnR5cGUpIAogICAgICAgICBpZiBzZWxmLnVzZV9wYXJhbToKLSAgICAgICAgICAgIHBhcmFtID0g cXNbc2VsZi51c2VfcGFyYW1dWzBdLnJlcGxhY2UoJy4nLCAnXycpCisgICAgICAgICAgICBwYXJh bSA9IHFzW3NlbGYudXNlX3BhcmFtXVswXS5yZXBsYWNlKCcuJywgJ18nKS5yZXBsYWNlKCctJywn XycpCiAgICAgICAgICAgICBtZXRoX25hbWUgPSAnJXNfJXMnICUgKG1ldGhfbmFtZSwgcGFyYW0p CiAgICAgICAgIG1ldGggPSBnZXRhdHRyKHNlbGYsIG1ldGhfbmFtZSkKICAgICAgICAgc3RhdHVz LCBib2R5LCBoZWFkZXJzLCByZWFzb24gPSBtZXRoKG1ldGhvZCwgdXJsLCBib2R5LCBoZWFkZXJz KQpkaWZmIC0tZ2l0IGEvdGVzdC90ZXN0X2RyZWFtaG9zdC5weSBiL3Rlc3QvdGVzdF9kcmVhbWhv c3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE0OWViMgotLS0gL2Rl di9udWxsCisrKyBiL3Rlc3QvdGVzdF9kcmVhbWhvc3QucHkKQEAgLTAsMCArMSwyNzUgQEAKKyMg TGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9u ZSBvciBtb3JlCisjIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9U SUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aAorIyB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5m b3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuCisjIGxpYmNsb3VkLm9yZyBs aWNlbnNlcyB0aGlzIGZpbGUgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv biAyLjAKKyMgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw dCBpbiBjb21wbGlhbmNlIHdpdGgKKyMgdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNv cHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl bnNlcy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRo ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJVEhPVVQg V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp bXBsaWVkLgorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl cm5pbmcgcGVybWlzc2lvbnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor aW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gbGliY2xvdWQuZHJpdmVycy5kcmVh bWhvc3QgaW1wb3J0IERyZWFtaG9zdE5vZGVEcml2ZXIKK2Zyb20gbGliY2xvdWQudHlwZXMgaW1w b3J0IFByb3ZpZGVyLCBOb2RlU3RhdGUsIEludmFsaWRDcmVkc0V4Y2VwdGlvbgorZnJvbSBsaWJj bG91ZC5iYXNlIGltcG9ydCBOb2RlLCBOb2RlSW1hZ2UsIE5vZGVTaXplCisKK2ltcG9ydCBodHRw bGliCisKK3RyeTogaW1wb3J0IGpzb24KK2V4Y2VwdDogaW1wb3J0IHNpbXBsZWpzb24gYXMganNv bgorCitmcm9tIHRlc3QgaW1wb3J0IE1vY2tIdHRwLCBtdWx0aXBsZXJlc3BvbnNlLCBUZXN0Q2Fz ZU1peGluCitmcm9tIHNlY3JldHMgaW1wb3J0IERSRUFNSE9TVF9LRVkKKworI2NsYXNzIERyZWFt aG9zdFRlc3QodW5pdHRlc3QuVGVzdENhc2UsIFRlc3RDYXNlTWl4aW4pOgorY2xhc3MgRHJlYW1o b3N0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAg ICAgIERyZWFtaG9zdE5vZGVEcml2ZXIuY29ubmVjdGlvbkNscy5jb25uX2NsYXNzZXMgPSAoCisg ICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgRHJlYW1ob3N0TW9ja0h0dHAKKyAgICAgICAg KQorICAgICAgICBEcmVhbWhvc3RNb2NrSHR0cC50eXBlID0gTm9uZQorICAgICAgICBEcmVhbWhv c3RNb2NrSHR0cC51c2VfcGFyYW0gPSAnY21kJworICAgICAgICBzZWxmLmRyaXZlciA9IERyZWFt aG9zdE5vZGVEcml2ZXIoJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NyZWRzKHNlbGYp OgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdHMgdGhlIGVycm9yLWhhbmRsaW5nIGZvciBwYXNz aW5nIGEgYmFkIEFQSSBLZXkgdG8gdGhlIERyZWFtSG9zdCBBUEkKKyAgICAgICAgIiIiCisgICAg ICAgIERyZWFtaG9zdE1vY2tIdHRwLnR5cGUgPSAnQkFEX0FVVEgnCisgICAgICAgIHRyeToKKyAg ICAgICAgICAgIHNlbGYuZHJpdmVyLmxpc3Rfbm9kZXMoKQorICAgICAgICAgICAgc2VsZi5hc3Nl cnRUcnVlKEZhbHNlKSAjIEFib3ZlIGNvbW1hbmQgc2hvdWxkIGhhdmUgdGhyb3duIGFuIEludmFs aWRDcmVkc0V4Y2VwdGlvbgorICAgICAgICBleGNlcHQgSW52YWxpZENyZWRzRXhjZXB0aW9uOgor ICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFRydWUpCisKKworICAgIGRlZiB0ZXN0X2xpc3Rf bm9kZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGxpc3Rfbm9kZXMgZm9yIERy ZWFtSG9zdCBQUyBkcml2ZXIuICBTaG91bGQgcmV0dXJuIGEgbGlzdCBvZiB0d28gbm9kZXM6Cisg ICAgICAgICAgICAtICAgYWNjb3VudF9pZDogMDAwMDAwCisgICAgICAgICAgICAgICAgaXA6IDc1 LjExOS4yMDMuNTEKKyAgICAgICAgICAgICAgICBtZW1vcnlfbWI6IDUwMAorICAgICAgICAgICAg ICAgIHBzOiBwczIyMTc0CisgICAgICAgICAgICAgICAgc3RhcnRfZGF0ZTogMjAxMC0wMi0yNQor ICAgICAgICAgICAgICAgIHR5cGU6IHdlYgorICAgICAgICAgICAgLSAgIGFjY291bnRfaWQ6IDAw MDAwMAorICAgICAgICAgICAgICAgIGlwOiA3NS4xMTkuMjAzLjUyCisgICAgICAgICAgICAgICAg bWVtb3J5X21iOiAxNTAwCisgICAgICAgICAgICAgICAgcHM6IHBzMjIxNzUKKyAgICAgICAgICAg ICAgICBzdGFydF9kYXRlOiAyMDEwLTAyLTI1CisgICAgICAgICAgICAgICAgdHlwZTogbXlzcWwK KyAgICAgICAgIiIiCisKKyAgICAgICAgbm9kZXMgPSBzZWxmLmRyaXZlci5saXN0X25vZGVzKCkK KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obm9kZXMpLCAyKQorICAgICAgICB3ZWJfbm9k ZSA9IG5vZGVzWzBdCisgICAgICAgIG15c3FsX25vZGUgPSBub2Rlc1sxXQorCisgICAgICAgICMg V2ViIG5vZGUgdGVzdHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3ZWJfbm9kZS5pZCwgJ3Bz MjIxNzQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdlYl9ub2RlLnN0YXRlLCBOb2RlU3Rh dGUuVU5LTk9XTikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCc3NS4xMTkuMjAzLjUxJyBpbiB3 ZWJfbm9kZS5wdWJsaWNfaXApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKKyAgICAgICAgICAg IHdlYl9ub2RlLmV4dHJhLmhhc19rZXkoJ2N1cnJlbnRfc2l6ZScpIGFuZAorICAgICAgICAgICAg d2ViX25vZGUuZXh0cmFbJ2N1cnJlbnRfc2l6ZSddID09IDUwMAorICAgICAgICApCisgICAgICAg IHNlbGYuYXNzZXJ0VHJ1ZSgKKyAgICAgICAgICAgIHdlYl9ub2RlLmV4dHJhLmhhc19rZXkoJ2Fj Y291bnRfaWQnKSBhbmQKKyAgICAgICAgICAgIHdlYl9ub2RlLmV4dHJhWydhY2NvdW50X2lkJ10g PT0gMDAwMDAwCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAg ICAgd2ViX25vZGUuZXh0cmEuaGFzX2tleSgndHlwZScpIGFuZAorICAgICAgICAgICAgd2ViX25v ZGUuZXh0cmFbJ3R5cGUnXSA9PSAnd2ViJworICAgICAgICApCisgICAgICAgICMgTXlTcWwgbm9k ZSB0ZXN0cworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15c3FsX25vZGUuaWQsICdwczIyMTc1 JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteXNxbF9ub2RlLnN0YXRlLCBOb2RlU3RhdGUu VU5LTk9XTikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCc3NS4xMTkuMjAzLjUyJyBpbiBteXNx bF9ub2RlLnB1YmxpY19pcCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAg bXlzcWxfbm9kZS5leHRyYS5oYXNfa2V5KCdjdXJyZW50X3NpemUnKSBhbmQKKyAgICAgICAgICAg IG15c3FsX25vZGUuZXh0cmFbJ2N1cnJlbnRfc2l6ZSddID09IDE1MDAKKyAgICAgICAgKQorICAg ICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgICAgICBteXNxbF9ub2RlLmV4dHJhLmhhc19r ZXkoJ2FjY291bnRfaWQnKSBhbmQKKyAgICAgICAgICAgIG15c3FsX25vZGUuZXh0cmFbJ2FjY291 bnRfaWQnXSA9PSAwMDAwMDAKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoCisg ICAgICAgICAgICBteXNxbF9ub2RlLmV4dHJhLmhhc19rZXkoJ3R5cGUnKSBhbmQKKyAgICAgICAg ICAgIG15c3FsX25vZGUuZXh0cmFbJ3R5cGUnXSA9PSAnbXlzcWwnCisgICAgICAgICkKKworICAg IGRlZiB0ZXN0X2NyZWF0ZV9ub2RlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBj cmVhdGVfbm9kZSBmb3IgRHJlYW1Ib3N0IFBTIGRyaXZlci4KKyAgICAgICAgVGhpcyBpcyBub3Qg cmVtYXJrYWJseSBjb21wYXRpYmxlIHdpdGggbGliY2xvdWQuICBUaGUgREggQVBJIGFsbG93cwor ICAgICAgICB1c2VycyB0byBzcGVjaWZ5IHdoYXQgaW1hZ2UgdGhleSB3YW50IHRvIGNyZWF0ZSBh bmQgd2hldGhlciB0byBtb3ZlCisgICAgICAgIGFsbCB0aGVpciBkYXRhIHRvIHRoZSAod2ViKSBQ Uy4gSXQgZG9lcyBOT1QgYWNjZXB0IGEgbmFtZSwgc2l6ZSwgb3IKKyAgICAgICAgbG9jYXRpb24u ICBUaGUgb25seSBpbmZvcm1hdGlvbiBpdCByZXR1cm5zIGlzIHRoZSBQUydzIGNvbnRleHQgaWQK KyAgICAgICAgT25jZSB0aGUgUFMgaXMgcmVhZHkgaXQgd2lsbCBhcHBlYXIgaW4gdGhlIGxpc3Qg Z2VuZXJhdGVkIGJ5IGxpc3RfcHMuCisgICAgICAgICIiIgorICAgICAgICBuZXdfbm9kZSA9IHNl bGYuZHJpdmVyLmNyZWF0ZV9ub2RlKAorICAgICAgICAgICAgaW1hZ2UgPSBzZWxmLmRyaXZlci5s aXN0X2ltYWdlcygpWzBdLAorICAgICAgICAgICAgc2l6ZSA9IHNlbGYuZHJpdmVyLmxpc3Rfc2l6 ZXMoKVswXSwKKyAgICAgICAgICAgIG1vdmVkYXRhID0gJ25vJywKKyAgICAgICAgKQorICAgICAg ICBzZWxmLmFzc2VydEVxdWFsKG5ld19ub2RlLmlkLCAncHMxMjM0NScpCisgICAgICAgIHNlbGYu YXNzZXJ0RXF1YWwobmV3X25vZGUuc3RhdGUsIE5vZGVTdGF0ZS5QRU5ESU5HKQorICAgICAgICBz ZWxmLmFzc2VydFRydWUoCisgICAgICAgICAgICBuZXdfbm9kZS5leHRyYS5oYXNfa2V5KCd0eXBl JykgYW5kCisgICAgICAgICAgICBuZXdfbm9kZS5leHRyYVsndHlwZSddID09ICd3ZWInCisgICAg ICAgICkKKworICAgIGRlZiB0ZXN0X2Rlc3Ryb3lfbm9kZShzZWxmKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRlc3QgZGVzdHJveV9ub2RlIGZvciBEcmVhbUhvc3QgUFMgZHJpdmVyCisgICAgICAg ICIiIgorICAgICAgICBub2RlID0gc2VsZi5kcml2ZXIubGlzdF9ub2RlcygpWzBdCisgICAgICAg IHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRyaXZlci5kZXN0cm95X25vZGUobm9kZSkpCisKKyAgICBk ZWYgdGVzdF9kZXN0cm95X25vZGVfZmFpbHVyZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg IFRlc3QgZGVzdHJveV9ub2RlIGZhaWx1cmUgZm9yIERyZWFtSG9zdCBQUyBkcml2ZXIKKyAgICAg ICAgIiIiCisgICAgICAgIG5vZGUgPSBzZWxmLmRyaXZlci5saXN0X25vZGVzKClbMF0KKworICAg ICAgICBEcmVhbWhvc3RNb2NrSHR0cC50eXBlID0gJ0FQSV9GQUlMVVJFJworICAgICAgICBzZWxm LmFzc2VydEZhbHNlKHNlbGYuZHJpdmVyLmRlc3Ryb3lfbm9kZShub2RlKSkKKworICAgIGRlZiB0 ZXN0X3JlYm9vdF9ub2RlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCByZWJvb3Rf bm9kZSBmb3IgRHJlYW1Ib3N0IFBTIGRyaXZlci4KKyAgICAgICAgIiIiCisgICAgICAgIG5vZGUg PSBzZWxmLmRyaXZlci5saXN0X25vZGVzKClbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNl bGYuZHJpdmVyLnJlYm9vdF9ub2RlKG5vZGUpKQorCisgICAgZGVmIHRlc3RfcmVib290X25vZGVf ZmFpbHVyZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgcmVib290X25vZGUgZmFp bHVyZSBmb3IgRHJlYW1Ib3N0IFBTIGRyaXZlcgorICAgICAgICAiIiIKKyAgICAgICAgbm9kZSA9 IHNlbGYuZHJpdmVyLmxpc3Rfbm9kZXMoKVswXQorCisgICAgICAgIERyZWFtaG9zdE1vY2tIdHRw LnR5cGUgPSAnQVBJX0ZBSUxVUkUnCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kcml2 ZXIucmVib290X25vZGUobm9kZSkpCisKKyAgICBkZWYgdGVzdF9yZXNpemVfbm9kZShzZWxmKToK KyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgcmVzaXplX25vZGUgZm9yIERyZWFtSG9zdCBQUyBk cml2ZXIKKyAgICAgICAgIiIiCisgICAgICAgIG5vZGUgPSBzZWxmLmRyaXZlci5saXN0X25vZGVz KClbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZHJpdmVyLl9yZXNpemVfbm9kZShu b2RlLCA0MDApKQorCisgICAgZGVmIHRlc3RfcmVzaXplX25vZGVfZmFpbHVyZShzZWxmKToKKyAg ICAgICAgIiIiCisgICAgICAgIFRlc3QgcmVib290X25vZGUgZmFsaXVyZSBmb3IgRHJlYW1Ib3N0 IFBTIGRyaXZlcgorICAgICAgICAiIiIKKyAgICAgICAgbm9kZSA9IHNlbGYuZHJpdmVyLmxpc3Rf bm9kZXMoKVswXQorCisgICAgICAgIERyZWFtaG9zdE1vY2tIdHRwLnR5cGUgPSAnQVBJX0ZBSUxV UkUnCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kcml2ZXIuX3Jlc2l6ZV9ub2RlKG5v ZGUsIDQwMCkpCisKKyAgICBkZWYgdGVzdF9saXN0X2ltYWdlcyhzZWxmKToKKyAgICAgICAgIiIi CisgICAgICAgIFRlc3QgbGlzdF9pbWFnZXMgZm9yIERyZWFtSG9zdCBQUyBkcml2ZXIuCisgICAg ICAgICIiIgorICAgICAgICBpbWFnZXMgPSBzZWxmLmRyaXZlci5saXN0X2ltYWdlcygpCisgICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGltYWdlcyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWwoaW1hZ2VzWzBdLmlkLCAnd2ViJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbWFn ZXNbMF0ubmFtZSwgJ3dlYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1hZ2VzWzFdLmlk LCAnbXlzcWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltYWdlc1sxXS5uYW1lLCAnbXlz cWwnKQorCisgICAgZGVmIHRlc3RfbGlzdF9zaXplcyhzZWxmKToKKyAgICAgICAgc2l6ZXMgPSBz ZWxmLmRyaXZlci5saXN0X3NpemVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2l6 ZXMpLCA1KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZXNbMF0uaWQsICdkZWZhdWx0 JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplc1swXS5iYW5kd2lkdGgsIE5vbmUpCisg ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZXNbMF0uZGlzaywgTm9uZSkKKyAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbChzaXplc1swXS5yYW0sIDIzMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1 YWwoc2l6ZXNbMF0ucHJpY2UsIDExNSkKKworICAgIGRlZiB0ZXN0X2xpc3RfbG9jYXRpb25zKHNl bGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmRyaXZlci5saXN0X2xvY2F0aW9u cygpCisgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgorICAgICAgICAgICAgcGFz cworCitjbGFzcyBEcmVhbWhvc3RNb2NrSHR0cChNb2NrSHR0cCk6CisKKyAgICBkZWYgX0JBRF9B VVRIX2RyZWFtaG9zdF9wc19saXN0X3BzKHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5LCBoZWFkZXJz KToKKyAgICAgICAgYm9keSA9IGpzb24uZHVtcHMoeydkYXRhJyA6ICdpbnZhbGlkX2FwaV9rZXkn LCAncmVzdWx0JyA6ICdlcnJvcid9KQorICAgICAgICByZXR1cm4gKGh0dHBsaWIuT0ssIGJvZHks IHt9LCBodHRwbGliLnJlc3BvbnNlc1todHRwbGliLk9LXSkKKworICAgIGRlZiBfZHJlYW1ob3N0 X3BzX2FkZF9wcyhzZWxmLCBtZXRob2QsIHVybCwgYm9keSwgaGVhZGVycyk6CisgICAgICAgIGJv ZHkgPSBqc29uLmR1bXBzKHsnZGF0YScgOiB7J2FkZGVkX3dlYicgOiAncHMxMjM0NSd9LCAncmVz dWx0JyA6ICdzdWNjZXNzJ30pCisgICAgICAgIHJldHVybiAoaHR0cGxpYi5PSywgYm9keSwge30s IGh0dHBsaWIucmVzcG9uc2VzW2h0dHBsaWIuT0tdKQorCisgICAgZGVmIF9kcmVhbWhvc3RfcHNf bGlzdF9wcyhzZWxmLCBtZXRob2QsIHVybCwgYm9keSwgaGVhZGVycyk6CisgICAgICAgIGRhdGEg PSBbeworICAgICAgICAgICAgJ2FjY291bnRfaWQnIDogMDAwMDAwLAorICAgICAgICAgICAgJ2lw JzogJzc1LjExOS4yMDMuNTEnLAorICAgICAgICAgICAgJ21lbW9yeV9tYicgOiA1MDAsCisgICAg ICAgICAgICAncHMnIDogJ3BzMjIxNzQnLAorICAgICAgICAgICAgJ3N0YXJ0X2RhdGUnIDogJzIw MTAtMDItMjUnLAorICAgICAgICAgICAgJ3R5cGUnIDogJ3dlYicKKyAgICAgICAgfSwKKyAgICAg ICAgeworICAgICAgICAgICAgJ2FjY291bnRfaWQnIDogMDAwMDAwLAorICAgICAgICAgICAgJ2lw JyA6ICc3NS4xMTkuMjAzLjUyJywKKyAgICAgICAgICAgICdtZW1vcnlfbWInIDogMTUwMCwKKyAg ICAgICAgICAgICdwcycgOiAncHMyMjE3NScsCisgICAgICAgICAgICAnc3RhcnRfZGF0ZScgOiAn MjAxMC0wMi0yNScsCisgICAgICAgICAgICAndHlwZScgOiAnbXlzcWwnCisgICAgICAgIH1dCisg ICAgICAgIHJlc3VsdCA9ICdzdWNjZXNzJworICAgICAgICBib2R5ID0ganNvbi5kdW1wcyh7J2Rh dGEnIDogZGF0YSwgJ3Jlc3VsdCcgOiByZXN1bHR9KQorICAgICAgICByZXR1cm4gKGh0dHBsaWIu T0ssIGJvZHksIHt9LCBodHRwbGliLnJlc3BvbnNlc1todHRwbGliLk9LXSkKKworICAgIGRlZiBf ZHJlYW1ob3N0X3BzX2xpc3RfaW1hZ2VzKHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5LCBoZWFkZXJz KToKKyAgICAgICAgZGF0YSA9IFt7CisgICAgICAgICAgICAnZGVzY3JpcHRpb24nIDogJ1ByaXZh dGUgd2ViIHNlcnZlcicsCisgICAgICAgICAgICAnaW1hZ2UnIDogJ3dlYicKKyAgICAgICAgfSwK KyAgICAgICAgeworICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJyA6ICdQcml2YXRlIE15U1FMIHNl cnZlcicsCisgICAgICAgICAgICAnaW1hZ2UnIDogJ215c3FsJworICAgICAgICB9XQorICAgICAg ICByZXN1bHQgPSAnc3VjY2VzcycKKyAgICAgICAgYm9keSA9IGpzb24uZHVtcHMoeydkYXRhJyA6 IGRhdGEsICdyZXN1bHQnIDogcmVzdWx0fSkKKyAgICAgICAgcmV0dXJuIChodHRwbGliLk9LLCBi b2R5LCB7fSwgaHR0cGxpYi5yZXNwb25zZXNbaHR0cGxpYi5PS10pCisKKyAgICBkZWYgX2RyZWFt aG9zdF9wc19yZWJvb3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGJvZHksIGhlYWRlcnMpOgorICAgICAg ICBib2R5ID0ganNvbi5kdW1wcyh7J2RhdGEnIDogJ3JlYm9vdF9zY2hlZHVsZWQnLCAncmVzdWx0 JyA6ICdzdWNjZXNzJ30pCisgICAgICAgIHJldHVybiAoaHR0cGxpYi5PSywgYm9keSwge30sIGh0 dHBsaWIucmVzcG9uc2VzW2h0dHBsaWIuT0tdKQorCisgICAgZGVmIF9BUElfRkFJTFVSRV9kcmVh bWhvc3RfcHNfcmVib290KHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5LCBoZWFkZXJzKToKKyAgICAg ICAgYm9keSA9IGpzb24uZHVtcHMoeydkYXRhJyA6ICdub19zdWNoX3BzJywgJ3Jlc3VsdCcgOiAn ZXJyb3InfSkKKyAgICAgICAgcmV0dXJuIChodHRwbGliLk9LLCBib2R5LCB7fSwgaHR0cGxpYi5y ZXNwb25zZXNbaHR0cGxpYi5PS10pCisKKyAgICBkZWYgX2RyZWFtaG9zdF9wc19zZXRfc2l6ZShz ZWxmLCBtZXRob2QsIHVybCwgYm9keSwgaGVhZGVycyk6CisgICAgICAgIGJvZHkgPSBqc29uLmR1 bXBzKHsnZGF0YScgOiB7J21lbW9yeS1tYicgOiAnNTAwJ30sICdyZXN1bHQnIDogJ3N1Y2Nlc3Mn fSkKKyAgICAgICAgcmV0dXJuIChodHRwbGliLk9LLCBib2R5LCB7fSwgaHR0cGxpYi5yZXNwb25z ZXNbaHR0cGxpYi5PS10pCisKKyAgICBkZWYgX0FQSV9GQUlMVVJFX2RyZWFtaG9zdF9wc19zZXRf c2l6ZShzZWxmLCBtZXRob2QsIHVybCwgYm9keSwgaGVhZGVycyk6CisgICAgICAgIGJvZHkgPSBq c29uLmR1bXBzKHsnZGF0YScgOiAnaW50ZXJuYWxfZXJyb3Jfc2V0dGluZ19zaXplJywgJ3Jlc3Vs dCcgOiAnZXJyb3InfSkKKyAgICAgICAgcmV0dXJuIChodHRwbGliLk9LLCBib2R5LCB7fSwgaHR0 cGxpYi5yZXNwb25zZXNbaHR0cGxpYi5PS10pCisKKyAgICBkZWYgX2RyZWFtaG9zdF9wc19yZW1v dmVfcHMoc2VsZiwgbWV0aG9kLCB1cmwsIGJvZHksIGhlYWRlcnMpOgorICAgICAgICBib2R5ID0g anNvbi5kdW1wcyh7J2RhdGEnIDogJ3JlbW92ZWRfd2ViJywgJ3Jlc3VsdCcgOiAnc3VjY2Vzcyd9 KQorICAgICAgICByZXR1cm4gKGh0dHBsaWIuT0ssIGJvZHksIHt9LCBodHRwbGliLnJlc3BvbnNl c1todHRwbGliLk9LXSkKKworICAgIGRlZiBfQVBJX0ZBSUxVUkVfZHJlYW1ob3N0X3BzX3JlbW92 ZV9wcyhzZWxmLCBtZXRob2QsIHVybCwgYm9keSwgaGVhZGVycyk6CisgICAgICAgIGJvZHkgPSBq c29uLmR1bXBzKHsnZGF0YScgOiAnbm9fc3VjaF9wcycsICdyZXN1bHQnIDogJ2Vycm9yJ30pCisg ICAgICAgIHJldHVybiAoaHR0cGxpYi5PSywgYm9keSwge30sIGh0dHBsaWIucmVzcG9uc2VzW2h0 dHBsaWIuT0tdKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KHVu aXR0ZXN0Lm1haW4oKSkKKwo= --001636d347d01800c60485507b2c--