Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bn2Fz-00059v-PI for pgadmin-hackers@arkaria.postgresql.org; Thu, 22 Sep 2016 11:33:36 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1bn2Fy-00046b-UN for pgadmin-hackers@arkaria.postgresql.org; Thu, 22 Sep 2016 11:33:35 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1bn1Xg-0000QJ-N5 for pgadmin-hackers@postgresql.org; Thu, 22 Sep 2016 10:47:49 +0000 Received: from mail-io0-x22a.google.com ([2607:f8b0:4001:c06::22a]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1bn1Xc-0007h6-PE for pgadmin-hackers@postgresql.org; Thu, 22 Sep 2016 10:47:47 +0000 Received: by mail-io0-x22a.google.com with SMTP id m79so81498802ioo.3 for ; Thu, 22 Sep 2016 03:47:44 -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=vGiLCWkdsIe0r1s1Zb2WyY9sz7msZUoFIQZ3Qee10fY=; b=CZFjgWYuDrEtBMwKSfym9BC+W8nfUIERBra0vnpNrA0Ze/MmNbNSn8ZoW754nNjRmx AdcCbYV/UMIYEg9fGPvji4StESlqBn4FgrCs8gpwwSS1CAbHEUVphvGtPjFtSmZxe7SJ 4AmvHBG3chsh/Ft2iKa3/KJgdZsE2IkGPF4Eb5eg9ctEV0b8bOvIPZuOPPeHOVcSZrbw VnTmfim3VbaPDebfart3jfXSqQJ89woUMjcYBYpfqZL+/VYYwLEYQmXejTM64AqFzylU 6pErbvtUOozdde5D4YrOpecBwQ0W66QangITM8SFx9FWgKqdES6KPhKJvjWR5c0JLdCb YESg== 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; bh=vGiLCWkdsIe0r1s1Zb2WyY9sz7msZUoFIQZ3Qee10fY=; b=MqF9c4biPztQGynMhNwgphngy8EVdwHdNxWI5B20wQpFefBUysIjNOLGsGcrMTtICM 589oB8ug5nxudqyiur1OPDsuuDiePYVURzVaaFBwBICH8ArotmiAu4T0/Dm7LvhjCG8H LXCP5OewzEmbQ/L9kpeEFz2eyHo8I+j12mwBAnHF05uWL83pf7m0UyR3Q32TplrnttBw kquUBEt8LBhdvYDCgadPsA0BpybrLWlg+JVQFpkjvYMBpBo0EO4q24DCpu8etKEg2mgh T+PB1Tl7YiJk2AfE5ZHQ0H3w5txmjqm6LhTOhQuGqK95Vr9AxTa+I2HwtwZPN5H3br1C KhWQ== X-Gm-Message-State: AE9vXwPbVQuWwCzRAyXT8O9iQ1UptetF1R7kLY3q8xs2jrBRcOdgJ27Y6qs//iNz1JcxkTo6b7Yv+G8xtP1Q15ir X-Received: by 10.107.151.11 with SMTP id z11mr1938063iod.28.1474541263428; Thu, 22 Sep 2016 03:47:43 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.50.212 with HTTP; Thu, 22 Sep 2016 03:47:22 -0700 (PDT) From: Ashesh Vashi Date: Thu, 22 Sep 2016 16:17:22 +0530 Message-ID: Subject: PATCH: pgAgent support To: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a114100fc37b2be053d1664af X-Pg-Spam-Score: -1.0 (-) 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 --001a114100fc37b2be053d1664af Content-Type: multipart/alternative; boundary=001a114100fc37b2b9053d1664ad --001a114100fc37b2b9053d1664ad Content-Type: text/plain; charset=UTF-8 Hi Dave, Please find the patch for support for paAgent in pgAdmin 4. I have also attached another patch for miscellaneous fixes, and adding new controls. It includes: - Added DatetimepickerControl, MomentCell (using moment.js) - Used the 'DatetimepickerControl' in Role (Also - resolved an issue, when unset the datetime for 'Valid Until'.) - Added a 'Select All/Unselect All' adaptor for Select2 used by pgAgent nodes. - Fixed an issue with SubNodeCollectionControl, which was not starting the modification session of the child model, when created default value for collection is not null/undefined. And, hence - validation on the child model was not working. - Fixed a memory leak with SqlFieldControl, and SqlTabControl, which was not releasing the CodeMirror properly. -- Thanks & Regards, Ashesh Vashi EnterpriseDB INDIA: Enterprise PostgreSQL Company *http://www.linkedin.com/in/asheshvashi* --001a114100fc37b2b9053d1664ad Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Dave,

Please find the patch for supp= ort for paAgent in pgAdmin 4.

I have also attached= another patch for miscellaneous fixes, and adding new controls.
= It includes:
- Added DatetimepickerControl, MomentCell (using mom= ent.js)
- Used the 'DatetimepickerControl' in Role (Also = - resolved an issue, when unset the datetime for 'Valid Until'.)
- Added a 'Select All/Unselect All' adaptor for Select2 use= d by pgAgent nodes.
- Fixed an issue with SubNodeCollectionContro= l, which was not starting the modification session of the child model, when= created default value for collection is not null/undefined. And, hence - v= alidation on the child model was not working.
- Fixed a memory le= ak with SqlFieldControl, and SqlTabControl, which was not releasing the Cod= eMirror properly.

--

Thanks & Regards,

Ashesh Vashi

EnterpriseDB INDIA: Enterprise PostgreSQL Co= mpany

<= br>

<= a href=3D"http://www.linkedin.com/in/asheshvashi" target=3D"_blank">http= ://www.linkedin.com/in/asheshvashi

--001a114100fc37b2b9053d1664ad-- --001a114100fc37b2be053d1664af Content-Type: application/octet-stream; name="misc_changes_v2.patch" Content-Disposition: attachment; filename="misc_changes_v2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ite7r65y0 ZGlmZiAtLWdpdCBhL2xpYnJhcmllcy50eHQgYi9saWJyYXJpZXMudHh0Cmlu ZGV4IGY2MzJkNmYuLjRiYWJkYTYgMTAwNjQ0Ci0tLSBhL2xpYnJhcmllcy50 eHQKKysrIGIvbGlicmFyaWVzLnR4dApAQCAtMzMsMyArMzMsNiBAQCBVbml0 IChMZW5ndGgpICAgICAgIGQ4ZTYyMzcgICAgIE1JVCAgICAgICAgICBodHRw czovL2dpdGh1Yi5jb20vaGV5Z3JhZHkvVW5pdHMvYgogTmF0dXJhbCBTb3J0 ICAgICAgICA5NTY1ODE2ICAgICBNSVQgICAgICAgICAgaHR0cHM6Ly9naXRo dWIuY29tL2phdnZlL25hdHVyYWwtc29ydC9ibG9iL21hc3Rlci9pbmRleC5q cwogU2xpY2tHcmlkICAgICAgICAgICAyLjIuNCAgICAgICBNSVQgICAgICAg ICAgaHR0cHM6Ly9naXRodWIuY29tLzZwYWMvU2xpY2tHcmlkCiBqUXVlcnkt VUkgICAgICAgICAgIDEuMTEuMyAgICAgIE1JVCAgICAgICAgICBodHRwczov L2pxdWVyeXVpLmNvbS8KK01vbWVudC5qcyAgICAgICAgICAgMi4xNS4wICAg ICAgTUlUICAgICAgICAgIGh0dHA6Ly9tb21lbnRqcy5jb20vCitkYXRldGlt ZXBpY2tlciAgICAgIHY0LjE0LjMwICAgIE1JVCAgICAgICAgICBodHRwczov L2VvbmFzZGFuLmdpdGh1Yi5pby9ib290c3RyYXAtZGF0ZXRpbWVwaWNrZXIv CitiYWNrZ3JpZC1tb21lbnQtY2VsbCA5YjE4NDAzICAgIE1JVCAgICAgICAg ICBodHRwczovL2dpdGh1Yi5jb20vd3l1ZW5oby9iYWNrZ3JpZC1tb21lbnQt Y2VsbC8KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvX19pbml0 X18ucHkKaW5kZXggZGJmMGQ3MS4uYmZhNDI0YSAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMv X19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvcm9sZXMvX19pbml0X18ucHkKQEAgLTYsNyArNiw2 IEBACiAjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBv c3RncmVTUUwgTGljZW5jZQogIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKLWltcG9ydCBkYXRldGltZQogaW1wb3J0IHJlCiBmcm9tIGZ1bmN0 b29scyBpbXBvcnQgd3JhcHMKIApAQCAtMTQsNiArMTMsNyBAQCBpbXBvcnQg cGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMgYXMgc2cKIGltcG9ydCBz aW1wbGVqc29uIGFzIGpzb24KIGZyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90 ZW1wbGF0ZSwgcmVxdWVzdCwganNvbmlmeSwgY3VycmVudF9hcHAKIGZyb20g Zmxhc2tfYmFiZWwgaW1wb3J0IGdldHRleHQgYXMgXworaW1wb3J0IGRhdGV1 dGlsLnBhcnNlciBhcyBkYXRldXRpbF9wYXJzZXIKIGZyb20gcGdhZG1pbi5i cm93c2VyLmNvbGxlY3Rpb24gaW1wb3J0IENvbGxlY3Rpb25Ob2RlTW9kdWxl CiBmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQgUEdDaGlsZE5v ZGVWaWV3CiBmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9q c29uX3Jlc3BvbnNlLCBcCkBAIC0xNDIsMTEgKzE0MiwxMCBAQCBjbGFzcyBS b2xlVmlldyhQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICAgICAgICAgICAg ICBpZiBkYXRhW3Uncm9sdmFsaWR1bnRpbCddIGlzIG5vdCBOb25lIGFuZCBc CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW3Un cm9sdmFsaWR1bnRpbCddICE9ICcnIGFuZCBcCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsZW4oZGF0YVt1J3JvbHZhbGlkdW50aWwn XSkgPiAwOgotICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IGRhdGV0 aW1lLmRhdGV0aW1lLnN0cnB0aW1lKAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGFbdSdyb2x2YWxpZHVudGlsJ10sICclbS8lZC8lWScKLSAg ICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGFbdSdyb2x2YWxpZHVudGlsJ10gPSBkYXRlLnN0cmZ0aW1lKCIl WS0lbS0lZCIpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBh cyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVt1J3JvbHZhbGlk dW50aWwnXSA9IGRhdGV1dGlsX3BhcnNlci5wYXJzZSgKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhW3Uncm9sdmFsaWR1bnRpbCddCisgICAg ICAgICAgICAgICAgICAgICAgICApLmlzb2Zvcm1hdCgpCisgICAgICAgICAg ICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIHByZWNvbmRpdGlvbl9yZXF1aXJlZCgKICAgICAgICAgICAgICAg ICAgICAgICAgIF8oIkRhdGUgZm9ybWF0IGlzIGludmFsaWQuIikKICAgICAg ICAgICAgICAgICAgICAgKQpAQCAtNjQwLDggKzYzOSw2IEBAIHJvbG1lbWJl cnNoaXA6ewogICAgICAgICAgICAgICAgICAgICAnYWRtaW4nOiBUcnVlIGlm IHJvbGUuZ3JvdXAoMSkgPT0gJzEnIGVsc2UgRmFsc2UKICAgICAgICAgICAg ICAgICB9KQogICAgICAgICAgICAgcm93Wydyb2xtZW1iZXJzaGlwJ10gPSBy ZXMKLSAgICAgICAgICAgIGlmIHJvd1sncm9sdmFsaWR1bnRpbCddIGlzIG5v dCBOb25lOgotICAgICAgICAgICAgICAgIHJvd1sncm9sdmFsaWR1bnRpbCdd ID0gcm93Wydyb2x2YWxpZHVudGlsJ10uc3BsaXQoJyAnKVswXQogICAgICAg ICAgICAgaWYgJ3NlY2xhYmVscycgaW4gcm93IGFuZCByb3dbJ3NlY2xhYmVs cyddIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJlcyA9IFtdCiAg ICAgICAgICAgICAgICAgZm9yIHNlYyBpbiByb3dbJ3NlY2xhYmVscyddOgpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvanMvcm9sZS5qcyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVz L3RlbXBsYXRlcy9yb2xlL2pzL3JvbGUuanMKaW5kZXggNDQ0ZThjYS4uMjBi MzM0MiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvanMvcm9sZS5q cworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9qcy9yb2xlLmpzCkBAIC00MDUs OCArNDA1LDggQEAgZnVuY3Rpb24oJCwgXywgUywgcGdBZG1pbiwgcGdCcm93 c2VyLCBhbGVydGlmeSwgQmFja2Zvcm0pIHsKICAgICAgICAgfSx7CiAgICAg ICAgICAgaWQ6ICdyb2x2YWxpZHVudGlsJywgZGlzYWJsZWQ6ICdyZWFkb25s eScsIHR5cGU6ICd0ZXh0JywKICAgICAgICAgICBncm91cDogJ3t7IF8oJ0Rl ZmluaXRpb24nKSB9fScsIGxhYmVsOiAne3sgXygnQWNjb3VudCBFeHBpcmVz JykgfX0nLAotICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLCBtb2RlOiBbJ3By b3BlcnRpZXMnLCAnZWRpdCcsICdjcmVhdGUnXSwgcmV0eXBlOiB0cnVlLAot ICAgICAgICAgIGRlcHM6IFsncm9sY2FubG9naW4nXSwgb3B0aW9uczogeyBh dXRvY2xvc2U6IHRydWUgfSwgY29udHJvbDogJ2RhdGVwaWNrZXInCisgICAg ICAgICAgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2VkaXQnLCAnY3JlYXRlJ10s IGNvbnRyb2w6ICdkYXRldGltZXBpY2tlcicsCisgICAgICAgICAgZGVwczog Wydyb2xjYW5sb2dpbiddCiAgICAgICAgIH0sewogICAgICAgICAgIGlkOiAn cm9sY29ubmxpbWl0JywgIHR5cGU6ICdpbnQnLCBncm91cDogJ3t7IF8oJ0Rl ZmluaXRpb24nKSB9fScsCiAgICAgICAgICAgbGFiZWw6ICd7eyBfKCdDb25u ZWN0aW9uIExpbWl0JykgfX0nLCBjZWxsOiAnbnVtYmVyJywKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OF80L3VwZGF0ZS5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9y b2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDhfNC91cGRhdGUuc3FsCmlu ZGV4IDMxNmI1ZDAuLjIyYmYzNDkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRl cy9yb2xlL3NxbC9wb3N0OF80L3VwZGF0ZS5zcWwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxh dGVzL3JvbGUvc3FsL3Bvc3Q4XzQvdXBkYXRlLnNxbApAQCAtMzUsOSArMzUs OCBAQCBBTFRFUiB7JSBpZiByb2xDYW5Mb2dpbiAlfVVTRVJ7JSBlbHNlICV9 Uk9MRXslIGVuZGlmICV9IHt7IGNvbm58cXRJZGVudChyb2xuYW1lKQogCU5P UkVQTElDQVRJT057JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ3JvbGNv bm5saW1pdCcgaW4gZGF0YSBhbmQgZGF0YS5yb2xjb25ubGltaXQgaXMgbnVt YmVyIGFuZCBkYXRhLnJvbGNvbm5saW1pdCA+PSAtMSAlfQogCiAJQ09OTkVD VElPTiBMSU1JVCB7eyBkYXRhLnJvbGNvbm5saW1pdCB9fQoteyUgZW5kaWYg JX17JSBpZiAncm9sdmFsaWR1bnRpbCcgaW4gZGF0YSBhbmQgZGF0YS5yb2x2 YWxpZHVudGlsICV9Ci0KLQlWQUxJRCBVTlRJTCB7JSBpZiBkYXRhLnJvbHZh bGlkdW50aWwgaXMgbm90IG5vbmUgJX17eyBkYXRhLnJvbHZhbGlkdW50aWx8 cXRMaXRlcmFsIH19eyUgZWxzZSAlfSdpbmZpbml0eScKK3slIGVuZGlmICV9 eyUgaWYgJ3JvbHZhbGlkdW50aWwnIGluIGRhdGEgJX0KKwlWQUxJRCBVTlRJ TCB7JSBpZiBkYXRhLnJvbHZhbGlkdW50aWwgJX17eyBkYXRhLnJvbHZhbGlk dW50aWx8cXRMaXRlcmFsIH19eyUgZWxzZSAlfSdpbmZpbml0eScKIHslIGVu ZGlmICV9eyUgZW5kaWYgJX17JSBpZiAncm9scGFzc3dvcmQnIGluIGRhdGEg JX0KIAogCVBBU1NXT1JEeyUgaWYgZGF0YS5yb2xwYXNzd29yZCBpcyBub25l ICV9IE5VTEx7JSBlbHNlICV9eyUgaWYgZHVtbXkgJX0gJ3h4eHh4eCd7JSBl bHNlICV9IHt7IGRhdGEucm9scGFzc3dvcmR8cXRMaXRlcmFsIH19eyUgZW5k aWYgJX17JSBlbmRpZiAlfXslIGVuZGlmICV9O3slIGVuZGlmICV9CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlfMC91cGRhdGUu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzAvdXBkYXRlLnNx bAppbmRleCBiYTY1NGViLi5jNzJhNmE5IDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1w bGF0ZXMvcm9sZS9zcWwvcG9zdDlfMC91cGRhdGUuc3FsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3Rl bXBsYXRlcy9yb2xlL3NxbC9wb3N0OV8wL3VwZGF0ZS5zcWwKQEAgLTMxLDkg KzMxLDkgQEAgQUxURVIgeyUgaWYgcm9sQ2FuTG9naW4gJX1VU0VSeyUgZWxz ZSAlfVJPTEV7JSBlbmRpZiAlfSB7eyBjb25ufHF0SWRlbnQocm9sbmFtZSkK IAlOT0lOSEVSSVR7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ3JvbGNv bm5saW1pdCcgaW4gZGF0YSBhbmQgZGF0YS5yb2xjb25ubGltaXQgaXMgbnVt YmVyIGFuZCBkYXRhLnJvbGNvbm5saW1pdCA+PSAtMSAlfQogCiAJQ09OTkVD VElPTiBMSU1JVCB7eyBkYXRhLnJvbGNvbm5saW1pdCB9fQoteyUgZW5kaWYg JX17JSBpZiAncm9sdmFsaWR1bnRpbCcgaW4gZGF0YSBhbmQgZGF0YS5yb2x2 YWxpZHVudGlsICV9Cit7JSBlbmRpZiAlfXslIGlmICdyb2x2YWxpZHVudGls JyBpbiBkYXRhICV9CiAKLQlWQUxJRCBVTlRJTCB7JSBpZiBkYXRhLnJvbHZh bGlkdW50aWwgaXMgbm90IG5vbmUgJX17eyBkYXRhLnJvbHZhbGlkdW50aWx8 cXRMaXRlcmFsIH19eyUgZWxzZSAlfSdpbmZpbml0eScKKwlWQUxJRCBVTlRJ TCB7JSBpZiBkYXRhLnJvbHZhbGlkdW50aWwgJX17eyBkYXRhLnJvbHZhbGlk dW50aWx8cXRMaXRlcmFsIH19eyUgZWxzZSAlfSdpbmZpbml0eScKIHslIGVu ZGlmICV9eyUgZW5kaWYgJX17JSBpZiAncm9scGFzc3dvcmQnIGluIGRhdGEg JX0KIAogCVBBU1NXT1JEeyUgaWYgZGF0YS5yb2xwYXNzd29yZCBpcyBub25l ICV9IE5VTEx7JSBlbHNlICV9eyUgaWYgZHVtbXkgJX0gJ3h4eHh4eCd7JSBl bHNlICV9IHt7IGRhdGEucm9scGFzc3dvcmR8cXRMaXRlcmFsIH19eyUgZW5k aWYgJX17JSBlbmRpZiAlfXslIGVuZGlmICV9O3slIGVuZGlmICV9CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlfMS91cGRhdGUu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzEvdXBkYXRlLnNx bAppbmRleCBhZTViZWY2Li5kMGE1NWQwIDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1w bGF0ZXMvcm9sZS9zcWwvcG9zdDlfMS91cGRhdGUuc3FsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3Rl bXBsYXRlcy9yb2xlL3NxbC9wb3N0OV8xL3VwZGF0ZS5zcWwKQEAgLTM2LDkg KzM2LDkgQEAgQUxURVIgeyUgaWYgcm9sQ2FuTG9naW4gJX1VU0VSeyUgZWxz ZSAlfVJPTEV7JSBlbmRpZiAlfSB7eyBjb25ufHF0SWRlbnQocm9sbmFtZSkK IAlOT1JFUExJQ0FUSU9OeyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdy b2xjb25ubGltaXQnIGluIGRhdGEgYW5kIGRhdGEucm9sY29ubmxpbWl0IGlz IG51bWJlciBhbmQgZGF0YS5yb2xjb25ubGltaXQgPj0gLTEgJX0KIAogCUNP Tk5FQ1RJT04gTElNSVQge3sgZGF0YS5yb2xjb25ubGltaXQgfX0KLXslIGVu ZGlmICV9eyUgaWYgJ3JvbHZhbGlkdW50aWwnIGluIGRhdGEgYW5kIGRhdGEu cm9sdmFsaWR1bnRpbCAlfQoreyUgZW5kaWYgJX17JSBpZiAncm9sdmFsaWR1 bnRpbCcgaW4gZGF0YSAlfQogCi0JVkFMSUQgVU5USUwgeyUgaWYgZGF0YS5y b2x2YWxpZHVudGlsIGlzIG5vdCBub25lICV9e3sgZGF0YS5yb2x2YWxpZHVu dGlsfHF0TGl0ZXJhbCB9fXslIGVsc2UgJX0naW5maW5pdHknCisJVkFMSUQg VU5USUwgeyUgaWYgZGF0YS5yb2x2YWxpZHVudGlsICV9e3sgZGF0YS5yb2x2 YWxpZHVudGlsfHF0TGl0ZXJhbCB9fXslIGVsc2UgJX0naW5maW5pdHknCiB7 JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ3JvbHBhc3N3b3JkJyBpbiBk YXRhICV9CiAKIAlQQVNTV09SRHslIGlmIGRhdGEucm9scGFzc3dvcmQgaXMg bm9uZSAlfSBOVUxMeyUgZWxzZSAlfXslIGlmIGR1bW15ICV9ICd4eHh4eHgn eyUgZWxzZSAlfSB7eyBkYXRhLnJvbHBhc3N3b3JkfHF0TGl0ZXJhbCB9fXsl IGVuZGlmICV9eyUgZW5kaWYgJX17JSBlbmRpZiAlfTt7JSBlbmRpZiAlfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzQvdXBk YXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xlL3NxbC9wb3N0OV80L3VwZGF0 ZS5zcWwKaW5kZXggMmM0YTcwZi4uMDkwMjhlNiAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMv dGVtcGxhdGVzL3JvbGUvc3FsL3Bvc3Q5XzQvdXBkYXRlLnNxbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xl cy90ZW1wbGF0ZXMvcm9sZS9zcWwvcG9zdDlfNC91cGRhdGUuc3FsCkBAIC0z Niw5ICszNiw5IEBAIEFMVEVSIHslIGlmIHJvbENhbkxvZ2luICV9VVNFUnsl IGVsc2UgJX1ST0xFeyUgZW5kaWYgJX0ge3sgY29ubnxxdElkZW50KHJvbG5h bWUpCiAJTk9SRVBMSUNBVElPTnslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBp ZiAncm9sY29ubmxpbWl0JyBpbiBkYXRhIGFuZCBkYXRhLnJvbGNvbm5saW1p dCBpcyBudW1iZXIgYW5kIGRhdGEucm9sY29ubmxpbWl0ID49IC0xICV9CiAK IAlDT05ORUNUSU9OIExJTUlUIHt7IGRhdGEucm9sY29ubmxpbWl0IH19Ci17 JSBlbmRpZiAlfXslIGlmICdyb2x2YWxpZHVudGlsJyBpbiBkYXRhIGFuZCBk YXRhLnJvbHZhbGlkdW50aWwgJX0KK3slIGVuZGlmICV9eyUgaWYgJ3JvbHZh bGlkdW50aWwnIGluIGRhdGEgJX0KIAotCVZBTElEIFVOVElMIHslIGlmIGRh dGEucm9sdmFsaWR1bnRpbCBpcyBub3Qgbm9uZSAlfXt7IGRhdGEucm9sdmFs aWR1bnRpbHxxdExpdGVyYWwgfX17JSBlbHNlICV9J2luZmluaXR5JworCVZB TElEIFVOVElMIHslIGlmIGRhdGEucm9sdmFsaWR1bnRpbCAlfXt7IGRhdGEu cm9sdmFsaWR1bnRpbHxxdExpdGVyYWwgfX17JSBlbHNlICV9J2luZmluaXR5 JwogeyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdyb2xwYXNzd29yZCcg aW4gZGF0YSAlfQogCiAJUEFTU1dPUkR7JSBpZiBkYXRhLnJvbHBhc3N3b3Jk IGlzIG5vbmUgJX0gTlVMTHslIGVsc2UgJX17JSBpZiBkdW1teSAlfSAneHh4 eHh4J3slIGVsc2UgJX0ge3sgZGF0YS5yb2xwYXNzd29yZHxxdExpdGVyYWwg fX17JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgZW5kaWYgJX07eyUgZW5kaWYg JX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pz L25vZGUudWkuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9u b2RlLnVpLmpzCmluZGV4IDkwYzlhZGEuLjY5NWU0MTMgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL25vZGUudWkuanMKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvbm9kZS51aS5qcwpA QCAtMSwxMCArMSw4MiBAQAotZGVmaW5lKAotICAgIFsnanF1ZXJ5JywgJ3Vu ZGVyc2NvcmUnLCAncGdhZG1pbicsICdiYWNrYm9uZScsICdiYWNrZm9ybScs ICdhbGVydGlmeScsICdwZ2FkbWluLmJyb3dzZXIubm9kZSddLAorZGVmaW5l KFsKKyAgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3BnYWRtaW4nLCAnYmFj a2JvbmUnLCAnYmFja2Zvcm0nLCAnYWxlcnRpZnknLAorICAncGdhZG1pbi5i cm93c2VyLm5vZGUnLCAncGdhZG1pbi5icm93c2VyLm1lc3NhZ2VzJworXSwK IGZ1bmN0aW9uKCQsIF8sIHBnQWRtaW4sIEJhY2tib25lLCBCYWNrZm9ybSwg QWxlcnRpZnksIE5vZGUpIHsKIAogICB2YXIgcGdCcm93c2VyID0gcGdBZG1p bi5Ccm93c2VyOwogCiAgIC8qCisgICAqIERlZmluZSB0aGUgc2VsZWN0QWxs IGFkYXB0ZXIgZm9yIHNlbGVjdDIuCisgICAqCisgICAqIFJlZmVyZW5jZToK KyAgICogaHR0cHM6Ly9naXRodWIuY29tL3NlbGVjdDIvc2VsZWN0Mi9pc3N1 ZXMvMTk1I2lzc3VlY29tbWVudC0yNDAxMzA2MzQKKyAgICovCisgICQuZm4u c2VsZWN0Mi5hbWQuZGVmaW5lKCdzZWxlY3QyL3NlbGVjdEFsbEFkYXB0ZXIn LCBbCisgICAgJ3NlbGVjdDIvdXRpbHMnLAorICAgICdzZWxlY3QyL2Ryb3Bk b3duJywKKyAgICAnc2VsZWN0Mi9kcm9wZG93bi9hdHRhY2hCb2R5JworICBd LCBmdW5jdGlvbiAoVXRpbHMsIERyb3Bkb3duLCBBdHRhY2hCb2R5KSB7CisK KyAgICBmdW5jdGlvbiBTZWxlY3RBbGwoKSB7IH0KKyAgICBTZWxlY3RBbGwu cHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHsKKyAg ICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgJHJlbmRlcmVkID0gZGVj b3JhdGVkLmNhbGwodGhpcyksCisgICAgICAgICRzZWxlY3RBbGwgPSAkKFsK KyAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi14cyBidG4tZGVm YXVsdCIgdHlwZT0iYnV0dG9uIicsCisgICAgICAgICAgJyBzdHlsZT0id2lk dGg6IDQ5JTttYXJnaW46IDAgMC41JTsiPicsCisgICAgICAgICAgJzxpIGNs YXNzPSJmYSBmYS1jaGVjay1zcXVhcmUtbyI+PC9pPicsCisgICAgICAgICAg JzxzcGFuIHN0eWxlPSJwYWRkaW5nOiAwcHggNXB4OyI+JywKKyAgICAgICAg ICBwZ0FkbWluLkJyb3dzZXIubWVzc2FnZXNbJ1NFTEVDVF9BTEwnXSwKKyAg ICAgICAgICAnPC9zcGFuPjwvYnV0dG9uPicKKyAgICAgICAgXS5qb2luKCcn KSksCisgICAgICAgICR1bnNlbGVjdEFsbCA9ICQoWworICAgICAgICAgICc8 YnV0dG9uIGNsYXNzPSJidG4gYnRuLXhzIGJ0bi1kZWZhdWx0IiB0eXBlPSJi dXR0b24iJywKKyAgICAgICAgICAnIHN0eWxlPSJ3aWR0aDogNDklO21hcmdp bjogMCAwLjUlOyI+JywKKyAgICAgICAgICAnPGkgY2xhc3M9ImZhIGZhLXNx dWFyZS1vIj48L2k+PHNwYW4gc3R5bGU9InBhZGRpbmc6IDBweCA1cHg7Ij4n LAorICAgICAgICAgIHBnQWRtaW4uQnJvd3Nlci5tZXNzYWdlc1snVU5TRUxF Q1RfQUxMJ10sCisgICAgICAgICAgJzwvc3Bhbj48L2J1dHRvbj4nCisgICAg ICAgIF0uam9pbignJykpLAorICAgICAgICAkYnRuQ29udGFpbmVyID0gJCgK KyAgICAgICAgICAnPGRpdiBzdHlsZT0icGFkZGluZzogM3B4IDBweDsgYmFj a2dyb3VuZC1jb2xvcjogIzJDNzZCNDsgbWFyZ2luLWJvdHRvbTogM3B4OyI+ JworICAgICAgICApLmFwcGVuZCgkc2VsZWN0QWxsKS5hcHBlbmQoJHVuc2Vs ZWN0QWxsKTsKKworICAgICAgaWYgKCF0aGlzLiRlbGVtZW50LnByb3AoIm11 bHRpcGxlIikpIHsKKyAgICAgICAgLy8gdGhpcyBpc24ndCBhIG11bHRpLXNl bGVjdCAtPiBkb24ndCBhZGQgdGhlIGJ1dHRvbnMhCisgICAgICAgIHJldHVy biAkcmVuZGVyZWQ7CisgICAgICB9CisgICAgICAkcmVuZGVyZWQuZmluZCgn LnNlbGVjdDItZHJvcGRvd24nKS5wcmVwZW5kKCRidG5Db250YWluZXIpOwor ICAgICAgJHNlbGVjdEFsbC5vbignY2xpY2snLCBmdW5jdGlvbiAoZSkgewor ICAgICAgICB2YXIgJHJlc3VsdHMgPSAkcmVuZGVyZWQuZmluZCgnLnNlbGVj dDItcmVzdWx0c19fb3B0aW9uW2FyaWEtc2VsZWN0ZWQ9ZmFsc2VdJyk7Cisg ICAgICAgICRyZXN1bHRzLmVhY2goZnVuY3Rpb24gKCkgeworICAgICAgICAg IHNlbGYudHJpZ2dlcignc2VsZWN0JywgeworICAgICAgICAgICAgZGF0YTog JCh0aGlzKS5kYXRhKCdkYXRhJykKKyAgICAgICAgICB9KTsKKyAgICAgICAg fSk7CisgICAgICAgIHNlbGYudHJpZ2dlcignY2xvc2UnKTsKKyAgICAgIH0p OworICAgICAgJHVuc2VsZWN0QWxsLm9uKCdjbGljaycsIGZ1bmN0aW9uIChl KSB7CisgICAgICAgIHZhciAkcmVzdWx0cyA9ICRyZW5kZXJlZC5maW5kKCcu c2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZD10cnVlXScp OworICAgICAgICAkcmVzdWx0cy5lYWNoKGZ1bmN0aW9uICgpIHsKKyAgICAg ICAgICBzZWxmLnRyaWdnZXIoJ3Vuc2VsZWN0JywgeworICAgICAgICAgICAg ZGF0YTogJCh0aGlzKS5kYXRhKCdkYXRhJykKKyAgICAgICAgICB9KTsKKyAg ICAgICAgfSk7CisgICAgICAgIHNlbGYudHJpZ2dlcignY2xvc2UnKTsKKyAg ICAgIH0pOworICAgICAgcmV0dXJuICRyZW5kZXJlZDsKKyAgICB9OworCisg ICAgcmV0dXJuIFV0aWxzLkRlY29yYXRlKAorICAgICAgVXRpbHMuRGVjb3Jh dGUoCisgICAgICAgIERyb3Bkb3duLAorICAgICAgICBBdHRhY2hCb2R5Cisg ICAgICApLAorICAgICAgU2VsZWN0QWxsCisgICAgKTsKKyAgfSk7CisKKyAg LyoKICAgICogTm9kZUFqYXhPcHRpb25zQ29udHJvbAogICAgKiAgIFRoaXMg Y29udHJvbCB3aWxsIGZldGNoIHRoZSBvcHRpb25zIHJlcXVpcmVkIHRvIHJl bmRlciB0aGUgc2VsZWN0CiAgICAqICAgY29udHJvbCwgZnJvbSB0aGUgdXJs IHNwZWNpZmljIHRvIHRoZSBwZ0FkbWluLkJyb3dzZXIgbm9kZSBvYmplY3Qu CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3RlbXBsYXRlcy9i cm93c2VyL2pzL21lc3NhZ2VzLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90 ZW1wbGF0ZXMvYnJvd3Nlci9qcy9tZXNzYWdlcy5qcwppbmRleCBhYmQzOTZh Li5jZGI4MzJiIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3Rl bXBsYXRlcy9icm93c2VyL2pzL21lc3NhZ2VzLmpzCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jyb3dzZXIvanMvbWVzc2FnZXMuanMK QEAgLTI2LDcgKzI2LDkgQEAgZnVuY3Rpb24oXywgUywgcGdBZG1pbikgewog ICAgICdGQUxTRSc6ICJ7eyBfKCJGYWxzZSIpIH19IiwKICAgICAnTk9URV9D VFJMX0xBQkVMJzogInt7IF8oIk5vdGUiKSB9fSIsCiAgICAgJ0VSUl9SRVRS SUVWQUxfSU5GTyc6ICJ7eyBfKCJFcnJvciByZXRyaWV2aW5nIHRoZSBpbmZv cm1hdGlvbiAtICVzIikgfX0iLAotICAgICdDT05ORUNUSU9OX0xPU1QnOiAi e3sgXygiQ29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGxvc3Qh IikgfX0iCisgICAgJ0NPTk5FQ1RJT05fTE9TVCc6ICJ7eyBfKCJDb25uZWN0 aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gbG9zdCEiKSB9fSIsCisgICAg J1NFTEVDVF9BTEwnOiAie3sgXygiU2VsZWN0IEFsbCIpIH19IiwKKyAgICAn VU5TRUxFQ1RfQUxMJzogInt7IF8oIlVuc2VsZWN0IEFsbCIpIH19IgogICB9 OwogCiB7JSBmb3Iga2V5IGluIGN1cnJlbnRfYXBwLm1lc3NhZ2VzLmtleXMo KSAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vcHJlZmVyZW5jZXMvdGVt cGxhdGVzL3ByZWZlcmVuY2VzL3ByZWZlcmVuY2VzLmpzIGIvd2ViL3BnYWRt aW4vcHJlZmVyZW5jZXMvdGVtcGxhdGVzL3ByZWZlcmVuY2VzL3ByZWZlcmVu Y2VzLmpzCmluZGV4IDY1NmIyNjAuLjEyNjRhNGQgMTAwNjQ0Ci0tLSBhL3dl Yi9wZ2FkbWluL3ByZWZlcmVuY2VzL3RlbXBsYXRlcy9wcmVmZXJlbmNlcy9w cmVmZXJlbmNlcy5qcworKysgYi93ZWIvcGdhZG1pbi9wcmVmZXJlbmNlcy90 ZW1wbGF0ZXMvcHJlZmVyZW5jZXMvcHJlZmVyZW5jZXMuanMKQEAgLTIxMCwx MiArMjEwLDkgQEAgZGVmaW5lKAogICAgICAgICAgICAgICAgIGNhc2UgJ251 bWVyaWMnOgogICAgICAgICAgICAgICAgICAgcmV0dXJuICdudW1lcmljJzsK ICAgICAgICAgICAgICAgICBjYXNlICdkYXRlJzoKLSAgICAgICAgICAgICAg ICAgIC8vIFRPRE86OgotICAgICAgICAgICAgICAgICAgLy8gRGF0ZXRpbWUg cGlja2VyIENvbnRyb2wgaXMgbWlzc2luZyBhdCB0aGUgbW9tZW50LCByZXBs YWNlCi0gICAgICAgICAgICAgICAgICAvLyBvbmNlIGl0IGhhcyBiZWVuIGlt cGxlbWVudGVkLgogICAgICAgICAgICAgICAgICAgcmV0dXJuICdkYXRlcGlj a2VyJzsKICAgICAgICAgICAgICAgICBjYXNlICdkYXRldGltZSc6Ci0gICAg ICAgICAgICAgICAgICByZXR1cm4gJ2RhdGVwaWNrZXInOworICAgICAgICAg ICAgICAgICAgcmV0dXJuICdkYXRldGltZXBpY2tlcic7CiAgICAgICAgICAg ICAgICAgY2FzZSAnb3B0aW9ucyc6CiAgICAgICAgICAgICAgICAgICB2YXIg b3B0cyA9IFtdOwogICAgICAgICAgICAgICAgICAgLy8gQ29udmVydCB0aGUg YXJyYXkgdG8gU2VsZWN0Q29udHJvbCB1bmRlcnN0YW5kYWJsZSBvcHRpb25z LgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2Nzcy9ib290c3Ry YXAtZGF0ZXRpbWVwaWNrZXIubWluLmNzcyBiL3dlYi9wZ2FkbWluL3N0YXRp Yy9jc3MvYm9vdHN0cmFwLWRhdGV0aW1lcGlja2VyLm1pbi5jc3MKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTViYTMxNAotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9jc3MvYm9vdHN0cmFw LWRhdGV0aW1lcGlja2VyLm1pbi5jc3MKQEAgLTAsMCArMSw1IEBACisvKiEK KyAqIERhdGV0aW1lcGlja2VyIGZvciBCb290c3RyYXAgMworICogdmVyc2lv biA6IDQuMTQuMzAKKyAqIGh0dHBzOi8vZ2l0aHViLmNvbS9Fb25hc2Rhbi9i b290c3RyYXAtZGF0ZXRpbWVwaWNrZXIvCisgKi8uYm9vdHN0cmFwLWRhdGV0 aW1lcGlja2VyLXdpZGdldHtsaXN0LXN0eWxlOm5vbmV9LmJvb3RzdHJhcC1k YXRldGltZXBpY2tlci13aWRnZXQuZHJvcGRvd24tbWVudXttYXJnaW46MnB4 IDA7cGFkZGluZzo0cHg7d2lkdGg6MTllbX1AbWVkaWEgKG1pbi13aWR0aDo3 NjhweCl7LmJvb3RzdHJhcC1kYXRldGltZXBpY2tlci13aWRnZXQuZHJvcGRv d24tbWVudS50aW1lcGlja2VyLXNic3t3aWR0aDozOGVtfX1AbWVkaWEgKG1p bi13aWR0aDo5OTJweCl7LmJvb3RzdHJhcC1kYXRldGltZXBpY2tlci13aWRn ZXQuZHJvcGRvd24tbWVudS50aW1lcGlja2VyLXNic3t3aWR0aDozOGVtfX1A bWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5ib290c3RyYXAtZGF0ZXRpbWVw aWNrZXItd2lkZ2V0LmRyb3Bkb3duLW1lbnUudGltZXBpY2tlci1zYnN7d2lk dGg6MzhlbX19LmJvb3RzdHJhcC1kYXRldGltZXBpY2tlci13aWRnZXQuZHJv cGRvd24tbWVudTpiZWZvcmUsLmJvb3RzdHJhcC1kYXRldGltZXBpY2tlci13 aWRnZXQuZHJvcGRvd24tbWVudTphZnRlcntjb250ZW50OicnO2Rpc3BsYXk6 aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlfS5ib290c3RyYXAtZGF0 ZXRpbWVwaWNrZXItd2lkZ2V0LmRyb3Bkb3duLW1lbnUuYm90dG9tOmJlZm9y ZXtib3JkZXItbGVmdDo3cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJp Z2h0OjdweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjdweCBz b2xpZCAjY2NjO2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLDAsMCwwLjIp O3RvcDotN3B4O2xlZnQ6N3B4fS5ib290c3RyYXAtZGF0ZXRpbWVwaWNrZXIt d2lkZ2V0LmRyb3Bkb3duLW1lbnUuYm90dG9tOmFmdGVye2JvcmRlci1sZWZ0 OjZweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NnB4IHNvbGlk IHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206NnB4IHNvbGlkIHdoaXRlO3Rv cDotNnB4O2xlZnQ6OHB4fS5ib290c3RyYXAtZGF0ZXRpbWVwaWNrZXItd2lk Z2V0LmRyb3Bkb3duLW1lbnUudG9wOmJlZm9yZXtib3JkZXItbGVmdDo3cHgg c29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OjdweCBzb2xpZCB0cmFu c3BhcmVudDtib3JkZXItdG9wOjdweCBzb2xpZCAjY2NjO2JvcmRlci10b3At Y29sb3I6cmdiYSgwLDAsMCwwLjIpO2JvdHRvbTotN3B4O2xlZnQ6NnB4fS5i b290c3RyYXAtZGF0ZXRpbWVwaWNrZXItd2lkZ2V0LmRyb3Bkb3duLW1lbnUu dG9wOmFmdGVye2JvcmRlci1sZWZ0OjZweCBzb2xpZCB0cmFuc3BhcmVudDti b3JkZXItcmlnaHQ6NnB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6 NnB4IHNvbGlkIHdoaXRlO2JvdHRvbTotNnB4O2xlZnQ6N3B4fS5ib290c3Ry YXAtZGF0ZXRpbWVwaWNrZXItd2lkZ2V0LmRyb3Bkb3duLW1lbnUucHVsbC1y aWdodDpiZWZvcmV7bGVmdDphdXRvO3JpZ2h0OjZweH0uYm9vdHN0cmFwLWRh dGV0aW1lcGlja2VyLXdpZGdldC5kcm9wZG93bi1tZW51LnB1bGwtcmlnaHQ6 YWZ0ZXJ7bGVmdDphdXRvO3JpZ2h0OjdweH0uYm9vdHN0cmFwLWRhdGV0aW1l cGlja2VyLXdpZGdldCAubGlzdC11bnN0eWxlZHttYXJnaW46MH0uYm9vdHN0 cmFwLWRhdGV0aW1lcGlja2VyLXdpZGdldCBhW2RhdGEtYWN0aW9uXXtwYWRk aW5nOjZweCAwfS5ib290c3RyYXAtZGF0ZXRpbWVwaWNrZXItd2lkZ2V0IGFb ZGF0YS1hY3Rpb25dOmFjdGl2ZXtib3gtc2hhZG93Om5vbmV9LmJvb3RzdHJh cC1kYXRldGltZXBpY2tlci13aWRnZXQgLnRpbWVwaWNrZXItaG91ciwuYm9v dHN0cmFwLWRhdGV0aW1lcGlja2VyLXdpZGdldCAudGltZXBpY2tlci1taW51 dGUsLmJvb3RzdHJhcC1kYXRldGltZXBpY2tlci13aWRnZXQgLnRpbWVwaWNr ZXItc2Vjb25ke3dpZHRoOjU0cHg7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNp emU6MS4yZW07bWFyZ2luOjB9LmJvb3RzdHJhcC1kYXRldGltZXBpY2tlci13 aWRnZXQgYnV0dG9uW2RhdGEtYWN0aW9uXXtwYWRkaW5nOjZweH0uYm9vdHN0 cmFwLWRhdGV0aW1lcGlja2VyLXdpZGdldCAuYnRuW2RhdGEtYWN0aW9uPSJp bmNyZW1lbnRIb3VycyJdOjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTt3aWR0 aDoxcHg7aGVpZ2h0OjFweDttYXJnaW46LTFweDtwYWRkaW5nOjA7b3ZlcmZs b3c6aGlkZGVuO2NsaXA6cmVjdCgwLCAwLCAwLCAwKTtib3JkZXI6MDtjb250 ZW50OiJJbmNyZW1lbnQgSG91cnMifS5ib290c3RyYXAtZGF0ZXRpbWVwaWNr ZXItd2lkZ2V0IC5idG5bZGF0YS1hY3Rpb249ImluY3JlbWVudE1pbnV0ZXMi XTo6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O2hlaWdodDox cHg7bWFyZ2luOi0xcHg7cGFkZGluZzowO292ZXJmbG93OmhpZGRlbjtjbGlw OnJlY3QoMCwgMCwgMCwgMCk7Ym9yZGVyOjA7Y29udGVudDoiSW5jcmVtZW50 IE1pbnV0ZXMifS5ib290c3RyYXAtZGF0ZXRpbWVwaWNrZXItd2lkZ2V0IC5i dG5bZGF0YS1hY3Rpb249ImRlY3JlbWVudEhvdXJzIl06OmFmdGVye3Bvc2l0 aW9uOmFic29sdXRlO3dpZHRoOjFweDtoZWlnaHQ6MXB4O21hcmdpbjotMXB4 O3BhZGRpbmc6MDtvdmVyZmxvdzpoaWRkZW47Y2xpcDpyZWN0KDAsIDAsIDAs IDApO2JvcmRlcjowO2NvbnRlbnQ6IkRlY3JlbWVudCBIb3VycyJ9LmJvb3Rz dHJhcC1kYXRldGltZXBpY2tlci13aWRnZXQgLmJ0bltkYXRhLWFjdGlvbj0i ZGVjcmVtZW50TWludXRlcyJdOjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTt3 aWR0aDoxcHg7aGVpZ2h0OjFweDttYXJnaW46LTFweDtwYWRkaW5nOjA7b3Zl cmZsb3c6aGlkZGVuO2NsaXA6cmVjdCgwLCAwLCAwLCAwKTtib3JkZXI6MDtj b250ZW50OiJEZWNyZW1lbnQgTWludXRlcyJ9LmJvb3RzdHJhcC1kYXRldGlt ZXBpY2tlci13aWRnZXQgLmJ0bltkYXRhLWFjdGlvbj0ic2hvd0hvdXJzIl06 OmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtoZWlnaHQ6MXB4 O21hcmdpbjotMXB4O3BhZGRpbmc6MDtvdmVyZmxvdzpoaWRkZW47Y2xpcDpy ZWN0KDAsIDAsIDAsIDApO2JvcmRlcjowO2NvbnRlbnQ6IlNob3cgSG91cnMi fS5ib290c3RyYXAtZGF0ZXRpbWVwaWNrZXItd2lkZ2V0IC5idG5bZGF0YS1h Y3Rpb249InNob3dNaW51dGVzIl06OmFmdGVye3Bvc2l0aW9uOmFic29sdXRl O3dpZHRoOjFweDtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O3BhZGRpbmc6MDtv dmVyZmxvdzpoaWRkZW47Y2xpcDpyZWN0KDAsIDAsIDAsIDApO2JvcmRlcjow O2NvbnRlbnQ6IlNob3cgTWludXRlcyJ9LmJvb3RzdHJhcC1kYXRldGltZXBp Y2tlci13aWRnZXQgLmJ0bltkYXRhLWFjdGlvbj0idG9nZ2xlUGVyaW9kIl06 OmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtoZWlnaHQ6MXB4 O21hcmdpbjotMXB4O3BhZGRpbmc6MDtvdmVyZmxvdzpoaWRkZW47Y2xpcDpy ZWN0KDAsIDAsIDAsIDApO2JvcmRlcjowO2NvbnRlbnQ6IlRvZ2dsZSBBTS9Q TSJ9LmJvb3RzdHJhcC1kYXRldGltZXBpY2tlci13aWRnZXQgLmJ0bltkYXRh LWFjdGlvbj0iY2xlYXIiXTo6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7d2lk dGg6MXB4O2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7cGFkZGluZzowO292ZXJm bG93OmhpZGRlbjtjbGlwOnJlY3QoMCwgMCwgMCwgMCk7Ym9yZGVyOjA7Y29u dGVudDoiQ2xlYXIgdGhlIHBpY2tlciJ9LmJvb3RzdHJhcC1kYXRldGltZXBp Y2tlci13aWRnZXQgLmJ0bltkYXRhLWFjdGlvbj0idG9kYXkiXTo6YWZ0ZXJ7 cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O2hlaWdodDoxcHg7bWFyZ2lu Oi0xcHg7cGFkZGluZzowO292ZXJmbG93OmhpZGRlbjtjbGlwOnJlY3QoMCwg MCwgMCwgMCk7Ym9yZGVyOjA7Y29udGVudDoiU2V0IHRoZSBkYXRlIHRvIHRv ZGF5In0uYm9vdHN0cmFwLWRhdGV0aW1lcGlja2VyLXdpZGdldCAucGlja2Vy LXN3aXRjaHt0ZXh0LWFsaWduOmNlbnRlcn0uYm9vdHN0cmFwLWRhdGV0aW1l cGlja2VyLXdpZGdldCAucGlja2VyLXN3aXRjaDo6YWZ0ZXJ7cG9zaXRpb246 YWJzb2x1dGU7d2lkdGg6MXB4O2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7cGFk ZGluZzowO292ZXJmbG93OmhpZGRlbjtjbGlwOnJlY3QoMCwgMCwgMCwgMCk7 Ym9yZGVyOjA7Y29udGVudDoiVG9nZ2xlIERhdGUgYW5kIFRpbWUgU2NyZWVu cyJ9LmJvb3RzdHJhcC1kYXRldGltZXBpY2tlci13aWRnZXQgLnBpY2tlci1z d2l0Y2ggdGR7cGFkZGluZzowO21hcmdpbjowO2hlaWdodDphdXRvO3dpZHRo OmF1dG87bGluZS1oZWlnaHQ6aW5oZXJpdH0uYm9vdHN0cmFwLWRhdGV0aW1l cGlja2VyLXdpZGdldCAucGlja2VyLXN3aXRjaCB0ZCBzcGFue2xpbmUtaGVp Z2h0OjIuNTtoZWlnaHQ6Mi41ZW07d2lkdGg6MTAwJX0uYm9vdHN0cmFwLWRh dGV0aW1lcGlja2VyLXdpZGdldCB0YWJsZXt3aWR0aDoxMDAlO21hcmdpbjow fS5ib290c3RyYXAtZGF0ZXRpbWVwaWNrZXItd2lkZ2V0IHRhYmxlIHRkLC5i b290c3RyYXAtZGF0ZXRpbWVwaWNrZXItd2lkZ2V0IHRhYmxlIHRoe3RleHQt YWxpZ246Y2VudGVyO2JvcmRlci1yYWRpdXM6NHB4fS5ib290c3RyYXAtZGF0 ZXRpbWVwaWNrZXItd2lkZ2V0IHRhYmxlIHRoe2hlaWdodDoyMHB4O2xpbmUt aGVpZ2h0OjIwcHg7d2lkdGg6MjBweH0uYm9vdHN0cmFwLWRhdGV0aW1lcGlj a2VyLXdpZGdldCB0YWJsZSB0aC5waWNrZXItc3dpdGNoe3dpZHRoOjE0NXB4 fS5ib290c3RyYXAtZGF0ZXRpbWVwaWNrZXItd2lkZ2V0IHRhYmxlIHRoLmRp c2FibGVkLC5ib290c3RyYXAtZGF0ZXRpbWVwaWNrZXItd2lkZ2V0IHRhYmxl IHRoLmRpc2FibGVkOmhvdmVye2JhY2tncm91bmQ6bm9uZTtjb2xvcjojNzc3 O2N1cnNvcjpub3QtYWxsb3dlZH0uYm9vdHN0cmFwLWRhdGV0aW1lcGlja2Vy LXdpZGdldCB0YWJsZSB0aC5wcmV2OjphZnRlcntwb3NpdGlvbjphYnNvbHV0 ZTt3aWR0aDoxcHg7aGVpZ2h0OjFweDttYXJnaW46LTFweDtwYWRkaW5nOjA7 b3ZlcmZsb3c6aGlkZGVuO2NsaXA6cmVjdCgwLCAwLCAwLCAwKTtib3JkZXI6 MDtjb250ZW50OiJQcmV2aW91cyBNb250aCJ9LmJvb3RzdHJhcC1kYXRldGlt ZXBpY2tlci13aWRnZXQgdGFibGUgdGgubmV4dDo6YWZ0ZXJ7cG9zaXRpb246 YWJzb2x1dGU7d2lkdGg6MXB4O2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7cGFk ZGluZzowO292ZXJmbG93OmhpZGRlbjtjbGlwOnJlY3QoMCwgMCwgMCwgMCk7 Ym9yZGVyOjA7Y29udGVudDoiTmV4dCBNb250aCJ9LmJvb3RzdHJhcC1kYXRl dGltZXBpY2tlci13aWRnZXQgdGFibGUgdGhlYWQgdHI6Zmlyc3QtY2hpbGQg dGh7Y3Vyc29yOnBvaW50ZXJ9LmJvb3RzdHJhcC1kYXRldGltZXBpY2tlci13 aWRnZXQgdGFibGUgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGg6aG92ZXJ7YmFj a2dyb3VuZDojZWVlfS5ib290c3RyYXAtZGF0ZXRpbWVwaWNrZXItd2lkZ2V0 IHRhYmxlIHRke2hlaWdodDo1NHB4O2xpbmUtaGVpZ2h0OjU0cHg7d2lkdGg6 NTRweH0uYm9vdHN0cmFwLWRhdGV0aW1lcGlja2VyLXdpZGdldCB0YWJsZSB0 ZC5jd3tmb250LXNpemU6LjhlbTtoZWlnaHQ6MjBweDtsaW5lLWhlaWdodDoy MHB4O2NvbG9yOiM3Nzd9LmJvb3RzdHJhcC1kYXRldGltZXBpY2tlci13aWRn ZXQgdGFibGUgdGQuZGF5e2hlaWdodDoyMHB4O2xpbmUtaGVpZ2h0OjIwcHg7 d2lkdGg6MjBweH0uYm9vdHN0cmFwLWRhdGV0aW1lcGlja2VyLXdpZGdldCB0 YWJsZSB0ZC5kYXk6aG92ZXIsLmJvb3RzdHJhcC1kYXRldGltZXBpY2tlci13 aWRnZXQgdGFibGUgdGQuaG91cjpob3ZlciwuYm9vdHN0cmFwLWRhdGV0aW1l cGlja2VyLXdpZGdldCB0YWJsZSB0ZC5taW51dGU6aG92ZXIsLmJvb3RzdHJh cC1kYXRldGltZXBpY2tlci13aWRnZXQgdGFibGUgdGQuc2Vjb25kOmhvdmVy e2JhY2tncm91bmQ6I2VlZTtjdXJzb3I6cG9pbnRlcn0uYm9vdHN0cmFwLWRh dGV0aW1lcGlja2VyLXdpZGdldCB0YWJsZSB0ZC5vbGQsLmJvb3RzdHJhcC1k YXRldGltZXBpY2tlci13aWRnZXQgdGFibGUgdGQubmV3e2NvbG9yOiM3Nzd9 LmJvb3RzdHJhcC1kYXRldGltZXBpY2tlci13aWRnZXQgdGFibGUgdGQudG9k YXl7cG9zaXRpb246cmVsYXRpdmV9LmJvb3RzdHJhcC1kYXRldGltZXBpY2tl ci13aWRnZXQgdGFibGUgdGQudG9kYXk6YmVmb3Jle2NvbnRlbnQ6Jyc7ZGlz cGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyOjAgMCA3cHggN3B4IHNvbGlkIHRy YW5zcGFyZW50O2JvcmRlci1ib3R0b20tY29sb3I6IzMzN2FiNztib3JkZXIt dG9wLWNvbG9yOnJnYmEoMCwwLDAsMC4yKTtwb3NpdGlvbjphYnNvbHV0ZTti b3R0b206NHB4O3JpZ2h0OjRweH0uYm9vdHN0cmFwLWRhdGV0aW1lcGlja2Vy LXdpZGdldCB0YWJsZSB0ZC5hY3RpdmUsLmJvb3RzdHJhcC1kYXRldGltZXBp Y2tlci13aWRnZXQgdGFibGUgdGQuYWN0aXZlOmhvdmVye2JhY2tncm91bmQt Y29sb3I6IzMzN2FiNztjb2xvcjojZmZmO3RleHQtc2hhZG93OjAgLTFweCAw IHJnYmEoMCwwLDAsMC4yNSl9LmJvb3RzdHJhcC1kYXRldGltZXBpY2tlci13 aWRnZXQgdGFibGUgdGQuYWN0aXZlLnRvZGF5OmJlZm9yZXtib3JkZXItYm90 dG9tLWNvbG9yOiNmZmZ9LmJvb3RzdHJhcC1kYXRldGltZXBpY2tlci13aWRn ZXQgdGFibGUgdGQuZGlzYWJsZWQsLmJvb3RzdHJhcC1kYXRldGltZXBpY2tl ci13aWRnZXQgdGFibGUgdGQuZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDpu b25lO2NvbG9yOiM3Nzc7Y3Vyc29yOm5vdC1hbGxvd2VkfS5ib290c3RyYXAt ZGF0ZXRpbWVwaWNrZXItd2lkZ2V0IHRhYmxlIHRkIHNwYW57ZGlzcGxheTpp bmxpbmUtYmxvY2s7d2lkdGg6NTRweDtoZWlnaHQ6NTRweDtsaW5lLWhlaWdo dDo1NHB4O21hcmdpbjoycHggMS41cHg7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVy LXJhZGl1czo0cHh9LmJvb3RzdHJhcC1kYXRldGltZXBpY2tlci13aWRnZXQg dGFibGUgdGQgc3Bhbjpob3ZlcntiYWNrZ3JvdW5kOiNlZWV9LmJvb3RzdHJh cC1kYXRldGltZXBpY2tlci13aWRnZXQgdGFibGUgdGQgc3Bhbi5hY3RpdmV7 YmFja2dyb3VuZC1jb2xvcjojMzM3YWI3O2NvbG9yOiNmZmY7dGV4dC1zaGFk b3c6MCAtMXB4IDAgcmdiYSgwLDAsMCwwLjI1KX0uYm9vdHN0cmFwLWRhdGV0 aW1lcGlja2VyLXdpZGdldCB0YWJsZSB0ZCBzcGFuLm9sZHtjb2xvcjojNzc3 fS5ib290c3RyYXAtZGF0ZXRpbWVwaWNrZXItd2lkZ2V0IHRhYmxlIHRkIHNw YW4uZGlzYWJsZWQsLmJvb3RzdHJhcC1kYXRldGltZXBpY2tlci13aWRnZXQg dGFibGUgdGQgc3Bhbi5kaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOm5vbmU7 Y29sb3I6Izc3NztjdXJzb3I6bm90LWFsbG93ZWR9LmJvb3RzdHJhcC1kYXRl dGltZXBpY2tlci13aWRnZXQudXNldHdlbnR5Zm91ciB0ZC5ob3Vye2hlaWdo dDoyN3B4O2xpbmUtaGVpZ2h0OjI3cHh9LmJvb3RzdHJhcC1kYXRldGltZXBp Y2tlci13aWRnZXQud2lkZXJ7d2lkdGg6MjFlbX0uYm9vdHN0cmFwLWRhdGV0 aW1lcGlja2VyLXdpZGdldCAuZGF0ZXBpY2tlci1kZWNhZGVzIC5kZWNhZGV7 bGluZS1oZWlnaHQ6MS44ZW0gIWltcG9ydGFudH0uaW5wdXQtZ3JvdXAuZGF0 ZSAuaW5wdXQtZ3JvdXAtYWRkb257Y3Vyc29yOnBvaW50ZXJ9LnNyLW9ubHl7 cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O2hlaWdodDoxcHg7bWFyZ2lu Oi0xcHg7cGFkZGluZzowO292ZXJmbG93OmhpZGRlbjtjbGlwOnJlY3QoMCwg MCwgMCwgMCk7Ym9yZGVyOjB9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9z dGF0aWMvY3NzL292ZXJyaWRlcy5jc3MgYi93ZWIvcGdhZG1pbi9zdGF0aWMv Y3NzL292ZXJyaWRlcy5jc3MKaW5kZXggMTIyYzk0Mi4uZjBjNTcwMyAxMDA3 NTUKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2Nzcy9vdmVycmlkZXMuY3Nz CisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9jc3Mvb3ZlcnJpZGVzLmNzcwpA QCAtNTEzLDI3ICs1MTMsMjcgQEAgZmllbGRzZXRbZGlzYWJsZWRdIC5mb3Jt LWNvbnRyb2wgewogICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiB9CiAKLS5i YWNrZ3JpZCB0aGVhZCB0aHsKKy5iYWNrZ3JpZCA+IHRoZWFkIHRoewogICAg IGJhY2tncm91bmQtY29sb3I6ICMyQzc2QjQ7CiB9CiAKLS5iYWNrZ3JpZCB0 aCwgLmJhY2tncmlkIHRkIHsKKy5iYWNrZ3JpZCA+IHRoZWFkID4gdGgsIC5i YWNrZ3JpZCA+IHRib2R5ID4gdGQgewogICBsaW5lLWhlaWdodDogMThweDsK ICAgZm9udC1zaXplOiAxMnB4OwogfQogCi0uYmFja2dyaWQgdGggeworLmJh Y2tncmlkID4gdGhlYWQgPiB0aCB7CiAgICAgbGV0dGVyLXNwYWNpbmc6MC41 cHgKIH0KIAotLmJhY2tncmlkIHRkIHsKKy5iYWNrZ3JpZCA+IHRib2R5ID4g dGQgewogICAgIHBhZGRpbmctdG9wOiAwcHg7CiAgICAgcGFkZGluZy1ib3R0 b206IDBweDsKICAgICBwYWRkaW5nLWxlZnQ6IDJweDsKICAgICBwYWRkaW5n LXJpZ2h0OiAycHg7CiB9CiAKLS5iYWNrZ3JpZCB0aGVhZCB0aCBhIHsKKy5i YWNrZ3JpZCA+IHRoZWFkIHRoIGEgewogICAgIGNvbG9yOiB3aGl0ZTsKIH0K IApAQCAtNTYyLDcgKzU2Miw4IEBAIGZpZWxkc2V0W2Rpc2FibGVkXSAuZm9y bS1jb250cm9sIHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQUFBOwogfQog Ci0uc3FsLWVkaXRvci1ncmlkLWNvbnRhaW5lciAuYmFja2dyaWQgdGgucmVu ZGVyYWJsZSwgLnNxbC1lZGl0b3ItZ3JpZC1jb250YWluZXIgLmJhY2tncmlk IHRkLnJlbmRlcmFibGUgeworLnNxbC1lZGl0b3ItZ3JpZC1jb250YWluZXIg LmJhY2tncmlkID4gdGhlYWQgPiB0aC5yZW5kZXJhYmxlLAorLnNxbC1lZGl0 b3ItZ3JpZC1jb250YWluZXIgLmJhY2tncmlkID4gdGJvZHkgPiB0ZC5yZW5k ZXJhYmxlIHsKICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiB9CiAKQEAg LTg0Miw3ICs4NDMsNyBAQCB0ZC5lZGl0LWNlbGwuZWRpdGFibGUuc29ydGFi bGUucmVuZGVyYWJsZS5lZGl0b3IgewogICBmb250LXNpemU6IDEwcHghaW1w b3J0YW50OwogfQogCi0uYmFja2dyaWQgdGgsIC5iYWNrZ3JpZCB0ZHsKKy5i YWNrZ3JpZCA+IHRoLCAuYmFja2dyaWQgPiB0ZCB7CiAgIHBhZGRpbmc6IDJw eDsKICAgZm9udC13ZWlnaHQ6IG5vcm1hbCFpbXBvcnRhbnQ7CiB9CkBAIC04 NzksOCArODgwLDE1IEBAIHRkLmVkaXQtY2VsbC5lZGl0YWJsZS5zb3J0YWJs ZS5yZW5kZXJhYmxlLmVkaXRvciB7CiAKIC5zZWxlY3QyLWNvbnRhaW5lci0t ZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lci0tZm9jdXMKIC5zZWxlY3QyLXNl bGVjdGlvbi0tbXVsdGlwbGUgewotICAgIGJvcmRlcjogMXB4IHNvbGlkICNh YWEgIWltcG9ydGFudDsKLSAgICBvdXRsaW5lOiAwIG5vbmU7CisgIGJvcmRl cjogMXB4IHNvbGlkICNhYWEgIWltcG9ydGFudDsKKyAgb3V0bGluZTogMCBu b25lOworfQorCisuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0 Mi1jb250YWluZXItLWZvY3VzIHsKKyAgYm9yZGVyLWNvbG9yOiAjNjZhZmU5 OworICBvdXRsaW5lOiAwOworICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0 IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLCAwIDAgOHB4IHJnYmEoMTAy LCAxNzUsIDIzMywgLjYpOworICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAx cHggcmdiYSgwLDAsMCwuMDc1KSwgMCAwIDhweCByZ2JhKDEwMiwgMTc1LCAy MzMsIC42KTsKIH0KIAogLyogQ1NTIGZvciBTcWxGaWVsZCBjb250cm9sICov CkBAIC05ODksNyArOTk3LDcgQEAgdWwubmF2Lm5hdi10YWJzIHsKIH0KIAog LnBnYWRtaW4tY29udHJvbHMuU1FMPi5Db2RlTWlycm9yIHsKLSAgaGVpZ2h0 OiA1MDBweCFpbXBvcnRhbnQ7CisgIGhlaWdodDogNTAwcHggIWltcG9ydGFu dDsKIH0KIAogLyogVGhpcyBydWxlIHdpbGwgc3RvcCBDaHJvbWUgYXBwbHkg aGlnaGxpZ2h0aW5nIHRvIGVsZW1lbnRzIHN1Y2ggYXMgRElWJ3MgdXNlZCBh cyBtb2RhbHMgKi8gCkBAIC0xMjc2LDcgKzEyODQsNyBAQCBmb3JtW25hbWU9 ImNoYW5nZV9wYXNzd29yZF9mb3JtIl0gLmhlbHAtYmxvY2sgewogICB0ZXh0 LWFsaWduOiBsZWZ0OwogfQogCi0uYmFja2dyaWQgdGQuZWRpdG9yIGlucHV0 W3R5cGU9cGFzc3dvcmRdIHsKKy5iYWNrZ3JpZCA+IHRib2R5ID4gdGQuZWRp dG9yIGlucHV0W3R5cGU9cGFzc3dvcmRdIHsKICAgZGlzcGxheTogYmxvY2s7 CiAgIHdpZHRoOiAxMDAlOwogICBoZWlnaHQ6IDEwMCU7CkBAIC0xNDAyLDMg KzE0MTAsMjAgQEAgdGFibGUuYmFja2dyaWQgewogLnBnYWRtaW4tY29udHJv bHMuc3FsX2ZpZWxkX2xheW91dCAuQ29kZU1pcnJvciB7CiAgIGxpbmUtaGVp Z2h0OiAyMnB4OwogfQorCisucGdhZG1pbi1jb250cm9scy5mb2N1c2VkIHsK KyAgYm9yZGVyLWNvbG9yOiAjNjZhZmU5OworICBvdXRsaW5lOiAwOworICAt d2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCww LC4wNzUpLCAwIDAgOHB4IHJnYmEoMTAyLCAxNzUsIDIzMywgLjYpOworICBi b3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSwg MCAwIDhweCByZ2JhKDEwMiwgMTc1LCAyMzMsIC42KTsKK30KKworLmJvb3Rz dHJhcC1kYXRldGltZXBpY2tlci13aWRnZXQgdGQsCisuYm9vdHN0cmFwLWRh dGV0aW1lcGlja2VyLXdpZGdldCB0aCB7CisgIGRpc3BsYXk6IHRhYmxlLWNl bGw7CisgIHdoaXRlLXNwYWNlOiBub3JtYWw7Cit9CisKKy5oZWxwLWJsb2Nr IHsKKyAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKK30KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL3N0YXRpYy9jc3MvcGdhZG1pbi5jc3MgYi93ZWIvcGdhZG1p bi9zdGF0aWMvY3NzL3BnYWRtaW4uY3NzCmluZGV4IGExYjZiZTUuLmNkZjQz MjcgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9jc3MvcGdhZG1p bi5jc3MKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2Nzcy9wZ2FkbWluLmNz cwpAQCAtNzE2LDYgKzcxNiwxMCBAQCBsZ2ctZWwtY29udGFpbmVyW2VsPW1k XSAucGctZWwtbGctOCwKICAgd2lkdGg6IDguMzMzMzMzMzMzMzMzMzMlOwog fQogCisucGctZWwtY29udGFpbmVyIHVsLnRhYi1jb250ZW50IHsKKyAgbWlu LWhlaWdodDogY2FsYygxMDAlIC0gMTBweCk7Cit9CisKIC5wZ2FkbWluLWNv bnRyb2wtZ3JvdXAgewogICBtaW4td2lkdGg6IDM0cHg7CiB9CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja2Zvcm0ucGdhZG1pbi5q cyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrZm9ybS5wZ2FkbWluLmpz CmluZGV4IDYzOTYwOTQuLmFhNjNkM2UgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL3N0YXRpYy9qcy9iYWNrZm9ybS5wZ2FkbWluLmpzCisrKyBiL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9iYWNrZm9ybS5wZ2FkbWluLmpzCkBAIC02MSw2 ICs2MSw3IEBACiAgICAgJ3RleHQnOiBbJ3VuZWRpdGFibGUtaW5wdXQnLCAn aW5wdXQnLCAnc3RyaW5nJ10sCiAgICAgJ251bWVyaWMnOiBbJ3VuZWRpdGFi bGUtaW5wdXQnLCAnbnVtZXJpYycsICdudW1lcmljJ10sCiAgICAgJ2RhdGUn OiAnZGF0ZXBpY2tlcicsCisgICAgJ2RhdGV0aW1lJzogJ2RhdGV0aW1lcGlj a2VyJywKICAgICAnYm9vbGVhbic6ICdib29sZWFuJywKICAgICAnb3B0aW9u cyc6IFsncmVhZG9ubHktb3B0aW9uJywgJ3NlbGVjdCcsIEJhY2tncmlkLkV4 dGVuc2lvbi5QR1NlbGVjdENlbGxdLAogICAgICdtdWx0aWxpbmUnOiBbJ3Rl eHRhcmVhJywgJ3RleHRhcmVhJywgJ3N0cmluZyddLApAQCAtMTE0Niw3ICsx MTQ3LDcgQEAKICAgICB9CiAgIH0pOwogCi0gIHZhciBTdWJOb2RlQ29sbGVj dGlvbkNvbnRyb2wgPSAgQmFja2Zvcm0uU3ViTm9kZUNvbGxlY3Rpb25Db250 cm9sID0gQmFja2Zvcm0uQ29udHJvbC5leHRlbmQoeworICB2YXIgU3ViTm9k ZUNvbGxlY3Rpb25Db250cm9sID0gQmFja2Zvcm0uU3ViTm9kZUNvbGxlY3Rp b25Db250cm9sID0gQmFja2Zvcm0uQ29udHJvbC5leHRlbmQoewogICAgIHJl bmRlcjogZnVuY3Rpb24oKSB7CiAgICAgICB2YXIgZmllbGQgPSBfLmRlZmF1 bHRzKHRoaXMuZmllbGQudG9KU09OKCksIHRoaXMuZGVmYXVsdHMpLAogICAg ICAgICAgIGF0dHJpYnV0ZXMgPSB0aGlzLm1vZGVsLnRvSlNPTigpLApAQCAt MTI1OCwxNCArMTI1OSwxNCBAQAogCiAgICAgICBpZiAoIWNvbGxlY3Rpb24p IHsKICAgICAgICAgY29sbGVjdGlvbiA9IG5ldyAocGdCcm93c2VyLk5vZGUu Q29sbGVjdGlvbikobnVsbCwgewotICAgICAgICAgIGhhbmRsZXI6IHNlbGYu bW9kZWwuaGFuZGxlciB8fCBzZWxmLAorICAgICAgICAgIGhhbmRsZXI6IHNl bGYubW9kZWwuaGFuZGxlciB8fCBzZWxmLm1vZGVsLAogICAgICAgICAgIG1v ZGVsOiBkYXRhLm1vZGVsLCB0b3A6IHNlbGYubW9kZWwudG9wIHx8IHNlbGYu bW9kZWwsCiAgICAgICAgICAgc2lsZW50OiB0cnVlCiAgICAgICAgIH0pOwog ICAgICAgICBzZWxmLm1vZGVsLnNldChkYXRhLm5hbWUsIGNvbGxlY3Rpb24s IHtzaWxlbnQ6IHRydWV9KTsKICAgICAgIH0KIAotICAgICAgdmFyIGNlbGxF ZGl0aW5nID0gZnVuY3Rpb24oYXJncyl7CisgICAgICB2YXIgY2VsbEVkaXRp bmcgPSBmdW5jdGlvbihhcmdzKSB7CiAgICAgICAgIHZhciBzZWxmID0gdGhp cywKICAgICAgICAgICBjZWxsID0gYXJnc1swXTsKICAgICAgICAgLy8gU2Vh cmNoIGZvciBhbnkgb3RoZXIgcm93cyB3aGljaCBhcmUgb3Blbi4KQEAgLTEz NjksMjAgKzEzNzAsMTggQEAKICAgICAgIHRoaXMuZGlhbG9nID0gby5kaWFs b2c7CiAgICAgICB0aGlzLnRhYkluZGV4ID0gby50YWJJbmRleDsKIAotICAg ICAgLyoKLSAgICAgICAqIFdlIHdpbGwgbGlzdGVuIHRvIHRoZSB0YWIgY2hh bmdlIGV2ZW50IHRvIGNoZWNrLCBpZiB0aGUgU1FMIHRhYiBoYXMKLSAgICAg ICAqIGJlZW4gY2xpY2tlZCBvciwgbm90LgotICAgICAgICovCi0gICAgICB0 aGlzLm1vZGVsLm9uKCdwZy1wcm9wZXJ0eS10YWItY2hhbmdlZCcsIHRoaXMu b25UYWJDaGFuZ2UsIHRoaXMpOworICAgICAgXy5iaW5kQWxsKHRoaXMsICdv blRhYkNoYW5nZScpOwogICAgIH0sCiAgICAgZ2V0VmFsdWVGcm9tRE9NOiBm dW5jdGlvbigpIHsKICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVyLnRv UmF3KHRoaXMuJGVsLmZpbmQoInRleHRhcmVhIikudmFsKCksIHRoaXMubW9k ZWwpOwogICAgIH0sCiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKICAgICAg IGlmICh0aGlzLnNxbEN0cmwpIHsKKyAgICAgICAgdGhpcy5zcWxDdHJsLnRv VGV4dEFyZWEoKTsKICAgICAgICAgZGVsZXRlIHRoaXMuc3FsQ3RybDsKICAg ICAgICAgdGhpcy5zcWxDdHJsID0gbnVsbDsKICAgICAgICAgdGhpcy4kZWwu ZW1wdHkoKTsKKyAgICAgICAgdGhpcy5tb2RlbC5vZmYoJ3BnLXByb3BlcnR5 LXRhYi1jaGFuZ2VkJywgdGhpcy5vblRhYkNoYW5nZSwgdGhpcyk7CiAgICAg ICB9CiAgICAgICAvLyBVc2UgdGhlIEJhY2tmb3JtIENvbnRyb2wncyByZW5k ZXIgZnVuY3Rpb24KICAgICAgIEJhY2tmb3JtLkNvbnRyb2wucHJvdG90eXBl LnJlbmRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwpAQCAtMTM5Nyw2ICsx Mzk2LDEyIEBACiAgICAgICAgIHRhYlNpemU6IHBnQWRtaW4uQnJvd3Nlci5l ZGl0b3Jfb3B0aW9ucy50YWJTaXplCiAgICAgICB9KTsKIAorICAgICAgLyoK KyAgICAgICAqIFdlIHdpbGwgbGlzdGVuIHRvIHRoZSB0YWIgY2hhbmdlIGV2 ZW50IHRvIGNoZWNrLCBpZiB0aGUgU1FMIHRhYiBoYXMKKyAgICAgICAqIGJl ZW4gY2xpY2tlZCBvciwgbm90LgorICAgICAgICovCisgICAgICB0aGlzLm1v ZGVsLm9uKCdwZy1wcm9wZXJ0eS10YWItY2hhbmdlZCcsIHRoaXMub25UYWJD aGFuZ2UsIHRoaXMpOworCiAgICAgICByZXR1cm4gdGhpczsKICAgICB9LAog ICAgIG9uVGFiQ2hhbmdlOiBmdW5jdGlvbihvYmopIHsKQEAgLTE0NDcsOCAr MTQ1MiwxMCBAQAogICAgIH0sCiAgICAgcmVtb3ZlOiBmdW5jdGlvbigpIHsK ICAgICAgIGlmICh0aGlzLnNxbEN0cmwpIHsKKyAgICAgICAgdGhpcy5zcWxD dHJsLnRvVGV4dEFyZWEoKTsKICAgICAgICAgZGVsZXRlIHRoaXMuc3FsQ3Ry bDsKICAgICAgICAgdGhpcy5zcWxDdHJsID0gbnVsbDsKKwogICAgICAgICB0 aGlzLiRlbC5lbXB0eSgpOwogICAgICAgfQogICAgICAgdGhpcy5tb2RlbC5v ZmYoJ3BnLXByb3BlcnR5LXRhYi1jaGFuZ2VkJywgdGhpcy5vblRhYkNoYW5n ZSwgdGhpcyk7CkBAIC0xODM4LDggKzE4NDUsMTAgQEAKICAgICAgICcgICA8 b3B0aW9uICcsCiAgICAgICAnICAgIDwlIGlmIChvcHRpb24uaW1hZ2UpIHsg JT4gZGF0YS1pbWFnZT08JT1vcHRpb24uaW1hZ2UlPiA8JX0lPicsCiAgICAg ICAnICAgIHZhbHVlPTwlPSBmb3JtYXR0ZXIuZnJvbVJhdyhvcHRpb24udmFs dWUpICU+JywKKyAgICAgICcgICAgPCUgaWYgKG9wdGlvbi5zZWxlY3RlZCkg eyU+c2VsZWN0ZWQ9InNlbGVjdGVkIjwlfSBlbHNlIHslPicsCiAgICAgICAn ICAgIDwlIGlmICghc2VsZWN0Mi5tdWx0aXBsZSAmJiBvcHRpb24udmFsdWUg PT09IHJhd1ZhbHVlKSB7JT5zZWxlY3RlZD0ic2VsZWN0ZWQiPCV9JT4nLAog ICAgICAgJyAgICA8JSBpZiAoc2VsZWN0Mi5tdWx0aXBsZSAmJiByYXdWYWx1 ZSAmJiByYXdWYWx1ZS5pbmRleE9mKG9wdGlvbi52YWx1ZSkgIT0gLTEpeyU+ c2VsZWN0ZWQ9InNlbGVjdGVkIiBkYXRhLWluZGV4PSJyYXdWYWx1ZS5pbmRl eE9mKG9wdGlvbi52YWx1ZSkiPCV9JT4nLAorICAgICAgJyAgICA8JX0lPics CiAgICAgICAnICAgIDwlPSBkaXNhYmxlZCA/ICJkaXNhYmxlZCIgOiAiIiU+ PjwlLW9wdGlvbi5sYWJlbCU+PC9vcHRpb24+JywKICAgICAgICcgIDwlfSU+ JywKICAgICAgICcgPC9zZWxlY3Q+JywKQEAgLTE5MjAsNyArMTkyOSw5IEBA CiAgICAgICBpZiAodGhpcy4kc2VsKSB7CiAgICAgICAgIHRoaXMuJHNlbC5k YXRhKCdzZWxlY3QyJykub24oImtleXByZXNzIiwgZnVuY3Rpb24oZXYpIHsK ICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgICAgaWYgKGV2 LndoaWNoID09PSA5KSB7IC8vIGtleWNvZGUgOSBpcyBmb3IgVEFCIGtleQor CisgICAgICAgICAgLy8ga2V5Y29kZSA5IGlzIGZvciBUQUIga2V5CisgICAg ICAgICAgaWYgKGV2LndoaWNoID09PSA5ICYmIHNlbGYuaXNPcGVuKCkpIHsK ICAgICAgICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAg ICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6c2VsZWN0Jywge30pOwogICAgICAg ICAgIH0KQEAgLTIwODIsMTMgKzIwOTMsNyBAQAogICAgICAgQmFja2Zvcm0u VGV4dGFyZWFDb250cm9sLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRo aXMsIGFyZ3VtZW50cyk7CiAgICAgICB0aGlzLnNxbEN0cmwgPSBudWxsOwog Ci0gICAgICAvLyBUaGVyZSBpcyBhbiBpc3N1ZSB3aXRoIHRoZSBDb2RlIE1p cnJvciBTUUwuCi0gICAgICAvLwotICAgICAgLy8gSXQgZG9lcyBub3QgaW5p dGlhbGl6ZSB0aGUgY29kZSBtaXJyb3Igb2JqZWN0IGNvbXBsZXRlbHkgd2hl biB0aGUKLSAgICAgIC8vIHJlZmVyZW5jZWQgdGV4dGFyZWEgaXMgaGlkZGVu IChub3QgdmlzaWJsZSksIGhlbmNlIC0gd2UgbmVlZCB0bwotICAgICAgLy8g cmVmcmVzaCB0aGUgY29kZSBtaXJyb3Igb2JqZWN0IG9uICdwZy1wcm9wZXJ0 eS10YWItY2hhbmdlZCcgZXZlbnQgdG8KLSAgICAgIC8vIG1ha2UgaXQgd29y ayBwcm9wZXJseS4KLSAgICAgIHRoaXMubGlzdGVuVG8odGhpcy5tb2RlbCwg J3BnLXByb3BlcnR5LXRhYi1jaGFuZ2VkJywgdGhpcy5yZWZyZXNoVGV4dEFy ZWEpOworICAgICAgXy5iaW5kQWxsKHRoaXMsICdvbkZvY3VzJywgJ29uQmx1 cicsICdyZWZyZXNoVGV4dEFyZWEnKTsKICAgICB9LAogCiAgICAgZ2V0VmFs dWVGcm9tRE9NOiBmdW5jdGlvbigpIHsKQEAgLTIwOTgsNiArMjEwMywxMSBA QAogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7CiAgICAgICAvLyBDbGVhbiB1 cCB0aGUgZXhpc3Rpbmcgc3FsIGNvbnRyb2wKICAgICAgIGlmICh0aGlzLnNx bEN0cmwpIHsKKyAgICAgICAgdGhpcy5tb2RlbC5vZmYoJ3BnLXByb3BlcnR5 LXRhYi1jaGFuZ2VkJywgdGhpcy5yZWZyZXNoVGV4dEFyZWEsIHRoaXMpOwor ICAgICAgICB0aGlzLnNxbEN0cmwub2ZmKCdmb2N1cycsIHRoaXMub25Gb2N1 cyk7CisgICAgICAgIHRoaXMuc3FsQ3RybC5vZmYoJ2JsdXInLCB0aGlzLm9u Qmx1cik7CisKKyAgICAgICAgdGhpcy5zcWxDdHJsLnRvVGV4dEFyZWEoKTsK ICAgICAgICAgZGVsZXRlIHRoaXMuc3FsQ3RybDsKICAgICAgICAgdGhpcy5z cWxDdHJsID0gbnVsbDsKICAgICAgICAgdGhpcy4kZWwuZW1wdHkoKTsKQEAg LTIxNDcsNiArMjE1NywxNyBAQAogICAgICAgaWYgKCFpc1Zpc2libGUpCiAg ICAgICAgIHNlbGYuJGVsLmFkZENsYXNzKEJhY2tmb3JtLmhpZGRlbkNsYXNz bmFtZSk7CiAKKyAgICAgIC8vIFRoZXJlIGlzIGFuIGlzc3VlIHdpdGggdGhl IENvZGUgTWlycm9yIFNRTC4KKyAgICAgIC8vCisgICAgICAvLyBJdCBkb2Vz IG5vdCBpbml0aWFsaXplIHRoZSBjb2RlIG1pcnJvciBvYmplY3QgY29tcGxl dGVseSB3aGVuIHRoZQorICAgICAgLy8gcmVmZXJlbmNlZCB0ZXh0YXJlYSBp cyBoaWRkZW4gKG5vdCB2aXNpYmxlKSwgaGVuY2UgLSB3ZSBuZWVkIHRvCisg ICAgICAvLyByZWZyZXNoIHRoZSBjb2RlIG1pcnJvciBvYmplY3Qgb24gJ3Bn LXByb3BlcnR5LXRhYi1jaGFuZ2VkJyBldmVudCB0bworICAgICAgLy8gbWFr ZSBpdCB3b3JrIHByb3Blcmx5LgorICAgICAgc2VsZi5tb2RlbC5vbigncGct cHJvcGVydHktdGFiLWNoYW5nZWQnLCB0aGlzLnJlZnJlc2hUZXh0QXJlYSwg dGhpcyk7CisKKyAgICAgIHRoaXMuc3FsQ3RybC5vbignZm9jdXMnLCB0aGlz Lm9uRm9jdXMpOworICAgICAgdGhpcy5zcWxDdHJsLm9uKCdibHVyJywgdGhp cy5vbkJsdXIpOworCiAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAv LyBSZWZyZXNoIFNRTCBGaWVsZCB0byByZWZyZXNoIHRoZSBjb250cm9sIGxh emlseSBhZnRlciBpdCByZW5kZXJzCiAgICAgICBzZXRUaW1lb3V0KGZ1bmN0 aW9uKCkgewpAQCAtMjE1Niw2ICsyMTc3LDE2IEBACiAgICAgICByZXR1cm4g c2VsZjsKICAgICB9LAogCisgICAgb25Gb2N1czogZnVuY3Rpb24oKSB7Cisg ICAgICB2YXIgJGN0cmwgPSB0aGlzLiRlbC5maW5kKCcucGdhZG1pbi1jb250 cm9scycpLmZpcnN0KCk7CisgICAgICBpZiAoISRjdHJsLmhhc0NsYXNzKCdm b2N1c2VkJykpCisgICAgICAgICRjdHJsLmFkZENsYXNzKCdmb2N1c2VkJyk7 CisgICAgfSwKKworICAgIG9uQmx1cjogZnVuY3Rpb24oKSB7CisgICAgICB0 aGlzLiRlbC5maW5kKCcucGdhZG1pbi1jb250cm9scycpLmZpcnN0KCkucmVt b3ZlQ2xhc3MoJ2ZvY3VzZWQnKTsKKyAgICB9LAorCiAgICAgcmVmcmVzaFRl eHRBcmVhOiBmdW5jdGlvbigpIHsKICAgICAgIGlmICh0aGlzLnNxbEN0cmwp IHsKICAgICAgICAgdGhpcy5zcWxDdHJsLnJlZnJlc2goKTsKQEAgLTIxNjUs MTIgKzIxOTYsMTQgQEAKICAgICByZW1vdmU6IGZ1bmN0aW9uKCkgewogICAg ICAgLy8gQ2xlYW4gdXAgdGhlIHNxbCBjb250cm9sCiAgICAgICBpZiAodGhp cy5zcWxDdHJsKSB7CisgICAgICAgIHRoaXMuc3FsQ3RybC5vZmYoJ2ZvY3Vz JywgdGhpcy5vbkZvY3VzKTsKKyAgICAgICAgdGhpcy5zcWxDdHJsLm9mZign Ymx1cicsIHRoaXMub25CbHVyKTsKICAgICAgICAgZGVsZXRlIHRoaXMuc3Fs Q3RybDsKICAgICAgICAgdGhpcy5zcWxDdHJsID0gbnVsbDsKICAgICAgICAg dGhpcy4kZWwuZW1wdHkoKTsKICAgICAgIH0KIAotICAgICAgdGhpcy5zdG9w TGlzdGVuaW5nKHRoaXMubW9kZWwsICJwZy1wcm9wZXJ0eS10YWItY2hhbmdl ZCIsIHRoaXMucmVmcmVzaFRleHRBcmVhKTsKKyAgICAgIHRoaXMubW9kZWwu b2ZmKCJwZy1wcm9wZXJ0eS10YWItY2hhbmdlZCIsIHRoaXMucmVmcmVzaFRl eHRBcmVhLCB0aGlzKTsKIAogICAgICAgQmFja2Zvcm0uVGV4dGFyZWFDb250 cm9sLnByb3RvdHlwZS5yZW1vdmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsK ICAgICB9CkBAIC0yMjYxLDUgKzIyOTQsMTM0IEBACiAgICAgfQogICB9KTsK IAorICB2YXIgRGF0ZXRpbWVwaWNrZXJDb250cm9sID0gQmFja2Zvcm0uRGF0 ZXRpbWVwaWNrZXJDb250cm9sID0KKyAgICAgIEJhY2tmb3JtLklucHV0Q29u dHJvbC5leHRlbmQoeworICAgIGRlZmF1bHRzOiB7CisgICAgICB0eXBlOiAi dGV4dCIsCisgICAgICBsYWJlbDogIiIsCisgICAgICBvcHRpb25zOiB7Cisg ICAgICAgIGZvcm1hdDogIk1NTSBEIFlZWVkgSEg6bW06c3MuU1NTIFoiLAor ICAgICAgICBzaG93Q2xlYXI6IHRydWUsCisgICAgICAgIHNob3dUb2RheUJ1 dHRvbjogdHJ1ZSwKKyAgICAgICAgdG9vbGJhclBsYWNlbWVudDogJ3RvcCcK KyAgICAgIH0sCisgICAgICBwbGFjZWhvbGRlcjogIk1NTSBEIFlZWVkgSEg6 bW06c3MuU1NTIFoiLAorICAgICAgZXh0cmFDbGFzc2VzOiBbXSwKKyAgICAg IGhlbHBNZXNzYWdlOiBudWxsCisgICAgfSwKKyAgICBldmVudHM6IHsKKyAg ICAgICJibHVyIGlucHV0IjogIm9uQ2hhbmdlIiwKKyAgICAgICJjaGFuZ2Ug aW5wdXQiOiAib25DaGFuZ2UiLAorICAgICAgImNoYW5nZURhdGUgaW5wdXQi OiAib25DaGFuZ2UiLAorICAgICAgImZvY3VzIGlucHV0IjogImNsZWFySW52 YWxpZCIsCisgICAgICAnZGIuY2hhbmdlJzogIm9uQ2hhbmdlIiwKKyAgICAg ICdjbGljayc6ICdvcGVuUGlja2VyJworICAgIH0sCisgICAgb3BlblBpY2tl cjogZnVuY3Rpb24oKSB7CisgICAgICBpZiAodGhpcy5oYXNfZGF0ZXBpY2tl cikgeworICAgICAgICB0aGlzLiRlbC5maW5kKCJpbnB1dCIpLmRhdGV0aW1l cGlja2VyKCdzaG93Jyk7CisgICAgICB9CisgICAgfSwKKyAgICB0ZW1wbGF0 ZTogXy50ZW1wbGF0ZShbCisgICAgICAnPGxhYmVsIGNsYXNzPSI8JT1CYWNr Zm9ybS5jb250cm9sTGFiZWxDbGFzc05hbWUlPiI+PCU9bGFiZWwlPjwvbGFi ZWw+JywKKyAgICAgICc8ZGl2IGNsYXNzPSJpbnB1dC1ncm91cCAgPCU9QmFj a2Zvcm0uY29udHJvbHNDbGFzc05hbWUlPiI+JywKKyAgICAgICcgPGlucHV0 IHR5cGU9InRleHQiIGNsYXNzPSI8JT1CYWNrZm9ybS5jb250cm9sQ2xhc3NO YW1lJT4gPCU9ZXh0cmFDbGFzc2VzLmpvaW4oXCcgXCcpJT4iIG5hbWU9Ijwl PW5hbWUlPiIgdmFsdWU9IjwlLXZhbHVlJT4iIHBsYWNlaG9sZGVyPSI8JS1w bGFjZWhvbGRlciU+IiA8JT1kaXNhYmxlZCA/ICJkaXNhYmxlZCIgOiAiIiU+ IDwlPXJlcXVpcmVkID8gInJlcXVpcmVkIiA6ICIiJT4gLz4nLAorICAgICAg JyA8c3BhbiBjbGFzcz0iaW5wdXQtZ3JvdXAtYWRkb24iPicsCisgICAgICAn ICA8c3BhbiBjbGFzcz0iZmEgZmEtY2FsZW5kYXIiPjwvc3Bhbj4nLAorICAg ICAgJyA8L3NwYW4+JywKKyAgICAgICcgPCUgaWYgKGhlbHBNZXNzYWdlICYm IGhlbHBNZXNzYWdlLmxlbmd0aCkgeyAlPicsCisgICAgICAnICA8c3BhbiBj bGFzcz0iPCU9QmFja2Zvcm0uaGVscE1lc3NhZ2VDbGFzc05hbWUlPiI+PCU9 aGVscE1lc3NhZ2UlPjwvc3Bhbj4nLAorICAgICAgJyA8JSB9ICU+JywKKyAg ICAgICc8L2Rpdj4nCisgICAgXS5qb2luKCJcbiIpKSwKKyAgICByZW5kZXI6 IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGZpZWxkID0gXy5kZWZhdWx0cyh0 aGlzLmZpZWxkLnRvSlNPTigpLCB0aGlzLmRlZmF1bHRzKSwKKyAgICAgICAg ICBhdHRyaWJ1dGVzID0gdGhpcy5tb2RlbC50b0pTT04oKSwKKyAgICAgICAg ICBhdHRyQXJyID0gZmllbGQubmFtZS5zcGxpdCgnLicpLAorICAgICAgICAg IG5hbWUgPSBhdHRyQXJyLnNoaWZ0KCksCisgICAgICAgICAgcGF0aCA9IGF0 dHJBcnIuam9pbignLicpLAorICAgICAgICAgIHJhd1ZhbHVlID0gdGhpcy5r ZXlQYXRoQWNjZXNzb3IoYXR0cmlidXRlc1tuYW1lXSwgcGF0aCksCisgICAg ICAgICAgZGF0YSA9IF8uZXh0ZW5kKGZpZWxkLCB7CisgICAgICAgICAgICBy YXdWYWx1ZTogcmF3VmFsdWUsCisgICAgICAgICAgICB2YWx1ZTogdGhpcy5m b3JtYXR0ZXIuZnJvbVJhdyhyYXdWYWx1ZSwgdGhpcy5tb2RlbCksCisgICAg ICAgICAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzLAorICAgICAgICAgICAg Zm9ybWF0dGVyOiB0aGlzLmZvcm1hdHRlcgorICAgICAgICAgIH0pLAorICAg ICAgICAgIGV2YWxGID0gZnVuY3Rpb24oZiwgbSkgeworICAgICAgICAgICAg cmV0dXJuIChfLmlzRnVuY3Rpb24oZikgPyAhIWYobSkgOiAhIWYpOworICAg ICAgICAgIH07CisKKyAgICAgIC8vIEV2YWx1YXRlIHRoZSBkaXNhYmxlZCwg dmlzaWJsZSwgYW5kIHJlcXVpcmVkIG9wdGlvbgorICAgICAgXy5leHRlbmQo ZGF0YSwgeworICAgICAgICBkaXNhYmxlZDogZXZhbEYoZGF0YS5kaXNhYmxl ZCwgdGhpcy5tb2RlbCksCisgICAgICAgIHZpc2libGU6ICBldmFsRihkYXRh LnZpc2libGUsIHRoaXMubW9kZWwpLAorICAgICAgICByZXF1aXJlZDogZXZh bEYoZGF0YS5yZXF1aXJlZCwgdGhpcy5tb2RlbCkKKyAgICAgIH0pOworICAg ICAgaWYgKCFkYXRhLmRpc2FibGVkKSB7CisgICAgICAgIGRhdGEucGxhY2Vo b2xkZXIgPSBkYXRhLnBsYWNlaG9sZGVyIHx8IHRoaXMuZGVmYXVsdHMucGxh Y2Vob2xkZXI7CisgICAgICB9CisKKyAgICAgIC8vIENsZWFuIHVwIGZpcnN0 CisgICAgICBpZiAodGhpcy5oYXNfZGF0ZXBpY2tlcikKKyAgICAgICAgdGhp cy4kZWwuZmluZCgiaW5wdXQiKS5kYXRldGltZXBpY2tlcignZGVzdHJveScp OworICAgICAgdGhpcy4kZWwuZW1wdHkoKTsKKyAgICAgIHRoaXMuJGVsLnJl bW92ZUNsYXNzKEJhY2tmb3JtLmhpZGRlbkNsYXNzbmFtZSk7CisKKworICAg ICAgdGhpcy4kZWwuaHRtbCh0aGlzLnRlbXBsYXRlKGRhdGEpKS5hZGRDbGFz cyhmaWVsZC5uYW1lKTsKKworICAgICAgaWYgKCFkYXRhLnZpc2libGUpIHsK KyAgICAgICAgdGhpcy5oYXNfZGF0ZXBpY2tlciA9IGZhbHNlOworICAgICAg ICB0aGlzLiRlbC5hZGRDbGFzcyhCYWNrZm9ybS5oaWRkZW5DbGFzc25hbWUp OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5oYXNfZGF0ZXBpY2tl ciA9IHRydWU7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAg dGhpcy4kZWwuZmluZCgiaW5wdXQiKS5maXJzdCgpLmRhdGV0aW1lcGlja2Vy KAorICAgICAgICAgIF8uZXh0ZW5kKHsKKyAgICAgICAgICAgIGtleUJpbmRz OiB7CisgICAgICAgICAgICAgIGVudGVyOiBmdW5jdGlvbih3aWRnZXQpIHsK KyAgICAgICAgICAgICAgICB2YXIgcGlja2VyID0gdGhpczsKKyAgICAgICAg ICAgICAgICBpZiAod2lkZ2V0KSB7CisgICAgICAgICAgICAgICAgICBzZXRU aW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBwaWNr ZXIudG9nZ2xlKCk7CisgICAgICAgICAgICAgICAgICAgIHNlbGYuJGVsLmZp bmQoJ2lucHV0JykuZmlyc3QoKS5ibHVyKCk7CisgICAgICAgICAgICAgICAg ICB9LCAxMCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHBpY2tlci50b2dn bGUoKTsgfSwgMTApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgfSwKKyAgICAgICAgICAgICAgdGFiOiBmdW5jdGlvbih3aWRnZXQpIHsK KyAgICAgICAgICAgICAgICBpZiAoIXdpZGdldCkgeworICAgICAgICAgICAg ICAgICAgLy8gYmx1ciB0aGUgaW5wdXQKKyAgICAgICAgICAgICAgICAgIHNl dFRpbWVvdXQoCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBz ZWxmLiRlbC5maW5kKCdpbnB1dCcpLmZpcnN0KCkuYmx1cigpOyB9LCAxMAor ICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgIH0sCisgICAgICAgICAgICAgIGVzY2FwZTogZnVuY3Rpb24o d2lkZ2V0KSB7CisgICAgICAgICAgICAgICAgaWYgKHdpZGdldCkgeworICAg ICAgICAgICAgICAgICAgdmFyIHBpY2tlciA9IHRoaXM7CisgICAgICAgICAg ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg ICAgICAgICBwaWNrZXIudG9nZ2xlKCk7CisgICAgICAgICAgICAgICAgICAg IHNlbGYuJGVsLmZpbmQoJ2lucHV0JykuZmlyc3QoKS5ibHVyKCk7CisgICAg ICAgICAgICAgICAgICB9LCAxMCk7CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgdGhp cy5kZWZhdWx0cy5vcHRpb25zLCB0aGlzLmZpZWxkLmdldCgib3B0aW9ucyIp LAorICAgICAgICAgIHsnZGF0ZSc6IGRhdGEudmFsdWV9KQorICAgICAgICAp OworICAgICAgfQorICAgICAgdGhpcy51cGRhdGVJbnZhbGlkKCk7CisKKyAg ICAgIHJldHVybiB0aGlzOworICAgIH0sCisgICAgY2xlYW51cDogZnVuY3Rp b24oKSB7CisgICAgICBpZiAodGhpcy5oYXNfZGF0ZXBpY2tlcikKKyAgICAg ICAgdGhpcy4kZWwuZmluZCgiaW5wdXQiKS5kYXRldGltZXBpY2tlcignZGVz dHJveScpOworICAgICAgdGhpcy4kZWwuZW1wdHkoKTsKKyAgICB9CisgIH0p OworCiAgIHJldHVybiBCYWNrZm9ybTsKIH0pKTsKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrZ3JpZC9iYWNrZ3JpZC5wZ2FkbWlu LmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2JhY2tncmlkL2JhY2tncmlk LnBnYWRtaW4uanMKaW5kZXggODZhMjYwYS4uYWY1OGMwNiAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2JhY2tncmlkL2JhY2tncmlkLnBn YWRtaW4uanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2JhY2tncmlk L2JhY2tncmlkLnBnYWRtaW4uanMKQEAgLTEsMTEgKzEsMTEgQEAKIChmdW5j dGlvbihyb290LCBmYWN0b3J5KSB7CiAgIC8vIFNldCB1cCBCYWNrZm9ybSBh cHByb3ByaWF0ZWx5IGZvciB0aGUgZW52aXJvbm1lbnQuIFN0YXJ0IHdpdGgg QU1ELgogICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBk ZWZpbmUuYW1kKSB7Ci0gICAgZGVmaW5lKFsndW5kZXJzY29yZScsICdqcXVl cnknLCAnYmFja2JvbmUnLCAnYmFja2Zvcm0nLCAnYmFja2dyaWQnLCAnYWxl cnRpZnknXSwKLSAgICAgZnVuY3Rpb24oXywgJCwgQmFja2JvbmUsIEJhY2tm b3JtLCBCYWNrZ3JpZCwgQWxlcnRpZnkpIHsKKyAgICBkZWZpbmUoWyd1bmRl cnNjb3JlJywgJ2pxdWVyeScsICdiYWNrYm9uZScsICdiYWNrZm9ybScsICdi YWNrZ3JpZCcsICdhbGVydGlmeScsICdtb21lbnQnXSwKKyAgICAgZnVuY3Rp b24oXywgJCwgQmFja2JvbmUsIEJhY2tmb3JtLCBCYWNrZ3JpZCwgQWxlcnRp ZnksIG1vbWVudCkgewogICAgICAgLy8gRXhwb3J0IGdsb2JhbCBldmVuIGlu IEFNRCBjYXNlIGluIGNhc2UgdGhpcyBzY3JpcHQgaXMgbG9hZGVkIHdpdGgK ICAgICAgIC8vIG90aGVycyB0aGF0IG1heSBzdGlsbCBleHBlY3QgYSBnbG9i YWwgQmFja2Zvcm0uCi0gICAgICByZXR1cm4gZmFjdG9yeShyb290LCBfLCAk LCBCYWNrYm9uZSwgQmFja2Zvcm0sIEFsZXJ0aWZ5KTsKKyAgICAgIHJldHVy biBmYWN0b3J5KHJvb3QsIF8sICQsIEJhY2tib25lLCBCYWNrZm9ybSwgQWxl cnRpZnksIG1vbWVudCk7CiAgICAgfSk7CiAKICAgLy8gTmV4dCBmb3IgTm9k ZS5qcyBvciBDb21tb25KUy4galF1ZXJ5IG1heSBub3QgYmUgbmVlZGVkIGFz IGEgbW9kdWxlLgpAQCAtMTUsMTMgKzE1LDE0IEBACiAgICAgICBCYWNrYm9u ZSA9IHJlcXVpcmUoJ2JhY2tib25lJykgfHwgcm9vdC5CYWNrYm9uZSwKICAg ICAgIEJhY2tmb3JtID0gcmVxdWlyZSgnYmFja2Zvcm0nKSB8fCByb290LkJh Y2tmb3JtOwogICAgICAgQWxlcnRpZnkgPSByZXF1aXJlKCdhbGVydGlmeScp IHx8IHJvb3QuQWxlcnRpZnk7Ci0gICAgZmFjdG9yeShyb290LCBfLCAkLCBC YWNrYm9uZSwgQmFja2Zvcm0sIEFsZXJ0aWZ5KTsKKyAgICAgIG1vbWVudCA9 IHJlcXVpcmUoJ21vbWVudCcpIHx8IHJvb3QubW9tZW50OworICAgIGZhY3Rv cnkocm9vdCwgXywgJCwgQmFja2JvbmUsIEJhY2tmb3JtLCBBbGVydGlmeSwg bW9tZW50KTsKIAogICAvLyBGaW5hbGx5LCBhcyBhIGJyb3dzZXIgZ2xvYmFs LgogICB9IGVsc2UgewogICAgIGZhY3Rvcnkocm9vdCwgcm9vdC5fLCAocm9v dC5qUXVlcnkgfHwgcm9vdC5aZXB0byB8fCByb290LmVuZGVyIHx8IHJvb3Qu JCksIHJvb3QuQmFja2JvbmUsIHJvb3QuQmFja2Zvcm0pOwogICB9Ci19ICh0 aGlzLCBmdW5jdGlvbihyb290LCBfLCAkLCBCYWNrYm9uZSwgQmFja2Zvcm0s IEFsZXJ0aWZ5KSB7Cit9ICh0aGlzLCBmdW5jdGlvbihyb290LCBfLCAkLCBC YWNrYm9uZSwgQmFja2Zvcm0sIEFsZXJ0aWZ5LCBtb21lbnQpIHsKICAgLyoK ICAgICAgKiBBZGQgbWVjaGFuaXNtIGluIGJhY2tncmlkIHRvIHJlbmRlciBk aWZmZXJlbnQgdHlwZXMgb2YgY2VsbHMgaW4KICAgICAgKiBzYW1lIGNvbHVt bjsKQEAgLTU0NCw3ICs1NDUsOSBAQAogICAgICAgaWYgKHRoaXMuJHNlbCkg ewogICAgICAgICB0aGlzLiRzZWwuZGF0YSgnc2VsZWN0MicpLm9uKCJrZXlw cmVzcyIsIGZ1bmN0aW9uKGV2KSB7CiAgICAgICAgICAgdmFyIHNlbGYgPSB0 aGlzOwotICAgICAgICAgIGlmIChldi53aGljaCA9PT0gOSkgeyAvLyBrZXlj b2RlIDkgaXMgZm9yIFRBQiBrZXkKKworICAgICAgICAgIC8vIGtleWNvZGUg OSBpcyBmb3IgVEFCIGtleQorICAgICAgICAgIGlmIChldi53aGljaCA9PT0g OSAmJiBzZWxmLmlzT3BlbigpKSB7CiAgICAgICAgICAgICBzZWxmLnRyaWdn ZXIoJ3Jlc3VsdHM6c2VsZWN0Jywge30pOwogICAgICAgICAgICAgZXYucHJl dmVudERlZmF1bHQoKTsKICAgICAgICAgICB9CkBAIC05NzAsNiArOTczLDE5 MyBAQAogICAgICAgICBmb3JtYXR0ZXI6IEpTT05CQ2VsbEZvcm1hdHRlcgog ICAgICAgfSk7CiAKKyAgdmFyIERhdGVwaWNrZXJDZWxsID0gQmFja2dyaWQu RXh0ZW5zaW9uLkRhdGVwaWNrZXJDZWxsID0gQmFja2dyaWQuQ2VsbC5leHRl bmQoeworICAgIGVkaXRvcjogRGF0ZXBpY2tlckNlbGxFZGl0b3IKKyAgfSk7 CisKKyAgdmFyIERhdGVwaWNrZXJDZWxsRWRpdG9yID0gQmFja2dyaWQuSW5w dXRDZWxsRWRpdG9yLmV4dGVuZCh7CisgICAgZXZlbnRzOnt9LAorICAgIGlu aXRpYWxpemU6ZnVuY3Rpb24oKSB7CisgICAgICBCYWNrZ3JpZC5JbnB1dENl bGxFZGl0b3IucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJn dW1lbnRzKTsKKyAgICAgIHZhciBpbnB1dCA9IHRoaXM7CisgICAgICAkKHRo aXMuZWwpLnByb3AoJ3JlYWRvbmx5JywgdHJ1ZSk7CisgICAgICAkKHRoaXMu ZWwpLmRhdGVwaWNrZXIoeworICAgICAgICBvbkNsb3NlOiBmdW5jdGlvbihu ZXdWYWx1ZSl7CisgICAgICAgICAgdmFyIGNvbW1hbmQgPSBuZXcgQmFja2dy aWQuQ29tbWFuZCh7fSk7CisgICAgICAgICAgaW5wdXQubW9kZWwuc2V0KGlu cHV0LmNvbHVtbi5nZXQoIm5hbWUiKSwgbmV3VmFsdWUpOworICAgICAgICAg IGlucHV0Lm1vZGVsLnRyaWdnZXIoCisgICAgICAgICAgICAiYmFja2dyaWQ6 ZWRpdGVkIiwgaW5wdXQubW9kZWwsIGlucHV0LmNvbHVtbiwgY29tbWFuZAor ICAgICAgICAgICk7CisgICAgICAgICAgY29tbWFuZCA9IGlucHV0ID0gbnVs bDsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAgfQorICB9KTsKKworICAv LyBSZWZlcmVuY2U6CisgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93eXVlbmhv L2JhY2tncmlkLW1vbWVudC1jZWxsL2Jsb2IvbWFzdGVyL2JhY2tncmlkLW1v bWVudC1jZWxsLmpzCisgIC8qKgorICAgTW9tZW50Rm9ybWF0dGVyIGNvbnZl cnRzIGJpLWRpcmVjdGlvbmFsbHkgYW55IGRhdGV0aW1lIHZhbHVlcyBpbiBh bnkgZm9ybWF0CisgICBzdXBwb3J0ZWQgYnkgW21vbWVudCgpXShodHRwOi8v bW9tZW50anMuY29tL2RvY3MvIy9wYXJzaW5nLykgdG8gYW55CisgICBkYXRl dGltZSBmb3JtYXQKKyAgIFttb21lbnQuZm4uZm9ybWF0KCldKGh0dHA6Ly9t b21lbnRqcy5jb20vZG9jcy8jL2Rpc3BsYXlpbmcvZm9ybWF0LykKKyAgIHN1 cHBvcnRzLgorICAgQGNsYXNzIEJhY2tncmlkLkV4dGVuc2lvbi5Nb21lbnRG b3JtYXR0ZXIKKyAgIEBleHRlbmRzIEJhY2tncmlkLkNlbGxGb3JtYXR0ZXIK KyAgIEBjb25zdHJ1Y3RvcgorICAgKi8KKyAgdmFyIE1vbWVudEZvcm1hdHRl ciA9IEJhY2tncmlkLkV4dGVuc2lvbi5Nb21lbnRGb3JtYXR0ZXIgPSBmdW5j dGlvbiAob3B0aW9ucykgeworICAgIF8uZXh0ZW5kKHRoaXMsIHRoaXMuZGVm YXVsdHMsIG9wdGlvbnMpOworICB9OworCisgIE1vbWVudEZvcm1hdHRlci5w cm90b3R5cGUgPSBuZXcgQmFja2dyaWQuQ2VsbEZvcm1hdHRlcjsKKyAgXy5l eHRlbmQoTW9tZW50Rm9ybWF0dGVyLnByb3RvdHlwZSwgeworICAgIC8qKgor ICAgICAgIEBjZmcge09iamVjdH0gb3B0aW9ucworICAgICAgIEBjZmcge2Jv b2xlYW59IFtvcHRpb25zLm1vZGVsSW5Vbml4T2Zmc2V0PWZhbHNlXSBXaGV0 aGVyIHRoZSBtb2RlbCB2YWx1ZXMKKyAgICAgICBzaG91bGQgYmUgcmVhZC93 cml0dGVuIGFzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlIFVO SVggRXBvY2guCisgICAgICAgQGNmZyB7Ym9vbGVhbn0gW29wdGlvbnMubW9k ZWxJblVuaXhUaW1lc3RhbXA9ZmFsc2VdIFdoZXRoZXIgdGhlIG1vZGVsCisg ICAgICAgdmFsdWVzIHNob3VsZCBiZSByZWFkL3dyaXR0ZW4gYXMgdGhlIG51 bWJlciBvZiBzZWNvbmRzIHNpbmNlIFVOSVggRXBvY2guCisgICAgICAgQGNm ZyB7Ym9vbGVhbn0gW29wdGlvbnMubW9kZWxJblVUQz10cnVlXSBXaGV0aGVy IHRoZSBtb2RlbCB2YWx1ZXMgc2hvdWxkCisgICAgICAgYmUgcmVhZC93cml0 dGVuIGluIFVUQyBtb2RlIG9yIGxvY2FsIG1vZGUuCisgICAgICAgQGNmZyB7 c3RyaW5nfSBbb3B0aW9ucy5tb2RlbExhbmc9bW9tZW50LmxvY2FsZSgpIG1v bWVudD49Mi44LjAgfAorICAgICAgIG1vbWVudC5sYW5nKCkgbW9tZW50PDIu OC4wXSBUaGUgbG9jYWxlIHRoZSBtb2RlbCB2YWx1ZXMgc2hvdWxkIGJlCisg ICAgICAgcmVhZC93cml0dGVuIGluLgorICAgICAgIEBjZmcge3N0cmluZ30g W29wdGlvbnMubW9kZWxGb3JtYXQ9bW9tZW50LmRlZmF1bHRGb3JtYXRdIFRo ZSBmb3JtYXQgdGhpcworICAgICAgIG1vbWVudCBmb3JtYXR0ZXIgc2hvdWxk IHVzZSB0byByZWFkL3dyaXRlIG1vZGVsIHZhbHVlcy4gT25seSBtZWFuaW5n ZnVsIGlmCisgICAgICAgdGhlIHZhbHVlcyBhcmUgc3RyaW5ncy4KKyAgICAg ICBAY2ZnIHtib29sZWFufSBbb3B0aW9ucy5kaXNwbGF5SW5Vbml4T2Zmc2V0 PWZhbHNlXSBXaGV0aGVyIHRoZSBkaXNwbGF5CisgICAgICAgdmFsdWVzIHNo b3VsZCBiZSByZWFkL3dyaXR0ZW4gYXMgdGhlIG51bWJlciBvZiBtaWxsaXNl Y29uZHMgc2luY2UgVU5JWAorICAgICAgIEVwb2NoLgorICAgICAgIEBjZmcg e2Jvb2xlYW59IFtvcHRpb25zLmRpc3BsYXlJblVuaXhUaW1lc3RhbXA9ZmFs c2VdIFdoZXRoZXIgdGhlIGRpc3BsYXkKKyAgICAgICB2YWx1ZXMgc2hvdWxk IGJlIHJlYWQvd3JpdHRlbiBhcyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgc2lu Y2UgVU5JWCBFcG9jaC4KKyAgICAgICBAY2ZnIHtib29sZWFufSBbb3B0aW9u cy5kaXNwbGF5SW5VVEM9dHJ1ZV0gV2hldGhlciB0aGUgZGlzcGxheSB2YWx1 ZXMKKyAgICAgICBzaG91bGQgYmUgcmVhZC93cml0dGVuIGluIFVUQyBtb2Rl IG9yIGxvY2FsIG1vZGUuCisgICAgICAgQGNmZyB7c3RyaW5nfSBbb3B0aW9u cy5kaXNwbGF5TGFuZz1tb21lbnQubG9jYWxlKCkgbW9tZW50Pj0yLjguMCB8 CisgICAgICAgbW9tZW50LmxhbmcoKSBtb21lbnQ8Mi44LjBdIFRoZSBsb2Nh bGUgdGhlIGRpc3BsYXkgdmFsdWVzIHNob3VsZCBiZQorICAgICAgIHJlYWQv d3JpdHRlbiBpbi4KKyAgICAgICBAY2ZnIHtzdHJpbmd9IFtvcHRpb25zLmRp c3BsYXlGb3JtYXQ9bW9tZW50LmRlZmF1bHRGb3JtYXRdIFRoZSBmb3JtYXQK KyAgICAgICB0aGlzIG1vbWVudCBmb3JtYXR0ZXIgc2hvdWxkIHVzZSB0byBy ZWFkL3dyaXRlIGRpc2xheSB2YWx1ZXMuCisgICAgICAgKi8KKyAgICBkZWZh dWx0czogeworICAgICAgbW9kZWxJblVuaXhPZmZzZXQ6IGZhbHNlLAorICAg ICAgbW9kZWxJblVuaXhUaW1lc3RhbXA6IGZhbHNlLAorICAgICAgbW9kZWxJ blVUQzogdHJ1ZSwKKyAgICAgIG1vZGVsTGFuZzogbW9tZW50LmxvY2FsZSgp LAorICAgICAgbW9kZWxGb3JtYXQ6IG1vbWVudC5kZWZhdWx0Rm9ybWF0LAor ICAgICAgZGlzcGxheUluVW5peE9mZnNldDogZmFsc2UsCisgICAgICBkaXNw bGF5SW5Vbml4VGltZXN0YW1wOiBmYWxzZSwKKyAgICAgIGRpc3BsYXlJblVU QzogdHJ1ZSwKKyAgICAgIGRpc3BsYXlMYW5nOiBtb21lbnQubG9jYWxlKCks CisgICAgICBkaXNwbGF5Rm9ybWF0OiBtb21lbnQuZGVmYXVsdEZvcm1hdCwK KyAgICAgIGFsbG93RW1wdHk6IGZhbHNlCisgICAgfSwKKworICAgIC8qKgor ICAgICAgIENvbnZlcnRzIGRhdGV0aW1lIHZhbHVlcyBmcm9tIHRoZSBtb2Rl bCBmb3IgZGlzcGxheS4KKyAgICAgICBAbWVtYmVyIEJhY2tncmlkLkV4dGVu c2lvbi5Nb21lbnRGb3JtYXR0ZXIKKyAgICAgICBAcGFyYW0geyp9IHJhd0Rh dGEKKyAgICAgICBAcmV0dXJuIHtzdHJpbmd9CisgICAgICAgKi8KKyAgICBm cm9tUmF3OiBmdW5jdGlvbiAocmF3RGF0YSkgeworICAgICAgaWYgKHJhd0Rh dGEgPT0gbnVsbCkgcmV0dXJuICcnOworCisgICAgICB2YXIgbSA9IHRoaXMu bW9kZWxJblVuaXhPZmZzZXQgPyBtb21lbnQocmF3RGF0YSkgOgorICAgICAg ICB0aGlzLm1vZGVsSW5Vbml4VGltZXN0YW1wID8gbW9tZW50LnVuaXgocmF3 RGF0YSkgOgorICAgICAgICB0aGlzLm1vZGVsSW5VVEMgPworICAgICAgICBt b21lbnQudXRjKHJhd0RhdGEsIHRoaXMubW9kZWxGb3JtYXQsIHRoaXMubW9k ZWxMYW5nKSA6CisgICAgICAgIG1vbWVudChyYXdEYXRhLCB0aGlzLm1vZGVs Rm9ybWF0LCB0aGlzLm1vZGVsTGFuZyk7CisKKyAgICAgIGlmICh0aGlzLmRp c3BsYXlJblVuaXhPZmZzZXQpIHJldHVybiArbTsKKworICAgICAgaWYgKHRo aXMuZGlzcGxheUluVW5peFRpbWVzdGFtcCkgcmV0dXJuIG0udW5peCgpOwor CisgICAgICBpZiAodGhpcy5kaXNwbGF5TGFuZykgbS5sb2NhbGUodGhpcy5k aXNwbGF5TGFuZyk7CisKKyAgICAgIGlmICh0aGlzLmRpc3BsYXlJblVUQykg bS51dGMoKTsgZWxzZSBtLmxvY2FsKCk7CisKKyAgICAgIGlmICh0aGlzLmRp c3BsYXlGb3JtYXQgIT0gbW9tZW50LmRlZmF1bHRGb3JtYXQpIHsKKyAgICAg ICAgcmV0dXJuIG0uZm9ybWF0KHRoaXMuZGlzcGxheUZvcm1hdCk7CisgICAg ICB9CisKKyAgICAgIHJldHVybiBtLmZvcm1hdCgpOworICAgIH0sCisKKyAg ICAvKioKKyAgICAgICBDb252ZXJ0cyBkYXRldGltZSB2YWx1ZXMgZnJvbSB1 c2VyIGlucHV0IHRvIG1vZGVsIHZhbHVlcy4KKyAgICAgICBAbWVtYmVyIEJh Y2tncmlkLkV4dGVuc2lvbi5Nb21lbnRGb3JtYXR0ZXIKKyAgICAgICBAcGFy YW0ge3N0cmluZ30gZm9ybWF0dGVkRGF0YQorICAgICAgIEByZXR1cm4ge3N0 cmluZ30KKyAgICAgICAqLworICAgIHRvUmF3OiBmdW5jdGlvbiAoZm9ybWF0 dGVkRGF0YSkgeworCisgICAgICB2YXIgbSA9IHRoaXMuZGlzcGxheUluVW5p eE9mZnNldCA/IG1vbWVudCgrZm9ybWF0dGVkRGF0YSkgOgorICAgICAgICB0 aGlzLmRpc3BsYXlJblVuaXhUaW1lc3RhbXAgPyBtb21lbnQudW5peCgrZm9y bWF0dGVkRGF0YSkgOgorICAgICAgICB0aGlzLmRpc3BsYXlJblVUQyA/Cisg ICAgICAgIG1vbWVudC51dGMoZm9ybWF0dGVkRGF0YSwgdGhpcy5kaXNwbGF5 Rm9ybWF0LCB0aGlzLmRpc3BsYXlMYW5nKSA6CisgICAgICAgIG1vbWVudChm b3JtYXR0ZWREYXRhLCB0aGlzLmRpc3BsYXlGb3JtYXQsIHRoaXMuZGlzcGxh eUxhbmcpOworCisgICAgICBpZiAoIW0gfHwgIW0uaXNWYWxpZCgpKSByZXR1 cm4gKHRoaXMuYWxsb3dFbXB0eSAmJiBmb3JtYXR0ZWREYXRhID09PSAnJykg PyBudWxsIDogdW5kZWZpbmVkOworCisgICAgICBpZiAodGhpcy5tb2RlbElu VW5peE9mZnNldCkgcmV0dXJuICttOworCisgICAgICBpZiAodGhpcy5tb2Rl bEluVW5peFRpbWVzdGFtcCkgcmV0dXJuIG0udW5peCgpOworCisgICAgICBp ZiAodGhpcy5tb2RlbExhbmcpIG0ubG9jYWxlKHRoaXMubW9kZWxMYW5nKTsK KworICAgICAgaWYgKHRoaXMubW9kZWxJblVUQykgbS51dGMoKTsgZWxzZSBt LmxvY2FsKCkKKworICAgICAgaWYgKHRoaXMubW9kZWxGb3JtYXQgIT0gbW9t ZW50LmRlZmF1bHRGb3JtYXQpIHsKKyAgICAgICAgcmV0dXJuIG0uZm9ybWF0 KHRoaXMubW9kZWxGb3JtYXQpOworICAgICAgfQorCisgICAgICByZXR1cm4g bS5mb3JtYXQoKTsKKyAgICB9CisgIH0pOworCisgIHZhciBNb21lbnRDZWxs ID0gQmFja2dyaWQuRXh0ZW5zaW9uLk1vbWVudENlbGwgPSBCYWNrZ3JpZC5D ZWxsLmV4dGVuZCh7CisKKyAgICBlZGl0b3I6IEJhY2tncmlkLklucHV0Q2Vs bEVkaXRvciwKKworICAgIC8qKiBAcHJvcGVydHkgKi8KKyAgICBjbGFzc05h bWU6ICJkYXRldGltZS1jZWxsIiwKKworICAgIC8qKiBAcHJvcGVydHkge0Jh Y2tncmlkLkNlbGxGb3JtYXR0ZXJ9IFtmb3JtYXR0ZXI9QmFja2dyaWQuRXh0 ZW5zaW9uLk1vbWVudEZvcm1hdHRlcl0gKi8KKyAgICBmb3JtYXR0ZXI6IE1v bWVudEZvcm1hdHRlciwKKworICAgIC8qKgorICAgICAgIEluaXRpYWxpemVy LiBBY2NlcHQgQmFja2dyaWQuRXh0ZW5zaW9uLk1vbWVudEZvcm1hdHRlci5v cHRpb25zIGFuZAorICAgICAgIEJhY2tncmlkLkNlbGwuaW5pdGlhbGl6ZSBy ZXF1aXJlZCBwYXJhbWV0ZXJzLgorICAgICAqLworICAgIGluaXRpYWxpemU6 IGZ1bmN0aW9uIChvcHRpb25zKSB7CisKKyAgICAgIE1vbWVudENlbGwuX19z dXBlcl9fLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKwor ICAgICAgdmFyIGZvcm1hdHRlckRlZmF1bHRzID0gTW9tZW50Rm9ybWF0dGVy LnByb3RvdHlwZS5kZWZhdWx0czsKKyAgICAgIHZhciBmb3JtYXR0ZXJEZWZh dWx0S2V5cyA9IF8ua2V5cyhmb3JtYXR0ZXJEZWZhdWx0cyk7CisgICAgICB2 YXIgY2xhc3NBdHRycyA9IF8ucGljayh0aGlzLCBmb3JtYXR0ZXJEZWZhdWx0 S2V5cyk7CisgICAgICB2YXIgZm9ybWF0dGVyT3B0aW9ucyA9IF8ucGljayhv cHRpb25zLCBmb3JtYXR0ZXJEZWZhdWx0S2V5cyk7CisgICAgICB2YXIgY29s dW1uc0F0dHJzID0gXy5waWNrKHRoaXMuY29sdW1uLnRvSlNPTigpLCBmb3Jt YXR0ZXJEZWZhdWx0S2V5cyk7CisKKyAgICAgIC8vIFByaW9yaXR5IG9mIHRo ZSBvcHRpb25zIGZvciB0aGUgZm9ybWF0dGVyLCBmcm9tIGhpZ2hlc3QgdG8g bG93ZXJlc3QKKyAgICAgIC8vIDEuIE1vbWVudENlbGwgaW5zdGFuY2Ugb3B0 aW9ucworICAgICAgLy8gMi4gTW9tZW50Q2VsbCBjbGFzcyBhdHRyaWJ1dGVz CisgICAgICAvLyAzLiBNb21lbnRGb3JtYXR0ZXIgZGVmYXVsdHMKKworICAg ICAgLy8gdGhpcy5mb3JtYXR0ZXIgd2lsbCBoYXZlIGJlZW4gaW5zdGFudGlh dGVkIG5vdworICAgICAgXy5leHRlbmQodGhpcy5mb3JtYXR0ZXIsIGZvcm1h dHRlckRlZmF1bHRzLCBjbGFzc0F0dHJzLCBmb3JtYXR0ZXJPcHRpb25zLCBj b2x1bW5zQXR0cnMpOworCisgICAgICB0aGlzLmVkaXRvciA9IHRoaXMuZWRp dG9yLmV4dGVuZCh7CisgICAgICAgIGF0dHJpYnV0ZXM6IF8uZXh0ZW5kKHt9 LCB0aGlzLmVkaXRvci5wcm90b3R5cGUuYXR0cmlidXRlcyB8fCB0aGlzLmVk aXRvci5hdHRyaWJ1dGVzIHx8IHt9LCB7CisgICAgICAgICAgcGxhY2Vob2xk ZXI6IHRoaXMuZm9ybWF0dGVyLmRpc3BsYXlGb3JtYXQKKyAgICAgICAgfSks CisgICAgICAgIG9wdGlvbnM6IHRoaXMuY29sdW1uLmdldCgnb3B0aW9ucycp CisgICAgICB9KTsKKyAgICB9CisgIH0pOworCisgIF8uZXh0ZW5kKE1vbWVu dENlbGwucHJvdG90eXBlLCBNb21lbnRGb3JtYXR0ZXIucHJvdG90eXBlLmRl ZmF1bHRzKTsKKwogICByZXR1cm4gQmFja2dyaWQ7CiAKIH0pKTsKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9ib290c3RyYXAtZGF0ZXRp bWVwaWNrZXIuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYm9vdHN0cmFw LWRhdGV0aW1lcGlja2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjVkMmNjNzEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9zdGF0aWMvanMvYm9vdHN0cmFwLWRhdGV0aW1lcGlja2VyLmpzCkBA IC0wLDAgKzEsMjYyMyBAQAorLyohIHZlcnNpb24gOiA0LjE3LjQyCisgPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CisgYm9vdHN0cmFwLWRhdGV0aW1lanMKKyBodHRwczovL2dp dGh1Yi5jb20vRW9uYXNkYW4vYm9vdHN0cmFwLWRhdGV0aW1lcGlja2VyCisg Q29weXJpZ2h0IChjKSAyMDE1IEpvbmF0aGFuIFBldGVyc29uCisgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CisgKi8KKy8qCisgVGhlIE1JVCBMaWNlbnNlIChNSVQpCisKKyBD b3B5cmlnaHQgKGMpIDIwMTUgSm9uYXRoYW4gUGV0ZXJzb24KKworIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m dHdhcmUiKSwgdG8gZGVhbAorIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSBy aWdodHMKKyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo b20gdGhlIFNvZnR3YXJlIGlzCisgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IHNoYWxsIGJlIGluY2x1ZGVkIGluCisgYWxsIGNvcGllcyBvciBzdWJzdGFu dGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKKyBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB TlkgS0lORCwgRVhQUkVTUyBPUgorIElNUExJRUQsIElOQ0xVRElORyBCVVQg Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAorIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO T05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorIEFVVEhP UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xB SU0sIERBTUFHRVMgT1IgT1RIRVIKKyBMSUFCSUxJVFksIFdIRVRIRVIgSU4g QU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ U0lORyBGUk9NLAorIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KKyBU SEUgU09GVFdBUkUuCisgKi8KKy8qZ2xvYmFsIGRlZmluZTpmYWxzZSAqLwor LypnbG9iYWwgZXhwb3J0czpmYWxzZSAqLworLypnbG9iYWwgcmVxdWlyZTpm YWxzZSAqLworLypnbG9iYWwgalF1ZXJ5OmZhbHNlICovCisvKmdsb2JhbCBt b21lbnQ6ZmFsc2UgKi8KKyhmdW5jdGlvbiAoZmFjdG9yeSkgeworICAgICd1 c2Ugc3RyaWN0JzsKKyAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0 aW9uJyAmJiBkZWZpbmUuYW1kKSB7CisgICAgICAgIC8vIEFNRCBpcyB1c2Vk IC0gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIG1vZHVsZS4KKyAgICAgICAg ZGVmaW5lKFsnanF1ZXJ5JywgJ21vbWVudCddLCBmYWN0b3J5KTsKKyAgICB9 IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JykgeworICAg ICAgICBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZSgnanF1ZXJ5 JyksIHJlcXVpcmUoJ21vbWVudCcpKTsKKyAgICB9IGVsc2UgeworICAgICAg ICAvLyBOZWl0aGVyIEFNRCBub3IgQ29tbW9uSlMgdXNlZC4gVXNlIGdsb2Jh bCB2YXJpYWJsZXMuCisgICAgICAgIGlmICh0eXBlb2YgalF1ZXJ5ID09PSAn dW5kZWZpbmVkJykgeworICAgICAgICAgICAgdGhyb3cgJ2Jvb3RzdHJhcC1k YXRldGltZXBpY2tlciByZXF1aXJlcyBqUXVlcnkgdG8gYmUgbG9hZGVkIGZp cnN0JzsKKyAgICAgICAgfQorICAgICAgICBpZiAodHlwZW9mIG1vbWVudCA9 PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgICAgIHRocm93ICdib290c3Ry YXAtZGF0ZXRpbWVwaWNrZXIgcmVxdWlyZXMgTW9tZW50LmpzIHRvIGJlIGxv YWRlZCBmaXJzdCc7CisgICAgICAgIH0KKyAgICAgICAgZmFjdG9yeShqUXVl cnksIG1vbWVudCk7CisgICAgfQorfShmdW5jdGlvbiAoJCwgbW9tZW50KSB7 CisgICAgJ3VzZSBzdHJpY3QnOworICAgIGlmICghbW9tZW50KSB7CisgICAg ICAgIHRocm93IG5ldyBFcnJvcignYm9vdHN0cmFwLWRhdGV0aW1lcGlja2Vy IHJlcXVpcmVzIE1vbWVudC5qcyB0byBiZSBsb2FkZWQgZmlyc3QnKTsKKyAg ICB9CisKKyAgICB2YXIgZGF0ZVRpbWVQaWNrZXIgPSBmdW5jdGlvbiAoZWxl bWVudCwgb3B0aW9ucykgeworICAgICAgICB2YXIgcGlja2VyID0ge30sCisg ICAgICAgICAgICBkYXRlLAorICAgICAgICAgICAgdmlld0RhdGUsCisgICAg ICAgICAgICB1bnNldCA9IHRydWUsCisgICAgICAgICAgICBpbnB1dCwKKyAg ICAgICAgICAgIGNvbXBvbmVudCA9IGZhbHNlLAorICAgICAgICAgICAgd2lk Z2V0ID0gZmFsc2UsCisgICAgICAgICAgICB1c2UyNEhvdXJzLAorICAgICAg ICAgICAgbWluVmlld01vZGVOdW1iZXIgPSAwLAorICAgICAgICAgICAgYWN0 dWFsRm9ybWF0LAorICAgICAgICAgICAgcGFyc2VGb3JtYXRzLAorICAgICAg ICAgICAgY3VycmVudFZpZXdNb2RlLAorICAgICAgICAgICAgZGF0ZVBpY2tl ck1vZGVzID0gWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgICAgY2xzTmFtZTogJ2RheXMnLAorICAgICAgICAgICAgICAgICAgICBu YXZGbmM6ICdNJywKKyAgICAgICAgICAgICAgICAgICAgbmF2U3RlcDogMQor ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgICBjbHNOYW1lOiAnbW9udGhzJywKKyAgICAgICAgICAg ICAgICAgICAgbmF2Rm5jOiAneScsCisgICAgICAgICAgICAgICAgICAgIG5h dlN0ZXA6IDEKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgICAgY2xzTmFtZTogJ3llYXJzJywKKyAg ICAgICAgICAgICAgICAgICAgbmF2Rm5jOiAneScsCisgICAgICAgICAgICAg ICAgICAgIG5hdlN0ZXA6IDEwCisgICAgICAgICAgICAgICAgfSwKKyAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNsc05hbWU6ICdk ZWNhZGVzJywKKyAgICAgICAgICAgICAgICAgICAgbmF2Rm5jOiAneScsCisg ICAgICAgICAgICAgICAgICAgIG5hdlN0ZXA6IDEwMAorICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICB2aWV3TW9kZXMg PSBbJ2RheXMnLCAnbW9udGhzJywgJ3llYXJzJywgJ2RlY2FkZXMnXSwKKyAg ICAgICAgICAgIHZlcnRpY2FsTW9kZXMgPSBbJ3RvcCcsICdib3R0b20nLCAn YXV0byddLAorICAgICAgICAgICAgaG9yaXpvbnRhbE1vZGVzID0gWydsZWZ0 JywgJ3JpZ2h0JywgJ2F1dG8nXSwKKyAgICAgICAgICAgIHRvb2xiYXJQbGFj ZW1lbnRzID0gWydkZWZhdWx0JywgJ3RvcCcsICdib3R0b20nXSwKKyAgICAg ICAgICAgIGtleU1hcCA9IHsKKyAgICAgICAgICAgICAgICAndXAnOiAzOCwK KyAgICAgICAgICAgICAgICAzODogJ3VwJywKKyAgICAgICAgICAgICAgICAn ZG93bic6IDQwLAorICAgICAgICAgICAgICAgIDQwOiAnZG93bicsCisgICAg ICAgICAgICAgICAgJ2xlZnQnOiAzNywKKyAgICAgICAgICAgICAgICAzNzog J2xlZnQnLAorICAgICAgICAgICAgICAgICdyaWdodCc6IDM5LAorICAgICAg ICAgICAgICAgIDM5OiAncmlnaHQnLAorICAgICAgICAgICAgICAgICd0YWIn OiA5LAorICAgICAgICAgICAgICAgIDk6ICd0YWInLAorICAgICAgICAgICAg ICAgICdlc2NhcGUnOiAyNywKKyAgICAgICAgICAgICAgICAyNzogJ2VzY2Fw ZScsCisgICAgICAgICAgICAgICAgJ2VudGVyJzogMTMsCisgICAgICAgICAg ICAgICAgMTM6ICdlbnRlcicsCisgICAgICAgICAgICAgICAgJ3BhZ2VVcCc6 IDMzLAorICAgICAgICAgICAgICAgIDMzOiAncGFnZVVwJywKKyAgICAgICAg ICAgICAgICAncGFnZURvd24nOiAzNCwKKyAgICAgICAgICAgICAgICAzNDog J3BhZ2VEb3duJywKKyAgICAgICAgICAgICAgICAnc2hpZnQnOiAxNiwKKyAg ICAgICAgICAgICAgICAxNjogJ3NoaWZ0JywKKyAgICAgICAgICAgICAgICAn Y29udHJvbCc6IDE3LAorICAgICAgICAgICAgICAgIDE3OiAnY29udHJvbCcs CisgICAgICAgICAgICAgICAgJ3NwYWNlJzogMzIsCisgICAgICAgICAgICAg ICAgMzI6ICdzcGFjZScsCisgICAgICAgICAgICAgICAgJ3QnOiA4NCwKKyAg ICAgICAgICAgICAgICA4NDogJ3QnLAorICAgICAgICAgICAgICAgICdkZWxl dGUnOiA0NiwKKyAgICAgICAgICAgICAgICA0NjogJ2RlbGV0ZScKKyAgICAg ICAgICAgIH0sCisgICAgICAgICAgICBrZXlTdGF0ZSA9IHt9LAorCisgICAg ICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiBQcml2YXRlIGZ1bmN0 aW9ucworICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAgICAgICAgICAgaGFz VGltZVpvbmUgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0 dXJuIG1vbWVudC50eiAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbnMudGltZVpv bmUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLnRpbWVab25lICE9PSBudWxs ICYmIG9wdGlvbnMudGltZVpvbmUgIT09ICcnOworICAgICAgICAgICAgfSwK KworICAgICAgICAgICAgZ2V0TW9tZW50ID0gZnVuY3Rpb24gKGQpIHsKKyAg ICAgICAgICAgICAgICB2YXIgcmV0dXJuTW9tZW50OworCisgICAgICAgICAg ICAgICAgaWYgKGQgPT09IHVuZGVmaW5lZCB8fCBkID09PSBudWxsKSB7Cisg ICAgICAgICAgICAgICAgICAgIHJldHVybk1vbWVudCA9IG1vbWVudCgpOyAv L1RPRE8gc2hvdWxkIHRoaXMgdXNlIGZvcm1hdD8gYW5kIGxvY2FsZT8KKyAg ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGhhc1RpbWVab25lKCkpIHsgLy8g VGhlcmUgaXMgYSBzdHJpbmcgdG8gcGFyc2UgYW5kIGEgZGVmYXVsdCB0aW1l IHpvbmUKKyAgICAgICAgICAgICAgICAgICAgLy8gcGFyc2Ugd2l0aCB0aGUg dHogZnVuY3Rpb24gd2hpY2ggdGFrZXMgYSBkZWZhdWx0IHRpbWUgem9uZSBp ZiBpdCBpcyBub3QgaW4gdGhlIGZvcm1hdCBzdHJpbmcKKyAgICAgICAgICAg ICAgICAgICAgcmV0dXJuTW9tZW50ID0gbW9tZW50LnR6KGQsIHBhcnNlRm9y bWF0cywgb3B0aW9ucy51c2VTdHJpY3QsIG9wdGlvbnMudGltZVpvbmUpOwor ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg IHJldHVybk1vbWVudCA9IG1vbWVudChkLCBwYXJzZUZvcm1hdHMsIG9wdGlv bnMudXNlU3RyaWN0KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg ICAgICAgICBpZiAoaGFzVGltZVpvbmUoKSkgeworICAgICAgICAgICAgICAg ICAgICByZXR1cm5Nb21lbnQudHoob3B0aW9ucy50aW1lWm9uZSk7CisgICAg ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHJldHVy bk1vbWVudDsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIGlzRW5h YmxlZCA9IGZ1bmN0aW9uIChncmFudWxhcml0eSkgeworICAgICAgICAgICAg ICAgIGlmICh0eXBlb2YgZ3JhbnVsYXJpdHkgIT09ICdzdHJpbmcnIHx8IGdy YW51bGFyaXR5Lmxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAgICAgICAgICAg dGhyb3cgbmV3IFR5cGVFcnJvcignaXNFbmFibGVkIGV4cGVjdHMgYSBzaW5n bGUgY2hhcmFjdGVyIHN0cmluZyBwYXJhbWV0ZXInKTsKKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgc3dpdGNoIChncmFudWxhcml0eSkg eworICAgICAgICAgICAgICAgICAgICBjYXNlICd5JzoKKyAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBhY3R1YWxGb3JtYXQuaW5kZXhPZignWScp ICE9PSAtMTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnTSc6CisgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWN0dWFsRm9ybWF0LmluZGV4 T2YoJ00nKSAhPT0gLTE7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Qn OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjdHVhbEZvcm1h dC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2QnKSAhPT0gLTE7CisgICAgICAg ICAgICAgICAgICAgIGNhc2UgJ2gnOgorICAgICAgICAgICAgICAgICAgICBj YXNlICdIJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY3R1 YWxGb3JtYXQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdoJykgIT09IC0xOwor ICAgICAgICAgICAgICAgICAgICBjYXNlICdtJzoKKyAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBhY3R1YWxGb3JtYXQuaW5kZXhPZignbScpICE9 PSAtMTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAncyc6CisgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gYWN0dWFsRm9ybWF0LmluZGV4T2Yo J3MnKSAhPT0gLTE7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgaGFz VGltZSA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g KGlzRW5hYmxlZCgnaCcpIHx8IGlzRW5hYmxlZCgnbScpIHx8IGlzRW5hYmxl ZCgncycpKTsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIGhhc0Rh dGUgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChp c0VuYWJsZWQoJ3knKSB8fCBpc0VuYWJsZWQoJ00nKSB8fCBpc0VuYWJsZWQo J2QnKSk7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBnZXREYXRl UGlja2VyVGVtcGxhdGUgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg ICAgdmFyIGhlYWRUZW1wbGF0ZSA9ICQoJzx0aGVhZD4nKQorICAgICAgICAg ICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8dHI+JykKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzx0aD4nKS5hZGRDbGFzcygn cHJldicpLmF0dHIoJ2RhdGEtYWN0aW9uJywgJ3ByZXZpb3VzJykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8c3Bhbj4n KS5hZGRDbGFzcyhvcHRpb25zLmljb25zLnByZXZpb3VzKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC5hcHBlbmQoJCgnPHRoPicpLmFkZENsYXNzKCdwaWNrZXIt c3dpdGNoJykuYXR0cignZGF0YS1hY3Rpb24nLCAncGlja2VyU3dpdGNoJyku YXR0cignY29sc3BhbicsIChvcHRpb25zLmNhbGVuZGFyV2Vla3MgPyAnNicg OiAnNScpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5k KCQoJzx0aD4nKS5hZGRDbGFzcygnbmV4dCcpLmF0dHIoJ2RhdGEtYWN0aW9u JywgJ25leHQnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu YXBwZW5kKCQoJzxzcGFuPicpLmFkZENsYXNzKG9wdGlvbnMuaWNvbnMubmV4 dCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAg ICBjb250VGVtcGxhdGUgPSAkKCc8dGJvZHk+JykKKyAgICAgICAgICAgICAg ICAgICAgICAgIC5hcHBlbmQoJCgnPHRyPicpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLmFwcGVuZCgkKCc8dGQ+JykuYXR0cignY29sc3Bhbics IChvcHRpb25zLmNhbGVuZGFyV2Vla3MgPyAnOCcgOiAnNycpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAgICAg cmV0dXJuIFsKKyAgICAgICAgICAgICAgICAgICAgJCgnPGRpdj4nKS5hZGRD bGFzcygnZGF0ZXBpY2tlci1kYXlzJykKKyAgICAgICAgICAgICAgICAgICAg ICAgIC5hcHBlbmQoJCgnPHRhYmxlPicpLmFkZENsYXNzKCd0YWJsZS1jb25k ZW5zZWQnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQo aGVhZFRlbXBsYXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5h cHBlbmQoJCgnPHRib2R5PicpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICksCisgICAgICAgICAgICAgICAgICAgICQoJzxkaXY+JykuYWRkQ2xh c3MoJ2RhdGVwaWNrZXItbW9udGhzJykKKyAgICAgICAgICAgICAgICAgICAg ICAgIC5hcHBlbmQoJCgnPHRhYmxlPicpLmFkZENsYXNzKCd0YWJsZS1jb25k ZW5zZWQnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQo aGVhZFRlbXBsYXRlLmNsb25lKCkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLmFwcGVuZChjb250VGVtcGxhdGUuY2xvbmUoKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICAk KCc8ZGl2PicpLmFkZENsYXNzKCdkYXRlcGlja2VyLXllYXJzJykKKyAgICAg ICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPHRhYmxlPicpLmFkZENs YXNzKCd0YWJsZS1jb25kZW5zZWQnKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC5hcHBlbmQoaGVhZFRlbXBsYXRlLmNsb25lKCkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChjb250VGVtcGxhdGUuY2xv bmUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAorICAgICAg ICAgICAgICAgICAgICAkKCc8ZGl2PicpLmFkZENsYXNzKCdkYXRlcGlja2Vy LWRlY2FkZXMnKQorICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgk KCc8dGFibGU+JykuYWRkQ2xhc3MoJ3RhYmxlLWNvbmRlbnNlZCcpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChoZWFkVGVtcGxhdGUu Y2xvbmUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5k KGNvbnRUZW1wbGF0ZS5jbG9uZSgpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICkKKyAgICAgICAgICAgICAgICBdOworICAgICAgICAgICAgfSwK KworICAgICAgICAgICAgZ2V0VGltZVBpY2tlck1haW5UZW1wbGF0ZSA9IGZ1 bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgdG9wUm93ID0gJCgn PHRyPicpLAorICAgICAgICAgICAgICAgICAgICBtaWRkbGVSb3cgPSAkKCc8 dHI+JyksCisgICAgICAgICAgICAgICAgICAgIGJvdHRvbVJvdyA9ICQoJzx0 cj4nKTsKKworICAgICAgICAgICAgICAgIGlmIChpc0VuYWJsZWQoJ2gnKSkg eworICAgICAgICAgICAgICAgICAgICB0b3BSb3cuYXBwZW5kKCQoJzx0ZD4n KQorICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8YT4nKS5h dHRyKHsgaHJlZjogJyMnLCB0YWJpbmRleDogJy0xJywgJ3RpdGxlJzogb3B0 aW9ucy50b29sdGlwcy5pbmNyZW1lbnRIb3VyIH0pLmFkZENsYXNzKCdidG4n KS5hdHRyKCdkYXRhLWFjdGlvbicsICdpbmNyZW1lbnRIb3VycycpLmFwcGVu ZCgkKCc8c3Bhbj4nKS5hZGRDbGFzcyhvcHRpb25zLmljb25zLnVwKSkpKTsK KyAgICAgICAgICAgICAgICAgICAgbWlkZGxlUm93LmFwcGVuZCgkKCc8dGQ+ JykKKyAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPHNwYW4+ JykuYWRkQ2xhc3MoJ3RpbWVwaWNrZXItaG91cicpLmF0dHIoeyAnZGF0YS10 aW1lLWNvbXBvbmVudCc6ICdob3VycycsICd0aXRsZSc6IG9wdGlvbnMudG9v bHRpcHMucGlja0hvdXIgfSkuYXR0cignZGF0YS1hY3Rpb24nLCAnc2hvd0hv dXJzJykpKTsKKyAgICAgICAgICAgICAgICAgICAgYm90dG9tUm93LmFwcGVu ZCgkKCc8dGQ+JykKKyAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQo JCgnPGE+JykuYXR0cih7IGhyZWY6ICcjJywgdGFiaW5kZXg6ICctMScsICd0 aXRsZSc6IG9wdGlvbnMudG9vbHRpcHMuZGVjcmVtZW50SG91ciB9KS5hZGRD bGFzcygnYnRuJykuYXR0cignZGF0YS1hY3Rpb24nLCAnZGVjcmVtZW50SG91 cnMnKS5hcHBlbmQoJCgnPHNwYW4+JykuYWRkQ2xhc3Mob3B0aW9ucy5pY29u cy5kb3duKSkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgaWYgKGlzRW5hYmxlZCgnbScpKSB7CisgICAgICAgICAgICAgICAgICAg IGlmIChpc0VuYWJsZWQoJ2gnKSkgeworICAgICAgICAgICAgICAgICAgICAg ICAgdG9wUm93LmFwcGVuZCgkKCc8dGQ+JykuYWRkQ2xhc3MoJ3NlcGFyYXRv cicpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pZGRsZVJvdy5hcHBl bmQoJCgnPHRkPicpLmFkZENsYXNzKCdzZXBhcmF0b3InKS5odG1sKCc6Jykp OworICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tUm93LmFwcGVuZCgk KCc8dGQ+JykuYWRkQ2xhc3MoJ3NlcGFyYXRvcicpKTsKKyAgICAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB0b3BSb3cuYXBwZW5k KCQoJzx0ZD4nKQorICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgk KCc8YT4nKS5hdHRyKHsgaHJlZjogJyMnLCB0YWJpbmRleDogJy0xJywgJ3Rp dGxlJzogb3B0aW9ucy50b29sdGlwcy5pbmNyZW1lbnRNaW51dGUgfSkuYWRk Q2xhc3MoJ2J0bicpLmF0dHIoJ2RhdGEtYWN0aW9uJywgJ2luY3JlbWVudE1p bnV0ZXMnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQo JCgnPHNwYW4+JykuYWRkQ2xhc3Mob3B0aW9ucy5pY29ucy51cCkpKSk7Cisg ICAgICAgICAgICAgICAgICAgIG1pZGRsZVJvdy5hcHBlbmQoJCgnPHRkPicp CisgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzxzcGFuPicp LmFkZENsYXNzKCd0aW1lcGlja2VyLW1pbnV0ZScpLmF0dHIoeyAnZGF0YS10 aW1lLWNvbXBvbmVudCc6ICdtaW51dGVzJywgJ3RpdGxlJzogb3B0aW9ucy50 b29sdGlwcy5waWNrTWludXRlIH0pLmF0dHIoJ2RhdGEtYWN0aW9uJywgJ3No b3dNaW51dGVzJykpKTsKKyAgICAgICAgICAgICAgICAgICAgYm90dG9tUm93 LmFwcGVuZCgkKCc8dGQ+JykKKyAgICAgICAgICAgICAgICAgICAgICAgIC5h cHBlbmQoJCgnPGE+JykuYXR0cih7IGhyZWY6ICcjJywgdGFiaW5kZXg6ICct MScsICd0aXRsZSc6IG9wdGlvbnMudG9vbHRpcHMuZGVjcmVtZW50TWludXRl IH0pLmFkZENsYXNzKCdidG4nKS5hdHRyKCdkYXRhLWFjdGlvbicsICdkZWNy ZW1lbnRNaW51dGVzJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAu YXBwZW5kKCQoJzxzcGFuPicpLmFkZENsYXNzKG9wdGlvbnMuaWNvbnMuZG93 bikpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlm IChpc0VuYWJsZWQoJ3MnKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAo aXNFbmFibGVkKCdtJykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRv cFJvdy5hcHBlbmQoJCgnPHRkPicpLmFkZENsYXNzKCdzZXBhcmF0b3InKSk7 CisgICAgICAgICAgICAgICAgICAgICAgICBtaWRkbGVSb3cuYXBwZW5kKCQo Jzx0ZD4nKS5hZGRDbGFzcygnc2VwYXJhdG9yJykuaHRtbCgnOicpKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbVJvdy5hcHBlbmQoJCgnPHRk PicpLmFkZENsYXNzKCdzZXBhcmF0b3InKSk7CisgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdG9wUm93LmFwcGVuZCgkKCc8 dGQ+JykKKyAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPGE+ JykuYXR0cih7IGhyZWY6ICcjJywgdGFiaW5kZXg6ICctMScsICd0aXRsZSc6 IG9wdGlvbnMudG9vbHRpcHMuaW5jcmVtZW50U2Vjb25kIH0pLmFkZENsYXNz KCdidG4nKS5hdHRyKCdkYXRhLWFjdGlvbicsICdpbmNyZW1lbnRTZWNvbmRz JykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzxz cGFuPicpLmFkZENsYXNzKG9wdGlvbnMuaWNvbnMudXApKSkpOworICAgICAg ICAgICAgICAgICAgICBtaWRkbGVSb3cuYXBwZW5kKCQoJzx0ZD4nKQorICAg ICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8c3Bhbj4nKS5hZGRD bGFzcygndGltZXBpY2tlci1zZWNvbmQnKS5hdHRyKHsgJ2RhdGEtdGltZS1j b21wb25lbnQnOiAnc2Vjb25kcycsICd0aXRsZSc6IG9wdGlvbnMudG9vbHRp cHMucGlja1NlY29uZCB9KS5hdHRyKCdkYXRhLWFjdGlvbicsICdzaG93U2Vj b25kcycpKSk7CisgICAgICAgICAgICAgICAgICAgIGJvdHRvbVJvdy5hcHBl bmQoJCgnPHRkPicpCisgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5k KCQoJzxhPicpLmF0dHIoeyBocmVmOiAnIycsIHRhYmluZGV4OiAnLTEnLCAn dGl0bGUnOiBvcHRpb25zLnRvb2x0aXBzLmRlY3JlbWVudFNlY29uZCB9KS5h ZGRDbGFzcygnYnRuJykuYXR0cignZGF0YS1hY3Rpb24nLCAnZGVjcmVtZW50 U2Vjb25kcycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVu ZCgkKCc8c3Bhbj4nKS5hZGRDbGFzcyhvcHRpb25zLmljb25zLmRvd24pKSkp OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICgh dXNlMjRIb3VycykgeworICAgICAgICAgICAgICAgICAgICB0b3BSb3cuYXBw ZW5kKCQoJzx0ZD4nKS5hZGRDbGFzcygnc2VwYXJhdG9yJykpOworICAgICAg ICAgICAgICAgICAgICBtaWRkbGVSb3cuYXBwZW5kKCQoJzx0ZD4nKQorICAg ICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8YnV0dG9uPicpLmFk ZENsYXNzKCdidG4gYnRuLXByaW1hcnknKS5hdHRyKHsgJ2RhdGEtYWN0aW9u JzogJ3RvZ2dsZVBlcmlvZCcsIHRhYmluZGV4OiAnLTEnLCAndGl0bGUnOiBv cHRpb25zLnRvb2x0aXBzLnRvZ2dsZVBlcmlvZCB9KSkpOworICAgICAgICAg ICAgICAgICAgICBib3R0b21Sb3cuYXBwZW5kKCQoJzx0ZD4nKS5hZGRDbGFz cygnc2VwYXJhdG9yJykpOworICAgICAgICAgICAgICAgIH0KKworICAgICAg ICAgICAgICAgIHJldHVybiAkKCc8ZGl2PicpLmFkZENsYXNzKCd0aW1lcGlj a2VyLXBpY2tlcicpCisgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgn PHRhYmxlPicpLmFkZENsYXNzKCd0YWJsZS1jb25kZW5zZWQnKQorICAgICAg ICAgICAgICAgICAgICAgICAgLmFwcGVuZChbdG9wUm93LCBtaWRkbGVSb3cs IGJvdHRvbVJvd10pKTsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAg IGdldFRpbWVQaWNrZXJUZW1wbGF0ZSA9IGZ1bmN0aW9uICgpIHsKKyAgICAg ICAgICAgICAgICB2YXIgaG91cnNWaWV3ID0gJCgnPGRpdj4nKS5hZGRDbGFz cygndGltZXBpY2tlci1ob3VycycpCisgICAgICAgICAgICAgICAgICAgICAg ICAuYXBwZW5kKCQoJzx0YWJsZT4nKS5hZGRDbGFzcygndGFibGUtY29uZGVu c2VkJykpLAorICAgICAgICAgICAgICAgICAgICBtaW51dGVzVmlldyA9ICQo JzxkaXY+JykuYWRkQ2xhc3MoJ3RpbWVwaWNrZXItbWludXRlcycpCisgICAg ICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzx0YWJsZT4nKS5hZGRD bGFzcygndGFibGUtY29uZGVuc2VkJykpLAorICAgICAgICAgICAgICAgICAg ICBzZWNvbmRzVmlldyA9ICQoJzxkaXY+JykuYWRkQ2xhc3MoJ3RpbWVwaWNr ZXItc2Vjb25kcycpCisgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5k KCQoJzx0YWJsZT4nKS5hZGRDbGFzcygndGFibGUtY29uZGVuc2VkJykpLAor ICAgICAgICAgICAgICAgICAgICByZXQgPSBbZ2V0VGltZVBpY2tlck1haW5U ZW1wbGF0ZSgpXTsKKworICAgICAgICAgICAgICAgIGlmIChpc0VuYWJsZWQo J2gnKSkgeworICAgICAgICAgICAgICAgICAgICByZXQucHVzaChob3Vyc1Zp ZXcpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAo aXNFbmFibGVkKCdtJykpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0LnB1 c2gobWludXRlc1ZpZXcpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICBpZiAoaXNFbmFibGVkKCdzJykpIHsKKyAgICAgICAgICAgICAg ICAgICAgcmV0LnB1c2goc2Vjb25kc1ZpZXcpOworICAgICAgICAgICAgICAg IH0KKworICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgICAg ICB9LAorCisgICAgICAgICAgICBnZXRUb29sYmFyID0gZnVuY3Rpb24gKCkg eworICAgICAgICAgICAgICAgIHZhciByb3cgPSBbXTsKKyAgICAgICAgICAg ICAgICBpZiAob3B0aW9ucy5zaG93VG9kYXlCdXR0b24pIHsKKyAgICAgICAg ICAgICAgICAgICAgcm93LnB1c2goJCgnPHRkPicpLmFwcGVuZCgkKCc8YT4n KS5hdHRyKHsgJ2RhdGEtYWN0aW9uJzogJ3RvZGF5JywgJ3RpdGxlJzogb3B0 aW9ucy50b29sdGlwcy50b2RheSB9KS5hcHBlbmQoJCgnPHNwYW4+JykuYWRk Q2xhc3Mob3B0aW9ucy5pY29ucy50b2RheSkpKSk7CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5zaWRlQnlTaWRl ICYmIGhhc0RhdGUoKSAmJiBoYXNUaW1lKCkpIHsKKyAgICAgICAgICAgICAg ICAgICAgcm93LnB1c2goJCgnPHRkPicpLmFwcGVuZCgkKCc8YT4nKS5hdHRy KHsgJ2RhdGEtYWN0aW9uJzogJ3RvZ2dsZVBpY2tlcicsICd0aXRsZSc6IG9w dGlvbnMudG9vbHRpcHMuc2VsZWN0VGltZSB9KS5hcHBlbmQoJCgnPHNwYW4+ JykuYWRkQ2xhc3Mob3B0aW9ucy5pY29ucy50aW1lKSkpKTsKKyAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuc2hvd0Ns ZWFyKSB7CisgICAgICAgICAgICAgICAgICAgIHJvdy5wdXNoKCQoJzx0ZD4n KS5hcHBlbmQoJCgnPGE+JykuYXR0cih7ICdkYXRhLWFjdGlvbic6ICdjbGVh cicsICd0aXRsZSc6IG9wdGlvbnMudG9vbHRpcHMuY2xlYXIgfSkuYXBwZW5k KCQoJzxzcGFuPicpLmFkZENsYXNzKG9wdGlvbnMuaWNvbnMuY2xlYXIpKSkp OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAob3B0 aW9ucy5zaG93Q2xvc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgcm93LnB1 c2goJCgnPHRkPicpLmFwcGVuZCgkKCc8YT4nKS5hdHRyKHsgJ2RhdGEtYWN0 aW9uJzogJ2Nsb3NlJywgJ3RpdGxlJzogb3B0aW9ucy50b29sdGlwcy5jbG9z ZSB9KS5hcHBlbmQoJCgnPHNwYW4+JykuYWRkQ2xhc3Mob3B0aW9ucy5pY29u cy5jbG9zZSkpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgIHJldHVybiAkKCc8dGFibGU+JykuYWRkQ2xhc3MoJ3RhYmxlLWNvbmRl bnNlZCcpLmFwcGVuZCgkKCc8dGJvZHk+JykuYXBwZW5kKCQoJzx0cj4nKS5h cHBlbmQocm93KSkpOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAg Z2V0VGVtcGxhdGUgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg dmFyIHRlbXBsYXRlID0gJCgnPGRpdj4nKS5hZGRDbGFzcygnYm9vdHN0cmFw LWRhdGV0aW1lcGlja2VyLXdpZGdldCBkcm9wZG93bi1tZW51JyksCisgICAg ICAgICAgICAgICAgICAgIGRhdGVWaWV3ID0gJCgnPGRpdj4nKS5hZGRDbGFz cygnZGF0ZXBpY2tlcicpLmFwcGVuZChnZXREYXRlUGlja2VyVGVtcGxhdGUo KSksCisgICAgICAgICAgICAgICAgICAgIHRpbWVWaWV3ID0gJCgnPGRpdj4n KS5hZGRDbGFzcygndGltZXBpY2tlcicpLmFwcGVuZChnZXRUaW1lUGlja2Vy VGVtcGxhdGUoKSksCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSAk KCc8dWw+JykuYWRkQ2xhc3MoJ2xpc3QtdW5zdHlsZWQnKSwKKyAgICAgICAg ICAgICAgICAgICAgdG9vbGJhciA9ICQoJzxsaT4nKS5hZGRDbGFzcygncGlj a2VyLXN3aXRjaCcgKyAob3B0aW9ucy5jb2xsYXBzZSA/ICcgYWNjb3JkaW9u LXRvZ2dsZScgOiAnJykpLmFwcGVuZChnZXRUb29sYmFyKCkpOworCisgICAg ICAgICAgICAgICAgaWYgKG9wdGlvbnMuaW5saW5lKSB7CisgICAgICAgICAg ICAgICAgICAgIHRlbXBsYXRlLnJlbW92ZUNsYXNzKCdkcm9wZG93bi1tZW51 Jyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYg KHVzZTI0SG91cnMpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUu YWRkQ2xhc3MoJ3VzZXR3ZW50eWZvdXInKTsKKyAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgaWYgKGlzRW5hYmxlZCgncycpICYmICF1c2Uy NEhvdXJzKSB7CisgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlLmFkZENs YXNzKCd3aWRlcicpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg ICAgICAgIGlmIChvcHRpb25zLnNpZGVCeVNpZGUgJiYgaGFzRGF0ZSgpICYm IGhhc1RpbWUoKSkgeworICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5h ZGRDbGFzcygndGltZXBpY2tlci1zYnMnKTsKKyAgICAgICAgICAgICAgICAg ICAgaWYgKG9wdGlvbnMudG9vbGJhclBsYWNlbWVudCA9PT0gJ3RvcCcpIHsK KyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlLmFwcGVuZCh0b29s YmFyKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICAgICB0ZW1wbGF0ZS5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAg ICAkKCc8ZGl2PicpLmFkZENsYXNzKCdyb3cnKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC5hcHBlbmQoZGF0ZVZpZXcuYWRkQ2xhc3MoJ2NvbC1t ZC02JykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCh0 aW1lVmlldy5hZGRDbGFzcygnY29sLW1kLTYnKSkKKyAgICAgICAgICAgICAg ICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudG9v bGJhclBsYWNlbWVudCA9PT0gJ2JvdHRvbScpIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgIHRlbXBsYXRlLmFwcGVuZCh0b29sYmFyKTsKKyAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVt cGxhdGU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg aWYgKG9wdGlvbnMudG9vbGJhclBsYWNlbWVudCA9PT0gJ3RvcCcpIHsKKyAg ICAgICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmQodG9vbGJhcik7Cisg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChoYXNEYXRl KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmQoJCgn PGxpPicpLmFkZENsYXNzKChvcHRpb25zLmNvbGxhcHNlICYmIGhhc1RpbWUo KSA/ICdjb2xsYXBzZSBpbicgOiAnJykpLmFwcGVuZChkYXRlVmlldykpOwor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAob3B0aW9u cy50b29sYmFyUGxhY2VtZW50ID09PSAnZGVmYXVsdCcpIHsKKyAgICAgICAg ICAgICAgICAgICAgY29udGVudC5hcHBlbmQodG9vbGJhcik7CisgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChoYXNUaW1lKCkpIHsK KyAgICAgICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmQoJCgnPGxpPicp LmFkZENsYXNzKChvcHRpb25zLmNvbGxhcHNlICYmIGhhc0RhdGUoKSA/ICdj b2xsYXBzZScgOiAnJykpLmFwcGVuZCh0aW1lVmlldykpOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy50b29sYmFy UGxhY2VtZW50ID09PSAnYm90dG9tJykgeworICAgICAgICAgICAgICAgICAg ICBjb250ZW50LmFwcGVuZCh0b29sYmFyKTsKKyAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgcmV0dXJuIHRlbXBsYXRlLmFwcGVuZChjb250 ZW50KTsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIGRhdGFUb09w dGlvbnMgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIGVE YXRhLAorICAgICAgICAgICAgICAgICAgICBkYXRhT3B0aW9ucyA9IHt9Owor CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuaXMoJ2lucHV0JykgfHwg b3B0aW9ucy5pbmxpbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgZURhdGEg PSBlbGVtZW50LmRhdGEoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor ICAgICAgICAgICAgICAgICAgICBlRGF0YSA9IGVsZW1lbnQuZmluZCgnaW5w dXQnKS5kYXRhKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg ICAgICAgaWYgKGVEYXRhLmRhdGVPcHRpb25zICYmIGVEYXRhLmRhdGVPcHRp b25zIGluc3RhbmNlb2YgT2JqZWN0KSB7CisgICAgICAgICAgICAgICAgICAg IGRhdGFPcHRpb25zID0gJC5leHRlbmQodHJ1ZSwgZGF0YU9wdGlvbnMsIGVE YXRhLmRhdGVPcHRpb25zKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg ICAgICAgICAgICAkLmVhY2gob3B0aW9ucywgZnVuY3Rpb24gKGtleSkgewor ICAgICAgICAgICAgICAgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9ICdkYXRl JyArIGtleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zbGljZSgx KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVEYXRhW2F0dHJpYnV0ZU5h bWVdICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg IGRhdGFPcHRpb25zW2tleV0gPSBlRGF0YVthdHRyaWJ1dGVOYW1lXTsKKyAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworICAg ICAgICAgICAgICAgIHJldHVybiBkYXRhT3B0aW9uczsKKyAgICAgICAgICAg IH0sCisKKyAgICAgICAgICAgIHBsYWNlID0gZnVuY3Rpb24gKCkgeworICAg ICAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IChjb21wb25lbnQgfHwgZWxl bWVudCkucG9zaXRpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0 ID0gKGNvbXBvbmVudCB8fCBlbGVtZW50KS5vZmZzZXQoKSwKKyAgICAgICAg ICAgICAgICAgICAgdmVydGljYWwgPSBvcHRpb25zLndpZGdldFBvc2l0aW9u aW5nLnZlcnRpY2FsLAorICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFs ID0gb3B0aW9ucy53aWRnZXRQb3NpdGlvbmluZy5ob3Jpem9udGFsLAorICAg ICAgICAgICAgICAgICAgICBwYXJlbnQ7CisKKyAgICAgICAgICAgICAgICBp ZiAob3B0aW9ucy53aWRnZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICAg ICAgcGFyZW50ID0gb3B0aW9ucy53aWRnZXRQYXJlbnQuYXBwZW5kKHdpZGdl dCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmlzKCdp bnB1dCcpKSB7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGVsZW1l bnQuYWZ0ZXIod2lkZ2V0KS5wYXJlbnQoKTsKKyAgICAgICAgICAgICAgICB9 IGVsc2UgaWYgKG9wdGlvbnMuaW5saW5lKSB7CisgICAgICAgICAgICAgICAg ICAgIHBhcmVudCA9IGVsZW1lbnQuYXBwZW5kKHdpZGdldCk7CisgICAgICAg ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBlbGVtZW50OworICAg ICAgICAgICAgICAgICAgICBlbGVtZW50LmNoaWxkcmVuKCkuZmlyc3QoKS5h ZnRlcih3aWRnZXQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg ICAgICAgIC8vIFRvcCBhbmQgYm90dG9tIGxvZ2ljCisgICAgICAgICAgICAg ICAgaWYgKHZlcnRpY2FsID09PSAnYXV0bycpIHsKKyAgICAgICAgICAgICAg ICAgICAgaWYgKG9mZnNldC50b3AgKyB3aWRnZXQuaGVpZ2h0KCkgKiAxLjUg Pj0gJCh3aW5kb3cpLmhlaWdodCgpICsgJCh3aW5kb3cpLnNjcm9sbFRvcCgp ICYmCisgICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXQuaGVpZ2h0KCkg KyBlbGVtZW50Lm91dGVySGVpZ2h0KCkgPCBvZmZzZXQudG9wKSB7CisgICAg ICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbCA9ICd0b3AnOworICAgICAg ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg ICAgdmVydGljYWwgPSAnYm90dG9tJzsKKyAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIExl ZnQgYW5kIHJpZ2h0IGxvZ2ljCisgICAgICAgICAgICAgICAgaWYgKGhvcml6 b250YWwgPT09ICdhdXRvJykgeworICAgICAgICAgICAgICAgICAgICBpZiAo cGFyZW50LndpZHRoKCkgPCBvZmZzZXQubGVmdCArIHdpZGdldC5vdXRlcldp ZHRoKCkgLyAyICYmCisgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQu bGVmdCArIHdpZGdldC5vdXRlcldpZHRoKCkgPiAkKHdpbmRvdykud2lkdGgo KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbCA9ICdy aWdodCc7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICAgICAgICAgICAgICBob3Jpem9udGFsID0gJ2xlZnQnOworICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg ICAgICAgICAgaWYgKHZlcnRpY2FsID09PSAndG9wJykgeworICAgICAgICAg ICAgICAgICAgICB3aWRnZXQuYWRkQ2xhc3MoJ3RvcCcpLnJlbW92ZUNsYXNz KCdib3R0b20nKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgICAgICAgICB3aWRnZXQuYWRkQ2xhc3MoJ2JvdHRvbScpLnJlbW92 ZUNsYXNzKCd0b3AnKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg ICAgICAgICBpZiAoaG9yaXpvbnRhbCA9PT0gJ3JpZ2h0JykgeworICAgICAg ICAgICAgICAgICAgICB3aWRnZXQuYWRkQ2xhc3MoJ3B1bGwtcmlnaHQnKTsK KyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg ICB3aWRnZXQucmVtb3ZlQ2xhc3MoJ3B1bGwtcmlnaHQnKTsKKyAgICAgICAg ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBmaW5kIHRoZSBmaXJz dCBwYXJlbnQgZWxlbWVudCB0aGF0IGhhcyBhIHJlbGF0aXZlIGNzcyBwb3Np dGlvbmluZworICAgICAgICAgICAgICAgIGlmIChwYXJlbnQuY3NzKCdwb3Np dGlvbicpICE9PSAncmVsYXRpdmUnKSB7CisgICAgICAgICAgICAgICAgICAg IHBhcmVudCA9IHBhcmVudC5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uICgp IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHRoaXMpLmNz cygncG9zaXRpb24nKSA9PT0gJ3JlbGF0aXZlJzsKKyAgICAgICAgICAgICAg ICAgICAgfSkuZmlyc3QoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg ICAgICAgICAgICBpZiAocGFyZW50Lmxlbmd0aCA9PT0gMCkgeworICAgICAg ICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGV0aW1lcGlja2Vy IGNvbXBvbmVudCBzaG91bGQgYmUgcGxhY2VkIHdpdGhpbiBhIHJlbGF0aXZl IHBvc2l0aW9uZWQgY29udGFpbmVyJyk7CisgICAgICAgICAgICAgICAgfQor CisgICAgICAgICAgICAgICAgd2lkZ2V0LmNzcyh7CisgICAgICAgICAgICAg ICAgICAgIHRvcDogdmVydGljYWwgPT09ICd0b3AnID8gJ2F1dG8nIDogcG9z aXRpb24udG9wICsgZWxlbWVudC5vdXRlckhlaWdodCgpLAorICAgICAgICAg ICAgICAgICAgICBib3R0b206IHZlcnRpY2FsID09PSAndG9wJyA/IHBhcmVu dC5vdXRlckhlaWdodCgpIC0gKHBhcmVudCA9PT0gZWxlbWVudCA/IDAgOiBw b3NpdGlvbi50b3ApIDogJ2F1dG8nLAorICAgICAgICAgICAgICAgICAgICBs ZWZ0OiBob3Jpem9udGFsID09PSAnbGVmdCcgPyAocGFyZW50ID09PSBlbGVt ZW50ID8gMCA6IHBvc2l0aW9uLmxlZnQpIDogJ2F1dG8nLAorICAgICAgICAg ICAgICAgICAgICByaWdodDogaG9yaXpvbnRhbCA9PT0gJ2xlZnQnID8gJ2F1 dG8nIDogcGFyZW50Lm91dGVyV2lkdGgoKSAtIGVsZW1lbnQub3V0ZXJXaWR0 aCgpIC0gKHBhcmVudCA9PT0gZWxlbWVudCA/IDAgOiBwb3NpdGlvbi5sZWZ0 KQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwKKworICAg ICAgICAgICAgbm90aWZ5RXZlbnQgPSBmdW5jdGlvbiAoZSkgeworICAgICAg ICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdkcC5jaGFuZ2UnICYmICgoZS5k YXRlICYmIGUuZGF0ZS5pc1NhbWUoZS5vbGREYXRlKSkgfHwgKCFlLmRhdGUg JiYgIWUub2xkRGF0ZSkpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy bjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxlbWVu dC50cmlnZ2VyKGUpOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAg dmlld1VwZGF0ZSA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICAgICAg aWYgKGUgPT09ICd5JykgeworICAgICAgICAgICAgICAgICAgICBlID0gJ1lZ WVknOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBub3Rp ZnlFdmVudCh7CisgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdkcC51cGRh dGUnLAorICAgICAgICAgICAgICAgICAgICBjaGFuZ2U6IGUsCisgICAgICAg ICAgICAgICAgICAgIHZpZXdEYXRlOiB2aWV3RGF0ZS5jbG9uZSgpCisgICAg ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAg ICBzaG93TW9kZSA9IGZ1bmN0aW9uIChkaXIpIHsKKyAgICAgICAgICAgICAg ICBpZiAoIXdpZGdldCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm47 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChkaXIp IHsKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudFZpZXdNb2RlID0gTWF0 aC5tYXgobWluVmlld01vZGVOdW1iZXIsIE1hdGgubWluKDMsIGN1cnJlbnRW aWV3TW9kZSArIGRpcikpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICB3aWRnZXQuZmluZCgnLmRhdGVwaWNrZXIgPiBkaXYnKS5oaWRl KCkuZmlsdGVyKCcuZGF0ZXBpY2tlci0nICsgZGF0ZVBpY2tlck1vZGVzW2N1 cnJlbnRWaWV3TW9kZV0uY2xzTmFtZSkuc2hvdygpOworICAgICAgICAgICAg fSwKKworICAgICAgICAgICAgZmlsbERvdyA9IGZ1bmN0aW9uICgpIHsKKyAg ICAgICAgICAgICAgICB2YXIgcm93ID0gJCgnPHRyPicpLAorICAgICAgICAg ICAgICAgICAgICBjdXJyZW50RGF0ZSA9IHZpZXdEYXRlLmNsb25lKCkuc3Rh cnRPZigndycpLnN0YXJ0T2YoJ2QnKTsKKworICAgICAgICAgICAgICAgIGlm IChvcHRpb25zLmNhbGVuZGFyV2Vla3MgPT09IHRydWUpIHsKKyAgICAgICAg ICAgICAgICAgICAgcm93LmFwcGVuZCgkKCc8dGg+JykuYWRkQ2xhc3MoJ2N3 JykudGV4dCgnIycpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg ICAgICAgICB3aGlsZSAoY3VycmVudERhdGUuaXNCZWZvcmUodmlld0RhdGUu Y2xvbmUoKS5lbmRPZigndycpKSkgeworICAgICAgICAgICAgICAgICAgICBy b3cuYXBwZW5kKCQoJzx0aD4nKS5hZGRDbGFzcygnZG93JykudGV4dChjdXJy ZW50RGF0ZS5mb3JtYXQoJ2RkJykpKTsKKyAgICAgICAgICAgICAgICAgICAg Y3VycmVudERhdGUuYWRkKDEsICdkJyk7CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIHdpZGdldC5maW5kKCcuZGF0ZXBpY2tlci1kYXlz IHRoZWFkJykuYXBwZW5kKHJvdyk7CisgICAgICAgICAgICB9LAorCisgICAg ICAgICAgICBpc0luRGlzYWJsZWREYXRlcyA9IGZ1bmN0aW9uICh0ZXN0RGF0 ZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmRpc2FibGVk RGF0ZXNbdGVzdERhdGUuZm9ybWF0KCdZWVlZLU1NLUREJyldID09PSB0cnVl OworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgaXNJbkVuYWJsZWRE YXRlcyA9IGZ1bmN0aW9uICh0ZXN0RGF0ZSkgeworICAgICAgICAgICAgICAg IHJldHVybiBvcHRpb25zLmVuYWJsZWREYXRlc1t0ZXN0RGF0ZS5mb3JtYXQo J1lZWVktTU0tREQnKV0gPT09IHRydWU7CisgICAgICAgICAgICB9LAorCisg ICAgICAgICAgICBpc0luRGlzYWJsZWRIb3VycyA9IGZ1bmN0aW9uICh0ZXN0 RGF0ZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmRpc2Fi bGVkSG91cnNbdGVzdERhdGUuZm9ybWF0KCdIJyldID09PSB0cnVlOworICAg ICAgICAgICAgfSwKKworICAgICAgICAgICAgaXNJbkVuYWJsZWRIb3VycyA9 IGZ1bmN0aW9uICh0ZXN0RGF0ZSkgeworICAgICAgICAgICAgICAgIHJldHVy biBvcHRpb25zLmVuYWJsZWRIb3Vyc1t0ZXN0RGF0ZS5mb3JtYXQoJ0gnKV0g PT09IHRydWU7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBpc1Zh bGlkID0gZnVuY3Rpb24gKHRhcmdldE1vbWVudCwgZ3JhbnVsYXJpdHkpIHsK KyAgICAgICAgICAgICAgICBpZiAoIXRhcmdldE1vbWVudC5pc1ZhbGlkKCkp IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5kaXNh YmxlZERhdGVzICYmIGdyYW51bGFyaXR5ID09PSAnZCcgJiYgaXNJbkRpc2Fi bGVkRGF0ZXModGFyZ2V0TW9tZW50KSkgeworICAgICAgICAgICAgICAgICAg ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgIGlmIChvcHRpb25zLmVuYWJsZWREYXRlcyAmJiBncmFudWxhcml0 eSA9PT0gJ2QnICYmICFpc0luRW5hYmxlZERhdGVzKHRhcmdldE1vbWVudCkp IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5taW5E YXRlICYmIHRhcmdldE1vbWVudC5pc0JlZm9yZShvcHRpb25zLm1pbkRhdGUs IGdyYW51bGFyaXR5KSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlm IChvcHRpb25zLm1heERhdGUgJiYgdGFyZ2V0TW9tZW50LmlzQWZ0ZXIob3B0 aW9ucy5tYXhEYXRlLCBncmFudWxhcml0eSkpIHsKKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICBpZiAob3B0aW9ucy5kYXlzT2ZXZWVrRGlzYWJsZWQgJiYg Z3JhbnVsYXJpdHkgPT09ICdkJyAmJiBvcHRpb25zLmRheXNPZldlZWtEaXNh YmxlZC5pbmRleE9mKHRhcmdldE1vbWVudC5kYXkoKSkgIT09IC0xKSB7Cisg ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGlzYWJsZWRI b3VycyAmJiAoZ3JhbnVsYXJpdHkgPT09ICdoJyB8fCBncmFudWxhcml0eSA9 PT0gJ20nIHx8IGdyYW51bGFyaXR5ID09PSAncycpICYmIGlzSW5EaXNhYmxl ZEhvdXJzKHRhcmdldE1vbWVudCkpIHsKKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICBpZiAob3B0aW9ucy5lbmFibGVkSG91cnMgJiYgKGdyYW51bGFyaXR5 ID09PSAnaCcgfHwgZ3JhbnVsYXJpdHkgPT09ICdtJyB8fCBncmFudWxhcml0 eSA9PT0gJ3MnKSAmJiAhaXNJbkVuYWJsZWRIb3Vycyh0YXJnZXRNb21lbnQp KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGlz YWJsZWRUaW1lSW50ZXJ2YWxzICYmIChncmFudWxhcml0eSA9PT0gJ2gnIHx8 IGdyYW51bGFyaXR5ID09PSAnbScgfHwgZ3JhbnVsYXJpdHkgPT09ICdzJykp IHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGZvdW5kID0gZmFsc2U7Cisg ICAgICAgICAgICAgICAgICAgICQuZWFjaChvcHRpb25zLmRpc2FibGVkVGlt ZUludGVydmFscywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKHRhcmdldE1vbWVudC5pc0JldHdlZW4odGhpc1swXSwgdGhp c1sxXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9 IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh bHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7 CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9LAorCisgICAg ICAgICAgICBmaWxsTW9udGhzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAg ICAgICAgIHZhciBzcGFucyA9IFtdLAorICAgICAgICAgICAgICAgICAgICBt b250aHNTaG9ydCA9IHZpZXdEYXRlLmNsb25lKCkuc3RhcnRPZigneScpLnN0 YXJ0T2YoJ2QnKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAobW9udGhzU2hv cnQuaXNTYW1lKHZpZXdEYXRlLCAneScpKSB7CisgICAgICAgICAgICAgICAg ICAgIHNwYW5zLnB1c2goJCgnPHNwYW4+JykuYXR0cignZGF0YS1hY3Rpb24n LCAnc2VsZWN0TW9udGgnKS5hZGRDbGFzcygnbW9udGgnKS50ZXh0KG1vbnRo c1Nob3J0LmZvcm1hdCgnTU1NJykpKTsKKyAgICAgICAgICAgICAgICAgICAg bW9udGhzU2hvcnQuYWRkKDEsICdNJyk7CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIHdpZGdldC5maW5kKCcuZGF0ZXBpY2tlci1tb250 aHMgdGQnKS5lbXB0eSgpLmFwcGVuZChzcGFucyk7CisgICAgICAgICAgICB9 LAorCisgICAgICAgICAgICB1cGRhdGVNb250aHMgPSBmdW5jdGlvbiAoKSB7 CisgICAgICAgICAgICAgICAgdmFyIG1vbnRoc1ZpZXcgPSB3aWRnZXQuZmlu ZCgnLmRhdGVwaWNrZXItbW9udGhzJyksCisgICAgICAgICAgICAgICAgICAg IG1vbnRoc1ZpZXdIZWFkZXIgPSBtb250aHNWaWV3LmZpbmQoJ3RoJyksCisg ICAgICAgICAgICAgICAgICAgIG1vbnRocyA9IG1vbnRoc1ZpZXcuZmluZCgn dGJvZHknKS5maW5kKCdzcGFuJyk7CisKKyAgICAgICAgICAgICAgICBtb250 aHNWaWV3SGVhZGVyLmVxKDApLmZpbmQoJ3NwYW4nKS5hdHRyKCd0aXRsZScs IG9wdGlvbnMudG9vbHRpcHMucHJldlllYXIpOworICAgICAgICAgICAgICAg IG1vbnRoc1ZpZXdIZWFkZXIuZXEoMSkuYXR0cigndGl0bGUnLCBvcHRpb25z LnRvb2x0aXBzLnNlbGVjdFllYXIpOworICAgICAgICAgICAgICAgIG1vbnRo c1ZpZXdIZWFkZXIuZXEoMikuZmluZCgnc3BhbicpLmF0dHIoJ3RpdGxlJywg b3B0aW9ucy50b29sdGlwcy5uZXh0WWVhcik7CisKKyAgICAgICAgICAgICAg ICBtb250aHNWaWV3LmZpbmQoJy5kaXNhYmxlZCcpLnJlbW92ZUNsYXNzKCdk aXNhYmxlZCcpOworCisgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKHZp ZXdEYXRlLmNsb25lKCkuc3VidHJhY3QoMSwgJ3knKSwgJ3knKSkgeworICAg ICAgICAgICAgICAgICAgICBtb250aHNWaWV3SGVhZGVyLmVxKDApLmFkZENs YXNzKCdkaXNhYmxlZCcpOworICAgICAgICAgICAgICAgIH0KKworICAgICAg ICAgICAgICAgIG1vbnRoc1ZpZXdIZWFkZXIuZXEoMSkudGV4dCh2aWV3RGF0 ZS55ZWFyKCkpOworCisgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKHZp ZXdEYXRlLmNsb25lKCkuYWRkKDEsICd5JyksICd5JykpIHsKKyAgICAgICAg ICAgICAgICAgICAgbW9udGhzVmlld0hlYWRlci5lcSgyKS5hZGRDbGFzcygn ZGlzYWJsZWQnKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg ICAgICBtb250aHMucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOworICAgICAgICAg ICAgICAgIGlmIChkYXRlLmlzU2FtZSh2aWV3RGF0ZSwgJ3knKSAmJiAhdW5z ZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgbW9udGhzLmVxKGRhdGUubW9u dGgoKSkuYWRkQ2xhc3MoJ2FjdGl2ZScpOworICAgICAgICAgICAgICAgIH0K KworICAgICAgICAgICAgICAgIG1vbnRocy5lYWNoKGZ1bmN0aW9uIChpbmRl eCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWQodmlld0Rh dGUuY2xvbmUoKS5tb250aChpbmRleCksICdNJykpIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7Cisg ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAg ICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIHVwZGF0ZVllYXJzID0gZnVu Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHZhciB5ZWFyc1ZpZXcgPSB3 aWRnZXQuZmluZCgnLmRhdGVwaWNrZXIteWVhcnMnKSwKKyAgICAgICAgICAg ICAgICAgICAgeWVhcnNWaWV3SGVhZGVyID0geWVhcnNWaWV3LmZpbmQoJ3Ro JyksCisgICAgICAgICAgICAgICAgICAgIHN0YXJ0WWVhciA9IHZpZXdEYXRl LmNsb25lKCkuc3VidHJhY3QoNSwgJ3knKSwKKyAgICAgICAgICAgICAgICAg ICAgZW5kWWVhciA9IHZpZXdEYXRlLmNsb25lKCkuYWRkKDYsICd5JyksCisg ICAgICAgICAgICAgICAgICAgIGh0bWwgPSAnJzsKKworICAgICAgICAgICAg ICAgIHllYXJzVmlld0hlYWRlci5lcSgwKS5maW5kKCdzcGFuJykuYXR0cign dGl0bGUnLCBvcHRpb25zLnRvb2x0aXBzLnByZXZEZWNhZGUpOworICAgICAg ICAgICAgICAgIHllYXJzVmlld0hlYWRlci5lcSgxKS5hdHRyKCd0aXRsZScs IG9wdGlvbnMudG9vbHRpcHMuc2VsZWN0RGVjYWRlKTsKKyAgICAgICAgICAg ICAgICB5ZWFyc1ZpZXdIZWFkZXIuZXEoMikuZmluZCgnc3BhbicpLmF0dHIo J3RpdGxlJywgb3B0aW9ucy50b29sdGlwcy5uZXh0RGVjYWRlKTsKKworICAg ICAgICAgICAgICAgIHllYXJzVmlldy5maW5kKCcuZGlzYWJsZWQnKS5yZW1v dmVDbGFzcygnZGlzYWJsZWQnKTsKKworICAgICAgICAgICAgICAgIGlmIChv cHRpb25zLm1pbkRhdGUgJiYgb3B0aW9ucy5taW5EYXRlLmlzQWZ0ZXIoc3Rh cnRZZWFyLCAneScpKSB7CisgICAgICAgICAgICAgICAgICAgIHllYXJzVmll d0hlYWRlci5lcSgwKS5hZGRDbGFzcygnZGlzYWJsZWQnKTsKKyAgICAgICAg ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB5ZWFyc1ZpZXdIZWFkZXIu ZXEoMSkudGV4dChzdGFydFllYXIueWVhcigpICsgJy0nICsgZW5kWWVhci55 ZWFyKCkpOworCisgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubWF4RGF0 ZSAmJiBvcHRpb25zLm1heERhdGUuaXNCZWZvcmUoZW5kWWVhciwgJ3knKSkg eworICAgICAgICAgICAgICAgICAgICB5ZWFyc1ZpZXdIZWFkZXIuZXEoMiku YWRkQ2xhc3MoJ2Rpc2FibGVkJyk7CisgICAgICAgICAgICAgICAgfQorCisg ICAgICAgICAgICAgICAgd2hpbGUgKCFzdGFydFllYXIuaXNBZnRlcihlbmRZ ZWFyLCAneScpKSB7CisgICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxz cGFuIGRhdGEtYWN0aW9uPSJzZWxlY3RZZWFyIiBjbGFzcz0ieWVhcicgKyAo c3RhcnRZZWFyLmlzU2FtZShkYXRlLCAneScpICYmICF1bnNldCA/ICcgYWN0 aXZlJyA6ICcnKSArICghaXNWYWxpZChzdGFydFllYXIsICd5JykgPyAnIGRp c2FibGVkJyA6ICcnKSArICciPicgKyBzdGFydFllYXIueWVhcigpICsgJzwv c3Bhbj4nOworICAgICAgICAgICAgICAgICAgICBzdGFydFllYXIuYWRkKDEs ICd5Jyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg eWVhcnNWaWV3LmZpbmQoJ3RkJykuaHRtbChodG1sKTsKKyAgICAgICAgICAg IH0sCisKKyAgICAgICAgICAgIHVwZGF0ZURlY2FkZXMgPSBmdW5jdGlvbiAo KSB7CisgICAgICAgICAgICAgICAgdmFyIGRlY2FkZXNWaWV3ID0gd2lkZ2V0 LmZpbmQoJy5kYXRlcGlja2VyLWRlY2FkZXMnKSwKKyAgICAgICAgICAgICAg ICAgICAgZGVjYWRlc1ZpZXdIZWFkZXIgPSBkZWNhZGVzVmlldy5maW5kKCd0 aCcpLAorICAgICAgICAgICAgICAgICAgICBzdGFydERlY2FkZSA9IG1vbWVu dCh7IHk6IHZpZXdEYXRlLnllYXIoKSAtICh2aWV3RGF0ZS55ZWFyKCkgJSAx MDApIC0gMSB9KSwKKyAgICAgICAgICAgICAgICAgICAgZW5kRGVjYWRlID0g c3RhcnREZWNhZGUuY2xvbmUoKS5hZGQoMTAwLCAneScpLAorICAgICAgICAg ICAgICAgICAgICBzdGFydGVkQXQgPSBzdGFydERlY2FkZS5jbG9uZSgpLAor ICAgICAgICAgICAgICAgICAgICBtaW5EYXRlRGVjYWRlID0gZmFsc2UsCisg ICAgICAgICAgICAgICAgICAgIG1heERhdGVEZWNhZGUgPSBmYWxzZSwKKyAg ICAgICAgICAgICAgICAgICAgZW5kRGVjYWRlWWVhciwKKyAgICAgICAgICAg ICAgICAgICAgaHRtbCA9ICcnOworCisgICAgICAgICAgICAgICAgZGVjYWRl c1ZpZXdIZWFkZXIuZXEoMCkuZmluZCgnc3BhbicpLmF0dHIoJ3RpdGxlJywg b3B0aW9ucy50b29sdGlwcy5wcmV2Q2VudHVyeSk7CisgICAgICAgICAgICAg ICAgZGVjYWRlc1ZpZXdIZWFkZXIuZXEoMikuZmluZCgnc3BhbicpLmF0dHIo J3RpdGxlJywgb3B0aW9ucy50b29sdGlwcy5uZXh0Q2VudHVyeSk7CisKKyAg ICAgICAgICAgICAgICBkZWNhZGVzVmlldy5maW5kKCcuZGlzYWJsZWQnKS5y ZW1vdmVDbGFzcygnZGlzYWJsZWQnKTsKKworICAgICAgICAgICAgICAgIGlm IChzdGFydERlY2FkZS5pc1NhbWUobW9tZW50KHsgeTogMTkwMCB9KSkgfHwg KG9wdGlvbnMubWluRGF0ZSAmJiBvcHRpb25zLm1pbkRhdGUuaXNBZnRlcihz dGFydERlY2FkZSwgJ3knKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVj YWRlc1ZpZXdIZWFkZXIuZXEoMCkuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7Cisg ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZGVjYWRlc1Zp ZXdIZWFkZXIuZXEoMSkudGV4dChzdGFydERlY2FkZS55ZWFyKCkgKyAnLScg KyBlbmREZWNhZGUueWVhcigpKTsKKworICAgICAgICAgICAgICAgIGlmIChz dGFydERlY2FkZS5pc1NhbWUobW9tZW50KHsgeTogMjAwMCB9KSkgfHwgKG9w dGlvbnMubWF4RGF0ZSAmJiBvcHRpb25zLm1heERhdGUuaXNCZWZvcmUoZW5k RGVjYWRlLCAneScpKSkgeworICAgICAgICAgICAgICAgICAgICBkZWNhZGVz Vmlld0hlYWRlci5lcSgyKS5hZGRDbGFzcygnZGlzYWJsZWQnKTsKKyAgICAg ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB3aGlsZSAoIXN0YXJ0 RGVjYWRlLmlzQWZ0ZXIoZW5kRGVjYWRlLCAneScpKSB7CisgICAgICAgICAg ICAgICAgICAgIGVuZERlY2FkZVllYXIgPSBzdGFydERlY2FkZS55ZWFyKCkg KyAxMjsKKyAgICAgICAgICAgICAgICAgICAgbWluRGF0ZURlY2FkZSA9IG9w dGlvbnMubWluRGF0ZSAmJiBvcHRpb25zLm1pbkRhdGUuaXNBZnRlcihzdGFy dERlY2FkZSwgJ3knKSAmJiBvcHRpb25zLm1pbkRhdGUueWVhcigpIDw9IGVu ZERlY2FkZVllYXI7CisgICAgICAgICAgICAgICAgICAgIG1heERhdGVEZWNh ZGUgPSBvcHRpb25zLm1heERhdGUgJiYgb3B0aW9ucy5tYXhEYXRlLmlzQWZ0 ZXIoc3RhcnREZWNhZGUsICd5JykgJiYgb3B0aW9ucy5tYXhEYXRlLnllYXIo KSA8PSBlbmREZWNhZGVZZWFyOworICAgICAgICAgICAgICAgICAgICBodG1s ICs9ICc8c3BhbiBkYXRhLWFjdGlvbj0ic2VsZWN0RGVjYWRlIiBjbGFzcz0i ZGVjYWRlJyArIChkYXRlLmlzQWZ0ZXIoc3RhcnREZWNhZGUpICYmIGRhdGUu eWVhcigpIDw9IGVuZERlY2FkZVllYXIgPyAnIGFjdGl2ZScgOiAnJykgKwor ICAgICAgICAgICAgICAgICAgICAgICAgKCFpc1ZhbGlkKHN0YXJ0RGVjYWRl LCAneScpICYmICFtaW5EYXRlRGVjYWRlICYmICFtYXhEYXRlRGVjYWRlID8g JyBkaXNhYmxlZCcgOiAnJykgKyAnIiBkYXRhLXNlbGVjdGlvbj0iJyArIChz dGFydERlY2FkZS55ZWFyKCkgKyA2KSArICciPicgKyAoc3RhcnREZWNhZGUu eWVhcigpICsgMSkgKyAnIC0gJyArIChzdGFydERlY2FkZS55ZWFyKCkgKyAx MikgKyAnPC9zcGFuPic7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0RGVj YWRlLmFkZCgxMiwgJ3knKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgaHRtbCArPSAnPHNwYW4+PC9zcGFuPjxzcGFuPjwvc3Bhbj48 c3Bhbj48L3NwYW4+JzsgLy9wdXNoIHRoZSBkYW5nbGluZyBibG9jayBvdmVy LCBhdCBsZWFzdCB0aGlzIHdheSBpdCdzIGV2ZW4KKworICAgICAgICAgICAg ICAgIGRlY2FkZXNWaWV3LmZpbmQoJ3RkJykuaHRtbChodG1sKTsKKyAgICAg ICAgICAgICAgICBkZWNhZGVzVmlld0hlYWRlci5lcSgxKS50ZXh0KChzdGFy dGVkQXQueWVhcigpICsgMSkgKyAnLScgKyAoc3RhcnREZWNhZGUueWVhcigp KSk7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBmaWxsRGF0ZSA9 IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgZGF5c1ZpZXcg PSB3aWRnZXQuZmluZCgnLmRhdGVwaWNrZXItZGF5cycpLAorICAgICAgICAg ICAgICAgICAgICBkYXlzVmlld0hlYWRlciA9IGRheXNWaWV3LmZpbmQoJ3Ro JyksCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnREYXRlLAorICAgICAg ICAgICAgICAgICAgICBodG1sID0gW10sCisgICAgICAgICAgICAgICAgICAg IHJvdywKKyAgICAgICAgICAgICAgICAgICAgY2xzTmFtZSwKKyAgICAgICAg ICAgICAgICAgICAgaTsKKworICAgICAgICAgICAgICAgIGlmICghaGFzRGF0 ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBkYXlzVmlld0hlYWRlci5l cSgwKS5maW5kKCdzcGFuJykuYXR0cigndGl0bGUnLCBvcHRpb25zLnRvb2x0 aXBzLnByZXZNb250aCk7CisgICAgICAgICAgICAgICAgZGF5c1ZpZXdIZWFk ZXIuZXEoMSkuYXR0cigndGl0bGUnLCBvcHRpb25zLnRvb2x0aXBzLnNlbGVj dE1vbnRoKTsKKyAgICAgICAgICAgICAgICBkYXlzVmlld0hlYWRlci5lcSgy KS5maW5kKCdzcGFuJykuYXR0cigndGl0bGUnLCBvcHRpb25zLnRvb2x0aXBz Lm5leHRNb250aCk7CisKKyAgICAgICAgICAgICAgICBkYXlzVmlldy5maW5k KCcuZGlzYWJsZWQnKS5yZW1vdmVDbGFzcygnZGlzYWJsZWQnKTsKKyAgICAg ICAgICAgICAgICBkYXlzVmlld0hlYWRlci5lcSgxKS50ZXh0KHZpZXdEYXRl LmZvcm1hdChvcHRpb25zLmRheVZpZXdIZWFkZXJGb3JtYXQpKTsKKworICAg ICAgICAgICAgICAgIGlmICghaXNWYWxpZCh2aWV3RGF0ZS5jbG9uZSgpLnN1 YnRyYWN0KDEsICdNJyksICdNJykpIHsKKyAgICAgICAgICAgICAgICAgICAg ZGF5c1ZpZXdIZWFkZXIuZXEoMCkuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7Cisg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghaXNWYWxp ZCh2aWV3RGF0ZS5jbG9uZSgpLmFkZCgxLCAnTScpLCAnTScpKSB7CisgICAg ICAgICAgICAgICAgICAgIGRheXNWaWV3SGVhZGVyLmVxKDIpLmFkZENsYXNz KCdkaXNhYmxlZCcpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg ICAgICAgIGN1cnJlbnREYXRlID0gdmlld0RhdGUuY2xvbmUoKS5zdGFydE9m KCdNJykuc3RhcnRPZigndycpLnN0YXJ0T2YoJ2QnKTsKKworICAgICAgICAg ICAgICAgIGZvciAoaSA9IDA7IGkgPCA0MjsgaSsrKSB7IC8vYWx3YXlzIGRp c3BsYXkgNDIgZGF5cyAoc2hvdWxkIHNob3cgNiB3ZWVrcykKKyAgICAgICAg ICAgICAgICAgICAgaWYgKGN1cnJlbnREYXRlLndlZWtkYXkoKSA9PT0gMCkg eworICAgICAgICAgICAgICAgICAgICAgICAgcm93ID0gJCgnPHRyPicpOwor ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuY2FsZW5kYXJX ZWVrcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5hcHBl bmQoJzx0ZCBjbGFzcz0iY3ciPicgKyBjdXJyZW50RGF0ZS53ZWVrKCkgKyAn PC90ZD4nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICAgICAgICAgIGh0bWwucHVzaChyb3cpOworICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNsc05hbWUgPSAnJzsK KyAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnREYXRlLmlzQmVmb3Jl KHZpZXdEYXRlLCAnTScpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBj bHNOYW1lICs9ICcgb2xkJzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICAgICBpZiAoY3VycmVudERhdGUuaXNBZnRlcih2aWV3 RGF0ZSwgJ00nKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xzTmFt ZSArPSAnIG5ldyc7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICAgICAgaWYgKGN1cnJlbnREYXRlLmlzU2FtZShkYXRlLCAnZCcp ICYmICF1bnNldCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xzTmFt ZSArPSAnIGFjdGl2ZSc7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKGN1cnJlbnREYXRlLCAnZCcp KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbHNOYW1lICs9ICcgZGlz YWJsZWQnOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgICAgIGlmIChjdXJyZW50RGF0ZS5pc1NhbWUoZ2V0TW9tZW50KCksICdk JykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsc05hbWUgKz0gJyB0 b2RheSc7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgICAgaWYgKGN1cnJlbnREYXRlLmRheSgpID09PSAwIHx8IGN1cnJlbnRE YXRlLmRheSgpID09PSA2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBj bHNOYW1lICs9ICcgd2Vla2VuZCc7CisgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgICAgcm93LmFwcGVuZCgnPHRkIGRhdGEtYWN0 aW9uPSJzZWxlY3REYXkiIGRhdGEtZGF5PSInICsgY3VycmVudERhdGUuZm9y bWF0KCdMJykgKyAnIiBjbGFzcz0iZGF5JyArIGNsc05hbWUgKyAnIj4nICsg Y3VycmVudERhdGUuZGF0ZSgpICsgJzwvdGQ+Jyk7CisgICAgICAgICAgICAg ICAgICAgIGN1cnJlbnREYXRlLmFkZCgxLCAnZCcpOworICAgICAgICAgICAg ICAgIH0KKworICAgICAgICAgICAgICAgIGRheXNWaWV3LmZpbmQoJ3Rib2R5 JykuZW1wdHkoKS5hcHBlbmQoaHRtbCk7CisKKyAgICAgICAgICAgICAgICB1 cGRhdGVNb250aHMoKTsKKworICAgICAgICAgICAgICAgIHVwZGF0ZVllYXJz KCk7CisKKyAgICAgICAgICAgICAgICB1cGRhdGVEZWNhZGVzKCk7CisgICAg ICAgICAgICB9LAorCisgICAgICAgICAgICBmaWxsSG91cnMgPSBmdW5jdGlv biAoKSB7CisgICAgICAgICAgICAgICAgdmFyIHRhYmxlID0gd2lkZ2V0LmZp bmQoJy50aW1lcGlja2VyLWhvdXJzIHRhYmxlJyksCisgICAgICAgICAgICAg ICAgICAgIGN1cnJlbnRIb3VyID0gdmlld0RhdGUuY2xvbmUoKS5zdGFydE9m KCdkJyksCisgICAgICAgICAgICAgICAgICAgIGh0bWwgPSBbXSwKKyAgICAg ICAgICAgICAgICAgICAgcm93ID0gJCgnPHRyPicpOworCisgICAgICAgICAg ICAgICAgaWYgKHZpZXdEYXRlLmhvdXIoKSA+IDExICYmICF1c2UyNEhvdXJz KSB7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRIb3VyLmhvdXIoMTIp OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3aGlsZSAo Y3VycmVudEhvdXIuaXNTYW1lKHZpZXdEYXRlLCAnZCcpICYmICh1c2UyNEhv dXJzIHx8ICh2aWV3RGF0ZS5ob3VyKCkgPCAxMiAmJiBjdXJyZW50SG91ci5o b3VyKCkgPCAxMikgfHwgdmlld0RhdGUuaG91cigpID4gMTEpKSB7CisgICAg ICAgICAgICAgICAgICAgIGlmIChjdXJyZW50SG91ci5ob3VyKCkgJSA0ID09 PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByb3cgPSAkKCc8dHI+ Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICBodG1sLnB1c2gocm93KTsK KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBy b3cuYXBwZW5kKCc8dGQgZGF0YS1hY3Rpb249InNlbGVjdEhvdXIiIGNsYXNz PSJob3VyJyArICghaXNWYWxpZChjdXJyZW50SG91ciwgJ2gnKSA/ICcgZGlz YWJsZWQnIDogJycpICsgJyI+JyArIGN1cnJlbnRIb3VyLmZvcm1hdCh1c2Uy NEhvdXJzID8gJ0hIJyA6ICdoaCcpICsgJzwvdGQ+Jyk7CisgICAgICAgICAg ICAgICAgICAgIGN1cnJlbnRIb3VyLmFkZCgxLCAnaCcpOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICB0YWJsZS5lbXB0eSgpLmFwcGVu ZChodG1sKTsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIGZpbGxN aW51dGVzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHZhciB0 YWJsZSA9IHdpZGdldC5maW5kKCcudGltZXBpY2tlci1taW51dGVzIHRhYmxl JyksCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNaW51dGUgPSB2aWV3 RGF0ZS5jbG9uZSgpLnN0YXJ0T2YoJ2gnKSwKKyAgICAgICAgICAgICAgICAg ICAgaHRtbCA9IFtdLAorICAgICAgICAgICAgICAgICAgICByb3cgPSAkKCc8 dHI+JyksCisgICAgICAgICAgICAgICAgICAgIHN0ZXAgPSBvcHRpb25zLnN0 ZXBwaW5nID09PSAxID8gNSA6IG9wdGlvbnMuc3RlcHBpbmc7CisKKyAgICAg ICAgICAgICAgICB3aGlsZSAodmlld0RhdGUuaXNTYW1lKGN1cnJlbnRNaW51 dGUsICdoJykpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRN aW51dGUubWludXRlKCkgJSAoc3RlcCAqIDQpID09PSAwKSB7CisgICAgICAg ICAgICAgICAgICAgICAgICByb3cgPSAkKCc8dHI+Jyk7CisgICAgICAgICAg ICAgICAgICAgICAgICBodG1sLnB1c2gocm93KTsKKyAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgICAgICByb3cuYXBwZW5kKCc8dGQg ZGF0YS1hY3Rpb249InNlbGVjdE1pbnV0ZSIgY2xhc3M9Im1pbnV0ZScgKyAo IWlzVmFsaWQoY3VycmVudE1pbnV0ZSwgJ20nKSA/ICcgZGlzYWJsZWQnIDog JycpICsgJyI+JyArIGN1cnJlbnRNaW51dGUuZm9ybWF0KCdtbScpICsgJzwv dGQ+Jyk7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNaW51dGUuYWRk KHN0ZXAsICdtJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgIHRhYmxlLmVtcHR5KCkuYXBwZW5kKGh0bWwpOworICAgICAgICAgICAg fSwKKworICAgICAgICAgICAgZmlsbFNlY29uZHMgPSBmdW5jdGlvbiAoKSB7 CisgICAgICAgICAgICAgICAgdmFyIHRhYmxlID0gd2lkZ2V0LmZpbmQoJy50 aW1lcGlja2VyLXNlY29uZHMgdGFibGUnKSwKKyAgICAgICAgICAgICAgICAg ICAgY3VycmVudFNlY29uZCA9IHZpZXdEYXRlLmNsb25lKCkuc3RhcnRPZign bScpLAorICAgICAgICAgICAgICAgICAgICBodG1sID0gW10sCisgICAgICAg ICAgICAgICAgICAgIHJvdyA9ICQoJzx0cj4nKTsKKworICAgICAgICAgICAg ICAgIHdoaWxlICh2aWV3RGF0ZS5pc1NhbWUoY3VycmVudFNlY29uZCwgJ20n KSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFNlY29uZC5z ZWNvbmQoKSAlIDIwID09PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAg ICByb3cgPSAkKCc8dHI+Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICBo dG1sLnB1c2gocm93KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgICAgICByb3cuYXBwZW5kKCc8dGQgZGF0YS1hY3Rpb249InNl bGVjdFNlY29uZCIgY2xhc3M9InNlY29uZCcgKyAoIWlzVmFsaWQoY3VycmVu dFNlY29uZCwgJ3MnKSA/ICcgZGlzYWJsZWQnIDogJycpICsgJyI+JyArIGN1 cnJlbnRTZWNvbmQuZm9ybWF0KCdzcycpICsgJzwvdGQ+Jyk7CisgICAgICAg ICAgICAgICAgICAgIGN1cnJlbnRTZWNvbmQuYWRkKDUsICdzJyk7CisgICAg ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGFibGUuZW1wdHko KS5hcHBlbmQoaHRtbCk7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAg ICBmaWxsVGltZSA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2 YXIgdG9nZ2xlLCBuZXdEYXRlLCB0aW1lQ29tcG9uZW50cyA9IHdpZGdldC5m aW5kKCcudGltZXBpY2tlciBzcGFuW2RhdGEtdGltZS1jb21wb25lbnRdJyk7 CisKKyAgICAgICAgICAgICAgICBpZiAoIXVzZTI0SG91cnMpIHsKKyAgICAg ICAgICAgICAgICAgICAgdG9nZ2xlID0gd2lkZ2V0LmZpbmQoJy50aW1lcGlj a2VyIFtkYXRhLWFjdGlvbj10b2dnbGVQZXJpb2RdJyk7CisgICAgICAgICAg ICAgICAgICAgIG5ld0RhdGUgPSBkYXRlLmNsb25lKCkuYWRkKChkYXRlLmhv dXJzKCkgPj0gMTIpID8gLTEyIDogMTIsICdoJyk7CisKKyAgICAgICAgICAg ICAgICAgICAgdG9nZ2xlLnRleHQoZGF0ZS5mb3JtYXQoJ0EnKSk7CisKKyAg ICAgICAgICAgICAgICAgICAgaWYgKGlzVmFsaWQobmV3RGF0ZSwgJ2gnKSkg eworICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlLnJlbW92ZUNsYXNz KCdkaXNhYmxlZCcpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor ICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlLmFkZENsYXNzKCdkaXNh YmxlZCcpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgIHRpbWVDb21wb25lbnRzLmZpbHRlcign W2RhdGEtdGltZS1jb21wb25lbnQ9aG91cnNdJykudGV4dChkYXRlLmZvcm1h dCh1c2UyNEhvdXJzID8gJ0hIJyA6ICdoaCcpKTsKKyAgICAgICAgICAgICAg ICB0aW1lQ29tcG9uZW50cy5maWx0ZXIoJ1tkYXRhLXRpbWUtY29tcG9uZW50 PW1pbnV0ZXNdJykudGV4dChkYXRlLmZvcm1hdCgnbW0nKSk7CisgICAgICAg ICAgICAgICAgdGltZUNvbXBvbmVudHMuZmlsdGVyKCdbZGF0YS10aW1lLWNv bXBvbmVudD1zZWNvbmRzXScpLnRleHQoZGF0ZS5mb3JtYXQoJ3NzJykpOwor CisgICAgICAgICAgICAgICAgZmlsbEhvdXJzKCk7CisgICAgICAgICAgICAg ICAgZmlsbE1pbnV0ZXMoKTsKKyAgICAgICAgICAgICAgICBmaWxsU2Vjb25k cygpOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgdXBkYXRlID0g ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGlmICghd2lkZ2V0KSB7 CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgZmlsbERhdGUoKTsKKyAgICAgICAgICAg ICAgICBmaWxsVGltZSgpOworICAgICAgICAgICAgfSwKKworICAgICAgICAg ICAgc2V0VmFsdWUgPSBmdW5jdGlvbiAodGFyZ2V0TW9tZW50KSB7CisgICAg ICAgICAgICAgICAgdmFyIG9sZERhdGUgPSB1bnNldCA/IG51bGwgOiBkYXRl OworCisgICAgICAgICAgICAgICAgLy8gY2FzZSBvZiBjYWxsaW5nIHNldFZh bHVlKG51bGwgb3IgZmFsc2UpCisgICAgICAgICAgICAgICAgaWYgKCF0YXJn ZXRNb21lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgdW5zZXQgPSB0cnVl OworICAgICAgICAgICAgICAgICAgICBpbnB1dC52YWwoJycpOworICAgICAg ICAgICAgICAgICAgICBlbGVtZW50LmRhdGEoJ2RhdGUnLCAnJyk7CisgICAg ICAgICAgICAgICAgICAgIG5vdGlmeUV2ZW50KHsKKyAgICAgICAgICAgICAg ICAgICAgICAgIHR5cGU6ICdkcC5jaGFuZ2UnLAorICAgICAgICAgICAgICAg ICAgICAgICAgZGF0ZTogZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAg ICBvbGREYXRlOiBvbGREYXRlCisgICAgICAgICAgICAgICAgICAgIH0pOwor ICAgICAgICAgICAgICAgICAgICB1cGRhdGUoKTsKKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg ICAgICAgIHRhcmdldE1vbWVudCA9IHRhcmdldE1vbWVudC5jbG9uZSgpLmxv Y2FsZShvcHRpb25zLmxvY2FsZSk7CisKKyAgICAgICAgICAgICAgICBpZiAo aGFzVGltZVpvbmUoKSkgeworICAgICAgICAgICAgICAgICAgICB0YXJnZXRN b21lbnQudHoob3B0aW9ucy50aW1lWm9uZSk7CisgICAgICAgICAgICAgICAg fQorCisgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuc3RlcHBpbmcgIT09 IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TW9tZW50Lm1pbnV0 ZXMoKE1hdGgucm91bmQodGFyZ2V0TW9tZW50Lm1pbnV0ZXMoKSAvIG9wdGlv bnMuc3RlcHBpbmcpICogb3B0aW9ucy5zdGVwcGluZykpLnNlY29uZHMoMCk7 CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGlz VmFsaWQodGFyZ2V0TW9tZW50KSkgeworICAgICAgICAgICAgICAgICAgICBk YXRlID0gdGFyZ2V0TW9tZW50OworICAgICAgICAgICAgICAgICAgICAvL3Zp ZXdEYXRlID0gZGF0ZS5jbG9uZSgpOyAvLyBUT0RPIHRoaXMgZG9lc24ndCB3 b3JrIHJpZ2h0IG9uIGZpcnN0IHVzZQorICAgICAgICAgICAgICAgICAgICBp bnB1dC52YWwoZGF0ZS5mb3JtYXQoYWN0dWFsRm9ybWF0KSk7CisgICAgICAg ICAgICAgICAgICAgIGVsZW1lbnQuZGF0YSgnZGF0ZScsIGRhdGUuZm9ybWF0 KGFjdHVhbEZvcm1hdCkpOworICAgICAgICAgICAgICAgICAgICB1bnNldCA9 IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB1cGRhdGUoKTsKKyAgICAg ICAgICAgICAgICAgICAgbm90aWZ5RXZlbnQoeworICAgICAgICAgICAgICAg ICAgICAgICAgdHlwZTogJ2RwLmNoYW5nZScsCisgICAgICAgICAgICAgICAg ICAgICAgICBkYXRlOiBkYXRlLmNsb25lKCksCisgICAgICAgICAgICAgICAg ICAgICAgICBvbGREYXRlOiBvbGREYXRlCisgICAgICAgICAgICAgICAgICAg IH0pOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg ICAgICAgIGlmICghb3B0aW9ucy5rZWVwSW52YWxpZCkgeworICAgICAgICAg ICAgICAgICAgICAgICAgaW5wdXQudmFsKHVuc2V0ID8gJycgOiBkYXRlLmZv cm1hdChhY3R1YWxGb3JtYXQpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmeUV2ZW50KHsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZHAuY2hhbmdl JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlOiB0YXJnZXRN b21lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkRGF0ZTog b2xkRGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbm90aWZ5RXZl bnQoeworICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2RwLmVycm9y JywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGU6IHRhcmdldE1vbWVu dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZERhdGU6IG9sZERhdGUK KyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgLyoqCisgICAgICAgICAg ICAgKiBIaWRlcyB0aGUgd2lkZ2V0LiBQb3NzaWJseSB3aWxsIGVtaXQgZHAu aGlkZQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBoaWRlID0gZnVu Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHZhciB0cmFuc2l0aW9uaW5n ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKCF3aWRnZXQpIHsKKyAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjsKKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgLy8gSWdub3JlIGV2ZW50IGlmIGlu IHRoZSBtaWRkbGUgb2YgYSBwaWNrZXIgdHJhbnNpdGlvbgorICAgICAgICAg ICAgICAgIHdpZGdldC5maW5kKCcuY29sbGFwc2UnKS5lYWNoKGZ1bmN0aW9u ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGNvbGxhcHNlRGF0YSA9 ICQodGhpcykuZGF0YSgnY29sbGFwc2UnKTsKKyAgICAgICAgICAgICAgICAg ICAgaWYgKGNvbGxhcHNlRGF0YSAmJiBjb2xsYXBzZURhdGEudHJhbnNpdGlv bmluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbmlu ZyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg ICAgICAgICAgaWYgKHRyYW5zaXRpb25pbmcpIHsKKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIHBpY2tlcjsKKyAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgaWYgKGNvbXBvbmVudCAmJiBjb21wb25lbnQuaGFzQ2xh c3MoJ2J0bicpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC50 b2dnbGVDbGFzcygnYWN0aXZlJyk7CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgIHdpZGdldC5oaWRlKCk7CisKKyAgICAgICAgICAgICAg ICAkKHdpbmRvdykub2ZmKCdyZXNpemUnLCBwbGFjZSk7CisgICAgICAgICAg ICAgICAgd2lkZ2V0Lm9mZignY2xpY2snLCAnW2RhdGEtYWN0aW9uXScpOwor ICAgICAgICAgICAgICAgIHdpZGdldC5vZmYoJ21vdXNlZG93bicsIGZhbHNl KTsKKworICAgICAgICAgICAgICAgIHdpZGdldC5yZW1vdmUoKTsKKyAgICAg ICAgICAgICAgICB3aWRnZXQgPSBmYWxzZTsKKworICAgICAgICAgICAgICAg IG5vdGlmeUV2ZW50KHsKKyAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Rw LmhpZGUnLAorICAgICAgICAgICAgICAgICAgICBkYXRlOiBkYXRlLmNsb25l KCkKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGlu cHV0LmJsdXIoKTsKKworICAgICAgICAgICAgICAgIGN1cnJlbnRWaWV3TW9k ZSA9IDA7CisgICAgICAgICAgICAgICAgdmlld0RhdGUgPSBkYXRlLmNsb25l KCk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gcGlja2VyOworICAgICAg ICAgICAgfSwKKworICAgICAgICAgICAgY2xlYXIgPSBmdW5jdGlvbiAoKSB7 CisgICAgICAgICAgICAgICAgc2V0VmFsdWUobnVsbCk7CisgICAgICAgICAg ICB9LAorCisgICAgICAgICAgICBwYXJzZUlucHV0RGF0ZSA9IGZ1bmN0aW9u IChpbnB1dERhdGUpIHsKKyAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5w YXJzZUlucHV0RGF0ZSA9PT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICAg ICAgICAgIGlmICghbW9tZW50LmlzTW9tZW50KGlucHV0RGF0ZSkpIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgIGlucHV0RGF0ZSA9IGdldE1vbWVudChp bnB1dERhdGUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaW5wdXREYXRl ID0gb3B0aW9ucy5wYXJzZUlucHV0RGF0ZShpbnB1dERhdGUpOworICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvL2lucHV0RGF0ZS5sb2Nh bGUob3B0aW9ucy5sb2NhbGUpOworICAgICAgICAgICAgICAgIHJldHVybiBp bnB1dERhdGU7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgICAgICAg ICAqCisgICAgICAgICAgICAgKiBXaWRnZXQgVUkgaW50ZXJhY3Rpb24gZnVu Y3Rpb25zCisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgICAgICAgICAgYWN0 aW9ucyA9IHsKKyAgICAgICAgICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7 CisgICAgICAgICAgICAgICAgICAgIHZhciBuYXZGbmMgPSBkYXRlUGlja2Vy TW9kZXNbY3VycmVudFZpZXdNb2RlXS5uYXZGbmM7CisgICAgICAgICAgICAg ICAgICAgIHZpZXdEYXRlLmFkZChkYXRlUGlja2VyTW9kZXNbY3VycmVudFZp ZXdNb2RlXS5uYXZTdGVwLCBuYXZGbmMpOworICAgICAgICAgICAgICAgICAg ICBmaWxsRGF0ZSgpOworICAgICAgICAgICAgICAgICAgICB2aWV3VXBkYXRl KG5hdkZuYyk7CisgICAgICAgICAgICAgICAgfSwKKworICAgICAgICAgICAg ICAgIHByZXZpb3VzOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg ICAgIHZhciBuYXZGbmMgPSBkYXRlUGlja2VyTW9kZXNbY3VycmVudFZpZXdN b2RlXS5uYXZGbmM7CisgICAgICAgICAgICAgICAgICAgIHZpZXdEYXRlLnN1 YnRyYWN0KGRhdGVQaWNrZXJNb2Rlc1tjdXJyZW50Vmlld01vZGVdLm5hdlN0 ZXAsIG5hdkZuYyk7CisgICAgICAgICAgICAgICAgICAgIGZpbGxEYXRlKCk7 CisgICAgICAgICAgICAgICAgICAgIHZpZXdVcGRhdGUobmF2Rm5jKTsKKyAg ICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgcGlja2VyU3dp dGNoOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHNob3dN b2RlKDEpOworICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAg ICBzZWxlY3RNb250aDogZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgICAg ICAgICAgdmFyIG1vbnRoID0gJChlLnRhcmdldCkuY2xvc2VzdCgndGJvZHkn KS5maW5kKCdzcGFuJykuaW5kZXgoJChlLnRhcmdldCkpOworICAgICAgICAg ICAgICAgICAgICB2aWV3RGF0ZS5tb250aChtb250aCk7CisgICAgICAgICAg ICAgICAgICAgIGlmIChjdXJyZW50Vmlld01vZGUgPT09IG1pblZpZXdNb2Rl TnVtYmVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShk YXRlLmNsb25lKCkueWVhcih2aWV3RGF0ZS55ZWFyKCkpLm1vbnRoKHZpZXdE YXRlLm1vbnRoKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh b3B0aW9ucy5pbmxpbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBoaWRlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg ICBzaG93TW9kZSgtMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxs RGF0ZSgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgICAgIHZpZXdVcGRhdGUoJ00nKTsKKyAgICAgICAgICAgICAgICB9LAor CisgICAgICAgICAgICAgICAgc2VsZWN0WWVhcjogZnVuY3Rpb24gKGUpIHsK KyAgICAgICAgICAgICAgICAgICAgdmFyIHllYXIgPSBwYXJzZUludCgkKGUu dGFyZ2V0KS50ZXh0KCksIDEwKSB8fCAwOworICAgICAgICAgICAgICAgICAg ICB2aWV3RGF0ZS55ZWFyKHllYXIpOworICAgICAgICAgICAgICAgICAgICBp ZiAoY3VycmVudFZpZXdNb2RlID09PSBtaW5WaWV3TW9kZU51bWJlcikgewor ICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoZGF0ZS5jbG9uZSgp LnllYXIodmlld0RhdGUueWVhcigpKSk7CisgICAgICAgICAgICAgICAgICAg ICAgICBpZiAoIW9wdGlvbnMuaW5saW5lKSB7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaGlkZSgpOworICAgICAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg ICAgICAgICAgICAgc2hvd01vZGUoLTEpOworICAgICAgICAgICAgICAgICAg ICAgICAgZmlsbERhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICAgICB2aWV3VXBkYXRlKCdZWVlZJyk7CisgICAgICAg ICAgICAgICAgfSwKKworICAgICAgICAgICAgICAgIHNlbGVjdERlY2FkZTog ZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHllYXIg PSBwYXJzZUludCgkKGUudGFyZ2V0KS5kYXRhKCdzZWxlY3Rpb24nKSwgMTAp IHx8IDA7CisgICAgICAgICAgICAgICAgICAgIHZpZXdEYXRlLnllYXIoeWVh cik7CisgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Vmlld01vZGUg PT09IG1pblZpZXdNb2RlTnVtYmVyKSB7CisgICAgICAgICAgICAgICAgICAg ICAgICBzZXRWYWx1ZShkYXRlLmNsb25lKCkueWVhcih2aWV3RGF0ZS55ZWFy KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5p bmxpbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlKCk7 CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG93TW9k ZSgtMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxsRGF0ZSgpOwor ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHZp ZXdVcGRhdGUoJ1lZWVknKTsKKyAgICAgICAgICAgICAgICB9LAorCisgICAg ICAgICAgICAgICAgc2VsZWN0RGF5OiBmdW5jdGlvbiAoZSkgeworICAgICAg ICAgICAgICAgICAgICB2YXIgZGF5ID0gdmlld0RhdGUuY2xvbmUoKTsKKyAg ICAgICAgICAgICAgICAgICAgaWYgKCQoZS50YXJnZXQpLmlzKCcub2xkJykp IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRheS5zdWJ0cmFjdCgxLCAn TScpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg ICAgIGlmICgkKGUudGFyZ2V0KS5pcygnLm5ldycpKSB7CisgICAgICAgICAg ICAgICAgICAgICAgICBkYXkuYWRkKDEsICdNJyk7CisgICAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoZGF5LmRh dGUocGFyc2VJbnQoJChlLnRhcmdldCkudGV4dCgpLCAxMCkpKTsKKyAgICAg ICAgICAgICAgICAgICAgaWYgKCFoYXNUaW1lKCkgJiYgIW9wdGlvbnMua2Vl cE9wZW4gJiYgIW9wdGlvbnMuaW5saW5lKSB7CisgICAgICAgICAgICAgICAg ICAgICAgICBoaWRlKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgaW5jcmVtZW50SG91 cnM6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG5l d0RhdGUgPSBkYXRlLmNsb25lKCkuYWRkKDEsICdoJyk7CisgICAgICAgICAg ICAgICAgICAgIGlmIChpc1ZhbGlkKG5ld0RhdGUsICdoJykpIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKG5ld0RhdGUpOworICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKworICAgICAg ICAgICAgICAgIGluY3JlbWVudE1pbnV0ZXM6IGZ1bmN0aW9uICgpIHsKKyAg ICAgICAgICAgICAgICAgICAgdmFyIG5ld0RhdGUgPSBkYXRlLmNsb25lKCku YWRkKG9wdGlvbnMuc3RlcHBpbmcsICdtJyk7CisgICAgICAgICAgICAgICAg ICAgIGlmIChpc1ZhbGlkKG5ld0RhdGUsICdtJykpIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgIHNldFZhbHVlKG5ld0RhdGUpOworICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKworICAgICAgICAgICAg ICAgIGluY3JlbWVudFNlY29uZHM6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg ICAgICAgICAgICAgdmFyIG5ld0RhdGUgPSBkYXRlLmNsb25lKCkuYWRkKDEs ICdzJyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkKG5ld0Rh dGUsICdzJykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldFZhbHVl KG5ld0RhdGUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgfSwKKworICAgICAgICAgICAgICAgIGRlY3JlbWVudEhvdXJzOiBm dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBuZXdEYXRl ID0gZGF0ZS5jbG9uZSgpLnN1YnRyYWN0KDEsICdoJyk7CisgICAgICAgICAg ICAgICAgICAgIGlmIChpc1ZhbGlkKG5ld0RhdGUsICdoJykpIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKG5ld0RhdGUpOworICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKworICAgICAg ICAgICAgICAgIGRlY3JlbWVudE1pbnV0ZXM6IGZ1bmN0aW9uICgpIHsKKyAg ICAgICAgICAgICAgICAgICAgdmFyIG5ld0RhdGUgPSBkYXRlLmNsb25lKCku c3VidHJhY3Qob3B0aW9ucy5zdGVwcGluZywgJ20nKTsKKyAgICAgICAgICAg ICAgICAgICAgaWYgKGlzVmFsaWQobmV3RGF0ZSwgJ20nKSkgeworICAgICAg ICAgICAgICAgICAgICAgICAgc2V0VmFsdWUobmV3RGF0ZSk7CisgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAg ICAgICAgICAgZGVjcmVtZW50U2Vjb25kczogZnVuY3Rpb24gKCkgeworICAg ICAgICAgICAgICAgICAgICB2YXIgbmV3RGF0ZSA9IGRhdGUuY2xvbmUoKS5z dWJ0cmFjdCgxLCAncycpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNW YWxpZChuZXdEYXRlLCAncycpKSB7CisgICAgICAgICAgICAgICAgICAgICAg ICBzZXRWYWx1ZShuZXdEYXRlKTsKKyAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICB0b2dnbGVQ ZXJpb2Q6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0 VmFsdWUoZGF0ZS5jbG9uZSgpLmFkZCgoZGF0ZS5ob3VycygpID49IDEyKSA/ IC0xMiA6IDEyLCAnaCcpKTsKKyAgICAgICAgICAgICAgICB9LAorCisgICAg ICAgICAgICAgICAgdG9nZ2xlUGlja2VyOiBmdW5jdGlvbiAoZSkgeworICAg ICAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKGUudGFyZ2V0KSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICRwYXJlbnQgPSAkdGhpcy5jbG9zZXN0 KCd1bCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQgPSAk cGFyZW50LmZpbmQoJy5pbicpLAorICAgICAgICAgICAgICAgICAgICAgICAg Y2xvc2VkID0gJHBhcmVudC5maW5kKCcuY29sbGFwc2U6bm90KC5pbiknKSwK KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlRGF0YTsKKworICAg ICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kZWQgJiYgZXhwYW5kZWQubGVu Z3RoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZURhdGEg PSBleHBhbmRlZC5kYXRhKCdjb2xsYXBzZScpOworICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKGNvbGxhcHNlRGF0YSAmJiBjb2xsYXBzZURhdGEudHJh bnNpdGlvbmluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICAgICAgICAgIGlmIChleHBhbmRlZC5jb2xsYXBzZSkgeyAvLyBpZiBj b2xsYXBzZSBwbHVnaW4gaXMgYXZhaWxhYmxlIHRocm91Z2ggYm9vdHN0cmFw LmpzIHRoZW4gdXNlIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZXhwYW5kZWQuY29sbGFwc2UoJ2hpZGUnKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjbG9zZWQuY29sbGFwc2UoJ3Nob3cnKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIG90aGVyd2lzZSBqdXN0IHRv Z2dsZSBpbiBjbGFzcyBvbiB0aGUgdHdvIHZpZXdzCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZXhwYW5kZWQucmVtb3ZlQ2xhc3MoJ2luJyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VkLmFkZENsYXNzKCdp bicpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKCR0aGlzLmlzKCdzcGFuJykpIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAkdGhpcy50b2dnbGVDbGFzcyhvcHRpb25z Lmljb25zLnRpbWUgKyAnICcgKyBvcHRpb25zLmljb25zLmRhdGUpOworICAg ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAkdGhpcy5maW5kKCdzcGFuJykudG9nZ2xlQ2xhc3Mo b3B0aW9ucy5pY29ucy50aW1lICsgJyAnICsgb3B0aW9ucy5pY29ucy5kYXRl KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg ICAgICAgICAgICAgLy8gTk9URTogdW5jb21tZW50IGlmIHRvZ2dsZWQgc3Rh dGUgd2lsbCBiZSByZXN0b3JlZCBpbiBzaG93KCkKKyAgICAgICAgICAgICAg ICAgICAgICAgIC8vaWYgKGNvbXBvbmVudCkgeworICAgICAgICAgICAgICAg ICAgICAgICAgLy8gICAgY29tcG9uZW50LmZpbmQoJ3NwYW4nKS50b2dnbGVD bGFzcyhvcHRpb25zLmljb25zLnRpbWUgKyAnICcgKyBvcHRpb25zLmljb25z LmRhdGUpOworICAgICAgICAgICAgICAgICAgICAgICAgLy99CisgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAg ICAgICAgICAgc2hvd1BpY2tlcjogZnVuY3Rpb24gKCkgeworICAgICAgICAg ICAgICAgICAgICB3aWRnZXQuZmluZCgnLnRpbWVwaWNrZXIgPiBkaXY6bm90 KC50aW1lcGlja2VyLXBpY2tlciknKS5oaWRlKCk7CisgICAgICAgICAgICAg ICAgICAgIHdpZGdldC5maW5kKCcudGltZXBpY2tlciAudGltZXBpY2tlci1w aWNrZXInKS5zaG93KCk7CisgICAgICAgICAgICAgICAgfSwKKworICAgICAg ICAgICAgICAgIHNob3dIb3VyczogZnVuY3Rpb24gKCkgeworICAgICAgICAg ICAgICAgICAgICB3aWRnZXQuZmluZCgnLnRpbWVwaWNrZXIgLnRpbWVwaWNr ZXItcGlja2VyJykuaGlkZSgpOworICAgICAgICAgICAgICAgICAgICB3aWRn ZXQuZmluZCgnLnRpbWVwaWNrZXIgLnRpbWVwaWNrZXItaG91cnMnKS5zaG93 KCk7CisgICAgICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgICAgIHNo b3dNaW51dGVzOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg IHdpZGdldC5maW5kKCcudGltZXBpY2tlciAudGltZXBpY2tlci1waWNrZXIn KS5oaWRlKCk7CisgICAgICAgICAgICAgICAgICAgIHdpZGdldC5maW5kKCcu dGltZXBpY2tlciAudGltZXBpY2tlci1taW51dGVzJykuc2hvdygpOworICAg ICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICBzaG93U2Vjb25k czogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB3aWRnZXQu ZmluZCgnLnRpbWVwaWNrZXIgLnRpbWVwaWNrZXItcGlja2VyJykuaGlkZSgp OworICAgICAgICAgICAgICAgICAgICB3aWRnZXQuZmluZCgnLnRpbWVwaWNr ZXIgLnRpbWVwaWNrZXItc2Vjb25kcycpLnNob3coKTsKKyAgICAgICAgICAg ICAgICB9LAorCisgICAgICAgICAgICAgICAgc2VsZWN0SG91cjogZnVuY3Rp b24gKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGhvdXIgPSBwYXJz ZUludCgkKGUudGFyZ2V0KS50ZXh0KCksIDEwKTsKKworICAgICAgICAgICAg ICAgICAgICBpZiAoIXVzZTI0SG91cnMpIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgIGlmIChkYXRlLmhvdXJzKCkgPj0gMTIpIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiAoaG91ciAhPT0gMTIpIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaG91ciArPSAxMjsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICho b3VyID09PSAxMikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBob3VyID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoZGF0ZS5jbG9uZSgp LmhvdXJzKGhvdXIpKTsKKyAgICAgICAgICAgICAgICAgICAgYWN0aW9ucy5z aG93UGlja2VyLmNhbGwocGlja2VyKTsKKyAgICAgICAgICAgICAgICB9LAor CisgICAgICAgICAgICAgICAgc2VsZWN0TWludXRlOiBmdW5jdGlvbiAoZSkg eworICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShkYXRlLmNsb25lKCku bWludXRlcyhwYXJzZUludCgkKGUudGFyZ2V0KS50ZXh0KCksIDEwKSkpOwor ICAgICAgICAgICAgICAgICAgICBhY3Rpb25zLnNob3dQaWNrZXIuY2FsbChw aWNrZXIpOworICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAg ICBzZWxlY3RTZWNvbmQ6IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICAg ICAgICAgIHNldFZhbHVlKGRhdGUuY2xvbmUoKS5zZWNvbmRzKHBhcnNlSW50 KCQoZS50YXJnZXQpLnRleHQoKSwgMTApKSk7CisgICAgICAgICAgICAgICAg ICAgIGFjdGlvbnMuc2hvd1BpY2tlci5jYWxsKHBpY2tlcik7CisgICAgICAg ICAgICAgICAgfSwKKworICAgICAgICAgICAgICAgIGNsZWFyOiBjbGVhciwK KworICAgICAgICAgICAgICAgIHRvZGF5OiBmdW5jdGlvbiAoKSB7CisgICAg ICAgICAgICAgICAgICAgIHZhciB0b2RheXNEYXRlID0gZ2V0TW9tZW50KCk7 CisgICAgICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkKHRvZGF5c0RhdGUs ICdkJykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKHRv ZGF5c0RhdGUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgfSwKKworICAgICAgICAgICAgICAgIGNsb3NlOiBoaWRlCisgICAg ICAgICAgICB9LAorCisgICAgICAgICAgICBkb0FjdGlvbiA9IGZ1bmN0aW9u IChlKSB7CisgICAgICAgICAgICAgICAgaWYgKCQoZS5jdXJyZW50VGFyZ2V0 KS5pcygnLmRpc2FibGVkJykpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICBhY3Rpb25zWyQoZS5jdXJyZW50VGFyZ2V0KS5kYXRhKCdhY3Rpb24nKV0u YXBwbHkocGlja2VyLCBhcmd1bWVudHMpOworICAgICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIC8q KgorICAgICAgICAgICAgICogU2hvd3MgdGhlIHdpZGdldC4gUG9zc2libHkg d2lsbCBlbWl0IGRwLnNob3cgYW5kIGRwLmNoYW5nZQorICAgICAgICAgICAg ICovCisgICAgICAgICAgICBzaG93ID0gZnVuY3Rpb24gKCkgeworICAgICAg ICAgICAgICAgIHZhciBjdXJyZW50TW9tZW50LAorICAgICAgICAgICAgICAg ICAgICB1c2VDdXJyZW50R3JhbnVsYXJpdHkgPSB7CisgICAgICAgICAgICAg ICAgICAgICAgICAneWVhcic6IGZ1bmN0aW9uIChtKSB7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIG0ubW9udGgoMCkuZGF0ZSgxKS5o b3VycygwKS5zZWNvbmRzKDApLm1pbnV0ZXMoMCk7CisgICAgICAgICAgICAg ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgJ21vbnRo JzogZnVuY3Rpb24gKG0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gbS5kYXRlKDEpLmhvdXJzKDApLnNlY29uZHMoMCkubWludXRl cygwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg ICAgICAgICAgICAgICAnZGF5JzogZnVuY3Rpb24gKG0pIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbS5ob3VycygwKS5zZWNvbmRz KDApLm1pbnV0ZXMoMCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9LAor ICAgICAgICAgICAgICAgICAgICAgICAgJ2hvdXInOiBmdW5jdGlvbiAobSkg eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtLnNlY29u ZHMoMCkubWludXRlcygwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0s CisgICAgICAgICAgICAgICAgICAgICAgICAnbWludXRlJzogZnVuY3Rpb24g KG0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbS5z ZWNvbmRzKDApOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgaWYgKGlucHV0 LnByb3AoJ2Rpc2FibGVkJykgfHwgKCFvcHRpb25zLmlnbm9yZVJlYWRvbmx5 ICYmIGlucHV0LnByb3AoJ3JlYWRvbmx5JykpIHx8IHdpZGdldCkgeworICAg ICAgICAgICAgICAgICAgICByZXR1cm4gcGlja2VyOworICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaW5wdXQudmFsKCkgIT09IHVu ZGVmaW5lZCAmJiBpbnB1dC52YWwoKS50cmltKCkubGVuZ3RoICE9PSAwKSB7 CisgICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKHBhcnNlSW5wdXREYXRl KGlucHV0LnZhbCgpLnRyaW0oKSkpOworICAgICAgICAgICAgICAgIH0gZWxz ZSBpZiAodW5zZXQgJiYgb3B0aW9ucy51c2VDdXJyZW50ICYmIChvcHRpb25z LmlubGluZSB8fCAoaW5wdXQuaXMoJ2lucHV0JykgJiYgaW5wdXQudmFsKCku dHJpbSgpLmxlbmd0aCA9PT0gMCkpKSB7CisgICAgICAgICAgICAgICAgICAg IGN1cnJlbnRNb21lbnQgPSBnZXRNb21lbnQoKTsKKyAgICAgICAgICAgICAg ICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLnVzZUN1cnJlbnQgPT09ICdzdHJp bmcnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50TW9tZW50 ID0gdXNlQ3VycmVudEdyYW51bGFyaXR5W29wdGlvbnMudXNlQ3VycmVudF0o Y3VycmVudE1vbWVudCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICAgICAgc2V0VmFsdWUoY3VycmVudE1vbWVudCk7CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdpZGdldCA9IGdldFRl bXBsYXRlKCk7CisKKyAgICAgICAgICAgICAgICBmaWxsRG93KCk7CisgICAg ICAgICAgICAgICAgZmlsbE1vbnRocygpOworCisgICAgICAgICAgICAgICAg d2lkZ2V0LmZpbmQoJy50aW1lcGlja2VyLWhvdXJzJykuaGlkZSgpOworICAg ICAgICAgICAgICAgIHdpZGdldC5maW5kKCcudGltZXBpY2tlci1taW51dGVz JykuaGlkZSgpOworICAgICAgICAgICAgICAgIHdpZGdldC5maW5kKCcudGlt ZXBpY2tlci1zZWNvbmRzJykuaGlkZSgpOworCisgICAgICAgICAgICAgICAg dXBkYXRlKCk7CisgICAgICAgICAgICAgICAgc2hvd01vZGUoKTsKKworICAg ICAgICAgICAgICAgICQod2luZG93KS5vbigncmVzaXplJywgcGxhY2UpOwor ICAgICAgICAgICAgICAgIHdpZGdldC5vbignY2xpY2snLCAnW2RhdGEtYWN0 aW9uXScsIGRvQWN0aW9uKTsgLy8gdGhpcyBoYW5kbGVzIGNsaWNrcyBvbiB0 aGUgd2lkZ2V0CisgICAgICAgICAgICAgICAgd2lkZ2V0Lm9uKCdtb3VzZWRv d24nLCBmYWxzZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50 ICYmIGNvbXBvbmVudC5oYXNDbGFzcygnYnRuJykpIHsKKyAgICAgICAgICAg ICAgICAgICAgY29tcG9uZW50LnRvZ2dsZUNsYXNzKCdhY3RpdmUnKTsKKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcGxhY2UoKTsKKyAg ICAgICAgICAgICAgICB3aWRnZXQuc2hvdygpOworICAgICAgICAgICAgICAg IGlmIChvcHRpb25zLmZvY3VzT25TaG93ICYmICFpbnB1dC5pcygnOmZvY3Vz JykpIHsKKyAgICAgICAgICAgICAgICAgICAgaW5wdXQuZm9jdXMoKTsKKyAg ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBub3RpZnlFdmVu dCh7CisgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdkcC5zaG93JworICAg ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybiBwaWNr ZXI7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAvKioKKyAgICAg ICAgICAgICAqIFNob3dzIG9yIGhpZGVzIHRoZSB3aWRnZXQKKyAgICAgICAg ICAgICAqLworICAgICAgICAgICAgdG9nZ2xlID0gZnVuY3Rpb24gKCkgewor ICAgICAgICAgICAgICAgIHJldHVybiAod2lkZ2V0ID8gaGlkZSgpIDogc2hv dygpKTsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIGtleWRvd24g PSBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgICAgIHZhciBoYW5kbGVy ID0gbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgaW5kZXgsCisgICAgICAg ICAgICAgICAgICAgIGluZGV4MiwKKyAgICAgICAgICAgICAgICAgICAgcHJl c3NlZEtleXMgPSBbXSwKKyAgICAgICAgICAgICAgICAgICAgcHJlc3NlZE1v ZGlmaWVycyA9IHt9LAorICAgICAgICAgICAgICAgICAgICBjdXJyZW50S2V5 ID0gZS53aGljaCwKKyAgICAgICAgICAgICAgICAgICAga2V5QmluZEtleXMs CisgICAgICAgICAgICAgICAgICAgIGFsbE1vZGlmaWVyc1ByZXNzZWQsCisg ICAgICAgICAgICAgICAgICAgIHByZXNzZWQgPSAncCc7CisKKyAgICAgICAg ICAgICAgICBrZXlTdGF0ZVtjdXJyZW50S2V5XSA9IHByZXNzZWQ7CisKKyAg ICAgICAgICAgICAgICBmb3IgKGluZGV4IGluIGtleVN0YXRlKSB7CisgICAg ICAgICAgICAgICAgICAgIGlmIChrZXlTdGF0ZS5oYXNPd25Qcm9wZXJ0eShp bmRleCkgJiYga2V5U3RhdGVbaW5kZXhdID09PSBwcmVzc2VkKSB7CisgICAg ICAgICAgICAgICAgICAgICAgICBwcmVzc2VkS2V5cy5wdXNoKGluZGV4KTsK KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZUludChpbmRleCwg MTApICE9PSBjdXJyZW50S2V5KSB7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcHJlc3NlZE1vZGlmaWVyc1tpbmRleF0gPSB0cnVlOworICAgICAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZm9yIChpbmRl eCBpbiBvcHRpb25zLmtleUJpbmRzKSB7CisgICAgICAgICAgICAgICAgICAg IGlmIChvcHRpb25zLmtleUJpbmRzLmhhc093blByb3BlcnR5KGluZGV4KSAm JiB0eXBlb2YgKG9wdGlvbnMua2V5QmluZHNbaW5kZXhdKSA9PT0gJ2Z1bmN0 aW9uJykgeworICAgICAgICAgICAgICAgICAgICAgICAga2V5QmluZEtleXMg PSBpbmRleC5zcGxpdCgnICcpOworICAgICAgICAgICAgICAgICAgICAgICAg aWYgKGtleUJpbmRLZXlzLmxlbmd0aCA9PT0gcHJlc3NlZEtleXMubGVuZ3Ro ICYmIGtleU1hcFtjdXJyZW50S2V5XSA9PT0ga2V5QmluZEtleXNba2V5Qmlu ZEtleXMubGVuZ3RoIC0gMV0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhbGxNb2RpZmllcnNQcmVzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmb3IgKGluZGV4MiA9IGtleUJpbmRLZXlzLmxl bmd0aCAtIDI7IGluZGV4MiA+PSAwOyBpbmRleDItLSkgeworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShrZXlNYXBba2V5QmluZEtl eXNbaW5kZXgyXV0gaW4gcHJlc3NlZE1vZGlmaWVycykpIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbE1vZGlmaWVyc1ByZXNz ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlmIChhbGxNb2RpZmllcnNQcmVzc2VkKSB7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBvcHRp b25zLmtleUJpbmRzW2luZGV4XTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg aWYgKGhhbmRsZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlci5j YWxsKHBpY2tlciwgd2lkZ2V0KTsKKyAgICAgICAgICAgICAgICAgICAgZS5z dG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgZS5wcmV2 ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IH0sCisKKyAgICAgICAgICAgIGtleXVwID0gZnVuY3Rpb24gKGUpIHsKKyAg ICAgICAgICAgICAgICBrZXlTdGF0ZVtlLndoaWNoXSA9ICdyJzsKKyAgICAg ICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICAgICAg ICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0sCisKKyAg ICAgICAgICAgIGNoYW5nZSA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAg ICAgICAgdmFyIHZhbCA9ICQoZS50YXJnZXQpLnZhbCgpLnRyaW0oKSwKKyAg ICAgICAgICAgICAgICAgICAgcGFyc2VkRGF0ZSA9IHZhbCA/IHBhcnNlSW5w dXREYXRlKHZhbCkgOiBudWxsOworICAgICAgICAgICAgICAgIHNldFZhbHVl KHBhcnNlZERhdGUpOworICAgICAgICAgICAgICAgIGUuc3RvcEltbWVkaWF0 ZVByb3BhZ2F0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl OworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgYXR0YWNoRGF0ZVBp Y2tlckVsZW1lbnRFdmVudHMgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg ICAgICAgaW5wdXQub24oeworICAgICAgICAgICAgICAgICAgICAnY2hhbmdl JzogY2hhbmdlLAorICAgICAgICAgICAgICAgICAgICAnYmx1cic6IG9wdGlv bnMuZGVidWcgPyAnJyA6IGhpZGUsCisgICAgICAgICAgICAgICAgICAgICdr ZXlkb3duJzoga2V5ZG93biwKKyAgICAgICAgICAgICAgICAgICAgJ2tleXVw Jzoga2V5dXAsCisgICAgICAgICAgICAgICAgICAgICdmb2N1cyc6IG9wdGlv bnMuYWxsb3dJbnB1dFRvZ2dsZSA/IHNob3cgOiAnJworICAgICAgICAgICAg ICAgIH0pOworCisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuaXMoJ2lu cHV0JykpIHsKKyAgICAgICAgICAgICAgICAgICAgaW5wdXQub24oeworICAg ICAgICAgICAgICAgICAgICAgICAgJ2ZvY3VzJzogc2hvdworICAgICAgICAg ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNv bXBvbmVudCkgeworICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQub24o J2NsaWNrJywgdG9nZ2xlKTsKKyAgICAgICAgICAgICAgICAgICAgY29tcG9u ZW50Lm9uKCdtb3VzZWRvd24nLCBmYWxzZSk7CisgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgZGV0YWNoRGF0ZVBp Y2tlckVsZW1lbnRFdmVudHMgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg ICAgICAgaW5wdXQub2ZmKHsKKyAgICAgICAgICAgICAgICAgICAgJ2NoYW5n ZSc6IGNoYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgJ2JsdXInOiBibHVy LAorICAgICAgICAgICAgICAgICAgICAna2V5ZG93bic6IGtleWRvd24sCisg ICAgICAgICAgICAgICAgICAgICdrZXl1cCc6IGtleXVwLAorICAgICAgICAg ICAgICAgICAgICAnZm9jdXMnOiBvcHRpb25zLmFsbG93SW5wdXRUb2dnbGUg PyBoaWRlIDogJycKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAg ICAgICAgIGlmIChlbGVtZW50LmlzKCdpbnB1dCcpKSB7CisgICAgICAgICAg ICAgICAgICAgIGlucHV0Lm9mZih7CisgICAgICAgICAgICAgICAgICAgICAg ICAnZm9jdXMnOiBzaG93CisgICAgICAgICAgICAgICAgICAgIH0pOworICAg ICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50KSB7CisgICAgICAg ICAgICAgICAgICAgIGNvbXBvbmVudC5vZmYoJ2NsaWNrJywgdG9nZ2xlKTsK KyAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm9mZignbW91c2Vkb3du JywgZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0s CisKKyAgICAgICAgICAgIGluZGV4R2l2ZW5EYXRlcyA9IGZ1bmN0aW9uIChn aXZlbkRhdGVzQXJyYXkpIHsKKyAgICAgICAgICAgICAgICAvLyBTdG9yZSBn aXZlbiBlbmFibGVkRGF0ZXMgYW5kIGRpc2FibGVkRGF0ZXMgYXMga2V5cy4K KyAgICAgICAgICAgICAgICAvLyBUaGlzIHdheSB3ZSBjYW4gY2hlY2sgdGhl aXIgZXhpc3RlbmNlIGluIE8oMSkgdGltZSBpbnN0ZWFkIG9mIGxvb3Bpbmcg dGhyb3VnaCB3aG9sZSBhcnJheS4KKyAgICAgICAgICAgICAgICAvLyAoZm9y IGV4YW1wbGU6IG9wdGlvbnMuZW5hYmxlZERhdGVzWycyMDE0LTAyLTI3J10g PT09IHRydWUpCisgICAgICAgICAgICAgICAgdmFyIGdpdmVuRGF0ZXNJbmRl eGVkID0ge307CisgICAgICAgICAgICAgICAgJC5lYWNoKGdpdmVuRGF0ZXNB cnJheSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB2YXIg ZERhdGUgPSBwYXJzZUlucHV0RGF0ZSh0aGlzKTsKKyAgICAgICAgICAgICAg ICAgICAgaWYgKGREYXRlLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgICAg ICAgICAgICAgZ2l2ZW5EYXRlc0luZGV4ZWRbZERhdGUuZm9ybWF0KCdZWVlZ LU1NLUREJyldID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybiAoT2Jq ZWN0LmtleXMoZ2l2ZW5EYXRlc0luZGV4ZWQpLmxlbmd0aCkgPyBnaXZlbkRh dGVzSW5kZXhlZCA6IGZhbHNlOworICAgICAgICAgICAgfSwKKworICAgICAg ICAgICAgaW5kZXhHaXZlbkhvdXJzID0gZnVuY3Rpb24gKGdpdmVuSG91cnNB cnJheSkgeworICAgICAgICAgICAgICAgIC8vIFN0b3JlIGdpdmVuIGVuYWJs ZWRIb3VycyBhbmQgZGlzYWJsZWRIb3VycyBhcyBrZXlzLgorICAgICAgICAg ICAgICAgIC8vIFRoaXMgd2F5IHdlIGNhbiBjaGVjayB0aGVpciBleGlzdGVu Y2UgaW4gTygxKSB0aW1lIGluc3RlYWQgb2YgbG9vcGluZyB0aHJvdWdoIHdo b2xlIGFycmF5LgorICAgICAgICAgICAgICAgIC8vIChmb3IgZXhhbXBsZTog b3B0aW9ucy5lbmFibGVkSG91cnNbJzIwMTQtMDItMjcnXSA9PT0gdHJ1ZSkK KyAgICAgICAgICAgICAgICB2YXIgZ2l2ZW5Ib3Vyc0luZGV4ZWQgPSB7fTsK KyAgICAgICAgICAgICAgICAkLmVhY2goZ2l2ZW5Ib3Vyc0FycmF5LCBmdW5j dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGdpdmVuSG91cnNJbmRl eGVkW3RoaXNdID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg ICAgICAgICAgICByZXR1cm4gKE9iamVjdC5rZXlzKGdpdmVuSG91cnNJbmRl eGVkKS5sZW5ndGgpID8gZ2l2ZW5Ib3Vyc0luZGV4ZWQgOiBmYWxzZTsKKyAg ICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIGluaXRGb3JtYXR0aW5nID0g ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHZhciBmb3JtYXQgPSBv cHRpb25zLmZvcm1hdCB8fCAnTCBMVCc7CisKKyAgICAgICAgICAgICAgICBh Y3R1YWxGb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgvKFxbW15cW10qXF0pfChc XCk/KExUU3xMVHxMTD9MP0w/fGx7MSw0fSkvZywgZnVuY3Rpb24gKGZvcm1h dElucHV0KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBuZXdpbnB1dCA9 IGRhdGUubG9jYWxlRGF0YSgpLmxvbmdEYXRlRm9ybWF0KGZvcm1hdElucHV0 KSB8fCBmb3JtYXRJbnB1dDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IG5ld2lucHV0LnJlcGxhY2UoLyhcW1teXFtdKlxdKXwoXFwpPyhMVFN8TFR8 TEw/TD9MP3xsezEsNH0pL2csIGZ1bmN0aW9uIChmb3JtYXRJbnB1dDIpIHsg Ly90ZW1wIGZpeCBmb3IgIzc0MAorICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIGRhdGUubG9jYWxlRGF0YSgpLmxvbmdEYXRlRm9ybWF0KGZvcm1h dElucHV0MikgfHwgZm9ybWF0SW5wdXQyOworICAgICAgICAgICAgICAgICAg ICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKworCisgICAgICAgICAgICAg ICAgcGFyc2VGb3JtYXRzID0gb3B0aW9ucy5leHRyYUZvcm1hdHMgPyBvcHRp b25zLmV4dHJhRm9ybWF0cy5zbGljZSgpIDogW107CisgICAgICAgICAgICAg ICAgaWYgKHBhcnNlRm9ybWF0cy5pbmRleE9mKGZvcm1hdCkgPCAwICYmIHBh cnNlRm9ybWF0cy5pbmRleE9mKGFjdHVhbEZvcm1hdCkgPCAwKSB7CisgICAg ICAgICAgICAgICAgICAgIHBhcnNlRm9ybWF0cy5wdXNoKGFjdHVhbEZvcm1h dCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdXNl MjRIb3VycyA9IChhY3R1YWxGb3JtYXQudG9Mb3dlckNhc2UoKS5pbmRleE9m KCdhJykgPCAxICYmIGFjdHVhbEZvcm1hdC5yZXBsYWNlKC9cWy4qP1xdL2cs ICcnKS5pbmRleE9mKCdoJykgPCAxKTsKKworICAgICAgICAgICAgICAgIGlm IChpc0VuYWJsZWQoJ3knKSkgeworICAgICAgICAgICAgICAgICAgICBtaW5W aWV3TW9kZU51bWJlciA9IDI7CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIGlmIChpc0VuYWJsZWQoJ00nKSkgeworICAgICAgICAgICAg ICAgICAgICBtaW5WaWV3TW9kZU51bWJlciA9IDE7CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgIGlmIChpc0VuYWJsZWQoJ2QnKSkgewor ICAgICAgICAgICAgICAgICAgICBtaW5WaWV3TW9kZU51bWJlciA9IDA7Cisg ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY3VycmVudFZp ZXdNb2RlID0gTWF0aC5tYXgobWluVmlld01vZGVOdW1iZXIsIGN1cnJlbnRW aWV3TW9kZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoIXVuc2V0KSB7Cisg ICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKGRhdGUpOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICAgICAqCisgICAg ICAgICAqIFB1YmxpYyBBUEkgZnVuY3Rpb25zCisgICAgICAgICAqID09PT09 PT09PT09PT09PT09PT09PQorICAgICAgICAgKgorICAgICAgICAgKiBJbXBv cnRhbnQ6IERvIG5vdCBleHBvc2UgZGlyZWN0IHJlZmVyZW5jZXMgdG8gcHJp dmF0ZSBvYmplY3RzIG9yIHRoZSBvcHRpb25zCisgICAgICAgICAqIG9iamVj dCB0byB0aGUgb3V0ZXIgd29ybGQuIEFsd2F5cyByZXR1cm4gYSBjbG9uZSB3 aGVuIHJldHVybmluZyB2YWx1ZXMgb3IgbWFrZQorICAgICAgICAgKiBhIGNs b25lIHdoZW4gc2V0dGluZyBhIHByaXZhdGUgdmFyaWFibGUuCisgICAgICAg ICAqCisgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKyAgICAgICAgcGlja2VyLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7 CisgICAgICAgICAgICAvLy88c3VtbWFyeT5EZXN0cm95cyB0aGUgd2lkZ2V0 IGFuZCByZW1vdmVzIGFsbCBhdHRhY2hlZCBldmVudCBsaXN0ZW5lcnM8L3N1 bW1hcnk+CisgICAgICAgICAgICBoaWRlKCk7CisgICAgICAgICAgICBkZXRh Y2hEYXRlUGlja2VyRWxlbWVudEV2ZW50cygpOworICAgICAgICAgICAgZWxl bWVudC5yZW1vdmVEYXRhKCdEYXRlVGltZVBpY2tlcicpOworICAgICAgICAg ICAgZWxlbWVudC5yZW1vdmVEYXRhKCdkYXRlJyk7CisgICAgICAgIH07CisK KyAgICAgICAgcGlja2VyLnRvZ2dsZSA9IHRvZ2dsZTsKKworICAgICAgICBw aWNrZXIuc2hvdyA9IHNob3c7CisKKyAgICAgICAgcGlja2VyLmhpZGUgPSBo aWRlOworCisgICAgICAgIHBpY2tlci5kaXNhYmxlID0gZnVuY3Rpb24gKCkg eworICAgICAgICAgICAgLy8vPHN1bW1hcnk+RGlzYWJsZXMgdGhlIGlucHV0 IGVsZW1lbnQsIHRoZSBjb21wb25lbnQgaXMgYXR0YWNoZWQgdG8sIGJ5IGFk ZGluZyBhIGRpc2FibGVkPSJ0cnVlIiBhdHRyaWJ1dGUgdG8gaXQuCisgICAg ICAgICAgICAvLy9JZiB0aGUgd2lkZ2V0IHdhcyB2aXNpYmxlIGJlZm9yZSB0 aGF0IGNhbGwgaXQgaXMgaGlkZGVuLiBQb3NzaWJseSBlbWl0cyBkcC5oaWRl PC9zdW1tYXJ5PgorICAgICAgICAgICAgaGlkZSgpOworICAgICAgICAgICAg aWYgKGNvbXBvbmVudCAmJiBjb21wb25lbnQuaGFzQ2xhc3MoJ2J0bicpKSB7 CisgICAgICAgICAgICAgICAgY29tcG9uZW50LmFkZENsYXNzKCdkaXNhYmxl ZCcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5wdXQucHJvcCgn ZGlzYWJsZWQnLCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBwaWNrZXI7 CisgICAgICAgIH07CisKKyAgICAgICAgcGlja2VyLmVuYWJsZSA9IGZ1bmN0 aW9uICgpIHsKKyAgICAgICAgICAgIC8vLzxzdW1tYXJ5PkVuYWJsZXMgdGhl IGlucHV0IGVsZW1lbnQsIHRoZSBjb21wb25lbnQgaXMgYXR0YWNoZWQgdG8s IGJ5IHJlbW92aW5nIGRpc2FibGVkIGF0dHJpYnV0ZSBmcm9tIGl0Ljwvc3Vt bWFyeT4KKyAgICAgICAgICAgIGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50 Lmhhc0NsYXNzKCdidG4nKSkgeworICAgICAgICAgICAgICAgIGNvbXBvbmVu dC5yZW1vdmVDbGFzcygnZGlzYWJsZWQnKTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIGlucHV0LnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOworICAg ICAgICAgICAgcmV0dXJuIHBpY2tlcjsKKyAgICAgICAgfTsKKworICAgICAg ICBwaWNrZXIuaWdub3JlUmVhZG9ubHkgPSBmdW5jdGlvbiAoaWdub3JlUmVh ZG9ubHkpIHsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09 PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuaWdub3Jl UmVhZG9ubHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodHlw ZW9mIGlnbm9yZVJlYWRvbmx5ICE9PSAnYm9vbGVhbicpIHsKKyAgICAgICAg ICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpZ25vcmVSZWFkb25seSAo KSBleHBlY3RzIGEgYm9vbGVhbiBwYXJhbWV0ZXInKTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICAgIG9wdGlvbnMuaWdub3JlUmVhZG9ubHkgPSBpZ25v cmVSZWFkb25seTsKKyAgICAgICAgICAgIHJldHVybiBwaWNrZXI7CisgICAg ICAgIH07CisKKyAgICAgICAgcGlja2VyLm9wdGlvbnMgPSBmdW5jdGlvbiAo bmV3T3B0aW9ucykgeworICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5n dGggPT09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJC5leHRlbmQo dHJ1ZSwge30sIG9wdGlvbnMpOworICAgICAgICAgICAgfQorCisgICAgICAg ICAgICBpZiAoIShuZXdPcHRpb25zIGluc3RhbmNlb2YgT2JqZWN0KSkgewor ICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMo KSBvcHRpb25zIHBhcmFtZXRlciBzaG91bGQgYmUgYW4gb2JqZWN0Jyk7Cisg ICAgICAgICAgICB9CisgICAgICAgICAgICAkLmV4dGVuZCh0cnVlLCBvcHRp b25zLCBuZXdPcHRpb25zKTsKKyAgICAgICAgICAgICQuZWFjaChvcHRpb25z LCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkgeworICAgICAgICAgICAgICAgIGlm IChwaWNrZXJba2V5XSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICAg ICAgICAgIHBpY2tlcltrZXldKHZhbHVlKTsKKyAgICAgICAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVy cm9yKCdvcHRpb24gJyArIGtleSArICcgaXMgbm90IHJlY29nbml6ZWQhJyk7 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAg ICAgICByZXR1cm4gcGlja2VyOworICAgICAgICB9OworCisgICAgICAgIHBp Y2tlci5kYXRlID0gZnVuY3Rpb24gKG5ld0RhdGUpIHsKKyAgICAgICAgICAg IC8vLzxzaWduYXR1cmUgaGVscEtleXdvcmQ9IiQuZm4uZGF0ZXRpbWVwaWNr ZXIuZGF0ZSI+CisgICAgICAgICAgICAvLy88c3VtbWFyeT5SZXR1cm5zIHRo ZSBjb21wb25lbnQncyBtb2RlbCBjdXJyZW50IGRhdGUsIGEgbW9tZW50IG9i amVjdCBvciBudWxsIGlmIG5vdCBzZXQuPC9zdW1tYXJ5PgorICAgICAgICAg ICAgLy8vPHJldHVybnMgdHlwZT0iTW9tZW50Ij5kYXRlLmNsb25lKCk8L3Jl dHVybnM+CisgICAgICAgICAgICAvLy88L3NpZ25hdHVyZT4KKyAgICAgICAg ICAgIC8vLzxzaWduYXR1cmU+CisgICAgICAgICAgICAvLy88c3VtbWFyeT5T ZXRzIHRoZSBjb21wb25lbnRzIG1vZGVsIGN1cnJlbnQgbW9tZW50IHRvIGl0 LiBQYXNzaW5nIGEgbnVsbCB2YWx1ZSB1bnNldHMgdGhlIGNvbXBvbmVudHMg bW9kZWwgY3VycmVudCBtb21lbnQuIFBhcnNpbmcgb2YgdGhlIG5ld0RhdGUg cGFyYW1ldGVyIGlzIG1hZGUgdXNpbmcgbW9tZW50IGxpYnJhcnkgd2l0aCB0 aGUgb3B0aW9ucy5mb3JtYXQgYW5kIG9wdGlvbnMudXNlU3RyaWN0IGNvbXBv bmVudHMgY29uZmlndXJhdGlvbi48L3N1bW1hcnk+CisgICAgICAgICAgICAv Ly88cGFyYW0gbmFtZT0ibmV3RGF0ZSIgbG9jaWQ9IiQuZm4uZGF0ZXRpbWVw aWNrZXIuZGF0ZV9wOm5ld0RhdGUiPlRha2VzIHN0cmluZywgRGF0ZSwgbW9t ZW50LCBudWxsIHBhcmFtZXRlci48L3BhcmFtPgorICAgICAgICAgICAgLy8v PC9zaWduYXR1cmU+CisgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0 aCA9PT0gMCkgeworICAgICAgICAgICAgICAgIGlmICh1bnNldCkgeworICAg ICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGUuY2xvbmUoKTsKKyAg ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG5ld0RhdGUgIT09IG51 bGwgJiYgdHlwZW9mIG5ld0RhdGUgIT09ICdzdHJpbmcnICYmICFtb21lbnQu aXNNb21lbnQobmV3RGF0ZSkgJiYgIShuZXdEYXRlIGluc3RhbmNlb2YgRGF0 ZSkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdk YXRlKCkgcGFyYW1ldGVyIG11c3QgYmUgb25lIG9mIFtudWxsLCBzdHJpbmcs IG1vbWVudCBvciBEYXRlXScpOworICAgICAgICAgICAgfQorCisgICAgICAg ICAgICBzZXRWYWx1ZShuZXdEYXRlID09PSBudWxsID8gbnVsbCA6IHBhcnNl SW5wdXREYXRlKG5ld0RhdGUpKTsKKyAgICAgICAgICAgIHJldHVybiBwaWNr ZXI7CisgICAgICAgIH07CisKKyAgICAgICAgcGlja2VyLmZvcm1hdCA9IGZ1 bmN0aW9uIChuZXdGb3JtYXQpIHsKKyAgICAgICAgICAgIC8vLzxzdW1tYXJ5 PnRlc3Qgc3U8L3N1bW1hcnk+CisgICAgICAgICAgICAvLy88cGFyYW0gbmFt ZT0ibmV3Rm9ybWF0Ij5pbmZvIGFib3V0IHBhcmE8L3BhcmFtPgorICAgICAg ICAgICAgLy8vPHJldHVybnMgdHlwZT0ic3RyaW5nfGJvb2xlYW4iPnJldHVy bnMgZm9vPC9yZXR1cm5zPgorICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5s ZW5ndGggPT09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9u cy5mb3JtYXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgo dHlwZW9mIG5ld0Zvcm1hdCAhPT0gJ3N0cmluZycpICYmICgodHlwZW9mIG5l d0Zvcm1hdCAhPT0gJ2Jvb2xlYW4nKSB8fCAobmV3Rm9ybWF0ICE9PSBmYWxz ZSkpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcign Zm9ybWF0KCkgZXhwZWN0cyBhIHN0cmluZyBvciBib29sZWFuOmZhbHNlIHBh cmFtZXRlciAnICsgbmV3Rm9ybWF0KTsKKyAgICAgICAgICAgIH0KKworICAg ICAgICAgICAgb3B0aW9ucy5mb3JtYXQgPSBuZXdGb3JtYXQ7CisgICAgICAg ICAgICBpZiAoYWN0dWFsRm9ybWF0KSB7CisgICAgICAgICAgICAgICAgaW5p dEZvcm1hdHRpbmcoKTsgLy8gcmVpbml0IGZvcm1hdHRpbmcKKyAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIHJldHVybiBwaWNrZXI7CisgICAgICAgIH07 CisKKyAgICAgICAgcGlja2VyLnRpbWVab25lID0gZnVuY3Rpb24gKG5ld1pv bmUpIHsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAw KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMudGltZVpvbmU7 CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0eXBlb2YgbmV3 Wm9uZSAhPT0gJ3N0cmluZycpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBu ZXcgVHlwZUVycm9yKCduZXdab25lKCkgZXhwZWN0cyBhIHN0cmluZyBwYXJh bWV0ZXInKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgb3B0aW9u cy50aW1lWm9uZSA9IG5ld1pvbmU7CisKKyAgICAgICAgICAgIHJldHVybiBw aWNrZXI7CisgICAgICAgIH07CisKKyAgICAgICAgcGlja2VyLmRheVZpZXdI ZWFkZXJGb3JtYXQgPSBmdW5jdGlvbiAobmV3Rm9ybWF0KSB7CisgICAgICAg ICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgeworICAgICAgICAg ICAgICAgIHJldHVybiBvcHRpb25zLmRheVZpZXdIZWFkZXJGb3JtYXQ7Cisg ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0eXBlb2YgbmV3Rm9y bWF0ICE9PSAnc3RyaW5nJykgeworICAgICAgICAgICAgICAgIHRocm93IG5l dyBUeXBlRXJyb3IoJ2RheVZpZXdIZWFkZXJGb3JtYXQoKSBleHBlY3RzIGEg c3RyaW5nIHBhcmFtZXRlcicpOworICAgICAgICAgICAgfQorCisgICAgICAg ICAgICBvcHRpb25zLmRheVZpZXdIZWFkZXJGb3JtYXQgPSBuZXdGb3JtYXQ7 CisgICAgICAgICAgICByZXR1cm4gcGlja2VyOworICAgICAgICB9OworCisg ICAgICAgIHBpY2tlci5leHRyYUZvcm1hdHMgPSBmdW5jdGlvbiAoZm9ybWF0 cykgeworICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDAp IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5leHRyYUZvcm1h dHM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChmb3JtYXRz ICE9PSBmYWxzZSAmJiAhKGZvcm1hdHMgaW5zdGFuY2VvZiBBcnJheSkpIHsK KyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdleHRyYUZv cm1hdHMoKSBleHBlY3RzIGFuIGFycmF5IG9yIGZhbHNlIHBhcmFtZXRlcicp OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBvcHRpb25zLmV4dHJh Rm9ybWF0cyA9IGZvcm1hdHM7CisgICAgICAgICAgICBpZiAocGFyc2VGb3Jt YXRzKSB7CisgICAgICAgICAgICAgICAgaW5pdEZvcm1hdHRpbmcoKTsgLy8g cmVpbml0IGZvcm1hdHRpbmcKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg IHJldHVybiBwaWNrZXI7CisgICAgICAgIH07CisKKyAgICAgICAgcGlja2Vy LmRpc2FibGVkRGF0ZXMgPSBmdW5jdGlvbiAoZGF0ZXMpIHsKKyAgICAgICAg ICAgIC8vLzxzaWduYXR1cmUgaGVscEtleXdvcmQ9IiQuZm4uZGF0ZXRpbWVw aWNrZXIuZGlzYWJsZWREYXRlcyI+CisgICAgICAgICAgICAvLy88c3VtbWFy eT5SZXR1cm5zIGFuIGFycmF5IHdpdGggdGhlIGN1cnJlbnRseSBzZXQgZGlz YWJsZWQgZGF0ZXMgb24gdGhlIGNvbXBvbmVudC48L3N1bW1hcnk+CisgICAg ICAgICAgICAvLy88cmV0dXJucyB0eXBlPSJhcnJheSI+b3B0aW9ucy5kaXNh YmxlZERhdGVzPC9yZXR1cm5zPgorICAgICAgICAgICAgLy8vPC9zaWduYXR1 cmU+CisgICAgICAgICAgICAvLy88c2lnbmF0dXJlPgorICAgICAgICAgICAg Ly8vPHN1bW1hcnk+U2V0dGluZyB0aGlzIHRha2VzIHByZWNlZGVuY2Ugb3Zl ciBvcHRpb25zLm1pbkRhdGUsIG9wdGlvbnMubWF4RGF0ZSBjb25maWd1cmF0 aW9uLiBBbHNvIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiByZW1vdmVzIHRoZSBj b25maWd1cmF0aW9uIG9mCisgICAgICAgICAgICAvLy9vcHRpb25zLmVuYWJs ZWREYXRlcyBpZiBzdWNoIGV4aXN0Ljwvc3VtbWFyeT4KKyAgICAgICAgICAg IC8vLzxwYXJhbSBuYW1lPSJkYXRlcyIgbG9jaWQ9IiQuZm4uZGF0ZXRpbWVw aWNrZXIuZGlzYWJsZWREYXRlc19wOmRhdGVzIj5UYWtlcyBhbiBbIHN0cmlu ZyBvciBEYXRlIG9yIG1vbWVudCBdIG9mIHZhbHVlcyBhbmQgYWxsb3dzIHRo ZSB1c2VyIHRvIHNlbGVjdCBvbmx5IGZyb20gdGhvc2UgZGF5cy48L3BhcmFt PgorICAgICAgICAgICAgLy8vPC9zaWduYXR1cmU+CisgICAgICAgICAgICBp ZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgeworICAgICAgICAgICAgICAg IHJldHVybiAob3B0aW9ucy5kaXNhYmxlZERhdGVzID8gJC5leHRlbmQoe30s IG9wdGlvbnMuZGlzYWJsZWREYXRlcykgOiBvcHRpb25zLmRpc2FibGVkRGF0 ZXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWRhdGVz KSB7CisgICAgICAgICAgICAgICAgb3B0aW9ucy5kaXNhYmxlZERhdGVzID0g ZmFsc2U7CisgICAgICAgICAgICAgICAgdXBkYXRlKCk7CisgICAgICAgICAg ICAgICAgcmV0dXJuIHBpY2tlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIGlmICghKGRhdGVzIGluc3RhbmNlb2YgQXJyYXkpKSB7CisgICAgICAg ICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZGlzYWJsZWREYXRlcygp IGV4cGVjdHMgYW4gYXJyYXkgcGFyYW1ldGVyJyk7CisgICAgICAgICAgICB9 CisgICAgICAgICAgICBvcHRpb25zLmRpc2FibGVkRGF0ZXMgPSBpbmRleEdp dmVuRGF0ZXMoZGF0ZXMpOworICAgICAgICAgICAgb3B0aW9ucy5lbmFibGVk RGF0ZXMgPSBmYWxzZTsKKyAgICAgICAgICAgIHVwZGF0ZSgpOworICAgICAg ICAgICAgcmV0dXJuIHBpY2tlcjsKKyAgICAgICAgfTsKKworICAgICAgICBw aWNrZXIuZW5hYmxlZERhdGVzID0gZnVuY3Rpb24gKGRhdGVzKSB7CisgICAg ICAgICAgICAvLy88c2lnbmF0dXJlIGhlbHBLZXl3b3JkPSIkLmZuLmRhdGV0 aW1lcGlja2VyLmVuYWJsZWREYXRlcyI+CisgICAgICAgICAgICAvLy88c3Vt bWFyeT5SZXR1cm5zIGFuIGFycmF5IHdpdGggdGhlIGN1cnJlbnRseSBzZXQg ZW5hYmxlZCBkYXRlcyBvbiB0aGUgY29tcG9uZW50Ljwvc3VtbWFyeT4KKyAg ICAgICAgICAgIC8vLzxyZXR1cm5zIHR5cGU9ImFycmF5Ij5vcHRpb25zLmVu YWJsZWREYXRlczwvcmV0dXJucz4KKyAgICAgICAgICAgIC8vLzwvc2lnbmF0 dXJlPgorICAgICAgICAgICAgLy8vPHNpZ25hdHVyZT4KKyAgICAgICAgICAg IC8vLzxzdW1tYXJ5PlNldHRpbmcgdGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92 ZXIgb3B0aW9ucy5taW5EYXRlLCBvcHRpb25zLm1heERhdGUgY29uZmlndXJh dGlvbi4gQWxzbyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gcmVtb3ZlcyB0aGUg Y29uZmlndXJhdGlvbiBvZiBvcHRpb25zLmRpc2FibGVkRGF0ZXMgaWYgc3Vj aCBleGlzdC48L3N1bW1hcnk+CisgICAgICAgICAgICAvLy88cGFyYW0gbmFt ZT0iZGF0ZXMiIGxvY2lkPSIkLmZuLmRhdGV0aW1lcGlja2VyLmVuYWJsZWRE YXRlc19wOmRhdGVzIj5UYWtlcyBhbiBbIHN0cmluZyBvciBEYXRlIG9yIG1v bWVudCBdIG9mIHZhbHVlcyBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIHNlbGVj dCBvbmx5IGZyb20gdGhvc2UgZGF5cy48L3BhcmFtPgorICAgICAgICAgICAg Ly8vPC9zaWduYXR1cmU+CisgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxl bmd0aCA9PT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiAob3B0aW9u cy5lbmFibGVkRGF0ZXMgPyAkLmV4dGVuZCh7fSwgb3B0aW9ucy5lbmFibGVk RGF0ZXMpIDogb3B0aW9ucy5lbmFibGVkRGF0ZXMpOworICAgICAgICAgICAg fQorCisgICAgICAgICAgICBpZiAoIWRhdGVzKSB7CisgICAgICAgICAgICAg ICAgb3B0aW9ucy5lbmFibGVkRGF0ZXMgPSBmYWxzZTsKKyAgICAgICAgICAg ICAgICB1cGRhdGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcGlja2Vy OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCEoZGF0ZXMgaW5z dGFuY2VvZiBBcnJheSkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcg VHlwZUVycm9yKCdlbmFibGVkRGF0ZXMoKSBleHBlY3RzIGFuIGFycmF5IHBh cmFtZXRlcicpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3B0aW9u cy5lbmFibGVkRGF0ZXMgPSBpbmRleEdpdmVuRGF0ZXMoZGF0ZXMpOworICAg ICAgICAgICAgb3B0aW9ucy5kaXNhYmxlZERhdGVzID0gZmFsc2U7CisgICAg ICAgICAgICB1cGRhdGUoKTsKKyAgICAgICAgICAgIHJldHVybiBwaWNrZXI7 CisgICAgICAgIH07CisKKyAgICAgICAgcGlja2VyLmRheXNPZldlZWtEaXNh YmxlZCA9IGZ1bmN0aW9uIChkYXlzT2ZXZWVrRGlzYWJsZWQpIHsKKyAgICAg ICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7CisgICAgICAg ICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZGF5c09mV2Vla0Rpc2FibGVkLnNw bGljZSgwKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCh0 eXBlb2YgZGF5c09mV2Vla0Rpc2FibGVkID09PSAnYm9vbGVhbicpICYmICFk YXlzT2ZXZWVrRGlzYWJsZWQpIHsKKyAgICAgICAgICAgICAgICBvcHRpb25z LmRheXNPZldlZWtEaXNhYmxlZCA9IGZhbHNlOworICAgICAgICAgICAgICAg IHVwZGF0ZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBwaWNrZXI7Cisg ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghKGRheXNPZldlZWtE aXNhYmxlZCBpbnN0YW5jZW9mIEFycmF5KSkgeworICAgICAgICAgICAgICAg IHRocm93IG5ldyBUeXBlRXJyb3IoJ2RheXNPZldlZWtEaXNhYmxlZCgpIGV4 cGVjdHMgYW4gYXJyYXkgcGFyYW1ldGVyJyk7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgICBvcHRpb25zLmRheXNPZldlZWtEaXNhYmxlZCA9IGRheXNP ZldlZWtEaXNhYmxlZC5yZWR1Y2UoZnVuY3Rpb24gKHByZXZpb3VzVmFsdWUs IGN1cnJlbnRWYWx1ZSkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1 ZSA9IHBhcnNlSW50KGN1cnJlbnRWYWx1ZSwgMTApOworICAgICAgICAgICAg ICAgIGlmIChjdXJyZW50VmFsdWUgPiA2IHx8IGN1cnJlbnRWYWx1ZSA8IDAg fHwgaXNOYU4oY3VycmVudFZhbHVlKSkgeworICAgICAgICAgICAgICAgICAg ICByZXR1cm4gcHJldmlvdXNWYWx1ZTsKKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzVmFsdWUuaW5kZXhPZihjdXJy ZW50VmFsdWUpID09PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBwcmV2 aW91c1ZhbHVlLnB1c2goY3VycmVudFZhbHVlKTsKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzVmFsdWU7Cisg ICAgICAgICAgICB9LCBbXSkuc29ydCgpOworICAgICAgICAgICAgaWYgKG9w dGlvbnMudXNlQ3VycmVudCAmJiAhb3B0aW9ucy5rZWVwSW52YWxpZCkgewor ICAgICAgICAgICAgICAgIHZhciB0cmllcyA9IDA7CisgICAgICAgICAgICAg ICAgd2hpbGUgKCFpc1ZhbGlkKGRhdGUsICdkJykpIHsKKyAgICAgICAgICAg ICAgICAgICAgZGF0ZS5hZGQoMSwgJ2QnKTsKKyAgICAgICAgICAgICAgICAg ICAgaWYgKHRyaWVzID09PSAzMSkgeworICAgICAgICAgICAgICAgICAgICAg ICAgdGhyb3cgJ1RyaWVkIDMxIHRpbWVzIHRvIGZpbmQgYSB2YWxpZCBkYXRl JzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ICB0cmllcysrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICBzZXRWYWx1ZShkYXRlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg IHVwZGF0ZSgpOworICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjsKKyAgICAg ICAgfTsKKworICAgICAgICBwaWNrZXIubWF4RGF0ZSA9IGZ1bmN0aW9uICht YXhEYXRlKSB7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9 PT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLm1heERh dGUgPyBvcHRpb25zLm1heERhdGUuY2xvbmUoKSA6IG9wdGlvbnMubWF4RGF0 ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCh0eXBlb2Yg bWF4RGF0ZSA9PT0gJ2Jvb2xlYW4nKSAmJiBtYXhEYXRlID09PSBmYWxzZSkg eworICAgICAgICAgICAgICAgIG9wdGlvbnMubWF4RGF0ZSA9IGZhbHNlOwor ICAgICAgICAgICAgICAgIHVwZGF0ZSgpOworICAgICAgICAgICAgICAgIHJl dHVybiBwaWNrZXI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm ICh0eXBlb2YgbWF4RGF0ZSA9PT0gJ3N0cmluZycpIHsKKyAgICAgICAgICAg ICAgICBpZiAobWF4RGF0ZSA9PT0gJ25vdycgfHwgbWF4RGF0ZSA9PT0gJ21v bWVudCcpIHsKKyAgICAgICAgICAgICAgICAgICAgbWF4RGF0ZSA9IGdldE1v bWVudCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwor ICAgICAgICAgICAgdmFyIHBhcnNlZERhdGUgPSBwYXJzZUlucHV0RGF0ZSht YXhEYXRlKTsKKworICAgICAgICAgICAgaWYgKCFwYXJzZWREYXRlLmlzVmFs aWQoKSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3Io J21heERhdGUoKSBDb3VsZCBub3QgcGFyc2UgZGF0ZSBwYXJhbWV0ZXI6ICcg KyBtYXhEYXRlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChv cHRpb25zLm1pbkRhdGUgJiYgcGFyc2VkRGF0ZS5pc0JlZm9yZShvcHRpb25z Lm1pbkRhdGUpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVF cnJvcignbWF4RGF0ZSgpIGRhdGUgcGFyYW1ldGVyIGlzIGJlZm9yZSBvcHRp b25zLm1pbkRhdGU6ICcgKyBwYXJzZWREYXRlLmZvcm1hdChhY3R1YWxGb3Jt YXQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9wdGlvbnMubWF4 RGF0ZSA9IHBhcnNlZERhdGU7CisgICAgICAgICAgICBpZiAob3B0aW9ucy51 c2VDdXJyZW50ICYmICFvcHRpb25zLmtlZXBJbnZhbGlkICYmIGRhdGUuaXNB ZnRlcihtYXhEYXRlKSkgeworICAgICAgICAgICAgICAgIHNldFZhbHVlKG9w dGlvbnMubWF4RGF0ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp ZiAodmlld0RhdGUuaXNBZnRlcihwYXJzZWREYXRlKSkgeworICAgICAgICAg ICAgICAgIHZpZXdEYXRlID0gcGFyc2VkRGF0ZS5jbG9uZSgpLnN1YnRyYWN0 KG9wdGlvbnMuc3RlcHBpbmcsICdtJyk7CisgICAgICAgICAgICB9CisgICAg ICAgICAgICB1cGRhdGUoKTsKKyAgICAgICAgICAgIHJldHVybiBwaWNrZXI7 CisgICAgICAgIH07CisKKyAgICAgICAgcGlja2VyLm1pbkRhdGUgPSBmdW5j dGlvbiAobWluRGF0ZSkgeworICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5s ZW5ndGggPT09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9u cy5taW5EYXRlID8gb3B0aW9ucy5taW5EYXRlLmNsb25lKCkgOiBvcHRpb25z Lm1pbkRhdGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgo dHlwZW9mIG1pbkRhdGUgPT09ICdib29sZWFuJykgJiYgbWluRGF0ZSA9PT0g ZmFsc2UpIHsKKyAgICAgICAgICAgICAgICBvcHRpb25zLm1pbkRhdGUgPSBm YWxzZTsKKyAgICAgICAgICAgICAgICB1cGRhdGUoKTsKKyAgICAgICAgICAg ICAgICByZXR1cm4gcGlja2VyOworICAgICAgICAgICAgfQorCisgICAgICAg ICAgICBpZiAodHlwZW9mIG1pbkRhdGUgPT09ICdzdHJpbmcnKSB7CisgICAg ICAgICAgICAgICAgaWYgKG1pbkRhdGUgPT09ICdub3cnIHx8IG1pbkRhdGUg PT09ICdtb21lbnQnKSB7CisgICAgICAgICAgICAgICAgICAgIG1pbkRhdGUg PSBnZXRNb21lbnQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICB9CisKKyAgICAgICAgICAgIHZhciBwYXJzZWREYXRlID0gcGFyc2VJbnB1 dERhdGUobWluRGF0ZSk7CisKKyAgICAgICAgICAgIGlmICghcGFyc2VkRGF0 ZS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlw ZUVycm9yKCdtaW5EYXRlKCkgQ291bGQgbm90IHBhcnNlIGRhdGUgcGFyYW1l dGVyOiAnICsgbWluRGF0ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg ICBpZiAob3B0aW9ucy5tYXhEYXRlICYmIHBhcnNlZERhdGUuaXNBZnRlcihv cHRpb25zLm1heERhdGUpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3 IFR5cGVFcnJvcignbWluRGF0ZSgpIGRhdGUgcGFyYW1ldGVyIGlzIGFmdGVy IG9wdGlvbnMubWF4RGF0ZTogJyArIHBhcnNlZERhdGUuZm9ybWF0KGFjdHVh bEZvcm1hdCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3B0aW9u cy5taW5EYXRlID0gcGFyc2VkRGF0ZTsKKyAgICAgICAgICAgIGlmIChvcHRp b25zLnVzZUN1cnJlbnQgJiYgIW9wdGlvbnMua2VlcEludmFsaWQgJiYgZGF0 ZS5pc0JlZm9yZShtaW5EYXRlKSkgeworICAgICAgICAgICAgICAgIHNldFZh bHVlKG9wdGlvbnMubWluRGF0ZSk7CisgICAgICAgICAgICB9CisgICAgICAg ICAgICBpZiAodmlld0RhdGUuaXNCZWZvcmUocGFyc2VkRGF0ZSkpIHsKKyAg ICAgICAgICAgICAgICB2aWV3RGF0ZSA9IHBhcnNlZERhdGUuY2xvbmUoKS5h ZGQob3B0aW9ucy5zdGVwcGluZywgJ20nKTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIHVwZGF0ZSgpOworICAgICAgICAgICAgcmV0dXJuIHBpY2tl cjsKKyAgICAgICAgfTsKKworICAgICAgICBwaWNrZXIuZGVmYXVsdERhdGUg PSBmdW5jdGlvbiAoZGVmYXVsdERhdGUpIHsKKyAgICAgICAgICAgIC8vLzxz aWduYXR1cmUgaGVscEtleXdvcmQ9IiQuZm4uZGF0ZXRpbWVwaWNrZXIuZGVm YXVsdERhdGUiPgorICAgICAgICAgICAgLy8vPHN1bW1hcnk+UmV0dXJucyBh IG1vbWVudCB3aXRoIHRoZSBvcHRpb25zLmRlZmF1bHREYXRlIG9wdGlvbiBj b25maWd1cmF0aW9uIG9yIGZhbHNlIGlmIG5vdCBzZXQ8L3N1bW1hcnk+Cisg ICAgICAgICAgICAvLy88cmV0dXJucyB0eXBlPSJNb21lbnQiPmRhdGUuY2xv bmUoKTwvcmV0dXJucz4KKyAgICAgICAgICAgIC8vLzwvc2lnbmF0dXJlPgor ICAgICAgICAgICAgLy8vPHNpZ25hdHVyZT4KKyAgICAgICAgICAgIC8vLzxz dW1tYXJ5PldpbGwgc2V0IHRoZSBwaWNrZXIncyBpbml0YWwgZGF0ZS4gSWYg YSBib29sZWFuOmZhbHNlIHZhbHVlIGlzIHBhc3NlZCB0aGUgb3B0aW9ucy5k ZWZhdWx0RGF0ZSBwYXJhbWV0ZXIgaXMgY2xlYXJlZC48L3N1bW1hcnk+Cisg ICAgICAgICAgICAvLy88cGFyYW0gbmFtZT0iZGVmYXVsdERhdGUiIGxvY2lk PSIkLmZuLmRhdGV0aW1lcGlja2VyLmRlZmF1bHREYXRlX3A6ZGVmYXVsdERh dGUiPlRha2VzIGEgc3RyaW5nLCBEYXRlLCBtb21lbnQsIGJvb2xlYW46ZmFs c2U8L3BhcmFtPgorICAgICAgICAgICAgLy8vPC9zaWduYXR1cmU+CisgICAg ICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgeworICAgICAg ICAgICAgICAgIHJldHVybiBvcHRpb25zLmRlZmF1bHREYXRlID8gb3B0aW9u cy5kZWZhdWx0RGF0ZS5jbG9uZSgpIDogb3B0aW9ucy5kZWZhdWx0RGF0ZTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghZGVmYXVsdERhdGUp IHsKKyAgICAgICAgICAgICAgICBvcHRpb25zLmRlZmF1bHREYXRlID0gZmFs c2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjsKKyAgICAgICAg ICAgIH0KKworICAgICAgICAgICAgaWYgKHR5cGVvZiBkZWZhdWx0RGF0ZSA9 PT0gJ3N0cmluZycpIHsKKyAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdERh dGUgPT09ICdub3cnIHx8IGRlZmF1bHREYXRlID09PSAnbW9tZW50Jykgewor ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RGF0ZSA9IGdldE1vbWVudCgp OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg ICAgIGRlZmF1bHREYXRlID0gZ2V0TW9tZW50KGRlZmF1bHREYXRlKTsKKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg IHZhciBwYXJzZWREYXRlID0gcGFyc2VJbnB1dERhdGUoZGVmYXVsdERhdGUp OworICAgICAgICAgICAgaWYgKCFwYXJzZWREYXRlLmlzVmFsaWQoKSkgewor ICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2RlZmF1bHRE YXRlKCkgQ291bGQgbm90IHBhcnNlIGRhdGUgcGFyYW1ldGVyOiAnICsgZGVm YXVsdERhdGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFp c1ZhbGlkKHBhcnNlZERhdGUpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cg bmV3IFR5cGVFcnJvcignZGVmYXVsdERhdGUoKSBkYXRlIHBhc3NlZCBpcyBp bnZhbGlkIGFjY29yZGluZyB0byBjb21wb25lbnQgc2V0dXAgdmFsaWRhdGlv bnMnKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgb3B0aW9ucy5k ZWZhdWx0RGF0ZSA9IHBhcnNlZERhdGU7CisKKyAgICAgICAgICAgIGlmICgo b3B0aW9ucy5kZWZhdWx0RGF0ZSAmJiBvcHRpb25zLmlubGluZSkgfHwgaW5w dXQudmFsKCkudHJpbSgpID09PSAnJykgeworICAgICAgICAgICAgICAgIHNl dFZhbHVlKG9wdGlvbnMuZGVmYXVsdERhdGUpOworICAgICAgICAgICAgfQor ICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjsKKyAgICAgICAgfTsKKworICAg ICAgICBwaWNrZXIubG9jYWxlID0gZnVuY3Rpb24gKGxvY2FsZSkgeworICAg ICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHsKKyAgICAg ICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5sb2NhbGU7CisgICAgICAgICAg ICB9CisKKyAgICAgICAgICAgIGlmICghbW9tZW50LmxvY2FsZURhdGEobG9j YWxlKSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3Io J2xvY2FsZSgpIGxvY2FsZSAnICsgbG9jYWxlICsgJyBpcyBub3QgbG9hZGVk IGZyb20gbW9tZW50IGxvY2FsZXMhJyk7CisgICAgICAgICAgICB9CisKKyAg ICAgICAgICAgIG9wdGlvbnMubG9jYWxlID0gbG9jYWxlOworICAgICAgICAg ICAgZGF0ZS5sb2NhbGUob3B0aW9ucy5sb2NhbGUpOworICAgICAgICAgICAg dmlld0RhdGUubG9jYWxlKG9wdGlvbnMubG9jYWxlKTsKKworICAgICAgICAg ICAgaWYgKGFjdHVhbEZvcm1hdCkgeworICAgICAgICAgICAgICAgIGluaXRG b3JtYXR0aW5nKCk7IC8vIHJlaW5pdCBmb3JtYXR0aW5nCisgICAgICAgICAg ICB9CisgICAgICAgICAgICBpZiAod2lkZ2V0KSB7CisgICAgICAgICAgICAg ICAgaGlkZSgpOworICAgICAgICAgICAgICAgIHNob3coKTsKKyAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIHJldHVybiBwaWNrZXI7CisgICAgICAgIH07 CisKKyAgICAgICAgcGlja2VyLnN0ZXBwaW5nID0gZnVuY3Rpb24gKHN0ZXBw aW5nKSB7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0g MCkgeworICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnN0ZXBwaW5n OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzdGVwcGluZyA9IHBh cnNlSW50KHN0ZXBwaW5nLCAxMCk7CisgICAgICAgICAgICBpZiAoaXNOYU4o c3RlcHBpbmcpIHx8IHN0ZXBwaW5nIDwgMSkgeworICAgICAgICAgICAgICAg IHN0ZXBwaW5nID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9w dGlvbnMuc3RlcHBpbmcgPSBzdGVwcGluZzsKKyAgICAgICAgICAgIHJldHVy biBwaWNrZXI7CisgICAgICAgIH07CisKKyAgICAgICAgcGlja2VyLnVzZUN1 cnJlbnQgPSBmdW5jdGlvbiAodXNlQ3VycmVudCkgeworICAgICAgICAgICAg dmFyIHVzZUN1cnJlbnRPcHRpb25zID0gWyd5ZWFyJywgJ21vbnRoJywgJ2Rh eScsICdob3VyJywgJ21pbnV0ZSddOworICAgICAgICAgICAgaWYgKGFyZ3Vt ZW50cy5sZW5ndGggPT09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g b3B0aW9ucy51c2VDdXJyZW50OworICAgICAgICAgICAgfQorCisgICAgICAg ICAgICBpZiAoKHR5cGVvZiB1c2VDdXJyZW50ICE9PSAnYm9vbGVhbicpICYm ICh0eXBlb2YgdXNlQ3VycmVudCAhPT0gJ3N0cmluZycpKSB7CisgICAgICAg ICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndXNlQ3VycmVudCgpIGV4 cGVjdHMgYSBib29sZWFuIG9yIHN0cmluZyBwYXJhbWV0ZXInKTsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0eXBlb2YgdXNlQ3VycmVudCA9 PT0gJ3N0cmluZycgJiYgdXNlQ3VycmVudE9wdGlvbnMuaW5kZXhPZih1c2VD dXJyZW50LnRvTG93ZXJDYXNlKCkpID09PSAtMSkgeworICAgICAgICAgICAg ICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3VzZUN1cnJlbnQoKSBleHBlY3Rz IGEgc3RyaW5nIHBhcmFtZXRlciBvZiAnICsgdXNlQ3VycmVudE9wdGlvbnMu am9pbignLCAnKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvcHRp b25zLnVzZUN1cnJlbnQgPSB1c2VDdXJyZW50OworICAgICAgICAgICAgcmV0 dXJuIHBpY2tlcjsKKyAgICAgICAgfTsKKworICAgICAgICBwaWNrZXIuY29s bGFwc2UgPSBmdW5jdGlvbiAoY29sbGFwc2UpIHsKKyAgICAgICAgICAgIGlm IChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7CisgICAgICAgICAgICAgICAg cmV0dXJuIG9wdGlvbnMuY29sbGFwc2U7CisgICAgICAgICAgICB9CisKKyAg ICAgICAgICAgIGlmICh0eXBlb2YgY29sbGFwc2UgIT09ICdib29sZWFuJykg eworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NvbGxh cHNlKCkgZXhwZWN0cyBhIGJvb2xlYW4gcGFyYW1ldGVyJyk7CisgICAgICAg ICAgICB9CisgICAgICAgICAgICBpZiAob3B0aW9ucy5jb2xsYXBzZSA9PT0g Y29sbGFwc2UpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcGlja2VyOwor ICAgICAgICAgICAgfQorICAgICAgICAgICAgb3B0aW9ucy5jb2xsYXBzZSA9 IGNvbGxhcHNlOworICAgICAgICAgICAgaWYgKHdpZGdldCkgeworICAgICAg ICAgICAgICAgIGhpZGUoKTsKKyAgICAgICAgICAgICAgICBzaG93KCk7Cisg ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcGlja2VyOworICAg ICAgICB9OworCisgICAgICAgIHBpY2tlci5pY29ucyA9IGZ1bmN0aW9uIChp Y29ucykgeworICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09 IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJC5leHRlbmQoe30sIG9w dGlvbnMuaWNvbnMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp ZiAoIShpY29ucyBpbnN0YW5jZW9mIE9iamVjdCkpIHsKKyAgICAgICAgICAg ICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpY29ucygpIGV4cGVjdHMgcGFy YW1ldGVyIHRvIGJlIGFuIE9iamVjdCcpOworICAgICAgICAgICAgfQorICAg ICAgICAgICAgJC5leHRlbmQob3B0aW9ucy5pY29ucywgaWNvbnMpOworICAg ICAgICAgICAgaWYgKHdpZGdldCkgeworICAgICAgICAgICAgICAgIGhpZGUo KTsKKyAgICAgICAgICAgICAgICBzaG93KCk7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgICByZXR1cm4gcGlja2VyOworICAgICAgICB9OworCisgICAg ICAgIHBpY2tlci50b29sdGlwcyA9IGZ1bmN0aW9uICh0b29sdGlwcykgewor ICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHsKKyAg ICAgICAgICAgICAgICByZXR1cm4gJC5leHRlbmQoe30sIG9wdGlvbnMudG9v bHRpcHMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoISh0 b29sdGlwcyBpbnN0YW5jZW9mIE9iamVjdCkpIHsKKyAgICAgICAgICAgICAg ICB0aHJvdyBuZXcgVHlwZUVycm9yKCd0b29sdGlwcygpIGV4cGVjdHMgcGFy YW1ldGVyIHRvIGJlIGFuIE9iamVjdCcpOworICAgICAgICAgICAgfQorICAg ICAgICAgICAgJC5leHRlbmQob3B0aW9ucy50b29sdGlwcywgdG9vbHRpcHMp OworICAgICAgICAgICAgaWYgKHdpZGdldCkgeworICAgICAgICAgICAgICAg IGhpZGUoKTsKKyAgICAgICAgICAgICAgICBzaG93KCk7CisgICAgICAgICAg ICB9CisgICAgICAgICAgICByZXR1cm4gcGlja2VyOworICAgICAgICB9Owor CisgICAgICAgIHBpY2tlci51c2VTdHJpY3QgPSBmdW5jdGlvbiAodXNlU3Ry aWN0KSB7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0g MCkgeworICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnVzZVN0cmlj dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHR5cGVvZiB1 c2VTdHJpY3QgIT09ICdib29sZWFuJykgeworICAgICAgICAgICAgICAgIHRo cm93IG5ldyBUeXBlRXJyb3IoJ3VzZVN0cmljdCgpIGV4cGVjdHMgYSBib29s ZWFuIHBhcmFtZXRlcicpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg b3B0aW9ucy51c2VTdHJpY3QgPSB1c2VTdHJpY3Q7CisgICAgICAgICAgICBy ZXR1cm4gcGlja2VyOworICAgICAgICB9OworCisgICAgICAgIHBpY2tlci5z aWRlQnlTaWRlID0gZnVuY3Rpb24gKHNpZGVCeVNpZGUpIHsKKyAgICAgICAg ICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7CisgICAgICAgICAg ICAgICAgcmV0dXJuIG9wdGlvbnMuc2lkZUJ5U2lkZTsKKyAgICAgICAgICAg IH0KKworICAgICAgICAgICAgaWYgKHR5cGVvZiBzaWRlQnlTaWRlICE9PSAn Ym9vbGVhbicpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVy cm9yKCdzaWRlQnlTaWRlKCkgZXhwZWN0cyBhIGJvb2xlYW4gcGFyYW1ldGVy Jyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvcHRpb25zLnNpZGVC eVNpZGUgPSBzaWRlQnlTaWRlOworICAgICAgICAgICAgaWYgKHdpZGdldCkg eworICAgICAgICAgICAgICAgIGhpZGUoKTsKKyAgICAgICAgICAgICAgICBz aG93KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcGlj a2VyOworICAgICAgICB9OworCisgICAgICAgIHBpY2tlci52aWV3TW9kZSA9 IGZ1bmN0aW9uICh2aWV3TW9kZSkgeworICAgICAgICAgICAgaWYgKGFyZ3Vt ZW50cy5sZW5ndGggPT09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g b3B0aW9ucy52aWV3TW9kZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg ICAgaWYgKHR5cGVvZiB2aWV3TW9kZSAhPT0gJ3N0cmluZycpIHsKKyAgICAg ICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2aWV3TW9kZSgpIGV4 cGVjdHMgYSBzdHJpbmcgcGFyYW1ldGVyJyk7CisgICAgICAgICAgICB9CisK KyAgICAgICAgICAgIGlmICh2aWV3TW9kZXMuaW5kZXhPZih2aWV3TW9kZSkg PT09IC0xKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJv cigndmlld01vZGUoKSBwYXJhbWV0ZXIgbXVzdCBiZSBvbmUgb2YgKCcgKyB2 aWV3TW9kZXMuam9pbignLCAnKSArICcpIHZhbHVlJyk7CisgICAgICAgICAg ICB9CisKKyAgICAgICAgICAgIG9wdGlvbnMudmlld01vZGUgPSB2aWV3TW9k ZTsKKyAgICAgICAgICAgIGN1cnJlbnRWaWV3TW9kZSA9IE1hdGgubWF4KHZp ZXdNb2Rlcy5pbmRleE9mKHZpZXdNb2RlKSwgbWluVmlld01vZGVOdW1iZXIp OworCisgICAgICAgICAgICBzaG93TW9kZSgpOworICAgICAgICAgICAgcmV0 dXJuIHBpY2tlcjsKKyAgICAgICAgfTsKKworICAgICAgICBwaWNrZXIudG9v bGJhclBsYWNlbWVudCA9IGZ1bmN0aW9uICh0b29sYmFyUGxhY2VtZW50KSB7 CisgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgewor ICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnRvb2xiYXJQbGFjZW1l bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0eXBlb2Yg dG9vbGJhclBsYWNlbWVudCAhPT0gJ3N0cmluZycpIHsKKyAgICAgICAgICAg ICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd0b29sYmFyUGxhY2VtZW50KCkg ZXhwZWN0cyBhIHN0cmluZyBwYXJhbWV0ZXInKTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICAgIGlmICh0b29sYmFyUGxhY2VtZW50cy5pbmRleE9mKHRv b2xiYXJQbGFjZW1lbnQpID09PSAtMSkgeworICAgICAgICAgICAgICAgIHRo cm93IG5ldyBUeXBlRXJyb3IoJ3Rvb2xiYXJQbGFjZW1lbnQoKSBwYXJhbWV0 ZXIgbXVzdCBiZSBvbmUgb2YgKCcgKyB0b29sYmFyUGxhY2VtZW50cy5qb2lu KCcsICcpICsgJykgdmFsdWUnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIG9wdGlvbnMudG9vbGJhclBsYWNlbWVudCA9IHRvb2xiYXJQbGFjZW1l bnQ7CisKKyAgICAgICAgICAgIGlmICh3aWRnZXQpIHsKKyAgICAgICAgICAg ICAgICBoaWRlKCk7CisgICAgICAgICAgICAgICAgc2hvdygpOworICAgICAg ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjsKKyAgICAgICAg fTsKKworICAgICAgICBwaWNrZXIud2lkZ2V0UG9zaXRpb25pbmcgPSBmdW5j dGlvbiAod2lkZ2V0UG9zaXRpb25pbmcpIHsKKyAgICAgICAgICAgIGlmIChh cmd1bWVudHMubGVuZ3RoID09PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0 dXJuICQuZXh0ZW5kKHt9LCBvcHRpb25zLndpZGdldFBvc2l0aW9uaW5nKTsK KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCh7fSkudG9TdHJp bmcuY2FsbCh3aWRnZXRQb3NpdGlvbmluZykgIT09ICdbb2JqZWN0IE9iamVj dF0nKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcign d2lkZ2V0UG9zaXRpb25pbmcoKSBleHBlY3RzIGFuIG9iamVjdCB2YXJpYWJs ZScpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHdpZGdldFBv c2l0aW9uaW5nLmhvcml6b250YWwpIHsKKyAgICAgICAgICAgICAgICBpZiAo dHlwZW9mIHdpZGdldFBvc2l0aW9uaW5nLmhvcml6b250YWwgIT09ICdzdHJp bmcnKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJy b3IoJ3dpZGdldFBvc2l0aW9uaW5nKCkgaG9yaXpvbnRhbCB2YXJpYWJsZSBt dXN0IGJlIGEgc3RyaW5nJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIHdpZGdldFBvc2l0aW9uaW5nLmhvcml6b250YWwgPSB3aWRn ZXRQb3NpdGlvbmluZy5ob3Jpem9udGFsLnRvTG93ZXJDYXNlKCk7CisgICAg ICAgICAgICAgICAgaWYgKGhvcml6b250YWxNb2Rlcy5pbmRleE9mKHdpZGdl dFBvc2l0aW9uaW5nLmhvcml6b250YWwpID09PSAtMSkgeworICAgICAgICAg ICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd3aWRnZXRQb3NpdGlv bmluZygpIGV4cGVjdHMgaG9yaXpvbnRhbCBwYXJhbWV0ZXIgdG8gYmUgb25l IG9mICgnICsgaG9yaXpvbnRhbE1vZGVzLmpvaW4oJywgJykgKyAnKScpOwor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBvcHRpb25zLndp ZGdldFBvc2l0aW9uaW5nLmhvcml6b250YWwgPSB3aWRnZXRQb3NpdGlvbmlu Zy5ob3Jpem9udGFsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg KHdpZGdldFBvc2l0aW9uaW5nLnZlcnRpY2FsKSB7CisgICAgICAgICAgICAg ICAgaWYgKHR5cGVvZiB3aWRnZXRQb3NpdGlvbmluZy52ZXJ0aWNhbCAhPT0g J3N0cmluZycpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5 cGVFcnJvcignd2lkZ2V0UG9zaXRpb25pbmcoKSB2ZXJ0aWNhbCB2YXJpYWJs ZSBtdXN0IGJlIGEgc3RyaW5nJyk7CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgIHdpZGdldFBvc2l0aW9uaW5nLnZlcnRpY2FsID0gd2lk Z2V0UG9zaXRpb25pbmcudmVydGljYWwudG9Mb3dlckNhc2UoKTsKKyAgICAg ICAgICAgICAgICBpZiAodmVydGljYWxNb2Rlcy5pbmRleE9mKHdpZGdldFBv c2l0aW9uaW5nLnZlcnRpY2FsKSA9PT0gLTEpIHsKKyAgICAgICAgICAgICAg ICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignd2lkZ2V0UG9zaXRpb25pbmco KSBleHBlY3RzIHZlcnRpY2FsIHBhcmFtZXRlciB0byBiZSBvbmUgb2YgKCcg KyB2ZXJ0aWNhbE1vZGVzLmpvaW4oJywgJykgKyAnKScpOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICBvcHRpb25zLndpZGdldFBvc2l0 aW9uaW5nLnZlcnRpY2FsID0gd2lkZ2V0UG9zaXRpb25pbmcudmVydGljYWw7 CisgICAgICAgICAgICB9CisgICAgICAgICAgICB1cGRhdGUoKTsKKyAgICAg ICAgICAgIHJldHVybiBwaWNrZXI7CisgICAgICAgIH07CisKKyAgICAgICAg cGlja2VyLmNhbGVuZGFyV2Vla3MgPSBmdW5jdGlvbiAoY2FsZW5kYXJXZWVr cykgeworICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDAp IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5jYWxlbmRhcldl ZWtzOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodHlwZW9m IGNhbGVuZGFyV2Vla3MgIT09ICdib29sZWFuJykgeworICAgICAgICAgICAg ICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NhbGVuZGFyV2Vla3MoKSBleHBl Y3RzIHBhcmFtZXRlciB0byBiZSBhIGJvb2xlYW4gdmFsdWUnKTsKKyAgICAg ICAgICAgIH0KKworICAgICAgICAgICAgb3B0aW9ucy5jYWxlbmRhcldlZWtz ID0gY2FsZW5kYXJXZWVrczsKKyAgICAgICAgICAgIHVwZGF0ZSgpOworICAg ICAgICAgICAgcmV0dXJuIHBpY2tlcjsKKyAgICAgICAgfTsKKworICAgICAg ICBwaWNrZXIuc2hvd1RvZGF5QnV0dG9uID0gZnVuY3Rpb24gKHNob3dUb2Rh eUJ1dHRvbikgeworICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgg PT09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5zaG93 VG9kYXlCdXR0b247CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm ICh0eXBlb2Ygc2hvd1RvZGF5QnV0dG9uICE9PSAnYm9vbGVhbicpIHsKKyAg ICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaG93VG9kYXlC dXR0b24oKSBleHBlY3RzIGEgYm9vbGVhbiBwYXJhbWV0ZXInKTsKKyAgICAg ICAgICAgIH0KKworICAgICAgICAgICAgb3B0aW9ucy5zaG93VG9kYXlCdXR0 b24gPSBzaG93VG9kYXlCdXR0b247CisgICAgICAgICAgICBpZiAod2lkZ2V0 KSB7CisgICAgICAgICAgICAgICAgaGlkZSgpOworICAgICAgICAgICAgICAg IHNob3coKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBw aWNrZXI7CisgICAgICAgIH07CisKKyAgICAgICAgcGlja2VyLnNob3dDbGVh ciA9IGZ1bmN0aW9uIChzaG93Q2xlYXIpIHsKKyAgICAgICAgICAgIGlmIChh cmd1bWVudHMubGVuZ3RoID09PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0 dXJuIG9wdGlvbnMuc2hvd0NsZWFyOworICAgICAgICAgICAgfQorCisgICAg ICAgICAgICBpZiAodHlwZW9mIHNob3dDbGVhciAhPT0gJ2Jvb2xlYW4nKSB7 CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2hvd0Ns ZWFyKCkgZXhwZWN0cyBhIGJvb2xlYW4gcGFyYW1ldGVyJyk7CisgICAgICAg ICAgICB9CisKKyAgICAgICAgICAgIG9wdGlvbnMuc2hvd0NsZWFyID0gc2hv d0NsZWFyOworICAgICAgICAgICAgaWYgKHdpZGdldCkgeworICAgICAgICAg ICAgICAgIGhpZGUoKTsKKyAgICAgICAgICAgICAgICBzaG93KCk7CisgICAg ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcGlja2VyOworICAgICAg ICB9OworCisgICAgICAgIHBpY2tlci53aWRnZXRQYXJlbnQgPSBmdW5jdGlv biAod2lkZ2V0UGFyZW50KSB7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRz Lmxlbmd0aCA9PT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBvcHRp b25zLndpZGdldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg ICAgaWYgKHR5cGVvZiB3aWRnZXRQYXJlbnQgPT09ICdzdHJpbmcnKSB7Cisg ICAgICAgICAgICAgICAgd2lkZ2V0UGFyZW50ID0gJCh3aWRnZXRQYXJlbnQp OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAod2lkZ2V0UGFy ZW50ICE9PSBudWxsICYmICh0eXBlb2Ygd2lkZ2V0UGFyZW50ICE9PSAnc3Ry aW5nJyAmJiAhKHdpZGdldFBhcmVudCBpbnN0YW5jZW9mICQpKSkgeworICAg ICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3dpZGdldFBhcmVu dCgpIGV4cGVjdHMgYSBzdHJpbmcgb3IgYSBqUXVlcnkgb2JqZWN0IHBhcmFt ZXRlcicpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBvcHRpb25z LndpZGdldFBhcmVudCA9IHdpZGdldFBhcmVudDsKKyAgICAgICAgICAgIGlm ICh3aWRnZXQpIHsKKyAgICAgICAgICAgICAgICBoaWRlKCk7CisgICAgICAg ICAgICAgICAgc2hvdygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg cmV0dXJuIHBpY2tlcjsKKyAgICAgICAgfTsKKworICAgICAgICBwaWNrZXIu a2VlcE9wZW4gPSBmdW5jdGlvbiAoa2VlcE9wZW4pIHsKKyAgICAgICAgICAg IGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7CisgICAgICAgICAgICAg ICAgcmV0dXJuIG9wdGlvbnMua2VlcE9wZW47CisgICAgICAgICAgICB9CisK KyAgICAgICAgICAgIGlmICh0eXBlb2Yga2VlcE9wZW4gIT09ICdib29sZWFu JykgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2tl ZXBPcGVuKCkgZXhwZWN0cyBhIGJvb2xlYW4gcGFyYW1ldGVyJyk7CisgICAg ICAgICAgICB9CisKKyAgICAgICAgICAgIG9wdGlvbnMua2VlcE9wZW4gPSBr ZWVwT3BlbjsKKyAgICAgICAgICAgIHJldHVybiBwaWNrZXI7CisgICAgICAg IH07CisKKyAgICAgICAgcGlja2VyLmZvY3VzT25TaG93ID0gZnVuY3Rpb24g KGZvY3VzT25TaG93KSB7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxl bmd0aCA9PT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25z LmZvY3VzT25TaG93OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp ZiAodHlwZW9mIGZvY3VzT25TaG93ICE9PSAnYm9vbGVhbicpIHsKKyAgICAg ICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdmb2N1c09uU2hvdygp IGV4cGVjdHMgYSBib29sZWFuIHBhcmFtZXRlcicpOworICAgICAgICAgICAg fQorCisgICAgICAgICAgICBvcHRpb25zLmZvY3VzT25TaG93ID0gZm9jdXNP blNob3c7CisgICAgICAgICAgICByZXR1cm4gcGlja2VyOworICAgICAgICB9 OworCisgICAgICAgIHBpY2tlci5pbmxpbmUgPSBmdW5jdGlvbiAoaW5saW5l KSB7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkg eworICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmlubGluZTsKKyAg ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHR5cGVvZiBpbmxpbmUg IT09ICdib29sZWFuJykgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBU eXBlRXJyb3IoJ2lubGluZSgpIGV4cGVjdHMgYSBib29sZWFuIHBhcmFtZXRl cicpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBvcHRpb25zLmlu bGluZSA9IGlubGluZTsKKyAgICAgICAgICAgIHJldHVybiBwaWNrZXI7Cisg ICAgICAgIH07CisKKyAgICAgICAgcGlja2VyLmNsZWFyID0gZnVuY3Rpb24g KCkgeworICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVy biBwaWNrZXI7CisgICAgICAgIH07CisKKyAgICAgICAgcGlja2VyLmtleUJp bmRzID0gZnVuY3Rpb24gKGtleUJpbmRzKSB7CisgICAgICAgICAgICBpZiAo YXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgeworICAgICAgICAgICAgICAgIHJl dHVybiBvcHRpb25zLmtleUJpbmRzOworICAgICAgICAgICAgfQorCisgICAg ICAgICAgICBvcHRpb25zLmtleUJpbmRzID0ga2V5QmluZHM7CisgICAgICAg ICAgICByZXR1cm4gcGlja2VyOworICAgICAgICB9OworCisgICAgICAgIHBp Y2tlci5nZXRNb21lbnQgPSBmdW5jdGlvbiAoZCkgeworICAgICAgICAgICAg cmV0dXJuIGdldE1vbWVudChkKTsKKyAgICAgICAgfTsKKworICAgICAgICBw aWNrZXIuZGVidWcgPSBmdW5jdGlvbiAoZGVidWcpIHsKKyAgICAgICAgICAg IGlmICh0eXBlb2YgZGVidWcgIT09ICdib29sZWFuJykgeworICAgICAgICAg ICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2RlYnVnKCkgZXhwZWN0cyBh IGJvb2xlYW4gcGFyYW1ldGVyJyk7CisgICAgICAgICAgICB9CisKKyAgICAg ICAgICAgIG9wdGlvbnMuZGVidWcgPSBkZWJ1ZzsKKyAgICAgICAgICAgIHJl dHVybiBwaWNrZXI7CisgICAgICAgIH07CisKKyAgICAgICAgcGlja2VyLmFs bG93SW5wdXRUb2dnbGUgPSBmdW5jdGlvbiAoYWxsb3dJbnB1dFRvZ2dsZSkg eworICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHsK KyAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5hbGxvd0lucHV0VG9n Z2xlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodHlwZW9m IGFsbG93SW5wdXRUb2dnbGUgIT09ICdib29sZWFuJykgeworICAgICAgICAg ICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FsbG93SW5wdXRUb2dnbGUo KSBleHBlY3RzIGEgYm9vbGVhbiBwYXJhbWV0ZXInKTsKKyAgICAgICAgICAg IH0KKworICAgICAgICAgICAgb3B0aW9ucy5hbGxvd0lucHV0VG9nZ2xlID0g YWxsb3dJbnB1dFRvZ2dsZTsKKyAgICAgICAgICAgIHJldHVybiBwaWNrZXI7 CisgICAgICAgIH07CisKKyAgICAgICAgcGlja2VyLnNob3dDbG9zZSA9IGZ1 bmN0aW9uIChzaG93Q2xvc2UpIHsKKyAgICAgICAgICAgIGlmIChhcmd1bWVu dHMubGVuZ3RoID09PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9w dGlvbnMuc2hvd0Nsb3NlOworICAgICAgICAgICAgfQorCisgICAgICAgICAg ICBpZiAodHlwZW9mIHNob3dDbG9zZSAhPT0gJ2Jvb2xlYW4nKSB7CisgICAg ICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2hvd0Nsb3NlKCkg ZXhwZWN0cyBhIGJvb2xlYW4gcGFyYW1ldGVyJyk7CisgICAgICAgICAgICB9 CisKKyAgICAgICAgICAgIG9wdGlvbnMuc2hvd0Nsb3NlID0gc2hvd0Nsb3Nl OworICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjsKKyAgICAgICAgfTsKKwor ICAgICAgICBwaWNrZXIua2VlcEludmFsaWQgPSBmdW5jdGlvbiAoa2VlcElu dmFsaWQpIHsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09 PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMua2VlcElu dmFsaWQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0eXBl b2Yga2VlcEludmFsaWQgIT09ICdib29sZWFuJykgeworICAgICAgICAgICAg ICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2tlZXBJbnZhbGlkKCkgZXhwZWN0 cyBhIGJvb2xlYW4gcGFyYW1ldGVyJyk7CisgICAgICAgICAgICB9CisgICAg ICAgICAgICBvcHRpb25zLmtlZXBJbnZhbGlkID0ga2VlcEludmFsaWQ7Cisg ICAgICAgICAgICByZXR1cm4gcGlja2VyOworICAgICAgICB9OworCisgICAg ICAgIHBpY2tlci5kYXRlcGlja2VySW5wdXQgPSBmdW5jdGlvbiAoZGF0ZXBp Y2tlcklucHV0KSB7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0 aCA9PT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmRh dGVwaWNrZXJJbnB1dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg aWYgKHR5cGVvZiBkYXRlcGlja2VySW5wdXQgIT09ICdzdHJpbmcnKSB7Cisg ICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZGF0ZXBpY2tl cklucHV0KCkgZXhwZWN0cyBhIHN0cmluZyBwYXJhbWV0ZXInKTsKKyAgICAg ICAgICAgIH0KKworICAgICAgICAgICAgb3B0aW9ucy5kYXRlcGlja2VySW5w dXQgPSBkYXRlcGlja2VySW5wdXQ7CisgICAgICAgICAgICByZXR1cm4gcGlj a2VyOworICAgICAgICB9OworCisgICAgICAgIHBpY2tlci5wYXJzZUlucHV0 RGF0ZSA9IGZ1bmN0aW9uIChwYXJzZUlucHV0RGF0ZSkgeworICAgICAgICAg ICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHsKKyAgICAgICAgICAg ICAgICByZXR1cm4gb3B0aW9ucy5wYXJzZUlucHV0RGF0ZTsKKyAgICAgICAg ICAgIH0KKworICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJzZUlucHV0RGF0 ZSAhPT0gJ2Z1bmN0aW9uJykgeworICAgICAgICAgICAgICAgIHRocm93IG5l dyBUeXBlRXJyb3IoJ3BhcnNlSW5wdXREYXRlKCkgc2hvbHVkIGJlIGFzIGZ1 bmN0aW9uJyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG9wdGlv bnMucGFyc2VJbnB1dERhdGUgPSBwYXJzZUlucHV0RGF0ZTsKKworICAgICAg ICAgICAgcmV0dXJuIHBpY2tlcjsKKyAgICAgICAgfTsKKworICAgICAgICBw aWNrZXIuZGlzYWJsZWRUaW1lSW50ZXJ2YWxzID0gZnVuY3Rpb24gKGRpc2Fi bGVkVGltZUludGVydmFscykgeworICAgICAgICAgICAgLy8vPHNpZ25hdHVy ZSBoZWxwS2V5d29yZD0iJC5mbi5kYXRldGltZXBpY2tlci5kaXNhYmxlZFRp bWVJbnRlcnZhbHMiPgorICAgICAgICAgICAgLy8vPHN1bW1hcnk+UmV0dXJu cyBhbiBhcnJheSB3aXRoIHRoZSBjdXJyZW50bHkgc2V0IGRpc2FibGVkIGRh dGVzIG9uIHRoZSBjb21wb25lbnQuPC9zdW1tYXJ5PgorICAgICAgICAgICAg Ly8vPHJldHVybnMgdHlwZT0iYXJyYXkiPm9wdGlvbnMuZGlzYWJsZWRUaW1l SW50ZXJ2YWxzPC9yZXR1cm5zPgorICAgICAgICAgICAgLy8vPC9zaWduYXR1 cmU+CisgICAgICAgICAgICAvLy88c2lnbmF0dXJlPgorICAgICAgICAgICAg Ly8vPHN1bW1hcnk+U2V0dGluZyB0aGlzIHRha2VzIHByZWNlZGVuY2Ugb3Zl ciBvcHRpb25zLm1pbkRhdGUsIG9wdGlvbnMubWF4RGF0ZSBjb25maWd1cmF0 aW9uLiBBbHNvIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiByZW1vdmVzIHRoZSBj b25maWd1cmF0aW9uIG9mCisgICAgICAgICAgICAvLy9vcHRpb25zLmVuYWJs ZWREYXRlcyBpZiBzdWNoIGV4aXN0Ljwvc3VtbWFyeT4KKyAgICAgICAgICAg IC8vLzxwYXJhbSBuYW1lPSJkYXRlcyIgbG9jaWQ9IiQuZm4uZGF0ZXRpbWVw aWNrZXIuZGlzYWJsZWRUaW1lSW50ZXJ2YWxzX3A6ZGF0ZXMiPlRha2VzIGFu IFsgc3RyaW5nIG9yIERhdGUgb3IgbW9tZW50IF0gb2YgdmFsdWVzIGFuZCBh bGxvd3MgdGhlIHVzZXIgdG8gc2VsZWN0IG9ubHkgZnJvbSB0aG9zZSBkYXlz LjwvcGFyYW0+CisgICAgICAgICAgICAvLy88L3NpZ25hdHVyZT4KKyAgICAg ICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7CisgICAgICAg ICAgICAgICAgcmV0dXJuIChvcHRpb25zLmRpc2FibGVkVGltZUludGVydmFs cyA/ICQuZXh0ZW5kKHt9LCBvcHRpb25zLmRpc2FibGVkVGltZUludGVydmFs cykgOiBvcHRpb25zLmRpc2FibGVkVGltZUludGVydmFscyk7CisgICAgICAg ICAgICB9CisKKyAgICAgICAgICAgIGlmICghZGlzYWJsZWRUaW1lSW50ZXJ2 YWxzKSB7CisgICAgICAgICAgICAgICAgb3B0aW9ucy5kaXNhYmxlZFRpbWVJ bnRlcnZhbHMgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB1cGRhdGUoKTsK KyAgICAgICAgICAgICAgICByZXR1cm4gcGlja2VyOworICAgICAgICAgICAg fQorICAgICAgICAgICAgaWYgKCEoZGlzYWJsZWRUaW1lSW50ZXJ2YWxzIGlu c3RhbmNlb2YgQXJyYXkpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3 IFR5cGVFcnJvcignZGlzYWJsZWRUaW1lSW50ZXJ2YWxzKCkgZXhwZWN0cyBh biBhcnJheSBwYXJhbWV0ZXInKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIG9wdGlvbnMuZGlzYWJsZWRUaW1lSW50ZXJ2YWxzID0gZGlzYWJsZWRU aW1lSW50ZXJ2YWxzOworICAgICAgICAgICAgdXBkYXRlKCk7CisgICAgICAg ICAgICByZXR1cm4gcGlja2VyOworICAgICAgICB9OworCisgICAgICAgIHBp Y2tlci5kaXNhYmxlZEhvdXJzID0gZnVuY3Rpb24gKGhvdXJzKSB7CisgICAg ICAgICAgICAvLy88c2lnbmF0dXJlIGhlbHBLZXl3b3JkPSIkLmZuLmRhdGV0 aW1lcGlja2VyLmRpc2FibGVkSG91cnMiPgorICAgICAgICAgICAgLy8vPHN1 bW1hcnk+UmV0dXJucyBhbiBhcnJheSB3aXRoIHRoZSBjdXJyZW50bHkgc2V0 IGRpc2FibGVkIGhvdXJzIG9uIHRoZSBjb21wb25lbnQuPC9zdW1tYXJ5Pgor ICAgICAgICAgICAgLy8vPHJldHVybnMgdHlwZT0iYXJyYXkiPm9wdGlvbnMu ZGlzYWJsZWRIb3VyczwvcmV0dXJucz4KKyAgICAgICAgICAgIC8vLzwvc2ln bmF0dXJlPgorICAgICAgICAgICAgLy8vPHNpZ25hdHVyZT4KKyAgICAgICAg ICAgIC8vLzxzdW1tYXJ5PlNldHRpbmcgdGhpcyB0YWtlcyBwcmVjZWRlbmNl IG92ZXIgb3B0aW9ucy5taW5EYXRlLCBvcHRpb25zLm1heERhdGUgY29uZmln dXJhdGlvbi4gQWxzbyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gcmVtb3ZlcyB0 aGUgY29uZmlndXJhdGlvbiBvZgorICAgICAgICAgICAgLy8vb3B0aW9ucy5l bmFibGVkSG91cnMgaWYgc3VjaCBleGlzdC48L3N1bW1hcnk+CisgICAgICAg ICAgICAvLy88cGFyYW0gbmFtZT0iaG91cnMiIGxvY2lkPSIkLmZuLmRhdGV0 aW1lcGlja2VyLmRpc2FibGVkSG91cnNfcDpob3VycyI+VGFrZXMgYW4gWyBp bnQgXSBvZiB2YWx1ZXMgYW5kIGRpc2FsbG93cyB0aGUgdXNlciB0byBzZWxl Y3Qgb25seSBmcm9tIHRob3NlIGhvdXJzLjwvcGFyYW0+CisgICAgICAgICAg ICAvLy88L3NpZ25hdHVyZT4KKyAgICAgICAgICAgIGlmIChhcmd1bWVudHMu bGVuZ3RoID09PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChvcHRp b25zLmRpc2FibGVkSG91cnMgPyAkLmV4dGVuZCh7fSwgb3B0aW9ucy5kaXNh YmxlZEhvdXJzKSA6IG9wdGlvbnMuZGlzYWJsZWRIb3Vycyk7CisgICAgICAg ICAgICB9CisKKyAgICAgICAgICAgIGlmICghaG91cnMpIHsKKyAgICAgICAg ICAgICAgICBvcHRpb25zLmRpc2FibGVkSG91cnMgPSBmYWxzZTsKKyAgICAg ICAgICAgICAgICB1cGRhdGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g cGlja2VyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCEoaG91 cnMgaW5zdGFuY2VvZiBBcnJheSkpIHsKKyAgICAgICAgICAgICAgICB0aHJv dyBuZXcgVHlwZUVycm9yKCdkaXNhYmxlZEhvdXJzKCkgZXhwZWN0cyBhbiBh cnJheSBwYXJhbWV0ZXInKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg IG9wdGlvbnMuZGlzYWJsZWRIb3VycyA9IGluZGV4R2l2ZW5Ib3Vycyhob3Vy cyk7CisgICAgICAgICAgICBvcHRpb25zLmVuYWJsZWRIb3VycyA9IGZhbHNl OworICAgICAgICAgICAgaWYgKG9wdGlvbnMudXNlQ3VycmVudCAmJiAhb3B0 aW9ucy5rZWVwSW52YWxpZCkgeworICAgICAgICAgICAgICAgIHZhciB0cmll cyA9IDA7CisgICAgICAgICAgICAgICAgd2hpbGUgKCFpc1ZhbGlkKGRhdGUs ICdoJykpIHsKKyAgICAgICAgICAgICAgICAgICAgZGF0ZS5hZGQoMSwgJ2gn KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRyaWVzID09PSAyNCkgewor ICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgJ1RyaWVkIDI0IHRpbWVz IHRvIGZpbmQgYSB2YWxpZCBkYXRlJzsKKyAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgICB0cmllcysrOworICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICBzZXRWYWx1ZShkYXRlKTsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIHVwZGF0ZSgpOworICAgICAgICAgICAg cmV0dXJuIHBpY2tlcjsKKyAgICAgICAgfTsKKworICAgICAgICBwaWNrZXIu ZW5hYmxlZEhvdXJzID0gZnVuY3Rpb24gKGhvdXJzKSB7CisgICAgICAgICAg ICAvLy88c2lnbmF0dXJlIGhlbHBLZXl3b3JkPSIkLmZuLmRhdGV0aW1lcGlj a2VyLmVuYWJsZWRIb3VycyI+CisgICAgICAgICAgICAvLy88c3VtbWFyeT5S ZXR1cm5zIGFuIGFycmF5IHdpdGggdGhlIGN1cnJlbnRseSBzZXQgZW5hYmxl ZCBob3VycyBvbiB0aGUgY29tcG9uZW50Ljwvc3VtbWFyeT4KKyAgICAgICAg ICAgIC8vLzxyZXR1cm5zIHR5cGU9ImFycmF5Ij5vcHRpb25zLmVuYWJsZWRI b3VyczwvcmV0dXJucz4KKyAgICAgICAgICAgIC8vLzwvc2lnbmF0dXJlPgor ICAgICAgICAgICAgLy8vPHNpZ25hdHVyZT4KKyAgICAgICAgICAgIC8vLzxz dW1tYXJ5PlNldHRpbmcgdGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb3B0 aW9ucy5taW5EYXRlLCBvcHRpb25zLm1heERhdGUgY29uZmlndXJhdGlvbi4g QWxzbyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gcmVtb3ZlcyB0aGUgY29uZmln dXJhdGlvbiBvZiBvcHRpb25zLmRpc2FibGVkSG91cnMgaWYgc3VjaCBleGlz dC48L3N1bW1hcnk+CisgICAgICAgICAgICAvLy88cGFyYW0gbmFtZT0iaG91 cnMiIGxvY2lkPSIkLmZuLmRhdGV0aW1lcGlja2VyLmVuYWJsZWRIb3Vyc19w OmhvdXJzIj5UYWtlcyBhbiBbIGludCBdIG9mIHZhbHVlcyBhbmQgYWxsb3dz IHRoZSB1c2VyIHRvIHNlbGVjdCBvbmx5IGZyb20gdGhvc2UgaG91cnMuPC9w YXJhbT4KKyAgICAgICAgICAgIC8vLzwvc2lnbmF0dXJlPgorICAgICAgICAg ICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHsKKyAgICAgICAgICAg ICAgICByZXR1cm4gKG9wdGlvbnMuZW5hYmxlZEhvdXJzID8gJC5leHRlbmQo e30sIG9wdGlvbnMuZW5hYmxlZEhvdXJzKSA6IG9wdGlvbnMuZW5hYmxlZEhv dXJzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFob3Vy cykgeworICAgICAgICAgICAgICAgIG9wdGlvbnMuZW5hYmxlZEhvdXJzID0g ZmFsc2U7CisgICAgICAgICAgICAgICAgdXBkYXRlKCk7CisgICAgICAgICAg ICAgICAgcmV0dXJuIHBpY2tlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIGlmICghKGhvdXJzIGluc3RhbmNlb2YgQXJyYXkpKSB7CisgICAgICAg ICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZW5hYmxlZEhvdXJzKCkg ZXhwZWN0cyBhbiBhcnJheSBwYXJhbWV0ZXInKTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICAgIG9wdGlvbnMuZW5hYmxlZEhvdXJzID0gaW5kZXhHaXZl bkhvdXJzKGhvdXJzKTsKKyAgICAgICAgICAgIG9wdGlvbnMuZGlzYWJsZWRI b3VycyA9IGZhbHNlOworICAgICAgICAgICAgaWYgKG9wdGlvbnMudXNlQ3Vy cmVudCAmJiAhb3B0aW9ucy5rZWVwSW52YWxpZCkgeworICAgICAgICAgICAg ICAgIHZhciB0cmllcyA9IDA7CisgICAgICAgICAgICAgICAgd2hpbGUgKCFp c1ZhbGlkKGRhdGUsICdoJykpIHsKKyAgICAgICAgICAgICAgICAgICAgZGF0 ZS5hZGQoMSwgJ2gnKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRyaWVz ID09PSAyNCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgJ1Ry aWVkIDI0IHRpbWVzIHRvIGZpbmQgYSB2YWxpZCBkYXRlJzsKKyAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB0cmllcysrOwor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzZXRWYWx1ZShk YXRlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHVwZGF0ZSgpOwor ICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjsKKyAgICAgICAgfTsKKyAgICAg ICAgLyoqCisgICAgICAgICAqIFJldHVybnMgdGhlIGNvbXBvbmVudCdzIG1v ZGVsIGN1cnJlbnQgdmlld0RhdGUsIGEgbW9tZW50IG9iamVjdCBvciBudWxs IGlmIG5vdCBzZXQuIFBhc3NpbmcgYSBudWxsIHZhbHVlIHVuc2V0cyB0aGUg Y29tcG9uZW50cyBtb2RlbCBjdXJyZW50IG1vbWVudC4gUGFyc2luZyBvZiB0 aGUgbmV3RGF0ZSBwYXJhbWV0ZXIgaXMgbWFkZSB1c2luZyBtb21lbnQgbGli cmFyeSB3aXRoIHRoZSBvcHRpb25zLmZvcm1hdCBhbmQgb3B0aW9ucy51c2VT dHJpY3QgY29tcG9uZW50cyBjb25maWd1cmF0aW9uLgorICAgICAgICAgKiBA cGFyYW0ge1Rha2VzIHN0cmluZywgdmlld0RhdGUsIG1vbWVudCwgbnVsbCBw YXJhbWV0ZXIufSBuZXdEYXRlCisgICAgICAgICAqIEByZXR1cm5zIHt2aWV3 RGF0ZS5jbG9uZSgpfQorICAgICAgICAgKi8KKyAgICAgICAgcGlja2VyLnZp ZXdEYXRlID0gZnVuY3Rpb24gKG5ld0RhdGUpIHsKKyAgICAgICAgICAgIGlm IChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7CisgICAgICAgICAgICAgICAg cmV0dXJuIHZpZXdEYXRlLmNsb25lKCk7CisgICAgICAgICAgICB9CisKKyAg ICAgICAgICAgIGlmICghbmV3RGF0ZSkgeworICAgICAgICAgICAgICAgIHZp ZXdEYXRlID0gZGF0ZS5jbG9uZSgpOworICAgICAgICAgICAgICAgIHJldHVy biBwaWNrZXI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0 eXBlb2YgbmV3RGF0ZSAhPT0gJ3N0cmluZycgJiYgIW1vbWVudC5pc01vbWVu dChuZXdEYXRlKSAmJiAhKG5ld0RhdGUgaW5zdGFuY2VvZiBEYXRlKSkgewor ICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZpZXdEYXRl KCkgcGFyYW1ldGVyIG11c3QgYmUgb25lIG9mIFtzdHJpbmcsIG1vbWVudCBv ciBEYXRlXScpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aWV3 RGF0ZSA9IHBhcnNlSW5wdXREYXRlKG5ld0RhdGUpOworICAgICAgICAgICAg dmlld1VwZGF0ZSgpOworICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjsKKyAg ICAgICAgfTsKKworICAgICAgICAvLyBpbml0aWFsaXppbmcgZWxlbWVudCBh bmQgY29tcG9uZW50IGF0dHJpYnV0ZXMKKyAgICAgICAgaWYgKGVsZW1lbnQu aXMoJ2lucHV0JykpIHsKKyAgICAgICAgICAgIGlucHV0ID0gZWxlbWVudDsK KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlucHV0ID0gZWxlbWVu dC5maW5kKG9wdGlvbnMuZGF0ZXBpY2tlcklucHV0KTsKKyAgICAgICAgICAg IGlmIChpbnB1dC5sZW5ndGggPT09IDApIHsKKyAgICAgICAgICAgICAgICBp bnB1dCA9IGVsZW1lbnQuZmluZCgnaW5wdXQnKTsKKyAgICAgICAgICAgIH0g ZWxzZSBpZiAoIWlucHV0LmlzKCdpbnB1dCcpKSB7CisgICAgICAgICAgICAg ICAgdGhyb3cgbmV3IEVycm9yKCdDU1MgY2xhc3MgIicgKyBvcHRpb25zLmRh dGVwaWNrZXJJbnB1dCArICciIGNhbm5vdCBiZSBhcHBsaWVkIHRvIG5vbiBp bnB1dCBlbGVtZW50Jyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor ICAgICAgICBpZiAoZWxlbWVudC5oYXNDbGFzcygnaW5wdXQtZ3JvdXAnKSkg eworICAgICAgICAgICAgLy8gaW4gY2FzZSB0aGVyZSBpcyBtb3JlIHRoZW4g b25lICdpbnB1dC1ncm91cC1hZGRvbicgSXNzdWUgIzQ4CisgICAgICAgICAg ICBpZiAoZWxlbWVudC5maW5kKCcuZGF0ZXBpY2tlcmJ1dHRvbicpLmxlbmd0 aCA9PT0gMCkgeworICAgICAgICAgICAgICAgIGNvbXBvbmVudCA9IGVsZW1l bnQuZmluZCgnLmlucHV0LWdyb3VwLWFkZG9uJyk7CisgICAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgICAgIGNvbXBvbmVudCA9IGVsZW1lbnQu ZmluZCgnLmRhdGVwaWNrZXJidXR0b24nKTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgfQorCisgICAgICAgIGlmICghb3B0aW9ucy5pbmxpbmUgJiYgIWlu cHV0LmlzKCdpbnB1dCcpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy b3IoJ0NvdWxkIG5vdCBpbml0aWFsaXplIERhdGVUaW1lUGlja2VyIHdpdGhv dXQgYW4gaW5wdXQgZWxlbWVudCcpOworICAgICAgICB9CisKKyAgICAgICAg Ly8gU2V0IGRlZmF1bHRzIGZvciBkYXRlIGhlcmUgbm93IGluc3RlYWQgb2Yg aW4gdmFyIGRlY2xhcmF0aW9uCisgICAgICAgIGRhdGUgPSBnZXRNb21lbnQo KTsKKyAgICAgICAgdmlld0RhdGUgPSBkYXRlLmNsb25lKCk7CisKKyAgICAg ICAgJC5leHRlbmQodHJ1ZSwgb3B0aW9ucywgZGF0YVRvT3B0aW9ucygpKTsK KworICAgICAgICBwaWNrZXIub3B0aW9ucyhvcHRpb25zKTsKKworICAgICAg ICBpbml0Rm9ybWF0dGluZygpOworCisgICAgICAgIGF0dGFjaERhdGVQaWNr ZXJFbGVtZW50RXZlbnRzKCk7CisKKyAgICAgICAgaWYgKGlucHV0LnByb3Ao J2Rpc2FibGVkJykpIHsKKyAgICAgICAgICAgIHBpY2tlci5kaXNhYmxlKCk7 CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlucHV0LmlzKCdpbnB1dCcpICYm IGlucHV0LnZhbCgpLnRyaW0oKS5sZW5ndGggIT09IDApIHsKKyAgICAgICAg ICAgIHNldFZhbHVlKHBhcnNlSW5wdXREYXRlKGlucHV0LnZhbCgpLnRyaW0o KSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuZGVm YXVsdERhdGUgJiYgaW5wdXQuYXR0cigncGxhY2Vob2xkZXInKSA9PT0gdW5k ZWZpbmVkKSB7CisgICAgICAgICAgICBzZXRWYWx1ZShvcHRpb25zLmRlZmF1 bHREYXRlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAob3B0aW9ucy5pbmxp bmUpIHsKKyAgICAgICAgICAgIHNob3coKTsKKyAgICAgICAgfQorICAgICAg ICByZXR1cm4gcGlja2VyOworICAgIH07CisKKyAgICAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGpRdWVy eSBwbHVnaW4gY29uc3RydWN0b3IgYW5kIGRlZmF1bHRzIG9iamVjdAorICAg ICAqCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworCisgICAgLyoqCisgICAgKiBTZWUgKGh0dHA6Ly9qcXVlcnkuY29tLyku CisgICAgKiBAbmFtZSBqUXVlcnkKKyAgICAqIEBjbGFzcworICAgICogU2Vl IHRoZSBqUXVlcnkgTGlicmFyeSAgKGh0dHA6Ly9qcXVlcnkuY29tLykgZm9y IGZ1bGwgZGV0YWlscy4gIFRoaXMganVzdAorICAgICogZG9jdW1lbnRzIHRo ZSBmdW5jdGlvbiBhbmQgY2xhc3NlcyB0aGF0IGFyZSBhZGRlZCB0byBqUXVl cnkgYnkgdGhpcyBwbHVnLWluLgorICAgICovCisgICAgLyoqCisgICAgICog U2VlIChodHRwOi8vanF1ZXJ5LmNvbS8pCisgICAgICogQG5hbWUgZm4KKyAg ICAgKiBAY2xhc3MKKyAgICAgKiBTZWUgdGhlIGpRdWVyeSBMaWJyYXJ5ICAo aHR0cDovL2pxdWVyeS5jb20vKSBmb3IgZnVsbCBkZXRhaWxzLiAgVGhpcyBq dXN0CisgICAgICogZG9jdW1lbnRzIHRoZSBmdW5jdGlvbiBhbmQgY2xhc3Nl cyB0aGF0IGFyZSBhZGRlZCB0byBqUXVlcnkgYnkgdGhpcyBwbHVnLWluLgor ICAgICAqIEBtZW1iZXJPZiBqUXVlcnkKKyAgICAgKi8KKyAgICAvKioKKyAg ICAgKiBTaG93IGNvbW1lbnRzCisgICAgICogQGNsYXNzIGRhdGV0aW1lcGlj a2VyCisgICAgICogQG1lbWJlck9mIGpRdWVyeS5mbgorICAgICAqLworICAg ICQuZm4uZGF0ZXRpbWVwaWNrZXIgPSBmdW5jdGlvbiAob3B0aW9ucykgewor ICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKKworICAgICAgICB2 YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50 cywgMSksCisgICAgICAgICAgICBpc0luc3RhbmNlID0gdHJ1ZSwKKyAgICAg ICAgICAgIHRoaXNNZXRob2RzID0gWydkZXN0cm95JywgJ2hpZGUnLCAnc2hv dycsICd0b2dnbGUnXSwKKyAgICAgICAgICAgIHJldHVyblZhbHVlOworCisg ICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ29iamVjdCcpIHsKKyAg ICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgeworICAg ICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7CisgICAgICAgICAg ICAgICAgaWYgKCEkdGhpcy5kYXRhKCdEYXRlVGltZVBpY2tlcicpKSB7Cisg ICAgICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBhIHByaXZhdGUgY29weSBv ZiB0aGUgZGVmYXVsdHMgb2JqZWN0CisgICAgICAgICAgICAgICAgICAgIG9w dGlvbnMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgJC5mbi5kYXRldGltZXBpY2tl ci5kZWZhdWx0cywgb3B0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICR0 aGlzLmRhdGEoJ0RhdGVUaW1lUGlja2VyJywgZGF0ZVRpbWVQaWNrZXIoJHRo aXMsIG9wdGlvbnMpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICB9KTsKKyAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0g J3N0cmluZycpIHsKKyAgICAgICAgICAgIHRoaXMuZWFjaChmdW5jdGlvbiAo KSB7CisgICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSwKKyAg ICAgICAgICAgICAgICAgICAgaW5zdGFuY2UgPSAkdGhpcy5kYXRhKCdEYXRl VGltZVBpY2tlcicpOworICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2Up IHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdib290 c3RyYXAtZGF0ZXRpbWVwaWNrZXIoIicgKyBvcHRpb25zICsgJyIpIG1ldGhv ZCB3YXMgY2FsbGVkIG9uIGFuIGVsZW1lbnQgdGhhdCBpcyBub3QgdXNpbmcg RGF0ZVRpbWVQaWNrZXInKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg ICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGluc3RhbmNlW29wdGlvbnNdLmFw cGx5KGluc3RhbmNlLCBhcmdzKTsKKyAgICAgICAgICAgICAgICBpc0luc3Rh bmNlID0gcmV0dXJuVmFsdWUgPT09IGluc3RhbmNlOworICAgICAgICAgICAg fSk7CisKKyAgICAgICAgICAgIGlmIChpc0luc3RhbmNlIHx8ICQuaW5BcnJh eShvcHRpb25zLCB0aGlzTWV0aG9kcykgPiAtMSkgeworICAgICAgICAgICAg ICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgfQorCisgICAgICAgICAg ICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgICAgIH0KKworICAgICAgICB0 aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGFyZ3VtZW50cyBmb3IgRGF0 ZVRpbWVQaWNrZXI6ICcgKyBvcHRpb25zKTsKKyAgICB9OworCisgICAgJC5m bi5kYXRldGltZXBpY2tlci5kZWZhdWx0cyA9IHsKKyAgICAgICAgdGltZVpv bmU6ICcnLAorICAgICAgICBmb3JtYXQ6IGZhbHNlLAorICAgICAgICBkYXlW aWV3SGVhZGVyRm9ybWF0OiAnTU1NTSBZWVlZJywKKyAgICAgICAgZXh0cmFG b3JtYXRzOiBmYWxzZSwKKyAgICAgICAgc3RlcHBpbmc6IDEsCisgICAgICAg IG1pbkRhdGU6IGZhbHNlLAorICAgICAgICBtYXhEYXRlOiBmYWxzZSwKKyAg ICAgICAgdXNlQ3VycmVudDogdHJ1ZSwKKyAgICAgICAgY29sbGFwc2U6IHRy dWUsCisgICAgICAgIGxvY2FsZTogbW9tZW50LmxvY2FsZSgpLAorICAgICAg ICBkZWZhdWx0RGF0ZTogZmFsc2UsCisgICAgICAgIGRpc2FibGVkRGF0ZXM6 IGZhbHNlLAorICAgICAgICBlbmFibGVkRGF0ZXM6IGZhbHNlLAorICAgICAg ICBpY29uczogeworICAgICAgICAgICAgdGltZTogJ2dseXBoaWNvbiBnbHlw aGljb24tdGltZScsCisgICAgICAgICAgICBkYXRlOiAnZ2x5cGhpY29uIGds eXBoaWNvbi1jYWxlbmRhcicsCisgICAgICAgICAgICB1cDogJ2dseXBoaWNv biBnbHlwaGljb24tY2hldnJvbi11cCcsCisgICAgICAgICAgICBkb3duOiAn Z2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLWRvd24nLAorICAgICAgICAg ICAgcHJldmlvdXM6ICdnbHlwaGljb24gZ2x5cGhpY29uLWNoZXZyb24tbGVm dCcsCisgICAgICAgICAgICBuZXh0OiAnZ2x5cGhpY29uIGdseXBoaWNvbi1j aGV2cm9uLXJpZ2h0JywKKyAgICAgICAgICAgIHRvZGF5OiAnZ2x5cGhpY29u IGdseXBoaWNvbi1zY3JlZW5zaG90JywKKyAgICAgICAgICAgIGNsZWFyOiAn Z2x5cGhpY29uIGdseXBoaWNvbi10cmFzaCcsCisgICAgICAgICAgICBjbG9z ZTogJ2dseXBoaWNvbiBnbHlwaGljb24tcmVtb3ZlJworICAgICAgICB9LAor ICAgICAgICB0b29sdGlwczogeworICAgICAgICAgICAgdG9kYXk6ICdHbyB0 byB0b2RheScsCisgICAgICAgICAgICBjbGVhcjogJ0NsZWFyIHNlbGVjdGlv bicsCisgICAgICAgICAgICBjbG9zZTogJ0Nsb3NlIHRoZSBwaWNrZXInLAor ICAgICAgICAgICAgc2VsZWN0TW9udGg6ICdTZWxlY3QgTW9udGgnLAorICAg ICAgICAgICAgcHJldk1vbnRoOiAnUHJldmlvdXMgTW9udGgnLAorICAgICAg ICAgICAgbmV4dE1vbnRoOiAnTmV4dCBNb250aCcsCisgICAgICAgICAgICBz ZWxlY3RZZWFyOiAnU2VsZWN0IFllYXInLAorICAgICAgICAgICAgcHJldlll YXI6ICdQcmV2aW91cyBZZWFyJywKKyAgICAgICAgICAgIG5leHRZZWFyOiAn TmV4dCBZZWFyJywKKyAgICAgICAgICAgIHNlbGVjdERlY2FkZTogJ1NlbGVj dCBEZWNhZGUnLAorICAgICAgICAgICAgcHJldkRlY2FkZTogJ1ByZXZpb3Vz IERlY2FkZScsCisgICAgICAgICAgICBuZXh0RGVjYWRlOiAnTmV4dCBEZWNh ZGUnLAorICAgICAgICAgICAgcHJldkNlbnR1cnk6ICdQcmV2aW91cyBDZW50 dXJ5JywKKyAgICAgICAgICAgIG5leHRDZW50dXJ5OiAnTmV4dCBDZW50dXJ5 JywKKyAgICAgICAgICAgIHBpY2tIb3VyOiAnUGljayBIb3VyJywKKyAgICAg ICAgICAgIGluY3JlbWVudEhvdXI6ICdJbmNyZW1lbnQgSG91cicsCisgICAg ICAgICAgICBkZWNyZW1lbnRIb3VyOiAnRGVjcmVtZW50IEhvdXInLAorICAg ICAgICAgICAgcGlja01pbnV0ZTogJ1BpY2sgTWludXRlJywKKyAgICAgICAg ICAgIGluY3JlbWVudE1pbnV0ZTogJ0luY3JlbWVudCBNaW51dGUnLAorICAg ICAgICAgICAgZGVjcmVtZW50TWludXRlOiAnRGVjcmVtZW50IE1pbnV0ZScs CisgICAgICAgICAgICBwaWNrU2Vjb25kOiAnUGljayBTZWNvbmQnLAorICAg ICAgICAgICAgaW5jcmVtZW50U2Vjb25kOiAnSW5jcmVtZW50IFNlY29uZCcs CisgICAgICAgICAgICBkZWNyZW1lbnRTZWNvbmQ6ICdEZWNyZW1lbnQgU2Vj b25kJywKKyAgICAgICAgICAgIHRvZ2dsZVBlcmlvZDogJ1RvZ2dsZSBQZXJp b2QnLAorICAgICAgICAgICAgc2VsZWN0VGltZTogJ1NlbGVjdCBUaW1lJwor ICAgICAgICB9LAorICAgICAgICB1c2VTdHJpY3Q6IGZhbHNlLAorICAgICAg ICBzaWRlQnlTaWRlOiBmYWxzZSwKKyAgICAgICAgZGF5c09mV2Vla0Rpc2Fi bGVkOiBmYWxzZSwKKyAgICAgICAgY2FsZW5kYXJXZWVrczogZmFsc2UsCisg ICAgICAgIHZpZXdNb2RlOiAnZGF5cycsCisgICAgICAgIHRvb2xiYXJQbGFj ZW1lbnQ6ICdkZWZhdWx0JywKKyAgICAgICAgc2hvd1RvZGF5QnV0dG9uOiBm YWxzZSwKKyAgICAgICAgc2hvd0NsZWFyOiBmYWxzZSwKKyAgICAgICAgc2hv d0Nsb3NlOiBmYWxzZSwKKyAgICAgICAgd2lkZ2V0UG9zaXRpb25pbmc6IHsK KyAgICAgICAgICAgIGhvcml6b250YWw6ICdhdXRvJywKKyAgICAgICAgICAg IHZlcnRpY2FsOiAnYXV0bycKKyAgICAgICAgfSwKKyAgICAgICAgd2lkZ2V0 UGFyZW50OiBudWxsLAorICAgICAgICBpZ25vcmVSZWFkb25seTogZmFsc2Us CisgICAgICAgIGtlZXBPcGVuOiBmYWxzZSwKKyAgICAgICAgZm9jdXNPblNo b3c6IHRydWUsCisgICAgICAgIGlubGluZTogZmFsc2UsCisgICAgICAgIGtl ZXBJbnZhbGlkOiBmYWxzZSwKKyAgICAgICAgZGF0ZXBpY2tlcklucHV0OiAn LmRhdGVwaWNrZXJpbnB1dCcsCisgICAgICAgIGtleUJpbmRzOiB7CisgICAg ICAgICAgICB1cDogZnVuY3Rpb24gKHdpZGdldCkgeworICAgICAgICAgICAg ICAgIGlmICghd2lkZ2V0KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy bjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmFyIGQg PSB0aGlzLmRhdGUoKSB8fCB0aGlzLmdldE1vbWVudCgpOworICAgICAgICAg ICAgICAgIGlmICh3aWRnZXQuZmluZCgnLmRhdGVwaWNrZXInKS5pcygnOnZp c2libGUnKSkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGUoZC5j bG9uZSgpLnN1YnRyYWN0KDcsICdkJykpOworICAgICAgICAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZShkLmNsb25l KCkuYWRkKHRoaXMuc3RlcHBpbmcoKSwgJ20nKSk7CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGRvd246IGZ1bmN0 aW9uICh3aWRnZXQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdpZGdldCkg eworICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTsKKyAgICAgICAg ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICB2YXIgZCA9IHRoaXMuZGF0ZSgpIHx8IHRoaXMuZ2V0TW9t ZW50KCk7CisgICAgICAgICAgICAgICAgaWYgKHdpZGdldC5maW5kKCcuZGF0 ZXBpY2tlcicpLmlzKCc6dmlzaWJsZScpKSB7CisgICAgICAgICAgICAgICAg ICAgIHRoaXMuZGF0ZShkLmNsb25lKCkuYWRkKDcsICdkJykpOworICAgICAg ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMu ZGF0ZShkLmNsb25lKCkuc3VidHJhY3QodGhpcy5zdGVwcGluZygpLCAnbScp KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAg ICAgICAgJ2NvbnRyb2wgdXAnOiBmdW5jdGlvbiAod2lkZ2V0KSB7CisgICAg ICAgICAgICAgICAgaWYgKCF3aWRnZXQpIHsKKyAgICAgICAgICAgICAgICAg ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICB2YXIgZCA9IHRoaXMuZGF0ZSgpIHx8IHRoaXMuZ2V0TW9tZW50KCk7Cisg ICAgICAgICAgICAgICAgaWYgKHdpZGdldC5maW5kKCcuZGF0ZXBpY2tlcicp LmlzKCc6dmlzaWJsZScpKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMu ZGF0ZShkLmNsb25lKCkuc3VidHJhY3QoMSwgJ3knKSk7CisgICAgICAgICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRl KGQuY2xvbmUoKS5hZGQoMSwgJ2gnKSk7CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICdjb250cm9sIGRvd24nOiBm dW5jdGlvbiAod2lkZ2V0KSB7CisgICAgICAgICAgICAgICAgaWYgKCF3aWRn ZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMuZGF0ZSgp IHx8IHRoaXMuZ2V0TW9tZW50KCk7CisgICAgICAgICAgICAgICAgaWYgKHdp ZGdldC5maW5kKCcuZGF0ZXBpY2tlcicpLmlzKCc6dmlzaWJsZScpKSB7Cisg ICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZShkLmNsb25lKCkuYWRkKDEs ICd5JykpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICAgICAgICAgIHRoaXMuZGF0ZShkLmNsb25lKCkuc3VidHJhY3QoMSwgJ2gn KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAg ICAgICAgIGxlZnQ6IGZ1bmN0aW9uICh3aWRnZXQpIHsKKyAgICAgICAgICAg ICAgICBpZiAoIXdpZGdldCkgeworICAgICAgICAgICAgICAgICAgICByZXR1 cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhciBk ID0gdGhpcy5kYXRlKCkgfHwgdGhpcy5nZXRNb21lbnQoKTsKKyAgICAgICAg ICAgICAgICBpZiAod2lkZ2V0LmZpbmQoJy5kYXRlcGlja2VyJykuaXMoJzp2 aXNpYmxlJykpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKGQu Y2xvbmUoKS5zdWJ0cmFjdCgxLCAnZCcpKTsKKyAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgcmlnaHQ6IGZ1bmN0aW9u ICh3aWRnZXQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdpZGdldCkgewor ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcy5kYXRlKCkgfHwgdGhp cy5nZXRNb21lbnQoKTsKKyAgICAgICAgICAgICAgICBpZiAod2lkZ2V0LmZp bmQoJy5kYXRlcGlja2VyJykuaXMoJzp2aXNpYmxlJykpIHsKKyAgICAgICAg ICAgICAgICAgICAgdGhpcy5kYXRlKGQuY2xvbmUoKS5hZGQoMSwgJ2QnKSk7 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgIHBhZ2VVcDogZnVuY3Rpb24gKHdpZGdldCkgeworICAgICAgICAgICAg ICAgIGlmICghd2lkZ2V0KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy bjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmFyIGQg PSB0aGlzLmRhdGUoKSB8fCB0aGlzLmdldE1vbWVudCgpOworICAgICAgICAg ICAgICAgIGlmICh3aWRnZXQuZmluZCgnLmRhdGVwaWNrZXInKS5pcygnOnZp c2libGUnKSkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGUoZC5j bG9uZSgpLnN1YnRyYWN0KDEsICdNJykpOworICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBwYWdlRG93bjogZnVuY3Rp b24gKHdpZGdldCkgeworICAgICAgICAgICAgICAgIGlmICghd2lkZ2V0KSB7 CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLmRhdGUoKSB8fCB0 aGlzLmdldE1vbWVudCgpOworICAgICAgICAgICAgICAgIGlmICh3aWRnZXQu ZmluZCgnLmRhdGVwaWNrZXInKS5pcygnOnZpc2libGUnKSkgeworICAgICAg ICAgICAgICAgICAgICB0aGlzLmRhdGUoZC5jbG9uZSgpLmFkZCgxLCAnTScp KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAg ICAgICAgZW50ZXI6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0 aGlzLmhpZGUoKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBlc2Nh cGU6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmhpZGUo KTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAvL3RhYjogZnVuY3Rp b24gKHdpZGdldCkgeyAvL3RoaXMgYnJlYWsgdGhlIGZsb3cgb2YgdGhlIGZv cm0uIGRpc2FibGluZyBmb3Igbm93CisgICAgICAgICAgICAvLyAgICB2YXIg dG9nZ2xlID0gd2lkZ2V0LmZpbmQoJy5waWNrZXItc3dpdGNoIGFbZGF0YS1h Y3Rpb249InRvZ2dsZVBpY2tlciJdJyk7CisgICAgICAgICAgICAvLyAgICBp Zih0b2dnbGUubGVuZ3RoID4gMCkgdG9nZ2xlLmNsaWNrKCk7CisgICAgICAg ICAgICAvL30sCisgICAgICAgICAgICAnY29udHJvbCBzcGFjZSc6IGZ1bmN0 aW9uICh3aWRnZXQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdpZGdldCkg eworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgIGlmICh3aWRnZXQuZmluZCgnLnRpbWVw aWNrZXInKS5pcygnOnZpc2libGUnKSkgeworICAgICAgICAgICAgICAgICAg ICB3aWRnZXQuZmluZCgnLmJ0bltkYXRhLWFjdGlvbj0idG9nZ2xlUGVyaW9k Il0nKS5jbGljaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IH0sCisgICAgICAgICAgICB0OiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg ICAgICAgdGhpcy5kYXRlKHRoaXMuZ2V0TW9tZW50KCkpOworICAgICAgICAg ICAgfSwKKyAgICAgICAgICAgICdkZWxldGUnOiBmdW5jdGlvbiAoKSB7Cisg ICAgICAgICAgICAgICAgdGhpcy5jbGVhcigpOworICAgICAgICAgICAgfQor ICAgICAgICB9LAorICAgICAgICBkZWJ1ZzogZmFsc2UsCisgICAgICAgIGFs bG93SW5wdXRUb2dnbGU6IGZhbHNlLAorICAgICAgICBkaXNhYmxlZFRpbWVJ bnRlcnZhbHM6IGZhbHNlLAorICAgICAgICBkaXNhYmxlZEhvdXJzOiBmYWxz ZSwKKyAgICAgICAgZW5hYmxlZEhvdXJzOiBmYWxzZSwKKyAgICAgICAgdmll d0RhdGU6IGZhbHNlCisgICAgfTsKKyAgICBpZiAodHlwZW9mIG1vZHVsZSAh PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSAk LmZuLmRhdGV0aW1lcGlja2VyOworICAgIH0KK30pKTsKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9ib290c3RyYXAtZGF0ZXRpbWVwaWNr ZXIubWluLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2Jvb3RzdHJhcC1k YXRldGltZXBpY2tlci5taW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uNDI1ZDVlNgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9ib290c3RyYXAtZGF0ZXRpbWVwaWNrZXIubWlu LmpzCkBAIC0wLDAgKzEsMjE3IEBACisvKiEgdmVyc2lvbiA6IDQuMTcuNDIK KyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKyBib290c3RyYXAtZGF0ZXRpbWVqcworIGh0dHBz Oi8vZ2l0aHViLmNvbS9Fb25hc2Rhbi9ib290c3RyYXAtZGF0ZXRpbWVwaWNr ZXIKKyBDb3B5cmlnaHQgKGMpIDIwMTUgSm9uYXRoYW4gUGV0ZXJzb24KKyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKyAqLworLyoKKyBUaGUgTUlUIExpY2Vuc2UgKE1JVCkK KworIENvcHlyaWdodCAoYykgMjAxNSBKb25hdGhhbiBQZXRlcnNvbgorCisg UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorIG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLCB0byBkZWFsCisgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24g dGhlIHJpZ2h0cworIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKyBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg dG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisgVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyBhbGwgY29waWVzIG9yIHN1 YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgSU1QTElFRCwgSU5DTFVESU5H IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCisgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug QU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisg QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HIEZST00sCisgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJ TgorIFRIRSBTT0ZUV0FSRS4KKyAqLworLypnbG9iYWwgZGVmaW5lOmZhbHNl ICovCisvKmdsb2JhbCBleHBvcnRzOmZhbHNlICovCisvKmdsb2JhbCByZXF1 aXJlOmZhbHNlICovCisvKmdsb2JhbCBqUXVlcnk6ZmFsc2UgKi8KKy8qZ2xv YmFsIG1vbWVudDpmYWxzZSAqLworIWZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0 IjtpZigiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKQor Ly8gQU1EIGlzIHVzZWQgLSBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgbW9k dWxlLgorZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk7ZWxzZSBpZigi b2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMpbW9kdWxlLmV4cG9ydHM9YShyZXF1 aXJlKCJqcXVlcnkiKSxyZXF1aXJlKCJtb21lbnQiKSk7ZWxzZXsKKy8vIE5l aXRoZXIgQU1EIG5vciBDb21tb25KUyB1c2VkLiBVc2UgZ2xvYmFsIHZhcmlh Ymxlcy4KK2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgalF1ZXJ5KXRocm93ImJv b3RzdHJhcC1kYXRldGltZXBpY2tlciByZXF1aXJlcyBqUXVlcnkgdG8gYmUg bG9hZGVkIGZpcnN0IjtpZigidW5kZWZpbmVkIj09dHlwZW9mIG1vbWVudCl0 aHJvdyJib290c3RyYXAtZGF0ZXRpbWVwaWNrZXIgcmVxdWlyZXMgTW9tZW50 LmpzIHRvIGJlIGxvYWRlZCBmaXJzdCI7YShqUXVlcnksbW9tZW50KX19KGZ1 bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2lmKCFiKXRocm93IG5ldyBFcnJv cigiYm9vdHN0cmFwLWRhdGV0aW1lcGlja2VyIHJlcXVpcmVzIE1vbWVudC5q cyB0byBiZSBsb2FkZWQgZmlyc3QiKTt2YXIgYz1mdW5jdGlvbihjLGQpe3Zh ciBlLGYsZyxoLGksaixrLGw9e30sbT0hMCxuPSExLG89ITEscD0wLHE9W3tj bHNOYW1lOiJkYXlzIixuYXZGbmM6Ik0iLG5hdlN0ZXA6MX0se2Nsc05hbWU6 Im1vbnRocyIsbmF2Rm5jOiJ5IixuYXZTdGVwOjF9LHtjbHNOYW1lOiJ5ZWFy cyIsbmF2Rm5jOiJ5IixuYXZTdGVwOjEwfSx7Y2xzTmFtZToiZGVjYWRlcyIs bmF2Rm5jOiJ5IixuYXZTdGVwOjEwMH1dLHI9WyJkYXlzIiwibW9udGhzIiwi eWVhcnMiLCJkZWNhZGVzIl0scz1bInRvcCIsImJvdHRvbSIsImF1dG8iXSx0 PVsibGVmdCIsInJpZ2h0IiwiYXV0byJdLHU9WyJkZWZhdWx0IiwidG9wIiwi Ym90dG9tIl0sdj17dXA6MzgsMzg6InVwIixkb3duOjQwLDQwOiJkb3duIixs ZWZ0OjM3LDM3OiJsZWZ0IixyaWdodDozOSwzOToicmlnaHQiLHRhYjo5LDk6 InRhYiIsZXNjYXBlOjI3LDI3OiJlc2NhcGUiLGVudGVyOjEzLDEzOiJlbnRl ciIscGFnZVVwOjMzLDMzOiJwYWdlVXAiLHBhZ2VEb3duOjM0LDM0OiJwYWdl RG93biIsc2hpZnQ6MTYsMTY6InNoaWZ0Iixjb250cm9sOjE3LDE3OiJjb250 cm9sIixzcGFjZTozMiwzMjoic3BhY2UiLHQ6ODQsODQ6InQiLGRlbGV0ZTo0 Niw0NjoiZGVsZXRlIn0sdz17fSwvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiBQ cml2YXRlIGZ1bmN0aW9ucworICAgICAgICAgICAgICoKKyAgICAgICAgICAg ICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3g9ZnVu Y3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09Yi50eiYmdm9pZCAwIT09ZC50aW1l Wm9uZSYmbnVsbCE9PWQudGltZVpvbmUmJiIiIT09ZC50aW1lWm9uZX0seT1m dW5jdGlvbihhKXt2YXIgYztyZXR1cm4gYz12b2lkIDA9PT1hfHxudWxsPT09 YT9iKCk6eCgpP2IudHooYSxqLGQudXNlU3RyaWN0LGQudGltZVpvbmUpOmIo YSxqLGQudXNlU3RyaWN0KSx4KCkmJmMudHooZC50aW1lWm9uZSksY30sej1m dW5jdGlvbihhKXtpZigic3RyaW5nIiE9dHlwZW9mIGF8fGEubGVuZ3RoPjEp dGhyb3cgbmV3IFR5cGVFcnJvcigiaXNFbmFibGVkIGV4cGVjdHMgYSBzaW5n bGUgY2hhcmFjdGVyIHN0cmluZyBwYXJhbWV0ZXIiKTtzd2l0Y2goYSl7Y2Fz ZSJ5IjpyZXR1cm4gaS5pbmRleE9mKCJZIikhPT0tMTtjYXNlIk0iOnJldHVy biBpLmluZGV4T2YoIk0iKSE9PS0xO2Nhc2UiZCI6cmV0dXJuIGkudG9Mb3dl ckNhc2UoKS5pbmRleE9mKCJkIikhPT0tMTtjYXNlImgiOmNhc2UiSCI6cmV0 dXJuIGkudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJoIikhPT0tMTtjYXNlIm0i OnJldHVybiBpLmluZGV4T2YoIm0iKSE9PS0xO2Nhc2UicyI6cmV0dXJuIGku aW5kZXhPZigicyIpIT09LTE7ZGVmYXVsdDpyZXR1cm4hMX19LEE9ZnVuY3Rp b24oKXtyZXR1cm4geigiaCIpfHx6KCJtIil8fHooInMiKX0sQj1mdW5jdGlv bigpe3JldHVybiB6KCJ5Iil8fHooIk0iKXx8eigiZCIpfSxDPWZ1bmN0aW9u KCl7dmFyIGI9YSgiPHRoZWFkPiIpLmFwcGVuZChhKCI8dHI+IikuYXBwZW5k KGEoIjx0aD4iKS5hZGRDbGFzcygicHJldiIpLmF0dHIoImRhdGEtYWN0aW9u IiwicHJldmlvdXMiKS5hcHBlbmQoYSgiPHNwYW4+IikuYWRkQ2xhc3MoZC5p Y29ucy5wcmV2aW91cykpKS5hcHBlbmQoYSgiPHRoPiIpLmFkZENsYXNzKCJw aWNrZXItc3dpdGNoIikuYXR0cigiZGF0YS1hY3Rpb24iLCJwaWNrZXJTd2l0 Y2giKS5hdHRyKCJjb2xzcGFuIixkLmNhbGVuZGFyV2Vla3M/IjYiOiI1Iikp LmFwcGVuZChhKCI8dGg+IikuYWRkQ2xhc3MoIm5leHQiKS5hdHRyKCJkYXRh LWFjdGlvbiIsIm5leHQiKS5hcHBlbmQoYSgiPHNwYW4+IikuYWRkQ2xhc3Mo ZC5pY29ucy5uZXh0KSkpKSxjPWEoIjx0Ym9keT4iKS5hcHBlbmQoYSgiPHRy PiIpLmFwcGVuZChhKCI8dGQ+IikuYXR0cigiY29sc3BhbiIsZC5jYWxlbmRh cldlZWtzPyI4IjoiNyIpKSk7cmV0dXJuW2EoIjxkaXY+IikuYWRkQ2xhc3Mo ImRhdGVwaWNrZXItZGF5cyIpLmFwcGVuZChhKCI8dGFibGU+IikuYWRkQ2xh c3MoInRhYmxlLWNvbmRlbnNlZCIpLmFwcGVuZChiKS5hcHBlbmQoYSgiPHRi b2R5PiIpKSksYSgiPGRpdj4iKS5hZGRDbGFzcygiZGF0ZXBpY2tlci1tb250 aHMiKS5hcHBlbmQoYSgiPHRhYmxlPiIpLmFkZENsYXNzKCJ0YWJsZS1jb25k ZW5zZWQiKS5hcHBlbmQoYi5jbG9uZSgpKS5hcHBlbmQoYy5jbG9uZSgpKSks YSgiPGRpdj4iKS5hZGRDbGFzcygiZGF0ZXBpY2tlci15ZWFycyIpLmFwcGVu ZChhKCI8dGFibGU+IikuYWRkQ2xhc3MoInRhYmxlLWNvbmRlbnNlZCIpLmFw cGVuZChiLmNsb25lKCkpLmFwcGVuZChjLmNsb25lKCkpKSxhKCI8ZGl2PiIp LmFkZENsYXNzKCJkYXRlcGlja2VyLWRlY2FkZXMiKS5hcHBlbmQoYSgiPHRh YmxlPiIpLmFkZENsYXNzKCJ0YWJsZS1jb25kZW5zZWQiKS5hcHBlbmQoYi5j bG9uZSgpKS5hcHBlbmQoYy5jbG9uZSgpKSldfSxEPWZ1bmN0aW9uKCl7dmFy IGI9YSgiPHRyPiIpLGM9YSgiPHRyPiIpLGU9YSgiPHRyPiIpO3JldHVybiB6 KCJoIikmJihiLmFwcGVuZChhKCI8dGQ+IikuYXBwZW5kKGEoIjxhPiIpLmF0 dHIoe2hyZWY6IiMiLHRhYmluZGV4OiItMSIsdGl0bGU6ZC50b29sdGlwcy5p bmNyZW1lbnRIb3VyfSkuYWRkQ2xhc3MoImJ0biIpLmF0dHIoImRhdGEtYWN0 aW9uIiwiaW5jcmVtZW50SG91cnMiKS5hcHBlbmQoYSgiPHNwYW4+IikuYWRk Q2xhc3MoZC5pY29ucy51cCkpKSksYy5hcHBlbmQoYSgiPHRkPiIpLmFwcGVu ZChhKCI8c3Bhbj4iKS5hZGRDbGFzcygidGltZXBpY2tlci1ob3VyIikuYXR0 cih7ImRhdGEtdGltZS1jb21wb25lbnQiOiJob3VycyIsdGl0bGU6ZC50b29s dGlwcy5waWNrSG91cn0pLmF0dHIoImRhdGEtYWN0aW9uIiwic2hvd0hvdXJz IikpKSxlLmFwcGVuZChhKCI8dGQ+IikuYXBwZW5kKGEoIjxhPiIpLmF0dHIo e2hyZWY6IiMiLHRhYmluZGV4OiItMSIsdGl0bGU6ZC50b29sdGlwcy5kZWNy ZW1lbnRIb3VyfSkuYWRkQ2xhc3MoImJ0biIpLmF0dHIoImRhdGEtYWN0aW9u IiwiZGVjcmVtZW50SG91cnMiKS5hcHBlbmQoYSgiPHNwYW4+IikuYWRkQ2xh c3MoZC5pY29ucy5kb3duKSkpKSkseigibSIpJiYoeigiaCIpJiYoYi5hcHBl bmQoYSgiPHRkPiIpLmFkZENsYXNzKCJzZXBhcmF0b3IiKSksYy5hcHBlbmQo YSgiPHRkPiIpLmFkZENsYXNzKCJzZXBhcmF0b3IiKS5odG1sKCI6IikpLGUu YXBwZW5kKGEoIjx0ZD4iKS5hZGRDbGFzcygic2VwYXJhdG9yIikpKSxiLmFw cGVuZChhKCI8dGQ+IikuYXBwZW5kKGEoIjxhPiIpLmF0dHIoe2hyZWY6IiMi LHRhYmluZGV4OiItMSIsdGl0bGU6ZC50b29sdGlwcy5pbmNyZW1lbnRNaW51 dGV9KS5hZGRDbGFzcygiYnRuIikuYXR0cigiZGF0YS1hY3Rpb24iLCJpbmNy ZW1lbnRNaW51dGVzIikuYXBwZW5kKGEoIjxzcGFuPiIpLmFkZENsYXNzKGQu aWNvbnMudXApKSkpLGMuYXBwZW5kKGEoIjx0ZD4iKS5hcHBlbmQoYSgiPHNw YW4+IikuYWRkQ2xhc3MoInRpbWVwaWNrZXItbWludXRlIikuYXR0cih7ImRh dGEtdGltZS1jb21wb25lbnQiOiJtaW51dGVzIix0aXRsZTpkLnRvb2x0aXBz LnBpY2tNaW51dGV9KS5hdHRyKCJkYXRhLWFjdGlvbiIsInNob3dNaW51dGVz IikpKSxlLmFwcGVuZChhKCI8dGQ+IikuYXBwZW5kKGEoIjxhPiIpLmF0dHIo e2hyZWY6IiMiLHRhYmluZGV4OiItMSIsdGl0bGU6ZC50b29sdGlwcy5kZWNy ZW1lbnRNaW51dGV9KS5hZGRDbGFzcygiYnRuIikuYXR0cigiZGF0YS1hY3Rp b24iLCJkZWNyZW1lbnRNaW51dGVzIikuYXBwZW5kKGEoIjxzcGFuPiIpLmFk ZENsYXNzKGQuaWNvbnMuZG93bikpKSkpLHooInMiKSYmKHooIm0iKSYmKGIu YXBwZW5kKGEoIjx0ZD4iKS5hZGRDbGFzcygic2VwYXJhdG9yIikpLGMuYXBw ZW5kKGEoIjx0ZD4iKS5hZGRDbGFzcygic2VwYXJhdG9yIikuaHRtbCgiOiIp KSxlLmFwcGVuZChhKCI8dGQ+IikuYWRkQ2xhc3MoInNlcGFyYXRvciIpKSks Yi5hcHBlbmQoYSgiPHRkPiIpLmFwcGVuZChhKCI8YT4iKS5hdHRyKHtocmVm OiIjIix0YWJpbmRleDoiLTEiLHRpdGxlOmQudG9vbHRpcHMuaW5jcmVtZW50 U2Vjb25kfSkuYWRkQ2xhc3MoImJ0biIpLmF0dHIoImRhdGEtYWN0aW9uIiwi aW5jcmVtZW50U2Vjb25kcyIpLmFwcGVuZChhKCI8c3Bhbj4iKS5hZGRDbGFz cyhkLmljb25zLnVwKSkpKSxjLmFwcGVuZChhKCI8dGQ+IikuYXBwZW5kKGEo IjxzcGFuPiIpLmFkZENsYXNzKCJ0aW1lcGlja2VyLXNlY29uZCIpLmF0dHIo eyJkYXRhLXRpbWUtY29tcG9uZW50Ijoic2Vjb25kcyIsdGl0bGU6ZC50b29s dGlwcy5waWNrU2Vjb25kfSkuYXR0cigiZGF0YS1hY3Rpb24iLCJzaG93U2Vj b25kcyIpKSksZS5hcHBlbmQoYSgiPHRkPiIpLmFwcGVuZChhKCI8YT4iKS5h dHRyKHtocmVmOiIjIix0YWJpbmRleDoiLTEiLHRpdGxlOmQudG9vbHRpcHMu ZGVjcmVtZW50U2Vjb25kfSkuYWRkQ2xhc3MoImJ0biIpLmF0dHIoImRhdGEt YWN0aW9uIiwiZGVjcmVtZW50U2Vjb25kcyIpLmFwcGVuZChhKCI8c3Bhbj4i KS5hZGRDbGFzcyhkLmljb25zLmRvd24pKSkpKSxofHwoYi5hcHBlbmQoYSgi PHRkPiIpLmFkZENsYXNzKCJzZXBhcmF0b3IiKSksYy5hcHBlbmQoYSgiPHRk PiIpLmFwcGVuZChhKCI8YnV0dG9uPiIpLmFkZENsYXNzKCJidG4gYnRuLXBy aW1hcnkiKS5hdHRyKHsiZGF0YS1hY3Rpb24iOiJ0b2dnbGVQZXJpb2QiLHRh YmluZGV4OiItMSIsdGl0bGU6ZC50b29sdGlwcy50b2dnbGVQZXJpb2R9KSkp LGUuYXBwZW5kKGEoIjx0ZD4iKS5hZGRDbGFzcygic2VwYXJhdG9yIikpKSxh KCI8ZGl2PiIpLmFkZENsYXNzKCJ0aW1lcGlja2VyLXBpY2tlciIpLmFwcGVu ZChhKCI8dGFibGU+IikuYWRkQ2xhc3MoInRhYmxlLWNvbmRlbnNlZCIpLmFw cGVuZChbYixjLGVdKSl9LEU9ZnVuY3Rpb24oKXt2YXIgYj1hKCI8ZGl2PiIp LmFkZENsYXNzKCJ0aW1lcGlja2VyLWhvdXJzIikuYXBwZW5kKGEoIjx0YWJs ZT4iKS5hZGRDbGFzcygidGFibGUtY29uZGVuc2VkIikpLGM9YSgiPGRpdj4i KS5hZGRDbGFzcygidGltZXBpY2tlci1taW51dGVzIikuYXBwZW5kKGEoIjx0 YWJsZT4iKS5hZGRDbGFzcygidGFibGUtY29uZGVuc2VkIikpLGQ9YSgiPGRp dj4iKS5hZGRDbGFzcygidGltZXBpY2tlci1zZWNvbmRzIikuYXBwZW5kKGEo Ijx0YWJsZT4iKS5hZGRDbGFzcygidGFibGUtY29uZGVuc2VkIikpLGU9W0Qo KV07cmV0dXJuIHooImgiKSYmZS5wdXNoKGIpLHooIm0iKSYmZS5wdXNoKGMp LHooInMiKSYmZS5wdXNoKGQpLGV9LEY9ZnVuY3Rpb24oKXt2YXIgYj1bXTty ZXR1cm4gZC5zaG93VG9kYXlCdXR0b24mJmIucHVzaChhKCI8dGQ+IikuYXBw ZW5kKGEoIjxhPiIpLmF0dHIoeyJkYXRhLWFjdGlvbiI6InRvZGF5Iix0aXRs ZTpkLnRvb2x0aXBzLnRvZGF5fSkuYXBwZW5kKGEoIjxzcGFuPiIpLmFkZENs YXNzKGQuaWNvbnMudG9kYXkpKSkpLCFkLnNpZGVCeVNpZGUmJkIoKSYmQSgp JiZiLnB1c2goYSgiPHRkPiIpLmFwcGVuZChhKCI8YT4iKS5hdHRyKHsiZGF0 YS1hY3Rpb24iOiJ0b2dnbGVQaWNrZXIiLHRpdGxlOmQudG9vbHRpcHMuc2Vs ZWN0VGltZX0pLmFwcGVuZChhKCI8c3Bhbj4iKS5hZGRDbGFzcyhkLmljb25z LnRpbWUpKSkpLGQuc2hvd0NsZWFyJiZiLnB1c2goYSgiPHRkPiIpLmFwcGVu ZChhKCI8YT4iKS5hdHRyKHsiZGF0YS1hY3Rpb24iOiJjbGVhciIsdGl0bGU6 ZC50b29sdGlwcy5jbGVhcn0pLmFwcGVuZChhKCI8c3Bhbj4iKS5hZGRDbGFz cyhkLmljb25zLmNsZWFyKSkpKSxkLnNob3dDbG9zZSYmYi5wdXNoKGEoIjx0 ZD4iKS5hcHBlbmQoYSgiPGE+IikuYXR0cih7ImRhdGEtYWN0aW9uIjoiY2xv c2UiLHRpdGxlOmQudG9vbHRpcHMuY2xvc2V9KS5hcHBlbmQoYSgiPHNwYW4+ IikuYWRkQ2xhc3MoZC5pY29ucy5jbG9zZSkpKSksYSgiPHRhYmxlPiIpLmFk ZENsYXNzKCJ0YWJsZS1jb25kZW5zZWQiKS5hcHBlbmQoYSgiPHRib2R5PiIp LmFwcGVuZChhKCI8dHI+IikuYXBwZW5kKGIpKSl9LEc9ZnVuY3Rpb24oKXt2 YXIgYj1hKCI8ZGl2PiIpLmFkZENsYXNzKCJib290c3RyYXAtZGF0ZXRpbWVw aWNrZXItd2lkZ2V0IGRyb3Bkb3duLW1lbnUiKSxjPWEoIjxkaXY+IikuYWRk Q2xhc3MoImRhdGVwaWNrZXIiKS5hcHBlbmQoQygpKSxlPWEoIjxkaXY+Iiku YWRkQ2xhc3MoInRpbWVwaWNrZXIiKS5hcHBlbmQoRSgpKSxmPWEoIjx1bD4i KS5hZGRDbGFzcygibGlzdC11bnN0eWxlZCIpLGc9YSgiPGxpPiIpLmFkZENs YXNzKCJwaWNrZXItc3dpdGNoIisoZC5jb2xsYXBzZT8iIGFjY29yZGlvbi10 b2dnbGUiOiIiKSkuYXBwZW5kKEYoKSk7cmV0dXJuIGQuaW5saW5lJiZiLnJl bW92ZUNsYXNzKCJkcm9wZG93bi1tZW51IiksaCYmYi5hZGRDbGFzcygidXNl dHdlbnR5Zm91ciIpLHooInMiKSYmIWgmJmIuYWRkQ2xhc3MoIndpZGVyIiks ZC5zaWRlQnlTaWRlJiZCKCkmJkEoKT8oYi5hZGRDbGFzcygidGltZXBpY2tl ci1zYnMiKSwidG9wIj09PWQudG9vbGJhclBsYWNlbWVudCYmYi5hcHBlbmQo ZyksYi5hcHBlbmQoYSgiPGRpdj4iKS5hZGRDbGFzcygicm93IikuYXBwZW5k KGMuYWRkQ2xhc3MoImNvbC1tZC02IikpLmFwcGVuZChlLmFkZENsYXNzKCJj b2wtbWQtNiIpKSksImJvdHRvbSI9PT1kLnRvb2xiYXJQbGFjZW1lbnQmJmIu YXBwZW5kKGcpLGIpOigidG9wIj09PWQudG9vbGJhclBsYWNlbWVudCYmZi5h cHBlbmQoZyksQigpJiZmLmFwcGVuZChhKCI8bGk+IikuYWRkQ2xhc3MoZC5j b2xsYXBzZSYmQSgpPyJjb2xsYXBzZSBpbiI6IiIpLmFwcGVuZChjKSksImRl ZmF1bHQiPT09ZC50b29sYmFyUGxhY2VtZW50JiZmLmFwcGVuZChnKSxBKCkm JmYuYXBwZW5kKGEoIjxsaT4iKS5hZGRDbGFzcyhkLmNvbGxhcHNlJiZCKCk/ ImNvbGxhcHNlIjoiIikuYXBwZW5kKGUpKSwiYm90dG9tIj09PWQudG9vbGJh clBsYWNlbWVudCYmZi5hcHBlbmQoZyksYi5hcHBlbmQoZikpfSxIPWZ1bmN0 aW9uKCl7dmFyIGIsZT17fTtyZXR1cm4gYj1jLmlzKCJpbnB1dCIpfHxkLmlu bGluZT9jLmRhdGEoKTpjLmZpbmQoImlucHV0IikuZGF0YSgpLGIuZGF0ZU9w dGlvbnMmJmIuZGF0ZU9wdGlvbnMgaW5zdGFuY2VvZiBPYmplY3QmJihlPWEu ZXh0ZW5kKCEwLGUsYi5kYXRlT3B0aW9ucykpLGEuZWFjaChkLGZ1bmN0aW9u KGEpe3ZhciBjPSJkYXRlIithLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Eu c2xpY2UoMSk7dm9pZCAwIT09YltjXSYmKGVbYV09YltjXSl9KSxlfSxJPWZ1 bmN0aW9uKCl7dmFyIGIsZT0obnx8YykucG9zaXRpb24oKSxmPShufHxjKS5v ZmZzZXQoKSxnPWQud2lkZ2V0UG9zaXRpb25pbmcudmVydGljYWwsaD1kLndp ZGdldFBvc2l0aW9uaW5nLmhvcml6b250YWw7aWYoZC53aWRnZXRQYXJlbnQp Yj1kLndpZGdldFBhcmVudC5hcHBlbmQobyk7ZWxzZSBpZihjLmlzKCJpbnB1 dCIpKWI9Yy5hZnRlcihvKS5wYXJlbnQoKTtlbHNle2lmKGQuaW5saW5lKXJl dHVybiB2b2lkKGI9Yy5hcHBlbmQobykpO2I9YyxjLmNoaWxkcmVuKCkuZmly c3QoKS5hZnRlcihvKX1pZigKKy8vIFRvcCBhbmQgYm90dG9tIGxvZ2ljCisi YXV0byI9PT1nJiYoZz1mLnRvcCsxLjUqby5oZWlnaHQoKT49YSh3aW5kb3cp LmhlaWdodCgpK2Eod2luZG93KS5zY3JvbGxUb3AoKSYmby5oZWlnaHQoKStj Lm91dGVySGVpZ2h0KCk8Zi50b3A/InRvcCI6ImJvdHRvbSIpLAorLy8gTGVm dCBhbmQgcmlnaHQgbG9naWMKKyJhdXRvIj09PWgmJihoPWIud2lkdGgoKTxm LmxlZnQrby5vdXRlcldpZHRoKCkvMiYmZi5sZWZ0K28ub3V0ZXJXaWR0aCgp PmEod2luZG93KS53aWR0aCgpPyJyaWdodCI6ImxlZnQiKSwidG9wIj09PWc/ by5hZGRDbGFzcygidG9wIikucmVtb3ZlQ2xhc3MoImJvdHRvbSIpOm8uYWRk Q2xhc3MoImJvdHRvbSIpLnJlbW92ZUNsYXNzKCJ0b3AiKSwicmlnaHQiPT09 aD9vLmFkZENsYXNzKCJwdWxsLXJpZ2h0Iik6by5yZW1vdmVDbGFzcygicHVs bC1yaWdodCIpLAorLy8gZmluZCB0aGUgZmlyc3QgcGFyZW50IGVsZW1lbnQg dGhhdCBoYXMgYSByZWxhdGl2ZSBjc3MgcG9zaXRpb25pbmcKKyJyZWxhdGl2 ZSIhPT1iLmNzcygicG9zaXRpb24iKSYmKGI9Yi5wYXJlbnRzKCkuZmlsdGVy KGZ1bmN0aW9uKCl7cmV0dXJuInJlbGF0aXZlIj09PWEodGhpcykuY3NzKCJw b3NpdGlvbiIpfSkuZmlyc3QoKSksMD09PWIubGVuZ3RoKXRocm93IG5ldyBF cnJvcigiZGF0ZXRpbWVwaWNrZXIgY29tcG9uZW50IHNob3VsZCBiZSBwbGFj ZWQgd2l0aGluIGEgcmVsYXRpdmUgcG9zaXRpb25lZCBjb250YWluZXIiKTtv LmNzcyh7dG9wOiJ0b3AiPT09Zz8iYXV0byI6ZS50b3ArYy5vdXRlckhlaWdo dCgpLGJvdHRvbToidG9wIj09PWc/Yi5vdXRlckhlaWdodCgpLShiPT09Yz8w OmUudG9wKToiYXV0byIsbGVmdDoibGVmdCI9PT1oP2I9PT1jPzA6ZS5sZWZ0 OiJhdXRvIixyaWdodDoibGVmdCI9PT1oPyJhdXRvIjpiLm91dGVyV2lkdGgo KS1jLm91dGVyV2lkdGgoKS0oYj09PWM/MDplLmxlZnQpfSl9LEo9ZnVuY3Rp b24oYSl7ImRwLmNoYW5nZSI9PT1hLnR5cGUmJihhLmRhdGUmJmEuZGF0ZS5p c1NhbWUoYS5vbGREYXRlKXx8IWEuZGF0ZSYmIWEub2xkRGF0ZSl8fGMudHJp Z2dlcihhKX0sSz1mdW5jdGlvbihhKXsieSI9PT1hJiYoYT0iWVlZWSIpLEoo e3R5cGU6ImRwLnVwZGF0ZSIsY2hhbmdlOmEsdmlld0RhdGU6Zi5jbG9uZSgp fSl9LEw9ZnVuY3Rpb24oYSl7byYmKGEmJihrPU1hdGgubWF4KHAsTWF0aC5t aW4oMyxrK2EpKSksby5maW5kKCIuZGF0ZXBpY2tlciA+IGRpdiIpLmhpZGUo KS5maWx0ZXIoIi5kYXRlcGlja2VyLSIrcVtrXS5jbHNOYW1lKS5zaG93KCkp fSxNPWZ1bmN0aW9uKCl7dmFyIGI9YSgiPHRyPiIpLGM9Zi5jbG9uZSgpLnN0 YXJ0T2YoInciKS5zdGFydE9mKCJkIik7Zm9yKGQuY2FsZW5kYXJXZWVrcz09 PSEwJiZiLmFwcGVuZChhKCI8dGg+IikuYWRkQ2xhc3MoImN3IikudGV4dCgi IyIpKTtjLmlzQmVmb3JlKGYuY2xvbmUoKS5lbmRPZigidyIpKTspYi5hcHBl bmQoYSgiPHRoPiIpLmFkZENsYXNzKCJkb3ciKS50ZXh0KGMuZm9ybWF0KCJk ZCIpKSksYy5hZGQoMSwiZCIpO28uZmluZCgiLmRhdGVwaWNrZXItZGF5cyB0 aGVhZCIpLmFwcGVuZChiKX0sTj1mdW5jdGlvbihhKXtyZXR1cm4gZC5kaXNh YmxlZERhdGVzW2EuZm9ybWF0KCJZWVlZLU1NLUREIildPT09ITB9LE89ZnVu Y3Rpb24oYSl7cmV0dXJuIGQuZW5hYmxlZERhdGVzW2EuZm9ybWF0KCJZWVlZ LU1NLUREIildPT09ITB9LFA9ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZGlzYWJs ZWRIb3Vyc1thLmZvcm1hdCgiSCIpXT09PSEwfSxRPWZ1bmN0aW9uKGEpe3Jl dHVybiBkLmVuYWJsZWRIb3Vyc1thLmZvcm1hdCgiSCIpXT09PSEwfSxSPWZ1 bmN0aW9uKGIsYyl7aWYoIWIuaXNWYWxpZCgpKXJldHVybiExO2lmKGQuZGlz YWJsZWREYXRlcyYmImQiPT09YyYmTihiKSlyZXR1cm4hMTtpZihkLmVuYWJs ZWREYXRlcyYmImQiPT09YyYmIU8oYikpcmV0dXJuITE7aWYoZC5taW5EYXRl JiZiLmlzQmVmb3JlKGQubWluRGF0ZSxjKSlyZXR1cm4hMTtpZihkLm1heERh dGUmJmIuaXNBZnRlcihkLm1heERhdGUsYykpcmV0dXJuITE7aWYoZC5kYXlz T2ZXZWVrRGlzYWJsZWQmJiJkIj09PWMmJmQuZGF5c09mV2Vla0Rpc2FibGVk LmluZGV4T2YoYi5kYXkoKSkhPT0tMSlyZXR1cm4hMTtpZihkLmRpc2FibGVk SG91cnMmJigiaCI9PT1jfHwibSI9PT1jfHwicyI9PT1jKSYmUChiKSlyZXR1 cm4hMTtpZihkLmVuYWJsZWRIb3VycyYmKCJoIj09PWN8fCJtIj09PWN8fCJz Ij09PWMpJiYhUShiKSlyZXR1cm4hMTtpZihkLmRpc2FibGVkVGltZUludGVy dmFscyYmKCJoIj09PWN8fCJtIj09PWN8fCJzIj09PWMpKXt2YXIgZT0hMTtp ZihhLmVhY2goZC5kaXNhYmxlZFRpbWVJbnRlcnZhbHMsZnVuY3Rpb24oKXtp ZihiLmlzQmV0d2Vlbih0aGlzWzBdLHRoaXNbMV0pKXJldHVybiBlPSEwLCEx fSksZSlyZXR1cm4hMX1yZXR1cm4hMH0sUz1mdW5jdGlvbigpe2Zvcih2YXIg Yj1bXSxjPWYuY2xvbmUoKS5zdGFydE9mKCJ5Iikuc3RhcnRPZigiZCIpO2Mu aXNTYW1lKGYsInkiKTspYi5wdXNoKGEoIjxzcGFuPiIpLmF0dHIoImRhdGEt YWN0aW9uIiwic2VsZWN0TW9udGgiKS5hZGRDbGFzcygibW9udGgiKS50ZXh0 KGMuZm9ybWF0KCJNTU0iKSkpLGMuYWRkKDEsIk0iKTtvLmZpbmQoIi5kYXRl cGlja2VyLW1vbnRocyB0ZCIpLmVtcHR5KCkuYXBwZW5kKGIpfSxUPWZ1bmN0 aW9uKCl7dmFyIGI9by5maW5kKCIuZGF0ZXBpY2tlci1tb250aHMiKSxjPWIu ZmluZCgidGgiKSxnPWIuZmluZCgidGJvZHkiKS5maW5kKCJzcGFuIik7Yy5l cSgwKS5maW5kKCJzcGFuIikuYXR0cigidGl0bGUiLGQudG9vbHRpcHMucHJl dlllYXIpLGMuZXEoMSkuYXR0cigidGl0bGUiLGQudG9vbHRpcHMuc2VsZWN0 WWVhciksYy5lcSgyKS5maW5kKCJzcGFuIikuYXR0cigidGl0bGUiLGQudG9v bHRpcHMubmV4dFllYXIpLGIuZmluZCgiLmRpc2FibGVkIikucmVtb3ZlQ2xh c3MoImRpc2FibGVkIiksUihmLmNsb25lKCkuc3VidHJhY3QoMSwieSIpLCJ5 Iil8fGMuZXEoMCkuYWRkQ2xhc3MoImRpc2FibGVkIiksYy5lcSgxKS50ZXh0 KGYueWVhcigpKSxSKGYuY2xvbmUoKS5hZGQoMSwieSIpLCJ5Iil8fGMuZXEo MikuYWRkQ2xhc3MoImRpc2FibGVkIiksZy5yZW1vdmVDbGFzcygiYWN0aXZl IiksZS5pc1NhbWUoZiwieSIpJiYhbSYmZy5lcShlLm1vbnRoKCkpLmFkZENs YXNzKCJhY3RpdmUiKSxnLmVhY2goZnVuY3Rpb24oYil7UihmLmNsb25lKCku bW9udGgoYiksIk0iKXx8YSh0aGlzKS5hZGRDbGFzcygiZGlzYWJsZWQiKX0p fSxVPWZ1bmN0aW9uKCl7dmFyIGE9by5maW5kKCIuZGF0ZXBpY2tlci15ZWFy cyIpLGI9YS5maW5kKCJ0aCIpLGM9Zi5jbG9uZSgpLnN1YnRyYWN0KDUsInki KSxnPWYuY2xvbmUoKS5hZGQoNiwieSIpLGg9IiI7Zm9yKGIuZXEoMCkuZmlu ZCgic3BhbiIpLmF0dHIoInRpdGxlIixkLnRvb2x0aXBzLnByZXZEZWNhZGUp LGIuZXEoMSkuYXR0cigidGl0bGUiLGQudG9vbHRpcHMuc2VsZWN0RGVjYWRl KSxiLmVxKDIpLmZpbmQoInNwYW4iKS5hdHRyKCJ0aXRsZSIsZC50b29sdGlw cy5uZXh0RGVjYWRlKSxhLmZpbmQoIi5kaXNhYmxlZCIpLnJlbW92ZUNsYXNz KCJkaXNhYmxlZCIpLGQubWluRGF0ZSYmZC5taW5EYXRlLmlzQWZ0ZXIoYywi eSIpJiZiLmVxKDApLmFkZENsYXNzKCJkaXNhYmxlZCIpLGIuZXEoMSkudGV4 dChjLnllYXIoKSsiLSIrZy55ZWFyKCkpLGQubWF4RGF0ZSYmZC5tYXhEYXRl LmlzQmVmb3JlKGcsInkiKSYmYi5lcSgyKS5hZGRDbGFzcygiZGlzYWJsZWQi KTshYy5pc0FmdGVyKGcsInkiKTspaCs9JzxzcGFuIGRhdGEtYWN0aW9uPSJz ZWxlY3RZZWFyIiBjbGFzcz0ieWVhcicrKGMuaXNTYW1lKGUsInkiKSYmIW0/ IiBhY3RpdmUiOiIiKSsoUihjLCJ5Iik/IiI6IiBkaXNhYmxlZCIpKyciPicr Yy55ZWFyKCkrIjwvc3Bhbj4iLGMuYWRkKDEsInkiKTthLmZpbmQoInRkIiku aHRtbChoKX0sVj1mdW5jdGlvbigpe3ZhciBhLGM9by5maW5kKCIuZGF0ZXBp Y2tlci1kZWNhZGVzIiksZz1jLmZpbmQoInRoIiksaD1iKHt5OmYueWVhcigp LWYueWVhcigpJTEwMC0xfSksaT1oLmNsb25lKCkuYWRkKDEwMCwieSIpLGo9 aC5jbG9uZSgpLGs9ITEsbD0hMSxtPSIiO2ZvcihnLmVxKDApLmZpbmQoInNw YW4iKS5hdHRyKCJ0aXRsZSIsZC50b29sdGlwcy5wcmV2Q2VudHVyeSksZy5l cSgyKS5maW5kKCJzcGFuIikuYXR0cigidGl0bGUiLGQudG9vbHRpcHMubmV4 dENlbnR1cnkpLGMuZmluZCgiLmRpc2FibGVkIikucmVtb3ZlQ2xhc3MoImRp c2FibGVkIiksKGguaXNTYW1lKGIoe3k6MTkwMH0pKXx8ZC5taW5EYXRlJiZk Lm1pbkRhdGUuaXNBZnRlcihoLCJ5IikpJiZnLmVxKDApLmFkZENsYXNzKCJk aXNhYmxlZCIpLGcuZXEoMSkudGV4dChoLnllYXIoKSsiLSIraS55ZWFyKCkp LChoLmlzU2FtZShiKHt5OjJlM30pKXx8ZC5tYXhEYXRlJiZkLm1heERhdGUu aXNCZWZvcmUoaSwieSIpKSYmZy5lcSgyKS5hZGRDbGFzcygiZGlzYWJsZWQi KTshaC5pc0FmdGVyKGksInkiKTspYT1oLnllYXIoKSsxMixrPWQubWluRGF0 ZSYmZC5taW5EYXRlLmlzQWZ0ZXIoaCwieSIpJiZkLm1pbkRhdGUueWVhcigp PD1hLGw9ZC5tYXhEYXRlJiZkLm1heERhdGUuaXNBZnRlcihoLCJ5IikmJmQu bWF4RGF0ZS55ZWFyKCk8PWEsbSs9JzxzcGFuIGRhdGEtYWN0aW9uPSJzZWxl Y3REZWNhZGUiIGNsYXNzPSJkZWNhZGUnKyhlLmlzQWZ0ZXIoaCkmJmUueWVh cigpPD1hPyIgYWN0aXZlIjoiIikrKFIoaCwieSIpfHxrfHxsPyIiOiIgZGlz YWJsZWQiKSsnIiBkYXRhLXNlbGVjdGlvbj0iJysoaC55ZWFyKCkrNikrJyI+ JysoaC55ZWFyKCkrMSkrIiAtICIrKGgueWVhcigpKzEyKSsiPC9zcGFuPiIs aC5hZGQoMTIsInkiKTttKz0iPHNwYW4+PC9zcGFuPjxzcGFuPjwvc3Bhbj48 c3Bhbj48L3NwYW4+IiwvL3B1c2ggdGhlIGRhbmdsaW5nIGJsb2NrIG92ZXIs IGF0IGxlYXN0IHRoaXMgd2F5IGl0J3MgZXZlbgorYy5maW5kKCJ0ZCIpLmh0 bWwobSksZy5lcSgxKS50ZXh0KGoueWVhcigpKzErIi0iK2gueWVhcigpKX0s Vz1mdW5jdGlvbigpe3ZhciBiLGMsZyxoLGk9by5maW5kKCIuZGF0ZXBpY2tl ci1kYXlzIiksaj1pLmZpbmQoInRoIiksaz1bXTtpZihCKCkpe2ZvcihqLmVx KDApLmZpbmQoInNwYW4iKS5hdHRyKCJ0aXRsZSIsZC50b29sdGlwcy5wcmV2 TW9udGgpLGouZXEoMSkuYXR0cigidGl0bGUiLGQudG9vbHRpcHMuc2VsZWN0 TW9udGgpLGouZXEoMikuZmluZCgic3BhbiIpLmF0dHIoInRpdGxlIixkLnRv b2x0aXBzLm5leHRNb250aCksaS5maW5kKCIuZGlzYWJsZWQiKS5yZW1vdmVD bGFzcygiZGlzYWJsZWQiKSxqLmVxKDEpLnRleHQoZi5mb3JtYXQoZC5kYXlW aWV3SGVhZGVyRm9ybWF0KSksUihmLmNsb25lKCkuc3VidHJhY3QoMSwiTSIp LCJNIil8fGouZXEoMCkuYWRkQ2xhc3MoImRpc2FibGVkIiksUihmLmNsb25l KCkuYWRkKDEsIk0iKSwiTSIpfHxqLmVxKDIpLmFkZENsYXNzKCJkaXNhYmxl ZCIpLGI9Zi5jbG9uZSgpLnN0YXJ0T2YoIk0iKS5zdGFydE9mKCJ3Iikuc3Rh cnRPZigiZCIpLGg9MDtoPDQyO2grKykvL2Fsd2F5cyBkaXNwbGF5IDQyIGRh eXMgKHNob3VsZCBzaG93IDYgd2Vla3MpCiswPT09Yi53ZWVrZGF5KCkmJihj PWEoIjx0cj4iKSxkLmNhbGVuZGFyV2Vla3MmJmMuYXBwZW5kKCc8dGQgY2xh c3M9ImN3Ij4nK2Iud2VlaygpKyI8L3RkPiIpLGsucHVzaChjKSksZz0iIixi LmlzQmVmb3JlKGYsIk0iKSYmKGcrPSIgb2xkIiksYi5pc0FmdGVyKGYsIk0i KSYmKGcrPSIgbmV3IiksYi5pc1NhbWUoZSwiZCIpJiYhbSYmKGcrPSIgYWN0 aXZlIiksUihiLCJkIil8fChnKz0iIGRpc2FibGVkIiksYi5pc1NhbWUoeSgp LCJkIikmJihnKz0iIHRvZGF5IiksMCE9PWIuZGF5KCkmJjYhPT1iLmRheSgp fHwoZys9IiB3ZWVrZW5kIiksYy5hcHBlbmQoJzx0ZCBkYXRhLWFjdGlvbj0i c2VsZWN0RGF5IiBkYXRhLWRheT0iJytiLmZvcm1hdCgiTCIpKyciIGNsYXNz PSJkYXknK2crJyI+JytiLmRhdGUoKSsiPC90ZD4iKSxiLmFkZCgxLCJkIik7 aS5maW5kKCJ0Ym9keSIpLmVtcHR5KCkuYXBwZW5kKGspLFQoKSxVKCksVigp fX0sWD1mdW5jdGlvbigpe3ZhciBiPW8uZmluZCgiLnRpbWVwaWNrZXItaG91 cnMgdGFibGUiKSxjPWYuY2xvbmUoKS5zdGFydE9mKCJkIiksZD1bXSxlPWEo Ijx0cj4iKTtmb3IoZi5ob3VyKCk+MTEmJiFoJiZjLmhvdXIoMTIpO2MuaXNT YW1lKGYsImQiKSYmKGh8fGYuaG91cigpPDEyJiZjLmhvdXIoKTwxMnx8Zi5o b3VyKCk+MTEpOyljLmhvdXIoKSU0PT09MCYmKGU9YSgiPHRyPiIpLGQucHVz aChlKSksZS5hcHBlbmQoJzx0ZCBkYXRhLWFjdGlvbj0ic2VsZWN0SG91ciIg Y2xhc3M9ImhvdXInKyhSKGMsImgiKT8iIjoiIGRpc2FibGVkIikrJyI+Jytj LmZvcm1hdChoPyJISCI6ImhoIikrIjwvdGQ+IiksYy5hZGQoMSwiaCIpO2Iu ZW1wdHkoKS5hcHBlbmQoZCl9LFk9ZnVuY3Rpb24oKXtmb3IodmFyIGI9by5m aW5kKCIudGltZXBpY2tlci1taW51dGVzIHRhYmxlIiksYz1mLmNsb25lKCku c3RhcnRPZigiaCIpLGU9W10sZz1hKCI8dHI+IiksaD0xPT09ZC5zdGVwcGlu Zz81OmQuc3RlcHBpbmc7Zi5pc1NhbWUoYywiaCIpOyljLm1pbnV0ZSgpJSg0 KmgpPT09MCYmKGc9YSgiPHRyPiIpLGUucHVzaChnKSksZy5hcHBlbmQoJzx0 ZCBkYXRhLWFjdGlvbj0ic2VsZWN0TWludXRlIiBjbGFzcz0ibWludXRlJyso UihjLCJtIik/IiI6IiBkaXNhYmxlZCIpKyciPicrYy5mb3JtYXQoIm1tIikr IjwvdGQ+IiksYy5hZGQoaCwibSIpO2IuZW1wdHkoKS5hcHBlbmQoZSl9LFo9 ZnVuY3Rpb24oKXtmb3IodmFyIGI9by5maW5kKCIudGltZXBpY2tlci1zZWNv bmRzIHRhYmxlIiksYz1mLmNsb25lKCkuc3RhcnRPZigibSIpLGQ9W10sZT1h KCI8dHI+Iik7Zi5pc1NhbWUoYywibSIpOyljLnNlY29uZCgpJTIwPT09MCYm KGU9YSgiPHRyPiIpLGQucHVzaChlKSksZS5hcHBlbmQoJzx0ZCBkYXRhLWFj dGlvbj0ic2VsZWN0U2Vjb25kIiBjbGFzcz0ic2Vjb25kJysoUihjLCJzIik/ IiI6IiBkaXNhYmxlZCIpKyciPicrYy5mb3JtYXQoInNzIikrIjwvdGQ+Iiks Yy5hZGQoNSwicyIpO2IuZW1wdHkoKS5hcHBlbmQoZCl9LCQ9ZnVuY3Rpb24o KXt2YXIgYSxiLGM9by5maW5kKCIudGltZXBpY2tlciBzcGFuW2RhdGEtdGlt ZS1jb21wb25lbnRdIik7aHx8KGE9by5maW5kKCIudGltZXBpY2tlciBbZGF0 YS1hY3Rpb249dG9nZ2xlUGVyaW9kXSIpLGI9ZS5jbG9uZSgpLmFkZChlLmhv dXJzKCk+PTEyPy0xMjoxMiwiaCIpLGEudGV4dChlLmZvcm1hdCgiQSIpKSxS KGIsImgiKT9hLnJlbW92ZUNsYXNzKCJkaXNhYmxlZCIpOmEuYWRkQ2xhc3Mo ImRpc2FibGVkIikpLGMuZmlsdGVyKCJbZGF0YS10aW1lLWNvbXBvbmVudD1o b3Vyc10iKS50ZXh0KGUuZm9ybWF0KGg/IkhIIjoiaGgiKSksYy5maWx0ZXIo IltkYXRhLXRpbWUtY29tcG9uZW50PW1pbnV0ZXNdIikudGV4dChlLmZvcm1h dCgibW0iKSksYy5maWx0ZXIoIltkYXRhLXRpbWUtY29tcG9uZW50PXNlY29u ZHNdIikudGV4dChlLmZvcm1hdCgic3MiKSksWCgpLFkoKSxaKCl9LF89ZnVu Y3Rpb24oKXtvJiYoVygpLCQoKSl9LGFhPWZ1bmN0aW9uKGEpe3ZhciBiPW0/ bnVsbDplOworLy8gY2FzZSBvZiBjYWxsaW5nIHNldFZhbHVlKG51bGwgb3Ig ZmFsc2UpCisvLyBjYXNlIG9mIGNhbGxpbmcgc2V0VmFsdWUobnVsbCBvciBm YWxzZSkKKy8vdmlld0RhdGUgPSBkYXRlLmNsb25lKCk7IC8vIFRPRE8gdGhp cyBkb2Vzbid0IHdvcmsgcmlnaHQgb24gZmlyc3QgdXNlCityZXR1cm4gYT8o YT1hLmNsb25lKCkubG9jYWxlKGQubG9jYWxlKSx4KCkmJmEudHooZC50aW1l Wm9uZSksMSE9PWQuc3RlcHBpbmcmJmEubWludXRlcyhNYXRoLnJvdW5kKGEu bWludXRlcygpL2Quc3RlcHBpbmcpKmQuc3RlcHBpbmcpLnNlY29uZHMoMCks dm9pZChSKGEpPyhlPWEsZy52YWwoZS5mb3JtYXQoaSkpLGMuZGF0YSgiZGF0 ZSIsZS5mb3JtYXQoaSkpLG09ITEsXygpLEooe3R5cGU6ImRwLmNoYW5nZSIs ZGF0ZTplLmNsb25lKCksb2xkRGF0ZTpifSkpOihkLmtlZXBJbnZhbGlkP0oo e3R5cGU6ImRwLmNoYW5nZSIsZGF0ZTphLG9sZERhdGU6Yn0pOmcudmFsKG0/ IiI6ZS5mb3JtYXQoaSkpLEooe3R5cGU6ImRwLmVycm9yIixkYXRlOmEsb2xk RGF0ZTpifSkpKSk6KG09ITAsZy52YWwoIiIpLGMuZGF0YSgiZGF0ZSIsIiIp LEooe3R5cGU6ImRwLmNoYW5nZSIsZGF0ZTohMSxvbGREYXRlOmJ9KSx2b2lk IF8oKSl9LC8qKgorICAgICAgICAgICAgICogSGlkZXMgdGhlIHdpZGdldC4g UG9zc2libHkgd2lsbCBlbWl0IGRwLmhpZGUKKyAgICAgICAgICAgICAqLwor YmE9ZnVuY3Rpb24oKXt2YXIgYj0hMTsKKy8vIElnbm9yZSBldmVudCBpZiBp biB0aGUgbWlkZGxlIG9mIGEgcGlja2VyIHRyYW5zaXRpb24KK3JldHVybiBv PyhvLmZpbmQoIi5jb2xsYXBzZSIpLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1h KHRoaXMpLmRhdGEoImNvbGxhcHNlIik7cmV0dXJuIWN8fCFjLnRyYW5zaXRp b25pbmd8fChiPSEwLCExKX0pLGI/bDoobiYmbi5oYXNDbGFzcygiYnRuIikm Jm4udG9nZ2xlQ2xhc3MoImFjdGl2ZSIpLG8uaGlkZSgpLGEod2luZG93KS5v ZmYoInJlc2l6ZSIsSSksby5vZmYoImNsaWNrIiwiW2RhdGEtYWN0aW9uXSIp LG8ub2ZmKCJtb3VzZWRvd24iLCExKSxvLnJlbW92ZSgpLG89ITEsSih7dHlw ZToiZHAuaGlkZSIsZGF0ZTplLmNsb25lKCl9KSxnLmJsdXIoKSxrPTAsZj1l LmNsb25lKCksbCkpOmx9LGNhPWZ1bmN0aW9uKCl7YWEobnVsbCl9LGRhPWZ1 bmN0aW9uKGEpeworLy9pbnB1dERhdGUubG9jYWxlKG9wdGlvbnMubG9jYWxl KTsKK3JldHVybiB2b2lkIDA9PT1kLnBhcnNlSW5wdXREYXRlP2IuaXNNb21l bnQoYSl8fChhPXkoYSkpOmE9ZC5wYXJzZUlucHV0RGF0ZShhKSxhfSwvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgICAgICAg ICAqCisgICAgICAgICAgICAgKiBXaWRnZXQgVUkgaW50ZXJhY3Rpb24gZnVu Y3Rpb25zCisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworZWE9e25leHQ6ZnVuY3Rp b24oKXt2YXIgYT1xW2tdLm5hdkZuYztmLmFkZChxW2tdLm5hdlN0ZXAsYSks VygpLEsoYSl9LHByZXZpb3VzOmZ1bmN0aW9uKCl7dmFyIGE9cVtrXS5uYXZG bmM7Zi5zdWJ0cmFjdChxW2tdLm5hdlN0ZXAsYSksVygpLEsoYSl9LHBpY2tl clN3aXRjaDpmdW5jdGlvbigpe0woMSl9LHNlbGVjdE1vbnRoOmZ1bmN0aW9u KGIpe3ZhciBjPWEoYi50YXJnZXQpLmNsb3Nlc3QoInRib2R5IikuZmluZCgi c3BhbiIpLmluZGV4KGEoYi50YXJnZXQpKTtmLm1vbnRoKGMpLGs9PT1wPyhh YShlLmNsb25lKCkueWVhcihmLnllYXIoKSkubW9udGgoZi5tb250aCgpKSks ZC5pbmxpbmV8fGJhKCkpOihMKC0xKSxXKCkpLEsoIk0iKX0sc2VsZWN0WWVh cjpmdW5jdGlvbihiKXt2YXIgYz1wYXJzZUludChhKGIudGFyZ2V0KS50ZXh0 KCksMTApfHwwO2YueWVhcihjKSxrPT09cD8oYWEoZS5jbG9uZSgpLnllYXIo Zi55ZWFyKCkpKSxkLmlubGluZXx8YmEoKSk6KEwoLTEpLFcoKSksSygiWVlZ WSIpfSxzZWxlY3REZWNhZGU6ZnVuY3Rpb24oYil7dmFyIGM9cGFyc2VJbnQo YShiLnRhcmdldCkuZGF0YSgic2VsZWN0aW9uIiksMTApfHwwO2YueWVhcihj KSxrPT09cD8oYWEoZS5jbG9uZSgpLnllYXIoZi55ZWFyKCkpKSxkLmlubGlu ZXx8YmEoKSk6KEwoLTEpLFcoKSksSygiWVlZWSIpfSxzZWxlY3REYXk6ZnVu Y3Rpb24oYil7dmFyIGM9Zi5jbG9uZSgpO2EoYi50YXJnZXQpLmlzKCIub2xk IikmJmMuc3VidHJhY3QoMSwiTSIpLGEoYi50YXJnZXQpLmlzKCIubmV3Iikm JmMuYWRkKDEsIk0iKSxhYShjLmRhdGUocGFyc2VJbnQoYShiLnRhcmdldCku dGV4dCgpLDEwKSkpLEEoKXx8ZC5rZWVwT3Blbnx8ZC5pbmxpbmV8fGJhKCl9 LGluY3JlbWVudEhvdXJzOmZ1bmN0aW9uKCl7dmFyIGE9ZS5jbG9uZSgpLmFk ZCgxLCJoIik7UihhLCJoIikmJmFhKGEpfSxpbmNyZW1lbnRNaW51dGVzOmZ1 bmN0aW9uKCl7dmFyIGE9ZS5jbG9uZSgpLmFkZChkLnN0ZXBwaW5nLCJtIik7 UihhLCJtIikmJmFhKGEpfSxpbmNyZW1lbnRTZWNvbmRzOmZ1bmN0aW9uKCl7 dmFyIGE9ZS5jbG9uZSgpLmFkZCgxLCJzIik7UihhLCJzIikmJmFhKGEpfSxk ZWNyZW1lbnRIb3VyczpmdW5jdGlvbigpe3ZhciBhPWUuY2xvbmUoKS5zdWJ0 cmFjdCgxLCJoIik7UihhLCJoIikmJmFhKGEpfSxkZWNyZW1lbnRNaW51dGVz OmZ1bmN0aW9uKCl7dmFyIGE9ZS5jbG9uZSgpLnN1YnRyYWN0KGQuc3RlcHBp bmcsIm0iKTtSKGEsIm0iKSYmYWEoYSl9LGRlY3JlbWVudFNlY29uZHM6ZnVu Y3Rpb24oKXt2YXIgYT1lLmNsb25lKCkuc3VidHJhY3QoMSwicyIpO1IoYSwi cyIpJiZhYShhKX0sdG9nZ2xlUGVyaW9kOmZ1bmN0aW9uKCl7YWEoZS5jbG9u ZSgpLmFkZChlLmhvdXJzKCk+PTEyPy0xMjoxMiwiaCIpKX0sdG9nZ2xlUGlj a2VyOmZ1bmN0aW9uKGIpe3ZhciBjLGU9YShiLnRhcmdldCksZj1lLmNsb3Nl c3QoInVsIiksZz1mLmZpbmQoIi5pbiIpLGg9Zi5maW5kKCIuY29sbGFwc2U6 bm90KC5pbikiKTtpZihnJiZnLmxlbmd0aCl7aWYoYz1nLmRhdGEoImNvbGxh cHNlIiksYyYmYy50cmFuc2l0aW9uaW5nKXJldHVybjtnLmNvbGxhcHNlPygv LyBpZiBjb2xsYXBzZSBwbHVnaW4gaXMgYXZhaWxhYmxlIHRocm91Z2ggYm9v dHN0cmFwLmpzIHRoZW4gdXNlIGl0CitnLmNvbGxhcHNlKCJoaWRlIiksaC5j b2xsYXBzZSgic2hvdyIpKTooLy8gb3RoZXJ3aXNlIGp1c3QgdG9nZ2xlIGlu IGNsYXNzIG9uIHRoZSB0d28gdmlld3MKK2cucmVtb3ZlQ2xhc3MoImluIiks aC5hZGRDbGFzcygiaW4iKSksZS5pcygic3BhbiIpP2UudG9nZ2xlQ2xhc3Mo ZC5pY29ucy50aW1lKyIgIitkLmljb25zLmRhdGUpOmUuZmluZCgic3BhbiIp LnRvZ2dsZUNsYXNzKGQuaWNvbnMudGltZSsiICIrZC5pY29ucy5kYXRlKX19 LHNob3dQaWNrZXI6ZnVuY3Rpb24oKXtvLmZpbmQoIi50aW1lcGlja2VyID4g ZGl2Om5vdCgudGltZXBpY2tlci1waWNrZXIpIikuaGlkZSgpLG8uZmluZCgi LnRpbWVwaWNrZXIgLnRpbWVwaWNrZXItcGlja2VyIikuc2hvdygpfSxzaG93 SG91cnM6ZnVuY3Rpb24oKXtvLmZpbmQoIi50aW1lcGlja2VyIC50aW1lcGlj a2VyLXBpY2tlciIpLmhpZGUoKSxvLmZpbmQoIi50aW1lcGlja2VyIC50aW1l cGlja2VyLWhvdXJzIikuc2hvdygpfSxzaG93TWludXRlczpmdW5jdGlvbigp e28uZmluZCgiLnRpbWVwaWNrZXIgLnRpbWVwaWNrZXItcGlja2VyIikuaGlk ZSgpLG8uZmluZCgiLnRpbWVwaWNrZXIgLnRpbWVwaWNrZXItbWludXRlcyIp LnNob3coKX0sc2hvd1NlY29uZHM6ZnVuY3Rpb24oKXtvLmZpbmQoIi50aW1l cGlja2VyIC50aW1lcGlja2VyLXBpY2tlciIpLmhpZGUoKSxvLmZpbmQoIi50 aW1lcGlja2VyIC50aW1lcGlja2VyLXNlY29uZHMiKS5zaG93KCl9LHNlbGVj dEhvdXI6ZnVuY3Rpb24oYil7dmFyIGM9cGFyc2VJbnQoYShiLnRhcmdldCku dGV4dCgpLDEwKTtofHwoZS5ob3VycygpPj0xMj8xMiE9PWMmJihjKz0xMik6 MTI9PT1jJiYoYz0wKSksYWEoZS5jbG9uZSgpLmhvdXJzKGMpKSxlYS5zaG93 UGlja2VyLmNhbGwobCl9LHNlbGVjdE1pbnV0ZTpmdW5jdGlvbihiKXthYShl LmNsb25lKCkubWludXRlcyhwYXJzZUludChhKGIudGFyZ2V0KS50ZXh0KCks MTApKSksZWEuc2hvd1BpY2tlci5jYWxsKGwpfSxzZWxlY3RTZWNvbmQ6ZnVu Y3Rpb24oYil7YWEoZS5jbG9uZSgpLnNlY29uZHMocGFyc2VJbnQoYShiLnRh cmdldCkudGV4dCgpLDEwKSkpLGVhLnNob3dQaWNrZXIuY2FsbChsKX0sY2xl YXI6Y2EsdG9kYXk6ZnVuY3Rpb24oKXt2YXIgYT15KCk7UihhLCJkIikmJmFh KGEpfSxjbG9zZTpiYX0sZmE9ZnVuY3Rpb24oYil7cmV0dXJuIWEoYi5jdXJy ZW50VGFyZ2V0KS5pcygiLmRpc2FibGVkIikmJihlYVthKGIuY3VycmVudFRh cmdldCkuZGF0YSgiYWN0aW9uIildLmFwcGx5KGwsYXJndW1lbnRzKSwhMSl9 LC8qKgorICAgICAgICAgICAgICogU2hvd3MgdGhlIHdpZGdldC4gUG9zc2li bHkgd2lsbCBlbWl0IGRwLnNob3cgYW5kIGRwLmNoYW5nZQorICAgICAgICAg ICAgICovCitnYT1mdW5jdGlvbigpe3ZhciBiLGM9e3llYXI6ZnVuY3Rpb24o YSl7cmV0dXJuIGEubW9udGgoMCkuZGF0ZSgxKS5ob3VycygwKS5zZWNvbmRz KDApLm1pbnV0ZXMoMCl9LG1vbnRoOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRh dGUoMSkuaG91cnMoMCkuc2Vjb25kcygwKS5taW51dGVzKDApfSxkYXk6ZnVu Y3Rpb24oYSl7cmV0dXJuIGEuaG91cnMoMCkuc2Vjb25kcygwKS5taW51dGVz KDApfSxob3VyOmZ1bmN0aW9uKGEpe3JldHVybiBhLnNlY29uZHMoMCkubWlu dXRlcygwKX0sbWludXRlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnNlY29uZHMo MCl9fTsvLyB0aGlzIGhhbmRsZXMgY2xpY2tzIG9uIHRoZSB3aWRnZXQKK3Jl dHVybiBnLnByb3AoImRpc2FibGVkIil8fCFkLmlnbm9yZVJlYWRvbmx5JiZn LnByb3AoInJlYWRvbmx5Iil8fG8/bDoodm9pZCAwIT09Zy52YWwoKSYmMCE9 PWcudmFsKCkudHJpbSgpLmxlbmd0aD9hYShkYShnLnZhbCgpLnRyaW0oKSkp Om0mJmQudXNlQ3VycmVudCYmKGQuaW5saW5lfHxnLmlzKCJpbnB1dCIpJiYw PT09Zy52YWwoKS50cmltKCkubGVuZ3RoKSYmKGI9eSgpLCJzdHJpbmciPT10 eXBlb2YgZC51c2VDdXJyZW50JiYoYj1jW2QudXNlQ3VycmVudF0oYikpLGFh KGIpKSxvPUcoKSxNKCksUygpLG8uZmluZCgiLnRpbWVwaWNrZXItaG91cnMi KS5oaWRlKCksby5maW5kKCIudGltZXBpY2tlci1taW51dGVzIikuaGlkZSgp LG8uZmluZCgiLnRpbWVwaWNrZXItc2Vjb25kcyIpLmhpZGUoKSxfKCksTCgp LGEod2luZG93KS5vbigicmVzaXplIixJKSxvLm9uKCJjbGljayIsIltkYXRh LWFjdGlvbl0iLGZhKSxvLm9uKCJtb3VzZWRvd24iLCExKSxuJiZuLmhhc0Ns YXNzKCJidG4iKSYmbi50b2dnbGVDbGFzcygiYWN0aXZlIiksSSgpLG8uc2hv dygpLGQuZm9jdXNPblNob3cmJiFnLmlzKCI6Zm9jdXMiKSYmZy5mb2N1cygp LEooe3R5cGU6ImRwLnNob3cifSksbCl9LC8qKgorICAgICAgICAgICAgICog U2hvd3Mgb3IgaGlkZXMgdGhlIHdpZGdldAorICAgICAgICAgICAgICovCito YT1mdW5jdGlvbigpe3JldHVybiBvP2JhKCk6Z2EoKX0saWE9ZnVuY3Rpb24o YSl7dmFyIGIsYyxlLGYsZz1udWxsLGg9W10saT17fSxqPWEud2hpY2gsaz0i cCI7d1tqXT1rO2ZvcihiIGluIHcpdy5oYXNPd25Qcm9wZXJ0eShiKSYmd1ti XT09PWsmJihoLnB1c2goYikscGFyc2VJbnQoYiwxMCkhPT1qJiYoaVtiXT0h MCkpO2ZvcihiIGluIGQua2V5QmluZHMpaWYoZC5rZXlCaW5kcy5oYXNPd25Q cm9wZXJ0eShiKSYmImZ1bmN0aW9uIj09dHlwZW9mIGQua2V5QmluZHNbYl0m JihlPWIuc3BsaXQoIiAiKSxlLmxlbmd0aD09PWgubGVuZ3RoJiZ2W2pdPT09 ZVtlLmxlbmd0aC0xXSkpe2ZvcihmPSEwLGM9ZS5sZW5ndGgtMjtjPj0wO2Mt LSlpZighKHZbZVtjXV1pbiBpKSl7Zj0hMTticmVha31pZihmKXtnPWQua2V5 QmluZHNbYl07YnJlYWt9fWcmJihnLmNhbGwobCxvKSxhLnN0b3BQcm9wYWdh dGlvbigpLGEucHJldmVudERlZmF1bHQoKSl9LGphPWZ1bmN0aW9uKGEpe3db YS53aGljaF09InIiLGEuc3RvcFByb3BhZ2F0aW9uKCksYS5wcmV2ZW50RGVm YXVsdCgpfSxrYT1mdW5jdGlvbihiKXt2YXIgYz1hKGIudGFyZ2V0KS52YWwo KS50cmltKCksZD1jP2RhKGMpOm51bGw7cmV0dXJuIGFhKGQpLGIuc3RvcElt bWVkaWF0ZVByb3BhZ2F0aW9uKCksITF9LGxhPWZ1bmN0aW9uKCl7Zy5vbih7 Y2hhbmdlOmthLGJsdXI6ZC5kZWJ1Zz8iIjpiYSxrZXlkb3duOmlhLGtleXVw OmphLGZvY3VzOmQuYWxsb3dJbnB1dFRvZ2dsZT9nYToiIn0pLGMuaXMoImlu cHV0Iik/Zy5vbih7Zm9jdXM6Z2F9KTpuJiYobi5vbigiY2xpY2siLGhhKSxu Lm9uKCJtb3VzZWRvd24iLCExKSl9LG1hPWZ1bmN0aW9uKCl7Zy5vZmYoe2No YW5nZTprYSxibHVyOmJsdXIsa2V5ZG93bjppYSxrZXl1cDpqYSxmb2N1czpk LmFsbG93SW5wdXRUb2dnbGU/YmE6IiJ9KSxjLmlzKCJpbnB1dCIpP2cub2Zm KHtmb2N1czpnYX0pOm4mJihuLm9mZigiY2xpY2siLGhhKSxuLm9mZigibW91 c2Vkb3duIiwhMSkpfSxuYT1mdW5jdGlvbihiKXsKKy8vIFN0b3JlIGdpdmVu IGVuYWJsZWREYXRlcyBhbmQgZGlzYWJsZWREYXRlcyBhcyBrZXlzLgorLy8g VGhpcyB3YXkgd2UgY2FuIGNoZWNrIHRoZWlyIGV4aXN0ZW5jZSBpbiBPKDEp IHRpbWUgaW5zdGVhZCBvZiBsb29waW5nIHRocm91Z2ggd2hvbGUgYXJyYXku CisvLyAoZm9yIGV4YW1wbGU6IG9wdGlvbnMuZW5hYmxlZERhdGVzWycyMDE0 LTAyLTI3J10gPT09IHRydWUpCit2YXIgYz17fTtyZXR1cm4gYS5lYWNoKGIs ZnVuY3Rpb24oKXt2YXIgYT1kYSh0aGlzKTthLmlzVmFsaWQoKSYmKGNbYS5m b3JtYXQoIllZWVktTU0tREQiKV09ITApfSksISFPYmplY3Qua2V5cyhjKS5s ZW5ndGgmJmN9LG9hPWZ1bmN0aW9uKGIpeworLy8gU3RvcmUgZ2l2ZW4gZW5h YmxlZEhvdXJzIGFuZCBkaXNhYmxlZEhvdXJzIGFzIGtleXMuCisvLyBUaGlz IHdheSB3ZSBjYW4gY2hlY2sgdGhlaXIgZXhpc3RlbmNlIGluIE8oMSkgdGlt ZSBpbnN0ZWFkIG9mIGxvb3BpbmcgdGhyb3VnaCB3aG9sZSBhcnJheS4KKy8v IChmb3IgZXhhbXBsZTogb3B0aW9ucy5lbmFibGVkSG91cnNbJzIwMTQtMDIt MjcnXSA9PT0gdHJ1ZSkKK3ZhciBjPXt9O3JldHVybiBhLmVhY2goYixmdW5j dGlvbigpe2NbdGhpc109ITB9KSwhIU9iamVjdC5rZXlzKGMpLmxlbmd0aCYm Y30scGE9ZnVuY3Rpb24oKXt2YXIgYT1kLmZvcm1hdHx8IkwgTFQiO2k9YS5y ZXBsYWNlKC8oXFtbXlxbXSpcXSl8KFxcKT8oTFRTfExUfExMP0w/TD98bHsx LDR9KS9nLGZ1bmN0aW9uKGEpe3ZhciBiPWUubG9jYWxlRGF0YSgpLmxvbmdE YXRlRm9ybWF0KGEpfHxhO3JldHVybiBiLnJlcGxhY2UoLyhcW1teXFtdKlxd KXwoXFwpPyhMVFN8TFR8TEw/TD9MP3xsezEsNH0pL2csZnVuY3Rpb24oYSl7 Ly90ZW1wIGZpeCBmb3IgIzc0MAorcmV0dXJuIGUubG9jYWxlRGF0YSgpLmxv bmdEYXRlRm9ybWF0KGEpfHxhfSl9KSxqPWQuZXh0cmFGb3JtYXRzP2QuZXh0 cmFGb3JtYXRzLnNsaWNlKCk6W10sai5pbmRleE9mKGEpPDAmJmouaW5kZXhP ZihpKTwwJiZqLnB1c2goaSksaD1pLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigi YSIpPDEmJmkucmVwbGFjZSgvXFsuKj9cXS9nLCIiKS5pbmRleE9mKCJoIik8 MSx6KCJ5IikmJihwPTIpLHooIk0iKSYmKHA9MSkseigiZCIpJiYocD0wKSxr PU1hdGgubWF4KHAsayksbXx8YWEoZSl9OworLy8gaW5pdGlhbGl6aW5nIGVs ZW1lbnQgYW5kIGNvbXBvbmVudCBhdHRyaWJ1dGVzCitpZigvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgICAgICoKKyAgICAg ICAgICogUHVibGljIEFQSSBmdW5jdGlvbnMKKyAgICAgICAgICogPT09PT09 PT09PT09PT09PT09PT09CisgICAgICAgICAqCisgICAgICAgICAqIEltcG9y dGFudDogRG8gbm90IGV4cG9zZSBkaXJlY3QgcmVmZXJlbmNlcyB0byBwcml2 YXRlIG9iamVjdHMgb3IgdGhlIG9wdGlvbnMKKyAgICAgICAgICogb2JqZWN0 IHRvIHRoZSBvdXRlciB3b3JsZC4gQWx3YXlzIHJldHVybiBhIGNsb25lIHdo ZW4gcmV0dXJuaW5nIHZhbHVlcyBvciBtYWtlCisgICAgICAgICAqIGEgY2xv bmUgd2hlbiBzZXR0aW5nIGEgcHJpdmF0ZSB2YXJpYWJsZS4KKyAgICAgICAg ICoKKyAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworbC5kZXN0cm95PWZ1bmN0aW9uKCl7CisvLy88c3VtbWFyeT5EZXN0 cm95cyB0aGUgd2lkZ2V0IGFuZCByZW1vdmVzIGFsbCBhdHRhY2hlZCBldmVu dCBsaXN0ZW5lcnM8L3N1bW1hcnk+CitiYSgpLG1hKCksYy5yZW1vdmVEYXRh KCJEYXRlVGltZVBpY2tlciIpLGMucmVtb3ZlRGF0YSgiZGF0ZSIpfSxsLnRv Z2dsZT1oYSxsLnNob3c9Z2EsbC5oaWRlPWJhLGwuZGlzYWJsZT1mdW5jdGlv bigpeworLy8vPHN1bW1hcnk+RGlzYWJsZXMgdGhlIGlucHV0IGVsZW1lbnQs IHRoZSBjb21wb25lbnQgaXMgYXR0YWNoZWQgdG8sIGJ5IGFkZGluZyBhIGRp c2FibGVkPSJ0cnVlIiBhdHRyaWJ1dGUgdG8gaXQuCisvLy9JZiB0aGUgd2lk Z2V0IHdhcyB2aXNpYmxlIGJlZm9yZSB0aGF0IGNhbGwgaXQgaXMgaGlkZGVu LiBQb3NzaWJseSBlbWl0cyBkcC5oaWRlPC9zdW1tYXJ5PgorcmV0dXJuIGJh KCksbiYmbi5oYXNDbGFzcygiYnRuIikmJm4uYWRkQ2xhc3MoImRpc2FibGVk IiksZy5wcm9wKCJkaXNhYmxlZCIsITApLGx9LGwuZW5hYmxlPWZ1bmN0aW9u KCl7CisvLy88c3VtbWFyeT5FbmFibGVzIHRoZSBpbnB1dCBlbGVtZW50LCB0 aGUgY29tcG9uZW50IGlzIGF0dGFjaGVkIHRvLCBieSByZW1vdmluZyBkaXNh YmxlZCBhdHRyaWJ1dGUgZnJvbSBpdC48L3N1bW1hcnk+CityZXR1cm4gbiYm bi5oYXNDbGFzcygiYnRuIikmJm4ucmVtb3ZlQ2xhc3MoImRpc2FibGVkIiks Zy5wcm9wKCJkaXNhYmxlZCIsITEpLGx9LGwuaWdub3JlUmVhZG9ubHk9ZnVu Y3Rpb24oYSl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQuaWdu b3JlUmVhZG9ubHk7aWYoImJvb2xlYW4iIT10eXBlb2YgYSl0aHJvdyBuZXcg VHlwZUVycm9yKCJpZ25vcmVSZWFkb25seSAoKSBleHBlY3RzIGEgYm9vbGVh biBwYXJhbWV0ZXIiKTtyZXR1cm4gZC5pZ25vcmVSZWFkb25seT1hLGx9LGwu b3B0aW9ucz1mdW5jdGlvbihiKXtpZigwPT09YXJndW1lbnRzLmxlbmd0aCly ZXR1cm4gYS5leHRlbmQoITAse30sZCk7aWYoIShiIGluc3RhbmNlb2YgT2Jq ZWN0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zKCkgb3B0aW9ucyBw YXJhbWV0ZXIgc2hvdWxkIGJlIGFuIG9iamVjdCIpO3JldHVybiBhLmV4dGVu ZCghMCxkLGIpLGEuZWFjaChkLGZ1bmN0aW9uKGEsYil7aWYodm9pZCAwPT09 bFthXSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gIithKyIgaXMgbm90 IHJlY29nbml6ZWQhIik7bFthXShiKX0pLGx9LGwuZGF0ZT1mdW5jdGlvbihh KXsKKy8vLzxzaWduYXR1cmUgaGVscEtleXdvcmQ9IiQuZm4uZGF0ZXRpbWVw aWNrZXIuZGF0ZSI+CisvLy88c3VtbWFyeT5SZXR1cm5zIHRoZSBjb21wb25l bnQncyBtb2RlbCBjdXJyZW50IGRhdGUsIGEgbW9tZW50IG9iamVjdCBvciBu dWxsIGlmIG5vdCBzZXQuPC9zdW1tYXJ5PgorLy8vPHJldHVybnMgdHlwZT0i TW9tZW50Ij5kYXRlLmNsb25lKCk8L3JldHVybnM+CisvLy88L3NpZ25hdHVy ZT4KKy8vLzxzaWduYXR1cmU+CisvLy88c3VtbWFyeT5TZXRzIHRoZSBjb21w b25lbnRzIG1vZGVsIGN1cnJlbnQgbW9tZW50IHRvIGl0LiBQYXNzaW5nIGEg bnVsbCB2YWx1ZSB1bnNldHMgdGhlIGNvbXBvbmVudHMgbW9kZWwgY3VycmVu dCBtb21lbnQuIFBhcnNpbmcgb2YgdGhlIG5ld0RhdGUgcGFyYW1ldGVyIGlz IG1hZGUgdXNpbmcgbW9tZW50IGxpYnJhcnkgd2l0aCB0aGUgb3B0aW9ucy5m b3JtYXQgYW5kIG9wdGlvbnMudXNlU3RyaWN0IGNvbXBvbmVudHMgY29uZmln dXJhdGlvbi48L3N1bW1hcnk+CisvLy88cGFyYW0gbmFtZT0ibmV3RGF0ZSIg bG9jaWQ9IiQuZm4uZGF0ZXRpbWVwaWNrZXIuZGF0ZV9wOm5ld0RhdGUiPlRh a2VzIHN0cmluZywgRGF0ZSwgbW9tZW50LCBudWxsIHBhcmFtZXRlci48L3Bh cmFtPgorLy8vPC9zaWduYXR1cmU+CitpZigwPT09YXJndW1lbnRzLmxlbmd0 aClyZXR1cm4gbT9udWxsOmUuY2xvbmUoKTtpZighKG51bGw9PT1hfHwic3Ry aW5nIj09dHlwZW9mIGF8fGIuaXNNb21lbnQoYSl8fGEgaW5zdGFuY2VvZiBE YXRlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJkYXRlKCkgcGFyYW1ldGVyIG11 c3QgYmUgb25lIG9mIFtudWxsLCBzdHJpbmcsIG1vbWVudCBvciBEYXRlXSIp O3JldHVybiBhYShudWxsPT09YT9udWxsOmRhKGEpKSxsfSxsLmZvcm1hdD1m dW5jdGlvbihhKXsKKy8vLzxzdW1tYXJ5PnRlc3Qgc3U8L3N1bW1hcnk+Cisv Ly88cGFyYW0gbmFtZT0ibmV3Rm9ybWF0Ij5pbmZvIGFib3V0IHBhcmE8L3Bh cmFtPgorLy8vPHJldHVybnMgdHlwZT0ic3RyaW5nfGJvb2xlYW4iPnJldHVy bnMgZm9vPC9yZXR1cm5zPgoraWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0 dXJuIGQuZm9ybWF0O2lmKCJzdHJpbmciIT10eXBlb2YgYSYmKCJib29sZWFu IiE9dHlwZW9mIGF8fGEhPT0hMSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiZm9y bWF0KCkgZXhwZWN0cyBhIHN0cmluZyBvciBib29sZWFuOmZhbHNlIHBhcmFt ZXRlciAiK2EpO3JldHVybiBkLmZvcm1hdD1hLGkmJnBhKCksbH0sbC50aW1l Wm9uZT1mdW5jdGlvbihhKXtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1 cm4gZC50aW1lWm9uZTtpZigic3RyaW5nIiE9dHlwZW9mIGEpdGhyb3cgbmV3 IFR5cGVFcnJvcigibmV3Wm9uZSgpIGV4cGVjdHMgYSBzdHJpbmcgcGFyYW1l dGVyIik7cmV0dXJuIGQudGltZVpvbmU9YSxsfSxsLmRheVZpZXdIZWFkZXJG b3JtYXQ9ZnVuY3Rpb24oYSl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0 dXJuIGQuZGF5Vmlld0hlYWRlckZvcm1hdDtpZigic3RyaW5nIiE9dHlwZW9m IGEpdGhyb3cgbmV3IFR5cGVFcnJvcigiZGF5Vmlld0hlYWRlckZvcm1hdCgp IGV4cGVjdHMgYSBzdHJpbmcgcGFyYW1ldGVyIik7cmV0dXJuIGQuZGF5Vmll d0hlYWRlckZvcm1hdD1hLGx9LGwuZXh0cmFGb3JtYXRzPWZ1bmN0aW9uKGEp e2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkLmV4dHJhRm9ybWF0 cztpZihhIT09ITEmJiEoYSBpbnN0YW5jZW9mIEFycmF5KSl0aHJvdyBuZXcg VHlwZUVycm9yKCJleHRyYUZvcm1hdHMoKSBleHBlY3RzIGFuIGFycmF5IG9y IGZhbHNlIHBhcmFtZXRlciIpO3JldHVybiBkLmV4dHJhRm9ybWF0cz1hLGom JnBhKCksbH0sbC5kaXNhYmxlZERhdGVzPWZ1bmN0aW9uKGIpeworLy8vPHNp Z25hdHVyZSBoZWxwS2V5d29yZD0iJC5mbi5kYXRldGltZXBpY2tlci5kaXNh YmxlZERhdGVzIj4KKy8vLzxzdW1tYXJ5PlJldHVybnMgYW4gYXJyYXkgd2l0 aCB0aGUgY3VycmVudGx5IHNldCBkaXNhYmxlZCBkYXRlcyBvbiB0aGUgY29t cG9uZW50Ljwvc3VtbWFyeT4KKy8vLzxyZXR1cm5zIHR5cGU9ImFycmF5Ij5v cHRpb25zLmRpc2FibGVkRGF0ZXM8L3JldHVybnM+CisvLy88L3NpZ25hdHVy ZT4KKy8vLzxzaWduYXR1cmU+CisvLy88c3VtbWFyeT5TZXR0aW5nIHRoaXMg dGFrZXMgcHJlY2VkZW5jZSBvdmVyIG9wdGlvbnMubWluRGF0ZSwgb3B0aW9u cy5tYXhEYXRlIGNvbmZpZ3VyYXRpb24uIEFsc28gY2FsbGluZyB0aGlzIGZ1 bmN0aW9uIHJlbW92ZXMgdGhlIGNvbmZpZ3VyYXRpb24gb2YKKy8vL29wdGlv bnMuZW5hYmxlZERhdGVzIGlmIHN1Y2ggZXhpc3QuPC9zdW1tYXJ5PgorLy8v PHBhcmFtIG5hbWU9ImRhdGVzIiBsb2NpZD0iJC5mbi5kYXRldGltZXBpY2tl ci5kaXNhYmxlZERhdGVzX3A6ZGF0ZXMiPlRha2VzIGFuIFsgc3RyaW5nIG9y IERhdGUgb3IgbW9tZW50IF0gb2YgdmFsdWVzIGFuZCBhbGxvd3MgdGhlIHVz ZXIgdG8gc2VsZWN0IG9ubHkgZnJvbSB0aG9zZSBkYXlzLjwvcGFyYW0+Cisv Ly88L3NpZ25hdHVyZT4KK2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVy biBkLmRpc2FibGVkRGF0ZXM/YS5leHRlbmQoe30sZC5kaXNhYmxlZERhdGVz KTpkLmRpc2FibGVkRGF0ZXM7aWYoIWIpcmV0dXJuIGQuZGlzYWJsZWREYXRl cz0hMSxfKCksbDtpZighKGIgaW5zdGFuY2VvZiBBcnJheSkpdGhyb3cgbmV3 IFR5cGVFcnJvcigiZGlzYWJsZWREYXRlcygpIGV4cGVjdHMgYW4gYXJyYXkg cGFyYW1ldGVyIik7cmV0dXJuIGQuZGlzYWJsZWREYXRlcz1uYShiKSxkLmVu YWJsZWREYXRlcz0hMSxfKCksbH0sbC5lbmFibGVkRGF0ZXM9ZnVuY3Rpb24o Yil7CisvLy88c2lnbmF0dXJlIGhlbHBLZXl3b3JkPSIkLmZuLmRhdGV0aW1l cGlja2VyLmVuYWJsZWREYXRlcyI+CisvLy88c3VtbWFyeT5SZXR1cm5zIGFu IGFycmF5IHdpdGggdGhlIGN1cnJlbnRseSBzZXQgZW5hYmxlZCBkYXRlcyBv biB0aGUgY29tcG9uZW50Ljwvc3VtbWFyeT4KKy8vLzxyZXR1cm5zIHR5cGU9 ImFycmF5Ij5vcHRpb25zLmVuYWJsZWREYXRlczwvcmV0dXJucz4KKy8vLzwv c2lnbmF0dXJlPgorLy8vPHNpZ25hdHVyZT4KKy8vLzxzdW1tYXJ5PlNldHRp bmcgdGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb3B0aW9ucy5taW5EYXRl LCBvcHRpb25zLm1heERhdGUgY29uZmlndXJhdGlvbi4gQWxzbyBjYWxsaW5n IHRoaXMgZnVuY3Rpb24gcmVtb3ZlcyB0aGUgY29uZmlndXJhdGlvbiBvZiBv cHRpb25zLmRpc2FibGVkRGF0ZXMgaWYgc3VjaCBleGlzdC48L3N1bW1hcnk+ CisvLy88cGFyYW0gbmFtZT0iZGF0ZXMiIGxvY2lkPSIkLmZuLmRhdGV0aW1l cGlja2VyLmVuYWJsZWREYXRlc19wOmRhdGVzIj5UYWtlcyBhbiBbIHN0cmlu ZyBvciBEYXRlIG9yIG1vbWVudCBdIG9mIHZhbHVlcyBhbmQgYWxsb3dzIHRo ZSB1c2VyIHRvIHNlbGVjdCBvbmx5IGZyb20gdGhvc2UgZGF5cy48L3BhcmFt PgorLy8vPC9zaWduYXR1cmU+CitpZigwPT09YXJndW1lbnRzLmxlbmd0aCly ZXR1cm4gZC5lbmFibGVkRGF0ZXM/YS5leHRlbmQoe30sZC5lbmFibGVkRGF0 ZXMpOmQuZW5hYmxlZERhdGVzO2lmKCFiKXJldHVybiBkLmVuYWJsZWREYXRl cz0hMSxfKCksbDtpZighKGIgaW5zdGFuY2VvZiBBcnJheSkpdGhyb3cgbmV3 IFR5cGVFcnJvcigiZW5hYmxlZERhdGVzKCkgZXhwZWN0cyBhbiBhcnJheSBw YXJhbWV0ZXIiKTtyZXR1cm4gZC5lbmFibGVkRGF0ZXM9bmEoYiksZC5kaXNh YmxlZERhdGVzPSExLF8oKSxsfSxsLmRheXNPZldlZWtEaXNhYmxlZD1mdW5j dGlvbihhKXtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZC5kYXlz T2ZXZWVrRGlzYWJsZWQuc3BsaWNlKDApO2lmKCJib29sZWFuIj09dHlwZW9m IGEmJiFhKXJldHVybiBkLmRheXNPZldlZWtEaXNhYmxlZD0hMSxfKCksbDtp ZighKGEgaW5zdGFuY2VvZiBBcnJheSkpdGhyb3cgbmV3IFR5cGVFcnJvcigi ZGF5c09mV2Vla0Rpc2FibGVkKCkgZXhwZWN0cyBhbiBhcnJheSBwYXJhbWV0 ZXIiKTtpZihkLmRheXNPZldlZWtEaXNhYmxlZD1hLnJlZHVjZShmdW5jdGlv bihhLGIpe3JldHVybiBiPXBhcnNlSW50KGIsMTApLGI+Nnx8YjwwfHxpc05h TihiKT9hOihhLmluZGV4T2YoYik9PT0tMSYmYS5wdXNoKGIpLGEpfSxbXSku c29ydCgpLGQudXNlQ3VycmVudCYmIWQua2VlcEludmFsaWQpe2Zvcih2YXIg Yj0wOyFSKGUsImQiKTspe2lmKGUuYWRkKDEsImQiKSwzMT09PWIpdGhyb3ci VHJpZWQgMzEgdGltZXMgdG8gZmluZCBhIHZhbGlkIGRhdGUiO2IrK31hYShl KX1yZXR1cm4gXygpLGx9LGwubWF4RGF0ZT1mdW5jdGlvbihhKXtpZigwPT09 YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZC5tYXhEYXRlP2QubWF4RGF0ZS5j bG9uZSgpOmQubWF4RGF0ZTtpZigiYm9vbGVhbiI9PXR5cGVvZiBhJiZhPT09 ITEpcmV0dXJuIGQubWF4RGF0ZT0hMSxfKCksbDsic3RyaW5nIj09dHlwZW9m IGEmJigibm93IiE9PWEmJiJtb21lbnQiIT09YXx8KGE9eSgpKSk7dmFyIGI9 ZGEoYSk7aWYoIWIuaXNWYWxpZCgpKXRocm93IG5ldyBUeXBlRXJyb3IoIm1h eERhdGUoKSBDb3VsZCBub3QgcGFyc2UgZGF0ZSBwYXJhbWV0ZXI6ICIrYSk7 aWYoZC5taW5EYXRlJiZiLmlzQmVmb3JlKGQubWluRGF0ZSkpdGhyb3cgbmV3 IFR5cGVFcnJvcigibWF4RGF0ZSgpIGRhdGUgcGFyYW1ldGVyIGlzIGJlZm9y ZSBvcHRpb25zLm1pbkRhdGU6ICIrYi5mb3JtYXQoaSkpO3JldHVybiBkLm1h eERhdGU9YixkLnVzZUN1cnJlbnQmJiFkLmtlZXBJbnZhbGlkJiZlLmlzQWZ0 ZXIoYSkmJmFhKGQubWF4RGF0ZSksZi5pc0FmdGVyKGIpJiYoZj1iLmNsb25l KCkuc3VidHJhY3QoZC5zdGVwcGluZywibSIpKSxfKCksbH0sbC5taW5EYXRl PWZ1bmN0aW9uKGEpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBk Lm1pbkRhdGU/ZC5taW5EYXRlLmNsb25lKCk6ZC5taW5EYXRlO2lmKCJib29s ZWFuIj09dHlwZW9mIGEmJmE9PT0hMSlyZXR1cm4gZC5taW5EYXRlPSExLF8o KSxsOyJzdHJpbmciPT10eXBlb2YgYSYmKCJub3ciIT09YSYmIm1vbWVudCIh PT1hfHwoYT15KCkpKTt2YXIgYj1kYShhKTtpZighYi5pc1ZhbGlkKCkpdGhy b3cgbmV3IFR5cGVFcnJvcigibWluRGF0ZSgpIENvdWxkIG5vdCBwYXJzZSBk YXRlIHBhcmFtZXRlcjogIithKTtpZihkLm1heERhdGUmJmIuaXNBZnRlcihk Lm1heERhdGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIm1pbkRhdGUoKSBkYXRl IHBhcmFtZXRlciBpcyBhZnRlciBvcHRpb25zLm1heERhdGU6ICIrYi5mb3Jt YXQoaSkpO3JldHVybiBkLm1pbkRhdGU9YixkLnVzZUN1cnJlbnQmJiFkLmtl ZXBJbnZhbGlkJiZlLmlzQmVmb3JlKGEpJiZhYShkLm1pbkRhdGUpLGYuaXNC ZWZvcmUoYikmJihmPWIuY2xvbmUoKS5hZGQoZC5zdGVwcGluZywibSIpKSxf KCksbH0sbC5kZWZhdWx0RGF0ZT1mdW5jdGlvbihhKXsKKy8vLzxzaWduYXR1 cmUgaGVscEtleXdvcmQ9IiQuZm4uZGF0ZXRpbWVwaWNrZXIuZGVmYXVsdERh dGUiPgorLy8vPHN1bW1hcnk+UmV0dXJucyBhIG1vbWVudCB3aXRoIHRoZSBv cHRpb25zLmRlZmF1bHREYXRlIG9wdGlvbiBjb25maWd1cmF0aW9uIG9yIGZh bHNlIGlmIG5vdCBzZXQ8L3N1bW1hcnk+CisvLy88cmV0dXJucyB0eXBlPSJN b21lbnQiPmRhdGUuY2xvbmUoKTwvcmV0dXJucz4KKy8vLzwvc2lnbmF0dXJl PgorLy8vPHNpZ25hdHVyZT4KKy8vLzxzdW1tYXJ5PldpbGwgc2V0IHRoZSBw aWNrZXIncyBpbml0YWwgZGF0ZS4gSWYgYSBib29sZWFuOmZhbHNlIHZhbHVl IGlzIHBhc3NlZCB0aGUgb3B0aW9ucy5kZWZhdWx0RGF0ZSBwYXJhbWV0ZXIg aXMgY2xlYXJlZC48L3N1bW1hcnk+CisvLy88cGFyYW0gbmFtZT0iZGVmYXVs dERhdGUiIGxvY2lkPSIkLmZuLmRhdGV0aW1lcGlja2VyLmRlZmF1bHREYXRl X3A6ZGVmYXVsdERhdGUiPlRha2VzIGEgc3RyaW5nLCBEYXRlLCBtb21lbnQs IGJvb2xlYW46ZmFsc2U8L3BhcmFtPgorLy8vPC9zaWduYXR1cmU+CitpZigw PT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZC5kZWZhdWx0RGF0ZT9kLmRl ZmF1bHREYXRlLmNsb25lKCk6ZC5kZWZhdWx0RGF0ZTtpZighYSlyZXR1cm4g ZC5kZWZhdWx0RGF0ZT0hMSxsOyJzdHJpbmciPT10eXBlb2YgYSYmKGE9Im5v dyI9PT1hfHwibW9tZW50Ij09PWE/eSgpOnkoYSkpO3ZhciBiPWRhKGEpO2lm KCFiLmlzVmFsaWQoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJkZWZhdWx0RGF0 ZSgpIENvdWxkIG5vdCBwYXJzZSBkYXRlIHBhcmFtZXRlcjogIithKTtpZigh UihiKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJkZWZhdWx0RGF0ZSgpIGRhdGUg cGFzc2VkIGlzIGludmFsaWQgYWNjb3JkaW5nIHRvIGNvbXBvbmVudCBzZXR1 cCB2YWxpZGF0aW9ucyIpO3JldHVybiBkLmRlZmF1bHREYXRlPWIsKGQuZGVm YXVsdERhdGUmJmQuaW5saW5lfHwiIj09PWcudmFsKCkudHJpbSgpKSYmYWEo ZC5kZWZhdWx0RGF0ZSksbH0sbC5sb2NhbGU9ZnVuY3Rpb24oYSl7aWYoMD09 PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQubG9jYWxlO2lmKCFiLmxvY2Fs ZURhdGEoYSkpdGhyb3cgbmV3IFR5cGVFcnJvcigibG9jYWxlKCkgbG9jYWxl ICIrYSsiIGlzIG5vdCBsb2FkZWQgZnJvbSBtb21lbnQgbG9jYWxlcyEiKTty ZXR1cm4gZC5sb2NhbGU9YSxlLmxvY2FsZShkLmxvY2FsZSksZi5sb2NhbGUo ZC5sb2NhbGUpLGkmJnBhKCksbyYmKGJhKCksZ2EoKSksbH0sbC5zdGVwcGlu Zz1mdW5jdGlvbihhKXtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/ZC5z dGVwcGluZzooYT1wYXJzZUludChhLDEwKSwoaXNOYU4oYSl8fGE8MSkmJihh PTEpLGQuc3RlcHBpbmc9YSxsKX0sbC51c2VDdXJyZW50PWZ1bmN0aW9uKGEp e3ZhciBiPVsieWVhciIsIm1vbnRoIiwiZGF5IiwiaG91ciIsIm1pbnV0ZSJd O2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkLnVzZUN1cnJlbnQ7 aWYoImJvb2xlYW4iIT10eXBlb2YgYSYmInN0cmluZyIhPXR5cGVvZiBhKXRo cm93IG5ldyBUeXBlRXJyb3IoInVzZUN1cnJlbnQoKSBleHBlY3RzIGEgYm9v bGVhbiBvciBzdHJpbmcgcGFyYW1ldGVyIik7aWYoInN0cmluZyI9PXR5cGVv ZiBhJiZiLmluZGV4T2YoYS50b0xvd2VyQ2FzZSgpKT09PS0xKXRocm93IG5l dyBUeXBlRXJyb3IoInVzZUN1cnJlbnQoKSBleHBlY3RzIGEgc3RyaW5nIHBh cmFtZXRlciBvZiAiK2Iuam9pbigiLCAiKSk7cmV0dXJuIGQudXNlQ3VycmVu dD1hLGx9LGwuY29sbGFwc2U9ZnVuY3Rpb24oYSl7aWYoMD09PWFyZ3VtZW50 cy5sZW5ndGgpcmV0dXJuIGQuY29sbGFwc2U7aWYoImJvb2xlYW4iIT10eXBl b2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJjb2xsYXBzZSgpIGV4cGVjdHMg YSBib29sZWFuIHBhcmFtZXRlciIpO3JldHVybiBkLmNvbGxhcHNlPT09YT9s OihkLmNvbGxhcHNlPWEsbyYmKGJhKCksZ2EoKSksbCl9LGwuaWNvbnM9ZnVu Y3Rpb24oYil7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGEuZXh0 ZW5kKHt9LGQuaWNvbnMpO2lmKCEoYiBpbnN0YW5jZW9mIE9iamVjdCkpdGhy b3cgbmV3IFR5cGVFcnJvcigiaWNvbnMoKSBleHBlY3RzIHBhcmFtZXRlciB0 byBiZSBhbiBPYmplY3QiKTtyZXR1cm4gYS5leHRlbmQoZC5pY29ucyxiKSxv JiYoYmEoKSxnYSgpKSxsfSxsLnRvb2x0aXBzPWZ1bmN0aW9uKGIpe2lmKDA9 PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBhLmV4dGVuZCh7fSxkLnRvb2x0 aXBzKTtpZighKGIgaW5zdGFuY2VvZiBPYmplY3QpKXRocm93IG5ldyBUeXBl RXJyb3IoInRvb2x0aXBzKCkgZXhwZWN0cyBwYXJhbWV0ZXIgdG8gYmUgYW4g T2JqZWN0Iik7cmV0dXJuIGEuZXh0ZW5kKGQudG9vbHRpcHMsYiksbyYmKGJh KCksZ2EoKSksbH0sbC51c2VTdHJpY3Q9ZnVuY3Rpb24oYSl7aWYoMD09PWFy Z3VtZW50cy5sZW5ndGgpcmV0dXJuIGQudXNlU3RyaWN0O2lmKCJib29sZWFu IiE9dHlwZW9mIGEpdGhyb3cgbmV3IFR5cGVFcnJvcigidXNlU3RyaWN0KCkg ZXhwZWN0cyBhIGJvb2xlYW4gcGFyYW1ldGVyIik7cmV0dXJuIGQudXNlU3Ry aWN0PWEsbH0sbC5zaWRlQnlTaWRlPWZ1bmN0aW9uKGEpe2lmKDA9PT1hcmd1 bWVudHMubGVuZ3RoKXJldHVybiBkLnNpZGVCeVNpZGU7aWYoImJvb2xlYW4i IT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJzaWRlQnlTaWRlKCkg ZXhwZWN0cyBhIGJvb2xlYW4gcGFyYW1ldGVyIik7cmV0dXJuIGQuc2lkZUJ5 U2lkZT1hLG8mJihiYSgpLGdhKCkpLGx9LGwudmlld01vZGU9ZnVuY3Rpb24o YSl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQudmlld01vZGU7 aWYoInN0cmluZyIhPXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoInZp ZXdNb2RlKCkgZXhwZWN0cyBhIHN0cmluZyBwYXJhbWV0ZXIiKTtpZihyLmlu ZGV4T2YoYSk9PT0tMSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ2aWV3TW9kZSgp IHBhcmFtZXRlciBtdXN0IGJlIG9uZSBvZiAoIityLmpvaW4oIiwgIikrIikg dmFsdWUiKTtyZXR1cm4gZC52aWV3TW9kZT1hLGs9TWF0aC5tYXgoci5pbmRl eE9mKGEpLHApLEwoKSxsfSxsLnRvb2xiYXJQbGFjZW1lbnQ9ZnVuY3Rpb24o YSl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQudG9vbGJhclBs YWNlbWVudDtpZigic3RyaW5nIiE9dHlwZW9mIGEpdGhyb3cgbmV3IFR5cGVF cnJvcigidG9vbGJhclBsYWNlbWVudCgpIGV4cGVjdHMgYSBzdHJpbmcgcGFy YW1ldGVyIik7aWYodS5pbmRleE9mKGEpPT09LTEpdGhyb3cgbmV3IFR5cGVF cnJvcigidG9vbGJhclBsYWNlbWVudCgpIHBhcmFtZXRlciBtdXN0IGJlIG9u ZSBvZiAoIit1LmpvaW4oIiwgIikrIikgdmFsdWUiKTtyZXR1cm4gZC50b29s YmFyUGxhY2VtZW50PWEsbyYmKGJhKCksZ2EoKSksbH0sbC53aWRnZXRQb3Np dGlvbmluZz1mdW5jdGlvbihiKXtpZigwPT09YXJndW1lbnRzLmxlbmd0aCly ZXR1cm4gYS5leHRlbmQoe30sZC53aWRnZXRQb3NpdGlvbmluZyk7aWYoIltv YmplY3QgT2JqZWN0XSIhPT17fS50b1N0cmluZy5jYWxsKGIpKXRocm93IG5l dyBUeXBlRXJyb3IoIndpZGdldFBvc2l0aW9uaW5nKCkgZXhwZWN0cyBhbiBv YmplY3QgdmFyaWFibGUiKTtpZihiLmhvcml6b250YWwpe2lmKCJzdHJpbmci IT10eXBlb2YgYi5ob3Jpem9udGFsKXRocm93IG5ldyBUeXBlRXJyb3IoIndp ZGdldFBvc2l0aW9uaW5nKCkgaG9yaXpvbnRhbCB2YXJpYWJsZSBtdXN0IGJl IGEgc3RyaW5nIik7aWYoYi5ob3Jpem9udGFsPWIuaG9yaXpvbnRhbC50b0xv d2VyQ2FzZSgpLHQuaW5kZXhPZihiLmhvcml6b250YWwpPT09LTEpdGhyb3cg bmV3IFR5cGVFcnJvcigid2lkZ2V0UG9zaXRpb25pbmcoKSBleHBlY3RzIGhv cml6b250YWwgcGFyYW1ldGVyIHRvIGJlIG9uZSBvZiAoIit0LmpvaW4oIiwg IikrIikiKTtkLndpZGdldFBvc2l0aW9uaW5nLmhvcml6b250YWw9Yi5ob3Jp em9udGFsfWlmKGIudmVydGljYWwpe2lmKCJzdHJpbmciIT10eXBlb2YgYi52 ZXJ0aWNhbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJ3aWRnZXRQb3NpdGlvbmlu ZygpIHZlcnRpY2FsIHZhcmlhYmxlIG11c3QgYmUgYSBzdHJpbmciKTtpZihi LnZlcnRpY2FsPWIudmVydGljYWwudG9Mb3dlckNhc2UoKSxzLmluZGV4T2Yo Yi52ZXJ0aWNhbCk9PT0tMSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ3aWRnZXRQ b3NpdGlvbmluZygpIGV4cGVjdHMgdmVydGljYWwgcGFyYW1ldGVyIHRvIGJl IG9uZSBvZiAoIitzLmpvaW4oIiwgIikrIikiKTtkLndpZGdldFBvc2l0aW9u aW5nLnZlcnRpY2FsPWIudmVydGljYWx9cmV0dXJuIF8oKSxsfSxsLmNhbGVu ZGFyV2Vla3M9ZnVuY3Rpb24oYSl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgp cmV0dXJuIGQuY2FsZW5kYXJXZWVrcztpZigiYm9vbGVhbiIhPXR5cGVvZiBh KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGVuZGFyV2Vla3MoKSBleHBlY3Rz IHBhcmFtZXRlciB0byBiZSBhIGJvb2xlYW4gdmFsdWUiKTtyZXR1cm4gZC5j YWxlbmRhcldlZWtzPWEsXygpLGx9LGwuc2hvd1RvZGF5QnV0dG9uPWZ1bmN0 aW9uKGEpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkLnNob3dU b2RheUJ1dHRvbjtpZigiYm9vbGVhbiIhPXR5cGVvZiBhKXRocm93IG5ldyBU eXBlRXJyb3IoInNob3dUb2RheUJ1dHRvbigpIGV4cGVjdHMgYSBib29sZWFu IHBhcmFtZXRlciIpO3JldHVybiBkLnNob3dUb2RheUJ1dHRvbj1hLG8mJihi YSgpLGdhKCkpLGx9LGwuc2hvd0NsZWFyPWZ1bmN0aW9uKGEpe2lmKDA9PT1h cmd1bWVudHMubGVuZ3RoKXJldHVybiBkLnNob3dDbGVhcjtpZigiYm9vbGVh biIhPXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoInNob3dDbGVhcigp IGV4cGVjdHMgYSBib29sZWFuIHBhcmFtZXRlciIpO3JldHVybiBkLnNob3dD bGVhcj1hLG8mJihiYSgpLGdhKCkpLGx9LGwud2lkZ2V0UGFyZW50PWZ1bmN0 aW9uKGIpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkLndpZGdl dFBhcmVudDtpZigic3RyaW5nIj09dHlwZW9mIGImJihiPWEoYikpLG51bGwh PT1iJiYic3RyaW5nIiE9dHlwZW9mIGImJiEoYiBpbnN0YW5jZW9mIGEpKXRo cm93IG5ldyBUeXBlRXJyb3IoIndpZGdldFBhcmVudCgpIGV4cGVjdHMgYSBz dHJpbmcgb3IgYSBqUXVlcnkgb2JqZWN0IHBhcmFtZXRlciIpO3JldHVybiBk LndpZGdldFBhcmVudD1iLG8mJihiYSgpLGdhKCkpLGx9LGwua2VlcE9wZW49 ZnVuY3Rpb24oYSl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQu a2VlcE9wZW47aWYoImJvb2xlYW4iIT10eXBlb2YgYSl0aHJvdyBuZXcgVHlw ZUVycm9yKCJrZWVwT3BlbigpIGV4cGVjdHMgYSBib29sZWFuIHBhcmFtZXRl ciIpO3JldHVybiBkLmtlZXBPcGVuPWEsbH0sbC5mb2N1c09uU2hvdz1mdW5j dGlvbihhKXtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZC5mb2N1 c09uU2hvdztpZigiYm9vbGVhbiIhPXR5cGVvZiBhKXRocm93IG5ldyBUeXBl RXJyb3IoImZvY3VzT25TaG93KCkgZXhwZWN0cyBhIGJvb2xlYW4gcGFyYW1l dGVyIik7cmV0dXJuIGQuZm9jdXNPblNob3c9YSxsfSxsLmlubGluZT1mdW5j dGlvbihhKXtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZC5pbmxp bmU7aWYoImJvb2xlYW4iIT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9y KCJpbmxpbmUoKSBleHBlY3RzIGEgYm9vbGVhbiBwYXJhbWV0ZXIiKTtyZXR1 cm4gZC5pbmxpbmU9YSxsfSxsLmNsZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIGNh KCksbH0sbC5rZXlCaW5kcz1mdW5jdGlvbihhKXtyZXR1cm4gMD09PWFyZ3Vt ZW50cy5sZW5ndGg/ZC5rZXlCaW5kczooZC5rZXlCaW5kcz1hLGwpfSxsLmdl dE1vbWVudD1mdW5jdGlvbihhKXtyZXR1cm4geShhKX0sbC5kZWJ1Zz1mdW5j dGlvbihhKXtpZigiYm9vbGVhbiIhPXR5cGVvZiBhKXRocm93IG5ldyBUeXBl RXJyb3IoImRlYnVnKCkgZXhwZWN0cyBhIGJvb2xlYW4gcGFyYW1ldGVyIik7 cmV0dXJuIGQuZGVidWc9YSxsfSxsLmFsbG93SW5wdXRUb2dnbGU9ZnVuY3Rp b24oYSl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQuYWxsb3dJ bnB1dFRvZ2dsZTtpZigiYm9vbGVhbiIhPXR5cGVvZiBhKXRocm93IG5ldyBU eXBlRXJyb3IoImFsbG93SW5wdXRUb2dnbGUoKSBleHBlY3RzIGEgYm9vbGVh biBwYXJhbWV0ZXIiKTtyZXR1cm4gZC5hbGxvd0lucHV0VG9nZ2xlPWEsbH0s bC5zaG93Q2xvc2U9ZnVuY3Rpb24oYSl7aWYoMD09PWFyZ3VtZW50cy5sZW5n dGgpcmV0dXJuIGQuc2hvd0Nsb3NlO2lmKCJib29sZWFuIiE9dHlwZW9mIGEp dGhyb3cgbmV3IFR5cGVFcnJvcigic2hvd0Nsb3NlKCkgZXhwZWN0cyBhIGJv b2xlYW4gcGFyYW1ldGVyIik7cmV0dXJuIGQuc2hvd0Nsb3NlPWEsbH0sbC5r ZWVwSW52YWxpZD1mdW5jdGlvbihhKXtpZigwPT09YXJndW1lbnRzLmxlbmd0 aClyZXR1cm4gZC5rZWVwSW52YWxpZDtpZigiYm9vbGVhbiIhPXR5cGVvZiBh KXRocm93IG5ldyBUeXBlRXJyb3IoImtlZXBJbnZhbGlkKCkgZXhwZWN0cyBh IGJvb2xlYW4gcGFyYW1ldGVyIik7cmV0dXJuIGQua2VlcEludmFsaWQ9YSxs fSxsLmRhdGVwaWNrZXJJbnB1dD1mdW5jdGlvbihhKXtpZigwPT09YXJndW1l bnRzLmxlbmd0aClyZXR1cm4gZC5kYXRlcGlja2VySW5wdXQ7aWYoInN0cmlu ZyIhPXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoImRhdGVwaWNrZXJJ bnB1dCgpIGV4cGVjdHMgYSBzdHJpbmcgcGFyYW1ldGVyIik7cmV0dXJuIGQu ZGF0ZXBpY2tlcklucHV0PWEsbH0sbC5wYXJzZUlucHV0RGF0ZT1mdW5jdGlv bihhKXtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZC5wYXJzZUlu cHV0RGF0ZTtpZigiZnVuY3Rpb24iIT10eXBlb2YgYSl0aHJvdyBuZXcgVHlw ZUVycm9yKCJwYXJzZUlucHV0RGF0ZSgpIHNob2x1ZCBiZSBhcyBmdW5jdGlv biIpO3JldHVybiBkLnBhcnNlSW5wdXREYXRlPWEsbH0sbC5kaXNhYmxlZFRp bWVJbnRlcnZhbHM9ZnVuY3Rpb24oYil7CisvLy88c2lnbmF0dXJlIGhlbHBL ZXl3b3JkPSIkLmZuLmRhdGV0aW1lcGlja2VyLmRpc2FibGVkVGltZUludGVy dmFscyI+CisvLy88c3VtbWFyeT5SZXR1cm5zIGFuIGFycmF5IHdpdGggdGhl IGN1cnJlbnRseSBzZXQgZGlzYWJsZWQgZGF0ZXMgb24gdGhlIGNvbXBvbmVu dC48L3N1bW1hcnk+CisvLy88cmV0dXJucyB0eXBlPSJhcnJheSI+b3B0aW9u cy5kaXNhYmxlZFRpbWVJbnRlcnZhbHM8L3JldHVybnM+CisvLy88L3NpZ25h dHVyZT4KKy8vLzxzaWduYXR1cmU+CisvLy88c3VtbWFyeT5TZXR0aW5nIHRo aXMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG9wdGlvbnMubWluRGF0ZSwgb3B0 aW9ucy5tYXhEYXRlIGNvbmZpZ3VyYXRpb24uIEFsc28gY2FsbGluZyB0aGlz IGZ1bmN0aW9uIHJlbW92ZXMgdGhlIGNvbmZpZ3VyYXRpb24gb2YKKy8vL29w dGlvbnMuZW5hYmxlZERhdGVzIGlmIHN1Y2ggZXhpc3QuPC9zdW1tYXJ5Pgor Ly8vPHBhcmFtIG5hbWU9ImRhdGVzIiBsb2NpZD0iJC5mbi5kYXRldGltZXBp Y2tlci5kaXNhYmxlZFRpbWVJbnRlcnZhbHNfcDpkYXRlcyI+VGFrZXMgYW4g WyBzdHJpbmcgb3IgRGF0ZSBvciBtb21lbnQgXSBvZiB2YWx1ZXMgYW5kIGFs bG93cyB0aGUgdXNlciB0byBzZWxlY3Qgb25seSBmcm9tIHRob3NlIGRheXMu PC9wYXJhbT4KKy8vLzwvc2lnbmF0dXJlPgoraWYoMD09PWFyZ3VtZW50cy5s ZW5ndGgpcmV0dXJuIGQuZGlzYWJsZWRUaW1lSW50ZXJ2YWxzP2EuZXh0ZW5k KHt9LGQuZGlzYWJsZWRUaW1lSW50ZXJ2YWxzKTpkLmRpc2FibGVkVGltZUlu dGVydmFscztpZighYilyZXR1cm4gZC5kaXNhYmxlZFRpbWVJbnRlcnZhbHM9 ITEsXygpLGw7aWYoIShiIGluc3RhbmNlb2YgQXJyYXkpKXRocm93IG5ldyBU eXBlRXJyb3IoImRpc2FibGVkVGltZUludGVydmFscygpIGV4cGVjdHMgYW4g YXJyYXkgcGFyYW1ldGVyIik7cmV0dXJuIGQuZGlzYWJsZWRUaW1lSW50ZXJ2 YWxzPWIsXygpLGx9LGwuZGlzYWJsZWRIb3Vycz1mdW5jdGlvbihiKXsKKy8v LzxzaWduYXR1cmUgaGVscEtleXdvcmQ9IiQuZm4uZGF0ZXRpbWVwaWNrZXIu ZGlzYWJsZWRIb3VycyI+CisvLy88c3VtbWFyeT5SZXR1cm5zIGFuIGFycmF5 IHdpdGggdGhlIGN1cnJlbnRseSBzZXQgZGlzYWJsZWQgaG91cnMgb24gdGhl IGNvbXBvbmVudC48L3N1bW1hcnk+CisvLy88cmV0dXJucyB0eXBlPSJhcnJh eSI+b3B0aW9ucy5kaXNhYmxlZEhvdXJzPC9yZXR1cm5zPgorLy8vPC9zaWdu YXR1cmU+CisvLy88c2lnbmF0dXJlPgorLy8vPHN1bW1hcnk+U2V0dGluZyB0 aGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBvcHRpb25zLm1pbkRhdGUsIG9w dGlvbnMubWF4RGF0ZSBjb25maWd1cmF0aW9uLiBBbHNvIGNhbGxpbmcgdGhp cyBmdW5jdGlvbiByZW1vdmVzIHRoZSBjb25maWd1cmF0aW9uIG9mCisvLy9v cHRpb25zLmVuYWJsZWRIb3VycyBpZiBzdWNoIGV4aXN0Ljwvc3VtbWFyeT4K Ky8vLzxwYXJhbSBuYW1lPSJob3VycyIgbG9jaWQ9IiQuZm4uZGF0ZXRpbWVw aWNrZXIuZGlzYWJsZWRIb3Vyc19wOmhvdXJzIj5UYWtlcyBhbiBbIGludCBd IG9mIHZhbHVlcyBhbmQgZGlzYWxsb3dzIHRoZSB1c2VyIHRvIHNlbGVjdCBv bmx5IGZyb20gdGhvc2UgaG91cnMuPC9wYXJhbT4KKy8vLzwvc2lnbmF0dXJl PgoraWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQuZGlzYWJsZWRI b3Vycz9hLmV4dGVuZCh7fSxkLmRpc2FibGVkSG91cnMpOmQuZGlzYWJsZWRI b3VycztpZighYilyZXR1cm4gZC5kaXNhYmxlZEhvdXJzPSExLF8oKSxsO2lm KCEoYiBpbnN0YW5jZW9mIEFycmF5KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJk aXNhYmxlZEhvdXJzKCkgZXhwZWN0cyBhbiBhcnJheSBwYXJhbWV0ZXIiKTtp ZihkLmRpc2FibGVkSG91cnM9b2EoYiksZC5lbmFibGVkSG91cnM9ITEsZC51 c2VDdXJyZW50JiYhZC5rZWVwSW52YWxpZCl7Zm9yKHZhciBjPTA7IVIoZSwi aCIpOyl7aWYoZS5hZGQoMSwiaCIpLDI0PT09Yyl0aHJvdyJUcmllZCAyNCB0 aW1lcyB0byBmaW5kIGEgdmFsaWQgZGF0ZSI7YysrfWFhKGUpfXJldHVybiBf KCksbH0sbC5lbmFibGVkSG91cnM9ZnVuY3Rpb24oYil7CisvLy88c2lnbmF0 dXJlIGhlbHBLZXl3b3JkPSIkLmZuLmRhdGV0aW1lcGlja2VyLmVuYWJsZWRI b3VycyI+CisvLy88c3VtbWFyeT5SZXR1cm5zIGFuIGFycmF5IHdpdGggdGhl IGN1cnJlbnRseSBzZXQgZW5hYmxlZCBob3VycyBvbiB0aGUgY29tcG9uZW50 Ljwvc3VtbWFyeT4KKy8vLzxyZXR1cm5zIHR5cGU9ImFycmF5Ij5vcHRpb25z LmVuYWJsZWRIb3VyczwvcmV0dXJucz4KKy8vLzwvc2lnbmF0dXJlPgorLy8v PHNpZ25hdHVyZT4KKy8vLzxzdW1tYXJ5PlNldHRpbmcgdGhpcyB0YWtlcyBw cmVjZWRlbmNlIG92ZXIgb3B0aW9ucy5taW5EYXRlLCBvcHRpb25zLm1heERh dGUgY29uZmlndXJhdGlvbi4gQWxzbyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24g cmVtb3ZlcyB0aGUgY29uZmlndXJhdGlvbiBvZiBvcHRpb25zLmRpc2FibGVk SG91cnMgaWYgc3VjaCBleGlzdC48L3N1bW1hcnk+CisvLy88cGFyYW0gbmFt ZT0iaG91cnMiIGxvY2lkPSIkLmZuLmRhdGV0aW1lcGlja2VyLmVuYWJsZWRI b3Vyc19wOmhvdXJzIj5UYWtlcyBhbiBbIGludCBdIG9mIHZhbHVlcyBhbmQg YWxsb3dzIHRoZSB1c2VyIHRvIHNlbGVjdCBvbmx5IGZyb20gdGhvc2UgaG91 cnMuPC9wYXJhbT4KKy8vLzwvc2lnbmF0dXJlPgoraWYoMD09PWFyZ3VtZW50 cy5sZW5ndGgpcmV0dXJuIGQuZW5hYmxlZEhvdXJzP2EuZXh0ZW5kKHt9LGQu ZW5hYmxlZEhvdXJzKTpkLmVuYWJsZWRIb3VycztpZighYilyZXR1cm4gZC5l bmFibGVkSG91cnM9ITEsXygpLGw7aWYoIShiIGluc3RhbmNlb2YgQXJyYXkp KXRocm93IG5ldyBUeXBlRXJyb3IoImVuYWJsZWRIb3VycygpIGV4cGVjdHMg YW4gYXJyYXkgcGFyYW1ldGVyIik7aWYoZC5lbmFibGVkSG91cnM9b2EoYiks ZC5kaXNhYmxlZEhvdXJzPSExLGQudXNlQ3VycmVudCYmIWQua2VlcEludmFs aWQpe2Zvcih2YXIgYz0wOyFSKGUsImgiKTspe2lmKGUuYWRkKDEsImgiKSwy ND09PWMpdGhyb3ciVHJpZWQgMjQgdGltZXMgdG8gZmluZCBhIHZhbGlkIGRh dGUiO2MrK31hYShlKX1yZXR1cm4gXygpLGx9LC8qKgorICAgICAgICAgKiBS ZXR1cm5zIHRoZSBjb21wb25lbnQncyBtb2RlbCBjdXJyZW50IHZpZXdEYXRl LCBhIG1vbWVudCBvYmplY3Qgb3IgbnVsbCBpZiBub3Qgc2V0LiBQYXNzaW5n IGEgbnVsbCB2YWx1ZSB1bnNldHMgdGhlIGNvbXBvbmVudHMgbW9kZWwgY3Vy cmVudCBtb21lbnQuIFBhcnNpbmcgb2YgdGhlIG5ld0RhdGUgcGFyYW1ldGVy IGlzIG1hZGUgdXNpbmcgbW9tZW50IGxpYnJhcnkgd2l0aCB0aGUgb3B0aW9u cy5mb3JtYXQgYW5kIG9wdGlvbnMudXNlU3RyaWN0IGNvbXBvbmVudHMgY29u ZmlndXJhdGlvbi4KKyAgICAgICAgICogQHBhcmFtIHtUYWtlcyBzdHJpbmcs IHZpZXdEYXRlLCBtb21lbnQsIG51bGwgcGFyYW1ldGVyLn0gbmV3RGF0ZQor ICAgICAgICAgKiBAcmV0dXJucyB7dmlld0RhdGUuY2xvbmUoKX0KKyAgICAg ICAgICovCitsLnZpZXdEYXRlPWZ1bmN0aW9uKGEpe2lmKDA9PT1hcmd1bWVu dHMubGVuZ3RoKXJldHVybiBmLmNsb25lKCk7aWYoIWEpcmV0dXJuIGY9ZS5j bG9uZSgpLGw7aWYoISgic3RyaW5nIj09dHlwZW9mIGF8fGIuaXNNb21lbnQo YSl8fGEgaW5zdGFuY2VvZiBEYXRlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ2 aWV3RGF0ZSgpIHBhcmFtZXRlciBtdXN0IGJlIG9uZSBvZiBbc3RyaW5nLCBt b21lbnQgb3IgRGF0ZV0iKTtyZXR1cm4gZj1kYShhKSxLKCksbH0sYy5pcygi aW5wdXQiKSlnPWM7ZWxzZSBpZihnPWMuZmluZChkLmRhdGVwaWNrZXJJbnB1 dCksMD09PWcubGVuZ3RoKWc9Yy5maW5kKCJpbnB1dCIpO2Vsc2UgaWYoIWcu aXMoImlucHV0IikpdGhyb3cgbmV3IEVycm9yKCdDU1MgY2xhc3MgIicrZC5k YXRlcGlja2VySW5wdXQrJyIgY2Fubm90IGJlIGFwcGxpZWQgdG8gbm9uIGlu cHV0IGVsZW1lbnQnKTtpZihjLmhhc0NsYXNzKCJpbnB1dC1ncm91cCIpJiYo CisvLyBpbiBjYXNlIHRoZXJlIGlzIG1vcmUgdGhlbiBvbmUgJ2lucHV0LWdy b3VwLWFkZG9uJyBJc3N1ZSAjNDgKK249MD09PWMuZmluZCgiLmRhdGVwaWNr ZXJidXR0b24iKS5sZW5ndGg/Yy5maW5kKCIuaW5wdXQtZ3JvdXAtYWRkb24i KTpjLmZpbmQoIi5kYXRlcGlja2VyYnV0dG9uIikpLCFkLmlubGluZSYmIWcu aXMoImlucHV0IikpdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgaW5pdGlh bGl6ZSBEYXRlVGltZVBpY2tlciB3aXRob3V0IGFuIGlucHV0IGVsZW1lbnQi KTsKKy8vIFNldCBkZWZhdWx0cyBmb3IgZGF0ZSBoZXJlIG5vdyBpbnN0ZWFk IG9mIGluIHZhciBkZWNsYXJhdGlvbgorcmV0dXJuIGU9eSgpLGY9ZS5jbG9u ZSgpLGEuZXh0ZW5kKCEwLGQsSCgpKSxsLm9wdGlvbnMoZCkscGEoKSxsYSgp LGcucHJvcCgiZGlzYWJsZWQiKSYmbC5kaXNhYmxlKCksZy5pcygiaW5wdXQi KSYmMCE9PWcudmFsKCkudHJpbSgpLmxlbmd0aD9hYShkYShnLnZhbCgpLnRy aW0oKSkpOmQuZGVmYXVsdERhdGUmJnZvaWQgMD09PWcuYXR0cigicGxhY2Vo b2xkZXIiKSYmYWEoZC5kZWZhdWx0RGF0ZSksZC5pbmxpbmUmJmdhKCksbH07 LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoK KyAgICAgKiBqUXVlcnkgcGx1Z2luIGNvbnN0cnVjdG9yIGFuZCBkZWZhdWx0 cyBvYmplY3QKKyAgICAgKgorICAgICAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKy8qKgorICAgICogU2VlIChodHRwOi8vanF1ZXJ5 LmNvbS8pLgorICAgICogQG5hbWUgalF1ZXJ5CisgICAgKiBAY2xhc3MKKyAg ICAqIFNlZSB0aGUgalF1ZXJ5IExpYnJhcnkgIChodHRwOi8vanF1ZXJ5LmNv bS8pIGZvciBmdWxsIGRldGFpbHMuICBUaGlzIGp1c3QKKyAgICAqIGRvY3Vt ZW50cyB0aGUgZnVuY3Rpb24gYW5kIGNsYXNzZXMgdGhhdCBhcmUgYWRkZWQg dG8galF1ZXJ5IGJ5IHRoaXMgcGx1Zy1pbi4KKyAgICAqLworLyoqCisgICAg ICogU2VlIChodHRwOi8vanF1ZXJ5LmNvbS8pCisgICAgICogQG5hbWUgZm4K KyAgICAgKiBAY2xhc3MKKyAgICAgKiBTZWUgdGhlIGpRdWVyeSBMaWJyYXJ5 ICAoaHR0cDovL2pxdWVyeS5jb20vKSBmb3IgZnVsbCBkZXRhaWxzLiAgVGhp cyBqdXN0CisgICAgICogZG9jdW1lbnRzIHRoZSBmdW5jdGlvbiBhbmQgY2xh c3NlcyB0aGF0IGFyZSBhZGRlZCB0byBqUXVlcnkgYnkgdGhpcyBwbHVnLWlu LgorICAgICAqIEBtZW1iZXJPZiBqUXVlcnkKKyAgICAgKi8KKy8qKgorICAg ICAqIFNob3cgY29tbWVudHMKKyAgICAgKiBAY2xhc3MgZGF0ZXRpbWVwaWNr ZXIKKyAgICAgKiBAbWVtYmVyT2YgalF1ZXJ5LmZuCisgICAgICovCithLmZu LmRhdGV0aW1lcGlja2VyPWZ1bmN0aW9uKGIpe2I9Ynx8e307dmFyIGQsZT1B cnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSksZj0hMCxn PVsiZGVzdHJveSIsImhpZGUiLCJzaG93IiwidG9nZ2xlIl07aWYoIm9iamVj dCI9PXR5cGVvZiBiKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIg ZD1hKHRoaXMpO2QuZGF0YSgiRGF0ZVRpbWVQaWNrZXIiKXx8KAorLy8gY3Jl YXRlIGEgcHJpdmF0ZSBjb3B5IG9mIHRoZSBkZWZhdWx0cyBvYmplY3QKK2I9 YS5leHRlbmQoITAse30sYS5mbi5kYXRldGltZXBpY2tlci5kZWZhdWx0cyxi KSxkLmRhdGEoIkRhdGVUaW1lUGlja2VyIixjKGQsYikpKX0pO2lmKCJzdHJp bmciPT10eXBlb2YgYilyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFy IGM9YSh0aGlzKSxnPWMuZGF0YSgiRGF0ZVRpbWVQaWNrZXIiKTtpZighZyl0 aHJvdyBuZXcgRXJyb3IoJ2Jvb3RzdHJhcC1kYXRldGltZXBpY2tlcigiJyti KyciKSBtZXRob2Qgd2FzIGNhbGxlZCBvbiBhbiBlbGVtZW50IHRoYXQgaXMg bm90IHVzaW5nIERhdGVUaW1lUGlja2VyJyk7ZD1nW2JdLmFwcGx5KGcsZSks Zj1kPT09Z30pLGZ8fGEuaW5BcnJheShiLGcpPi0xP3RoaXM6ZDt0aHJvdyBu ZXcgVHlwZUVycm9yKCJJbnZhbGlkIGFyZ3VtZW50cyBmb3IgRGF0ZVRpbWVQ aWNrZXI6ICIrYil9LGEuZm4uZGF0ZXRpbWVwaWNrZXIuZGVmYXVsdHM9e3Rp bWVab25lOiIiLGZvcm1hdDohMSxkYXlWaWV3SGVhZGVyRm9ybWF0OiJNTU1N IFlZWVkiLGV4dHJhRm9ybWF0czohMSxzdGVwcGluZzoxLG1pbkRhdGU6ITEs bWF4RGF0ZTohMSx1c2VDdXJyZW50OiEwLGNvbGxhcHNlOiEwLGxvY2FsZTpi LmxvY2FsZSgpLGRlZmF1bHREYXRlOiExLGRpc2FibGVkRGF0ZXM6ITEsZW5h YmxlZERhdGVzOiExLGljb25zOnt0aW1lOiJnbHlwaGljb24gZ2x5cGhpY29u LXRpbWUiLGRhdGU6ImdseXBoaWNvbiBnbHlwaGljb24tY2FsZW5kYXIiLHVw OiJnbHlwaGljb24gZ2x5cGhpY29uLWNoZXZyb24tdXAiLGRvd246ImdseXBo aWNvbiBnbHlwaGljb24tY2hldnJvbi1kb3duIixwcmV2aW91czoiZ2x5cGhp Y29uIGdseXBoaWNvbi1jaGV2cm9uLWxlZnQiLG5leHQ6ImdseXBoaWNvbiBn bHlwaGljb24tY2hldnJvbi1yaWdodCIsdG9kYXk6ImdseXBoaWNvbiBnbHlw aGljb24tc2NyZWVuc2hvdCIsY2xlYXI6ImdseXBoaWNvbiBnbHlwaGljb24t dHJhc2giLGNsb3NlOiJnbHlwaGljb24gZ2x5cGhpY29uLXJlbW92ZSJ9LHRv b2x0aXBzOnt0b2RheToiR28gdG8gdG9kYXkiLGNsZWFyOiJDbGVhciBzZWxl Y3Rpb24iLGNsb3NlOiJDbG9zZSB0aGUgcGlja2VyIixzZWxlY3RNb250aDoi U2VsZWN0IE1vbnRoIixwcmV2TW9udGg6IlByZXZpb3VzIE1vbnRoIixuZXh0 TW9udGg6Ik5leHQgTW9udGgiLHNlbGVjdFllYXI6IlNlbGVjdCBZZWFyIixw cmV2WWVhcjoiUHJldmlvdXMgWWVhciIsbmV4dFllYXI6Ik5leHQgWWVhciIs c2VsZWN0RGVjYWRlOiJTZWxlY3QgRGVjYWRlIixwcmV2RGVjYWRlOiJQcmV2 aW91cyBEZWNhZGUiLG5leHREZWNhZGU6Ik5leHQgRGVjYWRlIixwcmV2Q2Vu dHVyeToiUHJldmlvdXMgQ2VudHVyeSIsbmV4dENlbnR1cnk6Ik5leHQgQ2Vu dHVyeSIscGlja0hvdXI6IlBpY2sgSG91ciIsaW5jcmVtZW50SG91cjoiSW5j cmVtZW50IEhvdXIiLGRlY3JlbWVudEhvdXI6IkRlY3JlbWVudCBIb3VyIixw aWNrTWludXRlOiJQaWNrIE1pbnV0ZSIsaW5jcmVtZW50TWludXRlOiJJbmNy ZW1lbnQgTWludXRlIixkZWNyZW1lbnRNaW51dGU6IkRlY3JlbWVudCBNaW51 dGUiLHBpY2tTZWNvbmQ6IlBpY2sgU2Vjb25kIixpbmNyZW1lbnRTZWNvbmQ6 IkluY3JlbWVudCBTZWNvbmQiLGRlY3JlbWVudFNlY29uZDoiRGVjcmVtZW50 IFNlY29uZCIsdG9nZ2xlUGVyaW9kOiJUb2dnbGUgUGVyaW9kIixzZWxlY3RU aW1lOiJTZWxlY3QgVGltZSJ9LHVzZVN0cmljdDohMSxzaWRlQnlTaWRlOiEx LGRheXNPZldlZWtEaXNhYmxlZDohMSxjYWxlbmRhcldlZWtzOiExLHZpZXdN b2RlOiJkYXlzIix0b29sYmFyUGxhY2VtZW50OiJkZWZhdWx0IixzaG93VG9k YXlCdXR0b246ITEsc2hvd0NsZWFyOiExLHNob3dDbG9zZTohMSx3aWRnZXRQ b3NpdGlvbmluZzp7aG9yaXpvbnRhbDoiYXV0byIsdmVydGljYWw6ImF1dG8i fSx3aWRnZXRQYXJlbnQ6bnVsbCxpZ25vcmVSZWFkb25seTohMSxrZWVwT3Bl bjohMSxmb2N1c09uU2hvdzohMCxpbmxpbmU6ITEsa2VlcEludmFsaWQ6ITEs ZGF0ZXBpY2tlcklucHV0OiIuZGF0ZXBpY2tlcmlucHV0IixrZXlCaW5kczp7 dXA6ZnVuY3Rpb24oYSl7aWYoYSl7dmFyIGI9dGhpcy5kYXRlKCl8fHRoaXMu Z2V0TW9tZW50KCk7YS5maW5kKCIuZGF0ZXBpY2tlciIpLmlzKCI6dmlzaWJs ZSIpP3RoaXMuZGF0ZShiLmNsb25lKCkuc3VidHJhY3QoNywiZCIpKTp0aGlz LmRhdGUoYi5jbG9uZSgpLmFkZCh0aGlzLnN0ZXBwaW5nKCksIm0iKSl9fSxk b3duOmZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiB2b2lkIHRoaXMuc2hvdygp O3ZhciBiPXRoaXMuZGF0ZSgpfHx0aGlzLmdldE1vbWVudCgpO2EuZmluZCgi LmRhdGVwaWNrZXIiKS5pcygiOnZpc2libGUiKT90aGlzLmRhdGUoYi5jbG9u ZSgpLmFkZCg3LCJkIikpOnRoaXMuZGF0ZShiLmNsb25lKCkuc3VidHJhY3Qo dGhpcy5zdGVwcGluZygpLCJtIikpfSwiY29udHJvbCB1cCI6ZnVuY3Rpb24o YSl7aWYoYSl7dmFyIGI9dGhpcy5kYXRlKCl8fHRoaXMuZ2V0TW9tZW50KCk7 YS5maW5kKCIuZGF0ZXBpY2tlciIpLmlzKCI6dmlzaWJsZSIpP3RoaXMuZGF0 ZShiLmNsb25lKCkuc3VidHJhY3QoMSwieSIpKTp0aGlzLmRhdGUoYi5jbG9u ZSgpLmFkZCgxLCJoIikpfX0sImNvbnRyb2wgZG93biI6ZnVuY3Rpb24oYSl7 aWYoYSl7dmFyIGI9dGhpcy5kYXRlKCl8fHRoaXMuZ2V0TW9tZW50KCk7YS5m aW5kKCIuZGF0ZXBpY2tlciIpLmlzKCI6dmlzaWJsZSIpP3RoaXMuZGF0ZShi LmNsb25lKCkuYWRkKDEsInkiKSk6dGhpcy5kYXRlKGIuY2xvbmUoKS5zdWJ0 cmFjdCgxLCJoIikpfX0sbGVmdDpmdW5jdGlvbihhKXtpZihhKXt2YXIgYj10 aGlzLmRhdGUoKXx8dGhpcy5nZXRNb21lbnQoKTthLmZpbmQoIi5kYXRlcGlj a2VyIikuaXMoIjp2aXNpYmxlIikmJnRoaXMuZGF0ZShiLmNsb25lKCkuc3Vi dHJhY3QoMSwiZCIpKX19LHJpZ2h0OmZ1bmN0aW9uKGEpe2lmKGEpe3ZhciBi PXRoaXMuZGF0ZSgpfHx0aGlzLmdldE1vbWVudCgpO2EuZmluZCgiLmRhdGVw aWNrZXIiKS5pcygiOnZpc2libGUiKSYmdGhpcy5kYXRlKGIuY2xvbmUoKS5h ZGQoMSwiZCIpKX19LHBhZ2VVcDpmdW5jdGlvbihhKXtpZihhKXt2YXIgYj10 aGlzLmRhdGUoKXx8dGhpcy5nZXRNb21lbnQoKTthLmZpbmQoIi5kYXRlcGlj a2VyIikuaXMoIjp2aXNpYmxlIikmJnRoaXMuZGF0ZShiLmNsb25lKCkuc3Vi dHJhY3QoMSwiTSIpKX19LHBhZ2VEb3duOmZ1bmN0aW9uKGEpe2lmKGEpe3Zh ciBiPXRoaXMuZGF0ZSgpfHx0aGlzLmdldE1vbWVudCgpO2EuZmluZCgiLmRh dGVwaWNrZXIiKS5pcygiOnZpc2libGUiKSYmdGhpcy5kYXRlKGIuY2xvbmUo KS5hZGQoMSwiTSIpKX19LGVudGVyOmZ1bmN0aW9uKCl7dGhpcy5oaWRlKCl9 LGVzY2FwZTpmdW5jdGlvbigpe3RoaXMuaGlkZSgpfSwKKy8vdGFiOiBmdW5j dGlvbiAod2lkZ2V0KSB7IC8vdGhpcyBicmVhayB0aGUgZmxvdyBvZiB0aGUg Zm9ybS4gZGlzYWJsaW5nIGZvciBub3cKKy8vICAgIHZhciB0b2dnbGUgPSB3 aWRnZXQuZmluZCgnLnBpY2tlci1zd2l0Y2ggYVtkYXRhLWFjdGlvbj0idG9n Z2xlUGlja2VyIl0nKTsKKy8vICAgIGlmKHRvZ2dsZS5sZW5ndGggPiAwKSB0 b2dnbGUuY2xpY2soKTsKKy8vfSwKKyJjb250cm9sIHNwYWNlIjpmdW5jdGlv bihhKXthJiZhLmZpbmQoIi50aW1lcGlja2VyIikuaXMoIjp2aXNpYmxlIikm JmEuZmluZCgnLmJ0bltkYXRhLWFjdGlvbj0idG9nZ2xlUGVyaW9kIl0nKS5j bGljaygpfSx0OmZ1bmN0aW9uKCl7dGhpcy5kYXRlKHRoaXMuZ2V0TW9tZW50 KCkpfSxkZWxldGU6ZnVuY3Rpb24oKXt0aGlzLmNsZWFyKCl9fSxkZWJ1Zzoh MSxhbGxvd0lucHV0VG9nZ2xlOiExLGRpc2FibGVkVGltZUludGVydmFsczoh MSxkaXNhYmxlZEhvdXJzOiExLGVuYWJsZWRIb3VyczohMSx2aWV3RGF0ZToh MX0sInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUmJihtb2R1bGUuZXhwb3J0 cz1hLmZuLmRhdGV0aW1lcGlja2VyKX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9t b21lbnQtd2l0aC1sb2NhbGVzLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pz L21vbWVudC13aXRoLWxvY2FsZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uZTZhZmFjYwotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy9tb21lbnQtd2l0aC1sb2NhbGVzLmpzCkBA IC0wLDAgKzEsMTIyNTEgQEAKKy8vISBtb21lbnQuanMKKy8vISB2ZXJzaW9u IDogMi4xNS4wCisvLyEgYXV0aG9ycyA6IFRpbSBXb29kLCBJc2tyZW4gQ2hl cm5ldiwgTW9tZW50LmpzIGNvbnRyaWJ1dG9ycworLy8hIGxpY2Vuc2UgOiBN SVQKKy8vISBtb21lbnRqcy5jb20KKworOyhmdW5jdGlvbiAoZ2xvYmFsLCBm YWN0b3J5KSB7CisgICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYm IHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gbW9kdWxlLmV4cG9y dHMgPSBmYWN0b3J5KCkgOgorICAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5j dGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShmYWN0b3J5KSA6CisgICAg Z2xvYmFsLm1vbWVudCA9IGZhY3RvcnkoKQorfSh0aGlzLCBmdW5jdGlvbiAo KSB7ICd1c2Ugc3RyaWN0JzsKKworICAgIHZhciBob29rQ2FsbGJhY2s7CisK KyAgICBmdW5jdGlvbiB1dGlsc19ob29rc19faG9va3MgKCkgeworICAgICAg ICByZXR1cm4gaG9va0NhbGxiYWNrLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7 CisgICAgfQorCisgICAgLy8gVGhpcyBpcyBkb25lIHRvIHJlZ2lzdGVyIHRo ZSBtZXRob2QgY2FsbGVkIHdpdGggbW9tZW50KCkKKyAgICAvLyB3aXRob3V0 IGNyZWF0aW5nIGNpcmN1bGFyIGRlcGVuZGVuY2llcy4KKyAgICBmdW5jdGlv biBzZXRIb29rQ2FsbGJhY2sgKGNhbGxiYWNrKSB7CisgICAgICAgIGhvb2tD YWxsYmFjayA9IGNhbGxiYWNrOworICAgIH0KKworICAgIGZ1bmN0aW9uIGlz QXJyYXkoaW5wdXQpIHsKKyAgICAgICAgcmV0dXJuIGlucHV0IGluc3RhbmNl b2YgQXJyYXkgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlu cHV0KSA9PT0gJ1tvYmplY3QgQXJyYXldJzsKKyAgICB9CisKKyAgICBmdW5j dGlvbiBpc09iamVjdChpbnB1dCkgeworICAgICAgICAvLyBJRTggd2lsbCB0 cmVhdCB1bmRlZmluZWQgYW5kIG51bGwgYXMgb2JqZWN0IGlmIGl0IHdhc24n dCBmb3IKKyAgICAgICAgLy8gaW5wdXQgIT0gbnVsbAorICAgICAgICByZXR1 cm4gaW5wdXQgIT0gbnVsbCAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5n LmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBPYmplY3RdJzsKKyAgICB9CisK KyAgICBmdW5jdGlvbiBpc09iamVjdEVtcHR5KG9iaikgeworICAgICAgICB2 YXIgazsKKyAgICAgICAgZm9yIChrIGluIG9iaikgeworICAgICAgICAgICAg Ly8gZXZlbiBpZiBpdHMgbm90IG93biBwcm9wZXJ0eSBJJ2Qgc3RpbGwgY2Fs bCBpdCBub24tZW1wdHkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBm dW5jdGlvbiBpc0RhdGUoaW5wdXQpIHsKKyAgICAgICAgcmV0dXJuIGlucHV0 IGluc3RhbmNlb2YgRGF0ZSB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5n LmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBEYXRlXSc7CisgICAgfQorCisg ICAgZnVuY3Rpb24gbWFwKGFyciwgZm4pIHsKKyAgICAgICAgdmFyIHJlcyA9 IFtdLCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsg KytpKSB7CisgICAgICAgICAgICByZXMucHVzaChmbihhcnJbaV0sIGkpKTsK KyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKworICAg IGZ1bmN0aW9uIGhhc093blByb3AoYSwgYikgeworICAgICAgICByZXR1cm4g T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsIGIpOwor ICAgIH0KKworICAgIGZ1bmN0aW9uIGV4dGVuZChhLCBiKSB7CisgICAgICAg IGZvciAodmFyIGkgaW4gYikgeworICAgICAgICAgICAgaWYgKGhhc093blBy b3AoYiwgaSkpIHsKKyAgICAgICAgICAgICAgICBhW2ldID0gYltpXTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChoYXNPd25Q cm9wKGIsICd0b1N0cmluZycpKSB7CisgICAgICAgICAgICBhLnRvU3RyaW5n ID0gYi50b1N0cmluZzsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChoYXNP d25Qcm9wKGIsICd2YWx1ZU9mJykpIHsKKyAgICAgICAgICAgIGEudmFsdWVP ZiA9IGIudmFsdWVPZjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBh OworICAgIH0KKworICAgIGZ1bmN0aW9uIGNyZWF0ZV91dGNfX2NyZWF0ZVVU QyAoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QpIHsKKyAgICAgICAg cmV0dXJuIGNyZWF0ZUxvY2FsT3JVVEMoaW5wdXQsIGZvcm1hdCwgbG9jYWxl LCBzdHJpY3QsIHRydWUpLnV0YygpOworICAgIH0KKworICAgIGZ1bmN0aW9u IGRlZmF1bHRQYXJzaW5nRmxhZ3MoKSB7CisgICAgICAgIC8vIFdlIG5lZWQg dG8gZGVlcCBjbG9uZSB0aGlzIG9iamVjdC4KKyAgICAgICAgcmV0dXJuIHsK KyAgICAgICAgICAgIGVtcHR5ICAgICAgICAgICA6IGZhbHNlLAorICAgICAg ICAgICAgdW51c2VkVG9rZW5zICAgIDogW10sCisgICAgICAgICAgICB1bnVz ZWRJbnB1dCAgICAgOiBbXSwKKyAgICAgICAgICAgIG92ZXJmbG93ICAgICAg ICA6IC0yLAorICAgICAgICAgICAgY2hhcnNMZWZ0T3ZlciAgIDogMCwKKyAg ICAgICAgICAgIG51bGxJbnB1dCAgICAgICA6IGZhbHNlLAorICAgICAgICAg ICAgaW52YWxpZE1vbnRoICAgIDogbnVsbCwKKyAgICAgICAgICAgIGludmFs aWRGb3JtYXQgICA6IGZhbHNlLAorICAgICAgICAgICAgdXNlckludmFsaWRh dGVkIDogZmFsc2UsCisgICAgICAgICAgICBpc28gICAgICAgICAgICAgOiBm YWxzZSwKKyAgICAgICAgICAgIHBhcnNlZERhdGVQYXJ0cyA6IFtdLAorICAg ICAgICAgICAgbWVyaWRpZW0gICAgICAgIDogbnVsbAorICAgICAgICB9Owor ICAgIH0KKworICAgIGZ1bmN0aW9uIGdldFBhcnNpbmdGbGFncyhtKSB7Cisg ICAgICAgIGlmIChtLl9wZiA9PSBudWxsKSB7CisgICAgICAgICAgICBtLl9w ZiA9IGRlZmF1bHRQYXJzaW5nRmxhZ3MoKTsKKyAgICAgICAgfQorICAgICAg ICByZXR1cm4gbS5fcGY7CisgICAgfQorCisgICAgdmFyIHNvbWU7CisgICAg aWYgKEFycmF5LnByb3RvdHlwZS5zb21lKSB7CisgICAgICAgIHNvbWUgPSBB cnJheS5wcm90b3R5cGUuc29tZTsKKyAgICB9IGVsc2UgeworICAgICAgICBz b21lID0gZnVuY3Rpb24gKGZ1bikgeworICAgICAgICAgICAgdmFyIHQgPSBP YmplY3QodGhpcyk7CisgICAgICAgICAgICB2YXIgbGVuID0gdC5sZW5ndGgg Pj4+IDA7CisKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVu OyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoaSBpbiB0ICYmIGZ1bi5j YWxsKHRoaXMsIHRbaV0sIGksIHQpKSB7CisgICAgICAgICAgICAgICAgICAg IHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IH0KKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Owor ICAgIH0KKworICAgIGZ1bmN0aW9uIHZhbGlkX19pc1ZhbGlkKG0pIHsKKyAg ICAgICAgaWYgKG0uX2lzVmFsaWQgPT0gbnVsbCkgeworICAgICAgICAgICAg dmFyIGZsYWdzID0gZ2V0UGFyc2luZ0ZsYWdzKG0pOworICAgICAgICAgICAg dmFyIHBhcnNlZFBhcnRzID0gc29tZS5jYWxsKGZsYWdzLnBhcnNlZERhdGVQ YXJ0cywgZnVuY3Rpb24gKGkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g aSAhPSBudWxsOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB2YXIg aXNOb3dWYWxpZCA9ICFpc05hTihtLl9kLmdldFRpbWUoKSkgJiYKKyAgICAg ICAgICAgICAgICBmbGFncy5vdmVyZmxvdyA8IDAgJiYKKyAgICAgICAgICAg ICAgICAhZmxhZ3MuZW1wdHkgJiYKKyAgICAgICAgICAgICAgICAhZmxhZ3Mu aW52YWxpZE1vbnRoICYmCisgICAgICAgICAgICAgICAgIWZsYWdzLmludmFs aWRXZWVrZGF5ICYmCisgICAgICAgICAgICAgICAgIWZsYWdzLm51bGxJbnB1 dCAmJgorICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkRm9ybWF0ICYm CisgICAgICAgICAgICAgICAgIWZsYWdzLnVzZXJJbnZhbGlkYXRlZCAmJgor ICAgICAgICAgICAgICAgICghZmxhZ3MubWVyaWRpZW0gfHwgKGZsYWdzLm1l cmlkaWVtICYmIHBhcnNlZFBhcnRzKSk7CisKKyAgICAgICAgICAgIGlmICht Ll9zdHJpY3QpIHsKKyAgICAgICAgICAgICAgICBpc05vd1ZhbGlkID0gaXNO b3dWYWxpZCAmJgorICAgICAgICAgICAgICAgICAgICBmbGFncy5jaGFyc0xl ZnRPdmVyID09PSAwICYmCisgICAgICAgICAgICAgICAgICAgIGZsYWdzLnVu dXNlZFRva2Vucy5sZW5ndGggPT09IDAgJiYKKyAgICAgICAgICAgICAgICAg ICAgZmxhZ3MuYmlnSG91ciA9PT0gdW5kZWZpbmVkOworICAgICAgICAgICAg fQorCisgICAgICAgICAgICBpZiAoT2JqZWN0LmlzRnJvemVuID09IG51bGwg fHwgIU9iamVjdC5pc0Zyb3plbihtKSkgeworICAgICAgICAgICAgICAgIG0u X2lzVmFsaWQgPSBpc05vd1ZhbGlkOworICAgICAgICAgICAgfQorICAgICAg ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlzTm93VmFs aWQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu IG0uX2lzVmFsaWQ7CisgICAgfQorCisgICAgZnVuY3Rpb24gdmFsaWRfX2Ny ZWF0ZUludmFsaWQgKGZsYWdzKSB7CisgICAgICAgIHZhciBtID0gY3JlYXRl X3V0Y19fY3JlYXRlVVRDKE5hTik7CisgICAgICAgIGlmIChmbGFncyAhPSBu dWxsKSB7CisgICAgICAgICAgICBleHRlbmQoZ2V0UGFyc2luZ0ZsYWdzKG0p LCBmbGFncyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAg ICAgICBnZXRQYXJzaW5nRmxhZ3MobSkudXNlckludmFsaWRhdGVkID0gdHJ1 ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBtOworICAgIH0KKwor ICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKGlucHV0KSB7CisgICAgICAgIHJl dHVybiBpbnB1dCA9PT0gdm9pZCAwOworICAgIH0KKworICAgIC8vIFBsdWdp bnMgdGhhdCBhZGQgcHJvcGVydGllcyBzaG91bGQgYWxzbyBhZGQgdGhlIGtl eSBoZXJlIChudWxsIHZhbHVlKSwKKyAgICAvLyBzbyB3ZSBjYW4gcHJvcGVy bHkgY2xvbmUgb3Vyc2VsdmVzLgorICAgIHZhciBtb21lbnRQcm9wZXJ0aWVz ID0gdXRpbHNfaG9va3NfX2hvb2tzLm1vbWVudFByb3BlcnRpZXMgPSBbXTsK KworICAgIGZ1bmN0aW9uIGNvcHlDb25maWcodG8sIGZyb20pIHsKKyAgICAg ICAgdmFyIGksIHByb3AsIHZhbDsKKworICAgICAgICBpZiAoIWlzVW5kZWZp bmVkKGZyb20uX2lzQU1vbWVudE9iamVjdCkpIHsKKyAgICAgICAgICAgIHRv Ll9pc0FNb21lbnRPYmplY3QgPSBmcm9tLl9pc0FNb21lbnRPYmplY3Q7Cisg ICAgICAgIH0KKyAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9pKSkg eworICAgICAgICAgICAgdG8uX2kgPSBmcm9tLl9pOworICAgICAgICB9Cisg ICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fZikpIHsKKyAgICAgICAg ICAgIHRvLl9mID0gZnJvbS5fZjsKKyAgICAgICAgfQorICAgICAgICBpZiAo IWlzVW5kZWZpbmVkKGZyb20uX2wpKSB7CisgICAgICAgICAgICB0by5fbCA9 IGZyb20uX2w7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFpc1VuZGVmaW5l ZChmcm9tLl9zdHJpY3QpKSB7CisgICAgICAgICAgICB0by5fc3RyaWN0ID0g ZnJvbS5fc3RyaWN0OworICAgICAgICB9CisgICAgICAgIGlmICghaXNVbmRl ZmluZWQoZnJvbS5fdHptKSkgeworICAgICAgICAgICAgdG8uX3R6bSA9IGZy b20uX3R6bTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWlzVW5kZWZpbmVk KGZyb20uX2lzVVRDKSkgeworICAgICAgICAgICAgdG8uX2lzVVRDID0gZnJv bS5faXNVVEM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFpc1VuZGVmaW5l ZChmcm9tLl9vZmZzZXQpKSB7CisgICAgICAgICAgICB0by5fb2Zmc2V0ID0g ZnJvbS5fb2Zmc2V0OworICAgICAgICB9CisgICAgICAgIGlmICghaXNVbmRl ZmluZWQoZnJvbS5fcGYpKSB7CisgICAgICAgICAgICB0by5fcGYgPSBnZXRQ YXJzaW5nRmxhZ3MoZnJvbSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFp c1VuZGVmaW5lZChmcm9tLl9sb2NhbGUpKSB7CisgICAgICAgICAgICB0by5f bG9jYWxlID0gZnJvbS5fbG9jYWxlOworICAgICAgICB9CisKKyAgICAgICAg aWYgKG1vbWVudFByb3BlcnRpZXMubGVuZ3RoID4gMCkgeworICAgICAgICAg ICAgZm9yIChpIGluIG1vbWVudFByb3BlcnRpZXMpIHsKKyAgICAgICAgICAg ICAgICBwcm9wID0gbW9tZW50UHJvcGVydGllc1tpXTsKKyAgICAgICAgICAg ICAgICB2YWwgPSBmcm9tW3Byb3BdOworICAgICAgICAgICAgICAgIGlmICgh aXNVbmRlZmluZWQodmFsKSkgeworICAgICAgICAgICAgICAgICAgICB0b1tw cm9wXSA9IHZhbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9 CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdG87CisgICAgfQorCisg ICAgdmFyIHVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTsKKworICAgIC8vIE1v bWVudCBwcm90b3R5cGUgb2JqZWN0CisgICAgZnVuY3Rpb24gTW9tZW50KGNv bmZpZykgeworICAgICAgICBjb3B5Q29uZmlnKHRoaXMsIGNvbmZpZyk7Cisg ICAgICAgIHRoaXMuX2QgPSBuZXcgRGF0ZShjb25maWcuX2QgIT0gbnVsbCA/ IGNvbmZpZy5fZC5nZXRUaW1lKCkgOiBOYU4pOworICAgICAgICAvLyBQcmV2 ZW50IGluZmluaXRlIGxvb3AgaW4gY2FzZSB1cGRhdGVPZmZzZXQgY3JlYXRl cyBuZXcgbW9tZW50CisgICAgICAgIC8vIG9iamVjdHMuCisgICAgICAgIGlm ICh1cGRhdGVJblByb2dyZXNzID09PSBmYWxzZSkgeworICAgICAgICAgICAg dXBkYXRlSW5Qcm9ncmVzcyA9IHRydWU7CisgICAgICAgICAgICB1dGlsc19o b29rc19faG9va3MudXBkYXRlT2Zmc2V0KHRoaXMpOworICAgICAgICAgICAg dXBkYXRlSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgICAgICB9CisgICAgfQor CisgICAgZnVuY3Rpb24gaXNNb21lbnQgKG9iaikgeworICAgICAgICByZXR1 cm4gb2JqIGluc3RhbmNlb2YgTW9tZW50IHx8IChvYmogIT0gbnVsbCAmJiBv YmouX2lzQU1vbWVudE9iamVjdCAhPSBudWxsKTsKKyAgICB9CisKKyAgICBm dW5jdGlvbiBhYnNGbG9vciAobnVtYmVyKSB7CisgICAgICAgIGlmIChudW1i ZXIgPCAwKSB7CisgICAgICAgICAgICAvLyAtMCAtPiAwCisgICAgICAgICAg ICByZXR1cm4gTWF0aC5jZWlsKG51bWJlcikgfHwgMDsKKyAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKG51bWJlcik7 CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiB0b0ludChhcmd1 bWVudEZvckNvZXJjaW9uKSB7CisgICAgICAgIHZhciBjb2VyY2VkTnVtYmVy ID0gK2FyZ3VtZW50Rm9yQ29lcmNpb24sCisgICAgICAgICAgICB2YWx1ZSA9 IDA7CisKKyAgICAgICAgaWYgKGNvZXJjZWROdW1iZXIgIT09IDAgJiYgaXNG aW5pdGUoY29lcmNlZE51bWJlcikpIHsKKyAgICAgICAgICAgIHZhbHVlID0g YWJzRmxvb3IoY29lcmNlZE51bWJlcik7CisgICAgICAgIH0KKworICAgICAg ICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgLy8gY29tcGFyZSB0d28g YXJyYXlzLCByZXR1cm4gdGhlIG51bWJlciBvZiBkaWZmZXJlbmNlcworICAg IGZ1bmN0aW9uIGNvbXBhcmVBcnJheXMoYXJyYXkxLCBhcnJheTIsIGRvbnRD b252ZXJ0KSB7CisgICAgICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcnJheTEu bGVuZ3RoLCBhcnJheTIubGVuZ3RoKSwKKyAgICAgICAgICAgIGxlbmd0aERp ZmYgPSBNYXRoLmFicyhhcnJheTEubGVuZ3RoIC0gYXJyYXkyLmxlbmd0aCks CisgICAgICAgICAgICBkaWZmcyA9IDAsCisgICAgICAgICAgICBpOworICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAg IGlmICgoZG9udENvbnZlcnQgJiYgYXJyYXkxW2ldICE9PSBhcnJheTJbaV0p IHx8CisgICAgICAgICAgICAgICAgKCFkb250Q29udmVydCAmJiB0b0ludChh cnJheTFbaV0pICE9PSB0b0ludChhcnJheTJbaV0pKSkgeworICAgICAgICAg ICAgICAgIGRpZmZzKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg ICAgICAgcmV0dXJuIGRpZmZzICsgbGVuZ3RoRGlmZjsKKyAgICB9CisKKyAg ICBmdW5jdGlvbiB3YXJuKG1zZykgeworICAgICAgICBpZiAodXRpbHNfaG9v a3NfX2hvb2tzLnN1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5ncyA9PT0gZmFs c2UgJiYKKyAgICAgICAgICAgICAgICAodHlwZW9mIGNvbnNvbGUgIT09ICAn dW5kZWZpbmVkJykgJiYgY29uc29sZS53YXJuKSB7CisgICAgICAgICAgICBj b25zb2xlLndhcm4oJ0RlcHJlY2F0aW9uIHdhcm5pbmc6ICcgKyBtc2cpOwor ICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gZGVwcmVjYXRlKG1z ZywgZm4pIHsKKyAgICAgICAgdmFyIGZpcnN0VGltZSA9IHRydWU7CisKKyAg ICAgICAgcmV0dXJuIGV4dGVuZChmdW5jdGlvbiAoKSB7CisgICAgICAgICAg ICBpZiAodXRpbHNfaG9va3NfX2hvb2tzLmRlcHJlY2F0aW9uSGFuZGxlciAh PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdXRpbHNfaG9va3NfX2hvb2tz LmRlcHJlY2F0aW9uSGFuZGxlcihudWxsLCBtc2cpOworICAgICAgICAgICAg fQorICAgICAgICAgICAgaWYgKGZpcnN0VGltZSkgeworICAgICAgICAgICAg ICAgIHZhciBhcmdzID0gW107CisgICAgICAgICAgICAgICAgdmFyIGFyZzsK KyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50 cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBhcmcgPSAn JzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhcmd1bWVudHNb aV0gPT09ICdvYmplY3QnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBh cmcgKz0gJ1xuWycgKyBpICsgJ10gJzsKKyAgICAgICAgICAgICAgICAgICAg ICAgIGZvciAodmFyIGtleSBpbiBhcmd1bWVudHNbMF0pIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhcmcgKz0ga2V5ICsgJzogJyArIGFyZ3Vt ZW50c1swXVtrZXldICsgJywgJzsKKyAgICAgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZy5zbGljZSgw LCAtMik7IC8vIFJlbW92ZSB0cmFpbGluZyBjb21tYSBhbmQgc3BhY2UKKyAg ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgIGFyZyA9IGFyZ3VtZW50c1tpXTsKKyAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2goYXJnKTsKKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgd2Fybihtc2cgKyAn XG5Bcmd1bWVudHM6ICcgKyBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChh cmdzKS5qb2luKCcnKSArICdcbicgKyAobmV3IEVycm9yKCkpLnN0YWNrKTsK KyAgICAgICAgICAgICAgICBmaXJzdFRpbWUgPSBmYWxzZTsKKyAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1 bWVudHMpOworICAgICAgICB9LCBmbik7CisgICAgfQorCisgICAgdmFyIGRl cHJlY2F0aW9ucyA9IHt9OworCisgICAgZnVuY3Rpb24gZGVwcmVjYXRlU2lt cGxlKG5hbWUsIG1zZykgeworICAgICAgICBpZiAodXRpbHNfaG9va3NfX2hv b2tzLmRlcHJlY2F0aW9uSGFuZGxlciAhPSBudWxsKSB7CisgICAgICAgICAg ICB1dGlsc19ob29rc19faG9va3MuZGVwcmVjYXRpb25IYW5kbGVyKG5hbWUs IG1zZyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFkZXByZWNhdGlvbnNb bmFtZV0pIHsKKyAgICAgICAgICAgIHdhcm4obXNnKTsKKyAgICAgICAgICAg IGRlcHJlY2F0aW9uc1tuYW1lXSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9 CisKKyAgICB1dGlsc19ob29rc19faG9va3Muc3VwcHJlc3NEZXByZWNhdGlv bldhcm5pbmdzID0gZmFsc2U7CisgICAgdXRpbHNfaG9va3NfX2hvb2tzLmRl cHJlY2F0aW9uSGFuZGxlciA9IG51bGw7CisKKyAgICBmdW5jdGlvbiBpc0Z1 bmN0aW9uKGlucHV0KSB7CisgICAgICAgIHJldHVybiBpbnB1dCBpbnN0YW5j ZW9mIEZ1bmN0aW9uIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2Fs bChpbnB1dCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7CisgICAgfQorCisg ICAgZnVuY3Rpb24gbG9jYWxlX3NldF9fc2V0IChjb25maWcpIHsKKyAgICAg ICAgdmFyIHByb3AsIGk7CisgICAgICAgIGZvciAoaSBpbiBjb25maWcpIHsK KyAgICAgICAgICAgIHByb3AgPSBjb25maWdbaV07CisgICAgICAgICAgICBp ZiAoaXNGdW5jdGlvbihwcm9wKSkgeworICAgICAgICAgICAgICAgIHRoaXNb aV0gPSBwcm9wOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg ICAgICB0aGlzWydfJyArIGldID0gcHJvcDsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgfQorICAgICAgICB0aGlzLl9jb25maWcgPSBjb25maWc7CisgICAg ICAgIC8vIExlbmllbnQgb3JkaW5hbCBwYXJzaW5nIGFjY2VwdHMganVzdCBh IG51bWJlciBpbiBhZGRpdGlvbiB0bworICAgICAgICAvLyBudW1iZXIgKyAo cG9zc2libHkpIHN0dWZmIGNvbWluZyBmcm9tIF9vcmRpbmFsUGFyc2VMZW5p ZW50LgorICAgICAgICB0aGlzLl9vcmRpbmFsUGFyc2VMZW5pZW50ID0gbmV3 IFJlZ0V4cCh0aGlzLl9vcmRpbmFsUGFyc2Uuc291cmNlICsgJ3wnICsgKC9c ZHsxLDJ9Lykuc291cmNlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBtZXJn ZUNvbmZpZ3MocGFyZW50Q29uZmlnLCBjaGlsZENvbmZpZykgeworICAgICAg ICB2YXIgcmVzID0gZXh0ZW5kKHt9LCBwYXJlbnRDb25maWcpLCBwcm9wOwor ICAgICAgICBmb3IgKHByb3AgaW4gY2hpbGRDb25maWcpIHsKKyAgICAgICAg ICAgIGlmIChoYXNPd25Qcm9wKGNoaWxkQ29uZmlnLCBwcm9wKSkgeworICAg ICAgICAgICAgICAgIGlmIChpc09iamVjdChwYXJlbnRDb25maWdbcHJvcF0p ICYmIGlzT2JqZWN0KGNoaWxkQ29uZmlnW3Byb3BdKSkgeworICAgICAgICAg ICAgICAgICAgICByZXNbcHJvcF0gPSB7fTsKKyAgICAgICAgICAgICAgICAg ICAgZXh0ZW5kKHJlc1twcm9wXSwgcGFyZW50Q29uZmlnW3Byb3BdKTsKKyAg ICAgICAgICAgICAgICAgICAgZXh0ZW5kKHJlc1twcm9wXSwgY2hpbGRDb25m aWdbcHJvcF0pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGRD b25maWdbcHJvcF0gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBy ZXNbcHJvcF0gPSBjaGlsZENvbmZpZ1twcm9wXTsKKyAgICAgICAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVzW3By b3BdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg ICAgfQorICAgICAgICBmb3IgKHByb3AgaW4gcGFyZW50Q29uZmlnKSB7Cisg ICAgICAgICAgICBpZiAoaGFzT3duUHJvcChwYXJlbnRDb25maWcsIHByb3Ap ICYmCisgICAgICAgICAgICAgICAgICAgICFoYXNPd25Qcm9wKGNoaWxkQ29u ZmlnLCBwcm9wKSAmJgorICAgICAgICAgICAgICAgICAgICBpc09iamVjdChw YXJlbnRDb25maWdbcHJvcF0pKSB7CisgICAgICAgICAgICAgICAgLy8gbWFr ZSBzdXJlIGNoYW5nZXMgdG8gcHJvcGVydGllcyBkb24ndCBtb2RpZnkgcGFy ZW50IGNvbmZpZworICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IGV4dGVu ZCh7fSwgcmVzW3Byb3BdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor ICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKworICAgIGZ1bmN0aW9uIExv Y2FsZShjb25maWcpIHsKKyAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7 CisgICAgICAgICAgICB0aGlzLnNldChjb25maWcpOworICAgICAgICB9Cisg ICAgfQorCisgICAgdmFyIGtleXM7CisKKyAgICBpZiAoT2JqZWN0LmtleXMp IHsKKyAgICAgICAga2V5cyA9IE9iamVjdC5rZXlzOworICAgIH0gZWxzZSB7 CisgICAgICAgIGtleXMgPSBmdW5jdGlvbiAob2JqKSB7CisgICAgICAgICAg ICB2YXIgaSwgcmVzID0gW107CisgICAgICAgICAgICBmb3IgKGkgaW4gb2Jq KSB7CisgICAgICAgICAgICAgICAgaWYgKGhhc093blByb3Aob2JqLCBpKSkg eworICAgICAgICAgICAgICAgICAgICByZXMucHVzaChpKTsKKyAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g cmVzOworICAgICAgICB9OworICAgIH0KKworICAgIHZhciBkZWZhdWx0Q2Fs ZW5kYXIgPSB7CisgICAgICAgIHNhbWVEYXkgOiAnW1RvZGF5IGF0XSBMVCcs CisgICAgICAgIG5leHREYXkgOiAnW1RvbW9ycm93IGF0XSBMVCcsCisgICAg ICAgIG5leHRXZWVrIDogJ2RkZGQgW2F0XSBMVCcsCisgICAgICAgIGxhc3RE YXkgOiAnW1llc3RlcmRheSBhdF0gTFQnLAorICAgICAgICBsYXN0V2VlayA6 ICdbTGFzdF0gZGRkZCBbYXRdIExUJywKKyAgICAgICAgc2FtZUVsc2UgOiAn TCcKKyAgICB9OworCisgICAgZnVuY3Rpb24gbG9jYWxlX2NhbGVuZGFyX19j YWxlbmRhciAoa2V5LCBtb20sIG5vdykgeworICAgICAgICB2YXIgb3V0cHV0 ID0gdGhpcy5fY2FsZW5kYXJba2V5XSB8fCB0aGlzLl9jYWxlbmRhclsnc2Ft ZUVsc2UnXTsKKyAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24ob3V0cHV0KSA/ IG91dHB1dC5jYWxsKG1vbSwgbm93KSA6IG91dHB1dDsKKyAgICB9CisKKyAg ICB2YXIgZGVmYXVsdExvbmdEYXRlRm9ybWF0ID0geworICAgICAgICBMVFMg IDogJ2g6bW06c3MgQScsCisgICAgICAgIExUICAgOiAnaDptbSBBJywKKyAg ICAgICAgTCAgICA6ICdNTS9ERC9ZWVlZJywKKyAgICAgICAgTEwgICA6ICdN TU1NIEQsIFlZWVknLAorICAgICAgICBMTEwgIDogJ01NTU0gRCwgWVlZWSBo Om1tIEEnLAorICAgICAgICBMTExMIDogJ2RkZGQsIE1NTU0gRCwgWVlZWSBo Om1tIEEnCisgICAgfTsKKworICAgIGZ1bmN0aW9uIGxvbmdEYXRlRm9ybWF0 IChrZXkpIHsKKyAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX2xvbmdEYXRl Rm9ybWF0W2tleV0sCisgICAgICAgICAgICBmb3JtYXRVcHBlciA9IHRoaXMu X2xvbmdEYXRlRm9ybWF0W2tleS50b1VwcGVyQ2FzZSgpXTsKKworICAgICAg ICBpZiAoZm9ybWF0IHx8ICFmb3JtYXRVcHBlcikgeworICAgICAgICAgICAg cmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2xv bmdEYXRlRm9ybWF0W2tleV0gPSBmb3JtYXRVcHBlci5yZXBsYWNlKC9NTU1N fE1NfEREfGRkZGQvZywgZnVuY3Rpb24gKHZhbCkgeworICAgICAgICAgICAg cmV0dXJuIHZhbC5zbGljZSgxKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg cmV0dXJuIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV07CisgICAgfQorCisg ICAgdmFyIGRlZmF1bHRJbnZhbGlkRGF0ZSA9ICdJbnZhbGlkIGRhdGUnOwor CisgICAgZnVuY3Rpb24gaW52YWxpZERhdGUgKCkgeworICAgICAgICByZXR1 cm4gdGhpcy5faW52YWxpZERhdGU7CisgICAgfQorCisgICAgdmFyIGRlZmF1 bHRPcmRpbmFsID0gJyVkJzsKKyAgICB2YXIgZGVmYXVsdE9yZGluYWxQYXJz ZSA9IC9cZHsxLDJ9LzsKKworICAgIGZ1bmN0aW9uIG9yZGluYWwgKG51bWJl cikgeworICAgICAgICByZXR1cm4gdGhpcy5fb3JkaW5hbC5yZXBsYWNlKCcl ZCcsIG51bWJlcik7CisgICAgfQorCisgICAgdmFyIGRlZmF1bHRSZWxhdGl2 ZVRpbWUgPSB7CisgICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsCisgICAgICAg IHBhc3QgICA6ICclcyBhZ28nLAorICAgICAgICBzICA6ICdhIGZldyBzZWNv bmRzJywKKyAgICAgICAgbSAgOiAnYSBtaW51dGUnLAorICAgICAgICBtbSA6 ICclZCBtaW51dGVzJywKKyAgICAgICAgaCAgOiAnYW4gaG91cicsCisgICAg ICAgIGhoIDogJyVkIGhvdXJzJywKKyAgICAgICAgZCAgOiAnYSBkYXknLAor ICAgICAgICBkZCA6ICclZCBkYXlzJywKKyAgICAgICAgTSAgOiAnYSBtb250 aCcsCisgICAgICAgIE1NIDogJyVkIG1vbnRocycsCisgICAgICAgIHkgIDog J2EgeWVhcicsCisgICAgICAgIHl5IDogJyVkIHllYXJzJworICAgIH07CisK KyAgICBmdW5jdGlvbiByZWxhdGl2ZV9fcmVsYXRpdmVUaW1lIChudW1iZXIs IHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpIHsKKyAgICAgICAg dmFyIG91dHB1dCA9IHRoaXMuX3JlbGF0aXZlVGltZVtzdHJpbmddOworICAg ICAgICByZXR1cm4gKGlzRnVuY3Rpb24ob3V0cHV0KSkgPworICAgICAgICAg ICAgb3V0cHV0KG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1 dHVyZSkgOgorICAgICAgICAgICAgb3V0cHV0LnJlcGxhY2UoLyVkL2ksIG51 bWJlcik7CisgICAgfQorCisgICAgZnVuY3Rpb24gcGFzdEZ1dHVyZSAoZGlm Ziwgb3V0cHV0KSB7CisgICAgICAgIHZhciBmb3JtYXQgPSB0aGlzLl9yZWxh dGl2ZVRpbWVbZGlmZiA+IDAgPyAnZnV0dXJlJyA6ICdwYXN0J107CisgICAg ICAgIHJldHVybiBpc0Z1bmN0aW9uKGZvcm1hdCkgPyBmb3JtYXQob3V0cHV0 KSA6IGZvcm1hdC5yZXBsYWNlKC8lcy9pLCBvdXRwdXQpOworICAgIH0KKwor ICAgIHZhciBhbGlhc2VzID0ge307CisKKyAgICBmdW5jdGlvbiBhZGRVbml0 QWxpYXMgKHVuaXQsIHNob3J0aGFuZCkgeworICAgICAgICB2YXIgbG93ZXJD YXNlID0gdW5pdC50b0xvd2VyQ2FzZSgpOworICAgICAgICBhbGlhc2VzW2xv d2VyQ2FzZV0gPSBhbGlhc2VzW2xvd2VyQ2FzZSArICdzJ10gPSBhbGlhc2Vz W3Nob3J0aGFuZF0gPSB1bml0OworICAgIH0KKworICAgIGZ1bmN0aW9uIG5v cm1hbGl6ZVVuaXRzKHVuaXRzKSB7CisgICAgICAgIHJldHVybiB0eXBlb2Yg dW5pdHMgPT09ICdzdHJpbmcnID8gYWxpYXNlc1t1bml0c10gfHwgYWxpYXNl c1t1bml0cy50b0xvd2VyQ2FzZSgpXSA6IHVuZGVmaW5lZDsKKyAgICB9CisK KyAgICBmdW5jdGlvbiBub3JtYWxpemVPYmplY3RVbml0cyhpbnB1dE9iamVj dCkgeworICAgICAgICB2YXIgbm9ybWFsaXplZElucHV0ID0ge30sCisgICAg ICAgICAgICBub3JtYWxpemVkUHJvcCwKKyAgICAgICAgICAgIHByb3A7CisK KyAgICAgICAgZm9yIChwcm9wIGluIGlucHV0T2JqZWN0KSB7CisgICAgICAg ICAgICBpZiAoaGFzT3duUHJvcChpbnB1dE9iamVjdCwgcHJvcCkpIHsKKyAg ICAgICAgICAgICAgICBub3JtYWxpemVkUHJvcCA9IG5vcm1hbGl6ZVVuaXRz KHByb3ApOworICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkUHJvcCkg eworICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkSW5wdXRbbm9ybWFs aXplZFByb3BdID0gaW5wdXRPYmplY3RbcHJvcF07CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0 dXJuIG5vcm1hbGl6ZWRJbnB1dDsKKyAgICB9CisKKyAgICB2YXIgcHJpb3Jp dGllcyA9IHt9OworCisgICAgZnVuY3Rpb24gYWRkVW5pdFByaW9yaXR5KHVu aXQsIHByaW9yaXR5KSB7CisgICAgICAgIHByaW9yaXRpZXNbdW5pdF0gPSBw cmlvcml0eTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRQcmlvcml0aXpl ZFVuaXRzKHVuaXRzT2JqKSB7CisgICAgICAgIHZhciB1bml0cyA9IFtdOwor ICAgICAgICBmb3IgKHZhciB1IGluIHVuaXRzT2JqKSB7CisgICAgICAgICAg ICB1bml0cy5wdXNoKHt1bml0OiB1LCBwcmlvcml0eTogcHJpb3JpdGllc1t1 XX0pOworICAgICAgICB9CisgICAgICAgIHVuaXRzLnNvcnQoZnVuY3Rpb24g KGEsIGIpIHsKKyAgICAgICAgICAgIHJldHVybiBhLnByaW9yaXR5IC0gYi5w cmlvcml0eTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiB1bml0czsK KyAgICB9CisKKyAgICBmdW5jdGlvbiBtYWtlR2V0U2V0ICh1bml0LCBrZWVw VGltZSkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7Cisg ICAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkgeworICAgICAgICAgICAg ICAgIGdldF9zZXRfX3NldCh0aGlzLCB1bml0LCB2YWx1ZSk7CisgICAgICAg ICAgICAgICAgdXRpbHNfaG9va3NfX2hvb2tzLnVwZGF0ZU9mZnNldCh0aGlz LCBrZWVwVGltZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Cisg ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBn ZXRfc2V0X19nZXQodGhpcywgdW5pdCk7CisgICAgICAgICAgICB9CisgICAg ICAgIH07CisgICAgfQorCisgICAgZnVuY3Rpb24gZ2V0X3NldF9fZ2V0ICht b20sIHVuaXQpIHsKKyAgICAgICAgcmV0dXJuIG1vbS5pc1ZhbGlkKCkgPwor ICAgICAgICAgICAgbW9tLl9kWydnZXQnICsgKG1vbS5faXNVVEMgPyAnVVRD JyA6ICcnKSArIHVuaXRdKCkgOiBOYU47CisgICAgfQorCisgICAgZnVuY3Rp b24gZ2V0X3NldF9fc2V0IChtb20sIHVuaXQsIHZhbHVlKSB7CisgICAgICAg IGlmIChtb20uaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBtb20uX2RbJ3Nl dCcgKyAobW9tLl9pc1VUQyA/ICdVVEMnIDogJycpICsgdW5pdF0odmFsdWUp OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gTU9NRU5UUworCisgICAg ZnVuY3Rpb24gc3RyaW5nR2V0ICh1bml0cykgeworICAgICAgICB1bml0cyA9 IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTsKKyAgICAgICAgaWYgKGlzRnVuY3Rp b24odGhpc1t1bml0c10pKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpc1t1 bml0c10oKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhpczsKKyAg ICB9CisKKworICAgIGZ1bmN0aW9uIHN0cmluZ1NldCAodW5pdHMsIHZhbHVl KSB7CisgICAgICAgIGlmICh0eXBlb2YgdW5pdHMgPT09ICdvYmplY3QnKSB7 CisgICAgICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZU9iamVjdFVuaXRzKHVu aXRzKTsKKyAgICAgICAgICAgIHZhciBwcmlvcml0aXplZCA9IGdldFByaW9y aXRpemVkVW5pdHModW5pdHMpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9 IDA7IGkgPCBwcmlvcml0aXplZC5sZW5ndGg7IGkrKykgeworICAgICAgICAg ICAgICAgIHRoaXNbcHJpb3JpdGl6ZWRbaV0udW5pdF0odW5pdHNbcHJpb3Jp dGl6ZWRbaV0udW5pdF0pOworICAgICAgICAgICAgfQorICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0 cyk7CisgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbih0aGlzW3VuaXRzXSkp IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1t1bml0c10odmFsdWUp OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0 aGlzOworICAgIH0KKworICAgIGZ1bmN0aW9uIHplcm9GaWxsKG51bWJlciwg dGFyZ2V0TGVuZ3RoLCBmb3JjZVNpZ24pIHsKKyAgICAgICAgdmFyIGFic051 bWJlciA9ICcnICsgTWF0aC5hYnMobnVtYmVyKSwKKyAgICAgICAgICAgIHpl cm9zVG9GaWxsID0gdGFyZ2V0TGVuZ3RoIC0gYWJzTnVtYmVyLmxlbmd0aCwK KyAgICAgICAgICAgIHNpZ24gPSBudW1iZXIgPj0gMDsKKyAgICAgICAgcmV0 dXJuIChzaWduID8gKGZvcmNlU2lnbiA/ICcrJyA6ICcnKSA6ICctJykgKwor ICAgICAgICAgICAgTWF0aC5wb3coMTAsIE1hdGgubWF4KDAsIHplcm9zVG9G aWxsKSkudG9TdHJpbmcoKS5zdWJzdHIoMSkgKyBhYnNOdW1iZXI7CisgICAg fQorCisgICAgdmFyIGZvcm1hdHRpbmdUb2tlbnMgPSAvKFxbW15cW10qXF0p fChcXCk/KFtIaF1tbShzcyk/fE1vfE1NP00/TT98RG98REREb3xERD9EP0Q/ fGRkZD9kP3xkbz98d1tvfHddP3xXW298V10/fFFvP3xZWVlZWVl8WVlZWVl8 WVlZWXxZWXxnZyhnZ2c/KT98R0coR0dHPyk/fGV8RXxhfEF8aGg/fEhIP3xr az98bW0/fHNzP3xTezEsOX18eHxYfHp6P3xaWj98LikvZzsKKworICAgIHZh ciBsb2NhbEZvcm1hdHRpbmdUb2tlbnMgPSAvKFxbW15cW10qXF0pfChcXCk/ KExUU3xMVHxMTD9MP0w/fGx7MSw0fSkvZzsKKworICAgIHZhciBmb3JtYXRG dW5jdGlvbnMgPSB7fTsKKworICAgIHZhciBmb3JtYXRUb2tlbkZ1bmN0aW9u cyA9IHt9OworCisgICAgLy8gdG9rZW46ICAgICdNJworICAgIC8vIHBhZGRl ZDogICBbJ01NJywgMl0KKyAgICAvLyBvcmRpbmFsOiAgJ01vJworICAgIC8v IGNhbGxiYWNrOiBmdW5jdGlvbiAoKSB7IHRoaXMubW9udGgoKSArIDEgfQor ICAgIGZ1bmN0aW9uIGFkZEZvcm1hdFRva2VuICh0b2tlbiwgcGFkZGVkLCBv cmRpbmFsLCBjYWxsYmFjaykgeworICAgICAgICB2YXIgZnVuYyA9IGNhbGxi YWNrOworICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnc3RyaW5n JykgeworICAgICAgICAgICAgZnVuYyA9IGZ1bmN0aW9uICgpIHsKKyAgICAg ICAgICAgICAgICByZXR1cm4gdGhpc1tjYWxsYmFja10oKTsKKyAgICAgICAg ICAgIH07CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRva2VuKSB7CisgICAg ICAgICAgICBmb3JtYXRUb2tlbkZ1bmN0aW9uc1t0b2tlbl0gPSBmdW5jOwor ICAgICAgICB9CisgICAgICAgIGlmIChwYWRkZWQpIHsKKyAgICAgICAgICAg IGZvcm1hdFRva2VuRnVuY3Rpb25zW3BhZGRlZFswXV0gPSBmdW5jdGlvbiAo KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHplcm9GaWxsKGZ1bmMuYXBw bHkodGhpcywgYXJndW1lbnRzKSwgcGFkZGVkWzFdLCBwYWRkZWRbMl0pOwor ICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICBpZiAob3JkaW5h bCkgeworICAgICAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbb3JkaW5h bF0gPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRo aXMubG9jYWxlRGF0YSgpLm9yZGluYWwoZnVuYy5hcHBseSh0aGlzLCBhcmd1 bWVudHMpLCB0b2tlbik7CisgICAgICAgICAgICB9OworICAgICAgICB9Cisg ICAgfQorCisgICAgZnVuY3Rpb24gcmVtb3ZlRm9ybWF0dGluZ1Rva2Vucyhp bnB1dCkgeworICAgICAgICBpZiAoaW5wdXQubWF0Y2goL1xbW1xzXFNdLykp IHsKKyAgICAgICAgICAgIHJldHVybiBpbnB1dC5yZXBsYWNlKC9eXFt8XF0k L2csICcnKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaW5wdXQucmVw bGFjZSgvXFwvZywgJycpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG1ha2VG b3JtYXRGdW5jdGlvbihmb3JtYXQpIHsKKyAgICAgICAgdmFyIGFycmF5ID0g Zm9ybWF0Lm1hdGNoKGZvcm1hdHRpbmdUb2tlbnMpLCBpLCBsZW5ndGg7CisK KyAgICAgICAgZm9yIChpID0gMCwgbGVuZ3RoID0gYXJyYXkubGVuZ3RoOyBp IDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChmb3JtYXRUb2tl bkZ1bmN0aW9uc1thcnJheVtpXV0pIHsKKyAgICAgICAgICAgICAgICBhcnJh eVtpXSA9IGZvcm1hdFRva2VuRnVuY3Rpb25zW2FycmF5W2ldXTsKKyAgICAg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYXJyYXlbaV0gPSBy ZW1vdmVGb3JtYXR0aW5nVG9rZW5zKGFycmF5W2ldKTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmdW5jdGlvbiAobW9t KSB7CisgICAgICAgICAgICB2YXIgb3V0cHV0ID0gJycsIGk7CisgICAgICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAg ICAgICAgICBvdXRwdXQgKz0gYXJyYXlbaV0gaW5zdGFuY2VvZiBGdW5jdGlv biA/IGFycmF5W2ldLmNhbGwobW9tLCBmb3JtYXQpIDogYXJyYXlbaV07Cisg ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gb3V0cHV0OworICAg ICAgICB9OworICAgIH0KKworICAgIC8vIGZvcm1hdCBkYXRlIHVzaW5nIG5h dGl2ZSBkYXRlIG9iamVjdAorICAgIGZ1bmN0aW9uIGZvcm1hdE1vbWVudCht LCBmb3JtYXQpIHsKKyAgICAgICAgaWYgKCFtLmlzVmFsaWQoKSkgeworICAg ICAgICAgICAgcmV0dXJuIG0ubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7 CisgICAgICAgIH0KKworICAgICAgICBmb3JtYXQgPSBleHBhbmRGb3JtYXQo Zm9ybWF0LCBtLmxvY2FsZURhdGEoKSk7CisgICAgICAgIGZvcm1hdEZ1bmN0 aW9uc1tmb3JtYXRdID0gZm9ybWF0RnVuY3Rpb25zW2Zvcm1hdF0gfHwgbWFr ZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCk7CisKKyAgICAgICAgcmV0dXJuIGZv cm1hdEZ1bmN0aW9uc1tmb3JtYXRdKG0pOworICAgIH0KKworICAgIGZ1bmN0 aW9uIGV4cGFuZEZvcm1hdChmb3JtYXQsIGxvY2FsZSkgeworICAgICAgICB2 YXIgaSA9IDU7CisKKyAgICAgICAgZnVuY3Rpb24gcmVwbGFjZUxvbmdEYXRl Rm9ybWF0VG9rZW5zKGlucHV0KSB7CisgICAgICAgICAgICByZXR1cm4gbG9j YWxlLmxvbmdEYXRlRm9ybWF0KGlucHV0KSB8fCBpbnB1dDsKKyAgICAgICAg fQorCisgICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXgg PSAwOworICAgICAgICB3aGlsZSAoaSA+PSAwICYmIGxvY2FsRm9ybWF0dGlu Z1Rva2Vucy50ZXN0KGZvcm1hdCkpIHsKKyAgICAgICAgICAgIGZvcm1hdCA9 IGZvcm1hdC5yZXBsYWNlKGxvY2FsRm9ybWF0dGluZ1Rva2VucywgcmVwbGFj ZUxvbmdEYXRlRm9ybWF0VG9rZW5zKTsKKyAgICAgICAgICAgIGxvY2FsRm9y bWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwOworICAgICAgICAgICAgaSAt PSAxOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAg ICB9CisKKyAgICB2YXIgbWF0Y2gxICAgICAgICAgPSAvXGQvOyAgICAgICAg ICAgIC8vICAgICAgIDAgLSA5CisgICAgdmFyIG1hdGNoMiAgICAgICAgID0g L1xkXGQvOyAgICAgICAgICAvLyAgICAgIDAwIC0gOTkKKyAgICB2YXIgbWF0 Y2gzICAgICAgICAgPSAvXGR7M30vOyAgICAgICAgIC8vICAgICAwMDAgLSA5 OTkKKyAgICB2YXIgbWF0Y2g0ICAgICAgICAgPSAvXGR7NH0vOyAgICAgICAg IC8vICAgIDAwMDAgLSA5OTk5CisgICAgdmFyIG1hdGNoNiAgICAgICAgID0g L1srLV0/XGR7Nn0vOyAgICAvLyAtOTk5OTk5IC0gOTk5OTk5CisgICAgdmFy IG1hdGNoMXRvMiAgICAgID0gL1xkXGQ/LzsgICAgICAgICAvLyAgICAgICAw IC0gOTkKKyAgICB2YXIgbWF0Y2gzdG80ICAgICAgPSAvXGRcZFxkXGQ/Lzsg ICAgIC8vICAgICA5OTkgLSA5OTk5CisgICAgdmFyIG1hdGNoNXRvNiAgICAg ID0gL1xkXGRcZFxkXGRcZD8vOyAvLyAgIDk5OTk5IC0gOTk5OTk5CisgICAg dmFyIG1hdGNoMXRvMyAgICAgID0gL1xkezEsM30vOyAgICAgICAvLyAgICAg ICAwIC0gOTk5CisgICAgdmFyIG1hdGNoMXRvNCAgICAgID0gL1xkezEsNH0v OyAgICAgICAvLyAgICAgICAwIC0gOTk5OQorICAgIHZhciBtYXRjaDF0bzYg ICAgICA9IC9bKy1dP1xkezEsNn0vOyAgLy8gLTk5OTk5OSAtIDk5OTk5OQor CisgICAgdmFyIG1hdGNoVW5zaWduZWQgID0gL1xkKy87ICAgICAgICAgICAv LyAgICAgICAwIC0gaW5mCisgICAgdmFyIG1hdGNoU2lnbmVkICAgID0gL1sr LV0/XGQrLzsgICAgICAvLyAgICAtaW5mIC0gaW5mCisKKyAgICB2YXIgbWF0 Y2hPZmZzZXQgICAgPSAvWnxbKy1dXGRcZDo/XGRcZC9naTsgLy8gKzAwOjAw IC0wMDowMCArMDAwMCAtMDAwMCBvciBaCisgICAgdmFyIG1hdGNoU2hvcnRP ZmZzZXQgPSAvWnxbKy1dXGRcZCg/Ojo/XGRcZCk/L2dpOyAvLyArMDAgLTAw ICswMDowMCAtMDA6MDAgKzAwMDAgLTAwMDAgb3IgWgorCisgICAgdmFyIG1h dGNoVGltZXN0YW1wID0gL1srLV0/XGQrKFwuXGR7MSwzfSk/LzsgLy8gMTIz NDU2Nzg5IDEyMzQ1Njc4OS4xMjMKKworICAgIC8vIGFueSB3b3JkIChvciB0 d28pIGNoYXJhY3RlcnMgb3IgbnVtYmVycyBpbmNsdWRpbmcgdHdvL3RocmVl IHdvcmQgbW9udGggaW4gYXJhYmljLgorICAgIC8vIGluY2x1ZGVzIHNjb3R0 aXNoIGdhZWxpYyB0d28gd29yZCBhbmQgaHlwaGVuYXRlZCBtb250aHMKKyAg ICB2YXIgbWF0Y2hXb3JkID0gL1swLTldKlsnYS16XHUwMEEwLVx1MDVGRlx1 MDcwMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0rfFtcdTA2 MDAtXHUwNkZGXC9dKyhccyo/W1x1MDYwMC1cdTA2RkZdKyl7MSwyfS9pOwor CisKKyAgICB2YXIgcmVnZXhlcyA9IHt9OworCisgICAgZnVuY3Rpb24gYWRk UmVnZXhUb2tlbiAodG9rZW4sIHJlZ2V4LCBzdHJpY3RSZWdleCkgeworICAg ICAgICByZWdleGVzW3Rva2VuXSA9IGlzRnVuY3Rpb24ocmVnZXgpID8gcmVn ZXggOiBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZURhdGEpIHsKKyAgICAg ICAgICAgIHJldHVybiAoaXNTdHJpY3QgJiYgc3RyaWN0UmVnZXgpID8gc3Ry aWN0UmVnZXggOiByZWdleDsKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBm dW5jdGlvbiBnZXRQYXJzZVJlZ2V4Rm9yVG9rZW4gKHRva2VuLCBjb25maWcp IHsKKyAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHJlZ2V4ZXMsIHRva2VuKSkg eworICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAodW5lc2NhcGVGb3Jt YXQodG9rZW4pKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZWdl eGVzW3Rva2VuXShjb25maWcuX3N0cmljdCwgY29uZmlnLl9sb2NhbGUpOwor ICAgIH0KKworICAgIC8vIENvZGUgZnJvbSBodHRwOi8vc3RhY2tvdmVyZmxv dy5jb20vcXVlc3Rpb25zLzM1NjE0OTMvaXMtdGhlcmUtYS1yZWdleHAtZXNj YXBlLWZ1bmN0aW9uLWluLWphdmFzY3JpcHQKKyAgICBmdW5jdGlvbiB1bmVz Y2FwZUZvcm1hdChzKSB7CisgICAgICAgIHJldHVybiByZWdleEVzY2FwZShz LnJlcGxhY2UoJ1xcJywgJycpLnJlcGxhY2UoL1xcKFxbKXxcXChcXSl8XFso W15cXVxbXSopXF18XFwoLikvZywgZnVuY3Rpb24gKG1hdGNoZWQsIHAxLCBw MiwgcDMsIHA0KSB7CisgICAgICAgICAgICByZXR1cm4gcDEgfHwgcDIgfHwg cDMgfHwgcDQ7CisgICAgICAgIH0pKTsKKyAgICB9CisKKyAgICBmdW5jdGlv biByZWdleEVzY2FwZShzKSB7CisgICAgICAgIHJldHVybiBzLnJlcGxhY2Uo L1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCAnXFwkJicpOworICAgIH0KKwor ICAgIHZhciB0b2tlbnMgPSB7fTsKKworICAgIGZ1bmN0aW9uIGFkZFBhcnNl VG9rZW4gKHRva2VuLCBjYWxsYmFjaykgeworICAgICAgICB2YXIgaSwgZnVu YyA9IGNhbGxiYWNrOworICAgICAgICBpZiAodHlwZW9mIHRva2VuID09PSAn c3RyaW5nJykgeworICAgICAgICAgICAgdG9rZW4gPSBbdG9rZW5dOworICAg ICAgICB9CisgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdudW1i ZXInKSB7CisgICAgICAgICAgICBmdW5jID0gZnVuY3Rpb24gKGlucHV0LCBh cnJheSkgeworICAgICAgICAgICAgICAgIGFycmF5W2NhbGxiYWNrXSA9IHRv SW50KGlucHV0KTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAg ICAgZm9yIChpID0gMDsgaSA8IHRva2VuLmxlbmd0aDsgaSsrKSB7CisgICAg ICAgICAgICB0b2tlbnNbdG9rZW5baV1dID0gZnVuYzsKKyAgICAgICAgfQor ICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZFdlZWtQYXJzZVRva2VuICh0b2tl biwgY2FsbGJhY2spIHsKKyAgICAgICAgYWRkUGFyc2VUb2tlbih0b2tlbiwg ZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnLCB0b2tlbikgeworICAg ICAgICAgICAgY29uZmlnLl93ID0gY29uZmlnLl93IHx8IHt9OworICAgICAg ICAgICAgY2FsbGJhY2soaW5wdXQsIGNvbmZpZy5fdywgY29uZmlnLCB0b2tl bik7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZFRp bWVUb0FycmF5RnJvbVRva2VuKHRva2VuLCBpbnB1dCwgY29uZmlnKSB7Cisg ICAgICAgIGlmIChpbnB1dCAhPSBudWxsICYmIGhhc093blByb3AodG9rZW5z LCB0b2tlbikpIHsKKyAgICAgICAgICAgIHRva2Vuc1t0b2tlbl0oaW5wdXQs IGNvbmZpZy5fYSwgY29uZmlnLCB0b2tlbik7CisgICAgICAgIH0KKyAgICB9 CisKKyAgICB2YXIgWUVBUiA9IDA7CisgICAgdmFyIE1PTlRIID0gMTsKKyAg ICB2YXIgREFURSA9IDI7CisgICAgdmFyIEhPVVIgPSAzOworICAgIHZhciBN SU5VVEUgPSA0OworICAgIHZhciBTRUNPTkQgPSA1OworICAgIHZhciBNSUxM SVNFQ09ORCA9IDY7CisgICAgdmFyIFdFRUsgPSA3OworICAgIHZhciBXRUVL REFZID0gODsKKworICAgIHZhciBpbmRleE9mOworCisgICAgaWYgKEFycmF5 LnByb3RvdHlwZS5pbmRleE9mKSB7CisgICAgICAgIGluZGV4T2YgPSBBcnJh eS5wcm90b3R5cGUuaW5kZXhPZjsKKyAgICB9IGVsc2UgeworICAgICAgICBp bmRleE9mID0gZnVuY3Rpb24gKG8pIHsKKyAgICAgICAgICAgIC8vIEkga25v dworICAgICAgICAgICAgdmFyIGk7CisgICAgICAgICAgICBmb3IgKGkgPSAw OyBpIDwgdGhpcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlm ICh0aGlzW2ldID09PSBvKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy biBpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg ICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBm dW5jdGlvbiBkYXlzSW5Nb250aCh5ZWFyLCBtb250aCkgeworICAgICAgICBy ZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGggKyAxLCAwKSku Z2V0VVRDRGF0ZSgpOworICAgIH0KKworICAgIC8vIEZPUk1BVFRJTkcKKwor ICAgIGFkZEZvcm1hdFRva2VuKCdNJywgWydNTScsIDJdLCAnTW8nLCBmdW5j dGlvbiAoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1vbnRoKCkgKyAxOwor ICAgIH0pOworCisgICAgYWRkRm9ybWF0VG9rZW4oJ01NTScsIDAsIDAsIGZ1 bmN0aW9uIChmb3JtYXQpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxl RGF0YSgpLm1vbnRoc1Nob3J0KHRoaXMsIGZvcm1hdCk7CisgICAgfSk7CisK KyAgICBhZGRGb3JtYXRUb2tlbignTU1NTScsIDAsIDAsIGZ1bmN0aW9uIChm b3JtYXQpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1v bnRocyh0aGlzLCBmb3JtYXQpOworICAgIH0pOworCisgICAgLy8gQUxJQVNF UworCisgICAgYWRkVW5pdEFsaWFzKCdtb250aCcsICdNJyk7CisKKyAgICAv LyBQUklPUklUWQorCisgICAgYWRkVW5pdFByaW9yaXR5KCdtb250aCcsIDgp OworCisgICAgLy8gUEFSU0lORworCisgICAgYWRkUmVnZXhUb2tlbignTScs ICAgIG1hdGNoMXRvMik7CisgICAgYWRkUmVnZXhUb2tlbignTU0nLCAgIG1h dGNoMXRvMiwgbWF0Y2gyKTsKKyAgICBhZGRSZWdleFRva2VuKCdNTU0nLCAg ZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHsKKyAgICAgICAgcmV0dXJu IGxvY2FsZS5tb250aHNTaG9ydFJlZ2V4KGlzU3RyaWN0KTsKKyAgICB9KTsK KyAgICBhZGRSZWdleFRva2VuKCdNTU1NJywgZnVuY3Rpb24gKGlzU3RyaWN0 LCBsb2NhbGUpIHsKKyAgICAgICAgcmV0dXJuIGxvY2FsZS5tb250aHNSZWdl eChpc1N0cmljdCk7CisgICAgfSk7CisKKyAgICBhZGRQYXJzZVRva2VuKFsn TScsICdNTSddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7CisgICAgICAg IGFycmF5W01PTlRIXSA9IHRvSW50KGlucHV0KSAtIDE7CisgICAgfSk7CisK KyAgICBhZGRQYXJzZVRva2VuKFsnTU1NJywgJ01NTU0nXSwgZnVuY3Rpb24g KGlucHV0LCBhcnJheSwgY29uZmlnLCB0b2tlbikgeworICAgICAgICB2YXIg bW9udGggPSBjb25maWcuX2xvY2FsZS5tb250aHNQYXJzZShpbnB1dCwgdG9r ZW4sIGNvbmZpZy5fc3RyaWN0KTsKKyAgICAgICAgLy8gaWYgd2UgZGlkbid0 IGZpbmQgYSBtb250aCBuYW1lLCBtYXJrIHRoZSBkYXRlIGFzIGludmFsaWQu CisgICAgICAgIGlmIChtb250aCAhPSBudWxsKSB7CisgICAgICAgICAgICBh cnJheVtNT05USF0gPSBtb250aDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg ICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmludmFsaWRNb250aCA9 IGlucHV0OworICAgICAgICB9CisgICAgfSk7CisKKyAgICAvLyBMT0NBTEVT CisKKyAgICB2YXIgTU9OVEhTX0lOX0ZPUk1BVCA9IC9EW29EXT8oXFtbXlxb XF1dKlxdfFxzKykrTU1NTT8vOworICAgIHZhciBkZWZhdWx0TG9jYWxlTW9u dGhzID0gJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVf SnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1i ZXInLnNwbGl0KCdfJyk7CisgICAgZnVuY3Rpb24gbG9jYWxlTW9udGhzICht LCBmb3JtYXQpIHsKKyAgICAgICAgaWYgKCFtKSB7CisgICAgICAgICAgICBy ZXR1cm4gdGhpcy5fbW9udGhzOworICAgICAgICB9CisgICAgICAgIHJldHVy biBpc0FycmF5KHRoaXMuX21vbnRocykgPyB0aGlzLl9tb250aHNbbS5tb250 aCgpXSA6CisgICAgICAgICAgICB0aGlzLl9tb250aHNbKHRoaXMuX21vbnRo cy5pc0Zvcm1hdCB8fCBNT05USFNfSU5fRk9STUFUKS50ZXN0KGZvcm1hdCkg PyAnZm9ybWF0JyA6ICdzdGFuZGFsb25lJ11bbS5tb250aCgpXTsKKyAgICB9 CisKKyAgICB2YXIgZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0ID0gJ0phbl9G ZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5z cGxpdCgnXycpOworICAgIGZ1bmN0aW9uIGxvY2FsZU1vbnRoc1Nob3J0ICht LCBmb3JtYXQpIHsKKyAgICAgICAgaWYgKCFtKSB7CisgICAgICAgICAgICBy ZXR1cm4gdGhpcy5fbW9udGhzU2hvcnQ7CisgICAgICAgIH0KKyAgICAgICAg cmV0dXJuIGlzQXJyYXkodGhpcy5fbW9udGhzU2hvcnQpID8gdGhpcy5fbW9u dGhzU2hvcnRbbS5tb250aCgpXSA6CisgICAgICAgICAgICB0aGlzLl9tb250 aHNTaG9ydFtNT05USFNfSU5fRk9STUFULnRlc3QoZm9ybWF0KSA/ICdmb3Jt YXQnIDogJ3N0YW5kYWxvbmUnXVttLm1vbnRoKCldOworICAgIH0KKworICAg IGZ1bmN0aW9uIHVuaXRzX21vbnRoX19oYW5kbGVTdHJpY3RQYXJzZShtb250 aE5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7CisgICAgICAgIHZhciBpLCBpaSwg bW9tLCBsbGMgPSBtb250aE5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKTsKKyAg ICAgICAgaWYgKCF0aGlzLl9tb250aHNQYXJzZSkgeworICAgICAgICAgICAg Ly8gdGhpcyBpcyBub3QgdXNlZAorICAgICAgICAgICAgdGhpcy5fbW9udGhz UGFyc2UgPSBbXTsKKyAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJz ZSA9IFtdOworICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZSA9 IFtdOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyArK2kpIHsK KyAgICAgICAgICAgICAgICBtb20gPSBjcmVhdGVfdXRjX19jcmVhdGVVVEMo WzIwMDAsIGldKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRo c1BhcnNlW2ldID0gdGhpcy5tb250aHNTaG9ydChtb20sICcnKS50b0xvY2Fs ZUxvd2VyQ2FzZSgpOworICAgICAgICAgICAgICAgIHRoaXMuX2xvbmdNb250 aHNQYXJzZVtpXSA9IHRoaXMubW9udGhzKG1vbSwgJycpLnRvTG9jYWxlTG93 ZXJDYXNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg ICBpZiAoc3RyaWN0KSB7CisgICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAn TU1NJykgeworICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRo aXMuX3Nob3J0TW9udGhzUGFyc2UsIGxsYyk7CisgICAgICAgICAgICAgICAg cmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDsKKyAgICAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhp cy5fbG9uZ01vbnRoc1BhcnNlLCBsbGMpOworICAgICAgICAgICAgICAgIHJl dHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7CisgICAgICAgICAgICB9Cisg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAn TU1NJykgeworICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRo aXMuX3Nob3J0TW9udGhzUGFyc2UsIGxsYyk7CisgICAgICAgICAgICAgICAg aWYgKGlpICE9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g aWk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlpID0g aW5kZXhPZi5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSwgbGxjKTsKKyAg ICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsOwor ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpaSA9IGlu ZGV4T2YuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsIGxsYyk7CisgICAg ICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkgeworICAgICAgICAgICAgICAg ICAgICByZXR1cm4gaWk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFy c2UsIGxsYyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/ IGlpIDogbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K KworICAgIGZ1bmN0aW9uIGxvY2FsZU1vbnRoc1BhcnNlIChtb250aE5hbWUs IGZvcm1hdCwgc3RyaWN0KSB7CisgICAgICAgIHZhciBpLCBtb20sIHJlZ2V4 OworCisgICAgICAgIGlmICh0aGlzLl9tb250aHNQYXJzZUV4YWN0KSB7Cisg ICAgICAgICAgICByZXR1cm4gdW5pdHNfbW9udGhfX2hhbmRsZVN0cmljdFBh cnNlLmNhbGwodGhpcywgbW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCk7Cisg ICAgICAgIH0KKworICAgICAgICBpZiAoIXRoaXMuX21vbnRoc1BhcnNlKSB7 CisgICAgICAgICAgICB0aGlzLl9tb250aHNQYXJzZSA9IFtdOworICAgICAg ICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlID0gW107CisgICAgICAgICAg ICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlID0gW107CisgICAgICAgIH0KKwor ICAgICAgICAvLyBUT0RPOiBhZGQgc29ydGluZworICAgICAgICAvLyBTb3J0 aW5nIG1ha2VzIHN1cmUgaWYgb25lIG1vbnRoIChvciBhYmJyKSBpcyBhIHBy ZWZpeCBvZiBhbm90aGVyCisgICAgICAgIC8vIHNlZSBzb3J0aW5nIGluIGNv bXB1dGVNb250aHNQYXJzZQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7 IGkrKykgeworICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2Ug ZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5CisgICAgICAgICAgICBtb20gPSBjcmVh dGVfdXRjX19jcmVhdGVVVEMoWzIwMDAsIGldKTsKKyAgICAgICAgICAgIGlm IChzdHJpY3QgJiYgIXRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSkgeworICAg ICAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSA9IG5ldyBS ZWdFeHAoJ14nICsgdGhpcy5tb250aHMobW9tLCAnJykucmVwbGFjZSgnLics ICcnKSArICckJywgJ2knKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9zaG9y dE1vbnRoc1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLm1vbnRo c1Nob3J0KG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnJykgKyAnJCcsICdpJyk7 CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXN0cmljdCAmJiAh dGhpcy5fbW9udGhzUGFyc2VbaV0pIHsKKyAgICAgICAgICAgICAgICByZWdl eCA9ICdeJyArIHRoaXMubW9udGhzKG1vbSwgJycpICsgJ3xeJyArIHRoaXMu bW9udGhzU2hvcnQobW9tLCAnJyk7CisgICAgICAgICAgICAgICAgdGhpcy5f bW9udGhzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKHJlZ2V4LnJlcGxhY2UoJy4n LCAnJyksICdpJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyB0 ZXN0IHRoZSByZWdleAorICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBmb3Jt YXQgPT09ICdNTU1NJyAmJiB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0udGVz dChtb250aE5hbWUpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7Cisg ICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdN TU0nICYmIHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbaV0udGVzdChtb250aE5h bWUpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAg ICB9IGVsc2UgaWYgKCFzdHJpY3QgJiYgdGhpcy5fbW9udGhzUGFyc2VbaV0u dGVzdChtb250aE5hbWUpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7 CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBN T01FTlRTCisKKyAgICBmdW5jdGlvbiBzZXRNb250aCAobW9tLCB2YWx1ZSkg eworICAgICAgICB2YXIgZGF5T2ZNb250aDsKKworICAgICAgICBpZiAoIW1v bS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIC8vIE5vIG9wCisgICAgICAg ICAgICByZXR1cm4gbW9tOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHR5 cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHsKKyAgICAgICAgICAgIGlmICgv XlxkKyQvLnRlc3QodmFsdWUpKSB7CisgICAgICAgICAgICAgICAgdmFsdWUg PSB0b0ludCh2YWx1ZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgICAgIHZhbHVlID0gbW9tLmxvY2FsZURhdGEoKS5tb250aHNQYXJz ZSh2YWx1ZSk7CisgICAgICAgICAgICAgICAgLy8gVE9ETzogQW5vdGhlciBz aWxlbnQgZmFpbHVyZT8KKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZh bHVlICE9PSAnbnVtYmVyJykgeworICAgICAgICAgICAgICAgICAgICByZXR1 cm4gbW9tOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg ICAgICAgfQorCisgICAgICAgIGRheU9mTW9udGggPSBNYXRoLm1pbihtb20u ZGF0ZSgpLCBkYXlzSW5Nb250aChtb20ueWVhcigpLCB2YWx1ZSkpOworICAg ICAgICBtb20uX2RbJ3NldCcgKyAobW9tLl9pc1VUQyA/ICdVVEMnIDogJycp ICsgJ01vbnRoJ10odmFsdWUsIGRheU9mTW9udGgpOworICAgICAgICByZXR1 cm4gbW9tOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldFNldE1vbnRoICh2 YWx1ZSkgeworICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkgeworICAgICAg ICAgICAgc2V0TW9udGgodGhpcywgdmFsdWUpOworICAgICAgICAgICAgdXRp bHNfaG9va3NfX2hvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCB0cnVlKTsKKyAg ICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgcmV0dXJuIGdldF9zZXRfX2dldCh0aGlzLCAnTW9udGgnKTsK KyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIGdldERheXNJbk1v bnRoICgpIHsKKyAgICAgICAgcmV0dXJuIGRheXNJbk1vbnRoKHRoaXMueWVh cigpLCB0aGlzLm1vbnRoKCkpOworICAgIH0KKworICAgIHZhciBkZWZhdWx0 TW9udGhzU2hvcnRSZWdleCA9IG1hdGNoV29yZDsKKyAgICBmdW5jdGlvbiBt b250aHNTaG9ydFJlZ2V4IChpc1N0cmljdCkgeworICAgICAgICBpZiAodGhp cy5fbW9udGhzUGFyc2VFeGFjdCkgeworICAgICAgICAgICAgaWYgKCFoYXNP d25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkgeworICAgICAgICAgICAg ICAgIGNvbXB1dGVNb250aHNQYXJzZS5jYWxsKHRoaXMpOworICAgICAgICAg ICAgfQorICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7CisgICAgICAgICAg ICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg7Cisg ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiB0 aGlzLl9tb250aHNTaG9ydFJlZ2V4OworICAgICAgICAgICAgfQorICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMs ICdfbW9udGhzU2hvcnRSZWdleCcpKSB7CisgICAgICAgICAgICAgICAgdGhp cy5fbW9udGhzU2hvcnRSZWdleCA9IGRlZmF1bHRNb250aHNTaG9ydFJlZ2V4 OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21v bnRoc1Nob3J0U3RyaWN0UmVnZXggJiYgaXNTdHJpY3QgPworICAgICAgICAg ICAgICAgIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggOiB0aGlzLl9t b250aHNTaG9ydFJlZ2V4OworICAgICAgICB9CisgICAgfQorCisgICAgdmFy IGRlZmF1bHRNb250aHNSZWdleCA9IG1hdGNoV29yZDsKKyAgICBmdW5jdGlv biB1bml0c19tb250aF9fbW9udGhzUmVnZXggKGlzU3RyaWN0KSB7CisgICAg ICAgIGlmICh0aGlzLl9tb250aHNQYXJzZUV4YWN0KSB7CisgICAgICAgICAg ICBpZiAoIWhhc093blByb3AodGhpcywgJ19tb250aHNSZWdleCcpKSB7Cisg ICAgICAgICAgICAgICAgY29tcHV0ZU1vbnRoc1BhcnNlLmNhbGwodGhpcyk7 CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHsK KyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU3RyaWN0UmVn ZXg7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJl dHVybiB0aGlzLl9tb250aHNSZWdleDsKKyAgICAgICAgICAgIH0KKyAgICAg ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlz LCAnX21vbnRoc1JlZ2V4JykpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9t b250aHNSZWdleCA9IGRlZmF1bHRNb250aHNSZWdleDsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTdHJpY3RSZWdl eCAmJiBpc1N0cmljdCA/CisgICAgICAgICAgICAgICAgdGhpcy5fbW9udGhz U3RyaWN0UmVnZXggOiB0aGlzLl9tb250aHNSZWdleDsKKyAgICAgICAgfQor ICAgIH0KKworICAgIGZ1bmN0aW9uIGNvbXB1dGVNb250aHNQYXJzZSAoKSB7 CisgICAgICAgIGZ1bmN0aW9uIGNtcExlblJldihhLCBiKSB7CisgICAgICAg ICAgICByZXR1cm4gYi5sZW5ndGggLSBhLmxlbmd0aDsKKyAgICAgICAgfQor CisgICAgICAgIHZhciBzaG9ydFBpZWNlcyA9IFtdLCBsb25nUGllY2VzID0g W10sIG1peGVkUGllY2VzID0gW10sCisgICAgICAgICAgICBpLCBtb207Cisg ICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7CisgICAgICAgICAg ICAvLyBtYWtlIHRoZSByZWdleCBpZiB3ZSBkb24ndCBoYXZlIGl0IGFscmVh ZHkKKyAgICAgICAgICAgIG1vbSA9IGNyZWF0ZV91dGNfX2NyZWF0ZVVUQyhb MjAwMCwgaV0pOworICAgICAgICAgICAgc2hvcnRQaWVjZXMucHVzaCh0aGlz Lm1vbnRoc1Nob3J0KG1vbSwgJycpKTsKKyAgICAgICAgICAgIGxvbmdQaWVj ZXMucHVzaCh0aGlzLm1vbnRocyhtb20sICcnKSk7CisgICAgICAgICAgICBt aXhlZFBpZWNlcy5wdXNoKHRoaXMubW9udGhzKG1vbSwgJycpKTsKKyAgICAg ICAgICAgIG1peGVkUGllY2VzLnB1c2godGhpcy5tb250aHNTaG9ydChtb20s ICcnKSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gU29ydGluZyBtYWtlcyBz dXJlIGlmIG9uZSBtb250aCAob3IgYWJicikgaXMgYSBwcmVmaXggb2YgYW5v dGhlciBpdAorICAgICAgICAvLyB3aWxsIG1hdGNoIHRoZSBsb25nZXIgcGll Y2UuCisgICAgICAgIHNob3J0UGllY2VzLnNvcnQoY21wTGVuUmV2KTsKKyAg ICAgICAgbG9uZ1BpZWNlcy5zb3J0KGNtcExlblJldik7CisgICAgICAgIG1p eGVkUGllY2VzLnNvcnQoY21wTGVuUmV2KTsKKyAgICAgICAgZm9yIChpID0g MDsgaSA8IDEyOyBpKyspIHsKKyAgICAgICAgICAgIHNob3J0UGllY2VzW2ld ID0gcmVnZXhFc2NhcGUoc2hvcnRQaWVjZXNbaV0pOworICAgICAgICAgICAg bG9uZ1BpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKGxvbmdQaWVjZXNbaV0pOwor ICAgICAgICB9CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNDsgaSsrKSB7 CisgICAgICAgICAgICBtaXhlZFBpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKG1p eGVkUGllY2VzW2ldKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX21v bnRoc1JlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbWl4ZWRQaWVjZXMuam9p bignfCcpICsgJyknLCAnaScpOworICAgICAgICB0aGlzLl9tb250aHNTaG9y dFJlZ2V4ID0gdGhpcy5fbW9udGhzUmVnZXg7CisgICAgICAgIHRoaXMuX21v bnRoc1N0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbG9uZ1BpZWNl cy5qb2luKCd8JykgKyAnKScsICdpJyk7CisgICAgICAgIHRoaXMuX21vbnRo c1Nob3J0U3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBzaG9ydFBp ZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7CisgICAgfQorCisgICAgLy8g Rk9STUFUVElORworCisgICAgYWRkRm9ybWF0VG9rZW4oJ1knLCAwLCAwLCBm dW5jdGlvbiAoKSB7CisgICAgICAgIHZhciB5ID0gdGhpcy55ZWFyKCk7Cisg ICAgICAgIHJldHVybiB5IDw9IDk5OTkgPyAnJyArIHkgOiAnKycgKyB5Owor ICAgIH0pOworCisgICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWScsIDJdLCAw LCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnllYXIoKSAl IDEwMDsKKyAgICB9KTsKKworICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVlZ WScsICAgNF0sICAgICAgIDAsICd5ZWFyJyk7CisgICAgYWRkRm9ybWF0VG9r ZW4oMCwgWydZWVlZWScsICA1XSwgICAgICAgMCwgJ3llYXInKTsKKyAgICBh ZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVlZWScsIDYsIHRydWVdLCAwLCAneWVh cicpOworCisgICAgLy8gQUxJQVNFUworCisgICAgYWRkVW5pdEFsaWFzKCd5 ZWFyJywgJ3knKTsKKworICAgIC8vIFBSSU9SSVRJRVMKKworICAgIGFkZFVu aXRQcmlvcml0eSgneWVhcicsIDEpOworCisgICAgLy8gUEFSU0lORworCisg ICAgYWRkUmVnZXhUb2tlbignWScsICAgICAgbWF0Y2hTaWduZWQpOworICAg IGFkZFJlZ2V4VG9rZW4oJ1lZJywgICAgIG1hdGNoMXRvMiwgbWF0Y2gyKTsK KyAgICBhZGRSZWdleFRva2VuKCdZWVlZJywgICBtYXRjaDF0bzQsIG1hdGNo NCk7CisgICAgYWRkUmVnZXhUb2tlbignWVlZWVknLCAgbWF0Y2gxdG82LCBt YXRjaDYpOworICAgIGFkZFJlZ2V4VG9rZW4oJ1lZWVlZWScsIG1hdGNoMXRv NiwgbWF0Y2g2KTsKKworICAgIGFkZFBhcnNlVG9rZW4oWydZWVlZWScsICdZ WVlZWVknXSwgWUVBUik7CisgICAgYWRkUGFyc2VUb2tlbignWVlZWScsIGZ1 bmN0aW9uIChpbnB1dCwgYXJyYXkpIHsKKyAgICAgICAgYXJyYXlbWUVBUl0g PSBpbnB1dC5sZW5ndGggPT09IDIgPyB1dGlsc19ob29rc19faG9va3MucGFy c2VUd29EaWdpdFllYXIoaW5wdXQpIDogdG9JbnQoaW5wdXQpOworICAgIH0p OworICAgIGFkZFBhcnNlVG9rZW4oJ1lZJywgZnVuY3Rpb24gKGlucHV0LCBh cnJheSkgeworICAgICAgICBhcnJheVtZRUFSXSA9IHV0aWxzX2hvb2tzX19o b29rcy5wYXJzZVR3b0RpZ2l0WWVhcihpbnB1dCk7CisgICAgfSk7CisgICAg YWRkUGFyc2VUb2tlbignWScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHsK KyAgICAgICAgYXJyYXlbWUVBUl0gPSBwYXJzZUludChpbnB1dCwgMTApOwor ICAgIH0pOworCisgICAgLy8gSEVMUEVSUworCisgICAgZnVuY3Rpb24gZGF5 c0luWWVhcih5ZWFyKSB7CisgICAgICAgIHJldHVybiBpc0xlYXBZZWFyKHll YXIpID8gMzY2IDogMzY1OworICAgIH0KKworICAgIGZ1bmN0aW9uIGlzTGVh cFllYXIoeWVhcikgeworICAgICAgICByZXR1cm4gKHllYXIgJSA0ID09PSAw ICYmIHllYXIgJSAxMDAgIT09IDApIHx8IHllYXIgJSA0MDAgPT09IDA7Cisg ICAgfQorCisgICAgLy8gSE9PS1MKKworICAgIHV0aWxzX2hvb2tzX19ob29r cy5wYXJzZVR3b0RpZ2l0WWVhciA9IGZ1bmN0aW9uIChpbnB1dCkgeworICAg ICAgICByZXR1cm4gdG9JbnQoaW5wdXQpICsgKHRvSW50KGlucHV0KSA+IDY4 ID8gMTkwMCA6IDIwMDApOworICAgIH07CisKKyAgICAvLyBNT01FTlRTCisK KyAgICB2YXIgZ2V0U2V0WWVhciA9IG1ha2VHZXRTZXQoJ0Z1bGxZZWFyJywg dHJ1ZSk7CisKKyAgICBmdW5jdGlvbiBnZXRJc0xlYXBZZWFyICgpIHsKKyAg ICAgICAgcmV0dXJuIGlzTGVhcFllYXIodGhpcy55ZWFyKCkpOworICAgIH0K KworICAgIGZ1bmN0aW9uIGNyZWF0ZURhdGUgKHksIG0sIGQsIGgsIE0sIHMs IG1zKSB7CisgICAgICAgIC8vY2FuJ3QganVzdCBhcHBseSgpIHRvIGNyZWF0 ZSBhIGRhdGU6CisgICAgICAgIC8vaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29t L3F1ZXN0aW9ucy8xODEzNDgvaW5zdGFudGlhdGluZy1hLWphdmFzY3JpcHQt b2JqZWN0LWJ5LWNhbGxpbmctcHJvdG90eXBlLWNvbnN0cnVjdG9yLWFwcGx5 CisgICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoeSwgbSwgZCwgaCwgTSwg cywgbXMpOworCisgICAgICAgIC8vdGhlIGRhdGUgY29uc3RydWN0b3IgcmVt YXBzIHllYXJzIDAtOTkgdG8gMTkwMC0xOTk5CisgICAgICAgIGlmICh5IDwg MTAwICYmIHkgPj0gMCAmJiBpc0Zpbml0ZShkYXRlLmdldEZ1bGxZZWFyKCkp KSB7CisgICAgICAgICAgICBkYXRlLnNldEZ1bGxZZWFyKHkpOworICAgICAg ICB9CisgICAgICAgIHJldHVybiBkYXRlOworICAgIH0KKworICAgIGZ1bmN0 aW9uIGNyZWF0ZVVUQ0RhdGUgKHkpIHsKKyAgICAgICAgdmFyIGRhdGUgPSBu ZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxsLCBhcmd1bWVudHMpKTsKKwor ICAgICAgICAvL3RoZSBEYXRlLlVUQyBmdW5jdGlvbiByZW1hcHMgeWVhcnMg MC05OSB0byAxOTAwLTE5OTkKKyAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+ PSAwICYmIGlzRmluaXRlKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSkpIHsKKyAg ICAgICAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeSk7CisgICAgICAgIH0K KyAgICAgICAgcmV0dXJuIGRhdGU7CisgICAgfQorCisgICAgLy8gc3RhcnQt b2YtZmlyc3Qtd2VlayAtIHN0YXJ0LW9mLXllYXIKKyAgICBmdW5jdGlvbiBm aXJzdFdlZWtPZmZzZXQoeWVhciwgZG93LCBkb3kpIHsKKyAgICAgICAgdmFy IC8vIGZpcnN0LXdlZWsgZGF5IC0tIHdoaWNoIGphbnVhcnkgaXMgYWx3YXlz IGluIHRoZSBmaXJzdCB3ZWVrICg0IGZvciBpc28sIDEgZm9yIG90aGVyKQor ICAgICAgICAgICAgZndkID0gNyArIGRvdyAtIGRveSwKKyAgICAgICAgICAg IC8vIGZpcnN0LXdlZWsgZGF5IGxvY2FsIHdlZWtkYXkgLS0gd2hpY2ggbG9j YWwgd2Vla2RheSBpcyBmd2QKKyAgICAgICAgICAgIGZ3ZGx3ID0gKDcgKyBj cmVhdGVVVENEYXRlKHllYXIsIDAsIGZ3ZCkuZ2V0VVRDRGF5KCkgLSBkb3cp ICUgNzsKKworICAgICAgICByZXR1cm4gLWZ3ZGx3ICsgZndkIC0gMTsKKyAg ICB9CisKKyAgICAvL2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNP X3dlZWtfZGF0ZSNDYWxjdWxhdGluZ19hX2RhdGVfZ2l2ZW5fdGhlX3llYXIu MkNfd2Vla19udW1iZXJfYW5kX3dlZWtkYXkKKyAgICBmdW5jdGlvbiBkYXlP ZlllYXJGcm9tV2Vla3MoeWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kp IHsKKyAgICAgICAgdmFyIGxvY2FsV2Vla2RheSA9ICg3ICsgd2Vla2RheSAt IGRvdykgJSA3LAorICAgICAgICAgICAgd2Vla09mZnNldCA9IGZpcnN0V2Vl a09mZnNldCh5ZWFyLCBkb3csIGRveSksCisgICAgICAgICAgICBkYXlPZlll YXIgPSAxICsgNyAqICh3ZWVrIC0gMSkgKyBsb2NhbFdlZWtkYXkgKyB3ZWVr T2Zmc2V0LAorICAgICAgICAgICAgcmVzWWVhciwgcmVzRGF5T2ZZZWFyOwor CisgICAgICAgIGlmIChkYXlPZlllYXIgPD0gMCkgeworICAgICAgICAgICAg cmVzWWVhciA9IHllYXIgLSAxOworICAgICAgICAgICAgcmVzRGF5T2ZZZWFy ID0gZGF5c0luWWVhcihyZXNZZWFyKSArIGRheU9mWWVhcjsKKyAgICAgICAg fSBlbHNlIGlmIChkYXlPZlllYXIgPiBkYXlzSW5ZZWFyKHllYXIpKSB7Cisg ICAgICAgICAgICByZXNZZWFyID0geWVhciArIDE7CisgICAgICAgICAgICBy ZXNEYXlPZlllYXIgPSBkYXlPZlllYXIgLSBkYXlzSW5ZZWFyKHllYXIpOwor ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzWWVhciA9IHllYXI7 CisgICAgICAgICAgICByZXNEYXlPZlllYXIgPSBkYXlPZlllYXI7CisgICAg ICAgIH0KKworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgeWVhcjog cmVzWWVhciwKKyAgICAgICAgICAgIGRheU9mWWVhcjogcmVzRGF5T2ZZZWFy CisgICAgICAgIH07CisgICAgfQorCisgICAgZnVuY3Rpb24gd2Vla09mWWVh cihtb20sIGRvdywgZG95KSB7CisgICAgICAgIHZhciB3ZWVrT2Zmc2V0ID0g Zmlyc3RXZWVrT2Zmc2V0KG1vbS55ZWFyKCksIGRvdywgZG95KSwKKyAgICAg ICAgICAgIHdlZWsgPSBNYXRoLmZsb29yKChtb20uZGF5T2ZZZWFyKCkgLSB3 ZWVrT2Zmc2V0IC0gMSkgLyA3KSArIDEsCisgICAgICAgICAgICByZXNXZWVr LCByZXNZZWFyOworCisgICAgICAgIGlmICh3ZWVrIDwgMSkgeworICAgICAg ICAgICAgcmVzWWVhciA9IG1vbS55ZWFyKCkgLSAxOworICAgICAgICAgICAg cmVzV2VlayA9IHdlZWsgKyB3ZWVrc0luWWVhcihyZXNZZWFyLCBkb3csIGRv eSk7CisgICAgICAgIH0gZWxzZSBpZiAod2VlayA+IHdlZWtzSW5ZZWFyKG1v bS55ZWFyKCksIGRvdywgZG95KSkgeworICAgICAgICAgICAgcmVzV2VlayA9 IHdlZWsgLSB3ZWVrc0luWWVhcihtb20ueWVhcigpLCBkb3csIGRveSk7Cisg ICAgICAgICAgICByZXNZZWFyID0gbW9tLnllYXIoKSArIDE7CisgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICByZXNZZWFyID0gbW9tLnllYXIoKTsK KyAgICAgICAgICAgIHJlc1dlZWsgPSB3ZWVrOworICAgICAgICB9CisKKyAg ICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHdlZWs6IHJlc1dlZWssCisg ICAgICAgICAgICB5ZWFyOiByZXNZZWFyCisgICAgICAgIH07CisgICAgfQor CisgICAgZnVuY3Rpb24gd2Vla3NJblllYXIoeWVhciwgZG93LCBkb3kpIHsK KyAgICAgICAgdmFyIHdlZWtPZmZzZXQgPSBmaXJzdFdlZWtPZmZzZXQoeWVh ciwgZG93LCBkb3kpLAorICAgICAgICAgICAgd2Vla09mZnNldE5leHQgPSBm aXJzdFdlZWtPZmZzZXQoeWVhciArIDEsIGRvdywgZG95KTsKKyAgICAgICAg cmV0dXJuIChkYXlzSW5ZZWFyKHllYXIpIC0gd2Vla09mZnNldCArIHdlZWtP ZmZzZXROZXh0KSAvIDc7CisgICAgfQorCisgICAgLy8gRk9STUFUVElORwor CisgICAgYWRkRm9ybWF0VG9rZW4oJ3cnLCBbJ3d3JywgMl0sICd3bycsICd3 ZWVrJyk7CisgICAgYWRkRm9ybWF0VG9rZW4oJ1cnLCBbJ1dXJywgMl0sICdX bycsICdpc29XZWVrJyk7CisKKyAgICAvLyBBTElBU0VTCisKKyAgICBhZGRV bml0QWxpYXMoJ3dlZWsnLCAndycpOworICAgIGFkZFVuaXRBbGlhcygnaXNv V2VlaycsICdXJyk7CisKKyAgICAvLyBQUklPUklUSUVTCisKKyAgICBhZGRV bml0UHJpb3JpdHkoJ3dlZWsnLCA1KTsKKyAgICBhZGRVbml0UHJpb3JpdHko J2lzb1dlZWsnLCA1KTsKKworICAgIC8vIFBBUlNJTkcKKworICAgIGFkZFJl Z2V4VG9rZW4oJ3cnLCAgbWF0Y2gxdG8yKTsKKyAgICBhZGRSZWdleFRva2Vu KCd3dycsIG1hdGNoMXRvMiwgbWF0Y2gyKTsKKyAgICBhZGRSZWdleFRva2Vu KCdXJywgIG1hdGNoMXRvMik7CisgICAgYWRkUmVnZXhUb2tlbignV1cnLCBt YXRjaDF0bzIsIG1hdGNoMik7CisKKyAgICBhZGRXZWVrUGFyc2VUb2tlbihb J3cnLCAnd3cnLCAnVycsICdXVyddLCBmdW5jdGlvbiAoaW5wdXQsIHdlZWss IGNvbmZpZywgdG9rZW4pIHsKKyAgICAgICAgd2Vla1t0b2tlbi5zdWJzdHIo MCwgMSldID0gdG9JbnQoaW5wdXQpOworICAgIH0pOworCisgICAgLy8gSEVM UEVSUworCisgICAgLy8gTE9DQUxFUworCisgICAgZnVuY3Rpb24gbG9jYWxl V2VlayAobW9tKSB7CisgICAgICAgIHJldHVybiB3ZWVrT2ZZZWFyKG1vbSwg dGhpcy5fd2Vlay5kb3csIHRoaXMuX3dlZWsuZG95KS53ZWVrOworICAgIH0K KworICAgIHZhciBkZWZhdWx0TG9jYWxlV2VlayA9IHsKKyAgICAgICAgZG93 IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsu CisgICAgICAgIGRveSA6IDYgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMg SmFuIDFzdCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci4KKyAgICB9 OworCisgICAgZnVuY3Rpb24gbG9jYWxlRmlyc3REYXlPZldlZWsgKCkgewor ICAgICAgICByZXR1cm4gdGhpcy5fd2Vlay5kb3c7CisgICAgfQorCisgICAg ZnVuY3Rpb24gbG9jYWxlRmlyc3REYXlPZlllYXIgKCkgeworICAgICAgICBy ZXR1cm4gdGhpcy5fd2Vlay5kb3k7CisgICAgfQorCisgICAgLy8gTU9NRU5U UworCisgICAgZnVuY3Rpb24gZ2V0U2V0V2VlayAoaW5wdXQpIHsKKyAgICAg ICAgdmFyIHdlZWsgPSB0aGlzLmxvY2FsZURhdGEoKS53ZWVrKHRoaXMpOwor ICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHdlZWsgOiB0aGlzLmFk ZCgoaW5wdXQgLSB3ZWVrKSAqIDcsICdkJyk7CisgICAgfQorCisgICAgZnVu Y3Rpb24gZ2V0U2V0SVNPV2VlayAoaW5wdXQpIHsKKyAgICAgICAgdmFyIHdl ZWsgPSB3ZWVrT2ZZZWFyKHRoaXMsIDEsIDQpLndlZWs7CisgICAgICAgIHJl dHVybiBpbnB1dCA9PSBudWxsID8gd2VlayA6IHRoaXMuYWRkKChpbnB1dCAt IHdlZWspICogNywgJ2QnKTsKKyAgICB9CisKKyAgICAvLyBGT1JNQVRUSU5H CisKKyAgICBhZGRGb3JtYXRUb2tlbignZCcsIDAsICdkbycsICdkYXknKTsK KworICAgIGFkZEZvcm1hdFRva2VuKCdkZCcsIDAsIDAsIGZ1bmN0aW9uIChm b3JtYXQpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndl ZWtkYXlzTWluKHRoaXMsIGZvcm1hdCk7CisgICAgfSk7CisKKyAgICBhZGRG b3JtYXRUb2tlbignZGRkJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkgewor ICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNTaG9y dCh0aGlzLCBmb3JtYXQpOworICAgIH0pOworCisgICAgYWRkRm9ybWF0VG9r ZW4oJ2RkZGQnLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7CisgICAgICAg IHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5cyh0aGlzLCBmb3Jt YXQpOworICAgIH0pOworCisgICAgYWRkRm9ybWF0VG9rZW4oJ2UnLCAwLCAw LCAnd2Vla2RheScpOworICAgIGFkZEZvcm1hdFRva2VuKCdFJywgMCwgMCwg J2lzb1dlZWtkYXknKTsKKworICAgIC8vIEFMSUFTRVMKKworICAgIGFkZFVu aXRBbGlhcygnZGF5JywgJ2QnKTsKKyAgICBhZGRVbml0QWxpYXMoJ3dlZWtk YXknLCAnZScpOworICAgIGFkZFVuaXRBbGlhcygnaXNvV2Vla2RheScsICdF Jyk7CisKKyAgICAvLyBQUklPUklUWQorICAgIGFkZFVuaXRQcmlvcml0eSgn ZGF5JywgMTEpOworICAgIGFkZFVuaXRQcmlvcml0eSgnd2Vla2RheScsIDEx KTsKKyAgICBhZGRVbml0UHJpb3JpdHkoJ2lzb1dlZWtkYXknLCAxMSk7CisK KyAgICAvLyBQQVJTSU5HCisKKyAgICBhZGRSZWdleFRva2VuKCdkJywgICAg bWF0Y2gxdG8yKTsKKyAgICBhZGRSZWdleFRva2VuKCdlJywgICAgbWF0Y2gx dG8yKTsKKyAgICBhZGRSZWdleFRva2VuKCdFJywgICAgbWF0Y2gxdG8yKTsK KyAgICBhZGRSZWdleFRva2VuKCdkZCcsICAgZnVuY3Rpb24gKGlzU3RyaWN0 LCBsb2NhbGUpIHsKKyAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c01p blJlZ2V4KGlzU3RyaWN0KTsKKyAgICB9KTsKKyAgICBhZGRSZWdleFRva2Vu KCdkZGQnLCAgIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7CisgICAg ICAgIHJldHVybiBsb2NhbGUud2Vla2RheXNTaG9ydFJlZ2V4KGlzU3RyaWN0 KTsKKyAgICB9KTsKKyAgICBhZGRSZWdleFRva2VuKCdkZGRkJywgICBmdW5j dGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkgeworICAgICAgICByZXR1cm4gbG9j YWxlLndlZWtkYXlzUmVnZXgoaXNTdHJpY3QpOworICAgIH0pOworCisgICAg YWRkV2Vla1BhcnNlVG9rZW4oWydkZCcsICdkZGQnLCAnZGRkZCddLCBmdW5j dGlvbiAoaW5wdXQsIHdlZWssIGNvbmZpZywgdG9rZW4pIHsKKyAgICAgICAg dmFyIHdlZWtkYXkgPSBjb25maWcuX2xvY2FsZS53ZWVrZGF5c1BhcnNlKGlu cHV0LCB0b2tlbiwgY29uZmlnLl9zdHJpY3QpOworICAgICAgICAvLyBpZiB3 ZSBkaWRuJ3QgZ2V0IGEgd2Vla2RheSBuYW1lLCBtYXJrIHRoZSBkYXRlIGFz IGludmFsaWQKKyAgICAgICAgaWYgKHdlZWtkYXkgIT0gbnVsbCkgeworICAg ICAgICAgICAgd2Vlay5kID0gd2Vla2RheTsKKyAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmludmFsaWRX ZWVrZGF5ID0gaW5wdXQ7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGFk ZFdlZWtQYXJzZVRva2VuKFsnZCcsICdlJywgJ0UnXSwgZnVuY3Rpb24gKGlu cHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7CisgICAgICAgIHdlZWtbdG9r ZW5dID0gdG9JbnQoaW5wdXQpOworICAgIH0pOworCisgICAgLy8gSEVMUEVS UworCisgICAgZnVuY3Rpb24gcGFyc2VXZWVrZGF5KGlucHV0LCBsb2NhbGUp IHsKKyAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHsK KyAgICAgICAgICAgIHJldHVybiBpbnB1dDsKKyAgICAgICAgfQorCisgICAg ICAgIGlmICghaXNOYU4oaW5wdXQpKSB7CisgICAgICAgICAgICByZXR1cm4g cGFyc2VJbnQoaW5wdXQsIDEwKTsKKyAgICAgICAgfQorCisgICAgICAgIGlu cHV0ID0gbG9jYWxlLndlZWtkYXlzUGFyc2UoaW5wdXQpOworICAgICAgICBp ZiAodHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJykgeworICAgICAgICAgICAg cmV0dXJuIGlucHV0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51 bGw7CisgICAgfQorCisgICAgZnVuY3Rpb24gcGFyc2VJc29XZWVrZGF5KGlu cHV0LCBsb2NhbGUpIHsKKyAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0g J3N0cmluZycpIHsKKyAgICAgICAgICAgIHJldHVybiBsb2NhbGUud2Vla2Rh eXNQYXJzZShpbnB1dCkgJSA3IHx8IDc7CisgICAgICAgIH0KKyAgICAgICAg cmV0dXJuIGlzTmFOKGlucHV0KSA/IG51bGwgOiBpbnB1dDsKKyAgICB9CisK KyAgICAvLyBMT0NBTEVTCisKKyAgICB2YXIgZGVmYXVsdExvY2FsZVdlZWtk YXlzID0gJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNk YXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpOworICAgIGZ1bmN0aW9u IGxvY2FsZVdlZWtkYXlzIChtLCBmb3JtYXQpIHsKKyAgICAgICAgaWYgKCFt KSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXM7CisgICAg ICAgIH0KKyAgICAgICAgcmV0dXJuIGlzQXJyYXkodGhpcy5fd2Vla2RheXMp ID8gdGhpcy5fd2Vla2RheXNbbS5kYXkoKV0gOgorICAgICAgICAgICAgdGhp cy5fd2Vla2RheXNbdGhpcy5fd2Vla2RheXMuaXNGb3JtYXQudGVzdChmb3Jt YXQpID8gJ2Zvcm1hdCcgOiAnc3RhbmRhbG9uZSddW20uZGF5KCldOworICAg IH0KKworICAgIHZhciBkZWZhdWx0TG9jYWxlV2Vla2RheXNTaG9ydCA9ICdT dW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyk7CisgICAg ZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNTaG9ydCAobSkgeworICAgICAgICBy ZXR1cm4gKG0pID8gdGhpcy5fd2Vla2RheXNTaG9ydFttLmRheSgpXSA6IHRo aXMuX3dlZWtkYXlzU2hvcnQ7CisgICAgfQorCisgICAgdmFyIGRlZmF1bHRM b2NhbGVXZWVrZGF5c01pbiA9ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3Bs aXQoJ18nKTsKKyAgICBmdW5jdGlvbiBsb2NhbGVXZWVrZGF5c01pbiAobSkg eworICAgICAgICByZXR1cm4gKG0pID8gdGhpcy5fd2Vla2RheXNNaW5bbS5k YXkoKV0gOiB0aGlzLl93ZWVrZGF5c01pbjsKKyAgICB9CisKKyAgICBmdW5j dGlvbiBkYXlfb2Zfd2Vla19faGFuZGxlU3RyaWN0UGFyc2Uod2Vla2RheU5h bWUsIGZvcm1hdCwgc3RyaWN0KSB7CisgICAgICAgIHZhciBpLCBpaSwgbW9t LCBsbGMgPSB3ZWVrZGF5TmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpOworICAg ICAgICBpZiAoIXRoaXMuX3dlZWtkYXlzUGFyc2UpIHsKKyAgICAgICAgICAg IHRoaXMuX3dlZWtkYXlzUGFyc2UgPSBbXTsKKyAgICAgICAgICAgIHRoaXMu X3Nob3J0V2Vla2RheXNQYXJzZSA9IFtdOworICAgICAgICAgICAgdGhpcy5f bWluV2Vla2RheXNQYXJzZSA9IFtdOworCisgICAgICAgICAgICBmb3IgKGkg PSAwOyBpIDwgNzsgKytpKSB7CisgICAgICAgICAgICAgICAgbW9tID0gY3Jl YXRlX3V0Y19fY3JlYXRlVVRDKFsyMDAwLCAxXSkuZGF5KGkpOworICAgICAg ICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaV0gPSB0aGlzLndl ZWtkYXlzTWluKG1vbSwgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7CisgICAg ICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2ldID0gdGhp cy53ZWVrZGF5c1Nob3J0KG1vbSwgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7 CisgICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZVtpXSA9IHRo aXMud2Vla2RheXMobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdHJpY3Qp IHsKKyAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdkZGRkJykgeworICAg ICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlz UGFyc2UsIGxsYyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAt MSA/IGlpIDogbnVsbDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0 ID09PSAnZGRkJykgeworICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5j YWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTsKKyAgICAgICAg ICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsOworICAgICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2Yu Y2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpOworICAgICAgICAg ICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7CisgICAgICAg ICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoZm9y bWF0ID09PSAnZGRkZCcpIHsKKyAgICAgICAgICAgICAgICBpaSA9IGluZGV4 T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpOworICAgICAgICAg ICAgICAgIGlmIChpaSAhPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuIGlpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2Us IGxsYyk7CisgICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkgeworICAg ICAgICAgICAgICAgICAgICByZXR1cm4gaWk7CisgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21p bldlZWtkYXlzUGFyc2UsIGxsYyk7CisgICAgICAgICAgICAgICAgcmV0dXJu IGlpICE9PSAtMSA/IGlpIDogbnVsbDsKKyAgICAgICAgICAgIH0gZWxzZSBp ZiAoZm9ybWF0ID09PSAnZGRkJykgeworICAgICAgICAgICAgICAgIGlpID0g aW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTsK KyAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7CisgICAgICAgICAg ICAgICAgICAgIHJldHVybiBpaTsKKyAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fd2Vla2RheXNQ YXJzZSwgbGxjKTsKKyAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7 CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTsKKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhp cy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTsKKyAgICAgICAgICAgICAgICBy ZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsOworICAgICAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlz Ll9taW5XZWVrZGF5c1BhcnNlLCBsbGMpOworICAgICAgICAgICAgICAgIGlm IChpaSAhPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlp OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpaSA9IGlu ZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpOworICAgICAg ICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIGlpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFy c2UsIGxsYyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/ IGlpIDogbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K KworICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzUGFyc2UgKHdlZWtkYXlO YW1lLCBmb3JtYXQsIHN0cmljdCkgeworICAgICAgICB2YXIgaSwgbW9tLCBy ZWdleDsKKworICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0 KSB7CisgICAgICAgICAgICByZXR1cm4gZGF5X29mX3dlZWtfX2hhbmRsZVN0 cmljdFBhcnNlLmNhbGwodGhpcywgd2Vla2RheU5hbWUsIGZvcm1hdCwgc3Ry aWN0KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhpcy5fd2Vla2Rh eXNQYXJzZSkgeworICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZSA9 IFtdOworICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZSA9IFtd OworICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlID0gW107 CisgICAgICAgICAgICB0aGlzLl9mdWxsV2Vla2RheXNQYXJzZSA9IFtdOwor ICAgICAgICB9CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykg eworICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3Qg aGF2ZSBpdCBhbHJlYWR5CisKKyAgICAgICAgICAgIG1vbSA9IGNyZWF0ZV91 dGNfX2NyZWF0ZVVUQyhbMjAwMCwgMV0pLmRheShpKTsKKyAgICAgICAgICAg IGlmIChzdHJpY3QgJiYgIXRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldKSB7 CisgICAgICAgICAgICAgICAgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0g PSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXMobW9tLCAnJykucmVw bGFjZSgnLicsICdcLj8nKSArICckJywgJ2knKTsKKyAgICAgICAgICAgICAg ICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCde JyArIHRoaXMud2Vla2RheXNTaG9ydChtb20sICcnKS5yZXBsYWNlKCcuJywg J1wuPycpICsgJyQnLCAnaScpOworICAgICAgICAgICAgICAgIHRoaXMuX21p bldlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vl a2RheXNNaW4obW9tLCAnJykucmVwbGFjZSgnLicsICdcLj8nKSArICckJywg J2knKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghdGhpcy5f d2Vla2RheXNQYXJzZVtpXSkgeworICAgICAgICAgICAgICAgIHJlZ2V4ID0g J14nICsgdGhpcy53ZWVrZGF5cyhtb20sICcnKSArICd8XicgKyB0aGlzLndl ZWtkYXlzU2hvcnQobW9tLCAnJykgKyAnfF4nICsgdGhpcy53ZWVrZGF5c01p bihtb20sICcnKTsKKyAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1Bh cnNlW2ldID0gbmV3IFJlZ0V4cChyZWdleC5yZXBsYWNlKCcuJywgJycpLCAn aScpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gdGVzdCB0aGUg cmVnZXgKKyAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAn ZGRkZCcgJiYgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVr ZGF5TmFtZSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAg ICAgICAgIH0gZWxzZSBpZiAoc3RyaWN0ICYmIGZvcm1hdCA9PT0gJ2RkZCcg JiYgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5h bWUpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAg ICB9IGVsc2UgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdkZCcgJiYgdGhp cy5fbWluV2Vla2RheXNQYXJzZVtpXS50ZXN0KHdlZWtkYXlOYW1lKSkgewor ICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgfSBlbHNl IGlmICghc3RyaWN0ICYmIHRoaXMuX3dlZWtkYXlzUGFyc2VbaV0udGVzdCh3 ZWVrZGF5TmFtZSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIE1PTUVO VFMKKworICAgIGZ1bmN0aW9uIGdldFNldERheU9mV2VlayAoaW5wdXQpIHsK KyAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkgeworICAgICAgICAgICAg cmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOOworICAgICAgICB9 CisgICAgICAgIHZhciBkYXkgPSB0aGlzLl9pc1VUQyA/IHRoaXMuX2QuZ2V0 VVRDRGF5KCkgOiB0aGlzLl9kLmdldERheSgpOworICAgICAgICBpZiAoaW5w dXQgIT0gbnVsbCkgeworICAgICAgICAgICAgaW5wdXQgPSBwYXJzZVdlZWtk YXkoaW5wdXQsIHRoaXMubG9jYWxlRGF0YSgpKTsKKyAgICAgICAgICAgIHJl dHVybiB0aGlzLmFkZChpbnB1dCAtIGRheSwgJ2QnKTsKKyAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgIHJldHVybiBkYXk7CisgICAgICAgIH0KKyAg ICB9CisKKyAgICBmdW5jdGlvbiBnZXRTZXRMb2NhbGVEYXlPZldlZWsgKGlu cHV0KSB7CisgICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHsKKyAgICAg ICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsID8gdGhpcyA6IE5hTjsKKyAg ICAgICAgfQorICAgICAgICB2YXIgd2Vla2RheSA9ICh0aGlzLmRheSgpICsg NyAtIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdykgJSA3OworICAgICAg ICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHdlZWtkYXkgOiB0aGlzLmFkZChp bnB1dCAtIHdlZWtkYXksICdkJyk7CisgICAgfQorCisgICAgZnVuY3Rpb24g Z2V0U2V0SVNPRGF5T2ZXZWVrIChpbnB1dCkgeworICAgICAgICBpZiAoIXRo aXMuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0g bnVsbCA/IHRoaXMgOiBOYU47CisgICAgICAgIH0KKworICAgICAgICAvLyBi ZWhhdmVzIHRoZSBzYW1lIGFzIG1vbWVudCNkYXkgZXhjZXB0CisgICAgICAg IC8vIGFzIGEgZ2V0dGVyLCByZXR1cm5zIDcgaW5zdGVhZCBvZiAwICgxLTcg cmFuZ2UgaW5zdGVhZCBvZiAwLTYpCisgICAgICAgIC8vIGFzIGEgc2V0dGVy LCBzdW5kYXkgc2hvdWxkIGJlbG9uZyB0byB0aGUgcHJldmlvdXMgd2Vlay4K KworICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkgeworICAgICAgICAgICAg dmFyIHdlZWtkYXkgPSBwYXJzZUlzb1dlZWtkYXkoaW5wdXQsIHRoaXMubG9j YWxlRGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmRheSh0aGlz LmRheSgpICUgNyA/IHdlZWtkYXkgOiB3ZWVrZGF5IC0gNyk7CisgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXkoKSB8fCA3 OworICAgICAgICB9CisgICAgfQorCisgICAgdmFyIGRlZmF1bHRXZWVrZGF5 c1JlZ2V4ID0gbWF0Y2hXb3JkOworICAgIGZ1bmN0aW9uIHdlZWtkYXlzUmVn ZXggKGlzU3RyaWN0KSB7CisgICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1Bh cnNlRXhhY3QpIHsKKyAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlz LCAnX3dlZWtkYXlzUmVnZXgnKSkgeworICAgICAgICAgICAgICAgIGNvbXB1 dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHsKKyAgICAgICAgICAgICAgICBy ZXR1cm4gdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleDsKKyAgICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtk YXlzUmVnZXg7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1Jl Z2V4JykpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1JlZ2V4 ID0gZGVmYXVsdFdlZWtkYXlzUmVnZXg7CisgICAgICAgICAgICB9CisgICAg ICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCAmJiBp c1N0cmljdCA/CisgICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNTdHJp Y3RSZWdleCA6IHRoaXMuX3dlZWtkYXlzUmVnZXg7CisgICAgICAgIH0KKyAg ICB9CisKKyAgICB2YXIgZGVmYXVsdFdlZWtkYXlzU2hvcnRSZWdleCA9IG1h dGNoV29yZDsKKyAgICBmdW5jdGlvbiB3ZWVrZGF5c1Nob3J0UmVnZXggKGlz U3RyaWN0KSB7CisgICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhh Y3QpIHsKKyAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dl ZWtkYXlzUmVnZXgnKSkgeworICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVr ZGF5c1BhcnNlLmNhbGwodGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAg ICAgICBpZiAoaXNTdHJpY3QpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g dGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4OworICAgICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2Rh eXNTaG9ydFJlZ2V4OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2Rh eXNTaG9ydFJlZ2V4JykpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl93ZWVr ZGF5c1Nob3J0UmVnZXggPSBkZWZhdWx0V2Vla2RheXNTaG9ydFJlZ2V4Owor ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtk YXlzU2hvcnRTdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/CisgICAgICAgICAg ICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4IDogdGhpcy5f d2Vla2RheXNTaG9ydFJlZ2V4OworICAgICAgICB9CisgICAgfQorCisgICAg dmFyIGRlZmF1bHRXZWVrZGF5c01pblJlZ2V4ID0gbWF0Y2hXb3JkOworICAg IGZ1bmN0aW9uIHdlZWtkYXlzTWluUmVnZXggKGlzU3RyaWN0KSB7CisgICAg ICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHsKKyAgICAgICAg ICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkg eworICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwo dGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNTdHJp Y3QpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNN aW5TdHJpY3RSZWdleDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluUmVnZXg7CisgICAg ICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAo IWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c01pblJlZ2V4JykpIHsKKyAg ICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c01pblJlZ2V4ID0gZGVmYXVs dFdlZWtkYXlzTWluUmVnZXg7CisgICAgICAgICAgICB9CisgICAgICAgICAg ICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCAmJiBpc1N0 cmljdCA/CisgICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5TdHJp Y3RSZWdleCA6IHRoaXMuX3dlZWtkYXlzTWluUmVnZXg7CisgICAgICAgIH0K KyAgICB9CisKKworICAgIGZ1bmN0aW9uIGNvbXB1dGVXZWVrZGF5c1BhcnNl ICgpIHsKKyAgICAgICAgZnVuY3Rpb24gY21wTGVuUmV2KGEsIGIpIHsKKyAg ICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoOworICAgICAg ICB9CisKKyAgICAgICAgdmFyIG1pblBpZWNlcyA9IFtdLCBzaG9ydFBpZWNl cyA9IFtdLCBsb25nUGllY2VzID0gW10sIG1peGVkUGllY2VzID0gW10sCisg ICAgICAgICAgICBpLCBtb20sIG1pbnAsIHNob3J0cCwgbG9uZ3A7CisgICAg ICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHsKKyAgICAgICAgICAgIC8v IG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeQor ICAgICAgICAgICAgbW9tID0gY3JlYXRlX3V0Y19fY3JlYXRlVVRDKFsyMDAw LCAxXSkuZGF5KGkpOworICAgICAgICAgICAgbWlucCA9IHRoaXMud2Vla2Rh eXNNaW4obW9tLCAnJyk7CisgICAgICAgICAgICBzaG9ydHAgPSB0aGlzLndl ZWtkYXlzU2hvcnQobW9tLCAnJyk7CisgICAgICAgICAgICBsb25ncCA9IHRo aXMud2Vla2RheXMobW9tLCAnJyk7CisgICAgICAgICAgICBtaW5QaWVjZXMu cHVzaChtaW5wKTsKKyAgICAgICAgICAgIHNob3J0UGllY2VzLnB1c2goc2hv cnRwKTsKKyAgICAgICAgICAgIGxvbmdQaWVjZXMucHVzaChsb25ncCk7Cisg ICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKG1pbnApOworICAgICAgICAg ICAgbWl4ZWRQaWVjZXMucHVzaChzaG9ydHApOworICAgICAgICAgICAgbWl4 ZWRQaWVjZXMucHVzaChsb25ncCk7CisgICAgICAgIH0KKyAgICAgICAgLy8g U29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSB3ZWVrZGF5IChvciBhYmJyKSBp cyBhIHByZWZpeCBvZiBhbm90aGVyIGl0CisgICAgICAgIC8vIHdpbGwgbWF0 Y2ggdGhlIGxvbmdlciBwaWVjZS4KKyAgICAgICAgbWluUGllY2VzLnNvcnQo Y21wTGVuUmV2KTsKKyAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5S ZXYpOworICAgICAgICBsb25nUGllY2VzLnNvcnQoY21wTGVuUmV2KTsKKyAg ICAgICAgbWl4ZWRQaWVjZXMuc29ydChjbXBMZW5SZXYpOworICAgICAgICBm b3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7CisgICAgICAgICAgICBzaG9ydFBp ZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKHNob3J0UGllY2VzW2ldKTsKKyAgICAg ICAgICAgIGxvbmdQaWVjZXNbaV0gPSByZWdleEVzY2FwZShsb25nUGllY2Vz W2ldKTsKKyAgICAgICAgICAgIG1peGVkUGllY2VzW2ldID0gcmVnZXhFc2Nh cGUobWl4ZWRQaWVjZXNbaV0pOworICAgICAgICB9CisKKyAgICAgICAgdGhp cy5fd2Vla2RheXNSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIG1peGVkUGll Y2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTsKKyAgICAgICAgdGhpcy5fd2Vl a2RheXNTaG9ydFJlZ2V4ID0gdGhpcy5fd2Vla2RheXNSZWdleDsKKyAgICAg ICAgdGhpcy5fd2Vla2RheXNNaW5SZWdleCA9IHRoaXMuX3dlZWtkYXlzUmVn ZXg7CisKKyAgICAgICAgdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCA9IG5l dyBSZWdFeHAoJ14oJyArIGxvbmdQaWVjZXMuam9pbignfCcpICsgJyknLCAn aScpOworICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXgg PSBuZXcgUmVnRXhwKCdeKCcgKyBzaG9ydFBpZWNlcy5qb2luKCd8JykgKyAn KScsICdpJyk7CisgICAgICAgIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVn ZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaW5QaWVjZXMuam9pbignfCcpICsg JyknLCAnaScpOworICAgIH0KKworICAgIC8vIEZPUk1BVFRJTkcKKworICAg IGZ1bmN0aW9uIGhGb3JtYXQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmhv dXJzKCkgJSAxMiB8fCAxMjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBrRm9y bWF0KCkgeworICAgICAgICByZXR1cm4gdGhpcy5ob3VycygpIHx8IDI0Owor ICAgIH0KKworICAgIGFkZEZvcm1hdFRva2VuKCdIJywgWydISCcsIDJdLCAw LCAnaG91cicpOworICAgIGFkZEZvcm1hdFRva2VuKCdoJywgWydoaCcsIDJd LCAwLCBoRm9ybWF0KTsKKyAgICBhZGRGb3JtYXRUb2tlbignaycsIFsna2sn LCAyXSwgMCwga0Zvcm1hdCk7CisKKyAgICBhZGRGb3JtYXRUb2tlbignaG1t JywgMCwgMCwgZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gJycgKyBo Rm9ybWF0LmFwcGx5KHRoaXMpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCks IDIpOworICAgIH0pOworCisgICAgYWRkRm9ybWF0VG9rZW4oJ2htbXNzJywg MCwgMCwgZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gJycgKyBoRm9y bWF0LmFwcGx5KHRoaXMpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIp ICsKKyAgICAgICAgICAgIHplcm9GaWxsKHRoaXMuc2Vjb25kcygpLCAyKTsK KyAgICB9KTsKKworICAgIGFkZEZvcm1hdFRva2VuKCdIbW0nLCAwLCAwLCBm dW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiAnJyArIHRoaXMuaG91cnMo KSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKTsKKyAgICB9KTsKKwor ICAgIGFkZEZvcm1hdFRva2VuKCdIbW1zcycsIDAsIDAsIGZ1bmN0aW9uICgp IHsKKyAgICAgICAgcmV0dXJuICcnICsgdGhpcy5ob3VycygpICsgemVyb0Zp bGwodGhpcy5taW51dGVzKCksIDIpICsKKyAgICAgICAgICAgIHplcm9GaWxs KHRoaXMuc2Vjb25kcygpLCAyKTsKKyAgICB9KTsKKworICAgIGZ1bmN0aW9u IG1lcmlkaWVtICh0b2tlbiwgbG93ZXJjYXNlKSB7CisgICAgICAgIGFkZEZv cm1hdFRva2VuKHRva2VuLCAwLCAwLCBmdW5jdGlvbiAoKSB7CisgICAgICAg ICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubWVyaWRpZW0odGhpcy5o b3VycygpLCB0aGlzLm1pbnV0ZXMoKSwgbG93ZXJjYXNlKTsKKyAgICAgICAg fSk7CisgICAgfQorCisgICAgbWVyaWRpZW0oJ2EnLCB0cnVlKTsKKyAgICBt ZXJpZGllbSgnQScsIGZhbHNlKTsKKworICAgIC8vIEFMSUFTRVMKKworICAg IGFkZFVuaXRBbGlhcygnaG91cicsICdoJyk7CisKKyAgICAvLyBQUklPUklU WQorICAgIGFkZFVuaXRQcmlvcml0eSgnaG91cicsIDEzKTsKKworICAgIC8v IFBBUlNJTkcKKworICAgIGZ1bmN0aW9uIG1hdGNoTWVyaWRpZW0gKGlzU3Ry aWN0LCBsb2NhbGUpIHsKKyAgICAgICAgcmV0dXJuIGxvY2FsZS5fbWVyaWRp ZW1QYXJzZTsKKyAgICB9CisKKyAgICBhZGRSZWdleFRva2VuKCdhJywgIG1h dGNoTWVyaWRpZW0pOworICAgIGFkZFJlZ2V4VG9rZW4oJ0EnLCAgbWF0Y2hN ZXJpZGllbSk7CisgICAgYWRkUmVnZXhUb2tlbignSCcsICBtYXRjaDF0bzIp OworICAgIGFkZFJlZ2V4VG9rZW4oJ2gnLCAgbWF0Y2gxdG8yKTsKKyAgICBh ZGRSZWdleFRva2VuKCdISCcsIG1hdGNoMXRvMiwgbWF0Y2gyKTsKKyAgICBh ZGRSZWdleFRva2VuKCdoaCcsIG1hdGNoMXRvMiwgbWF0Y2gyKTsKKworICAg IGFkZFJlZ2V4VG9rZW4oJ2htbScsIG1hdGNoM3RvNCk7CisgICAgYWRkUmVn ZXhUb2tlbignaG1tc3MnLCBtYXRjaDV0bzYpOworICAgIGFkZFJlZ2V4VG9r ZW4oJ0htbScsIG1hdGNoM3RvNCk7CisgICAgYWRkUmVnZXhUb2tlbignSG1t c3MnLCBtYXRjaDV0bzYpOworCisgICAgYWRkUGFyc2VUb2tlbihbJ0gnLCAn SEgnXSwgSE9VUik7CisgICAgYWRkUGFyc2VUb2tlbihbJ2EnLCAnQSddLCBm dW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHsKKyAgICAgICAgY29u ZmlnLl9pc1BtID0gY29uZmlnLl9sb2NhbGUuaXNQTShpbnB1dCk7CisgICAg ICAgIGNvbmZpZy5fbWVyaWRpZW0gPSBpbnB1dDsKKyAgICB9KTsKKyAgICBh ZGRQYXJzZVRva2VuKFsnaCcsICdoaCddLCBmdW5jdGlvbiAoaW5wdXQsIGFy cmF5LCBjb25maWcpIHsKKyAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChp bnB1dCk7CisgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hv dXIgPSB0cnVlOworICAgIH0pOworICAgIGFkZFBhcnNlVG9rZW4oJ2htbScs IGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykgeworICAgICAgICB2 YXIgcG9zID0gaW5wdXQubGVuZ3RoIC0gMjsKKyAgICAgICAgYXJyYXlbSE9V Ul0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zKSk7CisgICAgICAgIGFy cmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zKSk7CisgICAg ICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB0cnVlOwor ICAgIH0pOworICAgIGFkZFBhcnNlVG9rZW4oJ2htbXNzJywgZnVuY3Rpb24g KGlucHV0LCBhcnJheSwgY29uZmlnKSB7CisgICAgICAgIHZhciBwb3MxID0g aW5wdXQubGVuZ3RoIC0gNDsKKyAgICAgICAgdmFyIHBvczIgPSBpbnB1dC5s ZW5ndGggLSAyOworICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0 LnN1YnN0cigwLCBwb3MxKSk7CisgICAgICAgIGFycmF5W01JTlVURV0gPSB0 b0ludChpbnB1dC5zdWJzdHIocG9zMSwgMikpOworICAgICAgICBhcnJheVtT RUNPTkRdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczIpKTsKKyAgICAgICAg Z2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHRydWU7CisgICAg fSk7CisgICAgYWRkUGFyc2VUb2tlbignSG1tJywgZnVuY3Rpb24gKGlucHV0 LCBhcnJheSwgY29uZmlnKSB7CisgICAgICAgIHZhciBwb3MgPSBpbnB1dC5s ZW5ndGggLSAyOworICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0 LnN1YnN0cigwLCBwb3MpKTsKKyAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRv SW50KGlucHV0LnN1YnN0cihwb3MpKTsKKyAgICB9KTsKKyAgICBhZGRQYXJz ZVRva2VuKCdIbW1zcycsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZp ZykgeworICAgICAgICB2YXIgcG9zMSA9IGlucHV0Lmxlbmd0aCAtIDQ7Cisg ICAgICAgIHZhciBwb3MyID0gaW5wdXQubGVuZ3RoIC0gMjsKKyAgICAgICAg YXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zMSkpOwor ICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBv czEsIDIpKTsKKyAgICAgICAgYXJyYXlbU0VDT05EXSA9IHRvSW50KGlucHV0 LnN1YnN0cihwb3MyKSk7CisgICAgfSk7CisKKyAgICAvLyBMT0NBTEVTCisK KyAgICBmdW5jdGlvbiBsb2NhbGVJc1BNIChpbnB1dCkgeworICAgICAgICAv LyBJRTggUXVpcmtzIE1vZGUgJiBJRTcgU3RhbmRhcmRzIE1vZGUgZG8gbm90 IGFsbG93IGFjY2Vzc2luZyBzdHJpbmdzIGxpa2UgYXJyYXlzCisgICAgICAg IC8vIFVzaW5nIGNoYXJBdCBzaG91bGQgYmUgbW9yZSBjb21wYXRpYmxlLgor ICAgICAgICByZXR1cm4gKChpbnB1dCArICcnKS50b0xvd2VyQ2FzZSgpLmNo YXJBdCgwKSA9PT0gJ3AnKTsKKyAgICB9CisKKyAgICB2YXIgZGVmYXVsdExv Y2FsZU1lcmlkaWVtUGFyc2UgPSAvW2FwXVwuP20/XC4/L2k7CisgICAgZnVu Y3Rpb24gbG9jYWxlTWVyaWRpZW0gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2Vy KSB7CisgICAgICAgIGlmIChob3VycyA+IDExKSB7CisgICAgICAgICAgICBy ZXR1cm4gaXNMb3dlciA/ICdwbScgOiAnUE0nOworICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnYW0nIDogJ0FNJzsK KyAgICAgICAgfQorICAgIH0KKworCisgICAgLy8gTU9NRU5UUworCisgICAg Ly8gU2V0dGluZyB0aGUgaG91ciBzaG91bGQga2VlcCB0aGUgdGltZSwgYmVj YXVzZSB0aGUgdXNlciBleHBsaWNpdGx5CisgICAgLy8gc3BlY2lmaWVkIHdo aWNoIGhvdXIgaGUgd2FudHMuIFNvIHRyeWluZyB0byBtYWludGFpbiB0aGUg c2FtZSBob3VyIChpbgorICAgIC8vIGEgbmV3IHRpbWV6b25lKSBtYWtlcyBz ZW5zZS4gQWRkaW5nL3N1YnRyYWN0aW5nIGhvdXJzIGRvZXMgbm90IGZvbGxv dworICAgIC8vIHRoaXMgcnVsZS4KKyAgICB2YXIgZ2V0U2V0SG91ciA9IG1h a2VHZXRTZXQoJ0hvdXJzJywgdHJ1ZSk7CisKKyAgICB2YXIgYmFzZUNvbmZp ZyA9IHsKKyAgICAgICAgY2FsZW5kYXI6IGRlZmF1bHRDYWxlbmRhciwKKyAg ICAgICAgbG9uZ0RhdGVGb3JtYXQ6IGRlZmF1bHRMb25nRGF0ZUZvcm1hdCwK KyAgICAgICAgaW52YWxpZERhdGU6IGRlZmF1bHRJbnZhbGlkRGF0ZSwKKyAg ICAgICAgb3JkaW5hbDogZGVmYXVsdE9yZGluYWwsCisgICAgICAgIG9yZGlu YWxQYXJzZTogZGVmYXVsdE9yZGluYWxQYXJzZSwKKyAgICAgICAgcmVsYXRp dmVUaW1lOiBkZWZhdWx0UmVsYXRpdmVUaW1lLAorCisgICAgICAgIG1vbnRo czogZGVmYXVsdExvY2FsZU1vbnRocywKKyAgICAgICAgbW9udGhzU2hvcnQ6 IGRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCwKKworICAgICAgICB3ZWVrOiBk ZWZhdWx0TG9jYWxlV2VlaywKKworICAgICAgICB3ZWVrZGF5czogZGVmYXVs dExvY2FsZVdlZWtkYXlzLAorICAgICAgICB3ZWVrZGF5c01pbjogZGVmYXVs dExvY2FsZVdlZWtkYXlzTWluLAorICAgICAgICB3ZWVrZGF5c1Nob3J0OiBk ZWZhdWx0TG9jYWxlV2Vla2RheXNTaG9ydCwKKworICAgICAgICBtZXJpZGll bVBhcnNlOiBkZWZhdWx0TG9jYWxlTWVyaWRpZW1QYXJzZQorICAgIH07CisK KyAgICAvLyBpbnRlcm5hbCBzdG9yYWdlIGZvciBsb2NhbGUgY29uZmlnIGZp bGVzCisgICAgdmFyIGxvY2FsZXMgPSB7fTsKKyAgICB2YXIgZ2xvYmFsTG9j YWxlOworCisgICAgZnVuY3Rpb24gbm9ybWFsaXplTG9jYWxlKGtleSkgewor ICAgICAgICByZXR1cm4ga2V5ID8ga2V5LnRvTG93ZXJDYXNlKCkucmVwbGFj ZSgnXycsICctJykgOiBrZXk7CisgICAgfQorCisgICAgLy8gcGljayB0aGUg bG9jYWxlIGZyb20gdGhlIGFycmF5CisgICAgLy8gdHJ5IFsnZW4tYXUnLCAn ZW4tZ2InXSBhcyAnZW4tYXUnLCAnZW4tZ2InLCAnZW4nLCBhcyBpbiBtb3Zl IHRocm91Z2ggdGhlIGxpc3QgdHJ5aW5nIGVhY2gKKyAgICAvLyBzdWJzdHJp bmcgZnJvbSBtb3N0IHNwZWNpZmljIHRvIGxlYXN0LCBidXQgbW92ZSB0byB0 aGUgbmV4dCBhcnJheSBpdGVtIGlmIGl0J3MgYSBtb3JlIHNwZWNpZmljIHZh cmlhbnQgdGhhbiB0aGUgY3VycmVudCByb290CisgICAgZnVuY3Rpb24gY2hv b3NlTG9jYWxlKG5hbWVzKSB7CisgICAgICAgIHZhciBpID0gMCwgaiwgbmV4 dCwgbG9jYWxlLCBzcGxpdDsKKworICAgICAgICB3aGlsZSAoaSA8IG5hbWVz Lmxlbmd0aCkgeworICAgICAgICAgICAgc3BsaXQgPSBub3JtYWxpemVMb2Nh bGUobmFtZXNbaV0pLnNwbGl0KCctJyk7CisgICAgICAgICAgICBqID0gc3Bs aXQubGVuZ3RoOworICAgICAgICAgICAgbmV4dCA9IG5vcm1hbGl6ZUxvY2Fs ZShuYW1lc1tpICsgMV0pOworICAgICAgICAgICAgbmV4dCA9IG5leHQgPyBu ZXh0LnNwbGl0KCctJykgOiBudWxsOworICAgICAgICAgICAgd2hpbGUgKGog PiAwKSB7CisgICAgICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShz cGxpdC5zbGljZSgwLCBqKS5qb2luKCctJykpOworICAgICAgICAgICAgICAg IGlmIChsb2NhbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxv Y2FsZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYg KG5leHQgJiYgbmV4dC5sZW5ndGggPj0gaiAmJiBjb21wYXJlQXJyYXlzKHNw bGl0LCBuZXh0LCB0cnVlKSA+PSBqIC0gMSkgeworICAgICAgICAgICAgICAg ICAgICAvL3RoZSBuZXh0IGFycmF5IGl0ZW0gaXMgYmV0dGVyIHRoYW4gYSBz aGFsbG93ZXIgc3Vic3RyaW5nIG9mIHRoaXMgb25lCisgICAgICAgICAgICAg ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICBqLS07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpKys7Cisg ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAg ZnVuY3Rpb24gbG9hZExvY2FsZShuYW1lKSB7CisgICAgICAgIHZhciBvbGRM b2NhbGUgPSBudWxsOworICAgICAgICAvLyBUT0RPOiBGaW5kIGEgYmV0dGVy IHdheSB0byByZWdpc3RlciBhbmQgbG9hZCBhbGwgdGhlIGxvY2FsZXMgaW4g Tm9kZQorICAgICAgICBpZiAoIWxvY2FsZXNbbmFtZV0gJiYgKHR5cGVvZiBt b2R1bGUgIT09ICd1bmRlZmluZWQnKSAmJgorICAgICAgICAgICAgICAgIG1v ZHVsZSAmJiBtb2R1bGUucmVxdWlyZSkgeworICAgICAgICAgICAgdHJ5IHsK KyAgICAgICAgICAgICAgICBvbGRMb2NhbGUgPSBnbG9iYWxMb2NhbGUuX2Fi YnI7CisgICAgICAgICAgICAgICAgbW9kdWxlLnJlcXVpcmUoJy4vbG9jYWxl LycgKyBuYW1lKTsKKyAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIGRlZmlu ZUxvY2FsZSBjdXJyZW50bHkgYWxzbyBzZXRzIHRoZSBnbG9iYWwgbG9jYWxl LCB3ZQorICAgICAgICAgICAgICAgIC8vIHdhbnQgdG8gdW5kbyB0aGF0IGZv ciBsYXp5IGxvYWRlZCBsb2NhbGVzCisgICAgICAgICAgICAgICAgbG9jYWxl X2xvY2FsZXNfX2dldFNldEdsb2JhbExvY2FsZShvbGRMb2NhbGUpOworICAg ICAgICAgICAgfSBjYXRjaCAoZSkgeyB9CisgICAgICAgIH0KKyAgICAgICAg cmV0dXJuIGxvY2FsZXNbbmFtZV07CisgICAgfQorCisgICAgLy8gVGhpcyBm dW5jdGlvbiB3aWxsIGxvYWQgbG9jYWxlIGFuZCB0aGVuIHNldCB0aGUgZ2xv YmFsIGxvY2FsZS4gIElmCisgICAgLy8gbm8gYXJndW1lbnRzIGFyZSBwYXNz ZWQgaW4sIGl0IHdpbGwgc2ltcGx5IHJldHVybiB0aGUgY3VycmVudCBnbG9i YWwKKyAgICAvLyBsb2NhbGUga2V5LgorICAgIGZ1bmN0aW9uIGxvY2FsZV9s b2NhbGVzX19nZXRTZXRHbG9iYWxMb2NhbGUgKGtleSwgdmFsdWVzKSB7Cisg ICAgICAgIHZhciBkYXRhOworICAgICAgICBpZiAoa2V5KSB7CisgICAgICAg ICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWVzKSkgeworICAgICAgICAgICAg ICAgIGRhdGEgPSBsb2NhbGVfbG9jYWxlc19fZ2V0TG9jYWxlKGtleSk7Cisg ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg ICAgICBkYXRhID0gZGVmaW5lTG9jYWxlKGtleSwgdmFsdWVzKTsKKyAgICAg ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAg ICAgICAgICAvLyBtb21lbnQuZHVyYXRpb24uX2xvY2FsZSA9IG1vbWVudC5f bG9jYWxlID0gZGF0YTsKKyAgICAgICAgICAgICAgICBnbG9iYWxMb2NhbGUg PSBkYXRhOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg cmV0dXJuIGdsb2JhbExvY2FsZS5fYWJicjsKKyAgICB9CisKKyAgICBmdW5j dGlvbiBkZWZpbmVMb2NhbGUgKG5hbWUsIGNvbmZpZykgeworICAgICAgICBp ZiAoY29uZmlnICE9PSBudWxsKSB7CisgICAgICAgICAgICB2YXIgcGFyZW50 Q29uZmlnID0gYmFzZUNvbmZpZzsKKyAgICAgICAgICAgIGNvbmZpZy5hYmJy ID0gbmFtZTsKKyAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdICE9IG51 bGwpIHsKKyAgICAgICAgICAgICAgICBkZXByZWNhdGVTaW1wbGUoJ2RlZmlu ZUxvY2FsZU92ZXJyaWRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICd1 c2UgbW9tZW50LnVwZGF0ZUxvY2FsZShsb2NhbGVOYW1lLCBjb25maWcpIHRv IGNoYW5nZSAnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICdhbiBleGlz dGluZyBsb2NhbGUuIG1vbWVudC5kZWZpbmVMb2NhbGUobG9jYWxlTmFtZSwg JyArCisgICAgICAgICAgICAgICAgICAgICAgICAnY29uZmlnKSBzaG91bGQg b25seSBiZSB1c2VkIGZvciBjcmVhdGluZyBhIG5ldyBsb2NhbGUgJyArCisg ICAgICAgICAgICAgICAgICAgICAgICAnU2VlIGh0dHA6Ly9tb21lbnRqcy5j b20vZ3VpZGVzLyMvd2FybmluZ3MvZGVmaW5lLWxvY2FsZS8gZm9yIG1vcmUg aW5mby4nKTsKKyAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2Nh bGVzW25hbWVdLl9jb25maWc7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNv bmZpZy5wYXJlbnRMb2NhbGUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAg IGlmIChsb2NhbGVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdICE9IG51bGwpIHsK KyAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gbG9jYWxlc1tj b25maWcucGFyZW50TG9jYWxlXS5fY29uZmlnOworICAgICAgICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHRyZWF0IGFzIGlm IHRoZXJlIGlzIG5vIGJhc2UgY29uZmlnCisgICAgICAgICAgICAgICAgICAg IGRlcHJlY2F0ZVNpbXBsZSgncGFyZW50TG9jYWxlVW5kZWZpbmVkJywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIHBhcmVudExv Y2FsZSBpcyBub3QgZGVmaW5lZCB5ZXQuIFNlZSBodHRwOi8vbW9tZW50anMu Y29tL2d1aWRlcy8jL3dhcm5pbmdzL3BhcmVudC1sb2NhbGUvJyk7CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbG9j YWxlc1tuYW1lXSA9IG5ldyBMb2NhbGUobWVyZ2VDb25maWdzKHBhcmVudENv bmZpZywgY29uZmlnKSk7CisKKyAgICAgICAgICAgIC8vIGJhY2t3YXJkcyBj b21wYXQgZm9yIG5vdzogYWxzbyBzZXQgdGhlIGxvY2FsZQorICAgICAgICAg ICAgbG9jYWxlX2xvY2FsZXNfX2dldFNldEdsb2JhbExvY2FsZShuYW1lKTsK KworICAgICAgICAgICAgcmV0dXJuIGxvY2FsZXNbbmFtZV07CisgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAvLyB1c2VmdWwgZm9yIHRlc3RpbmcK KyAgICAgICAgICAgIGRlbGV0ZSBsb2NhbGVzW25hbWVdOworICAgICAgICAg ICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5j dGlvbiB1cGRhdGVMb2NhbGUobmFtZSwgY29uZmlnKSB7CisgICAgICAgIGlm IChjb25maWcgIT0gbnVsbCkgeworICAgICAgICAgICAgdmFyIGxvY2FsZSwg cGFyZW50Q29uZmlnID0gYmFzZUNvbmZpZzsKKyAgICAgICAgICAgIC8vIE1F UkdFCisgICAgICAgICAgICBpZiAobG9jYWxlc1tuYW1lXSAhPSBudWxsKSB7 CisgICAgICAgICAgICAgICAgcGFyZW50Q29uZmlnID0gbG9jYWxlc1tuYW1l XS5fY29uZmlnOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uZmln ID0gbWVyZ2VDb25maWdzKHBhcmVudENvbmZpZywgY29uZmlnKTsKKyAgICAg ICAgICAgIGxvY2FsZSA9IG5ldyBMb2NhbGUoY29uZmlnKTsKKyAgICAgICAg ICAgIGxvY2FsZS5wYXJlbnRMb2NhbGUgPSBsb2NhbGVzW25hbWVdOworICAg ICAgICAgICAgbG9jYWxlc1tuYW1lXSA9IGxvY2FsZTsKKworICAgICAgICAg ICAgLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93OiBhbHNvIHNldCB0aGUg bG9jYWxlCisgICAgICAgICAgICBsb2NhbGVfbG9jYWxlc19fZ2V0U2V0R2xv YmFsTG9jYWxlKG5hbWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgLy8gcGFzcyBudWxsIGZvciBjb25maWcgdG8gdW51cGRhdGUsIHVzZWZ1 bCBmb3IgdGVzdHMKKyAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdICE9 IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAobG9jYWxlc1tuYW1lXS5w YXJlbnRMb2NhbGUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBs b2NhbGVzW25hbWVdID0gbG9jYWxlc1tuYW1lXS5wYXJlbnRMb2NhbGU7Cisg ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsb2NhbGVzW25hbWVdICE9IG51 bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGxvY2FsZXNbbmFt ZV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg ICB9CisgICAgICAgIHJldHVybiBsb2NhbGVzW25hbWVdOworICAgIH0KKwor ICAgIC8vIHJldHVybnMgbG9jYWxlIGRhdGEKKyAgICBmdW5jdGlvbiBsb2Nh bGVfbG9jYWxlc19fZ2V0TG9jYWxlIChrZXkpIHsKKyAgICAgICAgdmFyIGxv Y2FsZTsKKworICAgICAgICBpZiAoa2V5ICYmIGtleS5fbG9jYWxlICYmIGtl eS5fbG9jYWxlLl9hYmJyKSB7CisgICAgICAgICAgICBrZXkgPSBrZXkuX2xv Y2FsZS5fYWJicjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgha2V5KSB7 CisgICAgICAgICAgICByZXR1cm4gZ2xvYmFsTG9jYWxlOworICAgICAgICB9 CisKKyAgICAgICAgaWYgKCFpc0FycmF5KGtleSkpIHsKKyAgICAgICAgICAg IC8vc2hvcnQtY2lyY3VpdCBldmVyeXRoaW5nIGVsc2UKKyAgICAgICAgICAg IGxvY2FsZSA9IGxvYWRMb2NhbGUoa2V5KTsKKyAgICAgICAgICAgIGlmIChs b2NhbGUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9jYWxlOworICAg ICAgICAgICAgfQorICAgICAgICAgICAga2V5ID0gW2tleV07CisgICAgICAg IH0KKworICAgICAgICByZXR1cm4gY2hvb3NlTG9jYWxlKGtleSk7CisgICAg fQorCisgICAgZnVuY3Rpb24gbG9jYWxlX2xvY2FsZXNfX2xpc3RMb2NhbGVz KCkgeworICAgICAgICByZXR1cm4ga2V5cyhsb2NhbGVzKTsKKyAgICB9CisK KyAgICBmdW5jdGlvbiBjaGVja092ZXJmbG93IChtKSB7CisgICAgICAgIHZh ciBvdmVyZmxvdzsKKyAgICAgICAgdmFyIGEgPSBtLl9hOworCisgICAgICAg IGlmIChhICYmIGdldFBhcnNpbmdGbGFncyhtKS5vdmVyZmxvdyA9PT0gLTIp IHsKKyAgICAgICAgICAgIG92ZXJmbG93ID0KKyAgICAgICAgICAgICAgICBh W01PTlRIXSAgICAgICA8IDAgfHwgYVtNT05USF0gICAgICAgPiAxMSAgPyBN T05USCA6CisgICAgICAgICAgICAgICAgYVtEQVRFXSAgICAgICAgPCAxIHx8 IGFbREFURV0gICAgICAgID4gZGF5c0luTW9udGgoYVtZRUFSXSwgYVtNT05U SF0pID8gREFURSA6CisgICAgICAgICAgICAgICAgYVtIT1VSXSAgICAgICAg PCAwIHx8IGFbSE9VUl0gICAgICAgID4gMjQgfHwgKGFbSE9VUl0gPT09IDI0 ICYmIChhW01JTlVURV0gIT09IDAgfHwgYVtTRUNPTkRdICE9PSAwIHx8IGFb TUlMTElTRUNPTkRdICE9PSAwKSkgPyBIT1VSIDoKKyAgICAgICAgICAgICAg ICBhW01JTlVURV0gICAgICA8IDAgfHwgYVtNSU5VVEVdICAgICAgPiA1OSAg PyBNSU5VVEUgOgorICAgICAgICAgICAgICAgIGFbU0VDT05EXSAgICAgIDwg MCB8fCBhW1NFQ09ORF0gICAgICA+IDU5ICA/IFNFQ09ORCA6CisgICAgICAg ICAgICAgICAgYVtNSUxMSVNFQ09ORF0gPCAwIHx8IGFbTUlMTElTRUNPTkRd ID4gOTk5ID8gTUlMTElTRUNPTkQgOgorICAgICAgICAgICAgICAgIC0xOwor CisgICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxv d0RheU9mWWVhciAmJiAob3ZlcmZsb3cgPCBZRUFSIHx8IG92ZXJmbG93ID4g REFURSkpIHsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IERBVEU7Cisg ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdz KG0pLl9vdmVyZmxvd1dlZWtzICYmIG92ZXJmbG93ID09PSAtMSkgeworICAg ICAgICAgICAgICAgIG92ZXJmbG93ID0gV0VFSzsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICAgIGlmIChnZXRQYXJzaW5nRmxhZ3MobSkuX292ZXJmbG93 V2Vla2RheSAmJiBvdmVyZmxvdyA9PT0gLTEpIHsKKyAgICAgICAgICAgICAg ICBvdmVyZmxvdyA9IFdFRUtEQVk7CisgICAgICAgICAgICB9CisKKyAgICAg ICAgICAgIGdldFBhcnNpbmdGbGFncyhtKS5vdmVyZmxvdyA9IG92ZXJmbG93 OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG07CisgICAgfQorCisg ICAgLy8gaXNvIDg2MDEgcmVnZXgKKyAgICAvLyAwMDAwLTAwLTAwIDAwMDAt VzAwIG9yIDAwMDAtVzAwLTAgKyBUICsgMDAgb3IgMDA6MDAgb3IgMDA6MDA6 MDAgb3IgMDA6MDA6MDAuMDAwICsgKzAwOjAwIG9yICswMDAwIG9yICswMCkK KyAgICB2YXIgZXh0ZW5kZWRJc29SZWdleCA9IC9eXHMqKCg/OlsrLV1cZHs2 fXxcZHs0fSktKD86XGRcZC1cZFxkfFdcZFxkLVxkfFdcZFxkfFxkXGRcZHxc ZFxkKSkoPzooVHwgKShcZFxkKD86OlxkXGQoPzo6XGRcZCg/OlsuLF1cZCsp Pyk/KT8pKFtcK1wtXVxkXGQoPzo6P1xkXGQpP3xccypaKT8pPy87CisgICAg dmFyIGJhc2ljSXNvUmVnZXggPSAvXlxzKigoPzpbKy1dXGR7Nn18XGR7NH0p KD86XGRcZFxkXGR8V1xkXGRcZHxXXGRcZHxcZFxkXGR8XGRcZCkpKD86KFR8 ICkoXGRcZCg/OlxkXGQoPzpcZFxkKD86Wy4sXVxkKyk/KT8pPykoW1wrXC1d XGRcZCg/Ojo/XGRcZCk/fFxzKlopPyk/LzsKKworICAgIHZhciB0elJlZ2V4 ID0gL1p8WystXVxkXGQoPzo6P1xkXGQpPy87CisKKyAgICB2YXIgaXNvRGF0 ZXMgPSBbCisgICAgICAgIFsnWVlZWVlZLU1NLUREJywgL1srLV1cZHs2fS1c ZFxkLVxkXGQvXSwKKyAgICAgICAgWydZWVlZLU1NLUREJywgL1xkezR9LVxk XGQtXGRcZC9dLAorICAgICAgICBbJ0dHR0ctW1ddV1ctRScsIC9cZHs0fS1X XGRcZC1cZC9dLAorICAgICAgICBbJ0dHR0ctW1ddV1cnLCAvXGR7NH0tV1xk XGQvLCBmYWxzZV0sCisgICAgICAgIFsnWVlZWS1EREQnLCAvXGR7NH0tXGR7 M30vXSwKKyAgICAgICAgWydZWVlZLU1NJywgL1xkezR9LVxkXGQvLCBmYWxz ZV0sCisgICAgICAgIFsnWVlZWVlZTU1ERCcsIC9bKy1dXGR7MTB9L10sCisg ICAgICAgIFsnWVlZWU1NREQnLCAvXGR7OH0vXSwKKyAgICAgICAgLy8gWVlZ WU1NIGlzIE5PVCBhbGxvd2VkIGJ5IHRoZSBzdGFuZGFyZAorICAgICAgICBb J0dHR0dbV11XV0UnLCAvXGR7NH1XXGR7M30vXSwKKyAgICAgICAgWydHR0dH W1ddV1cnLCAvXGR7NH1XXGR7Mn0vLCBmYWxzZV0sCisgICAgICAgIFsnWVlZ WURERCcsIC9cZHs3fS9dCisgICAgXTsKKworICAgIC8vIGlzbyB0aW1lIGZv cm1hdHMgYW5kIHJlZ2V4ZXMKKyAgICB2YXIgaXNvVGltZXMgPSBbCisgICAg ICAgIFsnSEg6bW06c3MuU1NTUycsIC9cZFxkOlxkXGQ6XGRcZFwuXGQrL10s CisgICAgICAgIFsnSEg6bW06c3MsU1NTUycsIC9cZFxkOlxkXGQ6XGRcZCxc ZCsvXSwKKyAgICAgICAgWydISDptbTpzcycsIC9cZFxkOlxkXGQ6XGRcZC9d LAorICAgICAgICBbJ0hIOm1tJywgL1xkXGQ6XGRcZC9dLAorICAgICAgICBb J0hIbW1zcy5TU1NTJywgL1xkXGRcZFxkXGRcZFwuXGQrL10sCisgICAgICAg IFsnSEhtbXNzLFNTU1MnLCAvXGRcZFxkXGRcZFxkLFxkKy9dLAorICAgICAg ICBbJ0hIbW1zcycsIC9cZFxkXGRcZFxkXGQvXSwKKyAgICAgICAgWydISG1t JywgL1xkXGRcZFxkL10sCisgICAgICAgIFsnSEgnLCAvXGRcZC9dCisgICAg XTsKKworICAgIHZhciBhc3BOZXRKc29uUmVnZXggPSAvXlwvP0RhdGVcKChc LT9cZCspL2k7CisKKyAgICAvLyBkYXRlIGZyb20gaXNvIGZvcm1hdAorICAg IGZ1bmN0aW9uIGNvbmZpZ0Zyb21JU08oY29uZmlnKSB7CisgICAgICAgIHZh ciBpLCBsLAorICAgICAgICAgICAgc3RyaW5nID0gY29uZmlnLl9pLAorICAg ICAgICAgICAgbWF0Y2ggPSBleHRlbmRlZElzb1JlZ2V4LmV4ZWMoc3RyaW5n KSB8fCBiYXNpY0lzb1JlZ2V4LmV4ZWMoc3RyaW5nKSwKKyAgICAgICAgICAg IGFsbG93VGltZSwgZGF0ZUZvcm1hdCwgdGltZUZvcm1hdCwgdHpGb3JtYXQ7 CisKKyAgICAgICAgaWYgKG1hdGNoKSB7CisgICAgICAgICAgICBnZXRQYXJz aW5nRmxhZ3MoY29uZmlnKS5pc28gPSB0cnVlOworCisgICAgICAgICAgICBm b3IgKGkgPSAwLCBsID0gaXNvRGF0ZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7 CisgICAgICAgICAgICAgICAgaWYgKGlzb0RhdGVzW2ldWzFdLmV4ZWMobWF0 Y2hbMV0pKSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQgPSBp c29EYXRlc1tpXVswXTsKKyAgICAgICAgICAgICAgICAgICAgYWxsb3dUaW1l ID0gaXNvRGF0ZXNbaV1bMl0gIT09IGZhbHNlOworICAgICAgICAgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9 CisgICAgICAgICAgICBpZiAoZGF0ZUZvcm1hdCA9PSBudWxsKSB7CisgICAg ICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7CisgICAgICAg ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAg aWYgKG1hdGNoWzNdKSB7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMCwg bCA9IGlzb1RpbWVzLmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgICAg ICAgICAgICAgICBpZiAoaXNvVGltZXNbaV1bMV0uZXhlYyhtYXRjaFszXSkp IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hdGNoWzJdIHNob3Vs ZCBiZSAnVCcgb3Igc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRp bWVGb3JtYXQgPSAobWF0Y2hbMl0gfHwgJyAnKSArIGlzb1RpbWVzW2ldWzBd OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgaWYgKHRpbWVGb3JtYXQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAg ICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IH0KKyAgICAgICAgICAgIGlmICghYWxsb3dUaW1lICYmIHRpbWVGb3JtYXQg IT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9 IGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICAgIGlmIChtYXRjaFs0XSkgeworICAgICAgICAgICAg ICAgIGlmICh0elJlZ2V4LmV4ZWMobWF0Y2hbNF0pKSB7CisgICAgICAgICAg ICAgICAgICAgIHR6Rm9ybWF0ID0gJ1onOworICAgICAgICAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9 IGZhbHNlOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uZmln Ll9mID0gZGF0ZUZvcm1hdCArICh0aW1lRm9ybWF0IHx8ICcnKSArICh0ekZv cm1hdCB8fCAnJyk7CisgICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nQW5k Rm9ybWF0KGNvbmZpZyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0K KworICAgIC8vIGRhdGUgZnJvbSBpc28gZm9ybWF0IG9yIGZhbGxiYWNrCisg ICAgZnVuY3Rpb24gY29uZmlnRnJvbVN0cmluZyhjb25maWcpIHsKKyAgICAg ICAgdmFyIG1hdGNoZWQgPSBhc3BOZXRKc29uUmVnZXguZXhlYyhjb25maWcu X2kpOworCisgICAgICAgIGlmIChtYXRjaGVkICE9PSBudWxsKSB7CisgICAg ICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZSgrbWF0Y2hlZFsxXSk7Cisg ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb25m aWdGcm9tSVNPKGNvbmZpZyk7CisgICAgICAgIGlmIChjb25maWcuX2lzVmFs aWQgPT09IGZhbHNlKSB7CisgICAgICAgICAgICBkZWxldGUgY29uZmlnLl9p c1ZhbGlkOworICAgICAgICAgICAgdXRpbHNfaG9va3NfX2hvb2tzLmNyZWF0 ZUZyb21JbnB1dEZhbGxiYWNrKGNvbmZpZyk7CisgICAgICAgIH0KKyAgICB9 CisKKyAgICB1dGlsc19ob29rc19faG9va3MuY3JlYXRlRnJvbUlucHV0RmFs bGJhY2sgPSBkZXByZWNhdGUoCisgICAgICAgICd2YWx1ZSBwcm92aWRlZCBp cyBub3QgaW4gYSByZWNvZ25pemVkIElTTyBmb3JtYXQuIG1vbWVudCBjb25z dHJ1Y3Rpb24gZmFsbHMgYmFjayB0byBqcyBEYXRlKCksICcgKworICAgICAg ICAnd2hpY2ggaXMgbm90IHJlbGlhYmxlIGFjcm9zcyBhbGwgYnJvd3NlcnMg YW5kIHZlcnNpb25zLiBOb24gSVNPIGRhdGUgZm9ybWF0cyBhcmUgJyArCisg ICAgICAgICdkaXNjb3VyYWdlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGFu IHVwY29taW5nIG1ham9yIHJlbGVhc2UuIFBsZWFzZSByZWZlciB0byAnICsK KyAgICAgICAgJ2h0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2Fybmlu Z3MvanMtZGF0ZS8gZm9yIG1vcmUgaW5mby4nLAorICAgICAgICBmdW5jdGlv biAoY29uZmlnKSB7CisgICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0 ZShjb25maWcuX2kgKyAoY29uZmlnLl91c2VVVEMgPyAnIFVUQycgOiAnJykp OworICAgICAgICB9CisgICAgKTsKKworICAgIC8vIFBpY2sgdGhlIGZpcnN0 IGRlZmluZWQgb2YgdHdvIG9yIHRocmVlIGFyZ3VtZW50cy4KKyAgICBmdW5j dGlvbiBkZWZhdWx0cyhhLCBiLCBjKSB7CisgICAgICAgIGlmIChhICE9IG51 bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBhOworICAgICAgICB9CisgICAg ICAgIGlmIChiICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBiOwor ICAgICAgICB9CisgICAgICAgIHJldHVybiBjOworICAgIH0KKworICAgIGZ1 bmN0aW9uIGN1cnJlbnREYXRlQXJyYXkoY29uZmlnKSB7CisgICAgICAgIC8v IGhvb2tzIGlzIGFjdHVhbGx5IHRoZSBleHBvcnRlZCBtb21lbnQgb2JqZWN0 CisgICAgICAgIHZhciBub3dWYWx1ZSA9IG5ldyBEYXRlKHV0aWxzX2hvb2tz X19ob29rcy5ub3coKSk7CisgICAgICAgIGlmIChjb25maWcuX3VzZVVUQykg eworICAgICAgICAgICAgcmV0dXJuIFtub3dWYWx1ZS5nZXRVVENGdWxsWWVh cigpLCBub3dWYWx1ZS5nZXRVVENNb250aCgpLCBub3dWYWx1ZS5nZXRVVENE YXRlKCldOworICAgICAgICB9CisgICAgICAgIHJldHVybiBbbm93VmFsdWUu Z2V0RnVsbFllYXIoKSwgbm93VmFsdWUuZ2V0TW9udGgoKSwgbm93VmFsdWUu Z2V0RGF0ZSgpXTsKKyAgICB9CisKKyAgICAvLyBjb252ZXJ0IGFuIGFycmF5 IHRvIGEgZGF0ZS4KKyAgICAvLyB0aGUgYXJyYXkgc2hvdWxkIG1pcnJvciB0 aGUgcGFyYW1ldGVycyBiZWxvdworICAgIC8vIG5vdGU6IGFsbCB2YWx1ZXMg cGFzdCB0aGUgeWVhciBhcmUgb3B0aW9uYWwgYW5kIHdpbGwgZGVmYXVsdCB0 byB0aGUgbG93ZXN0IHBvc3NpYmxlIHZhbHVlLgorICAgIC8vIFt5ZWFyLCBt b250aCwgZGF5ICwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25k XQorICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21BcnJheSAoY29uZmlnKSB7Cisg ICAgICAgIHZhciBpLCBkYXRlLCBpbnB1dCA9IFtdLCBjdXJyZW50RGF0ZSwg eWVhclRvVXNlOworCisgICAgICAgIGlmIChjb25maWcuX2QpIHsKKyAgICAg ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGN1cnJlbnRE YXRlID0gY3VycmVudERhdGVBcnJheShjb25maWcpOworCisgICAgICAgIC8v Y29tcHV0ZSBkYXkgb2YgdGhlIHllYXIgZnJvbSB3ZWVrcyBhbmQgd2Vla2Rh eXMKKyAgICAgICAgaWYgKGNvbmZpZy5fdyAmJiBjb25maWcuX2FbREFURV0g PT0gbnVsbCAmJiBjb25maWcuX2FbTU9OVEhdID09IG51bGwpIHsKKyAgICAg ICAgICAgIGRheU9mWWVhckZyb21XZWVrSW5mbyhjb25maWcpOworICAgICAg ICB9CisKKyAgICAgICAgLy9pZiB0aGUgZGF5IG9mIHRoZSB5ZWFyIGlzIHNl dCwgZmlndXJlIG91dCB3aGF0IGl0IGlzCisgICAgICAgIGlmIChjb25maWcu X2RheU9mWWVhcikgeworICAgICAgICAgICAgeWVhclRvVXNlID0gZGVmYXVs dHMoY29uZmlnLl9hW1lFQVJdLCBjdXJyZW50RGF0ZVtZRUFSXSk7CisKKyAg ICAgICAgICAgIGlmIChjb25maWcuX2RheU9mWWVhciA+IGRheXNJblllYXIo eWVhclRvVXNlKSkgeworICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFn cyhjb25maWcpLl9vdmVyZmxvd0RheU9mWWVhciA9IHRydWU7CisgICAgICAg ICAgICB9CisKKyAgICAgICAgICAgIGRhdGUgPSBjcmVhdGVVVENEYXRlKHll YXJUb1VzZSwgMCwgY29uZmlnLl9kYXlPZlllYXIpOworICAgICAgICAgICAg Y29uZmlnLl9hW01PTlRIXSA9IGRhdGUuZ2V0VVRDTW9udGgoKTsKKyAgICAg ICAgICAgIGNvbmZpZy5fYVtEQVRFXSA9IGRhdGUuZ2V0VVRDRGF0ZSgpOwor ICAgICAgICB9CisKKyAgICAgICAgLy8gRGVmYXVsdCB0byBjdXJyZW50IGRh dGUuCisgICAgICAgIC8vICogaWYgbm8geWVhciwgbW9udGgsIGRheSBvZiBt b250aCBhcmUgZ2l2ZW4sIGRlZmF1bHQgdG8gdG9kYXkKKyAgICAgICAgLy8g KiBpZiBkYXkgb2YgbW9udGggaXMgZ2l2ZW4sIGRlZmF1bHQgbW9udGggYW5k IHllYXIKKyAgICAgICAgLy8gKiBpZiBtb250aCBpcyBnaXZlbiwgZGVmYXVs dCBvbmx5IHllYXIKKyAgICAgICAgLy8gKiBpZiB5ZWFyIGlzIGdpdmVuLCBk b24ndCBkZWZhdWx0IGFueXRoaW5nCisgICAgICAgIGZvciAoaSA9IDA7IGkg PCAzICYmIGNvbmZpZy5fYVtpXSA9PSBudWxsOyArK2kpIHsKKyAgICAgICAg ICAgIGNvbmZpZy5fYVtpXSA9IGlucHV0W2ldID0gY3VycmVudERhdGVbaV07 CisgICAgICAgIH0KKworICAgICAgICAvLyBaZXJvIG91dCB3aGF0ZXZlciB3 YXMgbm90IGRlZmF1bHRlZCwgaW5jbHVkaW5nIHRpbWUKKyAgICAgICAgZm9y ICg7IGkgPCA3OyBpKyspIHsKKyAgICAgICAgICAgIGNvbmZpZy5fYVtpXSA9 IGlucHV0W2ldID0gKGNvbmZpZy5fYVtpXSA9PSBudWxsKSA/IChpID09PSAy ID8gMSA6IDApIDogY29uZmlnLl9hW2ldOworICAgICAgICB9CisKKyAgICAg ICAgLy8gQ2hlY2sgZm9yIDI0OjAwOjAwLjAwMAorICAgICAgICBpZiAoY29u ZmlnLl9hW0hPVVJdID09PSAyNCAmJgorICAgICAgICAgICAgICAgIGNvbmZp Zy5fYVtNSU5VVEVdID09PSAwICYmCisgICAgICAgICAgICAgICAgY29uZmln Ll9hW1NFQ09ORF0gPT09IDAgJiYKKyAgICAgICAgICAgICAgICBjb25maWcu X2FbTUlMTElTRUNPTkRdID09PSAwKSB7CisgICAgICAgICAgICBjb25maWcu X25leHREYXkgPSB0cnVlOworICAgICAgICAgICAgY29uZmlnLl9hW0hPVVJd ID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGNvbmZpZy5fZCA9IChjb25m aWcuX3VzZVVUQyA/IGNyZWF0ZVVUQ0RhdGUgOiBjcmVhdGVEYXRlKS5hcHBs eShudWxsLCBpbnB1dCk7CisgICAgICAgIC8vIEFwcGx5IHRpbWV6b25lIG9m ZnNldCBmcm9tIGlucHV0LiBUaGUgYWN0dWFsIHV0Y09mZnNldCBjYW4gYmUg Y2hhbmdlZAorICAgICAgICAvLyB3aXRoIHBhcnNlWm9uZS4KKyAgICAgICAg aWYgKGNvbmZpZy5fdHptICE9IG51bGwpIHsKKyAgICAgICAgICAgIGNvbmZp Zy5fZC5zZXRVVENNaW51dGVzKGNvbmZpZy5fZC5nZXRVVENNaW51dGVzKCkg LSBjb25maWcuX3R6bSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29u ZmlnLl9uZXh0RGF5KSB7CisgICAgICAgICAgICBjb25maWcuX2FbSE9VUl0g PSAyNDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIGRheU9m WWVhckZyb21XZWVrSW5mbyhjb25maWcpIHsKKyAgICAgICAgdmFyIHcsIHdl ZWtZZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSwgdGVtcCwgd2Vla2Rh eU92ZXJmbG93OworCisgICAgICAgIHcgPSBjb25maWcuX3c7CisgICAgICAg IGlmICh3LkdHICE9IG51bGwgfHwgdy5XICE9IG51bGwgfHwgdy5FICE9IG51 bGwpIHsKKyAgICAgICAgICAgIGRvdyA9IDE7CisgICAgICAgICAgICBkb3kg PSA0OworCisgICAgICAgICAgICAvLyBUT0RPOiBXZSBuZWVkIHRvIHRha2Ug dGhlIGN1cnJlbnQgaXNvV2Vla1llYXIsIGJ1dCB0aGF0IGRlcGVuZHMgb24K KyAgICAgICAgICAgIC8vIGhvdyB3ZSBpbnRlcnByZXQgbm93IChsb2NhbCwg dXRjLCBmaXhlZCBvZmZzZXQpLiBTbyBjcmVhdGUKKyAgICAgICAgICAgIC8v IGEgbm93IHZlcnNpb24gb2YgY3VycmVudCBjb25maWcgKHRha2UgbG9jYWwv dXRjL29mZnNldCBmbGFncywgYW5kCisgICAgICAgICAgICAvLyBjcmVhdGUg bm93KS4KKyAgICAgICAgICAgIHdlZWtZZWFyID0gZGVmYXVsdHMody5HRywg Y29uZmlnLl9hW1lFQVJdLCB3ZWVrT2ZZZWFyKGxvY2FsX19jcmVhdGVMb2Nh bCgpLCAxLCA0KS55ZWFyKTsKKyAgICAgICAgICAgIHdlZWsgPSBkZWZhdWx0 cyh3LlcsIDEpOworICAgICAgICAgICAgd2Vla2RheSA9IGRlZmF1bHRzKHcu RSwgMSk7CisgICAgICAgICAgICBpZiAod2Vla2RheSA8IDEgfHwgd2Vla2Rh eSA+IDcpIHsKKyAgICAgICAgICAgICAgICB3ZWVrZGF5T3ZlcmZsb3cgPSB0 cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgZG93ID0gY29uZmlnLl9sb2NhbGUuX3dlZWsuZG93OworICAgICAg ICAgICAgZG95ID0gY29uZmlnLl9sb2NhbGUuX3dlZWsuZG95OworCisgICAg ICAgICAgICB3ZWVrWWVhciA9IGRlZmF1bHRzKHcuZ2csIGNvbmZpZy5fYVtZ RUFSXSwgd2Vla09mWWVhcihsb2NhbF9fY3JlYXRlTG9jYWwoKSwgZG93LCBk b3kpLnllYXIpOworICAgICAgICAgICAgd2VlayA9IGRlZmF1bHRzKHcudywg MSk7CisKKyAgICAgICAgICAgIGlmICh3LmQgIT0gbnVsbCkgeworICAgICAg ICAgICAgICAgIC8vIHdlZWtkYXkgLS0gbG93IGRheSBudW1iZXJzIGFyZSBj b25zaWRlcmVkIG5leHQgd2VlaworICAgICAgICAgICAgICAgIHdlZWtkYXkg PSB3LmQ7CisgICAgICAgICAgICAgICAgaWYgKHdlZWtkYXkgPCAwIHx8IHdl ZWtkYXkgPiA2KSB7CisgICAgICAgICAgICAgICAgICAgIHdlZWtkYXlPdmVy ZmxvdyA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg fSBlbHNlIGlmICh3LmUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIC8v IGxvY2FsIHdlZWtkYXkgLS0gY291bnRpbmcgc3RhcnRzIGZyb20gYmVnaW5p bmcgb2Ygd2VlaworICAgICAgICAgICAgICAgIHdlZWtkYXkgPSB3LmUgKyBk b3c7CisgICAgICAgICAgICAgICAgaWYgKHcuZSA8IDAgfHwgdy5lID4gNikg eworICAgICAgICAgICAgICAgICAgICB3ZWVrZGF5T3ZlcmZsb3cgPSB0cnVl OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICAgICAgLy8gZGVmYXVsdCB0byBiZWdpbmluZyBvZiB3ZWVr CisgICAgICAgICAgICAgICAgd2Vla2RheSA9IGRvdzsKKyAgICAgICAgICAg IH0KKyAgICAgICAgfQorICAgICAgICBpZiAod2VlayA8IDEgfHwgd2VlayA+ IHdlZWtzSW5ZZWFyKHdlZWtZZWFyLCBkb3csIGRveSkpIHsKKyAgICAgICAg ICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLl9vdmVyZmxvd1dlZWtzID0g dHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmICh3ZWVrZGF5T3ZlcmZsb3cgIT0g bnVsbCkgeworICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZyku X292ZXJmbG93V2Vla2RheSA9IHRydWU7CisgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICB0ZW1wID0gZGF5T2ZZZWFyRnJvbVdlZWtzKHdlZWtZZWFy LCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSk7CisgICAgICAgICAgICBjb25m aWcuX2FbWUVBUl0gPSB0ZW1wLnllYXI7CisgICAgICAgICAgICBjb25maWcu X2RheU9mWWVhciA9IHRlbXAuZGF5T2ZZZWFyOworICAgICAgICB9CisgICAg fQorCisgICAgLy8gY29uc3RhbnQgdGhhdCByZWZlcnMgdG8gdGhlIElTTyBz dGFuZGFyZAorICAgIHV0aWxzX2hvb2tzX19ob29rcy5JU09fODYwMSA9IGZ1 bmN0aW9uICgpIHt9OworCisgICAgLy8gZGF0ZSBmcm9tIHN0cmluZyBhbmQg Zm9ybWF0IHN0cmluZworICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmdB bmRGb3JtYXQoY29uZmlnKSB7CisgICAgICAgIC8vIFRPRE86IE1vdmUgdGhp cyB0byBhbm90aGVyIHBhcnQgb2YgdGhlIGNyZWF0aW9uIGZsb3cgdG8gcHJl dmVudCBjaXJjdWxhciBkZXBzCisgICAgICAgIGlmIChjb25maWcuX2YgPT09 IHV0aWxzX2hvb2tzX19ob29rcy5JU09fODYwMSkgeworICAgICAgICAgICAg Y29uZmlnRnJvbUlTTyhjb25maWcpOworICAgICAgICAgICAgcmV0dXJuOwor ICAgICAgICB9CisKKyAgICAgICAgY29uZmlnLl9hID0gW107CisgICAgICAg IGdldFBhcnNpbmdGbGFncyhjb25maWcpLmVtcHR5ID0gdHJ1ZTsKKworICAg ICAgICAvLyBUaGlzIGFycmF5IGlzIHVzZWQgdG8gbWFrZSBhIERhdGUsIGVp dGhlciB3aXRoIGBuZXcgRGF0ZWAgb3IgYERhdGUuVVRDYAorICAgICAgICB2 YXIgc3RyaW5nID0gJycgKyBjb25maWcuX2ksCisgICAgICAgICAgICBpLCBw YXJzZWRJbnB1dCwgdG9rZW5zLCB0b2tlbiwgc2tpcHBlZCwKKyAgICAgICAg ICAgIHN0cmluZ0xlbmd0aCA9IHN0cmluZy5sZW5ndGgsCisgICAgICAgICAg ICB0b3RhbFBhcnNlZElucHV0TGVuZ3RoID0gMDsKKworICAgICAgICB0b2tl bnMgPSBleHBhbmRGb3JtYXQoY29uZmlnLl9mLCBjb25maWcuX2xvY2FsZSku bWF0Y2goZm9ybWF0dGluZ1Rva2VucykgfHwgW107CisKKyAgICAgICAgZm9y IChpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykgeworICAgICAgICAg ICAgdG9rZW4gPSB0b2tlbnNbaV07CisgICAgICAgICAgICBwYXJzZWRJbnB1 dCA9IChzdHJpbmcubWF0Y2goZ2V0UGFyc2VSZWdleEZvclRva2VuKHRva2Vu LCBjb25maWcpKSB8fCBbXSlbMF07CisgICAgICAgICAgICAvLyBjb25zb2xl LmxvZygndG9rZW4nLCB0b2tlbiwgJ3BhcnNlZElucHV0JywgcGFyc2VkSW5w dXQsCisgICAgICAgICAgICAvLyAgICAgICAgICdyZWdleCcsIGdldFBhcnNl UmVnZXhGb3JUb2tlbih0b2tlbiwgY29uZmlnKSk7CisgICAgICAgICAgICBp ZiAocGFyc2VkSW5wdXQpIHsKKyAgICAgICAgICAgICAgICBza2lwcGVkID0g c3RyaW5nLnN1YnN0cigwLCBzdHJpbmcuaW5kZXhPZihwYXJzZWRJbnB1dCkp OworICAgICAgICAgICAgICAgIGlmIChza2lwcGVkLmxlbmd0aCA+IDApIHsK KyAgICAgICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZyku dW51c2VkSW5wdXQucHVzaChza2lwcGVkKTsKKyAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnNsaWNlKHN0cmlu Zy5pbmRleE9mKHBhcnNlZElucHV0KSArIHBhcnNlZElucHV0Lmxlbmd0aCk7 CisgICAgICAgICAgICAgICAgdG90YWxQYXJzZWRJbnB1dExlbmd0aCArPSBw YXJzZWRJbnB1dC5sZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgICAg ICAvLyBkb24ndCBwYXJzZSBpZiBpdCdzIG5vdCBhIGtub3duIHRva2VuCisg ICAgICAgICAgICBpZiAoZm9ybWF0VG9rZW5GdW5jdGlvbnNbdG9rZW5dKSB7 CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlZElucHV0KSB7CisgICAgICAg ICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmVtcHR5ID0g ZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs c2UgeworICAgICAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29u ZmlnKS51bnVzZWRUb2tlbnMucHVzaCh0b2tlbik7CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgIGFkZFRpbWVUb0FycmF5RnJvbVRva2Vu KHRva2VuLCBwYXJzZWRJbnB1dCwgY29uZmlnKTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZpZy5fc3RyaWN0ICYmICFwYXJz ZWRJbnB1dCkgeworICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhj b25maWcpLnVudXNlZFRva2Vucy5wdXNoKHRva2VuKTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIGFkZCByZW1haW5pbmcgdW5w YXJzZWQgaW5wdXQgbGVuZ3RoIHRvIHRoZSBzdHJpbmcKKyAgICAgICAgZ2V0 UGFyc2luZ0ZsYWdzKGNvbmZpZykuY2hhcnNMZWZ0T3ZlciA9IHN0cmluZ0xl bmd0aCAtIHRvdGFsUGFyc2VkSW5wdXRMZW5ndGg7CisgICAgICAgIGlmIChz dHJpbmcubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgZ2V0UGFyc2luZ0Zs YWdzKGNvbmZpZykudW51c2VkSW5wdXQucHVzaChzdHJpbmcpOworICAgICAg ICB9CisKKyAgICAgICAgLy8gY2xlYXIgXzEyaCBmbGFnIGlmIGhvdXIgaXMg PD0gMTIKKyAgICAgICAgaWYgKGNvbmZpZy5fYVtIT1VSXSA8PSAxMiAmJgor ICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9 PT0gdHJ1ZSAmJgorICAgICAgICAgICAgY29uZmlnLl9hW0hPVVJdID4gMCkg eworICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91 ciA9IHVuZGVmaW5lZDsKKyAgICAgICAgfQorCisgICAgICAgIGdldFBhcnNp bmdGbGFncyhjb25maWcpLnBhcnNlZERhdGVQYXJ0cyA9IGNvbmZpZy5fYS5z bGljZSgwKTsKKyAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykubWVy aWRpZW0gPSBjb25maWcuX21lcmlkaWVtOworICAgICAgICAvLyBoYW5kbGUg bWVyaWRpZW0KKyAgICAgICAgY29uZmlnLl9hW0hPVVJdID0gbWVyaWRpZW1G aXhXcmFwKGNvbmZpZy5fbG9jYWxlLCBjb25maWcuX2FbSE9VUl0sIGNvbmZp Zy5fbWVyaWRpZW0pOworCisgICAgICAgIGNvbmZpZ0Zyb21BcnJheShjb25m aWcpOworICAgICAgICBjaGVja092ZXJmbG93KGNvbmZpZyk7CisgICAgfQor CisKKyAgICBmdW5jdGlvbiBtZXJpZGllbUZpeFdyYXAgKGxvY2FsZSwgaG91 ciwgbWVyaWRpZW0pIHsKKyAgICAgICAgdmFyIGlzUG07CisKKyAgICAgICAg aWYgKG1lcmlkaWVtID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIG5vdGhp bmcgdG8gZG8KKyAgICAgICAgICAgIHJldHVybiBob3VyOworICAgICAgICB9 CisgICAgICAgIGlmIChsb2NhbGUubWVyaWRpZW1Ib3VyICE9IG51bGwpIHsK KyAgICAgICAgICAgIHJldHVybiBsb2NhbGUubWVyaWRpZW1Ib3VyKGhvdXIs IG1lcmlkaWVtKTsKKyAgICAgICAgfSBlbHNlIGlmIChsb2NhbGUuaXNQTSAh PSBudWxsKSB7CisgICAgICAgICAgICAvLyBGYWxsYmFjaworICAgICAgICAg ICAgaXNQbSA9IGxvY2FsZS5pc1BNKG1lcmlkaWVtKTsKKyAgICAgICAgICAg IGlmIChpc1BtICYmIGhvdXIgPCAxMikgeworICAgICAgICAgICAgICAgIGhv dXIgKz0gMTI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWlz UG0gJiYgaG91ciA9PT0gMTIpIHsKKyAgICAgICAgICAgICAgICBob3VyID0g MDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBob3VyOwor ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gdGhpcyBpcyBub3Qg c3VwcG9zZWQgdG8gaGFwcGVuCisgICAgICAgICAgICByZXR1cm4gaG91cjsK KyAgICAgICAgfQorICAgIH0KKworICAgIC8vIGRhdGUgZnJvbSBzdHJpbmcg YW5kIGFycmF5IG9mIGZvcm1hdCBzdHJpbmdzCisgICAgZnVuY3Rpb24gY29u ZmlnRnJvbVN0cmluZ0FuZEFycmF5KGNvbmZpZykgeworICAgICAgICB2YXIg dGVtcENvbmZpZywKKyAgICAgICAgICAgIGJlc3RNb21lbnQsCisKKyAgICAg ICAgICAgIHNjb3JlVG9CZWF0LAorICAgICAgICAgICAgaSwKKyAgICAgICAg ICAgIGN1cnJlbnRTY29yZTsKKworICAgICAgICBpZiAoY29uZmlnLl9mLmxl bmd0aCA9PT0gMCkgeworICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNv bmZpZykuaW52YWxpZEZvcm1hdCA9IHRydWU7CisgICAgICAgICAgICBjb25m aWcuX2QgPSBuZXcgRGF0ZShOYU4pOworICAgICAgICAgICAgcmV0dXJuOwor ICAgICAgICB9CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbmZpZy5f Zi5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgY3VycmVudFNjb3JlID0g MDsKKyAgICAgICAgICAgIHRlbXBDb25maWcgPSBjb3B5Q29uZmlnKHt9LCBj b25maWcpOworICAgICAgICAgICAgaWYgKGNvbmZpZy5fdXNlVVRDICE9IG51 bGwpIHsKKyAgICAgICAgICAgICAgICB0ZW1wQ29uZmlnLl91c2VVVEMgPSBj b25maWcuX3VzZVVUQzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRl bXBDb25maWcuX2YgPSBjb25maWcuX2ZbaV07CisgICAgICAgICAgICBjb25m aWdGcm9tU3RyaW5nQW5kRm9ybWF0KHRlbXBDb25maWcpOworCisgICAgICAg ICAgICBpZiAoIXZhbGlkX19pc1ZhbGlkKHRlbXBDb25maWcpKSB7CisgICAg ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAg ICAgICAgIC8vIGlmIHRoZXJlIGlzIGFueSBpbnB1dCB0aGF0IHdhcyBub3Qg cGFyc2VkIGFkZCBhIHBlbmFsdHkgZm9yIHRoYXQgZm9ybWF0CisgICAgICAg ICAgICBjdXJyZW50U2NvcmUgKz0gZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25m aWcpLmNoYXJzTGVmdE92ZXI7CisKKyAgICAgICAgICAgIC8vb3IgdG9rZW5z CisgICAgICAgICAgICBjdXJyZW50U2NvcmUgKz0gZ2V0UGFyc2luZ0ZsYWdz KHRlbXBDb25maWcpLnVudXNlZFRva2Vucy5sZW5ndGggKiAxMDsKKworICAg ICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLnNjb3JlID0g Y3VycmVudFNjb3JlOworCisgICAgICAgICAgICBpZiAoc2NvcmVUb0JlYXQg PT0gbnVsbCB8fCBjdXJyZW50U2NvcmUgPCBzY29yZVRvQmVhdCkgeworICAg ICAgICAgICAgICAgIHNjb3JlVG9CZWF0ID0gY3VycmVudFNjb3JlOworICAg ICAgICAgICAgICAgIGJlc3RNb21lbnQgPSB0ZW1wQ29uZmlnOworICAgICAg ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZXh0ZW5kKGNvbmZpZywg YmVzdE1vbWVudCB8fCB0ZW1wQ29uZmlnKTsKKyAgICB9CisKKyAgICBmdW5j dGlvbiBjb25maWdGcm9tT2JqZWN0KGNvbmZpZykgeworICAgICAgICBpZiAo Y29uZmlnLl9kKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K KworICAgICAgICB2YXIgaSA9IG5vcm1hbGl6ZU9iamVjdFVuaXRzKGNvbmZp Zy5faSk7CisgICAgICAgIGNvbmZpZy5fYSA9IG1hcChbaS55ZWFyLCBpLm1v bnRoLCBpLmRheSB8fCBpLmRhdGUsIGkuaG91ciwgaS5taW51dGUsIGkuc2Vj b25kLCBpLm1pbGxpc2Vjb25kXSwgZnVuY3Rpb24gKG9iaikgeworICAgICAg ICAgICAgcmV0dXJuIG9iaiAmJiBwYXJzZUludChvYmosIDEwKTsKKyAgICAg ICAgfSk7CisKKyAgICAgICAgY29uZmlnRnJvbUFycmF5KGNvbmZpZyk7Cisg ICAgfQorCisgICAgZnVuY3Rpb24gY3JlYXRlRnJvbUNvbmZpZyAoY29uZmln KSB7CisgICAgICAgIHZhciByZXMgPSBuZXcgTW9tZW50KGNoZWNrT3ZlcmZs b3cocHJlcGFyZUNvbmZpZyhjb25maWcpKSk7CisgICAgICAgIGlmIChyZXMu X25leHREYXkpIHsKKyAgICAgICAgICAgIC8vIEFkZGluZyBpcyBzbWFydCBl bm91Z2ggYXJvdW5kIERTVAorICAgICAgICAgICAgcmVzLmFkZCgxLCAnZCcp OworICAgICAgICAgICAgcmVzLl9uZXh0RGF5ID0gdW5kZWZpbmVkOworICAg ICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisKKyAgICBm dW5jdGlvbiBwcmVwYXJlQ29uZmlnIChjb25maWcpIHsKKyAgICAgICAgdmFy IGlucHV0ID0gY29uZmlnLl9pLAorICAgICAgICAgICAgZm9ybWF0ID0gY29u ZmlnLl9mOworCisgICAgICAgIGNvbmZpZy5fbG9jYWxlID0gY29uZmlnLl9s b2NhbGUgfHwgbG9jYWxlX2xvY2FsZXNfX2dldExvY2FsZShjb25maWcuX2wp OworCisgICAgICAgIGlmIChpbnB1dCA9PT0gbnVsbCB8fCAoZm9ybWF0ID09 PSB1bmRlZmluZWQgJiYgaW5wdXQgPT09ICcnKSkgeworICAgICAgICAgICAg cmV0dXJuIHZhbGlkX19jcmVhdGVJbnZhbGlkKHtudWxsSW5wdXQ6IHRydWV9 KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09 ICdzdHJpbmcnKSB7CisgICAgICAgICAgICBjb25maWcuX2kgPSBpbnB1dCA9 IGNvbmZpZy5fbG9jYWxlLnByZXBhcnNlKGlucHV0KTsKKyAgICAgICAgfQor CisgICAgICAgIGlmIChpc01vbWVudChpbnB1dCkpIHsKKyAgICAgICAgICAg IHJldHVybiBuZXcgTW9tZW50KGNoZWNrT3ZlcmZsb3coaW5wdXQpKTsKKyAg ICAgICAgfSBlbHNlIGlmIChpc0FycmF5KGZvcm1hdCkpIHsKKyAgICAgICAg ICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRBcnJheShjb25maWcpOworICAgICAg ICB9IGVsc2UgaWYgKGlzRGF0ZShpbnB1dCkpIHsKKyAgICAgICAgICAgIGNv bmZpZy5fZCA9IGlucHV0OworICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCkg eworICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdChjb25m aWcpOworICAgICAgICB9ICBlbHNlIHsKKyAgICAgICAgICAgIGNvbmZpZ0Zy b21JbnB1dChjb25maWcpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF2 YWxpZF9faXNWYWxpZChjb25maWcpKSB7CisgICAgICAgICAgICBjb25maWcu X2QgPSBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvbmZp ZzsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjb25maWdGcm9tSW5wdXQoY29u ZmlnKSB7CisgICAgICAgIHZhciBpbnB1dCA9IGNvbmZpZy5faTsKKyAgICAg ICAgaWYgKGlucHV0ID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgIGNv bmZpZy5fZCA9IG5ldyBEYXRlKHV0aWxzX2hvb2tzX19ob29rcy5ub3coKSk7 CisgICAgICAgIH0gZWxzZSBpZiAoaXNEYXRlKGlucHV0KSkgeworICAgICAg ICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoaW5wdXQudmFsdWVPZigpKTsK KyAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcn KSB7CisgICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nKGNvbmZpZyk7Cisg ICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShpbnB1dCkpIHsKKyAgICAgICAg ICAgIGNvbmZpZy5fYSA9IG1hcChpbnB1dC5zbGljZSgwKSwgZnVuY3Rpb24g KG9iaikgeworICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChvYmos IDEwKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgY29uZmlnRnJv bUFycmF5KGNvbmZpZyk7CisgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mKGlu cHV0KSA9PT0gJ29iamVjdCcpIHsKKyAgICAgICAgICAgIGNvbmZpZ0Zyb21P YmplY3QoY29uZmlnKTsKKyAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YoaW5w dXQpID09PSAnbnVtYmVyJykgeworICAgICAgICAgICAgLy8gZnJvbSBtaWxs aXNlY29uZHMKKyAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGlu cHV0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHV0aWxzX2hv b2tzX19ob29rcy5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayhjb25maWcpOwor ICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gY3JlYXRlTG9jYWxP clVUQyAoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QsIGlzVVRDKSB7 CisgICAgICAgIHZhciBjID0ge307CisKKyAgICAgICAgaWYgKHR5cGVvZihs b2NhbGUpID09PSAnYm9vbGVhbicpIHsKKyAgICAgICAgICAgIHN0cmljdCA9 IGxvY2FsZTsKKyAgICAgICAgICAgIGxvY2FsZSA9IHVuZGVmaW5lZDsKKyAg ICAgICAgfQorCisgICAgICAgIGlmICgoaXNPYmplY3QoaW5wdXQpICYmIGlz T2JqZWN0RW1wdHkoaW5wdXQpKSB8fAorICAgICAgICAgICAgICAgIChpc0Fy cmF5KGlucHV0KSAmJiBpbnB1dC5sZW5ndGggPT09IDApKSB7CisgICAgICAg ICAgICBpbnB1dCA9IHVuZGVmaW5lZDsKKyAgICAgICAgfQorICAgICAgICAv LyBvYmplY3QgY29uc3RydWN0aW9uIG11c3QgYmUgZG9uZSB0aGlzIHdheS4K KyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQv aXNzdWVzLzE0MjMKKyAgICAgICAgYy5faXNBTW9tZW50T2JqZWN0ID0gdHJ1 ZTsKKyAgICAgICAgYy5fdXNlVVRDID0gYy5faXNVVEMgPSBpc1VUQzsKKyAg ICAgICAgYy5fbCA9IGxvY2FsZTsKKyAgICAgICAgYy5faSA9IGlucHV0Owor ICAgICAgICBjLl9mID0gZm9ybWF0OworICAgICAgICBjLl9zdHJpY3QgPSBz dHJpY3Q7CisKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyb21Db25maWcoYyk7 CisgICAgfQorCisgICAgZnVuY3Rpb24gbG9jYWxfX2NyZWF0ZUxvY2FsIChp bnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCkgeworICAgICAgICByZXR1 cm4gY3JlYXRlTG9jYWxPclVUQyhpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0 cmljdCwgZmFsc2UpOworICAgIH0KKworICAgIHZhciBwcm90b3R5cGVNaW4g PSBkZXByZWNhdGUoCisgICAgICAgICdtb21lbnQoKS5taW4gaXMgZGVwcmVj YXRlZCwgdXNlIG1vbWVudC5tYXggaW5zdGVhZC4gaHR0cDovL21vbWVudGpz LmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LycsCisgICAgICAgIGZ1 bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciBvdGhlciA9IGxvY2FsX19j cmVhdGVMb2NhbC5hcHBseShudWxsLCBhcmd1bWVudHMpOworICAgICAgICAg ICAgaWYgKHRoaXMuaXNWYWxpZCgpICYmIG90aGVyLmlzVmFsaWQoKSkgewor ICAgICAgICAgICAgICAgIHJldHVybiBvdGhlciA8IHRoaXMgPyB0aGlzIDog b3RoZXI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg IHJldHVybiB2YWxpZF9fY3JlYXRlSW52YWxpZCgpOworICAgICAgICAgICAg fQorICAgICAgICB9CisgICAgKTsKKworICAgIHZhciBwcm90b3R5cGVNYXgg PSBkZXByZWNhdGUoCisgICAgICAgICdtb21lbnQoKS5tYXggaXMgZGVwcmVj YXRlZCwgdXNlIG1vbWVudC5taW4gaW5zdGVhZC4gaHR0cDovL21vbWVudGpz LmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LycsCisgICAgICAgIGZ1 bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciBvdGhlciA9IGxvY2FsX19j cmVhdGVMb2NhbC5hcHBseShudWxsLCBhcmd1bWVudHMpOworICAgICAgICAg ICAgaWYgKHRoaXMuaXNWYWxpZCgpICYmIG90aGVyLmlzVmFsaWQoKSkgewor ICAgICAgICAgICAgICAgIHJldHVybiBvdGhlciA+IHRoaXMgPyB0aGlzIDog b3RoZXI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg IHJldHVybiB2YWxpZF9fY3JlYXRlSW52YWxpZCgpOworICAgICAgICAgICAg fQorICAgICAgICB9CisgICAgKTsKKworICAgIC8vIFBpY2sgYSBtb21lbnQg bSBmcm9tIG1vbWVudHMgc28gdGhhdCBtW2ZuXShvdGhlcikgaXMgdHJ1ZSBm b3IgYWxsCisgICAgLy8gb3RoZXIuIFRoaXMgcmVsaWVzIG9uIHRoZSBmdW5j dGlvbiBmbiB0byBiZSB0cmFuc2l0aXZlLgorICAgIC8vCisgICAgLy8gbW9t ZW50cyBzaG91bGQgZWl0aGVyIGJlIGFuIGFycmF5IG9mIG1vbWVudCBvYmpl Y3RzIG9yIGFuIGFycmF5LCB3aG9zZQorICAgIC8vIGZpcnN0IGVsZW1lbnQg aXMgYW4gYXJyYXkgb2YgbW9tZW50IG9iamVjdHMuCisgICAgZnVuY3Rpb24g cGlja0J5KGZuLCBtb21lbnRzKSB7CisgICAgICAgIHZhciByZXMsIGk7Cisg ICAgICAgIGlmIChtb21lbnRzLmxlbmd0aCA9PT0gMSAmJiBpc0FycmF5KG1v bWVudHNbMF0pKSB7CisgICAgICAgICAgICBtb21lbnRzID0gbW9tZW50c1sw XTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIW1vbWVudHMubGVuZ3RoKSB7 CisgICAgICAgICAgICByZXR1cm4gbG9jYWxfX2NyZWF0ZUxvY2FsKCk7Cisg ICAgICAgIH0KKyAgICAgICAgcmVzID0gbW9tZW50c1swXTsKKyAgICAgICAg Zm9yIChpID0gMTsgaSA8IG1vbWVudHMubGVuZ3RoOyArK2kpIHsKKyAgICAg ICAgICAgIGlmICghbW9tZW50c1tpXS5pc1ZhbGlkKCkgfHwgbW9tZW50c1tp XVtmbl0ocmVzKSkgeworICAgICAgICAgICAgICAgIHJlcyA9IG1vbWVudHNb aV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu IHJlczsKKyAgICB9CisKKyAgICAvLyBUT0RPOiBVc2UgW10uc29ydCBpbnN0 ZWFkPworICAgIGZ1bmN0aW9uIG1pbiAoKSB7CisgICAgICAgIHZhciBhcmdz ID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApOworCisgICAgICAgIHJl dHVybiBwaWNrQnkoJ2lzQmVmb3JlJywgYXJncyk7CisgICAgfQorCisgICAg ZnVuY3Rpb24gbWF4ICgpIHsKKyAgICAgICAgdmFyIGFyZ3MgPSBbXS5zbGlj ZS5jYWxsKGFyZ3VtZW50cywgMCk7CisKKyAgICAgICAgcmV0dXJuIHBpY2tC eSgnaXNBZnRlcicsIGFyZ3MpOworICAgIH0KKworICAgIHZhciBub3cgPSBm dW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiBEYXRlLm5vdyA/IERhdGUu bm93KCkgOiArKG5ldyBEYXRlKCkpOworICAgIH07CisKKyAgICBmdW5jdGlv biBEdXJhdGlvbiAoZHVyYXRpb24pIHsKKyAgICAgICAgdmFyIG5vcm1hbGl6 ZWRJbnB1dCA9IG5vcm1hbGl6ZU9iamVjdFVuaXRzKGR1cmF0aW9uKSwKKyAg ICAgICAgICAgIHllYXJzID0gbm9ybWFsaXplZElucHV0LnllYXIgfHwgMCwK KyAgICAgICAgICAgIHF1YXJ0ZXJzID0gbm9ybWFsaXplZElucHV0LnF1YXJ0 ZXIgfHwgMCwKKyAgICAgICAgICAgIG1vbnRocyA9IG5vcm1hbGl6ZWRJbnB1 dC5tb250aCB8fCAwLAorICAgICAgICAgICAgd2Vla3MgPSBub3JtYWxpemVk SW5wdXQud2VlayB8fCAwLAorICAgICAgICAgICAgZGF5cyA9IG5vcm1hbGl6 ZWRJbnB1dC5kYXkgfHwgMCwKKyAgICAgICAgICAgIGhvdXJzID0gbm9ybWFs aXplZElucHV0LmhvdXIgfHwgMCwKKyAgICAgICAgICAgIG1pbnV0ZXMgPSBu b3JtYWxpemVkSW5wdXQubWludXRlIHx8IDAsCisgICAgICAgICAgICBzZWNv bmRzID0gbm9ybWFsaXplZElucHV0LnNlY29uZCB8fCAwLAorICAgICAgICAg ICAgbWlsbGlzZWNvbmRzID0gbm9ybWFsaXplZElucHV0Lm1pbGxpc2Vjb25k IHx8IDA7CisKKyAgICAgICAgLy8gcmVwcmVzZW50YXRpb24gZm9yIGRhdGVB ZGRSZW1vdmUKKyAgICAgICAgdGhpcy5fbWlsbGlzZWNvbmRzID0gK21pbGxp c2Vjb25kcyArCisgICAgICAgICAgICBzZWNvbmRzICogMWUzICsgLy8gMTAw MAorICAgICAgICAgICAgbWludXRlcyAqIDZlNCArIC8vIDEwMDAgKiA2MAor ICAgICAgICAgICAgaG91cnMgKiAxMDAwICogNjAgKiA2MDsgLy91c2luZyAx MDAwICogNjAgKiA2MCBpbnN0ZWFkIG9mIDM2ZTUgdG8gYXZvaWQgZmxvYXRp bmcgcG9pbnQgcm91bmRpbmcgZXJyb3JzIGh0dHBzOi8vZ2l0aHViLmNvbS9t b21lbnQvbW9tZW50L2lzc3Vlcy8yOTc4CisgICAgICAgIC8vIEJlY2F1c2Ug b2YgZGF0ZUFkZFJlbW92ZSB0cmVhdHMgMjQgaG91cnMgYXMgZGlmZmVyZW50 IGZyb20gYQorICAgICAgICAvLyBkYXkgd2hlbiB3b3JraW5nIGFyb3VuZCBE U1QsIHdlIG5lZWQgdG8gc3RvcmUgdGhlbSBzZXBhcmF0ZWx5CisgICAgICAg IHRoaXMuX2RheXMgPSArZGF5cyArCisgICAgICAgICAgICB3ZWVrcyAqIDc7 CisgICAgICAgIC8vIEl0IGlzIGltcG9zc2libGUgdHJhbnNsYXRlIG1vbnRo cyBpbnRvIGRheXMgd2l0aG91dCBrbm93aW5nCisgICAgICAgIC8vIHdoaWNo IG1vbnRocyB5b3UgYXJlIGFyZSB0YWxraW5nIGFib3V0LCBzbyB3ZSBoYXZl IHRvIHN0b3JlCisgICAgICAgIC8vIGl0IHNlcGFyYXRlbHkuCisgICAgICAg IHRoaXMuX21vbnRocyA9ICttb250aHMgKworICAgICAgICAgICAgcXVhcnRl cnMgKiAzICsKKyAgICAgICAgICAgIHllYXJzICogMTI7CisKKyAgICAgICAg dGhpcy5fZGF0YSA9IHt9OworCisgICAgICAgIHRoaXMuX2xvY2FsZSA9IGxv Y2FsZV9sb2NhbGVzX19nZXRMb2NhbGUoKTsKKworICAgICAgICB0aGlzLl9i dWJibGUoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBpc0R1cmF0aW9uIChv YmopIHsKKyAgICAgICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIER1cmF0aW9u OworICAgIH0KKworICAgIGZ1bmN0aW9uIGFic1JvdW5kIChudW1iZXIpIHsK KyAgICAgICAgaWYgKG51bWJlciA8IDApIHsKKyAgICAgICAgICAgIHJldHVy biBNYXRoLnJvdW5kKC0xICogbnVtYmVyKSAqIC0xOworICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQobnVtYmVyKTsK KyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZPUk1BVFRJTkcKKworICAg IGZ1bmN0aW9uIG9mZnNldCAodG9rZW4sIHNlcGFyYXRvcikgeworICAgICAg ICBhZGRGb3JtYXRUb2tlbih0b2tlbiwgMCwgMCwgZnVuY3Rpb24gKCkgewor ICAgICAgICAgICAgdmFyIG9mZnNldCA9IHRoaXMudXRjT2Zmc2V0KCk7Cisg ICAgICAgICAgICB2YXIgc2lnbiA9ICcrJzsKKyAgICAgICAgICAgIGlmIChv ZmZzZXQgPCAwKSB7CisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gLW9mZnNl dDsKKyAgICAgICAgICAgICAgICBzaWduID0gJy0nOworICAgICAgICAgICAg fQorICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyB6ZXJvRmlsbCh+fihvZmZz ZXQgLyA2MCksIDIpICsgc2VwYXJhdG9yICsgemVyb0ZpbGwofn4ob2Zmc2V0 KSAlIDYwLCAyKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgb2Zmc2V0 KCdaJywgJzonKTsKKyAgICBvZmZzZXQoJ1paJywgJycpOworCisgICAgLy8g UEFSU0lORworCisgICAgYWRkUmVnZXhUb2tlbignWicsICBtYXRjaFNob3J0 T2Zmc2V0KTsKKyAgICBhZGRSZWdleFRva2VuKCdaWicsIG1hdGNoU2hvcnRP ZmZzZXQpOworICAgIGFkZFBhcnNlVG9rZW4oWydaJywgJ1paJ10sIGZ1bmN0 aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykgeworICAgICAgICBjb25maWcu X3VzZVVUQyA9IHRydWU7CisgICAgICAgIGNvbmZpZy5fdHptID0gb2Zmc2V0 RnJvbVN0cmluZyhtYXRjaFNob3J0T2Zmc2V0LCBpbnB1dCk7CisgICAgfSk7 CisKKyAgICAvLyBIRUxQRVJTCisKKyAgICAvLyB0aW1lem9uZSBjaHVua2Vy CisgICAgLy8gJysxMDowMCcgPiBbJzEwJywgICcwMCddCisgICAgLy8gJy0x NTMwJyAgPiBbJy0xNScsICczMCddCisgICAgdmFyIGNodW5rT2Zmc2V0ID0g LyhbXCtcLV18XGRcZCkvZ2k7CisKKyAgICBmdW5jdGlvbiBvZmZzZXRGcm9t U3RyaW5nKG1hdGNoZXIsIHN0cmluZykgeworICAgICAgICB2YXIgbWF0Y2hl cyA9ICgoc3RyaW5nIHx8ICcnKS5tYXRjaChtYXRjaGVyKSB8fCBbXSk7Cisg ICAgICAgIHZhciBjaHVuayAgID0gbWF0Y2hlc1ttYXRjaGVzLmxlbmd0aCAt IDFdIHx8IFtdOworICAgICAgICB2YXIgcGFydHMgICA9IChjaHVuayArICcn KS5tYXRjaChjaHVua09mZnNldCkgfHwgWyctJywgMCwgMF07CisgICAgICAg IHZhciBtaW51dGVzID0gKyhwYXJ0c1sxXSAqIDYwKSArIHRvSW50KHBhcnRz WzJdKTsKKworICAgICAgICByZXR1cm4gcGFydHNbMF0gPT09ICcrJyA/IG1p bnV0ZXMgOiAtbWludXRlczsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4gYSBt b21lbnQgZnJvbSBpbnB1dCwgdGhhdCBpcyBsb2NhbC91dGMvem9uZSBlcXVp dmFsZW50IHRvIG1vZGVsLgorICAgIGZ1bmN0aW9uIGNsb25lV2l0aE9mZnNl dChpbnB1dCwgbW9kZWwpIHsKKyAgICAgICAgdmFyIHJlcywgZGlmZjsKKyAg ICAgICAgaWYgKG1vZGVsLl9pc1VUQykgeworICAgICAgICAgICAgcmVzID0g bW9kZWwuY2xvbmUoKTsKKyAgICAgICAgICAgIGRpZmYgPSAoaXNNb21lbnQo aW5wdXQpIHx8IGlzRGF0ZShpbnB1dCkgPyBpbnB1dC52YWx1ZU9mKCkgOiBs b2NhbF9fY3JlYXRlTG9jYWwoaW5wdXQpLnZhbHVlT2YoKSkgLSByZXMudmFs dWVPZigpOworICAgICAgICAgICAgLy8gVXNlIGxvdy1sZXZlbCBhcGksIGJl Y2F1c2UgdGhpcyBmbiBpcyBsb3ctbGV2ZWwgYXBpLgorICAgICAgICAgICAg cmVzLl9kLnNldFRpbWUocmVzLl9kLnZhbHVlT2YoKSArIGRpZmYpOworICAg ICAgICAgICAgdXRpbHNfaG9va3NfX2hvb2tzLnVwZGF0ZU9mZnNldChyZXMs IGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbG9jYWxfX2NyZWF0ZUxvY2Fs KGlucHV0KS5sb2NhbCgpOworICAgICAgICB9CisgICAgfQorCisgICAgZnVu Y3Rpb24gZ2V0RGF0ZU9mZnNldCAobSkgeworICAgICAgICAvLyBPbiBGaXJl Zm94LjI0IERhdGUjZ2V0VGltZXpvbmVPZmZzZXQgcmV0dXJucyBhIGZsb2F0 aW5nIHBvaW50LgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbW9t ZW50L21vbWVudC9wdWxsLzE4NzEKKyAgICAgICAgcmV0dXJuIC1NYXRoLnJv dW5kKG0uX2QuZ2V0VGltZXpvbmVPZmZzZXQoKSAvIDE1KSAqIDE1OworICAg IH0KKworICAgIC8vIEhPT0tTCisKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHdp bGwgYmUgY2FsbGVkIHdoZW5ldmVyIGEgbW9tZW50IGlzIG11dGF0ZWQuCisg ICAgLy8gSXQgaXMgaW50ZW5kZWQgdG8ga2VlcCB0aGUgb2Zmc2V0IGluIHN5 bmMgd2l0aCB0aGUgdGltZXpvbmUuCisgICAgdXRpbHNfaG9va3NfX2hvb2tz LnVwZGF0ZU9mZnNldCA9IGZ1bmN0aW9uICgpIHt9OworCisgICAgLy8gTU9N RU5UUworCisgICAgLy8ga2VlcExvY2FsVGltZSA9IHRydWUgbWVhbnMgb25s eSBjaGFuZ2UgdGhlIHRpbWV6b25lLCB3aXRob3V0CisgICAgLy8gYWZmZWN0 aW5nIHRoZSBsb2NhbCBob3VyLiBTbyA1OjMxOjI2ICswMzAwIC0tW3V0Y09m ZnNldCgyLCB0cnVlKV0tLT4KKyAgICAvLyA1OjMxOjI2ICswMjAwIEl0IGlz IHBvc3NpYmxlIHRoYXQgNTozMToyNiBkb2Vzbid0IGV4aXN0IHdpdGggb2Zm c2V0CisgICAgLy8gKzAyMDAsIHNvIHdlIGFkanVzdCB0aGUgdGltZSBhcyBu ZWVkZWQsIHRvIGJlIHZhbGlkLgorICAgIC8vCisgICAgLy8gS2VlcGluZyB0 aGUgdGltZSBhY3R1YWxseSBhZGRzL3N1YnRyYWN0cyAob25lIGhvdXIpCisg ICAgLy8gZnJvbSB0aGUgYWN0dWFsIHJlcHJlc2VudGVkIHRpbWUuIFRoYXQg aXMgd2h5IHdlIGNhbGwgdXBkYXRlT2Zmc2V0CisgICAgLy8gYSBzZWNvbmQg dGltZS4gSW4gY2FzZSBpdCB3YW50cyB1cyB0byBjaGFuZ2UgdGhlIG9mZnNl dCBhZ2FpbgorICAgIC8vIF9jaGFuZ2VJblByb2dyZXNzID09IHRydWUgY2Fz ZSwgdGhlbiB3ZSBoYXZlIHRvIGFkanVzdCwgYmVjYXVzZQorICAgIC8vIHRo ZXJlIGlzIG5vIHN1Y2ggdGltZSBpbiB0aGUgZ2l2ZW4gdGltZXpvbmUuCisg ICAgZnVuY3Rpb24gZ2V0U2V0T2Zmc2V0IChpbnB1dCwga2VlcExvY2FsVGlt ZSkgeworICAgICAgICB2YXIgb2Zmc2V0ID0gdGhpcy5fb2Zmc2V0IHx8IDAs CisgICAgICAgICAgICBsb2NhbEFkanVzdDsKKyAgICAgICAgaWYgKCF0aGlz LmlzVmFsaWQoKSkgeworICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51 bGwgPyB0aGlzIDogTmFOOworICAgICAgICB9CisgICAgICAgIGlmIChpbnB1 dCAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09 PSAnc3RyaW5nJykgeworICAgICAgICAgICAgICAgIGlucHV0ID0gb2Zmc2V0 RnJvbVN0cmluZyhtYXRjaFNob3J0T2Zmc2V0LCBpbnB1dCk7CisgICAgICAg ICAgICB9IGVsc2UgaWYgKE1hdGguYWJzKGlucHV0KSA8IDE2KSB7CisgICAg ICAgICAgICAgICAgaW5wdXQgPSBpbnB1dCAqIDYwOworICAgICAgICAgICAg fQorICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1VUQyAmJiBrZWVwTG9jYWxU aW1lKSB7CisgICAgICAgICAgICAgICAgbG9jYWxBZGp1c3QgPSBnZXREYXRl T2Zmc2V0KHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhp cy5fb2Zmc2V0ID0gaW5wdXQ7CisgICAgICAgICAgICB0aGlzLl9pc1VUQyA9 IHRydWU7CisgICAgICAgICAgICBpZiAobG9jYWxBZGp1c3QgIT0gbnVsbCkg eworICAgICAgICAgICAgICAgIHRoaXMuYWRkKGxvY2FsQWRqdXN0LCAnbScp OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG9mZnNldCAhPT0g aW5wdXQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWtlZXBMb2NhbFRpbWUg fHwgdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcykgeworICAgICAgICAgICAgICAg ICAgICBhZGRfc3VidHJhY3RfX2FkZFN1YnRyYWN0KHRoaXMsIGNyZWF0ZV9f Y3JlYXRlRHVyYXRpb24oaW5wdXQgLSBvZmZzZXQsICdtJyksIDEsIGZhbHNl KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLl9jaGFuZ2VJ blByb2dyZXNzKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5n ZUluUHJvZ3Jlc3MgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB1dGls c19ob29rc19faG9va3MudXBkYXRlT2Zmc2V0KHRoaXMsIHRydWUpOworICAg ICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VJblByb2dyZXNzID0gbnVs bDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg ICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg ICAgIHJldHVybiB0aGlzLl9pc1VUQyA/IG9mZnNldCA6IGdldERhdGVPZmZz ZXQodGhpcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBn ZXRTZXRab25lIChpbnB1dCwga2VlcExvY2FsVGltZSkgeworICAgICAgICBp ZiAoaW5wdXQgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKHR5cGVvZiBp bnB1dCAhPT0gJ3N0cmluZycpIHsKKyAgICAgICAgICAgICAgICBpbnB1dCA9 IC1pbnB1dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy51 dGNPZmZzZXQoaW5wdXQsIGtlZXBMb2NhbFRpbWUpOworCisgICAgICAgICAg ICByZXR1cm4gdGhpczsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg IHJldHVybiAtdGhpcy51dGNPZmZzZXQoKTsKKyAgICAgICAgfQorICAgIH0K KworICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvVVRDIChrZWVwTG9jYWxUaW1l KSB7CisgICAgICAgIHJldHVybiB0aGlzLnV0Y09mZnNldCgwLCBrZWVwTG9j YWxUaW1lKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRPZmZzZXRUb0xv Y2FsIChrZWVwTG9jYWxUaW1lKSB7CisgICAgICAgIGlmICh0aGlzLl9pc1VU QykgeworICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoMCwga2VlcExvY2Fs VGltZSk7CisgICAgICAgICAgICB0aGlzLl9pc1VUQyA9IGZhbHNlOworCisg ICAgICAgICAgICBpZiAoa2VlcExvY2FsVGltZSkgeworICAgICAgICAgICAg ICAgIHRoaXMuc3VidHJhY3QoZ2V0RGF0ZU9mZnNldCh0aGlzKSwgJ20nKTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhp czsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRPZmZzZXRUb1BhcnNlZE9m ZnNldCAoKSB7CisgICAgICAgIGlmICh0aGlzLl90em0pIHsKKyAgICAgICAg ICAgIHRoaXMudXRjT2Zmc2V0KHRoaXMuX3R6bSk7CisgICAgICAgIH0gZWxz ZSBpZiAodHlwZW9mIHRoaXMuX2kgPT09ICdzdHJpbmcnKSB7CisgICAgICAg ICAgICB2YXIgdFpvbmUgPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoT2Zmc2V0 LCB0aGlzLl9pKTsKKworICAgICAgICAgICAgaWYgKHRab25lID09PSAwKSB7 CisgICAgICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoMCwgdHJ1ZSk7Cisg ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMudXRj T2Zmc2V0KG9mZnNldEZyb21TdHJpbmcobWF0Y2hPZmZzZXQsIHRoaXMuX2kp KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4g dGhpczsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBoYXNBbGlnbmVkSG91ck9m ZnNldCAoaW5wdXQpIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkg eworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg ICAgIGlucHV0ID0gaW5wdXQgPyBsb2NhbF9fY3JlYXRlTG9jYWwoaW5wdXQp LnV0Y09mZnNldCgpIDogMDsKKworICAgICAgICByZXR1cm4gKHRoaXMudXRj T2Zmc2V0KCkgLSBpbnB1dCkgJSA2MCA9PT0gMDsKKyAgICB9CisKKyAgICBm dW5jdGlvbiBpc0RheWxpZ2h0U2F2aW5nVGltZSAoKSB7CisgICAgICAgIHJl dHVybiAoCisgICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5j bG9uZSgpLm1vbnRoKDApLnV0Y09mZnNldCgpIHx8CisgICAgICAgICAgICB0 aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDUpLnV0Y09m ZnNldCgpCisgICAgICAgICk7CisgICAgfQorCisgICAgZnVuY3Rpb24gaXNE YXlsaWdodFNhdmluZ1RpbWVTaGlmdGVkICgpIHsKKyAgICAgICAgaWYgKCFp c1VuZGVmaW5lZCh0aGlzLl9pc0RTVFNoaWZ0ZWQpKSB7CisgICAgICAgICAg ICByZXR1cm4gdGhpcy5faXNEU1RTaGlmdGVkOworICAgICAgICB9CisKKyAg ICAgICAgdmFyIGMgPSB7fTsKKworICAgICAgICBjb3B5Q29uZmlnKGMsIHRo aXMpOworICAgICAgICBjID0gcHJlcGFyZUNvbmZpZyhjKTsKKworICAgICAg ICBpZiAoYy5fYSkgeworICAgICAgICAgICAgdmFyIG90aGVyID0gYy5faXNV VEMgPyBjcmVhdGVfdXRjX19jcmVhdGVVVEMoYy5fYSkgOiBsb2NhbF9fY3Jl YXRlTG9jYWwoYy5fYSk7CisgICAgICAgICAgICB0aGlzLl9pc0RTVFNoaWZ0 ZWQgPSB0aGlzLmlzVmFsaWQoKSAmJgorICAgICAgICAgICAgICAgIGNvbXBh cmVBcnJheXMoYy5fYSwgb3RoZXIudG9BcnJheSgpKSA+IDA7CisgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLl9pc0RTVFNoaWZ0ZWQgPSBm YWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0aGlzLl9pc0RT VFNoaWZ0ZWQ7CisgICAgfQorCisgICAgZnVuY3Rpb24gaXNMb2NhbCAoKSB7 CisgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/ICF0aGlzLl9pc1VU QyA6IGZhbHNlOworICAgIH0KKworICAgIGZ1bmN0aW9uIGlzVXRjT2Zmc2V0 ICgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5f aXNVVEMgOiBmYWxzZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBpc1V0YyAo KSB7CisgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMuX2lz VVRDICYmIHRoaXMuX29mZnNldCA9PT0gMCA6IGZhbHNlOworICAgIH0KKwor ICAgIC8vIEFTUC5ORVQganNvbiBkYXRlIGZvcm1hdCByZWdleAorICAgIHZh ciBhc3BOZXRSZWdleCA9IC9eKFwtKT8oPzooXGQqKVsuIF0pPyhcZCspXDoo XGQrKSg/Olw6KFxkKykoXC5cZCopPyk/JC87CisKKyAgICAvLyBmcm9tIGh0 dHA6Ly9kb2NzLmNsb3N1cmUtbGlicmFyeS5nb29nbGVjb2RlLmNvbS9naXQv Y2xvc3VyZV9nb29nX2RhdGVfZGF0ZS5qcy5zb3VyY2UuaHRtbAorICAgIC8v IHNvbWV3aGF0IG1vcmUgaW4gbGluZSB3aXRoIDQuNC4zLjIgMjAwNCBzcGVj LCBidXQgYWxsb3dzIGRlY2ltYWwgYW55d2hlcmUKKyAgICAvLyBhbmQgZnVy dGhlciBtb2RpZmllZCB0byBhbGxvdyBmb3Igc3RyaW5ncyBjb250YWluaW5n IGJvdGggd2VlayBhbmQgZGF5CisgICAgdmFyIGlzb1JlZ2V4ID0gL14oLSk/ UCg/OigtP1swLTksLl0qKVkpPyg/OigtP1swLTksLl0qKU0pPyg/OigtP1sw LTksLl0qKVcpPyg/OigtP1swLTksLl0qKUQpPyg/OlQoPzooLT9bMC05LC5d KilIKT8oPzooLT9bMC05LC5dKilNKT8oPzooLT9bMC05LC5dKilTKT8pPyQv OworCisgICAgZnVuY3Rpb24gY3JlYXRlX19jcmVhdGVEdXJhdGlvbiAoaW5w dXQsIGtleSkgeworICAgICAgICB2YXIgZHVyYXRpb24gPSBpbnB1dCwKKyAg ICAgICAgICAgIC8vIG1hdGNoaW5nIGFnYWluc3QgcmVnZXhwIGlzIGV4cGVu c2l2ZSwgZG8gaXQgb24gZGVtYW5kCisgICAgICAgICAgICBtYXRjaCA9IG51 bGwsCisgICAgICAgICAgICBzaWduLAorICAgICAgICAgICAgcmV0LAorICAg ICAgICAgICAgZGlmZlJlczsKKworICAgICAgICBpZiAoaXNEdXJhdGlvbihp bnB1dCkpIHsKKyAgICAgICAgICAgIGR1cmF0aW9uID0geworICAgICAgICAg ICAgICAgIG1zIDogaW5wdXQuX21pbGxpc2Vjb25kcywKKyAgICAgICAgICAg ICAgICBkICA6IGlucHV0Ll9kYXlzLAorICAgICAgICAgICAgICAgIE0gIDog aW5wdXQuX21vbnRocworICAgICAgICAgICAgfTsKKyAgICAgICAgfSBlbHNl IGlmICh0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInKSB7CisgICAgICAgICAg ICBkdXJhdGlvbiA9IHt9OworICAgICAgICAgICAgaWYgKGtleSkgeworICAg ICAgICAgICAgICAgIGR1cmF0aW9uW2tleV0gPSBpbnB1dDsKKyAgICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZHVyYXRpb24ubWlsbGlz ZWNvbmRzID0gaW5wdXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz ZSBpZiAoISEobWF0Y2ggPSBhc3BOZXRSZWdleC5leGVjKGlucHV0KSkpIHsK KyAgICAgICAgICAgIHNpZ24gPSAobWF0Y2hbMV0gPT09ICctJykgPyAtMSA6 IDE7CisgICAgICAgICAgICBkdXJhdGlvbiA9IHsKKyAgICAgICAgICAgICAg ICB5ICA6IDAsCisgICAgICAgICAgICAgICAgZCAgOiB0b0ludChtYXRjaFtE QVRFXSkgICAgICAgICAgICAgICAgICAgICAgICAgKiBzaWduLAorICAgICAg ICAgICAgICAgIGggIDogdG9JbnQobWF0Y2hbSE9VUl0pICAgICAgICAgICAg ICAgICAgICAgICAgICogc2lnbiwKKyAgICAgICAgICAgICAgICBtICA6IHRv SW50KG1hdGNoW01JTlVURV0pICAgICAgICAgICAgICAgICAgICAgICAqIHNp Z24sCisgICAgICAgICAgICAgICAgcyAgOiB0b0ludChtYXRjaFtTRUNPTkRd KSAgICAgICAgICAgICAgICAgICAgICAgKiBzaWduLAorICAgICAgICAgICAg ICAgIG1zIDogdG9JbnQoYWJzUm91bmQobWF0Y2hbTUlMTElTRUNPTkRdICog MTAwMCkpICogc2lnbiAvLyB0aGUgbWlsbGlzZWNvbmQgZGVjaW1hbCBwb2lu dCBpcyBpbmNsdWRlZCBpbiB0aGUgbWF0Y2gKKyAgICAgICAgICAgIH07Cisg ICAgICAgIH0gZWxzZSBpZiAoISEobWF0Y2ggPSBpc29SZWdleC5leGVjKGlu cHV0KSkpIHsKKyAgICAgICAgICAgIHNpZ24gPSAobWF0Y2hbMV0gPT09ICct JykgPyAtMSA6IDE7CisgICAgICAgICAgICBkdXJhdGlvbiA9IHsKKyAgICAg ICAgICAgICAgICB5IDogcGFyc2VJc28obWF0Y2hbMl0sIHNpZ24pLAorICAg ICAgICAgICAgICAgIE0gOiBwYXJzZUlzbyhtYXRjaFszXSwgc2lnbiksCisg ICAgICAgICAgICAgICAgdyA6IHBhcnNlSXNvKG1hdGNoWzRdLCBzaWduKSwK KyAgICAgICAgICAgICAgICBkIDogcGFyc2VJc28obWF0Y2hbNV0sIHNpZ24p LAorICAgICAgICAgICAgICAgIGggOiBwYXJzZUlzbyhtYXRjaFs2XSwgc2ln biksCisgICAgICAgICAgICAgICAgbSA6IHBhcnNlSXNvKG1hdGNoWzddLCBz aWduKSwKKyAgICAgICAgICAgICAgICBzIDogcGFyc2VJc28obWF0Y2hbOF0s IHNpZ24pCisgICAgICAgICAgICB9OworICAgICAgICB9IGVsc2UgaWYgKGR1 cmF0aW9uID09IG51bGwpIHsvLyBjaGVja3MgZm9yIG51bGwgb3IgdW5kZWZp bmVkCisgICAgICAgICAgICBkdXJhdGlvbiA9IHt9OworICAgICAgICB9IGVs c2UgaWYgKHR5cGVvZiBkdXJhdGlvbiA9PT0gJ29iamVjdCcgJiYgKCdmcm9t JyBpbiBkdXJhdGlvbiB8fCAndG8nIGluIGR1cmF0aW9uKSkgeworICAgICAg ICAgICAgZGlmZlJlcyA9IG1vbWVudHNEaWZmZXJlbmNlKGxvY2FsX19jcmVh dGVMb2NhbChkdXJhdGlvbi5mcm9tKSwgbG9jYWxfX2NyZWF0ZUxvY2FsKGR1 cmF0aW9uLnRvKSk7CisKKyAgICAgICAgICAgIGR1cmF0aW9uID0ge307Cisg ICAgICAgICAgICBkdXJhdGlvbi5tcyA9IGRpZmZSZXMubWlsbGlzZWNvbmRz OworICAgICAgICAgICAgZHVyYXRpb24uTSA9IGRpZmZSZXMubW9udGhzOwor ICAgICAgICB9CisKKyAgICAgICAgcmV0ID0gbmV3IER1cmF0aW9uKGR1cmF0 aW9uKTsKKworICAgICAgICBpZiAoaXNEdXJhdGlvbihpbnB1dCkgJiYgaGFz T3duUHJvcChpbnB1dCwgJ19sb2NhbGUnKSkgeworICAgICAgICAgICAgcmV0 Ll9sb2NhbGUgPSBpbnB1dC5fbG9jYWxlOworICAgICAgICB9CisKKyAgICAg ICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICBjcmVhdGVfX2NyZWF0ZUR1 cmF0aW9uLmZuID0gRHVyYXRpb24ucHJvdG90eXBlOworCisgICAgZnVuY3Rp b24gcGFyc2VJc28gKGlucCwgc2lnbikgeworICAgICAgICAvLyBXZSdkIG5v cm1hbGx5IHVzZSB+fmlucCBmb3IgdGhpcywgYnV0IHVuZm9ydHVuYXRlbHkg aXQgYWxzbworICAgICAgICAvLyBjb252ZXJ0cyBmbG9hdHMgdG8gaW50cy4K KyAgICAgICAgLy8gaW5wIG1heSBiZSB1bmRlZmluZWQsIHNvIGNhcmVmdWwg Y2FsbGluZyByZXBsYWNlIG9uIGl0LgorICAgICAgICB2YXIgcmVzID0gaW5w ICYmIHBhcnNlRmxvYXQoaW5wLnJlcGxhY2UoJywnLCAnLicpKTsKKyAgICAg ICAgLy8gYXBwbHkgc2lnbiB3aGlsZSB3ZSdyZSBhdCBpdAorICAgICAgICBy ZXR1cm4gKGlzTmFOKHJlcykgPyAwIDogcmVzKSAqIHNpZ247CisgICAgfQor CisgICAgZnVuY3Rpb24gcG9zaXRpdmVNb21lbnRzRGlmZmVyZW5jZShiYXNl LCBvdGhlcikgeworICAgICAgICB2YXIgcmVzID0ge21pbGxpc2Vjb25kczog MCwgbW9udGhzOiAwfTsKKworICAgICAgICByZXMubW9udGhzID0gb3RoZXIu bW9udGgoKSAtIGJhc2UubW9udGgoKSArCisgICAgICAgICAgICAob3RoZXIu eWVhcigpIC0gYmFzZS55ZWFyKCkpICogMTI7CisgICAgICAgIGlmIChiYXNl LmNsb25lKCkuYWRkKHJlcy5tb250aHMsICdNJykuaXNBZnRlcihvdGhlcikp IHsKKyAgICAgICAgICAgIC0tcmVzLm1vbnRoczsKKyAgICAgICAgfQorCisg ICAgICAgIHJlcy5taWxsaXNlY29uZHMgPSArb3RoZXIgLSArKGJhc2UuY2xv bmUoKS5hZGQocmVzLm1vbnRocywgJ00nKSk7CisKKyAgICAgICAgcmV0dXJu IHJlczsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBtb21lbnRzRGlmZmVyZW5j ZShiYXNlLCBvdGhlcikgeworICAgICAgICB2YXIgcmVzOworICAgICAgICBp ZiAoIShiYXNlLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpKSB7Cisg ICAgICAgICAgICByZXR1cm4ge21pbGxpc2Vjb25kczogMCwgbW9udGhzOiAw fTsKKyAgICAgICAgfQorCisgICAgICAgIG90aGVyID0gY2xvbmVXaXRoT2Zm c2V0KG90aGVyLCBiYXNlKTsKKyAgICAgICAgaWYgKGJhc2UuaXNCZWZvcmUo b3RoZXIpKSB7CisgICAgICAgICAgICByZXMgPSBwb3NpdGl2ZU1vbWVudHNE aWZmZXJlbmNlKGJhc2UsIG90aGVyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgIHJlcyA9IHBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2Uob3Ro ZXIsIGJhc2UpOworICAgICAgICAgICAgcmVzLm1pbGxpc2Vjb25kcyA9IC1y ZXMubWlsbGlzZWNvbmRzOworICAgICAgICAgICAgcmVzLm1vbnRocyA9IC1y ZXMubW9udGhzOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlczsK KyAgICB9CisKKyAgICAvLyBUT0RPOiByZW1vdmUgJ25hbWUnIGFyZyBhZnRl ciBkZXByZWNhdGlvbiBpcyByZW1vdmVkCisgICAgZnVuY3Rpb24gY3JlYXRl QWRkZXIoZGlyZWN0aW9uLCBuYW1lKSB7CisgICAgICAgIHJldHVybiBmdW5j dGlvbiAodmFsLCBwZXJpb2QpIHsKKyAgICAgICAgICAgIHZhciBkdXIsIHRt cDsKKyAgICAgICAgICAgIC8vaW52ZXJ0IHRoZSBhcmd1bWVudHMsIGJ1dCBj b21wbGFpbiBhYm91dCBpdAorICAgICAgICAgICAgaWYgKHBlcmlvZCAhPT0g bnVsbCAmJiAhaXNOYU4oK3BlcmlvZCkpIHsKKyAgICAgICAgICAgICAgICBk ZXByZWNhdGVTaW1wbGUobmFtZSwgJ21vbWVudCgpLicgKyBuYW1lICArICco cGVyaW9kLCBudW1iZXIpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgbW9t ZW50KCkuJyArIG5hbWUgKyAnKG51bWJlciwgcGVyaW9kKS4gJyArCisgICAg ICAgICAgICAgICAgJ1NlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8j L3dhcm5pbmdzL2FkZC1pbnZlcnRlZC1wYXJhbS8gZm9yIG1vcmUgaW5mby4n KTsKKyAgICAgICAgICAgICAgICB0bXAgPSB2YWw7IHZhbCA9IHBlcmlvZDsg cGVyaW9kID0gdG1wOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2 YWwgPSB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyA/ICt2YWwgOiB2YWw7Cisg ICAgICAgICAgICBkdXIgPSBjcmVhdGVfX2NyZWF0ZUR1cmF0aW9uKHZhbCwg cGVyaW9kKTsKKyAgICAgICAgICAgIGFkZF9zdWJ0cmFjdF9fYWRkU3VidHJh Y3QodGhpcywgZHVyLCBkaXJlY3Rpb24pOworICAgICAgICAgICAgcmV0dXJu IHRoaXM7CisgICAgICAgIH07CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRk X3N1YnRyYWN0X19hZGRTdWJ0cmFjdCAobW9tLCBkdXJhdGlvbiwgaXNBZGRp bmcsIHVwZGF0ZU9mZnNldCkgeworICAgICAgICB2YXIgbWlsbGlzZWNvbmRz ID0gZHVyYXRpb24uX21pbGxpc2Vjb25kcywKKyAgICAgICAgICAgIGRheXMg PSBhYnNSb3VuZChkdXJhdGlvbi5fZGF5cyksCisgICAgICAgICAgICBtb250 aHMgPSBhYnNSb3VuZChkdXJhdGlvbi5fbW9udGhzKTsKKworICAgICAgICBp ZiAoIW1vbS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIC8vIE5vIG9wCisg ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB1cGRh dGVPZmZzZXQgPSB1cGRhdGVPZmZzZXQgPT0gbnVsbCA/IHRydWUgOiB1cGRh dGVPZmZzZXQ7CisKKyAgICAgICAgaWYgKG1pbGxpc2Vjb25kcykgeworICAg ICAgICAgICAgbW9tLl9kLnNldFRpbWUobW9tLl9kLnZhbHVlT2YoKSArIG1p bGxpc2Vjb25kcyAqIGlzQWRkaW5nKTsKKyAgICAgICAgfQorICAgICAgICBp ZiAoZGF5cykgeworICAgICAgICAgICAgZ2V0X3NldF9fc2V0KG1vbSwgJ0Rh dGUnLCBnZXRfc2V0X19nZXQobW9tLCAnRGF0ZScpICsgZGF5cyAqIGlzQWRk aW5nKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobW9udGhzKSB7CisgICAg ICAgICAgICBzZXRNb250aChtb20sIGdldF9zZXRfX2dldChtb20sICdNb250 aCcpICsgbW9udGhzICogaXNBZGRpbmcpOworICAgICAgICB9CisgICAgICAg IGlmICh1cGRhdGVPZmZzZXQpIHsKKyAgICAgICAgICAgIHV0aWxzX2hvb2tz X19ob29rcy51cGRhdGVPZmZzZXQobW9tLCBkYXlzIHx8IG1vbnRocyk7Cisg ICAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgYWRkX3N1YnRyYWN0X19hZGQg ICAgICA9IGNyZWF0ZUFkZGVyKDEsICdhZGQnKTsKKyAgICB2YXIgYWRkX3N1 YnRyYWN0X19zdWJ0cmFjdCA9IGNyZWF0ZUFkZGVyKC0xLCAnc3VidHJhY3Qn KTsKKworICAgIGZ1bmN0aW9uIGdldENhbGVuZGFyRm9ybWF0KG15TW9tZW50 LCBub3cpIHsKKyAgICAgICAgdmFyIGRpZmYgPSBteU1vbWVudC5kaWZmKG5v dywgJ2RheXMnLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIGRpZmYgPCAtNiA/ ICdzYW1lRWxzZScgOgorICAgICAgICAgICAgICAgIGRpZmYgPCAtMSA/ICds YXN0V2VlaycgOgorICAgICAgICAgICAgICAgIGRpZmYgPCAwID8gJ2xhc3RE YXknIDoKKyAgICAgICAgICAgICAgICBkaWZmIDwgMSA/ICdzYW1lRGF5JyA6 CisgICAgICAgICAgICAgICAgZGlmZiA8IDIgPyAnbmV4dERheScgOgorICAg ICAgICAgICAgICAgIGRpZmYgPCA3ID8gJ25leHRXZWVrJyA6ICdzYW1lRWxz ZSc7CisgICAgfQorCisgICAgZnVuY3Rpb24gbW9tZW50X2NhbGVuZGFyX19j YWxlbmRhciAodGltZSwgZm9ybWF0cykgeworICAgICAgICAvLyBXZSB3YW50 IHRvIGNvbXBhcmUgdGhlIHN0YXJ0IG9mIHRvZGF5LCB2cyB0aGlzLgorICAg ICAgICAvLyBHZXR0aW5nIHN0YXJ0LW9mLXRvZGF5IGRlcGVuZHMgb24gd2hl dGhlciB3ZSdyZSBsb2NhbC91dGMvb2Zmc2V0IG9yIG5vdC4KKyAgICAgICAg dmFyIG5vdyA9IHRpbWUgfHwgbG9jYWxfX2NyZWF0ZUxvY2FsKCksCisgICAg ICAgICAgICBzb2QgPSBjbG9uZVdpdGhPZmZzZXQobm93LCB0aGlzKS5zdGFy dE9mKCdkYXknKSwKKyAgICAgICAgICAgIGZvcm1hdCA9IHV0aWxzX2hvb2tz X19ob29rcy5jYWxlbmRhckZvcm1hdCh0aGlzLCBzb2QpIHx8ICdzYW1lRWxz ZSc7CisKKyAgICAgICAgdmFyIG91dHB1dCA9IGZvcm1hdHMgJiYgKGlzRnVu Y3Rpb24oZm9ybWF0c1tmb3JtYXRdKSA/IGZvcm1hdHNbZm9ybWF0XS5jYWxs KHRoaXMsIG5vdykgOiBmb3JtYXRzW2Zvcm1hdF0pOworCisgICAgICAgIHJl dHVybiB0aGlzLmZvcm1hdChvdXRwdXQgfHwgdGhpcy5sb2NhbGVEYXRhKCku Y2FsZW5kYXIoZm9ybWF0LCB0aGlzLCBsb2NhbF9fY3JlYXRlTG9jYWwobm93 KSkpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNsb25lICgpIHsKKyAgICAg ICAgcmV0dXJuIG5ldyBNb21lbnQodGhpcyk7CisgICAgfQorCisgICAgZnVu Y3Rpb24gaXNBZnRlciAoaW5wdXQsIHVuaXRzKSB7CisgICAgICAgIHZhciBs b2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBsb2NhbF9f Y3JlYXRlTG9jYWwoaW5wdXQpOworICAgICAgICBpZiAoISh0aGlzLmlzVmFs aWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHsKKyAgICAgICAgICAg IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICB1bml0cyA9IG5v cm1hbGl6ZVVuaXRzKCFpc1VuZGVmaW5lZCh1bml0cykgPyB1bml0cyA6ICdt aWxsaXNlY29uZCcpOworICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNl Y29uZCcpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA+ IGxvY2FsSW5wdXQudmFsdWVPZigpOworICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgcmV0dXJuIGxvY2FsSW5wdXQudmFsdWVPZigpIDwgdGhpcy5j bG9uZSgpLnN0YXJ0T2YodW5pdHMpLnZhbHVlT2YoKTsKKyAgICAgICAgfQor ICAgIH0KKworICAgIGZ1bmN0aW9uIGlzQmVmb3JlIChpbnB1dCwgdW5pdHMp IHsKKyAgICAgICAgdmFyIGxvY2FsSW5wdXQgPSBpc01vbWVudChpbnB1dCkg PyBpbnB1dCA6IGxvY2FsX19jcmVhdGVMb2NhbChpbnB1dCk7CisgICAgICAg IGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsSW5wdXQuaXNWYWxpZCgp KSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg ICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHMoIWlzVW5kZWZpbmVkKHVu aXRzKSA/IHVuaXRzIDogJ21pbGxpc2Vjb25kJyk7CisgICAgICAgIGlmICh1 bml0cyA9PT0gJ21pbGxpc2Vjb25kJykgeworICAgICAgICAgICAgcmV0dXJu IHRoaXMudmFsdWVPZigpIDwgbG9jYWxJbnB1dC52YWx1ZU9mKCk7CisgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgp LmVuZE9mKHVuaXRzKS52YWx1ZU9mKCkgPCBsb2NhbElucHV0LnZhbHVlT2Yo KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIGlzQmV0d2Vl biAoZnJvbSwgdG8sIHVuaXRzLCBpbmNsdXNpdml0eSkgeworICAgICAgICBp bmNsdXNpdml0eSA9IGluY2x1c2l2aXR5IHx8ICcoKSc7CisgICAgICAgIHJl dHVybiAoaW5jbHVzaXZpdHlbMF0gPT09ICcoJyA/IHRoaXMuaXNBZnRlcihm cm9tLCB1bml0cykgOiAhdGhpcy5pc0JlZm9yZShmcm9tLCB1bml0cykpICYm CisgICAgICAgICAgICAoaW5jbHVzaXZpdHlbMV0gPT09ICcpJyA/IHRoaXMu aXNCZWZvcmUodG8sIHVuaXRzKSA6ICF0aGlzLmlzQWZ0ZXIodG8sIHVuaXRz KSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gaXNTYW1lIChpbnB1dCwgdW5p dHMpIHsKKyAgICAgICAgdmFyIGxvY2FsSW5wdXQgPSBpc01vbWVudChpbnB1 dCkgPyBpbnB1dCA6IGxvY2FsX19jcmVhdGVMb2NhbChpbnB1dCksCisgICAg ICAgICAgICBpbnB1dE1zOworICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQo KSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHsKKyAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICB1bml0cyA9IG5vcm1h bGl6ZVVuaXRzKHVuaXRzIHx8ICdtaWxsaXNlY29uZCcpOworICAgICAgICBp ZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHsKKyAgICAgICAgICAgIHJl dHVybiB0aGlzLnZhbHVlT2YoKSA9PT0gbG9jYWxJbnB1dC52YWx1ZU9mKCk7 CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnB1dE1zID0gbG9j YWxJbnB1dC52YWx1ZU9mKCk7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5j bG9uZSgpLnN0YXJ0T2YodW5pdHMpLnZhbHVlT2YoKSA8PSBpbnB1dE1zICYm IGlucHV0TXMgPD0gdGhpcy5jbG9uZSgpLmVuZE9mKHVuaXRzKS52YWx1ZU9m KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBpc1NhbWVP ckFmdGVyIChpbnB1dCwgdW5pdHMpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu aXNTYW1lKGlucHV0LCB1bml0cykgfHwgdGhpcy5pc0FmdGVyKGlucHV0LHVu aXRzKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBpc1NhbWVPckJlZm9yZSAo aW5wdXQsIHVuaXRzKSB7CisgICAgICAgIHJldHVybiB0aGlzLmlzU2FtZShp bnB1dCwgdW5pdHMpIHx8IHRoaXMuaXNCZWZvcmUoaW5wdXQsdW5pdHMpOwor ICAgIH0KKworICAgIGZ1bmN0aW9uIGRpZmYgKGlucHV0LCB1bml0cywgYXNG bG9hdCkgeworICAgICAgICB2YXIgdGhhdCwKKyAgICAgICAgICAgIHpvbmVE ZWx0YSwKKyAgICAgICAgICAgIGRlbHRhLCBvdXRwdXQ7CisKKyAgICAgICAg aWYgKCF0aGlzLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgcmV0dXJuIE5h TjsKKyAgICAgICAgfQorCisgICAgICAgIHRoYXQgPSBjbG9uZVdpdGhPZmZz ZXQoaW5wdXQsIHRoaXMpOworCisgICAgICAgIGlmICghdGhhdC5pc1ZhbGlk KCkpIHsKKyAgICAgICAgICAgIHJldHVybiBOYU47CisgICAgICAgIH0KKwor ICAgICAgICB6b25lRGVsdGEgPSAodGhhdC51dGNPZmZzZXQoKSAtIHRoaXMu dXRjT2Zmc2V0KCkpICogNmU0OworCisgICAgICAgIHVuaXRzID0gbm9ybWFs aXplVW5pdHModW5pdHMpOworCisgICAgICAgIGlmICh1bml0cyA9PT0gJ3ll YXInIHx8IHVuaXRzID09PSAnbW9udGgnIHx8IHVuaXRzID09PSAncXVhcnRl cicpIHsKKyAgICAgICAgICAgIG91dHB1dCA9IG1vbnRoRGlmZih0aGlzLCB0 aGF0KTsKKyAgICAgICAgICAgIGlmICh1bml0cyA9PT0gJ3F1YXJ0ZXInKSB7 CisgICAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0IC8gMzsKKyAgICAg ICAgICAgIH0gZWxzZSBpZiAodW5pdHMgPT09ICd5ZWFyJykgeworICAgICAg ICAgICAgICAgIG91dHB1dCA9IG91dHB1dCAvIDEyOworICAgICAgICAgICAg fQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVsdGEgPSB0aGlz IC0gdGhhdDsKKyAgICAgICAgICAgIG91dHB1dCA9IHVuaXRzID09PSAnc2Vj b25kJyA/IGRlbHRhIC8gMWUzIDogLy8gMTAwMAorICAgICAgICAgICAgICAg IHVuaXRzID09PSAnbWludXRlJyA/IGRlbHRhIC8gNmU0IDogLy8gMTAwMCAq IDYwCisgICAgICAgICAgICAgICAgdW5pdHMgPT09ICdob3VyJyA/IGRlbHRh IC8gMzZlNSA6IC8vIDEwMDAgKiA2MCAqIDYwCisgICAgICAgICAgICAgICAg dW5pdHMgPT09ICdkYXknID8gKGRlbHRhIC0gem9uZURlbHRhKSAvIDg2NGU1 IDogLy8gMTAwMCAqIDYwICogNjAgKiAyNCwgbmVnYXRlIGRzdAorICAgICAg ICAgICAgICAgIHVuaXRzID09PSAnd2VlaycgPyAoZGVsdGEgLSB6b25lRGVs dGEpIC8gNjA0OGU1IDogLy8gMTAwMCAqIDYwICogNjAgKiAyNCAqIDcsIG5l Z2F0ZSBkc3QKKyAgICAgICAgICAgICAgICBkZWx0YTsKKyAgICAgICAgfQor ICAgICAgICByZXR1cm4gYXNGbG9hdCA/IG91dHB1dCA6IGFic0Zsb29yKG91 dHB1dCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gbW9udGhEaWZmIChhLCBi KSB7CisgICAgICAgIC8vIGRpZmZlcmVuY2UgaW4gbW9udGhzCisgICAgICAg IHZhciB3aG9sZU1vbnRoRGlmZiA9ICgoYi55ZWFyKCkgLSBhLnllYXIoKSkg KiAxMikgKyAoYi5tb250aCgpIC0gYS5tb250aCgpKSwKKyAgICAgICAgICAg IC8vIGIgaXMgaW4gKGFuY2hvciAtIDEgbW9udGgsIGFuY2hvciArIDEgbW9u dGgpCisgICAgICAgICAgICBhbmNob3IgPSBhLmNsb25lKCkuYWRkKHdob2xl TW9udGhEaWZmLCAnbW9udGhzJyksCisgICAgICAgICAgICBhbmNob3IyLCBh ZGp1c3Q7CisKKyAgICAgICAgaWYgKGIgLSBhbmNob3IgPCAwKSB7CisgICAg ICAgICAgICBhbmNob3IyID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlm ZiAtIDEsICdtb250aHMnKTsKKyAgICAgICAgICAgIC8vIGxpbmVhciBhY3Jv c3MgdGhlIG1vbnRoCisgICAgICAgICAgICBhZGp1c3QgPSAoYiAtIGFuY2hv cikgLyAoYW5jaG9yIC0gYW5jaG9yMik7CisgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICBhbmNob3IyID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRo RGlmZiArIDEsICdtb250aHMnKTsKKyAgICAgICAgICAgIC8vIGxpbmVhciBh Y3Jvc3MgdGhlIG1vbnRoCisgICAgICAgICAgICBhZGp1c3QgPSAoYiAtIGFu Y2hvcikgLyAoYW5jaG9yMiAtIGFuY2hvcik7CisgICAgICAgIH0KKworICAg ICAgICAvL2NoZWNrIGZvciBuZWdhdGl2ZSB6ZXJvLCByZXR1cm4gemVybyBp ZiBuZWdhdGl2ZSB6ZXJvCisgICAgICAgIHJldHVybiAtKHdob2xlTW9udGhE aWZmICsgYWRqdXN0KSB8fCAwOworICAgIH0KKworICAgIHV0aWxzX2hvb2tz X19ob29rcy5kZWZhdWx0Rm9ybWF0ID0gJ1lZWVktTU0tRERUSEg6bW06c3Na JzsKKyAgICB1dGlsc19ob29rc19faG9va3MuZGVmYXVsdEZvcm1hdFV0YyA9 ICdZWVlZLU1NLUREVEhIOm1tOnNzW1pdJzsKKworICAgIGZ1bmN0aW9uIHRv U3RyaW5nICgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5sb2Nh bGUoJ2VuJykuZm9ybWF0KCdkZGQgTU1NIEREIFlZWVkgSEg6bW06c3MgW0dN VF1aWicpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG1vbWVudF9mb3JtYXRf X3RvSVNPU3RyaW5nICgpIHsKKyAgICAgICAgdmFyIG0gPSB0aGlzLmNsb25l KCkudXRjKCk7CisgICAgICAgIGlmICgwIDwgbS55ZWFyKCkgJiYgbS55ZWFy KCkgPD0gOTk5OSkgeworICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oRGF0 ZS5wcm90b3R5cGUudG9JU09TdHJpbmcpKSB7CisgICAgICAgICAgICAgICAg Ly8gbmF0aXZlIGltcGxlbWVudGF0aW9uIGlzIH41MHggZmFzdGVyLCB1c2Ug aXQgd2hlbiB3ZSBjYW4KKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50 b0RhdGUoKS50b0lTT1N0cmluZygpOworICAgICAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0TW9tZW50KG0sICdZWVlZ LU1NLUREW1RdSEg6bW06c3MuU1NTW1pdJyk7CisgICAgICAgICAgICB9Cisg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0TW9t ZW50KG0sICdZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0nKTsKKyAg ICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIG1vbWVudF9mb3JtYXRf X2Zvcm1hdCAoaW5wdXRTdHJpbmcpIHsKKyAgICAgICAgaWYgKCFpbnB1dFN0 cmluZykgeworICAgICAgICAgICAgaW5wdXRTdHJpbmcgPSB0aGlzLmlzVXRj KCkgPyB1dGlsc19ob29rc19faG9va3MuZGVmYXVsdEZvcm1hdFV0YyA6IHV0 aWxzX2hvb2tzX19ob29rcy5kZWZhdWx0Rm9ybWF0OworICAgICAgICB9Cisg ICAgICAgIHZhciBvdXRwdXQgPSBmb3JtYXRNb21lbnQodGhpcywgaW5wdXRT dHJpbmcpOworICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkucG9z dGZvcm1hdChvdXRwdXQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZyb20g KHRpbWUsIHdpdGhvdXRTdWZmaXgpIHsKKyAgICAgICAgaWYgKHRoaXMuaXNW YWxpZCgpICYmCisgICAgICAgICAgICAgICAgKChpc01vbWVudCh0aW1lKSAm JiB0aW1lLmlzVmFsaWQoKSkgfHwKKyAgICAgICAgICAgICAgICAgbG9jYWxf X2NyZWF0ZUxvY2FsKHRpbWUpLmlzVmFsaWQoKSkpIHsKKyAgICAgICAgICAg IHJldHVybiBjcmVhdGVfX2NyZWF0ZUR1cmF0aW9uKHt0bzogdGhpcywgZnJv bTogdGltZX0pLmxvY2FsZSh0aGlzLmxvY2FsZSgpKS5odW1hbml6ZSghd2l0 aG91dFN1ZmZpeCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBy ZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTsKKyAgICAg ICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIGZyb21Ob3cgKHdpdGhvdXRT dWZmaXgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZnJvbShsb2NhbF9fY3Jl YXRlTG9jYWwoKSwgd2l0aG91dFN1ZmZpeCk7CisgICAgfQorCisgICAgZnVu Y3Rpb24gdG8gKHRpbWUsIHdpdGhvdXRTdWZmaXgpIHsKKyAgICAgICAgaWYg KHRoaXMuaXNWYWxpZCgpICYmCisgICAgICAgICAgICAgICAgKChpc01vbWVu dCh0aW1lKSAmJiB0aW1lLmlzVmFsaWQoKSkgfHwKKyAgICAgICAgICAgICAg ICAgbG9jYWxfX2NyZWF0ZUxvY2FsKHRpbWUpLmlzVmFsaWQoKSkpIHsKKyAg ICAgICAgICAgIHJldHVybiBjcmVhdGVfX2NyZWF0ZUR1cmF0aW9uKHtmcm9t OiB0aGlzLCB0bzogdGltZX0pLmxvY2FsZSh0aGlzLmxvY2FsZSgpKS5odW1h bml6ZSghd2l0aG91dFN1ZmZpeCk7CisgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUo KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHRvTm93ICh3 aXRob3V0U3VmZml4KSB7CisgICAgICAgIHJldHVybiB0aGlzLnRvKGxvY2Fs X19jcmVhdGVMb2NhbCgpLCB3aXRob3V0U3VmZml4KTsKKyAgICB9CisKKyAg ICAvLyBJZiBwYXNzZWQgYSBsb2NhbGUga2V5LCBpdCB3aWxsIHNldCB0aGUg bG9jYWxlIGZvciB0aGlzCisgICAgLy8gaW5zdGFuY2UuICBPdGhlcndpc2Us IGl0IHdpbGwgcmV0dXJuIHRoZSBsb2NhbGUgY29uZmlndXJhdGlvbgorICAg IC8vIHZhcmlhYmxlcyBmb3IgdGhpcyBpbnN0YW5jZS4KKyAgICBmdW5jdGlv biBsb2NhbGUgKGtleSkgeworICAgICAgICB2YXIgbmV3TG9jYWxlRGF0YTsK KworICAgICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAg ICAgIHJldHVybiB0aGlzLl9sb2NhbGUuX2FiYnI7CisgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICBuZXdMb2NhbGVEYXRhID0gbG9jYWxlX2xvY2Fs ZXNfX2dldExvY2FsZShrZXkpOworICAgICAgICAgICAgaWYgKG5ld0xvY2Fs ZURhdGEgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRoaXMuX2xvY2Fs ZSA9IG5ld0xvY2FsZURhdGE7CisgICAgICAgICAgICB9CisgICAgICAgICAg ICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZhciBs YW5nID0gZGVwcmVjYXRlKAorICAgICAgICAnbW9tZW50KCkubGFuZygpIGlz IGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZSBtb21lbnQoKS5sb2NhbGVEYXRh KCkgdG8gZ2V0IHRoZSBsYW5ndWFnZSBjb25maWd1cmF0aW9uLiBVc2UgbW9t ZW50KCkubG9jYWxlKCkgdG8gY2hhbmdlIGxhbmd1YWdlcy4nLAorICAgICAg ICBmdW5jdGlvbiAoa2V5KSB7CisgICAgICAgICAgICBpZiAoa2V5ID09PSB1 bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2Nh bGVEYXRhKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg ICAgIHJldHVybiB0aGlzLmxvY2FsZShrZXkpOworICAgICAgICAgICAgfQor ICAgICAgICB9CisgICAgKTsKKworICAgIGZ1bmN0aW9uIGxvY2FsZURhdGEg KCkgeworICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlOworICAgIH0KKwor ICAgIGZ1bmN0aW9uIHN0YXJ0T2YgKHVuaXRzKSB7CisgICAgICAgIHVuaXRz ID0gbm9ybWFsaXplVW5pdHModW5pdHMpOworICAgICAgICAvLyB0aGUgZm9s bG93aW5nIHN3aXRjaCBpbnRlbnRpb25hbGx5IG9taXRzIGJyZWFrIGtleXdv cmRzCisgICAgICAgIC8vIHRvIHV0aWxpemUgZmFsbGluZyB0aHJvdWdoIHRo ZSBjYXNlcy4KKyAgICAgICAgc3dpdGNoICh1bml0cykgeworICAgICAgICAg ICAgY2FzZSAneWVhcic6CisgICAgICAgICAgICAgICAgdGhpcy5tb250aCgw KTsKKyAgICAgICAgICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCisgICAg ICAgICAgICBjYXNlICdxdWFydGVyJzoKKyAgICAgICAgICAgIGNhc2UgJ21v bnRoJzoKKyAgICAgICAgICAgICAgICB0aGlzLmRhdGUoMSk7CisgICAgICAg ICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqLworICAgICAgICAgICAgY2Fz ZSAnd2Vlayc6CisgICAgICAgICAgICBjYXNlICdpc29XZWVrJzoKKyAgICAg ICAgICAgIGNhc2UgJ2RheSc6CisgICAgICAgICAgICBjYXNlICdkYXRlJzoK KyAgICAgICAgICAgICAgICB0aGlzLmhvdXJzKDApOworICAgICAgICAgICAg ICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KKyAgICAgICAgICAgIGNhc2UgJ2hv dXInOgorICAgICAgICAgICAgICAgIHRoaXMubWludXRlcygwKTsKKyAgICAg ICAgICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCisgICAgICAgICAgICBj YXNlICdtaW51dGUnOgorICAgICAgICAgICAgICAgIHRoaXMuc2Vjb25kcygw KTsKKyAgICAgICAgICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCisgICAg ICAgICAgICBjYXNlICdzZWNvbmQnOgorICAgICAgICAgICAgICAgIHRoaXMu bWlsbGlzZWNvbmRzKDApOworICAgICAgICB9CisKKyAgICAgICAgLy8gd2Vl a3MgYXJlIGEgc3BlY2lhbCBjYXNlCisgICAgICAgIGlmICh1bml0cyA9PT0g J3dlZWsnKSB7CisgICAgICAgICAgICB0aGlzLndlZWtkYXkoMCk7CisgICAg ICAgIH0KKyAgICAgICAgaWYgKHVuaXRzID09PSAnaXNvV2VlaycpIHsKKyAg ICAgICAgICAgIHRoaXMuaXNvV2Vla2RheSgxKTsKKyAgICAgICAgfQorCisg ICAgICAgIC8vIHF1YXJ0ZXJzIGFyZSBhbHNvIHNwZWNpYWwKKyAgICAgICAg aWYgKHVuaXRzID09PSAncXVhcnRlcicpIHsKKyAgICAgICAgICAgIHRoaXMu bW9udGgoTWF0aC5mbG9vcih0aGlzLm1vbnRoKCkgLyAzKSAqIDMpOworICAg ICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAg ZnVuY3Rpb24gZW5kT2YgKHVuaXRzKSB7CisgICAgICAgIHVuaXRzID0gbm9y bWFsaXplVW5pdHModW5pdHMpOworICAgICAgICBpZiAodW5pdHMgPT09IHVu ZGVmaW5lZCB8fCB1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykgeworICAgICAg ICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgICAgICAvLyAn ZGF0ZScgaXMgYW4gYWxpYXMgZm9yICdkYXknLCBzbyBpdCBzaG91bGQgYmUg Y29uc2lkZXJlZCBhcyBzdWNoLgorICAgICAgICBpZiAodW5pdHMgPT09ICdk YXRlJykgeworICAgICAgICAgICAgdW5pdHMgPSAnZGF5JzsKKyAgICAgICAg fQorCisgICAgICAgIHJldHVybiB0aGlzLnN0YXJ0T2YodW5pdHMpLmFkZCgx LCAodW5pdHMgPT09ICdpc29XZWVrJyA/ICd3ZWVrJyA6IHVuaXRzKSkuc3Vi dHJhY3QoMSwgJ21zJyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdG9fdHlw ZV9fdmFsdWVPZiAoKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9kLnZhbHVl T2YoKSAtICgodGhpcy5fb2Zmc2V0IHx8IDApICogNjAwMDApOworICAgIH0K KworICAgIGZ1bmN0aW9uIHVuaXggKCkgeworICAgICAgICByZXR1cm4gTWF0 aC5mbG9vcih0aGlzLnZhbHVlT2YoKSAvIDEwMDApOworICAgIH0KKworICAg IGZ1bmN0aW9uIHRvRGF0ZSAoKSB7CisgICAgICAgIHJldHVybiBuZXcgRGF0 ZSh0aGlzLnZhbHVlT2YoKSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdG9B cnJheSAoKSB7CisgICAgICAgIHZhciBtID0gdGhpczsKKyAgICAgICAgcmV0 dXJuIFttLnllYXIoKSwgbS5tb250aCgpLCBtLmRhdGUoKSwgbS5ob3VyKCks IG0ubWludXRlKCksIG0uc2Vjb25kKCksIG0ubWlsbGlzZWNvbmQoKV07Cisg ICAgfQorCisgICAgZnVuY3Rpb24gdG9PYmplY3QgKCkgeworICAgICAgICB2 YXIgbSA9IHRoaXM7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICB5 ZWFyczogbS55ZWFyKCksCisgICAgICAgICAgICBtb250aHM6IG0ubW9udGgo KSwKKyAgICAgICAgICAgIGRhdGU6IG0uZGF0ZSgpLAorICAgICAgICAgICAg aG91cnM6IG0uaG91cnMoKSwKKyAgICAgICAgICAgIG1pbnV0ZXM6IG0ubWlu dXRlcygpLAorICAgICAgICAgICAgc2Vjb25kczogbS5zZWNvbmRzKCksCisg ICAgICAgICAgICBtaWxsaXNlY29uZHM6IG0ubWlsbGlzZWNvbmRzKCkKKyAg ICAgICAgfTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0b0pTT04gKCkgewor ICAgICAgICAvLyBuZXcgRGF0ZShOYU4pLnRvSlNPTigpID09PSBudWxsCisg ICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMudG9JU09TdHJp bmcoKSA6IG51bGw7CisgICAgfQorCisgICAgZnVuY3Rpb24gbW9tZW50X3Zh bGlkX19pc1ZhbGlkICgpIHsKKyAgICAgICAgcmV0dXJuIHZhbGlkX19pc1Zh bGlkKHRoaXMpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNpbmdGbGFn cyAoKSB7CisgICAgICAgIHJldHVybiBleHRlbmQoe30sIGdldFBhcnNpbmdG bGFncyh0aGlzKSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gaW52YWxpZEF0 ICgpIHsKKyAgICAgICAgcmV0dXJuIGdldFBhcnNpbmdGbGFncyh0aGlzKS5v dmVyZmxvdzsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjcmVhdGlvbkRhdGEo KSB7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBpbnB1dDogdGhp cy5faSwKKyAgICAgICAgICAgIGZvcm1hdDogdGhpcy5fZiwKKyAgICAgICAg ICAgIGxvY2FsZTogdGhpcy5fbG9jYWxlLAorICAgICAgICAgICAgaXNVVEM6 IHRoaXMuX2lzVVRDLAorICAgICAgICAgICAgc3RyaWN0OiB0aGlzLl9zdHJp Y3QKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICAvLyBGT1JNQVRUSU5HCisK KyAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ2dnJywgMl0sIDAsIGZ1bmN0aW9u ICgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMud2Vla1llYXIoKSAlIDEwMDsK KyAgICB9KTsKKworICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnR0cnLCAyXSwg MCwgZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gdGhpcy5pc29XZWVr WWVhcigpICUgMTAwOworICAgIH0pOworCisgICAgZnVuY3Rpb24gYWRkV2Vl a1llYXJGb3JtYXRUb2tlbiAodG9rZW4sIGdldHRlcikgeworICAgICAgICBh ZGRGb3JtYXRUb2tlbigwLCBbdG9rZW4sIHRva2VuLmxlbmd0aF0sIDAsIGdl dHRlcik7CisgICAgfQorCisgICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbign Z2dnZycsICAgICAnd2Vla1llYXInKTsKKyAgICBhZGRXZWVrWWVhckZvcm1h dFRva2VuKCdnZ2dnZycsICAgICd3ZWVrWWVhcicpOworICAgIGFkZFdlZWtZ ZWFyRm9ybWF0VG9rZW4oJ0dHR0cnLCAgJ2lzb1dlZWtZZWFyJyk7CisgICAg YWRkV2Vla1llYXJGb3JtYXRUb2tlbignR0dHR0cnLCAnaXNvV2Vla1llYXIn KTsKKworICAgIC8vIEFMSUFTRVMKKworICAgIGFkZFVuaXRBbGlhcygnd2Vl a1llYXInLCAnZ2cnKTsKKyAgICBhZGRVbml0QWxpYXMoJ2lzb1dlZWtZZWFy JywgJ0dHJyk7CisKKyAgICAvLyBQUklPUklUWQorCisgICAgYWRkVW5pdFBy aW9yaXR5KCd3ZWVrWWVhcicsIDEpOworICAgIGFkZFVuaXRQcmlvcml0eSgn aXNvV2Vla1llYXInLCAxKTsKKworCisgICAgLy8gUEFSU0lORworCisgICAg YWRkUmVnZXhUb2tlbignRycsICAgICAgbWF0Y2hTaWduZWQpOworICAgIGFk ZFJlZ2V4VG9rZW4oJ2cnLCAgICAgIG1hdGNoU2lnbmVkKTsKKyAgICBhZGRS ZWdleFRva2VuKCdHRycsICAgICBtYXRjaDF0bzIsIG1hdGNoMik7CisgICAg YWRkUmVnZXhUb2tlbignZ2cnLCAgICAgbWF0Y2gxdG8yLCBtYXRjaDIpOwor ICAgIGFkZFJlZ2V4VG9rZW4oJ0dHR0cnLCAgIG1hdGNoMXRvNCwgbWF0Y2g0 KTsKKyAgICBhZGRSZWdleFRva2VuKCdnZ2dnJywgICBtYXRjaDF0bzQsIG1h dGNoNCk7CisgICAgYWRkUmVnZXhUb2tlbignR0dHR0cnLCAgbWF0Y2gxdG82 LCBtYXRjaDYpOworICAgIGFkZFJlZ2V4VG9rZW4oJ2dnZ2dnJywgIG1hdGNo MXRvNiwgbWF0Y2g2KTsKKworICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZ2dn ZycsICdnZ2dnZycsICdHR0dHJywgJ0dHR0dHJ10sIGZ1bmN0aW9uIChpbnB1 dCwgd2VlaywgY29uZmlnLCB0b2tlbikgeworICAgICAgICB3ZWVrW3Rva2Vu LnN1YnN0cigwLCAyKV0gPSB0b0ludChpbnB1dCk7CisgICAgfSk7CisKKyAg ICBhZGRXZWVrUGFyc2VUb2tlbihbJ2dnJywgJ0dHJ10sIGZ1bmN0aW9uIChp bnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikgeworICAgICAgICB3ZWVrW3Rv a2VuXSA9IHV0aWxzX2hvb2tzX19ob29rcy5wYXJzZVR3b0RpZ2l0WWVhcihp bnB1dCk7CisgICAgfSk7CisKKyAgICAvLyBNT01FTlRTCisKKyAgICBmdW5j dGlvbiBnZXRTZXRXZWVrWWVhciAoaW5wdXQpIHsKKyAgICAgICAgcmV0dXJu IGdldFNldFdlZWtZZWFySGVscGVyLmNhbGwodGhpcywKKyAgICAgICAgICAg ICAgICBpbnB1dCwKKyAgICAgICAgICAgICAgICB0aGlzLndlZWsoKSwKKyAg ICAgICAgICAgICAgICB0aGlzLndlZWtkYXkoKSwKKyAgICAgICAgICAgICAg ICB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3csCisgICAgICAgICAgICAg ICAgdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG95KTsKKyAgICB9CisKKyAg ICBmdW5jdGlvbiBnZXRTZXRJU09XZWVrWWVhciAoaW5wdXQpIHsKKyAgICAg ICAgcmV0dXJuIGdldFNldFdlZWtZZWFySGVscGVyLmNhbGwodGhpcywKKyAg ICAgICAgICAgICAgICBpbnB1dCwgdGhpcy5pc29XZWVrKCksIHRoaXMuaXNv V2Vla2RheSgpLCAxLCA0KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRJ U09XZWVrc0luWWVhciAoKSB7CisgICAgICAgIHJldHVybiB3ZWVrc0luWWVh cih0aGlzLnllYXIoKSwgMSwgNCk7CisgICAgfQorCisgICAgZnVuY3Rpb24g Z2V0V2Vla3NJblllYXIgKCkgeworICAgICAgICB2YXIgd2Vla0luZm8gPSB0 aGlzLmxvY2FsZURhdGEoKS5fd2VlazsKKyAgICAgICAgcmV0dXJuIHdlZWtz SW5ZZWFyKHRoaXMueWVhcigpLCB3ZWVrSW5mby5kb3csIHdlZWtJbmZvLmRv eSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZ2V0U2V0V2Vla1llYXJIZWxw ZXIoaW5wdXQsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSB7CisgICAgICAg IHZhciB3ZWVrc1RhcmdldDsKKyAgICAgICAgaWYgKGlucHV0ID09IG51bGwp IHsKKyAgICAgICAgICAgIHJldHVybiB3ZWVrT2ZZZWFyKHRoaXMsIGRvdywg ZG95KS55ZWFyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd2Vl a3NUYXJnZXQgPSB3ZWVrc0luWWVhcihpbnB1dCwgZG93LCBkb3kpOworICAg ICAgICAgICAgaWYgKHdlZWsgPiB3ZWVrc1RhcmdldCkgeworICAgICAgICAg ICAgICAgIHdlZWsgPSB3ZWVrc1RhcmdldDsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIHJldHVybiBzZXRXZWVrQWxsLmNhbGwodGhpcywgaW5wdXQs IHdlZWssIHdlZWtkYXksIGRvdywgZG95KTsKKyAgICAgICAgfQorICAgIH0K KworICAgIGZ1bmN0aW9uIHNldFdlZWtBbGwod2Vla1llYXIsIHdlZWssIHdl ZWtkYXksIGRvdywgZG95KSB7CisgICAgICAgIHZhciBkYXlPZlllYXJEYXRh ID0gZGF5T2ZZZWFyRnJvbVdlZWtzKHdlZWtZZWFyLCB3ZWVrLCB3ZWVrZGF5 LCBkb3csIGRveSksCisgICAgICAgICAgICBkYXRlID0gY3JlYXRlVVRDRGF0 ZShkYXlPZlllYXJEYXRhLnllYXIsIDAsIGRheU9mWWVhckRhdGEuZGF5T2ZZ ZWFyKTsKKworICAgICAgICB0aGlzLnllYXIoZGF0ZS5nZXRVVENGdWxsWWVh cigpKTsKKyAgICAgICAgdGhpcy5tb250aChkYXRlLmdldFVUQ01vbnRoKCkp OworICAgICAgICB0aGlzLmRhdGUoZGF0ZS5nZXRVVENEYXRlKCkpOworICAg ICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICAvLyBGT1JNQVRUSU5H CisKKyAgICBhZGRGb3JtYXRUb2tlbignUScsIDAsICdRbycsICdxdWFydGVy Jyk7CisKKyAgICAvLyBBTElBU0VTCisKKyAgICBhZGRVbml0QWxpYXMoJ3F1 YXJ0ZXInLCAnUScpOworCisgICAgLy8gUFJJT1JJVFkKKworICAgIGFkZFVu aXRQcmlvcml0eSgncXVhcnRlcicsIDcpOworCisgICAgLy8gUEFSU0lORwor CisgICAgYWRkUmVnZXhUb2tlbignUScsIG1hdGNoMSk7CisgICAgYWRkUGFy c2VUb2tlbignUScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHsKKyAgICAg ICAgYXJyYXlbTU9OVEhdID0gKHRvSW50KGlucHV0KSAtIDEpICogMzsKKyAg ICB9KTsKKworICAgIC8vIE1PTUVOVFMKKworICAgIGZ1bmN0aW9uIGdldFNl dFF1YXJ0ZXIgKGlucHV0KSB7CisgICAgICAgIHJldHVybiBpbnB1dCA9PSBu dWxsID8gTWF0aC5jZWlsKCh0aGlzLm1vbnRoKCkgKyAxKSAvIDMpIDogdGhp cy5tb250aCgoaW5wdXQgLSAxKSAqIDMgKyB0aGlzLm1vbnRoKCkgJSAzKTsK KyAgICB9CisKKyAgICAvLyBGT1JNQVRUSU5HCisKKyAgICBhZGRGb3JtYXRU b2tlbignRCcsIFsnREQnLCAyXSwgJ0RvJywgJ2RhdGUnKTsKKworICAgIC8v IEFMSUFTRVMKKworICAgIGFkZFVuaXRBbGlhcygnZGF0ZScsICdEJyk7CisK KyAgICAvLyBQUklPUk9JVFkKKyAgICBhZGRVbml0UHJpb3JpdHkoJ2RhdGUn LCA5KTsKKworICAgIC8vIFBBUlNJTkcKKworICAgIGFkZFJlZ2V4VG9rZW4o J0QnLCAgbWF0Y2gxdG8yKTsKKyAgICBhZGRSZWdleFRva2VuKCdERCcsIG1h dGNoMXRvMiwgbWF0Y2gyKTsKKyAgICBhZGRSZWdleFRva2VuKCdEbycsIGZ1 bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7CisgICAgICAgIHJldHVybiBp c1N0cmljdCA/IGxvY2FsZS5fb3JkaW5hbFBhcnNlIDogbG9jYWxlLl9vcmRp bmFsUGFyc2VMZW5pZW50OworICAgIH0pOworCisgICAgYWRkUGFyc2VUb2tl bihbJ0QnLCAnREQnXSwgREFURSk7CisgICAgYWRkUGFyc2VUb2tlbignRG8n LCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7CisgICAgICAgIGFycmF5W0RB VEVdID0gdG9JbnQoaW5wdXQubWF0Y2gobWF0Y2gxdG8yKVswXSwgMTApOwor ICAgIH0pOworCisgICAgLy8gTU9NRU5UUworCisgICAgdmFyIGdldFNldERh eU9mTW9udGggPSBtYWtlR2V0U2V0KCdEYXRlJywgdHJ1ZSk7CisKKyAgICAv LyBGT1JNQVRUSU5HCisKKyAgICBhZGRGb3JtYXRUb2tlbignREREJywgWydE REREJywgM10sICdERERvJywgJ2RheU9mWWVhcicpOworCisgICAgLy8gQUxJ QVNFUworCisgICAgYWRkVW5pdEFsaWFzKCdkYXlPZlllYXInLCAnREREJyk7 CisKKyAgICAvLyBQUklPUklUWQorICAgIGFkZFVuaXRQcmlvcml0eSgnZGF5 T2ZZZWFyJywgNCk7CisKKyAgICAvLyBQQVJTSU5HCisKKyAgICBhZGRSZWdl eFRva2VuKCdEREQnLCAgbWF0Y2gxdG8zKTsKKyAgICBhZGRSZWdleFRva2Vu KCdEREREJywgbWF0Y2gzKTsKKyAgICBhZGRQYXJzZVRva2VuKFsnREREJywg J0REREQnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7Cisg ICAgICAgIGNvbmZpZy5fZGF5T2ZZZWFyID0gdG9JbnQoaW5wdXQpOworICAg IH0pOworCisgICAgLy8gSEVMUEVSUworCisgICAgLy8gTU9NRU5UUworCisg ICAgZnVuY3Rpb24gZ2V0U2V0RGF5T2ZZZWFyIChpbnB1dCkgeworICAgICAg ICB2YXIgZGF5T2ZZZWFyID0gTWF0aC5yb3VuZCgodGhpcy5jbG9uZSgpLnN0 YXJ0T2YoJ2RheScpIC0gdGhpcy5jbG9uZSgpLnN0YXJ0T2YoJ3llYXInKSkg LyA4NjRlNSkgKyAxOworICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/ IGRheU9mWWVhciA6IHRoaXMuYWRkKChpbnB1dCAtIGRheU9mWWVhciksICdk Jyk7CisgICAgfQorCisgICAgLy8gRk9STUFUVElORworCisgICAgYWRkRm9y bWF0VG9rZW4oJ20nLCBbJ21tJywgMl0sIDAsICdtaW51dGUnKTsKKworICAg IC8vIEFMSUFTRVMKKworICAgIGFkZFVuaXRBbGlhcygnbWludXRlJywgJ20n KTsKKworICAgIC8vIFBSSU9SSVRZCisKKyAgICBhZGRVbml0UHJpb3JpdHko J21pbnV0ZScsIDE0KTsKKworICAgIC8vIFBBUlNJTkcKKworICAgIGFkZFJl Z2V4VG9rZW4oJ20nLCAgbWF0Y2gxdG8yKTsKKyAgICBhZGRSZWdleFRva2Vu KCdtbScsIG1hdGNoMXRvMiwgbWF0Y2gyKTsKKyAgICBhZGRQYXJzZVRva2Vu KFsnbScsICdtbSddLCBNSU5VVEUpOworCisgICAgLy8gTU9NRU5UUworCisg ICAgdmFyIGdldFNldE1pbnV0ZSA9IG1ha2VHZXRTZXQoJ01pbnV0ZXMnLCBm YWxzZSk7CisKKyAgICAvLyBGT1JNQVRUSU5HCisKKyAgICBhZGRGb3JtYXRU b2tlbigncycsIFsnc3MnLCAyXSwgMCwgJ3NlY29uZCcpOworCisgICAgLy8g QUxJQVNFUworCisgICAgYWRkVW5pdEFsaWFzKCdzZWNvbmQnLCAncycpOwor CisgICAgLy8gUFJJT1JJVFkKKworICAgIGFkZFVuaXRQcmlvcml0eSgnc2Vj b25kJywgMTUpOworCisgICAgLy8gUEFSU0lORworCisgICAgYWRkUmVnZXhU b2tlbigncycsICBtYXRjaDF0bzIpOworICAgIGFkZFJlZ2V4VG9rZW4oJ3Nz JywgbWF0Y2gxdG8yLCBtYXRjaDIpOworICAgIGFkZFBhcnNlVG9rZW4oWydz JywgJ3NzJ10sIFNFQ09ORCk7CisKKyAgICAvLyBNT01FTlRTCisKKyAgICB2 YXIgZ2V0U2V0U2Vjb25kID0gbWFrZUdldFNldCgnU2Vjb25kcycsIGZhbHNl KTsKKworICAgIC8vIEZPUk1BVFRJTkcKKworICAgIGFkZEZvcm1hdFRva2Vu KCdTJywgMCwgMCwgZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gfn4o dGhpcy5taWxsaXNlY29uZCgpIC8gMTAwKTsKKyAgICB9KTsKKworICAgIGFk ZEZvcm1hdFRva2VuKDAsIFsnU1MnLCAyXSwgMCwgZnVuY3Rpb24gKCkgewor ICAgICAgICByZXR1cm4gfn4odGhpcy5taWxsaXNlY29uZCgpIC8gMTApOwor ICAgIH0pOworCisgICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1MnLCAzXSwg MCwgJ21pbGxpc2Vjb25kJyk7CisgICAgYWRkRm9ybWF0VG9rZW4oMCwgWydT U1NTJywgNF0sIDAsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIHRo aXMubWlsbGlzZWNvbmQoKSAqIDEwOworICAgIH0pOworICAgIGFkZEZvcm1h dFRva2VuKDAsIFsnU1NTU1MnLCA1XSwgMCwgZnVuY3Rpb24gKCkgeworICAg ICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwOworICAgIH0p OworICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTJywgNl0sIDAsIGZ1 bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQo KSAqIDEwMDA7CisgICAgfSk7CisgICAgYWRkRm9ybWF0VG9rZW4oMCwgWydT U1NTU1NTJywgN10sIDAsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJu IHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDAwOworICAgIH0pOworICAgIGFk ZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTU1MnLCA4XSwgMCwgZnVuY3Rpb24g KCkgeworICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAw MDAwOworICAgIH0pOworICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NT U1NTJywgOV0sIDAsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIHRo aXMubWlsbGlzZWNvbmQoKSAqIDEwMDAwMDA7CisgICAgfSk7CisKKworICAg IC8vIEFMSUFTRVMKKworICAgIGFkZFVuaXRBbGlhcygnbWlsbGlzZWNvbmQn LCAnbXMnKTsKKworICAgIC8vIFBSSU9SSVRZCisKKyAgICBhZGRVbml0UHJp b3JpdHkoJ21pbGxpc2Vjb25kJywgMTYpOworCisgICAgLy8gUEFSU0lORwor CisgICAgYWRkUmVnZXhUb2tlbignUycsICAgIG1hdGNoMXRvMywgbWF0Y2gx KTsKKyAgICBhZGRSZWdleFRva2VuKCdTUycsICAgbWF0Y2gxdG8zLCBtYXRj aDIpOworICAgIGFkZFJlZ2V4VG9rZW4oJ1NTUycsICBtYXRjaDF0bzMsIG1h dGNoMyk7CisKKyAgICB2YXIgdG9rZW47CisgICAgZm9yICh0b2tlbiA9ICdT U1NTJzsgdG9rZW4ubGVuZ3RoIDw9IDk7IHRva2VuICs9ICdTJykgeworICAg ICAgICBhZGRSZWdleFRva2VuKHRva2VuLCBtYXRjaFVuc2lnbmVkKTsKKyAg ICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZU1zKGlucHV0LCBhcnJheSkgewor ICAgICAgICBhcnJheVtNSUxMSVNFQ09ORF0gPSB0b0ludCgoJzAuJyArIGlu cHV0KSAqIDEwMDApOworICAgIH0KKworICAgIGZvciAodG9rZW4gPSAnUyc7 IHRva2VuLmxlbmd0aCA8PSA5OyB0b2tlbiArPSAnUycpIHsKKyAgICAgICAg YWRkUGFyc2VUb2tlbih0b2tlbiwgcGFyc2VNcyk7CisgICAgfQorICAgIC8v IE1PTUVOVFMKKworICAgIHZhciBnZXRTZXRNaWxsaXNlY29uZCA9IG1ha2VH ZXRTZXQoJ01pbGxpc2Vjb25kcycsIGZhbHNlKTsKKworICAgIC8vIEZPUk1B VFRJTkcKKworICAgIGFkZEZvcm1hdFRva2VuKCd6JywgIDAsIDAsICd6b25l QWJicicpOworICAgIGFkZEZvcm1hdFRva2VuKCd6eicsIDAsIDAsICd6b25l TmFtZScpOworCisgICAgLy8gTU9NRU5UUworCisgICAgZnVuY3Rpb24gZ2V0 Wm9uZUFiYnIgKCkgeworICAgICAgICByZXR1cm4gdGhpcy5faXNVVEMgPyAn VVRDJyA6ICcnOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldFpvbmVOYW1l ICgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2lzVVRDID8gJ0Nvb3JkaW5h dGVkIFVuaXZlcnNhbCBUaW1lJyA6ICcnOworICAgIH0KKworICAgIHZhciBt b21lbnRQcm90b3R5cGVfX3Byb3RvID0gTW9tZW50LnByb3RvdHlwZTsKKwor ICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uYWRkICAgICAgICAgICAgICAg PSBhZGRfc3VidHJhY3RfX2FkZDsKKyAgICBtb21lbnRQcm90b3R5cGVfX3By b3RvLmNhbGVuZGFyICAgICAgICAgID0gbW9tZW50X2NhbGVuZGFyX19jYWxl bmRhcjsKKyAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmNsb25lICAgICAg ICAgICAgID0gY2xvbmU7CisgICAgbW9tZW50UHJvdG90eXBlX19wcm90by5k aWZmICAgICAgICAgICAgICA9IGRpZmY7CisgICAgbW9tZW50UHJvdG90eXBl X19wcm90by5lbmRPZiAgICAgICAgICAgICA9IGVuZE9mOworICAgIG1vbWVu dFByb3RvdHlwZV9fcHJvdG8uZm9ybWF0ICAgICAgICAgICAgPSBtb21lbnRf Zm9ybWF0X19mb3JtYXQ7CisgICAgbW9tZW50UHJvdG90eXBlX19wcm90by5m cm9tICAgICAgICAgICAgICA9IGZyb207CisgICAgbW9tZW50UHJvdG90eXBl X19wcm90by5mcm9tTm93ICAgICAgICAgICA9IGZyb21Ob3c7CisgICAgbW9t ZW50UHJvdG90eXBlX19wcm90by50byAgICAgICAgICAgICAgICA9IHRvOwor ICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8udG9Ob3cgICAgICAgICAgICAg PSB0b05vdzsKKyAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmdldCAgICAg ICAgICAgICAgID0gc3RyaW5nR2V0OworICAgIG1vbWVudFByb3RvdHlwZV9f cHJvdG8uaW52YWxpZEF0ICAgICAgICAgPSBpbnZhbGlkQXQ7CisgICAgbW9t ZW50UHJvdG90eXBlX19wcm90by5pc0FmdGVyICAgICAgICAgICA9IGlzQWZ0 ZXI7CisgICAgbW9tZW50UHJvdG90eXBlX19wcm90by5pc0JlZm9yZSAgICAg ICAgICA9IGlzQmVmb3JlOworICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8u aXNCZXR3ZWVuICAgICAgICAgPSBpc0JldHdlZW47CisgICAgbW9tZW50UHJv dG90eXBlX19wcm90by5pc1NhbWUgICAgICAgICAgICA9IGlzU2FtZTsKKyAg ICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmlzU2FtZU9yQWZ0ZXIgICAgID0g aXNTYW1lT3JBZnRlcjsKKyAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmlz U2FtZU9yQmVmb3JlICAgID0gaXNTYW1lT3JCZWZvcmU7CisgICAgbW9tZW50 UHJvdG90eXBlX19wcm90by5pc1ZhbGlkICAgICAgICAgICA9IG1vbWVudF92 YWxpZF9faXNWYWxpZDsKKyAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmxh bmcgICAgICAgICAgICAgID0gbGFuZzsKKyAgICBtb21lbnRQcm90b3R5cGVf X3Byb3RvLmxvY2FsZSAgICAgICAgICAgID0gbG9jYWxlOworICAgIG1vbWVu dFByb3RvdHlwZV9fcHJvdG8ubG9jYWxlRGF0YSAgICAgICAgPSBsb2NhbGVE YXRhOworICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8ubWF4ICAgICAgICAg ICAgICAgPSBwcm90b3R5cGVNYXg7CisgICAgbW9tZW50UHJvdG90eXBlX19w cm90by5taW4gICAgICAgICAgICAgICA9IHByb3RvdHlwZU1pbjsKKyAgICBt b21lbnRQcm90b3R5cGVfX3Byb3RvLnBhcnNpbmdGbGFncyAgICAgID0gcGFy c2luZ0ZsYWdzOworICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uc2V0ICAg ICAgICAgICAgICAgPSBzdHJpbmdTZXQ7CisgICAgbW9tZW50UHJvdG90eXBl X19wcm90by5zdGFydE9mICAgICAgICAgICA9IHN0YXJ0T2Y7CisgICAgbW9t ZW50UHJvdG90eXBlX19wcm90by5zdWJ0cmFjdCAgICAgICAgICA9IGFkZF9z dWJ0cmFjdF9fc3VidHJhY3Q7CisgICAgbW9tZW50UHJvdG90eXBlX19wcm90 by50b0FycmF5ICAgICAgICAgICA9IHRvQXJyYXk7CisgICAgbW9tZW50UHJv dG90eXBlX19wcm90by50b09iamVjdCAgICAgICAgICA9IHRvT2JqZWN0Owor ICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8udG9EYXRlICAgICAgICAgICAg PSB0b0RhdGU7CisgICAgbW9tZW50UHJvdG90eXBlX19wcm90by50b0lTT1N0 cmluZyAgICAgICA9IG1vbWVudF9mb3JtYXRfX3RvSVNPU3RyaW5nOworICAg IG1vbWVudFByb3RvdHlwZV9fcHJvdG8udG9KU09OICAgICAgICAgICAgPSB0 b0pTT047CisgICAgbW9tZW50UHJvdG90eXBlX19wcm90by50b1N0cmluZyAg ICAgICAgICA9IHRvU3RyaW5nOworICAgIG1vbWVudFByb3RvdHlwZV9fcHJv dG8udW5peCAgICAgICAgICAgICAgPSB1bml4OworICAgIG1vbWVudFByb3Rv dHlwZV9fcHJvdG8udmFsdWVPZiAgICAgICAgICAgPSB0b190eXBlX192YWx1 ZU9mOworICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uY3JlYXRpb25EYXRh ICAgICAgPSBjcmVhdGlvbkRhdGE7CisKKyAgICAvLyBZZWFyCisgICAgbW9t ZW50UHJvdG90eXBlX19wcm90by55ZWFyICAgICAgID0gZ2V0U2V0WWVhcjsK KyAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmlzTGVhcFllYXIgPSBnZXRJ c0xlYXBZZWFyOworCisgICAgLy8gV2VlayBZZWFyCisgICAgbW9tZW50UHJv dG90eXBlX19wcm90by53ZWVrWWVhciAgICA9IGdldFNldFdlZWtZZWFyOwor ICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uaXNvV2Vla1llYXIgPSBnZXRT ZXRJU09XZWVrWWVhcjsKKworICAgIC8vIFF1YXJ0ZXIKKyAgICBtb21lbnRQ cm90b3R5cGVfX3Byb3RvLnF1YXJ0ZXIgPSBtb21lbnRQcm90b3R5cGVfX3By b3RvLnF1YXJ0ZXJzID0gZ2V0U2V0UXVhcnRlcjsKKworICAgIC8vIE1vbnRo CisgICAgbW9tZW50UHJvdG90eXBlX19wcm90by5tb250aCAgICAgICA9IGdl dFNldE1vbnRoOworICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uZGF5c0lu TW9udGggPSBnZXREYXlzSW5Nb250aDsKKworICAgIC8vIFdlZWsKKyAgICBt b21lbnRQcm90b3R5cGVfX3Byb3RvLndlZWsgICAgICAgICAgID0gbW9tZW50 UHJvdG90eXBlX19wcm90by53ZWVrcyAgICAgICAgPSBnZXRTZXRXZWVrOwor ICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uaXNvV2VlayAgICAgICAgPSBt b21lbnRQcm90b3R5cGVfX3Byb3RvLmlzb1dlZWtzICAgICA9IGdldFNldElT T1dlZWs7CisgICAgbW9tZW50UHJvdG90eXBlX19wcm90by53ZWVrc0luWWVh ciAgICA9IGdldFdlZWtzSW5ZZWFyOworICAgIG1vbWVudFByb3RvdHlwZV9f cHJvdG8uaXNvV2Vla3NJblllYXIgPSBnZXRJU09XZWVrc0luWWVhcjsKKwor ICAgIC8vIERheQorICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uZGF0ZSAg ICAgICA9IGdldFNldERheU9mTW9udGg7CisgICAgbW9tZW50UHJvdG90eXBl X19wcm90by5kYXkgICAgICAgID0gbW9tZW50UHJvdG90eXBlX19wcm90by5k YXlzICAgICAgICAgICAgID0gZ2V0U2V0RGF5T2ZXZWVrOworICAgIG1vbWVu dFByb3RvdHlwZV9fcHJvdG8ud2Vla2RheSAgICA9IGdldFNldExvY2FsZURh eU9mV2VlazsKKyAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmlzb1dlZWtk YXkgPSBnZXRTZXRJU09EYXlPZldlZWs7CisgICAgbW9tZW50UHJvdG90eXBl X19wcm90by5kYXlPZlllYXIgID0gZ2V0U2V0RGF5T2ZZZWFyOworCisgICAg Ly8gSG91cgorICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uaG91ciA9IG1v bWVudFByb3RvdHlwZV9fcHJvdG8uaG91cnMgPSBnZXRTZXRIb3VyOworCisg ICAgLy8gTWludXRlCisgICAgbW9tZW50UHJvdG90eXBlX19wcm90by5taW51 dGUgPSBtb21lbnRQcm90b3R5cGVfX3Byb3RvLm1pbnV0ZXMgPSBnZXRTZXRN aW51dGU7CisKKyAgICAvLyBTZWNvbmQKKyAgICBtb21lbnRQcm90b3R5cGVf X3Byb3RvLnNlY29uZCA9IG1vbWVudFByb3RvdHlwZV9fcHJvdG8uc2Vjb25k cyA9IGdldFNldFNlY29uZDsKKworICAgIC8vIE1pbGxpc2Vjb25kCisgICAg bW9tZW50UHJvdG90eXBlX19wcm90by5taWxsaXNlY29uZCA9IG1vbWVudFBy b3RvdHlwZV9fcHJvdG8ubWlsbGlzZWNvbmRzID0gZ2V0U2V0TWlsbGlzZWNv bmQ7CisKKyAgICAvLyBPZmZzZXQKKyAgICBtb21lbnRQcm90b3R5cGVfX3By b3RvLnV0Y09mZnNldCAgICAgICAgICAgID0gZ2V0U2V0T2Zmc2V0OworICAg IG1vbWVudFByb3RvdHlwZV9fcHJvdG8udXRjICAgICAgICAgICAgICAgICAg PSBzZXRPZmZzZXRUb1VUQzsKKyAgICBtb21lbnRQcm90b3R5cGVfX3Byb3Rv LmxvY2FsICAgICAgICAgICAgICAgID0gc2V0T2Zmc2V0VG9Mb2NhbDsKKyAg ICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLnBhcnNlWm9uZSAgICAgICAgICAg ID0gc2V0T2Zmc2V0VG9QYXJzZWRPZmZzZXQ7CisgICAgbW9tZW50UHJvdG90 eXBlX19wcm90by5oYXNBbGlnbmVkSG91ck9mZnNldCA9IGhhc0FsaWduZWRI b3VyT2Zmc2V0OworICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uaXNEU1Qg ICAgICAgICAgICAgICAgPSBpc0RheWxpZ2h0U2F2aW5nVGltZTsKKyAgICBt b21lbnRQcm90b3R5cGVfX3Byb3RvLmlzTG9jYWwgICAgICAgICAgICAgID0g aXNMb2NhbDsKKyAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmlzVXRjT2Zm c2V0ICAgICAgICAgID0gaXNVdGNPZmZzZXQ7CisgICAgbW9tZW50UHJvdG90 eXBlX19wcm90by5pc1V0YyAgICAgICAgICAgICAgICA9IGlzVXRjOworICAg IG1vbWVudFByb3RvdHlwZV9fcHJvdG8uaXNVVEMgICAgICAgICAgICAgICAg PSBpc1V0YzsKKworICAgIC8vIFRpbWV6b25lCisgICAgbW9tZW50UHJvdG90 eXBlX19wcm90by56b25lQWJiciA9IGdldFpvbmVBYmJyOworICAgIG1vbWVu dFByb3RvdHlwZV9fcHJvdG8uem9uZU5hbWUgPSBnZXRab25lTmFtZTsKKwor ICAgIC8vIERlcHJlY2F0aW9ucworICAgIG1vbWVudFByb3RvdHlwZV9fcHJv dG8uZGF0ZXMgID0gZGVwcmVjYXRlKCdkYXRlcyBhY2Nlc3NvciBpcyBkZXBy ZWNhdGVkLiBVc2UgZGF0ZSBpbnN0ZWFkLicsIGdldFNldERheU9mTW9udGgp OworICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8ubW9udGhzID0gZGVwcmVj YXRlKCdtb250aHMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbnRo IGluc3RlYWQnLCBnZXRTZXRNb250aCk7CisgICAgbW9tZW50UHJvdG90eXBl X19wcm90by55ZWFycyAgPSBkZXByZWNhdGUoJ3llYXJzIGFjY2Vzc29yIGlz IGRlcHJlY2F0ZWQuIFVzZSB5ZWFyIGluc3RlYWQnLCBnZXRTZXRZZWFyKTsK KyAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLnpvbmUgICA9IGRlcHJlY2F0 ZSgnbW9tZW50KCkuem9uZSBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50KCku dXRjT2Zmc2V0IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVz LyMvd2FybmluZ3Mvem9uZS8nLCBnZXRTZXRab25lKTsKKyAgICBtb21lbnRQ cm90b3R5cGVfX3Byb3RvLmlzRFNUU2hpZnRlZCA9IGRlcHJlY2F0ZSgnaXNE U1RTaGlmdGVkIGlzIGRlcHJlY2F0ZWQuIFNlZSBodHRwOi8vbW9tZW50anMu Y29tL2d1aWRlcy8jL3dhcm5pbmdzL2RzdC1zaGlmdGVkLyBmb3IgbW9yZSBp bmZvcm1hdGlvbicsIGlzRGF5bGlnaHRTYXZpbmdUaW1lU2hpZnRlZCk7CisK KyAgICB2YXIgbW9tZW50UHJvdG90eXBlID0gbW9tZW50UHJvdG90eXBlX19w cm90bzsKKworICAgIGZ1bmN0aW9uIG1vbWVudF9tb21lbnRfX2NyZWF0ZVVu aXggKGlucHV0KSB7CisgICAgICAgIHJldHVybiBsb2NhbF9fY3JlYXRlTG9j YWwoaW5wdXQgKiAxMDAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBtb21l bnRfbW9tZW50X19jcmVhdGVJblpvbmUgKCkgeworICAgICAgICByZXR1cm4g bG9jYWxfX2NyZWF0ZUxvY2FsLmFwcGx5KG51bGwsIGFyZ3VtZW50cykucGFy c2Vab25lKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcHJlUGFyc2VQb3N0 Rm9ybWF0IChzdHJpbmcpIHsKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKKyAg ICB9CisKKyAgICB2YXIgcHJvdG90eXBlX19wcm90byA9IExvY2FsZS5wcm90 b3R5cGU7CisKKyAgICBwcm90b3R5cGVfX3Byb3RvLmNhbGVuZGFyICAgICAg ICA9IGxvY2FsZV9jYWxlbmRhcl9fY2FsZW5kYXI7CisgICAgcHJvdG90eXBl X19wcm90by5sb25nRGF0ZUZvcm1hdCAgPSBsb25nRGF0ZUZvcm1hdDsKKyAg ICBwcm90b3R5cGVfX3Byb3RvLmludmFsaWREYXRlICAgICA9IGludmFsaWRE YXRlOworICAgIHByb3RvdHlwZV9fcHJvdG8ub3JkaW5hbCAgICAgICAgID0g b3JkaW5hbDsKKyAgICBwcm90b3R5cGVfX3Byb3RvLnByZXBhcnNlICAgICAg ICA9IHByZVBhcnNlUG9zdEZvcm1hdDsKKyAgICBwcm90b3R5cGVfX3Byb3Rv LnBvc3Rmb3JtYXQgICAgICA9IHByZVBhcnNlUG9zdEZvcm1hdDsKKyAgICBw cm90b3R5cGVfX3Byb3RvLnJlbGF0aXZlVGltZSAgICA9IHJlbGF0aXZlX19y ZWxhdGl2ZVRpbWU7CisgICAgcHJvdG90eXBlX19wcm90by5wYXN0RnV0dXJl ICAgICAgPSBwYXN0RnV0dXJlOworICAgIHByb3RvdHlwZV9fcHJvdG8uc2V0 ICAgICAgICAgICAgID0gbG9jYWxlX3NldF9fc2V0OworCisgICAgLy8gTW9u dGgKKyAgICBwcm90b3R5cGVfX3Byb3RvLm1vbnRocyAgICAgICAgICAgID0g ICAgICAgIGxvY2FsZU1vbnRoczsKKyAgICBwcm90b3R5cGVfX3Byb3RvLm1v bnRoc1Nob3J0ICAgICAgID0gICAgICAgIGxvY2FsZU1vbnRoc1Nob3J0Owor ICAgIHByb3RvdHlwZV9fcHJvdG8ubW9udGhzUGFyc2UgICAgICAgPSAgICAg ICAgbG9jYWxlTW9udGhzUGFyc2U7CisgICAgcHJvdG90eXBlX19wcm90by5t b250aHNSZWdleCAgICAgICA9IHVuaXRzX21vbnRoX19tb250aHNSZWdleDsK KyAgICBwcm90b3R5cGVfX3Byb3RvLm1vbnRoc1Nob3J0UmVnZXggID0gbW9u dGhzU2hvcnRSZWdleDsKKworICAgIC8vIFdlZWsKKyAgICBwcm90b3R5cGVf X3Byb3RvLndlZWsgPSBsb2NhbGVXZWVrOworICAgIHByb3RvdHlwZV9fcHJv dG8uZmlyc3REYXlPZlllYXIgPSBsb2NhbGVGaXJzdERheU9mWWVhcjsKKyAg ICBwcm90b3R5cGVfX3Byb3RvLmZpcnN0RGF5T2ZXZWVrID0gbG9jYWxlRmly c3REYXlPZldlZWs7CisKKyAgICAvLyBEYXkgb2YgV2VlaworICAgIHByb3Rv dHlwZV9fcHJvdG8ud2Vla2RheXMgICAgICAgPSAgICAgICAgbG9jYWxlV2Vl a2RheXM7CisgICAgcHJvdG90eXBlX19wcm90by53ZWVrZGF5c01pbiAgICA9 ICAgICAgICBsb2NhbGVXZWVrZGF5c01pbjsKKyAgICBwcm90b3R5cGVfX3By b3RvLndlZWtkYXlzU2hvcnQgID0gICAgICAgIGxvY2FsZVdlZWtkYXlzU2hv cnQ7CisgICAgcHJvdG90eXBlX19wcm90by53ZWVrZGF5c1BhcnNlICA9ICAg ICAgICBsb2NhbGVXZWVrZGF5c1BhcnNlOworCisgICAgcHJvdG90eXBlX19w cm90by53ZWVrZGF5c1JlZ2V4ICAgICAgID0gICAgICAgIHdlZWtkYXlzUmVn ZXg7CisgICAgcHJvdG90eXBlX19wcm90by53ZWVrZGF5c1Nob3J0UmVnZXgg ID0gICAgICAgIHdlZWtkYXlzU2hvcnRSZWdleDsKKyAgICBwcm90b3R5cGVf X3Byb3RvLndlZWtkYXlzTWluUmVnZXggICAgPSAgICAgICAgd2Vla2RheXNN aW5SZWdleDsKKworICAgIC8vIEhvdXJzCisgICAgcHJvdG90eXBlX19wcm90 by5pc1BNID0gbG9jYWxlSXNQTTsKKyAgICBwcm90b3R5cGVfX3Byb3RvLm1l cmlkaWVtID0gbG9jYWxlTWVyaWRpZW07CisKKyAgICBmdW5jdGlvbiBsaXN0 c19fZ2V0IChmb3JtYXQsIGluZGV4LCBmaWVsZCwgc2V0dGVyKSB7CisgICAg ICAgIHZhciBsb2NhbGUgPSBsb2NhbGVfbG9jYWxlc19fZ2V0TG9jYWxlKCk7 CisgICAgICAgIHZhciB1dGMgPSBjcmVhdGVfdXRjX19jcmVhdGVVVEMoKS5z ZXQoc2V0dGVyLCBpbmRleCk7CisgICAgICAgIHJldHVybiBsb2NhbGVbZmll bGRdKHV0YywgZm9ybWF0KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBsaXN0 TW9udGhzSW1wbCAoZm9ybWF0LCBpbmRleCwgZmllbGQpIHsKKyAgICAgICAg aWYgKHR5cGVvZiBmb3JtYXQgPT09ICdudW1iZXInKSB7CisgICAgICAgICAg ICBpbmRleCA9IGZvcm1hdDsKKyAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVm aW5lZDsKKyAgICAgICAgfQorCisgICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8 fCAnJzsKKworICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkgeworICAgICAg ICAgICAgcmV0dXJuIGxpc3RzX19nZXQoZm9ybWF0LCBpbmRleCwgZmllbGQs ICdtb250aCcpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGk7CisgICAg ICAgIHZhciBvdXQgPSBbXTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDEy OyBpKyspIHsKKyAgICAgICAgICAgIG91dFtpXSA9IGxpc3RzX19nZXQoZm9y bWF0LCBpLCBmaWVsZCwgJ21vbnRoJyk7CisgICAgICAgIH0KKyAgICAgICAg cmV0dXJuIG91dDsKKyAgICB9CisKKyAgICAvLyAoKQorICAgIC8vICg1KQor ICAgIC8vIChmbXQsIDUpCisgICAgLy8gKGZtdCkKKyAgICAvLyAodHJ1ZSkK KyAgICAvLyAodHJ1ZSwgNSkKKyAgICAvLyAodHJ1ZSwgZm10LCA1KQorICAg IC8vICh0cnVlLCBmbXQpCisgICAgZnVuY3Rpb24gbGlzdFdlZWtkYXlzSW1w bCAobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCBmaWVsZCkgeworICAg ICAgICBpZiAodHlwZW9mIGxvY2FsZVNvcnRlZCA9PT0gJ2Jvb2xlYW4nKSB7 CisgICAgICAgICAgICBpZiAodHlwZW9mIGZvcm1hdCA9PT0gJ251bWJlcicp IHsKKyAgICAgICAgICAgICAgICBpbmRleCA9IGZvcm1hdDsKKyAgICAgICAg ICAgICAgICBmb3JtYXQgPSB1bmRlZmluZWQ7CisgICAgICAgICAgICB9CisK KyAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJzsKKyAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgIGZvcm1hdCA9IGxvY2FsZVNvcnRlZDsK KyAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0OworICAgICAgICAgICAgbG9j YWxlU29ydGVkID0gZmFsc2U7CisKKyAgICAgICAgICAgIGlmICh0eXBlb2Yg Zm9ybWF0ID09PSAnbnVtYmVyJykgeworICAgICAgICAgICAgICAgIGluZGV4 ID0gZm9ybWF0OworICAgICAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5l ZDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9ybWF0ID0gZm9y bWF0IHx8ICcnOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGxvY2FsZSA9 IGxvY2FsZV9sb2NhbGVzX19nZXRMb2NhbGUoKSwKKyAgICAgICAgICAgIHNo aWZ0ID0gbG9jYWxlU29ydGVkID8gbG9jYWxlLl93ZWVrLmRvdyA6IDA7CisK KyAgICAgICAgaWYgKGluZGV4ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJl dHVybiBsaXN0c19fZ2V0KGZvcm1hdCwgKGluZGV4ICsgc2hpZnQpICUgNywg ZmllbGQsICdkYXknKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBpOwor ICAgICAgICB2YXIgb3V0ID0gW107CisgICAgICAgIGZvciAoaSA9IDA7IGkg PCA3OyBpKyspIHsKKyAgICAgICAgICAgIG91dFtpXSA9IGxpc3RzX19nZXQo Zm9ybWF0LCAoaSArIHNoaWZ0KSAlIDcsIGZpZWxkLCAnZGF5Jyk7CisgICAg ICAgIH0KKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9CisKKyAgICBmdW5j dGlvbiBsaXN0c19fbGlzdE1vbnRocyAoZm9ybWF0LCBpbmRleCkgeworICAg ICAgICByZXR1cm4gbGlzdE1vbnRoc0ltcGwoZm9ybWF0LCBpbmRleCwgJ21v bnRocycpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGxpc3RzX19saXN0TW9u dGhzU2hvcnQgKGZvcm1hdCwgaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIGxp c3RNb250aHNJbXBsKGZvcm1hdCwgaW5kZXgsICdtb250aHNTaG9ydCcpOwor ICAgIH0KKworICAgIGZ1bmN0aW9uIGxpc3RzX19saXN0V2Vla2RheXMgKGxv Y2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkgeworICAgICAgICByZXR1cm4g bGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgs ICd3ZWVrZGF5cycpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGxpc3RzX19s aXN0V2Vla2RheXNTaG9ydCAobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4 KSB7CisgICAgICAgIHJldHVybiBsaXN0V2Vla2RheXNJbXBsKGxvY2FsZVNv cnRlZCwgZm9ybWF0LCBpbmRleCwgJ3dlZWtkYXlzU2hvcnQnKTsKKyAgICB9 CisKKyAgICBmdW5jdGlvbiBsaXN0c19fbGlzdFdlZWtkYXlzTWluIChsb2Nh bGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIGxp c3RXZWVrZGF5c0ltcGwobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCAn d2Vla2RheXNNaW4nKTsKKyAgICB9CisKKyAgICBsb2NhbGVfbG9jYWxlc19f Z2V0U2V0R2xvYmFsTG9jYWxlKCdlbicsIHsKKyAgICAgICAgb3JkaW5hbFBh cnNlOiAvXGR7MSwyfSh0aHxzdHxuZHxyZCkvLAorICAgICAgICBvcmRpbmFs IDogZnVuY3Rpb24gKG51bWJlcikgeworICAgICAgICAgICAgdmFyIGIgPSBu dW1iZXIgJSAxMCwKKyAgICAgICAgICAgICAgICBvdXRwdXQgPSAodG9JbnQo bnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICd0aCcgOgorICAgICAgICAg ICAgICAgIChiID09PSAxKSA/ICdzdCcgOgorICAgICAgICAgICAgICAgIChi ID09PSAyKSA/ICduZCcgOgorICAgICAgICAgICAgICAgIChiID09PSAzKSA/ ICdyZCcgOiAndGgnOworICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91 dHB1dDsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgLy8gU2lkZSBlZmZl Y3QgaW1wb3J0cworICAgIHV0aWxzX2hvb2tzX19ob29rcy5sYW5nID0gZGVw cmVjYXRlKCdtb21lbnQubGFuZyBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50 LmxvY2FsZSBpbnN0ZWFkLicsIGxvY2FsZV9sb2NhbGVzX19nZXRTZXRHbG9i YWxMb2NhbGUpOworICAgIHV0aWxzX2hvb2tzX19ob29rcy5sYW5nRGF0YSA9 IGRlcHJlY2F0ZSgnbW9tZW50LmxhbmdEYXRhIGlzIGRlcHJlY2F0ZWQuIFVz ZSBtb21lbnQubG9jYWxlRGF0YSBpbnN0ZWFkLicsIGxvY2FsZV9sb2NhbGVz X19nZXRMb2NhbGUpOworCisgICAgdmFyIG1hdGhBYnMgPSBNYXRoLmFiczsK KworICAgIGZ1bmN0aW9uIGR1cmF0aW9uX2Fic19fYWJzICgpIHsKKyAgICAg ICAgdmFyIGRhdGEgICAgICAgICAgID0gdGhpcy5fZGF0YTsKKworICAgICAg ICB0aGlzLl9taWxsaXNlY29uZHMgPSBtYXRoQWJzKHRoaXMuX21pbGxpc2Vj b25kcyk7CisgICAgICAgIHRoaXMuX2RheXMgICAgICAgICA9IG1hdGhBYnMo dGhpcy5fZGF5cyk7CisgICAgICAgIHRoaXMuX21vbnRocyAgICAgICA9IG1h dGhBYnModGhpcy5fbW9udGhzKTsKKworICAgICAgICBkYXRhLm1pbGxpc2Vj b25kcyAgPSBtYXRoQWJzKGRhdGEubWlsbGlzZWNvbmRzKTsKKyAgICAgICAg ZGF0YS5zZWNvbmRzICAgICAgID0gbWF0aEFicyhkYXRhLnNlY29uZHMpOwor ICAgICAgICBkYXRhLm1pbnV0ZXMgICAgICAgPSBtYXRoQWJzKGRhdGEubWlu dXRlcyk7CisgICAgICAgIGRhdGEuaG91cnMgICAgICAgICA9IG1hdGhBYnMo ZGF0YS5ob3Vycyk7CisgICAgICAgIGRhdGEubW9udGhzICAgICAgICA9IG1h dGhBYnMoZGF0YS5tb250aHMpOworICAgICAgICBkYXRhLnllYXJzICAgICAg ICAgPSBtYXRoQWJzKGRhdGEueWVhcnMpOworCisgICAgICAgIHJldHVybiB0 aGlzOworICAgIH0KKworICAgIGZ1bmN0aW9uIGR1cmF0aW9uX2FkZF9zdWJ0 cmFjdF9fYWRkU3VidHJhY3QgKGR1cmF0aW9uLCBpbnB1dCwgdmFsdWUsIGRp cmVjdGlvbikgeworICAgICAgICB2YXIgb3RoZXIgPSBjcmVhdGVfX2NyZWF0 ZUR1cmF0aW9uKGlucHV0LCB2YWx1ZSk7CisKKyAgICAgICAgZHVyYXRpb24u X21pbGxpc2Vjb25kcyArPSBkaXJlY3Rpb24gKiBvdGhlci5fbWlsbGlzZWNv bmRzOworICAgICAgICBkdXJhdGlvbi5fZGF5cyAgICAgICAgICs9IGRpcmVj dGlvbiAqIG90aGVyLl9kYXlzOworICAgICAgICBkdXJhdGlvbi5fbW9udGhz ICAgICAgICs9IGRpcmVjdGlvbiAqIG90aGVyLl9tb250aHM7CisKKyAgICAg ICAgcmV0dXJuIGR1cmF0aW9uLl9idWJibGUoKTsKKyAgICB9CisKKyAgICAv LyBzdXBwb3J0cyBvbmx5IDIuMC1zdHlsZSBhZGQoMSwgJ3MnKSBvciBhZGQo ZHVyYXRpb24pCisgICAgZnVuY3Rpb24gZHVyYXRpb25fYWRkX3N1YnRyYWN0 X19hZGQgKGlucHV0LCB2YWx1ZSkgeworICAgICAgICByZXR1cm4gZHVyYXRp b25fYWRkX3N1YnRyYWN0X19hZGRTdWJ0cmFjdCh0aGlzLCBpbnB1dCwgdmFs dWUsIDEpOworICAgIH0KKworICAgIC8vIHN1cHBvcnRzIG9ubHkgMi4wLXN0 eWxlIHN1YnRyYWN0KDEsICdzJykgb3Igc3VidHJhY3QoZHVyYXRpb24pCisg ICAgZnVuY3Rpb24gZHVyYXRpb25fYWRkX3N1YnRyYWN0X19zdWJ0cmFjdCAo aW5wdXQsIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBkdXJhdGlvbl9hZGRf c3VidHJhY3RfX2FkZFN1YnRyYWN0KHRoaXMsIGlucHV0LCB2YWx1ZSwgLTEp OworICAgIH0KKworICAgIGZ1bmN0aW9uIGFic0NlaWwgKG51bWJlcikgewor ICAgICAgICBpZiAobnVtYmVyIDwgMCkgeworICAgICAgICAgICAgcmV0dXJu IE1hdGguZmxvb3IobnVtYmVyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg ICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKTsKKyAgICAgICAgfQor ICAgIH0KKworICAgIGZ1bmN0aW9uIGJ1YmJsZSAoKSB7CisgICAgICAgIHZh ciBtaWxsaXNlY29uZHMgPSB0aGlzLl9taWxsaXNlY29uZHM7CisgICAgICAg IHZhciBkYXlzICAgICAgICAgPSB0aGlzLl9kYXlzOworICAgICAgICB2YXIg bW9udGhzICAgICAgID0gdGhpcy5fbW9udGhzOworICAgICAgICB2YXIgZGF0 YSAgICAgICAgID0gdGhpcy5fZGF0YTsKKyAgICAgICAgdmFyIHNlY29uZHMs IG1pbnV0ZXMsIGhvdXJzLCB5ZWFycywgbW9udGhzRnJvbURheXM7CisKKyAg ICAgICAgLy8gaWYgd2UgaGF2ZSBhIG1peCBvZiBwb3NpdGl2ZSBhbmQgbmVn YXRpdmUgdmFsdWVzLCBidWJibGUgZG93biBmaXJzdAorICAgICAgICAvLyBj aGVjazogaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVz LzIxNjYKKyAgICAgICAgaWYgKCEoKG1pbGxpc2Vjb25kcyA+PSAwICYmIGRh eXMgPj0gMCAmJiBtb250aHMgPj0gMCkgfHwKKyAgICAgICAgICAgICAgICAo bWlsbGlzZWNvbmRzIDw9IDAgJiYgZGF5cyA8PSAwICYmIG1vbnRocyA8PSAw KSkpIHsKKyAgICAgICAgICAgIG1pbGxpc2Vjb25kcyArPSBhYnNDZWlsKG1v bnRoc1RvRGF5cyhtb250aHMpICsgZGF5cykgKiA4NjRlNTsKKyAgICAgICAg ICAgIGRheXMgPSAwOworICAgICAgICAgICAgbW9udGhzID0gMDsKKyAgICAg ICAgfQorCisgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY29kZSBidWJibGVz IHVwIHZhbHVlcywgc2VlIHRoZSB0ZXN0cyBmb3IKKyAgICAgICAgLy8gZXhh bXBsZXMgb2Ygd2hhdCB0aGF0IG1lYW5zLgorICAgICAgICBkYXRhLm1pbGxp c2Vjb25kcyA9IG1pbGxpc2Vjb25kcyAlIDEwMDA7CisKKyAgICAgICAgc2Vj b25kcyAgICAgICAgICAgPSBhYnNGbG9vcihtaWxsaXNlY29uZHMgLyAxMDAw KTsKKyAgICAgICAgZGF0YS5zZWNvbmRzICAgICAgPSBzZWNvbmRzICUgNjA7 CisKKyAgICAgICAgbWludXRlcyAgICAgICAgICAgPSBhYnNGbG9vcihzZWNv bmRzIC8gNjApOworICAgICAgICBkYXRhLm1pbnV0ZXMgICAgICA9IG1pbnV0 ZXMgJSA2MDsKKworICAgICAgICBob3VycyAgICAgICAgICAgICA9IGFic0Zs b29yKG1pbnV0ZXMgLyA2MCk7CisgICAgICAgIGRhdGEuaG91cnMgICAgICAg ID0gaG91cnMgJSAyNDsKKworICAgICAgICBkYXlzICs9IGFic0Zsb29yKGhv dXJzIC8gMjQpOworCisgICAgICAgIC8vIGNvbnZlcnQgZGF5cyB0byBtb250 aHMKKyAgICAgICAgbW9udGhzRnJvbURheXMgPSBhYnNGbG9vcihkYXlzVG9N b250aHMoZGF5cykpOworICAgICAgICBtb250aHMgKz0gbW9udGhzRnJvbURh eXM7CisgICAgICAgIGRheXMgLT0gYWJzQ2VpbChtb250aHNUb0RheXMobW9u dGhzRnJvbURheXMpKTsKKworICAgICAgICAvLyAxMiBtb250aHMgLT4gMSB5 ZWFyCisgICAgICAgIHllYXJzID0gYWJzRmxvb3IobW9udGhzIC8gMTIpOwor ICAgICAgICBtb250aHMgJT0gMTI7CisKKyAgICAgICAgZGF0YS5kYXlzICAg PSBkYXlzOworICAgICAgICBkYXRhLm1vbnRocyA9IG1vbnRoczsKKyAgICAg ICAgZGF0YS55ZWFycyAgPSB5ZWFyczsKKworICAgICAgICByZXR1cm4gdGhp czsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkYXlzVG9Nb250aHMgKGRheXMp IHsKKyAgICAgICAgLy8gNDAwIHllYXJzIGhhdmUgMTQ2MDk3IGRheXMgKHRh a2luZyBpbnRvIGFjY291bnQgbGVhcCB5ZWFyIHJ1bGVzKQorICAgICAgICAv LyA0MDAgeWVhcnMgaGF2ZSAxMiBtb250aHMgPT09IDQ4MDAKKyAgICAgICAg cmV0dXJuIGRheXMgKiA0ODAwIC8gMTQ2MDk3OworICAgIH0KKworICAgIGZ1 bmN0aW9uIG1vbnRoc1RvRGF5cyAobW9udGhzKSB7CisgICAgICAgIC8vIHRo ZSByZXZlcnNlIG9mIGRheXNUb01vbnRocworICAgICAgICByZXR1cm4gbW9u dGhzICogMTQ2MDk3IC8gNDgwMDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBh cyAodW5pdHMpIHsKKyAgICAgICAgdmFyIGRheXM7CisgICAgICAgIHZhciBt b250aHM7CisgICAgICAgIHZhciBtaWxsaXNlY29uZHMgPSB0aGlzLl9taWxs aXNlY29uZHM7CisKKyAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1 bml0cyk7CisKKyAgICAgICAgaWYgKHVuaXRzID09PSAnbW9udGgnIHx8IHVu aXRzID09PSAneWVhcicpIHsKKyAgICAgICAgICAgIGRheXMgICA9IHRoaXMu X2RheXMgICArIG1pbGxpc2Vjb25kcyAvIDg2NGU1OworICAgICAgICAgICAg bW9udGhzID0gdGhpcy5fbW9udGhzICsgZGF5c1RvTW9udGhzKGRheXMpOwor ICAgICAgICAgICAgcmV0dXJuIHVuaXRzID09PSAnbW9udGgnID8gbW9udGhz IDogbW9udGhzIC8gMTI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICAvLyBoYW5kbGUgbWlsbGlzZWNvbmRzIHNlcGFyYXRlbHkgYmVjYXVzZSBv ZiBmbG9hdGluZyBwb2ludCBtYXRoIGVycm9ycyAoaXNzdWUgIzE4NjcpCisg ICAgICAgICAgICBkYXlzID0gdGhpcy5fZGF5cyArIE1hdGgucm91bmQobW9u dGhzVG9EYXlzKHRoaXMuX21vbnRocykpOworICAgICAgICAgICAgc3dpdGNo ICh1bml0cykgeworICAgICAgICAgICAgICAgIGNhc2UgJ3dlZWsnICAgOiBy ZXR1cm4gZGF5cyAvIDcgICAgICsgbWlsbGlzZWNvbmRzIC8gNjA0OGU1Owor ICAgICAgICAgICAgICAgIGNhc2UgJ2RheScgICAgOiByZXR1cm4gZGF5cyAg ICAgICAgICsgbWlsbGlzZWNvbmRzIC8gODY0ZTU7CisgICAgICAgICAgICAg ICAgY2FzZSAnaG91cicgICA6IHJldHVybiBkYXlzICogMjQgICAgKyBtaWxs aXNlY29uZHMgLyAzNmU1OworICAgICAgICAgICAgICAgIGNhc2UgJ21pbnV0 ZScgOiByZXR1cm4gZGF5cyAqIDE0NDAgICsgbWlsbGlzZWNvbmRzIC8gNmU0 OworICAgICAgICAgICAgICAgIGNhc2UgJ3NlY29uZCcgOiByZXR1cm4gZGF5 cyAqIDg2NDAwICsgbWlsbGlzZWNvbmRzIC8gMTAwMDsKKyAgICAgICAgICAg ICAgICAvLyBNYXRoLmZsb29yIHByZXZlbnRzIGZsb2F0aW5nIHBvaW50IG1h dGggZXJyb3JzIGhlcmUKKyAgICAgICAgICAgICAgICBjYXNlICdtaWxsaXNl Y29uZCc6IHJldHVybiBNYXRoLmZsb29yKGRheXMgKiA4NjRlNSkgKyBtaWxs aXNlY29uZHM7CisgICAgICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3 IEVycm9yKCdVbmtub3duIHVuaXQgJyArIHVuaXRzKTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRPRE86IFVzZSB0aGlz LmFzKCdtcycpPworICAgIGZ1bmN0aW9uIGR1cmF0aW9uX2FzX192YWx1ZU9m ICgpIHsKKyAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgIHRoaXMuX21p bGxpc2Vjb25kcyArCisgICAgICAgICAgICB0aGlzLl9kYXlzICogODY0ZTUg KworICAgICAgICAgICAgKHRoaXMuX21vbnRocyAlIDEyKSAqIDI1OTJlNiAr CisgICAgICAgICAgICB0b0ludCh0aGlzLl9tb250aHMgLyAxMikgKiAzMTUz NmU2CisgICAgICAgICk7CisgICAgfQorCisgICAgZnVuY3Rpb24gbWFrZUFz IChhbGlhcykgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAg ICAgICAgICAgcmV0dXJuIHRoaXMuYXMoYWxpYXMpOworICAgICAgICB9Owor ICAgIH0KKworICAgIHZhciBhc01pbGxpc2Vjb25kcyA9IG1ha2VBcygnbXMn KTsKKyAgICB2YXIgYXNTZWNvbmRzICAgICAgPSBtYWtlQXMoJ3MnKTsKKyAg ICB2YXIgYXNNaW51dGVzICAgICAgPSBtYWtlQXMoJ20nKTsKKyAgICB2YXIg YXNIb3VycyAgICAgICAgPSBtYWtlQXMoJ2gnKTsKKyAgICB2YXIgYXNEYXlz ICAgICAgICAgPSBtYWtlQXMoJ2QnKTsKKyAgICB2YXIgYXNXZWVrcyAgICAg ICAgPSBtYWtlQXMoJ3cnKTsKKyAgICB2YXIgYXNNb250aHMgICAgICAgPSBt YWtlQXMoJ00nKTsKKyAgICB2YXIgYXNZZWFycyAgICAgICAgPSBtYWtlQXMo J3knKTsKKworICAgIGZ1bmN0aW9uIGR1cmF0aW9uX2dldF9fZ2V0ICh1bml0 cykgeworICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTsK KyAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHMgKyAncyddKCk7CisgICAgfQor CisgICAgZnVuY3Rpb24gbWFrZUdldHRlcihuYW1lKSB7CisgICAgICAgIHJl dHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5f ZGF0YVtuYW1lXTsKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICB2YXIgbWls bGlzZWNvbmRzID0gbWFrZUdldHRlcignbWlsbGlzZWNvbmRzJyk7CisgICAg dmFyIHNlY29uZHMgICAgICA9IG1ha2VHZXR0ZXIoJ3NlY29uZHMnKTsKKyAg ICB2YXIgbWludXRlcyAgICAgID0gbWFrZUdldHRlcignbWludXRlcycpOwor ICAgIHZhciBob3VycyAgICAgICAgPSBtYWtlR2V0dGVyKCdob3VycycpOwor ICAgIHZhciBkYXlzICAgICAgICAgPSBtYWtlR2V0dGVyKCdkYXlzJyk7Cisg ICAgdmFyIGR1cmF0aW9uX2dldF9fbW9udGhzICAgICAgID0gbWFrZUdldHRl cignbW9udGhzJyk7CisgICAgdmFyIHllYXJzICAgICAgICA9IG1ha2VHZXR0 ZXIoJ3llYXJzJyk7CisKKyAgICBmdW5jdGlvbiB3ZWVrcyAoKSB7CisgICAg ICAgIHJldHVybiBhYnNGbG9vcih0aGlzLmRheXMoKSAvIDcpOworICAgIH0K KworICAgIHZhciByb3VuZCA9IE1hdGgucm91bmQ7CisgICAgdmFyIHRocmVz aG9sZHMgPSB7CisgICAgICAgIHM6IDQ1LCAgLy8gc2Vjb25kcyB0byBtaW51 dGUKKyAgICAgICAgbTogNDUsICAvLyBtaW51dGVzIHRvIGhvdXIKKyAgICAg ICAgaDogMjIsICAvLyBob3VycyB0byBkYXkKKyAgICAgICAgZDogMjYsICAv LyBkYXlzIHRvIG1vbnRoCisgICAgICAgIE06IDExICAgLy8gbW9udGhzIHRv IHllYXIKKyAgICB9OworCisgICAgLy8gaGVscGVyIGZ1bmN0aW9uIGZvciBt b21lbnQuZm4uZnJvbSwgbW9tZW50LmZuLmZyb21Ob3csIGFuZCBtb21lbnQu ZHVyYXRpb24uZm4uaHVtYW5pemUKKyAgICBmdW5jdGlvbiBzdWJzdGl0dXRl VGltZUFnbyhzdHJpbmcsIG51bWJlciwgd2l0aG91dFN1ZmZpeCwgaXNGdXR1 cmUsIGxvY2FsZSkgeworICAgICAgICByZXR1cm4gbG9jYWxlLnJlbGF0aXZl VGltZShudW1iZXIgfHwgMSwgISF3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlz RnV0dXJlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkdXJhdGlvbl9odW1h bml6ZV9fcmVsYXRpdmVUaW1lIChwb3NOZWdEdXJhdGlvbiwgd2l0aG91dFN1 ZmZpeCwgbG9jYWxlKSB7CisgICAgICAgIHZhciBkdXJhdGlvbiA9IGNyZWF0 ZV9fY3JlYXRlRHVyYXRpb24ocG9zTmVnRHVyYXRpb24pLmFicygpOworICAg ICAgICB2YXIgc2Vjb25kcyAgPSByb3VuZChkdXJhdGlvbi5hcygncycpKTsK KyAgICAgICAgdmFyIG1pbnV0ZXMgID0gcm91bmQoZHVyYXRpb24uYXMoJ20n KSk7CisgICAgICAgIHZhciBob3VycyAgICA9IHJvdW5kKGR1cmF0aW9uLmFz KCdoJykpOworICAgICAgICB2YXIgZGF5cyAgICAgPSByb3VuZChkdXJhdGlv bi5hcygnZCcpKTsKKyAgICAgICAgdmFyIG1vbnRocyAgID0gcm91bmQoZHVy YXRpb24uYXMoJ00nKSk7CisgICAgICAgIHZhciB5ZWFycyAgICA9IHJvdW5k KGR1cmF0aW9uLmFzKCd5JykpOworCisgICAgICAgIHZhciBhID0gc2Vjb25k cyA8IHRocmVzaG9sZHMucyAmJiBbJ3MnLCBzZWNvbmRzXSAgfHwKKyAgICAg ICAgICAgICAgICBtaW51dGVzIDw9IDEgICAgICAgICAgICYmIFsnbSddICAg ICAgICAgICB8fAorICAgICAgICAgICAgICAgIG1pbnV0ZXMgPCB0aHJlc2hv bGRzLm0gJiYgWydtbScsIG1pbnV0ZXNdIHx8CisgICAgICAgICAgICAgICAg aG91cnMgICA8PSAxICAgICAgICAgICAmJiBbJ2gnXSAgICAgICAgICAgfHwK KyAgICAgICAgICAgICAgICBob3VycyAgIDwgdGhyZXNob2xkcy5oICYmIFsn aGgnLCBob3Vyc10gICB8fAorICAgICAgICAgICAgICAgIGRheXMgICAgPD0g MSAgICAgICAgICAgJiYgWydkJ10gICAgICAgICAgIHx8CisgICAgICAgICAg ICAgICAgZGF5cyAgICA8IHRocmVzaG9sZHMuZCAmJiBbJ2RkJywgZGF5c10g ICAgfHwKKyAgICAgICAgICAgICAgICBtb250aHMgIDw9IDEgICAgICAgICAg ICYmIFsnTSddICAgICAgICAgICB8fAorICAgICAgICAgICAgICAgIG1vbnRo cyAgPCB0aHJlc2hvbGRzLk0gJiYgWydNTScsIG1vbnRoc10gIHx8CisgICAg ICAgICAgICAgICAgeWVhcnMgICA8PSAxICAgICAgICAgICAmJiBbJ3knXSAg ICAgICAgICAgfHwgWyd5eScsIHllYXJzXTsKKworICAgICAgICBhWzJdID0g d2l0aG91dFN1ZmZpeDsKKyAgICAgICAgYVszXSA9ICtwb3NOZWdEdXJhdGlv biA+IDA7CisgICAgICAgIGFbNF0gPSBsb2NhbGU7CisgICAgICAgIHJldHVy biBzdWJzdGl0dXRlVGltZUFnby5hcHBseShudWxsLCBhKTsKKyAgICB9CisK KyAgICAvLyBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gc2V0IHRoZSBy b3VuZGluZyBmdW5jdGlvbiBmb3IgcmVsYXRpdmUgdGltZSBzdHJpbmdzCisg ICAgZnVuY3Rpb24gZHVyYXRpb25faHVtYW5pemVfX2dldFNldFJlbGF0aXZl VGltZVJvdW5kaW5nIChyb3VuZGluZ0Z1bmN0aW9uKSB7CisgICAgICAgIGlm IChyb3VuZGluZ0Z1bmN0aW9uID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAg ICAgIHJldHVybiByb3VuZDsKKyAgICAgICAgfQorICAgICAgICBpZiAodHlw ZW9mKHJvdW5kaW5nRnVuY3Rpb24pID09PSAnZnVuY3Rpb24nKSB7CisgICAg ICAgICAgICByb3VuZCA9IHJvdW5kaW5nRnVuY3Rpb247CisgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgfQorCisgICAgLy8gVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91 IHRvIHNldCBhIHRocmVzaG9sZCBmb3IgcmVsYXRpdmUgdGltZSBzdHJpbmdz CisgICAgZnVuY3Rpb24gZHVyYXRpb25faHVtYW5pemVfX2dldFNldFJlbGF0 aXZlVGltZVRocmVzaG9sZCAodGhyZXNob2xkLCBsaW1pdCkgeworICAgICAg ICBpZiAodGhyZXNob2xkc1t0aHJlc2hvbGRdID09PSB1bmRlZmluZWQpIHsK KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAg ICBpZiAobGltaXQgPT09IHVuZGVmaW5lZCkgeworICAgICAgICAgICAgcmV0 dXJuIHRocmVzaG9sZHNbdGhyZXNob2xkXTsKKyAgICAgICAgfQorICAgICAg ICB0aHJlc2hvbGRzW3RocmVzaG9sZF0gPSBsaW1pdDsKKyAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgfQorCisgICAgZnVuY3Rpb24gaHVtYW5pemUgKHdp dGhTdWZmaXgpIHsKKyAgICAgICAgdmFyIGxvY2FsZSA9IHRoaXMubG9jYWxl RGF0YSgpOworICAgICAgICB2YXIgb3V0cHV0ID0gZHVyYXRpb25faHVtYW5p emVfX3JlbGF0aXZlVGltZSh0aGlzLCAhd2l0aFN1ZmZpeCwgbG9jYWxlKTsK KworICAgICAgICBpZiAod2l0aFN1ZmZpeCkgeworICAgICAgICAgICAgb3V0 cHV0ID0gbG9jYWxlLnBhc3RGdXR1cmUoK3RoaXMsIG91dHB1dCk7CisgICAg ICAgIH0KKworICAgICAgICByZXR1cm4gbG9jYWxlLnBvc3Rmb3JtYXQob3V0 cHV0KTsKKyAgICB9CisKKyAgICB2YXIgaXNvX3N0cmluZ19fYWJzID0gTWF0 aC5hYnM7CisKKyAgICBmdW5jdGlvbiBpc29fc3RyaW5nX190b0lTT1N0cmlu ZygpIHsKKyAgICAgICAgLy8gZm9yIElTTyBzdHJpbmdzIHdlIGRvIG5vdCB1 c2UgdGhlIG5vcm1hbCBidWJibGluZyBydWxlczoKKyAgICAgICAgLy8gICog bWlsbGlzZWNvbmRzIGJ1YmJsZSB1cCB1bnRpbCB0aGV5IGJlY29tZSBob3Vy cworICAgICAgICAvLyAgKiBkYXlzIGRvIG5vdCBidWJibGUgYXQgYWxsCisg ICAgICAgIC8vICAqIG1vbnRocyBidWJibGUgdXAgdW50aWwgdGhleSBiZWNv bWUgeWVhcnMKKyAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIHRoZXJlIGlz IG5vIGNvbnRleHQtZnJlZSBjb252ZXJzaW9uIGJldHdlZW4gaG91cnMgYW5k IGRheXMKKyAgICAgICAgLy8gKHRoaW5rIG9mIGNsb2NrIGNoYW5nZXMpCisg ICAgICAgIC8vIGFuZCBhbHNvIG5vdCBiZXR3ZWVuIGRheXMgYW5kIG1vbnRo cyAoMjgtMzEgZGF5cyBwZXIgbW9udGgpCisgICAgICAgIHZhciBzZWNvbmRz ID0gaXNvX3N0cmluZ19fYWJzKHRoaXMuX21pbGxpc2Vjb25kcykgLyAxMDAw OworICAgICAgICB2YXIgZGF5cyAgICAgICAgID0gaXNvX3N0cmluZ19fYWJz KHRoaXMuX2RheXMpOworICAgICAgICB2YXIgbW9udGhzICAgICAgID0gaXNv X3N0cmluZ19fYWJzKHRoaXMuX21vbnRocyk7CisgICAgICAgIHZhciBtaW51 dGVzLCBob3VycywgeWVhcnM7CisKKyAgICAgICAgLy8gMzYwMCBzZWNvbmRz IC0+IDYwIG1pbnV0ZXMgLT4gMSBob3VyCisgICAgICAgIG1pbnV0ZXMgICAg ICAgICAgID0gYWJzRmxvb3Ioc2Vjb25kcyAvIDYwKTsKKyAgICAgICAgaG91 cnMgICAgICAgICAgICAgPSBhYnNGbG9vcihtaW51dGVzIC8gNjApOworICAg ICAgICBzZWNvbmRzICU9IDYwOworICAgICAgICBtaW51dGVzICU9IDYwOwor CisgICAgICAgIC8vIDEyIG1vbnRocyAtPiAxIHllYXIKKyAgICAgICAgeWVh cnMgID0gYWJzRmxvb3IobW9udGhzIC8gMTIpOworICAgICAgICBtb250aHMg JT0gMTI7CisKKworICAgICAgICAvLyBpbnNwaXJlZCBieSBodHRwczovL2dp dGh1Yi5jb20vZG9yZGlsbGUvbW9tZW50LWlzb2R1cmF0aW9uL2Jsb2IvbWFz dGVyL21vbWVudC5pc29kdXJhdGlvbi5qcworICAgICAgICB2YXIgWSA9IHll YXJzOworICAgICAgICB2YXIgTSA9IG1vbnRoczsKKyAgICAgICAgdmFyIEQg PSBkYXlzOworICAgICAgICB2YXIgaCA9IGhvdXJzOworICAgICAgICB2YXIg bSA9IG1pbnV0ZXM7CisgICAgICAgIHZhciBzID0gc2Vjb25kczsKKyAgICAg ICAgdmFyIHRvdGFsID0gdGhpcy5hc1NlY29uZHMoKTsKKworICAgICAgICBp ZiAoIXRvdGFsKSB7CisgICAgICAgICAgICAvLyB0aGlzIGlzIHRoZSBzYW1l IGFzIEMjJ3MgKE5vZGEpIGFuZCBweXRob24gKGlzb2RhdGUpLi4uCisgICAg ICAgICAgICAvLyBidXQgbm90IG90aGVyIEpTIChnb29nLmRhdGUpCisgICAg ICAgICAgICByZXR1cm4gJ1AwRCc7CisgICAgICAgIH0KKworICAgICAgICBy ZXR1cm4gKHRvdGFsIDwgMCA/ICctJyA6ICcnKSArCisgICAgICAgICAgICAn UCcgKworICAgICAgICAgICAgKFkgPyBZICsgJ1knIDogJycpICsKKyAgICAg ICAgICAgIChNID8gTSArICdNJyA6ICcnKSArCisgICAgICAgICAgICAoRCA/ IEQgKyAnRCcgOiAnJykgKworICAgICAgICAgICAgKChoIHx8IG0gfHwgcykg PyAnVCcgOiAnJykgKworICAgICAgICAgICAgKGggPyBoICsgJ0gnIDogJycp ICsKKyAgICAgICAgICAgIChtID8gbSArICdNJyA6ICcnKSArCisgICAgICAg ICAgICAocyA/IHMgKyAnUycgOiAnJyk7CisgICAgfQorCisgICAgdmFyIGR1 cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8gPSBEdXJhdGlvbi5wcm90b3R5cGU7 CisKKyAgICBkdXJhdGlvbl9wcm90b3R5cGVfX3Byb3RvLmFicyAgICAgICAg ICAgID0gZHVyYXRpb25fYWJzX19hYnM7CisgICAgZHVyYXRpb25fcHJvdG90 eXBlX19wcm90by5hZGQgICAgICAgICAgICA9IGR1cmF0aW9uX2FkZF9zdWJ0 cmFjdF9fYWRkOworICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8uc3Vi dHJhY3QgICAgICAgPSBkdXJhdGlvbl9hZGRfc3VidHJhY3RfX3N1YnRyYWN0 OworICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8uYXMgICAgICAgICAg ICAgPSBhczsKKyAgICBkdXJhdGlvbl9wcm90b3R5cGVfX3Byb3RvLmFzTWls bGlzZWNvbmRzID0gYXNNaWxsaXNlY29uZHM7CisgICAgZHVyYXRpb25fcHJv dG90eXBlX19wcm90by5hc1NlY29uZHMgICAgICA9IGFzU2Vjb25kczsKKyAg ICBkdXJhdGlvbl9wcm90b3R5cGVfX3Byb3RvLmFzTWludXRlcyAgICAgID0g YXNNaW51dGVzOworICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8uYXNI b3VycyAgICAgICAgPSBhc0hvdXJzOworICAgIGR1cmF0aW9uX3Byb3RvdHlw ZV9fcHJvdG8uYXNEYXlzICAgICAgICAgPSBhc0RheXM7CisgICAgZHVyYXRp b25fcHJvdG90eXBlX19wcm90by5hc1dlZWtzICAgICAgICA9IGFzV2Vla3M7 CisgICAgZHVyYXRpb25fcHJvdG90eXBlX19wcm90by5hc01vbnRocyAgICAg ICA9IGFzTW9udGhzOworICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8u YXNZZWFycyAgICAgICAgPSBhc1llYXJzOworICAgIGR1cmF0aW9uX3Byb3Rv dHlwZV9fcHJvdG8udmFsdWVPZiAgICAgICAgPSBkdXJhdGlvbl9hc19fdmFs dWVPZjsKKyAgICBkdXJhdGlvbl9wcm90b3R5cGVfX3Byb3RvLl9idWJibGUg ICAgICAgID0gYnViYmxlOworICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJv dG8uZ2V0ICAgICAgICAgICAgPSBkdXJhdGlvbl9nZXRfX2dldDsKKyAgICBk dXJhdGlvbl9wcm90b3R5cGVfX3Byb3RvLm1pbGxpc2Vjb25kcyAgID0gbWls bGlzZWNvbmRzOworICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8uc2Vj b25kcyAgICAgICAgPSBzZWNvbmRzOworICAgIGR1cmF0aW9uX3Byb3RvdHlw ZV9fcHJvdG8ubWludXRlcyAgICAgICAgPSBtaW51dGVzOworICAgIGR1cmF0 aW9uX3Byb3RvdHlwZV9fcHJvdG8uaG91cnMgICAgICAgICAgPSBob3VyczsK KyAgICBkdXJhdGlvbl9wcm90b3R5cGVfX3Byb3RvLmRheXMgICAgICAgICAg ID0gZGF5czsKKyAgICBkdXJhdGlvbl9wcm90b3R5cGVfX3Byb3RvLndlZWtz ICAgICAgICAgID0gd2Vla3M7CisgICAgZHVyYXRpb25fcHJvdG90eXBlX19w cm90by5tb250aHMgICAgICAgICA9IGR1cmF0aW9uX2dldF9fbW9udGhzOwor ICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8ueWVhcnMgICAgICAgICAg PSB5ZWFyczsKKyAgICBkdXJhdGlvbl9wcm90b3R5cGVfX3Byb3RvLmh1bWFu aXplICAgICAgID0gaHVtYW5pemU7CisgICAgZHVyYXRpb25fcHJvdG90eXBl X19wcm90by50b0lTT1N0cmluZyAgICA9IGlzb19zdHJpbmdfX3RvSVNPU3Ry aW5nOworICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8udG9TdHJpbmcg ICAgICAgPSBpc29fc3RyaW5nX190b0lTT1N0cmluZzsKKyAgICBkdXJhdGlv bl9wcm90b3R5cGVfX3Byb3RvLnRvSlNPTiAgICAgICAgID0gaXNvX3N0cmlu Z19fdG9JU09TdHJpbmc7CisgICAgZHVyYXRpb25fcHJvdG90eXBlX19wcm90 by5sb2NhbGUgICAgICAgICA9IGxvY2FsZTsKKyAgICBkdXJhdGlvbl9wcm90 b3R5cGVfX3Byb3RvLmxvY2FsZURhdGEgICAgID0gbG9jYWxlRGF0YTsKKwor ICAgIC8vIERlcHJlY2F0aW9ucworICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9f cHJvdG8udG9Jc29TdHJpbmcgPSBkZXByZWNhdGUoJ3RvSXNvU3RyaW5nKCkg aXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB0b0lTT1N0cmluZygpIGluc3Rl YWQgKG5vdGljZSB0aGUgY2FwaXRhbHMpJywgaXNvX3N0cmluZ19fdG9JU09T dHJpbmcpOworICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8ubGFuZyA9 IGxhbmc7CisKKyAgICAvLyBTaWRlIGVmZmVjdCBpbXBvcnRzCisKKyAgICAv LyBGT1JNQVRUSU5HCisKKyAgICBhZGRGb3JtYXRUb2tlbignWCcsIDAsIDAs ICd1bml4Jyk7CisgICAgYWRkRm9ybWF0VG9rZW4oJ3gnLCAwLCAwLCAndmFs dWVPZicpOworCisgICAgLy8gUEFSU0lORworCisgICAgYWRkUmVnZXhUb2tl bigneCcsIG1hdGNoU2lnbmVkKTsKKyAgICBhZGRSZWdleFRva2VuKCdYJywg bWF0Y2hUaW1lc3RhbXApOworICAgIGFkZFBhcnNlVG9rZW4oJ1gnLCBmdW5j dGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHsKKyAgICAgICAgY29uZmln Ll9kID0gbmV3IERhdGUocGFyc2VGbG9hdChpbnB1dCwgMTApICogMTAwMCk7 CisgICAgfSk7CisgICAgYWRkUGFyc2VUb2tlbigneCcsIGZ1bmN0aW9uIChp bnB1dCwgYXJyYXksIGNvbmZpZykgeworICAgICAgICBjb25maWcuX2QgPSBu ZXcgRGF0ZSh0b0ludChpbnB1dCkpOworICAgIH0pOworCisgICAgLy8gU2lk ZSBlZmZlY3QgaW1wb3J0cworCisgICAgOworCisKKyAgICB1dGlsc19ob29r c19faG9va3MudmVyc2lvbiA9ICcyLjE1LjAnOworCisgICAgc2V0SG9va0Nh bGxiYWNrKGxvY2FsX19jcmVhdGVMb2NhbCk7CisKKyAgICB1dGlsc19ob29r c19faG9va3MuZm4gICAgICAgICAgICAgICAgICAgID0gbW9tZW50UHJvdG90 eXBlOworICAgIHV0aWxzX2hvb2tzX19ob29rcy5taW4gICAgICAgICAgICAg ICAgICAgPSBtaW47CisgICAgdXRpbHNfaG9va3NfX2hvb2tzLm1heCAgICAg ICAgICAgICAgICAgICA9IG1heDsKKyAgICB1dGlsc19ob29rc19faG9va3Mu bm93ICAgICAgICAgICAgICAgICAgID0gbm93OworICAgIHV0aWxzX2hvb2tz X19ob29rcy51dGMgICAgICAgICAgICAgICAgICAgPSBjcmVhdGVfdXRjX19j cmVhdGVVVEM7CisgICAgdXRpbHNfaG9va3NfX2hvb2tzLnVuaXggICAgICAg ICAgICAgICAgICA9IG1vbWVudF9tb21lbnRfX2NyZWF0ZVVuaXg7CisgICAg dXRpbHNfaG9va3NfX2hvb2tzLm1vbnRocyAgICAgICAgICAgICAgICA9IGxp c3RzX19saXN0TW9udGhzOworICAgIHV0aWxzX2hvb2tzX19ob29rcy5pc0Rh dGUgICAgICAgICAgICAgICAgPSBpc0RhdGU7CisgICAgdXRpbHNfaG9va3Nf X2hvb2tzLmxvY2FsZSAgICAgICAgICAgICAgICA9IGxvY2FsZV9sb2NhbGVz X19nZXRTZXRHbG9iYWxMb2NhbGU7CisgICAgdXRpbHNfaG9va3NfX2hvb2tz LmludmFsaWQgICAgICAgICAgICAgICA9IHZhbGlkX19jcmVhdGVJbnZhbGlk OworICAgIHV0aWxzX2hvb2tzX19ob29rcy5kdXJhdGlvbiAgICAgICAgICAg ICAgPSBjcmVhdGVfX2NyZWF0ZUR1cmF0aW9uOworICAgIHV0aWxzX2hvb2tz X19ob29rcy5pc01vbWVudCAgICAgICAgICAgICAgPSBpc01vbWVudDsKKyAg ICB1dGlsc19ob29rc19faG9va3Mud2Vla2RheXMgICAgICAgICAgICAgID0g bGlzdHNfX2xpc3RXZWVrZGF5czsKKyAgICB1dGlsc19ob29rc19faG9va3Mu cGFyc2Vab25lICAgICAgICAgICAgID0gbW9tZW50X21vbWVudF9fY3JlYXRl SW5ab25lOworICAgIHV0aWxzX2hvb2tzX19ob29rcy5sb2NhbGVEYXRhICAg ICAgICAgICAgPSBsb2NhbGVfbG9jYWxlc19fZ2V0TG9jYWxlOworICAgIHV0 aWxzX2hvb2tzX19ob29rcy5pc0R1cmF0aW9uICAgICAgICAgICAgPSBpc0R1 cmF0aW9uOworICAgIHV0aWxzX2hvb2tzX19ob29rcy5tb250aHNTaG9ydCAg ICAgICAgICAgPSBsaXN0c19fbGlzdE1vbnRoc1Nob3J0OworICAgIHV0aWxz X2hvb2tzX19ob29rcy53ZWVrZGF5c01pbiAgICAgICAgICAgPSBsaXN0c19f bGlzdFdlZWtkYXlzTWluOworICAgIHV0aWxzX2hvb2tzX19ob29rcy5kZWZp bmVMb2NhbGUgICAgICAgICAgPSBkZWZpbmVMb2NhbGU7CisgICAgdXRpbHNf aG9va3NfX2hvb2tzLnVwZGF0ZUxvY2FsZSAgICAgICAgICA9IHVwZGF0ZUxv Y2FsZTsKKyAgICB1dGlsc19ob29rc19faG9va3MubG9jYWxlcyAgICAgICAg ICAgICAgID0gbG9jYWxlX2xvY2FsZXNfX2xpc3RMb2NhbGVzOworICAgIHV0 aWxzX2hvb2tzX19ob29rcy53ZWVrZGF5c1Nob3J0ICAgICAgICAgPSBsaXN0 c19fbGlzdFdlZWtkYXlzU2hvcnQ7CisgICAgdXRpbHNfaG9va3NfX2hvb2tz Lm5vcm1hbGl6ZVVuaXRzICAgICAgICA9IG5vcm1hbGl6ZVVuaXRzOworICAg IHV0aWxzX2hvb2tzX19ob29rcy5yZWxhdGl2ZVRpbWVSb3VuZGluZyA9IGR1 cmF0aW9uX2h1bWFuaXplX19nZXRTZXRSZWxhdGl2ZVRpbWVSb3VuZGluZzsK KyAgICB1dGlsc19ob29rc19faG9va3MucmVsYXRpdmVUaW1lVGhyZXNob2xk ID0gZHVyYXRpb25faHVtYW5pemVfX2dldFNldFJlbGF0aXZlVGltZVRocmVz aG9sZDsKKyAgICB1dGlsc19ob29rc19faG9va3MuY2FsZW5kYXJGb3JtYXQg ICAgICAgID0gZ2V0Q2FsZW5kYXJGb3JtYXQ7CisgICAgdXRpbHNfaG9va3Nf X2hvb2tzLnByb3RvdHlwZSAgICAgICAgICAgICA9IG1vbWVudFByb3RvdHlw ZTsKKworICAgIHZhciBtb21lbnRfX2RlZmF1bHQgPSB1dGlsc19ob29rc19f aG9va3M7CisKKworICAgIHZhciBhZiA9IG1vbWVudF9fZGVmYXVsdC5kZWZp bmVMb2NhbGUoJ2FmJywgeworICAgICAgICBtb250aHMgOiAnSmFudWFyaWVf RmVicnVhcmllX01hYXJ0X0FwcmlsX01laV9KdW5pZV9KdWxpZV9BdWd1c3R1 c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXNlbWJlcicuc3BsaXQo J18nKSwKKyAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NcnRfQXBy X01laV9KdW5fSnVsX0F1Z19TZXBfT2t0X05vdl9EZXMnLnNwbGl0KCdfJyks CisgICAgICAgIHdlZWtkYXlzIDogJ1NvbmRhZ19NYWFuZGFnX0RpbnNkYWdf V29lbnNkYWdfRG9uZGVyZGFnX1ZyeWRhZ19TYXRlcmRhZycuc3BsaXQoJ18n KSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTb25fTWFhX0Rpbl9Xb2Vf RG9uX1ZyeV9TYXQnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWlu IDogJ1NvX01hX0RpX1dvX0RvX1ZyX1NhJy5zcGxpdCgnXycpLAorICAgICAg ICBtZXJpZGllbVBhcnNlOiAvdm18bm0vaSwKKyAgICAgICAgaXNQTSA6IGZ1 bmN0aW9uIChpbnB1dCkgeworICAgICAgICAgICAgcmV0dXJuIC9ebm0kL2ku dGVzdChpbnB1dCk7CisgICAgICAgIH0sCisgICAgICAgIG1lcmlkaWVtIDog ZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7CisgICAgICAg ICAgICBpZiAoaG91cnMgPCAxMikgeworICAgICAgICAgICAgICAgIHJldHVy biBpc0xvd2VyID8gJ3ZtJyA6ICdWTSc7CisgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ25tJyA6ICdO TSc7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIGxvbmdE YXRlRm9ybWF0IDogeworICAgICAgICAgICAgTFQgOiAnSEg6bW0nLAorICAg ICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJywKKyAgICAgICAgICAgIEwgOiAn REQvTU0vWVlZWScsCisgICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScs CisgICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLAorICAg ICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScKKyAg ICAgICAgfSwKKyAgICAgICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBz YW1lRGF5IDogJ1tWYW5kYWcgb21dIExUJywKKyAgICAgICAgICAgIG5leHRE YXkgOiAnW03DtHJlIG9tXSBMVCcsCisgICAgICAgICAgICBuZXh0V2VlayA6 ICdkZGRkIFtvbV0gTFQnLAorICAgICAgICAgICAgbGFzdERheSA6ICdbR2lz dGVyIG9tXSBMVCcsCisgICAgICAgICAgICBsYXN0V2VlayA6ICdbTGFhc10g ZGRkZCBbb21dIExUJywKKyAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnCisg ICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZSA6IHsKKyAgICAgICAg ICAgIGZ1dHVyZSA6ICdvb3IgJXMnLAorICAgICAgICAgICAgcGFzdCA6ICcl cyBnZWxlZGUnLAorICAgICAgICAgICAgcyA6ICdcJ24gcGFhciBzZWtvbmRl cycsCisgICAgICAgICAgICBtIDogJ1wnbiBtaW51dXQnLAorICAgICAgICAg ICAgbW0gOiAnJWQgbWludXRlJywKKyAgICAgICAgICAgIGggOiAnXCduIHV1 cicsCisgICAgICAgICAgICBoaCA6ICclZCB1cmUnLAorICAgICAgICAgICAg ZCA6ICdcJ24gZGFnJywKKyAgICAgICAgICAgIGRkIDogJyVkIGRhZScsCisg ICAgICAgICAgICBNIDogJ1wnbiBtYWFuZCcsCisgICAgICAgICAgICBNTSA6 ICclZCBtYWFuZGUnLAorICAgICAgICAgICAgeSA6ICdcJ24gamFhcicsCisg ICAgICAgICAgICB5eSA6ICclZCBqYWFyJworICAgICAgICB9LAorICAgICAg ICBvcmRpbmFsUGFyc2U6IC9cZHsxLDJ9KHN0ZXxkZSkvLAorICAgICAgICBv cmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikgeworICAgICAgICAgICAgcmV0 dXJuIG51bWJlciArICgobnVtYmVyID09PSAxIHx8IG51bWJlciA9PT0gOCB8 fCBudW1iZXIgPj0gMjApID8gJ3N0ZScgOiAnZGUnKTsgLy8gVGhhbmtzIHRv IEpvcmlzIFLDtmxpbmcgOiBodHRwczovL2dpdGh1Yi5jb20vamp1cGl0ZXIK KyAgICAgICAgfSwKKyAgICAgICAgd2VlayA6IHsKKyAgICAgICAgICAgIGRv dyA6IDEsIC8vIE1hYW5kYWcgaXMgZGllIGVlcnN0ZSBkYWcgdmFuIGRpZSB3 ZWVrLgorICAgICAgICAgICAgZG95IDogNCAgLy8gRGllIHdlZWsgd2F0IGRp ZSA0ZGUgSmFudWFyaWUgYmV2YXQgaXMgZGllIGVlcnN0ZSB3ZWVrIHZhbiBk aWUgamFhci4KKyAgICAgICAgfQorICAgIH0pOworCisKKyAgICB2YXIgYXJf bHlfX3N5bWJvbE1hcCA9IHsKKyAgICAgICAgJzEnOiAnMScsCisgICAgICAg ICcyJzogJzInLAorICAgICAgICAnMyc6ICczJywKKyAgICAgICAgJzQnOiAn NCcsCisgICAgICAgICc1JzogJzUnLAorICAgICAgICAnNic6ICc2JywKKyAg ICAgICAgJzcnOiAnNycsCisgICAgICAgICc4JzogJzgnLAorICAgICAgICAn OSc6ICc5JywKKyAgICAgICAgJzAnOiAnMCcKKyAgICB9LCBhcl9seV9fcGx1 cmFsRm9ybSA9IGZ1bmN0aW9uIChuKSB7CisgICAgICAgIHJldHVybiBuID09 PSAwID8gMCA6IG4gPT09IDEgPyAxIDogbiA9PT0gMiA/IDIgOiBuICUgMTAw ID49IDMgJiYgbiAlIDEwMCA8PSAxMCA/IDMgOiBuICUgMTAwID49IDExID8g NCA6IDU7CisgICAgfSwgYXJfbHlfX3BsdXJhbHMgPSB7CisgICAgICAgIHMg OiBbJ9ij2YLZhCDZhdmGINir2KfZhtmK2KknLCAn2KvYp9mG2YrYqSDZiNin 2K3Yr9ipJywgWyfYq9in2YbZitiq2KfZhicsICfYq9in2YbZitiq2YrZhidd LCAnJWQg2KvZiNin2YYnLCAnJWQg2KvYp9mG2YrYqScsICclZCDYq9in2YbZ itipJ10sCisgICAgICAgIG0gOiBbJ9ij2YLZhCDZhdmGINiv2YLZitmC2Kkn LCAn2K/ZgtmK2YLYqSDZiNin2K3Yr9ipJywgWyfYr9mC2YrZgtiq2KfZhics ICfYr9mC2YrZgtiq2YrZhiddLCAnJWQg2K/Zgtin2KbZgicsICclZCDYr9mC 2YrZgtipJywgJyVkINiv2YLZitmC2KknXSwKKyAgICAgICAgaCA6IFsn2KPZ gtmEINmF2YYg2LPYp9i52KknLCAn2LPYp9i52Kkg2YjYp9it2K/YqScsIFsn 2LPYp9i52KrYp9mGJywgJ9iz2KfYudiq2YrZhiddLCAnJWQg2LPYp9i52KfY qicsICclZCDYs9in2LnYqScsICclZCDYs9in2LnYqSddLAorICAgICAgICBk IDogWyfYo9mC2YQg2YXZhiDZitmI2YUnLCAn2YrZiNmFINmI2KfYrdivJywg WyfZitmI2YXYp9mGJywgJ9mK2YjZhdmK2YYnXSwgJyVkINij2YrYp9mFJywg JyVkINmK2YjZhdmL2KcnLCAnJWQg2YrZiNmFJ10sCisgICAgICAgIE0gOiBb J9ij2YLZhCDZhdmGINi02YfYsScsICfYtNmH2LEg2YjYp9it2K8nLCBbJ9i0 2YfYsdin2YYnLCAn2LTZh9ix2YrZhiddLCAnJWQg2KPYtNmH2LEnLCAnJWQg 2LTZh9ix2KcnLCAnJWQg2LTZh9ixJ10sCisgICAgICAgIHkgOiBbJ9ij2YLZ hCDZhdmGINi52KfZhScsICfYudin2YUg2YjYp9it2K8nLCBbJ9i52KfZhdin 2YYnLCAn2LnYp9mF2YrZhiddLCAnJWQg2KPYudmI2KfZhScsICclZCDYudin 2YXZi9inJywgJyVkINi52KfZhSddCisgICAgfSwgYXJfbHlfX3BsdXJhbGl6 ZSA9IGZ1bmN0aW9uICh1KSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbiAo bnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSB7Cisg ICAgICAgICAgICB2YXIgZiA9IGFyX2x5X19wbHVyYWxGb3JtKG51bWJlciks CisgICAgICAgICAgICAgICAgc3RyID0gYXJfbHlfX3BsdXJhbHNbdV1bYXJf bHlfX3BsdXJhbEZvcm0obnVtYmVyKV07CisgICAgICAgICAgICBpZiAoZiA9 PT0gMikgeworICAgICAgICAgICAgICAgIHN0ciA9IHN0clt3aXRob3V0U3Vm Zml4ID8gMCA6IDFdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0 dXJuIHN0ci5yZXBsYWNlKC8lZC9pLCBudW1iZXIpOworICAgICAgICB9Owor ICAgIH0sIGFyX2x5X19tb250aHMgPSBbCisgICAgICAgICfZitmG2KfZitix JywKKyAgICAgICAgJ9mB2KjYsdin2YrYsScsCisgICAgICAgICfZhdin2LHY sycsCisgICAgICAgICfYo9io2LHZitmEJywKKyAgICAgICAgJ9mF2KfZitmI JywKKyAgICAgICAgJ9mK2YjZhtmK2YgnLAorICAgICAgICAn2YrZiNmE2YrZ iCcsCisgICAgICAgICfYo9i62LPYt9izJywKKyAgICAgICAgJ9iz2KjYqtmF 2KjYsScsCisgICAgICAgICfYo9mD2KrZiNio2LEnLAorICAgICAgICAn2YbZ iNmB2YXYqNixJywKKyAgICAgICAgJ9iv2YrYs9mF2KjYsScKKyAgICBdOwor CisgICAgdmFyIGFyX2x5ID0gbW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2Fs ZSgnYXItbHknLCB7CisgICAgICAgIG1vbnRocyA6IGFyX2x5X19tb250aHMs CisgICAgICAgIG1vbnRoc1Nob3J0IDogYXJfbHlfX21vbnRocywKKyAgICAg ICAgd2Vla2RheXMgOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE 2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in 2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLAorICAgICAgICB3 ZWVrZGF5c1Nob3J0IDogJ9ij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfY oV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxp dCgnXycpLAorICAgICAgICB3ZWVrZGF5c01pbiA6ICfYrV/Zhl/Yq1/YsV/Y rl/YrF/Ysycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNQYXJzZUV4 YWN0IDogdHJ1ZSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7CisgICAg ICAgICAgICBMVCA6ICdISDptbScsCisgICAgICAgICAgICBMVFMgOiAnSEg6 bW06c3MnLAorICAgICAgICAgICAgTCA6ICdEL1x1MjAwRk0vXHUyMDBGWVlZ WScsCisgICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsCisgICAgICAg ICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLAorICAgICAgICAgICAg TExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJworICAgICAgICB9LAor ICAgICAgICBtZXJpZGllbVBhcnNlOiAv2LV82YUvLAorICAgICAgICBpc1BN IDogZnVuY3Rpb24gKGlucHV0KSB7CisgICAgICAgICAgICByZXR1cm4gJ9mF JyA9PT0gaW5wdXQ7CisgICAgICAgIH0sCisgICAgICAgIG1lcmlkaWVtIDog ZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikgeworICAgICAgICAg ICAgaWYgKGhvdXIgPCAxMikgeworICAgICAgICAgICAgICAgIHJldHVybiAn 2LUnOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBy ZXR1cm4gJ9mFJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg ICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBzYW1lRGF5OiAnW9in2YTZ itmI2YUg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLAorICAgICAgICAgICAg bmV4dERheTogJ1vYutiv2YvYpyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcs CisgICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YbYryDYp9mE2LPY p9i52KldIExUJywKKyAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi5 2YbYryDYp9mE2LPYp9i52KldIExUJywKKyAgICAgICAgICAgIGxhc3RXZWVr OiAnZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQnLAorICAgICAgICAg ICAgc2FtZUVsc2U6ICdMJworICAgICAgICB9LAorICAgICAgICByZWxhdGl2 ZVRpbWUgOiB7CisgICAgICAgICAgICBmdXR1cmUgOiAn2KjYudivICVzJywK KyAgICAgICAgICAgIHBhc3QgOiAn2YXZhtiwICVzJywKKyAgICAgICAgICAg IHMgOiBhcl9seV9fcGx1cmFsaXplKCdzJyksCisgICAgICAgICAgICBtIDog YXJfbHlfX3BsdXJhbGl6ZSgnbScpLAorICAgICAgICAgICAgbW0gOiBhcl9s eV9fcGx1cmFsaXplKCdtJyksCisgICAgICAgICAgICBoIDogYXJfbHlfX3Bs dXJhbGl6ZSgnaCcpLAorICAgICAgICAgICAgaGggOiBhcl9seV9fcGx1cmFs aXplKCdoJyksCisgICAgICAgICAgICBkIDogYXJfbHlfX3BsdXJhbGl6ZSgn ZCcpLAorICAgICAgICAgICAgZGQgOiBhcl9seV9fcGx1cmFsaXplKCdkJyks CisgICAgICAgICAgICBNIDogYXJfbHlfX3BsdXJhbGl6ZSgnTScpLAorICAg ICAgICAgICAgTU0gOiBhcl9seV9fcGx1cmFsaXplKCdNJyksCisgICAgICAg ICAgICB5IDogYXJfbHlfX3BsdXJhbGl6ZSgneScpLAorICAgICAgICAgICAg eXkgOiBhcl9seV9fcGx1cmFsaXplKCd5JykKKyAgICAgICAgfSwKKyAgICAg ICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHsKKyAgICAgICAgICAg IHJldHVybiBzdHJpbmcucmVwbGFjZSgvXHUyMDBmL2csICcnKS5yZXBsYWNl KC/YjC9nLCAnLCcpOworICAgICAgICB9LAorICAgICAgICBwb3N0Zm9ybWF0 OiBmdW5jdGlvbiAoc3RyaW5nKSB7CisgICAgICAgICAgICByZXR1cm4gc3Ry aW5nLnJlcGxhY2UoL1xkL2csIGZ1bmN0aW9uIChtYXRjaCkgeworICAgICAg ICAgICAgICAgIHJldHVybiBhcl9seV9fc3ltYm9sTWFwW21hdGNoXTsKKyAg ICAgICAgICAgIH0pLnJlcGxhY2UoLywvZywgJ9iMJyk7CisgICAgICAgIH0s CisgICAgICAgIHdlZWsgOiB7CisgICAgICAgICAgICBkb3cgOiA2LCAvLyBT YXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorICAgICAg ICAgICAgZG95IDogMTIgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFu IDFzdCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci4KKyAgICAgICAg fQorICAgIH0pOworCisKKyAgICB2YXIgYXJfbWEgPSBtb21lbnRfX2RlZmF1 bHQuZGVmaW5lTG9jYWxlKCdhci1tYScsIHsKKyAgICAgICAgbW9udGhzIDog J9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf 2YXYp9mKX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiNiyX9i62LTYql/YtNiq2YbY qNixX9ij2YPYqtmI2KjYsV/ZhtmI2YbYqNixX9iv2KzZhtio2LEnLnNwbGl0 KCdfJyksCisgICAgICAgIG1vbnRoc1Nob3J0IDogJ9mK2YbYp9mK2LFf2YHY qNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mKX9mK2YjZhtmK 2Yhf2YrZiNmE2YrZiNiyX9i62LTYql/YtNiq2YbYqNixX9ij2YPYqtmI2KjY sV/ZhtmI2YbYqNixX9iv2KzZhtio2LEnLnNwbGl0KCdfJyksCisgICAgICAg IHdlZWtkYXlzIDogJ9in2YTYo9it2K9f2KfZhNil2KrZhtmK2YZf2KfZhNir 2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE 2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vl a2RheXNTaG9ydCA6ICfYp9it2K9f2KfYqtmG2YrZhl/Yq9mE2KfYq9in2KFf 2KfYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQo J18nKSwKKyAgICAgICAgd2Vla2RheXNNaW4gOiAn2K1f2YZf2Ktf2LFf2K5f 2Kxf2LMnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzUGFyc2VFeGFj dCA6IHRydWUsCisgICAgICAgIGxvbmdEYXRlRm9ybWF0IDogeworICAgICAg ICAgICAgTFQgOiAnSEg6bW0nLAorICAgICAgICAgICAgTFRTIDogJ0hIOm1t OnNzJywKKyAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsCisgICAgICAg ICAgICBMTCA6ICdEIE1NTU0gWVlZWScsCisgICAgICAgICAgICBMTEwgOiAn RCBNTU1NIFlZWVkgSEg6bW0nLAorICAgICAgICAgICAgTExMTCA6ICdkZGRk IEQgTU1NTSBZWVlZIEhIOm1tJworICAgICAgICB9LAorICAgICAgICBjYWxl bmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDY udmE2Ykg2KfZhNiz2KfYudipXSBMVCcsCisgICAgICAgICAgICBuZXh0RGF5 OiAnW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsCisgICAgICAg ICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExU JywKKyAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YTZiSDYp9mE 2LPYp9i52KldIExUJywKKyAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb 2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLAorICAgICAgICAgICAgc2FtZUVs c2U6ICdMJworICAgICAgICB9LAorICAgICAgICByZWxhdGl2ZVRpbWUgOiB7 CisgICAgICAgICAgICBmdXR1cmUgOiAn2YHZiiAlcycsCisgICAgICAgICAg ICBwYXN0IDogJ9mF2YbYsCAlcycsCisgICAgICAgICAgICBzIDogJ9ir2YjY p9mGJywKKyAgICAgICAgICAgIG0gOiAn2K/ZgtmK2YLYqScsCisgICAgICAg ICAgICBtbSA6ICclZCDYr9mC2KfYptmCJywKKyAgICAgICAgICAgIGggOiAn 2LPYp9i52KknLAorICAgICAgICAgICAgaGggOiAnJWQg2LPYp9i52KfYqics CisgICAgICAgICAgICBkIDogJ9mK2YjZhScsCisgICAgICAgICAgICBkZCA6 ICclZCDYo9mK2KfZhScsCisgICAgICAgICAgICBNIDogJ9i02YfYsScsCisg ICAgICAgICAgICBNTSA6ICclZCDYo9i02YfYsScsCisgICAgICAgICAgICB5 IDogJ9iz2YbYqScsCisgICAgICAgICAgICB5eSA6ICclZCDYs9mG2YjYp9iq JworICAgICAgICB9LAorICAgICAgICB3ZWVrIDogeworICAgICAgICAgICAg ZG93IDogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUg d2Vlay4KKyAgICAgICAgICAgIGRveSA6IDEyICAvLyBUaGUgd2VlayB0aGF0 IGNvbnRhaW5zIEphbiAxc3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHll YXIuCisgICAgICAgIH0KKyAgICB9KTsKKworCisgICAgdmFyIGFyX3NhX19z eW1ib2xNYXAgPSB7CisgICAgICAgICcxJzogJ9mhJywKKyAgICAgICAgJzIn OiAn2aInLAorICAgICAgICAnMyc6ICfZoycsCisgICAgICAgICc0JzogJ9mk JywKKyAgICAgICAgJzUnOiAn2aUnLAorICAgICAgICAnNic6ICfZpicsCisg ICAgICAgICc3JzogJ9mnJywKKyAgICAgICAgJzgnOiAn2agnLAorICAgICAg ICAnOSc6ICfZqScsCisgICAgICAgICcwJzogJ9mgJworICAgIH0sIGFyX3Nh X19udW1iZXJNYXAgPSB7CisgICAgICAgICfZoSc6ICcxJywKKyAgICAgICAg J9miJzogJzInLAorICAgICAgICAn2aMnOiAnMycsCisgICAgICAgICfZpCc6 ICc0JywKKyAgICAgICAgJ9mlJzogJzUnLAorICAgICAgICAn2aYnOiAnNics CisgICAgICAgICfZpyc6ICc3JywKKyAgICAgICAgJ9moJzogJzgnLAorICAg ICAgICAn2aknOiAnOScsCisgICAgICAgICfZoCc6ICcwJworICAgIH07CisK KyAgICB2YXIgYXJfc2EgPSBtb21lbnRfX2RlZmF1bHQuZGVmaW5lTG9jYWxl KCdhci1zYScsIHsKKyAgICAgICAgbW9udGhzIDogJ9mK2YbYp9mK2LFf2YHY qNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mK2Yhf2YrZiNmG 2YrZiF/ZitmI2YTZitmIX9ij2LrYs9i32LNf2LPYqNiq2YXYqNixX9ij2YPY qtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixJy5zcGxpdCgnXycp LAorICAgICAgICBtb250aHNTaG9ydCA6ICfZitmG2KfZitixX9mB2KjYsdin 2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZitmIX9mK2YjZhtmK2Yhf 2YrZiNmE2YrZiF/Yo9i62LPYt9izX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio 2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsScuc3BsaXQoJ18nKSwKKyAg ICAgICAgd2Vla2RheXMgOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Y p9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitiz X9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLAorICAgICAg ICB3ZWVrZGF5c1Nob3J0IDogJ9ij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir 2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5z cGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c01pbiA6ICfYrV/Zhl/Yq1/Y sV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNQYXJz ZUV4YWN0IDogdHJ1ZSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7Cisg ICAgICAgICAgICBMVCA6ICdISDptbScsCisgICAgICAgICAgICBMVFMgOiAn SEg6bW06c3MnLAorICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJywKKyAg ICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJywKKyAgICAgICAgICAgIExM TCA6ICdEIE1NTU0gWVlZWSBISDptbScsCisgICAgICAgICAgICBMTExMIDog J2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nCisgICAgICAgIH0sCisgICAgICAg IG1lcmlkaWVtUGFyc2U6IC/YtXzZhS8sCisgICAgICAgIGlzUE0gOiBmdW5j dGlvbiAoaW5wdXQpIHsKKyAgICAgICAgICAgIHJldHVybiAn2YUnID09PSBp bnB1dDsKKyAgICAgICAgfSwKKyAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlv biAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7CisgICAgICAgICAgICBpZiAo aG91ciA8IDEyKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICfYtSc7Cisg ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiAn 2YUnOworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBjYWxl bmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDY udmE2Ykg2KfZhNiz2KfYudipXSBMVCcsCisgICAgICAgICAgICBuZXh0RGF5 OiAnW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsCisgICAgICAg ICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExU JywKKyAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YTZiSDYp9mE 2LPYp9i52KldIExUJywKKyAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb 2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLAorICAgICAgICAgICAgc2FtZUVs c2U6ICdMJworICAgICAgICB9LAorICAgICAgICByZWxhdGl2ZVRpbWUgOiB7 CisgICAgICAgICAgICBmdXR1cmUgOiAn2YHZiiAlcycsCisgICAgICAgICAg ICBwYXN0IDogJ9mF2YbYsCAlcycsCisgICAgICAgICAgICBzIDogJ9ir2YjY p9mGJywKKyAgICAgICAgICAgIG0gOiAn2K/ZgtmK2YLYqScsCisgICAgICAg ICAgICBtbSA6ICclZCDYr9mC2KfYptmCJywKKyAgICAgICAgICAgIGggOiAn 2LPYp9i52KknLAorICAgICAgICAgICAgaGggOiAnJWQg2LPYp9i52KfYqics CisgICAgICAgICAgICBkIDogJ9mK2YjZhScsCisgICAgICAgICAgICBkZCA6 ICclZCDYo9mK2KfZhScsCisgICAgICAgICAgICBNIDogJ9i02YfYsScsCisg ICAgICAgICAgICBNTSA6ICclZCDYo9i02YfYsScsCisgICAgICAgICAgICB5 IDogJ9iz2YbYqScsCisgICAgICAgICAgICB5eSA6ICclZCDYs9mG2YjYp9iq JworICAgICAgICB9LAorICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0 cmluZykgeworICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b 2aHZotmj2aTZpdmm2afZqNmp2aBdL2csIGZ1bmN0aW9uIChtYXRjaCkgewor ICAgICAgICAgICAgICAgIHJldHVybiBhcl9zYV9fbnVtYmVyTWFwW21hdGNo XTsKKyAgICAgICAgICAgIH0pLnJlcGxhY2UoL9iML2csICcsJyk7CisgICAg ICAgIH0sCisgICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcp IHsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXGQvZywg ZnVuY3Rpb24gKG1hdGNoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFy X3NhX19zeW1ib2xNYXBbbWF0Y2hdOworICAgICAgICAgICAgfSkucmVwbGFj ZSgvLC9nLCAn2IwnKTsKKyAgICAgICAgfSwKKyAgICAgICAgd2VlayA6IHsK KyAgICAgICAgICAgIGRvdyA6IDYsIC8vIFNhdHVyZGF5IGlzIHRoZSBmaXJz dCBkYXkgb2YgdGhlIHdlZWsuCisgICAgICAgICAgICBkb3kgOiAxMiAgLy8g VGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMXN0IGlzIHRoZSBmaXJzdCB3 ZWVrIG9mIHRoZSB5ZWFyLgorICAgICAgICB9CisgICAgfSk7CisKKworICAg IHZhciBhcl90biA9IG1vbWVudF9fZGVmYXVsdC5kZWZpbmVMb2NhbGUoJ2Fy LXRuJywgeworICAgICAgICBtb250aHM6ICfYrNin2YbZgdmKX9mB2YrZgdix 2Ypf2YXYp9ix2LNf2KPZgdix2YrZhF/Zhdin2Ypf2KzZiNin2YZf2KzZiNmK 2YTZitipX9ij2YjYql/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZ gdmF2KjYsV/Yr9mK2LPZhdio2LEnLnNwbGl0KCdfJyksCisgICAgICAgIG1v bnRoc1Nob3J0OiAn2KzYp9mG2YHZil/ZgdmK2YHYsdmKX9mF2KfYsdizX9ij 2YHYsdmK2YRf2YXYp9mKX9is2YjYp9mGX9is2YjZitmE2YrYqV/Yo9mI2Kpf 2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz 2YXYqNixJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5czogJ9in2YTY o9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPY sdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjY qicuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9ydDogJ9ij2K3Y r1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK 2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVr ZGF5c01pbjogJ9itX9mGX9irX9ixX9iuX9isX9izJy5zcGxpdCgnXycpLAor ICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLAorICAgICAgICBs b25nRGF0ZUZvcm1hdDogeworICAgICAgICAgICAgTFQ6ICdISDptbScsCisg ICAgICAgICAgICBMVFM6ICdISDptbTpzcycsCisgICAgICAgICAgICBMOiAn REQvTU0vWVlZWScsCisgICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJywK KyAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJywKKyAgICAg ICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJworICAgICAg ICB9LAorICAgICAgICBjYWxlbmRhcjogeworICAgICAgICAgICAgc2FtZURh eTogJ1vYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUJywKKyAg ICAgICAgICAgIG5leHREYXk6ICdb2LrYr9inINi52YTZiSDYp9mE2LPYp9i5 2KldIExUJywKKyAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhNmJ INin2YTYs9in2LnYqV0gTFQnLAorICAgICAgICAgICAgbGFzdERheTogJ1vY o9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLAorICAgICAgICAgICAg bGFzdFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsCisg ICAgICAgICAgICBzYW1lRWxzZTogJ0wnCisgICAgICAgIH0sCisgICAgICAg IHJlbGF0aXZlVGltZTogeworICAgICAgICAgICAgZnV0dXJlOiAn2YHZiiAl cycsCisgICAgICAgICAgICBwYXN0OiAn2YXZhtiwICVzJywKKyAgICAgICAg ICAgIHM6ICfYq9mI2KfZhicsCisgICAgICAgICAgICBtOiAn2K/ZgtmK2YLY qScsCisgICAgICAgICAgICBtbTogJyVkINiv2YLYp9im2YInLAorICAgICAg ICAgICAgaDogJ9iz2KfYudipJywKKyAgICAgICAgICAgIGhoOiAnJWQg2LPY p9i52KfYqicsCisgICAgICAgICAgICBkOiAn2YrZiNmFJywKKyAgICAgICAg ICAgIGRkOiAnJWQg2KPZitin2YUnLAorICAgICAgICAgICAgTTogJ9i02YfY sScsCisgICAgICAgICAgICBNTTogJyVkINij2LTZh9ixJywKKyAgICAgICAg ICAgIHk6ICfYs9mG2KknLAorICAgICAgICAgICAgeXk6ICclZCDYs9mG2YjY p9iqJworICAgICAgICB9LAorICAgICAgICB3ZWVrOiB7CisgICAgICAgICAg ICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3 ZWVrLgorICAgICAgICAgICAgZG95OiA0IC8vIFRoZSB3ZWVrIHRoYXQgY29u dGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci4K KyAgICAgICAgfQorICAgIH0pOworCisKKyAgICB2YXIgYXJfX3N5bWJvbE1h cCA9IHsKKyAgICAgICAgJzEnOiAn2aEnLAorICAgICAgICAnMic6ICfZoics CisgICAgICAgICczJzogJ9mjJywKKyAgICAgICAgJzQnOiAn2aQnLAorICAg ICAgICAnNSc6ICfZpScsCisgICAgICAgICc2JzogJ9mmJywKKyAgICAgICAg JzcnOiAn2acnLAorICAgICAgICAnOCc6ICfZqCcsCisgICAgICAgICc5Jzog J9mpJywKKyAgICAgICAgJzAnOiAn2aAnCisgICAgfSwgYXJfX251bWJlck1h cCA9IHsKKyAgICAgICAgJ9mhJzogJzEnLAorICAgICAgICAn2aInOiAnMics CisgICAgICAgICfZoyc6ICczJywKKyAgICAgICAgJ9mkJzogJzQnLAorICAg ICAgICAn2aUnOiAnNScsCisgICAgICAgICfZpic6ICc2JywKKyAgICAgICAg J9mnJzogJzcnLAorICAgICAgICAn2agnOiAnOCcsCisgICAgICAgICfZqSc6 ICc5JywKKyAgICAgICAgJ9mgJzogJzAnCisgICAgfSwgYXJfX3BsdXJhbEZv cm0gPSBmdW5jdGlvbiAobikgeworICAgICAgICByZXR1cm4gbiA9PT0gMCA/ IDAgOiBuID09PSAxID8gMSA6IG4gPT09IDIgPyAyIDogbiAlIDEwMCA+PSAz ICYmIG4gJSAxMDAgPD0gMTAgPyAzIDogbiAlIDEwMCA+PSAxMSA/IDQgOiA1 OworICAgIH0sIGFyX19wbHVyYWxzID0geworICAgICAgICBzIDogWyfYo9mC 2YQg2YXZhiDYq9in2YbZitipJywgJ9ir2KfZhtmK2Kkg2YjYp9it2K/YqScs IFsn2KvYp9mG2YrYqtin2YYnLCAn2KvYp9mG2YrYqtmK2YYnXSwgJyVkINir 2YjYp9mGJywgJyVkINir2KfZhtmK2KknLCAnJWQg2KvYp9mG2YrYqSddLAor ICAgICAgICBtIDogWyfYo9mC2YQg2YXZhiDYr9mC2YrZgtipJywgJ9iv2YLZ itmC2Kkg2YjYp9it2K/YqScsIFsn2K/ZgtmK2YLYqtin2YYnLCAn2K/ZgtmK 2YLYqtmK2YYnXSwgJyVkINiv2YLYp9im2YInLCAnJWQg2K/ZgtmK2YLYqScs ICclZCDYr9mC2YrZgtipJ10sCisgICAgICAgIGggOiBbJ9ij2YLZhCDZhdmG INiz2KfYudipJywgJ9iz2KfYudipINmI2KfYrdiv2KknLCBbJ9iz2KfYudiq 2KfZhicsICfYs9in2LnYqtmK2YYnXSwgJyVkINiz2KfYudin2KonLCAnJWQg 2LPYp9i52KknLCAnJWQg2LPYp9i52KknXSwKKyAgICAgICAgZCA6IFsn2KPZ gtmEINmF2YYg2YrZiNmFJywgJ9mK2YjZhSDZiNin2K3YrycsIFsn2YrZiNmF 2KfZhicsICfZitmI2YXZitmGJ10sICclZCDYo9mK2KfZhScsICclZCDZitmI 2YXZi9inJywgJyVkINmK2YjZhSddLAorICAgICAgICBNIDogWyfYo9mC2YQg 2YXZhiDYtNmH2LEnLCAn2LTZh9ixINmI2KfYrdivJywgWyfYtNmH2LHYp9mG JywgJ9i02YfYsdmK2YYnXSwgJyVkINij2LTZh9ixJywgJyVkINi02YfYsdin JywgJyVkINi02YfYsSddLAorICAgICAgICB5IDogWyfYo9mC2YQg2YXZhiDY udin2YUnLCAn2LnYp9mFINmI2KfYrdivJywgWyfYudin2YXYp9mGJywgJ9i5 2KfZhdmK2YYnXSwgJyVkINij2LnZiNin2YUnLCAnJWQg2LnYp9mF2YvYpycs ICclZCDYudin2YUnXQorICAgIH0sIGFyX19wbHVyYWxpemUgPSBmdW5jdGlv biAodSkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG51bWJlciwgd2l0 aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkgeworICAgICAgICAgICAg dmFyIGYgPSBhcl9fcGx1cmFsRm9ybShudW1iZXIpLAorICAgICAgICAgICAg ICAgIHN0ciA9IGFyX19wbHVyYWxzW3VdW2FyX19wbHVyYWxGb3JtKG51bWJl cildOworICAgICAgICAgICAgaWYgKGYgPT09IDIpIHsKKyAgICAgICAgICAg ICAgICBzdHIgPSBzdHJbd2l0aG91dFN1ZmZpeCA/IDAgOiAxXTsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvJWQv aSwgbnVtYmVyKTsKKyAgICAgICAgfTsKKyAgICB9LCBhcl9fbW9udGhzID0g WworICAgICAgICAn2YPYp9mG2YjZhiDYp9mE2KvYp9mG2Yog2YrZhtin2YrY sScsCisgICAgICAgICfYtNio2KfYtyDZgdio2LHYp9mK2LEnLAorICAgICAg ICAn2KLYsNin2LEg2YXYp9ix2LMnLAorICAgICAgICAn2YbZitiz2KfZhiDY o9io2LHZitmEJywKKyAgICAgICAgJ9ij2YrYp9ixINmF2KfZitmIJywKKyAg ICAgICAgJ9it2LLZitix2KfZhiDZitmI2YbZitmIJywKKyAgICAgICAgJ9iq 2YXZiNiyINmK2YjZhNmK2YgnLAorICAgICAgICAn2KLYqCDYo9i62LPYt9iz JywKKyAgICAgICAgJ9ij2YrZhNmI2YQg2LPYqNiq2YXYqNixJywKKyAgICAg ICAgJ9iq2LTYsdmK2YYg2KfZhNij2YjZhCDYo9mD2KrZiNio2LEnLAorICAg ICAgICAn2KrYtNix2YrZhiDYp9mE2KvYp9mG2Yog2YbZiNmB2YXYqNixJywK KyAgICAgICAgJ9mD2KfZhtmI2YYg2KfZhNij2YjZhCDYr9mK2LPZhdio2LEn CisgICAgXTsKKworICAgIHZhciBhciA9IG1vbWVudF9fZGVmYXVsdC5kZWZp bmVMb2NhbGUoJ2FyJywgeworICAgICAgICBtb250aHMgOiBhcl9fbW9udGhz LAorICAgICAgICBtb250aHNTaG9ydCA6IGFyX19tb250aHMsCisgICAgICAg IHdlZWtkYXlzIDogJ9in2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir 2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE 2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vl a2RheXNTaG9ydCA6ICfYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf 2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQo J18nKSwKKyAgICAgICAgd2Vla2RheXNNaW4gOiAn2K1f2YZf2Ktf2LFf2K5f 2Kxf2LMnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzUGFyc2VFeGFj dCA6IHRydWUsCisgICAgICAgIGxvbmdEYXRlRm9ybWF0IDogeworICAgICAg ICAgICAgTFQgOiAnSEg6bW0nLAorICAgICAgICAgICAgTFRTIDogJ0hIOm1t OnNzJywKKyAgICAgICAgICAgIEwgOiAnRC9cdTIwMEZNL1x1MjAwRllZWVkn LAorICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLAorICAgICAgICAg ICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJywKKyAgICAgICAgICAgIExM TEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScKKyAgICAgICAgfSwKKyAg ICAgICAgbWVyaWRpZW1QYXJzZTogL9i1fNmFLywKKyAgICAgICAgaXNQTSA6 IGZ1bmN0aW9uIChpbnB1dCkgeworICAgICAgICAgICAgcmV0dXJuICfZhScg PT09IGlucHV0OworICAgICAgICB9LAorICAgICAgICBtZXJpZGllbSA6IGZ1 bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHsKKyAgICAgICAgICAg IGlmIChob3VyIDwgMTIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ9i1 JzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0 dXJuICfZhSc7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg IGNhbGVuZGFyIDogeworICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZ iNmFINi52YbYryDYp9mE2LPYp9i52KldIExUJywKKyAgICAgICAgICAgIG5l eHREYXk6ICdb2LrYr9mL2Kcg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLAor ICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYudmG2K8g2KfZhNiz2KfY udipXSBMVCcsCisgICAgICAgICAgICBsYXN0RGF5OiAnW9ij2YXYsyDYudmG 2K8g2KfZhNiz2KfYudipXSBMVCcsCisgICAgICAgICAgICBsYXN0V2Vlazog J2RkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUJywKKyAgICAgICAgICAg IHNhbWVFbHNlOiAnTCcKKyAgICAgICAgfSwKKyAgICAgICAgcmVsYXRpdmVU aW1lIDogeworICAgICAgICAgICAgZnV0dXJlIDogJ9io2LnYryAlcycsCisg ICAgICAgICAgICBwYXN0IDogJ9mF2YbYsCAlcycsCisgICAgICAgICAgICBz IDogYXJfX3BsdXJhbGl6ZSgncycpLAorICAgICAgICAgICAgbSA6IGFyX19w bHVyYWxpemUoJ20nKSwKKyAgICAgICAgICAgIG1tIDogYXJfX3BsdXJhbGl6 ZSgnbScpLAorICAgICAgICAgICAgaCA6IGFyX19wbHVyYWxpemUoJ2gnKSwK KyAgICAgICAgICAgIGhoIDogYXJfX3BsdXJhbGl6ZSgnaCcpLAorICAgICAg ICAgICAgZCA6IGFyX19wbHVyYWxpemUoJ2QnKSwKKyAgICAgICAgICAgIGRk IDogYXJfX3BsdXJhbGl6ZSgnZCcpLAorICAgICAgICAgICAgTSA6IGFyX19w bHVyYWxpemUoJ00nKSwKKyAgICAgICAgICAgIE1NIDogYXJfX3BsdXJhbGl6 ZSgnTScpLAorICAgICAgICAgICAgeSA6IGFyX19wbHVyYWxpemUoJ3knKSwK KyAgICAgICAgICAgIHl5IDogYXJfX3BsdXJhbGl6ZSgneScpCisgICAgICAg IH0sCisgICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7Cisg ICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1x1MjAwZi9nLCAn JykucmVwbGFjZSgvW9mh2aLZo9mk2aXZptmn2ajZqdmgXS9nLCBmdW5jdGlv biAobWF0Y2gpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYXJfX251bWJl ck1hcFttYXRjaF07CisgICAgICAgICAgICB9KS5yZXBsYWNlKC/YjC9nLCAn LCcpOworICAgICAgICB9LAorICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlv biAoc3RyaW5nKSB7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxh Y2UoL1xkL2csIGZ1bmN0aW9uIChtYXRjaCkgeworICAgICAgICAgICAgICAg IHJldHVybiBhcl9fc3ltYm9sTWFwW21hdGNoXTsKKyAgICAgICAgICAgIH0p LnJlcGxhY2UoLywvZywgJ9iMJyk7CisgICAgICAgIH0sCisgICAgICAgIHdl ZWsgOiB7CisgICAgICAgICAgICBkb3cgOiA2LCAvLyBTYXR1cmRheSBpcyB0 aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorICAgICAgICAgICAgZG95IDog MTIgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDFzdCBpcyB0aGUg Zmlyc3Qgd2VlayBvZiB0aGUgeWVhci4KKyAgICAgICAgfQorICAgIH0pOwor CisKKyAgICB2YXIgYXpfX3N1ZmZpeGVzID0geworICAgICAgICAxOiAnLWlu Y2knLAorICAgICAgICA1OiAnLWluY2knLAorICAgICAgICA4OiAnLWluY2kn LAorICAgICAgICA3MDogJy1pbmNpJywKKyAgICAgICAgODA6ICctaW5jaScs CisgICAgICAgIDI6ICctbmNpJywKKyAgICAgICAgNzogJy1uY2knLAorICAg ICAgICAyMDogJy1uY2knLAorICAgICAgICA1MDogJy1uY2knLAorICAgICAg ICAzOiAnLcO8bmPDvCcsCisgICAgICAgIDQ6ICctw7xuY8O8JywKKyAgICAg ICAgMTAwOiAnLcO8bmPDvCcsCisgICAgICAgIDY6ICctbmPEsScsCisgICAg ICAgIDk6ICctdW5jdScsCisgICAgICAgIDEwOiAnLXVuY3UnLAorICAgICAg ICAzMDogJy11bmN1JywKKyAgICAgICAgNjA6ICctxLFuY8SxJywKKyAgICAg ICAgOTA6ICctxLFuY8SxJworICAgIH07CisKKyAgICB2YXIgYXogPSBtb21l bnRfX2RlZmF1bHQuZGVmaW5lTG9jYWxlKCdheicsIHsKKyAgICAgICAgbW9u dGhzIDogJ3lhbnZhcl9mZXZyYWxfbWFydF9hcHJlbF9tYXlfaXl1bl9peXVs X2F2cXVzdF9zZW50eWFicl9va3R5YWJyX25veWFicl9kZWthYnInLnNwbGl0 KCdfJyksCisgICAgICAgIG1vbnRoc1Nob3J0IDogJ3lhbl9mZXZfbWFyX2Fw cl9tYXlfaXluX2l5bF9hdnFfc2VuX29rdF9ub3lfZGVrJy5zcGxpdCgnXycp LAorICAgICAgICB3ZWVrZGF5cyA6ICdCYXphcl9CYXphciBlcnTJmXNpX8OH yZlyxZ/JmW5iyZkgYXjFn2FtxLFfw4fJmXLFn8mZbmLJmV9Dw7xtyZkgYXjF n2FtxLFfQ8O8bcmZX8WeyZluYsmZJy5zcGxpdCgnXycpLAorICAgICAgICB3 ZWVrZGF5c1Nob3J0IDogJ0Jhel9CekVfw4dBeF/Dh8mZcl9DQXhfQ8O8bV/F nsmZbicuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNNaW4gOiAnQnpf QkVfw4dBX8OHyZlfQ0FfQ8O8X8WeyZknLnNwbGl0KCdfJyksCisgICAgICAg IHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsCisgICAgICAgIGxvbmdEYXRl Rm9ybWF0IDogeworICAgICAgICAgICAgTFQgOiAnSEg6bW0nLAorICAgICAg ICAgICAgTFRTIDogJ0hIOm1tOnNzJywKKyAgICAgICAgICAgIEwgOiAnREQu TU0uWVlZWScsCisgICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsCisg ICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLAorICAgICAg ICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScKKyAgICAg ICAgfSwKKyAgICAgICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBzYW1l RGF5IDogJ1tidWfDvG4gc2FhdF0gTFQnLAorICAgICAgICAgICAgbmV4dERh eSA6ICdbc2FiYWggc2FhdF0gTFQnLAorICAgICAgICAgICAgbmV4dFdlZWsg OiAnW2fJmWzJmW4gaMmZZnTJmV0gZGRkZCBbc2FhdF0gTFQnLAorICAgICAg ICAgICAgbGFzdERheSA6ICdbZMO8bsmZbl0gTFQnLAorICAgICAgICAgICAg bGFzdFdlZWsgOiAnW2tlw6fJmW4gaMmZZnTJmV0gZGRkZCBbc2FhdF0gTFQn LAorICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCcKKyAgICAgICAgfSwKKyAg ICAgICAgcmVsYXRpdmVUaW1lIDogeworICAgICAgICAgICAgZnV0dXJlIDog JyVzIHNvbnJhJywKKyAgICAgICAgICAgIHBhc3QgOiAnJXMgyZl2dsmZbCcs CisgICAgICAgICAgICBzIDogJ2Jpcm5lw6fJmSBzYW5peXnJmScsCisgICAg ICAgICAgICBtIDogJ2JpciBkyZlxaXHJmScsCisgICAgICAgICAgICBtbSA6 ICclZCBkyZlxaXHJmScsCisgICAgICAgICAgICBoIDogJ2JpciBzYWF0JywK KyAgICAgICAgICAgIGhoIDogJyVkIHNhYXQnLAorICAgICAgICAgICAgZCA6 ICdiaXIgZ8O8bicsCisgICAgICAgICAgICBkZCA6ICclZCBnw7xuJywKKyAg ICAgICAgICAgIE0gOiAnYmlyIGF5JywKKyAgICAgICAgICAgIE1NIDogJyVk IGF5JywKKyAgICAgICAgICAgIHkgOiAnYmlyIGlsJywKKyAgICAgICAgICAg IHl5IDogJyVkIGlsJworICAgICAgICB9LAorICAgICAgICBtZXJpZGllbVBh cnNlOiAvZ2VjyZl8c8mZaMmZcnxnw7xuZMO8enxheMWfYW0vLAorICAgICAg ICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7CisgICAgICAgICAgICByZXR1 cm4gL14oZ8O8bmTDvHp8YXjFn2FtKSQvLnRlc3QoaW5wdXQpOworICAgICAg ICB9LAorICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51 dGUsIGlzTG93ZXIpIHsKKyAgICAgICAgICAgIGlmIChob3VyIDwgNCkgewor ICAgICAgICAgICAgICAgIHJldHVybiAnZ2VjyZknOworICAgICAgICAgICAg fSBlbHNlIGlmIChob3VyIDwgMTIpIHsKKyAgICAgICAgICAgICAgICByZXR1 cm4gJ3PJmWjJmXInOworICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwg MTcpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2fDvG5kw7x6JzsKKyAg ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICdh eMWfYW0nOworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBv cmRpbmFsUGFyc2U6IC9cZHsxLDJ9LSjEsW5jxLF8aW5jaXxuY2l8w7xuY8O8 fG5jxLF8dW5jdSkvLAorICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51 bWJlcikgeworICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMCkgeyAgLy8g c3BlY2lhbCBjYXNlIGZvciB6ZXJvCisgICAgICAgICAgICAgICAgcmV0dXJu IG51bWJlciArICctxLFuY8SxJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIHZhciBhID0gbnVtYmVyICUgMTAsCisgICAgICAgICAgICAgICAgYiA9 IG51bWJlciAlIDEwMCAtIGEsCisgICAgICAgICAgICAgICAgYyA9IG51bWJl ciA+PSAxMDAgPyAxMDAgOiBudWxsOworICAgICAgICAgICAgcmV0dXJuIG51 bWJlciArIChhel9fc3VmZml4ZXNbYV0gfHwgYXpfX3N1ZmZpeGVzW2JdIHx8 IGF6X19zdWZmaXhlc1tjXSk7CisgICAgICAgIH0sCisgICAgICAgIHdlZWsg OiB7CisgICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZp cnN0IGRheSBvZiB0aGUgd2Vlay4KKyAgICAgICAgICAgIGRveSA6IDcgIC8v IFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDFzdCBpcyB0aGUgZmlyc3Qg d2VlayBvZiB0aGUgeWVhci4KKyAgICAgICAgfQorICAgIH0pOworCisKKyAg ICBmdW5jdGlvbiBiZV9fcGx1cmFsKHdvcmQsIG51bSkgeworICAgICAgICB2 YXIgZm9ybXMgPSB3b3JkLnNwbGl0KCdfJyk7CisgICAgICAgIHJldHVybiBu dW0gJSAxMCA9PT0gMSAmJiBudW0gJSAxMDAgIT09IDExID8gZm9ybXNbMF0g OiAobnVtICUgMTAgPj0gMiAmJiBudW0gJSAxMCA8PSA0ICYmIChudW0gJSAx MDAgPCAxMCB8fCBudW0gJSAxMDAgPj0gMjApID8gZm9ybXNbMV0gOiBmb3Jt c1syXSk7CisgICAgfQorICAgIGZ1bmN0aW9uIGJlX19yZWxhdGl2ZVRpbWVX aXRoUGx1cmFsKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7CisgICAg ICAgIHZhciBmb3JtYXQgPSB7CisgICAgICAgICAgICAnbW0nOiB3aXRob3V0 U3VmZml4ID8gJ9GF0LLRltC70ZbQvdCwX9GF0LLRltC70ZbQvdGLX9GF0LLR ltC70ZbQvScgOiAn0YXQstGW0LvRltC90YNf0YXQstGW0LvRltC90Ytf0YXQ stGW0LvRltC9JywKKyAgICAgICAgICAgICdoaCc6IHdpdGhvdXRTdWZmaXgg PyAn0LPQsNC00LfRltC90LBf0LPQsNC00LfRltC90Ytf0LPQsNC00LfRltC9 JyA6ICfQs9Cw0LTQt9GW0L3Rg1/Qs9Cw0LTQt9GW0L3Ri1/Qs9Cw0LTQt9GW 0L0nLAorICAgICAgICAgICAgJ2RkJzogJ9C00LfQtdC90Yxf0LTQvdGWX9C0 0LfRkdC9JywKKyAgICAgICAgICAgICdNTSc6ICfQvNC10YHRj9GGX9C80LXR gdGP0YbRi1/QvNC10YHRj9GG0LDRnicsCisgICAgICAgICAgICAneXknOiAn 0LPQvtC0X9Cz0LDQtNGLX9Cz0LDQtNC+0Z4nCisgICAgICAgIH07CisgICAg ICAgIGlmIChrZXkgPT09ICdtJykgeworICAgICAgICAgICAgcmV0dXJuIHdp dGhvdXRTdWZmaXggPyAn0YXQstGW0LvRltC90LAnIDogJ9GF0LLRltC70ZbQ vdGDJzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdo JykgeworICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0LPQ sNC00LfRltC90LAnIDogJ9Cz0LDQtNC30ZbQvdGDJzsKKyAgICAgICAgfQor ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn ICcgKyBiZV9fcGx1cmFsKGZvcm1hdFtrZXldLCArbnVtYmVyKTsKKyAgICAg ICAgfQorICAgIH0KKworICAgIHZhciBiZSA9IG1vbWVudF9fZGVmYXVsdC5k ZWZpbmVMb2NhbGUoJ2JlJywgeworICAgICAgICBtb250aHMgOiB7CisgICAg ICAgICAgICBmb3JtYXQ6ICfRgdGC0YPQtNC30LXQvdGPX9C70Y7RgtCw0LPQ sF/RgdCw0LrQsNCy0ZbQutCwX9C60YDQsNGB0LDQstGW0LrQsF/RgtGA0LDR ntC90Y9f0YfRjdGA0LLQtdC90Y9f0LvRltC/0LXQvdGPX9C20L3RltGe0L3R j1/QstC10YDQsNGB0L3Rj1/QutCw0YHRgtGA0YvRh9C90ZbQutCwX9C70ZbR gdGC0LDQv9Cw0LTQsF/RgdC90LXQttC90Y8nLnNwbGl0KCdfJyksCisgICAg ICAgICAgICBzdGFuZGFsb25lOiAn0YHRgtGD0LTQt9C10L3RjF/Qu9GO0YLR i1/RgdCw0LrQsNCy0ZbQul/QutGA0LDRgdCw0LLRltC6X9GC0YDQsNCy0LXQ vdGMX9GH0Y3RgNCy0LXQvdGMX9C70ZbQv9C10L3RjF/QttC90ZbQstC10L3R jF/QstC10YDQsNGB0LXQvdGMX9C60LDRgdGC0YDRi9GH0L3RltC6X9C70ZbR gdGC0LDQv9Cw0LRf0YHQvdC10LbQsNC90YwnLnNwbGl0KCdfJykKKyAgICAg ICAgfSwKKyAgICAgICAgbW9udGhzU2hvcnQgOiAn0YHRgtGD0LRf0LvRjtGC X9GB0LDQul/QutGA0LDRgV/RgtGA0LDQsl/Rh9GN0YDQsl/Qu9GW0L9f0LbQ vdGW0LJf0LLQtdGAX9C60LDRgdGCX9C70ZbRgdGCX9GB0L3QtdC2Jy5zcGxp dCgnXycpLAorICAgICAgICB3ZWVrZGF5cyA6IHsKKyAgICAgICAgICAgIGZv cm1hdDogJ9C90Y/QtNC30LXQu9GOX9C/0LDQvdGP0LTQt9C10LvQsNC6X9Cw 0Z7RgtC+0YDQsNC6X9GB0LXRgNCw0LTRg1/Rh9Cw0YbQstC10YBf0L/Rj9GC 0L3RltGG0YNf0YHRg9Cx0L7RgtGDJy5zcGxpdCgnXycpLAorICAgICAgICAg ICAgc3RhbmRhbG9uZTogJ9C90Y/QtNC30LXQu9GPX9C/0LDQvdGP0LTQt9C1 0LvQsNC6X9Cw0Z7RgtC+0YDQsNC6X9GB0LXRgNCw0LTQsF/Rh9Cw0YbQstC1 0YBf0L/Rj9GC0L3RltGG0LBf0YHRg9Cx0L7RgtCwJy5zcGxpdCgnXycpLAor ICAgICAgICAgICAgaXNGb3JtYXQ6IC9cWyA/W9CS0LJdID8oPzrQvNGW0L3R g9C70YPRjnzQvdCw0YHRgtGD0L/QvdGD0Y4pPyA/XF0gP2RkZGQvCisgICAg ICAgIH0sCisgICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn0L3QtF/Qv9C9X9Cw 0YJf0YHRgF/Rh9GGX9C/0YJf0YHQsScuc3BsaXQoJ18nKSwKKyAgICAgICAg d2Vla2RheXNNaW4gOiAn0L3QtF/Qv9C9X9Cw0YJf0YHRgF/Rh9GGX9C/0YJf 0YHQsScuc3BsaXQoJ18nKSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7 CisgICAgICAgICAgICBMVCA6ICdISDptbScsCisgICAgICAgICAgICBMVFMg OiAnSEg6bW06c3MnLAorICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJywK KyAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZINCzLicsCisgICAgICAg ICAgICBMTEwgOiAnRCBNTU1NIFlZWVkg0LMuLCBISDptbScsCisgICAgICAg ICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZINCzLiwgSEg6bW0nCisg ICAgICAgIH0sCisgICAgICAgIGNhbGVuZGFyIDogeworICAgICAgICAgICAg c2FtZURheTogJ1vQodGR0L3QvdGPINGeXSBMVCcsCisgICAgICAgICAgICBu ZXh0RGF5OiAnW9CX0LDRntGC0YDQsCDRnl0gTFQnLAorICAgICAgICAgICAg bGFzdERheTogJ1vQo9GH0L7RgNCwINGeXSBMVCcsCisgICAgICAgICAgICBu ZXh0V2VlazogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVy biAnW9CjXSBkZGRkIFvRnl0gTFQnOworICAgICAgICAgICAgfSwKKyAgICAg ICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg ICAgc3dpdGNoICh0aGlzLmRheSgpKSB7CisgICAgICAgICAgICAgICAgICAg IGNhc2UgMDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAg ICAgICAgICAgICAgICBjYXNlIDU6CisgICAgICAgICAgICAgICAgICAgIGNh c2UgNjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CjINC8 0ZbQvdGD0LvRg9GOXSBkZGRkIFvRnl0gTFQnOworICAgICAgICAgICAgICAg ICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAg ICAgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuICdb0KMg0LzRltC90YPQu9GLXSBkZGRkIFvRnl0gTFQn OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAg ICAgICBzYW1lRWxzZTogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0 aXZlVGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICfQv9GA0LDQtyAl cycsCisgICAgICAgICAgICBwYXN0IDogJyVzINGC0LDQvNGDJywKKyAgICAg ICAgICAgIHMgOiAn0L3QtdC60LDQu9GM0LrRliDRgdC10LrRg9C90LQnLAor ICAgICAgICAgICAgbSA6IGJlX19yZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLAor ICAgICAgICAgICAgbW0gOiBiZV9fcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCwK KyAgICAgICAgICAgIGggOiBiZV9fcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCwK KyAgICAgICAgICAgIGhoIDogYmVfX3JlbGF0aXZlVGltZVdpdGhQbHVyYWws CisgICAgICAgICAgICBkIDogJ9C00LfQtdC90YwnLAorICAgICAgICAgICAg ZGQgOiBiZV9fcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCwKKyAgICAgICAgICAg IE0gOiAn0LzQtdGB0Y/RhicsCisgICAgICAgICAgICBNTSA6IGJlX19yZWxh dGl2ZVRpbWVXaXRoUGx1cmFsLAorICAgICAgICAgICAgeSA6ICfQs9C+0LQn LAorICAgICAgICAgICAgeXkgOiBiZV9fcmVsYXRpdmVUaW1lV2l0aFBsdXJh bAorICAgICAgICB9LAorICAgICAgICBtZXJpZGllbVBhcnNlOiAv0L3QvtGH 0Yt80YDQsNC90ZbRhtGLfNC00L3Rj3zQstC10YfQsNGA0LAvLAorICAgICAg ICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7CisgICAgICAgICAgICByZXR1 cm4gL14o0LTQvdGPfNCy0LXRh9Cw0YDQsCkkLy50ZXN0KGlucHV0KTsKKyAg ICAgICAgfSwKKyAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwg bWludXRlLCBpc0xvd2VyKSB7CisgICAgICAgICAgICBpZiAoaG91ciA8IDQp IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ9C90L7Rh9GLJzsKKyAgICAg ICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7CisgICAgICAgICAgICAg ICAgcmV0dXJuICfRgNCw0L3RltGG0YsnOworICAgICAgICAgICAgfSBlbHNl IGlmIChob3VyIDwgMTcpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ9C0 0L3Rjyc7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg IHJldHVybiAn0LLQtdGH0LDRgNCwJzsKKyAgICAgICAgICAgIH0KKyAgICAg ICAgfSwKKyAgICAgICAgb3JkaW5hbFBhcnNlOiAvXGR7MSwyfS0o0ZZ80Yt8 0LPQsCkvLAorICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBw ZXJpb2QpIHsKKyAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7CisgICAg ICAgICAgICAgICAgY2FzZSAnTSc6CisgICAgICAgICAgICAgICAgY2FzZSAn ZCc6CisgICAgICAgICAgICAgICAgY2FzZSAnREREJzoKKyAgICAgICAgICAg ICAgICBjYXNlICd3JzoKKyAgICAgICAgICAgICAgICBjYXNlICdXJzoKKyAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIChudW1iZXIgJSAxMCA9PT0gMiB8 fCBudW1iZXIgJSAxMCA9PT0gMykgJiYgKG51bWJlciAlIDEwMCAhPT0gMTIg JiYgbnVtYmVyICUgMTAwICE9PSAxMykgPyBudW1iZXIgKyAnLdGWJyA6IG51 bWJlciArICct0YsnOworICAgICAgICAgICAgICAgIGNhc2UgJ0QnOgorICAg ICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Qs9CwJzsKKyAg ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gbnVtYmVyOworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAg ICAgICB3ZWVrIDogeworICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5 IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCisgICAgICAgICAgICBk b3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxc3QgaXMg dGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuCisgICAgICAgIH0KKyAgICB9 KTsKKworCisgICAgdmFyIGJnID0gbW9tZW50X19kZWZhdWx0LmRlZmluZUxv Y2FsZSgnYmcnLCB7CisgICAgICAgIG1vbnRocyA6ICfRj9C90YPQsNGA0Lhf 0YTQtdCy0YDRg9Cw0YDQuF/QvNCw0YDRgl/QsNC/0YDQuNC7X9C80LDQuV/R jtC90Lhf0Y7Qu9C4X9Cw0LLQs9GD0YHRgl/RgdC10L/RgtC10LzQstGA0Lhf 0L7QutGC0L7QvNCy0YDQuF/QvdC+0LXQvNCy0YDQuF/QtNC10LrQtdC80LLR gNC4Jy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNTaG9ydCA6ICfRj9C9 0YBf0YTQtdCyX9C80LDRgF/QsNC/0YBf0LzQsNC5X9GO0L3QuF/RjtC70Lhf 0LDQstCzX9GB0LXQv1/QvtC60YJf0L3QvtC1X9C00LXQuicuc3BsaXQoJ18n KSwKKyAgICAgICAgd2Vla2RheXMgOiAn0L3QtdC00LXQu9GPX9C/0L7QvdC1 0LTQtdC70L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDRj9C00LBf0YfQtdGC 0LLRitGA0YLRitC6X9C/0LXRgtGK0Lpf0YHRitCx0L7RgtCwJy5zcGxpdCgn XycpLAorICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9C90LXQtF/Qv9C+0L1f 0LLRgtC+X9GB0YDRj1/Rh9C10YJf0L/QtdGCX9GB0YrQsScuc3BsaXQoJ18n KSwKKyAgICAgICAgd2Vla2RheXNNaW4gOiAn0L3QtF/Qv9C9X9Cy0YJf0YHR gF/Rh9GCX9C/0YJf0YHQsScuc3BsaXQoJ18nKSwKKyAgICAgICAgbG9uZ0Rh dGVGb3JtYXQgOiB7CisgICAgICAgICAgICBMVCA6ICdIOm1tJywKKyAgICAg ICAgICAgIExUUyA6ICdIOm1tOnNzJywKKyAgICAgICAgICAgIEwgOiAnRC5N TS5ZWVlZJywKKyAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJywKKyAg ICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBIOm1tJywKKyAgICAgICAg ICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSDptbScKKyAgICAgICAg fSwKKyAgICAgICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBzYW1lRGF5 IDogJ1vQlNC90LXRgSDQsl0gTFQnLAorICAgICAgICAgICAgbmV4dERheSA6 ICdb0KPRgtGA0LUg0LJdIExUJywKKyAgICAgICAgICAgIG5leHRXZWVrIDog J2RkZGQgW9CyXSBMVCcsCisgICAgICAgICAgICBsYXN0RGF5IDogJ1vQktGH 0LXRgNCwINCyXSBMVCcsCisgICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0 aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkp IHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAg ICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNjoK KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINC40LfQvNC4 0L3QsNC70LDRgtCwXSBkZGRkIFvQsl0gTFQnOworICAgICAgICAgICAgICAg ICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAg ICAgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAg ICBjYXNlIDU6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQ kiDQuNC30LzQuNC90LDQu9C40Y9dIGRkZGQgW9CyXSBMVCc7CisgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNhbWVF bHNlIDogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZSA6 IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICfRgdC70LXQtCAlcycsCisgICAg ICAgICAgICBwYXN0IDogJ9C/0YDQtdC00LggJXMnLAorICAgICAgICAgICAg cyA6ICfQvdGP0LrQvtC70LrQviDRgdC10LrRg9C90LTQuCcsCisgICAgICAg ICAgICBtIDogJ9C80LjQvdGD0YLQsCcsCisgICAgICAgICAgICBtbSA6ICcl ZCDQvNC40L3Rg9GC0LgnLAorICAgICAgICAgICAgaCA6ICfRh9Cw0YEnLAor ICAgICAgICAgICAgaGggOiAnJWQg0YfQsNGB0LAnLAorICAgICAgICAgICAg ZCA6ICfQtNC10L0nLAorICAgICAgICAgICAgZGQgOiAnJWQg0LTQvdC4JywK KyAgICAgICAgICAgIE0gOiAn0LzQtdGB0LXRhicsCisgICAgICAgICAgICBN TSA6ICclZCDQvNC10YHQtdGG0LAnLAorICAgICAgICAgICAgeSA6ICfQs9C+ 0LTQuNC90LAnLAorICAgICAgICAgICAgeXkgOiAnJWQg0LPQvtC00LjQvdC4 JworICAgICAgICB9LAorICAgICAgICBvcmRpbmFsUGFyc2U6IC9cZHsxLDJ9 LSjQtdCyfNC10L180YLQuHzQstC4fNGA0Lh80LzQuCkvLAorICAgICAgICBv cmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikgeworICAgICAgICAgICAgdmFy IGxhc3REaWdpdCA9IG51bWJlciAlIDEwLAorICAgICAgICAgICAgICAgIGxh c3QyRGlnaXRzID0gbnVtYmVyICUgMTAwOworICAgICAgICAgICAgaWYgKG51 bWJlciA9PT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIg KyAnLdC10LInOworICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0MkRpZ2l0 cyA9PT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn LdC10L0nOworICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0MkRpZ2l0cyA+ IDEwICYmIGxhc3QyRGlnaXRzIDwgMjApIHsKKyAgICAgICAgICAgICAgICBy ZXR1cm4gbnVtYmVyICsgJy3RgtC4JzsKKyAgICAgICAgICAgIH0gZWxzZSBp ZiAobGFzdERpZ2l0ID09PSAxKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu IG51bWJlciArICct0LLQuCc7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGxh c3REaWdpdCA9PT0gMikgeworICAgICAgICAgICAgICAgIHJldHVybiBudW1i ZXIgKyAnLdGA0LgnOworICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGln aXQgPT09IDcgfHwgbGFzdERpZ2l0ID09PSA4KSB7CisgICAgICAgICAgICAg ICAgcmV0dXJuIG51bWJlciArICct0LzQuCc7CisgICAgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGC0Lgn OworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB3ZWVrIDog eworICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJz dCBkYXkgb2YgdGhlIHdlZWsuCisgICAgICAgICAgICBkb3kgOiA3ICAvLyBU aGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxc3QgaXMgdGhlIGZpcnN0IHdl ZWsgb2YgdGhlIHllYXIuCisgICAgICAgIH0KKyAgICB9KTsKKworCisgICAg dmFyIGJuX19zeW1ib2xNYXAgPSB7CisgICAgICAgICcxJzogJ+CnpycsCisg ICAgICAgICcyJzogJ+CnqCcsCisgICAgICAgICczJzogJ+CnqScsCisgICAg ICAgICc0JzogJ+CnqicsCisgICAgICAgICc1JzogJ+CnqycsCisgICAgICAg ICc2JzogJ+CnrCcsCisgICAgICAgICc3JzogJ+CnrScsCisgICAgICAgICc4 JzogJ+CnricsCisgICAgICAgICc5JzogJ+CnrycsCisgICAgICAgICcwJzog J+CnpicKKyAgICB9LAorICAgIGJuX19udW1iZXJNYXAgPSB7CisgICAgICAg ICfgp6cnOiAnMScsCisgICAgICAgICfgp6gnOiAnMicsCisgICAgICAgICfg p6knOiAnMycsCisgICAgICAgICfgp6onOiAnNCcsCisgICAgICAgICfgp6sn OiAnNScsCisgICAgICAgICfgp6wnOiAnNicsCisgICAgICAgICfgp60nOiAn NycsCisgICAgICAgICfgp64nOiAnOCcsCisgICAgICAgICfgp68nOiAnOScs CisgICAgICAgICfgp6YnOiAnMCcKKyAgICB9OworCisgICAgdmFyIGJuID0g bW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgnYm4nLCB7CisgICAgICAg IG1vbnRocyA6ICfgppzgpr7gpqjgp4Hgp5/gpr7gprDgp4Bf4Kar4KeH4Kas 4KeN4Kaw4KeB4Kef4Ka+4Kaw4Ka/X+CmruCmvuCmsOCnjeCmml/gpo/gpqrg p43gprDgpr/gprJf4Kau4KeHX+CmnOCngeCmqF/gppzgp4HgprLgpr7gpodf 4KaG4KaX4Ka44KeN4KafX+CmuOCnh+CmquCnjeCmn+Cnh+CmruCnjeCmrOCm sF/gpoXgppXgp43gpp/gp4vgpqzgprBf4Kao4Kat4KeH4Kau4KeN4Kas4Kaw X+CmoeCmv+CmuOCnh+CmruCnjeCmrOCmsCcuc3BsaXQoJ18nKSwKKyAgICAg ICAgbW9udGhzU2hvcnQgOiAn4Kac4Ka+4Kao4KeBX+Cmq+Cnh+CmrF/gpq7g pr7gprDgp43gpppf4KaP4Kaq4KeN4KawX+CmruCnh1/gppzgp4Hgpqhf4Kac 4KeB4KayX+CmhuCml1/gprjgp4fgpqrgp43gpp9f4KaF4KaV4KeN4Kaf4KeL X+CmqOCmreCnh1/gpqHgpr/gprjgp4cnLnNwbGl0KCdfJyksCisgICAgICAg IHdlZWtkYXlzIDogJ+CmsOCmrOCmv+CmrOCmvuCmsF/gprjgp4vgpq7gpqzg pr7gprBf4Kau4KaZ4KeN4KaX4Kay4Kas4Ka+4KawX+CmrOCngeCmp+CmrOCm vuCmsF/gpqzgp4Pgprngprjgp43gpqrgpqTgpr/gpqzgpr7gprBf4Ka24KeB 4KaV4KeN4Kaw4Kas4Ka+4KawX+CmtuCmqOCmv+CmrOCmvuCmsCcuc3BsaXQo J18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgprDgpqzgpr9f4Ka4 4KeL4KauX+CmruCmmeCnjeCml+Cmsl/gpqzgp4Hgpqdf4Kas4KeD4Ka54Ka4 4KeN4Kaq4Kak4Ka/X+CmtuCngeCmleCnjeCmsF/gprbgpqjgpr8nLnNwbGl0 KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDogJ+CmsOCmrOCmv1/gprjg p4vgpq5f4Kau4KaZ4KeN4KaXX+CmrOCngeCmp1/gpqzgp4PgprngpoNf4Ka2 4KeB4KaV4KeN4KawX+CmtuCmqOCmvycuc3BsaXQoJ18nKSwKKyAgICAgICAg bG9uZ0RhdGVGb3JtYXQgOiB7CisgICAgICAgICAgICBMVCA6ICdBIGg6bW0g 4Ka44Kau4KefJywKKyAgICAgICAgICAgIExUUyA6ICdBIGg6bW06c3Mg4Ka4 4Kau4KefJywKKyAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsCisgICAg ICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsCisgICAgICAgICAgICBMTEwg OiAnRCBNTU1NIFlZWVksIEEgaDptbSDgprjgpq7gp58nLAorICAgICAgICAg ICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIOCmuOCmruCn nycKKyAgICAgICAgfSwKKyAgICAgICAgY2FsZW5kYXIgOiB7CisgICAgICAg ICAgICBzYW1lRGF5IDogJ1vgpobgppxdIExUJywKKyAgICAgICAgICAgIG5l eHREYXkgOiAnW+CmhuCml+CmvuCmruCngOCmleCmvuCmsl0gTFQnLAorICAg ICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCwgTFQnLAorICAgICAgICAgICAg bGFzdERheSA6ICdb4KaX4Kak4KaV4Ka+4KayXSBMVCcsCisgICAgICAgICAg ICBsYXN0V2VlayA6ICdb4KaX4KakXSBkZGRkLCBMVCcsCisgICAgICAgICAg ICBzYW1lRWxzZSA6ICdMJworICAgICAgICB9LAorICAgICAgICByZWxhdGl2 ZVRpbWUgOiB7CisgICAgICAgICAgICBmdXR1cmUgOiAnJXMg4Kaq4Kaw4KeH JywKKyAgICAgICAgICAgIHBhc3QgOiAnJXMg4KaG4KaX4KeHJywKKyAgICAg ICAgICAgIHMgOiAn4KaV4Kef4KeH4KaVIOCmuOCnh+CmleCnh+CmqOCnjeCm oScsCisgICAgICAgICAgICBtIDogJ+Cmj+CmlSDgpq7gpr/gpqjgpr/gpp8n LAorICAgICAgICAgICAgbW0gOiAnJWQg4Kau4Ka/4Kao4Ka/4KafJywKKyAg ICAgICAgICAgIGggOiAn4KaP4KaVIOCmmOCmqOCnjeCmn+CmvicsCisgICAg ICAgICAgICBoaCA6ICclZCDgppjgpqjgp43gpp/gpr4nLAorICAgICAgICAg ICAgZCA6ICfgpo/gppUg4Kam4Ka/4KaoJywKKyAgICAgICAgICAgIGRkIDog JyVkIOCmpuCmv+CmqCcsCisgICAgICAgICAgICBNIDogJ+Cmj+CmlSDgpq7g pr7gprgnLAorICAgICAgICAgICAgTU0gOiAnJWQg4Kau4Ka+4Ka4JywKKyAg ICAgICAgICAgIHkgOiAn4KaP4KaVIOCmrOCmm+CmsCcsCisgICAgICAgICAg ICB5eSA6ICclZCDgpqzgppvgprAnCisgICAgICAgIH0sCisgICAgICAgIHBy ZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7CisgICAgICAgICAgICByZXR1 cm4gc3RyaW5nLnJlcGxhY2UoL1vgp6fgp6jgp6ngp6rgp6vgp6zgp63gp67g p6/gp6ZdL2csIGZ1bmN0aW9uIChtYXRjaCkgeworICAgICAgICAgICAgICAg IHJldHVybiBibl9fbnVtYmVyTWFwW21hdGNoXTsKKyAgICAgICAgICAgIH0p OworICAgICAgICB9LAorICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAo c3RyaW5nKSB7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2Uo L1xkL2csIGZ1bmN0aW9uIChtYXRjaCkgeworICAgICAgICAgICAgICAgIHJl dHVybiBibl9fc3ltYm9sTWFwW21hdGNoXTsKKyAgICAgICAgICAgIH0pOwor ICAgICAgICB9LAorICAgICAgICBtZXJpZGllbVBhcnNlOiAv4Kaw4Ka+4Kak fOCmuOCmleCmvuCmsnzgpqbgp4Hgpqrgp4HgprB84Kas4Ka/4KaV4Ka+4Kay fOCmsOCmvuCmpC8sCisgICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9u IChob3VyLCBtZXJpZGllbSkgeworICAgICAgICAgICAgaWYgKGhvdXIgPT09 IDEyKSB7CisgICAgICAgICAgICAgICAgaG91ciA9IDA7CisgICAgICAgICAg ICB9CisgICAgICAgICAgICBpZiAoKG1lcmlkaWVtID09PSAn4Kaw4Ka+4Kak JyAmJiBob3VyID49IDQpIHx8CisgICAgICAgICAgICAgICAgICAgIChtZXJp ZGllbSA9PT0gJ+CmpuCngeCmquCngeCmsCcgJiYgaG91ciA8IDUpIHx8Cisg ICAgICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn4Kas4Ka/4KaV4Ka+ 4KayJykgeworICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7Cisg ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBo b3VyOworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBtZXJp ZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHsKKyAg ICAgICAgICAgIGlmIChob3VyIDwgNCkgeworICAgICAgICAgICAgICAgIHJl dHVybiAn4Kaw4Ka+4KakJzsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91 ciA8IDEwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICfgprjgppXgpr7g prInOworICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHsKKyAg ICAgICAgICAgICAgICByZXR1cm4gJ+CmpuCngeCmquCngeCmsCc7CisgICAg ICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkgeworICAgICAgICAgICAg ICAgIHJldHVybiAn4Kas4Ka/4KaV4Ka+4KayJzsKKyAgICAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICfgprDgpr7gpqQnOwor ICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB3ZWVrIDogewor ICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBk YXkgb2YgdGhlIHdlZWsuCisgICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUg d2VlayB0aGF0IGNvbnRhaW5zIEphbiAxc3QgaXMgdGhlIGZpcnN0IHdlZWsg b2YgdGhlIHllYXIuCisgICAgICAgIH0KKyAgICB9KTsKKworCisgICAgdmFy IGJvX19zeW1ib2xNYXAgPSB7CisgICAgICAgICcxJzogJ+C8oScsCisgICAg ICAgICcyJzogJ+C8oicsCisgICAgICAgICczJzogJ+C8oycsCisgICAgICAg ICc0JzogJ+C8pCcsCisgICAgICAgICc1JzogJ+C8pScsCisgICAgICAgICc2 JzogJ+C8picsCisgICAgICAgICc3JzogJ+C8pycsCisgICAgICAgICc4Jzog J+C8qCcsCisgICAgICAgICc5JzogJ+C8qScsCisgICAgICAgICcwJzogJ+C8 oCcKKyAgICB9LAorICAgIGJvX19udW1iZXJNYXAgPSB7CisgICAgICAgICfg vKEnOiAnMScsCisgICAgICAgICfgvKInOiAnMicsCisgICAgICAgICfgvKMn OiAnMycsCisgICAgICAgICfgvKQnOiAnNCcsCisgICAgICAgICfgvKUnOiAn NScsCisgICAgICAgICfgvKYnOiAnNicsCisgICAgICAgICfgvKcnOiAnNycs CisgICAgICAgICfgvKgnOiAnOCcsCisgICAgICAgICfgvKknOiAnOScsCisg ICAgICAgICfgvKAnOiAnMCcKKyAgICB9OworCisgICAgdmFyIGJvID0gbW9t ZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgnYm8nLCB7CisgICAgICAgIG1v bnRocyA6ICfgvZ/gvrPgvIvgvZbgvIvgvZHgvYTgvIvgvZTgvbxf4L2f4L6z 4LyL4L2W4LyL4L2C4L2J4L2y4L2m4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9 guC9puC9tOC9mOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvZ7gvbLgvIvg vZRf4L2f4L6z4LyL4L2W4LyL4L2j4L6U4LyL4L2UX+C9n+C+s+C8i+C9luC8 i+C9keC+suC9tOC9guC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvZHgvbTg vZPgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2i4L6S4L6x4L2R4LyL4L2U X+C9n+C+s+C8i+C9luC8i+C9keC9guC9tOC8i+C9lF/gvZ/gvrPgvIvgvZbg vIvgvZbgvYXgvbTgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2F4L204LyL 4L2C4L2F4L2y4L2C4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9heC9tOC8 i+C9guC9ieC9suC9puC8i+C9lCcuc3BsaXQoJ18nKSwKKyAgICAgICAgbW9u dGhzU2hvcnQgOiAn4L2f4L6z4LyL4L2W4LyL4L2R4L2E4LyL4L2U4L28X+C9 n+C+s+C8i+C9luC8i+C9guC9ieC9suC9puC8i+C9lF/gvZ/gvrPgvIvgvZbg vIvgvYLgvabgvbTgvZjgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2e4L2y 4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9o+C+lOC8i+C9lF/gvZ/gvrPgvIvg vZbgvIvgvZHgvrLgvbTgvYLgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2R 4L204L2T4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9ouC+kuC+seC9keC8 i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZHgvYLgvbTgvIvgvZRf4L2f4L6z4LyL 4L2W4LyL4L2W4L2F4L204LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9heC9 tOC8i+C9guC9heC9suC9guC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvYXg vbTgvIvgvYLgvYngvbLgvabgvIvgvZQnLnNwbGl0KCdfJyksCisgICAgICAg IHdlZWtkYXlzIDogJ+C9guC9n+C9oOC8i+C9ieC9suC8i+C9mOC8i1/gvYLg vZ/gvaDgvIvgvZ/gvrPgvIvgvZbgvItf4L2C4L2f4L2g4LyL4L2Y4L2y4L2C 4LyL4L2R4L2Y4L2i4LyLX+C9guC9n+C9oOC8i+C9o+C+t+C9guC8i+C9lOC8 i1/gvYLgvZ/gvaDgvIvgvZXgvbTgvaLgvIvgvZbgvbRf4L2C4L2f4L2g4LyL 4L2U4LyL4L2m4L2E4L2m4LyLX+C9guC9n+C9oOC8i+C9puC+pOC9uuC9k+C8 i+C9lOC8iycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6 ICfgvYngvbLgvIvgvZjgvItf4L2f4L6z4LyL4L2W4LyLX+C9mOC9suC9guC8 i+C9keC9mOC9ouC8i1/gvaPgvrfgvYLgvIvgvZTgvItf4L2V4L204L2i4LyL 4L2W4L20X+C9lOC8i+C9puC9hOC9puC8i1/gvabgvqTgvbrgvZPgvIvgvZTg vIsnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDogJ+C9ieC9 suC8i+C9mOC8i1/gvZ/gvrPgvIvgvZbgvItf4L2Y4L2y4L2C4LyL4L2R4L2Y 4L2i4LyLX+C9o+C+t+C9guC8i+C9lOC8i1/gvZXgvbTgvaLgvIvgvZbgvbRf 4L2U4LyL4L2m4L2E4L2m4LyLX+C9puC+pOC9uuC9k+C8i+C9lOC8iycuc3Bs aXQoJ18nKSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7CisgICAgICAg ICAgICBMVCA6ICdBIGg6bW0nLAorICAgICAgICAgICAgTFRTIDogJ0EgaDpt bTpzcycsCisgICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLAorICAgICAg ICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLAorICAgICAgICAgICAgTExMIDog J0QgTU1NTSBZWVlZLCBBIGg6bW0nLAorICAgICAgICAgICAgTExMTCA6ICdk ZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tJworICAgICAgICB9LAorICAgICAg ICBjYWxlbmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVEYXkgOiAnW+C9keC9 suC8i+C9ouC9suC9hF0gTFQnLAorICAgICAgICAgICAgbmV4dERheSA6ICdb 4L2m4L2E4LyL4L2J4L2y4L2TXSBMVCcsCisgICAgICAgICAgICBuZXh0V2Vl ayA6ICdb4L2W4L2R4L204L2T4LyL4L2V4L6y4L2C4LyL4L2i4L6X4L264L2m 4LyL4L2YXSwgTFQnLAorICAgICAgICAgICAgbGFzdERheSA6ICdb4L2B4LyL 4L2m4L2EXSBMVCcsCisgICAgICAgICAgICBsYXN0V2VlayA6ICdb4L2W4L2R 4L204L2T4LyL4L2V4L6y4L2C4LyL4L2Y4L2Q4L2g4LyL4L2YXSBkZGRkLCBM VCcsCisgICAgICAgICAgICBzYW1lRWxzZSA6ICdMJworICAgICAgICB9LAor ICAgICAgICByZWxhdGl2ZVRpbWUgOiB7CisgICAgICAgICAgICBmdXR1cmUg OiAnJXMg4L2j4LyLJywKKyAgICAgICAgICAgIHBhc3QgOiAnJXMg4L2m4L6U 4L2T4LyL4L2jJywKKyAgICAgICAgICAgIHMgOiAn4L2j4L2Y4LyL4L2m4L2E JywKKyAgICAgICAgICAgIG0gOiAn4L2m4L6Q4L2i4LyL4L2Y4LyL4L2C4L2F 4L2y4L2CJywKKyAgICAgICAgICAgIG1tIDogJyVkIOC9puC+kOC9ouC8i+C9 mCcsCisgICAgICAgICAgICBoIDogJ+C9huC9tOC8i+C9muC9vOC9keC8i+C9 guC9heC9suC9gicsCisgICAgICAgICAgICBoaCA6ICclZCDgvYbgvbTgvIvg vZrgvbzgvZEnLAorICAgICAgICAgICAgZCA6ICfgvYngvbLgvZPgvIvgvYLg vYXgvbLgvYInLAorICAgICAgICAgICAgZGQgOiAnJWQg4L2J4L2y4L2T4LyL JywKKyAgICAgICAgICAgIE0gOiAn4L2f4L6z4LyL4L2W4LyL4L2C4L2F4L2y 4L2CJywKKyAgICAgICAgICAgIE1NIDogJyVkIOC9n+C+s+C8i+C9licsCisg ICAgICAgICAgICB5IDogJ+C9o+C9vOC8i+C9guC9heC9suC9gicsCisgICAg ICAgICAgICB5eSA6ICclZCDgvaPgvbwnCisgICAgICAgIH0sCisgICAgICAg IHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7CisgICAgICAgICAgICBy ZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgvKHgvKLgvKPgvKTgvKXgvKbgvKfg vKjgvKngvKBdL2csIGZ1bmN0aW9uIChtYXRjaCkgeworICAgICAgICAgICAg ICAgIHJldHVybiBib19fbnVtYmVyTWFwW21hdGNoXTsKKyAgICAgICAgICAg IH0pOworICAgICAgICB9LAorICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlv biAoc3RyaW5nKSB7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxh Y2UoL1xkL2csIGZ1bmN0aW9uIChtYXRjaCkgeworICAgICAgICAgICAgICAg IHJldHVybiBib19fc3ltYm9sTWFwW21hdGNoXTsKKyAgICAgICAgICAgIH0p OworICAgICAgICB9LAorICAgICAgICBtZXJpZGllbVBhcnNlOiAv4L2Y4L2a 4L2T4LyL4L2Y4L28fOC9nuC9vOC9guC9puC8i+C9gOC9pnzgvYngvbLgvZPg vIvgvYLgvbTgvYR84L2R4L2C4L284L2E4LyL4L2R4L2CfOC9mOC9muC9k+C8 i+C9mOC9vC8sCisgICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uICho b3VyLCBtZXJpZGllbSkgeworICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEy KSB7CisgICAgICAgICAgICAgICAgaG91ciA9IDA7CisgICAgICAgICAgICB9 CisgICAgICAgICAgICBpZiAoKG1lcmlkaWVtID09PSAn4L2Y4L2a4L2T4LyL 4L2Y4L28JyAmJiBob3VyID49IDQpIHx8CisgICAgICAgICAgICAgICAgICAg IChtZXJpZGllbSA9PT0gJ+C9ieC9suC9k+C8i+C9guC9tOC9hCcgJiYgaG91 ciA8IDUpIHx8CisgICAgICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn 4L2R4L2C4L284L2E4LyL4L2R4L2CJykgeworICAgICAgICAgICAgICAgIHJl dHVybiBob3VyICsgMTI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgICAgIHJldHVybiBob3VyOworICAgICAgICAgICAgfQorICAgICAg ICB9LAorICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51 dGUsIGlzTG93ZXIpIHsKKyAgICAgICAgICAgIGlmIChob3VyIDwgNCkgewor ICAgICAgICAgICAgICAgIHJldHVybiAn4L2Y4L2a4L2T4LyL4L2Y4L28JzsK KyAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7CisgICAgICAg ICAgICAgICAgcmV0dXJuICfgvZ7gvbzgvYLgvabgvIvgvYDgvaYnOworICAg ICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHsKKyAgICAgICAgICAg ICAgICByZXR1cm4gJ+C9ieC9suC9k+C8i+C9guC9tOC9hCc7CisgICAgICAg ICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkgeworICAgICAgICAgICAgICAg IHJldHVybiAn4L2R4L2C4L284L2E4LyL4L2R4L2CJzsKKyAgICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICfgvZjgvZrgvZPg vIvgvZjgvbwnOworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg ICB3ZWVrIDogeworICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlz IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCisgICAgICAgICAgICBkb3kg OiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxc3QgaXMgdGhl IGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuCisgICAgICAgIH0KKyAgICB9KTsK KworCisgICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aE11dGF0aW9uKG51 bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7CisgICAgICAgIHZhciBmb3Jt YXQgPSB7CisgICAgICAgICAgICAnbW0nOiAnbXVudXRlbm4nLAorICAgICAg ICAgICAgJ01NJzogJ21peicsCisgICAgICAgICAgICAnZGQnOiAnZGV2ZXpo JworICAgICAgICB9OworICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsg bXV0YXRpb24oZm9ybWF0W2tleV0sIG51bWJlcik7CisgICAgfQorICAgIGZ1 bmN0aW9uIHNwZWNpYWxNdXRhdGlvbkZvclllYXJzKG51bWJlcikgeworICAg ICAgICBzd2l0Y2ggKGxhc3ROdW1iZXIobnVtYmVyKSkgeworICAgICAgICAg ICAgY2FzZSAxOgorICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAg Y2FzZSA0OgorICAgICAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgY2Fz ZSA5OgorICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnIGJsb2F6 JzsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0 dXJuIG51bWJlciArICcgdmxvYXonOworICAgICAgICB9CisgICAgfQorICAg IGZ1bmN0aW9uIGxhc3ROdW1iZXIobnVtYmVyKSB7CisgICAgICAgIGlmIChu dW1iZXIgPiA5KSB7CisgICAgICAgICAgICByZXR1cm4gbGFzdE51bWJlcihu dW1iZXIgJSAxMCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bWJl cjsKKyAgICB9CisgICAgZnVuY3Rpb24gbXV0YXRpb24odGV4dCwgbnVtYmVy KSB7CisgICAgICAgIGlmIChudW1iZXIgPT09IDIpIHsKKyAgICAgICAgICAg IHJldHVybiBzb2Z0TXV0YXRpb24odGV4dCk7CisgICAgICAgIH0KKyAgICAg ICAgcmV0dXJuIHRleHQ7CisgICAgfQorICAgIGZ1bmN0aW9uIHNvZnRNdXRh dGlvbih0ZXh0KSB7CisgICAgICAgIHZhciBtdXRhdGlvblRhYmxlID0gewor ICAgICAgICAgICAgJ20nOiAndicsCisgICAgICAgICAgICAnYic6ICd2JywK KyAgICAgICAgICAgICdkJzogJ3onCisgICAgICAgIH07CisgICAgICAgIGlm IChtdXRhdGlvblRhYmxlW3RleHQuY2hhckF0KDApXSA9PT0gdW5kZWZpbmVk KSB7CisgICAgICAgICAgICByZXR1cm4gdGV4dDsKKyAgICAgICAgfQorICAg ICAgICByZXR1cm4gbXV0YXRpb25UYWJsZVt0ZXh0LmNoYXJBdCgwKV0gKyB0 ZXh0LnN1YnN0cmluZygxKTsKKyAgICB9CisKKyAgICB2YXIgYnIgPSBtb21l bnRfX2RlZmF1bHQuZGVmaW5lTG9jYWxlKCdicicsIHsKKyAgICAgICAgbW9u dGhzIDogJ0dlbnZlcl9DXCdod2V2cmVyX01ldXJ6aF9FYnJlbF9NYWVfTWV6 aGV2ZW5fR291ZXJlX0Vvc3RfR3dlbmdvbG9fSGVyZV9EdV9LZXJ6dScuc3Bs aXQoJ18nKSwKKyAgICAgICAgbW9udGhzU2hvcnQgOiAnR2VuX0NcJ2h3ZV9N ZXVfRWJyX01hZV9FdmVfR291X0Vvc19Hd2VfSGVyX0R1X0tlcicuc3BsaXQo J18nKSwKKyAgICAgICAgd2Vla2RheXMgOiAnU3VsX0x1bl9NZXVyemhfTWVy Y1wnaGVyX1lhb3VfR3dlbmVyX1NhZG9ybicuc3BsaXQoJ18nKSwKKyAgICAg ICAgd2Vla2RheXNTaG9ydCA6ICdTdWxfTHVuX01ldV9NZXJfWWFvX0d3ZV9T YWQnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDogJ1N1X0x1 X01lX01lcl9ZYV9Hd19TYScuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2Rh eXNQYXJzZUV4YWN0IDogdHJ1ZSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQg OiB7CisgICAgICAgICAgICBMVCA6ICdoW2VdbW0gQScsCisgICAgICAgICAg ICBMVFMgOiAnaFtlXW1tOnNzIEEnLAorICAgICAgICAgICAgTCA6ICdERC9N TS9ZWVlZJywKKyAgICAgICAgICAgIExMIDogJ0QgW2Egdml6XSBNTU1NIFlZ WVknLAorICAgICAgICAgICAgTExMIDogJ0QgW2Egdml6XSBNTU1NIFlZWVkg aFtlXW1tIEEnLAorICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIFthIHZp el0gTU1NTSBZWVlZIGhbZV1tbSBBJworICAgICAgICB9LAorICAgICAgICBj YWxlbmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVEYXkgOiAnW0hpeml2IGRh XSBMVCcsCisgICAgICAgICAgICBuZXh0RGF5IDogJ1tXYXJjXCdob2F6aCBk YV0gTFQnLAorICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbZGFdIExU JywKKyAgICAgICAgICAgIGxhc3REYXkgOiAnW0RlY1wnaCBkYV0gTFQnLAor ICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBbcGFzZXQgZGFdIExUJywK KyAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnCisgICAgICAgIH0sCisgICAg ICAgIHJlbGF0aXZlVGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICdh LWJlbm4gJXMnLAorICAgICAgICAgICAgcGFzdCA6ICclcyBcJ3pvJywKKyAg ICAgICAgICAgIHMgOiAndW4gbmViZXVkIHNlZ29uZGVubm/DuScsCisgICAg ICAgICAgICBtIDogJ3VyIHZ1bnV0ZW5uJywKKyAgICAgICAgICAgIG1tIDog cmVsYXRpdmVUaW1lV2l0aE11dGF0aW9uLAorICAgICAgICAgICAgaCA6ICd1 biBldXInLAorICAgICAgICAgICAgaGggOiAnJWQgZXVyJywKKyAgICAgICAg ICAgIGQgOiAndW4gZGV2ZXpoJywKKyAgICAgICAgICAgIGRkIDogcmVsYXRp dmVUaW1lV2l0aE11dGF0aW9uLAorICAgICAgICAgICAgTSA6ICd1ciBtaXon LAorICAgICAgICAgICAgTU0gOiByZWxhdGl2ZVRpbWVXaXRoTXV0YXRpb24s CisgICAgICAgICAgICB5IDogJ3VyIGJsb2F6JywKKyAgICAgICAgICAgIHl5 IDogc3BlY2lhbE11dGF0aW9uRm9yWWVhcnMKKyAgICAgICAgfSwKKyAgICAg ICAgb3JkaW5hbFBhcnNlOiAvXGR7MSwyfShhw7F8dmV0KS8sCisgICAgICAg IG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7CisgICAgICAgICAgICB2 YXIgb3V0cHV0ID0gKG51bWJlciA9PT0gMSkgPyAnYcOxJyA6ICd2ZXQnOwor ICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDsKKyAgICAgICAg fSwKKyAgICAgICAgd2VlayA6IHsKKyAgICAgICAgICAgIGRvdyA6IDEsIC8v IE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorICAgICAg ICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4g NHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLgorICAgICAgICB9 CisgICAgfSk7CisKKworICAgIGZ1bmN0aW9uIGJzX190cmFuc2xhdGUobnVt YmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHsKKyAgICAgICAgdmFyIHJlc3Vs dCA9IG51bWJlciArICcgJzsKKyAgICAgICAgc3dpdGNoIChrZXkpIHsKKyAg ICAgICAgICAgIGNhc2UgJ20nOgorICAgICAgICAgICAgICAgIHJldHVybiB3 aXRob3V0U3VmZml4ID8gJ2plZG5hIG1pbnV0YScgOiAnamVkbmUgbWludXRl JzsKKyAgICAgICAgICAgIGNhc2UgJ21tJzoKKyAgICAgICAgICAgICAgICBp ZiAobnVtYmVyID09PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3Vs dCArPSAnbWludXRhJzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51 bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7 CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRlJzsKKyAg ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBy ZXN1bHQgKz0gJ21pbnV0YSc7CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBjYXNlICdo JzoKKyAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdq ZWRhbiBzYXQnIDogJ2plZG5vZyBzYXRhJzsKKyAgICAgICAgICAgIGNhc2Ug J2hoJzoKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7Cisg ICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0JzsKKyAgICAgICAg ICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09 IDMgfHwgbnVtYmVyID09PSA0KSB7CisgICAgICAgICAgICAgICAgICAgIHJl c3VsdCArPSAnc2F0YSc7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzYXRpJzsKKyAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg ICAgICAgICAgIGNhc2UgJ2RkJzoKKyAgICAgICAgICAgICAgICBpZiAobnVt YmVyID09PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAn ZGFuJzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg ICAgICAgICByZXN1bHQgKz0gJ2RhbmEnOworICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAg Y2FzZSAnTU0nOgorICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEp IHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWMnOwor ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51 bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHsKKyAgICAgICAgICAgICAg ICAgICAgcmVzdWx0ICs9ICdtamVzZWNhJzsKKyAgICAgICAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21qZXNl Y2knOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1 cm4gcmVzdWx0OworICAgICAgICAgICAgY2FzZSAneXknOgorICAgICAgICAg ICAgICAgIGlmIChudW1iZXIgPT09IDEpIHsKKyAgICAgICAgICAgICAgICAg ICAgcmVzdWx0ICs9ICdnb2RpbmEnOworICAgICAgICAgICAgICAgIH0gZWxz ZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIg PT09IDQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2Rp bmUnOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg ICAgICAgIHJlc3VsdCArPSAnZ29kaW5hJzsKKyAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQor ICAgIH0KKworICAgIHZhciBicyA9IG1vbWVudF9fZGVmYXVsdC5kZWZpbmVM b2NhbGUoJ2JzJywgeworICAgICAgICBtb250aHMgOiAnamFudWFyX2ZlYnJ1 YXJfbWFydF9hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iYXJf b2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhcicuc3BsaXQoJ18nKSwKKyAgICAg ICAgbW9udGhzU2hvcnQgOiAnamFuLl9mZWIuX21hci5fYXByLl9tYWouX2p1 bi5fanVsLl9hdWcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4nLnNwbGl0KCdfJyks CisgICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsCisgICAgICAgIHdl ZWtkYXlzIDogJ25lZGplbGphX3BvbmVkamVsamFrX3V0b3Jha19zcmlqZWRh X8SNZXR2cnRha19wZXRha19zdWJvdGEnLnNwbGl0KCdfJyksCisgICAgICAg IHdlZWtkYXlzU2hvcnQgOiAnbmVkLl9wb24uX3V0by5fc3JpLl/EjWV0Ll9w ZXQuX3N1Yi4nLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDog J25lX3BvX3V0X3NyX8SNZV9wZV9zdScuc3BsaXQoJ18nKSwKKyAgICAgICAg d2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSwKKyAgICAgICAgbG9uZ0RhdGVG b3JtYXQgOiB7CisgICAgICAgICAgICBMVCA6ICdIOm1tJywKKyAgICAgICAg ICAgIExUUyA6ICdIOm1tOnNzJywKKyAgICAgICAgICAgIEwgOiAnREQuTU0u WVlZWScsCisgICAgICAgICAgICBMTCA6ICdELiBNTU1NIFlZWVknLAorICAg ICAgICAgICAgTExMIDogJ0QuIE1NTU0gWVlZWSBIOm1tJywKKyAgICAgICAg ICAgIExMTEwgOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nCisgICAgICAg IH0sCisgICAgICAgIGNhbGVuZGFyIDogeworICAgICAgICAgICAgc2FtZURh eSAgOiAnW2RhbmFzIHVdIExUJywKKyAgICAgICAgICAgIG5leHREYXkgIDog J1tzdXRyYSB1XSBMVCcsCisgICAgICAgICAgICBuZXh0V2VlayA6IGZ1bmN0 aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkp IHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuICdbdV0gW25lZGplbGp1XSBbdV0gTFQnOwor ICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gJ1t1XSBbc3JpamVkdV0gW3VdIExUJzsKKyAgICAg ICAgICAgICAgICAgICAgY2FzZSA2OgorICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuICdbdV0gW3N1Ym90dV0gW3VdIExUJzsKKyAgICAgICAgICAg ICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICBjYXNlIDI6 CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAg ICAgICAgY2FzZSA1OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu ICdbdV0gZGRkZCBbdV0gTFQnOworICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgIH0sCisgICAgICAgICAgICBsYXN0RGF5ICA6ICdbanXEjWVyIHVd IExUJywKKyAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkgewor ICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkgeworICAgICAg ICAgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgIGNh c2UgMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Byb8Wh bHVdIGRkZGQgW3VdIExUJzsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA2 OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsZV0g W3N1Ym90ZV0gW3VdIExUJzsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAx OgorICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAg ICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1Ogor ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsaV0gZGRk ZCBbdV0gTFQnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0s CisgICAgICAgICAgICBzYW1lRWxzZSA6ICdMJworICAgICAgICB9LAorICAg ICAgICByZWxhdGl2ZVRpbWUgOiB7CisgICAgICAgICAgICBmdXR1cmUgOiAn emEgJXMnLAorICAgICAgICAgICAgcGFzdCAgIDogJ3ByaWplICVzJywKKyAg ICAgICAgICAgIHMgICAgICA6ICdwYXIgc2VrdW5kaScsCisgICAgICAgICAg ICBtICAgICAgOiBic19fdHJhbnNsYXRlLAorICAgICAgICAgICAgbW0gICAg IDogYnNfX3RyYW5zbGF0ZSwKKyAgICAgICAgICAgIGggICAgICA6IGJzX190 cmFuc2xhdGUsCisgICAgICAgICAgICBoaCAgICAgOiBic19fdHJhbnNsYXRl LAorICAgICAgICAgICAgZCAgICAgIDogJ2RhbicsCisgICAgICAgICAgICBk ZCAgICAgOiBic19fdHJhbnNsYXRlLAorICAgICAgICAgICAgTSAgICAgIDog J21qZXNlYycsCisgICAgICAgICAgICBNTSAgICAgOiBic19fdHJhbnNsYXRl LAorICAgICAgICAgICAgeSAgICAgIDogJ2dvZGludScsCisgICAgICAgICAg ICB5eSAgICAgOiBic19fdHJhbnNsYXRlCisgICAgICAgIH0sCisgICAgICAg IG9yZGluYWxQYXJzZTogL1xkezEsMn1cLi8sCisgICAgICAgIG9yZGluYWwg OiAnJWQuJywKKyAgICAgICAgd2VlayA6IHsKKyAgICAgICAgICAgIGRvdyA6 IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgor ICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlu cyBKYW4gMXN0IGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLgorICAg ICAgICB9CisgICAgfSk7CisKKworICAgIHZhciBjYSA9IG1vbWVudF9fZGVm YXVsdC5kZWZpbmVMb2NhbGUoJ2NhJywgeworICAgICAgICBtb250aHMgOiAn Z2VuZXJfZmVicmVyX21hcsOnX2FicmlsX21haWdfanVueV9qdWxpb2xfYWdv c3Rfc2V0ZW1icmVfb2N0dWJyZV9ub3ZlbWJyZV9kZXNlbWJyZScuc3BsaXQo J18nKSwKKyAgICAgICAgbW9udGhzU2hvcnQgOiAnZ2VuLl9mZWJyLl9tYXIu X2Fici5fbWFpLl9qdW4uX2p1bC5fYWcuX3NldC5fb2N0Ll9ub3YuX2Rlcy4n LnNwbGl0KCdfJyksCisgICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVl LAorICAgICAgICB3ZWVrZGF5cyA6ICdkaXVtZW5nZV9kaWxsdW5zX2RpbWFy dHNfZGltZWNyZXNfZGlqb3VzX2RpdmVuZHJlc19kaXNzYWJ0ZScuc3BsaXQo J18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkZy5fZGwuX2R0Ll9k Yy5fZGouX2R2Ll9kcy4nLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlz TWluIDogJ0RnX0RsX0R0X0RjX0RqX0R2X0RzJy5zcGxpdCgnXycpLAorICAg ICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLAorICAgICAgICBsb25n RGF0ZUZvcm1hdCA6IHsKKyAgICAgICAgICAgIExUIDogJ0g6bW0nLAorICAg ICAgICAgICAgTFRTIDogJ0g6bW06c3MnLAorICAgICAgICAgICAgTCA6ICdE RC9NTS9ZWVlZJywKKyAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJywK KyAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBIOm1tJywKKyAgICAg ICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBIOm1tJworICAgICAg ICB9LAorICAgICAgICBjYWxlbmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVE YXkgOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICdb YXZ1aSBhICcgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAnbGVzJyA6ICds YScpICsgJ10gTFQnOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIG5l eHREYXkgOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu ICdbZGVtw6AgYSAnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ2xlcycg OiAnbGEnKSArICddIExUJzsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg ICBuZXh0V2VlayA6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBy ZXR1cm4gJ2RkZGQgW2EgJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICds ZXMnIDogJ2xhJykgKyAnXSBMVCc7CisgICAgICAgICAgICB9LAorICAgICAg ICAgICAgbGFzdERheSA6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg ICByZXR1cm4gJ1thaGlyIGEgJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ ICdsZXMnIDogJ2xhJykgKyAnXSBMVCc7CisgICAgICAgICAgICB9LAorICAg ICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg ICAgICAgcmV0dXJuICdbZWxdIGRkZGQgW3Bhc3NhdCBhICcgKyAoKHRoaXMu aG91cnMoKSAhPT0gMSkgPyAnbGVzJyA6ICdsYScpICsgJ10gTFQnOworICAg ICAgICAgICAgfSwKKyAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnCisgICAg ICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZSA6IHsKKyAgICAgICAgICAg IGZ1dHVyZSA6ICdlbiAlcycsCisgICAgICAgICAgICBwYXN0IDogJ2ZhICVz JywKKyAgICAgICAgICAgIHMgOiAndW5zIHNlZ29ucycsCisgICAgICAgICAg ICBtIDogJ3VuIG1pbnV0JywKKyAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0 cycsCisgICAgICAgICAgICBoIDogJ3VuYSBob3JhJywKKyAgICAgICAgICAg IGhoIDogJyVkIGhvcmVzJywKKyAgICAgICAgICAgIGQgOiAndW4gZGlhJywK KyAgICAgICAgICAgIGRkIDogJyVkIGRpZXMnLAorICAgICAgICAgICAgTSA6 ICd1biBtZXMnLAorICAgICAgICAgICAgTU0gOiAnJWQgbWVzb3MnLAorICAg ICAgICAgICAgeSA6ICd1biBhbnknLAorICAgICAgICAgICAgeXkgOiAnJWQg YW55cycKKyAgICAgICAgfSwKKyAgICAgICAgb3JkaW5hbFBhcnNlOiAvXGR7 MSwyfShyfG58dHzDqHxhKS8sCisgICAgICAgIG9yZGluYWwgOiBmdW5jdGlv biAobnVtYmVyLCBwZXJpb2QpIHsKKyAgICAgICAgICAgIHZhciBvdXRwdXQg PSAobnVtYmVyID09PSAxKSA/ICdyJyA6CisgICAgICAgICAgICAgICAgKG51 bWJlciA9PT0gMikgPyAnbicgOgorICAgICAgICAgICAgICAgIChudW1iZXIg PT09IDMpID8gJ3InIDoKKyAgICAgICAgICAgICAgICAobnVtYmVyID09PSA0 KSA/ICd0JyA6ICfDqCc7CisgICAgICAgICAgICBpZiAocGVyaW9kID09PSAn dycgfHwgcGVyaW9kID09PSAnVycpIHsKKyAgICAgICAgICAgICAgICBvdXRw dXQgPSAnYSc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g bnVtYmVyICsgb3V0cHV0OworICAgICAgICB9LAorICAgICAgICB3ZWVrIDog eworICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJz dCBkYXkgb2YgdGhlIHdlZWsuCisgICAgICAgICAgICBkb3kgOiA0ICAvLyBU aGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdl ZWsgb2YgdGhlIHllYXIuCisgICAgICAgIH0KKyAgICB9KTsKKworCisgICAg dmFyIGNzX19tb250aHMgPSAnbGVkZW5fw7pub3JfYsWZZXplbl9kdWJlbl9r dsSbdGVuX8SNZXJ2ZW5fxI1lcnZlbmVjX3NycGVuX3rDocWZw61fxZnDrWpl bl9saXN0b3BhZF9wcm9zaW5lYycuc3BsaXQoJ18nKSwKKyAgICAgICAgY3Nf X21vbnRoc1Nob3J0ID0gJ2xlZF/Dum5vX2LFmWVfZHViX2t2xJtfxI12bl/E jXZjX3NycF96w6HFmV/FmcOtal9saXNfcHJvJy5zcGxpdCgnXycpOworICAg IGZ1bmN0aW9uIGNzX19wbHVyYWwobikgeworICAgICAgICByZXR1cm4gKG4g PiAxKSAmJiAobiA8IDUpICYmICh+fihuIC8gMTApICE9PSAxKTsKKyAgICB9 CisgICAgZnVuY3Rpb24gY3NfX3RyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRT dWZmaXgsIGtleSwgaXNGdXR1cmUpIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9 IG51bWJlciArICcgJzsKKyAgICAgICAgc3dpdGNoIChrZXkpIHsKKyAgICAg ICAgICAgIGNhc2UgJ3MnOiAgLy8gYSBmZXcgc2Vjb25kcyAvIGluIGEgZmV3 IHNlY29uZHMgLyBhIGZldyBzZWNvbmRzIGFnbworICAgICAgICAgICAgICAg IHJldHVybiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkgPyAncMOhciBz ZWt1bmQnIDogJ3DDoXIgc2VrdW5kYW1pJzsKKyAgICAgICAgICAgIGNhc2Ug J20nOiAgLy8gYSBtaW51dGUgLyBpbiBhIG1pbnV0ZSAvIGEgbWludXRlIGFn bworICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ21p bnV0YScgOiAoaXNGdXR1cmUgPyAnbWludXR1JyA6ICdtaW51dG91Jyk7Cisg ICAgICAgICAgICBjYXNlICdtbSc6IC8vIDkgbWludXRlcyAvIGluIDkgbWlu dXRlcyAvIDkgbWludXRlcyBhZ28KKyAgICAgICAgICAgICAgICBpZiAod2l0 aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkgeworICAgICAgICAgICAgICAgICAg ICByZXR1cm4gcmVzdWx0ICsgKGNzX19wbHVyYWwobnVtYmVyKSA/ICdtaW51 dHknIDogJ21pbnV0Jyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtaW51dGFtaSc7 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgY2FzZSAnaCc6ICAvLyBhbiBob3VyIC8gaW4gYW4gaG91 ciAvIGFuIGhvdXIgYWdvCisgICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhv dXRTdWZmaXggPyAnaG9kaW5hJyA6IChpc0Z1dHVyZSA/ICdob2RpbnUnIDog J2hvZGlub3UnKTsKKyAgICAgICAgICAgIGNhc2UgJ2hoJzogLy8gOSBob3Vy cyAvIGluIDkgaG91cnMgLyA5IGhvdXJzIGFnbworICAgICAgICAgICAgICAg IGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7CisgICAgICAgICAg ICAgICAgICAgIHJldHVybiByZXN1bHQgKyAoY3NfX3BsdXJhbChudW1iZXIp ID8gJ2hvZGlueScgOiAnaG9kaW4nKTsKKyAgICAgICAgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2hv ZGluYW1pJzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICAgICBjYXNlICdkJzogIC8vIGEgZGF5IC8gaW4g YSBkYXkgLyBhIGRheSBhZ28KKyAgICAgICAgICAgICAgICByZXR1cm4gKHdp dGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpID8gJ2RlbicgOiAnZG5lbSc7Cisg ICAgICAgICAgICBjYXNlICdkZCc6IC8vIDkgZGF5cyAvIGluIDkgZGF5cyAv IDkgZGF5cyBhZ28KKyAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZp eCB8fCBpc0Z1dHVyZSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g cmVzdWx0ICsgKGNzX19wbHVyYWwobnVtYmVyKSA/ICdkbnknIDogJ2Ruw60n KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg ICAgICByZXR1cm4gcmVzdWx0ICsgJ2RueSc7CisgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAn TSc6ICAvLyBhIG1vbnRoIC8gaW4gYSBtb250aCAvIGEgbW9udGggYWdvCisg ICAgICAgICAgICAgICAgcmV0dXJuICh3aXRob3V0U3VmZml4IHx8IGlzRnV0 dXJlKSA/ICdtxJtzw61jJyA6ICdtxJtzw61jZW0nOworICAgICAgICAgICAg Y2FzZSAnTU0nOiAvLyA5IG1vbnRocyAvIGluIDkgbW9udGhzIC8gOSBtb250 aHMgYWdvCisgICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwg aXNGdXR1cmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs dCArIChjc19fcGx1cmFsKG51bWJlcikgPyAnbcSbc8OtY2UnIDogJ23Em3PD rWPFrycpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbcSbc8OtY2knOworICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg ICAgIGNhc2UgJ3knOiAgLy8gYSB5ZWFyIC8gaW4gYSB5ZWFyIC8gYSB5ZWFy IGFnbworICAgICAgICAgICAgICAgIHJldHVybiAod2l0aG91dFN1ZmZpeCB8 fCBpc0Z1dHVyZSkgPyAncm9rJyA6ICdyb2tlbSc7CisgICAgICAgICAgICBj YXNlICd5eSc6IC8vIDkgeWVhcnMgLyBpbiA5IHllYXJzIC8gOSB5ZWFycyBh Z28KKyAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1 dHVyZSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsg KGNzX19wbHVyYWwobnVtYmVyKSA/ICdyb2t5JyA6ICdsZXQnKTsKKyAgICAg ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXR1 cm4gcmVzdWx0ICsgJ2xldHknOworICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZh ciBjcyA9IG1vbWVudF9fZGVmYXVsdC5kZWZpbmVMb2NhbGUoJ2NzJywgewor ICAgICAgICBtb250aHMgOiBjc19fbW9udGhzLAorICAgICAgICBtb250aHNT aG9ydCA6IGNzX19tb250aHNTaG9ydCwKKyAgICAgICAgbW9udGhzUGFyc2Ug OiAoZnVuY3Rpb24gKG1vbnRocywgbW9udGhzU2hvcnQpIHsKKyAgICAgICAg ICAgIHZhciBpLCBfbW9udGhzUGFyc2UgPSBbXTsKKyAgICAgICAgICAgIGZv ciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7CisgICAgICAgICAgICAgICAgLy8g dXNlIGN1c3RvbSBwYXJzZXIgdG8gc29sdmUgcHJvYmxlbSB3aXRoIEp1bHkg KMSNZXJ2ZW5lYykKKyAgICAgICAgICAgICAgICBfbW9udGhzUGFyc2VbaV0g PSBuZXcgUmVnRXhwKCdeJyArIG1vbnRoc1tpXSArICckfF4nICsgbW9udGhz U2hvcnRbaV0gKyAnJCcsICdpJyk7CisgICAgICAgICAgICB9CisgICAgICAg ICAgICByZXR1cm4gX21vbnRoc1BhcnNlOworICAgICAgICB9KGNzX19tb250 aHMsIGNzX19tb250aHNTaG9ydCkpLAorICAgICAgICBzaG9ydE1vbnRoc1Bh cnNlIDogKGZ1bmN0aW9uIChtb250aHNTaG9ydCkgeworICAgICAgICAgICAg dmFyIGksIF9zaG9ydE1vbnRoc1BhcnNlID0gW107CisgICAgICAgICAgICBm b3IgKGkgPSAwOyBpIDwgMTI7IGkrKykgeworICAgICAgICAgICAgICAgIF9z aG9ydE1vbnRoc1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyBtb250aHNT aG9ydFtpXSArICckJywgJ2knKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIHJldHVybiBfc2hvcnRNb250aHNQYXJzZTsKKyAgICAgICAgfShjc19f bW9udGhzU2hvcnQpKSwKKyAgICAgICAgbG9uZ01vbnRoc1BhcnNlIDogKGZ1 bmN0aW9uIChtb250aHMpIHsKKyAgICAgICAgICAgIHZhciBpLCBfbG9uZ01v bnRoc1BhcnNlID0gW107CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg MTI7IGkrKykgeworICAgICAgICAgICAgICAgIF9sb25nTW9udGhzUGFyc2Vb aV0gPSBuZXcgUmVnRXhwKCdeJyArIG1vbnRoc1tpXSArICckJywgJ2knKTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBfbG9uZ01vbnRo c1BhcnNlOworICAgICAgICB9KGNzX19tb250aHMpKSwKKyAgICAgICAgd2Vl a2RheXMgOiAnbmVkxJtsZV9wb25kxJtsw61fw7p0ZXLDvV9zdMWZZWRhX8SN dHZydGVrX3DDoXRla19zb2JvdGEnLnNwbGl0KCdfJyksCisgICAgICAgIHdl ZWtkYXlzU2hvcnQgOiAnbmVfcG9fw7p0X3N0X8SNdF9ww6Ffc28nLnNwbGl0 KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDogJ25lX3BvX8O6dF9zdF/E jXRfcMOhX3NvJy5zcGxpdCgnXycpLAorICAgICAgICBsb25nRGF0ZUZvcm1h dCA6IHsKKyAgICAgICAgICAgIExUOiAnSDptbScsCisgICAgICAgICAgICBM VFMgOiAnSDptbTpzcycsCisgICAgICAgICAgICBMIDogJ0RELk1NLllZWVkn LAorICAgICAgICAgICAgTEwgOiAnRC4gTU1NTSBZWVlZJywKKyAgICAgICAg ICAgIExMTCA6ICdELiBNTU1NIFlZWVkgSDptbScsCisgICAgICAgICAgICBM TExMIDogJ2RkZGQgRC4gTU1NTSBZWVlZIEg6bW0nLAorICAgICAgICAgICAg bCA6ICdELiBNLiBZWVlZJworICAgICAgICB9LAorICAgICAgICBjYWxlbmRh ciA6IHsKKyAgICAgICAgICAgIHNhbWVEYXk6ICdbZG5lcyB2XSBMVCcsCisg ICAgICAgICAgICBuZXh0RGF5OiAnW3rDrXRyYSB2XSBMVCcsCisgICAgICAg ICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg IHN3aXRjaCAodGhpcy5kYXkoKSkgeworICAgICAgICAgICAgICAgICAgICBj YXNlIDA6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IG5l ZMSbbGkgdl0gTFQnOworICAgICAgICAgICAgICAgICAgICBjYXNlIDE6Cisg ICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiAnW3ZdIGRkZGQgW3ZdIExUJzsKKyAgICAgICAgICAg ICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuICdbdmUgc3TFmWVkdSB2XSBMVCc7CisgICAgICAgICAgICAgICAgICAg IGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Zl IMSNdHZydGVrIHZdIExUJzsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1 OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBww6F0ZWsg dl0gTFQnOworICAgICAgICAgICAgICAgICAgICBjYXNlIDY6CisgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IHNvYm90dSB2XSBMVCc7Cisg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg IGxhc3REYXk6ICdbdsSNZXJhIHZdIExUJywKKyAgICAgICAgICAgIGxhc3RX ZWVrOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoICh0 aGlzLmRheSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKKyAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsb3UgbmVkxJts aSB2XSBMVCc7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAg ICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuICdbbWludWzDqV0gZGRkZCBbdl0gTFQnOworICAgICAgICAg ICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gJ1ttaW51bG91IHN0xZllZHUgdl0gTFQnOworICAgICAgICAgICAg ICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNToK KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw71dIGRk ZGQgW3ZdIExUJzsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA2OgorICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWxvdSBzb2JvdHUg dl0gTFQnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisg ICAgICAgICAgICBzYW1lRWxzZTogJ0wnCisgICAgICAgIH0sCisgICAgICAg IHJlbGF0aXZlVGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICd6YSAl cycsCisgICAgICAgICAgICBwYXN0IDogJ3DFmWVkICVzJywKKyAgICAgICAg ICAgIHMgOiBjc19fdHJhbnNsYXRlLAorICAgICAgICAgICAgbSA6IGNzX190 cmFuc2xhdGUsCisgICAgICAgICAgICBtbSA6IGNzX190cmFuc2xhdGUsCisg ICAgICAgICAgICBoIDogY3NfX3RyYW5zbGF0ZSwKKyAgICAgICAgICAgIGho IDogY3NfX3RyYW5zbGF0ZSwKKyAgICAgICAgICAgIGQgOiBjc19fdHJhbnNs YXRlLAorICAgICAgICAgICAgZGQgOiBjc19fdHJhbnNsYXRlLAorICAgICAg ICAgICAgTSA6IGNzX190cmFuc2xhdGUsCisgICAgICAgICAgICBNTSA6IGNz X190cmFuc2xhdGUsCisgICAgICAgICAgICB5IDogY3NfX3RyYW5zbGF0ZSwK KyAgICAgICAgICAgIHl5IDogY3NfX3RyYW5zbGF0ZQorICAgICAgICB9LAor ICAgICAgICBvcmRpbmFsUGFyc2UgOiAvXGR7MSwyfVwuLywKKyAgICAgICAg b3JkaW5hbCA6ICclZC4nLAorICAgICAgICB3ZWVrIDogeworICAgICAgICAg ICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhl IHdlZWsuCisgICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0 IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHll YXIuCisgICAgICAgIH0KKyAgICB9KTsKKworCisgICAgdmFyIGN2ID0gbW9t ZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgnY3YnLCB7CisgICAgICAgIG1v bnRocyA6ICfQutOR0YDQu9Cw0Ydf0L3QsNGA05HRgV/Qv9GD0Yhf0LDQutCw X9C80LDQuV/Sq9OX0YDRgtC80LVf0YPRgtORX9Kr0YPRgNC70LBf0LDQstOR 0L1f0Y7Qv9CwX9GH07PQul/RgNCw0YjRgtCw0LInLnNwbGl0KCdfJyksCisg ICAgICAgIG1vbnRoc1Nob3J0IDogJ9C605HRgF/QvdCw0YBf0L/Rg9GIX9Cw 0LrQsF/QvNCw0Llf0qvTl9GAX9GD0YLTkV/Sq9GD0YBf0LDQstC9X9GO0L/Q sF/Rh9Oz0Lpf0YDQsNGIJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5 cyA6ICfQstGL0YDRgdCw0YDQvdC40LrRg9C9X9GC0YPQvdGC0LjQutGD0L1f 0YvRgtC70LDRgNC40LrRg9C9X9GO0L3QutGD0L1f0LrTl9Kr0L3QtdGA0L3Q uNC60YPQvV/RjdGA0L3QtdC60YPQvV/RiNOR0LzQsNGC0LrRg9C9Jy5zcGxp dCgnXycpLAorICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9Cy0YvRgF/RgtGD 0L1f0YvRgtC7X9GO0L1f0LrTl9KrX9GN0YDQvV/RiNOR0LwnLnNwbGl0KCdf JyksCisgICAgICAgIHdlZWtkYXlzTWluIDogJ9Cy0YBf0YLQvV/Ri9GCX9GO 0L1f0LrSq1/RjdGAX9GI0LwnLnNwbGl0KCdfJyksCisgICAgICAgIGxvbmdE YXRlRm9ybWF0IDogeworICAgICAgICAgICAgTFQgOiAnSEg6bW0nLAorICAg ICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJywKKyAgICAgICAgICAgIEwgOiAn REQtTU0tWVlZWScsCisgICAgICAgICAgICBMTCA6ICdZWVlZIFvSq9GD0LvR hdC4XSBNTU1NIFvRg9C505HRhdOX0L1dIERbLdC805fRiNOXXScsCisgICAg ICAgICAgICBMTEwgOiAnWVlZWSBb0qvRg9C70YXQuF0gTU1NTSBb0YPQudOR 0YXTl9C9XSBEWy3QvNOX0YjTl10sIEhIOm1tJywKKyAgICAgICAgICAgIExM TEwgOiAnZGRkZCwgWVlZWSBb0qvRg9C70YXQuF0gTU1NTSBb0YPQudOR0YXT l9C9XSBEWy3QvNOX0YjTl10sIEhIOm1tJworICAgICAgICB9LAorICAgICAg ICBjYWxlbmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVEYXk6ICdb0J/QsNGP 0L1dIExUIFvRgdC10YXQtdGC0YDQtV0nLAorICAgICAgICAgICAgbmV4dERh eTogJ1vQq9GA0LDQvV0gTFQgW9GB0LXRhdC10YLRgNC1XScsCisgICAgICAg ICAgICBsYXN0RGF5OiAnW9OW0L3QtdGAXSBMVCBb0YHQtdGF0LXRgtGA0LVd JywKKyAgICAgICAgICAgIG5leHRXZWVrOiAnW9Kq0LjRgtC10YFdIGRkZGQg TFQgW9GB0LXRhdC10YLRgNC1XScsCisgICAgICAgICAgICBsYXN0V2Vlazog J1vQmNGA0YLQvdOXXSBkZGRkIExUIFvRgdC10YXQtdGC0YDQtV0nLAorICAg ICAgICAgICAgc2FtZUVsc2U6ICdMJworICAgICAgICB9LAorICAgICAgICBy ZWxhdGl2ZVRpbWUgOiB7CisgICAgICAgICAgICBmdXR1cmUgOiBmdW5jdGlv biAob3V0cHV0KSB7CisgICAgICAgICAgICAgICAgdmFyIGFmZml4ID0gL9GB 0LXRhdC10YIkL2kuZXhlYyhvdXRwdXQpID8gJ9GA0LXQvScgOiAv0qvRg9C7 JC9pLmV4ZWMob3V0cHV0KSA/ICfRgtCw0L0nIDogJ9GA0LDQvSc7CisgICAg ICAgICAgICAgICAgcmV0dXJuIG91dHB1dCArIGFmZml4OworICAgICAgICAg ICAgfSwKKyAgICAgICAgICAgIHBhc3QgOiAnJXMg0LrQsNGP0LvQu9CwJywK KyAgICAgICAgICAgIHMgOiAn0L/Tl9GALdC40Log0qvQtdC60LrRg9C90YIn LAorICAgICAgICAgICAgbSA6ICfQv9OX0YAg0LzQuNC90YPRgicsCisgICAg ICAgICAgICBtbSA6ICclZCDQvNC40L3Rg9GCJywKKyAgICAgICAgICAgIGgg OiAn0L/Tl9GAINGB0LXRhdC10YInLAorICAgICAgICAgICAgaGggOiAnJWQg 0YHQtdGF0LXRgicsCisgICAgICAgICAgICBkIDogJ9C/05fRgCDQutGD0L0n LAorICAgICAgICAgICAgZGQgOiAnJWQg0LrRg9C9JywKKyAgICAgICAgICAg IE0gOiAn0L/Tl9GAINGD0LnTkdGFJywKKyAgICAgICAgICAgIE1NIDogJyVk INGD0LnTkdGFJywKKyAgICAgICAgICAgIHkgOiAn0L/Tl9GAINKr0YPQuycs CisgICAgICAgICAgICB5eSA6ICclZCDSq9GD0LsnCisgICAgICAgIH0sCisg ICAgICAgIG9yZGluYWxQYXJzZTogL1xkezEsMn0t0LzTl9GILywKKyAgICAg ICAgb3JkaW5hbCA6ICclZC3QvNOX0YgnLAorICAgICAgICB3ZWVrIDogewor ICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBk YXkgb2YgdGhlIHdlZWsuCisgICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUg d2VlayB0aGF0IGNvbnRhaW5zIEphbiAxc3QgaXMgdGhlIGZpcnN0IHdlZWsg b2YgdGhlIHllYXIuCisgICAgICAgIH0KKyAgICB9KTsKKworCisgICAgdmFy IGN5ID0gbW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgnY3knLCB7Cisg ICAgICAgIG1vbnRoczogJ0lvbmF3cl9DaHdlZnJvcl9NYXdydGhfRWJyaWxs X01haV9NZWhlZmluX0dvcmZmZW5uYWZfQXdzdF9NZWRpX0h5ZHJlZl9UYWNo d2VkZF9SaGFnZnlyJy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNTaG9y dDogJ0lvbl9DaHdlX01hd19FYnJfTWFpX01laF9Hb3JfQXdzX01lZF9IeWRf VGFjaF9SaGFnJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5czogJ0R5 ZGQgU3VsX0R5ZGQgTGx1bl9EeWRkIE1hd3J0aF9EeWRkIE1lcmNoZXJfRHlk ZCBJYXVfRHlkZCBHd2VuZXJfRHlkZCBTYWR3cm4nLnNwbGl0KCdfJyksCisg ICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTdWxfTGx1bl9NYXdfTWVyX0lhdV9H d2VfU2FkJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c01pbjogJ1N1 X0xsX01hX01lX0lhX0d3X1NhJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVr ZGF5c1BhcnNlRXhhY3QgOiB0cnVlLAorICAgICAgICAvLyB0aW1lIGZvcm1h dHMgYXJlIHRoZSBzYW1lIGFzIGVuLWdiCisgICAgICAgIGxvbmdEYXRlRm9y bWF0OiB7CisgICAgICAgICAgICBMVDogJ0hIOm1tJywKKyAgICAgICAgICAg IExUUyA6ICdISDptbTpzcycsCisgICAgICAgICAgICBMOiAnREQvTU0vWVlZ WScsCisgICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJywKKyAgICAgICAg ICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJywKKyAgICAgICAgICAgIExM TEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScKKyAgICAgICAgfSwKKyAg ICAgICAgY2FsZW5kYXI6IHsKKyAgICAgICAgICAgIHNhbWVEYXk6ICdbSGVk ZGl3IGFtXSBMVCcsCisgICAgICAgICAgICBuZXh0RGF5OiAnW1lmb3J5IGFt XSBMVCcsCisgICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2FtXSBMVCcs CisgICAgICAgICAgICBsYXN0RGF5OiAnW0Rkb2UgYW1dIExUJywKKyAgICAg ICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbZGl3ZXRoYWYgYW1dIExUJywKKyAg ICAgICAgICAgIHNhbWVFbHNlOiAnTCcKKyAgICAgICAgfSwKKyAgICAgICAg cmVsYXRpdmVUaW1lOiB7CisgICAgICAgICAgICBmdXR1cmU6ICdtZXduICVz JywKKyAgICAgICAgICAgIHBhc3Q6ICclcyB5biDDtGwnLAorICAgICAgICAg ICAgczogJ3ljaHlkaWcgZWlsaWFkYXUnLAorICAgICAgICAgICAgbTogJ211 bnVkJywKKyAgICAgICAgICAgIG1tOiAnJWQgbXVudWQnLAorICAgICAgICAg ICAgaDogJ2F3cicsCisgICAgICAgICAgICBoaDogJyVkIGF3cicsCisgICAg ICAgICAgICBkOiAnZGl3cm5vZCcsCisgICAgICAgICAgICBkZDogJyVkIGRp d3Jub2QnLAorICAgICAgICAgICAgTTogJ21pcycsCisgICAgICAgICAgICBN TTogJyVkIG1pcycsCisgICAgICAgICAgICB5OiAnYmx3eWRkeW4nLAorICAg ICAgICAgICAgeXk6ICclZCBmbHluZWRkJworICAgICAgICB9LAorICAgICAg ICBvcmRpbmFsUGFyc2U6IC9cZHsxLDJ9KGZlZHxhaW58YWZ8aWx8eWRkfGVk fGVnKS8sCisgICAgICAgIC8vIHRyYWRpdGlvbmFsIG9yZGluYWwgbnVtYmVy cyBhYm92ZSAzMSBhcmUgbm90IGNvbW1vbmx5IHVzZWQgaW4gY29sbG9xdWlh bCBXZWxzaAorICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7 CisgICAgICAgICAgICB2YXIgYiA9IG51bWJlciwKKyAgICAgICAgICAgICAg ICBvdXRwdXQgPSAnJywKKyAgICAgICAgICAgICAgICBsb29rdXAgPSBbCisg ICAgICAgICAgICAgICAgICAgICcnLCAnYWYnLCAnaWwnLCAneWRkJywgJ3lk ZCcsICdlZCcsICdlZCcsICdlZCcsICdmZWQnLCAnZmVkJywgJ2ZlZCcsIC8v IDFhZiB0byAxMGZlZAorICAgICAgICAgICAgICAgICAgICAnZWcnLCAnZmVk JywgJ2VnJywgJ2VnJywgJ2ZlZCcsICdlZycsICdlZycsICdmZWQnLCAnZWcn LCAnZmVkJyAvLyAxMWVnIHRvIDIwZmVkCisgICAgICAgICAgICAgICAgXTsK KyAgICAgICAgICAgIGlmIChiID4gMjApIHsKKyAgICAgICAgICAgICAgICBp ZiAoYiA9PT0gNDAgfHwgYiA9PT0gNTAgfHwgYiA9PT0gNjAgfHwgYiA9PT0g ODAgfHwgYiA9PT0gMTAwKSB7CisgICAgICAgICAgICAgICAgICAgIG91dHB1 dCA9ICdmZWQnOyAvLyBub3QgMzBhaW4sIDcwYWluIG9yIDkwYWluCisgICAg ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0 cHV0ID0gJ2Fpbic7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg fSBlbHNlIGlmIChiID4gMCkgeworICAgICAgICAgICAgICAgIG91dHB1dCA9 IGxvb2t1cFtiXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy biBudW1iZXIgKyBvdXRwdXQ7CisgICAgICAgIH0sCisgICAgICAgIHdlZWsg OiB7CisgICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZp cnN0IGRheSBvZiB0aGUgd2Vlay4KKyAgICAgICAgICAgIGRveSA6IDQgIC8v IFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qg d2VlayBvZiB0aGUgeWVhci4KKyAgICAgICAgfQorICAgIH0pOworCisKKyAg ICB2YXIgZGEgPSBtb21lbnRfX2RlZmF1bHQuZGVmaW5lTG9jYWxlKCdkYScs IHsKKyAgICAgICAgbW9udGhzIDogJ2phbnVhcl9mZWJydWFyX21hcnRzX2Fw cmlsX21hal9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25v dmVtYmVyX2RlY2VtYmVyJy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNT aG9ydCA6ICdqYW5fZmViX21hcl9hcHJfbWFqX2p1bl9qdWxfYXVnX3NlcF9v a3Rfbm92X2RlYycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXMgOiAn c8O4bmRhZ19tYW5kYWdfdGlyc2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdf bMO4cmRhZycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6 ICdzw7huX21hbl90aXJfb25zX3Rvcl9mcmVfbMO4cicuc3BsaXQoJ18nKSwK KyAgICAgICAgd2Vla2RheXNNaW4gOiAnc8O4X21hX3RpX29uX3RvX2ZyX2zD uCcuc3BsaXQoJ18nKSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7Cisg ICAgICAgICAgICBMVCA6ICdISDptbScsCisgICAgICAgICAgICBMVFMgOiAn SEg6bW06c3MnLAorICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJywKKyAg ICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsCisgICAgICAgICAgICBM TEwgOiAnRC4gTU1NTSBZWVlZIEhIOm1tJywKKyAgICAgICAgICAgIExMTEwg OiAnZGRkZCBbZC5dIEQuIE1NTU0gWVlZWSBISDptbScKKyAgICAgICAgfSwK KyAgICAgICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBzYW1lRGF5IDog J1tJIGRhZyBrbC5dIExUJywKKyAgICAgICAgICAgIG5leHREYXkgOiAnW0kg bW9yZ2VuIGtsLl0gTFQnLAorICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRk ZCBba2wuXSBMVCcsCisgICAgICAgICAgICBsYXN0RGF5IDogJ1tJIGfDpXIg a2wuXSBMVCcsCisgICAgICAgICAgICBsYXN0V2VlayA6ICdbc2lkc3RlXSBk ZGRkIFtrbF0gTFQnLAorICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCcKKyAg ICAgICAgfSwKKyAgICAgICAgcmVsYXRpdmVUaW1lIDogeworICAgICAgICAg ICAgZnV0dXJlIDogJ29tICVzJywKKyAgICAgICAgICAgIHBhc3QgOiAnJXMg c2lkZW4nLAorICAgICAgICAgICAgcyA6ICdmw6Ugc2VrdW5kZXInLAorICAg ICAgICAgICAgbSA6ICdldCBtaW51dCcsCisgICAgICAgICAgICBtbSA6ICcl ZCBtaW51dHRlcicsCisgICAgICAgICAgICBoIDogJ2VuIHRpbWUnLAorICAg ICAgICAgICAgaGggOiAnJWQgdGltZXInLAorICAgICAgICAgICAgZCA6ICdl biBkYWcnLAorICAgICAgICAgICAgZGQgOiAnJWQgZGFnZScsCisgICAgICAg ICAgICBNIDogJ2VuIG3DpW5lZCcsCisgICAgICAgICAgICBNTSA6ICclZCBt w6VuZWRlcicsCisgICAgICAgICAgICB5IDogJ2V0IMOlcicsCisgICAgICAg ICAgICB5eSA6ICclZCDDpXInCisgICAgICAgIH0sCisgICAgICAgIG9yZGlu YWxQYXJzZTogL1xkezEsMn1cLi8sCisgICAgICAgIG9yZGluYWwgOiAnJWQu JywKKyAgICAgICAgd2VlayA6IHsKKyAgICAgICAgICAgIGRvdyA6IDEsIC8v IE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorICAgICAg ICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4g NHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLgorICAgICAgICB9 CisgICAgfSk7CisKKworICAgIGZ1bmN0aW9uIGRlX2F0X19wcm9jZXNzUmVs YXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVy ZSkgeworICAgICAgICB2YXIgZm9ybWF0ID0geworICAgICAgICAgICAgJ20n OiBbJ2VpbmUgTWludXRlJywgJ2VpbmVyIE1pbnV0ZSddLAorICAgICAgICAg ICAgJ2gnOiBbJ2VpbmUgU3R1bmRlJywgJ2VpbmVyIFN0dW5kZSddLAorICAg ICAgICAgICAgJ2QnOiBbJ2VpbiBUYWcnLCAnZWluZW0gVGFnJ10sCisgICAg ICAgICAgICAnZGQnOiBbbnVtYmVyICsgJyBUYWdlJywgbnVtYmVyICsgJyBU YWdlbiddLAorICAgICAgICAgICAgJ00nOiBbJ2VpbiBNb25hdCcsICdlaW5l bSBNb25hdCddLAorICAgICAgICAgICAgJ01NJzogW251bWJlciArICcgTW9u YXRlJywgbnVtYmVyICsgJyBNb25hdGVuJ10sCisgICAgICAgICAgICAneSc6 IFsnZWluIEphaHInLCAnZWluZW0gSmFociddLAorICAgICAgICAgICAgJ3l5 JzogW251bWJlciArICcgSmFocmUnLCBudW1iZXIgKyAnIEphaHJlbiddCisg ICAgICAgIH07CisgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gZm9y bWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTsKKyAgICB9CisKKyAgICB2 YXIgZGVfYXQgPSBtb21lbnRfX2RlZmF1bHQuZGVmaW5lTG9jYWxlKCdkZS1h dCcsIHsKKyAgICAgICAgbW9udGhzIDogJ0rDpG5uZXJfRmVicnVhcl9Nw6Ry el9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jl cl9Ob3ZlbWJlcl9EZXplbWJlcicuc3BsaXQoJ18nKSwKKyAgICAgICAgbW9u dGhzU2hvcnQgOiAnSsOkbi5fRmVici5fTXJ6Ll9BcHIuX01haV9KdW4uX0p1 bC5fQXVnLl9TZXB0Ll9Pa3QuX05vdi5fRGV6Licuc3BsaXQoJ18nKSwKKyAg ICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsCisgICAgICAgIHdlZWtk YXlzIDogJ1Nvbm50YWdfTW9udGFnX0RpZW5zdGFnX01pdHR3b2NoX0Rvbm5l cnN0YWdfRnJlaXRhZ19TYW1zdGFnJy5zcGxpdCgnXycpLAorICAgICAgICB3 ZWVrZGF5c1Nob3J0IDogJ1NvLl9Nby5fRGkuX01pLl9Eby5fRnIuX1NhLicu c3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNNaW4gOiAnU29fTW9fRGlf TWlfRG9fRnJfU2EnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzUGFy c2VFeGFjdCA6IHRydWUsCisgICAgICAgIGxvbmdEYXRlRm9ybWF0IDogewor ICAgICAgICAgICAgTFQ6ICdISDptbScsCisgICAgICAgICAgICBMVFM6ICdI SDptbTpzcycsCisgICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLAorICAg ICAgICAgICAgTEwgOiAnRC4gTU1NTSBZWVlZJywKKyAgICAgICAgICAgIExM TCA6ICdELiBNTU1NIFlZWVkgSEg6bW0nLAorICAgICAgICAgICAgTExMTCA6 ICdkZGRkLCBELiBNTU1NIFlZWVkgSEg6bW0nCisgICAgICAgIH0sCisgICAg ICAgIGNhbGVuZGFyIDogeworICAgICAgICAgICAgc2FtZURheTogJ1toZXV0 ZSB1bV0gTFQgW1Vocl0nLAorICAgICAgICAgICAgc2FtZUVsc2U6ICdMJywK KyAgICAgICAgICAgIG5leHREYXk6ICdbbW9yZ2VuIHVtXSBMVCBbVWhyXScs CisgICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3VtXSBMVCBbVWhyXScs CisgICAgICAgICAgICBsYXN0RGF5OiAnW2dlc3Rlcm4gdW1dIExUIFtVaHJd JywKKyAgICAgICAgICAgIGxhc3RXZWVrOiAnW2xldHp0ZW5dIGRkZGQgW3Vt XSBMVCBbVWhyXScKKyAgICAgICAgfSwKKyAgICAgICAgcmVsYXRpdmVUaW1l IDogeworICAgICAgICAgICAgZnV0dXJlIDogJ2luICVzJywKKyAgICAgICAg ICAgIHBhc3QgOiAndm9yICVzJywKKyAgICAgICAgICAgIHMgOiAnZWluIHBh YXIgU2VrdW5kZW4nLAorICAgICAgICAgICAgbSA6IGRlX2F0X19wcm9jZXNz UmVsYXRpdmVUaW1lLAorICAgICAgICAgICAgbW0gOiAnJWQgTWludXRlbics CisgICAgICAgICAgICBoIDogZGVfYXRfX3Byb2Nlc3NSZWxhdGl2ZVRpbWUs CisgICAgICAgICAgICBoaCA6ICclZCBTdHVuZGVuJywKKyAgICAgICAgICAg IGQgOiBkZV9hdF9fcHJvY2Vzc1JlbGF0aXZlVGltZSwKKyAgICAgICAgICAg IGRkIDogZGVfYXRfX3Byb2Nlc3NSZWxhdGl2ZVRpbWUsCisgICAgICAgICAg ICBNIDogZGVfYXRfX3Byb2Nlc3NSZWxhdGl2ZVRpbWUsCisgICAgICAgICAg ICBNTSA6IGRlX2F0X19wcm9jZXNzUmVsYXRpdmVUaW1lLAorICAgICAgICAg ICAgeSA6IGRlX2F0X19wcm9jZXNzUmVsYXRpdmVUaW1lLAorICAgICAgICAg ICAgeXkgOiBkZV9hdF9fcHJvY2Vzc1JlbGF0aXZlVGltZQorICAgICAgICB9 LAorICAgICAgICBvcmRpbmFsUGFyc2U6IC9cZHsxLDJ9XC4vLAorICAgICAg ICBvcmRpbmFsIDogJyVkLicsCisgICAgICAgIHdlZWsgOiB7CisgICAgICAg ICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0 aGUgd2Vlay4KKyAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRo YXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUg eWVhci4KKyAgICAgICAgfQorICAgIH0pOworCisKKyAgICBmdW5jdGlvbiBk ZV9fcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgs IGtleSwgaXNGdXR1cmUpIHsKKyAgICAgICAgdmFyIGZvcm1hdCA9IHsKKyAg ICAgICAgICAgICdtJzogWydlaW5lIE1pbnV0ZScsICdlaW5lciBNaW51dGUn XSwKKyAgICAgICAgICAgICdoJzogWydlaW5lIFN0dW5kZScsICdlaW5lciBT dHVuZGUnXSwKKyAgICAgICAgICAgICdkJzogWydlaW4gVGFnJywgJ2VpbmVt IFRhZyddLAorICAgICAgICAgICAgJ2RkJzogW251bWJlciArICcgVGFnZScs IG51bWJlciArICcgVGFnZW4nXSwKKyAgICAgICAgICAgICdNJzogWydlaW4g TW9uYXQnLCAnZWluZW0gTW9uYXQnXSwKKyAgICAgICAgICAgICdNTSc6IFtu dW1iZXIgKyAnIE1vbmF0ZScsIG51bWJlciArICcgTW9uYXRlbiddLAorICAg ICAgICAgICAgJ3knOiBbJ2VpbiBKYWhyJywgJ2VpbmVtIEphaHInXSwKKyAg ICAgICAgICAgICd5eSc6IFtudW1iZXIgKyAnIEphaHJlJywgbnVtYmVyICsg JyBKYWhyZW4nXQorICAgICAgICB9OworICAgICAgICByZXR1cm4gd2l0aG91 dFN1ZmZpeCA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07Cisg ICAgfQorCisgICAgdmFyIGRlID0gbW9tZW50X19kZWZhdWx0LmRlZmluZUxv Y2FsZSgnZGUnLCB7CisgICAgICAgIG1vbnRocyA6ICdKYW51YXJfRmVicnVh cl9Nw6Ryel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJf T2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlcicuc3BsaXQoJ18nKSwKKyAgICAg ICAgbW9udGhzU2hvcnQgOiAnSmFuLl9GZWJyLl9NcnouX0Fwci5fTWFpX0p1 bi5fSnVsLl9BdWcuX1NlcHQuX09rdC5fTm92Ll9EZXouJy5zcGxpdCgnXycp LAorICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSwKKyAgICAgICAg d2Vla2RheXMgOiAnU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hf RG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWcnLnNwbGl0KCdfJyksCisgICAg ICAgIHdlZWtkYXlzU2hvcnQgOiAnU28uX01vLl9EaS5fTWkuX0RvLl9Gci5f U2EuJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c01pbiA6ICdTb19N b19EaV9NaV9Eb19Gcl9TYScuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2Rh eXNQYXJzZUV4YWN0IDogdHJ1ZSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQg OiB7CisgICAgICAgICAgICBMVDogJ0hIOm1tJywKKyAgICAgICAgICAgIExU UzogJ0hIOm1tOnNzJywKKyAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScs CisgICAgICAgICAgICBMTCA6ICdELiBNTU1NIFlZWVknLAorICAgICAgICAg ICAgTExMIDogJ0QuIE1NTU0gWVlZWSBISDptbScsCisgICAgICAgICAgICBM TExMIDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBISDptbScKKyAgICAgICAgfSwK KyAgICAgICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBzYW1lRGF5OiAn W2hldXRlIHVtXSBMVCBbVWhyXScsCisgICAgICAgICAgICBzYW1lRWxzZTog J0wnLAorICAgICAgICAgICAgbmV4dERheTogJ1ttb3JnZW4gdW1dIExUIFtV aHJdJywKKyAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbdW1dIExUIFtV aHJdJywKKyAgICAgICAgICAgIGxhc3REYXk6ICdbZ2VzdGVybiB1bV0gTFQg W1Vocl0nLAorICAgICAgICAgICAgbGFzdFdlZWs6ICdbbGV0enRlbl0gZGRk ZCBbdW1dIExUIFtVaHJdJworICAgICAgICB9LAorICAgICAgICByZWxhdGl2 ZVRpbWUgOiB7CisgICAgICAgICAgICBmdXR1cmUgOiAnaW4gJXMnLAorICAg ICAgICAgICAgcGFzdCA6ICd2b3IgJXMnLAorICAgICAgICAgICAgcyA6ICdl aW4gcGFhciBTZWt1bmRlbicsCisgICAgICAgICAgICBtIDogZGVfX3Byb2Nl c3NSZWxhdGl2ZVRpbWUsCisgICAgICAgICAgICBtbSA6ICclZCBNaW51dGVu JywKKyAgICAgICAgICAgIGggOiBkZV9fcHJvY2Vzc1JlbGF0aXZlVGltZSwK KyAgICAgICAgICAgIGhoIDogJyVkIFN0dW5kZW4nLAorICAgICAgICAgICAg ZCA6IGRlX19wcm9jZXNzUmVsYXRpdmVUaW1lLAorICAgICAgICAgICAgZGQg OiBkZV9fcHJvY2Vzc1JlbGF0aXZlVGltZSwKKyAgICAgICAgICAgIE0gOiBk ZV9fcHJvY2Vzc1JlbGF0aXZlVGltZSwKKyAgICAgICAgICAgIE1NIDogZGVf X3Byb2Nlc3NSZWxhdGl2ZVRpbWUsCisgICAgICAgICAgICB5IDogZGVfX3By b2Nlc3NSZWxhdGl2ZVRpbWUsCisgICAgICAgICAgICB5eSA6IGRlX19wcm9j ZXNzUmVsYXRpdmVUaW1lCisgICAgICAgIH0sCisgICAgICAgIG9yZGluYWxQ YXJzZTogL1xkezEsMn1cLi8sCisgICAgICAgIG9yZGluYWwgOiAnJWQuJywK KyAgICAgICAgd2VlayA6IHsKKyAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1v bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorICAgICAgICAg ICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRo IGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLgorICAgICAgICB9Cisg ICAgfSk7CisKKworICAgIHZhciBkdl9fbW9udGhzID0gWworICAgICAgICAn 3pberN6C3qreh96m3oPeqScsCisgICAgICAgICfeit6s3oTesN6D3qreh96m 3oPeqScsCisgICAgICAgICfeid6n3oPeqN6X3qonLAorICAgICAgICAn3ofe rd6V3rDeg96p3o3eqicsCisgICAgICAgICfeid6tJywKKyAgICAgICAgJ96W 3qvegt6wJywKKyAgICAgICAgJ96W3qrejd6m3ofeqCcsCisgICAgICAgICfe h96v3o7ept6Q3rDek96qJywKKyAgICAgICAgJ96Q3qzeld6w3pPerN6J3rDe hN6m3oPeqicsCisgICAgICAgICfeh96u3obesN6T3q/ehN6m3oPeqicsCisg ICAgICAgICfegt6u3ojerN6J3rDehN6m3oPeqicsCisgICAgICAgICfekd6o 3pDerN6J3rDehN6m3oPeqicKKyAgICBdLCBkdl9fd2Vla2RheXMgPSBbCisg ICAgICAgICfeh96n3oveqN6H3rDejN6mJywKKyAgICAgICAgJ96A3q/eid6m JywKKyAgICAgICAgJ96H3qbegt6w3o7ep96D3qYnLAorICAgICAgICAn3oTe qt6L3qYnLAorICAgICAgICAn3oTeqt6D3qfekN6w3orept6M3qgnLAorICAg ICAgICAn3oDeqt6G3qreg96qJywKKyAgICAgICAgJ96A3q7egt6o3oDeqN6D 3qonCisgICAgXTsKKworICAgIHZhciBkdiA9IG1vbWVudF9fZGVmYXVsdC5k ZWZpbmVMb2NhbGUoJ2R2JywgeworICAgICAgICBtb250aHMgOiBkdl9fbW9u dGhzLAorICAgICAgICBtb250aHNTaG9ydCA6IGR2X19tb250aHMsCisgICAg ICAgIHdlZWtkYXlzIDogZHZfX3dlZWtkYXlzLAorICAgICAgICB3ZWVrZGF5 c1Nob3J0IDogZHZfX3dlZWtkYXlzLAorICAgICAgICB3ZWVrZGF5c01pbiA6 ICfeh96n3oveqF/egN6v3onepl/eh96m3oLesF/ehN6q3ovepl/ehN6q3oPe p1/egN6q3obeql/egN6u3oLeqCcuc3BsaXQoJ18nKSwKKyAgICAgICAgbG9u Z0RhdGVGb3JtYXQgOiB7CisKKyAgICAgICAgICAgIExUIDogJ0hIOm1tJywK KyAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsCisgICAgICAgICAgICBM IDogJ0QvTS9ZWVlZJywKKyAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZ JywKKyAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsCisg ICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nCisg ICAgICAgIH0sCisgICAgICAgIG1lcmlkaWVtUGFyc2U6IC/eid6GfN6J3oov LAorICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7CisgICAgICAg ICAgICByZXR1cm4gJ96J3oonID09PSBpbnB1dDsKKyAgICAgICAgfSwKKyAg ICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xv d2VyKSB7CisgICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7CisgICAgICAg ICAgICAgICAgcmV0dXJuICfeid6GJzsKKyAgICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgICAgcmV0dXJuICfeid6KJzsKKyAgICAgICAgICAg IH0KKyAgICAgICAgfSwKKyAgICAgICAgY2FsZW5kYXIgOiB7CisgICAgICAg ICAgICBzYW1lRGF5IDogJ1veid6o3ofept6L3qpdIExUJywKKyAgICAgICAg ICAgIG5leHREYXkgOiAnW96J3qfei96m3onep10gTFQnLAorICAgICAgICAg ICAgbmV4dFdlZWsgOiAnZGRkZCBMVCcsCisgICAgICAgICAgICBsYXN0RGF5 IDogJ1veh96o3ofesN6U3qxdIExUJywKKyAgICAgICAgICAgIGxhc3RXZWVr IDogJ1veit6n3ofeqN6M3qreiN6oXSBkZGRkIExUJywKKyAgICAgICAgICAg IHNhbWVFbHNlIDogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZl VGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICfejN6s3oPerd6O3qbe h96oICVzJywKKyAgICAgICAgICAgIHBhc3QgOiAn3obeqt6D3qjegt6wICVz JywKKyAgICAgICAgICAgIHMgOiAn3pDeqN6G3qregt6w3ozeqt6G3q7ehd6s 3ofesCcsCisgICAgICAgICAgICBtIDogJ96J3qjegt6o3pPerN6H3rAnLAor ICAgICAgICAgICAgbW0gOiAn3oneqN6C3qjek96qICVkJywKKyAgICAgICAg ICAgIGggOiAn3o7ept6R3qjeh96o3oPerN6H3rAnLAorICAgICAgICAgICAg aGggOiAn3o7ept6R3qjeh96o3oPeqiAlZCcsCisgICAgICAgICAgICBkIDog J96L3qreiN6m3oDerN6H3rAnLAorICAgICAgICAgICAgZGQgOiAn3oveqt6I 3qbekN6wICVkJywKKyAgICAgICAgICAgIE0gOiAn3onept6A3qzeh96wJywK KyAgICAgICAgICAgIE1NIDogJ96J3qbekN6wICVkJywKKyAgICAgICAgICAg IHkgOiAn3ofept6A3qbeg96s3ofesCcsCisgICAgICAgICAgICB5eSA6ICfe h96m3oDept6D3qogJWQnCisgICAgICAgIH0sCisgICAgICAgIHByZXBhcnNl OiBmdW5jdGlvbiAoc3RyaW5nKSB7CisgICAgICAgICAgICByZXR1cm4gc3Ry aW5nLnJlcGxhY2UoL9iML2csICcsJyk7CisgICAgICAgIH0sCisgICAgICAg IHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHsKKyAgICAgICAgICAg IHJldHVybiBzdHJpbmcucmVwbGFjZSgvLC9nLCAn2IwnKTsKKyAgICAgICAg fSwKKyAgICAgICAgd2VlayA6IHsKKyAgICAgICAgICAgIGRvdyA6IDcsICAv LyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KKyAgICAg ICAgICAgIGRveSA6IDEyICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEph biAxc3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuCisgICAgICAg IH0KKyAgICB9KTsKKworCisgICAgdmFyIGVsID0gbW9tZW50X19kZWZhdWx0 LmRlZmluZUxvY2FsZSgnZWwnLCB7CisgICAgICAgIG1vbnRoc05vbWluYXRp dmVFbCA6ICfOmc6xzr3Ov8+FzqzPgc65zr/Pgl/Ops61zrLPgc6/z4XOrM+B zrnOv8+CX86czqzPgc+EzrnOv8+CX86Rz4DPgc6vzrvOuc6/z4JfzpzOrM65 zr/Pgl/Omc6/z43Ovc65zr/Pgl/Omc6/z43Ou865zr/Pgl/Okc+NzrPOv8+F z4PPhM6/z4JfzqPOtc+Az4TOrc68zrLPgc65zr/Pgl/On866z4TPjs6yz4HO uc6/z4Jfzp3Ov86tzrzOss+BzrnOv8+CX86UzrXOus6tzrzOss+BzrnOv8+C Jy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNHZW5pdGl2ZUVsIDogJ86Z zrHOvc6/z4XOsc+Bzq/Ov8+FX86mzrXOss+Bzr/Phc6xz4HOr86/z4VfzpzO sc+Bz4TOr86/z4VfzpHPgM+BzrnOu86vzr/PhV/OnM6xzpDOv8+FX86Zzr/P hc69zq/Ov8+FX86Zzr/Phc67zq/Ov8+FX86Rz4XOs86/z43Pg8+Ezr/PhV/O o861z4DPhM61zrzOss+Bzq/Ov8+FX86fzrrPhM+JzrLPgc6vzr/PhV/Onc6/ zrXOvM6yz4HOr86/z4VfzpTOtc66zrXOvM6yz4HOr86/z4UnLnNwbGl0KCdf JyksCisgICAgICAgIG1vbnRocyA6IGZ1bmN0aW9uIChtb21lbnRUb0Zvcm1h dCwgZm9ybWF0KSB7CisgICAgICAgICAgICBpZiAoL0QvLnRlc3QoZm9ybWF0 LnN1YnN0cmluZygwLCBmb3JtYXQuaW5kZXhPZignTU1NTScpKSkpIHsgLy8g aWYgdGhlcmUgaXMgYSBkYXkgbnVtYmVyIGJlZm9yZSAnTU1NTScKKyAgICAg ICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzR2VuaXRpdmVFbFttb21l bnRUb0Zvcm1hdC5tb250aCgpXTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc05vbWluYXRpdmVF bFttb21lbnRUb0Zvcm1hdC5tb250aCgpXTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgfSwKKyAgICAgICAgbW9udGhzU2hvcnQgOiAnzpnOsc69X86mzrXO sl/OnM6xz4FfzpHPgM+BX86czrHPil/Omc6/z4XOvV/Omc6/z4XOu1/Okc+F zrNfzqPOtc+AX86fzrrPhF/Onc6/zrVfzpTOtc66Jy5zcGxpdCgnXycpLAor ICAgICAgICB3ZWVrZGF5cyA6ICfOms+Fz4HOuc6xzrrOrl/OlM61z4XPhM6t z4HOsV/OpM+Bzq/PhM63X86kzrXPhM6sz4HPhM63X86gzq3OvM+Az4TOt1/O oM6xz4HOsc+DzrrOtc+Fzq5fzqPOrM6yzrLOsc+Ezr8nLnNwbGl0KCdfJyks CisgICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnzprPhc+BX86UzrXPhV/OpM+B zrlfzqTOtc+EX86gzrXOvF/OoM6xz4FfzqPOsc6yJy5zcGxpdCgnXycpLAor ICAgICAgICB3ZWVrZGF5c01pbiA6ICfOms+FX86UzrVfzqTPgV/OpM61X86g zrVfzqDOsV/Oo86xJy5zcGxpdCgnXycpLAorICAgICAgICBtZXJpZGllbSA6 IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikgeworICAgICAg ICAgICAgaWYgKGhvdXJzID4gMTEpIHsKKyAgICAgICAgICAgICAgICByZXR1 cm4gaXNMb3dlciA/ICfOvM68JyA6ICfOnM6cJzsKKyAgICAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnz4DO vCcgOiAnzqDOnCc7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg ICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHsKKyAgICAgICAgICAgIHJl dHVybiAoKGlucHV0ICsgJycpLnRvTG93ZXJDYXNlKClbMF0gPT09ICfOvCcp OworICAgICAgICB9LAorICAgICAgICBtZXJpZGllbVBhcnNlIDogL1vOoM6c XVwuP86cP1wuPy9pLAorICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHsKKyAg ICAgICAgICAgIExUIDogJ2g6bW0gQScsCisgICAgICAgICAgICBMVFMgOiAn aDptbTpzcyBBJywKKyAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsCisg ICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsCisgICAgICAgICAgICBM TEwgOiAnRCBNTU1NIFlZWVkgaDptbSBBJywKKyAgICAgICAgICAgIExMTEwg OiAnZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBJworICAgICAgICB9LAorICAg ICAgICBjYWxlbmRhckVsIDogeworICAgICAgICAgICAgc2FtZURheSA6ICdb zqPOrs68zrXPgc6xIHt9XSBMVCcsCisgICAgICAgICAgICBuZXh0RGF5IDog J1vOkc+Nz4HOuc6/IHt9XSBMVCcsCisgICAgICAgICAgICBuZXh0V2VlayA6 ICdkZGRkIFt7fV0gTFQnLAorICAgICAgICAgICAgbGFzdERheSA6ICdbzqfO uM61z4Ige31dIExUJywKKyAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rp b24gKCkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkg eworICAgICAgICAgICAgICAgICAgICBjYXNlIDY6CisgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gJ1vPhM6/IM+Az4HOv863zrPOv8+NzrzOtc69 zr9dIGRkZGQgW3t9XSBMVCc7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1 bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vPhM63zr0g z4DPgc6/zrfOs86/z43OvM61zr3Ot10gZGRkZCBbe31dIExUJzsKKyAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgc2Ft ZUVsc2UgOiAnTCcKKyAgICAgICAgfSwKKyAgICAgICAgY2FsZW5kYXIgOiBm dW5jdGlvbiAoa2V5LCBtb20pIHsKKyAgICAgICAgICAgIHZhciBvdXRwdXQg PSB0aGlzLl9jYWxlbmRhckVsW2tleV0sCisgICAgICAgICAgICAgICAgaG91 cnMgPSBtb20gJiYgbW9tLmhvdXJzKCk7CisgICAgICAgICAgICBpZiAoaXNG dW5jdGlvbihvdXRwdXQpKSB7CisgICAgICAgICAgICAgICAgb3V0cHV0ID0g b3V0cHV0LmFwcGx5KG1vbSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg ICByZXR1cm4gb3V0cHV0LnJlcGxhY2UoJ3t9JywgKGhvdXJzICUgMTIgPT09 IDEgPyAnz4PPhM63JyA6ICfPg8+EzrnPgicpKTsKKyAgICAgICAgfSwKKyAg ICAgICAgcmVsYXRpdmVUaW1lIDogeworICAgICAgICAgICAgZnV0dXJlIDog J8+DzrUgJXMnLAorICAgICAgICAgICAgcGFzdCA6ICclcyDPgM+BzrnOvScs CisgICAgICAgICAgICBzIDogJ867zq/Os86xIM60zrXPhc+EzrXPgc+MzrvO tc+Az4TOsScsCisgICAgICAgICAgICBtIDogJ86tzr3OsSDOu861z4DPhM+M JywKKyAgICAgICAgICAgIG1tIDogJyVkIM67zrXPgM+EzqwnLAorICAgICAg ICAgICAgaCA6ICfOvM6vzrEgz47Pgc6xJywKKyAgICAgICAgICAgIGhoIDog JyVkIM+Oz4HOtc+CJywKKyAgICAgICAgICAgIGQgOiAnzrzOr86xIM68zq3P gc6xJywKKyAgICAgICAgICAgIGRkIDogJyVkIM68zq3Pgc61z4InLAorICAg ICAgICAgICAgTSA6ICfOrc69zrHPgiDOvM6uzr3Osc+CJywKKyAgICAgICAg ICAgIE1NIDogJyVkIM68zq7Ovc61z4InLAorICAgICAgICAgICAgeSA6ICfO rc69zrHPgiDPh8+Bz4zOvc6/z4InLAorICAgICAgICAgICAgeXkgOiAnJWQg z4fPgc+Mzr3Ouc6xJworICAgICAgICB9LAorICAgICAgICBvcmRpbmFsUGFy c2U6IC9cZHsxLDJ9zrcvLAorICAgICAgICBvcmRpbmFsOiAnJWTOtycsCisg ICAgICAgIHdlZWsgOiB7CisgICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25k YXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KKyAgICAgICAgICAg IGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDRzdCBp cyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci4KKyAgICAgICAgfQorICAg IH0pOworCisKKyAgICB2YXIgZW5fYXUgPSBtb21lbnRfX2RlZmF1bHQuZGVm aW5lTG9jYWxlKCdlbi1hdScsIHsKKyAgICAgICAgbW9udGhzIDogJ0phbnVh cnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3Rf U2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdf JyksCisgICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZWJfTWFyX0Fwcl9N YXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLAor ICAgICAgICB3ZWVrZGF5cyA6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2Vk bmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoJ18nKSwK KyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1 X0ZyaV9TYXQnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDog J1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLAorICAgICAgICBs b25nRGF0ZUZvcm1hdCA6IHsKKyAgICAgICAgICAgIExUIDogJ2g6bW0gQScs CisgICAgICAgICAgICBMVFMgOiAnaDptbTpzcyBBJywKKyAgICAgICAgICAg IEwgOiAnREQvTU0vWVlZWScsCisgICAgICAgICAgICBMTCA6ICdEIE1NTU0g WVlZWScsCisgICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgaDptbSBB JywKKyAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgaDpt bSBBJworICAgICAgICB9LAorICAgICAgICBjYWxlbmRhciA6IHsKKyAgICAg ICAgICAgIHNhbWVEYXkgOiAnW1RvZGF5IGF0XSBMVCcsCisgICAgICAgICAg ICBuZXh0RGF5IDogJ1tUb21vcnJvdyBhdF0gTFQnLAorICAgICAgICAgICAg bmV4dFdlZWsgOiAnZGRkZCBbYXRdIExUJywKKyAgICAgICAgICAgIGxhc3RE YXkgOiAnW1llc3RlcmRheSBhdF0gTFQnLAorICAgICAgICAgICAgbGFzdFdl ZWsgOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsCisgICAgICAgICAgICBzYW1l RWxzZSA6ICdMJworICAgICAgICB9LAorICAgICAgICByZWxhdGl2ZVRpbWUg OiB7CisgICAgICAgICAgICBmdXR1cmUgOiAnaW4gJXMnLAorICAgICAgICAg ICAgcGFzdCA6ICclcyBhZ28nLAorICAgICAgICAgICAgcyA6ICdhIGZldyBz ZWNvbmRzJywKKyAgICAgICAgICAgIG0gOiAnYSBtaW51dGUnLAorICAgICAg ICAgICAgbW0gOiAnJWQgbWludXRlcycsCisgICAgICAgICAgICBoIDogJ2Fu IGhvdXInLAorICAgICAgICAgICAgaGggOiAnJWQgaG91cnMnLAorICAgICAg ICAgICAgZCA6ICdhIGRheScsCisgICAgICAgICAgICBkZCA6ICclZCBkYXlz JywKKyAgICAgICAgICAgIE0gOiAnYSBtb250aCcsCisgICAgICAgICAgICBN TSA6ICclZCBtb250aHMnLAorICAgICAgICAgICAgeSA6ICdhIHllYXInLAor ICAgICAgICAgICAgeXkgOiAnJWQgeWVhcnMnCisgICAgICAgIH0sCisgICAg ICAgIG9yZGluYWxQYXJzZTogL1xkezEsMn0oc3R8bmR8cmR8dGgpLywKKyAg ICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHsKKyAgICAgICAg ICAgIHZhciBiID0gbnVtYmVyICUgMTAsCisgICAgICAgICAgICAgICAgb3V0 cHV0ID0gKH5+KG51bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAndGgnIDoK KyAgICAgICAgICAgICAgICAoYiA9PT0gMSkgPyAnc3QnIDoKKyAgICAgICAg ICAgICAgICAoYiA9PT0gMikgPyAnbmQnIDoKKyAgICAgICAgICAgICAgICAo YiA9PT0gMykgPyAncmQnIDogJ3RoJzsKKyAgICAgICAgICAgIHJldHVybiBu dW1iZXIgKyBvdXRwdXQ7CisgICAgICAgIH0sCisgICAgICAgIHdlZWsgOiB7 CisgICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0 IGRheSBvZiB0aGUgd2Vlay4KKyAgICAgICAgICAgIGRveSA6IDQgIC8vIFRo ZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2Vl ayBvZiB0aGUgeWVhci4KKyAgICAgICAgfQorICAgIH0pOworCisKKyAgICB2 YXIgZW5fY2EgPSBtb21lbnRfX2RlZmF1bHQuZGVmaW5lTG9jYWxlKCdlbi1j YScsIHsKKyAgICAgICAgbW9udGhzIDogJ0phbnVhcnlfRmVicnVhcnlfTWFy Y2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9i ZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdfJyksCisgICAgICAgIG1v bnRoc1Nob3J0IDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdf U2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5 cyA6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5 X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2Rh eXNTaG9ydCA6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0 KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDogJ1N1X01vX1R1X1dlX1Ro X0ZyX1NhJy5zcGxpdCgnXycpLAorICAgICAgICBsb25nRGF0ZUZvcm1hdCA6 IHsKKyAgICAgICAgICAgIExUIDogJ2g6bW0gQScsCisgICAgICAgICAgICBM VFMgOiAnaDptbTpzcyBBJywKKyAgICAgICAgICAgIEwgOiAnWVlZWS1NTS1E RCcsCisgICAgICAgICAgICBMTCA6ICdNTU1NIEQsIFlZWVknLAorICAgICAg ICAgICAgTExMIDogJ01NTU0gRCwgWVlZWSBoOm1tIEEnLAorICAgICAgICAg ICAgTExMTCA6ICdkZGRkLCBNTU1NIEQsIFlZWVkgaDptbSBBJworICAgICAg ICB9LAorICAgICAgICBjYWxlbmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVE YXkgOiAnW1RvZGF5IGF0XSBMVCcsCisgICAgICAgICAgICBuZXh0RGF5IDog J1tUb21vcnJvdyBhdF0gTFQnLAorICAgICAgICAgICAgbmV4dFdlZWsgOiAn ZGRkZCBbYXRdIExUJywKKyAgICAgICAgICAgIGxhc3REYXkgOiAnW1llc3Rl cmRheSBhdF0gTFQnLAorICAgICAgICAgICAgbGFzdFdlZWsgOiAnW0xhc3Rd IGRkZGQgW2F0XSBMVCcsCisgICAgICAgICAgICBzYW1lRWxzZSA6ICdMJwor ICAgICAgICB9LAorICAgICAgICByZWxhdGl2ZVRpbWUgOiB7CisgICAgICAg ICAgICBmdXR1cmUgOiAnaW4gJXMnLAorICAgICAgICAgICAgcGFzdCA6ICcl cyBhZ28nLAorICAgICAgICAgICAgcyA6ICdhIGZldyBzZWNvbmRzJywKKyAg ICAgICAgICAgIG0gOiAnYSBtaW51dGUnLAorICAgICAgICAgICAgbW0gOiAn JWQgbWludXRlcycsCisgICAgICAgICAgICBoIDogJ2FuIGhvdXInLAorICAg ICAgICAgICAgaGggOiAnJWQgaG91cnMnLAorICAgICAgICAgICAgZCA6ICdh IGRheScsCisgICAgICAgICAgICBkZCA6ICclZCBkYXlzJywKKyAgICAgICAg ICAgIE0gOiAnYSBtb250aCcsCisgICAgICAgICAgICBNTSA6ICclZCBtb250 aHMnLAorICAgICAgICAgICAgeSA6ICdhIHllYXInLAorICAgICAgICAgICAg eXkgOiAnJWQgeWVhcnMnCisgICAgICAgIH0sCisgICAgICAgIG9yZGluYWxQ YXJzZTogL1xkezEsMn0oc3R8bmR8cmR8dGgpLywKKyAgICAgICAgb3JkaW5h bCA6IGZ1bmN0aW9uIChudW1iZXIpIHsKKyAgICAgICAgICAgIHZhciBiID0g bnVtYmVyICUgMTAsCisgICAgICAgICAgICAgICAgb3V0cHV0ID0gKH5+KG51 bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAndGgnIDoKKyAgICAgICAgICAg ICAgICAoYiA9PT0gMSkgPyAnc3QnIDoKKyAgICAgICAgICAgICAgICAoYiA9 PT0gMikgPyAnbmQnIDoKKyAgICAgICAgICAgICAgICAoYiA9PT0gMykgPyAn cmQnIDogJ3RoJzsKKyAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRw dXQ7CisgICAgICAgIH0KKyAgICB9KTsKKworCisgICAgdmFyIGVuX2diID0g bW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgnZW4tZ2InLCB7CisgICAg ICAgIG1vbnRocyA6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01h eV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVy X0RlY2VtYmVyJy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNTaG9ydCA6 ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92 X0RlYycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXMgOiAnU3VuZGF5 X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0 dXJkYXknLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn U3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLAorICAg ICAgICB3ZWVrZGF5c01pbiA6ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3Bs aXQoJ18nKSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7CisgICAgICAg ICAgICBMVCA6ICdISDptbScsCisgICAgICAgICAgICBMVFMgOiAnSEg6bW06 c3MnLAorICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJywKKyAgICAgICAg ICAgIExMIDogJ0QgTU1NTSBZWVlZJywKKyAgICAgICAgICAgIExMTCA6ICdE IE1NTU0gWVlZWSBISDptbScsCisgICAgICAgICAgICBMTExMIDogJ2RkZGQs IEQgTU1NTSBZWVlZIEhIOm1tJworICAgICAgICB9LAorICAgICAgICBjYWxl bmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVEYXkgOiAnW1RvZGF5IGF0XSBM VCcsCisgICAgICAgICAgICBuZXh0RGF5IDogJ1tUb21vcnJvdyBhdF0gTFQn LAorICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbYXRdIExUJywKKyAg ICAgICAgICAgIGxhc3REYXkgOiAnW1llc3RlcmRheSBhdF0gTFQnLAorICAg ICAgICAgICAgbGFzdFdlZWsgOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsCisg ICAgICAgICAgICBzYW1lRWxzZSA6ICdMJworICAgICAgICB9LAorICAgICAg ICByZWxhdGl2ZVRpbWUgOiB7CisgICAgICAgICAgICBmdXR1cmUgOiAnaW4g JXMnLAorICAgICAgICAgICAgcGFzdCA6ICclcyBhZ28nLAorICAgICAgICAg ICAgcyA6ICdhIGZldyBzZWNvbmRzJywKKyAgICAgICAgICAgIG0gOiAnYSBt aW51dGUnLAorICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlcycsCisgICAg ICAgICAgICBoIDogJ2FuIGhvdXInLAorICAgICAgICAgICAgaGggOiAnJWQg aG91cnMnLAorICAgICAgICAgICAgZCA6ICdhIGRheScsCisgICAgICAgICAg ICBkZCA6ICclZCBkYXlzJywKKyAgICAgICAgICAgIE0gOiAnYSBtb250aCcs CisgICAgICAgICAgICBNTSA6ICclZCBtb250aHMnLAorICAgICAgICAgICAg eSA6ICdhIHllYXInLAorICAgICAgICAgICAgeXkgOiAnJWQgeWVhcnMnCisg ICAgICAgIH0sCisgICAgICAgIG9yZGluYWxQYXJzZTogL1xkezEsMn0oc3R8 bmR8cmR8dGgpLywKKyAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1i ZXIpIHsKKyAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsCisgICAg ICAgICAgICAgICAgb3V0cHV0ID0gKH5+KG51bWJlciAlIDEwMCAvIDEwKSA9 PT0gMSkgPyAndGgnIDoKKyAgICAgICAgICAgICAgICAoYiA9PT0gMSkgPyAn c3QnIDoKKyAgICAgICAgICAgICAgICAoYiA9PT0gMikgPyAnbmQnIDoKKyAg ICAgICAgICAgICAgICAoYiA9PT0gMykgPyAncmQnIDogJ3RoJzsKKyAgICAg ICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7CisgICAgICAgIH0sCisg ICAgICAgIHdlZWsgOiB7CisgICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25k YXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KKyAgICAgICAgICAg IGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBp cyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci4KKyAgICAgICAgfQorICAg IH0pOworCisKKyAgICB2YXIgZW5faWUgPSBtb21lbnRfX2RlZmF1bHQuZGVm aW5lTG9jYWxlKCdlbi1pZScsIHsKKyAgICAgICAgbW9udGhzIDogJ0phbnVh cnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3Rf U2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdf JyksCisgICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZWJfTWFyX0Fwcl9N YXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLAor ICAgICAgICB3ZWVrZGF5cyA6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2Vk bmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoJ18nKSwK KyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1 X0ZyaV9TYXQnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDog J1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLAorICAgICAgICBs b25nRGF0ZUZvcm1hdCA6IHsKKyAgICAgICAgICAgIExUIDogJ0hIOm1tJywK KyAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsCisgICAgICAgICAgICBM IDogJ0RELU1NLVlZWVknLAorICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZ WVknLAorICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJywK KyAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScK KyAgICAgICAgfSwKKyAgICAgICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAg ICBzYW1lRGF5IDogJ1tUb2RheSBhdF0gTFQnLAorICAgICAgICAgICAgbmV4 dERheSA6ICdbVG9tb3Jyb3cgYXRdIExUJywKKyAgICAgICAgICAgIG5leHRX ZWVrIDogJ2RkZGQgW2F0XSBMVCcsCisgICAgICAgICAgICBsYXN0RGF5IDog J1tZZXN0ZXJkYXkgYXRdIExUJywKKyAgICAgICAgICAgIGxhc3RXZWVrIDog J1tMYXN0XSBkZGRkIFthdF0gTFQnLAorICAgICAgICAgICAgc2FtZUVsc2Ug OiAnTCcKKyAgICAgICAgfSwKKyAgICAgICAgcmVsYXRpdmVUaW1lIDogewor ICAgICAgICAgICAgZnV0dXJlIDogJ2luICVzJywKKyAgICAgICAgICAgIHBh c3QgOiAnJXMgYWdvJywKKyAgICAgICAgICAgIHMgOiAnYSBmZXcgc2Vjb25k cycsCisgICAgICAgICAgICBtIDogJ2EgbWludXRlJywKKyAgICAgICAgICAg IG1tIDogJyVkIG1pbnV0ZXMnLAorICAgICAgICAgICAgaCA6ICdhbiBob3Vy JywKKyAgICAgICAgICAgIGhoIDogJyVkIGhvdXJzJywKKyAgICAgICAgICAg IGQgOiAnYSBkYXknLAorICAgICAgICAgICAgZGQgOiAnJWQgZGF5cycsCisg ICAgICAgICAgICBNIDogJ2EgbW9udGgnLAorICAgICAgICAgICAgTU0gOiAn JWQgbW9udGhzJywKKyAgICAgICAgICAgIHkgOiAnYSB5ZWFyJywKKyAgICAg ICAgICAgIHl5IDogJyVkIHllYXJzJworICAgICAgICB9LAorICAgICAgICBv cmRpbmFsUGFyc2U6IC9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sCisgICAgICAg IG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7CisgICAgICAgICAgICB2 YXIgYiA9IG51bWJlciAlIDEwLAorICAgICAgICAgICAgICAgIG91dHB1dCA9 ICh+fihudW1iZXIgJSAxMDAgLyAxMCkgPT09IDEpID8gJ3RoJyA6CisgICAg ICAgICAgICAgICAgKGIgPT09IDEpID8gJ3N0JyA6CisgICAgICAgICAgICAg ICAgKGIgPT09IDIpID8gJ25kJyA6CisgICAgICAgICAgICAgICAgKGIgPT09 IDMpID8gJ3JkJyA6ICd0aCc7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVy ICsgb3V0cHV0OworICAgICAgICB9LAorICAgICAgICB3ZWVrIDogeworICAg ICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkg b2YgdGhlIHdlZWsuCisgICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2Vl ayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2Yg dGhlIHllYXIuCisgICAgICAgIH0KKyAgICB9KTsKKworCisgICAgdmFyIGVu X256ID0gbW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgnZW4tbnonLCB7 CisgICAgICAgIG1vbnRocyA6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0Fw cmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05v dmVtYmVyX0RlY2VtYmVyJy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNT aG9ydCA6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9P Y3RfTm92X0RlYycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXMgOiAn U3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9Gcmlk YXlfU2F0dXJkYXknLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzU2hv cnQgOiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycp LAorICAgICAgICB3ZWVrZGF5c01pbiA6ICdTdV9Nb19UdV9XZV9UaF9Gcl9T YScuc3BsaXQoJ18nKSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7Cisg ICAgICAgICAgICBMVCA6ICdoOm1tIEEnLAorICAgICAgICAgICAgTFRTIDog J2g6bW06c3MgQScsCisgICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLAor ICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLAorICAgICAgICAgICAg TExMIDogJ0QgTU1NTSBZWVlZIGg6bW0gQScsCisgICAgICAgICAgICBMTExM IDogJ2RkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQScKKyAgICAgICAgfSwKKyAg ICAgICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBzYW1lRGF5IDogJ1tU b2RheSBhdF0gTFQnLAorICAgICAgICAgICAgbmV4dERheSA6ICdbVG9tb3Jy b3cgYXRdIExUJywKKyAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2F0 XSBMVCcsCisgICAgICAgICAgICBsYXN0RGF5IDogJ1tZZXN0ZXJkYXkgYXRd IExUJywKKyAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tMYXN0XSBkZGRkIFth dF0gTFQnLAorICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCcKKyAgICAgICAg fSwKKyAgICAgICAgcmVsYXRpdmVUaW1lIDogeworICAgICAgICAgICAgZnV0 dXJlIDogJ2luICVzJywKKyAgICAgICAgICAgIHBhc3QgOiAnJXMgYWdvJywK KyAgICAgICAgICAgIHMgOiAnYSBmZXcgc2Vjb25kcycsCisgICAgICAgICAg ICBtIDogJ2EgbWludXRlJywKKyAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0 ZXMnLAorICAgICAgICAgICAgaCA6ICdhbiBob3VyJywKKyAgICAgICAgICAg IGhoIDogJyVkIGhvdXJzJywKKyAgICAgICAgICAgIGQgOiAnYSBkYXknLAor ICAgICAgICAgICAgZGQgOiAnJWQgZGF5cycsCisgICAgICAgICAgICBNIDog J2EgbW9udGgnLAorICAgICAgICAgICAgTU0gOiAnJWQgbW9udGhzJywKKyAg ICAgICAgICAgIHkgOiAnYSB5ZWFyJywKKyAgICAgICAgICAgIHl5IDogJyVk IHllYXJzJworICAgICAgICB9LAorICAgICAgICBvcmRpbmFsUGFyc2U6IC9c ZHsxLDJ9KHN0fG5kfHJkfHRoKS8sCisgICAgICAgIG9yZGluYWwgOiBmdW5j dGlvbiAobnVtYmVyKSB7CisgICAgICAgICAgICB2YXIgYiA9IG51bWJlciAl IDEwLAorICAgICAgICAgICAgICAgIG91dHB1dCA9ICh+fihudW1iZXIgJSAx MDAgLyAxMCkgPT09IDEpID8gJ3RoJyA6CisgICAgICAgICAgICAgICAgKGIg PT09IDEpID8gJ3N0JyA6CisgICAgICAgICAgICAgICAgKGIgPT09IDIpID8g J25kJyA6CisgICAgICAgICAgICAgICAgKGIgPT09IDMpID8gJ3JkJyA6ICd0 aCc7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0OworICAg ICAgICB9LAorICAgICAgICB3ZWVrIDogeworICAgICAgICAgICAgZG93IDog MSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCisg ICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5z IEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuCisgICAg ICAgIH0KKyAgICB9KTsKKworCisgICAgdmFyIGVvID0gbW9tZW50X19kZWZh dWx0LmRlZmluZUxvY2FsZSgnZW8nLCB7CisgICAgICAgIG1vbnRocyA6ICdq YW51YXJvX2ZlYnJ1YXJvX21hcnRvX2Fwcmlsb19tYWpvX2p1bmlvX2p1bGlv X2HFrWd1c3RvX3NlcHRlbWJyb19va3RvYnJvX25vdmVtYnJvX2RlY2VtYnJv Jy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNTaG9ydCA6ICdqYW5fZmVi X21hcl9hcHJfbWFqX2p1bl9qdWxfYcWtZ19zZXBfb2t0X25vdl9kZWMnLnNw bGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzIDogJ0RpbWFuxIlvX0x1bmRv X01hcmRvX01lcmtyZWRvX8S0YcWtZG9fVmVuZHJlZG9fU2FiYXRvJy5zcGxp dCgnXycpLAorICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0RpbV9MdW5fTWFy ZF9NZXJrX8S0YcWtX1Zlbl9TYWInLnNwbGl0KCdfJyksCisgICAgICAgIHdl ZWtkYXlzTWluIDogJ0RpX0x1X01hX01lX8S0YV9WZV9TYScuc3BsaXQoJ18n KSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7CisgICAgICAgICAgICBM VCA6ICdISDptbScsCisgICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLAor ICAgICAgICAgICAgTCA6ICdZWVlZLU1NLUREJywKKyAgICAgICAgICAgIExM IDogJ0RbLWFuIGRlXSBNTU1NLCBZWVlZJywKKyAgICAgICAgICAgIExMTCA6 ICdEWy1hbiBkZV0gTU1NTSwgWVlZWSBISDptbScsCisgICAgICAgICAgICBM TExMIDogJ2RkZGQsIFtsYV0gRFstYW4gZGVdIE1NTU0sIFlZWVkgSEg6bW0n CisgICAgICAgIH0sCisgICAgICAgIG1lcmlkaWVtUGFyc2U6IC9bYXBdXC50 XC5tL2ksCisgICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkgeworICAg ICAgICAgICAgcmV0dXJuIGlucHV0LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgp ID09PSAncCc7CisgICAgICAgIH0sCisgICAgICAgIG1lcmlkaWVtIDogZnVu Y3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7CisgICAgICAgICAg ICBpZiAoaG91cnMgPiAxMSkgeworICAgICAgICAgICAgICAgIHJldHVybiBp c0xvd2VyID8gJ3AudC5tLicgOiAnUC5ULk0uJzsKKyAgICAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnYS50 Lm0uJyA6ICdBLlQuTS4nOworICAgICAgICAgICAgfQorICAgICAgICB9LAor ICAgICAgICBjYWxlbmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVEYXkgOiAn W0hvZGlhxa0gamVdIExUJywKKyAgICAgICAgICAgIG5leHREYXkgOiAnW01v cmdhxa0gamVdIExUJywKKyAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQg W2plXSBMVCcsCisgICAgICAgICAgICBsYXN0RGF5IDogJ1tIaWVyYcWtIGpl XSBMVCcsCisgICAgICAgICAgICBsYXN0V2VlayA6ICdbcGFzaW50YV0gZGRk ZCBbamVdIExUJywKKyAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnCisgICAg ICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZSA6IHsKKyAgICAgICAgICAg IGZ1dHVyZSA6ICdqZSAlcycsCisgICAgICAgICAgICBwYXN0IDogJ2FudGHF rSAlcycsCisgICAgICAgICAgICBzIDogJ3Nla3VuZG9qJywKKyAgICAgICAg ICAgIG0gOiAnbWludXRvJywKKyAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0 b2onLAorICAgICAgICAgICAgaCA6ICdob3JvJywKKyAgICAgICAgICAgIGho IDogJyVkIGhvcm9qJywKKyAgICAgICAgICAgIGQgOiAndGFnbycsLy9uZSAn ZGl1cm5vJywgxIlhciBlc3RhcyB1eml0YSBwb3IgcHJva3NpbXVtbworICAg ICAgICAgICAgZGQgOiAnJWQgdGFnb2onLAorICAgICAgICAgICAgTSA6ICdt b25hdG8nLAorICAgICAgICAgICAgTU0gOiAnJWQgbW9uYXRvaicsCisgICAg ICAgICAgICB5IDogJ2phcm8nLAorICAgICAgICAgICAgeXkgOiAnJWQgamFy b2onCisgICAgICAgIH0sCisgICAgICAgIG9yZGluYWxQYXJzZTogL1xkezEs Mn1hLywKKyAgICAgICAgb3JkaW5hbCA6ICclZGEnLAorICAgICAgICB3ZWVr IDogeworICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBm aXJzdCBkYXkgb2YgdGhlIHdlZWsuCisgICAgICAgICAgICBkb3kgOiA3ICAv LyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxc3QgaXMgdGhlIGZpcnN0 IHdlZWsgb2YgdGhlIHllYXIuCisgICAgICAgIH0KKyAgICB9KTsKKworCisg ICAgdmFyIGVzX2RvX19tb250aHNTaG9ydERvdCA9ICdlbmUuX2ZlYi5fbWFy Ll9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGlj Licuc3BsaXQoJ18nKSwKKyAgICAgICAgZXNfZG9fX21vbnRoc1Nob3J0ID0g J2VuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3Zf ZGljJy5zcGxpdCgnXycpOworCisgICAgdmFyIGVzX2RvID0gbW9tZW50X19k ZWZhdWx0LmRlZmluZUxvY2FsZSgnZXMtZG8nLCB7CisgICAgICAgIG1vbnRo cyA6ICdlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVs aW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVt YnJlJy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNTaG9ydCA6IGZ1bmN0 aW9uIChtLCBmb3JtYXQpIHsKKyAgICAgICAgICAgIGlmICgvLU1NTS0vLnRl c3QoZm9ybWF0KSkgeworICAgICAgICAgICAgICAgIHJldHVybiBlc19kb19f bW9udGhzU2hvcnRbbS5tb250aCgpXTsKKyAgICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgICAgcmV0dXJuIGVzX2RvX19tb250aHNTaG9ydERv dFttLm1vbnRoKCldOworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAg ICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSwKKyAgICAgICAgd2Vla2Rh eXMgOiAnZG9taW5nb19sdW5lc19tYXJ0ZXNfbWnDqXJjb2xlc19qdWV2ZXNf dmllcm5lc19zw6FiYWRvJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5 c1Nob3J0IDogJ2RvbS5fbHVuLl9tYXIuX21pw6kuX2p1ZS5fdmllLl9zw6Fi Licuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNNaW4gOiAnZG9fbHVf bWFfbWlfanVfdmlfc8OhJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5 c1BhcnNlRXhhY3QgOiB0cnVlLAorICAgICAgICBsb25nRGF0ZUZvcm1hdCA6 IHsKKyAgICAgICAgICAgIExUIDogJ2g6bW0gQScsCisgICAgICAgICAgICBM VFMgOiAnaDptbTpzcyBBJywKKyAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZ WScsCisgICAgICAgICAgICBMTCA6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkn LAorICAgICAgICAgICAgTExMIDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBo Om1tIEEnLAorICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIFtkZV0gTU1N TSBbZGVdIFlZWVkgaDptbSBBJworICAgICAgICB9LAorICAgICAgICBjYWxl bmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVEYXkgOiBmdW5jdGlvbiAoKSB7 CisgICAgICAgICAgICAgICAgcmV0dXJuICdbaG95IGEgbGEnICsgKCh0aGlz LmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10gTFQnOworICAgICAg ICAgICAgfSwKKyAgICAgICAgICAgIG5leHREYXkgOiBmdW5jdGlvbiAoKSB7 CisgICAgICAgICAgICAgICAgcmV0dXJuICdbbWHDsWFuYSBhIGxhJyArICgo dGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJzsKKyAg ICAgICAgICAgIH0sCisgICAgICAgICAgICBuZXh0V2VlayA6IGZ1bmN0aW9u ICgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgW2EgbGEnICsg KCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10gTFQnOwor ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGxhc3REYXkgOiBmdW5jdGlv biAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICdbYXllciBhIGxhJyAr ICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJzsK KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0 aW9uICgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ1tlbF0gZGRkZCBb cGFzYWRvIGEgbGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDog JycpICsgJ10gTFQnOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNh bWVFbHNlIDogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGlt ZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICdlbiAlcycsCisgICAgICAg ICAgICBwYXN0IDogJ2hhY2UgJXMnLAorICAgICAgICAgICAgcyA6ICd1bm9z IHNlZ3VuZG9zJywKKyAgICAgICAgICAgIG0gOiAndW4gbWludXRvJywKKyAg ICAgICAgICAgIG1tIDogJyVkIG1pbnV0b3MnLAorICAgICAgICAgICAgaCA6 ICd1bmEgaG9yYScsCisgICAgICAgICAgICBoaCA6ICclZCBob3JhcycsCisg ICAgICAgICAgICBkIDogJ3VuIGTDrWEnLAorICAgICAgICAgICAgZGQgOiAn JWQgZMOtYXMnLAorICAgICAgICAgICAgTSA6ICd1biBtZXMnLAorICAgICAg ICAgICAgTU0gOiAnJWQgbWVzZXMnLAorICAgICAgICAgICAgeSA6ICd1biBh w7FvJywKKyAgICAgICAgICAgIHl5IDogJyVkIGHDsW9zJworICAgICAgICB9 LAorICAgICAgICBvcmRpbmFsUGFyc2UgOiAvXGR7MSwyfcK6LywKKyAgICAg ICAgb3JkaW5hbCA6ICclZMK6JywKKyAgICAgICAgd2VlayA6IHsKKyAgICAg ICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9m IHRoZSB3ZWVrLgorICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsg dGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRo ZSB5ZWFyLgorICAgICAgICB9CisgICAgfSk7CisKKworICAgIHZhciBlc19f bW9udGhzU2hvcnREb3QgPSAnZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1 bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4nLnNwbGl0KCdfJyks CisgICAgICAgIGVzX19tb250aHNTaG9ydCA9ICdlbmVfZmViX21hcl9hYnJf bWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYycuc3BsaXQoJ18nKTsK KworICAgIHZhciBlcyA9IG1vbWVudF9fZGVmYXVsdC5kZWZpbmVMb2NhbGUo J2VzJywgeworICAgICAgICBtb250aHMgOiAnZW5lcm9fZmVicmVyb19tYXJ6 b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29j dHVicmVfbm92aWVtYnJlX2RpY2llbWJyZScuc3BsaXQoJ18nKSwKKyAgICAg ICAgbW9udGhzU2hvcnQgOiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7CisgICAg ICAgICAgICBpZiAoLy1NTU0tLy50ZXN0KGZvcm1hdCkpIHsKKyAgICAgICAg ICAgICAgICByZXR1cm4gZXNfX21vbnRoc1Nob3J0W20ubW9udGgoKV07Cisg ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBl c19fbW9udGhzU2hvcnREb3RbbS5tb250aCgpXTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgfSwKKyAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUs CisgICAgICAgIHdlZWtkYXlzIDogJ2RvbWluZ29fbHVuZXNfbWFydGVzX21p w6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbycuc3BsaXQoJ18nKSwK KyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkb20uX2x1bi5fbWFyLl9tacOp Ll9qdWUuX3ZpZS5fc8OhYi4nLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtk YXlzTWluIDogJ2RvX2x1X21hX21pX2p1X3ZpX3PDoScuc3BsaXQoJ18nKSwK KyAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSwKKyAgICAgICAg bG9uZ0RhdGVGb3JtYXQgOiB7CisgICAgICAgICAgICBMVCA6ICdIOm1tJywK KyAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJywKKyAgICAgICAgICAgIEwg OiAnREQvTU0vWVlZWScsCisgICAgICAgICAgICBMTCA6ICdEIFtkZV0gTU1N TSBbZGVdIFlZWVknLAorICAgICAgICAgICAgTExMIDogJ0QgW2RlXSBNTU1N IFtkZV0gWVlZWSBIOm1tJywKKyAgICAgICAgICAgIExMTEwgOiAnZGRkZCwg RCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0nCisgICAgICAgIH0sCisgICAg ICAgIGNhbGVuZGFyIDogeworICAgICAgICAgICAgc2FtZURheSA6IGZ1bmN0 aW9uICgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ1tob3kgYSBsYScg KyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7 CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgbmV4dERheSA6IGZ1bmN0 aW9uICgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ1ttYcOxYW5hIGEg bGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10g TFQnOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIG5leHRXZWVrIDog ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBb YSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAn XSBMVCc7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgbGFzdERheSA6 IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ1theWVy IGEgbGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsg J10gTFQnOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGxhc3RXZWVr IDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnW2Vs XSBkZGRkIFtwYXNhZG8gYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkg PyAncycgOiAnJykgKyAnXSBMVCc7CisgICAgICAgICAgICB9LAorICAgICAg ICAgICAgc2FtZUVsc2UgOiAnTCcKKyAgICAgICAgfSwKKyAgICAgICAgcmVs YXRpdmVUaW1lIDogeworICAgICAgICAgICAgZnV0dXJlIDogJ2VuICVzJywK KyAgICAgICAgICAgIHBhc3QgOiAnaGFjZSAlcycsCisgICAgICAgICAgICBz IDogJ3Vub3Mgc2VndW5kb3MnLAorICAgICAgICAgICAgbSA6ICd1biBtaW51 dG8nLAorICAgICAgICAgICAgbW0gOiAnJWQgbWludXRvcycsCisgICAgICAg ICAgICBoIDogJ3VuYSBob3JhJywKKyAgICAgICAgICAgIGhoIDogJyVkIGhv cmFzJywKKyAgICAgICAgICAgIGQgOiAndW4gZMOtYScsCisgICAgICAgICAg ICBkZCA6ICclZCBkw61hcycsCisgICAgICAgICAgICBNIDogJ3VuIG1lcycs CisgICAgICAgICAgICBNTSA6ICclZCBtZXNlcycsCisgICAgICAgICAgICB5 IDogJ3VuIGHDsW8nLAorICAgICAgICAgICAgeXkgOiAnJWQgYcOxb3MnCisg ICAgICAgIH0sCisgICAgICAgIG9yZGluYWxQYXJzZSA6IC9cZHsxLDJ9wrov LAorICAgICAgICBvcmRpbmFsIDogJyVkwronLAorICAgICAgICB3ZWVrIDog eworICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJz dCBkYXkgb2YgdGhlIHdlZWsuCisgICAgICAgICAgICBkb3kgOiA0ICAvLyBU aGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdl ZWsgb2YgdGhlIHllYXIuCisgICAgICAgIH0KKyAgICB9KTsKKworCisgICAg ZnVuY3Rpb24gZXRfX3Byb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRo b3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7CisgICAgICAgIHZhciBmb3Jt YXQgPSB7CisgICAgICAgICAgICAncycgOiBbJ23DtW5lIHNla3VuZGknLCAn bcO1bmkgc2VrdW5kJywgJ3BhYXIgc2VrdW5kaXQnXSwKKyAgICAgICAgICAg ICdtJyA6IFsnw7xoZSBtaW51dGknLCAnw7xrcyBtaW51dCddLAorICAgICAg ICAgICAgJ21tJzogW251bWJlciArICcgbWludXRpJywgbnVtYmVyICsgJyBt aW51dGl0J10sCisgICAgICAgICAgICAnaCcgOiBbJ8O8aGUgdHVubmknLCAn dHVuZCBhZWdhJywgJ8O8a3MgdHVuZCddLAorICAgICAgICAgICAgJ2hoJzog W251bWJlciArICcgdHVubmknLCBudW1iZXIgKyAnIHR1bmRpJ10sCisgICAg ICAgICAgICAnZCcgOiBbJ8O8aGUgcMOkZXZhJywgJ8O8a3MgcMOkZXYnXSwK KyAgICAgICAgICAgICdNJyA6IFsna3V1IGFqYScsICdrdXUgYWVnYScsICfD vGtzIGt1dSddLAorICAgICAgICAgICAgJ01NJzogW251bWJlciArICcga3V1 JywgbnVtYmVyICsgJyBrdXVkJ10sCisgICAgICAgICAgICAneScgOiBbJ8O8 aGUgYWFzdGEnLCAnYWFzdGEnLCAnw7xrcyBhYXN0YSddLAorICAgICAgICAg ICAgJ3l5JzogW251bWJlciArICcgYWFzdGEnLCBudW1iZXIgKyAnIGFhc3Rh dCddCisgICAgICAgIH07CisgICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7 CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0W2tleV1bMl0gPyBmb3JtYXRb a2V5XVsyXSA6IGZvcm1hdFtrZXldWzFdOworICAgICAgICB9CisgICAgICAg IHJldHVybiBpc0Z1dHVyZSA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tl eV1bMV07CisgICAgfQorCisgICAgdmFyIGV0ID0gbW9tZW50X19kZWZhdWx0 LmRlZmluZUxvY2FsZSgnZXQnLCB7CisgICAgICAgIG1vbnRocyAgICAgICAg OiAnamFhbnVhcl92ZWVicnVhcl9tw6RydHNfYXByaWxsX21haV9qdXVuaV9q dXVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9vYmVyX25vdmVtYmVyX2RldHNl bWJlcicuc3BsaXQoJ18nKSwKKyAgICAgICAgbW9udGhzU2hvcnQgICA6ICdq YWFuX3ZlZWJyX23DpHJ0c19hcHJfbWFpX2p1dW5pX2p1dWxpX2F1Z19zZXB0 X29rdF9ub3ZfZGV0cycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXMg ICAgICA6ICdww7xoYXDDpGV2X2VzbWFzcMOkZXZfdGVpc2lww6Rldl9rb2xt YXDDpGV2X25lbGphcMOkZXZfcmVlZGVfbGF1cMOkZXYnLnNwbGl0KCdfJyks CisgICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnUF9FX1RfS19OX1JfTCcuc3Bs aXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNNaW4gICA6ICdQX0VfVF9LX05f Ul9MJy5zcGxpdCgnXycpLAorICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHsK KyAgICAgICAgICAgIExUICAgOiAnSDptbScsCisgICAgICAgICAgICBMVFMg OiAnSDptbTpzcycsCisgICAgICAgICAgICBMICAgIDogJ0RELk1NLllZWVkn LAorICAgICAgICAgICAgTEwgICA6ICdELiBNTU1NIFlZWVknLAorICAgICAg ICAgICAgTExMICA6ICdELiBNTU1NIFlZWVkgSDptbScsCisgICAgICAgICAg ICBMTExMIDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tJworICAgICAgICB9 LAorICAgICAgICBjYWxlbmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVEYXkg IDogJ1tUw6RuYSxdIExUJywKKyAgICAgICAgICAgIG5leHREYXkgIDogJ1tI b21tZSxdIExUJywKKyAgICAgICAgICAgIG5leHRXZWVrIDogJ1tKw6RyZ21p bmVdIGRkZGQgTFQnLAorICAgICAgICAgICAgbGFzdERheSAgOiAnW0VpbGUs XSBMVCcsCisgICAgICAgICAgICBsYXN0V2VlayA6ICdbRWVsbWluZV0gZGRk ZCBMVCcsCisgICAgICAgICAgICBzYW1lRWxzZSA6ICdMJworICAgICAgICB9 LAorICAgICAgICByZWxhdGl2ZVRpbWUgOiB7CisgICAgICAgICAgICBmdXR1 cmUgOiAnJXMgcMOkcmFzdCcsCisgICAgICAgICAgICBwYXN0ICAgOiAnJXMg dGFnYXNpJywKKyAgICAgICAgICAgIHMgICAgICA6IGV0X19wcm9jZXNzUmVs YXRpdmVUaW1lLAorICAgICAgICAgICAgbSAgICAgIDogZXRfX3Byb2Nlc3NS ZWxhdGl2ZVRpbWUsCisgICAgICAgICAgICBtbSAgICAgOiBldF9fcHJvY2Vz c1JlbGF0aXZlVGltZSwKKyAgICAgICAgICAgIGggICAgICA6IGV0X19wcm9j ZXNzUmVsYXRpdmVUaW1lLAorICAgICAgICAgICAgaGggICAgIDogZXRfX3By b2Nlc3NSZWxhdGl2ZVRpbWUsCisgICAgICAgICAgICBkICAgICAgOiBldF9f cHJvY2Vzc1JlbGF0aXZlVGltZSwKKyAgICAgICAgICAgIGRkICAgICA6ICcl ZCBww6RldmEnLAorICAgICAgICAgICAgTSAgICAgIDogZXRfX3Byb2Nlc3NS ZWxhdGl2ZVRpbWUsCisgICAgICAgICAgICBNTSAgICAgOiBldF9fcHJvY2Vz c1JlbGF0aXZlVGltZSwKKyAgICAgICAgICAgIHkgICAgICA6IGV0X19wcm9j ZXNzUmVsYXRpdmVUaW1lLAorICAgICAgICAgICAgeXkgICAgIDogZXRfX3By b2Nlc3NSZWxhdGl2ZVRpbWUKKyAgICAgICAgfSwKKyAgICAgICAgb3JkaW5h bFBhcnNlOiAvXGR7MSwyfVwuLywKKyAgICAgICAgb3JkaW5hbCA6ICclZC4n LAorICAgICAgICB3ZWVrIDogeworICAgICAgICAgICAgZG93IDogMSwgLy8g TW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCisgICAgICAg ICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0 dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuCisgICAgICAgIH0K KyAgICB9KTsKKworCisgICAgdmFyIGV1ID0gbW9tZW50X19kZWZhdWx0LmRl ZmluZUxvY2FsZSgnZXUnLCB7CisgICAgICAgIG1vbnRocyA6ICd1cnRhcnJp bGFfb3RzYWlsYV9tYXJ0eG9hX2FwaXJpbGFfbWFpYXR6YV9la2FpbmFfdXp0 YWlsYV9hYnV6dHVhX2lyYWlsYV91cnJpYV9hemFyb2FfYWJlbmR1YScuc3Bs aXQoJ18nKSwKKyAgICAgICAgbW9udGhzU2hvcnQgOiAndXJ0Ll9vdHMuX21h ci5fYXBpLl9tYWkuX2VrYS5fdXp0Ll9hYnUuX2lyYS5fdXJyLl9hemEuX2Fi ZS4nLnNwbGl0KCdfJyksCisgICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0 cnVlLAorICAgICAgICB3ZWVrZGF5cyA6ICdpZ2FuZGVhX2FzdGVsZWhlbmFf YXN0ZWFydGVhX2FzdGVhemtlbmFfb3N0ZWd1bmFfb3N0aXJhbGFfbGFydW5i YXRhJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ2ln Ll9hbC5fYXIuX2F6Ll9vZy5fb2wuX2xyLicuc3BsaXQoJ18nKSwKKyAgICAg ICAgd2Vla2RheXNNaW4gOiAnaWdfYWxfYXJfYXpfb2dfb2xfbHInLnNwbGl0 KCdfJyksCisgICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsCisg ICAgICAgIGxvbmdEYXRlRm9ybWF0IDogeworICAgICAgICAgICAgTFQgOiAn SEg6bW0nLAorICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJywKKyAgICAg ICAgICAgIEwgOiAnWVlZWS1NTS1ERCcsCisgICAgICAgICAgICBMTCA6ICdZ WVlZW2tvXSBNTU1NW3Jlbl0gRFthXScsCisgICAgICAgICAgICBMTEwgOiAn WVlZWVtrb10gTU1NTVtyZW5dIERbYV0gSEg6bW0nLAorICAgICAgICAgICAg TExMTCA6ICdkZGRkLCBZWVlZW2tvXSBNTU1NW3Jlbl0gRFthXSBISDptbScs CisgICAgICAgICAgICBsIDogJ1lZWVktTS1EJywKKyAgICAgICAgICAgIGxs IDogJ1lZWVlba29dIE1NTSBEW2FdJywKKyAgICAgICAgICAgIGxsbCA6ICdZ WVlZW2tvXSBNTU0gRFthXSBISDptbScsCisgICAgICAgICAgICBsbGxsIDog J2RkZCwgWVlZWVtrb10gTU1NIERbYV0gSEg6bW0nCisgICAgICAgIH0sCisg ICAgICAgIGNhbGVuZGFyIDogeworICAgICAgICAgICAgc2FtZURheSA6ICdb Z2F1cl0gTFRbZXRhbl0nLAorICAgICAgICAgICAgbmV4dERheSA6ICdbYmlo YXJdIExUW2V0YW5dJywKKyAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQg TFRbZXRhbl0nLAorICAgICAgICAgICAgbGFzdERheSA6ICdbYXR6b10gTFRb ZXRhbl0nLAorICAgICAgICAgICAgbGFzdFdlZWsgOiAnW2F1cnJla29dIGRk ZGQgTFRbZXRhbl0nLAorICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCcKKyAg ICAgICAgfSwKKyAgICAgICAgcmVsYXRpdmVUaW1lIDogeworICAgICAgICAg ICAgZnV0dXJlIDogJyVzIGJhcnJ1JywKKyAgICAgICAgICAgIHBhc3QgOiAn ZHVlbGEgJXMnLAorICAgICAgICAgICAgcyA6ICdzZWd1bmRvIGJhdHp1aycs CisgICAgICAgICAgICBtIDogJ21pbnV0dSBiYXQnLAorICAgICAgICAgICAg bW0gOiAnJWQgbWludXR1JywKKyAgICAgICAgICAgIGggOiAnb3JkdSBiYXQn LAorICAgICAgICAgICAgaGggOiAnJWQgb3JkdScsCisgICAgICAgICAgICBk IDogJ2VndW4gYmF0JywKKyAgICAgICAgICAgIGRkIDogJyVkIGVndW4nLAor ICAgICAgICAgICAgTSA6ICdoaWxhYmV0ZSBiYXQnLAorICAgICAgICAgICAg TU0gOiAnJWQgaGlsYWJldGUnLAorICAgICAgICAgICAgeSA6ICd1cnRlIGJh dCcsCisgICAgICAgICAgICB5eSA6ICclZCB1cnRlJworICAgICAgICB9LAor ICAgICAgICBvcmRpbmFsUGFyc2U6IC9cZHsxLDJ9XC4vLAorICAgICAgICBv cmRpbmFsIDogJyVkLicsCisgICAgICAgIHdlZWsgOiB7CisgICAgICAgICAg ICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUg d2Vlay4KKyAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQg Y29udGFpbnMgSmFuIDFzdCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVh ci4KKyAgICAgICAgfQorICAgIH0pOworCisKKyAgICB2YXIgZmFfX3N5bWJv bE1hcCA9IHsKKyAgICAgICAgJzEnOiAn27EnLAorICAgICAgICAnMic6ICfb sicsCisgICAgICAgICczJzogJ9uzJywKKyAgICAgICAgJzQnOiAn27QnLAor ICAgICAgICAnNSc6ICfbtScsCisgICAgICAgICc2JzogJ9u2JywKKyAgICAg ICAgJzcnOiAn27cnLAorICAgICAgICAnOCc6ICfbuCcsCisgICAgICAgICc5 JzogJ9u5JywKKyAgICAgICAgJzAnOiAn27AnCisgICAgfSwgZmFfX251bWJl ck1hcCA9IHsKKyAgICAgICAgJ9uxJzogJzEnLAorICAgICAgICAn27InOiAn MicsCisgICAgICAgICfbsyc6ICczJywKKyAgICAgICAgJ9u0JzogJzQnLAor ICAgICAgICAn27UnOiAnNScsCisgICAgICAgICfbtic6ICc2JywKKyAgICAg ICAgJ9u3JzogJzcnLAorICAgICAgICAn27gnOiAnOCcsCisgICAgICAgICfb uSc6ICc5JywKKyAgICAgICAgJ9uwJzogJzAnCisgICAgfTsKKworICAgIHZh ciBmYSA9IG1vbWVudF9fZGVmYXVsdC5kZWZpbmVMb2NhbGUoJ2ZhJywgewor ICAgICAgICBtb250aHMgOiAn2pjYp9mG2YjbjNmHX9mB2YjYsduM2Ydf2YXY p9ix2LNf2KLZiNix24zZhF/ZhdmHX9qY2YjYptmGX9qY2YjYptuM2Ydf2KfZ iNiqX9iz2b7Yqtin2YXYqNixX9in2qnYqtio2LFf2YbZiNin2YXYqNixX9iv 2LPYp9mF2KjYsScuc3BsaXQoJ18nKSwKKyAgICAgICAgbW9udGhzU2hvcnQg OiAn2pjYp9mG2YjbjNmHX9mB2YjYsduM2Ydf2YXYp9ix2LNf2KLZiNix24zZ hF/ZhdmHX9qY2YjYptmGX9qY2YjYptuM2Ydf2KfZiNiqX9iz2b7Yqtin2YXY qNixX9in2qnYqtio2LFf2YbZiNin2YXYqNixX9iv2LPYp9mF2KjYsScuc3Bs aXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXMgOiAn24zaqVx1MjAwY9i02YbY qNmHX9iv2YjYtNmG2KjZh1/Ys9mHXHUyMDBj2LTZhtio2Ydf2obZh9in2LHY tNmG2KjZh1/ZvtmG2KxcdTIwMGPYtNmG2KjZh1/YrNmF2LnZh1/YtNmG2KjZ hycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfbjNqp XHUyMDBj2LTZhtio2Ydf2K/ZiNi02YbYqNmHX9iz2YdcdTIwMGPYtNmG2KjZ h1/ahtmH2KfYsdi02YbYqNmHX9m+2YbYrFx1MjAwY9i02YbYqNmHX9is2YXY udmHX9i02YbYqNmHJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c01p biA6ICfbjF/Yr1/Ys1/ahl/Zvl/YrF/YtCcuc3BsaXQoJ18nKSwKKyAgICAg ICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSwKKyAgICAgICAgbG9uZ0Rh dGVGb3JtYXQgOiB7CisgICAgICAgICAgICBMVCA6ICdISDptbScsCisgICAg ICAgICAgICBMVFMgOiAnSEg6bW06c3MnLAorICAgICAgICAgICAgTCA6ICdE RC9NTS9ZWVlZJywKKyAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJywK KyAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsCisgICAg ICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJworICAg ICAgICB9LAorICAgICAgICBtZXJpZGllbVBhcnNlOiAv2YLYqNmEINin2LIg 2LjZh9ixfNio2LnYryDYp9iyINi42YfYsS8sCisgICAgICAgIGlzUE06IGZ1 bmN0aW9uIChpbnB1dCkgeworICAgICAgICAgICAgcmV0dXJuIC/YqNi52K8g 2KfYsiDYuNmH2LEvLnRlc3QoaW5wdXQpOworICAgICAgICB9LAorICAgICAg ICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIp IHsKKyAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHsKKyAgICAgICAgICAg ICAgICByZXR1cm4gJ9mC2KjZhCDYp9iyINi42YfYsSc7CisgICAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiAn2KjYudivINin 2LIg2LjZh9ixJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg ICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBzYW1lRGF5IDogJ1vYp9mF 2LHZiNiyINiz2KfYudiqXSBMVCcsCisgICAgICAgICAgICBuZXh0RGF5IDog J1vZgdix2K/YpyDYs9in2LnYql0gTFQnLAorICAgICAgICAgICAgbmV4dFdl ZWsgOiAnZGRkZCBb2LPYp9i52KpdIExUJywKKyAgICAgICAgICAgIGxhc3RE YXkgOiAnW9iv24zYsdmI2LIg2LPYp9i52KpdIExUJywKKyAgICAgICAgICAg IGxhc3RXZWVrIDogJ2RkZGQgW9m+24zYtF0gW9iz2KfYudiqXSBMVCcsCisg ICAgICAgICAgICBzYW1lRWxzZSA6ICdMJworICAgICAgICB9LAorICAgICAg ICByZWxhdGl2ZVRpbWUgOiB7CisgICAgICAgICAgICBmdXR1cmUgOiAn2K/Y sSAlcycsCisgICAgICAgICAgICBwYXN0IDogJyVzINm+24zYtCcsCisgICAg ICAgICAgICBzIDogJ9qG2YbYr9uM2YYg2KvYp9mG24zZhycsCisgICAgICAg ICAgICBtIDogJ9uM2qkg2K/ZgtuM2YLZhycsCisgICAgICAgICAgICBtbSA6 ICclZCDYr9mC24zZgtmHJywKKyAgICAgICAgICAgIGggOiAn24zaqSDYs9in 2LnYqicsCisgICAgICAgICAgICBoaCA6ICclZCDYs9in2LnYqicsCisgICAg ICAgICAgICBkIDogJ9uM2qkg2LHZiNiyJywKKyAgICAgICAgICAgIGRkIDog JyVkINix2YjYsicsCisgICAgICAgICAgICBNIDogJ9uM2qkg2YXYp9mHJywK KyAgICAgICAgICAgIE1NIDogJyVkINmF2KfZhycsCisgICAgICAgICAgICB5 IDogJ9uM2qkg2LPYp9mEJywKKyAgICAgICAgICAgIHl5IDogJyVkINiz2KfZ hCcKKyAgICAgICAgfSwKKyAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChz dHJpbmcpIHsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgv W9uwLdu5XS9nLCBmdW5jdGlvbiAobWF0Y2gpIHsKKyAgICAgICAgICAgICAg ICByZXR1cm4gZmFfX251bWJlck1hcFttYXRjaF07CisgICAgICAgICAgICB9 KS5yZXBsYWNlKC/YjC9nLCAnLCcpOworICAgICAgICB9LAorICAgICAgICBw b3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7CisgICAgICAgICAgICBy ZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xkL2csIGZ1bmN0aW9uIChtYXRjaCkg eworICAgICAgICAgICAgICAgIHJldHVybiBmYV9fc3ltYm9sTWFwW21hdGNo XTsKKyAgICAgICAgICAgIH0pLnJlcGxhY2UoLywvZywgJ9iMJyk7CisgICAg ICAgIH0sCisgICAgICAgIG9yZGluYWxQYXJzZTogL1xkezEsMn3ZhS8sCisg ICAgICAgIG9yZGluYWwgOiAnJWTZhScsCisgICAgICAgIHdlZWsgOiB7Cisg ICAgICAgICAgICBkb3cgOiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3Qg ZGF5IG9mIHRoZSB3ZWVrLgorICAgICAgICAgICAgZG95IDogMTIgLy8gVGhl IHdlZWsgdGhhdCBjb250YWlucyBKYW4gMXN0IGlzIHRoZSBmaXJzdCB3ZWVr IG9mIHRoZSB5ZWFyLgorICAgICAgICB9CisgICAgfSk7CisKKworICAgIHZh ciBudW1iZXJzUGFzdCA9ICdub2xsYSB5a3NpIGtha3NpIGtvbG1lIG5lbGrD pCB2aWlzaSBrdXVzaSBzZWl0c2Vtw6RuIGthaGRla3NhbiB5aGRla3PDpG4n LnNwbGl0KCcgJyksCisgICAgICAgIG51bWJlcnNGdXR1cmUgPSBbCisgICAg ICAgICAgICAnbm9sbGEnLCAneWhkZW4nLCAna2FoZGVuJywgJ2tvbG1lbics ICduZWxqw6RuJywgJ3ZpaWRlbicsICdrdXVkZW4nLAorICAgICAgICAgICAg bnVtYmVyc1Bhc3RbN10sIG51bWJlcnNQYXN0WzhdLCBudW1iZXJzUGFzdFs5 XQorICAgICAgICBdOworICAgIGZ1bmN0aW9uIGZpX190cmFuc2xhdGUobnVt YmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7CisgICAgICAg IHZhciByZXN1bHQgPSAnJzsKKyAgICAgICAgc3dpdGNoIChrZXkpIHsKKyAg ICAgICAgICAgIGNhc2UgJ3MnOgorICAgICAgICAgICAgICAgIHJldHVybiBp c0Z1dHVyZSA/ICdtdXV0YW1hbiBzZWt1bm5pbicgOiAnbXV1dGFtYSBzZWt1 bnRpJzsKKyAgICAgICAgICAgIGNhc2UgJ20nOgorICAgICAgICAgICAgICAg IHJldHVybiBpc0Z1dHVyZSA/ICdtaW51dXRpbicgOiAnbWludXV0dGknOwor ICAgICAgICAgICAgY2FzZSAnbW0nOgorICAgICAgICAgICAgICAgIHJlc3Vs dCA9IGlzRnV0dXJlID8gJ21pbnV1dGluJyA6ICdtaW51dXR0aWEnOworICAg ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnaCc6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ3R1bm5pbicgOiAn dHVudGknOworICAgICAgICAgICAgY2FzZSAnaGgnOgorICAgICAgICAgICAg ICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ3R1bm5pbicgOiAndHVudGlhJzsK KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2Qn OgorICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdww6RpdsOk bicgOiAncMOkaXbDpCc7CisgICAgICAgICAgICBjYXNlICdkZCc6CisgICAg ICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAncMOkaXbDpG4nIDog J3DDpGl2w6TDpCc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg ICAgICBjYXNlICdNJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1 cmUgPyAna3V1a2F1ZGVuJyA6ICdrdXVrYXVzaSc7CisgICAgICAgICAgICBj YXNlICdNTSc6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUg PyAna3V1a2F1ZGVuJyA6ICdrdXVrYXV0dGEnOworICAgICAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgICAgY2FzZSAneSc6CisgICAgICAgICAgICAg ICAgcmV0dXJuIGlzRnV0dXJlID8gJ3Z1b2RlbicgOiAndnVvc2knOworICAg ICAgICAgICAgY2FzZSAneXknOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9 IGlzRnV0dXJlID8gJ3Z1b2RlbicgOiAndnVvdHRhJzsKKyAgICAgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQgPSB2ZXJi YWxOdW1iZXIobnVtYmVyLCBpc0Z1dHVyZSkgKyAnICcgKyByZXN1bHQ7Cisg ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGZ1bmN0aW9uIHZl cmJhbE51bWJlcihudW1iZXIsIGlzRnV0dXJlKSB7CisgICAgICAgIHJldHVy biBudW1iZXIgPCAxMCA/IChpc0Z1dHVyZSA/IG51bWJlcnNGdXR1cmVbbnVt YmVyXSA6IG51bWJlcnNQYXN0W251bWJlcl0pIDogbnVtYmVyOworICAgIH0K KworICAgIHZhciBmaSA9IG1vbWVudF9fZGVmYXVsdC5kZWZpbmVMb2NhbGUo J2ZpJywgeworICAgICAgICBtb250aHMgOiAndGFtbWlrdXVfaGVsbWlrdXVf bWFhbGlza3V1X2h1aHRpa3V1X3RvdWtva3V1X2tlc8Oka3V1X2hlaW7DpGt1 dV9lbG9rdXVfc3l5c2t1dV9sb2tha3V1X21hcnJhc2t1dV9qb3VsdWt1dScu c3BsaXQoJ18nKSwKKyAgICAgICAgbW9udGhzU2hvcnQgOiAndGFtbWlfaGVs bWlfbWFhbGlzX2h1aHRpX3RvdWtvX2tlc8OkX2hlaW7DpF9lbG9fc3l5c19s b2thX21hcnJhc19qb3VsdScuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2Rh eXMgOiAnc3VubnVudGFpX21hYW5hbnRhaV90aWlzdGFpX2tlc2tpdmlpa2tv X3RvcnN0YWlfcGVyamFudGFpX2xhdWFudGFpJy5zcGxpdCgnXycpLAorICAg ICAgICB3ZWVrZGF5c1Nob3J0IDogJ3N1X21hX3RpX2tlX3RvX3BlX2xhJy5z cGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c01pbiA6ICdzdV9tYV90aV9r ZV90b19wZV9sYScuc3BsaXQoJ18nKSwKKyAgICAgICAgbG9uZ0RhdGVGb3Jt YXQgOiB7CisgICAgICAgICAgICBMVCA6ICdISC5tbScsCisgICAgICAgICAg ICBMVFMgOiAnSEgubW0uc3MnLAorICAgICAgICAgICAgTCA6ICdERC5NTS5Z WVlZJywKKyAgICAgICAgICAgIExMIDogJ0RvIE1NTU1bdGFdIFlZWVknLAor ICAgICAgICAgICAgTExMIDogJ0RvIE1NTU1bdGFdIFlZWVksIFtrbG9dIEhI Lm1tJywKKyAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRG8gTU1NTVt0YV0g WVlZWSwgW2tsb10gSEgubW0nLAorICAgICAgICAgICAgbCA6ICdELk0uWVlZ WScsCisgICAgICAgICAgICBsbCA6ICdEbyBNTU0gWVlZWScsCisgICAgICAg ICAgICBsbGwgOiAnRG8gTU1NIFlZWVksIFtrbG9dIEhILm1tJywKKyAgICAg ICAgICAgIGxsbGwgOiAnZGRkLCBEbyBNTU0gWVlZWSwgW2tsb10gSEgubW0n CisgICAgICAgIH0sCisgICAgICAgIGNhbGVuZGFyIDogeworICAgICAgICAg ICAgc2FtZURheSA6ICdbdMOkbsOkw6RuXSBba2xvXSBMVCcsCisgICAgICAg ICAgICBuZXh0RGF5IDogJ1todW9tZW5uYV0gW2tsb10gTFQnLAorICAgICAg ICAgICAgbmV4dFdlZWsgOiAnZGRkZCBba2xvXSBMVCcsCisgICAgICAgICAg ICBsYXN0RGF5IDogJ1tlaWxlbl0gW2tsb10gTFQnLAorICAgICAgICAgICAg bGFzdFdlZWsgOiAnW3ZpaW1lXSBkZGRkW25hXSBba2xvXSBMVCcsCisgICAg ICAgICAgICBzYW1lRWxzZSA6ICdMJworICAgICAgICB9LAorICAgICAgICBy ZWxhdGl2ZVRpbWUgOiB7CisgICAgICAgICAgICBmdXR1cmUgOiAnJXMgcMOk w6RzdMOkJywKKyAgICAgICAgICAgIHBhc3QgOiAnJXMgc2l0dGVuJywKKyAg ICAgICAgICAgIHMgOiBmaV9fdHJhbnNsYXRlLAorICAgICAgICAgICAgbSA6 IGZpX190cmFuc2xhdGUsCisgICAgICAgICAgICBtbSA6IGZpX190cmFuc2xh dGUsCisgICAgICAgICAgICBoIDogZmlfX3RyYW5zbGF0ZSwKKyAgICAgICAg ICAgIGhoIDogZmlfX3RyYW5zbGF0ZSwKKyAgICAgICAgICAgIGQgOiBmaV9f dHJhbnNsYXRlLAorICAgICAgICAgICAgZGQgOiBmaV9fdHJhbnNsYXRlLAor ICAgICAgICAgICAgTSA6IGZpX190cmFuc2xhdGUsCisgICAgICAgICAgICBN TSA6IGZpX190cmFuc2xhdGUsCisgICAgICAgICAgICB5IDogZmlfX3RyYW5z bGF0ZSwKKyAgICAgICAgICAgIHl5IDogZmlfX3RyYW5zbGF0ZQorICAgICAg ICB9LAorICAgICAgICBvcmRpbmFsUGFyc2U6IC9cZHsxLDJ9XC4vLAorICAg ICAgICBvcmRpbmFsIDogJyVkLicsCisgICAgICAgIHdlZWsgOiB7CisgICAg ICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBv ZiB0aGUgd2Vlay4KKyAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVr IHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0 aGUgeWVhci4KKyAgICAgICAgfQorICAgIH0pOworCisKKyAgICB2YXIgZm8g PSBtb21lbnRfX2RlZmF1bHQuZGVmaW5lTG9jYWxlKCdmbycsIHsKKyAgICAg ICAgbW9udGhzIDogJ2phbnVhcl9mZWJydWFyX21hcnNfYXByw61sX21haV9q dW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2Rl c2VtYmVyJy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNTaG9ydCA6ICdq YW5fZmViX21hcl9hcHJfbWFpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2Rl cycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXMgOiAnc3VubnVkYWd1 cl9tw6FuYWRhZ3VyX3TDvXNkYWd1cl9taWt1ZGFndXJfaMOzc2RhZ3VyX2Zy w61nZ2phZGFndXJfbGV5Z2FyZGFndXInLnNwbGl0KCdfJyksCisgICAgICAg IHdlZWtkYXlzU2hvcnQgOiAnc3VuX23DoW5fdMO9c19taWtfaMOzc19mcsOt X2xleScuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNNaW4gOiAnc3Vf bcOhX3TDvV9taV9ow7NfZnJfbGUnLnNwbGl0KCdfJyksCisgICAgICAgIGxv bmdEYXRlRm9ybWF0IDogeworICAgICAgICAgICAgTFQgOiAnSEg6bW0nLAor ICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJywKKyAgICAgICAgICAgIEwg OiAnREQvTU0vWVlZWScsCisgICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZ WScsCisgICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLAor ICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQuIE1NTU0sIFlZWVkgSEg6bW0n CisgICAgICAgIH0sCisgICAgICAgIGNhbGVuZGFyIDogeworICAgICAgICAg ICAgc2FtZURheSA6ICdbw40gZGFnIGtsLl0gTFQnLAorICAgICAgICAgICAg bmV4dERheSA6ICdbw40gbW9yZ2luIGtsLl0gTFQnLAorICAgICAgICAgICAg bmV4dFdlZWsgOiAnZGRkZCBba2wuXSBMVCcsCisgICAgICAgICAgICBsYXN0 RGF5IDogJ1vDjSBnasOhciBrbC5dIExUJywKKyAgICAgICAgICAgIGxhc3RX ZWVrIDogJ1tzw63DsHN0dV0gZGRkZCBba2xdIExUJywKKyAgICAgICAgICAg IHNhbWVFbHNlIDogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZl VGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICd1bSAlcycsCisgICAg ICAgICAgICBwYXN0IDogJyVzIHPDrcOwYW5pJywKKyAgICAgICAgICAgIHMg OiAnZsOhIHNla3VuZCcsCisgICAgICAgICAgICBtIDogJ2VpbiBtaW51dHQn LAorICAgICAgICAgICAgbW0gOiAnJWQgbWludXR0aXInLAorICAgICAgICAg ICAgaCA6ICdlaW4gdMOtbWknLAorICAgICAgICAgICAgaGggOiAnJWQgdMOt bWFyJywKKyAgICAgICAgICAgIGQgOiAnZWluIGRhZ3VyJywKKyAgICAgICAg ICAgIGRkIDogJyVkIGRhZ2FyJywKKyAgICAgICAgICAgIE0gOiAnZWluIG3D oW5hw7BpJywKKyAgICAgICAgICAgIE1NIDogJyVkIG3DoW5hw7BpcicsCisg ICAgICAgICAgICB5IDogJ2VpdHQgw6FyJywKKyAgICAgICAgICAgIHl5IDog JyVkIMOhcicKKyAgICAgICAgfSwKKyAgICAgICAgb3JkaW5hbFBhcnNlOiAv XGR7MSwyfVwuLywKKyAgICAgICAgb3JkaW5hbCA6ICclZC4nLAorICAgICAg ICB3ZWVrIDogeworICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlz IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCisgICAgICAgICAgICBkb3kg OiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhl IGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuCisgICAgICAgIH0KKyAgICB9KTsK KworCisgICAgdmFyIGZyX2NhID0gbW9tZW50X19kZWZhdWx0LmRlZmluZUxv Y2FsZSgnZnItY2EnLCB7CisgICAgICAgIG1vbnRocyA6ICdqYW52aWVyX2bD qXZyaWVyX21hcnNfYXZyaWxfbWFpX2p1aW5fanVpbGxldF9hb8O7dF9zZXB0 ZW1icmVfb2N0b2JyZV9ub3ZlbWJyZV9kw6ljZW1icmUnLnNwbGl0KCdfJyks CisgICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbnYuX2bDqXZyLl9tYXJzX2F2 ci5fbWFpX2p1aW5fanVpbC5fYW/Du3Rfc2VwdC5fb2N0Ll9ub3YuX2TDqWMu Jy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1 ZSwKKyAgICAgICAgd2Vla2RheXMgOiAnZGltYW5jaGVfbHVuZGlfbWFyZGlf bWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpJy5zcGxpdCgnXycpLAor ICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ2RpbS5fbHVuLl9tYXIuX21lci5f amV1Ll92ZW4uX3NhbS4nLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlz TWluIDogJ0RpX0x1X01hX01lX0plX1ZlX1NhJy5zcGxpdCgnXycpLAorICAg ICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLAorICAgICAgICBsb25n RGF0ZUZvcm1hdCA6IHsKKyAgICAgICAgICAgIExUIDogJ0hIOm1tJywKKyAg ICAgICAgICAgIExUUyA6ICdISDptbTpzcycsCisgICAgICAgICAgICBMIDog J1lZWVktTU0tREQnLAorICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVkn LAorICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJywKKyAg ICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbScKKyAg ICAgICAgfSwKKyAgICAgICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBz YW1lRGF5OiAnW0F1am91cmRcJ2h1aSDDoF0gTFQnLAorICAgICAgICAgICAg bmV4dERheTogJ1tEZW1haW4gw6BdIExUJywKKyAgICAgICAgICAgIG5leHRX ZWVrOiAnZGRkZCBbw6BdIExUJywKKyAgICAgICAgICAgIGxhc3REYXk6ICdb SGllciDDoF0gTFQnLAorICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtk ZXJuaWVyIMOgXSBMVCcsCisgICAgICAgICAgICBzYW1lRWxzZTogJ0wnCisg ICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZSA6IHsKKyAgICAgICAg ICAgIGZ1dHVyZSA6ICdkYW5zICVzJywKKyAgICAgICAgICAgIHBhc3QgOiAn aWwgeSBhICVzJywKKyAgICAgICAgICAgIHMgOiAncXVlbHF1ZXMgc2Vjb25k ZXMnLAorICAgICAgICAgICAgbSA6ICd1bmUgbWludXRlJywKKyAgICAgICAg ICAgIG1tIDogJyVkIG1pbnV0ZXMnLAorICAgICAgICAgICAgaCA6ICd1bmUg aGV1cmUnLAorICAgICAgICAgICAgaGggOiAnJWQgaGV1cmVzJywKKyAgICAg ICAgICAgIGQgOiAndW4gam91cicsCisgICAgICAgICAgICBkZCA6ICclZCBq b3VycycsCisgICAgICAgICAgICBNIDogJ3VuIG1vaXMnLAorICAgICAgICAg ICAgTU0gOiAnJWQgbW9pcycsCisgICAgICAgICAgICB5IDogJ3VuIGFuJywK KyAgICAgICAgICAgIHl5IDogJyVkIGFucycKKyAgICAgICAgfSwKKyAgICAg ICAgb3JkaW5hbFBhcnNlOiAvXGR7MSwyfShlcnxlKS8sCisgICAgICAgIG9y ZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7CisgICAgICAgICAgICByZXR1 cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdlcicgOiAnZScpOworICAg ICAgICB9CisgICAgfSk7CisKKworICAgIHZhciBmcl9jaCA9IG1vbWVudF9f ZGVmYXVsdC5kZWZpbmVMb2NhbGUoJ2ZyLWNoJywgeworICAgICAgICBtb250 aHMgOiAnamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1 aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2Vt YnJlJy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNTaG9ydCA6ICdqYW52 Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQu X29jdC5fbm92Ll9kw6ljLicuc3BsaXQoJ18nKSwKKyAgICAgICAgbW9udGhz UGFyc2VFeGFjdCA6IHRydWUsCisgICAgICAgIHdlZWtkYXlzIDogJ2RpbWFu Y2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVk aScuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkaW0u X2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uJy5zcGxpdCgnXycpLAor ICAgICAgICB3ZWVrZGF5c01pbiA6ICdEaV9MdV9NYV9NZV9KZV9WZV9TYScu c3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1 ZSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7CisgICAgICAgICAgICBM VCA6ICdISDptbScsCisgICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLAor ICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJywKKyAgICAgICAgICAgIExM IDogJ0QgTU1NTSBZWVlZJywKKyAgICAgICAgICAgIExMTCA6ICdEIE1NTU0g WVlZWSBISDptbScsCisgICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1N IFlZWVkgSEg6bW0nCisgICAgICAgIH0sCisgICAgICAgIGNhbGVuZGFyIDog eworICAgICAgICAgICAgc2FtZURheTogJ1tBdWpvdXJkXCdodWkgw6BdIExU JywKKyAgICAgICAgICAgIG5leHREYXk6ICdbRGVtYWluIMOgXSBMVCcsCisg ICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8OgXSBMVCcsCisgICAgICAg ICAgICBsYXN0RGF5OiAnW0hpZXIgw6BdIExUJywKKyAgICAgICAgICAgIGxh c3RXZWVrOiAnZGRkZCBbZGVybmllciDDoF0gTFQnLAorICAgICAgICAgICAg c2FtZUVsc2U6ICdMJworICAgICAgICB9LAorICAgICAgICByZWxhdGl2ZVRp bWUgOiB7CisgICAgICAgICAgICBmdXR1cmUgOiAnZGFucyAlcycsCisgICAg ICAgICAgICBwYXN0IDogJ2lsIHkgYSAlcycsCisgICAgICAgICAgICBzIDog J3F1ZWxxdWVzIHNlY29uZGVzJywKKyAgICAgICAgICAgIG0gOiAndW5lIG1p bnV0ZScsCisgICAgICAgICAgICBtbSA6ICclZCBtaW51dGVzJywKKyAgICAg ICAgICAgIGggOiAndW5lIGhldXJlJywKKyAgICAgICAgICAgIGhoIDogJyVk IGhldXJlcycsCisgICAgICAgICAgICBkIDogJ3VuIGpvdXInLAorICAgICAg ICAgICAgZGQgOiAnJWQgam91cnMnLAorICAgICAgICAgICAgTSA6ICd1biBt b2lzJywKKyAgICAgICAgICAgIE1NIDogJyVkIG1vaXMnLAorICAgICAgICAg ICAgeSA6ICd1biBhbicsCisgICAgICAgICAgICB5eSA6ICclZCBhbnMnCisg ICAgICAgIH0sCisgICAgICAgIG9yZGluYWxQYXJzZTogL1xkezEsMn0oZXJ8 ZSkvLAorICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikgewor ICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAn ZXInIDogJ2UnKTsKKyAgICAgICAgfSwKKyAgICAgICAgd2VlayA6IHsKKyAg ICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5 IG9mIHRoZSB3ZWVrLgorICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdl ZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9m IHRoZSB5ZWFyLgorICAgICAgICB9CisgICAgfSk7CisKKworICAgIHZhciBm ciA9IG1vbWVudF9fZGVmYXVsdC5kZWZpbmVMb2NhbGUoJ2ZyJywgeworICAg ICAgICBtb250aHMgOiAnamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21h aV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1i cmVfZMOpY2VtYnJlJy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNTaG9y dCA6ICdqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fv w7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLicuc3BsaXQoJ18nKSwKKyAgICAg ICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsCisgICAgICAgIHdlZWtkYXlz IDogJ2RpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRy ZWRpX3NhbWVkaScuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9y dCA6ICdkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uJy5zcGxp dCgnXycpLAorICAgICAgICB3ZWVrZGF5c01pbiA6ICdEaV9MdV9NYV9NZV9K ZV9WZV9TYScuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNQYXJzZUV4 YWN0IDogdHJ1ZSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7CisgICAg ICAgICAgICBMVCA6ICdISDptbScsCisgICAgICAgICAgICBMVFMgOiAnSEg6 bW06c3MnLAorICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJywKKyAgICAg ICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJywKKyAgICAgICAgICAgIExMTCA6 ICdEIE1NTU0gWVlZWSBISDptbScsCisgICAgICAgICAgICBMTExMIDogJ2Rk ZGQgRCBNTU1NIFlZWVkgSEg6bW0nCisgICAgICAgIH0sCisgICAgICAgIGNh bGVuZGFyIDogeworICAgICAgICAgICAgc2FtZURheTogJ1tBdWpvdXJkXCdo dWkgw6BdIExUJywKKyAgICAgICAgICAgIG5leHREYXk6ICdbRGVtYWluIMOg XSBMVCcsCisgICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8OgXSBMVCcs CisgICAgICAgICAgICBsYXN0RGF5OiAnW0hpZXIgw6BdIExUJywKKyAgICAg ICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbZGVybmllciDDoF0gTFQnLAorICAg ICAgICAgICAgc2FtZUVsc2U6ICdMJworICAgICAgICB9LAorICAgICAgICBy ZWxhdGl2ZVRpbWUgOiB7CisgICAgICAgICAgICBmdXR1cmUgOiAnZGFucyAl cycsCisgICAgICAgICAgICBwYXN0IDogJ2lsIHkgYSAlcycsCisgICAgICAg ICAgICBzIDogJ3F1ZWxxdWVzIHNlY29uZGVzJywKKyAgICAgICAgICAgIG0g OiAndW5lIG1pbnV0ZScsCisgICAgICAgICAgICBtbSA6ICclZCBtaW51dGVz JywKKyAgICAgICAgICAgIGggOiAndW5lIGhldXJlJywKKyAgICAgICAgICAg IGhoIDogJyVkIGhldXJlcycsCisgICAgICAgICAgICBkIDogJ3VuIGpvdXIn LAorICAgICAgICAgICAgZGQgOiAnJWQgam91cnMnLAorICAgICAgICAgICAg TSA6ICd1biBtb2lzJywKKyAgICAgICAgICAgIE1NIDogJyVkIG1vaXMnLAor ICAgICAgICAgICAgeSA6ICd1biBhbicsCisgICAgICAgICAgICB5eSA6ICcl ZCBhbnMnCisgICAgICAgIH0sCisgICAgICAgIG9yZGluYWxQYXJzZTogL1xk ezEsMn0oZXJ8KS8sCisgICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVt YmVyKSB7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9 PT0gMSA/ICdlcicgOiAnJyk7CisgICAgICAgIH0sCisgICAgICAgIHdlZWsg OiB7CisgICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZp cnN0IGRheSBvZiB0aGUgd2Vlay4KKyAgICAgICAgICAgIGRveSA6IDQgIC8v IFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qg d2VlayBvZiB0aGUgeWVhci4KKyAgICAgICAgfQorICAgIH0pOworCisKKyAg ICB2YXIgZnlfX21vbnRoc1Nob3J0V2l0aERvdHMgPSAnamFuLl9mZWIuX21y dC5fYXByLl9tYWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVz Licuc3BsaXQoJ18nKSwKKyAgICAgICAgZnlfX21vbnRoc1Nob3J0V2l0aG91 dERvdHMgPSAnamFuX2ZlYl9tcnRfYXByX21haV9qdW5fanVsX2F1Z19zZXBf b2t0X25vdl9kZXMnLnNwbGl0KCdfJyk7CisKKyAgICB2YXIgZnkgPSBtb21l bnRfX2RlZmF1bHQuZGVmaW5lTG9jYWxlKCdmeScsIHsKKyAgICAgICAgbW9u dGhzIDogJ2phbm5ld2FyaXNfZmVicmV3YXJpc19tYWFydF9hcHJpbF9tYWFp ZV9qdW55X2p1bHlfYXVndXN0dXNfc2VwdGltYmVyX29rdG9iZXJfbm92aW1i ZXJfZGVzaW1iZXInLnNwbGl0KCdfJyksCisgICAgICAgIG1vbnRoc1Nob3J0 IDogZnVuY3Rpb24gKG0sIGZvcm1hdCkgeworICAgICAgICAgICAgaWYgKC8t TU1NLS8udGVzdChmb3JtYXQpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu IGZ5X19tb250aHNTaG9ydFdpdGhvdXREb3RzW20ubW9udGgoKV07CisgICAg ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBmeV9f bW9udGhzU2hvcnRXaXRoRG90c1ttLm1vbnRoKCldOworICAgICAgICAgICAg fQorICAgICAgICB9LAorICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1 ZSwKKyAgICAgICAgd2Vla2RheXMgOiAnc25laW5fbW9hbmRlaV90aWlzZGVp X3dvYW5zZGVpX3RvbmdlcnNkZWlfZnJlZWRfc25lb24nLnNwbGl0KCdfJyks CisgICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnc2kuX21vLl90aS5fd28uX3Rv Ll9mci5fc28uJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c01pbiA6 ICdTaV9Nb19UaV9Xb19Ub19Gcl9Tbycuc3BsaXQoJ18nKSwKKyAgICAgICAg d2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSwKKyAgICAgICAgbG9uZ0RhdGVG b3JtYXQgOiB7CisgICAgICAgICAgICBMVCA6ICdISDptbScsCisgICAgICAg ICAgICBMVFMgOiAnSEg6bW06c3MnLAorICAgICAgICAgICAgTCA6ICdERC1N TS1ZWVlZJywKKyAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJywKKyAg ICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsCisgICAgICAg ICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nCisgICAgICAg IH0sCisgICAgICAgIGNhbGVuZGFyIDogeworICAgICAgICAgICAgc2FtZURh eTogJ1toam9lZCBvbV0gTFQnLAorICAgICAgICAgICAgbmV4dERheTogJ1tt b2FybiBvbV0gTFQnLAorICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtv bV0gTFQnLAorICAgICAgICAgICAgbGFzdERheTogJ1tqdXN0ZXIgb21dIExU JywKKyAgICAgICAgICAgIGxhc3RXZWVrOiAnW8O0ZnLDu25lXSBkZGRkIFtv bV0gTFQnLAorICAgICAgICAgICAgc2FtZUVsc2U6ICdMJworICAgICAgICB9 LAorICAgICAgICByZWxhdGl2ZVRpbWUgOiB7CisgICAgICAgICAgICBmdXR1 cmUgOiAnb2VyICVzJywKKyAgICAgICAgICAgIHBhc3QgOiAnJXMgbHluJywK KyAgICAgICAgICAgIHMgOiAnaW4gcGVhciBzZWtvbmRlbicsCisgICAgICAg ICAgICBtIDogJ2llbiBtaW7DunQnLAorICAgICAgICAgICAgbW0gOiAnJWQg bWludXRlbicsCisgICAgICAgICAgICBoIDogJ2llbiBvZXJlJywKKyAgICAg ICAgICAgIGhoIDogJyVkIG9lcmVuJywKKyAgICAgICAgICAgIGQgOiAnaWVu IGRlaScsCisgICAgICAgICAgICBkZCA6ICclZCBkYWdlbicsCisgICAgICAg ICAgICBNIDogJ2llbiBtb2FubmUnLAorICAgICAgICAgICAgTU0gOiAnJWQg bW9hbm5lbicsCisgICAgICAgICAgICB5IDogJ2llbiBqaWVyJywKKyAgICAg ICAgICAgIHl5IDogJyVkIGppZXJyZW4nCisgICAgICAgIH0sCisgICAgICAg IG9yZGluYWxQYXJzZTogL1xkezEsMn0oc3RlfGRlKS8sCisgICAgICAgIG9y ZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7CisgICAgICAgICAgICByZXR1 cm4gbnVtYmVyICsgKChudW1iZXIgPT09IDEgfHwgbnVtYmVyID09PSA4IHx8 IG51bWJlciA+PSAyMCkgPyAnc3RlJyA6ICdkZScpOworICAgICAgICB9LAor ICAgICAgICB3ZWVrIDogeworICAgICAgICAgICAgZG93IDogMSwgLy8gTW9u ZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCisgICAgICAgICAg ICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGgg aXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuCisgICAgICAgIH0KKyAg ICB9KTsKKworCisgICAgdmFyIGdkX19tb250aHMgPSBbCisgICAgICAgICdB bSBGYW9pbGxlYWNoJywgJ0FuIEdlYXJyYW4nLCAnQW0gTcOgcnQnLCAnQW4g R2libGVhbicsICdBbiBDw6hpdGVhbicsICdBbiB0LcOSZ21oaW9zJywgJ0Fu IHQtSXVjaGFyJywgJ0FuIEzDuW5hc3RhbCcsICdBbiB0LVN1bHRhaW4nLCAn QW4gRMOgbWhhaXInLCAnQW4gdC1TYW1oYWluJywgJ0FuIETDuWJobGFjaGQn CisgICAgXTsKKworICAgIHZhciBnZF9fbW9udGhzU2hvcnQgPSBbJ0Zhb2kn LCAnR2VhcicsICdNw6BydCcsICdHaWJsJywgJ0PDqGl0JywgJ8OSZ21oJywg J0l1Y2gnLCAnTMO5bicsICdTdWx0JywgJ0TDoG1oJywgJ1NhbWgnLCAnRMO5 YmgnXTsKKworICAgIHZhciBnZF9fd2Vla2RheXMgPSBbJ0RpZMOybWhuYWlj aCcsICdEaWx1YWluJywgJ0RpbcOgaXJ0JywgJ0RpY2lhZGFpbicsICdEaWFy ZGFvaW4nLCAnRGloYW9pbmUnLCAnRGlzYXRoYWlybmUnXTsKKworICAgIHZh ciB3ZWVrZGF5c1Nob3J0ID0gWydEaWQnLCAnRGlsJywgJ0RpbScsICdEaWMn LCAnRGlhJywgJ0RpaCcsICdEaXMnXTsKKworICAgIHZhciB3ZWVrZGF5c01p biA9IFsnRMOyJywgJ0x1JywgJ03DoCcsICdDaScsICdBcicsICdIYScsICdT YSddOworCisgICAgdmFyIGdkID0gbW9tZW50X19kZWZhdWx0LmRlZmluZUxv Y2FsZSgnZ2QnLCB7CisgICAgICAgIG1vbnRocyA6IGdkX19tb250aHMsCisg ICAgICAgIG1vbnRoc1Nob3J0IDogZ2RfX21vbnRoc1Nob3J0LAorICAgICAg ICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSwKKyAgICAgICAgd2Vla2RheXMg OiBnZF9fd2Vla2RheXMsCisgICAgICAgIHdlZWtkYXlzU2hvcnQgOiB3ZWVr ZGF5c1Nob3J0LAorICAgICAgICB3ZWVrZGF5c01pbiA6IHdlZWtkYXlzTWlu LAorICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHsKKyAgICAgICAgICAgIExU IDogJ0hIOm1tJywKKyAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsCisg ICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLAorICAgICAgICAgICAgTEwg OiAnRCBNTU1NIFlZWVknLAorICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZ WVlZIEhIOm1tJywKKyAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1N IFlZWVkgSEg6bW0nCisgICAgICAgIH0sCisgICAgICAgIGNhbGVuZGFyIDog eworICAgICAgICAgICAgc2FtZURheSA6ICdbQW4tZGl1Z2ggYWlnXSBMVCcs CisgICAgICAgICAgICBuZXh0RGF5IDogJ1tBLW3DoGlyZWFjaCBhaWddIExU JywKKyAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2FpZ10gTFQnLAor ICAgICAgICAgICAgbGFzdERheSA6ICdbQW4tZMOoIGFpZ10gTFQnLAorICAg ICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBbc2VvIGNoYWlkaF0gW2FpZ10g TFQnLAorICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCcKKyAgICAgICAgfSwK KyAgICAgICAgcmVsYXRpdmVUaW1lIDogeworICAgICAgICAgICAgZnV0dXJl IDogJ2FubiBhbiAlcycsCisgICAgICAgICAgICBwYXN0IDogJ2JobyBjaGlv bm4gJXMnLAorICAgICAgICAgICAgcyA6ICdiZWFnYW4gZGlvZ2FuJywKKyAg ICAgICAgICAgIG0gOiAnbWlvbmFpZCcsCisgICAgICAgICAgICBtbSA6ICcl ZCBtaW9uYWlkZWFuJywKKyAgICAgICAgICAgIGggOiAndWFpcicsCisgICAg ICAgICAgICBoaCA6ICclZCB1YWlyZWFuJywKKyAgICAgICAgICAgIGQgOiAn bGF0aGEnLAorICAgICAgICAgICAgZGQgOiAnJWQgbGF0aGEnLAorICAgICAg ICAgICAgTSA6ICdtw6xvcycsCisgICAgICAgICAgICBNTSA6ICclZCBtw6xv c2FuJywKKyAgICAgICAgICAgIHkgOiAnYmxpYWRobmEnLAorICAgICAgICAg ICAgeXkgOiAnJWQgYmxpYWRobmEnCisgICAgICAgIH0sCisgICAgICAgIG9y ZGluYWxQYXJzZSA6IC9cZHsxLDJ9KGR8bmF8bWgpLywKKyAgICAgICAgb3Jk aW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHsKKyAgICAgICAgICAgIHZhciBv dXRwdXQgPSBudW1iZXIgPT09IDEgPyAnZCcgOiBudW1iZXIgJSAxMCA9PT0g MiA/ICduYScgOiAnbWgnOworICAgICAgICAgICAgcmV0dXJuIG51bWJlciAr IG91dHB1dDsKKyAgICAgICAgfSwKKyAgICAgICAgd2VlayA6IHsKKyAgICAg ICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9m IHRoZSB3ZWVrLgorICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsg dGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRo ZSB5ZWFyLgorICAgICAgICB9CisgICAgfSk7CisKKworICAgIHZhciBnbCA9 IG1vbWVudF9fZGVmYXVsdC5kZWZpbmVMb2NhbGUoJ2dsJywgeworICAgICAg ICBtb250aHMgOiAneGFuZWlyb19mZWJyZWlyb19tYXJ6b19hYnJpbF9tYWlv X3h1w7FvX3h1bGxvX2Fnb3N0b19zZXRlbWJyb19vdXR1YnJvX25vdmVtYnJv X2RlY2VtYnJvJy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNTaG9ydCA6 ICd4YW4uX2ZlYi5fbWFyLl9hYnIuX21haS5feHXDsS5feHVsLl9hZ28uX3Nl dC5fb3V0Ll9ub3YuX2RlYy4nLnNwbGl0KCdfJyksCisgICAgICAgIG1vbnRo c1BhcnNlRXhhY3Q6IHRydWUsCisgICAgICAgIHdlZWtkYXlzIDogJ2RvbWlu Z29fbHVuc19tYXJ0ZXNfbcOpcmNvcmVzX3hvdmVzX3ZlbnJlc19zw6FiYWRv Jy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ2RvbS5f bHVuLl9tYXIuX23DqXIuX3hvdi5fdmVuLl9zw6FiLicuc3BsaXQoJ18nKSwK KyAgICAgICAgd2Vla2RheXNNaW4gOiAnZG9fbHVfbWFfbcOpX3hvX3ZlX3PD oScuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDog dHJ1ZSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7CisgICAgICAgICAg ICBMVCA6ICdIOm1tJywKKyAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJywK KyAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsCisgICAgICAgICAgICBM TCA6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVknLAorICAgICAgICAgICAgTExM IDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tJywKKyAgICAgICAgICAg IExMTEwgOiAnZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0nCisg ICAgICAgIH0sCisgICAgICAgIGNhbGVuZGFyIDogeworICAgICAgICAgICAg c2FtZURheSA6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICByZXR1 cm4gJ1tob3hlICcgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAnw6FzJyA6 ICfDoScpICsgJ10gTFQnOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAg IG5leHREYXkgOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0 dXJuICdbbWHDscOhICcgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAnw6Fz JyA6ICfDoScpICsgJ10gTFQnOworICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgIG5leHRXZWVrIDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg IHJldHVybiAnZGRkZCBbJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICfD oXMnIDogJ2EnKSArICddIExUJzsKKyAgICAgICAgICAgIH0sCisgICAgICAg ICAgICBsYXN0RGF5IDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg IHJldHVybiAnW29udGUgJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICfD oScgOiAnYScpICsgJ10gTFQnOworICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg IHJldHVybiAnW29dIGRkZGQgW3Bhc2FkbyAnICsgKCh0aGlzLmhvdXJzKCkg IT09IDEpID8gJ8OhcycgOiAnYScpICsgJ10gTFQnOworICAgICAgICAgICAg fSwKKyAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnCisgICAgICAgIH0sCisg ICAgICAgIHJlbGF0aXZlVGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6 IGZ1bmN0aW9uIChzdHIpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RyLmlu ZGV4T2YoJ3VuJykgPT09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0 dXJuICduJyArIHN0cjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgcmV0dXJuICdlbiAnICsgc3RyOworICAgICAgICAgICAgfSwKKyAg ICAgICAgICAgIHBhc3QgOiAnaGFpICVzJywKKyAgICAgICAgICAgIHMgOiAn dW5zIHNlZ3VuZG9zJywKKyAgICAgICAgICAgIG0gOiAndW4gbWludXRvJywK KyAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0b3MnLAorICAgICAgICAgICAg aCA6ICd1bmhhIGhvcmEnLAorICAgICAgICAgICAgaGggOiAnJWQgaG9yYXMn LAorICAgICAgICAgICAgZCA6ICd1biBkw61hJywKKyAgICAgICAgICAgIGRk IDogJyVkIGTDrWFzJywKKyAgICAgICAgICAgIE0gOiAndW4gbWVzJywKKyAg ICAgICAgICAgIE1NIDogJyVkIG1lc2VzJywKKyAgICAgICAgICAgIHkgOiAn dW4gYW5vJywKKyAgICAgICAgICAgIHl5IDogJyVkIGFub3MnCisgICAgICAg IH0sCisgICAgICAgIG9yZGluYWxQYXJzZSA6IC9cZHsxLDJ9wrovLAorICAg ICAgICBvcmRpbmFsIDogJyVkwronLAorICAgICAgICB3ZWVrIDogeworICAg ICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkg b2YgdGhlIHdlZWsuCisgICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2Vl ayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2Yg dGhlIHllYXIuCisgICAgICAgIH0KKyAgICB9KTsKKworCisgICAgdmFyIGhl ID0gbW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgnaGUnLCB7CisgICAg ICAgIG1vbnRocyA6ICfXmdeg15XXkNeoX9ek15HXqNeV15DXqF/Xnteo16Vf 15DXpNeo15nXnF/XnteQ15lf15nXldeg15lf15nXldec15lf15DXldeS15XX odeYX9eh16TXmNee15HXqF/XkNeV16fXmNeV15HXqF/XoNeV15HXnteR16hf 15PXptee15HXqCcuc3BsaXQoJ18nKSwKKyAgICAgICAgbW9udGhzU2hvcnQg OiAn15nXoNeV17Nf16TXkdeo17Nf157XqNelX9eQ16TXqNezX9ee15DXmV/X mdeV16DXmV/XmdeV15zXmV/XkNeV15LXs1/Xodek15jXs1/XkNeV16fXs1/X oNeV15HXs1/Xk9em157Xsycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2Rh eXMgOiAn16jXkNep15XXn1/Xqdeg15lf16nXnNeZ16nXmV/XqNeR15nXoteZ X9eX157Xmdep15lf16nXmdep15lf16nXkdeqJy5zcGxpdCgnXycpLAorICAg ICAgICB3ZWVrZGF5c1Nob3J0IDogJ9eQ17Nf15HXs1/XktezX9eT17Nf15TX s1/XldezX9ep17MnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWlu IDogJ9eQX9eRX9eSX9eTX9eUX9eVX9epJy5zcGxpdCgnXycpLAorICAgICAg ICBsb25nRGF0ZUZvcm1hdCA6IHsKKyAgICAgICAgICAgIExUIDogJ0hIOm1t JywKKyAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsCisgICAgICAgICAg ICBMIDogJ0REL01NL1lZWVknLAorICAgICAgICAgICAgTEwgOiAnRCBb15Fd TU1NTSBZWVlZJywKKyAgICAgICAgICAgIExMTCA6ICdEIFvXkV1NTU1NIFlZ WVkgSEg6bW0nLAorICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIFvXkV1N TU1NIFlZWVkgSEg6bW0nLAorICAgICAgICAgICAgbCA6ICdEL00vWVlZWScs CisgICAgICAgICAgICBsbCA6ICdEIE1NTSBZWVlZJywKKyAgICAgICAgICAg IGxsbCA6ICdEIE1NTSBZWVlZIEhIOm1tJywKKyAgICAgICAgICAgIGxsbGwg OiAnZGRkLCBEIE1NTSBZWVlZIEhIOm1tJworICAgICAgICB9LAorICAgICAg ICBjYWxlbmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVEYXkgOiAnW9eU15nX ldedINeR1r5dTFQnLAorICAgICAgICAgICAgbmV4dERheSA6ICdb157Xl9eo INeR1r5dTFQnLAorICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBb15HX qdei15RdIExUJywKKyAgICAgICAgICAgIGxhc3REYXkgOiAnW9eQ16rXnteV 15wg15HWvl1MVCcsCisgICAgICAgICAgICBsYXN0V2VlayA6ICdb15HXmdeV 151dIGRkZGQgW9eU15DXl9eo15XXnyDXkdep16LXlF0gTFQnLAorICAgICAg ICAgICAgc2FtZUVsc2UgOiAnTCcKKyAgICAgICAgfSwKKyAgICAgICAgcmVs YXRpdmVUaW1lIDogeworICAgICAgICAgICAgZnV0dXJlIDogJ9eR16LXldeT ICVzJywKKyAgICAgICAgICAgIHBhc3QgOiAn15zXpNeg15kgJXMnLAorICAg ICAgICAgICAgcyA6ICfXnteh16TXqCDXqdeg15nXldeqJywKKyAgICAgICAg ICAgIG0gOiAn15PXp9eUJywKKyAgICAgICAgICAgIG1tIDogJyVkINeT16fX ldeqJywKKyAgICAgICAgICAgIGggOiAn16nXoteUJywKKyAgICAgICAgICAg IGhoIDogZnVuY3Rpb24gKG51bWJlcikgeworICAgICAgICAgICAgICAgIGlm IChudW1iZXIgPT09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu ICfXqdei16rXmdeZ150nOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDXqdei15XXqic7CisgICAgICAg ICAgICB9LAorICAgICAgICAgICAgZCA6ICfXmdeV150nLAorICAgICAgICAg ICAgZGQgOiBmdW5jdGlvbiAobnVtYmVyKSB7CisgICAgICAgICAgICAgICAg aWYgKG51bWJlciA9PT0gMikgeworICAgICAgICAgICAgICAgICAgICByZXR1 cm4gJ9eZ15XXnteZ15nXnSc7CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINeZ157XmdedJzsKKyAgICAg ICAgICAgIH0sCisgICAgICAgICAgICBNIDogJ9eX15XXk9epJywKKyAgICAg ICAgICAgIE1NIDogZnVuY3Rpb24gKG51bWJlcikgeworICAgICAgICAgICAg ICAgIGlmIChudW1iZXIgPT09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuICfXl9eV15PXqdeZ15nXnSc7CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINeX15XXk9ep15nX nSc7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeSA6ICfXqdeg15Qn LAorICAgICAgICAgICAgeXkgOiBmdW5jdGlvbiAobnVtYmVyKSB7CisgICAg ICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMikgeworICAgICAgICAgICAg ICAgICAgICByZXR1cm4gJ9ep16DXqteZ15nXnSc7CisgICAgICAgICAgICAg ICAgfSBlbHNlIGlmIChudW1iZXIgJSAxMCA9PT0gMCAmJiBudW1iZXIgIT09 IDEwKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn INep16DXlCc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg IHJldHVybiBudW1iZXIgKyAnINep16DXmdedJzsKKyAgICAgICAgICAgIH0K KyAgICAgICAgfSwKKyAgICAgICAgbWVyaWRpZW1QYXJzZTogL9eQ15fXlCLX pnzXnNek16DXlCLXpnzXkNeX16jXmSDXlNem15TXqNeZ15nXnXzXnNek16DX mSDXlNem15TXqNeZ15nXnXzXnNek16DXldeqINeR15XXp9eofNeR15HXlden 16h815HXoteo15EvaSwKKyAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1 dCkgeworICAgICAgICAgICAgcmV0dXJuIC9eKNeQ15fXlCLXpnzXkNeX16jX mSDXlNem15TXqNeZ15nXnXzXkdei16jXkSkkLy50ZXN0KGlucHV0KTsKKyAg ICAgICAgfSwKKyAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwg bWludXRlLCBpc0xvd2VyKSB7CisgICAgICAgICAgICBpZiAoaG91ciA8IDUp IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ9ec16TXoNeV16og15HXlden 16gnOworICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHsKKyAg ICAgICAgICAgICAgICByZXR1cm4gJ9eR15HXlden16gnOworICAgICAgICAg ICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHsKKyAgICAgICAgICAgICAgICBy ZXR1cm4gaXNMb3dlciA/ICfXnNek16DXlCLXpicgOiAn15zXpNeg15kg15TX pteU16jXmdeZ150nOworICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwg MTgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfXkNeX 15Qi16YnIDogJ9eQ15fXqNeZINeU16bXlNeo15nXmdedJzsKKyAgICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICfXkdei16jX kSc7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9KTsKKworCisg ICAgdmFyIGhpX19zeW1ib2xNYXAgPSB7CisgICAgICAgICcxJzogJ+Clpycs CisgICAgICAgICcyJzogJ+ClqCcsCisgICAgICAgICczJzogJ+ClqScsCisg ICAgICAgICc0JzogJ+ClqicsCisgICAgICAgICc1JzogJ+ClqycsCisgICAg ICAgICc2JzogJ+ClrCcsCisgICAgICAgICc3JzogJ+ClrScsCisgICAgICAg ICc4JzogJ+ClricsCisgICAgICAgICc5JzogJ+ClrycsCisgICAgICAgICcw JzogJ+ClpicKKyAgICB9LAorICAgIGhpX19udW1iZXJNYXAgPSB7CisgICAg ICAgICfgpacnOiAnMScsCisgICAgICAgICfgpagnOiAnMicsCisgICAgICAg ICfgpaknOiAnMycsCisgICAgICAgICfgpaonOiAnNCcsCisgICAgICAgICfg pasnOiAnNScsCisgICAgICAgICfgpawnOiAnNicsCisgICAgICAgICfgpa0n OiAnNycsCisgICAgICAgICfgpa4nOiAnOCcsCisgICAgICAgICfgpa8nOiAn OScsCisgICAgICAgICfgpaYnOiAnMCcKKyAgICB9OworCisgICAgdmFyIGhp ID0gbW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgnaGknLCB7CisgICAg ICAgIG1vbnRocyA6ICfgpJzgpKjgpLXgpLDgpYBf4KSr4KS84KSw4KS14KSw 4KWAX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpYjgpLJf4KSu4KSI X+CknOClguCkqF/gpJzgpYHgpLLgpL7gpIhf4KSF4KSX4KS44KWN4KSkX+Ck uOCkv+CkpOCkruCljeCkrOCksF/gpIXgpJXgpY3gpJ/gpYLgpKzgpLBf4KSo 4KS14KSu4KWN4KSs4KSwX+CkpuCkv+CkuOCkruCljeCkrOCksCcuc3BsaXQo J18nKSwKKyAgICAgICAgbW9udGhzU2hvcnQgOiAn4KSc4KSoLl/gpKvgpLzg pLAuX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpYguX+CkruCkiF/g pJzgpYLgpKhf4KSc4KWB4KSyLl/gpIXgpJcuX+CkuOCkv+CkpC5f4KSF4KSV 4KWN4KSf4KWCLl/gpKjgpLUuX+CkpuCkv+CkuC4nLnNwbGl0KCdfJyksCisg ICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsCisgICAgICAgIHdlZWtk YXlzIDogJ+CksOCkteCkv+CkteCkvuCksF/gpLjgpYvgpK7gpLXgpL7gpLBf 4KSu4KSC4KSX4KSy4KS14KS+4KSwX+CkrOClgeCkp+CkteCkvuCksF/gpJfg pYHgpLDgpYLgpLXgpL7gpLBf4KS24KWB4KSV4KWN4KSw4KS14KS+4KSwX+Ck tuCkqOCkv+CkteCkvuCksCcuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2Rh eXNTaG9ydCA6ICfgpLDgpLXgpL9f4KS44KWL4KSuX+CkruCkguCkl+Cksl/g pKzgpYHgpKdf4KSX4KWB4KSw4KWCX+CktuClgeCkleCljeCksF/gpLbgpKjg pL8nLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDogJ+CksF/g pLjgpYtf4KSu4KSCX+CkrOClgV/gpJfgpYFf4KS24KWBX+Ckticuc3BsaXQo J18nKSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7CisgICAgICAgICAg ICBMVCA6ICdBIGg6bW0g4KSs4KSc4KWHJywKKyAgICAgICAgICAgIExUUyA6 ICdBIGg6bW06c3Mg4KSs4KSc4KWHJywKKyAgICAgICAgICAgIEwgOiAnREQv TU0vWVlZWScsCisgICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsCisg ICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgpKzgpJzg pYcnLAorICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSwg QSBoOm1tIOCkrOCknOClhycKKyAgICAgICAgfSwKKyAgICAgICAgY2FsZW5k YXIgOiB7CisgICAgICAgICAgICBzYW1lRGF5IDogJ1vgpIbgpJxdIExUJywK KyAgICAgICAgICAgIG5leHREYXkgOiAnW+CkleCksl0gTFQnLAorICAgICAg ICAgICAgbmV4dFdlZWsgOiAnZGRkZCwgTFQnLAorICAgICAgICAgICAgbGFz dERheSA6ICdb4KSV4KSyXSBMVCcsCisgICAgICAgICAgICBsYXN0V2VlayA6 ICdb4KSq4KS/4KSb4KSy4KWHXSBkZGRkLCBMVCcsCisgICAgICAgICAgICBz YW1lRWxzZSA6ICdMJworICAgICAgICB9LAorICAgICAgICByZWxhdGl2ZVRp bWUgOiB7CisgICAgICAgICAgICBmdXR1cmUgOiAnJXMg4KSu4KWH4KSCJywK KyAgICAgICAgICAgIHBhc3QgOiAnJXMg4KSq4KS54KSy4KWHJywKKyAgICAg ICAgICAgIHMgOiAn4KSV4KWB4KSbIOCkueClgCDgpJXgpY3gpLfgpKMnLAor ICAgICAgICAgICAgbSA6ICfgpI/gpJUg4KSu4KS/4KSo4KSfJywKKyAgICAg ICAgICAgIG1tIDogJyVkIOCkruCkv+CkqOCknycsCisgICAgICAgICAgICBo IDogJ+Ckj+CklSDgpJjgpILgpJ/gpL4nLAorICAgICAgICAgICAgaGggOiAn JWQg4KSY4KSC4KSf4KWHJywKKyAgICAgICAgICAgIGQgOiAn4KSP4KSVIOCk puCkv+CkqCcsCisgICAgICAgICAgICBkZCA6ICclZCDgpKbgpL/gpKgnLAor ICAgICAgICAgICAgTSA6ICfgpI/gpJUg4KSu4KS54KWA4KSo4KWHJywKKyAg ICAgICAgICAgIE1NIDogJyVkIOCkruCkueClgOCkqOClhycsCisgICAgICAg ICAgICB5IDogJ+Ckj+CklSDgpLXgpLDgpY3gpLcnLAorICAgICAgICAgICAg eXkgOiAnJWQg4KS14KSw4KWN4KS3JworICAgICAgICB9LAorICAgICAgICBw cmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykgeworICAgICAgICAgICAgcmV0 dXJuIHN0cmluZy5yZXBsYWNlKC9b4KWn4KWo4KWp4KWq4KWr4KWs4KWt4KWu 4KWv4KWmXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHsKKyAgICAgICAgICAgICAg ICByZXR1cm4gaGlfX251bWJlck1hcFttYXRjaF07CisgICAgICAgICAgICB9 KTsKKyAgICAgICAgfSwKKyAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24g KHN0cmluZykgeworICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNl KC9cZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBy ZXR1cm4gaGlfX3N5bWJvbE1hcFttYXRjaF07CisgICAgICAgICAgICB9KTsK KyAgICAgICAgfSwKKyAgICAgICAgLy8gSGluZGkgbm90YXRpb24gZm9yIG1l cmlkaWVtcyBhcmUgcXVpdGUgZnV6enkgaW4gcHJhY3RpY2UuIFdoaWxlIHRo ZXJlIGV4aXN0cworICAgICAgICAvLyBhIHJpZ2lkIG5vdGlvbiBvZiBhICdQ YWhhcicgaXQgaXMgbm90IHVzZWQgYXMgcmlnaWRseSBpbiBtb2Rlcm4gSGlu ZGkuCisgICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gpLDgpL7gpKR84KS44KWB 4KSs4KS5fOCkpuCli+CkquCkueCksHzgpLbgpL7gpK4vLAorICAgICAgICBt ZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHsKKyAg ICAgICAgICAgIGlmIChob3VyID09PSAxMikgeworICAgICAgICAgICAgICAg IGhvdXIgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1l cmlkaWVtID09PSAn4KSw4KS+4KSkJykgeworICAgICAgICAgICAgICAgIHJl dHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7CisgICAgICAgICAg ICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KS44KWB4KSs4KS5Jykgewor ICAgICAgICAgICAgICAgIHJldHVybiBob3VyOworICAgICAgICAgICAgfSBl bHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkpuCli+CkquCkueCksCcpIHsKKyAg ICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3Vy ICsgMTI7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn 4KS24KS+4KSuJykgeworICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsg MTI7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIG1lcmlk aWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikgeworICAg ICAgICAgICAgaWYgKGhvdXIgPCA0KSB7CisgICAgICAgICAgICAgICAgcmV0 dXJuICfgpLDgpL7gpKQnOworICAgICAgICAgICAgfSBlbHNlIGlmIChob3Vy IDwgMTApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ+CkuOClgeCkrOCk uSc7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykgeworICAg ICAgICAgICAgICAgIHJldHVybiAn4KSm4KWL4KSq4KS54KSwJzsKKyAgICAg ICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7CisgICAgICAgICAgICAg ICAgcmV0dXJuICfgpLbgpL7gpK4nOworICAgICAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgICAgICByZXR1cm4gJ+CksOCkvuCkpCc7CisgICAgICAg ICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHdlZWsgOiB7CisgICAgICAg ICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0 aGUgd2Vlay4KKyAgICAgICAgICAgIGRveSA6IDYgIC8vIFRoZSB3ZWVrIHRo YXQgY29udGFpbnMgSmFuIDFzdCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUg eWVhci4KKyAgICAgICAgfQorICAgIH0pOworCisKKyAgICBmdW5jdGlvbiBo cl9fdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7Cisg ICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7CisgICAgICAgIHN3 aXRjaCAoa2V5KSB7CisgICAgICAgICAgICBjYXNlICdtJzoKKyAgICAgICAg ICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdqZWRuYSBtaW51dGEn IDogJ2plZG5lIG1pbnV0ZSc7CisgICAgICAgICAgICBjYXNlICdtbSc6Cisg ICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkgeworICAgICAgICAg ICAgICAgICAgICByZXN1bHQgKz0gJ21pbnV0YSc7CisgICAgICAgICAgICAg ICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8 IG51bWJlciA9PT0gNCkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQg Kz0gJ21pbnV0ZSc7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg ICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtaW51dGEnOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg ICAgICAgICAgY2FzZSAnaCc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHdp dGhvdXRTdWZmaXggPyAnamVkYW4gc2F0JyA6ICdqZWRub2cgc2F0YSc7Cisg ICAgICAgICAgICBjYXNlICdoaCc6CisgICAgICAgICAgICAgICAgaWYgKG51 bWJlciA9PT0gMSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0g J3NhdCc7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09 IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkgeworICAgICAg ICAgICAgICAgICAgICByZXN1bHQgKz0gJ3NhdGEnOworICAgICAgICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAn c2F0aSc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJl dHVybiByZXN1bHQ7CisgICAgICAgICAgICBjYXNlICdkZCc6CisgICAgICAg ICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkgeworICAgICAgICAgICAgICAg ICAgICByZXN1bHQgKz0gJ2Rhbic7CisgICAgICAgICAgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdkYW5hJzsKKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs dDsKKyAgICAgICAgICAgIGNhc2UgJ01NJzoKKyAgICAgICAgICAgICAgICBp ZiAobnVtYmVyID09PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3Vs dCArPSAnbWplc2VjJzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51 bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7 CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWplc2VjYSc7Cisg ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg cmVzdWx0ICs9ICdtamVzZWNpJzsKKyAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIGNhc2Ug J3l5JzoKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7Cisg ICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5hJzsKKyAgICAg ICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIg PT09IDMgfHwgbnVtYmVyID09PSA0KSB7CisgICAgICAgICAgICAgICAgICAg IHJlc3VsdCArPSAnZ29kaW5lJzsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2dvZGluYSc7Cisg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1 bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgaHIgPSBtb21lbnRf X2RlZmF1bHQuZGVmaW5lTG9jYWxlKCdocicsIHsKKyAgICAgICAgbW9udGhz IDogeworICAgICAgICAgICAgZm9ybWF0OiAnc2lqZcSNbmphX3ZlbGphxI1l X2/FvnVqa2FfdHJhdm5qYV9zdmlibmphX2xpcG5qYV9zcnBuamFfa29sb3Zv emFfcnVqbmFfbGlzdG9wYWRhX3N0dWRlbm9nYV9wcm9zaW5jYScuc3BsaXQo J18nKSwKKyAgICAgICAgICAgIHN0YW5kYWxvbmU6ICdzaWplxI1hbmpfdmVs amHEjWFfb8W+dWpha190cmF2YW5qX3N2aWJhbmpfbGlwYW5qX3NycGFual9r b2xvdm96X3J1amFuX2xpc3RvcGFkX3N0dWRlbmlfcHJvc2luYWMnLnNwbGl0 KCdfJykKKyAgICAgICAgfSwKKyAgICAgICAgbW9udGhzU2hvcnQgOiAnc2lq Ll92ZWxqLl9vxb51Ll90cmEuX3N2aS5fbGlwLl9zcnAuX2tvbC5fcnVqLl9s aXMuX3N0dS5fcHJvLicuc3BsaXQoJ18nKSwKKyAgICAgICAgbW9udGhzUGFy c2VFeGFjdDogdHJ1ZSwKKyAgICAgICAgd2Vla2RheXMgOiAnbmVkamVsamFf cG9uZWRqZWxqYWtfdXRvcmFrX3NyaWplZGFfxI1ldHZydGFrX3BldGFrX3N1 Ym90YScuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdu ZWQuX3Bvbi5fdXRvLl9zcmkuX8SNZXQuX3BldC5fc3ViLicuc3BsaXQoJ18n KSwKKyAgICAgICAgd2Vla2RheXNNaW4gOiAnbmVfcG9fdXRfc3JfxI1lX3Bl X3N1Jy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Qg OiB0cnVlLAorICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHsKKyAgICAgICAg ICAgIExUIDogJ0g6bW0nLAorICAgICAgICAgICAgTFRTIDogJ0g6bW06c3Mn LAorICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJywKKyAgICAgICAgICAg IExMIDogJ0QuIE1NTU0gWVlZWScsCisgICAgICAgICAgICBMTEwgOiAnRC4g TU1NTSBZWVlZIEg6bW0nLAorICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBE LiBNTU1NIFlZWVkgSDptbScKKyAgICAgICAgfSwKKyAgICAgICAgY2FsZW5k YXIgOiB7CisgICAgICAgICAgICBzYW1lRGF5ICA6ICdbZGFuYXMgdV0gTFQn LAorICAgICAgICAgICAgbmV4dERheSAgOiAnW3N1dHJhIHVdIExUJywKKyAg ICAgICAgICAgIG5leHRXZWVrIDogZnVuY3Rpb24gKCkgeworICAgICAgICAg ICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkgeworICAgICAgICAgICAgICAg ICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g J1t1XSBbbmVkamVsanVdIFt1XSBMVCc7CisgICAgICAgICAgICAgICAgICAg IGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Vd IFtzcmlqZWR1XSBbdV0gTFQnOworICAgICAgICAgICAgICAgICAgICBjYXNl IDY6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3Vi b3R1XSBbdV0gTFQnOworICAgICAgICAgICAgICAgICAgICBjYXNlIDE6Cisg ICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAg ICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CisgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBkZGRkIFt1XSBMVCc7 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgIGxhc3REYXkgIDogJ1tqdcSNZXIgdV0gTFQnLAorICAgICAgICAgICAg bGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc3dp dGNoICh0aGlzLmRheSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug MDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsdV0gZGRkZCBbdV0gTFQnOwor ICAgICAgICAgICAgICAgICAgICBjYXNlIDY6CisgICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gJ1twcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQnOwor ICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAg ICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgorICAg ICAgICAgICAgICAgICAgICBjYXNlIDU6CisgICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gJ1twcm/FoWxpXSBkZGRkIFt1XSBMVCc7CisgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNhbWVF bHNlIDogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZSA6 IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICd6YSAlcycsCisgICAgICAgICAg ICBwYXN0ICAgOiAncHJpamUgJXMnLAorICAgICAgICAgICAgcyAgICAgIDog J3BhciBzZWt1bmRpJywKKyAgICAgICAgICAgIG0gICAgICA6IGhyX190cmFu c2xhdGUsCisgICAgICAgICAgICBtbSAgICAgOiBocl9fdHJhbnNsYXRlLAor ICAgICAgICAgICAgaCAgICAgIDogaHJfX3RyYW5zbGF0ZSwKKyAgICAgICAg ICAgIGhoICAgICA6IGhyX190cmFuc2xhdGUsCisgICAgICAgICAgICBkICAg ICAgOiAnZGFuJywKKyAgICAgICAgICAgIGRkICAgICA6IGhyX190cmFuc2xh dGUsCisgICAgICAgICAgICBNICAgICAgOiAnbWplc2VjJywKKyAgICAgICAg ICAgIE1NICAgICA6IGhyX190cmFuc2xhdGUsCisgICAgICAgICAgICB5ICAg ICAgOiAnZ29kaW51JywKKyAgICAgICAgICAgIHl5ICAgICA6IGhyX190cmFu c2xhdGUKKyAgICAgICAgfSwKKyAgICAgICAgb3JkaW5hbFBhcnNlOiAvXGR7 MSwyfVwuLywKKyAgICAgICAgb3JkaW5hbCA6ICclZC4nLAorICAgICAgICB3 ZWVrIDogeworICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRo ZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCisgICAgICAgICAgICBkb3kgOiA3 ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxc3QgaXMgdGhlIGZp cnN0IHdlZWsgb2YgdGhlIHllYXIuCisgICAgICAgIH0KKyAgICB9KTsKKwor CisgICAgdmFyIHdlZWtFbmRpbmdzID0gJ3Zhc8Ohcm5hcCBow6l0ZsWRbiBr ZWRkZW4gc3plcmTDoW4gY3PDvHTDtnJ0w7Zrw7ZuIHDDqW50ZWtlbiBzem9t YmF0b24nLnNwbGl0KCcgJyk7CisgICAgZnVuY3Rpb24gaHVfX3RyYW5zbGF0 ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHsKKyAg ICAgICAgdmFyIG51bSA9IG51bWJlciwKKyAgICAgICAgICAgIHN1ZmZpeDsK KyAgICAgICAgc3dpdGNoIChrZXkpIHsKKyAgICAgICAgICAgIGNhc2UgJ3Mn OgorICAgICAgICAgICAgICAgIHJldHVybiAoaXNGdXR1cmUgfHwgd2l0aG91 dFN1ZmZpeCkgPyAnbsOpaMOhbnkgbcOhc29kcGVyYycgOiAnbsOpaMOhbnkg bcOhc29kcGVyY2UnOworICAgICAgICAgICAgY2FzZSAnbSc6CisgICAgICAg ICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRT dWZmaXggPyAnIHBlcmMnIDogJyBwZXJjZScpOworICAgICAgICAgICAgY2Fz ZSAnbW0nOgorICAgICAgICAgICAgICAgIHJldHVybiBudW0gKyAoaXNGdXR1 cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgcGVyYycgOiAnIHBlcmNlJyk7Cisg ICAgICAgICAgICBjYXNlICdoJzoKKyAgICAgICAgICAgICAgICByZXR1cm4g J2VneScgKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgw7NyYScg OiAnIMOzcsOhamEnKTsKKyAgICAgICAgICAgIGNhc2UgJ2hoJzoKKyAgICAg ICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRT dWZmaXggPyAnIMOzcmEnIDogJyDDs3LDoWphJyk7CisgICAgICAgICAgICBj YXNlICdkJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2VneScgKyAoaXNG dXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgbmFwJyA6ICcgbmFwamEnKTsK KyAgICAgICAgICAgIGNhc2UgJ2RkJzoKKyAgICAgICAgICAgICAgICByZXR1 cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIG5hcCcg OiAnIG5hcGphJyk7CisgICAgICAgICAgICBjYXNlICdNJzoKKyAgICAgICAg ICAgICAgICByZXR1cm4gJ2VneScgKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1 ZmZpeCA/ICcgaMOzbmFwJyA6ICcgaMOzbmFwamEnKTsKKyAgICAgICAgICAg IGNhc2UgJ01NJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlz RnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIGjDs25hcCcgOiAnIGjDs25h cGphJyk7CisgICAgICAgICAgICBjYXNlICd5JzoKKyAgICAgICAgICAgICAg ICByZXR1cm4gJ2VneScgKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ ICcgw6l2JyA6ICcgw6l2ZScpOworICAgICAgICAgICAgY2FzZSAneXknOgor ICAgICAgICAgICAgICAgIHJldHVybiBudW0gKyAoaXNGdXR1cmUgfHwgd2l0 aG91dFN1ZmZpeCA/ICcgw6l2JyA6ICcgw6l2ZScpOworICAgICAgICB9Cisg ICAgICAgIHJldHVybiAnJzsKKyAgICB9CisgICAgZnVuY3Rpb24gd2Vlayhp c0Z1dHVyZSkgeworICAgICAgICByZXR1cm4gKGlzRnV0dXJlID8gJycgOiAn W23Dumx0XSAnKSArICdbJyArIHdlZWtFbmRpbmdzW3RoaXMuZGF5KCldICsg J10gTFRbLWtvcl0nOworICAgIH0KKworICAgIHZhciBodSA9IG1vbWVudF9f ZGVmYXVsdC5kZWZpbmVMb2NhbGUoJ2h1JywgeworICAgICAgICBtb250aHMg OiAnamFudcOhcl9mZWJydcOhcl9tw6FyY2l1c1/DoXByaWxpc19tw6FqdXNf asO6bml1c19qw7psaXVzX2F1Z3VzenR1c19zemVwdGVtYmVyX29rdMOzYmVy X25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdCgnXycpLAorICAgICAgICBtb250 aHNTaG9ydCA6ICdqYW5fZmViX23DoXJjX8OhcHJfbcOhal9qw7puX2rDumxf YXVnX3N6ZXB0X29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpLAorICAgICAgICB3 ZWVrZGF5cyA6ICd2YXPDoXJuYXBfaMOpdGbFkV9rZWRkX3N6ZXJkYV9jc8O8 dMO2cnTDtmtfcMOpbnRla19zem9tYmF0Jy5zcGxpdCgnXycpLAorICAgICAg ICB3ZWVrZGF5c1Nob3J0IDogJ3Zhc19ow6l0X2tlZGRfc3plX2Nzw7x0X3DD qW5fc3pvJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c01pbiA6ICd2 X2hfa19zemVfY3NfcF9zem8nLnNwbGl0KCdfJyksCisgICAgICAgIGxvbmdE YXRlRm9ybWF0IDogeworICAgICAgICAgICAgTFQgOiAnSDptbScsCisgICAg ICAgICAgICBMVFMgOiAnSDptbTpzcycsCisgICAgICAgICAgICBMIDogJ1lZ WVkuTU0uREQuJywKKyAgICAgICAgICAgIExMIDogJ1lZWVkuIE1NTU0gRC4n LAorICAgICAgICAgICAgTExMIDogJ1lZWVkuIE1NTU0gRC4gSDptbScsCisg ICAgICAgICAgICBMTExMIDogJ1lZWVkuIE1NTU0gRC4sIGRkZGQgSDptbScK KyAgICAgICAgfSwKKyAgICAgICAgbWVyaWRpZW1QYXJzZTogL2RlfGR1L2ks CisgICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkgeworICAgICAgICAg ICAgcmV0dXJuIGlucHV0LmNoYXJBdCgxKS50b0xvd2VyQ2FzZSgpID09PSAn dSc7CisgICAgICAgIH0sCisgICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24g KGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7CisgICAgICAgICAgICBpZiAo aG91cnMgPCAxMikgeworICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2Vy ID09PSB0cnVlID8gJ2RlJyA6ICdERSc7CisgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID09PSB0cnVlID8g J2R1JyA6ICdEVSc7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg ICAgIGNhbGVuZGFyIDogeworICAgICAgICAgICAgc2FtZURheSA6ICdbbWFd IExUWy1rb3JdJywKKyAgICAgICAgICAgIG5leHREYXkgOiAnW2hvbG5hcF0g TFRbLWtvcl0nLAorICAgICAgICAgICAgbmV4dFdlZWsgOiBmdW5jdGlvbiAo KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHdlZWsuY2FsbCh0aGlzLCB0 cnVlKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBsYXN0RGF5IDog J1t0ZWduYXBdIExUWy1rb3JdJywKKyAgICAgICAgICAgIGxhc3RXZWVrIDog ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB3ZWVrLmNh bGwodGhpcywgZmFsc2UpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAg IHNhbWVFbHNlIDogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZl VGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICclcyBtw7psdmEnLAor ICAgICAgICAgICAgcGFzdCA6ICclcycsCisgICAgICAgICAgICBzIDogaHVf X3RyYW5zbGF0ZSwKKyAgICAgICAgICAgIG0gOiBodV9fdHJhbnNsYXRlLAor ICAgICAgICAgICAgbW0gOiBodV9fdHJhbnNsYXRlLAorICAgICAgICAgICAg aCA6IGh1X190cmFuc2xhdGUsCisgICAgICAgICAgICBoaCA6IGh1X190cmFu c2xhdGUsCisgICAgICAgICAgICBkIDogaHVfX3RyYW5zbGF0ZSwKKyAgICAg ICAgICAgIGRkIDogaHVfX3RyYW5zbGF0ZSwKKyAgICAgICAgICAgIE0gOiBo dV9fdHJhbnNsYXRlLAorICAgICAgICAgICAgTU0gOiBodV9fdHJhbnNsYXRl LAorICAgICAgICAgICAgeSA6IGh1X190cmFuc2xhdGUsCisgICAgICAgICAg ICB5eSA6IGh1X190cmFuc2xhdGUKKyAgICAgICAgfSwKKyAgICAgICAgb3Jk aW5hbFBhcnNlOiAvXGR7MSwyfVwuLywKKyAgICAgICAgb3JkaW5hbCA6ICcl ZC4nLAorICAgICAgICB3ZWVrIDogeworICAgICAgICAgICAgZG93IDogMSwg Ly8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCisgICAg ICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEph biAxc3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuCisgICAgICAg IH0KKyAgICB9KTsKKworCisgICAgdmFyIGh5X2FtID0gbW9tZW50X19kZWZh dWx0LmRlZmluZUxvY2FsZSgnaHktYW0nLCB7CisgICAgICAgIG1vbnRocyA6 IHsKKyAgICAgICAgICAgIGZvcm1hdDogJ9Ww1bjWgtW21b7VodaA1atf1oPV pdW/1oDVvtWh1oDVq1/VtNWh1oDVv9WrX9Wh1brWgNWr1azVq1/VtNWh1bXV q9W91atf1bDVuNaC1bbVq9W91atf1bDVuNaC1azVq9W91atf1oXVo9W41b3V v9W41b3Vq1/VvdWl1brVv9Wl1bTVotWl1oDVq1/VsNW41a/Vv9Wl1bTVotWl 1oDVq1/VttW41bXVpdW01aLVpdaA1atf1aTVpdWv1b/VpdW01aLVpdaA1asn LnNwbGl0KCdfJyksCisgICAgICAgICAgICBzdGFuZGFsb25lOiAn1bDVuNaC 1bbVvtWh1oBf1oPVpdW/1oDVvtWh1oBf1bTVodaA1b9f1aHVutaA1avVrF/V tNWh1bXVq9W9X9Ww1bjWgtW21avVvV/VsNW41oLVrNWr1b1f1oXVo9W41b3V v9W41b1f1b3VpdW61b/VpdW01aLVpdaAX9Ww1bjVr9W/1aXVtNWi1aXWgF/V ttW41bXVpdW01aLVpdaAX9Wk1aXVr9W/1aXVtNWi1aXWgCcuc3BsaXQoJ18n KQorICAgICAgICB9LAorICAgICAgICBtb250aHNTaG9ydCA6ICfVsNW21b5f 1oPVv9aAX9W01oDVv1/VodW61oBf1bTVtdW9X9Ww1bbVvV/VsNWs1b1f1oXV o9W9X9W91brVv1/VsNWv1b9f1bbVtNWiX9Wk1a/Vvycuc3BsaXQoJ18nKSwK KyAgICAgICAgd2Vla2RheXMgOiAn1a/Vq9aA1aHVr9WrX9Wl1oDVr9W41oLV t9Wh1aLVqdWrX9Wl1oDVpdaE1bfVodWi1anVq1/VudW41oDVpdaE1bfVodWi 1anVq1/VsNWr1bbVo9W31aHVotWp1atf1bjWgtaA1aLVodWpX9W31aHVotWh 1aknLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn1a/W gNWvX9Wl1oDVr1/VpdaA1oRf1bnWgNaEX9Ww1bbVo1/VuNaC1oDVol/Vt9Wi 1aknLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDogJ9Wv1oDV r1/VpdaA1a9f1aXWgNaEX9W51oDWhF/VsNW21aNf1bjWgtaA1aJf1bfVotWp Jy5zcGxpdCgnXycpLAorICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHsKKyAg ICAgICAgICAgIExUIDogJ0hIOm1tJywKKyAgICAgICAgICAgIExUUyA6ICdI SDptbTpzcycsCisgICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLAorICAg ICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVkg1akuJywKKyAgICAgICAgICAg IExMTCA6ICdEIE1NTU0gWVlZWSDVqS4sIEhIOm1tJywKKyAgICAgICAgICAg IExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkg1akuLCBISDptbScKKyAgICAg ICAgfSwKKyAgICAgICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBzYW1l RGF5OiAnW9Wh1bXVvdaF1oBdIExUJywKKyAgICAgICAgICAgIG5leHREYXk6 ICdb1b7VodWy1ahdIExUJywKKyAgICAgICAgICAgIGxhc3REYXk6ICdb1aXW gNWl1a9dIExUJywKKyAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAo KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFvWhdaA1agg1arV odW01ahdIExUJzsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBsYXN0 V2VlazogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAn W9Wh1bbWgdWh1a5dIGRkZGQgW9aF1oDVqCDVqtWh1bTVqF0gTFQnOworICAg ICAgICAgICAgfSwKKyAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcKKyAgICAg ICAgfSwKKyAgICAgICAgcmVsYXRpdmVUaW1lIDogeworICAgICAgICAgICAg ZnV0dXJlIDogJyVzINWw1aXVv9W4JywKKyAgICAgICAgICAgIHBhc3QgOiAn JXMg1aHVvNWh1bsnLAorICAgICAgICAgICAgcyA6ICfVtNWrINaE1aHVttWr INW+1aHVtdaA1a/VtdWh1bYnLAorICAgICAgICAgICAgbSA6ICfWgNW41brV pScsCisgICAgICAgICAgICBtbSA6ICclZCDWgNW41brVpScsCisgICAgICAg ICAgICBoIDogJ9Wq1aHVtCcsCisgICAgICAgICAgICBoaCA6ICclZCDVqtWh 1bQnLAorICAgICAgICAgICAgZCA6ICfWhdaAJywKKyAgICAgICAgICAgIGRk IDogJyVkINaF1oAnLAorICAgICAgICAgICAgTSA6ICfVodW01avVvScsCisg ICAgICAgICAgICBNTSA6ICclZCDVodW01avVvScsCisgICAgICAgICAgICB5 IDogJ9W/1aHWgNWrJywKKyAgICAgICAgICAgIHl5IDogJyVkINW/1aHWgNWr JworICAgICAgICB9LAorICAgICAgICBtZXJpZGllbVBhcnNlOiAv1aPVq9W3 1aXWgNW+1aF81aHVvNWh1b7VuNW/1b7VoXzWgdWl1oDVpdWv1b7VoXzVpdaA 1aXVr9W41bXVodW2LywKKyAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0 KSB7CisgICAgICAgICAgICByZXR1cm4gL14o1oHVpdaA1aXVr9W+1aF81aXW gNWl1a/VuNW11aHVtikkLy50ZXN0KGlucHV0KTsKKyAgICAgICAgfSwKKyAg ICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cikgeworICAgICAgICAg ICAgaWYgKGhvdXIgPCA0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICfV o9Wr1bfVpdaA1b7VoSc7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIg PCAxMikgeworICAgICAgICAgICAgICAgIHJldHVybiAn1aHVvNWh1b7VuNW/ 1b7VoSc7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykgewor ICAgICAgICAgICAgICAgIHJldHVybiAn1oHVpdaA1aXVr9W+1aEnOworICAg ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ9Wl 1oDVpdWv1bjVtdWh1bYnOworICAgICAgICAgICAgfQorICAgICAgICB9LAor ICAgICAgICBvcmRpbmFsUGFyc2U6IC9cZHsxLDJ9fFxkezEsMn0tKNWr1bZ8 1oDVpCkvLAorICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBw ZXJpb2QpIHsKKyAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7CisgICAg ICAgICAgICAgICAgY2FzZSAnREREJzoKKyAgICAgICAgICAgICAgICBjYXNl ICd3JzoKKyAgICAgICAgICAgICAgICBjYXNlICdXJzoKKyAgICAgICAgICAg ICAgICBjYXNlICdERERvJzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKG51 bWJlciA9PT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IG51bWJlciArICct1avVtic7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct1oDVpCc7Cisg ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuIG51bWJlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg ICAgICAgd2VlayA6IHsKKyAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRh eSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorICAgICAgICAgICAg ZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMXN0IGlz IHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLgorICAgICAgICB9CisgICAg fSk7CisKKworICAgIHZhciBpZCA9IG1vbWVudF9fZGVmYXVsdC5kZWZpbmVM b2NhbGUoJ2lkJywgeworICAgICAgICBtb250aHMgOiAnSmFudWFyaV9GZWJy dWFyaV9NYXJldF9BcHJpbF9NZWlfSnVuaV9KdWxpX0FndXN0dXNfU2VwdGVt YmVyX09rdG9iZXJfTm92ZW1iZXJfRGVzZW1iZXInLnNwbGl0KCdfJyksCisg ICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZWJfTWFyX0Fwcl9NZWlfSnVu X0p1bF9BZ3NfU2VwX09rdF9Ob3ZfRGVzJy5zcGxpdCgnXycpLAorICAgICAg ICB3ZWVrZGF5cyA6ICdNaW5nZ3VfU2VuaW5fU2VsYXNhX1JhYnVfS2FtaXNf SnVtYXRfU2FidHUnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzU2hv cnQgOiAnTWluX1Nlbl9TZWxfUmFiX0thbV9KdW1fU2FiJy5zcGxpdCgnXycp LAorICAgICAgICB3ZWVrZGF5c01pbiA6ICdNZ19Tbl9TbF9SYl9LbV9KbV9T Yicuc3BsaXQoJ18nKSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7Cisg ICAgICAgICAgICBMVCA6ICdISC5tbScsCisgICAgICAgICAgICBMVFMgOiAn SEgubW0uc3MnLAorICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJywKKyAg ICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJywKKyAgICAgICAgICAgIExM TCA6ICdEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tJywKKyAgICAgICAgICAg IExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScKKyAg ICAgICAgfSwKKyAgICAgICAgbWVyaWRpZW1QYXJzZTogL3BhZ2l8c2lhbmd8 c29yZXxtYWxhbS8sCisgICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9u IChob3VyLCBtZXJpZGllbSkgeworICAgICAgICAgICAgaWYgKGhvdXIgPT09 IDEyKSB7CisgICAgICAgICAgICAgICAgaG91ciA9IDA7CisgICAgICAgICAg ICB9CisgICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdwYWdpJykgewor ICAgICAgICAgICAgICAgIHJldHVybiBob3VyOworICAgICAgICAgICAgfSBl bHNlIGlmIChtZXJpZGllbSA9PT0gJ3NpYW5nJykgeworICAgICAgICAgICAg ICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjsKKyAg ICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzb3JlJyB8fCBt ZXJpZGllbSA9PT0gJ21hbGFtJykgeworICAgICAgICAgICAgICAgIHJldHVy biBob3VyICsgMTI7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg ICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xv d2VyKSB7CisgICAgICAgICAgICBpZiAoaG91cnMgPCAxMSkgeworICAgICAg ICAgICAgICAgIHJldHVybiAncGFnaSc7CisgICAgICAgICAgICB9IGVsc2Ug aWYgKGhvdXJzIDwgMTUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ3Np YW5nJzsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkgewor ICAgICAgICAgICAgICAgIHJldHVybiAnc29yZSc7CisgICAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiAnbWFsYW0nOworICAg ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBjYWxlbmRhciA6IHsK KyAgICAgICAgICAgIHNhbWVEYXkgOiAnW0hhcmkgaW5pIHB1a3VsXSBMVCcs CisgICAgICAgICAgICBuZXh0RGF5IDogJ1tCZXNvayBwdWt1bF0gTFQnLAor ICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbcHVrdWxdIExUJywKKyAg ICAgICAgICAgIGxhc3REYXkgOiAnW0tlbWFyaW4gcHVrdWxdIExUJywKKyAg ICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW2xhbHUgcHVrdWxdIExUJywK KyAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnCisgICAgICAgIH0sCisgICAg ICAgIHJlbGF0aXZlVGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICdk YWxhbSAlcycsCisgICAgICAgICAgICBwYXN0IDogJyVzIHlhbmcgbGFsdScs CisgICAgICAgICAgICBzIDogJ2JlYmVyYXBhIGRldGlrJywKKyAgICAgICAg ICAgIG0gOiAnc2VtZW5pdCcsCisgICAgICAgICAgICBtbSA6ICclZCBtZW5p dCcsCisgICAgICAgICAgICBoIDogJ3NlamFtJywKKyAgICAgICAgICAgIGho IDogJyVkIGphbScsCisgICAgICAgICAgICBkIDogJ3NlaGFyaScsCisgICAg ICAgICAgICBkZCA6ICclZCBoYXJpJywKKyAgICAgICAgICAgIE0gOiAnc2Vi dWxhbicsCisgICAgICAgICAgICBNTSA6ICclZCBidWxhbicsCisgICAgICAg ICAgICB5IDogJ3NldGFodW4nLAorICAgICAgICAgICAgeXkgOiAnJWQgdGFo dW4nCisgICAgICAgIH0sCisgICAgICAgIHdlZWsgOiB7CisgICAgICAgICAg ICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUg d2Vlay4KKyAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQg Y29udGFpbnMgSmFuIDFzdCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVh ci4KKyAgICAgICAgfQorICAgIH0pOworCisKKyAgICBmdW5jdGlvbiBpc19f cGx1cmFsKG4pIHsKKyAgICAgICAgaWYgKG4gJSAxMDAgPT09IDExKSB7Cisg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChu ICUgMTAgPT09IDEpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZnVu Y3Rpb24gaXNfX3RyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtl eSwgaXNGdXR1cmUpIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciAr ICcgJzsKKyAgICAgICAgc3dpdGNoIChrZXkpIHsKKyAgICAgICAgICAgIGNh c2UgJ3MnOgorICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4 IHx8IGlzRnV0dXJlID8gJ25va2tyYXIgc2Vrw7puZHVyJyA6ICdub2trcnVt IHNla8O6bmR1bSc7CisgICAgICAgICAgICBjYXNlICdtJzoKKyAgICAgICAg ICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdtw61uw7p0YScgOiAn bcOtbsO6dHUnOworICAgICAgICAgICAgY2FzZSAnbW0nOgorICAgICAgICAg ICAgICAgIGlmIChpc19fcGx1cmFsKG51bWJlcikpIHsKKyAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIHJlc3VsdCArICh3aXRob3V0U3VmZml4IHx8IGlz RnV0dXJlID8gJ23DrW7DunR1cicgOiAnbcOtbsO6dHVtJyk7CisgICAgICAg ICAgICAgICAgfSBlbHNlIGlmICh3aXRob3V0U3VmZml4KSB7CisgICAgICAg ICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbcOtbsO6dGEnOworICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0 ICsgJ23DrW7DunR1JzsKKyAgICAgICAgICAgIGNhc2UgJ2hoJzoKKyAgICAg ICAgICAgICAgICBpZiAoaXNfX3BsdXJhbChudW1iZXIpKSB7CisgICAgICAg ICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAod2l0aG91dFN1ZmZpeCB8 fCBpc0Z1dHVyZSA/ICdrbHVra3VzdHVuZGlyJyA6ICdrbHVra3VzdHVuZHVt Jyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVy biByZXN1bHQgKyAna2x1a2t1c3R1bmQnOworICAgICAgICAgICAgY2FzZSAn ZCc6CisgICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHsKKyAg ICAgICAgICAgICAgICAgICAgcmV0dXJuICdkYWd1cic7CisgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdk YWcnIDogJ2RlZ2knOworICAgICAgICAgICAgY2FzZSAnZGQnOgorICAgICAg ICAgICAgICAgIGlmIChpc19fcGx1cmFsKG51bWJlcikpIHsKKyAgICAgICAg ICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnZGFnYXInOworICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBy ZXN1bHQgKyAoaXNGdXR1cmUgPyAnZGFnYScgOiAnZMO2Z3VtJyk7CisgICAg ICAgICAgICAgICAgfSBlbHNlIGlmICh3aXRob3V0U3VmZml4KSB7CisgICAg ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnZGFndXInOworICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0 ICsgKGlzRnV0dXJlID8gJ2RhZycgOiAnZGVnaScpOworICAgICAgICAgICAg Y2FzZSAnTSc6CisgICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgp IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdtw6FudcOwdXInOwor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gaXNG dXR1cmUgPyAnbcOhbnXDsCcgOiAnbcOhbnXDsGknOworICAgICAgICAgICAg Y2FzZSAnTU0nOgorICAgICAgICAgICAgICAgIGlmIChpc19fcGx1cmFsKG51 bWJlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZm aXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQg KyAnbcOhbnXDsGlyJzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKGlzRnV0dXJlID8gJ23D oW51w7BpJyA6ICdtw6FudcOwdW0nKTsKKyAgICAgICAgICAgICAgICB9IGVs c2UgaWYgKHdpdGhvdXRTdWZmaXgpIHsKKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuIHJlc3VsdCArICdtw6FudcOwdXInOworICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKGlzRnV0dXJl ID8gJ23DoW51w7AnIDogJ23DoW51w7BpJyk7CisgICAgICAgICAgICBjYXNl ICd5JzoKKyAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8 fCBpc0Z1dHVyZSA/ICfDoXInIDogJ8OhcmknOworICAgICAgICAgICAgY2Fz ZSAneXknOgorICAgICAgICAgICAgICAgIGlmIChpc19fcGx1cmFsKG51bWJl cikpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICh3 aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ8OhcicgOiAnw6FydW0nKTsK KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHJl c3VsdCArICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ8OhcicgOiAn w6FyaScpOworICAgICAgICB9CisgICAgfQorCisgICAgdmFyIGlzID0gbW9t ZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgnaXMnLCB7CisgICAgICAgIG1v bnRocyA6ICdqYW7DumFyX2ZlYnLDumFyX21hcnNfYXByw61sX21hw61fasO6 bsOtX2rDumzDrV/DoWfDunN0X3NlcHRlbWJlcl9va3TDs2Jlcl9uw7N2ZW1i ZXJfZGVzZW1iZXInLnNwbGl0KCdfJyksCisgICAgICAgIG1vbnRoc1Nob3J0 IDogJ2phbl9mZWJfbWFyX2Fwcl9tYcOtX2rDum5fasO6bF/DoWfDul9zZXBf b2t0X27Ds3ZfZGVzJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5cyA6 ICdzdW5udWRhZ3VyX23DoW51ZGFndXJfw75yacOwanVkYWd1cl9tacOwdmlr dWRhZ3VyX2ZpbW10dWRhZ3VyX2bDtnN0dWRhZ3VyX2xhdWdhcmRhZ3VyJy5z cGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ3N1bl9tw6Fu X8O+cmlfbWnDsF9maW1fZsO2c19sYXUnLnNwbGl0KCdfJyksCisgICAgICAg IHdlZWtkYXlzTWluIDogJ1N1X03DoV/DnnJfTWlfRmlfRsO2X0xhJy5zcGxp dCgnXycpLAorICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHsKKyAgICAgICAg ICAgIExUIDogJ0g6bW0nLAorICAgICAgICAgICAgTFRTIDogJ0g6bW06c3Mn LAorICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJywKKyAgICAgICAgICAg IExMIDogJ0QuIE1NTU0gWVlZWScsCisgICAgICAgICAgICBMTEwgOiAnRC4g TU1NTSBZWVlZIFtrbC5dIEg6bW0nLAorICAgICAgICAgICAgTExMTCA6ICdk ZGRkLCBELiBNTU1NIFlZWVkgW2tsLl0gSDptbScKKyAgICAgICAgfSwKKyAg ICAgICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBzYW1lRGF5IDogJ1vD rSBkYWcga2wuXSBMVCcsCisgICAgICAgICAgICBuZXh0RGF5IDogJ1vDoSBt b3JndW4ga2wuXSBMVCcsCisgICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRk IFtrbC5dIExUJywKKyAgICAgICAgICAgIGxhc3REYXkgOiAnW8OtIGfDpnIg a2wuXSBMVCcsCisgICAgICAgICAgICBsYXN0V2VlayA6ICdbc8Otw7Bhc3Rh XSBkZGRkIFtrbC5dIExUJywKKyAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wn CisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZSA6IHsKKyAgICAg ICAgICAgIGZ1dHVyZSA6ICdlZnRpciAlcycsCisgICAgICAgICAgICBwYXN0 IDogJ2Z5cmlyICVzIHPDrcOwYW4nLAorICAgICAgICAgICAgcyA6IGlzX190 cmFuc2xhdGUsCisgICAgICAgICAgICBtIDogaXNfX3RyYW5zbGF0ZSwKKyAg ICAgICAgICAgIG1tIDogaXNfX3RyYW5zbGF0ZSwKKyAgICAgICAgICAgIGgg OiAna2x1a2t1c3R1bmQnLAorICAgICAgICAgICAgaGggOiBpc19fdHJhbnNs YXRlLAorICAgICAgICAgICAgZCA6IGlzX190cmFuc2xhdGUsCisgICAgICAg ICAgICBkZCA6IGlzX190cmFuc2xhdGUsCisgICAgICAgICAgICBNIDogaXNf X3RyYW5zbGF0ZSwKKyAgICAgICAgICAgIE1NIDogaXNfX3RyYW5zbGF0ZSwK KyAgICAgICAgICAgIHkgOiBpc19fdHJhbnNsYXRlLAorICAgICAgICAgICAg eXkgOiBpc19fdHJhbnNsYXRlCisgICAgICAgIH0sCisgICAgICAgIG9yZGlu YWxQYXJzZTogL1xkezEsMn1cLi8sCisgICAgICAgIG9yZGluYWwgOiAnJWQu JywKKyAgICAgICAgd2VlayA6IHsKKyAgICAgICAgICAgIGRvdyA6IDEsIC8v IE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorICAgICAg ICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4g NHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLgorICAgICAgICB9 CisgICAgfSk7CisKKworICAgIHZhciBpdCA9IG1vbWVudF9fZGVmYXVsdC5k ZWZpbmVMb2NhbGUoJ2l0JywgeworICAgICAgICBtb250aHMgOiAnZ2VubmFp b19mZWJicmFpb19tYXJ6b19hcHJpbGVfbWFnZ2lvX2dpdWdub19sdWdsaW9f YWdvc3RvX3NldHRlbWJyZV9vdHRvYnJlX25vdmVtYnJlX2RpY2VtYnJlJy5z cGxpdCgnXycpLAorICAgICAgICBtb250aHNTaG9ydCA6ICdnZW5fZmViX21h cl9hcHJfbWFnX2dpdV9sdWdfYWdvX3NldF9vdHRfbm92X2RpYycuc3BsaXQo J18nKSwKKyAgICAgICAgd2Vla2RheXMgOiAnRG9tZW5pY2FfTHVuZWTDrF9N YXJ0ZWTDrF9NZXJjb2xlZMOsX0dpb3ZlZMOsX1ZlbmVyZMOsX1NhYmF0bycu c3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdEb21fTHVu X01hcl9NZXJfR2lvX1Zlbl9TYWInLnNwbGl0KCdfJyksCisgICAgICAgIHdl ZWtkYXlzTWluIDogJ0RvX0x1X01hX01lX0dpX1ZlX1NhJy5zcGxpdCgnXycp LAorICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHsKKyAgICAgICAgICAgIExU IDogJ0hIOm1tJywKKyAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsCisg ICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLAorICAgICAgICAgICAgTEwg OiAnRCBNTU1NIFlZWVknLAorICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZ WVlZIEhIOm1tJywKKyAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1N IFlZWVkgSEg6bW0nCisgICAgICAgIH0sCisgICAgICAgIGNhbGVuZGFyIDog eworICAgICAgICAgICAgc2FtZURheTogJ1tPZ2dpIGFsbGVdIExUJywKKyAg ICAgICAgICAgIG5leHREYXk6ICdbRG9tYW5pIGFsbGVdIExUJywKKyAgICAg ICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYWxsZV0gTFQnLAorICAgICAgICAg ICAgbGFzdERheTogJ1tJZXJpIGFsbGVdIExUJywKKyAgICAgICAgICAgIGxh c3RXZWVrOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc3dpdGNo ICh0aGlzLmRheSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoK KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW2xhIHNjb3JzYV0g ZGRkZCBbYWxsZV0gTFQnOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0 OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbG8gc2NvcnNv XSBkZGRkIFthbGxlXSBMVCc7CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgfSwKKyAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcKKyAgICAgICAg fSwKKyAgICAgICAgcmVsYXRpdmVUaW1lIDogeworICAgICAgICAgICAgZnV0 dXJlIDogZnVuY3Rpb24gKHMpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g KCgvXlswLTldLiskLykudGVzdChzKSA/ICd0cmEnIDogJ2luJykgKyAnICcg KyBzOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHBhc3QgOiAnJXMg ZmEnLAorICAgICAgICAgICAgcyA6ICdhbGN1bmkgc2Vjb25kaScsCisgICAg ICAgICAgICBtIDogJ3VuIG1pbnV0bycsCisgICAgICAgICAgICBtbSA6ICcl ZCBtaW51dGknLAorICAgICAgICAgICAgaCA6ICd1blwnb3JhJywKKyAgICAg ICAgICAgIGhoIDogJyVkIG9yZScsCisgICAgICAgICAgICBkIDogJ3VuIGdp b3JubycsCisgICAgICAgICAgICBkZCA6ICclZCBnaW9ybmknLAorICAgICAg ICAgICAgTSA6ICd1biBtZXNlJywKKyAgICAgICAgICAgIE1NIDogJyVkIG1l c2knLAorICAgICAgICAgICAgeSA6ICd1biBhbm5vJywKKyAgICAgICAgICAg IHl5IDogJyVkIGFubmknCisgICAgICAgIH0sCisgICAgICAgIG9yZGluYWxQ YXJzZSA6IC9cZHsxLDJ9wrovLAorICAgICAgICBvcmRpbmFsOiAnJWTCuics CisgICAgICAgIHdlZWsgOiB7CisgICAgICAgICAgICBkb3cgOiAxLCAvLyBN b25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KKyAgICAgICAg ICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0 aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci4KKyAgICAgICAgfQor ICAgIH0pOworCisKKyAgICB2YXIgamEgPSBtb21lbnRfX2RlZmF1bHQuZGVm aW5lTG9jYWxlKCdqYScsIHsKKyAgICAgICAgbW9udGhzIDogJzHmnIhfMuac iF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx 5pyIXzEy5pyIJy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNTaG9ydCA6 ICcx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeac iF8xMOaciF8xMeaciF8xMuaciCcuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vl a2RheXMgOiAn5pel5puc5pelX+aciOabnOaXpV/ngavmm5zml6Vf5rC05puc 5pelX+acqOabnOaXpV/ph5Hmm5zml6Vf5Zyf5puc5pelJy5zcGxpdCgnXycp LAorICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+aXpV/mnIhf54GrX+awtF/m nKhf6YeRX+Wcnycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNNaW4g OiAn5pelX+aciF/ngatf5rC0X+acqF/ph5Ff5ZyfJy5zcGxpdCgnXycpLAor ICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHsKKyAgICAgICAgICAgIExUIDog J0Fo5pmCbeWIhicsCisgICAgICAgICAgICBMVFMgOiAnQWjmmYJt5YiGc+en kicsCisgICAgICAgICAgICBMIDogJ1lZWVkvTU0vREQnLAorICAgICAgICAg ICAgTEwgOiAnWVlZWeW5tE3mnIhE5pelJywKKyAgICAgICAgICAgIExMTCA6 ICdZWVlZ5bm0TeaciETml6VBaOaZgm3liIYnLAorICAgICAgICAgICAgTExM TCA6ICdZWVlZ5bm0TeaciETml6VBaOaZgm3liIYgZGRkZCcKKyAgICAgICAg fSwKKyAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WNiOWJjXzljYjlvowvaSwK KyAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkgeworICAgICAgICAg ICAgcmV0dXJuIGlucHV0ID09PSAn5Y2I5b6MJzsKKyAgICAgICAgfSwKKyAg ICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xv d2VyKSB7CisgICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7CisgICAgICAg ICAgICAgICAgcmV0dXJuICfljYjliY0nOworICAgICAgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ+WNiOW+jCc7CisgICAgICAg ICAgICB9CisgICAgICAgIH0sCisgICAgICAgIGNhbGVuZGFyIDogeworICAg ICAgICAgICAgc2FtZURheSA6ICdb5LuK5pelXSBMVCcsCisgICAgICAgICAg ICBuZXh0RGF5IDogJ1vmmI7ml6VdIExUJywKKyAgICAgICAgICAgIG5leHRX ZWVrIDogJ1vmnaXpgLFdZGRkZCBMVCcsCisgICAgICAgICAgICBsYXN0RGF5 IDogJ1vmmKjml6VdIExUJywKKyAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vl iY3pgLFdZGRkZCBMVCcsCisgICAgICAgICAgICBzYW1lRWxzZSA6ICdMJwor ICAgICAgICB9LAorICAgICAgICBvcmRpbmFsUGFyc2UgOiAvXGR7MSwyfeaX pS8sCisgICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJp b2QpIHsKKyAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7CisgICAgICAg ICAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICAgICAgY2FzZSAnRCc6 CisgICAgICAgICAgICAgICAgY2FzZSAnREREJzoKKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIG51bWJlciArICfml6UnOworICAgICAgICAgICAgICAg IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7 CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZl VGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICclc+W+jCcsCisgICAg ICAgICAgICBwYXN0IDogJyVz5YmNJywKKyAgICAgICAgICAgIHMgOiAn5pWw 56eSJywKKyAgICAgICAgICAgIG0gOiAnMeWIhicsCisgICAgICAgICAgICBt bSA6ICclZOWIhicsCisgICAgICAgICAgICBoIDogJzHmmYLplpMnLAorICAg ICAgICAgICAgaGggOiAnJWTmmYLplpMnLAorICAgICAgICAgICAgZCA6ICcx 5pelJywKKyAgICAgICAgICAgIGRkIDogJyVk5pelJywKKyAgICAgICAgICAg IE0gOiAnMeODtuaciCcsCisgICAgICAgICAgICBNTSA6ICclZOODtuaciCcs CisgICAgICAgICAgICB5IDogJzHlubQnLAorICAgICAgICAgICAgeXkgOiAn JWTlubQnCisgICAgICAgIH0KKyAgICB9KTsKKworCisgICAgdmFyIGp2ID0g bW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgnanYnLCB7CisgICAgICAg IG1vbnRocyA6ICdKYW51YXJpX0ZlYnJ1YXJpX01hcmV0X0FwcmlsX01laV9K dW5pX0p1bGlfQWd1c3R1c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3BlbWJlcl9E ZXNlbWJlcicuc3BsaXQoJ18nKSwKKyAgICAgICAgbW9udGhzU2hvcnQgOiAn SmFuX0ZlYl9NYXJfQXByX01laV9KdW5fSnVsX0Fnc19TZXBfT2t0X05vcF9E ZXMnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzIDogJ01pbmdndV9T ZW5lbl9TZWxvc29fUmVidV9LZW1pc19KZW11d2FoX1NlcHR1Jy5zcGxpdCgn XycpLAorICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ01pbl9TZW5fU2VsX1Jl Yl9LZW1fSmVtX1NlcCcuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNN aW4gOiAnTWdfU25fU2xfUmJfS21fSm1fU3AnLnNwbGl0KCdfJyksCisgICAg ICAgIGxvbmdEYXRlRm9ybWF0IDogeworICAgICAgICAgICAgTFQgOiAnSEgu bW0nLAorICAgICAgICAgICAgTFRTIDogJ0hILm1tLnNzJywKKyAgICAgICAg ICAgIEwgOiAnREQvTU0vWVlZWScsCisgICAgICAgICAgICBMTCA6ICdEIE1N TU0gWVlZWScsCisgICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgW3B1 a3VsXSBISC5tbScsCisgICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1N TSBZWVlZIFtwdWt1bF0gSEgubW0nCisgICAgICAgIH0sCisgICAgICAgIG1l cmlkaWVtUGFyc2U6IC9lbmppbmd8c2l5YW5nfHNvbnRlbnxuZGFsdS8sCisg ICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGll bSkgeworICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7CisgICAgICAg ICAgICAgICAgaG91ciA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAg ICBpZiAobWVyaWRpZW0gPT09ICdlbmppbmcnKSB7CisgICAgICAgICAgICAg ICAgcmV0dXJuIGhvdXI7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlk aWVtID09PSAnc2l5YW5nJykgeworICAgICAgICAgICAgICAgIHJldHVybiBo b3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjsKKyAgICAgICAgICAgIH0g ZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzb250ZW4nIHx8IG1lcmlkaWVtID09 PSAnbmRhbHUnKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAx MjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgbWVyaWRp ZW0gOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHsKKyAg ICAgICAgICAgIGlmIChob3VycyA8IDExKSB7CisgICAgICAgICAgICAgICAg cmV0dXJuICdlbmppbmcnOworICAgICAgICAgICAgfSBlbHNlIGlmIChob3Vy cyA8IDE1KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICdzaXlhbmcnOwor ICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE5KSB7CisgICAgICAg ICAgICAgICAgcmV0dXJuICdzb250ZW4nOworICAgICAgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ25kYWx1JzsKKyAgICAgICAg ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgY2FsZW5kYXIgOiB7CisgICAg ICAgICAgICBzYW1lRGF5IDogJ1tEaW50ZW4gcHVuaWtvIHB1a3VsXSBMVCcs CisgICAgICAgICAgICBuZXh0RGF5IDogJ1tNYmVuamFuZyBwdWt1bF0gTFQn LAorICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbcHVrdWxdIExUJywK KyAgICAgICAgICAgIGxhc3REYXkgOiAnW0thbGEgd2luZ2kgcHVrdWxdIExU JywKKyAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW2tlcGVuZ2tlciBw dWt1bF0gTFQnLAorICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCcKKyAgICAg ICAgfSwKKyAgICAgICAgcmVsYXRpdmVUaW1lIDogeworICAgICAgICAgICAg ZnV0dXJlIDogJ3dvbnRlbiBpbmcgJXMnLAorICAgICAgICAgICAgcGFzdCA6 ICclcyBpbmdrYW5nIGtlcGVuZ2tlcicsCisgICAgICAgICAgICBzIDogJ3Nh d2V0YXdpcyBkZXRpaycsCisgICAgICAgICAgICBtIDogJ3NldHVuZ2dhbCBt ZW5pdCcsCisgICAgICAgICAgICBtbSA6ICclZCBtZW5pdCcsCisgICAgICAg ICAgICBoIDogJ3NldHVuZ2dhbCBqYW0nLAorICAgICAgICAgICAgaGggOiAn JWQgamFtJywKKyAgICAgICAgICAgIGQgOiAnc2VkaW50ZW4nLAorICAgICAg ICAgICAgZGQgOiAnJWQgZGludGVuJywKKyAgICAgICAgICAgIE0gOiAnc2V3 dWxhbicsCisgICAgICAgICAgICBNTSA6ICclZCB3dWxhbicsCisgICAgICAg ICAgICB5IDogJ3NldGF1bicsCisgICAgICAgICAgICB5eSA6ICclZCB0YXVu JworICAgICAgICB9LAorICAgICAgICB3ZWVrIDogeworICAgICAgICAgICAg ZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdl ZWsuCisgICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNv bnRhaW5zIEphbiAxc3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIu CisgICAgICAgIH0KKyAgICB9KTsKKworCisgICAgdmFyIGthID0gbW9tZW50 X19kZWZhdWx0LmRlZmluZUxvY2FsZSgna2EnLCB7CisgICAgICAgIG1vbnRo cyA6IHsKKyAgICAgICAgICAgIHN0YW5kYWxvbmU6ICfhg5jhg5Dhg5zhg5Xh g5Dhg6Dhg5hf4YOX4YOU4YOR4YOU4YOg4YOV4YOQ4YOa4YOYX+GDm+GDkOGD oOGDouGDmF/hg5Dhg57hg6Dhg5jhg5rhg5hf4YOb4YOQ4YOY4YOh4YOYX+GD mOGDleGDnOGDmOGDoeGDmF/hg5jhg5Xhg5rhg5jhg6Hhg5hf4YOQ4YOS4YOV 4YOY4YOh4YOi4YOdX+GDoeGDlOGDpeGDouGDlOGDm+GDkeGDlOGDoOGDmF/h g53hg6Xhg6Lhg53hg5vhg5Hhg5Thg6Dhg5hf4YOc4YOd4YOU4YOb4YOR4YOU 4YOg4YOYX+GDk+GDlOGDmeGDlOGDm+GDkeGDlOGDoOGDmCcuc3BsaXQoJ18n KSwKKyAgICAgICAgICAgIGZvcm1hdDogJ+GDmOGDkOGDnOGDleGDkOGDoOGD oV/hg5fhg5Thg5Hhg5Thg6Dhg5Xhg5Dhg5rhg6Ff4YOb4YOQ4YOg4YOi4YOh X+GDkOGDnuGDoOGDmOGDmuGDmOGDoV/hg5vhg5Dhg5jhg6Hhg6Ff4YOY4YOV 4YOc4YOY4YOh4YOhX+GDmOGDleGDmuGDmOGDoeGDoV/hg5Dhg5Lhg5Xhg5jh g6Hhg6Lhg6Ff4YOh4YOU4YOl4YOi4YOU4YOb4YOR4YOU4YOg4YOhX+GDneGD peGDouGDneGDm+GDkeGDlOGDoOGDoV/hg5zhg53hg5Thg5vhg5Hhg5Thg6Dh g6Ff4YOT4YOU4YOZ4YOU4YOb4YOR4YOU4YOg4YOhJy5zcGxpdCgnXycpCisg ICAgICAgIH0sCisgICAgICAgIG1vbnRoc1Nob3J0IDogJ+GDmOGDkOGDnF/h g5fhg5Thg5Ff4YOb4YOQ4YOgX+GDkOGDnuGDoF/hg5vhg5Dhg5hf4YOY4YOV 4YOcX+GDmOGDleGDml/hg5Dhg5Lhg5Vf4YOh4YOU4YOlX+GDneGDpeGDol/h g5zhg53hg5Rf4YOT4YOU4YOZJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVr ZGF5cyA6IHsKKyAgICAgICAgICAgIHN0YW5kYWxvbmU6ICfhg5nhg5Xhg5jh g6Dhg5Bf4YOd4YOg4YOo4YOQ4YOR4YOQ4YOX4YOYX+GDoeGDkOGDm+GDqOGD kOGDkeGDkOGDl+GDmF/hg53hg5fhg67hg6jhg5Dhg5Hhg5Dhg5fhg5hf4YOu 4YOj4YOX4YOo4YOQ4YOR4YOQ4YOX4YOYX+GDnuGDkOGDoOGDkOGDoeGDmeGD lOGDleGDmF/hg6jhg5Dhg5Hhg5Dhg5fhg5gnLnNwbGl0KCdfJyksCisgICAg ICAgICAgICBmb3JtYXQ6ICfhg5nhg5Xhg5jhg6Dhg5Dhg6Ff4YOd4YOg4YOo 4YOQ4YOR4YOQ4YOX4YOhX+GDoeGDkOGDm+GDqOGDkOGDkeGDkOGDl+GDoV/h g53hg5fhg67hg6jhg5Dhg5Hhg5Dhg5fhg6Ff4YOu4YOj4YOX4YOo4YOQ4YOR 4YOQ4YOX4YOhX+GDnuGDkOGDoOGDkOGDoeGDmeGDlOGDleGDoV/hg6jhg5Dh g5Hhg5Dhg5fhg6EnLnNwbGl0KCdfJyksCisgICAgICAgICAgICBpc0Zvcm1h dDogLyjhg6zhg5jhg5zhg5B84YOo4YOU4YOb4YOT4YOU4YOSKS8KKyAgICAg ICAgfSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfhg5nhg5Xhg5hf4YOd 4YOg4YOoX+GDoeGDkOGDm1/hg53hg5fhg65f4YOu4YOj4YOXX+GDnuGDkOGD oF/hg6jhg5Dhg5EnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWlu IDogJ+GDmeGDlV/hg53hg6Bf4YOh4YOQX+GDneGDl1/hg67hg6Nf4YOe4YOQ X+GDqOGDkCcuc3BsaXQoJ18nKSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQg OiB7CisgICAgICAgICAgICBMVCA6ICdoOm1tIEEnLAorICAgICAgICAgICAg TFRTIDogJ2g6bW06c3MgQScsCisgICAgICAgICAgICBMIDogJ0REL01NL1lZ WVknLAorICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLAorICAgICAg ICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIGg6bW0gQScsCisgICAgICAgICAg ICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQScKKyAgICAgICAg fSwKKyAgICAgICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBzYW1lRGF5 IDogJ1vhg5Phg6bhg5Thg6FdIExUWy3hg5bhg5RdJywKKyAgICAgICAgICAg IG5leHREYXkgOiAnW+GDruGDleGDkOGDml0gTFRbLeGDluGDlF0nLAorICAg ICAgICAgICAgbGFzdERheSA6ICdb4YOS4YOj4YOo4YOY4YOcXSBMVFst4YOW 4YOUXScsCisgICAgICAgICAgICBuZXh0V2VlayA6ICdb4YOo4YOU4YOb4YOT 4YOU4YOSXSBkZGRkIExUWy3hg5bhg5RdJywKKyAgICAgICAgICAgIGxhc3RX ZWVrIDogJ1vhg6zhg5jhg5zhg5BdIGRkZGQgTFQt4YOW4YOUJywKKyAgICAg ICAgICAgIHNhbWVFbHNlIDogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJl bGF0aXZlVGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6IGZ1bmN0aW9u IChzKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICgvKOGDrOGDkOGDm+GD mHzhg6zhg6Phg5fhg5h84YOh4YOQ4YOQ4YOX4YOYfOGDrOGDlOGDmuGDmCkv KS50ZXN0KHMpID8KKyAgICAgICAgICAgICAgICAgICAgcy5yZXBsYWNlKC/h g5gkLywgJ+GDqOGDmCcpIDoKKyAgICAgICAgICAgICAgICAgICAgcyArICfh g6jhg5gnOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHBhc3QgOiBm dW5jdGlvbiAocykgeworICAgICAgICAgICAgICAgIGlmICgoLyjhg6zhg5Dh g5vhg5h84YOs4YOj4YOX4YOYfOGDoeGDkOGDkOGDl+GDmHzhg5Phg6bhg5R8 4YOX4YOV4YOUKS8pLnRlc3QocykpIHsKKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuIHMucmVwbGFjZSgvKOGDmHzhg5QpJC8sICfhg5jhg6Eg4YOs4YOY 4YOcJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlm ICgoL+GDrOGDlOGDmuGDmC8pLnRlc3QocykpIHsKKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIHMucmVwbGFjZSgv4YOs4YOU4YOa4YOYJC8sICfhg6zh g5rhg5jhg6Eg4YOs4YOY4YOcJyk7CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgfSwKKyAgICAgICAgICAgIHMgOiAn4YOg4YOQ4YOb4YOT4YOU 4YOc4YOY4YOb4YOUIOGDrOGDkOGDm+GDmCcsCisgICAgICAgICAgICBtIDog J+GDrOGDo+GDl+GDmCcsCisgICAgICAgICAgICBtbSA6ICclZCDhg6zhg6Ph g5fhg5gnLAorICAgICAgICAgICAgaCA6ICfhg6Hhg5Dhg5Dhg5fhg5gnLAor ICAgICAgICAgICAgaGggOiAnJWQg4YOh4YOQ4YOQ4YOX4YOYJywKKyAgICAg ICAgICAgIGQgOiAn4YOT4YOm4YOUJywKKyAgICAgICAgICAgIGRkIDogJyVk IOGDk+GDpuGDlCcsCisgICAgICAgICAgICBNIDogJ+GDl+GDleGDlCcsCisg ICAgICAgICAgICBNTSA6ICclZCDhg5fhg5Xhg5QnLAorICAgICAgICAgICAg eSA6ICfhg6zhg5Thg5rhg5gnLAorICAgICAgICAgICAgeXkgOiAnJWQg4YOs 4YOU4YOa4YOYJworICAgICAgICB9LAorICAgICAgICBvcmRpbmFsUGFyc2U6 IC8wfDEt4YOa4YOYfOGDm+GDlC1cZHsxLDJ9fFxkezEsMn0t4YOULywKKyAg ICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHsKKyAgICAgICAg ICAgIGlmIChudW1iZXIgPT09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1 cm4gbnVtYmVyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG51 bWJlciA9PT0gMSkgeworICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIg KyAnLeGDmuGDmCc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo KG51bWJlciA8IDIwKSB8fCAobnVtYmVyIDw9IDEwMCAmJiAobnVtYmVyICUg MjAgPT09IDApKSB8fCAobnVtYmVyICUgMTAwID09PSAwKSkgeworICAgICAg ICAgICAgICAgIHJldHVybiAn4YOb4YOULScgKyBudW1iZXI7CisgICAgICAg ICAgICB9CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3hg5QnOwor ICAgICAgICB9LAorICAgICAgICB3ZWVrIDogeworICAgICAgICAgICAgZG93 IDogMSwKKyAgICAgICAgICAgIGRveSA6IDcKKyAgICAgICAgfQorICAgIH0p OworCisKKyAgICB2YXIga2tfX3N1ZmZpeGVzID0geworICAgICAgICAwOiAn LdGI0ZYnLAorICAgICAgICAxOiAnLdGI0ZYnLAorICAgICAgICAyOiAnLdGI 0ZYnLAorICAgICAgICAzOiAnLdGI0ZYnLAorICAgICAgICA0OiAnLdGI0ZYn LAorICAgICAgICA1OiAnLdGI0ZYnLAorICAgICAgICA2OiAnLdGI0YsnLAor ICAgICAgICA3OiAnLdGI0ZYnLAorICAgICAgICA4OiAnLdGI0ZYnLAorICAg ICAgICA5OiAnLdGI0YsnLAorICAgICAgICAxMDogJy3RiNGLJywKKyAgICAg ICAgMjA6ICct0YjRiycsCisgICAgICAgIDMwOiAnLdGI0YsnLAorICAgICAg ICA0MDogJy3RiNGLJywKKyAgICAgICAgNTA6ICct0YjRlicsCisgICAgICAg IDYwOiAnLdGI0YsnLAorICAgICAgICA3MDogJy3RiNGWJywKKyAgICAgICAg ODA6ICct0YjRlicsCisgICAgICAgIDkwOiAnLdGI0YsnLAorICAgICAgICAx MDA6ICct0YjRlicKKyAgICB9OworCisgICAgdmFyIGtrID0gbW9tZW50X19k ZWZhdWx0LmRlZmluZUxvY2FsZSgna2snLCB7CisgICAgICAgIG1vbnRocyA6 ICfSm9Cw0qPRgtCw0YBf0LDSm9C/0LDQvV/QvdCw0YPRgNGL0Ldf0YHTmdGD 0ZbRgF/QvNCw0LzRi9GAX9C80LDRg9GB0YvQvF/RiNGW0LvQtNC1X9GC0LDQ vNGL0Ldf0pvRi9GA0LrSr9C50LXQul/Sm9Cw0LfQsNC9X9Kb0LDRgNCw0YjQ sF/QttC10LvRgtC+0pvRgdCw0L0nLnNwbGl0KCdfJyksCisgICAgICAgIG1v bnRoc1Nob3J0IDogJ9Kb0LDSo1/QsNKb0L9f0L3QsNGDX9GB05nRg1/QvNCw 0Lxf0LzQsNGDX9GI0ZbQu1/RgtCw0Lxf0pvRi9GAX9Kb0LDQt1/Sm9Cw0YBf 0LbQtdC7Jy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5cyA6ICfQttC1 0LrRgdC10L3QsdGWX9C00q/QudGB0LXQvdCx0ZZf0YHQtdC50YHQtdC90LHR ll/RgdOZ0YDRgdC10L3QsdGWX9Cx0LXQudGB0LXQvdCx0ZZf0LbSsdC80LBf 0YHQtdC90LHRlicuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9y dCA6ICfQttC10Lpf0LTSr9C5X9GB0LXQuV/RgdOZ0YBf0LHQtdC5X9C20rHQ vF/RgdC10L0nLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDog J9C20Lpf0LTQuV/RgdC5X9GB0YBf0LHQuV/QttC8X9GB0L0nLnNwbGl0KCdf JyksCisgICAgICAgIGxvbmdEYXRlRm9ybWF0IDogeworICAgICAgICAgICAg TFQgOiAnSEg6bW0nLAorICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJywK KyAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsCisgICAgICAgICAgICBM TCA6ICdEIE1NTU0gWVlZWScsCisgICAgICAgICAgICBMTEwgOiAnRCBNTU1N IFlZWVkgSEg6bW0nLAorICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1N TU0gWVlZWSBISDptbScKKyAgICAgICAgfSwKKyAgICAgICAgY2FsZW5kYXIg OiB7CisgICAgICAgICAgICBzYW1lRGF5IDogJ1vQkdKv0LPRltC9INGB0LDS k9Cw0YJdIExUJywKKyAgICAgICAgICAgIG5leHREYXkgOiAnW9CV0YDRgtC1 0qMg0YHQsNKT0LDRgl0gTFQnLAorICAgICAgICAgICAgbmV4dFdlZWsgOiAn ZGRkZCBb0YHQsNKT0LDRgl0gTFQnLAorICAgICAgICAgICAgbGFzdERheSA6 ICdb0JrQtdGI0LUg0YHQsNKT0LDRgl0gTFQnLAorICAgICAgICAgICAgbGFz dFdlZWsgOiAnW9Oo0YLQutC10L0g0LDQv9GC0LDQvdGL0qNdIGRkZGQgW9GB 0LDSk9Cw0YJdIExUJywKKyAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnCisg ICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZSA6IHsKKyAgICAgICAg ICAgIGZ1dHVyZSA6ICclcyDRltGI0ZbQvdC00LUnLAorICAgICAgICAgICAg cGFzdCA6ICclcyDQsdKx0YDRi9C9JywKKyAgICAgICAgICAgIHMgOiAn0LHR ltGA0L3QtdGI0LUg0YHQtdC60YPQvdC0JywKKyAgICAgICAgICAgIG0gOiAn 0LHRltGAINC80LjQvdGD0YInLAorICAgICAgICAgICAgbW0gOiAnJWQg0LzQ uNC90YPRgicsCisgICAgICAgICAgICBoIDogJ9Cx0ZbRgCDRgdCw0pPQsNGC JywKKyAgICAgICAgICAgIGhoIDogJyVkINGB0LDSk9Cw0YInLAorICAgICAg ICAgICAgZCA6ICfQsdGW0YAg0LrSr9C9JywKKyAgICAgICAgICAgIGRkIDog JyVkINC60q/QvScsCisgICAgICAgICAgICBNIDogJ9Cx0ZbRgCDQsNC5JywK KyAgICAgICAgICAgIE1NIDogJyVkINCw0LknLAorICAgICAgICAgICAgeSA6 ICfQsdGW0YAg0LbRi9C7JywKKyAgICAgICAgICAgIHl5IDogJyVkINC20YvQ uycKKyAgICAgICAgfSwKKyAgICAgICAgb3JkaW5hbFBhcnNlOiAvXGR7MSwy fS0o0YjRlnzRiNGLKS8sCisgICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAo bnVtYmVyKSB7CisgICAgICAgICAgICB2YXIgYSA9IG51bWJlciAlIDEwLAor ICAgICAgICAgICAgICAgIGIgPSBudW1iZXIgPj0gMTAwID8gMTAwIDogbnVs bDsKKyAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAoa2tfX3N1ZmZpeGVz W251bWJlcl0gfHwga2tfX3N1ZmZpeGVzW2FdIHx8IGtrX19zdWZmaXhlc1ti XSk7CisgICAgICAgIH0sCisgICAgICAgIHdlZWsgOiB7CisgICAgICAgICAg ICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUg d2Vlay4KKyAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQg Y29udGFpbnMgSmFuIDFzdCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVh ci4KKyAgICAgICAgfQorICAgIH0pOworCisKKyAgICB2YXIga20gPSBtb21l bnRfX2RlZmF1bHQuZGVmaW5lTG9jYWxlKCdrbScsIHsKKyAgICAgICAgbW9u dGhzOiAn4Z6Y4Z6A4Z6a4Z62X+GegOGeu+GemOGfkuGel+GfiF/hnpjhnrjh npPhnrZf4Z6Y4Z+B4Z6f4Z62X+Gep+Gen+Gel+Getl/hnpjhnrfhnpDhnrvh npPhnrZf4Z6A4Z6A4Z+S4Z6A4Z6K4Z62X+Gen+GeuOGeoOGetl/hnoDhnonh n5LhnonhnrZf4Z6P4Z674Z6b4Z62X+GenOGet+GeheGfkuGehuGet+GegOGe tl/hnpLhn5LhnpPhnrwnLnNwbGl0KCdfJyksCisgICAgICAgIG1vbnRoc1No b3J0OiAn4Z6Y4Z6A4Z6a4Z62X+GegOGeu+GemOGfkuGel+GfiF/hnpjhnrjh npPhnrZf4Z6Y4Z+B4Z6f4Z62X+Gep+Gen+Gel+Getl/hnpjhnrfhnpDhnrvh npPhnrZf4Z6A4Z6A4Z+S4Z6A4Z6K4Z62X+Gen+GeuOGeoOGetl/hnoDhnonh n5LhnonhnrZf4Z6P4Z674Z6b4Z62X+GenOGet+GeheGfkuGehuGet+GegOGe tl/hnpLhn5LhnpPhnrwnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlz OiAn4Z6i4Z624Z6R4Z634Z6P4Z+S4Z6ZX+GeheGfkOGek+GfkuGekV/hnqLh noThn5LhnoLhnrbhnppf4Z6W4Z674Z6SX+GeluGfkuGemuGeoOGen+GfkuGe lOGej+Get+GfjV/hnp/hnrvhnoDhn5Lhnppf4Z6f4Z+F4Z6a4Z+NJy5zcGxp dCgnXycpLAorICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4Z6i4Z624Z6R4Z63 4Z6P4Z+S4Z6ZX+GeheGfkOGek+GfkuGekV/hnqLhnoThn5LhnoLhnrbhnppf 4Z6W4Z674Z6SX+GeluGfkuGemuGeoOGen+GfkuGelOGej+Get+GfjV/hnp/h nrvhnoDhn5Lhnppf4Z6f4Z+F4Z6a4Z+NJy5zcGxpdCgnXycpLAorICAgICAg ICB3ZWVrZGF5c01pbjogJ+GeouGetuGekeGet+Gej+GfkuGemV/hnoXhn5Dh npPhn5LhnpFf4Z6i4Z6E4Z+S4Z6C4Z624Z6aX+GeluGeu+Gekl/hnpbhn5Lh nprhnqDhnp/hn5LhnpThno/hnrfhn41f4Z6f4Z674Z6A4Z+S4Z6aX+Gen+Gf heGemuGfjScuc3BsaXQoJ18nKSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6 IHsKKyAgICAgICAgICAgIExUOiAnSEg6bW0nLAorICAgICAgICAgICAgTFRT IDogJ0hIOm1tOnNzJywKKyAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJywK KyAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLAorICAgICAgICAgICAg TExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLAorICAgICAgICAgICAgTExMTDog J2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJworICAgICAgICB9LAorICAgICAg ICBjYWxlbmRhcjogeworICAgICAgICAgICAgc2FtZURheTogJ1vhnpDhn5Lh noThn4PhnpPhn4Hhn4cg4Z6Y4Z+J4Z+E4Z6EXSBMVCcsCisgICAgICAgICAg ICBuZXh0RGF5OiAnW+Gen+GfkuGeouGfguGegCDhnpjhn4nhn4ThnoRdIExU JywKKyAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb4Z6Y4Z+J4Z+E4Z6E XSBMVCcsCisgICAgICAgICAgICBsYXN0RGF5OiAnW+GemOGfkuGen+Get+Ge m+GemOGet+GeiSDhnpjhn4nhn4ThnoRdIExUJywKKyAgICAgICAgICAgIGxh c3RXZWVrOiAnZGRkZCBb4Z6f4Z6U4Z+S4Z6P4Z624Z6g4Z+N4Z6Y4Z674Z6T XSBb4Z6Y4Z+J4Z+E4Z6EXSBMVCcsCisgICAgICAgICAgICBzYW1lRWxzZTog J0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZTogeworICAg ICAgICAgICAgZnV0dXJlOiAnJXPhnpHhn4Dhno8nLAorICAgICAgICAgICAg cGFzdDogJyVz4Z6Y4Z674Z6TJywKKyAgICAgICAgICAgIHM6ICfhnpThn4nh nrvhnpPhn5LhnpjhnrbhnpPhnpzhnrfhnpPhnrbhnpHhnrgnLAorICAgICAg ICAgICAgbTogJ+GemOGeveGemeGek+GetuGekeGeuCcsCisgICAgICAgICAg ICBtbTogJyVkIOGek+GetuGekeGeuCcsCisgICAgICAgICAgICBoOiAn4Z6Y 4Z694Z6Z4Z6Y4Z+J4Z+E4Z6EJywKKyAgICAgICAgICAgIGhoOiAnJWQg4Z6Y 4Z+J4Z+E4Z6EJywKKyAgICAgICAgICAgIGQ6ICfhnpjhnr3hnpnhnpDhn5Lh noThn4MnLAorICAgICAgICAgICAgZGQ6ICclZCDhnpDhn5LhnoThn4MnLAor ICAgICAgICAgICAgTTogJ+GemOGeveGemeGegeGfgicsCisgICAgICAgICAg ICBNTTogJyVkIOGegeGfgicsCisgICAgICAgICAgICB5OiAn4Z6Y4Z694Z6Z 4Z6G4Z+S4Z6T4Z624Z+GJywKKyAgICAgICAgICAgIHl5OiAnJWQg4Z6G4Z+S 4Z6T4Z624Z+GJworICAgICAgICB9LAorICAgICAgICB3ZWVrOiB7CisgICAg ICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9m IHRoZSB3ZWVrLgorICAgICAgICAgICAgZG95OiA0IC8vIFRoZSB3ZWVrIHRo YXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUg eWVhci4KKyAgICAgICAgfQorICAgIH0pOworCisKKyAgICB2YXIga28gPSBt b21lbnRfX2RlZmF1bHQuZGVmaW5lTG9jYWxlKCdrbycsIHsKKyAgICAgICAg bW9udGhzIDogJzHsm5RfMuyblF8z7JuUXzTsm5RfNeyblF827JuUXzfsm5Rf OOyblF857JuUXzEw7JuUXzEx7JuUXzEy7JuUJy5zcGxpdCgnXycpLAorICAg ICAgICBtb250aHNTaG9ydCA6ICcx7JuUXzLsm5RfM+yblF807JuUXzXsm5Rf NuyblF837JuUXzjsm5RfOeyblF8xMOyblF8xMeyblF8xMuyblCcuc3BsaXQo J18nKSwKKyAgICAgICAgd2Vla2RheXMgOiAn7J287JqU7J28X+yblOyalOyd vF/tmZTsmpTsnbxf7IiY7JqU7J28X+uqqeyalOydvF/quIjsmpTsnbxf7Yag 7JqU7J28Jy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c1Nob3J0IDog J+ydvF/sm5Rf7ZmUX+yImF/rqqlf6riIX+2GoCcuc3BsaXQoJ18nKSwKKyAg ICAgICAgd2Vla2RheXNNaW4gOiAn7J28X+yblF/tmZRf7IiYX+uqqV/quIhf 7YagJy5zcGxpdCgnXycpLAorICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHsK KyAgICAgICAgICAgIExUIDogJ0EgaOyLnCBt67aEJywKKyAgICAgICAgICAg IExUUyA6ICdBIGjsi5wgbeu2hCBz7LSIJywKKyAgICAgICAgICAgIEwgOiAn WVlZWS5NTS5ERCcsCisgICAgICAgICAgICBMTCA6ICdZWVlZ64WEIE1NTU0g ROydvCcsCisgICAgICAgICAgICBMTEwgOiAnWVlZWeuFhCBNTU1NIETsnbwg QSBo7IucIG3rtoQnLAorICAgICAgICAgICAgTExMTCA6ICdZWVlZ64WEIE1N TU0gROydvCBkZGRkIEEgaOyLnCBt67aEJworICAgICAgICB9LAorICAgICAg ICBjYWxlbmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVEYXkgOiAn7Jik64qY IExUJywKKyAgICAgICAgICAgIG5leHREYXkgOiAn64K07J28IExUJywKKyAg ICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgTFQnLAorICAgICAgICAgICAg bGFzdERheSA6ICfslrTsoJwgTFQnLAorICAgICAgICAgICAgbGFzdFdlZWsg OiAn7KeA64Kc7KO8IGRkZGQgTFQnLAorICAgICAgICAgICAgc2FtZUVsc2Ug OiAnTCcKKyAgICAgICAgfSwKKyAgICAgICAgcmVsYXRpdmVUaW1lIDogewor ICAgICAgICAgICAgZnV0dXJlIDogJyVzIO2bhCcsCisgICAgICAgICAgICBw YXN0IDogJyVzIOyghCcsCisgICAgICAgICAgICBzIDogJ+uqhyDstIgnLAor ICAgICAgICAgICAgc3MgOiAnJWTstIgnLAorICAgICAgICAgICAgbSA6ICfs nbzrtoQnLAorICAgICAgICAgICAgbW0gOiAnJWTrtoQnLAorICAgICAgICAg ICAgaCA6ICftlZwg7Iuc6rCEJywKKyAgICAgICAgICAgIGhoIDogJyVk7Iuc 6rCEJywKKyAgICAgICAgICAgIGQgOiAn7ZWY66OoJywKKyAgICAgICAgICAg IGRkIDogJyVk7J28JywKKyAgICAgICAgICAgIE0gOiAn7ZWcIOuLrCcsCisg ICAgICAgICAgICBNTSA6ICclZOuLrCcsCisgICAgICAgICAgICB5IDogJ+yd vCDrhYQnLAorICAgICAgICAgICAgeXkgOiAnJWTrhYQnCisgICAgICAgIH0s CisgICAgICAgIG9yZGluYWxQYXJzZSA6IC9cZHsxLDJ97J28LywKKyAgICAg ICAgb3JkaW5hbCA6ICclZOydvCcsCisgICAgICAgIG1lcmlkaWVtUGFyc2Ug OiAv7Jik7KCEfOyYpO2bhC8sCisgICAgICAgIGlzUE0gOiBmdW5jdGlvbiAo dG9rZW4pIHsKKyAgICAgICAgICAgIHJldHVybiB0b2tlbiA9PT0gJ+yYpO2b hCc7CisgICAgICAgIH0sCisgICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24g KGhvdXIsIG1pbnV0ZSwgaXNVcHBlcikgeworICAgICAgICAgICAgcmV0dXJu IGhvdXIgPCAxMiA/ICfsmKTsoIQnIDogJ+yYpO2bhCc7CisgICAgICAgIH0K KyAgICB9KTsKKworCisKKyAgICB2YXIga3lfX3N1ZmZpeGVzID0geworICAg ICAgICAwOiAnLdGH0q8nLAorICAgICAgICAxOiAnLdGH0LgnLAorICAgICAg ICAyOiAnLdGH0LgnLAorICAgICAgICAzOiAnLdGH0q8nLAorICAgICAgICA0 OiAnLdGH0q8nLAorICAgICAgICA1OiAnLdGH0LgnLAorICAgICAgICA2OiAn LdGH0YsnLAorICAgICAgICA3OiAnLdGH0LgnLAorICAgICAgICA4OiAnLdGH 0LgnLAorICAgICAgICA5OiAnLdGH0YMnLAorICAgICAgICAxMDogJy3Rh9GD JywKKyAgICAgICAgMjA6ICct0YfRiycsCisgICAgICAgIDMwOiAnLdGH0YMn LAorICAgICAgICA0MDogJy3Rh9GLJywKKyAgICAgICAgNTA6ICct0YfSrycs CisgICAgICAgIDYwOiAnLdGH0YsnLAorICAgICAgICA3MDogJy3Rh9C4JywK KyAgICAgICAgODA6ICct0YfQuCcsCisgICAgICAgIDkwOiAnLdGH0YMnLAor ICAgICAgICAxMDA6ICct0YfSrycKKyAgICB9OworCisgICAgdmFyIGt5ID0g bW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgna3knLCB7CisgICAgICAg IG1vbnRocyA6ICfRj9C90LLQsNGA0Yxf0YTQtdCy0YDQsNC70Yxf0LzQsNGA 0YJf0LDQv9GA0LXQu9GMX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy 0LPRg9GB0YJf0YHQtdC90YLRj9Cx0YDRjF/QvtC60YLRj9Cx0YDRjF/QvdC+ 0Y/QsdGA0Yxf0LTQtdC60LDQsdGA0YwnLnNwbGl0KCdfJyksCisgICAgICAg IG1vbnRoc1Nob3J0IDogJ9GP0L3Qsl/RhNC10LJf0LzQsNGA0YJf0LDQv9GA X9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LNf0YHQtdC9X9C+0LrR gl/QvdC+0Y9f0LTQtdC6Jy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5 cyA6ICfQltC10LrRiNC10LzQsdC4X9CU0q/QudGI06nQvNCx0q9f0KjQtdC5 0YjQtdC80LHQuF/QqNCw0YDRiNC10LzQsdC4X9CR0LXQudGI0LXQvNCx0Lhf 0JbRg9C80LBf0JjRiNC10LzQsdC4Jy5zcGxpdCgnXycpLAorICAgICAgICB3 ZWVrZGF5c1Nob3J0IDogJ9CW0LXQul/QlNKv0Llf0KjQtdC5X9Co0LDRgF/Q kdC10Llf0JbRg9C8X9CY0YjQtScuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vl a2RheXNNaW4gOiAn0JbQul/QlNC5X9Co0Llf0KjRgF/QkdC5X9CW0Lxf0JjR iCcuc3BsaXQoJ18nKSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7Cisg ICAgICAgICAgICBMVCA6ICdISDptbScsCisgICAgICAgICAgICBMVFMgOiAn SEg6bW06c3MnLAorICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJywKKyAg ICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJywKKyAgICAgICAgICAgIExM TCA6ICdEIE1NTU0gWVlZWSBISDptbScsCisgICAgICAgICAgICBMTExMIDog J2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJworICAgICAgICB9LAorICAgICAg ICBjYWxlbmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVEYXkgOiAnW9CR0q/Q s9Kv0L0g0YHQsNCw0YJdIExUJywKKyAgICAgICAgICAgIG5leHREYXkgOiAn W9Ct0YDRgtC10qMg0YHQsNCw0YJdIExUJywKKyAgICAgICAgICAgIG5leHRX ZWVrIDogJ2RkZGQgW9GB0LDQsNGCXSBMVCcsCisgICAgICAgICAgICBsYXN0 RGF5IDogJ1vQmtC10YfQtSDRgdCw0LDRgl0gTFQnLAorICAgICAgICAgICAg bGFzdFdlZWsgOiAnW9Oo0YLQutC10L0g0LDQv9GC0LDQvdGL0L1dIGRkZGQg W9C60q/QvdKvXSBb0YHQsNCw0YJdIExUJywKKyAgICAgICAgICAgIHNhbWVF bHNlIDogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZSA6 IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDQuNGH0LjQvdC00LUnLAor ICAgICAgICAgICAgcGFzdCA6ICclcyDQvNGD0YDRg9C9JywKKyAgICAgICAg ICAgIHMgOiAn0LHQuNGA0L3QtdGH0LUg0YHQtdC60YPQvdC0JywKKyAgICAg ICAgICAgIG0gOiAn0LHQuNGAINC80q/QvdOp0YInLAorICAgICAgICAgICAg bW0gOiAnJWQg0LzSr9C906nRgicsCisgICAgICAgICAgICBoIDogJ9Cx0LjR gCDRgdCw0LDRgicsCisgICAgICAgICAgICBoaCA6ICclZCDRgdCw0LDRgics CisgICAgICAgICAgICBkIDogJ9Cx0LjRgCDQutKv0L0nLAorICAgICAgICAg ICAgZGQgOiAnJWQg0LrSr9C9JywKKyAgICAgICAgICAgIE0gOiAn0LHQuNGA INCw0LknLAorICAgICAgICAgICAgTU0gOiAnJWQg0LDQuScsCisgICAgICAg ICAgICB5IDogJ9Cx0LjRgCDQttGL0LsnLAorICAgICAgICAgICAgeXkgOiAn JWQg0LbRi9C7JworICAgICAgICB9LAorICAgICAgICBvcmRpbmFsUGFyc2U6 IC9cZHsxLDJ9LSjRh9C4fNGH0Yt80YfSr3zRh9GDKS8sCisgICAgICAgIG9y ZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7CisgICAgICAgICAgICB2YXIg YSA9IG51bWJlciAlIDEwLAorICAgICAgICAgICAgICAgIGIgPSBudW1iZXIg Pj0gMTAwID8gMTAwIDogbnVsbDsKKyAgICAgICAgICAgIHJldHVybiBudW1i ZXIgKyAoa3lfX3N1ZmZpeGVzW251bWJlcl0gfHwga3lfX3N1ZmZpeGVzW2Fd IHx8IGt5X19zdWZmaXhlc1tiXSk7CisgICAgICAgIH0sCisgICAgICAgIHdl ZWsgOiB7CisgICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhl IGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KKyAgICAgICAgICAgIGRveSA6IDcg IC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDFzdCBpcyB0aGUgZmly c3Qgd2VlayBvZiB0aGUgeWVhci4KKyAgICAgICAgfQorICAgIH0pOworCisK KyAgICBmdW5jdGlvbiBsYl9fcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIs IHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHsKKyAgICAgICAgdmFy IGZvcm1hdCA9IHsKKyAgICAgICAgICAgICdtJzogWydlbmcgTWludXR0Jywg J2VuZ2VyIE1pbnV0dCddLAorICAgICAgICAgICAgJ2gnOiBbJ2VuZyBTdG9u bicsICdlbmdlciBTdG9ubiddLAorICAgICAgICAgICAgJ2QnOiBbJ2VlbiBE YWcnLCAnZW5nZW0gRGFnJ10sCisgICAgICAgICAgICAnTSc6IFsnZWUgTW91 bnQnLCAnZW5nZW0gTW91bnQnXSwKKyAgICAgICAgICAgICd5JzogWydlZSBK b2VyJywgJ2VuZ2VtIEpvZXInXQorICAgICAgICB9OworICAgICAgICByZXR1 cm4gd2l0aG91dFN1ZmZpeCA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tl eV1bMV07CisgICAgfQorICAgIGZ1bmN0aW9uIHByb2Nlc3NGdXR1cmVUaW1l KHN0cmluZykgeworICAgICAgICB2YXIgbnVtYmVyID0gc3RyaW5nLnN1YnN0 cigwLCBzdHJpbmcuaW5kZXhPZignICcpKTsKKyAgICAgICAgaWYgKGVpZmVs ZXJSZWdlbEFwcGxpZXNUb051bWJlcihudW1iZXIpKSB7CisgICAgICAgICAg ICByZXR1cm4gJ2EgJyArIHN0cmluZzsKKyAgICAgICAgfQorICAgICAgICBy ZXR1cm4gJ2FuICcgKyBzdHJpbmc7CisgICAgfQorICAgIGZ1bmN0aW9uIHBy b2Nlc3NQYXN0VGltZShzdHJpbmcpIHsKKyAgICAgICAgdmFyIG51bWJlciA9 IHN0cmluZy5zdWJzdHIoMCwgc3RyaW5nLmluZGV4T2YoJyAnKSk7CisgICAg ICAgIGlmIChlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIobnVtYmVyKSkg eworICAgICAgICAgICAgcmV0dXJuICd2aXJ1ICcgKyBzdHJpbmc7CisgICAg ICAgIH0KKyAgICAgICAgcmV0dXJuICd2aXJ1biAnICsgc3RyaW5nOworICAg IH0KKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHdvcmQg YmVmb3JlIHRoZSBnaXZlbiBudW1iZXIgbG9zZXMgdGhlICctbicgZW5kaW5n LgorICAgICAqIGUuZy4gJ2FuIDEwIERlZWcnIGJ1dCAnYSA1IERlZWcnCisg ICAgICoKKyAgICAgKiBAcGFyYW0gbnVtYmVyIHtpbnRlZ2VyfQorICAgICAq IEByZXR1cm5zIHtib29sZWFufQorICAgICAqLworICAgIGZ1bmN0aW9uIGVp ZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihudW1iZXIpIHsKKyAgICAgICAg bnVtYmVyID0gcGFyc2VJbnQobnVtYmVyLCAxMCk7CisgICAgICAgIGlmIChp c05hTihudW1iZXIpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg ICAgICAgIH0KKyAgICAgICAgaWYgKG51bWJlciA8IDApIHsKKyAgICAgICAg ICAgIC8vIE5lZ2F0aXZlIE51bWJlciAtLT4gYWx3YXlzIHRydWUKKyAgICAg ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKG51bWJl ciA8IDEwKSB7CisgICAgICAgICAgICAvLyBPbmx5IDEgZGlnaXQKKyAgICAg ICAgICAgIGlmICg0IDw9IG51bWJlciAmJiBudW1iZXIgPD0gNykgeworICAg ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKG51 bWJlciA8IDEwMCkgeworICAgICAgICAgICAgLy8gMiBkaWdpdHMKKyAgICAg ICAgICAgIHZhciBsYXN0RGlnaXQgPSBudW1iZXIgJSAxMCwgZmlyc3REaWdp dCA9IG51bWJlciAvIDEwOworICAgICAgICAgICAgaWYgKGxhc3REaWdpdCA9 PT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBlaWZlbGVyUmVnZWxB cHBsaWVzVG9OdW1iZXIoZmlyc3REaWdpdCk7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgICByZXR1cm4gZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVy KGxhc3REaWdpdCk7CisgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMTAw MDApIHsKKyAgICAgICAgICAgIC8vIDMgb3IgNCBkaWdpdHMgLS0+IHJlY3Vy c2l2ZWx5IGNoZWNrIGZpcnN0IGRpZ2l0CisgICAgICAgICAgICB3aGlsZSAo bnVtYmVyID49IDEwKSB7CisgICAgICAgICAgICAgICAgbnVtYmVyID0gbnVt YmVyIC8gMTA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g ZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKG51bWJlcik7CisgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAvLyBBbnl0aGluZyBsYXJnZXIgdGhh biA0IGRpZ2l0czogcmVjdXJzaXZlbHkgY2hlY2sgZmlyc3Qgbi0zIGRpZ2l0 cworICAgICAgICAgICAgbnVtYmVyID0gbnVtYmVyIC8gMTAwMDsKKyAgICAg ICAgICAgIHJldHVybiBlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIobnVt YmVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZhciBsYiA9IG1vbWVu dF9fZGVmYXVsdC5kZWZpbmVMb2NhbGUoJ2xiJywgeworICAgICAgICBtb250 aHM6ICdKYW51YXJfRmVicnVhcl9Nw6RlcnpfQWJyw6tsbF9NZWVfSnVuaV9K dWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJl cicuc3BsaXQoJ18nKSwKKyAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW4uX0Zl YnIuX01yei5fQWJyLl9NZWVfSnVuLl9KdWwuX0F1Zy5fU2VwdC5fT2t0Ll9O b3YuX0Rlei4nLnNwbGl0KCdfJyksCisgICAgICAgIG1vbnRoc1BhcnNlRXhh Y3QgOiB0cnVlLAorICAgICAgICB3ZWVrZGF5czogJ1Nvbm5kZWdfTcOpaW5k ZWdfRMOrbnNjaGRlZ19Nw6t0dHdvY2hfRG9ubmVzY2hkZWdfRnJlaWRlZ19T YW1zY2hkZWcnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzU2hvcnQ6 ICdTby5fTcOpLl9Ew6suX03Dqy5fRG8uX0ZyLl9TYS4nLnNwbGl0KCdfJyks CisgICAgICAgIHdlZWtkYXlzTWluOiAnU29fTcOpX0TDq19Nw6tfRG9fRnJf U2EnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6 IHRydWUsCisgICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7CisgICAgICAgICAg ICBMVDogJ0g6bW0gW0F1ZXJdJywKKyAgICAgICAgICAgIExUUzogJ0g6bW06 c3MgW0F1ZXJdJywKKyAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJywKKyAg ICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJywKKyAgICAgICAgICAgIExM TDogJ0QuIE1NTU0gWVlZWSBIOm1tIFtBdWVyXScsCisgICAgICAgICAgICBM TExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0gW0F1ZXJdJworICAgICAg ICB9LAorICAgICAgICBjYWxlbmRhcjogeworICAgICAgICAgICAgc2FtZURh eTogJ1tIYXV0IHVtXSBMVCcsCisgICAgICAgICAgICBzYW1lRWxzZTogJ0wn LAorICAgICAgICAgICAgbmV4dERheTogJ1tNdWVyIHVtXSBMVCcsCisgICAg ICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3VtXSBMVCcsCisgICAgICAgICAg ICBsYXN0RGF5OiAnW0fDq3NjaHRlciB1bV0gTFQnLAorICAgICAgICAgICAg bGFzdFdlZWs6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAvLyBE aWZmZXJlbnQgZGF0ZSBzdHJpbmcgZm9yICdEw6tuc2NoZGVnJyAoVHVlc2Rh eSkgYW5kICdEb25uZXNjaGRlZycgKFRodXJzZGF5KSBkdWUgdG8gcGhvbm9s b2dpY2FsIHJ1bGUKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5 KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAg ICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gJ1tMZXNjaHRlbl0gZGRkZCBbdW1dIExUJzsKKyAgICAgICAgICAg ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiAnW0xlc2NodGVdIGRkZGQgW3VtXSBMVCc7CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICByZWxh dGl2ZVRpbWUgOiB7CisgICAgICAgICAgICBmdXR1cmUgOiBwcm9jZXNzRnV0 dXJlVGltZSwKKyAgICAgICAgICAgIHBhc3QgOiBwcm9jZXNzUGFzdFRpbWUs CisgICAgICAgICAgICBzIDogJ2UgcHVlciBTZWtvbm5lbicsCisgICAgICAg ICAgICBtIDogbGJfX3Byb2Nlc3NSZWxhdGl2ZVRpbWUsCisgICAgICAgICAg ICBtbSA6ICclZCBNaW51dHRlbicsCisgICAgICAgICAgICBoIDogbGJfX3By b2Nlc3NSZWxhdGl2ZVRpbWUsCisgICAgICAgICAgICBoaCA6ICclZCBTdG9u bmVuJywKKyAgICAgICAgICAgIGQgOiBsYl9fcHJvY2Vzc1JlbGF0aXZlVGlt ZSwKKyAgICAgICAgICAgIGRkIDogJyVkIERlZWcnLAorICAgICAgICAgICAg TSA6IGxiX19wcm9jZXNzUmVsYXRpdmVUaW1lLAorICAgICAgICAgICAgTU0g OiAnJWQgTcOpaW50JywKKyAgICAgICAgICAgIHkgOiBsYl9fcHJvY2Vzc1Jl bGF0aXZlVGltZSwKKyAgICAgICAgICAgIHl5IDogJyVkIEpvZXInCisgICAg ICAgIH0sCisgICAgICAgIG9yZGluYWxQYXJzZTogL1xkezEsMn1cLi8sCisg ICAgICAgIG9yZGluYWw6ICclZC4nLAorICAgICAgICB3ZWVrOiB7CisgICAg ICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9m IHRoZSB3ZWVrLgorICAgICAgICAgICAgZG95OiA0ICAvLyBUaGUgd2VlayB0 aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhl IHllYXIuCisgICAgICAgIH0KKyAgICB9KTsKKworCisgICAgdmFyIGxvID0g bW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgnbG8nLCB7CisgICAgICAg IG1vbnRocyA6ICfguqHgurHguofguoHguq3guplf4LqB4Lq44Lqh4Lqe4Lqy X+C6oeC6teC6meC6sl/gu4DguqHguqrgurJf4Lqe4Lq24LqU4Lqq4Lqw4Lqe 4LqyX+C6oeC6tOC6luC6uOC6meC6sl/guoHgu43guqXgurDguoHgurvgupRf 4Lqq4Lq04LqH4Lqr4LqyX+C6geC6seC6meC6jeC6sl/gupXgurjguqXgurJf 4Lqe4Lqw4LqI4Lq04LqBX+C6l+C6seC6meC6p+C6sicuc3BsaXQoJ18nKSwK KyAgICAgICAgbW9udGhzU2hvcnQgOiAn4Lqh4Lqx4LqH4LqB4Lqt4LqZX+C6 geC6uOC6oeC6nuC6sl/guqHgurXgupngurJf4LuA4Lqh4Lqq4LqyX+C6nuC6 tuC6lOC6quC6sOC6nuC6sl/guqHgurTgupbgurjgupngurJf4LqB4LuN4Lql 4Lqw4LqB4Lq74LqUX+C6quC6tOC6h+C6q+C6sl/guoHgurHgupnguo3gurJf 4LqV4Lq44Lql4LqyX+C6nuC6sOC6iOC6tOC6gV/gupfgurHgupnguqfgurIn LnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzIDogJ+C6reC6suC6l+C6 tOC6lF/guojgurHguplf4Lqt4Lqx4LqH4LqE4Lqy4LqZX+C6nuC6uOC6lF/g up7gurDguqvgurHgupRf4Lqq4Lq44LqBX+C7gOC6quC6u+C6sicuc3BsaXQo J18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgupfgurTgupRf4LqI 4Lqx4LqZX+C6reC6seC6h+C6hOC6suC6mV/gup7gurjgupRf4Lqe4Lqw4Lqr 4Lqx4LqUX+C6quC6uOC6gV/gu4DguqrgurvgurInLnNwbGl0KCdfJyksCisg ICAgICAgIHdlZWtkYXlzTWluIDogJ+C6l1/guohf4Lqt4LqEX+C6nl/gup7g uqtf4Lqq4LqBX+C6qicuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNQ YXJzZUV4YWN0IDogdHJ1ZSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7 CisgICAgICAgICAgICBMVCA6ICdISDptbScsCisgICAgICAgICAgICBMVFMg OiAnSEg6bW06c3MnLAorICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJywK KyAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJywKKyAgICAgICAgICAg IExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsCisgICAgICAgICAgICBMTExM IDogJ+C6p+C6seC6mWRkZGQgRCBNTU1NIFlZWVkgSEg6bW0nCisgICAgICAg IH0sCisgICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gupXguq3gupngu4Dguorg urvgu4ngurJ84LqV4Lqt4LqZ4LuB4Lql4LqHLywKKyAgICAgICAgaXNQTTog ZnVuY3Rpb24gKGlucHV0KSB7CisgICAgICAgICAgICByZXR1cm4gaW5wdXQg PT09ICfgupXguq3gupngu4HguqXguocnOworICAgICAgICB9LAorICAgICAg ICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIp IHsKKyAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHsKKyAgICAgICAgICAg ICAgICByZXR1cm4gJ+C6leC6reC6meC7gOC6iuC6u+C7ieC6sic7CisgICAg ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiAn4LqV 4Lqt4LqZ4LuB4Lql4LqHJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwK KyAgICAgICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBzYW1lRGF5IDog J1vguqHgurfgu4ngupngurXgu4ngu4DguqfguqXgurJdIExUJywKKyAgICAg ICAgICAgIG5leHREYXkgOiAnW+C6oeC6t+C7ieC6reC6t+C7iOC6meC7gOC6 p+C6peC6sl0gTFQnLAorICAgICAgICAgICAgbmV4dFdlZWsgOiAnW+C6p+C6 seC6mV1kZGRkW+C7nOC7ieC6suC7gOC6p+C6peC6sl0gTFQnLAorICAgICAg ICAgICAgbGFzdERheSA6ICdb4Lqh4Lq34LuJ4Lqn4Lqy4LqZ4LqZ4Lq14LuJ 4LuA4Lqn4Lql4LqyXSBMVCcsCisgICAgICAgICAgICBsYXN0V2VlayA6ICdb 4Lqn4Lqx4LqZXWRkZGRb4LuB4Lql4LuJ4Lqn4LqZ4Lq14LuJ4LuA4Lqn4Lql 4LqyXSBMVCcsCisgICAgICAgICAgICBzYW1lRWxzZSA6ICdMJworICAgICAg ICB9LAorICAgICAgICByZWxhdGl2ZVRpbWUgOiB7CisgICAgICAgICAgICBm dXR1cmUgOiAn4Lqt4Lq14LqBICVzJywKKyAgICAgICAgICAgIHBhc3QgOiAn JXPgupzgu4jgurLgupnguqHgurInLAorICAgICAgICAgICAgcyA6ICfguprg u43gu4jgu4Dgupfgurvgu4jgurLgu4PgupTguqfgurTgupngurLgupfgurUn LAorICAgICAgICAgICAgbSA6ICcxIOC6meC6suC6l+C6tScsCisgICAgICAg ICAgICBtbSA6ICclZCDgupngurLgupfgurUnLAorICAgICAgICAgICAgaCA6 ICcxIOC6iuC6u+C7iOC6p+C7guC6oeC6hycsCisgICAgICAgICAgICBoaCA6 ICclZCDguorgurvgu4jguqfgu4LguqHguocnLAorICAgICAgICAgICAgZCA6 ICcxIOC6oeC6t+C7iScsCisgICAgICAgICAgICBkZCA6ICclZCDguqHgurfg u4knLAorICAgICAgICAgICAgTSA6ICcxIOC7gOC6lOC6t+C6reC6mScsCisg ICAgICAgICAgICBNTSA6ICclZCDgu4DgupTgurfguq3gupknLAorICAgICAg ICAgICAgeSA6ICcxIOC6m+C6tScsCisgICAgICAgICAgICB5eSA6ICclZCDg upvgurUnCisgICAgICAgIH0sCisgICAgICAgIG9yZGluYWxQYXJzZTogLyjg upfgurXgu4gpXGR7MSwyfS8sCisgICAgICAgIG9yZGluYWwgOiBmdW5jdGlv biAobnVtYmVyKSB7CisgICAgICAgICAgICByZXR1cm4gJ+C6l+C6teC7iCcg KyBudW1iZXI7CisgICAgICAgIH0KKyAgICB9KTsKKworCisgICAgdmFyIGx0 X191bml0cyA9IHsKKyAgICAgICAgJ20nIDogJ21pbnV0xJdfbWludXTEl3Nf bWludXTEmScsCisgICAgICAgICdtbSc6ICdtaW51dMSXc19taW51xI1pxbNf bWludXRlcycsCisgICAgICAgICdoJyA6ICd2YWxhbmRhX3ZhbGFuZG9zX3Zh bGFuZMSFJywKKyAgICAgICAgJ2hoJzogJ3ZhbGFuZG9zX3ZhbGFuZMWzX3Zh bGFuZGFzJywKKyAgICAgICAgJ2QnIDogJ2RpZW5hX2RpZW5vc19kaWVuxIUn LAorICAgICAgICAnZGQnOiAnZGllbm9zX2RpZW7Fs19kaWVuYXMnLAorICAg ICAgICAnTScgOiAnbcSXbnVvX23El25lc2lvX23El25lc8SvJywKKyAgICAg ICAgJ01NJzogJ23El25lc2lhaV9txJduZXNpxbNfbcSXbmVzaXVzJywKKyAg ICAgICAgJ3knIDogJ21ldGFpX21ldMWzX21ldHVzJywKKyAgICAgICAgJ3l5 JzogJ21ldGFpX21ldMWzX21ldHVzJworICAgIH07CisgICAgZnVuY3Rpb24g dHJhbnNsYXRlU2Vjb25kcyhudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwg aXNGdXR1cmUpIHsKKyAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHsKKyAg ICAgICAgICAgIHJldHVybiAna2VsaW9zIHNla3VuZMSXcyc7CisgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAna2Vs acWzIHNla3VuZMW+acWzJyA6ICdrZWxpYXMgc2VrdW5kZXMnOworICAgICAg ICB9CisgICAgfQorICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZVNpbmd1bGFyKG51 bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkgeworICAgICAg ICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IGZvcm1zKGtleSlbMF0gOiAoaXNG dXR1cmUgPyBmb3JtcyhrZXkpWzFdIDogZm9ybXMoa2V5KVsyXSk7CisgICAg fQorICAgIGZ1bmN0aW9uIHNwZWNpYWwobnVtYmVyKSB7CisgICAgICAgIHJl dHVybiBudW1iZXIgJSAxMCA9PT0gMCB8fCAobnVtYmVyID4gMTAgJiYgbnVt YmVyIDwgMjApOworICAgIH0KKyAgICBmdW5jdGlvbiBmb3JtcyhrZXkpIHsK KyAgICAgICAgcmV0dXJuIGx0X191bml0c1trZXldLnNwbGl0KCdfJyk7Cisg ICAgfQorICAgIGZ1bmN0aW9uIGx0X190cmFuc2xhdGUobnVtYmVyLCB3aXRo b3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7CisgICAgICAgIHZhciByZXN1 bHQgPSBudW1iZXIgKyAnICc7CisgICAgICAgIGlmIChudW1iZXIgPT09IDEp IHsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyB0cmFuc2xhdGVTaW5n dWxhcihudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleVswXSwgaXNGdXR1cmUp OworICAgICAgICB9IGVsc2UgaWYgKHdpdGhvdXRTdWZmaXgpIHsKKyAgICAg ICAgICAgIHJldHVybiByZXN1bHQgKyAoc3BlY2lhbChudW1iZXIpID8gZm9y bXMoa2V5KVsxXSA6IGZvcm1zKGtleSlbMF0pOworICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgaWYgKGlzRnV0dXJlKSB7CisgICAgICAgICAgICAg ICAgcmV0dXJuIHJlc3VsdCArIGZvcm1zKGtleSlbMV07CisgICAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAo c3BlY2lhbChudW1iZXIpID8gZm9ybXMoa2V5KVsxXSA6IGZvcm1zKGtleSlb Ml0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHZh ciBsdCA9IG1vbWVudF9fZGVmYXVsdC5kZWZpbmVMb2NhbGUoJ2x0Jywgewor ICAgICAgICBtb250aHMgOiB7CisgICAgICAgICAgICBmb3JtYXQ6ICdzYXVz aW9fdmFzYXJpb19rb3ZvX2JhbGFuZMW+aW9fZ2VndcW+xJdzX2JpcsW+ZWxp b19saWVwb3NfcnVncGrFq8SNaW9fcnVnc8SXam9fc3BhbGlvX2xhcGtyacSN aW9fZ3J1b2TFvmlvJy5zcGxpdCgnXycpLAorICAgICAgICAgICAgc3RhbmRh bG9uZTogJ3NhdXNpc192YXNhcmlzX2tvdmFzX2JhbGFuZGlzX2dlZ3XFvsSX X2JpcsW+ZWxpc19saWVwYV9ydWdwasWrdGlzX3J1Z3PEl2ppc19zcGFsaXNf bGFwa3JpdGlzX2dydW9kaXMnLnNwbGl0KCdfJyksCisgICAgICAgICAgICBp c0Zvcm1hdDogL0Rbb0RdPyhcW1teXFtcXV0qXF18XHMrKStNTU1NP3xNTU1N PyhcW1teXFtcXV0qXF18XHMrKStEW29EXT8vCisgICAgICAgIH0sCisgICAg ICAgIG1vbnRoc1Nob3J0IDogJ3NhdV92YXNfa292X2JhbF9nZWdfYmlyX2xp ZV9yZ3BfcmdzX3NwYV9sYXBfZ3JkJy5zcGxpdCgnXycpLAorICAgICAgICB3 ZWVrZGF5cyA6IHsKKyAgICAgICAgICAgIGZvcm1hdDogJ3Nla21hZGllbsSv X3Bpcm1hZGllbsSvX2FudHJhZGllbsSvX3RyZcSNaWFkaWVuxK9fa2V0dmly dGFkaWVuxK9fcGVua3RhZGllbsSvX8WhZcWhdGFkaWVuxK8nLnNwbGl0KCdf JyksCisgICAgICAgICAgICBzdGFuZGFsb25lOiAnc2VrbWFkaWVuaXNfcGly bWFkaWVuaXNfYW50cmFkaWVuaXNfdHJlxI1pYWRpZW5pc19rZXR2aXJ0YWRp ZW5pc19wZW5rdGFkaWVuaXNfxaFlxaF0YWRpZW5pcycuc3BsaXQoJ18nKSwK KyAgICAgICAgICAgIGlzRm9ybWF0OiAvZGRkZCBISDptbS8KKyAgICAgICAg fSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTZWtfUGlyX0FudF9UcmVf S2V0X1Blbl/FoGXFoScuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNN aW4gOiAnU19QX0FfVF9LX1BuX8WgJy5zcGxpdCgnXycpLAorICAgICAgICB3 ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLAorICAgICAgICBsb25nRGF0ZUZv cm1hdCA6IHsKKyAgICAgICAgICAgIExUIDogJ0hIOm1tJywKKyAgICAgICAg ICAgIExUUyA6ICdISDptbTpzcycsCisgICAgICAgICAgICBMIDogJ1lZWVkt TU0tREQnLAorICAgICAgICAgICAgTEwgOiAnWVlZWSBbbS5dIE1NTU0gRCBb ZC5dJywKKyAgICAgICAgICAgIExMTCA6ICdZWVlZIFttLl0gTU1NTSBEIFtk Ll0sIEhIOm1tIFt2YWwuXScsCisgICAgICAgICAgICBMTExMIDogJ1lZWVkg W20uXSBNTU1NIEQgW2QuXSwgZGRkZCwgSEg6bW0gW3ZhbC5dJywKKyAgICAg ICAgICAgIGwgOiAnWVlZWS1NTS1ERCcsCisgICAgICAgICAgICBsbCA6ICdZ WVlZIFttLl0gTU1NTSBEIFtkLl0nLAorICAgICAgICAgICAgbGxsIDogJ1lZ WVkgW20uXSBNTU1NIEQgW2QuXSwgSEg6bW0gW3ZhbC5dJywKKyAgICAgICAg ICAgIGxsbGwgOiAnWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBkZGQsIEhIOm1t IFt2YWwuXScKKyAgICAgICAgfSwKKyAgICAgICAgY2FsZW5kYXIgOiB7Cisg ICAgICAgICAgICBzYW1lRGF5IDogJ1vFoGlhbmRpZW5dIExUJywKKyAgICAg ICAgICAgIG5leHREYXkgOiAnW1J5dG9qXSBMVCcsCisgICAgICAgICAgICBu ZXh0V2VlayA6ICdkZGRkIExUJywKKyAgICAgICAgICAgIGxhc3REYXkgOiAn W1Zha2FyXSBMVCcsCisgICAgICAgICAgICBsYXN0V2VlayA6ICdbUHJhxJdq dXPEr10gZGRkZCBMVCcsCisgICAgICAgICAgICBzYW1lRWxzZSA6ICdMJwor ICAgICAgICB9LAorICAgICAgICByZWxhdGl2ZVRpbWUgOiB7CisgICAgICAg ICAgICBmdXR1cmUgOiAncG8gJXMnLAorICAgICAgICAgICAgcGFzdCA6ICdw cmllxaEgJXMnLAorICAgICAgICAgICAgcyA6IHRyYW5zbGF0ZVNlY29uZHMs CisgICAgICAgICAgICBtIDogdHJhbnNsYXRlU2luZ3VsYXIsCisgICAgICAg ICAgICBtbSA6IGx0X190cmFuc2xhdGUsCisgICAgICAgICAgICBoIDogdHJh bnNsYXRlU2luZ3VsYXIsCisgICAgICAgICAgICBoaCA6IGx0X190cmFuc2xh dGUsCisgICAgICAgICAgICBkIDogdHJhbnNsYXRlU2luZ3VsYXIsCisgICAg ICAgICAgICBkZCA6IGx0X190cmFuc2xhdGUsCisgICAgICAgICAgICBNIDog dHJhbnNsYXRlU2luZ3VsYXIsCisgICAgICAgICAgICBNTSA6IGx0X190cmFu c2xhdGUsCisgICAgICAgICAgICB5IDogdHJhbnNsYXRlU2luZ3VsYXIsCisg ICAgICAgICAgICB5eSA6IGx0X190cmFuc2xhdGUKKyAgICAgICAgfSwKKyAg ICAgICAgb3JkaW5hbFBhcnNlOiAvXGR7MSwyfS1vamkvLAorICAgICAgICBv cmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikgeworICAgICAgICAgICAgcmV0 dXJuIG51bWJlciArICctb2ppJzsKKyAgICAgICAgfSwKKyAgICAgICAgd2Vl ayA6IHsKKyAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUg Zmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorICAgICAgICAgICAgZG95IDogNCAg Ly8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJz dCB3ZWVrIG9mIHRoZSB5ZWFyLgorICAgICAgICB9CisgICAgfSk7CisKKwor ICAgIHZhciBsdl9fdW5pdHMgPSB7CisgICAgICAgICdtJzogJ21pbsWrdGVz X21pbsWrdMSTbV9taW7Fq3RlX21pbsWrdGVzJy5zcGxpdCgnXycpLAorICAg ICAgICAnbW0nOiAnbWluxat0ZXNfbWluxat0xJNtX21pbsWrdGVfbWluxat0 ZXMnLnNwbGl0KCdfJyksCisgICAgICAgICdoJzogJ3N0dW5kYXNfc3R1bmTE gW1fc3R1bmRhX3N0dW5kYXMnLnNwbGl0KCdfJyksCisgICAgICAgICdoaCc6 ICdzdHVuZGFzX3N0dW5kxIFtX3N0dW5kYV9zdHVuZGFzJy5zcGxpdCgnXycp LAorICAgICAgICAnZCc6ICdkaWVuYXNfZGllbsSBbV9kaWVuYV9kaWVuYXMn LnNwbGl0KCdfJyksCisgICAgICAgICdkZCc6ICdkaWVuYXNfZGllbsSBbV9k aWVuYV9kaWVuYXMnLnNwbGl0KCdfJyksCisgICAgICAgICdNJzogJ23Ek25l xaFhX23Ek25lxaFpZW1fbcSTbmVzaXNfbcSTbmXFoWknLnNwbGl0KCdfJyks CisgICAgICAgICdNTSc6ICdtxJNuZcWhYV9txJNuZcWhaWVtX23Ek25lc2lz X23Ek25lxaFpJy5zcGxpdCgnXycpLAorICAgICAgICAneSc6ICdnYWRhX2dh ZGllbV9nYWRzX2dhZGknLnNwbGl0KCdfJyksCisgICAgICAgICd5eSc6ICdn YWRhX2dhZGllbV9nYWRzX2dhZGknLnNwbGl0KCdfJykKKyAgICB9OworICAg IC8qKgorICAgICAqIEBwYXJhbSB3aXRob3V0U3VmZml4IGJvb2xlYW4gdHJ1 ZSA9IGEgbGVuZ3RoIG9mIHRpbWU7IGZhbHNlID0gYmVmb3JlL2FmdGVyIGEg cGVyaW9kIG9mIHRpbWUuCisgICAgICovCisgICAgZnVuY3Rpb24gbHZfX2Zv cm1hdChmb3JtcywgbnVtYmVyLCB3aXRob3V0U3VmZml4KSB7CisgICAgICAg IGlmICh3aXRob3V0U3VmZml4KSB7CisgICAgICAgICAgICAvLyBFLmcuICIy MSBtaW7Fq3RlIiwgIjMgbWluxat0ZXMiLgorICAgICAgICAgICAgcmV0dXJu IG51bWJlciAlIDEwID09PSAxICYmIG51bWJlciAlIDEwMCAhPT0gMTEgPyBm b3Jtc1syXSA6IGZvcm1zWzNdOworICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgLy8gRS5nLiAiMjEgbWluxat0ZXMiIGFzIGluICJwxJNjIDIxIG1p bsWrdGVzIi4KKyAgICAgICAgICAgIC8vIEUuZy4gIjMgbWluxat0xJNtIiBh cyBpbiAicMSTYyAzIG1pbsWrdMSTbSIuCisgICAgICAgICAgICByZXR1cm4g bnVtYmVyICUgMTAgPT09IDEgJiYgbnVtYmVyICUgMTAwICE9PSAxMSA/IGZv cm1zWzBdIDogZm9ybXNbMV07CisgICAgICAgIH0KKyAgICB9CisgICAgZnVu Y3Rpb24gbHZfX3JlbGF0aXZlVGltZVdpdGhQbHVyYWwobnVtYmVyLCB3aXRo b3V0U3VmZml4LCBrZXkpIHsKKyAgICAgICAgcmV0dXJuIG51bWJlciArICcg JyArIGx2X19mb3JtYXQobHZfX3VuaXRzW2tleV0sIG51bWJlciwgd2l0aG91 dFN1ZmZpeCk7CisgICAgfQorICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdp dGhTaW5ndWxhcihudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkgeworICAg ICAgICByZXR1cm4gbHZfX2Zvcm1hdChsdl9fdW5pdHNba2V5XSwgbnVtYmVy LCB3aXRob3V0U3VmZml4KTsKKyAgICB9CisgICAgZnVuY3Rpb24gcmVsYXRp dmVTZWNvbmRzKG51bWJlciwgd2l0aG91dFN1ZmZpeCkgeworICAgICAgICBy ZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdkYcW+YXMgc2VrdW5kZXMnIDogJ2Rh xb7EgW0gc2VrdW5kxJNtJzsKKyAgICB9CisKKyAgICB2YXIgbHYgPSBtb21l bnRfX2RlZmF1bHQuZGVmaW5lTG9jYWxlKCdsdicsIHsKKyAgICAgICAgbW9u dGhzIDogJ2phbnbEgXJpc19mZWJydcSBcmlzX21hcnRzX2FwcsSrbGlzX21h aWpzX2rFq25panNfasWrbGlqc19hdWd1c3RzX3NlcHRlbWJyaXNfb2t0b2Jy aXNfbm92ZW1icmlzX2RlY2VtYnJpcycuc3BsaXQoJ18nKSwKKyAgICAgICAg bW9udGhzU2hvcnQgOiAnamFuX2ZlYl9tYXJfYXByX21haV9qxatuX2rFq2xf YXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vl a2RheXMgOiAnc3bEk3RkaWVuYV9waXJtZGllbmFfb3RyZGllbmFfdHJlxaFk aWVuYV9jZXR1cnRkaWVuYV9waWVrdGRpZW5hX3Nlc3RkaWVuYScuc3BsaXQo J18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTdl9QX09fVF9DX1Br X1MnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDogJ1N2X1Bf T19UX0NfUGtfUycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNQYXJz ZUV4YWN0IDogdHJ1ZSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7Cisg ICAgICAgICAgICBMVCA6ICdISDptbScsCisgICAgICAgICAgICBMVFMgOiAn SEg6bW06c3MnLAorICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZLicsCisg ICAgICAgICAgICBMTCA6ICdZWVlZLiBbZ2FkYV0gRC4gTU1NTScsCisgICAg ICAgICAgICBMTEwgOiAnWVlZWS4gW2dhZGFdIEQuIE1NTU0sIEhIOm1tJywK KyAgICAgICAgICAgIExMTEwgOiAnWVlZWS4gW2dhZGFdIEQuIE1NTU0sIGRk ZGQsIEhIOm1tJworICAgICAgICB9LAorICAgICAgICBjYWxlbmRhciA6IHsK KyAgICAgICAgICAgIHNhbWVEYXkgOiAnW8Wgb2RpZW4gcHVsa3N0ZW5dIExU JywKKyAgICAgICAgICAgIG5leHREYXkgOiAnW1LEq3QgcHVsa3N0ZW5dIExU JywKKyAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW3B1bGtzdGVuXSBM VCcsCisgICAgICAgICAgICBsYXN0RGF5IDogJ1tWYWthciBwdWxrc3Rlbl0g TFQnLAorICAgICAgICAgICAgbGFzdFdlZWsgOiAnW1BhZ8SBanXFocSBXSBk ZGRkIFtwdWxrc3Rlbl0gTFQnLAorICAgICAgICAgICAgc2FtZUVsc2UgOiAn TCcKKyAgICAgICAgfSwKKyAgICAgICAgcmVsYXRpdmVUaW1lIDogeworICAg ICAgICAgICAgZnV0dXJlIDogJ3DEk2MgJXMnLAorICAgICAgICAgICAgcGFz dCA6ICdwaXJtcyAlcycsCisgICAgICAgICAgICBzIDogcmVsYXRpdmVTZWNv bmRzLAorICAgICAgICAgICAgbSA6IHJlbGF0aXZlVGltZVdpdGhTaW5ndWxh ciwKKyAgICAgICAgICAgIG1tIDogbHZfX3JlbGF0aXZlVGltZVdpdGhQbHVy YWwsCisgICAgICAgICAgICBoIDogcmVsYXRpdmVUaW1lV2l0aFNpbmd1bGFy LAorICAgICAgICAgICAgaGggOiBsdl9fcmVsYXRpdmVUaW1lV2l0aFBsdXJh bCwKKyAgICAgICAgICAgIGQgOiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIs CisgICAgICAgICAgICBkZCA6IGx2X19yZWxhdGl2ZVRpbWVXaXRoUGx1cmFs LAorICAgICAgICAgICAgTSA6IHJlbGF0aXZlVGltZVdpdGhTaW5ndWxhciwK KyAgICAgICAgICAgIE1NIDogbHZfX3JlbGF0aXZlVGltZVdpdGhQbHVyYWws CisgICAgICAgICAgICB5IDogcmVsYXRpdmVUaW1lV2l0aFNpbmd1bGFyLAor ICAgICAgICAgICAgeXkgOiBsdl9fcmVsYXRpdmVUaW1lV2l0aFBsdXJhbAor ICAgICAgICB9LAorICAgICAgICBvcmRpbmFsUGFyc2U6IC9cZHsxLDJ9XC4v LAorICAgICAgICBvcmRpbmFsIDogJyVkLicsCisgICAgICAgIHdlZWsgOiB7 CisgICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0 IGRheSBvZiB0aGUgd2Vlay4KKyAgICAgICAgICAgIGRveSA6IDQgIC8vIFRo ZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2Vl ayBvZiB0aGUgeWVhci4KKyAgICAgICAgfQorICAgIH0pOworCisKKyAgICB2 YXIgbWVfX3RyYW5zbGF0b3IgPSB7CisgICAgICAgIHdvcmRzOiB7IC8vRGlm ZmVyZW50IGdyYW1tYXRpY2FsIGNhc2VzCisgICAgICAgICAgICBtOiBbJ2pl ZGFuIG1pbnV0JywgJ2plZG5vZyBtaW51dGEnXSwKKyAgICAgICAgICAgIG1t OiBbJ21pbnV0JywgJ21pbnV0YScsICdtaW51dGEnXSwKKyAgICAgICAgICAg IGg6IFsnamVkYW4gc2F0JywgJ2plZG5vZyBzYXRhJ10sCisgICAgICAgICAg ICBoaDogWydzYXQnLCAnc2F0YScsICdzYXRpJ10sCisgICAgICAgICAgICBk ZDogWydkYW4nLCAnZGFuYScsICdkYW5hJ10sCisgICAgICAgICAgICBNTTog WydtamVzZWMnLCAnbWplc2VjYScsICdtamVzZWNpJ10sCisgICAgICAgICAg ICB5eTogWydnb2RpbmEnLCAnZ29kaW5lJywgJ2dvZGluYSddCisgICAgICAg IH0sCisgICAgICAgIGNvcnJlY3RHcmFtbWF0aWNhbENhc2U6IGZ1bmN0aW9u IChudW1iZXIsIHdvcmRLZXkpIHsKKyAgICAgICAgICAgIHJldHVybiBudW1i ZXIgPT09IDEgPyB3b3JkS2V5WzBdIDogKG51bWJlciA+PSAyICYmIG51bWJl ciA8PSA0ID8gd29yZEtleVsxXSA6IHdvcmRLZXlbMl0pOworICAgICAgICB9 LAorICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uIChudW1iZXIsIHdpdGhv dXRTdWZmaXgsIGtleSkgeworICAgICAgICAgICAgdmFyIHdvcmRLZXkgPSBt ZV9fdHJhbnNsYXRvci53b3Jkc1trZXldOworICAgICAgICAgICAgaWYgKGtl eS5sZW5ndGggPT09IDEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gd2l0 aG91dFN1ZmZpeCA/IHdvcmRLZXlbMF0gOiB3b3JkS2V5WzFdOworICAgICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVy ICsgJyAnICsgbWVfX3RyYW5zbGF0b3IuY29ycmVjdEdyYW1tYXRpY2FsQ2Fz ZShudW1iZXIsIHdvcmRLZXkpOworICAgICAgICAgICAgfQorICAgICAgICB9 CisgICAgfTsKKworICAgIHZhciBtZSA9IG1vbWVudF9fZGVmYXVsdC5kZWZp bmVMb2NhbGUoJ21lJywgeworICAgICAgICBtb250aHM6ICdqYW51YXJfZmVi cnVhcl9tYXJ0X2FwcmlsX21hal9qdW5fanVsX2F2Z3VzdF9zZXB0ZW1iYXJf b2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhcicuc3BsaXQoJ18nKSwKKyAgICAg ICAgbW9udGhzU2hvcnQ6ICdqYW4uX2ZlYi5fbWFyLl9hcHIuX21hal9qdW5f anVsX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoJ18nKSwKKyAg ICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsCisgICAgICAgIHdlZWtk YXlzOiAnbmVkamVsamFfcG9uZWRqZWxqYWtfdXRvcmFrX3NyaWplZGFfxI1l dHZydGFrX3BldGFrX3N1Ym90YScuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vl a2RheXNTaG9ydDogJ25lZC5fcG9uLl91dG8uX3NyaS5fxI1ldC5fcGV0Ll9z dWIuJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c01pbjogJ25lX3Bv X3V0X3NyX8SNZV9wZV9zdScuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2Rh eXNQYXJzZUV4YWN0IDogdHJ1ZSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6 IHsKKyAgICAgICAgICAgIExUOiAnSDptbScsCisgICAgICAgICAgICBMVFMg OiAnSDptbTpzcycsCisgICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsCisg ICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsCisgICAgICAgICAgICBM TEw6ICdELiBNTU1NIFlZWVkgSDptbScsCisgICAgICAgICAgICBMTExMOiAn ZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nCisgICAgICAgIH0sCisgICAgICAg IGNhbGVuZGFyOiB7CisgICAgICAgICAgICBzYW1lRGF5OiAnW2RhbmFzIHVd IExUJywKKyAgICAgICAgICAgIG5leHREYXk6ICdbc2p1dHJhIHVdIExUJywK KworICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHsKKyAgICAg ICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHsKKyAgICAgICAgICAg ICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuICdbdV0gW25lZGplbGp1XSBbdV0gTFQnOworICAgICAgICAgICAgICAg ICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g J1t1XSBbc3JpamVkdV0gW3VdIExUJzsKKyAgICAgICAgICAgICAgICAgICAg Y2FzZSA2OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0g W3N1Ym90dV0gW3VdIExUJzsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAx OgorICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAg ICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1Ogor ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gZGRkZCBbdV0g TFQnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAg ICAgICAgICBsYXN0RGF5ICA6ICdbanXEjWUgdV0gTFQnLAorICAgICAgICAg ICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg dmFyIGxhc3RXZWVrRGF5cyA9IFsKKyAgICAgICAgICAgICAgICAgICAgJ1tw cm/FoWxlXSBbbmVkamVsamVdIFt1XSBMVCcsCisgICAgICAgICAgICAgICAg ICAgICdbcHJvxaFsb2ddIFtwb25lZGplbGprYV0gW3VdIExUJywKKyAgICAg ICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW3V0b3JrYV0gW3VdIExUJywK KyAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbc3JpamVkZV0gW3Vd IExUJywKKyAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW8SNZXR2 cnRrYV0gW3VdIExUJywKKyAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxv Z10gW3BldGthXSBbdV0gTFQnLAorICAgICAgICAgICAgICAgICAgICAnW3By b8WhbGVdIFtzdWJvdGVdIFt1XSBMVCcKKyAgICAgICAgICAgICAgICBdOwor ICAgICAgICAgICAgICAgIHJldHVybiBsYXN0V2Vla0RheXNbdGhpcy5kYXko KV07CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgc2FtZUVsc2UgOiAn TCcKKyAgICAgICAgfSwKKyAgICAgICAgcmVsYXRpdmVUaW1lIDogeworICAg ICAgICAgICAgZnV0dXJlIDogJ3phICVzJywKKyAgICAgICAgICAgIHBhc3Qg ICA6ICdwcmlqZSAlcycsCisgICAgICAgICAgICBzICAgICAgOiAnbmVrb2xp a28gc2VrdW5kaScsCisgICAgICAgICAgICBtICAgICAgOiBtZV9fdHJhbnNs YXRvci50cmFuc2xhdGUsCisgICAgICAgICAgICBtbSAgICAgOiBtZV9fdHJh bnNsYXRvci50cmFuc2xhdGUsCisgICAgICAgICAgICBoICAgICAgOiBtZV9f dHJhbnNsYXRvci50cmFuc2xhdGUsCisgICAgICAgICAgICBoaCAgICAgOiBt ZV9fdHJhbnNsYXRvci50cmFuc2xhdGUsCisgICAgICAgICAgICBkICAgICAg OiAnZGFuJywKKyAgICAgICAgICAgIGRkICAgICA6IG1lX190cmFuc2xhdG9y LnRyYW5zbGF0ZSwKKyAgICAgICAgICAgIE0gICAgICA6ICdtamVzZWMnLAor ICAgICAgICAgICAgTU0gICAgIDogbWVfX3RyYW5zbGF0b3IudHJhbnNsYXRl LAorICAgICAgICAgICAgeSAgICAgIDogJ2dvZGludScsCisgICAgICAgICAg ICB5eSAgICAgOiBtZV9fdHJhbnNsYXRvci50cmFuc2xhdGUKKyAgICAgICAg fSwKKyAgICAgICAgb3JkaW5hbFBhcnNlOiAvXGR7MSwyfVwuLywKKyAgICAg ICAgb3JkaW5hbCA6ICclZC4nLAorICAgICAgICB3ZWVrIDogeworICAgICAg ICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2Yg dGhlIHdlZWsuCisgICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0 aGF0IGNvbnRhaW5zIEphbiAxc3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhl IHllYXIuCisgICAgICAgIH0KKyAgICB9KTsKKworCisgICAgdmFyIG1pID0g bW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgnbWknLCB7CisgICAgICAg IG1vbnRoczogJ0tvaGktdMSBdGVfSHVpLXRhbmd1cnVfUG91dMWrLXRlLXJh bmdpX1BhZW5nYS13aMSBd2jEgV9IYXJhdHVhX1BpcGlyaV9IxY1uZ29pbmdv aV9IZXJlLXR1cmkta8WNa8SBX01haHVydV9XaGlyaW5nYS3EgS1udWt1X1do aXJpbmdhLcSBLXJhbmdpX0hha2loZWEnLnNwbGl0KCdfJyksCisgICAgICAg IG1vbnRoc1Nob3J0OiAnS29oaV9IdWlfUG91X1BhZV9IYXJhX1BpcGlfSMWN bmdvaV9IZXJlX01haHVfV2hpLW51X1doaS1yYV9IYWtpJy5zcGxpdCgnXycp LAorICAgICAgICBtb250aHNSZWdleDogLyg/OlsnYS16XHUwMTAxXHUwMTRE XHUwMTZCXStcLT8pezEsM30vaSwKKyAgICAgICAgbW9udGhzU3RyaWN0UmVn ZXg6IC8oPzpbJ2Etelx1MDEwMVx1MDE0RFx1MDE2Ql0rXC0/KXsxLDN9L2ks CisgICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IC8oPzpbJ2Etelx1MDEwMVx1 MDE0RFx1MDE2Ql0rXC0/KXsxLDN9L2ksCisgICAgICAgIG1vbnRoc1Nob3J0 U3RyaWN0UmVnZXg6IC8oPzpbJ2Etelx1MDEwMVx1MDE0RFx1MDE2Ql0rXC0/ KXsxLDJ9L2ksCisgICAgICAgIHdlZWtkYXlzOiAnUsSBdGFwdV9NYW5lX1TF q3JlaV9XZW5lcmVpX1TEgWl0ZV9QYXJhaXJlX0jEgXRhcmVpJy5zcGxpdCgn XycpLAorICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnVGFfTWFfVMWrX1dlX1TE gWlfUGFfSMSBJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c01pbjog J1RhX01hX1TFq19XZV9UxIFpX1BhX0jEgScuc3BsaXQoJ18nKSwKKyAgICAg ICAgbG9uZ0RhdGVGb3JtYXQ6IHsKKyAgICAgICAgICAgIExUOiAnSEg6bW0n LAorICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLAorICAgICAgICAgICAg TDogJ0REL01NL1lZWVknLAorICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZ WScsCisgICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBbaV0gSEg6bW0n LAorICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIFtpXSBI SDptbScKKyAgICAgICAgfSwKKyAgICAgICAgY2FsZW5kYXI6IHsKKyAgICAg ICAgICAgIHNhbWVEYXk6ICdbaSB0ZWllIG1haGFuYSwgaV0gTFQnLAorICAg ICAgICAgICAgbmV4dERheTogJ1thcG9wbyBpXSBMVCcsCisgICAgICAgICAg ICBuZXh0V2VlazogJ2RkZGQgW2ldIExUJywKKyAgICAgICAgICAgIGxhc3RE YXk6ICdbaW5hbmFoaSBpXSBMVCcsCisgICAgICAgICAgICBsYXN0V2Vlazog J2RkZGQgW3doYWthbXV0dW5nYSBpXSBMVCcsCisgICAgICAgICAgICBzYW1l RWxzZTogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZTog eworICAgICAgICAgICAgZnV0dXJlOiAnaSByb3RvIGkgJXMnLAorICAgICAg ICAgICAgcGFzdDogJyVzIGkgbXVhJywKKyAgICAgICAgICAgIHM6ICd0ZSBo xJNrb25hIHJ1YXJ1YScsCisgICAgICAgICAgICBtOiAnaGUgbWVuZXRpJywK KyAgICAgICAgICAgIG1tOiAnJWQgbWVuZXRpJywKKyAgICAgICAgICAgIGg6 ICd0ZSBoYW9yYScsCisgICAgICAgICAgICBoaDogJyVkIGhhb3JhJywKKyAg ICAgICAgICAgIGQ6ICdoZSByYScsCisgICAgICAgICAgICBkZDogJyVkIHJh JywKKyAgICAgICAgICAgIE06ICdoZSBtYXJhbWEnLAorICAgICAgICAgICAg TU06ICclZCBtYXJhbWEnLAorICAgICAgICAgICAgeTogJ2hlIHRhdScsCisg ICAgICAgICAgICB5eTogJyVkIHRhdScKKyAgICAgICAgfSwKKyAgICAgICAg b3JkaW5hbFBhcnNlOiAvXGR7MSwyfcK6LywKKyAgICAgICAgb3JkaW5hbDog JyVkwronLAorICAgICAgICB3ZWVrIDogeworICAgICAgICAgICAgZG93IDog MSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCisg ICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5z IEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuCisgICAg ICAgIH0KKyAgICB9KTsKKworCisgICAgdmFyIG1rID0gbW9tZW50X19kZWZh dWx0LmRlZmluZUxvY2FsZSgnbWsnLCB7CisgICAgICAgIG1vbnRocyA6ICfR mNCw0L3Rg9Cw0YDQuF/RhNC10LLRgNGD0LDRgNC4X9C80LDRgNGCX9Cw0L/R gNC40Ltf0LzQsNGYX9GY0YPQvdC4X9GY0YPQu9C4X9Cw0LLQs9GD0YHRgl/R gdC10L/RgtC10LzQstGA0Lhf0L7QutGC0L7QvNCy0YDQuF/QvdC+0LXQvNCy 0YDQuF/QtNC10LrQtdC80LLRgNC4Jy5zcGxpdCgnXycpLAorICAgICAgICBt b250aHNTaG9ydCA6ICfRmNCw0L1f0YTQtdCyX9C80LDRgF/QsNC/0YBf0LzQ sNGYX9GY0YPQvV/RmNGD0Ltf0LDQstCzX9GB0LXQv1/QvtC60YJf0L3QvtC1 X9C00LXQuicuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXMgOiAn0L3Q tdC00LXQu9CwX9C/0L7QvdC10LTQtdC70L3QuNC6X9Cy0YLQvtGA0L3QuNC6 X9GB0YDQtdC00LBf0YfQtdGC0LLRgNGC0L7Qul/Qv9C10YLQvtC6X9GB0LDQ sdC+0YLQsCcuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6 ICfQvdC10LRf0L/QvtC9X9Cy0YLQvl/RgdGA0LVf0YfQtdGCX9C/0LXRgl/R gdCw0LEnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDogJ9C9 ZV/Qv29f0LLRgl/RgdGAX9GH0LVf0L/QtV/RgWEnLnNwbGl0KCdfJyksCisg ICAgICAgIGxvbmdEYXRlRm9ybWF0IDogeworICAgICAgICAgICAgTFQgOiAn SDptbScsCisgICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsCisgICAgICAg ICAgICBMIDogJ0QuTU0uWVlZWScsCisgICAgICAgICAgICBMTCA6ICdEIE1N TU0gWVlZWScsCisgICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSDpt bScsCisgICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEg6 bW0nCisgICAgICAgIH0sCisgICAgICAgIGNhbGVuZGFyIDogeworICAgICAg ICAgICAgc2FtZURheSA6ICdb0JTQtdC90LXRgSDQstC+XSBMVCcsCisgICAg ICAgICAgICBuZXh0RGF5IDogJ1vQo9GC0YDQtSDQstC+XSBMVCcsCisgICAg ICAgICAgICBuZXh0V2VlayA6ICdb0JLQvl0gZGRkZCBb0LLQvl0gTFQnLAor ICAgICAgICAgICAgbGFzdERheSA6ICdb0JLRh9C10YDQsCDQstC+XSBMVCcs CisgICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHsKKyAgICAg ICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHsKKyAgICAgICAgICAg ICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgICAgICBjYXNlIDM6 CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKKyAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiAnW9CY0LfQvNC40L3QsNGC0LDRgtCwXSBkZGRk IFvQstC+XSBMVCc7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKyAg ICAgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAg ICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNToKKyAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CY0LfQvNC40L3QsNGC0LjQ vtGCXSBkZGRkIFvQstC+XSBMVCc7CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgfSwKKyAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnCisgICAg ICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZSA6IHsKKyAgICAgICAgICAg IGZ1dHVyZSA6ICfQv9C+0YHQu9C1ICVzJywKKyAgICAgICAgICAgIHBhc3Qg OiAn0L/RgNC10LQgJXMnLAorICAgICAgICAgICAgcyA6ICfQvdC10LrQvtC7 0LrRgyDRgdC10LrRg9C90LTQuCcsCisgICAgICAgICAgICBtIDogJ9C80LjQ vdGD0YLQsCcsCisgICAgICAgICAgICBtbSA6ICclZCDQvNC40L3Rg9GC0Lgn LAorICAgICAgICAgICAgaCA6ICfRh9Cw0YEnLAorICAgICAgICAgICAgaGgg OiAnJWQg0YfQsNGB0LAnLAorICAgICAgICAgICAgZCA6ICfQtNC10L0nLAor ICAgICAgICAgICAgZGQgOiAnJWQg0LTQtdC90LAnLAorICAgICAgICAgICAg TSA6ICfQvNC10YHQtdGGJywKKyAgICAgICAgICAgIE1NIDogJyVkINC80LXR gdC10YbQuCcsCisgICAgICAgICAgICB5IDogJ9Cz0L7QtNC40L3QsCcsCisg ICAgICAgICAgICB5eSA6ICclZCDQs9C+0LTQuNC90LgnCisgICAgICAgIH0s CisgICAgICAgIG9yZGluYWxQYXJzZTogL1xkezEsMn0tKNC10LJ80LXQvXzR gtC4fNCy0Lh80YDQuHzQvNC4KS8sCisgICAgICAgIG9yZGluYWwgOiBmdW5j dGlvbiAobnVtYmVyKSB7CisgICAgICAgICAgICB2YXIgbGFzdERpZ2l0ID0g bnVtYmVyICUgMTAsCisgICAgICAgICAgICAgICAgbGFzdDJEaWdpdHMgPSBu dW1iZXIgJSAxMDA7CisgICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7 CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LXQsic7Cisg ICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3QyRGlnaXRzID09PSAwKSB7Cisg ICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LXQvSc7CisgICAg ICAgICAgICB9IGVsc2UgaWYgKGxhc3QyRGlnaXRzID4gMTAgJiYgbGFzdDJE aWdpdHMgPCAyMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIg KyAnLdGC0LgnOworICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGlnaXQg PT09IDEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Q stC4JzsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdERpZ2l0ID09PSAy KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0YDQuCc7 CisgICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gNyB8fCBs YXN0RGlnaXQgPT09IDgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVt YmVyICsgJy3QvNC4JzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICAgICAgcmV0dXJuIG51bWJlciArICct0YLQuCc7CisgICAgICAgICAg ICB9CisgICAgICAgIH0sCisgICAgICAgIHdlZWsgOiB7CisgICAgICAgICAg ICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUg d2Vlay4KKyAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQg Y29udGFpbnMgSmFuIDFzdCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVh ci4KKyAgICAgICAgfQorICAgIH0pOworCisKKyAgICB2YXIgbWwgPSBtb21l bnRfX2RlZmF1bHQuZGVmaW5lTG9jYWxlKCdtbCcsIHsKKyAgICAgICAgbW9u dGhzIDogJ+C0nOC0qOC1geC0teC0sOC0v1/gtKvgtYbgtKzgtY3gtLDgtYHg tLXgtLDgtL9f4LSu4LS+4LW84LSa4LWN4LSa4LWNX+C0j+C0quC1jeC0sOC0 v+C1vV/gtK7gtYfgtK/gtY1f4LSc4LWC4LW6X+C0nOC1guC0suC1iF/gtJPg tJfgtLjgtY3gtLHgtY3gtLHgtY1f4LS44LWG4LSq4LWN4LSx4LWN4LSx4LSC 4LSs4LW8X+C0kuC0leC1jeC0n+C1i+C0rOC1vF/gtKjgtLXgtILgtKzgtbxf 4LSh4LS/4LS44LSC4LSs4LW8Jy5zcGxpdCgnXycpLAorICAgICAgICBtb250 aHNTaG9ydCA6ICfgtJzgtKjgtYEuX+C0q+C1huC0rOC1jeC0sOC1gS5f4LSu 4LS+4LW8Ll/gtI/gtKrgtY3gtLDgtL8uX+C0ruC1h+C0r+C1jV/gtJzgtYLg tbpf4LSc4LWC4LSy4LWILl/gtJPgtJcuX+C0uOC1huC0quC1jeC0seC1jeC0 sS5f4LSS4LSV4LWN4LSf4LWLLl/gtKjgtLXgtIIuX+C0oeC0v+C0uOC0gi4n LnNwbGl0KCdfJyksCisgICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVl LAorICAgICAgICB3ZWVrZGF5cyA6ICfgtJ7gtL7gtK/gtLHgtL7gtLTgtY3g tJpf4LSk4LS/4LSZ4LWN4LSV4LSz4LS+4LS04LWN4LSaX+C0muC1iuC0teC1 jeC0teC0vuC0tOC1jeC0ml/gtKzgtYHgtKfgtKjgtL7gtLTgtY3gtJpf4LS1 4LWN4LSv4LS+4LS04LS+4LS04LWN4LSaX+C0teC1huC0s+C1jeC0s+C0v+C0 r+C0vuC0tOC1jeC0ml/gtLbgtKjgtL/gtK/gtL7gtLTgtY3gtJonLnNwbGl0 KCdfJyksCisgICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4LSe4LS+4LSv4LW8 X+C0pOC0v+C0meC1jeC0leC1vl/gtJrgtYrgtLXgtY3gtLVf4LSs4LWB4LSn 4LW7X+C0teC1jeC0r+C0vuC0tOC0gl/gtLXgtYbgtLPgtY3gtLPgtL9f4LS2 4LSo4LS/Jy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c01pbiA6ICfg tJ7gtL5f4LSk4LS/X+C0muC1il/gtKzgtYFf4LS14LWN4LSv4LS+X+C0teC1 hl/gtLYnLnNwbGl0KCdfJyksCisgICAgICAgIGxvbmdEYXRlRm9ybWF0IDog eworICAgICAgICAgICAgTFQgOiAnQSBoOm1tIC3gtKjgtYEnLAorICAgICAg ICAgICAgTFRTIDogJ0EgaDptbTpzcyAt4LSo4LWBJywKKyAgICAgICAgICAg IEwgOiAnREQvTU0vWVlZWScsCisgICAgICAgICAgICBMTCA6ICdEIE1NTU0g WVlZWScsCisgICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVksIEEgaDpt bSAt4LSo4LWBJywKKyAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1N IFlZWVksIEEgaDptbSAt4LSo4LWBJworICAgICAgICB9LAorICAgICAgICBj YWxlbmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVEYXkgOiAnW+C0h+C0qOC1 jeC0qOC1jV0gTFQnLAorICAgICAgICAgICAgbmV4dERheSA6ICdb4LSo4LS+ 4LSz4LWGXSBMVCcsCisgICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkLCBM VCcsCisgICAgICAgICAgICBsYXN0RGF5IDogJ1vgtIfgtKjgtY3gtKjgtLLg tYZdIExUJywKKyAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vgtJXgtLTgtL/g tJ7gtY3gtJ5dIGRkZGQsIExUJywKKyAgICAgICAgICAgIHNhbWVFbHNlIDog J0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZSA6IHsKKyAg ICAgICAgICAgIGZ1dHVyZSA6ICclcyDgtJXgtLTgtL/gtJ7gtY3gtJ7gtY0n LAorICAgICAgICAgICAgcGFzdCA6ICclcyDgtK7gtYHgtbvgtKrgtY0nLAor ICAgICAgICAgICAgcyA6ICfgtIXgtb3gtKog4LSo4LS/4LSu4LS/4LS34LSZ 4LWN4LSZ4LW+JywKKyAgICAgICAgICAgIG0gOiAn4LSS4LSw4LWBIOC0ruC0 v+C0qOC0v+C0seC1jeC0seC1jScsCisgICAgICAgICAgICBtbSA6ICclZCDg tK7gtL/gtKjgtL/gtLHgtY3gtLHgtY0nLAorICAgICAgICAgICAgaCA6ICfg tJLgtLDgtYEg4LSu4LSj4LS/4LSV4LWN4LSV4LWC4LW8JywKKyAgICAgICAg ICAgIGhoIDogJyVkIOC0ruC0o+C0v+C0leC1jeC0leC1guC1vCcsCisgICAg ICAgICAgICBkIDogJ+C0kuC0sOC1gSDgtKbgtL/gtLXgtLjgtIInLAorICAg ICAgICAgICAgZGQgOiAnJWQg4LSm4LS/4LS14LS44LSCJywKKyAgICAgICAg ICAgIE0gOiAn4LSS4LSw4LWBIOC0ruC0vuC0uOC0gicsCisgICAgICAgICAg ICBNTSA6ICclZCDgtK7gtL7gtLjgtIInLAorICAgICAgICAgICAgeSA6ICfg tJLgtLDgtYEg4LS14LW84LS34LSCJywKKyAgICAgICAgICAgIHl5IDogJyVk IOC0teC1vOC0t+C0gicKKyAgICAgICAgfSwKKyAgICAgICAgbWVyaWRpZW1Q YXJzZTogL+C0sOC0vuC0pOC1jeC0sOC0v3zgtLDgtL7gtLXgtL/gtLLgtYZ8 4LSJ4LSa4LWN4LSaIOC0leC0tOC0v+C0nuC1jeC0nuC1jXzgtLXgtYjgtJXg tYHgtKjgtY3gtKjgtYfgtLDgtIJ84LSw4LS+4LSk4LWN4LSw4LS/L2ksCisg ICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGll bSkgeworICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7CisgICAgICAg ICAgICAgICAgaG91ciA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAg ICBpZiAoKG1lcmlkaWVtID09PSAn4LSw4LS+4LSk4LWN4LSw4LS/JyAmJiBo b3VyID49IDQpIHx8CisgICAgICAgICAgICAgICAgICAgIG1lcmlkaWVtID09 PSAn4LSJ4LSa4LWN4LSaIOC0leC0tOC0v+C0nuC1jeC0nuC1jScgfHwKKyAg ICAgICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfgtLXgtYjgtJXgtYHg tKjgtY3gtKjgtYfgtLDgtIInKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu IGhvdXIgKyAxMjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICAgICAgcmV0dXJuIGhvdXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0s CisgICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwg aXNMb3dlcikgeworICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7CisgICAg ICAgICAgICAgICAgcmV0dXJuICfgtLDgtL7gtKTgtY3gtLDgtL8nOworICAg ICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHsKKyAgICAgICAgICAg ICAgICByZXR1cm4gJ+C0sOC0vuC0teC0v+C0suC1hic7CisgICAgICAgICAg ICB9IGVsc2UgaWYgKGhvdXIgPCAxNykgeworICAgICAgICAgICAgICAgIHJl dHVybiAn4LSJ4LSa4LWN4LSaIOC0leC0tOC0v+C0nuC1jeC0nuC1jSc7Cisg ICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkgeworICAgICAgICAg ICAgICAgIHJldHVybiAn4LS14LWI4LSV4LWB4LSo4LWN4LSo4LWH4LSw4LSC JzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0 dXJuICfgtLDgtL7gtKTgtY3gtLDgtL8nOworICAgICAgICAgICAgfQorICAg ICAgICB9CisgICAgfSk7CisKKworICAgIHZhciBtcl9fc3ltYm9sTWFwID0g eworICAgICAgICAnMSc6ICfgpacnLAorICAgICAgICAnMic6ICfgpagnLAor ICAgICAgICAnMyc6ICfgpaknLAorICAgICAgICAnNCc6ICfgpaonLAorICAg ICAgICAnNSc6ICfgpasnLAorICAgICAgICAnNic6ICfgpawnLAorICAgICAg ICAnNyc6ICfgpa0nLAorICAgICAgICAnOCc6ICfgpa4nLAorICAgICAgICAn OSc6ICfgpa8nLAorICAgICAgICAnMCc6ICfgpaYnCisgICAgfSwKKyAgICBt cl9fbnVtYmVyTWFwID0geworICAgICAgICAn4KWnJzogJzEnLAorICAgICAg ICAn4KWoJzogJzInLAorICAgICAgICAn4KWpJzogJzMnLAorICAgICAgICAn 4KWqJzogJzQnLAorICAgICAgICAn4KWrJzogJzUnLAorICAgICAgICAn4KWs JzogJzYnLAorICAgICAgICAn4KWtJzogJzcnLAorICAgICAgICAn4KWuJzog JzgnLAorICAgICAgICAn4KWvJzogJzknLAorICAgICAgICAn4KWmJzogJzAn CisgICAgfTsKKworICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZU1yKG51bWJl ciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkKKyAgICB7Cisg ICAgICAgIHZhciBvdXRwdXQgPSAnJzsKKyAgICAgICAgaWYgKHdpdGhvdXRT dWZmaXgpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoc3RyaW5nKSB7CisgICAg ICAgICAgICAgICAgY2FzZSAncyc6IG91dHB1dCA9ICfgpJXgpL7gpLngpYAg 4KS44KWH4KSV4KSC4KSmJzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz ZSAnbSc6IG91dHB1dCA9ICfgpI/gpJUg4KSu4KS/4KSo4KS/4KSfJzsgYnJl YWs7CisgICAgICAgICAgICAgICAgY2FzZSAnbW0nOiBvdXRwdXQgPSAnJWQg 4KSu4KS/4KSo4KS/4KSf4KWHJzsgYnJlYWs7CisgICAgICAgICAgICAgICAg Y2FzZSAnaCc6IG91dHB1dCA9ICfgpI/gpJUg4KSk4KS+4KS4JzsgYnJlYWs7 CisgICAgICAgICAgICAgICAgY2FzZSAnaGgnOiBvdXRwdXQgPSAnJWQg4KSk 4KS+4KS4JzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAnZCc6IG91 dHB1dCA9ICfgpI/gpJUg4KSm4KS/4KS14KS4JzsgYnJlYWs7CisgICAgICAg ICAgICAgICAgY2FzZSAnZGQnOiBvdXRwdXQgPSAnJWQg4KSm4KS/4KS14KS4 JzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAnTSc6IG91dHB1dCA9 ICfgpI/gpJUg4KSu4KS54KS/4KSo4KS+JzsgYnJlYWs7CisgICAgICAgICAg ICAgICAgY2FzZSAnTU0nOiBvdXRwdXQgPSAnJWQg4KSu4KS54KS/4KSo4KWH JzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAneSc6IG91dHB1dCA9 ICfgpI/gpJUg4KS14KSw4KWN4KS3JzsgYnJlYWs7CisgICAgICAgICAgICAg ICAgY2FzZSAneXknOiBvdXRwdXQgPSAnJWQg4KS14KSw4KWN4KS34KWHJzsg YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxz ZSB7CisgICAgICAgICAgICBzd2l0Y2ggKHN0cmluZykgeworICAgICAgICAg ICAgICAgIGNhc2UgJ3MnOiBvdXRwdXQgPSAn4KSV4KS+4KS54KWAIOCkuOCl h+CkleCkguCkpuCkvuCkgic7IGJyZWFrOworICAgICAgICAgICAgICAgIGNh c2UgJ20nOiBvdXRwdXQgPSAn4KSP4KSV4KS+IOCkruCkv+CkqOCkv+Ckn+Ck vic7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ21tJzogb3V0cHV0 ID0gJyVkIOCkruCkv+CkqOCkv+Ckn+CkvuCkgic7IGJyZWFrOworICAgICAg ICAgICAgICAgIGNhc2UgJ2gnOiBvdXRwdXQgPSAn4KSP4KSV4KS+IOCkpOCk vuCkuOCkvic7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ2hoJzog b3V0cHV0ID0gJyVkIOCkpOCkvuCkuOCkvuCkgic7IGJyZWFrOworICAgICAg ICAgICAgICAgIGNhc2UgJ2QnOiBvdXRwdXQgPSAn4KSP4KSV4KS+IOCkpuCk v+CkteCkuOCkvic7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ2Rk Jzogb3V0cHV0ID0gJyVkIOCkpuCkv+CkteCkuOCkvuCkgic7IGJyZWFrOwor ICAgICAgICAgICAgICAgIGNhc2UgJ00nOiBvdXRwdXQgPSAn4KSP4KSV4KS+ IOCkruCkueCkv+CkqOCljeCkr+Ckvic7IGJyZWFrOworICAgICAgICAgICAg ICAgIGNhc2UgJ01NJzogb3V0cHV0ID0gJyVkIOCkruCkueCkv+CkqOCljeCk r+CkvuCkgic7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ3knOiBv dXRwdXQgPSAn4KSP4KSV4KS+IOCkteCksOCljeCkt+Ckvic7IGJyZWFrOwor ICAgICAgICAgICAgICAgIGNhc2UgJ3l5Jzogb3V0cHV0ID0gJyVkIOCkteCk sOCljeCkt+CkvuCkgic7IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg ICB9CisgICAgICAgIHJldHVybiBvdXRwdXQucmVwbGFjZSgvJWQvaSwgbnVt YmVyKTsKKyAgICB9CisKKyAgICB2YXIgbXIgPSBtb21lbnRfX2RlZmF1bHQu ZGVmaW5lTG9jYWxlKCdtcicsIHsKKyAgICAgICAgbW9udGhzIDogJ+CknOCk vuCkqOClh+CkteCkvuCksOClgF/gpKvgpYfgpKzgpY3gpLDgpYHgpLXgpL7g pLDgpYBf4KSu4KS+4KSw4KWN4KSaX+Ckj+CkquCljeCksOCkv+Cksl/gpK7g pYdf4KSc4KWC4KSoX+CknOClgeCksuCliF/gpJHgpJfgpLjgpY3gpJ9f4KS4 4KSq4KWN4KSf4KWH4KSC4KSs4KSwX+CkkeCkleCljeCkn+Cli+CkrOCksF/g pKjgpYvgpLXgpY3gpLngpYfgpILgpKzgpLBf4KSh4KS/4KS44KWH4KSC4KSs 4KSwJy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNTaG9ydDogJ+CknOCk vuCkqOClhy5f4KSr4KWH4KSs4KWN4KSw4KWBLl/gpK7gpL7gpLDgpY3gpJou X+Ckj+CkquCljeCksOCkvy5f4KSu4KWHLl/gpJzgpYLgpKguX+CknOClgeCk suCliC5f4KSR4KSXLl/gpLjgpKrgpY3gpJ/gpYfgpIIuX+CkkeCkleCljeCk n+Cliy5f4KSo4KWL4KS14KWN4KS54KWH4KSCLl/gpKHgpL/gpLjgpYfgpIIu Jy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1 ZSwKKyAgICAgICAgd2Vla2RheXMgOiAn4KSw4KS14KS/4KS14KS+4KSwX+Ck uOCli+CkruCkteCkvuCksF/gpK7gpILgpJfgpLPgpLXgpL7gpLBf4KSs4KWB 4KSn4KS14KS+4KSwX+Ckl+ClgeCksOClguCkteCkvuCksF/gpLbgpYHgpJXg pY3gpLDgpLXgpL7gpLBf4KS24KSo4KS/4KS14KS+4KSwJy5zcGxpdCgnXycp LAorICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+CksOCkteCkv1/gpLjgpYvg pK5f4KSu4KSC4KSX4KSzX+CkrOClgeCkp1/gpJfgpYHgpLDgpYJf4KS24KWB 4KSV4KWN4KSwX+CktuCkqOCkvycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vl a2RheXNNaW4gOiAn4KSwX+CkuOCli1/gpK7gpIJf4KSs4KWBX+Ckl+ClgV/g pLbgpYFf4KS2Jy5zcGxpdCgnXycpLAorICAgICAgICBsb25nRGF0ZUZvcm1h dCA6IHsKKyAgICAgICAgICAgIExUIDogJ0EgaDptbSDgpLXgpL7gpJzgpKTg pL4nLAorICAgICAgICAgICAgTFRTIDogJ0EgaDptbTpzcyDgpLXgpL7gpJzg pKTgpL4nLAorICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJywKKyAgICAg ICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJywKKyAgICAgICAgICAgIExMTCA6 ICdEIE1NTU0gWVlZWSwgQSBoOm1tIOCkteCkvuCknOCkpOCkvicsCisgICAg ICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4KS1 4KS+4KSc4KSk4KS+JworICAgICAgICB9LAorICAgICAgICBjYWxlbmRhciA6 IHsKKyAgICAgICAgICAgIHNhbWVEYXkgOiAnW+CkhuCknF0gTFQnLAorICAg ICAgICAgICAgbmV4dERheSA6ICdb4KSJ4KSm4KWN4KSv4KS+XSBMVCcsCisg ICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkLCBMVCcsCisgICAgICAgICAg ICBsYXN0RGF5IDogJ1vgpJXgpL7gpLJdIExUJywKKyAgICAgICAgICAgIGxh c3RXZWVrOiAnW+CkruCkvuCkl+ClgOCksl0gZGRkZCwgTFQnLAorICAgICAg ICAgICAgc2FtZUVsc2UgOiAnTCcKKyAgICAgICAgfSwKKyAgICAgICAgcmVs YXRpdmVUaW1lIDogeworICAgICAgICAgICAgZnV0dXJlOiAnJXPgpK7gpKfg pY3gpK/gpYcnLAorICAgICAgICAgICAgcGFzdDogJyVz4KSq4KWC4KSw4KWN 4KS14KWAJywKKyAgICAgICAgICAgIHM6IHJlbGF0aXZlVGltZU1yLAorICAg ICAgICAgICAgbTogcmVsYXRpdmVUaW1lTXIsCisgICAgICAgICAgICBtbTog cmVsYXRpdmVUaW1lTXIsCisgICAgICAgICAgICBoOiByZWxhdGl2ZVRpbWVN ciwKKyAgICAgICAgICAgIGhoOiByZWxhdGl2ZVRpbWVNciwKKyAgICAgICAg ICAgIGQ6IHJlbGF0aXZlVGltZU1yLAorICAgICAgICAgICAgZGQ6IHJlbGF0 aXZlVGltZU1yLAorICAgICAgICAgICAgTTogcmVsYXRpdmVUaW1lTXIsCisg ICAgICAgICAgICBNTTogcmVsYXRpdmVUaW1lTXIsCisgICAgICAgICAgICB5 OiByZWxhdGl2ZVRpbWVNciwKKyAgICAgICAgICAgIHl5OiByZWxhdGl2ZVRp bWVNcgorICAgICAgICB9LAorICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24g KHN0cmluZykgeworICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNl KC9b4KWn4KWo4KWp4KWq4KWr4KWs4KWt4KWu4KWv4KWmXS9nLCBmdW5jdGlv biAobWF0Y2gpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbXJfX251bWJl ck1hcFttYXRjaF07CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAg ICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykgeworICAgICAg ICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cZC9nLCBmdW5jdGlvbiAo bWF0Y2gpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbXJfX3N5bWJvbE1h cFttYXRjaF07CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAg ICAgbWVyaWRpZW1QYXJzZTogL+CksOCkvuCkpOCljeCksOClgHzgpLjgpJXg pL7gpLPgpYB84KSm4KWB4KSq4KS+4KSw4KWAfOCkuOCkvuCkr+CkguCkleCk vuCks+ClgC8sCisgICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uICho b3VyLCBtZXJpZGllbSkgeworICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEy KSB7CisgICAgICAgICAgICAgICAgaG91ciA9IDA7CisgICAgICAgICAgICB9 CisgICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgpLDgpL7gpKTgpY3g pLDgpYAnKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8g aG91ciA6IGhvdXIgKyAxMjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobWVy aWRpZW0gPT09ICfgpLjgpJXgpL7gpLPgpYAnKSB7CisgICAgICAgICAgICAg ICAgcmV0dXJuIGhvdXI7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlk aWVtID09PSAn4KSm4KWB4KSq4KS+4KSw4KWAJykgeworICAgICAgICAgICAg ICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjsKKyAg ICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpLjgpL7gpK/g pILgpJXgpL7gpLPgpYAnKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGhv dXIgKyAxMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg bWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHsK KyAgICAgICAgICAgIGlmIChob3VyIDwgNCkgeworICAgICAgICAgICAgICAg IHJldHVybiAn4KSw4KS+4KSk4KWN4KSw4KWAJzsKKyAgICAgICAgICAgIH0g ZWxzZSBpZiAoaG91ciA8IDEwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu ICfgpLjgpJXgpL7gpLPgpYAnOworICAgICAgICAgICAgfSBlbHNlIGlmICho b3VyIDwgMTcpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ+CkpuClgeCk quCkvuCksOClgCc7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAy MCkgeworICAgICAgICAgICAgICAgIHJldHVybiAn4KS44KS+4KSv4KSC4KSV 4KS+4KSz4KWAJzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICAgICAgcmV0dXJuICfgpLDgpL7gpKTgpY3gpLDgpYAnOworICAgICAgICAg ICAgfQorICAgICAgICB9LAorICAgICAgICB3ZWVrIDogeworICAgICAgICAg ICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhl IHdlZWsuCisgICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0 IGNvbnRhaW5zIEphbiAxc3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHll YXIuCisgICAgICAgIH0KKyAgICB9KTsKKworCisgICAgdmFyIG1zX215ID0g bW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgnbXMtbXknLCB7CisgICAg ICAgIG1vbnRocyA6ICdKYW51YXJpX0ZlYnJ1YXJpX01hY19BcHJpbF9NZWlf SnVuX0p1bGFpX09nb3NfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGlz ZW1iZXInLnNwbGl0KCdfJyksCisgICAgICAgIG1vbnRoc1Nob3J0IDogJ0ph bl9GZWJfTWFjX0Fwcl9NZWlfSnVuX0p1bF9PZ3NfU2VwX09rdF9Ob3ZfRGlz Jy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5cyA6ICdBaGFkX0lzbmlu X1NlbGFzYV9SYWJ1X0toYW1pc19KdW1hYXRfU2FidHUnLnNwbGl0KCdfJyks CisgICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnQWhkX0lzbl9TZWxfUmFiX0to YV9KdW1fU2FiJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c01pbiA6 ICdBaF9Jc19TbF9SYl9LbV9KbV9TYicuc3BsaXQoJ18nKSwKKyAgICAgICAg bG9uZ0RhdGVGb3JtYXQgOiB7CisgICAgICAgICAgICBMVCA6ICdISC5tbScs CisgICAgICAgICAgICBMVFMgOiAnSEgubW0uc3MnLAorICAgICAgICAgICAg TCA6ICdERC9NTS9ZWVlZJywKKyAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZ WVlZJywKKyAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBbcHVrdWxd IEhILm1tJywKKyAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZ WVkgW3B1a3VsXSBISC5tbScKKyAgICAgICAgfSwKKyAgICAgICAgbWVyaWRp ZW1QYXJzZTogL3BhZ2l8dGVuZ2FoYXJpfHBldGFuZ3xtYWxhbS8sCisgICAg ICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7 CisgICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHsKKyAgICAgICAgICAg ICAgICBob3VyID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm IChtZXJpZGllbSA9PT0gJ3BhZ2knKSB7CisgICAgICAgICAgICAgICAgcmV0 dXJuIGhvdXI7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09 PSAndGVuZ2FoYXJpJykgeworICAgICAgICAgICAgICAgIHJldHVybiBob3Vy ID49IDExID8gaG91ciA6IGhvdXIgKyAxMjsKKyAgICAgICAgICAgIH0gZWxz ZSBpZiAobWVyaWRpZW0gPT09ICdwZXRhbmcnIHx8IG1lcmlkaWVtID09PSAn bWFsYW0nKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjsK KyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgbWVyaWRpZW0g OiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHsKKyAgICAg ICAgICAgIGlmIChob3VycyA8IDExKSB7CisgICAgICAgICAgICAgICAgcmV0 dXJuICdwYWdpJzsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAx NSkgeworICAgICAgICAgICAgICAgIHJldHVybiAndGVuZ2FoYXJpJzsKKyAg ICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkgeworICAgICAgICAg ICAgICAgIHJldHVybiAncGV0YW5nJzsKKyAgICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgICAgcmV0dXJuICdtYWxhbSc7CisgICAgICAgICAg ICB9CisgICAgICAgIH0sCisgICAgICAgIGNhbGVuZGFyIDogeworICAgICAg ICAgICAgc2FtZURheSA6ICdbSGFyaSBpbmkgcHVrdWxdIExUJywKKyAgICAg ICAgICAgIG5leHREYXkgOiAnW0Vzb2sgcHVrdWxdIExUJywKKyAgICAgICAg ICAgIG5leHRXZWVrIDogJ2RkZGQgW3B1a3VsXSBMVCcsCisgICAgICAgICAg ICBsYXN0RGF5IDogJ1tLZWxtYXJpbiBwdWt1bF0gTFQnLAorICAgICAgICAg ICAgbGFzdFdlZWsgOiAnZGRkZCBbbGVwYXMgcHVrdWxdIExUJywKKyAgICAg ICAgICAgIHNhbWVFbHNlIDogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJl bGF0aXZlVGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICdkYWxhbSAl cycsCisgICAgICAgICAgICBwYXN0IDogJyVzIHlhbmcgbGVwYXMnLAorICAg ICAgICAgICAgcyA6ICdiZWJlcmFwYSBzYWF0JywKKyAgICAgICAgICAgIG0g OiAnc2VtaW5pdCcsCisgICAgICAgICAgICBtbSA6ICclZCBtaW5pdCcsCisg ICAgICAgICAgICBoIDogJ3NlamFtJywKKyAgICAgICAgICAgIGhoIDogJyVk IGphbScsCisgICAgICAgICAgICBkIDogJ3NlaGFyaScsCisgICAgICAgICAg ICBkZCA6ICclZCBoYXJpJywKKyAgICAgICAgICAgIE0gOiAnc2VidWxhbics CisgICAgICAgICAgICBNTSA6ICclZCBidWxhbicsCisgICAgICAgICAgICB5 IDogJ3NldGFodW4nLAorICAgICAgICAgICAgeXkgOiAnJWQgdGFodW4nCisg ICAgICAgIH0sCisgICAgICAgIHdlZWsgOiB7CisgICAgICAgICAgICBkb3cg OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4K KyAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFp bnMgSmFuIDFzdCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci4KKyAg ICAgICAgfQorICAgIH0pOworCisKKyAgICB2YXIgbG9jYWxlX21zID0gbW9t ZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgnbXMnLCB7CisgICAgICAgIG1v bnRocyA6ICdKYW51YXJpX0ZlYnJ1YXJpX01hY19BcHJpbF9NZWlfSnVuX0p1 bGFpX09nb3NfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGlzZW1iZXIn LnNwbGl0KCdfJyksCisgICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZWJf TWFjX0Fwcl9NZWlfSnVuX0p1bF9PZ3NfU2VwX09rdF9Ob3ZfRGlzJy5zcGxp dCgnXycpLAorICAgICAgICB3ZWVrZGF5cyA6ICdBaGFkX0lzbmluX1NlbGFz YV9SYWJ1X0toYW1pc19KdW1hYXRfU2FidHUnLnNwbGl0KCdfJyksCisgICAg ICAgIHdlZWtkYXlzU2hvcnQgOiAnQWhkX0lzbl9TZWxfUmFiX0toYV9KdW1f U2FiJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c01pbiA6ICdBaF9J c19TbF9SYl9LbV9KbV9TYicuc3BsaXQoJ18nKSwKKyAgICAgICAgbG9uZ0Rh dGVGb3JtYXQgOiB7CisgICAgICAgICAgICBMVCA6ICdISC5tbScsCisgICAg ICAgICAgICBMVFMgOiAnSEgubW0uc3MnLAorICAgICAgICAgICAgTCA6ICdE RC9NTS9ZWVlZJywKKyAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJywK KyAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1t JywKKyAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgW3B1 a3VsXSBISC5tbScKKyAgICAgICAgfSwKKyAgICAgICAgbWVyaWRpZW1QYXJz ZTogL3BhZ2l8dGVuZ2FoYXJpfHBldGFuZ3xtYWxhbS8sCisgICAgICAgIG1l cmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7CisgICAg ICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHsKKyAgICAgICAgICAgICAgICBo b3VyID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtZXJp ZGllbSA9PT0gJ3BhZ2knKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGhv dXI7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAndGVu Z2FoYXJpJykgeworICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEx ID8gaG91ciA6IGhvdXIgKyAxMjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo bWVyaWRpZW0gPT09ICdwZXRhbmcnIHx8IG1lcmlkaWVtID09PSAnbWFsYW0n KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgbWVyaWRpZW0gOiBmdW5j dGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHsKKyAgICAgICAgICAg IGlmIChob3VycyA8IDExKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICdw YWdpJzsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxNSkgewor ICAgICAgICAgICAgICAgIHJldHVybiAndGVuZ2FoYXJpJzsKKyAgICAgICAg ICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkgeworICAgICAgICAgICAgICAg IHJldHVybiAncGV0YW5nJzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICAgICAgcmV0dXJuICdtYWxhbSc7CisgICAgICAgICAgICB9Cisg ICAgICAgIH0sCisgICAgICAgIGNhbGVuZGFyIDogeworICAgICAgICAgICAg c2FtZURheSA6ICdbSGFyaSBpbmkgcHVrdWxdIExUJywKKyAgICAgICAgICAg IG5leHREYXkgOiAnW0Vzb2sgcHVrdWxdIExUJywKKyAgICAgICAgICAgIG5l eHRXZWVrIDogJ2RkZGQgW3B1a3VsXSBMVCcsCisgICAgICAgICAgICBsYXN0 RGF5IDogJ1tLZWxtYXJpbiBwdWt1bF0gTFQnLAorICAgICAgICAgICAgbGFz dFdlZWsgOiAnZGRkZCBbbGVwYXMgcHVrdWxdIExUJywKKyAgICAgICAgICAg IHNhbWVFbHNlIDogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZl VGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICdkYWxhbSAlcycsCisg ICAgICAgICAgICBwYXN0IDogJyVzIHlhbmcgbGVwYXMnLAorICAgICAgICAg ICAgcyA6ICdiZWJlcmFwYSBzYWF0JywKKyAgICAgICAgICAgIG0gOiAnc2Vt aW5pdCcsCisgICAgICAgICAgICBtbSA6ICclZCBtaW5pdCcsCisgICAgICAg ICAgICBoIDogJ3NlamFtJywKKyAgICAgICAgICAgIGhoIDogJyVkIGphbScs CisgICAgICAgICAgICBkIDogJ3NlaGFyaScsCisgICAgICAgICAgICBkZCA6 ICclZCBoYXJpJywKKyAgICAgICAgICAgIE0gOiAnc2VidWxhbicsCisgICAg ICAgICAgICBNTSA6ICclZCBidWxhbicsCisgICAgICAgICAgICB5IDogJ3Nl dGFodW4nLAorICAgICAgICAgICAgeXkgOiAnJWQgdGFodW4nCisgICAgICAg IH0sCisgICAgICAgIHdlZWsgOiB7CisgICAgICAgICAgICBkb3cgOiAxLCAv LyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KKyAgICAg ICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFu IDFzdCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci4KKyAgICAgICAg fQorICAgIH0pOworCisKKyAgICB2YXIgbXlfX3N5bWJvbE1hcCA9IHsKKyAg ICAgICAgJzEnOiAn4YGBJywKKyAgICAgICAgJzInOiAn4YGCJywKKyAgICAg ICAgJzMnOiAn4YGDJywKKyAgICAgICAgJzQnOiAn4YGEJywKKyAgICAgICAg JzUnOiAn4YGFJywKKyAgICAgICAgJzYnOiAn4YGGJywKKyAgICAgICAgJzcn OiAn4YGHJywKKyAgICAgICAgJzgnOiAn4YGIJywKKyAgICAgICAgJzknOiAn 4YGJJywKKyAgICAgICAgJzAnOiAn4YGAJworICAgIH0sIG15X19udW1iZXJN YXAgPSB7CisgICAgICAgICfhgYEnOiAnMScsCisgICAgICAgICfhgYInOiAn MicsCisgICAgICAgICfhgYMnOiAnMycsCisgICAgICAgICfhgYQnOiAnNCcs CisgICAgICAgICfhgYUnOiAnNScsCisgICAgICAgICfhgYYnOiAnNicsCisg ICAgICAgICfhgYcnOiAnNycsCisgICAgICAgICfhgYgnOiAnOCcsCisgICAg ICAgICfhgYknOiAnOScsCisgICAgICAgICfhgYAnOiAnMCcKKyAgICB9Owor CisgICAgdmFyIG15ID0gbW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgn bXknLCB7CisgICAgICAgIG1vbnRoczogJ+GAh+GAlOGAuuGAlOGAneGAq+GA m+GArl/hgJbhgLHhgJbhgLHhgKzhgLrhgJ3hgKvhgJvhgK5f4YCZ4YCQ4YC6 X+GAp+GAleGAvOGArl/hgJnhgLFf4YCH4YC94YCU4YC6X+GAh+GAsOGAnOGA reGAr+GAhOGAul/hgJ7hgLzhgILhgK/hgJDhgLpf4YCF4YCA4YC64YCQ4YCE 4YC64YCY4YCsX+GAoeGAseGArOGAgOGAuuGAkOGAreGAr+GAmOGArF/hgJTh gK3hgK/hgJ3hgIThgLrhgJjhgKxf4YCS4YCu4YCH4YCE4YC64YCY4YCsJy5z cGxpdCgnXycpLAorICAgICAgICBtb250aHNTaG9ydDogJ+GAh+GAlOGAul/h gJbhgLFf4YCZ4YCQ4YC6X+GAleGAvOGArl/hgJnhgLFf4YCH4YC94YCU4YC6 X+GAnOGAreGAr+GAhOGAul/hgJ7hgLxf4YCF4YCA4YC6X+GAoeGAseGArOGA gOGAul/hgJThgK3hgK9f4YCS4YCuJy5zcGxpdCgnXycpLAorICAgICAgICB3 ZWVrZGF5czogJ+GAkOGAlOGAhOGAuuGAueGAguGAlOGAveGAsV/hgJDhgJTh gIThgLrhgLnhgJzhgKxf4YCh4YCE4YC64YC54YCC4YCrX+GAl+GAr+GAkuGA ueGAk+GAn+GAsOGAuF/hgIDhgLzhgKzhgJ7hgJXhgJDhgLHhgLhf4YCe4YCx 4YCs4YCA4YC84YCsX+GAheGAlOGAsScuc3BsaXQoJ18nKSwKKyAgICAgICAg d2Vla2RheXNTaG9ydDogJ+GAlOGAveGAsV/hgJzhgKxf4YCC4YCrX+GAn+GA sOGAuF/hgIDhgLzhgKxf4YCe4YCx4YCsX+GAlOGAsScuc3BsaXQoJ18nKSwK KyAgICAgICAgd2Vla2RheXNNaW46ICfhgJThgL3hgLFf4YCc4YCsX+GAguGA q1/hgJ/hgLDhgLhf4YCA4YC84YCsX+GAnuGAseGArF/hgJThgLEnLnNwbGl0 KCdfJyksCisKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHsKKyAgICAgICAg ICAgIExUOiAnSEg6bW0nLAorICAgICAgICAgICAgTFRTOiAnSEg6bW06c3Mn LAorICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLAorICAgICAgICAgICAg TEw6ICdEIE1NTU0gWVlZWScsCisgICAgICAgICAgICBMTEw6ICdEIE1NTU0g WVlZWSBISDptbScsCisgICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0g WVlZWSBISDptbScKKyAgICAgICAgfSwKKyAgICAgICAgY2FsZW5kYXI6IHsK KyAgICAgICAgICAgIHNhbWVEYXk6ICdb4YCa4YCU4YCxLl0gTFQgW+GAmeGA vuGArF0nLAorICAgICAgICAgICAgbmV4dERheTogJ1vhgJnhgJThgIDhgLrh gJbhgLzhgJThgLpdIExUIFvhgJnhgL7hgKxdJywKKyAgICAgICAgICAgIG5l eHRXZWVrOiAnZGRkZCBMVCBb4YCZ4YC+4YCsXScsCisgICAgICAgICAgICBs YXN0RGF5OiAnW+GAmeGAlOGAsS7hgIBdIExUIFvhgJnhgL7hgKxdJywKKyAg ICAgICAgICAgIGxhc3RXZWVrOiAnW+GAleGAvOGAruGAuOGAgeGAsuGAt+GA nuGAseGArF0gZGRkZCBMVCBb4YCZ4YC+4YCsXScsCisgICAgICAgICAgICBz YW1lRWxzZTogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGlt ZTogeworICAgICAgICAgICAgZnV0dXJlOiAn4YCc4YCs4YCZ4YCK4YC64YC3 ICVzIOGAmeGAvuGArCcsCisgICAgICAgICAgICBwYXN0OiAn4YCc4YC94YCU 4YC64YCB4YCy4YC34YCe4YCx4YCsICVzIOGAgCcsCisgICAgICAgICAgICBz OiAn4YCF4YCA4YC54YCA4YCU4YC6LuGAoeGAlOGAiuGAuuGAuOGAhOGAmuGA uicsCisgICAgICAgICAgICBtOiAn4YCQ4YCF4YC64YCZ4YCt4YCU4YCF4YC6 JywKKyAgICAgICAgICAgIG1tOiAnJWQg4YCZ4YCt4YCU4YCF4YC6JywKKyAg ICAgICAgICAgIGg6ICfhgJDhgIXhgLrhgJThgKzhgJvhgK4nLAorICAgICAg ICAgICAgaGg6ICclZCDhgJThgKzhgJvhgK4nLAorICAgICAgICAgICAgZDog J+GAkOGAheGAuuGAm+GAgOGAuicsCisgICAgICAgICAgICBkZDogJyVkIOGA m+GAgOGAuicsCisgICAgICAgICAgICBNOiAn4YCQ4YCF4YC64YCcJywKKyAg ICAgICAgICAgIE1NOiAnJWQg4YCcJywKKyAgICAgICAgICAgIHk6ICfhgJDh gIXhgLrhgJThgL7hgIXhgLonLAorICAgICAgICAgICAgeXk6ICclZCDhgJTh gL7hgIXhgLonCisgICAgICAgIH0sCisgICAgICAgIHByZXBhcnNlOiBmdW5j dGlvbiAoc3RyaW5nKSB7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJl cGxhY2UoL1vhgYHhgYLhgYPhgYThgYXhgYbhgYfhgYjhgYnhgYBdL2csIGZ1 bmN0aW9uIChtYXRjaCkgeworICAgICAgICAgICAgICAgIHJldHVybiBteV9f bnVtYmVyTWFwW21hdGNoXTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9 LAorICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7Cisg ICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xkL2csIGZ1bmN0 aW9uIChtYXRjaCkgeworICAgICAgICAgICAgICAgIHJldHVybiBteV9fc3lt Ym9sTWFwW21hdGNoXTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LAor ICAgICAgICB3ZWVrOiB7CisgICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRh eSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorICAgICAgICAgICAg ZG95OiA0IC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDFzdCBpcyB0 aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci4KKyAgICAgICAgfQorICAgIH0p OworCisKKyAgICB2YXIgbmIgPSBtb21lbnRfX2RlZmF1bHQuZGVmaW5lTG9j YWxlKCduYicsIHsKKyAgICAgICAgbW9udGhzIDogJ2phbnVhcl9mZWJydWFy X21hcnNfYXByaWxfbWFpX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29r dG9iZXJfbm92ZW1iZXJfZGVzZW1iZXInLnNwbGl0KCdfJyksCisgICAgICAg IG1vbnRoc1Nob3J0IDogJ2phbi5fZmViLl9tYXJzX2FwcmlsX21haV9qdW5p X2p1bGlfYXVnLl9zZXAuX29rdC5fbm92Ll9kZXMuJy5zcGxpdCgnXycpLAor ICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSwKKyAgICAgICAgd2Vl a2RheXMgOiAnc8O4bmRhZ19tYW5kYWdfdGlyc2RhZ19vbnNkYWdfdG9yc2Rh Z19mcmVkYWdfbMO4cmRhZycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2Rh eXNTaG9ydCA6ICdzw7guX21hLl90aS5fb24uX3RvLl9mci5fbMO4Licuc3Bs aXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNNaW4gOiAnc8O4X21hX3RpX29u X3RvX2ZyX2zDuCcuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNQYXJz ZUV4YWN0IDogdHJ1ZSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7Cisg ICAgICAgICAgICBMVCA6ICdISDptbScsCisgICAgICAgICAgICBMVFMgOiAn SEg6bW06c3MnLAorICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJywKKyAg ICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsCisgICAgICAgICAgICBM TEwgOiAnRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tJywKKyAgICAgICAgICAg IExMTEwgOiAnZGRkZCBELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0nCisgICAg ICAgIH0sCisgICAgICAgIGNhbGVuZGFyIDogeworICAgICAgICAgICAgc2Ft ZURheTogJ1tpIGRhZyBrbC5dIExUJywKKyAgICAgICAgICAgIG5leHREYXk6 ICdbaSBtb3JnZW4ga2wuXSBMVCcsCisgICAgICAgICAgICBuZXh0V2Vlazog J2RkZGQgW2tsLl0gTFQnLAorICAgICAgICAgICAgbGFzdERheTogJ1tpIGfD pXIga2wuXSBMVCcsCisgICAgICAgICAgICBsYXN0V2VlazogJ1tmb3JyaWdl XSBkZGRkIFtrbC5dIExUJywKKyAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcK KyAgICAgICAgfSwKKyAgICAgICAgcmVsYXRpdmVUaW1lIDogeworICAgICAg ICAgICAgZnV0dXJlIDogJ29tICVzJywKKyAgICAgICAgICAgIHBhc3QgOiAn JXMgc2lkZW4nLAorICAgICAgICAgICAgcyA6ICdub2VuIHNla3VuZGVyJywK KyAgICAgICAgICAgIG0gOiAnZXR0IG1pbnV0dCcsCisgICAgICAgICAgICBt bSA6ICclZCBtaW51dHRlcicsCisgICAgICAgICAgICBoIDogJ2VuIHRpbWUn LAorICAgICAgICAgICAgaGggOiAnJWQgdGltZXInLAorICAgICAgICAgICAg ZCA6ICdlbiBkYWcnLAorICAgICAgICAgICAgZGQgOiAnJWQgZGFnZXInLAor ICAgICAgICAgICAgTSA6ICdlbiBtw6VuZWQnLAorICAgICAgICAgICAgTU0g OiAnJWQgbcOlbmVkZXInLAorICAgICAgICAgICAgeSA6ICdldHQgw6VyJywK KyAgICAgICAgICAgIHl5IDogJyVkIMOlcicKKyAgICAgICAgfSwKKyAgICAg ICAgb3JkaW5hbFBhcnNlOiAvXGR7MSwyfVwuLywKKyAgICAgICAgb3JkaW5h bCA6ICclZC4nLAorICAgICAgICB3ZWVrIDogeworICAgICAgICAgICAgZG93 IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsu CisgICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRh aW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuCisg ICAgICAgIH0KKyAgICB9KTsKKworCisgICAgdmFyIG5lX19zeW1ib2xNYXAg PSB7CisgICAgICAgICcxJzogJ+ClpycsCisgICAgICAgICcyJzogJ+ClqCcs CisgICAgICAgICczJzogJ+ClqScsCisgICAgICAgICc0JzogJ+ClqicsCisg ICAgICAgICc1JzogJ+ClqycsCisgICAgICAgICc2JzogJ+ClrCcsCisgICAg ICAgICc3JzogJ+ClrScsCisgICAgICAgICc4JzogJ+ClricsCisgICAgICAg ICc5JzogJ+ClrycsCisgICAgICAgICcwJzogJ+ClpicKKyAgICB9LAorICAg IG5lX19udW1iZXJNYXAgPSB7CisgICAgICAgICfgpacnOiAnMScsCisgICAg ICAgICfgpagnOiAnMicsCisgICAgICAgICfgpaknOiAnMycsCisgICAgICAg ICfgpaonOiAnNCcsCisgICAgICAgICfgpasnOiAnNScsCisgICAgICAgICfg pawnOiAnNicsCisgICAgICAgICfgpa0nOiAnNycsCisgICAgICAgICfgpa4n OiAnOCcsCisgICAgICAgICfgpa8nOiAnOScsCisgICAgICAgICfgpaYnOiAn MCcKKyAgICB9OworCisgICAgdmFyIG5lID0gbW9tZW50X19kZWZhdWx0LmRl ZmluZUxvY2FsZSgnbmUnLCB7CisgICAgICAgIG1vbnRocyA6ICfgpJzgpKjg pLXgpLDgpYBf4KSr4KWH4KSs4KWN4KSw4KWB4KS14KSw4KWAX+CkruCkvuCk sOCljeCkml/gpIXgpKrgpY3gpLDgpL/gpLJf4KSu4KSIX+CknOClgeCkqF/g pJzgpYHgpLLgpL7gpIhf4KSF4KSX4KS34KWN4KSfX+CkuOClh+CkquCljeCk n+Clh+CkruCljeCkrOCksF/gpIXgpJXgpY3gpJ/gpYvgpKzgpLBf4KSo4KWL 4KSt4KWH4KSu4KWN4KSs4KSwX+CkoeCkv+CkuOClh+CkruCljeCkrOCksCcu c3BsaXQoJ18nKSwKKyAgICAgICAgbW9udGhzU2hvcnQgOiAn4KSc4KSoLl/g pKvgpYfgpKzgpY3gpLDgpYEuX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3g pLDgpL8uX+CkruCkiF/gpJzgpYHgpKhf4KSc4KWB4KSy4KS+4KSILl/gpIXg pJcuX+CkuOClh+CkquCljeCkny5f4KSF4KSV4KWN4KSf4KWLLl/gpKjgpYvg pK3gpYcuX+CkoeCkv+CkuOClhy4nLnNwbGl0KCdfJyksCisgICAgICAgIG1v bnRoc1BhcnNlRXhhY3QgOiB0cnVlLAorICAgICAgICB3ZWVrZGF5cyA6ICfg pIbgpIfgpKTgpKzgpL7gpLBf4KS44KWL4KSu4KSs4KS+4KSwX+CkruCkmeCl jeCkl+CksuCkrOCkvuCksF/gpKzgpYHgpKfgpKzgpL7gpLBf4KSs4KS/4KS5 4KS/4KSs4KS+4KSwX+CktuClgeCkleCljeCksOCkrOCkvuCksF/gpLbgpKjg pL/gpKzgpL7gpLAnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzU2hv cnQgOiAn4KSG4KSH4KSkLl/gpLjgpYvgpK4uX+CkruCkmeCljeCkl+Cksi5f 4KSs4KWB4KSnLl/gpKzgpL/gpLngpL8uX+CktuClgeCkleCljeCksC5f4KS2 4KSo4KS/Licuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNNaW4gOiAn 4KSGLl/gpLjgpYsuX+CkruCkgi5f4KSs4KWBLl/gpKzgpL8uX+CktuClgS5f 4KS2Licuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0 IDogdHJ1ZSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7CisgICAgICAg ICAgICBMVCA6ICdB4KSV4KWLIGg6bW0g4KSs4KSc4KWHJywKKyAgICAgICAg ICAgIExUUyA6ICdB4KSV4KWLIGg6bW06c3Mg4KSs4KSc4KWHJywKKyAgICAg ICAgICAgIEwgOiAnREQvTU0vWVlZWScsCisgICAgICAgICAgICBMTCA6ICdE IE1NTU0gWVlZWScsCisgICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVks IEHgpJXgpYsgaDptbSDgpKzgpJzgpYcnLAorICAgICAgICAgICAgTExMTCA6 ICdkZGRkLCBEIE1NTU0gWVlZWSwgQeCkleCliyBoOm1tIOCkrOCknOClhycK KyAgICAgICAgfSwKKyAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJp bmcpIHsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Cl p+ClqOClqeClquClq+ClrOClreClruClr+Clpl0vZywgZnVuY3Rpb24gKG1h dGNoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5lX19udW1iZXJNYXBb bWF0Y2hdOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAg IHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHsKKyAgICAgICAgICAg IHJldHVybiBzdHJpbmcucmVwbGFjZSgvXGQvZywgZnVuY3Rpb24gKG1hdGNo KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5lX19zeW1ib2xNYXBbbWF0 Y2hdOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAgIG1l cmlkaWVtUGFyc2U6IC/gpLDgpL7gpKTgpL984KSs4KS/4KS54KS+4KSofOCk puCkv+CkieCkgeCkuOCli3zgpLjgpL7gpIHgpJ0vLAorICAgICAgICBtZXJp ZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHsKKyAgICAg ICAgICAgIGlmIChob3VyID09PSAxMikgeworICAgICAgICAgICAgICAgIGhv dXIgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1lcmlk aWVtID09PSAn4KSw4KS+4KSk4KS/JykgeworICAgICAgICAgICAgICAgIHJl dHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7CisgICAgICAgICAg ICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KSs4KS/4KS54KS+4KSoJykg eworICAgICAgICAgICAgICAgIHJldHVybiBob3VyOworICAgICAgICAgICAg fSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkpuCkv+CkieCkgeCkuOCliycp IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIg OiBob3VyICsgMTI7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVt ID09PSAn4KS44KS+4KSB4KSdJykgeworICAgICAgICAgICAgICAgIHJldHVy biBob3VyICsgMTI7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg ICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dl cikgeworICAgICAgICAgICAgaWYgKGhvdXIgPCAzKSB7CisgICAgICAgICAg ICAgICAgcmV0dXJuICfgpLDgpL7gpKTgpL8nOworICAgICAgICAgICAgfSBl bHNlIGlmIChob3VyIDwgMTIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g J+CkrOCkv+CkueCkvuCkqCc7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGhv dXIgPCAxNikgeworICAgICAgICAgICAgICAgIHJldHVybiAn4KSm4KS/4KSJ 4KSB4KS44KWLJzsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIw KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICfgpLjgpL7gpIHgpJ0nOwor ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g J+CksOCkvuCkpOCkvyc7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisg ICAgICAgIGNhbGVuZGFyIDogeworICAgICAgICAgICAgc2FtZURheSA6ICdb 4KSG4KScXSBMVCcsCisgICAgICAgICAgICBuZXh0RGF5IDogJ1vgpK3gpYvg pLLgpL9dIExUJywKKyAgICAgICAgICAgIG5leHRXZWVrIDogJ1vgpIbgpIng pIHgpKbgpYtdIGRkZGRbLF0gTFQnLAorICAgICAgICAgICAgbGFzdERheSA6 ICdb4KS54KS/4KSc4KWLXSBMVCcsCisgICAgICAgICAgICBsYXN0V2VlayA6 ICdb4KSX4KSP4KSV4KWLXSBkZGRkWyxdIExUJywKKyAgICAgICAgICAgIHNh bWVFbHNlIDogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGlt ZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICclc+CkruCkvicsCisgICAg ICAgICAgICBwYXN0IDogJyVzIOCkheCkl+CkvuCkoeCkvycsCisgICAgICAg ICAgICBzIDogJ+CkleClh+CkueClgCDgpJXgpY3gpLfgpKMnLAorICAgICAg ICAgICAgbSA6ICfgpI/gpJUg4KSu4KS/4KSo4KWH4KSfJywKKyAgICAgICAg ICAgIG1tIDogJyVkIOCkruCkv+CkqOClh+CknycsCisgICAgICAgICAgICBo IDogJ+Ckj+CklSDgpJjgpKPgpY3gpJ/gpL4nLAorICAgICAgICAgICAgaGgg OiAnJWQg4KSY4KSj4KWN4KSf4KS+JywKKyAgICAgICAgICAgIGQgOiAn4KSP 4KSVIOCkpuCkv+CkqCcsCisgICAgICAgICAgICBkZCA6ICclZCDgpKbgpL/g pKgnLAorICAgICAgICAgICAgTSA6ICfgpI/gpJUg4KSu4KS54KS/4KSo4KS+ JywKKyAgICAgICAgICAgIE1NIDogJyVkIOCkruCkueCkv+CkqOCkvicsCisg ICAgICAgICAgICB5IDogJ+Ckj+CklSDgpKzgpLDgpY3gpLcnLAorICAgICAg ICAgICAgeXkgOiAnJWQg4KSs4KSw4KWN4KS3JworICAgICAgICB9LAorICAg ICAgICB3ZWVrIDogeworICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5 IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCisgICAgICAgICAgICBk b3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxc3QgaXMg dGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuCisgICAgICAgIH0KKyAgICB9 KTsKKworCisgICAgdmFyIG5sX19tb250aHNTaG9ydFdpdGhEb3RzID0gJ2ph bi5fZmViLl9tcnQuX2Fwci5fbWVpX2p1bi5fanVsLl9hdWcuX3NlcC5fb2t0 Ll9ub3YuX2RlYy4nLnNwbGl0KCdfJyksCisgICAgICAgIG5sX19tb250aHNT aG9ydFdpdGhvdXREb3RzID0gJ2phbl9mZWJfbXJ0X2Fwcl9tZWlfanVuX2p1 bF9hdWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpOworCisgICAgdmFy IG5sX19tb250aHNQYXJzZSA9IFsvXmphbi9pLCAvXmZlYi9pLCAvXm1hYXJ0 fG1ydC4/JC9pLCAvXmFwci9pLCAvXm1laSQvaSwgL15qdW5baS5dPyQvaSwg L15qdWxbaS5dPyQvaSwgL15hdWcvaSwgL15zZXAvaSwgL15va3QvaSwgL15u b3YvaSwgL15kZWMvaV07CisgICAgdmFyIG5sX19tb250aHNSZWdleCA9IC9e KGphbnVhcml8ZmVicnVhcml8bWFhcnR8YXByaWx8bWVpfGFwcmlsfGp1W25s XWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1i ZXJ8amFuXC4/fGZlYlwuP3xtcnRcLj98YXByXC4/fGp1W25sXVwuP3xhdWdc Lj98c2VwXC4/fG9rdFwuP3xub3ZcLj98ZGVjXC4/KS9pOworCisgICAgdmFy IG5sID0gbW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgnbmwnLCB7Cisg ICAgICAgIG1vbnRocyA6ICdqYW51YXJpX2ZlYnJ1YXJpX21hYXJ0X2Fwcmls X21laV9qdW5pX2p1bGlfYXVndXN0dXNfc2VwdGVtYmVyX29rdG9iZXJfbm92 ZW1iZXJfZGVjZW1iZXInLnNwbGl0KCdfJyksCisgICAgICAgIG1vbnRoc1No b3J0IDogZnVuY3Rpb24gKG0sIGZvcm1hdCkgeworICAgICAgICAgICAgaWYg KC8tTU1NLS8udGVzdChmb3JtYXQpKSB7CisgICAgICAgICAgICAgICAgcmV0 dXJuIG5sX19tb250aHNTaG9ydFdpdGhvdXREb3RzW20ubW9udGgoKV07Cisg ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBu bF9fbW9udGhzU2hvcnRXaXRoRG90c1ttLm1vbnRoKCldOworICAgICAgICAg ICAgfQorICAgICAgICB9LAorCisgICAgICAgIG1vbnRoc1JlZ2V4OiBubF9f bW9udGhzUmVnZXgsCisgICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG5sX19t b250aHNSZWdleCwKKyAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6IC9eKGph bnVhcml8ZmVicnVhcml8bWFhcnR8bWVpfGp1W25sXWl8YXByaWx8YXVndXN0 dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXIpL2ksCisg ICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6IC9eKGphblwuP3xmZWJc Lj98bXJ0XC4/fGFwclwuP3xtZWl8anVbbmxdXC4/fGF1Z1wuP3xzZXBcLj98 b2t0XC4/fG5vdlwuP3xkZWNcLj8pL2ksCisKKyAgICAgICAgbW9udGhzUGFy c2UgOiBubF9fbW9udGhzUGFyc2UsCisgICAgICAgIGxvbmdNb250aHNQYXJz ZSA6IG5sX19tb250aHNQYXJzZSwKKyAgICAgICAgc2hvcnRNb250aHNQYXJz ZSA6IG5sX19tb250aHNQYXJzZSwKKworICAgICAgICB3ZWVrZGF5cyA6ICd6 b25kYWdfbWFhbmRhZ19kaW5zZGFnX3dvZW5zZGFnX2RvbmRlcmRhZ192cmlq ZGFnX3phdGVyZGFnJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c1No b3J0IDogJ3pvLl9tYS5fZGkuX3dvLl9kby5fdnIuX3phLicuc3BsaXQoJ18n KSwKKyAgICAgICAgd2Vla2RheXNNaW4gOiAnWm9fTWFfRGlfV29fRG9fVnJf WmEnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6 IHRydWUsCisgICAgICAgIGxvbmdEYXRlRm9ybWF0IDogeworICAgICAgICAg ICAgTFQgOiAnSEg6bW0nLAorICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNz JywKKyAgICAgICAgICAgIEwgOiAnREQtTU0tWVlZWScsCisgICAgICAgICAg ICBMTCA6ICdEIE1NTU0gWVlZWScsCisgICAgICAgICAgICBMTEwgOiAnRCBN TU1NIFlZWVkgSEg6bW0nLAorICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQg TU1NTSBZWVlZIEhIOm1tJworICAgICAgICB9LAorICAgICAgICBjYWxlbmRh ciA6IHsKKyAgICAgICAgICAgIHNhbWVEYXk6ICdbdmFuZGFhZyBvbV0gTFQn LAorICAgICAgICAgICAgbmV4dERheTogJ1ttb3JnZW4gb21dIExUJywKKyAg ICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbb21dIExUJywKKyAgICAgICAg ICAgIGxhc3REYXk6ICdbZ2lzdGVyZW4gb21dIExUJywKKyAgICAgICAgICAg IGxhc3RXZWVrOiAnW2FmZ2Vsb3Blbl0gZGRkZCBbb21dIExUJywKKyAgICAg ICAgICAgIHNhbWVFbHNlOiAnTCcKKyAgICAgICAgfSwKKyAgICAgICAgcmVs YXRpdmVUaW1lIDogeworICAgICAgICAgICAgZnV0dXJlIDogJ292ZXIgJXMn LAorICAgICAgICAgICAgcGFzdCA6ICclcyBnZWxlZGVuJywKKyAgICAgICAg ICAgIHMgOiAnZWVuIHBhYXIgc2Vjb25kZW4nLAorICAgICAgICAgICAgbSA6 ICfDqcOpbiBtaW51dXQnLAorICAgICAgICAgICAgbW0gOiAnJWQgbWludXRl bicsCisgICAgICAgICAgICBoIDogJ8Opw6luIHV1cicsCisgICAgICAgICAg ICBoaCA6ICclZCB1dXInLAorICAgICAgICAgICAgZCA6ICfDqcOpbiBkYWcn LAorICAgICAgICAgICAgZGQgOiAnJWQgZGFnZW4nLAorICAgICAgICAgICAg TSA6ICfDqcOpbiBtYWFuZCcsCisgICAgICAgICAgICBNTSA6ICclZCBtYWFu ZGVuJywKKyAgICAgICAgICAgIHkgOiAnw6nDqW4gamFhcicsCisgICAgICAg ICAgICB5eSA6ICclZCBqYWFyJworICAgICAgICB9LAorICAgICAgICBvcmRp bmFsUGFyc2U6IC9cZHsxLDJ9KHN0ZXxkZSkvLAorICAgICAgICBvcmRpbmFs IDogZnVuY3Rpb24gKG51bWJlcikgeworICAgICAgICAgICAgcmV0dXJuIG51 bWJlciArICgobnVtYmVyID09PSAxIHx8IG51bWJlciA9PT0gOCB8fCBudW1i ZXIgPj0gMjApID8gJ3N0ZScgOiAnZGUnKTsKKyAgICAgICAgfSwKKyAgICAg ICAgd2VlayA6IHsKKyAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBp cyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorICAgICAgICAgICAgZG95 IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRo ZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLgorICAgICAgICB9CisgICAgfSk7 CisKKworICAgIHZhciBubiA9IG1vbWVudF9fZGVmYXVsdC5kZWZpbmVMb2Nh bGUoJ25uJywgeworICAgICAgICBtb250aHMgOiAnamFudWFyX2ZlYnJ1YXJf bWFyc19hcHJpbF9tYWlfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0 b2Jlcl9ub3ZlbWJlcl9kZXNlbWJlcicuc3BsaXQoJ18nKSwKKyAgICAgICAg bW9udGhzU2hvcnQgOiAnamFuX2ZlYl9tYXJfYXByX21haV9qdW5fanVsX2F1 Z19zZXBfb2t0X25vdl9kZXMnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtk YXlzIDogJ3N1bmRhZ19tw6VuZGFnX3R5c2RhZ19vbnNkYWdfdG9yc2RhZ19m cmVkYWdfbGF1cmRhZycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNT aG9ydCA6ICdzdW5fbcOlbl90eXNfb25zX3Rvcl9mcmVfbGF1Jy5zcGxpdCgn XycpLAorICAgICAgICB3ZWVrZGF5c01pbiA6ICdzdV9tw6VfdHlfb25fdG9f ZnJfbMO4Jy5zcGxpdCgnXycpLAorICAgICAgICBsb25nRGF0ZUZvcm1hdCA6 IHsKKyAgICAgICAgICAgIExUIDogJ0hIOm1tJywKKyAgICAgICAgICAgIExU UyA6ICdISDptbTpzcycsCisgICAgICAgICAgICBMIDogJ0RELk1NLllZWVkn LAorICAgICAgICAgICAgTEwgOiAnRC4gTU1NTSBZWVlZJywKKyAgICAgICAg ICAgIExMTCA6ICdELiBNTU1NIFlZWVkgW2tsLl0gSDptbScsCisgICAgICAg ICAgICBMTExMIDogJ2RkZGQgRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tJwor ICAgICAgICB9LAorICAgICAgICBjYWxlbmRhciA6IHsKKyAgICAgICAgICAg IHNhbWVEYXk6ICdbSSBkYWcga2xva2thXSBMVCcsCisgICAgICAgICAgICBu ZXh0RGF5OiAnW0kgbW9yZ29uIGtsb2trYV0gTFQnLAorICAgICAgICAgICAg bmV4dFdlZWs6ICdkZGRkIFtrbG9ra2FdIExUJywKKyAgICAgICAgICAgIGxh c3REYXk6ICdbSSBnw6VyIGtsb2trYV0gTFQnLAorICAgICAgICAgICAgbGFz dFdlZWs6ICdbRsO4cmVnw6VhbmRlXSBkZGRkIFtrbG9ra2FdIExUJywKKyAg ICAgICAgICAgIHNhbWVFbHNlOiAnTCcKKyAgICAgICAgfSwKKyAgICAgICAg cmVsYXRpdmVUaW1lIDogeworICAgICAgICAgICAgZnV0dXJlIDogJ29tICVz JywKKyAgICAgICAgICAgIHBhc3QgOiAnJXMgc2lkYW4nLAorICAgICAgICAg ICAgcyA6ICdub2tyZSBzZWt1bmQnLAorICAgICAgICAgICAgbSA6ICdlaXQg bWludXR0JywKKyAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0dCcsCisgICAg ICAgICAgICBoIDogJ2VpbiB0aW1lJywKKyAgICAgICAgICAgIGhoIDogJyVk IHRpbWFyJywKKyAgICAgICAgICAgIGQgOiAnZWluIGRhZycsCisgICAgICAg ICAgICBkZCA6ICclZCBkYWdhcicsCisgICAgICAgICAgICBNIDogJ2VpbiBt w6VuYWQnLAorICAgICAgICAgICAgTU0gOiAnJWQgbcOlbmFkZXInLAorICAg ICAgICAgICAgeSA6ICdlaXQgw6VyJywKKyAgICAgICAgICAgIHl5IDogJyVk IMOlcicKKyAgICAgICAgfSwKKyAgICAgICAgb3JkaW5hbFBhcnNlOiAvXGR7 MSwyfVwuLywKKyAgICAgICAgb3JkaW5hbCA6ICclZC4nLAorICAgICAgICB3 ZWVrIDogeworICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRo ZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCisgICAgICAgICAgICBkb3kgOiA0 ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZp cnN0IHdlZWsgb2YgdGhlIHllYXIuCisgICAgICAgIH0KKyAgICB9KTsKKwor CisgICAgdmFyIHBhX2luX19zeW1ib2xNYXAgPSB7CisgICAgICAgICcxJzog J+CppycsCisgICAgICAgICcyJzogJ+CpqCcsCisgICAgICAgICczJzogJ+Cp qScsCisgICAgICAgICc0JzogJ+CpqicsCisgICAgICAgICc1JzogJ+Cpqycs CisgICAgICAgICc2JzogJ+CprCcsCisgICAgICAgICc3JzogJ+CprScsCisg ICAgICAgICc4JzogJ+CpricsCisgICAgICAgICc5JzogJ+CprycsCisgICAg ICAgICcwJzogJ+CppicKKyAgICB9LAorICAgIHBhX2luX19udW1iZXJNYXAg PSB7CisgICAgICAgICfgqacnOiAnMScsCisgICAgICAgICfgqagnOiAnMics CisgICAgICAgICfgqaknOiAnMycsCisgICAgICAgICfgqaonOiAnNCcsCisg ICAgICAgICfgqasnOiAnNScsCisgICAgICAgICfgqawnOiAnNicsCisgICAg ICAgICfgqa0nOiAnNycsCisgICAgICAgICfgqa4nOiAnOCcsCisgICAgICAg ICfgqa8nOiAnOScsCisgICAgICAgICfgqaYnOiAnMCcKKyAgICB9OworCisg ICAgdmFyIHBhX2luID0gbW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgn cGEtaW4nLCB7CisgICAgICAgIC8vIFRoZXJlIGFyZSBtb250aHMgbmFtZSBh cyBwZXIgTmFuYWtzaGFoaSBDYWxlbmRlciBidXQgdGhleSBhcmUgbm90IHVz ZWQgYXMgcmlnaWRseSBpbiBtb2Rlcm4gUHVuamFiaS4KKyAgICAgICAgbW9u dGhzIDogJ+ConOCoqOCoteCosOCpgF/gqKvgqLzgqLDgqLXgqLDgqYBf4Kiu 4Ki+4Kiw4KiaX+CoheCoquCpjeCosOCpiOCosl/gqK7gqIhf4Kic4KmC4Kio X+ConOCpgeCosuCovuCoiF/gqIXgqJfgqLjgqKRf4Ki44Kik4Kmw4Kis4Kiw X+CoheColeCopOCpguCorOCosF/gqKjgqLXgqbDgqKzgqLBf4Kim4Ki44Kmw 4Kis4KiwJy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNTaG9ydCA6ICfg qJzgqKjgqLXgqLDgqYBf4Kir4Ki84Kiw4Ki14Kiw4KmAX+CoruCovuCosOCo ml/gqIXgqKrgqY3gqLDgqYjgqLJf4Kiu4KiIX+ConOCpguCoqF/gqJzgqYHg qLLgqL7gqIhf4KiF4KiX4Ki44KikX+CouOCopOCpsOCorOCosF/gqIXgqJXg qKTgqYLgqKzgqLBf4Kio4Ki14Kmw4Kis4KiwX+CopuCouOCpsOCorOCosCcu c3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXMgOiAn4KiQ4Kik4Ki14Ki+ 4KiwX+CouOCpi+CoruCoteCovuCosF/gqK7gqbDgqJfgqLLgqLXgqL7gqLBf 4Kis4KmB4Kin4Ki14Ki+4KiwX+CoteCpgOCosOCoteCovuCosF/gqLjgqLzg qYHgqbHgqJXgqLDgqLXgqL7gqLBf4Ki44Ki84Kio4KmA4Kia4Kiw4Ki14Ki+ 4KiwJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+Co kOCopF/gqLjgqYvgqK5f4Kiu4Kmw4KiX4KiyX+CorOCpgeCop1/gqLXgqYDg qLBf4Ki44Ki84KmB4KiV4KiwX+CouOCovOCoqOCpgCcuc3BsaXQoJ18nKSwK KyAgICAgICAgd2Vla2RheXNNaW4gOiAn4KiQ4KikX+CouOCpi+Corl/gqK7g qbDgqJfgqLJf4Kis4KmB4KinX+CoteCpgOCosF/gqLjgqLzgqYHgqJXgqLBf 4Ki44Ki84Kio4KmAJy5zcGxpdCgnXycpLAorICAgICAgICBsb25nRGF0ZUZv cm1hdCA6IHsKKyAgICAgICAgICAgIExUIDogJ0EgaDptbSDgqLXgqJzgqYcn LAorICAgICAgICAgICAgTFRTIDogJ0EgaDptbTpzcyDgqLXgqJzgqYcnLAor ICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJywKKyAgICAgICAgICAgIExM IDogJ0QgTU1NTSBZWVlZJywKKyAgICAgICAgICAgIExMTCA6ICdEIE1NTU0g WVlZWSwgQSBoOm1tIOCoteConOCphycsCisgICAgICAgICAgICBMTExMIDog J2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4Ki14Kic4KmHJworICAgICAg ICB9LAorICAgICAgICBjYWxlbmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVE YXkgOiAnW+CoheConF0gTFQnLAorICAgICAgICAgICAgbmV4dERheSA6ICdb 4KiV4KiyXSBMVCcsCisgICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkLCBM VCcsCisgICAgICAgICAgICBsYXN0RGF5IDogJ1vgqJXgqLJdIExUJywKKyAg ICAgICAgICAgIGxhc3RXZWVrIDogJ1vgqKrgqL/gqJvgqLLgqYddIGRkZGQs IExUJywKKyAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnCisgICAgICAgIH0s CisgICAgICAgIHJlbGF0aXZlVGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVy ZSA6ICclcyDgqLXgqL/gqbHgqJonLAorICAgICAgICAgICAgcGFzdCA6ICcl cyDgqKrgqL/gqJvgqLLgqYcnLAorICAgICAgICAgICAgcyA6ICfgqJXgqYHg qJ0g4Ki44KiV4Ki/4Kmw4KifJywKKyAgICAgICAgICAgIG0gOiAn4KiH4KiV IOCoruCov+CpsOConycsCisgICAgICAgICAgICBtbSA6ICclZCDgqK7gqL/g qbDgqJ8nLAorICAgICAgICAgICAgaCA6ICfgqIfgqbHgqJUg4KiY4Kmw4Kif 4Ki+JywKKyAgICAgICAgICAgIGhoIDogJyVkIOComOCpsOCon+CphycsCisg ICAgICAgICAgICBkIDogJ+Coh+CpseColSDgqKbgqL/gqKgnLAorICAgICAg ICAgICAgZGQgOiAnJWQg4Kim4Ki/4KioJywKKyAgICAgICAgICAgIE0gOiAn 4KiH4Kmx4KiVIOCoruCoueCpgOCoqOCovicsCisgICAgICAgICAgICBNTSA6 ICclZCDgqK7gqLngqYDgqKjgqYcnLAorICAgICAgICAgICAgeSA6ICfgqIfg qbHgqJUg4Ki44Ki+4KiyJywKKyAgICAgICAgICAgIHl5IDogJyVkIOCouOCo vuCosicKKyAgICAgICAgfSwKKyAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9u IChzdHJpbmcpIHsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFj ZSgvW+Cpp+CpqOCpqeCpquCpq+CprOCpreCpruCpr+Cppl0vZywgZnVuY3Rp b24gKG1hdGNoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhX2luX19u dW1iZXJNYXBbbWF0Y2hdOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0s CisgICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHsKKyAg ICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXGQvZywgZnVuY3Rp b24gKG1hdGNoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhX2luX19z eW1ib2xNYXBbbWF0Y2hdOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0s CisgICAgICAgIC8vIFB1bmphYmkgbm90YXRpb24gZm9yIG1lcmlkaWVtcyBh cmUgcXVpdGUgZnV6enkgaW4gcHJhY3RpY2UuIFdoaWxlIHRoZXJlIGV4aXN0 cworICAgICAgICAvLyBhIHJpZ2lkIG5vdGlvbiBvZiBhICdQYWhhcicgaXQg aXMgbm90IHVzZWQgYXMgcmlnaWRseSBpbiBtb2Rlcm4gUHVuamFiaS4KKyAg ICAgICAgbWVyaWRpZW1QYXJzZTogL+CosOCovuCopHzgqLjgqLXgqYfgqLB8 4Kim4KmB4Kiq4Ki54Ki/4KiwfOCouOCovOCovuCori8sCisgICAgICAgIG1l cmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkgeworICAg ICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7CisgICAgICAgICAgICAgICAg aG91ciA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobWVy aWRpZW0gPT09ICfgqLDgqL7gqKQnKSB7CisgICAgICAgICAgICAgICAgcmV0 dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjsKKyAgICAgICAgICAg IH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgqLjgqLXgqYfgqLAnKSB7Cisg ICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7CisgICAgICAgICAgICB9IGVs c2UgaWYgKG1lcmlkaWVtID09PSAn4Kim4KmB4Kiq4Ki54Ki/4KiwJykgewor ICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhv dXIgKyAxMjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09 ICfgqLjgqLzgqL7gqK4nKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGhv dXIgKyAxMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg bWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7 CisgICAgICAgICAgICBpZiAoaG91ciA8IDQpIHsKKyAgICAgICAgICAgICAg ICByZXR1cm4gJ+CosOCovuCopCc7CisgICAgICAgICAgICB9IGVsc2UgaWYg KGhvdXIgPCAxMCkgeworICAgICAgICAgICAgICAgIHJldHVybiAn4Ki44Ki1 4KmH4KiwJzsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7 CisgICAgICAgICAgICAgICAgcmV0dXJuICfgqKbgqYHgqKrgqLngqL/gqLAn OworICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHsKKyAgICAg ICAgICAgICAgICByZXR1cm4gJ+CouOCovOCovuCoric7CisgICAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiAn4Kiw4Ki+4Kik JzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgd2VlayA6 IHsKKyAgICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmly c3QgZGF5IG9mIHRoZSB3ZWVrLgorICAgICAgICAgICAgZG95IDogNiAgLy8g VGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMXN0IGlzIHRoZSBmaXJzdCB3 ZWVrIG9mIHRoZSB5ZWFyLgorICAgICAgICB9CisgICAgfSk7CisKKworICAg IHZhciBtb250aHNOb21pbmF0aXZlID0gJ3N0eWN6ZcWEX2x1dHlfbWFyemVj X2t3aWVjaWXFhF9tYWpfY3plcndpZWNfbGlwaWVjX3NpZXJwaWXFhF93cnpl c2llxYRfcGHFumR6aWVybmlrX2xpc3RvcGFkX2dydWR6aWXFhCcuc3BsaXQo J18nKSwKKyAgICAgICAgbW9udGhzU3ViamVjdGl2ZSA9ICdzdHljem5pYV9s dXRlZ29fbWFyY2Ffa3dpZXRuaWFfbWFqYV9jemVyd2NhX2xpcGNhX3NpZXJw bmlhX3dyemXFm25pYV9wYcW6ZHppZXJuaWthX2xpc3RvcGFkYV9ncnVkbmlh Jy5zcGxpdCgnXycpOworICAgIGZ1bmN0aW9uIHBsX19wbHVyYWwobikgewor ICAgICAgICByZXR1cm4gKG4gJSAxMCA8IDUpICYmIChuICUgMTAgPiAxKSAm JiAoKH5+KG4gLyAxMCkgJSAxMCkgIT09IDEpOworICAgIH0KKyAgICBmdW5j dGlvbiBwbF9fdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5 KSB7CisgICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7CisgICAg ICAgIHN3aXRjaCAoa2V5KSB7CisgICAgICAgICAgICBjYXNlICdtJzoKKyAg ICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdtaW51dGEn IDogJ21pbnV0xJknOworICAgICAgICAgICAgY2FzZSAnbW0nOgorICAgICAg ICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGxfX3BsdXJhbChudW1iZXIp ID8gJ21pbnV0eScgOiAnbWludXQnKTsKKyAgICAgICAgICAgIGNhc2UgJ2gn OgorICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ICA/ICdn b2R6aW5hJyAgOiAnZ29kemluxJknOworICAgICAgICAgICAgY2FzZSAnaGgn OgorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGxfX3BsdXJh bChudW1iZXIpID8gJ2dvZHppbnknIDogJ2dvZHppbicpOworICAgICAgICAg ICAgY2FzZSAnTU0nOgorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQg KyAocGxfX3BsdXJhbChudW1iZXIpID8gJ21pZXNpxIVjZScgOiAnbWllc2nE mWN5Jyk7CisgICAgICAgICAgICBjYXNlICd5eSc6CisgICAgICAgICAgICAg ICAgcmV0dXJuIHJlc3VsdCArIChwbF9fcGx1cmFsKG51bWJlcikgPyAnbGF0 YScgOiAnbGF0Jyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgcGwg PSBtb21lbnRfX2RlZmF1bHQuZGVmaW5lTG9jYWxlKCdwbCcsIHsKKyAgICAg ICAgbW9udGhzIDogZnVuY3Rpb24gKG1vbWVudFRvRm9ybWF0LCBmb3JtYXQp IHsKKyAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICcnKSB7CisgICAgICAg ICAgICAgICAgLy8gSGFjazogaWYgZm9ybWF0IGVtcHR5IHdlIGtub3cgdGhp cyBpcyB1c2VkIHRvIGdlbmVyYXRlCisgICAgICAgICAgICAgICAgLy8gUmVn RXhwIGJ5IG1vbWVudC4gR2l2ZSB0aGVuIGJhY2sgYm90aCB2YWxpZCBmb3Jt cyBvZiBtb250aHMKKyAgICAgICAgICAgICAgICAvLyBpbiBSZWdFeHAgcmVh ZHkgZm9ybWF0LgorICAgICAgICAgICAgICAgIHJldHVybiAnKCcgKyBtb250 aHNTdWJqZWN0aXZlW21vbWVudFRvRm9ybWF0Lm1vbnRoKCldICsgJ3wnICsg bW9udGhzTm9taW5hdGl2ZVttb21lbnRUb0Zvcm1hdC5tb250aCgpXSArICcp JzsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoL0QgTU1NTS8udGVzdChmb3Jt YXQpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1N1YmplY3Rp dmVbbW9tZW50VG9Gb3JtYXQubW9udGgoKV07CisgICAgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNOb21pbmF0aXZl W21vbWVudFRvRm9ybWF0Lm1vbnRoKCldOworICAgICAgICAgICAgfQorICAg ICAgICB9LAorICAgICAgICBtb250aHNTaG9ydCA6ICdzdHlfbHV0X21hcl9r d2lfbWFqX2N6ZV9saXBfc2llX3dyel9wYcW6X2xpc19ncnUnLnNwbGl0KCdf JyksCisgICAgICAgIHdlZWtkYXlzIDogJ25pZWR6aWVsYV9wb25pZWR6aWHF gmVrX3d0b3Jla1/Fm3JvZGFfY3p3YXJ0ZWtfcGnEhXRla19zb2JvdGEnLnNw bGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnbmllX3Bvbl93 dF/Fm3JfY3p3X3B0X3NiJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5 c01pbiA6ICdOZF9Qbl9XdF/FmnJfQ3pfUHRfU28nLnNwbGl0KCdfJyksCisg ICAgICAgIGxvbmdEYXRlRm9ybWF0IDogeworICAgICAgICAgICAgTFQgOiAn SEg6bW0nLAorICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJywKKyAgICAg ICAgICAgIEwgOiAnREQuTU0uWVlZWScsCisgICAgICAgICAgICBMTCA6ICdE IE1NTU0gWVlZWScsCisgICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkg SEg6bW0nLAorICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZ WSBISDptbScKKyAgICAgICAgfSwKKyAgICAgICAgY2FsZW5kYXIgOiB7Cisg ICAgICAgICAgICBzYW1lRGF5OiAnW0R6acWbIG9dIExUJywKKyAgICAgICAg ICAgIG5leHREYXk6ICdbSnV0cm8gb10gTFQnLAorICAgICAgICAgICAgbmV4 dFdlZWs6ICdbV10gZGRkZCBbb10gTFQnLAorICAgICAgICAgICAgbGFzdERh eTogJ1tXY3pvcmFqIG9dIExUJywKKyAgICAgICAgICAgIGxhc3RXZWVrOiBm dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRh eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiAnW1cgemVzesWCxIUgbmllZHppZWzE mSBvXSBMVCc7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgemVzesWCxIUgxZtyb2TE mSBvXSBMVCc7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKKyAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgemVzesWCxIUgc29ib3TE mSBvXSBMVCc7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIHplc3rFgnldIGRkZGQg W29dIExUJzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAor ICAgICAgICAgICAgc2FtZUVsc2U6ICdMJworICAgICAgICB9LAorICAgICAg ICByZWxhdGl2ZVRpbWUgOiB7CisgICAgICAgICAgICBmdXR1cmUgOiAnemEg JXMnLAorICAgICAgICAgICAgcGFzdCA6ICclcyB0ZW11JywKKyAgICAgICAg ICAgIHMgOiAna2lsa2Egc2VrdW5kJywKKyAgICAgICAgICAgIG0gOiBwbF9f dHJhbnNsYXRlLAorICAgICAgICAgICAgbW0gOiBwbF9fdHJhbnNsYXRlLAor ICAgICAgICAgICAgaCA6IHBsX190cmFuc2xhdGUsCisgICAgICAgICAgICBo aCA6IHBsX190cmFuc2xhdGUsCisgICAgICAgICAgICBkIDogJzEgZHppZcWE JywKKyAgICAgICAgICAgIGRkIDogJyVkIGRuaScsCisgICAgICAgICAgICBN IDogJ21pZXNpxIVjJywKKyAgICAgICAgICAgIE1NIDogcGxfX3RyYW5zbGF0 ZSwKKyAgICAgICAgICAgIHkgOiAncm9rJywKKyAgICAgICAgICAgIHl5IDog cGxfX3RyYW5zbGF0ZQorICAgICAgICB9LAorICAgICAgICBvcmRpbmFsUGFy c2U6IC9cZHsxLDJ9XC4vLAorICAgICAgICBvcmRpbmFsIDogJyVkLicsCisg ICAgICAgIHdlZWsgOiB7CisgICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25k YXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KKyAgICAgICAgICAg IGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBp cyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci4KKyAgICAgICAgfQorICAg IH0pOworCisKKyAgICB2YXIgcHRfYnIgPSBtb21lbnRfX2RlZmF1bHQuZGVm aW5lTG9jYWxlKCdwdC1icicsIHsKKyAgICAgICAgbW9udGhzIDogJ0phbmVp cm9fRmV2ZXJlaXJvX01hcsOnb19BYnJpbF9NYWlvX0p1bmhvX0p1bGhvX0Fn b3N0b19TZXRlbWJyb19PdXR1YnJvX05vdmVtYnJvX0RlemVtYnJvJy5zcGxp dCgnXycpLAorICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmV2X01hcl9B YnJfTWFpX0p1bl9KdWxfQWdvX1NldF9PdXRfTm92X0Rleicuc3BsaXQoJ18n KSwKKyAgICAgICAgd2Vla2RheXMgOiAnRG9taW5nb19TZWd1bmRhLWZlaXJh X1RlcsOnYS1mZWlyYV9RdWFydGEtZmVpcmFfUXVpbnRhLWZlaXJhX1NleHRh LWZlaXJhX1PDoWJhZG8nLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlz U2hvcnQgOiAnRG9tX1NlZ19UZXJfUXVhX1F1aV9TZXhfU8OhYicuc3BsaXQo J18nKSwKKyAgICAgICAgd2Vla2RheXNNaW4gOiAnRG9tXzLCql8zwqpfNMKq XzXCql82wqpfU8OhYicuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNQ YXJzZUV4YWN0IDogdHJ1ZSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7 CisgICAgICAgICAgICBMVCA6ICdISDptbScsCisgICAgICAgICAgICBMVFMg OiAnSEg6bW06c3MnLAorICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJywK KyAgICAgICAgICAgIExMIDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsCisg ICAgICAgICAgICBMTEwgOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZIFvDoHNd IEhIOm1tJywKKyAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBbZGVdIE1N TU0gW2RlXSBZWVlZIFvDoHNdIEhIOm1tJworICAgICAgICB9LAorICAgICAg ICBjYWxlbmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVEYXk6ICdbSG9qZSDD oHNdIExUJywKKyAgICAgICAgICAgIG5leHREYXk6ICdbQW1hbmjDoyDDoHNd IExUJywKKyAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbw6BzXSBMVCcs CisgICAgICAgICAgICBsYXN0RGF5OiAnW09udGVtIMOgc10gTFQnLAorICAg ICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg ICAgICByZXR1cm4gKHRoaXMuZGF5KCkgPT09IDAgfHwgdGhpcy5kYXkoKSA9 PT0gNikgPworICAgICAgICAgICAgICAgICAgICAnW8OabHRpbW9dIGRkZGQg W8Ogc10gTFQnIDogLy8gU2F0dXJkYXkgKyBTdW5kYXkKKyAgICAgICAgICAg ICAgICAgICAgJ1vDmmx0aW1hXSBkZGRkIFvDoHNdIExUJzsgLy8gTW9uZGF5 IC0gRnJpZGF5CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgc2FtZUVs c2U6ICdMJworICAgICAgICB9LAorICAgICAgICByZWxhdGl2ZVRpbWUgOiB7 CisgICAgICAgICAgICBmdXR1cmUgOiAnZW0gJXMnLAorICAgICAgICAgICAg cGFzdCA6ICclcyBhdHLDoXMnLAorICAgICAgICAgICAgcyA6ICdwb3Vjb3Mg c2VndW5kb3MnLAorICAgICAgICAgICAgbSA6ICd1bSBtaW51dG8nLAorICAg ICAgICAgICAgbW0gOiAnJWQgbWludXRvcycsCisgICAgICAgICAgICBoIDog J3VtYSBob3JhJywKKyAgICAgICAgICAgIGhoIDogJyVkIGhvcmFzJywKKyAg ICAgICAgICAgIGQgOiAndW0gZGlhJywKKyAgICAgICAgICAgIGRkIDogJyVk IGRpYXMnLAorICAgICAgICAgICAgTSA6ICd1bSBtw6pzJywKKyAgICAgICAg ICAgIE1NIDogJyVkIG1lc2VzJywKKyAgICAgICAgICAgIHkgOiAndW0gYW5v JywKKyAgICAgICAgICAgIHl5IDogJyVkIGFub3MnCisgICAgICAgIH0sCisg ICAgICAgIG9yZGluYWxQYXJzZTogL1xkezEsMn3Cui8sCisgICAgICAgIG9y ZGluYWwgOiAnJWTCuicKKyAgICB9KTsKKworCisgICAgdmFyIHB0ID0gbW9t ZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgncHQnLCB7CisgICAgICAgIG1v bnRocyA6ICdKYW5laXJvX0ZldmVyZWlyb19NYXLDp29fQWJyaWxfTWFpb19K dW5ob19KdWxob19BZ29zdG9fU2V0ZW1icm9fT3V0dWJyb19Ob3ZlbWJyb19E ZXplbWJybycuc3BsaXQoJ18nKSwKKyAgICAgICAgbW9udGhzU2hvcnQgOiAn SmFuX0Zldl9NYXJfQWJyX01haV9KdW5fSnVsX0Fnb19TZXRfT3V0X05vdl9E ZXonLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzIDogJ0RvbWluZ29f U2VndW5kYS1GZWlyYV9UZXLDp2EtRmVpcmFfUXVhcnRhLUZlaXJhX1F1aW50 YS1GZWlyYV9TZXh0YS1GZWlyYV9Tw6FiYWRvJy5zcGxpdCgnXycpLAorICAg ICAgICB3ZWVrZGF5c1Nob3J0IDogJ0RvbV9TZWdfVGVyX1F1YV9RdWlfU2V4 X1PDoWInLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDogJ0Rv bV8ywqpfM8KqXzTCql81wqpfNsKqX1PDoWInLnNwbGl0KCdfJyksCisgICAg ICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsCisgICAgICAgIGxvbmdE YXRlRm9ybWF0IDogeworICAgICAgICAgICAgTFQgOiAnSEg6bW0nLAorICAg ICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJywKKyAgICAgICAgICAgIEwgOiAn REQvTU0vWVlZWScsCisgICAgICAgICAgICBMTCA6ICdEIFtkZV0gTU1NTSBb ZGVdIFlZWVknLAorICAgICAgICAgICAgTExMIDogJ0QgW2RlXSBNTU1NIFtk ZV0gWVlZWSBISDptbScsCisgICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQg W2RlXSBNTU1NIFtkZV0gWVlZWSBISDptbScKKyAgICAgICAgfSwKKyAgICAg ICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBzYW1lRGF5OiAnW0hvamUg w6BzXSBMVCcsCisgICAgICAgICAgICBuZXh0RGF5OiAnW0FtYW5ow6Mgw6Bz XSBMVCcsCisgICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8Ogc10gTFQn LAorICAgICAgICAgICAgbGFzdERheTogJ1tPbnRlbSDDoHNdIExUJywKKyAg ICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg ICAgICAgcmV0dXJuICh0aGlzLmRheSgpID09PSAwIHx8IHRoaXMuZGF5KCkg PT09IDYpID8KKyAgICAgICAgICAgICAgICAgICAgJ1vDmmx0aW1vXSBkZGRk IFvDoHNdIExUJyA6IC8vIFNhdHVyZGF5ICsgU3VuZGF5CisgICAgICAgICAg ICAgICAgICAgICdbw5psdGltYV0gZGRkZCBbw6BzXSBMVCc7IC8vIE1vbmRh eSAtIEZyaWRheQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNhbWVF bHNlOiAnTCcKKyAgICAgICAgfSwKKyAgICAgICAgcmVsYXRpdmVUaW1lIDog eworICAgICAgICAgICAgZnV0dXJlIDogJ2VtICVzJywKKyAgICAgICAgICAg IHBhc3QgOiAnaMOhICVzJywKKyAgICAgICAgICAgIHMgOiAnc2VndW5kb3Mn LAorICAgICAgICAgICAgbSA6ICd1bSBtaW51dG8nLAorICAgICAgICAgICAg bW0gOiAnJWQgbWludXRvcycsCisgICAgICAgICAgICBoIDogJ3VtYSBob3Jh JywKKyAgICAgICAgICAgIGhoIDogJyVkIGhvcmFzJywKKyAgICAgICAgICAg IGQgOiAndW0gZGlhJywKKyAgICAgICAgICAgIGRkIDogJyVkIGRpYXMnLAor ICAgICAgICAgICAgTSA6ICd1bSBtw6pzJywKKyAgICAgICAgICAgIE1NIDog JyVkIG1lc2VzJywKKyAgICAgICAgICAgIHkgOiAndW0gYW5vJywKKyAgICAg ICAgICAgIHl5IDogJyVkIGFub3MnCisgICAgICAgIH0sCisgICAgICAgIG9y ZGluYWxQYXJzZTogL1xkezEsMn3Cui8sCisgICAgICAgIG9yZGluYWwgOiAn JWTCuicsCisgICAgICAgIHdlZWsgOiB7CisgICAgICAgICAgICBkb3cgOiAx LCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KKyAg ICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMg SmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci4KKyAgICAg ICAgfQorICAgIH0pOworCisKKyAgICBmdW5jdGlvbiByb19fcmVsYXRpdmVU aW1lV2l0aFBsdXJhbChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkgewor ICAgICAgICB2YXIgZm9ybWF0ID0geworICAgICAgICAgICAgICAgICdtbSc6 ICdtaW51dGUnLAorICAgICAgICAgICAgICAgICdoaCc6ICdvcmUnLAorICAg ICAgICAgICAgICAgICdkZCc6ICd6aWxlJywKKyAgICAgICAgICAgICAgICAn TU0nOiAnbHVuaScsCisgICAgICAgICAgICAgICAgJ3l5JzogJ2FuaScKKyAg ICAgICAgICAgIH0sCisgICAgICAgICAgICBzZXBhcmF0b3IgPSAnICc7Cisg ICAgICAgIGlmIChudW1iZXIgJSAxMDAgPj0gMjAgfHwgKG51bWJlciA+PSAx MDAgJiYgbnVtYmVyICUgMTAwID09PSAwKSkgeworICAgICAgICAgICAgc2Vw YXJhdG9yID0gJyBkZSAnOworICAgICAgICB9CisgICAgICAgIHJldHVybiBu dW1iZXIgKyBzZXBhcmF0b3IgKyBmb3JtYXRba2V5XTsKKyAgICB9CisKKyAg ICB2YXIgcm8gPSBtb21lbnRfX2RlZmF1bHQuZGVmaW5lTG9jYWxlKCdybycs IHsKKyAgICAgICAgbW9udGhzIDogJ2lhbnVhcmllX2ZlYnJ1YXJpZV9tYXJ0 aWVfYXByaWxpZV9tYWlfaXVuaWVfaXVsaWVfYXVndXN0X3NlcHRlbWJyaWVf b2N0b21icmllX25vaWVtYnJpZV9kZWNlbWJyaWUnLnNwbGl0KCdfJyksCisg ICAgICAgIG1vbnRoc1Nob3J0IDogJ2lhbi5fZmVici5fbWFydC5fYXByLl9t YWlfaXVuLl9pdWwuX2F1Zy5fc2VwdC5fb2N0Ll9ub3YuX2RlYy4nLnNwbGl0 KCdfJyksCisgICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsCisgICAg ICAgIHdlZWtkYXlzIDogJ2R1bWluaWPEg19sdW5pX21hcsibaV9taWVyY3Vy aV9qb2lfdmluZXJpX3PDom1ixIN0xIMnLnNwbGl0KCdfJyksCisgICAgICAg IHdlZWtkYXlzU2hvcnQgOiAnRHVtX0x1bl9NYXJfTWllX0pvaV9WaW5fU8Oi bScuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNNaW4gOiAnRHVfTHVf TWFfTWlfSm9fVmlfU8OiJy5zcGxpdCgnXycpLAorICAgICAgICBsb25nRGF0 ZUZvcm1hdCA6IHsKKyAgICAgICAgICAgIExUIDogJ0g6bW0nLAorICAgICAg ICAgICAgTFRTIDogJ0g6bW06c3MnLAorICAgICAgICAgICAgTCA6ICdERC5N TS5ZWVlZJywKKyAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJywKKyAg ICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBIOm1tJywKKyAgICAgICAg ICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSDptbScKKyAgICAgICAg fSwKKyAgICAgICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBzYW1lRGF5 OiAnW2F6aSBsYV0gTFQnLAorICAgICAgICAgICAgbmV4dERheTogJ1ttw6Jp bmUgbGFdIExUJywKKyAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbbGFd IExUJywKKyAgICAgICAgICAgIGxhc3REYXk6ICdbaWVyaSBsYV0gTFQnLAor ICAgICAgICAgICAgbGFzdFdlZWs6ICdbZm9zdGFdIGRkZGQgW2xhXSBMVCcs CisgICAgICAgICAgICBzYW1lRWxzZTogJ0wnCisgICAgICAgIH0sCisgICAg ICAgIHJlbGF0aXZlVGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICdw ZXN0ZSAlcycsCisgICAgICAgICAgICBwYXN0IDogJyVzIMOubiB1cm3Egycs CisgICAgICAgICAgICBzIDogJ2PDonRldmEgc2VjdW5kZScsCisgICAgICAg ICAgICBtIDogJ3VuIG1pbnV0JywKKyAgICAgICAgICAgIG1tIDogcm9fX3Jl bGF0aXZlVGltZVdpdGhQbHVyYWwsCisgICAgICAgICAgICBoIDogJ28gb3LE gycsCisgICAgICAgICAgICBoaCA6IHJvX19yZWxhdGl2ZVRpbWVXaXRoUGx1 cmFsLAorICAgICAgICAgICAgZCA6ICdvIHppJywKKyAgICAgICAgICAgIGRk IDogcm9fX3JlbGF0aXZlVGltZVdpdGhQbHVyYWwsCisgICAgICAgICAgICBN IDogJ28gbHVuxIMnLAorICAgICAgICAgICAgTU0gOiByb19fcmVsYXRpdmVU aW1lV2l0aFBsdXJhbCwKKyAgICAgICAgICAgIHkgOiAndW4gYW4nLAorICAg ICAgICAgICAgeXkgOiByb19fcmVsYXRpdmVUaW1lV2l0aFBsdXJhbAorICAg ICAgICB9LAorICAgICAgICB3ZWVrIDogeworICAgICAgICAgICAgZG93IDog MSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCisg ICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5z IEphbiAxc3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuCisgICAg ICAgIH0KKyAgICB9KTsKKworCisgICAgZnVuY3Rpb24gcnVfX3BsdXJhbCh3 b3JkLCBudW0pIHsKKyAgICAgICAgdmFyIGZvcm1zID0gd29yZC5zcGxpdCgn XycpOworICAgICAgICByZXR1cm4gbnVtICUgMTAgPT09IDEgJiYgbnVtICUg MTAwICE9PSAxMSA/IGZvcm1zWzBdIDogKG51bSAlIDEwID49IDIgJiYgbnVt ICUgMTAgPD0gNCAmJiAobnVtICUgMTAwIDwgMTAgfHwgbnVtICUgMTAwID49 IDIwKSA/IGZvcm1zWzFdIDogZm9ybXNbMl0pOworICAgIH0KKyAgICBmdW5j dGlvbiBydV9fcmVsYXRpdmVUaW1lV2l0aFBsdXJhbChudW1iZXIsIHdpdGhv dXRTdWZmaXgsIGtleSkgeworICAgICAgICB2YXIgZm9ybWF0ID0geworICAg ICAgICAgICAgJ21tJzogd2l0aG91dFN1ZmZpeCA/ICfQvNC40L3Rg9GC0LBf 0LzQuNC90YPRgtGLX9C80LjQvdGD0YInIDogJ9C80LjQvdGD0YLRg1/QvNC4 0L3Rg9GC0Ytf0LzQuNC90YPRgicsCisgICAgICAgICAgICAnaGgnOiAn0YfQ sNGBX9GH0LDRgdCwX9GH0LDRgdC+0LInLAorICAgICAgICAgICAgJ2RkJzog J9C00LXQvdGMX9C00L3Rj1/QtNC90LXQuScsCisgICAgICAgICAgICAnTU0n OiAn0LzQtdGB0Y/Rhl/QvNC10YHRj9GG0LBf0LzQtdGB0Y/RhtC10LInLAor ICAgICAgICAgICAgJ3l5JzogJ9Cz0L7QtF/Qs9C+0LTQsF/Qu9C10YInCisg ICAgICAgIH07CisgICAgICAgIGlmIChrZXkgPT09ICdtJykgeworICAgICAg ICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0LzQuNC90YPRgtCwJyA6 ICfQvNC40L3Rg9GC0YMnOworICAgICAgICB9CisgICAgICAgIGVsc2Ugewor ICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHJ1X19wbHVyYWwo Zm9ybWF0W2tleV0sICtudW1iZXIpOworICAgICAgICB9CisgICAgfQorICAg IHZhciBydV9fbW9udGhzUGFyc2UgPSBbL17Rj9C90LIvaSwgL17RhNC10LIv aSwgL17QvNCw0YAvaSwgL17QsNC/0YAvaSwgL17QvNCwW9C50Y9dL2ksIC9e 0LjRjtC9L2ksIC9e0LjRjtC7L2ksIC9e0LDQstCzL2ksIC9e0YHQtdC9L2ks IC9e0L7QutGCL2ksIC9e0L3QvtGPL2ksIC9e0LTQtdC6L2ldOworCisgICAg Ly8gaHR0cDovL25ldy5ncmFtb3RhLnJ1L3NwcmF2a2EvcnVsZXMvMTM5LXBy b3AgOiDCpyAxMDMKKyAgICAvLyDQodC+0LrRgNCw0YnQtdC90LjRjyDQvNC1 0YHRj9GG0LXQsjogaHR0cDovL25ldy5ncmFtb3RhLnJ1L3NwcmF2a2EvYnVy by9zZWFyY2gtYW5zd2VyP3M9MjQyNjM3CisgICAgLy8gQ0xEUiBkYXRhOiAg ICAgICAgICBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NsZHIvY2hhcnRzLzI4 L3N1bW1hcnkvcnUuaHRtbCMxNzUzCisgICAgdmFyIHJ1ID0gbW9tZW50X19k ZWZhdWx0LmRlZmluZUxvY2FsZSgncnUnLCB7CisgICAgICAgIG1vbnRocyA6 IHsKKyAgICAgICAgICAgIGZvcm1hdDogJ9GP0L3QstCw0YDRj1/RhNC10LLR gNCw0LvRj1/QvNCw0YDRgtCwX9Cw0L/RgNC10LvRj1/QvNCw0Y9f0LjRjtC9 0Y9f0LjRjtC70Y9f0LDQstCz0YPRgdGC0LBf0YHQtdC90YLRj9Cx0YDRj1/Q vtC60YLRj9Cx0YDRj1/QvdC+0Y/QsdGA0Y9f0LTQtdC60LDQsdGA0Y8nLnNw bGl0KCdfJyksCisgICAgICAgICAgICBzdGFuZGFsb25lOiAn0Y/QvdCy0LDR gNGMX9GE0LXQstGA0LDQu9GMX9C80LDRgNGCX9Cw0L/RgNC10LvRjF/QvNCw 0Llf0LjRjtC90Yxf0LjRjtC70Yxf0LDQstCz0YPRgdGCX9GB0LXQvdGC0Y/Q sdGA0Yxf0L7QutGC0Y/QsdGA0Yxf0L3QvtGP0LHRgNGMX9C00LXQutCw0LHR gNGMJy5zcGxpdCgnXycpCisgICAgICAgIH0sCisgICAgICAgIG1vbnRoc1No b3J0IDogeworICAgICAgICAgICAgLy8g0L/QviBDTERSINC40LzQtdC90L3Q viAi0LjRjtC7LiIg0LggItC40Y7QvS4iLCDQvdC+INC60LDQutC+0Lkg0YHQ vNGL0YHQuyDQvNC10L3Rj9GC0Ywg0LHRg9C60LLRgyDQvdCwINGC0L7Rh9C6 0YMgPworICAgICAgICAgICAgZm9ybWF0OiAn0Y/QvdCyLl/RhNC10LLRgC5f 0LzQsNGALl/QsNC/0YAuX9C80LDRj1/QuNGO0L3Rj1/QuNGO0LvRj1/QsNCy 0LMuX9GB0LXQvdGCLl/QvtC60YIuX9C90L7Rj9CxLl/QtNC10LouJy5zcGxp dCgnXycpLAorICAgICAgICAgICAgc3RhbmRhbG9uZTogJ9GP0L3Qsi5f0YTQ tdCy0YAuX9C80LDRgNGCX9Cw0L/RgC5f0LzQsNC5X9C40Y7QvdGMX9C40Y7Q u9GMX9Cw0LLQsy5f0YHQtdC90YIuX9C+0LrRgi5f0L3QvtGP0LEuX9C00LXQ ui4nLnNwbGl0KCdfJykKKyAgICAgICAgfSwKKyAgICAgICAgd2Vla2RheXMg OiB7CisgICAgICAgICAgICBzdGFuZGFsb25lOiAn0LLQvtGB0LrRgNC10YHQ tdC90YzQtV/Qv9C+0L3QtdC00LXQu9GM0L3QuNC6X9Cy0YLQvtGA0L3QuNC6 X9GB0YDQtdC00LBf0YfQtdGC0LLQtdGA0LNf0L/Rj9GC0L3QuNGG0LBf0YHR g9Cx0LHQvtGC0LAnLnNwbGl0KCdfJyksCisgICAgICAgICAgICBmb3JtYXQ6 ICfQstC+0YHQutGA0LXRgdC10L3RjNC1X9C/0L7QvdC10LTQtdC70YzQvdC4 0Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNC10LTRg1/Rh9C10YLQstC10YDQs1/Q v9GP0YLQvdC40YbRg1/RgdGD0LHQsdC+0YLRgycuc3BsaXQoJ18nKSwKKyAg ICAgICAgICAgIGlzRm9ybWF0OiAvXFsgP1vQktCyXSA/KD860L/RgNC+0YjQ u9GD0Y580YHQu9C10LTRg9GO0YnRg9GOfNGN0YLRgyk/ID9cXSA/ZGRkZC8K KyAgICAgICAgfSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfQstGBX9C/ 0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLAorICAg ICAgICB3ZWVrZGF5c01pbiA6ICfQstGBX9C/0L1f0LLRgl/RgdGAX9GH0YJf 0L/Rgl/RgdCxJy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNQYXJzZSA6 IHJ1X19tb250aHNQYXJzZSwKKyAgICAgICAgbG9uZ01vbnRoc1BhcnNlIDog cnVfX21vbnRoc1BhcnNlLAorICAgICAgICBzaG9ydE1vbnRoc1BhcnNlIDog cnVfX21vbnRoc1BhcnNlLAorCisgICAgICAgIC8vINC/0L7Qu9C90YvQtSDQ vdCw0LfQstCw0L3QuNGPINGBINC/0LDQtNC10LbQsNC80LgsINC/0L4g0YLR gNC4INCx0YPQutCy0YssINC00LvRjyDQvdC10LrQvtGC0L7RgNGL0YUsINC/ 0L4gNCDQsdGD0LrQstGLLCDRgdC+0LrRgNCw0YnQtdC90LjRjyDRgSDRgtC+ 0YfQutC+0Lkg0Lgg0LHQtdC3INGC0L7Rh9C60LgKKyAgICAgICAgbW9udGhz UmVnZXg6IC9eKNGP0L3QstCw0YBb0YzRj1180Y/QvdCyXC4/fNGE0LXQstGA 0LDQu1vRjNGPXXzRhNC10LLRgD9cLj980LzQsNGA0YLQsD980LzQsNGAXC4/ fNCw0L/RgNC10Ltb0YzRj1180LDQv9GAXC4/fNC80LBb0LnRj1180LjRjtC9 W9GM0Y9dfNC40Y7QvVwuP3zQuNGO0Ltb0YzRj1180LjRjtC7XC4/fNCw0LLQ s9GD0YHRgtCwP3zQsNCy0LNcLj980YHQtdC90YLRj9Cx0YBb0YzRj1180YHQ tdC90YI/XC4/fNC+0LrRgtGP0LHRgFvRjNGPXXzQvtC60YJcLj980L3QvtGP 0LHRgFvRjNGPXXzQvdC+0Y/QsT9cLj980LTQtdC60LDQsdGAW9GM0Y9dfNC0 0LXQulwuPykvaSwKKworICAgICAgICAvLyDQutC+0L/QuNGPINC/0YDQtdC0 0YvQtNGD0YnQtdCz0L4KKyAgICAgICAgbW9udGhzU2hvcnRSZWdleDogL14o 0Y/QvdCy0LDRgFvRjNGPXXzRj9C90LJcLj980YTQtdCy0YDQsNC7W9GM0Y9d fNGE0LXQstGAP1wuP3zQvNCw0YDRgtCwP3zQvNCw0YBcLj980LDQv9GA0LXQ u1vRjNGPXXzQsNC/0YBcLj980LzQsFvQudGPXXzQuNGO0L1b0YzRj1180LjR jtC9XC4/fNC40Y7Qu1vRjNGPXXzQuNGO0LtcLj980LDQstCz0YPRgdGC0LA/ fNCw0LLQs1wuP3zRgdC10L3RgtGP0LHRgFvRjNGPXXzRgdC10L3Rgj9cLj98 0L7QutGC0Y/QsdGAW9GM0Y9dfNC+0LrRglwuP3zQvdC+0Y/QsdGAW9GM0Y9d fNC90L7Rj9CxP1wuP3zQtNC10LrQsNCx0YBb0YzRj1180LTQtdC6XC4/KS9p LAorCisgICAgICAgIC8vINC/0L7Qu9C90YvQtSDQvdCw0LfQstCw0L3QuNGP INGBINC/0LDQtNC10LbQsNC80LgKKyAgICAgICAgbW9udGhzU3RyaWN0UmVn ZXg6IC9eKNGP0L3QstCw0YBb0Y/RjF180YTQtdCy0YDQsNC7W9GP0YxdfNC8 0LDRgNGC0LA/fNCw0L/RgNC10Ltb0Y/RjF180LzQsFvRj9C5XXzQuNGO0L1b 0Y/RjF180LjRjtC7W9GP0YxdfNCw0LLQs9GD0YHRgtCwP3zRgdC10L3RgtGP 0LHRgFvRj9GMXXzQvtC60YLRj9Cx0YBb0Y/RjF180L3QvtGP0LHRgFvRj9GM XXzQtNC10LrQsNCx0YBb0Y/RjF0pL2ksCisKKyAgICAgICAgLy8g0JLRi9GA 0LDQttC10L3QuNC1LCDQutC+0YLQvtGA0L7QtSDRgdC+0L7RgtCy0LXRgdGC 0LLRg9C10YIg0YLQvtC70YzQutC+INGB0L7QutGA0LDRidGR0L3QvdGL0Lwg 0YTQvtGA0LzQsNC8CisgICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6 IC9eKNGP0L3QslwufNGE0LXQstGAP1wufNC80LDRgFvRgi5dfNCw0L/RgFwu fNC80LBb0Y/QuV180LjRjtC9W9GM0Y8uXXzQuNGO0Ltb0YzRjy5dfNCw0LLQ s1wufNGB0LXQvdGCP1wufNC+0LrRglwufNC90L7Rj9CxP1wufNC00LXQulwu KS9pLAorICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHsKKyAgICAgICAgICAg IExUIDogJ0hIOm1tJywKKyAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycs CisgICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLAorICAgICAgICAgICAg TEwgOiAnRCBNTU1NIFlZWVkg0LMuJywKKyAgICAgICAgICAgIExMTCA6ICdE IE1NTU0gWVlZWSDQsy4sIEhIOm1tJywKKyAgICAgICAgICAgIExMTEwgOiAn ZGRkZCwgRCBNTU1NIFlZWVkg0LMuLCBISDptbScKKyAgICAgICAgfSwKKyAg ICAgICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBzYW1lRGF5OiAnW9Ch 0LXQs9C+0LTQvdGPINCyXSBMVCcsCisgICAgICAgICAgICBuZXh0RGF5OiAn W9CX0LDQstGC0YDQsCDQsl0gTFQnLAorICAgICAgICAgICAgbGFzdERheTog J1vQktGH0LXRgNCwINCyXSBMVCcsCisgICAgICAgICAgICBuZXh0V2Vlazog ZnVuY3Rpb24gKG5vdykgeworICAgICAgICAgICAgICAgIGlmIChub3cud2Vl aygpICE9PSB0aGlzLndlZWsoKSkgeworICAgICAgICAgICAgICAgICAgICBz d2l0Y2ggKHRoaXMuZGF5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg IGNhc2UgMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g J1vQkiDRgdC70LXQtNGD0Y7RidC10LVdIGRkZGQgW9CyXSBMVCc7CisgICAg ICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAg ICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNl IDQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg 0YHQu9C10LTRg9GO0YnQuNC5XSBkZGRkIFvQsl0gTFQnOworICAgICAgICAg ICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAg ICAgY2FzZSA1OgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2Ogor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINGB0LvQ tdC00YPRjtGJ0YPRjl0gZGRkZCBb0LJdIExUJzsKKyAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICAgICAgICAgIGlmICh0aGlzLmRheSgpID09PSAyKSB7CisgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gJ1vQktC+XSBkZGRkIFvQsl0gTFQnOwor ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuICdb0JJdIGRkZGQgW9CyXSBMVCc7CisgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICB9LAorICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uIChub3cpIHsK KyAgICAgICAgICAgICAgICBpZiAobm93LndlZWsoKSAhPT0gdGhpcy53ZWVr KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgp KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0L/RgNC+0YjQu9C+ 0LVdIGRkZGQgW9CyXSBMVCc7CisgICAgICAgICAgICAgICAgICAgICAgICBj YXNlIDE6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAg ICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuICdb0JIg0L/RgNC+0YjQu9GL0LldIGRkZGQg W9CyXSBMVCc7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6Cisg ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CisgICAgICAgICAgICAg ICAgICAgICAgICBjYXNlIDY6CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuICdb0JIg0L/RgNC+0YjQu9GD0Y5dIGRkZGQgW9CyXSBMVCc7 CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXkoKSA9PT0g MikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JLQvl0g ZGRkZCBb0LJdIExUJzsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSXSBkZGRkIFvQ sl0gTFQnOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNhbWVFbHNlOiAn TCcKKyAgICAgICAgfSwKKyAgICAgICAgcmVsYXRpdmVUaW1lIDogeworICAg ICAgICAgICAgZnV0dXJlIDogJ9GH0LXRgNC10LcgJXMnLAorICAgICAgICAg ICAgcGFzdCA6ICclcyDQvdCw0LfQsNC0JywKKyAgICAgICAgICAgIHMgOiAn 0L3QtdGB0LrQvtC70YzQutC+INGB0LXQutGD0L3QtCcsCisgICAgICAgICAg ICBtIDogcnVfX3JlbGF0aXZlVGltZVdpdGhQbHVyYWwsCisgICAgICAgICAg ICBtbSA6IHJ1X19yZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLAorICAgICAgICAg ICAgaCA6ICfRh9Cw0YEnLAorICAgICAgICAgICAgaGggOiBydV9fcmVsYXRp dmVUaW1lV2l0aFBsdXJhbCwKKyAgICAgICAgICAgIGQgOiAn0LTQtdC90Ywn LAorICAgICAgICAgICAgZGQgOiBydV9fcmVsYXRpdmVUaW1lV2l0aFBsdXJh bCwKKyAgICAgICAgICAgIE0gOiAn0LzQtdGB0Y/RhicsCisgICAgICAgICAg ICBNTSA6IHJ1X19yZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLAorICAgICAgICAg ICAgeSA6ICfQs9C+0LQnLAorICAgICAgICAgICAgeXkgOiBydV9fcmVsYXRp dmVUaW1lV2l0aFBsdXJhbAorICAgICAgICB9LAorICAgICAgICBtZXJpZGll bVBhcnNlOiAv0L3QvtGH0Lh80YPRgtGA0LB80LTQvdGPfNCy0LXRh9C10YDQ sC9pLAorICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7CisgICAg ICAgICAgICByZXR1cm4gL14o0LTQvdGPfNCy0LXRh9C10YDQsCkkLy50ZXN0 KGlucHV0KTsKKyAgICAgICAgfSwKKyAgICAgICAgbWVyaWRpZW0gOiBmdW5j dGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7CisgICAgICAgICAgICBp ZiAoaG91ciA8IDQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ9C90L7R h9C4JzsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7Cisg ICAgICAgICAgICAgICAgcmV0dXJuICfRg9GC0YDQsCc7CisgICAgICAgICAg ICB9IGVsc2UgaWYgKGhvdXIgPCAxNykgeworICAgICAgICAgICAgICAgIHJl dHVybiAn0LTQvdGPJzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICAgICAgcmV0dXJuICfQstC10YfQtdGA0LAnOworICAgICAgICAgICAg fQorICAgICAgICB9LAorICAgICAgICBvcmRpbmFsUGFyc2U6IC9cZHsxLDJ9 LSjQuXzQs9C+fNGPKS8sCisgICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChu dW1iZXIsIHBlcmlvZCkgeworICAgICAgICAgICAgc3dpdGNoIChwZXJpb2Qp IHsKKyAgICAgICAgICAgICAgICBjYXNlICdNJzoKKyAgICAgICAgICAgICAg ICBjYXNlICdkJzoKKyAgICAgICAgICAgICAgICBjYXNlICdEREQnOgorICAg ICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QuSc7CisgICAg ICAgICAgICAgICAgY2FzZSAnRCc6CisgICAgICAgICAgICAgICAgICAgIHJl dHVybiBudW1iZXIgKyAnLdCz0L4nOworICAgICAgICAgICAgICAgIGNhc2Ug J3cnOgorICAgICAgICAgICAgICAgIGNhc2UgJ1cnOgorICAgICAgICAgICAg ICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Rjyc7CisgICAgICAgICAgICAg ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJl cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgd2VlayA6 IHsKKyAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmly c3QgZGF5IG9mIHRoZSB3ZWVrLgorICAgICAgICAgICAgZG95IDogNyAgLy8g VGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMXN0IGlzIHRoZSBmaXJzdCB3 ZWVrIG9mIHRoZSB5ZWFyLgorICAgICAgICB9CisgICAgfSk7CisKKworCisg ICAgdmFyIHNlID0gbW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgnc2Un LCB7CisgICAgICAgIG1vbnRocyA6ICdvxJHEkWFqYWdlbcOhbm51X2d1b3Z2 YW3DoW5udV9uanVrxI1hbcOhbm51X2N1b8WLb23DoW5udV9taWVzc2Vtw6Fu bnVfZ2Vhc3NlbcOhbm51X3N1b2lkbmVtw6FubnVfYm9yZ2Vtw6FubnVfxI1h a8SNYW3DoW5udV9nb2xnZ290bcOhbm51X3Nrw6FibWFtw6FubnVfanVvdmxh bcOhbm51Jy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNTaG9ydCA6ICdv xJHEkWpfZ3Vvdl9uanVrX2N1b19taWVzX2dlYXNfc3VvaV9ib3JnX8SNYWvE jV9nb2xnX3Nrw6FiX2p1b3YnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtk YXlzIDogJ3NvdG5hYmVhaXZpX3Z1b3Nzw6FyZ2FfbWHFi8WLZWLDoXJnYV9n YXNrYXZhaGtrdV9kdW9yYXN0YXRfYmVhcmphZGF0X2zDoXZ2YXJkYXQnLnNw bGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnc290bl92dW9z X21hxYtfZ2Fza19kdW9yX2JlYXJfbMOhdicuc3BsaXQoJ18nKSwKKyAgICAg ICAgd2Vla2RheXNNaW4gOiAnc192X21fZ19kX2JfTCcuc3BsaXQoJ18nKSwK KyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7CisgICAgICAgICAgICBMVCA6 ICdISDptbScsCisgICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLAorICAg ICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJywKKyAgICAgICAgICAgIExMIDog J01NTU0gRC4gW2IuXSBZWVlZJywKKyAgICAgICAgICAgIExMTCA6ICdNTU1N IEQuIFtiLl0gWVlZWSBbdGkuXSBISDptbScsCisgICAgICAgICAgICBMTExM IDogJ2RkZGQsIE1NTU0gRC4gW2IuXSBZWVlZIFt0aS5dIEhIOm1tJworICAg ICAgICB9LAorICAgICAgICBjYWxlbmRhciA6IHsKKyAgICAgICAgICAgIHNh bWVEYXk6ICdbb3RuZSB0aV0gTFQnLAorICAgICAgICAgICAgbmV4dERheTog J1tpaHR0aW4gdGldIExUJywKKyAgICAgICAgICAgIG5leHRXZWVrOiAnZGRk ZCBbdGldIExUJywKKyAgICAgICAgICAgIGxhc3REYXk6ICdbaWt0ZSB0aV0g TFQnLAorICAgICAgICAgICAgbGFzdFdlZWs6ICdbb3ZkZGl0XSBkZGRkIFt0 aV0gTFQnLAorICAgICAgICAgICAgc2FtZUVsc2U6ICdMJworICAgICAgICB9 LAorICAgICAgICByZWxhdGl2ZVRpbWUgOiB7CisgICAgICAgICAgICBmdXR1 cmUgOiAnJXMgZ2Vhxb5lcycsCisgICAgICAgICAgICBwYXN0IDogJ21hxYtp dCAlcycsCisgICAgICAgICAgICBzIDogJ21vYWRkZSBzZWt1bmRkYXQnLAor ICAgICAgICAgICAgbSA6ICdva3RhIG1pbnVodGEnLAorICAgICAgICAgICAg bW0gOiAnJWQgbWludWh0YXQnLAorICAgICAgICAgICAgaCA6ICdva3RhIGRp aW1tdScsCisgICAgICAgICAgICBoaCA6ICclZCBkaWltbXV0JywKKyAgICAg ICAgICAgIGQgOiAnb2t0YSBiZWFpdmknLAorICAgICAgICAgICAgZGQgOiAn JWQgYmVhaXZ2aXQnLAorICAgICAgICAgICAgTSA6ICdva3RhIG3DoW5udScs CisgICAgICAgICAgICBNTSA6ICclZCBtw6FudXQnLAorICAgICAgICAgICAg eSA6ICdva3RhIGphaGtpJywKKyAgICAgICAgICAgIHl5IDogJyVkIGphZ2l0 JworICAgICAgICB9LAorICAgICAgICBvcmRpbmFsUGFyc2U6IC9cZHsxLDJ9 XC4vLAorICAgICAgICBvcmRpbmFsIDogJyVkLicsCisgICAgICAgIHdlZWsg OiB7CisgICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZp cnN0IGRheSBvZiB0aGUgd2Vlay4KKyAgICAgICAgICAgIGRveSA6IDQgIC8v IFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qg d2VlayBvZiB0aGUgeWVhci4KKyAgICAgICAgfQorICAgIH0pOworCisKKyAg ICAvKmpzaGludCAtVzEwMCovCisgICAgdmFyIHNpID0gbW9tZW50X19kZWZh dWx0LmRlZmluZUxvY2FsZSgnc2knLCB7CisgICAgICAgIG1vbnRocyA6ICfg tqLgtrHgt4Dgt4/gtrvgt5Jf4La04LeZ4La24La74LeA4LeP4La74LeSX+C2 uOC3j+C2u+C3iuC2reC3lF/gtoXgtrTgt4rigI3gtrvgt5rgtr3gt4pf4La4 4LeQ4La64LeSX+C2ouC3luC2seC3kl/gtqLgt5bgtr3gt5Jf4LaF4Lac4Led 4LeD4LeK4Lat4LeUX+C3g+C3kOC2tOC3iuC2reC3kOC2uOC3iuC2tuC2u+C3 il/gtpTgtprgt4rgtq3gt53gtrbgtrvgt4pf4Lax4Lec4LeA4LeQ4La44LeK 4La24La74LeKX+C2r+C3meC3g+C3kOC2uOC3iuC2tuC2u+C3iicuc3BsaXQo J18nKSwKKyAgICAgICAgbW9udGhzU2hvcnQgOiAn4Lai4LaxX+C2tOC3meC2 tl/gtrjgt4/gtrvgt4pf4LaF4La04LeKX+C2uOC3kOC2uuC3kl/gtqLgt5bg trHgt5Jf4Lai4LeW4La94LeSX+C2heC2nOC3nV/gt4Pgt5DgtrTgt4pf4LaU 4Laa4LeKX+C2seC3nOC3gOC3kF/gtq/gt5ngt4Pgt5AnLnNwbGl0KCdfJyks CisgICAgICAgIHdlZWtkYXlzIDogJ+C2ieC2u+C3kuC2r+C3j1/gt4PgtrPg t5Tgtq/gt49f4LaF4Laf4LeE4La74LeU4LeA4LeP4Lav4LePX+C2tuC2r+C3 j+C2r+C3j1/gtrbgt4rigI3gtrvgt4Tgt4Pgt4rgtrTgtq3gt5LgtrHgt4rg tq/gt49f4LeD4LeS4Laa4LeU4La74LeP4Lav4LePX+C3g+C3meC2seC3g+C3 lOC2u+C3j+C2r+C3jycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNT aG9ydCA6ICfgtongtrvgt5Jf4LeD4Laz4LeUX+C2heC2n1/gtrbgtq/gt49f 4La24LeK4oCN4La74LeEX+C3g+C3kuC2muC3lF/gt4Pgt5ngtrEnLnNwbGl0 KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDogJ+C2iV/gt4Nf4LaFX+C2 tl/gtrbgt4rigI3gtrtf4LeD4LeSX+C3g+C3mScuc3BsaXQoJ18nKSwKKyAg ICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSwKKyAgICAgICAgbG9u Z0RhdGVGb3JtYXQgOiB7CisgICAgICAgICAgICBMVCA6ICdhIGg6bW0nLAor ICAgICAgICAgICAgTFRTIDogJ2EgaDptbTpzcycsCisgICAgICAgICAgICBM IDogJ1lZWVkvTU0vREQnLAorICAgICAgICAgICAgTEwgOiAnWVlZWSBNTU1N IEQnLAorICAgICAgICAgICAgTExMIDogJ1lZWVkgTU1NTSBELCBhIGg6bW0n LAorICAgICAgICAgICAgTExMTCA6ICdZWVlZIE1NTU0gRCBb4LeA4LeQ4Lax 4LeSXSBkZGRkLCBhIGg6bW06c3MnCisgICAgICAgIH0sCisgICAgICAgIGNh bGVuZGFyIDogeworICAgICAgICAgICAgc2FtZURheSA6ICdb4LaF4LavXSBM VFvgtqddJywKKyAgICAgICAgICAgIG5leHREYXkgOiAnW+C3hOC3meC2p10g TFRb4LanXScsCisgICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIExUW+C2 p10nLAorICAgICAgICAgICAgbGFzdERheSA6ICdb4LaK4La64LeaXSBMVFvg tqddJywKKyAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vgtrTgt4Pgt5Tgtpzg t5LgtrpdIGRkZGQgTFRb4LanXScsCisgICAgICAgICAgICBzYW1lRWxzZSA6 ICdMJworICAgICAgICB9LAorICAgICAgICByZWxhdGl2ZVRpbWUgOiB7Cisg ICAgICAgICAgICBmdXR1cmUgOiAnJXPgtprgt5LgtrHgt4onLAorICAgICAg ICAgICAgcGFzdCA6ICclc+C2muC2pyDgtrTgt5ngtrsnLAorICAgICAgICAg ICAgcyA6ICfgtq3gtq3gt4rgtrTgtrsg4Laa4LeS4LeE4LeS4La04La6JywK KyAgICAgICAgICAgIG0gOiAn4La44LeS4Lax4LeS4Lat4LeK4Lat4LeU4LeA JywKKyAgICAgICAgICAgIG1tIDogJ+C2uOC3kuC2seC3kuC2reC3iuC2reC3 lCAlZCcsCisgICAgICAgICAgICBoIDogJ+C2tOC3kOC2uicsCisgICAgICAg ICAgICBoaCA6ICfgtrTgt5DgtrogJWQnLAorICAgICAgICAgICAgZCA6ICfg tq/gt5LgtrHgtronLAorICAgICAgICAgICAgZGQgOiAn4Lav4LeS4LaxICVk JywKKyAgICAgICAgICAgIE0gOiAn4La44LeP4LeD4La6JywKKyAgICAgICAg ICAgIE1NIDogJ+C2uOC3j+C3gyAlZCcsCisgICAgICAgICAgICB5IDogJ+C3 gOC3g+C2uycsCisgICAgICAgICAgICB5eSA6ICfgt4Dgt4PgtrsgJWQnCisg ICAgICAgIH0sCisgICAgICAgIG9yZGluYWxQYXJzZTogL1xkezEsMn0g4LeA 4LeQ4Lax4LeSLywKKyAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1i ZXIpIHsKKyAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnIOC3gOC3kOC2 seC3kic7CisgICAgICAgIH0sCisgICAgICAgIG1lcmlkaWVtUGFyc2UgOiAv 4La04LeZ4La7IOC3gOC2u+C3lHzgtrTgt4Pgt4og4LeA4La74LeUfOC2tOC3 mS7gt4B84La0LuC3gC4vLAorICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlu cHV0KSB7CisgICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfgtrQu4LeA LicgfHwgaW5wdXQgPT09ICfgtrTgt4Pgt4og4LeA4La74LeUJzsKKyAgICAg ICAgfSwKKyAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cnMsIG1p bnV0ZXMsIGlzTG93ZXIpIHsKKyAgICAgICAgICAgIGlmIChob3VycyA+IDEx KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAn4La0LuC3 gC4nIDogJ+C2tOC3g+C3iiDgt4Dgtrvgt5QnOworICAgICAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfgtrTg t5ku4LeALicgOiAn4La04LeZ4La7IOC3gOC2u+C3lCc7CisgICAgICAgICAg ICB9CisgICAgICAgIH0KKyAgICB9KTsKKworCisgICAgdmFyIHNrX19tb250 aHMgPSAnamFudcOhcl9mZWJydcOhcl9tYXJlY19hcHLDrWxfbcOhal9qw7pu X2rDumxfYXVndXN0X3NlcHRlbWJlcl9va3TDs2Jlcl9ub3ZlbWJlcl9kZWNl bWJlcicuc3BsaXQoJ18nKSwKKyAgICAgICAgc2tfX21vbnRoc1Nob3J0ID0g J2phbl9mZWJfbWFyX2Fwcl9tw6FqX2rDum5fasO6bF9hdWdfc2VwX29rdF9u b3ZfZGVjJy5zcGxpdCgnXycpOworICAgIGZ1bmN0aW9uIHNrX19wbHVyYWwo bikgeworICAgICAgICByZXR1cm4gKG4gPiAxKSAmJiAobiA8IDUpOworICAg IH0KKyAgICBmdW5jdGlvbiBza19fdHJhbnNsYXRlKG51bWJlciwgd2l0aG91 dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkgeworICAgICAgICB2YXIgcmVzdWx0 ID0gbnVtYmVyICsgJyAnOworICAgICAgICBzd2l0Y2ggKGtleSkgeworICAg ICAgICAgICAgY2FzZSAncyc6ICAvLyBhIGZldyBzZWNvbmRzIC8gaW4gYSBm ZXcgc2Vjb25kcyAvIGEgZmV3IHNlY29uZHMgYWdvCisgICAgICAgICAgICAg ICAgcmV0dXJuICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSA/ICdww6Fy IHNla8O6bmQnIDogJ3DDoXIgc2VrdW5kYW1pJzsKKyAgICAgICAgICAgIGNh c2UgJ20nOiAgLy8gYSBtaW51dGUgLyBpbiBhIG1pbnV0ZSAvIGEgbWludXRl IGFnbworICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8g J21pbsO6dGEnIDogKGlzRnV0dXJlID8gJ21pbsO6dHUnIDogJ21pbsO6dG91 Jyk7CisgICAgICAgICAgICBjYXNlICdtbSc6IC8vIDkgbWludXRlcyAvIGlu IDkgbWludXRlcyAvIDkgbWludXRlcyBhZ28KKyAgICAgICAgICAgICAgICBp ZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkgeworICAgICAgICAgICAg ICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHNrX19wbHVyYWwobnVtYmVyKSA/ ICdtaW7DunR5JyA6ICdtaW7DunQnKTsKKyAgICAgICAgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ21p bsO6dGFtaSc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgICAgY2FzZSAnaCc6ICAvLyBhbiBob3VyIC8g aW4gYW4gaG91ciAvIGFuIGhvdXIgYWdvCisgICAgICAgICAgICAgICAgcmV0 dXJuIHdpdGhvdXRTdWZmaXggPyAnaG9kaW5hJyA6IChpc0Z1dHVyZSA/ICdo b2RpbnUnIDogJ2hvZGlub3UnKTsKKyAgICAgICAgICAgIGNhc2UgJ2hoJzog Ly8gOSBob3VycyAvIGluIDkgaG91cnMgLyA5IGhvdXJzIGFnbworICAgICAg ICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7Cisg ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAoc2tfX3BsdXJh bChudW1iZXIpID8gJ2hvZGlueScgOiAnaG9kw61uJyk7CisgICAgICAgICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl c3VsdCArICdob2RpbmFtaSc7CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnZCc6ICAvLyBh IGRheSAvIGluIGEgZGF5IC8gYSBkYXkgYWdvCisgICAgICAgICAgICAgICAg cmV0dXJuICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSA/ICdkZcWIJyA6 ICdkxYhvbSc7CisgICAgICAgICAgICBjYXNlICdkZCc6IC8vIDkgZGF5cyAv IGluIDkgZGF5cyAvIDkgZGF5cyBhZ28KKyAgICAgICAgICAgICAgICBpZiAo d2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkgeworICAgICAgICAgICAgICAg ICAgICByZXR1cm4gcmVzdWx0ICsgKHNrX19wbHVyYWwobnVtYmVyKSA/ICdk bmknIDogJ2Ruw60nKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2TFiGFtaSc7Cisg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgICAgY2FzZSAnTSc6ICAvLyBhIG1vbnRoIC8gaW4gYSBtb250aCAv IGEgbW9udGggYWdvCisgICAgICAgICAgICAgICAgcmV0dXJuICh3aXRob3V0 U3VmZml4IHx8IGlzRnV0dXJlKSA/ICdtZXNpYWMnIDogJ21lc2lhY29tJzsK KyAgICAgICAgICAgIGNhc2UgJ01NJzogLy8gOSBtb250aHMgLyBpbiA5IG1v bnRocyAvIDkgbW9udGhzIGFnbworICAgICAgICAgICAgICAgIGlmICh3aXRo b3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7CisgICAgICAgICAgICAgICAgICAg IHJldHVybiByZXN1bHQgKyAoc2tfX3BsdXJhbChudW1iZXIpID8gJ21lc2lh Y2UnIDogJ21lc2lhY292Jyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtZXNpYWNt aSc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgY2FzZSAneSc6ICAvLyBhIHllYXIgLyBpbiBhIHll YXIgLyBhIHllYXIgYWdvCisgICAgICAgICAgICAgICAgcmV0dXJuICh3aXRo b3V0U3VmZml4IHx8IGlzRnV0dXJlKSA/ICdyb2snIDogJ3Jva29tJzsKKyAg ICAgICAgICAgIGNhc2UgJ3l5JzogLy8gOSB5ZWFycyAvIGluIDkgeWVhcnMg LyA5IHllYXJzIGFnbworICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3Vm Zml4IHx8IGlzRnV0dXJlKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy biByZXN1bHQgKyAoc2tfX3BsdXJhbChudW1iZXIpID8gJ3Jva3knIDogJ3Jv a292Jyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdyb2ttaSc7CisgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg ICAgfQorCisgICAgdmFyIHNrID0gbW9tZW50X19kZWZhdWx0LmRlZmluZUxv Y2FsZSgnc2snLCB7CisgICAgICAgIG1vbnRocyA6IHNrX19tb250aHMsCisg ICAgICAgIG1vbnRoc1Nob3J0IDogc2tfX21vbnRoc1Nob3J0LAorICAgICAg ICB3ZWVrZGF5cyA6ICduZWRlxL5hX3BvbmRlbG9rX3V0b3Jva19zdHJlZGFf xaF0dnJ0b2tfcGlhdG9rX3NvYm90YScuc3BsaXQoJ18nKSwKKyAgICAgICAg d2Vla2RheXNTaG9ydCA6ICduZV9wb191dF9zdF/FoXRfcGlfc28nLnNwbGl0 KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDogJ25lX3BvX3V0X3N0X8Wh dF9waV9zbycuc3BsaXQoJ18nKSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQg OiB7CisgICAgICAgICAgICBMVDogJ0g6bW0nLAorICAgICAgICAgICAgTFRT IDogJ0g6bW06c3MnLAorICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJywK KyAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsCisgICAgICAgICAg ICBMTEwgOiAnRC4gTU1NTSBZWVlZIEg6bW0nLAorICAgICAgICAgICAgTExM TCA6ICdkZGRkIEQuIE1NTU0gWVlZWSBIOm1tJworICAgICAgICB9LAorICAg ICAgICBjYWxlbmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVEYXk6ICdbZG5l cyBvXSBMVCcsCisgICAgICAgICAgICBuZXh0RGF5OiAnW3phanRyYSBvXSBM VCcsCisgICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkgeworICAg ICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkgeworICAgICAgICAg ICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gJ1t2IG5lZGXEvnUgb10gTFQnOworICAgICAgICAgICAgICAgICAg ICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIGRkZGQgW29dIExUJzsK KyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuICdbdiBzdHJlZHUgb10gTFQnOworICAgICAgICAg ICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gJ1t2byDFoXR2cnRvayBvXSBMVCc7CisgICAgICAgICAgICAgICAg ICAgIGNhc2UgNToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAn W3YgcGlhdG9rIG9dIExUJzsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA2 OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBzb2JvdHUg b10gTFQnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisg ICAgICAgICAgICBsYXN0RGF5OiAnW3bEjWVyYSBvXSBMVCcsCisgICAgICAg ICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg IHN3aXRjaCAodGhpcy5kYXkoKSkgeworICAgICAgICAgICAgICAgICAgICBj YXNlIDA6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51 bMO6IG5lZGXEvnUgb10gTFQnOworICAgICAgICAgICAgICAgICAgICBjYXNl IDE6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw71dIGRkZGQgW29dIExUJzsK KyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuICdbbWludWzDuiBzdHJlZHUgb10gTFQnOworICAg ICAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAg IGNhc2UgNToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21p bnVsw71dIGRkZGQgW29dIExUJzsKKyAgICAgICAgICAgICAgICAgICAgY2Fz ZSA2OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzD uiBzb2JvdHUgb10gTFQnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIH0sCisgICAgICAgICAgICBzYW1lRWxzZTogJ0wnCisgICAgICAgIH0s CisgICAgICAgIHJlbGF0aXZlVGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVy ZSA6ICd6YSAlcycsCisgICAgICAgICAgICBwYXN0IDogJ3ByZWQgJXMnLAor ICAgICAgICAgICAgcyA6IHNrX190cmFuc2xhdGUsCisgICAgICAgICAgICBt IDogc2tfX3RyYW5zbGF0ZSwKKyAgICAgICAgICAgIG1tIDogc2tfX3RyYW5z bGF0ZSwKKyAgICAgICAgICAgIGggOiBza19fdHJhbnNsYXRlLAorICAgICAg ICAgICAgaGggOiBza19fdHJhbnNsYXRlLAorICAgICAgICAgICAgZCA6IHNr X190cmFuc2xhdGUsCisgICAgICAgICAgICBkZCA6IHNrX190cmFuc2xhdGUs CisgICAgICAgICAgICBNIDogc2tfX3RyYW5zbGF0ZSwKKyAgICAgICAgICAg IE1NIDogc2tfX3RyYW5zbGF0ZSwKKyAgICAgICAgICAgIHkgOiBza19fdHJh bnNsYXRlLAorICAgICAgICAgICAgeXkgOiBza19fdHJhbnNsYXRlCisgICAg ICAgIH0sCisgICAgICAgIG9yZGluYWxQYXJzZTogL1xkezEsMn1cLi8sCisg ICAgICAgIG9yZGluYWwgOiAnJWQuJywKKyAgICAgICAgd2VlayA6IHsKKyAg ICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5 IG9mIHRoZSB3ZWVrLgorICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdl ZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9m IHRoZSB5ZWFyLgorICAgICAgICB9CisgICAgfSk7CisKKworICAgIGZ1bmN0 aW9uIHNsX19wcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1 ZmZpeCwga2V5LCBpc0Z1dHVyZSkgeworICAgICAgICB2YXIgcmVzdWx0ID0g bnVtYmVyICsgJyAnOworICAgICAgICBzd2l0Y2ggKGtleSkgeworICAgICAg ICAgICAgY2FzZSAncyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhv dXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbmVrYWogc2VrdW5kJyA6ICduZWth aiBzZWt1bmRhbWknOworICAgICAgICAgICAgY2FzZSAnbSc6CisgICAgICAg ICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnZW5hIG1pbnV0YScg OiAnZW5vIG1pbnV0byc7CisgICAgICAgICAgICBjYXNlICdtbSc6CisgICAg ICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkgeworICAgICAgICAgICAg ICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCA/ICdtaW51dGEnIDog J21pbnV0byc7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIg PT09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhv dXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWludXRpJyA6ICdtaW51dGFtYSc7 CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCA1KSB7Cisg ICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8 IGlzRnV0dXJlID8gJ21pbnV0ZScgOiAnbWludXRhbWknOworICAgICAgICAg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCAr PSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21pbnV0JyA6ICdtaW51 dGFtaSc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJl dHVybiByZXN1bHQ7CisgICAgICAgICAgICBjYXNlICdoJzoKKyAgICAgICAg ICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdlbmEgdXJhJyA6ICdl bm8gdXJvJzsKKyAgICAgICAgICAgIGNhc2UgJ2hoJzoKKyAgICAgICAgICAg ICAgICBpZiAobnVtYmVyID09PSAxKSB7CisgICAgICAgICAgICAgICAgICAg IHJlc3VsdCArPSB3aXRob3V0U3VmZml4ID8gJ3VyYScgOiAndXJvJzsKKyAg ICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikgeworICAg ICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBp c0Z1dHVyZSA/ICd1cmknIDogJ3VyYW1hJzsKKyAgICAgICAgICAgICAgICB9 IGVsc2UgaWYgKG51bWJlciA8IDUpIHsKKyAgICAgICAgICAgICAgICAgICAg cmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAndXJlJyA6 ICd1cmFtaSc7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg ICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1 cmUgPyAndXInIDogJ3VyYW1pJzsKKyAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIGNhc2Ug J2QnOgorICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8 IGlzRnV0dXJlID8gJ2VuIGRhbicgOiAnZW5pbSBkbmVtJzsKKyAgICAgICAg ICAgIGNhc2UgJ2RkJzoKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09 PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0 U3VmZml4IHx8IGlzRnV0dXJlID8gJ2RhbicgOiAnZG5lbSc7CisgICAgICAg ICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIpIHsKKyAgICAgICAg ICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1 cmUgPyAnZG5pJyA6ICdkbmV2b21hJzsKKyAgICAgICAgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1 ZmZpeCB8fCBpc0Z1dHVyZSA/ICdkbmknIDogJ2RuZXZpJzsKKyAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg ICAgICAgICAgIGNhc2UgJ00nOgorICAgICAgICAgICAgICAgIHJldHVybiB3 aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2VuIG1lc2VjJyA6ICdlbmlt IG1lc2VjZW0nOworICAgICAgICAgICAgY2FzZSAnTU0nOgorICAgICAgICAg ICAgICAgIGlmIChudW1iZXIgPT09IDEpIHsKKyAgICAgICAgICAgICAgICAg ICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWVz ZWMnIDogJ21lc2VjZW0nOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo bnVtYmVyID09PSAyKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCAr PSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21lc2VjYScgOiAnbWVz ZWNlbWEnOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwg NSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1 ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtZXNlY2UnIDogJ21lc2VjaSc7CisgICAg ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVz dWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWVzZWNldicg OiAnbWVzZWNpJzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIGNhc2UgJ3knOgorICAg ICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJl ID8gJ2VubyBsZXRvJyA6ICdlbmltIGxldG9tJzsKKyAgICAgICAgICAgIGNh c2UgJ3l5JzoKKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7 CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4 IHx8IGlzRnV0dXJlID8gJ2xldG8nIDogJ2xldG9tJzsKKyAgICAgICAgICAg ICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikgeworICAgICAgICAgICAg ICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ ICdsZXRpJyA6ICdsZXRvbWEnOworICAgICAgICAgICAgICAgIH0gZWxzZSBp ZiAobnVtYmVyIDwgNSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQg Kz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdsZXRhJyA6ICdsZXRp JzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg ICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICds ZXQnIDogJ2xldGknOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAg dmFyIHNsID0gbW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgnc2wnLCB7 CisgICAgICAgIG1vbnRocyA6ICdqYW51YXJfZmVicnVhcl9tYXJlY19hcHJp bF9tYWpfanVuaWpfanVsaWpfYXZndXN0X3NlcHRlbWJlcl9va3RvYmVyX25v dmVtYmVyX2RlY2VtYmVyJy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNT aG9ydCA6ICdqYW4uX2ZlYi5fbWFyLl9hcHIuX21hai5fanVuLl9qdWwuX2F2 Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoJ18nKSwKKyAgICAgICAg bW9udGhzUGFyc2VFeGFjdDogdHJ1ZSwKKyAgICAgICAgd2Vla2RheXMgOiAn bmVkZWxqYV9wb25lZGVsamVrX3RvcmVrX3NyZWRhX8SNZXRydGVrX3BldGVr X3NvYm90YScuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6 ICduZWQuX3Bvbi5fdG9yLl9zcmUuX8SNZXQuX3BldC5fc29iLicuc3BsaXQo J18nKSwKKyAgICAgICAgd2Vla2RheXNNaW4gOiAnbmVfcG9fdG9fc3JfxI1l X3BlX3NvJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c1BhcnNlRXhh Y3QgOiB0cnVlLAorICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHsKKyAgICAg ICAgICAgIExUIDogJ0g6bW0nLAorICAgICAgICAgICAgTFRTIDogJ0g6bW06 c3MnLAorICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJywKKyAgICAgICAg ICAgIExMIDogJ0QuIE1NTU0gWVlZWScsCisgICAgICAgICAgICBMTEwgOiAn RC4gTU1NTSBZWVlZIEg6bW0nLAorICAgICAgICAgICAgTExMTCA6ICdkZGRk LCBELiBNTU1NIFlZWVkgSDptbScKKyAgICAgICAgfSwKKyAgICAgICAgY2Fs ZW5kYXIgOiB7CisgICAgICAgICAgICBzYW1lRGF5ICA6ICdbZGFuZXMgb2Jd IExUJywKKyAgICAgICAgICAgIG5leHREYXkgIDogJ1tqdXRyaSBvYl0gTFQn LAorCisgICAgICAgICAgICBuZXh0V2VlayA6IGZ1bmN0aW9uICgpIHsKKyAg ICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHsKKyAgICAgICAg ICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuICdbdl0gW25lZGVsam9dIFtvYl0gTFQnOworICAgICAgICAgICAg ICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gJ1t2XSBbc3JlZG9dIFtvYl0gTFQnOworICAgICAgICAgICAgICAgICAg ICBjYXNlIDY6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2 XSBbc29ib3RvXSBbb2JdIExUJzsKKyAgICAgICAgICAgICAgICAgICAgY2Fz ZSAxOgorICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAg ICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1 OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdl0gZGRkZCBb b2JdIExUJzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAor ICAgICAgICAgICAgbGFzdERheSAgOiAnW3bEjWVyYWogb2JdIExUJywKKyAg ICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkgeworICAgICAgICAg ICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkgeworICAgICAgICAgICAgICAg ICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g J1twcmVqxaFuam9dIFtuZWRlbGpvXSBbb2JdIExUJzsKKyAgICAgICAgICAg ICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuICdbcHJlasWhbmpvXSBbc3JlZG9dIFtvYl0gTFQnOworICAgICAgICAg ICAgICAgICAgICBjYXNlIDY6CisgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gJ1twcmVqxaFuam9dIFtzb2JvdG9dIFtvYl0gTFQnOworICAgICAg ICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgIGNh c2UgMjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAg ICAgICAgICAgICBjYXNlIDU6CisgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gJ1twcmVqxaFuamldIGRkZGQgW29iXSBMVCc7CisgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNhbWVFbHNl IDogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZSA6IHsK KyAgICAgICAgICAgIGZ1dHVyZSA6ICfEjWV6ICVzJywKKyAgICAgICAgICAg IHBhc3QgICA6ICdwcmVkICVzJywKKyAgICAgICAgICAgIHMgICAgICA6IHNs X19wcm9jZXNzUmVsYXRpdmVUaW1lLAorICAgICAgICAgICAgbSAgICAgIDog c2xfX3Byb2Nlc3NSZWxhdGl2ZVRpbWUsCisgICAgICAgICAgICBtbSAgICAg OiBzbF9fcHJvY2Vzc1JlbGF0aXZlVGltZSwKKyAgICAgICAgICAgIGggICAg ICA6IHNsX19wcm9jZXNzUmVsYXRpdmVUaW1lLAorICAgICAgICAgICAgaGgg ICAgIDogc2xfX3Byb2Nlc3NSZWxhdGl2ZVRpbWUsCisgICAgICAgICAgICBk ICAgICAgOiBzbF9fcHJvY2Vzc1JlbGF0aXZlVGltZSwKKyAgICAgICAgICAg IGRkICAgICA6IHNsX19wcm9jZXNzUmVsYXRpdmVUaW1lLAorICAgICAgICAg ICAgTSAgICAgIDogc2xfX3Byb2Nlc3NSZWxhdGl2ZVRpbWUsCisgICAgICAg ICAgICBNTSAgICAgOiBzbF9fcHJvY2Vzc1JlbGF0aXZlVGltZSwKKyAgICAg ICAgICAgIHkgICAgICA6IHNsX19wcm9jZXNzUmVsYXRpdmVUaW1lLAorICAg ICAgICAgICAgeXkgICAgIDogc2xfX3Byb2Nlc3NSZWxhdGl2ZVRpbWUKKyAg ICAgICAgfSwKKyAgICAgICAgb3JkaW5hbFBhcnNlOiAvXGR7MSwyfVwuLywK KyAgICAgICAgb3JkaW5hbCA6ICclZC4nLAorICAgICAgICB3ZWVrIDogewor ICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBk YXkgb2YgdGhlIHdlZWsuCisgICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUg d2VlayB0aGF0IGNvbnRhaW5zIEphbiAxc3QgaXMgdGhlIGZpcnN0IHdlZWsg b2YgdGhlIHllYXIuCisgICAgICAgIH0KKyAgICB9KTsKKworCisgICAgdmFy IHNxID0gbW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgnc3EnLCB7Cisg ICAgICAgIG1vbnRocyA6ICdKYW5hcl9TaGt1cnRfTWFyc19QcmlsbF9NYWpf UWVyc2hvcl9Lb3JyaWtfR3VzaHRfU2h0YXRvcl9UZXRvcl9Ow6tudG9yX0Ro amV0b3InLnNwbGl0KCdfJyksCisgICAgICAgIG1vbnRoc1Nob3J0IDogJ0ph bl9TaGtfTWFyX1ByaV9NYWpfUWVyX0tvcl9HdXNfU2h0X1RldF9Ow6tuX0Ro aicuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXMgOiAnRSBEaWVsX0Ug SMOrbsOrX0UgTWFydMOrX0UgTcOrcmt1csOrX0UgRW5qdGVfRSBQcmVtdGVf RSBTaHR1bsOrJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c1Nob3J0 IDogJ0RpZV9Iw6tuX01hcl9Nw6tyX0Vual9QcmVfU2h0Jy5zcGxpdCgnXycp LAorICAgICAgICB3ZWVrZGF5c01pbiA6ICdEX0hfTWFfTcOrX0VfUF9TaCcu c3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1 ZSwKKyAgICAgICAgbWVyaWRpZW1QYXJzZTogL1BEfE1ELywKKyAgICAgICAg aXNQTTogZnVuY3Rpb24gKGlucHV0KSB7CisgICAgICAgICAgICByZXR1cm4g aW5wdXQuY2hhckF0KDApID09PSAnTSc7CisgICAgICAgIH0sCisgICAgICAg IG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2Vy KSB7CisgICAgICAgICAgICByZXR1cm4gaG91cnMgPCAxMiA/ICdQRCcgOiAn TUQnOworICAgICAgICB9LAorICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHsK KyAgICAgICAgICAgIExUIDogJ0hIOm1tJywKKyAgICAgICAgICAgIExUUyA6 ICdISDptbTpzcycsCisgICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLAor ICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLAorICAgICAgICAgICAg TExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJywKKyAgICAgICAgICAgIExMTEwg OiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nCisgICAgICAgIH0sCisgICAg ICAgIGNhbGVuZGFyIDogeworICAgICAgICAgICAgc2FtZURheSA6ICdbU290 IG7Dq10gTFQnLAorICAgICAgICAgICAgbmV4dERheSA6ICdbTmVzw6tyIG7D q10gTFQnLAorICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbbsOrXSBM VCcsCisgICAgICAgICAgICBsYXN0RGF5IDogJ1tEamUgbsOrXSBMVCcsCisg ICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFtlIGthbHVhciBuw6tdIExU JywKKyAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnCisgICAgICAgIH0sCisg ICAgICAgIHJlbGF0aXZlVGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6 ICduw6sgJXMnLAorICAgICAgICAgICAgcGFzdCA6ICclcyBtw6sgcGFyw6sn LAorICAgICAgICAgICAgcyA6ICdkaXNhIHNla29uZGEnLAorICAgICAgICAg ICAgbSA6ICduasOrIG1pbnV0w6snLAorICAgICAgICAgICAgbW0gOiAnJWQg bWludXRhJywKKyAgICAgICAgICAgIGggOiAnbmrDqyBvcsOrJywKKyAgICAg ICAgICAgIGhoIDogJyVkIG9yw6snLAorICAgICAgICAgICAgZCA6ICduasOr IGRpdMOrJywKKyAgICAgICAgICAgIGRkIDogJyVkIGRpdMOrJywKKyAgICAg ICAgICAgIE0gOiAnbmrDqyBtdWFqJywKKyAgICAgICAgICAgIE1NIDogJyVk IG11YWonLAorICAgICAgICAgICAgeSA6ICduasOrIHZpdCcsCisgICAgICAg ICAgICB5eSA6ICclZCB2aXRlJworICAgICAgICB9LAorICAgICAgICBvcmRp bmFsUGFyc2U6IC9cZHsxLDJ9XC4vLAorICAgICAgICBvcmRpbmFsIDogJyVk LicsCisgICAgICAgIHdlZWsgOiB7CisgICAgICAgICAgICBkb3cgOiAxLCAv LyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KKyAgICAg ICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFu IDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci4KKyAgICAgICAg fQorICAgIH0pOworCisKKyAgICB2YXIgc3JfY3lybF9fdHJhbnNsYXRvciA9 IHsKKyAgICAgICAgd29yZHM6IHsgLy9EaWZmZXJlbnQgZ3JhbW1hdGljYWwg Y2FzZXMKKyAgICAgICAgICAgIG06IFsn0ZjQtdC00LDQvSDQvNC40L3Rg9GC JywgJ9GY0LXQtNC90LUg0LzQuNC90YPRgtC1J10sCisgICAgICAgICAgICBt bTogWyfQvNC40L3Rg9GCJywgJ9C80LjQvdGD0YLQtScsICfQvNC40L3Rg9GC 0LAnXSwKKyAgICAgICAgICAgIGg6IFsn0ZjQtdC00LDQvSDRgdCw0YInLCAn 0ZjQtdC00L3QvtCzINGB0LDRgtCwJ10sCisgICAgICAgICAgICBoaDogWyfR gdCw0YInLCAn0YHQsNGC0LAnLCAn0YHQsNGC0LgnXSwKKyAgICAgICAgICAg IGRkOiBbJ9C00LDQvScsICfQtNCw0L3QsCcsICfQtNCw0L3QsCddLAorICAg ICAgICAgICAgTU06IFsn0LzQtdGB0LXRhicsICfQvNC10YHQtdGG0LAnLCAn 0LzQtdGB0LXRhtC4J10sCisgICAgICAgICAgICB5eTogWyfQs9C+0LTQuNC9 0LAnLCAn0LPQvtC00LjQvdC1JywgJ9Cz0L7QtNC40L3QsCddCisgICAgICAg IH0sCisgICAgICAgIGNvcnJlY3RHcmFtbWF0aWNhbENhc2U6IGZ1bmN0aW9u IChudW1iZXIsIHdvcmRLZXkpIHsKKyAgICAgICAgICAgIHJldHVybiBudW1i ZXIgPT09IDEgPyB3b3JkS2V5WzBdIDogKG51bWJlciA+PSAyICYmIG51bWJl ciA8PSA0ID8gd29yZEtleVsxXSA6IHdvcmRLZXlbMl0pOworICAgICAgICB9 LAorICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uIChudW1iZXIsIHdpdGhv dXRTdWZmaXgsIGtleSkgeworICAgICAgICAgICAgdmFyIHdvcmRLZXkgPSBz cl9jeXJsX190cmFuc2xhdG9yLndvcmRzW2tleV07CisgICAgICAgICAgICBp ZiAoa2V5Lmxlbmd0aCA9PT0gMSkgeworICAgICAgICAgICAgICAgIHJldHVy biB3aXRob3V0U3VmZml4ID8gd29yZEtleVswXSA6IHdvcmRLZXlbMV07Cisg ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBu dW1iZXIgKyAnICcgKyBzcl9jeXJsX190cmFuc2xhdG9yLmNvcnJlY3RHcmFt bWF0aWNhbENhc2UobnVtYmVyLCB3b3JkS2V5KTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgfQorICAgIH07CisKKyAgICB2YXIgc3JfY3lybCA9IG1vbWVu dF9fZGVmYXVsdC5kZWZpbmVMb2NhbGUoJ3NyLWN5cmwnLCB7CisgICAgICAg IG1vbnRoczogJ9GY0LDQvdGD0LDRgF/RhNC10LHRgNGD0LDRgF/QvNCw0YDR gl/QsNC/0YDQuNC7X9C80LDRmF/RmNGD0L1f0ZjRg9C7X9Cw0LLQs9GD0YHR gl/RgdC10L/RgtC10LzQsdCw0YBf0L7QutGC0L7QsdCw0YBf0L3QvtCy0LXQ vNCx0LDRgF/QtNC10YbQtdC80LHQsNGAJy5zcGxpdCgnXycpLAorICAgICAg ICBtb250aHNTaG9ydDogJ9GY0LDQvS5f0YTQtdCxLl/QvNCw0YAuX9Cw0L/R gC5f0LzQsNGYX9GY0YPQvV/RmNGD0Ltf0LDQstCzLl/RgdC10L8uX9C+0LrR gi5f0L3QvtCyLl/QtNC10YYuJy5zcGxpdCgnXycpLAorICAgICAgICBtb250 aHNQYXJzZUV4YWN0OiB0cnVlLAorICAgICAgICB3ZWVrZGF5czogJ9C90LXQ tNC10ZnQsF/Qv9C+0L3QtdC00LXRmdCw0Lpf0YPRgtC+0YDQsNC6X9GB0YDQ tdC00LBf0YfQtdGC0LLRgNGC0LDQul/Qv9C10YLQsNC6X9GB0YPQsdC+0YLQ sCcuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9ydDogJ9C90LXQ tC5f0L/QvtC9Ll/Rg9GC0L4uX9GB0YDQtS5f0YfQtdGCLl/Qv9C10YIuX9GB 0YPQsS4nLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluOiAn0L3Q tV/Qv9C+X9GD0YJf0YHRgF/Rh9C1X9C/0LVf0YHRgycuc3BsaXQoJ18nKSwK KyAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSwKKyAgICAgICAg bG9uZ0RhdGVGb3JtYXQ6IHsKKyAgICAgICAgICAgIExUOiAnSDptbScsCisg ICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsCisgICAgICAgICAgICBMOiAn REQuTU0uWVlZWScsCisgICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScs CisgICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSDptbScsCisgICAg ICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nCisgICAg ICAgIH0sCisgICAgICAgIGNhbGVuZGFyOiB7CisgICAgICAgICAgICBzYW1l RGF5OiAnW9C00LDQvdCw0YEg0YNdIExUJywKKyAgICAgICAgICAgIG5leHRE YXk6ICdb0YHRg9GC0YDQsCDRg10gTFQnLAorICAgICAgICAgICAgbmV4dFdl ZWs6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRo aXMuZGF5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgorICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0YNdIFvQvdC10LTQtdGZ 0YNdIFvRg10gTFQnOworICAgICAgICAgICAgICAgICAgICBjYXNlIDM6Cisg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vRg10gW9GB0YDQtdC0 0YNdIFvRg10gTFQnOworICAgICAgICAgICAgICAgICAgICBjYXNlIDY6Cisg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vRg10gW9GB0YPQsdC+ 0YLRg10gW9GDXSBMVCc7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMToK KyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAg ICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNToKKyAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9GDXSBkZGRkIFvRg10g TFQnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAg ICAgICAgICBsYXN0RGF5ICA6ICdb0ZjRg9GH0LUg0YNdIExUJywKKyAgICAg ICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg ICAgIHZhciBsYXN0V2Vla0RheXMgPSBbCisgICAgICAgICAgICAgICAgICAg ICdb0L/RgNC+0YjQu9C1XSBb0L3QtdC00LXRmdC1XSBb0YNdIExUJywKKyAg ICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70L7Qs10gW9C/0L7QvdC1 0LTQtdGZ0LrQsF0gW9GDXSBMVCcsCisgICAgICAgICAgICAgICAgICAgICdb 0L/RgNC+0YjQu9C+0LNdIFvRg9GC0L7RgNC60LBdIFvRg10gTFQnLAorICAg ICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQtV0gW9GB0YDQtdC00LVd IFvRg10gTFQnLAorICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQ vtCzXSBb0YfQtdGC0LLRgNGC0LrQsF0gW9GDXSBMVCcsCisgICAgICAgICAg ICAgICAgICAgICdb0L/RgNC+0YjQu9C+0LNdIFvQv9C10YLQutCwXSBb0YNd IExUJywKKyAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70LVdIFvR gdGD0LHQvtGC0LVdIFvRg10gTFQnCisgICAgICAgICAgICAgICAgXTsKKyAg ICAgICAgICAgICAgICByZXR1cm4gbGFzdFdlZWtEYXlzW3RoaXMuZGF5KCld OworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wn CisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZSA6IHsKKyAgICAg ICAgICAgIGZ1dHVyZSA6ICfQt9CwICVzJywKKyAgICAgICAgICAgIHBhc3Qg ICA6ICfQv9GA0LUgJXMnLAorICAgICAgICAgICAgcyAgICAgIDogJ9C90LXQ utC+0LvQuNC60L4g0YHQtdC60YPQvdC00LgnLAorICAgICAgICAgICAgbSAg ICAgIDogc3JfY3lybF9fdHJhbnNsYXRvci50cmFuc2xhdGUsCisgICAgICAg ICAgICBtbSAgICAgOiBzcl9jeXJsX190cmFuc2xhdG9yLnRyYW5zbGF0ZSwK KyAgICAgICAgICAgIGggICAgICA6IHNyX2N5cmxfX3RyYW5zbGF0b3IudHJh bnNsYXRlLAorICAgICAgICAgICAgaGggICAgIDogc3JfY3lybF9fdHJhbnNs YXRvci50cmFuc2xhdGUsCisgICAgICAgICAgICBkICAgICAgOiAn0LTQsNC9 JywKKyAgICAgICAgICAgIGRkICAgICA6IHNyX2N5cmxfX3RyYW5zbGF0b3Iu dHJhbnNsYXRlLAorICAgICAgICAgICAgTSAgICAgIDogJ9C80LXRgdC10YYn LAorICAgICAgICAgICAgTU0gICAgIDogc3JfY3lybF9fdHJhbnNsYXRvci50 cmFuc2xhdGUsCisgICAgICAgICAgICB5ICAgICAgOiAn0LPQvtC00LjQvdGD JywKKyAgICAgICAgICAgIHl5ICAgICA6IHNyX2N5cmxfX3RyYW5zbGF0b3Iu dHJhbnNsYXRlCisgICAgICAgIH0sCisgICAgICAgIG9yZGluYWxQYXJzZTog L1xkezEsMn1cLi8sCisgICAgICAgIG9yZGluYWwgOiAnJWQuJywKKyAgICAg ICAgd2VlayA6IHsKKyAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBp cyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorICAgICAgICAgICAgZG95 IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMXN0IGlzIHRo ZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLgorICAgICAgICB9CisgICAgfSk7 CisKKworICAgIHZhciBzcl9fdHJhbnNsYXRvciA9IHsKKyAgICAgICAgd29y ZHM6IHsgLy9EaWZmZXJlbnQgZ3JhbW1hdGljYWwgY2FzZXMKKyAgICAgICAg ICAgIG06IFsnamVkYW4gbWludXQnLCAnamVkbmUgbWludXRlJ10sCisgICAg ICAgICAgICBtbTogWydtaW51dCcsICdtaW51dGUnLCAnbWludXRhJ10sCisg ICAgICAgICAgICBoOiBbJ2plZGFuIHNhdCcsICdqZWRub2cgc2F0YSddLAor ICAgICAgICAgICAgaGg6IFsnc2F0JywgJ3NhdGEnLCAnc2F0aSddLAorICAg ICAgICAgICAgZGQ6IFsnZGFuJywgJ2RhbmEnLCAnZGFuYSddLAorICAgICAg ICAgICAgTU06IFsnbWVzZWMnLCAnbWVzZWNhJywgJ21lc2VjaSddLAorICAg ICAgICAgICAgeXk6IFsnZ29kaW5hJywgJ2dvZGluZScsICdnb2RpbmEnXQor ICAgICAgICB9LAorICAgICAgICBjb3JyZWN0R3JhbW1hdGljYWxDYXNlOiBm dW5jdGlvbiAobnVtYmVyLCB3b3JkS2V5KSB7CisgICAgICAgICAgICByZXR1 cm4gbnVtYmVyID09PSAxID8gd29yZEtleVswXSA6IChudW1iZXIgPj0gMiAm JiBudW1iZXIgPD0gNCA/IHdvcmRLZXlbMV0gOiB3b3JkS2V5WzJdKTsKKyAg ICAgICAgfSwKKyAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbiAobnVtYmVy LCB3aXRob3V0U3VmZml4LCBrZXkpIHsKKyAgICAgICAgICAgIHZhciB3b3Jk S2V5ID0gc3JfX3RyYW5zbGF0b3Iud29yZHNba2V5XTsKKyAgICAgICAgICAg IGlmIChrZXkubGVuZ3RoID09PSAxKSB7CisgICAgICAgICAgICAgICAgcmV0 dXJuIHdpdGhvdXRTdWZmaXggPyB3b3JkS2V5WzBdIDogd29yZEtleVsxXTsK KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJu IG51bWJlciArICcgJyArIHNyX190cmFuc2xhdG9yLmNvcnJlY3RHcmFtbWF0 aWNhbENhc2UobnVtYmVyLCB3b3JkS2V5KTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgfQorICAgIH07CisKKyAgICB2YXIgc3IgPSBtb21lbnRfX2RlZmF1 bHQuZGVmaW5lTG9jYWxlKCdzcicsIHsKKyAgICAgICAgbW9udGhzOiAnamFu dWFyX2ZlYnJ1YXJfbWFydF9hcHJpbF9tYWpfanVuX2p1bF9hdmd1c3Rfc2Vw dGVtYmFyX29rdG9iYXJfbm92ZW1iYXJfZGVjZW1iYXInLnNwbGl0KCdfJyks CisgICAgICAgIG1vbnRoc1Nob3J0OiAnamFuLl9mZWIuX21hci5fYXByLl9t YWpfanVuX2p1bF9hdmcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4nLnNwbGl0KCdf JyksCisgICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsCisgICAgICAg IHdlZWtkYXlzOiAnbmVkZWxqYV9wb25lZGVsamFrX3V0b3Jha19zcmVkYV/E jWV0dnJ0YWtfcGV0YWtfc3Vib3RhJy5zcGxpdCgnXycpLAorICAgICAgICB3 ZWVrZGF5c1Nob3J0OiAnbmVkLl9wb24uX3V0by5fc3JlLl/EjWV0Ll9wZXQu X3N1Yi4nLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluOiAnbmVf cG9fdXRfc3JfxI1lX3BlX3N1Jy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVr ZGF5c1BhcnNlRXhhY3QgOiB0cnVlLAorICAgICAgICBsb25nRGF0ZUZvcm1h dDogeworICAgICAgICAgICAgTFQ6ICdIOm1tJywKKyAgICAgICAgICAgIExU UyA6ICdIOm1tOnNzJywKKyAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJywK KyAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJywKKyAgICAgICAgICAg IExMTDogJ0QuIE1NTU0gWVlZWSBIOm1tJywKKyAgICAgICAgICAgIExMTEw6 ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbScKKyAgICAgICAgfSwKKyAgICAg ICAgY2FsZW5kYXI6IHsKKyAgICAgICAgICAgIHNhbWVEYXk6ICdbZGFuYXMg dV0gTFQnLAorICAgICAgICAgICAgbmV4dERheTogJ1tzdXRyYSB1XSBMVCcs CisgICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkgeworICAgICAg ICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkgeworICAgICAgICAgICAg ICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gJ1t1XSBbbmVkZWxqdV0gW3VdIExUJzsKKyAgICAgICAgICAgICAgICAg ICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb dV0gW3NyZWR1XSBbdV0gTFQnOworICAgICAgICAgICAgICAgICAgICBjYXNl IDY6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3Vi b3R1XSBbdV0gTFQnOworICAgICAgICAgICAgICAgICAgICBjYXNlIDE6Cisg ICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAg ICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CisgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBkZGRkIFt1XSBMVCc7 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgIGxhc3REYXkgIDogJ1tqdcSNZSB1XSBMVCcsCisgICAgICAgICAgICBs YXN0V2VlayA6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIg bGFzdFdlZWtEYXlzID0gWworICAgICAgICAgICAgICAgICAgICAnW3Byb8Wh bGVdIFtuZWRlbGplXSBbdV0gTFQnLAorICAgICAgICAgICAgICAgICAgICAn W3Byb8WhbG9nXSBbcG9uZWRlbGprYV0gW3VdIExUJywKKyAgICAgICAgICAg ICAgICAgICAgJ1twcm/FoWxvZ10gW3V0b3JrYV0gW3VdIExUJywKKyAgICAg ICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbc3JlZGVdIFt1XSBMVCcsCisg ICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFvEjWV0dnJ0a2FdIFt1 XSBMVCcsCisgICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFtwZXRr YV0gW3VdIExUJywKKyAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBb c3Vib3RlXSBbdV0gTFQnCisgICAgICAgICAgICAgICAgXTsKKyAgICAgICAg ICAgICAgICByZXR1cm4gbGFzdFdlZWtEYXlzW3RoaXMuZGF5KCldOworICAg ICAgICAgICAgfSwKKyAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnCisgICAg ICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZSA6IHsKKyAgICAgICAgICAg IGZ1dHVyZSA6ICd6YSAlcycsCisgICAgICAgICAgICBwYXN0ICAgOiAncHJl ICVzJywKKyAgICAgICAgICAgIHMgICAgICA6ICduZWtvbGlrbyBzZWt1bmRp JywKKyAgICAgICAgICAgIG0gICAgICA6IHNyX190cmFuc2xhdG9yLnRyYW5z bGF0ZSwKKyAgICAgICAgICAgIG1tICAgICA6IHNyX190cmFuc2xhdG9yLnRy YW5zbGF0ZSwKKyAgICAgICAgICAgIGggICAgICA6IHNyX190cmFuc2xhdG9y LnRyYW5zbGF0ZSwKKyAgICAgICAgICAgIGhoICAgICA6IHNyX190cmFuc2xh dG9yLnRyYW5zbGF0ZSwKKyAgICAgICAgICAgIGQgICAgICA6ICdkYW4nLAor ICAgICAgICAgICAgZGQgICAgIDogc3JfX3RyYW5zbGF0b3IudHJhbnNsYXRl LAorICAgICAgICAgICAgTSAgICAgIDogJ21lc2VjJywKKyAgICAgICAgICAg IE1NICAgICA6IHNyX190cmFuc2xhdG9yLnRyYW5zbGF0ZSwKKyAgICAgICAg ICAgIHkgICAgICA6ICdnb2RpbnUnLAorICAgICAgICAgICAgeXkgICAgIDog c3JfX3RyYW5zbGF0b3IudHJhbnNsYXRlCisgICAgICAgIH0sCisgICAgICAg IG9yZGluYWxQYXJzZTogL1xkezEsMn1cLi8sCisgICAgICAgIG9yZGluYWwg OiAnJWQuJywKKyAgICAgICAgd2VlayA6IHsKKyAgICAgICAgICAgIGRvdyA6 IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgor ICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlu cyBKYW4gMXN0IGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLgorICAg ICAgICB9CisgICAgfSk7CisKKworCisgICAgdmFyIHNzID0gbW9tZW50X19k ZWZhdWx0LmRlZmluZUxvY2FsZSgnc3MnLCB7CisgICAgICAgIG1vbnRocyA6 ICJCaGltYmlkdndhbmVfSW5kbG92YW5hX0luZGxvdidsZW5raHVsdV9NYWJh c2FfSW5raHdla2h3ZXRpX0luaGxhYmFfS2hvbHdhbmVfSW5nY2lfSW55b25p X0ltcGhhbGFfTHdldGlfSW5nb25nb25pIi5zcGxpdCgnXycpLAorICAgICAg ICBtb250aHNTaG9ydCA6ICdCaGlfSW5hX0ludV9NYWJfSW5rX0luaF9LaG9f SWdjX0lueV9JbXBfTHdlX0lnbycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vl a2RheXMgOiAnTGlzb250Zm9fVW1zb21idWx1a29fTGVzaWJpbGlfTGVzaXRz YXRmdV9MZXNpbmVfTGVzaWhsYW51X1VtZ2NpYmVsbycuc3BsaXQoJ18nKSwK KyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdMaXNfVW1iX0xzYl9MZXNfTHNp X0xzaF9VbWcnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDog J0xpX1VzX0xiX0x0X0xzX0xoX1VnJy5zcGxpdCgnXycpLAorICAgICAgICB3 ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLAorICAgICAgICBsb25nRGF0ZUZv cm1hdCA6IHsKKyAgICAgICAgICAgIExUIDogJ2g6bW0gQScsCisgICAgICAg ICAgICBMVFMgOiAnaDptbTpzcyBBJywKKyAgICAgICAgICAgIEwgOiAnREQv TU0vWVlZWScsCisgICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsCisg ICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgaDptbSBBJywKKyAgICAg ICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBJworICAg ICAgICB9LAorICAgICAgICBjYWxlbmRhciA6IHsKKyAgICAgICAgICAgIHNh bWVEYXkgOiAnW05hbXVobGEgbmdhXSBMVCcsCisgICAgICAgICAgICBuZXh0 RGF5IDogJ1tLdXNhc2EgbmdhXSBMVCcsCisgICAgICAgICAgICBuZXh0V2Vl ayA6ICdkZGRkIFtuZ2FdIExUJywKKyAgICAgICAgICAgIGxhc3REYXkgOiAn W0l0b2xvIG5nYV0gTFQnLAorICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRk ZCBbbGVsaXBoZWxpbGVdIFtuZ2FdIExUJywKKyAgICAgICAgICAgIHNhbWVF bHNlIDogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZSA6 IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICduZ2EgJXMnLAorICAgICAgICAg ICAgcGFzdCA6ICd3ZW50ZWthIG5nYSAlcycsCisgICAgICAgICAgICBzIDog J2VtaXp1endhbmEgbG9tY2FuZScsCisgICAgICAgICAgICBtIDogJ3VtenV6 dScsCisgICAgICAgICAgICBtbSA6ICclZCBlbWl6dXp1JywKKyAgICAgICAg ICAgIGggOiAnbGlob3JhJywKKyAgICAgICAgICAgIGhoIDogJyVkIGVtYWhv cmEnLAorICAgICAgICAgICAgZCA6ICdsaWxhbmdhJywKKyAgICAgICAgICAg IGRkIDogJyVkIGVtYWxhbmdhJywKKyAgICAgICAgICAgIE0gOiAnaW55YW5n YScsCisgICAgICAgICAgICBNTSA6ICclZCB0aW55YW5nYScsCisgICAgICAg ICAgICB5IDogJ3Vtbnlha2EnLAorICAgICAgICAgICAgeXkgOiAnJWQgaW1p bnlha2EnCisgICAgICAgIH0sCisgICAgICAgIG1lcmlkaWVtUGFyc2U6IC9l a3VzZW5pfGVtaW5pfGVudHNhbWJhbWF8ZWJ1c3VrdS8sCisgICAgICAgIG1l cmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7 CisgICAgICAgICAgICBpZiAoaG91cnMgPCAxMSkgeworICAgICAgICAgICAg ICAgIHJldHVybiAnZWt1c2VuaSc7CisgICAgICAgICAgICB9IGVsc2UgaWYg KGhvdXJzIDwgMTUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2VtaW5p JzsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkgeworICAg ICAgICAgICAgICAgIHJldHVybiAnZW50c2FtYmFtYSc7CisgICAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiAnZWJ1c3VrdSc7 CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIG1lcmlkaWVt SG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkgeworICAgICAgICAg ICAgaWYgKGhvdXIgPT09IDEyKSB7CisgICAgICAgICAgICAgICAgaG91ciA9 IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobWVyaWRpZW0g PT09ICdla3VzZW5pJykgeworICAgICAgICAgICAgICAgIHJldHVybiBob3Vy OworICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ2VtaW5p JykgeworICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91 ciA6IGhvdXIgKyAxMjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRp ZW0gPT09ICdlbnRzYW1iYW1hJyB8fCBtZXJpZGllbSA9PT0gJ2VidXN1a3Un KSB7CisgICAgICAgICAgICAgICAgaWYgKGhvdXIgPT09IDApIHsKKyAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7CisgICAgICAgICAg ICB9CisgICAgICAgIH0sCisgICAgICAgIG9yZGluYWxQYXJzZTogL1xkezEs Mn0vLAorICAgICAgICBvcmRpbmFsIDogJyVkJywKKyAgICAgICAgd2VlayA6 IHsKKyAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmly c3QgZGF5IG9mIHRoZSB3ZWVrLgorICAgICAgICAgICAgZG95IDogNCAgLy8g VGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3 ZWVrIG9mIHRoZSB5ZWFyLgorICAgICAgICB9CisgICAgfSk7CisKKworICAg IHZhciBzdiA9IG1vbWVudF9fZGVmYXVsdC5kZWZpbmVMb2NhbGUoJ3N2Jywg eworICAgICAgICBtb250aHMgOiAnamFudWFyaV9mZWJydWFyaV9tYXJzX2Fw cmlsX21hal9qdW5pX2p1bGlfYXVndXN0aV9zZXB0ZW1iZXJfb2t0b2Jlcl9u b3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoJ18nKSwKKyAgICAgICAgbW9udGhz U2hvcnQgOiAnamFuX2ZlYl9tYXJfYXByX21hal9qdW5fanVsX2F1Z19zZXBf b2t0X25vdl9kZWMnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzIDog J3PDtm5kYWdfbcOlbmRhZ190aXNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFn X2zDtnJkYWcnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzU2hvcnQg OiAnc8O2bl9tw6VuX3Rpc19vbnNfdG9yX2ZyZV9sw7ZyJy5zcGxpdCgnXycp LAorICAgICAgICB3ZWVrZGF5c01pbiA6ICdzw7ZfbcOlX3RpX29uX3RvX2Zy X2zDticuc3BsaXQoJ18nKSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7 CisgICAgICAgICAgICBMVCA6ICdISDptbScsCisgICAgICAgICAgICBMVFMg OiAnSEg6bW06c3MnLAorICAgICAgICAgICAgTCA6ICdZWVlZLU1NLUREJywK KyAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJywKKyAgICAgICAgICAg IExMTCA6ICdEIE1NTU0gWVlZWSBba2wuXSBISDptbScsCisgICAgICAgICAg ICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgW2tsLl0gSEg6bW0nLAorICAg ICAgICAgICAgbGxsIDogJ0QgTU1NIFlZWVkgSEg6bW0nLAorICAgICAgICAg ICAgbGxsbCA6ICdkZGQgRCBNTU0gWVlZWSBISDptbScKKyAgICAgICAgfSwK KyAgICAgICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBzYW1lRGF5OiAn W0lkYWddIExUJywKKyAgICAgICAgICAgIG5leHREYXk6ICdbSW1vcmdvbl0g TFQnLAorICAgICAgICAgICAgbGFzdERheTogJ1tJZ8Olcl0gTFQnLAorICAg ICAgICAgICAgbmV4dFdlZWs6ICdbUMOlXSBkZGRkIExUJywKKyAgICAgICAg ICAgIGxhc3RXZWVrOiAnW0ldIGRkZGRbc10gTFQnLAorICAgICAgICAgICAg c2FtZUVsc2U6ICdMJworICAgICAgICB9LAorICAgICAgICByZWxhdGl2ZVRp bWUgOiB7CisgICAgICAgICAgICBmdXR1cmUgOiAnb20gJXMnLAorICAgICAg ICAgICAgcGFzdCA6ICdmw7ZyICVzIHNlZGFuJywKKyAgICAgICAgICAgIHMg OiAnbsOlZ3JhIHNla3VuZGVyJywKKyAgICAgICAgICAgIG0gOiAnZW4gbWlu dXQnLAorICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlcicsCisgICAgICAg ICAgICBoIDogJ2VuIHRpbW1lJywKKyAgICAgICAgICAgIGhoIDogJyVkIHRp bW1hcicsCisgICAgICAgICAgICBkIDogJ2VuIGRhZycsCisgICAgICAgICAg ICBkZCA6ICclZCBkYWdhcicsCisgICAgICAgICAgICBNIDogJ2VuIG3DpW5h ZCcsCisgICAgICAgICAgICBNTSA6ICclZCBtw6VuYWRlcicsCisgICAgICAg ICAgICB5IDogJ2V0dCDDpXInLAorICAgICAgICAgICAgeXkgOiAnJWQgw6Vy JworICAgICAgICB9LAorICAgICAgICBvcmRpbmFsUGFyc2U6IC9cZHsxLDJ9 KGV8YSkvLAorICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikg eworICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCwKKyAgICAgICAg ICAgICAgICBvdXRwdXQgPSAofn4obnVtYmVyICUgMTAwIC8gMTApID09PSAx KSA/ICdlJyA6CisgICAgICAgICAgICAgICAgKGIgPT09IDEpID8gJ2EnIDoK KyAgICAgICAgICAgICAgICAoYiA9PT0gMikgPyAnYScgOgorICAgICAgICAg ICAgICAgIChiID09PSAzKSA/ICdlJyA6ICdlJzsKKyAgICAgICAgICAgIHJl dHVybiBudW1iZXIgKyBvdXRwdXQ7CisgICAgICAgIH0sCisgICAgICAgIHdl ZWsgOiB7CisgICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhl IGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KKyAgICAgICAgICAgIGRveSA6IDQg IC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmly c3Qgd2VlayBvZiB0aGUgeWVhci4KKyAgICAgICAgfQorICAgIH0pOworCisK KyAgICB2YXIgc3cgPSBtb21lbnRfX2RlZmF1bHQuZGVmaW5lTG9jYWxlKCdz dycsIHsKKyAgICAgICAgbW9udGhzIDogJ0phbnVhcmlfRmVicnVhcmlfTWFj aGlfQXByaWxpX01laV9KdW5pX0p1bGFpX0Fnb3N0aV9TZXB0ZW1iYV9Pa3Rv YmFfTm92ZW1iYV9EZXNlbWJhJy5zcGxpdCgnXycpLAorICAgICAgICBtb250 aHNTaG9ydCA6ICdKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfQWdvX1Nl cF9Pa3RfTm92X0Rlcycuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXMg OiAnSnVtYXBpbGlfSnVtYXRhdHVfSnVtYW5uZV9KdW1hdGFub19BbGhhbWlz aV9JanVtYWFfSnVtYW1vc2knLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtk YXlzU2hvcnQgOiAnSnBsX0p0YXRfSm5uZV9KdGFuX0FsaF9Jam1fSm1vcycu c3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNNaW4gOiAnSjJfSjNfSjRf SjVfQWxfSWpfSjEnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzUGFy c2VFeGFjdCA6IHRydWUsCisgICAgICAgIGxvbmdEYXRlRm9ybWF0IDogewor ICAgICAgICAgICAgTFQgOiAnSEg6bW0nLAorICAgICAgICAgICAgTFRTIDog J0hIOm1tOnNzJywKKyAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsCisg ICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsCisgICAgICAgICAgICBM TEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLAorICAgICAgICAgICAgTExMTCA6 ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScKKyAgICAgICAgfSwKKyAgICAg ICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBzYW1lRGF5IDogJ1tsZW8g c2FhXSBMVCcsCisgICAgICAgICAgICBuZXh0RGF5IDogJ1trZXNobyBzYWFd IExUJywKKyAgICAgICAgICAgIG5leHRXZWVrIDogJ1t3aWtpIGlqYXlvXSBk ZGRkIFtzYWF0XSBMVCcsCisgICAgICAgICAgICBsYXN0RGF5IDogJ1tqYW5h XSBMVCcsCisgICAgICAgICAgICBsYXN0V2VlayA6ICdbd2lraSBpbGl5b3Bp dGFdIGRkZGQgW3NhYXRdIExUJywKKyAgICAgICAgICAgIHNhbWVFbHNlIDog J0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZSA6IHsKKyAg ICAgICAgICAgIGZ1dHVyZSA6ICclcyBiYWFkYXllJywKKyAgICAgICAgICAg IHBhc3QgOiAndG9rZWEgJXMnLAorICAgICAgICAgICAgcyA6ICdoaXZpIHB1 bmRlJywKKyAgICAgICAgICAgIG0gOiAnZGFraWthIG1vamEnLAorICAgICAg ICAgICAgbW0gOiAnZGFraWthICVkJywKKyAgICAgICAgICAgIGggOiAnc2Fh IGxpbW9qYScsCisgICAgICAgICAgICBoaCA6ICdtYXNhYSAlZCcsCisgICAg ICAgICAgICBkIDogJ3Npa3UgbW9qYScsCisgICAgICAgICAgICBkZCA6ICdt YXNpa3UgJWQnLAorICAgICAgICAgICAgTSA6ICdtd2V6aSBtbW9qYScsCisg ICAgICAgICAgICBNTSA6ICdtaWV6aSAlZCcsCisgICAgICAgICAgICB5IDog J213YWthIG1tb2phJywKKyAgICAgICAgICAgIHl5IDogJ21pYWthICVkJwor ICAgICAgICB9LAorICAgICAgICB3ZWVrIDogeworICAgICAgICAgICAgZG93 IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsu CisgICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRh aW5zIEphbiAxc3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuCisg ICAgICAgIH0KKyAgICB9KTsKKworCisgICAgdmFyIHRhX19zeW1ib2xNYXAg PSB7CisgICAgICAgICcxJzogJ+CvpycsCisgICAgICAgICcyJzogJ+CvqCcs CisgICAgICAgICczJzogJ+CvqScsCisgICAgICAgICc0JzogJ+CvqicsCisg ICAgICAgICc1JzogJ+CvqycsCisgICAgICAgICc2JzogJ+CvrCcsCisgICAg ICAgICc3JzogJ+CvrScsCisgICAgICAgICc4JzogJ+CvricsCisgICAgICAg ICc5JzogJ+CvrycsCisgICAgICAgICcwJzogJ+CvpicKKyAgICB9LCB0YV9f bnVtYmVyTWFwID0geworICAgICAgICAn4K+nJzogJzEnLAorICAgICAgICAn 4K+oJzogJzInLAorICAgICAgICAn4K+pJzogJzMnLAorICAgICAgICAn4K+q JzogJzQnLAorICAgICAgICAn4K+rJzogJzUnLAorICAgICAgICAn4K+sJzog JzYnLAorICAgICAgICAn4K+tJzogJzcnLAorICAgICAgICAn4K+uJzogJzgn LAorICAgICAgICAn4K+vJzogJzknLAorICAgICAgICAn4K+mJzogJzAnCisg ICAgfTsKKworICAgIHZhciB0YSA9IG1vbWVudF9fZGVmYXVsdC5kZWZpbmVM b2NhbGUoJ3RhJywgeworICAgICAgICBtb250aHMgOiAn4K6c4K6p4K614K6w 4K6/X+CuquCuv+CuquCvjeCusOCuteCusOCuv1/grq7grr7grrDgr43grprg r41f4K6P4K6q4K+N4K6w4K6y4K+NX+CuruCvh1/grpzgr4Lgrqngr41f4K6c 4K+C4K6y4K+IX+CuhuCuleCuuOCvjeCun+CvjV/grprgr4bgrqrgr43grp/g r4bgrq7gr43grqrgrrDgr41f4K6F4K6V4K+N4K6f4K+H4K6+4K6q4K6w4K+N X+CuqOCuteCuruCvjeCuquCusOCvjV/grp/grr/grprgrq7gr43grqrgrrDg r40nLnNwbGl0KCdfJyksCisgICAgICAgIG1vbnRoc1Nob3J0IDogJ+CunOCu qeCuteCusOCuv1/grqrgrr/grqrgr43grrDgrrXgrrDgrr9f4K6u4K6+4K6w 4K+N4K6a4K+NX+Cuj+CuquCvjeCusOCusuCvjV/grq7gr4df4K6c4K+C4K6p 4K+NX+CunOCvguCusuCviF/grobgrpXgrrjgr43grp/gr41f4K6a4K+G4K6q 4K+N4K6f4K+G4K6u4K+N4K6q4K6w4K+NX+CuheCuleCvjeCun+Cvh+CuvuCu quCusOCvjV/grqjgrrXgrq7gr43grqrgrrDgr41f4K6f4K6/4K6a4K6u4K+N 4K6q4K6w4K+NJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5cyA6ICfg rp7grr7grq/grr/grrHgr43grrHgr4HgrpXgr43grpXgrr/grrTgrq7gr4hf 4K6k4K6/4K6Z4K+N4K6V4K6f4K+N4K6V4K6/4K604K6u4K+IX+CumuCvhuCu teCvjeCuteCuvuCur+CvjeCuleCuv+CutOCuruCviF/grqrgr4HgrqTgrqng r43grpXgrr/grrTgrq7gr4hf4K614K6/4K6v4K6+4K604K6V4K+N4K6V4K6/ 4K604K6u4K+IX+CuteCvhuCus+CvjeCus+Cuv+CuleCvjeCuleCuv+CutOCu ruCviF/grprgrqngrr/grpXgr43grpXgrr/grrTgrq7gr4gnLnNwbGl0KCdf JyksCisgICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4K6e4K6+4K6v4K6/4K6x 4K+BX+CupOCuv+CumeCvjeCuleCus+CvjV/grprgr4bgrrXgr43grrXgrr7g rq/gr41f4K6q4K+B4K6k4K6p4K+NX+CuteCuv+Cur+CuvuCutOCuqeCvjV/g rrXgr4bgrrPgr43grrPgrr9f4K6a4K6p4K6/Jy5zcGxpdCgnXycpLAorICAg ICAgICB3ZWVrZGF5c01pbiA6ICfgrp7grr5f4K6k4K6/X+CumuCvhl/grqrg r4Ff4K614K6/X+CuteCvhl/grponLnNwbGl0KCdfJyksCisgICAgICAgIGxv bmdEYXRlRm9ybWF0IDogeworICAgICAgICAgICAgTFQgOiAnSEg6bW0nLAor ICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJywKKyAgICAgICAgICAgIEwg OiAnREQvTU0vWVlZWScsCisgICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZ WScsCisgICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVksIEhIOm1tJywK KyAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVksIEhIOm1t JworICAgICAgICB9LAorICAgICAgICBjYWxlbmRhciA6IHsKKyAgICAgICAg ICAgIHNhbWVEYXkgOiAnW+Cuh+CuqeCvjeCuseCvgV0gTFQnLAorICAgICAg ICAgICAgbmV4dERheSA6ICdb4K6o4K6+4K6z4K+IXSBMVCcsCisgICAgICAg ICAgICBuZXh0V2VlayA6ICdkZGRkLCBMVCcsCisgICAgICAgICAgICBsYXN0 RGF5IDogJ1vgrqjgr4fgrrHgr43grrHgr4FdIExUJywKKyAgICAgICAgICAg IGxhc3RXZWVrIDogJ1vgrpXgrp/grqjgr43grqQg4K614K6+4K6w4K6u4K+N XSBkZGRkLCBMVCcsCisgICAgICAgICAgICBzYW1lRWxzZSA6ICdMJworICAg ICAgICB9LAorICAgICAgICByZWxhdGl2ZVRpbWUgOiB7CisgICAgICAgICAg ICBmdXR1cmUgOiAnJXMg4K6H4K6y4K+NJywKKyAgICAgICAgICAgIHBhc3Qg OiAnJXMg4K6u4K+B4K6p4K+NJywKKyAgICAgICAgICAgIHMgOiAn4K6S4K6w 4K+BIOCumuCuv+CusiDgrrXgrr/grqjgrr7grp/grr/grpXgrrPgr40nLAor ICAgICAgICAgICAgbSA6ICfgrpLgrrDgr4Eg4K6o4K6/4K6u4K6/4K6f4K6u 4K+NJywKKyAgICAgICAgICAgIG1tIDogJyVkIOCuqOCuv+CuruCuv+Cun+Cu meCvjeCuleCus+CvjScsCisgICAgICAgICAgICBoIDogJ+CukuCusOCvgSDg rq7grqPgrr8g4K6o4K+H4K6w4K6u4K+NJywKKyAgICAgICAgICAgIGhoIDog JyVkIOCuruCuo+CuvyDgrqjgr4fgrrDgrq7gr40nLAorICAgICAgICAgICAg ZCA6ICfgrpLgrrDgr4Eg4K6o4K6+4K6z4K+NJywKKyAgICAgICAgICAgIGRk IDogJyVkIOCuqOCuvuCun+CvjeCuleCus+CvjScsCisgICAgICAgICAgICBN IDogJ+CukuCusOCvgSDgrq7grr7grqTgrq7gr40nLAorICAgICAgICAgICAg TU0gOiAnJWQg4K6u4K6+4K6k4K6Z4K+N4K6V4K6z4K+NJywKKyAgICAgICAg ICAgIHkgOiAn4K6S4K6w4K+BIOCuteCusOCvgeCun+CuruCvjScsCisgICAg ICAgICAgICB5eSA6ICclZCDgrobgrqPgr43grp/gr4HgrpXgrrPgr40nCisg ICAgICAgIH0sCisgICAgICAgIG9yZGluYWxQYXJzZTogL1xkezEsMn3grrXg rqTgr4EvLAorICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikg eworICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfgrrXgrqTgr4EnOwor ICAgICAgICB9LAorICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmlu ZykgeworICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4K+n 4K+o4K+p4K+q4K+r4K+s4K+t4K+u4K+v4K+mXS9nLCBmdW5jdGlvbiAobWF0 Y2gpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGFfX251bWJlck1hcFtt YXRjaF07CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAgICAg cG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykgeworICAgICAgICAgICAg cmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cZC9nLCBmdW5jdGlvbiAobWF0Y2gp IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGFfX3N5bWJvbE1hcFttYXRj aF07CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAgICAgLy8g cmVmZXIgaHR0cDovL3RhLndpa2lwZWRpYS5vcmcvcy8xZXIxCisgICAgICAg IG1lcmlkaWVtUGFyc2U6IC/grq/grr7grq7grq7gr4184K614K+I4K6V4K6x 4K+IfOCuleCuvuCusuCviHzgrqjgrqPgr43grqrgrpXgrrLgr4184K6O4K6x 4K+N4K6q4K6+4K6f4K+BfOCuruCuvuCusuCviC8sCisgICAgICAgIG1lcmlk aWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikgeworICAg ICAgICAgICAgaWYgKGhvdXIgPCAyKSB7CisgICAgICAgICAgICAgICAgcmV0 dXJuICcg4K6v4K6+4K6u4K6u4K+NJzsKKyAgICAgICAgICAgIH0gZWxzZSBp ZiAoaG91ciA8IDYpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJyDgrrXg r4jgrpXgrrHgr4gnOyAgLy8g4K614K+I4K6V4K6x4K+ICisgICAgICAgICAg ICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkgeworICAgICAgICAgICAgICAgIHJl dHVybiAnIOCuleCuvuCusuCviCc7IC8vIOCuleCuvuCusuCviAorICAgICAg ICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTQpIHsKKyAgICAgICAgICAgICAg ICByZXR1cm4gJyDgrqjgrqPgr43grqrgrpXgrrLgr40nOyAvLyDgrqjgrqPg r43grqrgrpXgrrLgr40KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8 IDE4KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICcg4K6O4K6x4K+N4K6q 4K6+4K6f4K+BJzsgLy8g4K6O4K6x4K+N4K6q4K6+4K6f4K+BCisgICAgICAg ICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMikgeworICAgICAgICAgICAgICAg IHJldHVybiAnIOCuruCuvuCusuCviCc7IC8vIOCuruCuvuCusuCviAorICAg ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJyDg rq/grr7grq7grq7gr40nOworICAgICAgICAgICAgfQorICAgICAgICB9LAor ICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRp ZW0pIHsKKyAgICAgICAgICAgIGlmIChob3VyID09PSAxMikgeworICAgICAg ICAgICAgICAgIGhvdXIgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAg ICAgaWYgKG1lcmlkaWVtID09PSAn4K6v4K6+4K6u4K6u4K+NJykgeworICAg ICAgICAgICAgICAgIHJldHVybiBob3VyIDwgMiA/IGhvdXIgOiBob3VyICsg MTI7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4K61 4K+I4K6V4K6x4K+IJyB8fCBtZXJpZGllbSA9PT0gJ+CuleCuvuCusuCviCcp IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaG91cjsKKyAgICAgICAgICAg IH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgrqjgrqPgr43grqrgrpXgrrLg r40nKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBo b3VyIDogaG91ciArIDEyOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg ICAgICAgICAgICByZXR1cm4gaG91ciArIDEyOworICAgICAgICAgICAgfQor ICAgICAgICB9LAorICAgICAgICB3ZWVrIDogeworICAgICAgICAgICAgZG93 IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsu CisgICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRh aW5zIEphbiAxc3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuCisg ICAgICAgIH0KKyAgICB9KTsKKworCisgICAgdmFyIHRlID0gbW9tZW50X19k ZWZhdWx0LmRlZmluZUxvY2FsZSgndGUnLCB7CisgICAgICAgIG1vbnRocyA6 ICfgsJzgsKjgsLXgsLDgsL9f4LCr4LC/4LCs4LGN4LCw4LC14LCw4LC/X+Cw ruCwvuCwsOCxjeCwmuCwv1/gsI/gsKrgsY3gsLDgsL/gsLLgsY1f4LCu4LGH X+CwnOCxguCwqOCxjV/gsJzgsYLgsLLgsYbgsZZf4LCG4LCX4LC44LGN4LCf 4LGBX+CwuOCxhuCwquCxjeCwn+CxhuCwguCwrOCwsOCxjV/gsIXgsJXgsY3g sJ/gsYvgsKzgsLDgsY1f4LCo4LC14LCC4LCs4LCw4LGNX+CwoeCwv+CwuOCx huCwguCwrOCwsOCxjScuc3BsaXQoJ18nKSwKKyAgICAgICAgbW9udGhzU2hv cnQgOiAn4LCc4LCoLl/gsKvgsL/gsKzgsY3gsLAuX+CwruCwvuCwsOCxjeCw muCwv1/gsI/gsKrgsY3gsLDgsL8uX+CwruCxh1/gsJzgsYLgsKjgsY1f4LCc 4LGC4LCy4LGG4LGWX+CwhuCwly5f4LC44LGG4LCq4LGNLl/gsIXgsJXgsY3g sJ/gsYsuX+CwqOCwtS5f4LCh4LC/4LC44LGGLicuc3BsaXQoJ18nKSwKKyAg ICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsCisgICAgICAgIHdlZWtk YXlzIDogJ+CwhuCwpuCwv+CwteCwvuCwsOCwgl/gsLjgsYvgsK7gsLXgsL7g sLDgsIJf4LCu4LCC4LCX4LCz4LC14LC+4LCw4LCCX+CwrOCxgeCwp+CwteCw vuCwsOCwgl/gsJfgsYHgsLDgsYHgsLXgsL7gsLDgsIJf4LC24LGB4LCV4LGN 4LCw4LC14LC+4LCw4LCCX+CwtuCwqOCwv+CwteCwvuCwsOCwgicuc3BsaXQo J18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgsIbgsKbgsL9f4LC4 4LGL4LCuX+CwruCwguCwl+Cws1/gsKzgsYHgsKdf4LCX4LGB4LCw4LGBX+Cw tuCxgeCwleCxjeCwsF/gsLbgsKjgsL8nLnNwbGl0KCdfJyksCisgICAgICAg IHdlZWtkYXlzTWluIDogJ+Cwhl/gsLjgsYtf4LCu4LCCX+CwrOCxgV/gsJfg sYFf4LC24LGBX+Cwticuc3BsaXQoJ18nKSwKKyAgICAgICAgbG9uZ0RhdGVG b3JtYXQgOiB7CisgICAgICAgICAgICBMVCA6ICdBIGg6bW0nLAorICAgICAg ICAgICAgTFRTIDogJ0EgaDptbTpzcycsCisgICAgICAgICAgICBMIDogJ0RE L01NL1lZWVknLAorICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLAor ICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0nLAorICAg ICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tJwor ICAgICAgICB9LAorICAgICAgICBjYWxlbmRhciA6IHsKKyAgICAgICAgICAg IHNhbWVEYXkgOiAnW+CwqOCxh+CwoeCxgV0gTFQnLAorICAgICAgICAgICAg bmV4dERheSA6ICdb4LCw4LGH4LCq4LGBXSBMVCcsCisgICAgICAgICAgICBu ZXh0V2VlayA6ICdkZGRkLCBMVCcsCisgICAgICAgICAgICBsYXN0RGF5IDog J1vgsKjgsL/gsKjgsY3gsKhdIExUJywKKyAgICAgICAgICAgIGxhc3RXZWVr IDogJ1vgsJfgsKRdIGRkZGQsIExUJywKKyAgICAgICAgICAgIHNhbWVFbHNl IDogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZSA6IHsK KyAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDgsLLgsYsnLAorICAgICAgICAg ICAgcGFzdCA6ICclcyDgsJXgsY3gsLDgsL/gsKTgsIInLAorICAgICAgICAg ICAgcyA6ICfgsJXgsYrgsKjgsY3gsKjgsL8g4LCV4LGN4LC34LCj4LC+4LCy 4LGBJywKKyAgICAgICAgICAgIG0gOiAn4LCS4LCVIOCwqOCwv+CwruCwv+Cw t+CwgicsCisgICAgICAgICAgICBtbSA6ICclZCDgsKjgsL/gsK7gsL/gsLfg sL7gsLLgsYEnLAorICAgICAgICAgICAgaCA6ICfgsJLgsJUg4LCX4LCC4LCf JywKKyAgICAgICAgICAgIGhoIDogJyVkIOCwl+CwguCwn+CwsuCxgScsCisg ICAgICAgICAgICBkIDogJ+CwkuCwlSDgsLDgsYvgsJzgsYEnLAorICAgICAg ICAgICAgZGQgOiAnJWQg4LCw4LGL4LCc4LGB4LCy4LGBJywKKyAgICAgICAg ICAgIE0gOiAn4LCS4LCVIOCwqOCxhuCwsicsCisgICAgICAgICAgICBNTSA6 ICclZCDgsKjgsYbgsLLgsLLgsYEnLAorICAgICAgICAgICAgeSA6ICfgsJLg sJUg4LC44LCC4LC14LCk4LGN4LC44LCw4LCCJywKKyAgICAgICAgICAgIHl5 IDogJyVkIOCwuOCwguCwteCwpOCxjeCwuOCwsOCwvuCwsuCxgScKKyAgICAg ICAgfSwKKyAgICAgICAgb3JkaW5hbFBhcnNlIDogL1xkezEsMn3gsLUvLAor ICAgICAgICBvcmRpbmFsIDogJyVk4LC1JywKKyAgICAgICAgbWVyaWRpZW1Q YXJzZTogL+CwsOCwvuCwpOCxjeCwsOCwv3zgsIngsKbgsK/gsIJ84LCu4LCn 4LGN4LCv4LC+4LC54LGN4LCo4LCCfOCwuOCwvuCwr+CwguCwpOCxjeCwsOCw gi8sCisgICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBt ZXJpZGllbSkgeworICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7Cisg ICAgICAgICAgICAgICAgaG91ciA9IDA7CisgICAgICAgICAgICB9CisgICAg ICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgsLDgsL7gsKTgsY3gsLDgsL8n KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6 IGhvdXIgKyAxMjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0g PT09ICfgsIngsKbgsK/gsIInKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu IGhvdXI7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn 4LCu4LCn4LGN4LCv4LC+4LC54LGN4LCo4LCCJykgeworICAgICAgICAgICAg ICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjsKKyAg ICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgsLjgsL7gsK/g sILgsKTgsY3gsLDgsIInKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGhv dXIgKyAxMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg bWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7 CisgICAgICAgICAgICBpZiAoaG91ciA8IDQpIHsKKyAgICAgICAgICAgICAg ICByZXR1cm4gJ+CwsOCwvuCwpOCxjeCwsOCwvyc7CisgICAgICAgICAgICB9 IGVsc2UgaWYgKGhvdXIgPCAxMCkgeworICAgICAgICAgICAgICAgIHJldHVy biAn4LCJ4LCm4LCv4LCCJzsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91 ciA8IDE3KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICfgsK7gsKfgsY3g sK/gsL7gsLngsY3gsKjgsIInOworICAgICAgICAgICAgfSBlbHNlIGlmICho b3VyIDwgMjApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ+CwuOCwvuCw r+CwguCwpOCxjeCwsOCwgic7CisgICAgICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgICAgIHJldHVybiAn4LCw4LC+4LCk4LGN4LCw4LC/JzsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgd2VlayA6IHsKKyAg ICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5 IG9mIHRoZSB3ZWVrLgorICAgICAgICAgICAgZG95IDogNiAgLy8gVGhlIHdl ZWsgdGhhdCBjb250YWlucyBKYW4gMXN0IGlzIHRoZSBmaXJzdCB3ZWVrIG9m IHRoZSB5ZWFyLgorICAgICAgICB9CisgICAgfSk7CisKKworICAgIHZhciB0 aCA9IG1vbWVudF9fZGVmYXVsdC5kZWZpbmVMb2NhbGUoJ3RoJywgeworICAg ICAgICBtb250aHMgOiAn4Lih4LiB4Lij4Liy4LiE4LihX+C4geC4uOC4oeC4 oOC4suC4nuC4seC4meC4mOC5jF/guKHguLXguJnguLLguITguKFf4LmA4Lih 4Lip4Liy4Lii4LiZX+C4nuC4pOC4qeC4oOC4suC4hOC4oV/guKHguLTguJbg uLjguJnguLLguKLguJlf4LiB4Lij4LiB4LiO4Liy4LiE4LihX+C4quC4tOC4 h+C4q+C4suC4hOC4oV/guIHguLHguJnguKLguLLguKLguJlf4LiV4Li44Lil 4Liy4LiE4LihX+C4nuC4pOC4qOC4iOC4tOC4geC4suC4ouC4mV/guJjguLHg uJnguKfguLLguITguKEnLnNwbGl0KCdfJyksCisgICAgICAgIG1vbnRoc1No b3J0IDogJ+C4oS7guIQuX+C4gS7guJ4uX+C4oeC4tS7guIQuX+C5gOC4oS7g uKIuX+C4ni7guIQuX+C4oeC4tC7guKIuX+C4gS7guIQuX+C4qi7guIQuX+C4 gS7guKIuX+C4lS7guIQuX+C4ni7guKIuX+C4mC7guIQuJy5zcGxpdCgnXycp LAorICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLAorICAgICAgICB3 ZWVrZGF5cyA6ICfguK3guLLguJfguLTguJXguKLguYxf4LiI4Lix4LiZ4LiX 4Lij4LmMX+C4reC4seC4h+C4hOC4suC4o1/guJ7guLjguJhf4Lie4Lik4Lir 4Lix4Liq4Lia4LiU4Li1X+C4qOC4uOC4geC4o+C5jF/guYDguKrguLLguKPg uYwnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4Lit 4Liy4LiX4Li04LiV4Lii4LmMX+C4iOC4seC4meC4l+C4o+C5jF/guK3guLHg uIfguITguLLguKNf4Lie4Li44LiYX+C4nuC4pOC4q+C4seC4ql/guKjguLjg uIHguKPguYxf4LmA4Liq4Liy4Lij4LmMJy5zcGxpdCgnXycpLCAvLyB5ZXMs IHRocmVlIGNoYXJhY3RlcnMgZGlmZmVyZW5jZQorICAgICAgICB3ZWVrZGF5 c01pbiA6ICfguK3guLIuX+C4iC5f4LitLl/guJ4uX+C4nuC4pC5f4LioLl/g uKouJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Qg OiB0cnVlLAorICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHsKKyAgICAgICAg ICAgIExUIDogJ0g6bW0nLAorICAgICAgICAgICAgTFRTIDogJ0g6bW06c3Mn LAorICAgICAgICAgICAgTCA6ICdZWVlZL01NL0REJywKKyAgICAgICAgICAg IExMIDogJ0QgTU1NTSBZWVlZJywKKyAgICAgICAgICAgIExMTCA6ICdEIE1N TU0gWVlZWSDguYDguKfguKXguLIgSDptbScsCisgICAgICAgICAgICBMTExM IDogJ+C4p+C4seC4mWRkZGTguJfguLXguYggRCBNTU1NIFlZWVkg4LmA4Lin 4Lil4LiyIEg6bW0nCisgICAgICAgIH0sCisgICAgICAgIG1lcmlkaWVtUGFy c2U6IC/guIHguYjguK3guJnguYDguJfguLXguYjguKLguId84Lir4Lil4Lix 4LiH4LmA4LiX4Li14LmI4Lii4LiHLywKKyAgICAgICAgaXNQTTogZnVuY3Rp b24gKGlucHV0KSB7CisgICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfg uKvguKXguLHguIfguYDguJfguLXguYjguKLguIcnOworICAgICAgICB9LAor ICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlz TG93ZXIpIHsKKyAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHsKKyAgICAg ICAgICAgICAgICByZXR1cm4gJ+C4geC5iOC4reC4meC5gOC4l+C4teC5iOC4 ouC4hyc7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg IHJldHVybiAn4Lir4Lil4Lix4LiH4LmA4LiX4Li14LmI4Lii4LiHJzsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgY2FsZW5kYXIgOiB7 CisgICAgICAgICAgICBzYW1lRGF5IDogJ1vguKfguLHguJnguJnguLXguYkg 4LmA4Lin4Lil4LiyXSBMVCcsCisgICAgICAgICAgICBuZXh0RGF5IDogJ1vg uJ7guKPguLjguYjguIfguJnguLXguYkg4LmA4Lin4Lil4LiyXSBMVCcsCisg ICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkW+C4q+C4meC5ieC4siDguYDg uKfguKXguLJdIExUJywKKyAgICAgICAgICAgIGxhc3REYXkgOiAnW+C5gOC4 oeC4t+C5iOC4reC4p+C4suC4meC4meC4teC5iSDguYDguKfguKXguLJdIExU JywKKyAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vguKfguLHguJldZGRkZFvg uJfguLXguYjguYHguKXguYnguKcg4LmA4Lin4Lil4LiyXSBMVCcsCisgICAg ICAgICAgICBzYW1lRWxzZSA6ICdMJworICAgICAgICB9LAorICAgICAgICBy ZWxhdGl2ZVRpbWUgOiB7CisgICAgICAgICAgICBmdXR1cmUgOiAn4Lit4Li1 4LiBICVzJywKKyAgICAgICAgICAgIHBhc3QgOiAnJXPguJfguLXguYjguYHg uKXguYnguKcnLAorICAgICAgICAgICAgcyA6ICfguYTguKHguYjguIHguLXg uYjguKfguLTguJnguLLguJfguLUnLAorICAgICAgICAgICAgbSA6ICcxIOC4 meC4suC4l+C4tScsCisgICAgICAgICAgICBtbSA6ICclZCDguJnguLLguJfg uLUnLAorICAgICAgICAgICAgaCA6ICcxIOC4iuC4seC5iOC4p+C5guC4oeC4 hycsCisgICAgICAgICAgICBoaCA6ICclZCDguIrguLHguYjguKfguYLguKHg uIcnLAorICAgICAgICAgICAgZCA6ICcxIOC4p+C4seC4mScsCisgICAgICAg ICAgICBkZCA6ICclZCDguKfguLHguJknLAorICAgICAgICAgICAgTSA6ICcx IOC5gOC4lOC4t+C4reC4mScsCisgICAgICAgICAgICBNTSA6ICclZCDguYDg uJTguLfguK3guJknLAorICAgICAgICAgICAgeSA6ICcxIOC4m+C4tScsCisg ICAgICAgICAgICB5eSA6ICclZCDguJvguLUnCisgICAgICAgIH0KKyAgICB9 KTsKKworCisgICAgdmFyIHRsX3BoID0gbW9tZW50X19kZWZhdWx0LmRlZmlu ZUxvY2FsZSgndGwtcGgnLCB7CisgICAgICAgIG1vbnRocyA6ICdFbmVyb19Q ZWJyZXJvX01hcnNvX0FicmlsX01heW9fSHVueW9fSHVseW9fQWdvc3RvX1Nl dHllbWJyZV9Pa3R1YnJlX05vYnllbWJyZV9EaXN5ZW1icmUnLnNwbGl0KCdf JyksCisgICAgICAgIG1vbnRoc1Nob3J0IDogJ0VuZV9QZWJfTWFyX0Ficl9N YXlfSHVuX0h1bF9BZ29fU2V0X09rdF9Ob2JfRGlzJy5zcGxpdCgnXycpLAor ICAgICAgICB3ZWVrZGF5cyA6ICdMaW5nZ29fTHVuZXNfTWFydGVzX01peWVy a3VsZXNfSHV3ZWJlc19CaXllcm5lc19TYWJhZG8nLnNwbGl0KCdfJyksCisg ICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnTGluX0x1bl9NYXJfTWl5X0h1d19C aXlfU2FiJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c01pbiA6ICdM aV9MdV9NYV9NaV9IdV9CaV9TYWInLnNwbGl0KCdfJyksCisgICAgICAgIGxv bmdEYXRlRm9ybWF0IDogeworICAgICAgICAgICAgTFQgOiAnSEg6bW0nLAor ICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJywKKyAgICAgICAgICAgIEwg OiAnTU0vRC9ZWVlZJywKKyAgICAgICAgICAgIExMIDogJ01NTU0gRCwgWVlZ WScsCisgICAgICAgICAgICBMTEwgOiAnTU1NTSBELCBZWVlZIEhIOm1tJywK KyAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgTU1NTSBERCwgWVlZWSBISDpt bScKKyAgICAgICAgfSwKKyAgICAgICAgY2FsZW5kYXIgOiB7CisgICAgICAg ICAgICBzYW1lRGF5OiAnW05nYXlvbiBzYV0gTFQnLAorICAgICAgICAgICAg bmV4dERheTogJ1tCdWthcyBzYV0gTFQnLAorICAgICAgICAgICAgbmV4dFdl ZWs6ICdkZGRkIFtzYV0gTFQnLAorICAgICAgICAgICAgbGFzdERheTogJ1tL YWhhcG9uIHNhXSBMVCcsCisgICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQg W2h1bGluZyBsaW5nZ29dIExUJywKKyAgICAgICAgICAgIHNhbWVFbHNlOiAn TCcKKyAgICAgICAgfSwKKyAgICAgICAgcmVsYXRpdmVUaW1lIDogeworICAg ICAgICAgICAgZnV0dXJlIDogJ3NhIGxvb2IgbmcgJXMnLAorICAgICAgICAg ICAgcGFzdCA6ICclcyBhbmcgbmFrYWxpcGFzJywKKyAgICAgICAgICAgIHMg OiAnaWxhbmcgc2VndW5kbycsCisgICAgICAgICAgICBtIDogJ2lzYW5nIG1p bnV0bycsCisgICAgICAgICAgICBtbSA6ICclZCBtaW51dG8nLAorICAgICAg ICAgICAgaCA6ICdpc2FuZyBvcmFzJywKKyAgICAgICAgICAgIGhoIDogJyVk IG9yYXMnLAorICAgICAgICAgICAgZCA6ICdpc2FuZyBhcmF3JywKKyAgICAg ICAgICAgIGRkIDogJyVkIGFyYXcnLAorICAgICAgICAgICAgTSA6ICdpc2Fu ZyBidXdhbicsCisgICAgICAgICAgICBNTSA6ICclZCBidXdhbicsCisgICAg ICAgICAgICB5IDogJ2lzYW5nIHRhb24nLAorICAgICAgICAgICAgeXkgOiAn JWQgdGFvbicKKyAgICAgICAgfSwKKyAgICAgICAgb3JkaW5hbFBhcnNlOiAv XGR7MSwyfS8sCisgICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVy KSB7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyOworICAgICAgICB9LAor ICAgICAgICB3ZWVrIDogeworICAgICAgICAgICAgZG93IDogMSwgLy8gTW9u ZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCisgICAgICAgICAg ICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGgg aXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuCisgICAgICAgIH0KKyAg ICB9KTsKKworCisgICAgdmFyIG51bWJlcnNOb3VucyA9ICdwYWdoX3dh4oCZ X2NoYeKAmV93ZWpfbG9TX3ZhZ2hfamF2X1NvY2hfY2hvcmdoX0h1dCcuc3Bs aXQoJ18nKTsKKworICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZUZ1dHVyZShvdXRw dXQpIHsKKyAgICAgICAgdmFyIHRpbWUgPSBvdXRwdXQ7CisgICAgICAgIHRp bWUgPSAob3V0cHV0LmluZGV4T2YoJ2phaicpICE9PSAtMSkgPworICAgICAg ICB0aW1lLnNsaWNlKDAsIC0zKSArICdsZVMnIDoKKyAgICAgICAgKG91dHB1 dC5pbmRleE9mKCdqYXInKSAhPT0gLTEpID8KKyAgICAgICAgdGltZS5zbGlj ZSgwLCAtMykgKyAnd2FRJyA6CisgICAgICAgIChvdXRwdXQuaW5kZXhPZign RElTJykgIT09IC0xKSA/CisgICAgICAgIHRpbWUuc2xpY2UoMCwgLTMpICsg J25lbScgOgorICAgICAgICB0aW1lICsgJyBwSXEnOworICAgICAgICByZXR1 cm4gdGltZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0cmFuc2xhdGVQYXN0 KG91dHB1dCkgeworICAgICAgICB2YXIgdGltZSA9IG91dHB1dDsKKyAgICAg ICAgdGltZSA9IChvdXRwdXQuaW5kZXhPZignamFqJykgIT09IC0xKSA/Cisg ICAgICAgIHRpbWUuc2xpY2UoMCwgLTMpICsgJ0h14oCZJyA6CisgICAgICAg IChvdXRwdXQuaW5kZXhPZignamFyJykgIT09IC0xKSA/CisgICAgICAgIHRp bWUuc2xpY2UoMCwgLTMpICsgJ3dlbicgOgorICAgICAgICAob3V0cHV0Lmlu ZGV4T2YoJ0RJUycpICE9PSAtMSkgPworICAgICAgICB0aW1lLnNsaWNlKDAs IC0zKSArICdiZW4nIDoKKyAgICAgICAgdGltZSArICcgcmV0JzsKKyAgICAg ICAgcmV0dXJuIHRpbWU7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGxoX190 cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0 dXJlKSB7CisgICAgICAgIHZhciBudW1iZXJOb3VuID0gbnVtYmVyQXNOb3Vu KG51bWJlcik7CisgICAgICAgIHN3aXRjaCAoc3RyaW5nKSB7CisgICAgICAg ICAgICBjYXNlICdtbSc6CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJl ck5vdW4gKyAnIHR1cCc7CisgICAgICAgICAgICBjYXNlICdoaCc6CisgICAg ICAgICAgICAgICAgcmV0dXJuIG51bWJlck5vdW4gKyAnIHJlcCc7CisgICAg ICAgICAgICBjYXNlICdkZCc6CisgICAgICAgICAgICAgICAgcmV0dXJuIG51 bWJlck5vdW4gKyAnIGphaic7CisgICAgICAgICAgICBjYXNlICdNTSc6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck5vdW4gKyAnIGphcic7Cisg ICAgICAgICAgICBjYXNlICd5eSc6CisgICAgICAgICAgICAgICAgcmV0dXJu IG51bWJlck5vdW4gKyAnIERJUyc7CisgICAgICAgIH0KKyAgICB9CisKKyAg ICBmdW5jdGlvbiBudW1iZXJBc05vdW4obnVtYmVyKSB7CisgICAgICAgIHZh ciBodW5kcmVkID0gTWF0aC5mbG9vcigobnVtYmVyICUgMTAwMCkgLyAxMDAp LAorICAgICAgICB0ZW4gPSBNYXRoLmZsb29yKChudW1iZXIgJSAxMDApIC8g MTApLAorICAgICAgICBvbmUgPSBudW1iZXIgJSAxMCwKKyAgICAgICAgd29y ZCA9ICcnOworICAgICAgICBpZiAoaHVuZHJlZCA+IDApIHsKKyAgICAgICAg ICAgIHdvcmQgKz0gbnVtYmVyc05vdW5zW2h1bmRyZWRdICsgJ3ZhdGxoJzsK KyAgICAgICAgfQorICAgICAgICBpZiAodGVuID4gMCkgeworICAgICAgICAg ICAgd29yZCArPSAoKHdvcmQgIT09ICcnKSA/ICcgJyA6ICcnKSArIG51bWJl cnNOb3Vuc1t0ZW5dICsgJ21hSCc7CisgICAgICAgIH0KKyAgICAgICAgaWYg KG9uZSA+IDApIHsKKyAgICAgICAgICAgIHdvcmQgKz0gKCh3b3JkICE9PSAn JykgPyAnICcgOiAnJykgKyBudW1iZXJzTm91bnNbb25lXTsKKyAgICAgICAg fQorICAgICAgICByZXR1cm4gKHdvcmQgPT09ICcnKSA/ICdwYWdoJyA6IHdv cmQ7CisgICAgfQorCisgICAgdmFyIHRsaCA9IG1vbWVudF9fZGVmYXVsdC5k ZWZpbmVMb2NhbGUoJ3RsaCcsIHsKKyAgICAgICAgbW9udGhzIDogJ3RlcmHi gJkgamFyIHdh4oCZX3RlcmHigJkgamFyIGNoYeKAmV90ZXJh4oCZIGphciB3 ZWpfdGVyYeKAmSBqYXIgbG9TX3RlcmHigJkgamFyIHZhZ2hfdGVyYeKAmSBq YXIgamF2X3RlcmHigJkgamFyIFNvY2hfdGVyYeKAmSBqYXIgY2hvcmdoX3Rl cmHigJkgamFyIEh1dF90ZXJh4oCZIGphciB3YeKAmW1hSF90ZXJh4oCZIGph ciB3YeKAmW1hSCB3YeKAmV90ZXJh4oCZIGphciB3YeKAmW1hSCBjaGHigJkn LnNwbGl0KCdfJyksCisgICAgICAgIG1vbnRoc1Nob3J0IDogJ2phciB3YeKA mV9qYXIgY2hh4oCZX2phciB3ZWpfamFyIGxvU19qYXIgdmFnaF9qYXIgamF2 X2phciBTb2NoX2phciBjaG9yZ2hfamFyIEh1dF9qYXIgd2HigJltYUhfamFy IHdh4oCZbWFIIHdh4oCZX2phciB3YeKAmW1hSCBjaGHigJknLnNwbGl0KCdf JyksCisgICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLAorICAgICAg ICB3ZWVrZGF5cyA6ICdsb2ptSXRqYWpfRGFTamFqX3Bvdmphal9naEl0bGhq YWpfbG9naGphal9idXFqYWpfZ2hJbmphaicuc3BsaXQoJ18nKSwKKyAgICAg ICAgd2Vla2RheXNTaG9ydCA6ICdsb2ptSXRqYWpfRGFTamFqX3Bvdmphal9n aEl0bGhqYWpfbG9naGphal9idXFqYWpfZ2hJbmphaicuc3BsaXQoJ18nKSwK KyAgICAgICAgd2Vla2RheXNNaW4gOiAnbG9qbUl0amFqX0RhU2phal9wb3Zq YWpfZ2hJdGxoamFqX2xvZ2hqYWpfYnVxamFqX2doSW5qYWonLnNwbGl0KCdf JyksCisgICAgICAgIGxvbmdEYXRlRm9ybWF0IDogeworICAgICAgICAgICAg TFQgOiAnSEg6bW0nLAorICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJywK KyAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsCisgICAgICAgICAgICBM TCA6ICdEIE1NTU0gWVlZWScsCisgICAgICAgICAgICBMTEwgOiAnRCBNTU1N IFlZWVkgSEg6bW0nLAorICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1N TU0gWVlZWSBISDptbScKKyAgICAgICAgfSwKKyAgICAgICAgY2FsZW5kYXIg OiB7CisgICAgICAgICAgICBzYW1lRGF5OiAnW0RhSGphal0gTFQnLAorICAg ICAgICAgICAgbmV4dERheTogJ1t3YeKAmWxlU10gTFQnLAorICAgICAgICAg ICAgbmV4dFdlZWs6ICdMTEwnLAorICAgICAgICAgICAgbGFzdERheTogJ1t3 YeKAmUh14oCZXSBMVCcsCisgICAgICAgICAgICBsYXN0V2VlazogJ0xMTCcs CisgICAgICAgICAgICBzYW1lRWxzZTogJ0wnCisgICAgICAgIH0sCisgICAg ICAgIHJlbGF0aXZlVGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6IHRy YW5zbGF0ZUZ1dHVyZSwKKyAgICAgICAgICAgIHBhc3QgOiB0cmFuc2xhdGVQ YXN0LAorICAgICAgICAgICAgcyA6ICdwdVMgbHVwJywKKyAgICAgICAgICAg IG0gOiAnd2HigJkgdHVwJywKKyAgICAgICAgICAgIG1tIDogdGxoX190cmFu c2xhdGUsCisgICAgICAgICAgICBoIDogJ3dh4oCZIHJlcCcsCisgICAgICAg ICAgICBoaCA6IHRsaF9fdHJhbnNsYXRlLAorICAgICAgICAgICAgZCA6ICd3 YeKAmSBqYWonLAorICAgICAgICAgICAgZGQgOiB0bGhfX3RyYW5zbGF0ZSwK KyAgICAgICAgICAgIE0gOiAnd2HigJkgamFyJywKKyAgICAgICAgICAgIE1N IDogdGxoX190cmFuc2xhdGUsCisgICAgICAgICAgICB5IDogJ3dh4oCZIERJ UycsCisgICAgICAgICAgICB5eSA6IHRsaF9fdHJhbnNsYXRlCisgICAgICAg IH0sCisgICAgICAgIG9yZGluYWxQYXJzZTogL1xkezEsMn1cLi8sCisgICAg ICAgIG9yZGluYWwgOiAnJWQuJywKKyAgICAgICAgd2VlayA6IHsKKyAgICAg ICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9m IHRoZSB3ZWVrLgorICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsg dGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRo ZSB5ZWFyLgorICAgICAgICB9CisgICAgfSk7CisKKworICAgIHZhciB0cl9f c3VmZml4ZXMgPSB7CisgICAgICAgIDE6ICdcJ2luY2knLAorICAgICAgICA1 OiAnXCdpbmNpJywKKyAgICAgICAgODogJ1wnaW5jaScsCisgICAgICAgIDcw OiAnXCdpbmNpJywKKyAgICAgICAgODA6ICdcJ2luY2knLAorICAgICAgICAy OiAnXCduY2knLAorICAgICAgICA3OiAnXCduY2knLAorICAgICAgICAyMDog J1wnbmNpJywKKyAgICAgICAgNTA6ICdcJ25jaScsCisgICAgICAgIDM6ICdc J8O8bmPDvCcsCisgICAgICAgIDQ6ICdcJ8O8bmPDvCcsCisgICAgICAgIDEw MDogJ1wnw7xuY8O8JywKKyAgICAgICAgNjogJ1wnbmPEsScsCisgICAgICAg IDk6ICdcJ3VuY3UnLAorICAgICAgICAxMDogJ1wndW5jdScsCisgICAgICAg IDMwOiAnXCd1bmN1JywKKyAgICAgICAgNjA6ICdcJ8SxbmPEsScsCisgICAg ICAgIDkwOiAnXCfEsW5jxLEnCisgICAgfTsKKworICAgIHZhciB0ciA9IG1v bWVudF9fZGVmYXVsdC5kZWZpbmVMb2NhbGUoJ3RyJywgeworICAgICAgICBt b250aHMgOiAnT2Nha1/FnnViYXRfTWFydF9OaXNhbl9NYXnEsXNfSGF6aXJh bl9UZW1tdXpfQcSfdXN0b3NfRXlsw7xsX0VraW1fS2FzxLFtX0FyYWzEsWsn LnNwbGl0KCdfJyksCisgICAgICAgIG1vbnRoc1Nob3J0IDogJ09jYV/FnnVi X01hcl9OaXNfTWF5X0hhel9UZW1fQcSfdV9FeWxfRWtpX0thc19BcmEnLnNw bGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzIDogJ1BhemFyX1BhemFydGVz aV9TYWzEsV/Dh2FyxZ9hbWJhX1BlcsWfZW1iZV9DdW1hX0N1bWFydGVzaScu c3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdQYXpfUHRz X1NhbF/Dh2FyX1Blcl9DdW1fQ3RzJy5zcGxpdCgnXycpLAorICAgICAgICB3 ZWVrZGF5c01pbiA6ICdQel9QdF9TYV/Dh2FfUGVfQ3VfQ3QnLnNwbGl0KCdf JyksCisgICAgICAgIGxvbmdEYXRlRm9ybWF0IDogeworICAgICAgICAgICAg TFQgOiAnSEg6bW0nLAorICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJywK KyAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsCisgICAgICAgICAgICBM TCA6ICdEIE1NTU0gWVlZWScsCisgICAgICAgICAgICBMTEwgOiAnRCBNTU1N IFlZWVkgSEg6bW0nLAorICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1N TU0gWVlZWSBISDptbScKKyAgICAgICAgfSwKKyAgICAgICAgY2FsZW5kYXIg OiB7CisgICAgICAgICAgICBzYW1lRGF5IDogJ1tidWfDvG4gc2FhdF0gTFQn LAorICAgICAgICAgICAgbmV4dERheSA6ICdbeWFyxLFuIHNhYXRdIExUJywK KyAgICAgICAgICAgIG5leHRXZWVrIDogJ1toYWZ0YXlhXSBkZGRkIFtzYWF0 XSBMVCcsCisgICAgICAgICAgICBsYXN0RGF5IDogJ1tkw7xuXSBMVCcsCisg ICAgICAgICAgICBsYXN0V2VlayA6ICdbZ2XDp2VuIGhhZnRhXSBkZGRkIFtz YWF0XSBMVCcsCisgICAgICAgICAgICBzYW1lRWxzZSA6ICdMJworICAgICAg ICB9LAorICAgICAgICByZWxhdGl2ZVRpbWUgOiB7CisgICAgICAgICAgICBm dXR1cmUgOiAnJXMgc29ucmEnLAorICAgICAgICAgICAgcGFzdCA6ICclcyDD tm5jZScsCisgICAgICAgICAgICBzIDogJ2Jpcmthw6cgc2FuaXllJywKKyAg ICAgICAgICAgIG0gOiAnYmlyIGRha2lrYScsCisgICAgICAgICAgICBtbSA6 ICclZCBkYWtpa2EnLAorICAgICAgICAgICAgaCA6ICdiaXIgc2FhdCcsCisg ICAgICAgICAgICBoaCA6ICclZCBzYWF0JywKKyAgICAgICAgICAgIGQgOiAn YmlyIGfDvG4nLAorICAgICAgICAgICAgZGQgOiAnJWQgZ8O8bicsCisgICAg ICAgICAgICBNIDogJ2JpciBheScsCisgICAgICAgICAgICBNTSA6ICclZCBh eScsCisgICAgICAgICAgICB5IDogJ2JpciB5xLFsJywKKyAgICAgICAgICAg IHl5IDogJyVkIHnEsWwnCisgICAgICAgIH0sCisgICAgICAgIG9yZGluYWxQ YXJzZTogL1xkezEsMn0nKGluY2l8bmNpfMO8bmPDvHxuY8SxfHVuY3V8xLFu Y8SxKS8sCisgICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7 CisgICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7ICAvLyBzcGVjaWFs IGNhc2UgZm9yIHplcm8KKyAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVy ICsgJ1wnxLFuY8SxJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZh ciBhID0gbnVtYmVyICUgMTAsCisgICAgICAgICAgICAgICAgYiA9IG51bWJl ciAlIDEwMCAtIGEsCisgICAgICAgICAgICAgICAgYyA9IG51bWJlciA+PSAx MDAgPyAxMDAgOiBudWxsOworICAgICAgICAgICAgcmV0dXJuIG51bWJlciAr ICh0cl9fc3VmZml4ZXNbYV0gfHwgdHJfX3N1ZmZpeGVzW2JdIHx8IHRyX19z dWZmaXhlc1tjXSk7CisgICAgICAgIH0sCisgICAgICAgIHdlZWsgOiB7Cisg ICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRh eSBvZiB0aGUgd2Vlay4KKyAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3 ZWVrIHRoYXQgY29udGFpbnMgSmFuIDFzdCBpcyB0aGUgZmlyc3Qgd2VlayBv ZiB0aGUgeWVhci4KKyAgICAgICAgfQorICAgIH0pOworCisKKyAgICAvLyBB ZnRlciB0aGUgeWVhciB0aGVyZSBzaG91bGQgYmUgYSBzbGFzaCBhbmQgdGhl IGFtb3VudCBvZiB5ZWFycyBzaW5jZSBEZWNlbWJlciAyNiwgMTk3OSBpbiBS b21hbiBudW1lcmFscy4KKyAgICAvLyBUaGlzIGlzIGN1cnJlbnRseSB0b28g ZGlmZmljdWx0IChtYXliZSBldmVuIGltcG9zc2libGUpIHRvIGFkZC4KKyAg ICB2YXIgdHpsID0gbW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgndHps JywgeworICAgICAgICBtb250aHMgOiAnSmFudWFyX0ZldnJhZ2xoX01hcsOn X0F2csOvdV9NYWlfR8O8bl9KdWxpYV9HdXNjaHRfU2V0ZW12YXJfTGlzdG9w w6R0c19Ob2VtdmFyX1plY2VtdmFyJy5zcGxpdCgnXycpLAorICAgICAgICBt b250aHNTaG9ydCA6ICdKYW5fRmV2X01hcl9BdnJfTWFpX0fDvG5fSnVsX0d1 c19TZXRfTGlzX05vZV9aZWMnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtk YXlzIDogJ1PDumxhZGlfTMO6bmXDp2lfTWFpdHppX03DoXJjdXJpX1how7ph ZGlfVmnDqW5lcsOnaV9Tw6F0dXJpJy5zcGxpdCgnXycpLAorICAgICAgICB3 ZWVrZGF5c1Nob3J0IDogJ1PDumxfTMO6bl9NYWlfTcOhcl9YaMO6X1Zpw6lf U8OhdCcuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNNaW4gOiAnU8O6 X0zDul9NYV9Nw6FfWGhfVmlfU8OhJy5zcGxpdCgnXycpLAorICAgICAgICBs b25nRGF0ZUZvcm1hdCA6IHsKKyAgICAgICAgICAgIExUIDogJ0hILm1tJywK KyAgICAgICAgICAgIExUUyA6ICdISC5tbS5zcycsCisgICAgICAgICAgICBM IDogJ0RELk1NLllZWVknLAorICAgICAgICAgICAgTEwgOiAnRC4gTU1NTSBb ZGFsbGFzXSBZWVlZJywKKyAgICAgICAgICAgIExMTCA6ICdELiBNTU1NIFtk YWxsYXNdIFlZWVkgSEgubW0nLAorICAgICAgICAgICAgTExMTCA6ICdkZGRk LCBbbGldIEQuIE1NTU0gW2RhbGxhc10gWVlZWSBISC5tbScKKyAgICAgICAg fSwKKyAgICAgICAgbWVyaWRpZW1QYXJzZTogL2RcJ298ZFwnYS9pLAorICAg ICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7CisgICAgICAgICAgICBy ZXR1cm4gJ2RcJ28nID09PSBpbnB1dC50b0xvd2VyQ2FzZSgpOworICAgICAg ICB9LAorICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWlu dXRlcywgaXNMb3dlcikgeworICAgICAgICAgICAgaWYgKGhvdXJzID4gMTEp IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdkXCdvJyA6 ICdEXCdPJzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg ICAgcmV0dXJuIGlzTG93ZXIgPyAnZFwnYScgOiAnRFwnQSc7CisgICAgICAg ICAgICB9CisgICAgICAgIH0sCisgICAgICAgIGNhbGVuZGFyIDogeworICAg ICAgICAgICAgc2FtZURheSA6ICdbb3hoaSDDoF0gTFQnLAorICAgICAgICAg ICAgbmV4dERheSA6ICdbZGVtw6Agw6BdIExUJywKKyAgICAgICAgICAgIG5l eHRXZWVrIDogJ2RkZGQgW8OgXSBMVCcsCisgICAgICAgICAgICBsYXN0RGF5 IDogJ1tpZWlyaSDDoF0gTFQnLAorICAgICAgICAgICAgbGFzdFdlZWsgOiAn W3PDvHIgZWxdIGRkZGQgW2xhc3RldSDDoF0gTFQnLAorICAgICAgICAgICAg c2FtZUVsc2UgOiAnTCcKKyAgICAgICAgfSwKKyAgICAgICAgcmVsYXRpdmVU aW1lIDogeworICAgICAgICAgICAgZnV0dXJlIDogJ29zcHJlaSAlcycsCisg ICAgICAgICAgICBwYXN0IDogJ2phJXMnLAorICAgICAgICAgICAgcyA6IHR6 bF9fcHJvY2Vzc1JlbGF0aXZlVGltZSwKKyAgICAgICAgICAgIG0gOiB0emxf X3Byb2Nlc3NSZWxhdGl2ZVRpbWUsCisgICAgICAgICAgICBtbSA6IHR6bF9f cHJvY2Vzc1JlbGF0aXZlVGltZSwKKyAgICAgICAgICAgIGggOiB0emxfX3By b2Nlc3NSZWxhdGl2ZVRpbWUsCisgICAgICAgICAgICBoaCA6IHR6bF9fcHJv Y2Vzc1JlbGF0aXZlVGltZSwKKyAgICAgICAgICAgIGQgOiB0emxfX3Byb2Nl c3NSZWxhdGl2ZVRpbWUsCisgICAgICAgICAgICBkZCA6IHR6bF9fcHJvY2Vz c1JlbGF0aXZlVGltZSwKKyAgICAgICAgICAgIE0gOiB0emxfX3Byb2Nlc3NS ZWxhdGl2ZVRpbWUsCisgICAgICAgICAgICBNTSA6IHR6bF9fcHJvY2Vzc1Jl bGF0aXZlVGltZSwKKyAgICAgICAgICAgIHkgOiB0emxfX3Byb2Nlc3NSZWxh dGl2ZVRpbWUsCisgICAgICAgICAgICB5eSA6IHR6bF9fcHJvY2Vzc1JlbGF0 aXZlVGltZQorICAgICAgICB9LAorICAgICAgICBvcmRpbmFsUGFyc2U6IC9c ZHsxLDJ9XC4vLAorICAgICAgICBvcmRpbmFsIDogJyVkLicsCisgICAgICAg IHdlZWsgOiB7CisgICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMg dGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KKyAgICAgICAgICAgIGRveSA6 IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUg Zmlyc3Qgd2VlayBvZiB0aGUgeWVhci4KKyAgICAgICAgfQorICAgIH0pOwor CisgICAgZnVuY3Rpb24gdHpsX19wcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJl ciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkgeworICAgICAgICB2 YXIgZm9ybWF0ID0geworICAgICAgICAgICAgJ3MnOiBbJ3ZpZW5zYXMgc2Vj dW5kcycsICdcJ2llbnNhcyBzZWN1bmRzJ10sCisgICAgICAgICAgICAnbSc6 IFsnXCduIG3DrXV0JywgJ1wnaWVucyBtw611dCddLAorICAgICAgICAgICAg J21tJzogW251bWJlciArICcgbcOtdXRzJywgJycgKyBudW1iZXIgKyAnIG3D rXV0cyddLAorICAgICAgICAgICAgJ2gnOiBbJ1wnbiDDvm9yYScsICdcJ2ll bnNhIMO+b3JhJ10sCisgICAgICAgICAgICAnaGgnOiBbbnVtYmVyICsgJyDD vm9yYXMnLCAnJyArIG51bWJlciArICcgw75vcmFzJ10sCisgICAgICAgICAg ICAnZCc6IFsnXCduIHppdWEnLCAnXCdpZW5zYSB6aXVhJ10sCisgICAgICAg ICAgICAnZGQnOiBbbnVtYmVyICsgJyB6aXVhcycsICcnICsgbnVtYmVyICsg JyB6aXVhcyddLAorICAgICAgICAgICAgJ00nOiBbJ1wnbiBtZXMnLCAnXCdp ZW5zIG1lcyddLAorICAgICAgICAgICAgJ01NJzogW251bWJlciArICcgbWVz ZW4nLCAnJyArIG51bWJlciArICcgbWVzZW4nXSwKKyAgICAgICAgICAgICd5 JzogWydcJ24gYXInLCAnXCdpZW5zIGFyJ10sCisgICAgICAgICAgICAneXkn OiBbbnVtYmVyICsgJyBhcnMnLCAnJyArIG51bWJlciArICcgYXJzJ10KKyAg ICAgICAgfTsKKyAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gZm9ybWF0W2tl eV1bMF0gOiAod2l0aG91dFN1ZmZpeCA/IGZvcm1hdFtrZXldWzBdIDogZm9y bWF0W2tleV1bMV0pOworICAgIH0KKworCisgICAgdmFyIHR6bV9sYXRuID0g bW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgndHptLWxhdG4nLCB7Cisg ICAgICAgIG1vbnRocyA6ICdpbm5heXJfYnLLpGF5csukX21hcsukc8ukX2li cmlyX21heXl3X3l3bnl3X3l3bHl3el/Jo3fFoXRfxaF3dGFuYmlyX2t0y6R3 YnLLpF9ud3dhbmJpcl9kd2puYmlyJy5zcGxpdCgnXycpLAorICAgICAgICBt b250aHNTaG9ydCA6ICdpbm5heXJfYnLLpGF5csukX21hcsukc8ukX2licmly X21heXl3X3l3bnl3X3l3bHl3el/Jo3fFoXRfxaF3dGFuYmlyX2t0y6R3YnLL pF9ud3dhbmJpcl9kd2puYmlyJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVr ZGF5cyA6ICdhc2FtYXNfYXluYXNfYXNpbmFzX2FrcmFzX2Frd2FzX2FzaW13 YXNfYXNp4biNeWFzJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c1No b3J0IDogJ2FzYW1hc19heW5hc19hc2luYXNfYWtyYXNfYWt3YXNfYXNpbXdh c19hc2nhuI15YXMnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWlu IDogJ2FzYW1hc19heW5hc19hc2luYXNfYWtyYXNfYWt3YXNfYXNpbXdhc19h c2nhuI15YXMnLnNwbGl0KCdfJyksCisgICAgICAgIGxvbmdEYXRlRm9ybWF0 IDogeworICAgICAgICAgICAgTFQgOiAnSEg6bW0nLAorICAgICAgICAgICAg TFRTIDogJ0hIOm1tOnNzJywKKyAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZ WScsCisgICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsCisgICAgICAg ICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLAorICAgICAgICAgICAg TExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJworICAgICAgICB9LAor ICAgICAgICBjYWxlbmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVEYXk6ICdb YXNka2ggZ10gTFQnLAorICAgICAgICAgICAgbmV4dERheTogJ1thc2thIGdd IExUJywKKyAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbZ10gTFQnLAor ICAgICAgICAgICAgbGFzdERheTogJ1thc3NhbnQgZ10gTFQnLAorICAgICAg ICAgICAgbGFzdFdlZWs6ICdkZGRkIFtnXSBMVCcsCisgICAgICAgICAgICBz YW1lRWxzZTogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGlt ZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICdkYWRraCBzIHlhbiAlcycs CisgICAgICAgICAgICBwYXN0IDogJ3lhbiAlcycsCisgICAgICAgICAgICBz IDogJ2ltaWsnLAorICAgICAgICAgICAgbSA6ICdtaW514biNJywKKyAgICAg ICAgICAgIG1tIDogJyVkIG1pbnXhuI0nLAorICAgICAgICAgICAgaCA6ICdz YcmbYScsCisgICAgICAgICAgICBoaCA6ICclZCB0YXNzYcmbaW4nLAorICAg ICAgICAgICAgZCA6ICdhc3MnLAorICAgICAgICAgICAgZGQgOiAnJWQgb3Nz YW4nLAorICAgICAgICAgICAgTSA6ICdheW93cicsCisgICAgICAgICAgICBN TSA6ICclZCBpeXlpcm4nLAorICAgICAgICAgICAgeSA6ICdhc2dhcycsCisg ICAgICAgICAgICB5eSA6ICclZCBpc2dhc24nCisgICAgICAgIH0sCisgICAg ICAgIHdlZWsgOiB7CisgICAgICAgICAgICBkb3cgOiA2LCAvLyBTYXR1cmRh eSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorICAgICAgICAgICAg ZG95IDogMTIgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDFzdCBp cyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci4KKyAgICAgICAgfQorICAg IH0pOworCisKKyAgICB2YXIgdHptID0gbW9tZW50X19kZWZhdWx0LmRlZmlu ZUxvY2FsZSgndHptJywgeworICAgICAgICBtb250aHMgOiAn4rWJ4rWP4rWP 4rSw4rWi4rWUX+K0seK1leK0sOK1ouK1lV/itY7itLDitZXitZpf4rWJ4rSx 4rWU4rWJ4rWUX+K1juK0sOK1ouK1ouK1k1/itaLitZPitY/itaLitZNf4rWi 4rWT4rWN4rWi4rWT4rWjX+K1luK1k+K1m+K1nF/itZvitZPitZzitLDitY/i tLHitYnitZRf4rS94rWf4rWT4rSx4rWVX+K1j+K1k+K1oeK0sOK1j+K0seK1 ieK1lF/itLfitZPitYritY/itLHitYnitZQnLnNwbGl0KCdfJyksCisgICAg ICAgIG1vbnRoc1Nob3J0IDogJ+K1ieK1j+K1j+K0sOK1ouK1lF/itLHitZXi tLDitaLitZVf4rWO4rSw4rWV4rWaX+K1ieK0seK1lOK1ieK1lF/itY7itLDi taLitaLitZNf4rWi4rWT4rWP4rWi4rWTX+K1ouK1k+K1jeK1ouK1k+K1o1/i tZbitZPitZvitZxf4rWb4rWT4rWc4rSw4rWP4rSx4rWJ4rWUX+K0veK1n+K1 k+K0seK1lV/itY/itZPitaHitLDitY/itLHitYnitZRf4rS34rWT4rWK4rWP 4rSx4rWJ4rWUJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5cyA6ICfi tLDitZnitLDitY7itLDitZlf4rSw4rWi4rWP4rSw4rWZX+K0sOK1meK1ieK1 j+K0sOK1mV/itLDitL3itZTitLDitZlf4rSw4rS94rWh4rSw4rWZX+K0sOK1 meK1ieK1juK1oeK0sOK1mV/itLDitZnitYnitLnitaLitLDitZknLnNwbGl0 KCdfJyksCisgICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4rSw4rWZ4rSw4rWO 4rSw4rWZX+K0sOK1ouK1j+K0sOK1mV/itLDitZnitYnitY/itLDitZlf4rSw 4rS94rWU4rSw4rWZX+K0sOK0veK1oeK0sOK1mV/itLDitZnitYnitY7itaHi tLDitZlf4rSw4rWZ4rWJ4rS54rWi4rSw4rWZJy5zcGxpdCgnXycpLAorICAg ICAgICB3ZWVrZGF5c01pbiA6ICfitLDitZnitLDitY7itLDitZlf4rSw4rWi 4rWP4rSw4rWZX+K0sOK1meK1ieK1j+K0sOK1mV/itLDitL3itZTitLDitZlf 4rSw4rS94rWh4rSw4rWZX+K0sOK1meK1ieK1juK1oeK0sOK1mV/itLDitZni tYnitLnitaLitLDitZknLnNwbGl0KCdfJyksCisgICAgICAgIGxvbmdEYXRl Rm9ybWF0IDogeworICAgICAgICAgICAgTFQgOiAnSEg6bW0nLAorICAgICAg ICAgICAgTFRTOiAnSEg6bW06c3MnLAorICAgICAgICAgICAgTCA6ICdERC9N TS9ZWVlZJywKKyAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJywKKyAg ICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsCisgICAgICAg ICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nCisgICAgICAg IH0sCisgICAgICAgIGNhbGVuZGFyIDogeworICAgICAgICAgICAgc2FtZURh eTogJ1vitLDitZnitLfitYUg4rS0XSBMVCcsCisgICAgICAgICAgICBuZXh0 RGF5OiAnW+K0sOK1meK0veK0sCDitLRdIExUJywKKyAgICAgICAgICAgIG5l eHRXZWVrOiAnZGRkZCBb4rS0XSBMVCcsCisgICAgICAgICAgICBsYXN0RGF5 OiAnW+K0sOK1muK0sOK1j+K1nCDitLRdIExUJywKKyAgICAgICAgICAgIGxh c3RXZWVrOiAnZGRkZCBb4rS0XSBMVCcsCisgICAgICAgICAgICBzYW1lRWxz ZTogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZSA6IHsK KyAgICAgICAgICAgIGZ1dHVyZSA6ICfitLfitLDitLfitYUg4rWZIOK1ouK0 sOK1jyAlcycsCisgICAgICAgICAgICBwYXN0IDogJ+K1ouK0sOK1jyAlcycs CisgICAgICAgICAgICBzIDogJ+K1ieK1juK1ieK0vScsCisgICAgICAgICAg ICBtIDogJ+K1juK1ieK1j+K1k+K0uicsCisgICAgICAgICAgICBtbSA6ICcl ZCDitY7itYnitY/itZPitLonLAorICAgICAgICAgICAgaCA6ICfitZnitLDi tYTitLAnLAorICAgICAgICAgICAgaGggOiAnJWQg4rWc4rSw4rWZ4rWZ4rSw 4rWE4rWJ4rWPJywKKyAgICAgICAgICAgIGQgOiAn4rSw4rWZ4rWZJywKKyAg ICAgICAgICAgIGRkIDogJyVkIG/itZnitZnitLDitY8nLAorICAgICAgICAg ICAgTSA6ICfitLDitaJv4rWT4rWUJywKKyAgICAgICAgICAgIE1NIDogJyVk IOK1ieK1ouK1ouK1ieK1lOK1jycsCisgICAgICAgICAgICB5IDogJ+K0sOK1 meK0s+K0sOK1mScsCisgICAgICAgICAgICB5eSA6ICclZCDitYnitZnitLPi tLDitZnitY8nCisgICAgICAgIH0sCisgICAgICAgIHdlZWsgOiB7CisgICAg ICAgICAgICBkb3cgOiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5 IG9mIHRoZSB3ZWVrLgorICAgICAgICAgICAgZG95IDogMTIgIC8vIFRoZSB3 ZWVrIHRoYXQgY29udGFpbnMgSmFuIDFzdCBpcyB0aGUgZmlyc3Qgd2VlayBv ZiB0aGUgeWVhci4KKyAgICAgICAgfQorICAgIH0pOworCisKKyAgICBmdW5j dGlvbiB1a19fcGx1cmFsKHdvcmQsIG51bSkgeworICAgICAgICB2YXIgZm9y bXMgPSB3b3JkLnNwbGl0KCdfJyk7CisgICAgICAgIHJldHVybiBudW0gJSAx MCA9PT0gMSAmJiBudW0gJSAxMDAgIT09IDExID8gZm9ybXNbMF0gOiAobnVt ICUgMTAgPj0gMiAmJiBudW0gJSAxMCA8PSA0ICYmIChudW0gJSAxMDAgPCAx MCB8fCBudW0gJSAxMDAgPj0gMjApID8gZm9ybXNbMV0gOiBmb3Jtc1syXSk7 CisgICAgfQorICAgIGZ1bmN0aW9uIHVrX19yZWxhdGl2ZVRpbWVXaXRoUGx1 cmFsKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7CisgICAgICAgIHZh ciBmb3JtYXQgPSB7CisgICAgICAgICAgICAnbW0nOiB3aXRob3V0U3VmZml4 ID8gJ9GF0LLQuNC70LjQvdCwX9GF0LLQuNC70LjQvdC4X9GF0LLQuNC70LjQ vScgOiAn0YXQstC40LvQuNC90YNf0YXQstC40LvQuNC90Lhf0YXQstC40LvQ uNC9JywKKyAgICAgICAgICAgICdoaCc6IHdpdGhvdXRTdWZmaXggPyAn0LPQ vtC00LjQvdCwX9Cz0L7QtNC40L3QuF/Qs9C+0LTQuNC9JyA6ICfQs9C+0LTQ uNC90YNf0LPQvtC00LjQvdC4X9Cz0L7QtNC40L0nLAorICAgICAgICAgICAg J2RkJzogJ9C00LXQvdGMX9C00L3Rll/QtNC90ZbQsicsCisgICAgICAgICAg ICAnTU0nOiAn0LzRltGB0Y/RhtGMX9C80ZbRgdGP0YbRll/QvNGW0YHRj9GG 0ZbQsicsCisgICAgICAgICAgICAneXknOiAn0YDRltC6X9GA0L7QutC4X9GA 0L7QutGW0LInCisgICAgICAgIH07CisgICAgICAgIGlmIChrZXkgPT09ICdt JykgeworICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0YXQ stC40LvQuNC90LAnIDogJ9GF0LLQuNC70LjQvdGDJzsKKyAgICAgICAgfQor ICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdoJykgeworICAgICAgICAgICAg cmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0LPQvtC00LjQvdCwJyA6ICfQs9C+ 0LTQuNC90YMnOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAg ICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHVrX19wbHVyYWwoZm9ybWF0 W2tleV0sICtudW1iZXIpOworICAgICAgICB9CisgICAgfQorICAgIGZ1bmN0 aW9uIHdlZWtkYXlzQ2FzZVJlcGxhY2UobSwgZm9ybWF0KSB7CisgICAgICAg IHZhciB3ZWVrZGF5cyA9IHsKKyAgICAgICAgICAgICdub21pbmF0aXZlJzog J9C90LXQtNGW0LvRj1/Qv9C+0L3QtdC00ZbQu9C+0Lpf0LLRltCy0YLQvtGA 0L7Qul/RgdC10YDQtdC00LBf0YfQtdGC0LLQtdGAX9C/4oCZ0Y/RgtC90LjR htGPX9GB0YPQsdC+0YLQsCcuc3BsaXQoJ18nKSwKKyAgICAgICAgICAgICdh Y2N1c2F0aXZlJzogJ9C90LXQtNGW0LvRjl/Qv9C+0L3QtdC00ZbQu9C+0Lpf 0LLRltCy0YLQvtGA0L7Qul/RgdC10YDQtdC00YNf0YfQtdGC0LLQtdGAX9C/ 4oCZ0Y/RgtC90LjRhtGOX9GB0YPQsdC+0YLRgycuc3BsaXQoJ18nKSwKKyAg ICAgICAgICAgICdnZW5pdGl2ZSc6ICfQvdC10LTRltC70ZZf0L/QvtC90LXQ tNGW0LvQutCwX9Cy0ZbQstGC0L7RgNC60LBf0YHQtdGA0LXQtNC4X9GH0LXR gtCy0LXRgNCz0LBf0L/igJnRj9GC0L3QuNGG0ZZf0YHRg9Cx0L7RgtC4Jy5z cGxpdCgnXycpCisgICAgICAgIH0sCisgICAgICAgIG5vdW5DYXNlID0gKC8o XFtb0JLQstCj0YNdXF0pID9kZGRkLykudGVzdChmb3JtYXQpID8KKyAgICAg ICAgICAgICdhY2N1c2F0aXZlJyA6CisgICAgICAgICAgICAoKC9cWz8oPzrQ vNC40L3Rg9C70L7Rl3zQvdCw0YHRgtGD0L/QvdC+0ZcpPyA/XF0gP2RkZGQv KS50ZXN0KGZvcm1hdCkgPworICAgICAgICAgICAgICAgICdnZW5pdGl2ZScg OgorICAgICAgICAgICAgICAgICdub21pbmF0aXZlJyk7CisgICAgICAgIHJl dHVybiB3ZWVrZGF5c1tub3VuQ2FzZV1bbS5kYXkoKV07CisgICAgfQorICAg IGZ1bmN0aW9uIHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKHN0cikgeworICAgICAg ICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHN0 ciArICfQvicgKyAodGhpcy5ob3VycygpID09PSAxMSA/ICfQsScgOiAnJykg KyAnXSBMVCc7CisgICAgICAgIH07CisgICAgfQorCisgICAgdmFyIHVrID0g bW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgndWsnLCB7CisgICAgICAg IG1vbnRocyA6IHsKKyAgICAgICAgICAgICdmb3JtYXQnOiAn0YHRltGH0L3R j1/Qu9GO0YLQvtCz0L5f0LHQtdGA0LXQt9C90Y9f0LrQstGW0YLQvdGPX9GC 0YDQsNCy0L3Rj1/Rh9C10YDQstC90Y9f0LvQuNC/0L3Rj1/RgdC10YDQv9C9 0Y9f0LLQtdGA0LXRgdC90Y9f0LbQvtCy0YLQvdGPX9C70LjRgdGC0L7Qv9Cw 0LTQsF/Qs9GA0YPQtNC90Y8nLnNwbGl0KCdfJyksCisgICAgICAgICAgICAn c3RhbmRhbG9uZSc6ICfRgdGW0YfQtdC90Yxf0LvRjtGC0LjQuV/QsdC10YDQ tdC30LXQvdGMX9C60LLRltGC0LXQvdGMX9GC0YDQsNCy0LXQvdGMX9GH0LXR gNCy0LXQvdGMX9C70LjQv9C10L3RjF/RgdC10YDQv9C10L3RjF/QstC10YDQ tdGB0LXQvdGMX9C20L7QstGC0LXQvdGMX9C70LjRgdGC0L7Qv9Cw0LRf0LPR gNGD0LTQtdC90YwnLnNwbGl0KCdfJykKKyAgICAgICAgfSwKKyAgICAgICAg bW9udGhzU2hvcnQgOiAn0YHRltGHX9C70Y7Rgl/QsdC10YBf0LrQstGW0YJf 0YLRgNCw0LJf0YfQtdGA0LJf0LvQuNC/X9GB0LXRgNC/X9Cy0LXRgF/QttC+ 0LLRgl/Qu9C40YHRgl/Qs9GA0YPQtCcuc3BsaXQoJ18nKSwKKyAgICAgICAg d2Vla2RheXMgOiB3ZWVrZGF5c0Nhc2VSZXBsYWNlLAorICAgICAgICB3ZWVr ZGF5c1Nob3J0IDogJ9C90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB 0LEnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDogJ9C90LRf 0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksCisg ICAgICAgIGxvbmdEYXRlRm9ybWF0IDogeworICAgICAgICAgICAgTFQgOiAn SEg6bW0nLAorICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJywKKyAgICAg ICAgICAgIEwgOiAnREQuTU0uWVlZWScsCisgICAgICAgICAgICBMTCA6ICdE IE1NTU0gWVlZWSDRgC4nLAorICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZ WVlZINGALiwgSEg6bW0nLAorICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBE IE1NTU0gWVlZWSDRgC4sIEhIOm1tJworICAgICAgICB9LAorICAgICAgICBj YWxlbmRhciA6IHsKKyAgICAgICAgICAgIHNhbWVEYXk6IHByb2Nlc3NIb3Vy c0Z1bmN0aW9uKCdb0KHRjNC+0LPQvtC00L3RliAnKSwKKyAgICAgICAgICAg IG5leHREYXk6IHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0JfQsNCy0YLRgNCw ICcpLAorICAgICAgICAgICAgbGFzdERheTogcHJvY2Vzc0hvdXJzRnVuY3Rp b24oJ1vQktGH0L7RgNCwICcpLAorICAgICAgICAgICAgbmV4dFdlZWs6IHBy b2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0KNdIGRkZGQgWycpLAorICAgICAgICAg ICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBz d2l0Y2ggKHRoaXMuZGF5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2Fz ZSAwOgorICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAg ICAgICAgICAgIGNhc2UgNToKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA2 OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NIb3Vy c0Z1bmN0aW9uKCdb0JzQuNC90YPQu9C+0ZddIGRkZGQgWycpLmNhbGwodGhp cyk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAg ICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6 CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc0hvdXJz RnVuY3Rpb24oJ1vQnNC40L3Rg9C70L7Qs9C+XSBkZGRkIFsnKS5jYWxsKHRo aXMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAg ICAgICAgICBzYW1lRWxzZTogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJl bGF0aXZlVGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICfQt9CwICVz JywKKyAgICAgICAgICAgIHBhc3QgOiAnJXMg0YLQvtC80YMnLAorICAgICAg ICAgICAgcyA6ICfQtNC10LrRltC70YzQutCwINGB0LXQutGD0L3QtCcsCisg ICAgICAgICAgICBtIDogdWtfX3JlbGF0aXZlVGltZVdpdGhQbHVyYWwsCisg ICAgICAgICAgICBtbSA6IHVrX19yZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLAor ICAgICAgICAgICAgaCA6ICfQs9C+0LTQuNC90YMnLAorICAgICAgICAgICAg aGggOiB1a19fcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCwKKyAgICAgICAgICAg IGQgOiAn0LTQtdC90YwnLAorICAgICAgICAgICAgZGQgOiB1a19fcmVsYXRp dmVUaW1lV2l0aFBsdXJhbCwKKyAgICAgICAgICAgIE0gOiAn0LzRltGB0Y/R htGMJywKKyAgICAgICAgICAgIE1NIDogdWtfX3JlbGF0aXZlVGltZVdpdGhQ bHVyYWwsCisgICAgICAgICAgICB5IDogJ9GA0ZbQuicsCisgICAgICAgICAg ICB5eSA6IHVrX19yZWxhdGl2ZVRpbWVXaXRoUGx1cmFsCisgICAgICAgIH0s CisgICAgICAgIC8vIE0uIEUuOiB0aG9zZSB0d28gYXJlIHZpcnR1YWxseSB1 bnVzZWQgYnV0IGEgdXNlciBtaWdodCB3YW50IHRvIGltcGxlbWVudCB0aGVt IGZvciBoaXMvaGVyIHdlYnNpdGUgZm9yIHNvbWUgcmVhc29uCisgICAgICAg IG1lcmlkaWVtUGFyc2U6IC/QvdC+0YfRlnzRgNCw0L3QutGDfNC00L3Rj3zQ stC10YfQvtGA0LAvLAorICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQp IHsKKyAgICAgICAgICAgIHJldHVybiAvXijQtNC90Y980LLQtdGH0L7RgNCw KSQvLnRlc3QoaW5wdXQpOworICAgICAgICB9LAorICAgICAgICBtZXJpZGll bSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHsKKyAgICAg ICAgICAgIGlmIChob3VyIDwgNCkgeworICAgICAgICAgICAgICAgIHJldHVy biAn0L3QvtGH0ZYnOworICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwg MTIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ9GA0LDQvdC60YMnOwor ICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHsKKyAgICAgICAg ICAgICAgICByZXR1cm4gJ9C00L3Rjyc7CisgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICAgIHJldHVybiAn0LLQtdGH0L7RgNCwJzsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgb3JkaW5hbFBhcnNl OiAvXGR7MSwyfS0o0Ll80LPQvikvLAorICAgICAgICBvcmRpbmFsOiBmdW5j dGlvbiAobnVtYmVyLCBwZXJpb2QpIHsKKyAgICAgICAgICAgIHN3aXRjaCAo cGVyaW9kKSB7CisgICAgICAgICAgICAgICAgY2FzZSAnTSc6CisgICAgICAg ICAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICAgICAgY2FzZSAnRERE JzoKKyAgICAgICAgICAgICAgICBjYXNlICd3JzoKKyAgICAgICAgICAgICAg ICBjYXNlICdXJzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJl ciArICct0LknOworICAgICAgICAgICAgICAgIGNhc2UgJ0QnOgorICAgICAg ICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Qs9C+JzsKKyAgICAg ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1 cm4gbnVtYmVyOworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg ICB3ZWVrIDogeworICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlz IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCisgICAgICAgICAgICBkb3kg OiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxc3QgaXMgdGhl IGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuCisgICAgICAgIH0KKyAgICB9KTsK KworCisgICAgdmFyIHV6ID0gbW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2Fs ZSgndXonLCB7CisgICAgICAgIG1vbnRocyA6ICfRj9C90LLQsNGAX9GE0LXQ stGA0LDQu1/QvNCw0YDRgl/QsNC/0YDQtdC7X9C80LDQuV/QuNGO0L1f0LjR jtC7X9Cw0LLQs9GD0YHRgl/RgdC10L3RgtGP0LHRgF/QvtC60YLRj9Cx0YBf 0L3QvtGP0LHRgF/QtNC10LrQsNCx0YAnLnNwbGl0KCdfJyksCisgICAgICAg IG1vbnRoc1Nob3J0IDogJ9GP0L3Qsl/RhNC10LJf0LzQsNGAX9Cw0L/RgF/Q vNCw0Llf0LjRjtC9X9C40Y7Qu1/QsNCy0LNf0YHQtdC9X9C+0LrRgl/QvdC+ 0Y9f0LTQtdC6Jy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5cyA6ICfQ r9C60YjQsNC90LHQsF/QlNGD0YjQsNC90LHQsF/QodC10YjQsNC90LHQsF/Q p9C+0YDRiNCw0L3QsdCwX9Cf0LDQudGI0LDQvdCx0LBf0JbRg9C80LBf0KjQ sNC90LHQsCcuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6 ICfQr9C60Yhf0JTRg9GIX9Ch0LXRiF/Qp9C+0YBf0J/QsNC5X9CW0YPQvF/Q qNCw0L0nLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDogJ9Cv 0Lpf0JTRg1/QodC1X9Cn0L5f0J/QsF/QltGDX9Co0LAnLnNwbGl0KCdfJyks CisgICAgICAgIGxvbmdEYXRlRm9ybWF0IDogeworICAgICAgICAgICAgTFQg OiAnSEg6bW0nLAorICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJywKKyAg ICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsCisgICAgICAgICAgICBMTCA6 ICdEIE1NTU0gWVlZWScsCisgICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZ WVkgSEg6bW0nLAorICAgICAgICAgICAgTExMTCA6ICdEIE1NTU0gWVlZWSwg ZGRkZCBISDptbScKKyAgICAgICAgfSwKKyAgICAgICAgY2FsZW5kYXIgOiB7 CisgICAgICAgICAgICBzYW1lRGF5IDogJ1vQkdGD0LPRg9C9INGB0L7QsNGC XSBMVCBb0LTQsF0nLAorICAgICAgICAgICAgbmV4dERheSA6ICdb0K3RgNGC 0LDQs9CwXSBMVCBb0LTQsF0nLAorICAgICAgICAgICAgbmV4dFdlZWsgOiAn ZGRkZCBb0LrRg9C90Lgg0YHQvtCw0YJdIExUIFvQtNCwXScsCisgICAgICAg ICAgICBsYXN0RGF5IDogJ1vQmtC10YfQsCDRgdC+0LDRgl0gTFQgW9C00LBd JywKKyAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vQo9GC0LPQsNC9XSBkZGRk IFvQutGD0L3QuCDRgdC+0LDRgl0gTFQgW9C00LBdJywKKyAgICAgICAgICAg IHNhbWVFbHNlIDogJ0wnCisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZl VGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVyZSA6ICfQr9C60LjQvSAlcyDQ uNGH0LjQtNCwJywKKyAgICAgICAgICAgIHBhc3QgOiAn0JHQuNGAINC90LXR h9CwICVzINC+0LvQtNC40L0nLAorICAgICAgICAgICAgcyA6ICfRhNGD0YDR gdCw0YInLAorICAgICAgICAgICAgbSA6ICfQsdC40YAg0LTQsNC60LjQutCw JywKKyAgICAgICAgICAgIG1tIDogJyVkINC00LDQutC40LrQsCcsCisgICAg ICAgICAgICBoIDogJ9Cx0LjRgCDRgdC+0LDRgicsCisgICAgICAgICAgICBo aCA6ICclZCDRgdC+0LDRgicsCisgICAgICAgICAgICBkIDogJ9Cx0LjRgCDQ utGD0L0nLAorICAgICAgICAgICAgZGQgOiAnJWQg0LrRg9C9JywKKyAgICAg ICAgICAgIE0gOiAn0LHQuNGAINC+0LknLAorICAgICAgICAgICAgTU0gOiAn JWQg0L7QuScsCisgICAgICAgICAgICB5IDogJ9Cx0LjRgCDQudC40LsnLAor ICAgICAgICAgICAgeXkgOiAnJWQg0LnQuNC7JworICAgICAgICB9LAorICAg ICAgICB3ZWVrIDogeworICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5 IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCisgICAgICAgICAgICBk b3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMg dGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuCisgICAgICAgIH0KKyAgICB9 KTsKKworCisgICAgdmFyIHZpID0gbW9tZW50X19kZWZhdWx0LmRlZmluZUxv Y2FsZSgndmknLCB7CisgICAgICAgIG1vbnRocyA6ICd0aMOhbmcgMV90aMOh bmcgMl90aMOhbmcgM190aMOhbmcgNF90aMOhbmcgNV90aMOhbmcgNl90aMOh bmcgN190aMOhbmcgOF90aMOhbmcgOV90aMOhbmcgMTBfdGjDoW5nIDExX3Ro w6FuZyAxMicuc3BsaXQoJ18nKSwKKyAgICAgICAgbW9udGhzU2hvcnQgOiAn VGgwMV9UaDAyX1RoMDNfVGgwNF9UaDA1X1RoMDZfVGgwN19UaDA4X1RoMDlf VGgxMF9UaDExX1RoMTInLnNwbGl0KCdfJyksCisgICAgICAgIG1vbnRoc1Bh cnNlRXhhY3QgOiB0cnVlLAorICAgICAgICB3ZWVrZGF5cyA6ICdjaOG7pyBu aOG6rXRfdGjhu6kgaGFpX3Ro4bupIGJhX3Ro4bupIHTGsF90aOG7qSBuxINt X3Ro4bupIHPDoXVfdGjhu6kgYuG6o3knLnNwbGl0KCdfJyksCisgICAgICAg IHdlZWtkYXlzU2hvcnQgOiAnQ05fVDJfVDNfVDRfVDVfVDZfVDcnLnNwbGl0 KCdfJyksCisgICAgICAgIHdlZWtkYXlzTWluIDogJ0NOX1QyX1QzX1Q0X1Q1 X1Q2X1Q3Jy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c1BhcnNlRXhh Y3QgOiB0cnVlLAorICAgICAgICBtZXJpZGllbVBhcnNlOiAvc2F8Y2gvaSwK KyAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkgeworICAgICAgICAg ICAgcmV0dXJuIC9eY2gkL2kudGVzdChpbnB1dCk7CisgICAgICAgIH0sCisg ICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBp c0xvd2VyKSB7CisgICAgICAgICAgICBpZiAoaG91cnMgPCAxMikgeworICAg ICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ3NhJyA6ICdTQSc7Cisg ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBp c0xvd2VyID8gJ2NoJyA6ICdDSCc7CisgICAgICAgICAgICB9CisgICAgICAg IH0sCisgICAgICAgIGxvbmdEYXRlRm9ybWF0IDogeworICAgICAgICAgICAg TFQgOiAnSEg6bW0nLAorICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJywK KyAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsCisgICAgICAgICAgICBM TCA6ICdEIE1NTU0gW27Eg21dIFlZWVknLAorICAgICAgICAgICAgTExMIDog J0QgTU1NTSBbbsSDbV0gWVlZWSBISDptbScsCisgICAgICAgICAgICBMTExM IDogJ2RkZGQsIEQgTU1NTSBbbsSDbV0gWVlZWSBISDptbScsCisgICAgICAg ICAgICBsIDogJ0REL00vWVlZWScsCisgICAgICAgICAgICBsbCA6ICdEIE1N TSBZWVlZJywKKyAgICAgICAgICAgIGxsbCA6ICdEIE1NTSBZWVlZIEhIOm1t JywKKyAgICAgICAgICAgIGxsbGwgOiAnZGRkLCBEIE1NTSBZWVlZIEhIOm1t JworICAgICAgICB9LAorICAgICAgICBjYWxlbmRhciA6IHsKKyAgICAgICAg ICAgIHNhbWVEYXk6ICdbSMO0bSBuYXkgbMO6Y10gTFQnLAorICAgICAgICAg ICAgbmV4dERheTogJ1tOZ8OgeSBtYWkgbMO6Y10gTFQnLAorICAgICAgICAg ICAgbmV4dFdlZWs6ICdkZGRkIFt0deG6p24gdOG7m2kgbMO6Y10gTFQnLAor ICAgICAgICAgICAgbGFzdERheTogJ1tIw7RtIHF1YSBsw7pjXSBMVCcsCisg ICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3R14bqnbiBy4buTaSBsw7pj XSBMVCcsCisgICAgICAgICAgICBzYW1lRWxzZTogJ0wnCisgICAgICAgIH0s CisgICAgICAgIHJlbGF0aXZlVGltZSA6IHsKKyAgICAgICAgICAgIGZ1dHVy ZSA6ICclcyB04bubaScsCisgICAgICAgICAgICBwYXN0IDogJyVzIHRyxrDh u5tjJywKKyAgICAgICAgICAgIHMgOiAndsOgaSBnacOieScsCisgICAgICAg ICAgICBtIDogJ23hu5l0IHBow7p0JywKKyAgICAgICAgICAgIG1tIDogJyVk IHBow7p0JywKKyAgICAgICAgICAgIGggOiAnbeG7mXQgZ2nhu50nLAorICAg ICAgICAgICAgaGggOiAnJWQgZ2nhu50nLAorICAgICAgICAgICAgZCA6ICdt 4buZdCBuZ8OgeScsCisgICAgICAgICAgICBkZCA6ICclZCBuZ8OgeScsCisg ICAgICAgICAgICBNIDogJ23hu5l0IHRow6FuZycsCisgICAgICAgICAgICBN TSA6ICclZCB0aMOhbmcnLAorICAgICAgICAgICAgeSA6ICdt4buZdCBuxINt JywKKyAgICAgICAgICAgIHl5IDogJyVkIG7Eg20nCisgICAgICAgIH0sCisg ICAgICAgIG9yZGluYWxQYXJzZTogL1xkezEsMn0vLAorICAgICAgICBvcmRp bmFsIDogZnVuY3Rpb24gKG51bWJlcikgeworICAgICAgICAgICAgcmV0dXJu IG51bWJlcjsKKyAgICAgICAgfSwKKyAgICAgICAgd2VlayA6IHsKKyAgICAg ICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9m IHRoZSB3ZWVrLgorICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsg dGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRo ZSB5ZWFyLgorICAgICAgICB9CisgICAgfSk7CisKKworICAgIHZhciB4X3Bz ZXVkbyA9IG1vbWVudF9fZGVmYXVsdC5kZWZpbmVMb2NhbGUoJ3gtcHNldWRv JywgeworICAgICAgICBtb250aHMgOiAnSn7DocOxw7rDoX5yw71fRn7DqWJy w7p+w6Fyw71ffk3DoXJjfmhfw4FwfnLDrWxffk3DocO9X35Kw7rDscOpfl9K w7psfsO9X8OBw7p+Z8O6c3R+X1PDqXB+dMOpbWJ+w6lyX8OTfmN0w7NifsOp cl/DkX7Ds3bDqW1+YsOpcl9+RMOpY8Opfm1iw6lyJy5zcGxpdCgnXycpLAor ICAgICAgICBtb250aHNTaG9ydCA6ICdKfsOhw7FffkbDqWJffk3DoXJffsOB cHJffk3DocO9X35Kw7rDsV9+SsO6bF9+w4HDumdfflPDqXBffsOTY3RffsOR w7N2X35Ew6ljJy5zcGxpdCgnXycpLAorICAgICAgICBtb250aHNQYXJzZUV4 YWN0IDogdHJ1ZSwKKyAgICAgICAgd2Vla2RheXMgOiAnU37DusOxZMOhfsO9 X03Ds37DsWTDocO9fl9Uw7rDqX5zZMOhw71+X1fDqWR+w7HDqXNkfsOhw71f VH5ow7pyc35kw6HDvV9+RnLDrWR+w6HDvV9TfsOhdMO6cn5kw6HDvScuc3Bs aXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTfsO6w7Fffk3D s8OxX35Uw7rDqV9+V8OpZF9+VGjDul9+RnLDrV9+U8OhdCcuc3BsaXQoJ18n KSwKKyAgICAgICAgd2Vla2RheXNNaW4gOiAnU37Dul9Nw7N+X1TDul9+V8Op X1R+aF9Gcn5fU8OhJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c1Bh cnNlRXhhY3QgOiB0cnVlLAorICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHsK KyAgICAgICAgICAgIExUIDogJ0hIOm1tJywKKyAgICAgICAgICAgIEwgOiAn REQvTU0vWVlZWScsCisgICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScs CisgICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLAorICAg ICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbScKKyAg ICAgICAgfSwKKyAgICAgICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBz YW1lRGF5IDogJ1tUfsOzZMOhfsO9IMOhdF0gTFQnLAorICAgICAgICAgICAg bmV4dERheSA6ICdbVH7Ds23Ds35ycsOzfncgw6F0XSBMVCcsCisgICAgICAg ICAgICBuZXh0V2VlayA6ICdkZGRkIFvDoXRdIExUJywKKyAgICAgICAgICAg IGxhc3REYXkgOiAnW8OdfsOpc3R+w6lyZMOhfsO9IMOhdF0gTFQnLAorICAg ICAgICAgICAgbGFzdFdlZWsgOiAnW0x+w6FzdF0gZGRkZCBbw6F0XSBMVCcs CisgICAgICAgICAgICBzYW1lRWxzZSA6ICdMJworICAgICAgICB9LAorICAg ICAgICByZWxhdGl2ZVRpbWUgOiB7CisgICAgICAgICAgICBmdXR1cmUgOiAn w61+w7EgJXMnLAorICAgICAgICAgICAgcGFzdCA6ICclcyDDoX5nw7MnLAor ICAgICAgICAgICAgcyA6ICfDoSB+ZsOpdyB+c8OpY8OzfsOxZHMnLAorICAg ICAgICAgICAgbSA6ICfDoSB+bcOtw7F+w7p0w6knLAorICAgICAgICAgICAg bW0gOiAnJWQgbX7DrcOxw7p+dMOpcycsCisgICAgICAgICAgICBoIDogJ8Oh fsOxIGjDs37DunInLAorICAgICAgICAgICAgaGggOiAnJWQgaH7Ds8O6cnMn LAorICAgICAgICAgICAgZCA6ICfDoSB+ZMOhw70nLAorICAgICAgICAgICAg ZGQgOiAnJWQgZH7DocO9cycsCisgICAgICAgICAgICBNIDogJ8OhIH5tw7PD sX50aCcsCisgICAgICAgICAgICBNTSA6ICclZCBtfsOzw7F0fmhzJywKKyAg ICAgICAgICAgIHkgOiAnw6EgfsO9w6nDoXInLAorICAgICAgICAgICAgeXkg OiAnJWQgw71+w6nDoXJzJworICAgICAgICB9LAorICAgICAgICBvcmRpbmFs UGFyc2U6IC9cZHsxLDJ9KHRofHN0fG5kfHJkKS8sCisgICAgICAgIG9yZGlu YWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7CisgICAgICAgICAgICB2YXIgYiA9 IG51bWJlciAlIDEwLAorICAgICAgICAgICAgICAgIG91dHB1dCA9ICh+fihu dW1iZXIgJSAxMDAgLyAxMCkgPT09IDEpID8gJ3RoJyA6CisgICAgICAgICAg ICAgICAgKGIgPT09IDEpID8gJ3N0JyA6CisgICAgICAgICAgICAgICAgKGIg PT09IDIpID8gJ25kJyA6CisgICAgICAgICAgICAgICAgKGIgPT09IDMpID8g J3JkJyA6ICd0aCc7CisgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0 cHV0OworICAgICAgICB9LAorICAgICAgICB3ZWVrIDogeworICAgICAgICAg ICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhl IHdlZWsuCisgICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0 IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHll YXIuCisgICAgICAgIH0KKyAgICB9KTsKKworCisgICAgdmFyIHpoX2NuID0g bW9tZW50X19kZWZhdWx0LmRlZmluZUxvY2FsZSgnemgtY24nLCB7CisgICAg ICAgIG1vbnRocyA6ICfkuIDmnIhf5LqM5pyIX+S4ieaciF/lm5vmnIhf5LqU 5pyIX+WFreaciF/kuIPmnIhf5YWr5pyIX+S5neaciF/ljYHmnIhf5Y2B5LiA 5pyIX+WNgeS6jOaciCcuc3BsaXQoJ18nKSwKKyAgICAgICAgbW9udGhzU2hv cnQgOiAnMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyI XznmnIhfMTDmnIhfMTHmnIhfMTLmnIgnLnNwbGl0KCdfJyksCisgICAgICAg IHdlZWtkYXlzIDogJ+aYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aY n+acn+S4iV/mmJ/mnJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrScuc3BsaXQo J18nKSwKKyAgICAgICAgd2Vla2RheXNTaG9ydCA6ICflkajml6Vf5ZGo5LiA X+WRqOS6jF/lkajkuIlf5ZGo5ZubX+WRqOS6lF/lkajlha0nLnNwbGl0KCdf JyksCisgICAgICAgIHdlZWtkYXlzTWluIDogJ+aXpV/kuIBf5LqMX+S4iV/l m5tf5LqUX+WFrScuc3BsaXQoJ18nKSwKKyAgICAgICAgbG9uZ0RhdGVGb3Jt YXQgOiB7CisgICAgICAgICAgICBMVCA6ICdBaOeCuW1t5YiGJywKKyAgICAg ICAgICAgIExUUyA6ICdBaOeCuW3liIZz56eSJywKKyAgICAgICAgICAgIEwg OiAnWVlZWS1NTS1ERCcsCisgICAgICAgICAgICBMTCA6ICdZWVlZ5bm0TU1N ROaXpScsCisgICAgICAgICAgICBMTEwgOiAnWVlZWeW5tE1NTUTml6VBaOeC uW1t5YiGJywKKyAgICAgICAgICAgIExMTEwgOiAnWVlZWeW5tE1NTUTml6Vk ZGRkQWjngrltbeWIhicsCisgICAgICAgICAgICBsIDogJ1lZWVktTU0tREQn LAorICAgICAgICAgICAgbGwgOiAnWVlZWeW5tE1NTUTml6UnLAorICAgICAg ICAgICAgbGxsIDogJ1lZWVnlubRNTU1E5pelQWjngrltbeWIhicsCisgICAg ICAgICAgICBsbGxsIDogJ1lZWVnlubRNTU1E5pelZGRkZEFo54K5bW3liIYn CisgICAgICAgIH0sCisgICAgICAgIG1lcmlkaWVtUGFyc2U6IC/lh4zmmah8 5pep5LiKfOS4iuWNiHzkuK3ljYh85LiL5Y2IfOaZmuS4ii8sCisgICAgICAg IG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7Cisg ICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHsKKyAgICAgICAgICAgICAg ICBob3VyID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICht ZXJpZGllbSA9PT0gJ+WHjOaZqCcgfHwgbWVyaWRpZW0gPT09ICfml6nkuIon IHx8CisgICAgICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn5LiK5Y2I JykgeworICAgICAgICAgICAgICAgIHJldHVybiBob3VyOworICAgICAgICAg ICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+S4i+WNiCcgfHwgbWVyaWRp ZW0gPT09ICfmmZrkuIonKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGhv dXIgKyAxMjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg ICAgLy8gJ+S4reWNiCcKKyAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+ PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7CisgICAgICAgICAgICB9CisgICAg ICAgIH0sCisgICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1p bnV0ZSwgaXNMb3dlcikgeworICAgICAgICAgICAgdmFyIGhtID0gaG91ciAq IDEwMCArIG1pbnV0ZTsKKyAgICAgICAgICAgIGlmIChobSA8IDYwMCkgewor ICAgICAgICAgICAgICAgIHJldHVybiAn5YeM5pmoJzsKKyAgICAgICAgICAg IH0gZWxzZSBpZiAoaG0gPCA5MDApIHsKKyAgICAgICAgICAgICAgICByZXR1 cm4gJ+aXqeS4iic7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTEz MCkgeworICAgICAgICAgICAgICAgIHJldHVybiAn5LiK5Y2IJzsKKyAgICAg ICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMjMwKSB7CisgICAgICAgICAgICAg ICAgcmV0dXJuICfkuK3ljYgnOworICAgICAgICAgICAgfSBlbHNlIGlmICho bSA8IDE4MDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ+S4i+WNiCc7 CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVy biAn5pma5LiKJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg ICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBzYW1lRGF5IDogZnVuY3Rp b24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1pbnV0ZXMo KSA9PT0gMCA/ICdb5LuK5aSpXUFoW+eCueaVtF0nIDogJ1vku4rlpKldTFQn OworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIG5leHREYXkgOiBmdW5j dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWludXRl cygpID09PSAwID8gJ1vmmI7lpKldQWhb54K55pW0XScgOiAnW+aYjuWkqV1M VCc7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgbGFzdERheSA6IGZ1 bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5taW51 dGVzKCkgPT09IDAgPyAnW+aYqOWkqV1BaFvngrnmlbRdJyA6ICdb5pio5aSp XUxUJzsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBuZXh0V2VlayA6 IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgc3RhcnRPZldl ZWssIHByZWZpeDsKKyAgICAgICAgICAgICAgICBzdGFydE9mV2VlayA9IG1v bWVudF9fZGVmYXVsdCgpLnN0YXJ0T2YoJ3dlZWsnKTsKKyAgICAgICAgICAg ICAgICBwcmVmaXggPSB0aGlzLmRpZmYoc3RhcnRPZldlZWssICdkYXlzJykg Pj0gNyA/ICdb5LiLXScgOiAnW+acrF0nOworICAgICAgICAgICAgICAgIHJl dHVybiB0aGlzLm1pbnV0ZXMoKSA9PT0gMCA/IHByZWZpeCArICdkZGRBaOeC ueaVtCcgOiBwcmVmaXggKyAnZGRkQWjngrltbSc7CisgICAgICAgICAgICB9 LAorICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7CisgICAg ICAgICAgICAgICAgdmFyIHN0YXJ0T2ZXZWVrLCBwcmVmaXg7CisgICAgICAg ICAgICAgICAgc3RhcnRPZldlZWsgPSBtb21lbnRfX2RlZmF1bHQoKS5zdGFy dE9mKCd3ZWVrJyk7CisgICAgICAgICAgICAgICAgcHJlZml4ID0gdGhpcy51 bml4KCkgPCBzdGFydE9mV2Vlay51bml4KCkgID8gJ1vkuIpdJyA6ICdb5pys XSc7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWludXRlcygpID09 PSAwID8gcHJlZml4ICsgJ2RkZEFo54K55pW0JyA6IHByZWZpeCArICdkZGRB aOeCuW1tJzsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBzYW1lRWxz ZSA6ICdMTCcKKyAgICAgICAgfSwKKyAgICAgICAgb3JkaW5hbFBhcnNlOiAv XGR7MSwyfSjml6V85pyIfOWRqCkvLAorICAgICAgICBvcmRpbmFsIDogZnVu Y3Rpb24gKG51bWJlciwgcGVyaW9kKSB7CisgICAgICAgICAgICBzd2l0Y2gg KHBlcmlvZCkgeworICAgICAgICAgICAgICAgIGNhc2UgJ2QnOgorICAgICAg ICAgICAgICAgIGNhc2UgJ0QnOgorICAgICAgICAgICAgICAgIGNhc2UgJ0RE RCc6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pel JzsKKyAgICAgICAgICAgICAgICBjYXNlICdNJzoKKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIG51bWJlciArICfmnIgnOworICAgICAgICAgICAgICAg IGNhc2UgJ3cnOgorICAgICAgICAgICAgICAgIGNhc2UgJ1cnOgorICAgICAg ICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+WRqCc7CisgICAgICAg ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IG51bWJlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg cmVsYXRpdmVUaW1lIDogeworICAgICAgICAgICAgZnV0dXJlIDogJyVz5YaF JywKKyAgICAgICAgICAgIHBhc3QgOiAnJXPliY0nLAorICAgICAgICAgICAg cyA6ICflh6Dnp5InLAorICAgICAgICAgICAgbSA6ICcxIOWIhumSnycsCisg ICAgICAgICAgICBtbSA6ICclZCDliIbpkp8nLAorICAgICAgICAgICAgaCA6 ICcxIOWwj+aXticsCisgICAgICAgICAgICBoaCA6ICclZCDlsI/ml7YnLAor ICAgICAgICAgICAgZCA6ICcxIOWkqScsCisgICAgICAgICAgICBkZCA6ICcl ZCDlpKknLAorICAgICAgICAgICAgTSA6ICcxIOS4quaciCcsCisgICAgICAg ICAgICBNTSA6ICclZCDkuKrmnIgnLAorICAgICAgICAgICAgeSA6ICcxIOW5 tCcsCisgICAgICAgICAgICB5eSA6ICclZCDlubQnCisgICAgICAgIH0sCisg ICAgICAgIHdlZWsgOiB7CisgICAgICAgICAgICAvLyBHQi9UIDc0MDgtMTk5 NOOAiuaVsOaNruWFg+WSjOS6pOaNouagvOW8j8K35L+h5oGv5Lqk5o2iwrfm l6XmnJ/lkozml7bpl7TooajnpLrms5XjgIvkuI5JU08gODYwMToxOTg4562J 5pWICisgICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZp cnN0IGRheSBvZiB0aGUgd2Vlay4KKyAgICAgICAgICAgIGRveSA6IDQgIC8v IFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qg d2VlayBvZiB0aGUgeWVhci4KKyAgICAgICAgfQorICAgIH0pOworCisKKyAg ICB2YXIgemhfaGsgPSBtb21lbnRfX2RlZmF1bHQuZGVmaW5lTG9jYWxlKCd6 aC1oaycsIHsKKyAgICAgICAgbW9udGhzIDogJ+S4gOaciF/kuozmnIhf5LiJ 5pyIX+Wbm+aciF/kupTmnIhf5YWt5pyIX+S4g+aciF/lhavmnIhf5Lmd5pyI X+WNgeaciF/ljYHkuIDmnIhf5Y2B5LqM5pyIJy5zcGxpdCgnXycpLAorICAg ICAgICBtb250aHNTaG9ydCA6ICcx5pyIXzLmnIhfM+aciF805pyIXzXmnIhf NuaciF835pyIXzjmnIhfOeaciF8xMOaciF8xMeaciF8xMuaciCcuc3BsaXQo J18nKSwKKyAgICAgICAgd2Vla2RheXMgOiAn5pif5pyf5pelX+aYn+acn+S4 gF/mmJ/mnJ/kuoxf5pif5pyf5LiJX+aYn+acn+Wbm1/mmJ/mnJ/kupRf5pif 5pyf5YWtJy5zcGxpdCgnXycpLAorICAgICAgICB3ZWVrZGF5c1Nob3J0IDog J+mAseaXpV/pgLHkuIBf6YCx5LqMX+mAseS4iV/pgLHlm5tf6YCx5LqUX+mA seWFrScuc3BsaXQoJ18nKSwKKyAgICAgICAgd2Vla2RheXNNaW4gOiAn5pel X+S4gF/kuoxf5LiJX+Wbm1/kupRf5YWtJy5zcGxpdCgnXycpLAorICAgICAg ICBsb25nRGF0ZUZvcm1hdCA6IHsKKyAgICAgICAgICAgIExUIDogJ0Fo6bue bW3liIYnLAorICAgICAgICAgICAgTFRTIDogJ0Fo6buebeWIhnPnp5InLAor ICAgICAgICAgICAgTCA6ICdZWVlZ5bm0TU1NROaXpScsCisgICAgICAgICAg ICBMTCA6ICdZWVlZ5bm0TU1NROaXpScsCisgICAgICAgICAgICBMTEwgOiAn WVlZWeW5tE1NTUTml6VBaOm7nm1t5YiGJywKKyAgICAgICAgICAgIExMTEwg OiAnWVlZWeW5tE1NTUTml6VkZGRkQWjpu55tbeWIhicsCisgICAgICAgICAg ICBsIDogJ1lZWVnlubRNTU1E5pelJywKKyAgICAgICAgICAgIGxsIDogJ1lZ WVnlubRNTU1E5pelJywKKyAgICAgICAgICAgIGxsbCA6ICdZWVlZ5bm0TU1N ROaXpUFo6buebW3liIYnLAorICAgICAgICAgICAgbGxsbCA6ICdZWVlZ5bm0 TU1NROaXpWRkZGRBaOm7nm1t5YiGJworICAgICAgICB9LAorICAgICAgICBt ZXJpZGllbVBhcnNlOiAv5YeM5pmofOaXqeS4inzkuIrljYh85Lit5Y2IfOS4 i+WNiHzmmZrkuIovLAorICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlv biAoaG91ciwgbWVyaWRpZW0pIHsKKyAgICAgICAgICAgIGlmIChob3VyID09 PSAxMikgeworICAgICAgICAgICAgICAgIGhvdXIgPSAwOworICAgICAgICAg ICAgfQorICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn5YeM5pmoJyB8 fCBtZXJpZGllbSA9PT0gJ+aXqeS4iicgfHwgbWVyaWRpZW0gPT09ICfkuIrl jYgnKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7CisgICAgICAg ICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5Lit5Y2IJykgeworICAg ICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIg KyAxMjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfk uIvljYgnIHx8IG1lcmlkaWVtID09PSAn5pma5LiKJykgeworICAgICAgICAg ICAgICAgIHJldHVybiBob3VyICsgMTI7CisgICAgICAgICAgICB9CisgICAg ICAgIH0sCisgICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1p bnV0ZSwgaXNMb3dlcikgeworICAgICAgICAgICAgdmFyIGhtID0gaG91ciAq IDEwMCArIG1pbnV0ZTsKKyAgICAgICAgICAgIGlmIChobSA8IDYwMCkgewor ICAgICAgICAgICAgICAgIHJldHVybiAn5YeM5pmoJzsKKyAgICAgICAgICAg IH0gZWxzZSBpZiAoaG0gPCA5MDApIHsKKyAgICAgICAgICAgICAgICByZXR1 cm4gJ+aXqeS4iic7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTEz MCkgeworICAgICAgICAgICAgICAgIHJldHVybiAn5LiK5Y2IJzsKKyAgICAg ICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMjMwKSB7CisgICAgICAgICAgICAg ICAgcmV0dXJuICfkuK3ljYgnOworICAgICAgICAgICAgfSBlbHNlIGlmICho bSA8IDE4MDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ+S4i+WNiCc7 CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVy biAn5pma5LiKJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg ICAgY2FsZW5kYXIgOiB7CisgICAgICAgICAgICBzYW1lRGF5IDogJ1vku4rl pKldTFQnLAorICAgICAgICAgICAgbmV4dERheSA6ICdb5piO5aSpXUxUJywK KyAgICAgICAgICAgIG5leHRXZWVrIDogJ1vkuItdZGRkZExUJywKKyAgICAg ICAgICAgIGxhc3REYXkgOiAnW+aYqOWkqV1MVCcsCisgICAgICAgICAgICBs YXN0V2VlayA6ICdb5LiKXWRkZGRMVCcsCisgICAgICAgICAgICBzYW1lRWxz ZSA6ICdMJworICAgICAgICB9LAorICAgICAgICBvcmRpbmFsUGFyc2U6IC9c ZHsxLDJ9KOaXpXzmnIh86YCxKS8sCisgICAgICAgIG9yZGluYWwgOiBmdW5j dGlvbiAobnVtYmVyLCBwZXJpb2QpIHsKKyAgICAgICAgICAgIHN3aXRjaCAo cGVyaW9kKSB7CisgICAgICAgICAgICAgICAgY2FzZSAnZCcgOgorICAgICAg ICAgICAgICAgIGNhc2UgJ0QnIDoKKyAgICAgICAgICAgICAgICBjYXNlICdE REQnIDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfm l6UnOworICAgICAgICAgICAgICAgIGNhc2UgJ00nIDoKKyAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIG51bWJlciArICfmnIgnOworICAgICAgICAgICAg ICAgIGNhc2UgJ3cnIDoKKyAgICAgICAgICAgICAgICBjYXNlICdXJyA6Cisg ICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn6YCxJzsKKyAg ICAgICAgICAgICAgICBkZWZhdWx0IDoKKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuIG51bWJlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg ICAgICAgcmVsYXRpdmVUaW1lIDogeworICAgICAgICAgICAgZnV0dXJlIDog JyVz5YWnJywKKyAgICAgICAgICAgIHBhc3QgOiAnJXPliY0nLAorICAgICAg ICAgICAgcyA6ICflub7np5InLAorICAgICAgICAgICAgbSA6ICcxIOWIhumQ mCcsCisgICAgICAgICAgICBtbSA6ICclZCDliIbpkJgnLAorICAgICAgICAg ICAgaCA6ICcxIOWwj+aZgicsCisgICAgICAgICAgICBoaCA6ICclZCDlsI/m mYInLAorICAgICAgICAgICAgZCA6ICcxIOWkqScsCisgICAgICAgICAgICBk ZCA6ICclZCDlpKknLAorICAgICAgICAgICAgTSA6ICcxIOWAi+aciCcsCisg ICAgICAgICAgICBNTSA6ICclZCDlgIvmnIgnLAorICAgICAgICAgICAgeSA6 ICcxIOW5tCcsCisgICAgICAgICAgICB5eSA6ICclZCDlubQnCisgICAgICAg IH0KKyAgICB9KTsKKworCisgICAgdmFyIHpoX3R3ID0gbW9tZW50X19kZWZh dWx0LmRlZmluZUxvY2FsZSgnemgtdHcnLCB7CisgICAgICAgIG1vbnRocyA6 ICfkuIDmnIhf5LqM5pyIX+S4ieaciF/lm5vmnIhf5LqU5pyIX+WFreaciF/k uIPmnIhf5YWr5pyIX+S5neaciF/ljYHmnIhf5Y2B5LiA5pyIX+WNgeS6jOac iCcuc3BsaXQoJ18nKSwKKyAgICAgICAgbW9udGhzU2hvcnQgOiAnMeaciF8y 5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhf MTHmnIhfMTLmnIgnLnNwbGl0KCdfJyksCisgICAgICAgIHdlZWtkYXlzIDog J+aYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aYn+acn+S4iV/mmJ/m nJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrScuc3BsaXQoJ18nKSwKKyAgICAg ICAgd2Vla2RheXNTaG9ydCA6ICfpgLHml6Vf6YCx5LiAX+mAseS6jF/pgLHk uIlf6YCx5ZubX+mAseS6lF/pgLHlha0nLnNwbGl0KCdfJyksCisgICAgICAg IHdlZWtkYXlzTWluIDogJ+aXpV/kuIBf5LqMX+S4iV/lm5tf5LqUX+WFrScu c3BsaXQoJ18nKSwKKyAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7CisgICAg ICAgICAgICBMVCA6ICdBaOm7nm1t5YiGJywKKyAgICAgICAgICAgIExUUyA6 ICdBaOm7nm3liIZz56eSJywKKyAgICAgICAgICAgIEwgOiAnWVlZWeW5tE1N TUTml6UnLAorICAgICAgICAgICAgTEwgOiAnWVlZWeW5tE1NTUTml6UnLAor ICAgICAgICAgICAgTExMIDogJ1lZWVnlubRNTU1E5pelQWjpu55tbeWIhics CisgICAgICAgICAgICBMTExMIDogJ1lZWVnlubRNTU1E5pelZGRkZEFo6bue bW3liIYnLAorICAgICAgICAgICAgbCA6ICdZWVlZ5bm0TU1NROaXpScsCisg ICAgICAgICAgICBsbCA6ICdZWVlZ5bm0TU1NROaXpScsCisgICAgICAgICAg ICBsbGwgOiAnWVlZWeW5tE1NTUTml6VBaOm7nm1t5YiGJywKKyAgICAgICAg ICAgIGxsbGwgOiAnWVlZWeW5tE1NTUTml6VkZGRkQWjpu55tbeWIhicKKyAg ICAgICAgfSwKKyAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WHjOaZqHzml6nk uIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLywKKyAgICAgICAgbWVy aWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7CisgICAg ICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHsKKyAgICAgICAgICAgICAgICBo b3VyID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtZXJp ZGllbSA9PT0gJ+WHjOaZqCcgfHwgbWVyaWRpZW0gPT09ICfml6nkuIonIHx8 IG1lcmlkaWVtID09PSAn5LiK5Y2IJykgeworICAgICAgICAgICAgICAgIHJl dHVybiBob3VyOworICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9 PT0gJ+S4reWNiCcpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+ PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7CisgICAgICAgICAgICB9IGVsc2Ug aWYgKG1lcmlkaWVtID09PSAn5LiL5Y2IJyB8fCBtZXJpZGllbSA9PT0gJ+aZ muS4iicpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyOwor ICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBtZXJpZGllbSA6 IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHsKKyAgICAgICAg ICAgIHZhciBobSA9IGhvdXIgKiAxMDAgKyBtaW51dGU7CisgICAgICAgICAg ICBpZiAoaG0gPCA2MDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ+WH jOaZqCc7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgOTAwKSB7Cisg ICAgICAgICAgICAgICAgcmV0dXJuICfml6nkuIonOworICAgICAgICAgICAg fSBlbHNlIGlmIChobSA8IDExMzApIHsKKyAgICAgICAgICAgICAgICByZXR1 cm4gJ+S4iuWNiCc7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTIz MCkgeworICAgICAgICAgICAgICAgIHJldHVybiAn5Lit5Y2IJzsKKyAgICAg ICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxODAwKSB7CisgICAgICAgICAgICAg ICAgcmV0dXJuICfkuIvljYgnOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgICAgICByZXR1cm4gJ+aZmuS4iic7CisgICAgICAgICAgICB9 CisgICAgICAgIH0sCisgICAgICAgIGNhbGVuZGFyIDogeworICAgICAgICAg ICAgc2FtZURheSA6ICdb5LuK5aSpXUxUJywKKyAgICAgICAgICAgIG5leHRE YXkgOiAnW+aYjuWkqV1MVCcsCisgICAgICAgICAgICBuZXh0V2VlayA6ICdb 5LiLXWRkZGRMVCcsCisgICAgICAgICAgICBsYXN0RGF5IDogJ1vmmKjlpKld TFQnLAorICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+S4il1kZGRkTFQnLAor ICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCcKKyAgICAgICAgfSwKKyAgICAg ICAgb3JkaW5hbFBhcnNlOiAvXGR7MSwyfSjml6V85pyIfOmAsSkvLAorICAg ICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7Cisg ICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkgeworICAgICAgICAgICAgICAg IGNhc2UgJ2QnIDoKKyAgICAgICAgICAgICAgICBjYXNlICdEJyA6CisgICAg ICAgICAgICAgICAgY2FzZSAnREREJyA6CisgICAgICAgICAgICAgICAgICAg IHJldHVybiBudW1iZXIgKyAn5pelJzsKKyAgICAgICAgICAgICAgICBjYXNl ICdNJyA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn 5pyIJzsKKyAgICAgICAgICAgICAgICBjYXNlICd3JyA6CisgICAgICAgICAg ICAgICAgY2FzZSAnVycgOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g bnVtYmVyICsgJ+mAsSc7CisgICAgICAgICAgICAgICAgZGVmYXVsdCA6Cisg ICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7CisgICAgICAgICAg ICB9CisgICAgICAgIH0sCisgICAgICAgIHJlbGF0aXZlVGltZSA6IHsKKyAg ICAgICAgICAgIGZ1dHVyZSA6ICclc+WFpycsCisgICAgICAgICAgICBwYXN0 IDogJyVz5YmNJywKKyAgICAgICAgICAgIHMgOiAn5bm+56eSJywKKyAgICAg ICAgICAgIG0gOiAnMSDliIbpkJgnLAorICAgICAgICAgICAgbW0gOiAnJWQg 5YiG6ZCYJywKKyAgICAgICAgICAgIGggOiAnMSDlsI/mmYInLAorICAgICAg ICAgICAgaGggOiAnJWQg5bCP5pmCJywKKyAgICAgICAgICAgIGQgOiAnMSDl pKknLAorICAgICAgICAgICAgZGQgOiAnJWQg5aSpJywKKyAgICAgICAgICAg IE0gOiAnMSDlgIvmnIgnLAorICAgICAgICAgICAgTU0gOiAnJWQg5YCL5pyI JywKKyAgICAgICAgICAgIHkgOiAnMSDlubQnLAorICAgICAgICAgICAgeXkg OiAnJWQg5bm0JworICAgICAgICB9CisgICAgfSk7CisKKyAgICB2YXIgbW9t ZW50X3dpdGhfbG9jYWxlcyA9IG1vbWVudF9fZGVmYXVsdDsKKyAgICBtb21l bnRfd2l0aF9sb2NhbGVzLmxvY2FsZSgnZW4nKTsKKworICAgIHJldHVybiBt b21lbnRfd2l0aF9sb2NhbGVzOworCit9KSk7ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pz L21vbWVudC13aXRoLWxvY2FsZXMubWluLmpzIGIvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL21vbWVudC13aXRoLWxvY2FsZXMubWluLmpzCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhMDMwMzAKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvbW9tZW50LXdpdGgtbG9j YWxlcy5taW4uanMKQEAgLTAsMCArMSw2NzggQEAKKy8vISBtb21lbnQuanMK Ky8vISB2ZXJzaW9uIDogMi4xNS4wCisvLyEgYXV0aG9ycyA6IFRpbSBXb29k LCBJc2tyZW4gQ2hlcm5ldiwgTW9tZW50LmpzIGNvbnRyaWJ1dG9ycworLy8h IGxpY2Vuc2UgOiBNSVQKKy8vISBtb21lbnRqcy5jb20KKyFmdW5jdGlvbihh LGIpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5 cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9YigpOiJmdW5jdGlvbiI9PXR5 cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKGIpOmEubW9tZW50PWIo KX0odGhpcyxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKCl7 cmV0dXJuIGplLmFwcGx5KG51bGwsYXJndW1lbnRzKX0KKy8vIFRoaXMgaXMg ZG9uZSB0byByZWdpc3RlciB0aGUgbWV0aG9kIGNhbGxlZCB3aXRoIG1vbWVu dCgpCisvLyB3aXRob3V0IGNyZWF0aW5nIGNpcmN1bGFyIGRlcGVuZGVuY2ll cy4KK2Z1bmN0aW9uIGIoYSl7amU9YX1mdW5jdGlvbiBjKGEpe3JldHVybiBh IGluc3RhbmNlb2YgQXJyYXl8fCJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3Qu cHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSl9ZnVuY3Rpb24gZChhKXsKKy8v IElFOCB3aWxsIHRyZWF0IHVuZGVmaW5lZCBhbmQgbnVsbCBhcyBvYmplY3Qg aWYgaXQgd2Fzbid0IGZvcgorLy8gaW5wdXQgIT0gbnVsbAorcmV0dXJuIG51 bGwhPWEmJiJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50 b1N0cmluZy5jYWxsKGEpfWZ1bmN0aW9uIGUoYSl7dmFyIGI7Zm9yKGIgaW4g YSkKKy8vIGV2ZW4gaWYgaXRzIG5vdCBvd24gcHJvcGVydHkgSSdkIHN0aWxs IGNhbGwgaXQgbm9uLWVtcHR5CityZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlv biBmKGEpe3JldHVybiBhIGluc3RhbmNlb2YgRGF0ZXx8IltvYmplY3QgRGF0 ZV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpfWZ1bmN0 aW9uIGcoYSxiKXt2YXIgYyxkPVtdO2ZvcihjPTA7YzxhLmxlbmd0aDsrK2Mp ZC5wdXNoKGIoYVtjXSxjKSk7cmV0dXJuIGR9ZnVuY3Rpb24gaChhLGIpe3Jl dHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxi KX1mdW5jdGlvbiBpKGEsYil7Zm9yKHZhciBjIGluIGIpaChiLGMpJiYoYVtj XT1iW2NdKTtyZXR1cm4gaChiLCJ0b1N0cmluZyIpJiYoYS50b1N0cmluZz1i LnRvU3RyaW5nKSxoKGIsInZhbHVlT2YiKSYmKGEudmFsdWVPZj1iLnZhbHVl T2YpLGF9ZnVuY3Rpb24gaihhLGIsYyxkKXtyZXR1cm4gcWIoYSxiLGMsZCwh MCkudXRjKCl9ZnVuY3Rpb24gaygpeworLy8gV2UgbmVlZCB0byBkZWVwIGNs b25lIHRoaXMgb2JqZWN0LgorcmV0dXJue2VtcHR5OiExLHVudXNlZFRva2Vu czpbXSx1bnVzZWRJbnB1dDpbXSxvdmVyZmxvdzotMixjaGFyc0xlZnRPdmVy OjAsbnVsbElucHV0OiExLGludmFsaWRNb250aDpudWxsLGludmFsaWRGb3Jt YXQ6ITEsdXNlckludmFsaWRhdGVkOiExLGlzbzohMSxwYXJzZWREYXRlUGFy dHM6W10sbWVyaWRpZW06bnVsbH19ZnVuY3Rpb24gbChhKXtyZXR1cm4gbnVs bD09YS5fcGYmJihhLl9wZj1rKCkpLGEuX3BmfWZ1bmN0aW9uIG0oYSl7aWYo bnVsbD09YS5faXNWYWxpZCl7dmFyIGI9bChhKSxjPWtlLmNhbGwoYi5wYXJz ZWREYXRlUGFydHMsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWF9KSxkPSFp c05hTihhLl9kLmdldFRpbWUoKSkmJmIub3ZlcmZsb3c8MCYmIWIuZW1wdHkm JiFiLmludmFsaWRNb250aCYmIWIuaW52YWxpZFdlZWtkYXkmJiFiLm51bGxJ bnB1dCYmIWIuaW52YWxpZEZvcm1hdCYmIWIudXNlckludmFsaWRhdGVkJiYo IWIubWVyaWRpZW18fGIubWVyaWRpZW0mJmMpO2lmKGEuX3N0cmljdCYmKGQ9 ZCYmMD09PWIuY2hhcnNMZWZ0T3ZlciYmMD09PWIudW51c2VkVG9rZW5zLmxl bmd0aCYmdm9pZCAwPT09Yi5iaWdIb3VyKSxudWxsIT1PYmplY3QuaXNGcm96 ZW4mJk9iamVjdC5pc0Zyb3plbihhKSlyZXR1cm4gZDthLl9pc1ZhbGlkPWR9 cmV0dXJuIGEuX2lzVmFsaWR9ZnVuY3Rpb24gbihhKXt2YXIgYj1qKE5hTik7 cmV0dXJuIG51bGwhPWE/aShsKGIpLGEpOmwoYikudXNlckludmFsaWRhdGVk PSEwLGJ9ZnVuY3Rpb24gbyhhKXtyZXR1cm4gdm9pZCAwPT09YX1mdW5jdGlv biBwKGEsYil7dmFyIGMsZCxlO2lmKG8oYi5faXNBTW9tZW50T2JqZWN0KXx8 KGEuX2lzQU1vbWVudE9iamVjdD1iLl9pc0FNb21lbnRPYmplY3QpLG8oYi5f aSl8fChhLl9pPWIuX2kpLG8oYi5fZil8fChhLl9mPWIuX2YpLG8oYi5fbCl8 fChhLl9sPWIuX2wpLG8oYi5fc3RyaWN0KXx8KGEuX3N0cmljdD1iLl9zdHJp Y3QpLG8oYi5fdHptKXx8KGEuX3R6bT1iLl90em0pLG8oYi5faXNVVEMpfHwo YS5faXNVVEM9Yi5faXNVVEMpLG8oYi5fb2Zmc2V0KXx8KGEuX29mZnNldD1i Ll9vZmZzZXQpLG8oYi5fcGYpfHwoYS5fcGY9bChiKSksbyhiLl9sb2NhbGUp fHwoYS5fbG9jYWxlPWIuX2xvY2FsZSksbGUubGVuZ3RoPjApZm9yKGMgaW4g bGUpZD1sZVtjXSxlPWJbZF0sbyhlKXx8KGFbZF09ZSk7cmV0dXJuIGF9Cisv LyBNb21lbnQgcHJvdG90eXBlIG9iamVjdAorZnVuY3Rpb24gcShiKXtwKHRo aXMsYiksdGhpcy5fZD1uZXcgRGF0ZShudWxsIT1iLl9kP2IuX2QuZ2V0VGlt ZSgpOk5hTiksbWU9PT0hMSYmKG1lPSEwLGEudXBkYXRlT2Zmc2V0KHRoaXMp LG1lPSExKX1mdW5jdGlvbiByKGEpe3JldHVybiBhIGluc3RhbmNlb2YgcXx8 bnVsbCE9YSYmbnVsbCE9YS5faXNBTW9tZW50T2JqZWN0fWZ1bmN0aW9uIHMo YSl7cmV0dXJuIDA+YT9NYXRoLmNlaWwoYSl8fDA6TWF0aC5mbG9vcihhKX1m dW5jdGlvbiB0KGEpe3ZhciBiPSthLGM9MDtyZXR1cm4gMCE9PWImJmlzRmlu aXRlKGIpJiYoYz1zKGIpKSxjfQorLy8gY29tcGFyZSB0d28gYXJyYXlzLCBy ZXR1cm4gdGhlIG51bWJlciBvZiBkaWZmZXJlbmNlcworZnVuY3Rpb24gdShh LGIsYyl7dmFyIGQsZT1NYXRoLm1pbihhLmxlbmd0aCxiLmxlbmd0aCksZj1N YXRoLmFicyhhLmxlbmd0aC1iLmxlbmd0aCksZz0wO2ZvcihkPTA7ZT5kO2Qr KykoYyYmYVtkXSE9PWJbZF18fCFjJiZ0KGFbZF0pIT09dChiW2RdKSkmJmcr KztyZXR1cm4gZytmfWZ1bmN0aW9uIHYoYil7YS5zdXBwcmVzc0RlcHJlY2F0 aW9uV2FybmluZ3M9PT0hMSYmInVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xl JiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybigiRGVwcmVjYXRpb24gd2Fy bmluZzogIitiKX1mdW5jdGlvbiB3KGIsYyl7dmFyIGQ9ITA7cmV0dXJuIGko ZnVuY3Rpb24oKXtpZihudWxsIT1hLmRlcHJlY2F0aW9uSGFuZGxlciYmYS5k ZXByZWNhdGlvbkhhbmRsZXIobnVsbCxiKSxkKXtmb3IodmFyIGUsZj1bXSxn PTA7Zzxhcmd1bWVudHMubGVuZ3RoO2crKyl7aWYoZT0iIiwib2JqZWN0Ij09 dHlwZW9mIGFyZ3VtZW50c1tnXSl7ZSs9IlxuWyIrZysiXSAiO2Zvcih2YXIg aCBpbiBhcmd1bWVudHNbMF0pZSs9aCsiOiAiK2FyZ3VtZW50c1swXVtoXSsi LCAiO2U9ZS5zbGljZSgwLC0yKX1lbHNlIGU9YXJndW1lbnRzW2ddO2YucHVz aChlKX12KGIrIlxuQXJndW1lbnRzOiAiK0FycmF5LnByb3RvdHlwZS5zbGlj ZS5jYWxsKGYpLmpvaW4oIiIpKyJcbiIrKG5ldyBFcnJvcikuc3RhY2spLGQ9 ITF9cmV0dXJuIGMuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxjKX1mdW5jdGlv biB4KGIsYyl7bnVsbCE9YS5kZXByZWNhdGlvbkhhbmRsZXImJmEuZGVwcmVj YXRpb25IYW5kbGVyKGIsYyksbmVbYl18fCh2KGMpLG5lW2JdPSEwKX1mdW5j dGlvbiB5KGEpe3JldHVybiBhIGluc3RhbmNlb2YgRnVuY3Rpb258fCJbb2Jq ZWN0IEZ1bmN0aW9uXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNh bGwoYSl9ZnVuY3Rpb24geihhKXt2YXIgYixjO2ZvcihjIGluIGEpYj1hW2Nd LHkoYik/dGhpc1tjXT1iOnRoaXNbIl8iK2NdPWI7dGhpcy5fY29uZmlnPWEs CisvLyBMZW5pZW50IG9yZGluYWwgcGFyc2luZyBhY2NlcHRzIGp1c3QgYSBu dW1iZXIgaW4gYWRkaXRpb24gdG8KKy8vIG51bWJlciArIChwb3NzaWJseSkg c3R1ZmYgY29taW5nIGZyb20gX29yZGluYWxQYXJzZUxlbmllbnQuCit0aGlz Ll9vcmRpbmFsUGFyc2VMZW5pZW50PW5ldyBSZWdFeHAodGhpcy5fb3JkaW5h bFBhcnNlLnNvdXJjZSsifCIrL1xkezEsMn0vLnNvdXJjZSl9ZnVuY3Rpb24g QShhLGIpe3ZhciBjLGU9aSh7fSxhKTtmb3IoYyBpbiBiKWgoYixjKSYmKGQo YVtjXSkmJmQoYltjXSk/KGVbY109e30saShlW2NdLGFbY10pLGkoZVtjXSxi W2NdKSk6bnVsbCE9YltjXT9lW2NdPWJbY106ZGVsZXRlIGVbY10pO2Zvcihj IGluIGEpaChhLGMpJiYhaChiLGMpJiZkKGFbY10pJiYoCisvLyBtYWtlIHN1 cmUgY2hhbmdlcyB0byBwcm9wZXJ0aWVzIGRvbid0IG1vZGlmeSBwYXJlbnQg Y29uZmlnCitlW2NdPWkoe30sZVtjXSkpO3JldHVybiBlfWZ1bmN0aW9uIEIo YSl7bnVsbCE9YSYmdGhpcy5zZXQoYSl9ZnVuY3Rpb24gQyhhLGIsYyl7dmFy IGQ9dGhpcy5fY2FsZW5kYXJbYV18fHRoaXMuX2NhbGVuZGFyLnNhbWVFbHNl O3JldHVybiB5KGQpP2QuY2FsbChiLGMpOmR9ZnVuY3Rpb24gRChhKXt2YXIg Yj10aGlzLl9sb25nRGF0ZUZvcm1hdFthXSxjPXRoaXMuX2xvbmdEYXRlRm9y bWF0W2EudG9VcHBlckNhc2UoKV07cmV0dXJuIGJ8fCFjP2I6KHRoaXMuX2xv bmdEYXRlRm9ybWF0W2FdPWMucmVwbGFjZSgvTU1NTXxNTXxERHxkZGRkL2cs ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc2xpY2UoMSl9KSx0aGlzLl9sb25nRGF0 ZUZvcm1hdFthXSl9ZnVuY3Rpb24gRSgpe3JldHVybiB0aGlzLl9pbnZhbGlk RGF0ZX1mdW5jdGlvbiBGKGEpe3JldHVybiB0aGlzLl9vcmRpbmFsLnJlcGxh Y2UoIiVkIixhKX1mdW5jdGlvbiBHKGEsYixjLGQpe3ZhciBlPXRoaXMuX3Jl bGF0aXZlVGltZVtjXTtyZXR1cm4geShlKT9lKGEsYixjLGQpOmUucmVwbGFj ZSgvJWQvaSxhKX1mdW5jdGlvbiBIKGEsYil7dmFyIGM9dGhpcy5fcmVsYXRp dmVUaW1lW2E+MD8iZnV0dXJlIjoicGFzdCJdO3JldHVybiB5KGMpP2MoYik6 Yy5yZXBsYWNlKC8lcy9pLGIpfWZ1bmN0aW9uIEkoYSxiKXt2YXIgYz1hLnRv TG93ZXJDYXNlKCk7d2VbY109d2VbYysicyJdPXdlW2JdPWF9ZnVuY3Rpb24g SihhKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGE/d2VbYV18fHdlW2EudG9M b3dlckNhc2UoKV06dm9pZCAwfWZ1bmN0aW9uIEsoYSl7dmFyIGIsYyxkPXt9 O2ZvcihjIGluIGEpaChhLGMpJiYoYj1KKGMpLGImJihkW2JdPWFbY10pKTty ZXR1cm4gZH1mdW5jdGlvbiBMKGEsYil7eGVbYV09Yn1mdW5jdGlvbiBNKGEp e3ZhciBiPVtdO2Zvcih2YXIgYyBpbiBhKWIucHVzaCh7dW5pdDpjLHByaW9y aXR5OnhlW2NdfSk7cmV0dXJuIGIuc29ydChmdW5jdGlvbihhLGIpe3JldHVy biBhLnByaW9yaXR5LWIucHJpb3JpdHl9KSxifWZ1bmN0aW9uIE4oYixjKXty ZXR1cm4gZnVuY3Rpb24oZCl7cmV0dXJuIG51bGwhPWQ/KFAodGhpcyxiLGQp LGEudXBkYXRlT2Zmc2V0KHRoaXMsYyksdGhpcyk6Tyh0aGlzLGIpfX1mdW5j dGlvbiBPKGEsYil7cmV0dXJuIGEuaXNWYWxpZCgpP2EuX2RbImdldCIrKGEu X2lzVVRDPyJVVEMiOiIiKStiXSgpOk5hTn1mdW5jdGlvbiBQKGEsYixjKXth LmlzVmFsaWQoKSYmYS5fZFsic2V0IisoYS5faXNVVEM/IlVUQyI6IiIpK2Jd KGMpfQorLy8gTU9NRU5UUworZnVuY3Rpb24gUShhKXtyZXR1cm4gYT1KKGEp LHkodGhpc1thXSk/dGhpc1thXSgpOnRoaXN9ZnVuY3Rpb24gUihhLGIpe2lm KCJvYmplY3QiPT10eXBlb2YgYSl7YT1LKGEpO2Zvcih2YXIgYz1NKGEpLGQ9 MDtkPGMubGVuZ3RoO2QrKyl0aGlzW2NbZF0udW5pdF0oYVtjW2RdLnVuaXRd KX1lbHNlIGlmKGE9SihhKSx5KHRoaXNbYV0pKXJldHVybiB0aGlzW2FdKGIp O3JldHVybiB0aGlzfWZ1bmN0aW9uIFMoYSxiLGMpe3ZhciBkPSIiK01hdGgu YWJzKGEpLGU9Yi1kLmxlbmd0aCxmPWE+PTA7cmV0dXJuKGY/Yz8iKyI6IiI6 Ii0iKStNYXRoLnBvdygxMCxNYXRoLm1heCgwLGUpKS50b1N0cmluZygpLnN1 YnN0cigxKStkfQorLy8gdG9rZW46ICAgICdNJworLy8gcGFkZGVkOiAgIFsn TU0nLCAyXQorLy8gb3JkaW5hbDogICdNbycKKy8vIGNhbGxiYWNrOiBmdW5j dGlvbiAoKSB7IHRoaXMubW9udGgoKSArIDEgfQorZnVuY3Rpb24gVChhLGIs YyxkKXt2YXIgZT1kOyJzdHJpbmciPT10eXBlb2YgZCYmKGU9ZnVuY3Rpb24o KXtyZXR1cm4gdGhpc1tkXSgpfSksYSYmKEJlW2FdPWUpLGImJihCZVtiWzBd XT1mdW5jdGlvbigpe3JldHVybiBTKGUuYXBwbHkodGhpcyxhcmd1bWVudHMp LGJbMV0sYlsyXSl9KSxjJiYoQmVbY109ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5sb2NhbGVEYXRhKCkub3JkaW5hbChlLmFwcGx5KHRoaXMsYXJndW1lbnRz KSxhKX0pfWZ1bmN0aW9uIFUoYSl7cmV0dXJuIGEubWF0Y2goL1xbW1xzXFNd Lyk/YS5yZXBsYWNlKC9eXFt8XF0kL2csIiIpOmEucmVwbGFjZSgvXFwvZywi Iil9ZnVuY3Rpb24gVihhKXt2YXIgYixjLGQ9YS5tYXRjaCh5ZSk7Zm9yKGI9 MCxjPWQubGVuZ3RoO2M+YjtiKyspQmVbZFtiXV0/ZFtiXT1CZVtkW2JdXTpk W2JdPVUoZFtiXSk7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBlLGY9IiI7Zm9y KGU9MDtjPmU7ZSsrKWYrPWRbZV1pbnN0YW5jZW9mIEZ1bmN0aW9uP2RbZV0u Y2FsbChiLGEpOmRbZV07cmV0dXJuIGZ9fQorLy8gZm9ybWF0IGRhdGUgdXNp bmcgbmF0aXZlIGRhdGUgb2JqZWN0CitmdW5jdGlvbiBXKGEsYil7cmV0dXJu IGEuaXNWYWxpZCgpPyhiPVgoYixhLmxvY2FsZURhdGEoKSksQWVbYl09QWVb Yl18fFYoYiksQWVbYl0oYSkpOmEubG9jYWxlRGF0YSgpLmludmFsaWREYXRl KCl9ZnVuY3Rpb24gWChhLGIpe2Z1bmN0aW9uIGMoYSl7cmV0dXJuIGIubG9u Z0RhdGVGb3JtYXQoYSl8fGF9dmFyIGQ9NTtmb3IoemUubGFzdEluZGV4PTA7 ZD49MCYmemUudGVzdChhKTspYT1hLnJlcGxhY2UoemUsYyksemUubGFzdElu ZGV4PTAsZC09MTtyZXR1cm4gYX1mdW5jdGlvbiBZKGEsYixjKXtUZVthXT15 KGIpP2I6ZnVuY3Rpb24oYSxkKXtyZXR1cm4gYSYmYz9jOmJ9fWZ1bmN0aW9u IFooYSxiKXtyZXR1cm4gaChUZSxhKT9UZVthXShiLl9zdHJpY3QsYi5fbG9j YWxlKTpuZXcgUmVnRXhwKCQoYSkpfQorLy8gQ29kZSBmcm9tIGh0dHA6Ly9z dGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzU2MTQ5My9pcy10aGVyZS1h LXJlZ2V4cC1lc2NhcGUtZnVuY3Rpb24taW4tamF2YXNjcmlwdAorZnVuY3Rp b24gJChhKXtyZXR1cm4gXyhhLnJlcGxhY2UoIlxcIiwiIikucmVwbGFjZSgv XFwoXFspfFxcKFxdKXxcWyhbXlxdXFtdKilcXXxcXCguKS9nLGZ1bmN0aW9u KGEsYixjLGQsZSl7cmV0dXJuIGJ8fGN8fGR8fGV9KSl9ZnVuY3Rpb24gXyhh KXtyZXR1cm4gYS5yZXBsYWNlKC9bLVwvXFxeJCorPy4oKXxbXF17fV0vZywi XFwkJiIpfWZ1bmN0aW9uIGFhKGEsYil7dmFyIGMsZD1iO2Zvcigic3RyaW5n Ij09dHlwZW9mIGEmJihhPVthXSksIm51bWJlciI9PXR5cGVvZiBiJiYoZD1m dW5jdGlvbihhLGMpe2NbYl09dChhKX0pLGM9MDtjPGEubGVuZ3RoO2MrKylV ZVthW2NdXT1kfWZ1bmN0aW9uIGJhKGEsYil7YWEoYSxmdW5jdGlvbihhLGMs ZCxlKXtkLl93PWQuX3d8fHt9LGIoYSxkLl93LGQsZSl9KX1mdW5jdGlvbiBj YShhLGIsYyl7bnVsbCE9YiYmaChVZSxhKSYmVWVbYV0oYixjLl9hLGMsYSl9 ZnVuY3Rpb24gZGEoYSxiKXtyZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoYSxi KzEsMCkpLmdldFVUQ0RhdGUoKX1mdW5jdGlvbiBlYShhLGIpe3JldHVybiBh P2ModGhpcy5fbW9udGhzKT90aGlzLl9tb250aHNbYS5tb250aCgpXTp0aGlz Ll9tb250aHNbKHRoaXMuX21vbnRocy5pc0Zvcm1hdHx8Y2YpLnRlc3QoYik/ ImZvcm1hdCI6InN0YW5kYWxvbmUiXVthLm1vbnRoKCldOnRoaXMuX21vbnRo c31mdW5jdGlvbiBmYShhLGIpe3JldHVybiBhP2ModGhpcy5fbW9udGhzU2hv cnQpP3RoaXMuX21vbnRoc1Nob3J0W2EubW9udGgoKV06dGhpcy5fbW9udGhz U2hvcnRbY2YudGVzdChiKT8iZm9ybWF0Ijoic3RhbmRhbG9uZSJdW2EubW9u dGgoKV06dGhpcy5fbW9udGhzU2hvcnR9ZnVuY3Rpb24gZ2EoYSxiLGMpe3Zh ciBkLGUsZixnPWEudG9Mb2NhbGVMb3dlckNhc2UoKTtpZighdGhpcy5fbW9u dGhzUGFyc2UpZm9yKAorLy8gdGhpcyBpcyBub3QgdXNlZAordGhpcy5fbW9u dGhzUGFyc2U9W10sdGhpcy5fbG9uZ01vbnRoc1BhcnNlPVtdLHRoaXMuX3No b3J0TW9udGhzUGFyc2U9W10sZD0wOzEyPmQ7KytkKWY9aihbMmUzLGRdKSx0 aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2RdPXRoaXMubW9udGhzU2hvcnQoZiwi IikudG9Mb2NhbGVMb3dlckNhc2UoKSx0aGlzLl9sb25nTW9udGhzUGFyc2Vb ZF09dGhpcy5tb250aHMoZiwiIikudG9Mb2NhbGVMb3dlckNhc2UoKTtyZXR1 cm4gYz8iTU1NIj09PWI/KGU9cGUuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1Bh cnNlLGcpLC0xIT09ZT9lOm51bGwpOihlPXBlLmNhbGwodGhpcy5fbG9uZ01v bnRoc1BhcnNlLGcpLC0xIT09ZT9lOm51bGwpOiJNTU0iPT09Yj8oZT1wZS5j YWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsZyksLTEhPT1lP2U6KGU9cGUu Y2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsZyksLTEhPT1lP2U6bnVsbCkp OihlPXBlLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLGcpLC0xIT09ZT9l OihlPXBlLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSxnKSwtMSE9PWU/ ZTpudWxsKSl9ZnVuY3Rpb24gaGEoYSxiLGMpe3ZhciBkLGUsZjtpZih0aGlz Ll9tb250aHNQYXJzZUV4YWN0KXJldHVybiBnYS5jYWxsKHRoaXMsYSxiLGMp OworLy8gVE9ETzogYWRkIHNvcnRpbmcKKy8vIFNvcnRpbmcgbWFrZXMgc3Vy ZSBpZiBvbmUgbW9udGggKG9yIGFiYnIpIGlzIGEgcHJlZml4IG9mIGFub3Ro ZXIKKy8vIHNlZSBzb3J0aW5nIGluIGNvbXB1dGVNb250aHNQYXJzZQorZm9y KHRoaXMuX21vbnRoc1BhcnNlfHwodGhpcy5fbW9udGhzUGFyc2U9W10sdGhp cy5fbG9uZ01vbnRoc1BhcnNlPVtdLHRoaXMuX3Nob3J0TW9udGhzUGFyc2U9 W10pLGQ9MDsxMj5kO2QrKyl7CisvLyB0ZXN0IHRoZSByZWdleAoraWYoZT1q KFsyZTMsZF0pLGMmJiF0aGlzLl9sb25nTW9udGhzUGFyc2VbZF0mJih0aGlz Ll9sb25nTW9udGhzUGFyc2VbZF09bmV3IFJlZ0V4cCgiXiIrdGhpcy5tb250 aHMoZSwiIikucmVwbGFjZSgiLiIsIiIpKyIkIiwiaSIpLHRoaXMuX3Nob3J0 TW9udGhzUGFyc2VbZF09bmV3IFJlZ0V4cCgiXiIrdGhpcy5tb250aHNTaG9y dChlLCIiKS5yZXBsYWNlKCIuIiwiIikrIiQiLCJpIikpLGN8fHRoaXMuX21v bnRoc1BhcnNlW2RdfHwoZj0iXiIrdGhpcy5tb250aHMoZSwiIikrInxeIit0 aGlzLm1vbnRoc1Nob3J0KGUsIiIpLHRoaXMuX21vbnRoc1BhcnNlW2RdPW5l dyBSZWdFeHAoZi5yZXBsYWNlKCIuIiwiIiksImkiKSksYyYmIk1NTU0iPT09 YiYmdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2RdLnRlc3QoYSkpcmV0dXJuIGQ7 aWYoYyYmIk1NTSI9PT1iJiZ0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2RdLnRl c3QoYSkpcmV0dXJuIGQ7aWYoIWMmJnRoaXMuX21vbnRoc1BhcnNlW2RdLnRl c3QoYSkpcmV0dXJuIGR9fQorLy8gTU9NRU5UUworZnVuY3Rpb24gaWEoYSxi KXt2YXIgYztpZighYS5pc1ZhbGlkKCkpCisvLyBObyBvcAorcmV0dXJuIGE7 aWYoInN0cmluZyI9PXR5cGVvZiBiKWlmKC9eXGQrJC8udGVzdChiKSliPXQo Yik7ZWxzZQorLy8gVE9ETzogQW5vdGhlciBzaWxlbnQgZmFpbHVyZT8KK2lm KGI9YS5sb2NhbGVEYXRhKCkubW9udGhzUGFyc2UoYiksIm51bWJlciIhPXR5 cGVvZiBiKXJldHVybiBhO3JldHVybiBjPU1hdGgubWluKGEuZGF0ZSgpLGRh KGEueWVhcigpLGIpKSxhLl9kWyJzZXQiKyhhLl9pc1VUQz8iVVRDIjoiIikr Ik1vbnRoIl0oYixjKSxhfWZ1bmN0aW9uIGphKGIpe3JldHVybiBudWxsIT1i PyhpYSh0aGlzLGIpLGEudXBkYXRlT2Zmc2V0KHRoaXMsITApLHRoaXMpOk8o dGhpcywiTW9udGgiKX1mdW5jdGlvbiBrYSgpe3JldHVybiBkYSh0aGlzLnll YXIoKSx0aGlzLm1vbnRoKCkpfWZ1bmN0aW9uIGxhKGEpe3JldHVybiB0aGlz Ll9tb250aHNQYXJzZUV4YWN0PyhoKHRoaXMsIl9tb250aHNSZWdleCIpfHxu YS5jYWxsKHRoaXMpLGE/dGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleDp0 aGlzLl9tb250aHNTaG9ydFJlZ2V4KTooaCh0aGlzLCJfbW9udGhzU2hvcnRS ZWdleCIpfHwodGhpcy5fbW9udGhzU2hvcnRSZWdleD1mZiksdGhpcy5fbW9u dGhzU2hvcnRTdHJpY3RSZWdleCYmYT90aGlzLl9tb250aHNTaG9ydFN0cmlj dFJlZ2V4OnRoaXMuX21vbnRoc1Nob3J0UmVnZXgpfWZ1bmN0aW9uIG1hKGEp e3JldHVybiB0aGlzLl9tb250aHNQYXJzZUV4YWN0PyhoKHRoaXMsIl9tb250 aHNSZWdleCIpfHxuYS5jYWxsKHRoaXMpLGE/dGhpcy5fbW9udGhzU3RyaWN0 UmVnZXg6dGhpcy5fbW9udGhzUmVnZXgpOihoKHRoaXMsIl9tb250aHNSZWdl eCIpfHwodGhpcy5fbW9udGhzUmVnZXg9Z2YpLHRoaXMuX21vbnRoc1N0cmlj dFJlZ2V4JiZhP3RoaXMuX21vbnRoc1N0cmljdFJlZ2V4OnRoaXMuX21vbnRo c1JlZ2V4KX1mdW5jdGlvbiBuYSgpe2Z1bmN0aW9uIGEoYSxiKXtyZXR1cm4g Yi5sZW5ndGgtYS5sZW5ndGh9dmFyIGIsYyxkPVtdLGU9W10sZj1bXTtmb3Io Yj0wOzEyPmI7YisrKWM9aihbMmUzLGJdKSxkLnB1c2godGhpcy5tb250aHNT aG9ydChjLCIiKSksZS5wdXNoKHRoaXMubW9udGhzKGMsIiIpKSxmLnB1c2go dGhpcy5tb250aHMoYywiIikpLGYucHVzaCh0aGlzLm1vbnRoc1Nob3J0KGMs IiIpKTtmb3IoCisvLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIG1vbnRo IChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0CisvLyB3aWxs IG1hdGNoIHRoZSBsb25nZXIgcGllY2UuCitkLnNvcnQoYSksZS5zb3J0KGEp LGYuc29ydChhKSxiPTA7MTI+YjtiKyspZFtiXT1fKGRbYl0pLGVbYl09Xyhl W2JdKTtmb3IoYj0wOzI0PmI7YisrKWZbYl09XyhmW2JdKTt0aGlzLl9tb250 aHNSZWdleD1uZXcgUmVnRXhwKCJeKCIrZi5qb2luKCJ8IikrIikiLCJpIiks dGhpcy5fbW9udGhzU2hvcnRSZWdleD10aGlzLl9tb250aHNSZWdleCx0aGlz Ll9tb250aHNTdHJpY3RSZWdleD1uZXcgUmVnRXhwKCJeKCIrZS5qb2luKCJ8 IikrIikiLCJpIiksdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleD1uZXcg UmVnRXhwKCJeKCIrZC5qb2luKCJ8IikrIikiLCJpIil9CisvLyBIRUxQRVJT CitmdW5jdGlvbiBvYShhKXtyZXR1cm4gcGEoYSk/MzY2OjM2NX1mdW5jdGlv biBwYShhKXtyZXR1cm4gYSU0PT09MCYmYSUxMDAhPT0wfHxhJTQwMD09PTB9 ZnVuY3Rpb24gcWEoKXtyZXR1cm4gcGEodGhpcy55ZWFyKCkpfWZ1bmN0aW9u IHJhKGEsYixjLGQsZSxmLGcpeworLy9jYW4ndCBqdXN0IGFwcGx5KCkgdG8g Y3JlYXRlIGEgZGF0ZToKKy8vaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1 ZXN0aW9ucy8xODEzNDgvaW5zdGFudGlhdGluZy1hLWphdmFzY3JpcHQtb2Jq ZWN0LWJ5LWNhbGxpbmctcHJvdG90eXBlLWNvbnN0cnVjdG9yLWFwcGx5Cit2 YXIgaD1uZXcgRGF0ZShhLGIsYyxkLGUsZixnKTsKKy8vdGhlIGRhdGUgY29u c3RydWN0b3IgcmVtYXBzIHllYXJzIDAtOTkgdG8gMTkwMC0xOTk5CityZXR1 cm4gMTAwPmEmJmE+PTAmJmlzRmluaXRlKGguZ2V0RnVsbFllYXIoKSkmJmgu c2V0RnVsbFllYXIoYSksaH1mdW5jdGlvbiBzYShhKXt2YXIgYj1uZXcgRGF0 ZShEYXRlLlVUQy5hcHBseShudWxsLGFyZ3VtZW50cykpOworLy90aGUgRGF0 ZS5VVEMgZnVuY3Rpb24gcmVtYXBzIHllYXJzIDAtOTkgdG8gMTkwMC0xOTk5 CityZXR1cm4gMTAwPmEmJmE+PTAmJmlzRmluaXRlKGIuZ2V0VVRDRnVsbFll YXIoKSkmJmIuc2V0VVRDRnVsbFllYXIoYSksYn0KKy8vIHN0YXJ0LW9mLWZp cnN0LXdlZWsgLSBzdGFydC1vZi15ZWFyCitmdW5jdGlvbiB0YShhLGIsYyl7 dmFyLy8gZmlyc3Qtd2VlayBkYXkgLS0gd2hpY2ggamFudWFyeSBpcyBhbHdh eXMgaW4gdGhlIGZpcnN0IHdlZWsgKDQgZm9yIGlzbywgMSBmb3Igb3RoZXIp CitkPTcrYi1jLAorLy8gZmlyc3Qtd2VlayBkYXkgbG9jYWwgd2Vla2RheSAt LSB3aGljaCBsb2NhbCB3ZWVrZGF5IGlzIGZ3ZAorZT0oNytzYShhLDAsZCku Z2V0VVRDRGF5KCktYiklNztyZXR1cm4tZStkLTF9CisvL2h0dHA6Ly9lbi53 aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZSNDYWxjdWxhdGluZ19h X2RhdGVfZ2l2ZW5fdGhlX3llYXIuMkNfd2Vla19udW1iZXJfYW5kX3dlZWtk YXkKK2Z1bmN0aW9uIHVhKGEsYixjLGQsZSl7dmFyIGYsZyxoPSg3K2MtZCkl NyxpPXRhKGEsZCxlKSxqPTErNyooYi0xKStoK2k7cmV0dXJuIDA+PWo/KGY9 YS0xLGc9b2EoZikraik6aj5vYShhKT8oZj1hKzEsZz1qLW9hKGEpKTooZj1h LGc9aikse3llYXI6ZixkYXlPZlllYXI6Z319ZnVuY3Rpb24gdmEoYSxiLGMp e3ZhciBkLGUsZj10YShhLnllYXIoKSxiLGMpLGc9TWF0aC5mbG9vcigoYS5k YXlPZlllYXIoKS1mLTEpLzcpKzE7cmV0dXJuIDE+Zz8oZT1hLnllYXIoKS0x LGQ9Zyt3YShlLGIsYykpOmc+d2EoYS55ZWFyKCksYixjKT8oZD1nLXdhKGEu eWVhcigpLGIsYyksZT1hLnllYXIoKSsxKTooZT1hLnllYXIoKSxkPWcpLHt3 ZWVrOmQseWVhcjplfX1mdW5jdGlvbiB3YShhLGIsYyl7dmFyIGQ9dGEoYSxi LGMpLGU9dGEoYSsxLGIsYyk7cmV0dXJuKG9hKGEpLWQrZSkvN30KKy8vIEhF TFBFUlMKKy8vIExPQ0FMRVMKK2Z1bmN0aW9uIHhhKGEpe3JldHVybiB2YShh LHRoaXMuX3dlZWsuZG93LHRoaXMuX3dlZWsuZG95KS53ZWVrfWZ1bmN0aW9u IHlhKCl7cmV0dXJuIHRoaXMuX3dlZWsuZG93fWZ1bmN0aW9uIHphKCl7cmV0 dXJuIHRoaXMuX3dlZWsuZG95fQorLy8gTU9NRU5UUworZnVuY3Rpb24gQWEo YSl7dmFyIGI9dGhpcy5sb2NhbGVEYXRhKCkud2Vlayh0aGlzKTtyZXR1cm4g bnVsbD09YT9iOnRoaXMuYWRkKDcqKGEtYiksImQiKX1mdW5jdGlvbiBCYShh KXt2YXIgYj12YSh0aGlzLDEsNCkud2VlaztyZXR1cm4gbnVsbD09YT9iOnRo aXMuYWRkKDcqKGEtYiksImQiKX0KKy8vIEhFTFBFUlMKK2Z1bmN0aW9uIENh KGEsYil7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhP2E6aXNOYU4oYSk/KGE9 Yi53ZWVrZGF5c1BhcnNlKGEpLCJudW1iZXIiPT10eXBlb2YgYT9hOm51bGwp OnBhcnNlSW50KGEsMTApfWZ1bmN0aW9uIERhKGEsYil7cmV0dXJuInN0cmlu ZyI9PXR5cGVvZiBhP2Iud2Vla2RheXNQYXJzZShhKSU3fHw3OmlzTmFOKGEp P251bGw6YX1mdW5jdGlvbiBFYShhLGIpe3JldHVybiBhP2ModGhpcy5fd2Vl a2RheXMpP3RoaXMuX3dlZWtkYXlzW2EuZGF5KCldOnRoaXMuX3dlZWtkYXlz W3RoaXMuX3dlZWtkYXlzLmlzRm9ybWF0LnRlc3QoYik/ImZvcm1hdCI6InN0 YW5kYWxvbmUiXVthLmRheSgpXTp0aGlzLl93ZWVrZGF5c31mdW5jdGlvbiBG YShhKXtyZXR1cm4gYT90aGlzLl93ZWVrZGF5c1Nob3J0W2EuZGF5KCldOnRo aXMuX3dlZWtkYXlzU2hvcnR9ZnVuY3Rpb24gR2EoYSl7cmV0dXJuIGE/dGhp cy5fd2Vla2RheXNNaW5bYS5kYXkoKV06dGhpcy5fd2Vla2RheXNNaW59ZnVu Y3Rpb24gSGEoYSxiLGMpe3ZhciBkLGUsZixnPWEudG9Mb2NhbGVMb3dlckNh c2UoKTtpZighdGhpcy5fd2Vla2RheXNQYXJzZSlmb3IodGhpcy5fd2Vla2Rh eXNQYXJzZT1bXSx0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2U9W10sdGhpcy5f bWluV2Vla2RheXNQYXJzZT1bXSxkPTA7Nz5kOysrZClmPWooWzJlMywxXSku ZGF5KGQpLHRoaXMuX21pbldlZWtkYXlzUGFyc2VbZF09dGhpcy53ZWVrZGF5 c01pbihmLCIiKS50b0xvY2FsZUxvd2VyQ2FzZSgpLHRoaXMuX3Nob3J0V2Vl a2RheXNQYXJzZVtkXT10aGlzLndlZWtkYXlzU2hvcnQoZiwiIikudG9Mb2Nh bGVMb3dlckNhc2UoKSx0aGlzLl93ZWVrZGF5c1BhcnNlW2RdPXRoaXMud2Vl a2RheXMoZiwiIikudG9Mb2NhbGVMb3dlckNhc2UoKTtyZXR1cm4gYz8iZGRk ZCI9PT1iPyhlPXBlLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSxnKSwtMSE9 PWU/ZTpudWxsKToiZGRkIj09PWI/KGU9cGUuY2FsbCh0aGlzLl9zaG9ydFdl ZWtkYXlzUGFyc2UsZyksLTEhPT1lP2U6bnVsbCk6KGU9cGUuY2FsbCh0aGlz Ll9taW5XZWVrZGF5c1BhcnNlLGcpLC0xIT09ZT9lOm51bGwpOiJkZGRkIj09 PWI/KGU9cGUuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLGcpLC0xIT09ZT9l OihlPXBlLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLGcpLC0xIT09 ZT9lOihlPXBlLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSxnKSwtMSE9 PWU/ZTpudWxsKSkpOiJkZGQiPT09Yj8oZT1wZS5jYWxsKHRoaXMuX3Nob3J0 V2Vla2RheXNQYXJzZSxnKSwtMSE9PWU/ZTooZT1wZS5jYWxsKHRoaXMuX3dl ZWtkYXlzUGFyc2UsZyksLTEhPT1lP2U6KGU9cGUuY2FsbCh0aGlzLl9taW5X ZWVrZGF5c1BhcnNlLGcpLC0xIT09ZT9lOm51bGwpKSk6KGU9cGUuY2FsbCh0 aGlzLl9taW5XZWVrZGF5c1BhcnNlLGcpLC0xIT09ZT9lOihlPXBlLmNhbGwo dGhpcy5fd2Vla2RheXNQYXJzZSxnKSwtMSE9PWU/ZTooZT1wZS5jYWxsKHRo aXMuX3Nob3J0V2Vla2RheXNQYXJzZSxnKSwtMSE9PWU/ZTpudWxsKSkpfWZ1 bmN0aW9uIElhKGEsYixjKXt2YXIgZCxlLGY7aWYodGhpcy5fd2Vla2RheXNQ YXJzZUV4YWN0KXJldHVybiBIYS5jYWxsKHRoaXMsYSxiLGMpO2Zvcih0aGlz Ll93ZWVrZGF5c1BhcnNlfHwodGhpcy5fd2Vla2RheXNQYXJzZT1bXSx0aGlz Ll9taW5XZWVrZGF5c1BhcnNlPVtdLHRoaXMuX3Nob3J0V2Vla2RheXNQYXJz ZT1bXSx0aGlzLl9mdWxsV2Vla2RheXNQYXJzZT1bXSksZD0wOzc+ZDtkKysp eworLy8gdGVzdCB0aGUgcmVnZXgKK2lmKGU9aihbMmUzLDFdKS5kYXkoZCks YyYmIXRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2RdJiYodGhpcy5fZnVsbFdl ZWtkYXlzUGFyc2VbZF09bmV3IFJlZ0V4cCgiXiIrdGhpcy53ZWVrZGF5cyhl LCIiKS5yZXBsYWNlKCIuIiwiLj8iKSsiJCIsImkiKSx0aGlzLl9zaG9ydFdl ZWtkYXlzUGFyc2VbZF09bmV3IFJlZ0V4cCgiXiIrdGhpcy53ZWVrZGF5c1No b3J0KGUsIiIpLnJlcGxhY2UoIi4iLCIuPyIpKyIkIiwiaSIpLHRoaXMuX21p bldlZWtkYXlzUGFyc2VbZF09bmV3IFJlZ0V4cCgiXiIrdGhpcy53ZWVrZGF5 c01pbihlLCIiKS5yZXBsYWNlKCIuIiwiLj8iKSsiJCIsImkiKSksdGhpcy5f d2Vla2RheXNQYXJzZVtkXXx8KGY9Il4iK3RoaXMud2Vla2RheXMoZSwiIikr InxeIit0aGlzLndlZWtkYXlzU2hvcnQoZSwiIikrInxeIit0aGlzLndlZWtk YXlzTWluKGUsIiIpLHRoaXMuX3dlZWtkYXlzUGFyc2VbZF09bmV3IFJlZ0V4 cChmLnJlcGxhY2UoIi4iLCIiKSwiaSIpKSxjJiYiZGRkZCI9PT1iJiZ0aGlz Ll9mdWxsV2Vla2RheXNQYXJzZVtkXS50ZXN0KGEpKXJldHVybiBkO2lmKGMm JiJkZGQiPT09YiYmdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2RdLnRlc3Qo YSkpcmV0dXJuIGQ7aWYoYyYmImRkIj09PWImJnRoaXMuX21pbldlZWtkYXlz UGFyc2VbZF0udGVzdChhKSlyZXR1cm4gZDtpZighYyYmdGhpcy5fd2Vla2Rh eXNQYXJzZVtkXS50ZXN0KGEpKXJldHVybiBkfX0KKy8vIE1PTUVOVFMKK2Z1 bmN0aW9uIEphKGEpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbCE9 YT90aGlzOk5hTjt2YXIgYj10aGlzLl9pc1VUQz90aGlzLl9kLmdldFVUQ0Rh eSgpOnRoaXMuX2QuZ2V0RGF5KCk7cmV0dXJuIG51bGwhPWE/KGE9Q2EoYSx0 aGlzLmxvY2FsZURhdGEoKSksdGhpcy5hZGQoYS1iLCJkIikpOmJ9ZnVuY3Rp b24gS2EoYSl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBudWxsIT1hP3Ro aXM6TmFOO3ZhciBiPSh0aGlzLmRheSgpKzctdGhpcy5sb2NhbGVEYXRhKCku X3dlZWsuZG93KSU3O3JldHVybiBudWxsPT1hP2I6dGhpcy5hZGQoYS1iLCJk Iil9ZnVuY3Rpb24gTGEoYSl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBu dWxsIT1hP3RoaXM6TmFOOworLy8gYmVoYXZlcyB0aGUgc2FtZSBhcyBtb21l bnQjZGF5IGV4Y2VwdAorLy8gYXMgYSBnZXR0ZXIsIHJldHVybnMgNyBpbnN0 ZWFkIG9mIDAgKDEtNyByYW5nZSBpbnN0ZWFkIG9mIDAtNikKKy8vIGFzIGEg c2V0dGVyLCBzdW5kYXkgc2hvdWxkIGJlbG9uZyB0byB0aGUgcHJldmlvdXMg d2Vlay4KK2lmKG51bGwhPWEpe3ZhciBiPURhKGEsdGhpcy5sb2NhbGVEYXRh KCkpO3JldHVybiB0aGlzLmRheSh0aGlzLmRheSgpJTc/YjpiLTcpfXJldHVy biB0aGlzLmRheSgpfHw3fWZ1bmN0aW9uIE1hKGEpe3JldHVybiB0aGlzLl93 ZWVrZGF5c1BhcnNlRXhhY3Q/KGgodGhpcywiX3dlZWtkYXlzUmVnZXgiKXx8 UGEuY2FsbCh0aGlzKSxhP3RoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXg6dGhp cy5fd2Vla2RheXNSZWdleCk6KGgodGhpcywiX3dlZWtkYXlzUmVnZXgiKXx8 KHRoaXMuX3dlZWtkYXlzUmVnZXg9bmYpLHRoaXMuX3dlZWtkYXlzU3RyaWN0 UmVnZXgmJmE/dGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleDp0aGlzLl93ZWVr ZGF5c1JlZ2V4KX1mdW5jdGlvbiBOYShhKXtyZXR1cm4gdGhpcy5fd2Vla2Rh eXNQYXJzZUV4YWN0PyhoKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fFBhLmNh bGwodGhpcyksYT90aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg6dGhp cy5fd2Vla2RheXNTaG9ydFJlZ2V4KTooaCh0aGlzLCJfd2Vla2RheXNTaG9y dFJlZ2V4Iil8fCh0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXg9b2YpLHRoaXMu X3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCYmYT90aGlzLl93ZWVrZGF5c1No b3J0U3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4KX1mdW5j dGlvbiBPYShhKXtyZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0Pyho KHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fFBhLmNhbGwodGhpcyksYT90aGlz Ll93ZWVrZGF5c01pblN0cmljdFJlZ2V4OnRoaXMuX3dlZWtkYXlzTWluUmVn ZXgpOihoKHRoaXMsIl93ZWVrZGF5c01pblJlZ2V4Iil8fCh0aGlzLl93ZWVr ZGF5c01pblJlZ2V4PXBmKSx0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4 JiZhP3RoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2Rh eXNNaW5SZWdleCl9ZnVuY3Rpb24gUGEoKXtmdW5jdGlvbiBhKGEsYil7cmV0 dXJuIGIubGVuZ3RoLWEubGVuZ3RofXZhciBiLGMsZCxlLGYsZz1bXSxoPVtd LGk9W10saz1bXTtmb3IoYj0wOzc+YjtiKyspYz1qKFsyZTMsMV0pLmRheShi KSxkPXRoaXMud2Vla2RheXNNaW4oYywiIiksZT10aGlzLndlZWtkYXlzU2hv cnQoYywiIiksZj10aGlzLndlZWtkYXlzKGMsIiIpLGcucHVzaChkKSxoLnB1 c2goZSksaS5wdXNoKGYpLGsucHVzaChkKSxrLnB1c2goZSksay5wdXNoKGYp O2ZvcigKKy8vIFNvcnRpbmcgbWFrZXMgc3VyZSBpZiBvbmUgd2Vla2RheSAo b3IgYWJicikgaXMgYSBwcmVmaXggb2YgYW5vdGhlciBpdAorLy8gd2lsbCBt YXRjaCB0aGUgbG9uZ2VyIHBpZWNlLgorZy5zb3J0KGEpLGguc29ydChhKSxp LnNvcnQoYSksay5zb3J0KGEpLGI9MDs3PmI7YisrKWhbYl09XyhoW2JdKSxp W2JdPV8oaVtiXSksa1tiXT1fKGtbYl0pO3RoaXMuX3dlZWtkYXlzUmVnZXg9 bmV3IFJlZ0V4cCgiXigiK2suam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX3dl ZWtkYXlzU2hvcnRSZWdleD10aGlzLl93ZWVrZGF5c1JlZ2V4LHRoaXMuX3dl ZWtkYXlzTWluUmVnZXg9dGhpcy5fd2Vla2RheXNSZWdleCx0aGlzLl93ZWVr ZGF5c1N0cmljdFJlZ2V4PW5ldyBSZWdFeHAoIl4oIitpLmpvaW4oInwiKSsi KSIsImkiKSx0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg9bmV3IFJl Z0V4cCgiXigiK2guam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX3dlZWtkYXlz TWluU3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK2cuam9pbigifCIpKyIp IiwiaSIpfQorLy8gRk9STUFUVElORworZnVuY3Rpb24gUWEoKXtyZXR1cm4g dGhpcy5ob3VycygpJTEyfHwxMn1mdW5jdGlvbiBSYSgpe3JldHVybiB0aGlz LmhvdXJzKCl8fDI0fWZ1bmN0aW9uIFNhKGEsYil7VChhLDAsMCxmdW5jdGlv bigpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tZXJpZGllbSh0aGlzLmhv dXJzKCksdGhpcy5taW51dGVzKCksYil9KX0KKy8vIFBBUlNJTkcKK2Z1bmN0 aW9uIFRhKGEsYil7cmV0dXJuIGIuX21lcmlkaWVtUGFyc2V9CisvLyBMT0NB TEVTCitmdW5jdGlvbiBVYShhKXsKKy8vIElFOCBRdWlya3MgTW9kZSAmIElF NyBTdGFuZGFyZHMgTW9kZSBkbyBub3QgYWxsb3cgYWNjZXNzaW5nIHN0cmlu Z3MgbGlrZSBhcnJheXMKKy8vIFVzaW5nIGNoYXJBdCBzaG91bGQgYmUgbW9y ZSBjb21wYXRpYmxlLgorcmV0dXJuInAiPT09KGErIiIpLnRvTG93ZXJDYXNl KCkuY2hhckF0KDApfWZ1bmN0aW9uIFZhKGEsYixjKXtyZXR1cm4gYT4xMT9j PyJwbSI6IlBNIjpjPyJhbSI6IkFNIn1mdW5jdGlvbiBXYShhKXtyZXR1cm4g YT9hLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgiXyIsIi0iKTphfQorLy8gcGlj ayB0aGUgbG9jYWxlIGZyb20gdGhlIGFycmF5CisvLyB0cnkgWydlbi1hdScs ICdlbi1nYiddIGFzICdlbi1hdScsICdlbi1nYicsICdlbicsIGFzIGluIG1v dmUgdGhyb3VnaCB0aGUgbGlzdCB0cnlpbmcgZWFjaAorLy8gc3Vic3RyaW5n IGZyb20gbW9zdCBzcGVjaWZpYyB0byBsZWFzdCwgYnV0IG1vdmUgdG8gdGhl IG5leHQgYXJyYXkgaXRlbSBpZiBpdCdzIGEgbW9yZSBzcGVjaWZpYyB2YXJp YW50IHRoYW4gdGhlIGN1cnJlbnQgcm9vdAorZnVuY3Rpb24gWGEoYSl7Zm9y KHZhciBiLGMsZCxlLGY9MDtmPGEubGVuZ3RoOyl7Zm9yKGU9V2EoYVtmXSku c3BsaXQoIi0iKSxiPWUubGVuZ3RoLGM9V2EoYVtmKzFdKSxjPWM/Yy5zcGxp dCgiLSIpOm51bGw7Yj4wOyl7aWYoZD1ZYShlLnNsaWNlKDAsYikuam9pbigi LSIpKSlyZXR1cm4gZDtpZihjJiZjLmxlbmd0aD49YiYmdShlLGMsITApPj1i LTEpCisvL3RoZSBuZXh0IGFycmF5IGl0ZW0gaXMgYmV0dGVyIHRoYW4gYSBz aGFsbG93ZXIgc3Vic3RyaW5nIG9mIHRoaXMgb25lCiticmVhaztiLS19Zisr fXJldHVybiBudWxsfWZ1bmN0aW9uIFlhKGEpe3ZhciBiPW51bGw7CisvLyBU T0RPOiBGaW5kIGEgYmV0dGVyIHdheSB0byByZWdpc3RlciBhbmQgbG9hZCBh bGwgdGhlIGxvY2FsZXMgaW4gTm9kZQoraWYoIXVmW2FdJiYidW5kZWZpbmVk IiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiZtb2R1bGUucmVxdWlyZSl0cnl7 Yj1xZi5fYWJicixtb2R1bGUucmVxdWlyZSgiLi9sb2NhbGUvIithKSwKKy8v IGJlY2F1c2UgZGVmaW5lTG9jYWxlIGN1cnJlbnRseSBhbHNvIHNldHMgdGhl IGdsb2JhbCBsb2NhbGUsIHdlCisvLyB3YW50IHRvIHVuZG8gdGhhdCBmb3Ig bGF6eSBsb2FkZWQgbG9jYWxlcworWmEoYil9Y2F0Y2goYyl7fXJldHVybiB1 ZlthXX0KKy8vIFRoaXMgZnVuY3Rpb24gd2lsbCBsb2FkIGxvY2FsZSBhbmQg dGhlbiBzZXQgdGhlIGdsb2JhbCBsb2NhbGUuICBJZgorLy8gbm8gYXJndW1l bnRzIGFyZSBwYXNzZWQgaW4sIGl0IHdpbGwgc2ltcGx5IHJldHVybiB0aGUg Y3VycmVudCBnbG9iYWwKKy8vIGxvY2FsZSBrZXkuCitmdW5jdGlvbiBaYShh LGIpe3ZhciBjOworLy8gbW9tZW50LmR1cmF0aW9uLl9sb2NhbGUgPSBtb21l bnQuX2xvY2FsZSA9IGRhdGE7CityZXR1cm4gYSYmKGM9byhiKT9hYihhKTok YShhLGIpLGMmJihxZj1jKSkscWYuX2FiYnJ9ZnVuY3Rpb24gJGEoYSxiKXtp ZihudWxsIT09Yil7dmFyIGM9dGY7CisvLyB0cmVhdCBhcyBpZiB0aGVyZSBp cyBubyBiYXNlIGNvbmZpZworLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93 OiBhbHNvIHNldCB0aGUgbG9jYWxlCityZXR1cm4gYi5hYmJyPWEsbnVsbCE9 dWZbYV0/KHgoImRlZmluZUxvY2FsZU92ZXJyaWRlIiwidXNlIG1vbWVudC51 cGRhdGVMb2NhbGUobG9jYWxlTmFtZSwgY29uZmlnKSB0byBjaGFuZ2UgYW4g ZXhpc3RpbmcgbG9jYWxlLiBtb21lbnQuZGVmaW5lTG9jYWxlKGxvY2FsZU5h bWUsIGNvbmZpZykgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgY3JlYXRpbmcg YSBuZXcgbG9jYWxlIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8j L3dhcm5pbmdzL2RlZmluZS1sb2NhbGUvIGZvciBtb3JlIGluZm8uIiksYz11 ZlthXS5fY29uZmlnKTpudWxsIT1iLnBhcmVudExvY2FsZSYmKG51bGwhPXVm W2IucGFyZW50TG9jYWxlXT9jPXVmW2IucGFyZW50TG9jYWxlXS5fY29uZmln OngoInBhcmVudExvY2FsZVVuZGVmaW5lZCIsInNwZWNpZmllZCBwYXJlbnRM b2NhbGUgaXMgbm90IGRlZmluZWQgeWV0LiBTZWUgaHR0cDovL21vbWVudGpz LmNvbS9ndWlkZXMvIy93YXJuaW5ncy9wYXJlbnQtbG9jYWxlLyIpKSx1Zlth XT1uZXcgQihBKGMsYikpLFphKGEpLHVmW2FdfQorLy8gdXNlZnVsIGZvciB0 ZXN0aW5nCityZXR1cm4gZGVsZXRlIHVmW2FdLG51bGx9ZnVuY3Rpb24gX2Eo YSxiKXtpZihudWxsIT1iKXt2YXIgYyxkPXRmOworLy8gTUVSR0UKK251bGwh PXVmW2FdJiYoZD11ZlthXS5fY29uZmlnKSxiPUEoZCxiKSxjPW5ldyBCKGIp LGMucGFyZW50TG9jYWxlPXVmW2FdLHVmW2FdPWMsCisvLyBiYWNrd2FyZHMg Y29tcGF0IGZvciBub3c6IGFsc28gc2V0IHRoZSBsb2NhbGUKK1phKGEpfWVs c2UKKy8vIHBhc3MgbnVsbCBmb3IgY29uZmlnIHRvIHVudXBkYXRlLCB1c2Vm dWwgZm9yIHRlc3RzCitudWxsIT11ZlthXSYmKG51bGwhPXVmW2FdLnBhcmVu dExvY2FsZT91ZlthXT11ZlthXS5wYXJlbnRMb2NhbGU6bnVsbCE9dWZbYV0m JmRlbGV0ZSB1ZlthXSk7cmV0dXJuIHVmW2FdfQorLy8gcmV0dXJucyBsb2Nh bGUgZGF0YQorZnVuY3Rpb24gYWIoYSl7dmFyIGI7aWYoYSYmYS5fbG9jYWxl JiZhLl9sb2NhbGUuX2FiYnImJihhPWEuX2xvY2FsZS5fYWJiciksIWEpcmV0 dXJuIHFmO2lmKCFjKGEpKXtpZihiPVlhKGEpKXJldHVybiBiO2E9W2FdfXJl dHVybiBYYShhKX1mdW5jdGlvbiBiYigpe3JldHVybiBvZSh1Zil9ZnVuY3Rp b24gY2IoYSl7dmFyIGIsYz1hLl9hO3JldHVybiBjJiYtMj09PWwoYSkub3Zl cmZsb3cmJihiPWNbV2VdPDB8fGNbV2VdPjExP1dlOmNbWGVdPDF8fGNbWGVd PmRhKGNbVmVdLGNbV2VdKT9YZTpjW1llXTwwfHxjW1llXT4yNHx8MjQ9PT1j W1llXSYmKDAhPT1jW1plXXx8MCE9PWNbJGVdfHwwIT09Y1tfZV0pP1llOmNb WmVdPDB8fGNbWmVdPjU5P1plOmNbJGVdPDB8fGNbJGVdPjU5PyRlOmNbX2Vd PDB8fGNbX2VdPjk5OT9fZTotMSxsKGEpLl9vdmVyZmxvd0RheU9mWWVhciYm KFZlPmJ8fGI+WGUpJiYoYj1YZSksbChhKS5fb3ZlcmZsb3dXZWVrcyYmLTE9 PT1iJiYoYj1hZiksbChhKS5fb3ZlcmZsb3dXZWVrZGF5JiYtMT09PWImJihi PWJmKSxsKGEpLm92ZXJmbG93PWIpLGF9CisvLyBkYXRlIGZyb20gaXNvIGZv cm1hdAorZnVuY3Rpb24gZGIoYSl7dmFyIGIsYyxkLGUsZixnLGg9YS5faSxp PXZmLmV4ZWMoaCl8fHdmLmV4ZWMoaCk7aWYoaSl7Zm9yKGwoYSkuaXNvPSEw LGI9MCxjPXlmLmxlbmd0aDtjPmI7YisrKWlmKHlmW2JdWzFdLmV4ZWMoaVsx XSkpe2U9eWZbYl1bMF0sZD15ZltiXVsyXSE9PSExO2JyZWFrfWlmKG51bGw9 PWUpcmV0dXJuIHZvaWQoYS5faXNWYWxpZD0hMSk7aWYoaVszXSl7Zm9yKGI9 MCxjPXpmLmxlbmd0aDtjPmI7YisrKWlmKHpmW2JdWzFdLmV4ZWMoaVszXSkp eworLy8gbWF0Y2hbMl0gc2hvdWxkIGJlICdUJyBvciBzcGFjZQorZj0oaVsy XXx8IiAiKSt6ZltiXVswXTticmVha31pZihudWxsPT1mKXJldHVybiB2b2lk KGEuX2lzVmFsaWQ9ITEpfWlmKCFkJiZudWxsIT1mKXJldHVybiB2b2lkKGEu X2lzVmFsaWQ9ITEpO2lmKGlbNF0pe2lmKCF4Zi5leGVjKGlbNF0pKXJldHVy biB2b2lkKGEuX2lzVmFsaWQ9ITEpO2c9IloifWEuX2Y9ZSsoZnx8IiIpKyhn fHwiIiksamIoYSl9ZWxzZSBhLl9pc1ZhbGlkPSExfQorLy8gZGF0ZSBmcm9t IGlzbyBmb3JtYXQgb3IgZmFsbGJhY2sKK2Z1bmN0aW9uIGViKGIpe3ZhciBj PUFmLmV4ZWMoYi5faSk7cmV0dXJuIG51bGwhPT1jP3ZvaWQoYi5fZD1uZXcg RGF0ZSgrY1sxXSkpOihkYihiKSx2b2lkKGIuX2lzVmFsaWQ9PT0hMSYmKGRl bGV0ZSBiLl9pc1ZhbGlkLGEuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2soYikp KSl9CisvLyBQaWNrIHRoZSBmaXJzdCBkZWZpbmVkIG9mIHR3byBvciB0aHJl ZSBhcmd1bWVudHMuCitmdW5jdGlvbiBmYihhLGIsYyl7cmV0dXJuIG51bGwh PWE/YTpudWxsIT1iP2I6Y31mdW5jdGlvbiBnYihiKXsKKy8vIGhvb2tzIGlz IGFjdHVhbGx5IHRoZSBleHBvcnRlZCBtb21lbnQgb2JqZWN0Cit2YXIgYz1u ZXcgRGF0ZShhLm5vdygpKTtyZXR1cm4gYi5fdXNlVVRDP1tjLmdldFVUQ0Z1 bGxZZWFyKCksYy5nZXRVVENNb250aCgpLGMuZ2V0VVRDRGF0ZSgpXTpbYy5n ZXRGdWxsWWVhcigpLGMuZ2V0TW9udGgoKSxjLmdldERhdGUoKV19CisvLyBj b252ZXJ0IGFuIGFycmF5IHRvIGEgZGF0ZS4KKy8vIHRoZSBhcnJheSBzaG91 bGQgbWlycm9yIHRoZSBwYXJhbWV0ZXJzIGJlbG93CisvLyBub3RlOiBhbGwg dmFsdWVzIHBhc3QgdGhlIHllYXIgYXJlIG9wdGlvbmFsIGFuZCB3aWxsIGRl ZmF1bHQgdG8gdGhlIGxvd2VzdCBwb3NzaWJsZSB2YWx1ZS4KKy8vIFt5ZWFy LCBtb250aCwgZGF5ICwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vj b25kXQorZnVuY3Rpb24gaGIoYSl7dmFyIGIsYyxkLGUsZj1bXTtpZighYS5f ZCl7CisvLyBEZWZhdWx0IHRvIGN1cnJlbnQgZGF0ZS4KKy8vICogaWYgbm8g eWVhciwgbW9udGgsIGRheSBvZiBtb250aCBhcmUgZ2l2ZW4sIGRlZmF1bHQg dG8gdG9kYXkKKy8vICogaWYgZGF5IG9mIG1vbnRoIGlzIGdpdmVuLCBkZWZh dWx0IG1vbnRoIGFuZCB5ZWFyCisvLyAqIGlmIG1vbnRoIGlzIGdpdmVuLCBk ZWZhdWx0IG9ubHkgeWVhcgorLy8gKiBpZiB5ZWFyIGlzIGdpdmVuLCBkb24n dCBkZWZhdWx0IGFueXRoaW5nCitmb3IoZD1nYihhKSxhLl93JiZudWxsPT1h Ll9hW1hlXSYmbnVsbD09YS5fYVtXZV0mJmliKGEpLGEuX2RheU9mWWVhciYm KGU9ZmIoYS5fYVtWZV0sZFtWZV0pLGEuX2RheU9mWWVhcj5vYShlKSYmKGwo YSkuX292ZXJmbG93RGF5T2ZZZWFyPSEwKSxjPXNhKGUsMCxhLl9kYXlPZlll YXIpLGEuX2FbV2VdPWMuZ2V0VVRDTW9udGgoKSxhLl9hW1hlXT1jLmdldFVU Q0RhdGUoKSksYj0wOzM+YiYmbnVsbD09YS5fYVtiXTsrK2IpYS5fYVtiXT1m W2JdPWRbYl07CisvLyBaZXJvIG91dCB3aGF0ZXZlciB3YXMgbm90IGRlZmF1 bHRlZCwgaW5jbHVkaW5nIHRpbWUKK2Zvcig7Nz5iO2IrKylhLl9hW2JdPWZb Yl09bnVsbD09YS5fYVtiXT8yPT09Yj8xOjA6YS5fYVtiXTsKKy8vIENoZWNr IGZvciAyNDowMDowMC4wMDAKKzI0PT09YS5fYVtZZV0mJjA9PT1hLl9hW1pl XSYmMD09PWEuX2FbJGVdJiYwPT09YS5fYVtfZV0mJihhLl9uZXh0RGF5PSEw LGEuX2FbWWVdPTApLGEuX2Q9KGEuX3VzZVVUQz9zYTpyYSkuYXBwbHkobnVs bCxmKSwKKy8vIEFwcGx5IHRpbWV6b25lIG9mZnNldCBmcm9tIGlucHV0LiBU aGUgYWN0dWFsIHV0Y09mZnNldCBjYW4gYmUgY2hhbmdlZAorLy8gd2l0aCBw YXJzZVpvbmUuCitudWxsIT1hLl90em0mJmEuX2Quc2V0VVRDTWludXRlcyhh Ll9kLmdldFVUQ01pbnV0ZXMoKS1hLl90em0pLGEuX25leHREYXkmJihhLl9h W1llXT0yNCl9fWZ1bmN0aW9uIGliKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGk7 Yj1hLl93LG51bGwhPWIuR0d8fG51bGwhPWIuV3x8bnVsbCE9Yi5FPyhmPTEs Zz00LGM9ZmIoYi5HRyxhLl9hW1ZlXSx2YShyYigpLDEsNCkueWVhciksZD1m YihiLlcsMSksZT1mYihiLkUsMSksKDE+ZXx8ZT43KSYmKGk9ITApKTooZj1h Ll9sb2NhbGUuX3dlZWsuZG93LGc9YS5fbG9jYWxlLl93ZWVrLmRveSxjPWZi KGIuZ2csYS5fYVtWZV0sdmEocmIoKSxmLGcpLnllYXIpLGQ9ZmIoYi53LDEp LG51bGwhPWIuZD8oZT1iLmQsKDA+ZXx8ZT42KSYmKGk9ITApKTpudWxsIT1i LmU/KGU9Yi5lK2YsKGIuZTwwfHxiLmU+NikmJihpPSEwKSk6ZT1mKSwxPmR8 fGQ+d2EoYyxmLGcpP2woYSkuX292ZXJmbG93V2Vla3M9ITA6bnVsbCE9aT9s KGEpLl9vdmVyZmxvd1dlZWtkYXk9ITA6KGg9dWEoYyxkLGUsZixnKSxhLl9h W1ZlXT1oLnllYXIsYS5fZGF5T2ZZZWFyPWguZGF5T2ZZZWFyKX0KKy8vIGRh dGUgZnJvbSBzdHJpbmcgYW5kIGZvcm1hdCBzdHJpbmcKK2Z1bmN0aW9uIGpi KGIpeworLy8gVE9ETzogTW92ZSB0aGlzIHRvIGFub3RoZXIgcGFydCBvZiB0 aGUgY3JlYXRpb24gZmxvdyB0byBwcmV2ZW50IGNpcmN1bGFyIGRlcHMKK2lm KGIuX2Y9PT1hLklTT184NjAxKXJldHVybiB2b2lkIGRiKGIpO2IuX2E9W10s bChiKS5lbXB0eT0hMDsKKy8vIFRoaXMgYXJyYXkgaXMgdXNlZCB0byBtYWtl IGEgRGF0ZSwgZWl0aGVyIHdpdGggYG5ldyBEYXRlYCBvciBgRGF0ZS5VVENg Cit2YXIgYyxkLGUsZixnLGg9IiIrYi5faSxpPWgubGVuZ3RoLGo9MDtmb3Io ZT1YKGIuX2YsYi5fbG9jYWxlKS5tYXRjaCh5ZSl8fFtdLGM9MDtjPGUubGVu Z3RoO2MrKylmPWVbY10sZD0oaC5tYXRjaChaKGYsYikpfHxbXSlbMF0sZCYm KGc9aC5zdWJzdHIoMCxoLmluZGV4T2YoZCkpLGcubGVuZ3RoPjAmJmwoYiku dW51c2VkSW5wdXQucHVzaChnKSxoPWguc2xpY2UoaC5pbmRleE9mKGQpK2Qu bGVuZ3RoKSxqKz1kLmxlbmd0aCksQmVbZl0/KGQ/bChiKS5lbXB0eT0hMTps KGIpLnVudXNlZFRva2Vucy5wdXNoKGYpLGNhKGYsZCxiKSk6Yi5fc3RyaWN0 JiYhZCYmbChiKS51bnVzZWRUb2tlbnMucHVzaChmKTsKKy8vIGFkZCByZW1h aW5pbmcgdW5wYXJzZWQgaW5wdXQgbGVuZ3RoIHRvIHRoZSBzdHJpbmcKK2wo YikuY2hhcnNMZWZ0T3Zlcj1pLWosaC5sZW5ndGg+MCYmbChiKS51bnVzZWRJ bnB1dC5wdXNoKGgpLAorLy8gY2xlYXIgXzEyaCBmbGFnIGlmIGhvdXIgaXMg PD0gMTIKK2IuX2FbWWVdPD0xMiYmbChiKS5iaWdIb3VyPT09ITAmJmIuX2Fb WWVdPjAmJihsKGIpLmJpZ0hvdXI9dm9pZCAwKSxsKGIpLnBhcnNlZERhdGVQ YXJ0cz1iLl9hLnNsaWNlKDApLGwoYikubWVyaWRpZW09Yi5fbWVyaWRpZW0s CisvLyBoYW5kbGUgbWVyaWRpZW0KK2IuX2FbWWVdPWtiKGIuX2xvY2FsZSxi Ll9hW1llXSxiLl9tZXJpZGllbSksaGIoYiksY2IoYil9ZnVuY3Rpb24ga2Io YSxiLGMpe3ZhciBkOworLy8gRmFsbGJhY2sKK3JldHVybiBudWxsPT1jP2I6 bnVsbCE9YS5tZXJpZGllbUhvdXI/YS5tZXJpZGllbUhvdXIoYixjKTpudWxs IT1hLmlzUE0/KGQ9YS5pc1BNKGMpLGQmJjEyPmImJihiKz0xMiksZHx8MTIh PT1ifHwoYj0wKSxiKTpifQorLy8gZGF0ZSBmcm9tIHN0cmluZyBhbmQgYXJy YXkgb2YgZm9ybWF0IHN0cmluZ3MKK2Z1bmN0aW9uIGxiKGEpe3ZhciBiLGMs ZCxlLGY7aWYoMD09PWEuX2YubGVuZ3RoKXJldHVybiBsKGEpLmludmFsaWRG b3JtYXQ9ITAsdm9pZChhLl9kPW5ldyBEYXRlKE5hTikpO2ZvcihlPTA7ZTxh Ll9mLmxlbmd0aDtlKyspZj0wLGI9cCh7fSxhKSxudWxsIT1hLl91c2VVVEMm JihiLl91c2VVVEM9YS5fdXNlVVRDKSxiLl9mPWEuX2ZbZV0samIoYiksbShi KSYmKGYrPWwoYikuY2hhcnNMZWZ0T3ZlcixmKz0xMCpsKGIpLnVudXNlZFRv a2Vucy5sZW5ndGgsbChiKS5zY29yZT1mLChudWxsPT1kfHxkPmYpJiYoZD1m LGM9YikpO2koYSxjfHxiKX1mdW5jdGlvbiBtYihhKXtpZighYS5fZCl7dmFy IGI9SyhhLl9pKTthLl9hPWcoW2IueWVhcixiLm1vbnRoLGIuZGF5fHxiLmRh dGUsYi5ob3VyLGIubWludXRlLGIuc2Vjb25kLGIubWlsbGlzZWNvbmRdLGZ1 bmN0aW9uKGEpe3JldHVybiBhJiZwYXJzZUludChhLDEwKX0pLGhiKGEpfX1m dW5jdGlvbiBuYihhKXt2YXIgYj1uZXcgcShjYihvYihhKSkpOworLy8gQWRk aW5nIGlzIHNtYXJ0IGVub3VnaCBhcm91bmQgRFNUCityZXR1cm4gYi5fbmV4 dERheSYmKGIuYWRkKDEsImQiKSxiLl9uZXh0RGF5PXZvaWQgMCksYn1mdW5j dGlvbiBvYihhKXt2YXIgYj1hLl9pLGQ9YS5fZjtyZXR1cm4gYS5fbG9jYWxl PWEuX2xvY2FsZXx8YWIoYS5fbCksbnVsbD09PWJ8fHZvaWQgMD09PWQmJiIi PT09Yj9uKHtudWxsSW5wdXQ6ITB9KTooInN0cmluZyI9PXR5cGVvZiBiJiYo YS5faT1iPWEuX2xvY2FsZS5wcmVwYXJzZShiKSkscihiKT9uZXcgcShjYihi KSk6KGMoZCk/bGIoYSk6ZihiKT9hLl9kPWI6ZD9qYihhKTpwYihhKSxtKGEp fHwoYS5fZD1udWxsKSxhKSl9ZnVuY3Rpb24gcGIoYil7dmFyIGQ9Yi5faTt2 b2lkIDA9PT1kP2IuX2Q9bmV3IERhdGUoYS5ub3coKSk6ZihkKT9iLl9kPW5l dyBEYXRlKGQudmFsdWVPZigpKToic3RyaW5nIj09dHlwZW9mIGQ/ZWIoYik6 YyhkKT8oYi5fYT1nKGQuc2xpY2UoMCksZnVuY3Rpb24oYSl7cmV0dXJuIHBh cnNlSW50KGEsMTApfSksaGIoYikpOiJvYmplY3QiPT10eXBlb2YgZD9tYihi KToibnVtYmVyIj09dHlwZW9mIGQ/CisvLyBmcm9tIG1pbGxpc2Vjb25kcwor Yi5fZD1uZXcgRGF0ZShkKTphLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGIp fWZ1bmN0aW9uIHFiKGEsYixmLGcsaCl7dmFyIGk9e307CisvLyBvYmplY3Qg Y29uc3RydWN0aW9uIG11c3QgYmUgZG9uZSB0aGlzIHdheS4KKy8vIGh0dHBz Oi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L2lzc3Vlcy8xNDIzCityZXR1 cm4iYm9vbGVhbiI9PXR5cGVvZiBmJiYoZz1mLGY9dm9pZCAwKSwoZChhKSYm ZShhKXx8YyhhKSYmMD09PWEubGVuZ3RoKSYmKGE9dm9pZCAwKSxpLl9pc0FN b21lbnRPYmplY3Q9ITAsaS5fdXNlVVRDPWkuX2lzVVRDPWgsaS5fbD1mLGku X2k9YSxpLl9mPWIsaS5fc3RyaWN0PWcsbmIoaSl9ZnVuY3Rpb24gcmIoYSxi LGMsZCl7cmV0dXJuIHFiKGEsYixjLGQsITEpfQorLy8gUGljayBhIG1vbWVu dCBtIGZyb20gbW9tZW50cyBzbyB0aGF0IG1bZm5dKG90aGVyKSBpcyB0cnVl IGZvciBhbGwKKy8vIG90aGVyLiBUaGlzIHJlbGllcyBvbiB0aGUgZnVuY3Rp b24gZm4gdG8gYmUgdHJhbnNpdGl2ZS4KKy8vCisvLyBtb21lbnRzIHNob3Vs ZCBlaXRoZXIgYmUgYW4gYXJyYXkgb2YgbW9tZW50IG9iamVjdHMgb3IgYW4g YXJyYXksIHdob3NlCisvLyBmaXJzdCBlbGVtZW50IGlzIGFuIGFycmF5IG9m IG1vbWVudCBvYmplY3RzLgorZnVuY3Rpb24gc2IoYSxiKXt2YXIgZCxlO2lm KDE9PT1iLmxlbmd0aCYmYyhiWzBdKSYmKGI9YlswXSksIWIubGVuZ3RoKXJl dHVybiByYigpO2ZvcihkPWJbMF0sZT0xO2U8Yi5sZW5ndGg7KytlKWJbZV0u aXNWYWxpZCgpJiYhYltlXVthXShkKXx8KGQ9YltlXSk7cmV0dXJuIGR9Cisv LyBUT0RPOiBVc2UgW10uc29ydCBpbnN0ZWFkPworZnVuY3Rpb24gdGIoKXt2 YXIgYT1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gc2IoImlz QmVmb3JlIixhKX1mdW5jdGlvbiB1Yigpe3ZhciBhPVtdLnNsaWNlLmNhbGwo YXJndW1lbnRzLDApO3JldHVybiBzYigiaXNBZnRlciIsYSl9ZnVuY3Rpb24g dmIoYSl7dmFyIGI9SyhhKSxjPWIueWVhcnx8MCxkPWIucXVhcnRlcnx8MCxl PWIubW9udGh8fDAsZj1iLndlZWt8fDAsZz1iLmRheXx8MCxoPWIuaG91cnx8 MCxpPWIubWludXRlfHwwLGo9Yi5zZWNvbmR8fDAsaz1iLm1pbGxpc2Vjb25k fHwwOworLy8gcmVwcmVzZW50YXRpb24gZm9yIGRhdGVBZGRSZW1vdmUKK3Ro aXMuX21pbGxpc2Vjb25kcz0raysxZTMqaisvLyAxMDAwCis2ZTQqaSsvLyAx MDAwICogNjAKKzFlMypoKjYwKjYwLC8vdXNpbmcgMTAwMCAqIDYwICogNjAg aW5zdGVhZCBvZiAzNmU1IHRvIGF2b2lkIGZsb2F0aW5nIHBvaW50IHJvdW5k aW5nIGVycm9ycyBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9p c3N1ZXMvMjk3OAorLy8gQmVjYXVzZSBvZiBkYXRlQWRkUmVtb3ZlIHRyZWF0 cyAyNCBob3VycyBhcyBkaWZmZXJlbnQgZnJvbSBhCisvLyBkYXkgd2hlbiB3 b3JraW5nIGFyb3VuZCBEU1QsIHdlIG5lZWQgdG8gc3RvcmUgdGhlbSBzZXBh cmF0ZWx5Cit0aGlzLl9kYXlzPStnKzcqZiwKKy8vIEl0IGlzIGltcG9zc2li bGUgdHJhbnNsYXRlIG1vbnRocyBpbnRvIGRheXMgd2l0aG91dCBrbm93aW5n CisvLyB3aGljaCBtb250aHMgeW91IGFyZSBhcmUgdGFsa2luZyBhYm91dCwg c28gd2UgaGF2ZSB0byBzdG9yZQorLy8gaXQgc2VwYXJhdGVseS4KK3RoaXMu X21vbnRocz0rZSszKmQrMTIqYyx0aGlzLl9kYXRhPXt9LHRoaXMuX2xvY2Fs ZT1hYigpLHRoaXMuX2J1YmJsZSgpfWZ1bmN0aW9uIHdiKGEpe3JldHVybiBh IGluc3RhbmNlb2YgdmJ9ZnVuY3Rpb24geGIoYSl7cmV0dXJuIDA+YT8tMSpN YXRoLnJvdW5kKC0xKmEpOk1hdGgucm91bmQoYSl9CisvLyBGT1JNQVRUSU5H CitmdW5jdGlvbiB5YihhLGIpe1QoYSwwLDAsZnVuY3Rpb24oKXt2YXIgYT10 aGlzLnV0Y09mZnNldCgpLGM9IisiO3JldHVybiAwPmEmJihhPS1hLGM9Ii0i KSxjK1Mofn4oYS82MCksMikrYitTKH5+YSU2MCwyKX0pfWZ1bmN0aW9uIHpi KGEsYil7dmFyIGM9KGJ8fCIiKS5tYXRjaChhKXx8W10sZD1jW2MubGVuZ3Ro LTFdfHxbXSxlPShkKyIiKS5tYXRjaChFZil8fFsiLSIsMCwwXSxmPSsoNjAq ZVsxXSkrdChlWzJdKTtyZXR1cm4iKyI9PT1lWzBdP2Y6LWZ9CisvLyBSZXR1 cm4gYSBtb21lbnQgZnJvbSBpbnB1dCwgdGhhdCBpcyBsb2NhbC91dGMvem9u ZSBlcXVpdmFsZW50IHRvIG1vZGVsLgorZnVuY3Rpb24gQWIoYixjKXt2YXIg ZCxlOworLy8gVXNlIGxvdy1sZXZlbCBhcGksIGJlY2F1c2UgdGhpcyBmbiBp cyBsb3ctbGV2ZWwgYXBpLgorcmV0dXJuIGMuX2lzVVRDPyhkPWMuY2xvbmUo KSxlPShyKGIpfHxmKGIpP2IudmFsdWVPZigpOnJiKGIpLnZhbHVlT2YoKSkt ZC52YWx1ZU9mKCksZC5fZC5zZXRUaW1lKGQuX2QudmFsdWVPZigpK2UpLGEu dXBkYXRlT2Zmc2V0KGQsITEpLGQpOnJiKGIpLmxvY2FsKCl9ZnVuY3Rpb24g QmIoYSl7CisvLyBPbiBGaXJlZm94LjI0IERhdGUjZ2V0VGltZXpvbmVPZmZz ZXQgcmV0dXJucyBhIGZsb2F0aW5nIHBvaW50LgorLy8gaHR0cHM6Ly9naXRo dWIuY29tL21vbWVudC9tb21lbnQvcHVsbC8xODcxCityZXR1cm4gMTUqLU1h dGgucm91bmQoYS5fZC5nZXRUaW1lem9uZU9mZnNldCgpLzE1KX0KKy8vIE1P TUVOVFMKKy8vIGtlZXBMb2NhbFRpbWUgPSB0cnVlIG1lYW5zIG9ubHkgY2hh bmdlIHRoZSB0aW1lem9uZSwgd2l0aG91dAorLy8gYWZmZWN0aW5nIHRoZSBs b2NhbCBob3VyLiBTbyA1OjMxOjI2ICswMzAwIC0tW3V0Y09mZnNldCgyLCB0 cnVlKV0tLT4KKy8vIDU6MzE6MjYgKzAyMDAgSXQgaXMgcG9zc2libGUgdGhh dCA1OjMxOjI2IGRvZXNuJ3QgZXhpc3Qgd2l0aCBvZmZzZXQKKy8vICswMjAw LCBzbyB3ZSBhZGp1c3QgdGhlIHRpbWUgYXMgbmVlZGVkLCB0byBiZSB2YWxp ZC4KKy8vCisvLyBLZWVwaW5nIHRoZSB0aW1lIGFjdHVhbGx5IGFkZHMvc3Vi dHJhY3RzIChvbmUgaG91cikKKy8vIGZyb20gdGhlIGFjdHVhbCByZXByZXNl bnRlZCB0aW1lLiBUaGF0IGlzIHdoeSB3ZSBjYWxsIHVwZGF0ZU9mZnNldAor Ly8gYSBzZWNvbmQgdGltZS4gSW4gY2FzZSBpdCB3YW50cyB1cyB0byBjaGFu Z2UgdGhlIG9mZnNldCBhZ2FpbgorLy8gX2NoYW5nZUluUHJvZ3Jlc3MgPT0g dHJ1ZSBjYXNlLCB0aGVuIHdlIGhhdmUgdG8gYWRqdXN0LCBiZWNhdXNlCisv LyB0aGVyZSBpcyBubyBzdWNoIHRpbWUgaW4gdGhlIGdpdmVuIHRpbWV6b25l LgorZnVuY3Rpb24gQ2IoYixjKXt2YXIgZCxlPXRoaXMuX29mZnNldHx8MDty ZXR1cm4gdGhpcy5pc1ZhbGlkKCk/bnVsbCE9Yj8oInN0cmluZyI9PXR5cGVv ZiBiP2I9emIoUWUsYik6TWF0aC5hYnMoYik8MTYmJihiPTYwKmIpLCF0aGlz Ll9pc1VUQyYmYyYmKGQ9QmIodGhpcykpLHRoaXMuX29mZnNldD1iLHRoaXMu X2lzVVRDPSEwLG51bGwhPWQmJnRoaXMuYWRkKGQsIm0iKSxlIT09YiYmKCFj fHx0aGlzLl9jaGFuZ2VJblByb2dyZXNzP1NiKHRoaXMsTmIoYi1lLCJtIiks MSwhMSk6dGhpcy5fY2hhbmdlSW5Qcm9ncmVzc3x8KHRoaXMuX2NoYW5nZUlu UHJvZ3Jlc3M9ITAsYS51cGRhdGVPZmZzZXQodGhpcywhMCksdGhpcy5fY2hh bmdlSW5Qcm9ncmVzcz1udWxsKSksdGhpcyk6dGhpcy5faXNVVEM/ZTpCYih0 aGlzKTpudWxsIT1iP3RoaXM6TmFOfWZ1bmN0aW9uIERiKGEsYil7cmV0dXJu IG51bGwhPWE/KCJzdHJpbmciIT10eXBlb2YgYSYmKGE9LWEpLHRoaXMudXRj T2Zmc2V0KGEsYiksdGhpcyk6LXRoaXMudXRjT2Zmc2V0KCl9ZnVuY3Rpb24g RWIoYSl7cmV0dXJuIHRoaXMudXRjT2Zmc2V0KDAsYSl9ZnVuY3Rpb24gRmIo YSl7cmV0dXJuIHRoaXMuX2lzVVRDJiYodGhpcy51dGNPZmZzZXQoMCxhKSx0 aGlzLl9pc1VUQz0hMSxhJiZ0aGlzLnN1YnRyYWN0KEJiKHRoaXMpLCJtIikp LHRoaXN9ZnVuY3Rpb24gR2IoKXtpZih0aGlzLl90em0pdGhpcy51dGNPZmZz ZXQodGhpcy5fdHptKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgdGhpcy5f aSl7dmFyIGE9emIoUGUsdGhpcy5faSk7MD09PWE/dGhpcy51dGNPZmZzZXQo MCwhMCk6dGhpcy51dGNPZmZzZXQoemIoUGUsdGhpcy5faSkpfXJldHVybiB0 aGlzfWZ1bmN0aW9uIEhiKGEpe3JldHVybiB0aGlzLmlzVmFsaWQoKT8oYT1h P3JiKGEpLnV0Y09mZnNldCgpOjAsKHRoaXMudXRjT2Zmc2V0KCktYSklNjA9 PT0wKTohMX1mdW5jdGlvbiBJYigpe3JldHVybiB0aGlzLnV0Y09mZnNldCgp PnRoaXMuY2xvbmUoKS5tb250aCgwKS51dGNPZmZzZXQoKXx8dGhpcy51dGNP ZmZzZXQoKT50aGlzLmNsb25lKCkubW9udGgoNSkudXRjT2Zmc2V0KCl9ZnVu Y3Rpb24gSmIoKXtpZighbyh0aGlzLl9pc0RTVFNoaWZ0ZWQpKXJldHVybiB0 aGlzLl9pc0RTVFNoaWZ0ZWQ7dmFyIGE9e307aWYocChhLHRoaXMpLGE9b2Io YSksYS5fYSl7dmFyIGI9YS5faXNVVEM/aihhLl9hKTpyYihhLl9hKTt0aGlz Ll9pc0RTVFNoaWZ0ZWQ9dGhpcy5pc1ZhbGlkKCkmJnUoYS5fYSxiLnRvQXJy YXkoKSk+MH1lbHNlIHRoaXMuX2lzRFNUU2hpZnRlZD0hMTtyZXR1cm4gdGhp cy5faXNEU1RTaGlmdGVkfWZ1bmN0aW9uIEtiKCl7cmV0dXJuIHRoaXMuaXNW YWxpZCgpPyF0aGlzLl9pc1VUQzohMX1mdW5jdGlvbiBMYigpe3JldHVybiB0 aGlzLmlzVmFsaWQoKT90aGlzLl9pc1VUQzohMX1mdW5jdGlvbiBNYigpe3Jl dHVybiB0aGlzLmlzVmFsaWQoKT90aGlzLl9pc1VUQyYmMD09PXRoaXMuX29m ZnNldDohMX1mdW5jdGlvbiBOYihhLGIpe3ZhciBjLGQsZSxmPWEsCisvLyBt YXRjaGluZyBhZ2FpbnN0IHJlZ2V4cCBpcyBleHBlbnNpdmUsIGRvIGl0IG9u IGRlbWFuZAorZz1udWxsOy8vIGNoZWNrcyBmb3IgbnVsbCBvciB1bmRlZmlu ZWQKK3JldHVybiB3YihhKT9mPXttczphLl9taWxsaXNlY29uZHMsZDphLl9k YXlzLE06YS5fbW9udGhzfToibnVtYmVyIj09dHlwZW9mIGE/KGY9e30sYj9m W2JdPWE6Zi5taWxsaXNlY29uZHM9YSk6KGc9RmYuZXhlYyhhKSk/KGM9Ii0i PT09Z1sxXT8tMToxLGY9e3k6MCxkOnQoZ1tYZV0pKmMsaDp0KGdbWWVdKSpj LG06dChnW1plXSkqYyxzOnQoZ1skZV0pKmMsbXM6dCh4YigxZTMqZ1tfZV0p KSpjfSk6KGc9R2YuZXhlYyhhKSk/KGM9Ii0iPT09Z1sxXT8tMToxLGY9e3k6 T2IoZ1syXSxjKSxNOk9iKGdbM10sYyksdzpPYihnWzRdLGMpLGQ6T2IoZ1s1 XSxjKSxoOk9iKGdbNl0sYyksbTpPYihnWzddLGMpLHM6T2IoZ1s4XSxjKX0p Om51bGw9PWY/Zj17fToib2JqZWN0Ij09dHlwZW9mIGYmJigiZnJvbSJpbiBm fHwidG8iaW4gZikmJihlPVFiKHJiKGYuZnJvbSkscmIoZi50bykpLGY9e30s Zi5tcz1lLm1pbGxpc2Vjb25kcyxmLk09ZS5tb250aHMpLGQ9bmV3IHZiKGYp LHdiKGEpJiZoKGEsIl9sb2NhbGUiKSYmKGQuX2xvY2FsZT1hLl9sb2NhbGUp LGR9ZnVuY3Rpb24gT2IoYSxiKXsKKy8vIFdlJ2Qgbm9ybWFsbHkgdXNlIH5+ aW5wIGZvciB0aGlzLCBidXQgdW5mb3J0dW5hdGVseSBpdCBhbHNvCisvLyBj b252ZXJ0cyBmbG9hdHMgdG8gaW50cy4KKy8vIGlucCBtYXkgYmUgdW5kZWZp bmVkLCBzbyBjYXJlZnVsIGNhbGxpbmcgcmVwbGFjZSBvbiBpdC4KK3ZhciBj PWEmJnBhcnNlRmxvYXQoYS5yZXBsYWNlKCIsIiwiLiIpKTsKKy8vIGFwcGx5 IHNpZ24gd2hpbGUgd2UncmUgYXQgaXQKK3JldHVybihpc05hTihjKT8wOmMp KmJ9ZnVuY3Rpb24gUGIoYSxiKXt2YXIgYz17bWlsbGlzZWNvbmRzOjAsbW9u dGhzOjB9O3JldHVybiBjLm1vbnRocz1iLm1vbnRoKCktYS5tb250aCgpKzEy KihiLnllYXIoKS1hLnllYXIoKSksYS5jbG9uZSgpLmFkZChjLm1vbnRocywi TSIpLmlzQWZ0ZXIoYikmJi0tYy5tb250aHMsYy5taWxsaXNlY29uZHM9K2It K2EuY2xvbmUoKS5hZGQoYy5tb250aHMsIk0iKSxjfWZ1bmN0aW9uIFFiKGEs Yil7dmFyIGM7cmV0dXJuIGEuaXNWYWxpZCgpJiZiLmlzVmFsaWQoKT8oYj1B YihiLGEpLGEuaXNCZWZvcmUoYik/Yz1QYihhLGIpOihjPVBiKGIsYSksYy5t aWxsaXNlY29uZHM9LWMubWlsbGlzZWNvbmRzLGMubW9udGhzPS1jLm1vbnRo cyksYyk6e21pbGxpc2Vjb25kczowLG1vbnRoczowfX0KKy8vIFRPRE86IHJl bW92ZSAnbmFtZScgYXJnIGFmdGVyIGRlcHJlY2F0aW9uIGlzIHJlbW92ZWQK K2Z1bmN0aW9uIFJiKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMsZCl7dmFyIGUs ZjsKKy8vaW52ZXJ0IHRoZSBhcmd1bWVudHMsIGJ1dCBjb21wbGFpbiBhYm91 dCBpdAorcmV0dXJuIG51bGw9PT1kfHxpc05hTigrZCl8fCh4KGIsIm1vbWVu dCgpLiIrYisiKHBlcmlvZCwgbnVtYmVyKSBpcyBkZXByZWNhdGVkLiBQbGVh c2UgdXNlIG1vbWVudCgpLiIrYisiKG51bWJlciwgcGVyaW9kKS4gU2VlIGh0 dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvYWRkLWludmVy dGVkLXBhcmFtLyBmb3IgbW9yZSBpbmZvLiIpLGY9YyxjPWQsZD1mKSxjPSJz dHJpbmciPT10eXBlb2YgYz8rYzpjLGU9TmIoYyxkKSxTYih0aGlzLGUsYSks dGhpc319ZnVuY3Rpb24gU2IoYixjLGQsZSl7dmFyIGY9Yy5fbWlsbGlzZWNv bmRzLGc9eGIoYy5fZGF5cyksaD14YihjLl9tb250aHMpO2IuaXNWYWxpZCgp JiYoZT1udWxsPT1lPyEwOmUsZiYmYi5fZC5zZXRUaW1lKGIuX2QudmFsdWVP ZigpK2YqZCksZyYmUChiLCJEYXRlIixPKGIsIkRhdGUiKStnKmQpLGgmJmlh KGIsTyhiLCJNb250aCIpK2gqZCksZSYmYS51cGRhdGVPZmZzZXQoYixnfHxo KSl9ZnVuY3Rpb24gVGIoYSxiKXt2YXIgYz1hLmRpZmYoYiwiZGF5cyIsITAp O3JldHVybi02PmM/InNhbWVFbHNlIjotMT5jPyJsYXN0V2VlayI6MD5jPyJs YXN0RGF5IjoxPmM/InNhbWVEYXkiOjI+Yz8ibmV4dERheSI6Nz5jPyJuZXh0 V2VlayI6InNhbWVFbHNlIn1mdW5jdGlvbiBVYihiLGMpeworLy8gV2Ugd2Fu dCB0byBjb21wYXJlIHRoZSBzdGFydCBvZiB0b2RheSwgdnMgdGhpcy4KKy8v IEdldHRpbmcgc3RhcnQtb2YtdG9kYXkgZGVwZW5kcyBvbiB3aGV0aGVyIHdl J3JlIGxvY2FsL3V0Yy9vZmZzZXQgb3Igbm90LgordmFyIGQ9Ynx8cmIoKSxl PUFiKGQsdGhpcykuc3RhcnRPZigiZGF5IiksZj1hLmNhbGVuZGFyRm9ybWF0 KHRoaXMsZSl8fCJzYW1lRWxzZSIsZz1jJiYoeShjW2ZdKT9jW2ZdLmNhbGwo dGhpcyxkKTpjW2ZdKTtyZXR1cm4gdGhpcy5mb3JtYXQoZ3x8dGhpcy5sb2Nh bGVEYXRhKCkuY2FsZW5kYXIoZix0aGlzLHJiKGQpKSl9ZnVuY3Rpb24gVmIo KXtyZXR1cm4gbmV3IHEodGhpcyl9ZnVuY3Rpb24gV2IoYSxiKXt2YXIgYz1y KGEpP2E6cmIoYSk7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiZjLmlzVmFsaWQo KT8oYj1KKG8oYik/Im1pbGxpc2Vjb25kIjpiKSwibWlsbGlzZWNvbmQiPT09 Yj90aGlzLnZhbHVlT2YoKT5jLnZhbHVlT2YoKTpjLnZhbHVlT2YoKTx0aGlz LmNsb25lKCkuc3RhcnRPZihiKS52YWx1ZU9mKCkpOiExfWZ1bmN0aW9uIFhi KGEsYil7dmFyIGM9cihhKT9hOnJiKGEpO3JldHVybiB0aGlzLmlzVmFsaWQo KSYmYy5pc1ZhbGlkKCk/KGI9SihvKGIpPyJtaWxsaXNlY29uZCI6YiksIm1p bGxpc2Vjb25kIj09PWI/dGhpcy52YWx1ZU9mKCk8Yy52YWx1ZU9mKCk6dGhp cy5jbG9uZSgpLmVuZE9mKGIpLnZhbHVlT2YoKTxjLnZhbHVlT2YoKSk6ITF9 ZnVuY3Rpb24gWWIoYSxiLGMsZCl7cmV0dXJuIGQ9ZHx8IigpIiwoIigiPT09 ZFswXT90aGlzLmlzQWZ0ZXIoYSxjKTohdGhpcy5pc0JlZm9yZShhLGMpKSYm KCIpIj09PWRbMV0/dGhpcy5pc0JlZm9yZShiLGMpOiF0aGlzLmlzQWZ0ZXIo YixjKSl9ZnVuY3Rpb24gWmIoYSxiKXt2YXIgYyxkPXIoYSk/YTpyYihhKTty ZXR1cm4gdGhpcy5pc1ZhbGlkKCkmJmQuaXNWYWxpZCgpPyhiPUooYnx8Im1p bGxpc2Vjb25kIiksIm1pbGxpc2Vjb25kIj09PWI/dGhpcy52YWx1ZU9mKCk9 PT1kLnZhbHVlT2YoKTooYz1kLnZhbHVlT2YoKSx0aGlzLmNsb25lKCkuc3Rh cnRPZihiKS52YWx1ZU9mKCk8PWMmJmM8PXRoaXMuY2xvbmUoKS5lbmRPZihi KS52YWx1ZU9mKCkpKTohMX1mdW5jdGlvbiAkYihhLGIpe3JldHVybiB0aGlz LmlzU2FtZShhLGIpfHx0aGlzLmlzQWZ0ZXIoYSxiKX1mdW5jdGlvbiBfYihh LGIpe3JldHVybiB0aGlzLmlzU2FtZShhLGIpfHx0aGlzLmlzQmVmb3JlKGEs Yil9ZnVuY3Rpb24gYWMoYSxiLGMpe3ZhciBkLGUsZixnOy8vIDEwMDAKKy8v IDEwMDAgKiA2MAorLy8gMTAwMCAqIDYwICogNjAKKy8vIDEwMDAgKiA2MCAq IDYwICogMjQsIG5lZ2F0ZSBkc3QKKy8vIDEwMDAgKiA2MCAqIDYwICogMjQg KiA3LCBuZWdhdGUgZHN0CityZXR1cm4gdGhpcy5pc1ZhbGlkKCk/KGQ9QWIo YSx0aGlzKSxkLmlzVmFsaWQoKT8oZT02ZTQqKGQudXRjT2Zmc2V0KCktdGhp cy51dGNPZmZzZXQoKSksYj1KKGIpLCJ5ZWFyIj09PWJ8fCJtb250aCI9PT1i fHwicXVhcnRlciI9PT1iPyhnPWJjKHRoaXMsZCksInF1YXJ0ZXIiPT09Yj9n Lz0zOiJ5ZWFyIj09PWImJihnLz0xMikpOihmPXRoaXMtZCxnPSJzZWNvbmQi PT09Yj9mLzFlMzoibWludXRlIj09PWI/Zi82ZTQ6ImhvdXIiPT09Yj9mLzM2 ZTU6ImRheSI9PT1iPyhmLWUpLzg2NGU1OiJ3ZWVrIj09PWI/KGYtZSkvNjA0 OGU1OmYpLGM/ZzpzKGcpKTpOYU4pOk5hTn1mdW5jdGlvbiBiYyhhLGIpewor Ly8gZGlmZmVyZW5jZSBpbiBtb250aHMKK3ZhciBjLGQsZT0xMiooYi55ZWFy KCktYS55ZWFyKCkpKyhiLm1vbnRoKCktYS5tb250aCgpKSwKKy8vIGIgaXMg aW4gKGFuY2hvciAtIDEgbW9udGgsIGFuY2hvciArIDEgbW9udGgpCitmPWEu Y2xvbmUoKS5hZGQoZSwibW9udGhzIik7CisvL2NoZWNrIGZvciBuZWdhdGl2 ZSB6ZXJvLCByZXR1cm4gemVybyBpZiBuZWdhdGl2ZSB6ZXJvCisvLyBsaW5l YXIgYWNyb3NzIHRoZSBtb250aAorLy8gbGluZWFyIGFjcm9zcyB0aGUgbW9u dGgKK3JldHVybiAwPmItZj8oYz1hLmNsb25lKCkuYWRkKGUtMSwibW9udGhz IiksZD0oYi1mKS8oZi1jKSk6KGM9YS5jbG9uZSgpLmFkZChlKzEsIm1vbnRo cyIpLGQ9KGItZikvKGMtZikpLC0oZStkKXx8MH1mdW5jdGlvbiBjYygpe3Jl dHVybiB0aGlzLmNsb25lKCkubG9jYWxlKCJlbiIpLmZvcm1hdCgiZGRkIE1N TSBERCBZWVlZIEhIOm1tOnNzIFtHTVRdWloiKX1mdW5jdGlvbiBkYygpe3Zh ciBhPXRoaXMuY2xvbmUoKS51dGMoKTtyZXR1cm4gMDxhLnllYXIoKSYmYS55 ZWFyKCk8PTk5OTk/eShEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyk/dGhp cy50b0RhdGUoKS50b0lTT1N0cmluZygpOlcoYSwiWVlZWS1NTS1ERFtUXUhI Om1tOnNzLlNTU1taXSIpOlcoYSwiWVlZWVlZLU1NLUREW1RdSEg6bW06c3Mu U1NTW1pdIil9ZnVuY3Rpb24gZWMoYil7Ynx8KGI9dGhpcy5pc1V0YygpP2Eu ZGVmYXVsdEZvcm1hdFV0YzphLmRlZmF1bHRGb3JtYXQpO3ZhciBjPVcodGhp cyxiKTtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkucG9zdGZvcm1hdChjKX1m dW5jdGlvbiBmYyhhLGIpe3JldHVybiB0aGlzLmlzVmFsaWQoKSYmKHIoYSkm JmEuaXNWYWxpZCgpfHxyYihhKS5pc1ZhbGlkKCkpP05iKHt0bzp0aGlzLGZy b206YX0pLmxvY2FsZSh0aGlzLmxvY2FsZSgpKS5odW1hbml6ZSghYik6dGhp cy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKX1mdW5jdGlvbiBnYyhhKXty ZXR1cm4gdGhpcy5mcm9tKHJiKCksYSl9ZnVuY3Rpb24gaGMoYSxiKXtyZXR1 cm4gdGhpcy5pc1ZhbGlkKCkmJihyKGEpJiZhLmlzVmFsaWQoKXx8cmIoYSku aXNWYWxpZCgpKT9OYih7ZnJvbTp0aGlzLHRvOmF9KS5sb2NhbGUodGhpcy5s b2NhbGUoKSkuaHVtYW5pemUoIWIpOnRoaXMubG9jYWxlRGF0YSgpLmludmFs aWREYXRlKCl9ZnVuY3Rpb24gaWMoYSl7cmV0dXJuIHRoaXMudG8ocmIoKSxh KX0KKy8vIElmIHBhc3NlZCBhIGxvY2FsZSBrZXksIGl0IHdpbGwgc2V0IHRo ZSBsb2NhbGUgZm9yIHRoaXMKKy8vIGluc3RhbmNlLiAgT3RoZXJ3aXNlLCBp dCB3aWxsIHJldHVybiB0aGUgbG9jYWxlIGNvbmZpZ3VyYXRpb24KKy8vIHZh cmlhYmxlcyBmb3IgdGhpcyBpbnN0YW5jZS4KK2Z1bmN0aW9uIGpjKGEpe3Zh ciBiO3JldHVybiB2b2lkIDA9PT1hP3RoaXMuX2xvY2FsZS5fYWJicjooYj1h YihhKSxudWxsIT1iJiYodGhpcy5fbG9jYWxlPWIpLHRoaXMpfWZ1bmN0aW9u IGtjKCl7cmV0dXJuIHRoaXMuX2xvY2FsZX1mdW5jdGlvbiBsYyhhKXsKKy8v IHRoZSBmb2xsb3dpbmcgc3dpdGNoIGludGVudGlvbmFsbHkgb21pdHMgYnJl YWsga2V5d29yZHMKKy8vIHRvIHV0aWxpemUgZmFsbGluZyB0aHJvdWdoIHRo ZSBjYXNlcy4KK3N3aXRjaChhPUooYSkpe2Nhc2UieWVhciI6dGhpcy5tb250 aCgwKTsvKiBmYWxscyB0aHJvdWdoICovCitjYXNlInF1YXJ0ZXIiOmNhc2Ui bW9udGgiOnRoaXMuZGF0ZSgxKTsvKiBmYWxscyB0aHJvdWdoICovCitjYXNl IndlZWsiOmNhc2UiaXNvV2VlayI6Y2FzZSJkYXkiOmNhc2UiZGF0ZSI6dGhp cy5ob3VycygwKTsvKiBmYWxscyB0aHJvdWdoICovCitjYXNlImhvdXIiOnRo aXMubWludXRlcygwKTsvKiBmYWxscyB0aHJvdWdoICovCitjYXNlIm1pbnV0 ZSI6dGhpcy5zZWNvbmRzKDApOy8qIGZhbGxzIHRocm91Z2ggKi8KK2Nhc2Ui c2Vjb25kIjp0aGlzLm1pbGxpc2Vjb25kcygwKX0KKy8vIHdlZWtzIGFyZSBh IHNwZWNpYWwgY2FzZQorLy8gcXVhcnRlcnMgYXJlIGFsc28gc3BlY2lhbAor cmV0dXJuIndlZWsiPT09YSYmdGhpcy53ZWVrZGF5KDApLCJpc29XZWVrIj09 PWEmJnRoaXMuaXNvV2Vla2RheSgxKSwicXVhcnRlciI9PT1hJiZ0aGlzLm1v bnRoKDMqTWF0aC5mbG9vcih0aGlzLm1vbnRoKCkvMykpLHRoaXN9ZnVuY3Rp b24gbWMoYSl7CisvLyAnZGF0ZScgaXMgYW4gYWxpYXMgZm9yICdkYXknLCBz byBpdCBzaG91bGQgYmUgY29uc2lkZXJlZCBhcyBzdWNoLgorcmV0dXJuIGE9 SihhKSx2b2lkIDA9PT1hfHwibWlsbGlzZWNvbmQiPT09YT90aGlzOigiZGF0 ZSI9PT1hJiYoYT0iZGF5IiksdGhpcy5zdGFydE9mKGEpLmFkZCgxLCJpc29X ZWVrIj09PWE/IndlZWsiOmEpLnN1YnRyYWN0KDEsIm1zIikpfWZ1bmN0aW9u IG5jKCl7cmV0dXJuIHRoaXMuX2QudmFsdWVPZigpLTZlNCoodGhpcy5fb2Zm c2V0fHwwKX1mdW5jdGlvbiBvYygpe3JldHVybiBNYXRoLmZsb29yKHRoaXMu dmFsdWVPZigpLzFlMyl9ZnVuY3Rpb24gcGMoKXtyZXR1cm4gbmV3IERhdGUo dGhpcy52YWx1ZU9mKCkpfWZ1bmN0aW9uIHFjKCl7dmFyIGE9dGhpcztyZXR1 cm5bYS55ZWFyKCksYS5tb250aCgpLGEuZGF0ZSgpLGEuaG91cigpLGEubWlu dXRlKCksYS5zZWNvbmQoKSxhLm1pbGxpc2Vjb25kKCldfWZ1bmN0aW9uIHJj KCl7dmFyIGE9dGhpcztyZXR1cm57eWVhcnM6YS55ZWFyKCksbW9udGhzOmEu bW9udGgoKSxkYXRlOmEuZGF0ZSgpLGhvdXJzOmEuaG91cnMoKSxtaW51dGVz OmEubWludXRlcygpLHNlY29uZHM6YS5zZWNvbmRzKCksbWlsbGlzZWNvbmRz OmEubWlsbGlzZWNvbmRzKCl9fWZ1bmN0aW9uIHNjKCl7CisvLyBuZXcgRGF0 ZShOYU4pLnRvSlNPTigpID09PSBudWxsCityZXR1cm4gdGhpcy5pc1ZhbGlk KCk/dGhpcy50b0lTT1N0cmluZygpOm51bGx9ZnVuY3Rpb24gdGMoKXtyZXR1 cm4gbSh0aGlzKX1mdW5jdGlvbiB1Yygpe3JldHVybiBpKHt9LGwodGhpcykp fWZ1bmN0aW9uIHZjKCl7cmV0dXJuIGwodGhpcykub3ZlcmZsb3d9ZnVuY3Rp b24gd2MoKXtyZXR1cm57aW5wdXQ6dGhpcy5faSxmb3JtYXQ6dGhpcy5fZixs b2NhbGU6dGhpcy5fbG9jYWxlLGlzVVRDOnRoaXMuX2lzVVRDLHN0cmljdDp0 aGlzLl9zdHJpY3R9fWZ1bmN0aW9uIHhjKGEsYil7VCgwLFthLGEubGVuZ3Ro XSwwLGIpfQorLy8gTU9NRU5UUworZnVuY3Rpb24geWMoYSl7cmV0dXJuIENj LmNhbGwodGhpcyxhLHRoaXMud2VlaygpLHRoaXMud2Vla2RheSgpLHRoaXMu bG9jYWxlRGF0YSgpLl93ZWVrLmRvdyx0aGlzLmxvY2FsZURhdGEoKS5fd2Vl ay5kb3kpfWZ1bmN0aW9uIHpjKGEpe3JldHVybiBDYy5jYWxsKHRoaXMsYSx0 aGlzLmlzb1dlZWsoKSx0aGlzLmlzb1dlZWtkYXkoKSwxLDQpfWZ1bmN0aW9u IEFjKCl7cmV0dXJuIHdhKHRoaXMueWVhcigpLDEsNCl9ZnVuY3Rpb24gQmMo KXt2YXIgYT10aGlzLmxvY2FsZURhdGEoKS5fd2VlaztyZXR1cm4gd2EodGhp cy55ZWFyKCksYS5kb3csYS5kb3kpfWZ1bmN0aW9uIENjKGEsYixjLGQsZSl7 dmFyIGY7cmV0dXJuIG51bGw9PWE/dmEodGhpcyxkLGUpLnllYXI6KGY9d2Eo YSxkLGUpLGI+ZiYmKGI9ZiksRGMuY2FsbCh0aGlzLGEsYixjLGQsZSkpfWZ1 bmN0aW9uIERjKGEsYixjLGQsZSl7dmFyIGY9dWEoYSxiLGMsZCxlKSxnPXNh KGYueWVhciwwLGYuZGF5T2ZZZWFyKTtyZXR1cm4gdGhpcy55ZWFyKGcuZ2V0 VVRDRnVsbFllYXIoKSksdGhpcy5tb250aChnLmdldFVUQ01vbnRoKCkpLHRo aXMuZGF0ZShnLmdldFVUQ0RhdGUoKSksdGhpc30KKy8vIE1PTUVOVFMKK2Z1 bmN0aW9uIEVjKGEpe3JldHVybiBudWxsPT1hP01hdGguY2VpbCgodGhpcy5t b250aCgpKzEpLzMpOnRoaXMubW9udGgoMyooYS0xKSt0aGlzLm1vbnRoKCkl Myl9CisvLyBIRUxQRVJTCisvLyBNT01FTlRTCitmdW5jdGlvbiBGYyhhKXt2 YXIgYj1NYXRoLnJvdW5kKCh0aGlzLmNsb25lKCkuc3RhcnRPZigiZGF5Iikt dGhpcy5jbG9uZSgpLnN0YXJ0T2YoInllYXIiKSkvODY0ZTUpKzE7cmV0dXJu IG51bGw9PWE/Yjp0aGlzLmFkZChhLWIsImQiKX1mdW5jdGlvbiBHYyhhLGIp e2JbX2VdPXQoMWUzKigiMC4iK2EpKX0KKy8vIE1PTUVOVFMKK2Z1bmN0aW9u IEhjKCl7cmV0dXJuIHRoaXMuX2lzVVRDPyJVVEMiOiIifWZ1bmN0aW9uIElj KCl7cmV0dXJuIHRoaXMuX2lzVVRDPyJDb29yZGluYXRlZCBVbml2ZXJzYWwg VGltZSI6IiJ9ZnVuY3Rpb24gSmMoYSl7cmV0dXJuIHJiKDFlMyphKX1mdW5j dGlvbiBLYygpe3JldHVybiByYi5hcHBseShudWxsLGFyZ3VtZW50cykucGFy c2Vab25lKCl9ZnVuY3Rpb24gTGMoYSl7cmV0dXJuIGF9ZnVuY3Rpb24gTWMo YSxiLGMsZCl7dmFyIGU9YWIoKSxmPWooKS5zZXQoZCxiKTtyZXR1cm4gZVtj XShmLGEpfWZ1bmN0aW9uIE5jKGEsYixjKXtpZigibnVtYmVyIj09dHlwZW9m IGEmJihiPWEsYT12b2lkIDApLGE9YXx8IiIsbnVsbCE9YilyZXR1cm4gTWMo YSxiLGMsIm1vbnRoIik7dmFyIGQsZT1bXTtmb3IoZD0wOzEyPmQ7ZCsrKWVb ZF09TWMoYSxkLGMsIm1vbnRoIik7cmV0dXJuIGV9CisvLyAoKQorLy8gKDUp CisvLyAoZm10LCA1KQorLy8gKGZtdCkKKy8vICh0cnVlKQorLy8gKHRydWUs IDUpCisvLyAodHJ1ZSwgZm10LCA1KQorLy8gKHRydWUsIGZtdCkKK2Z1bmN0 aW9uIE9jKGEsYixjLGQpeyJib29sZWFuIj09dHlwZW9mIGE/KCJudW1iZXIi PT10eXBlb2YgYiYmKGM9YixiPXZvaWQgMCksYj1ifHwiIik6KGI9YSxjPWIs YT0hMSwibnVtYmVyIj09dHlwZW9mIGImJihjPWIsYj12b2lkIDApLGI9Ynx8 IiIpO3ZhciBlPWFiKCksZj1hP2UuX3dlZWsuZG93OjA7aWYobnVsbCE9Yyly ZXR1cm4gTWMoYiwoYytmKSU3LGQsImRheSIpO3ZhciBnLGg9W107Zm9yKGc9 MDs3Pmc7ZysrKWhbZ109TWMoYiwoZytmKSU3LGQsImRheSIpO3JldHVybiBo fWZ1bmN0aW9uIFBjKGEsYil7cmV0dXJuIE5jKGEsYiwibW9udGhzIil9ZnVu Y3Rpb24gUWMoYSxiKXtyZXR1cm4gTmMoYSxiLCJtb250aHNTaG9ydCIpfWZ1 bmN0aW9uIFJjKGEsYixjKXtyZXR1cm4gT2MoYSxiLGMsIndlZWtkYXlzIil9 ZnVuY3Rpb24gU2MoYSxiLGMpe3JldHVybiBPYyhhLGIsYywid2Vla2RheXNT aG9ydCIpfWZ1bmN0aW9uIFRjKGEsYixjKXtyZXR1cm4gT2MoYSxiLGMsIndl ZWtkYXlzTWluIil9ZnVuY3Rpb24gVWMoKXt2YXIgYT10aGlzLl9kYXRhO3Jl dHVybiB0aGlzLl9taWxsaXNlY29uZHM9U2YodGhpcy5fbWlsbGlzZWNvbmRz KSx0aGlzLl9kYXlzPVNmKHRoaXMuX2RheXMpLHRoaXMuX21vbnRocz1TZih0 aGlzLl9tb250aHMpLGEubWlsbGlzZWNvbmRzPVNmKGEubWlsbGlzZWNvbmRz KSxhLnNlY29uZHM9U2YoYS5zZWNvbmRzKSxhLm1pbnV0ZXM9U2YoYS5taW51 dGVzKSxhLmhvdXJzPVNmKGEuaG91cnMpLGEubW9udGhzPVNmKGEubW9udGhz KSxhLnllYXJzPVNmKGEueWVhcnMpLHRoaXN9ZnVuY3Rpb24gVmMoYSxiLGMs ZCl7dmFyIGU9TmIoYixjKTtyZXR1cm4gYS5fbWlsbGlzZWNvbmRzKz1kKmUu X21pbGxpc2Vjb25kcyxhLl9kYXlzKz1kKmUuX2RheXMsYS5fbW9udGhzKz1k KmUuX21vbnRocyxhLl9idWJibGUoKX0KKy8vIHN1cHBvcnRzIG9ubHkgMi4w LXN0eWxlIGFkZCgxLCAncycpIG9yIGFkZChkdXJhdGlvbikKK2Z1bmN0aW9u IFdjKGEsYil7cmV0dXJuIFZjKHRoaXMsYSxiLDEpfQorLy8gc3VwcG9ydHMg b25seSAyLjAtc3R5bGUgc3VidHJhY3QoMSwgJ3MnKSBvciBzdWJ0cmFjdChk dXJhdGlvbikKK2Z1bmN0aW9uIFhjKGEsYil7cmV0dXJuIFZjKHRoaXMsYSxi LC0xKX1mdW5jdGlvbiBZYyhhKXtyZXR1cm4gMD5hP01hdGguZmxvb3IoYSk6 TWF0aC5jZWlsKGEpfWZ1bmN0aW9uIFpjKCl7dmFyIGEsYixjLGQsZSxmPXRo aXMuX21pbGxpc2Vjb25kcyxnPXRoaXMuX2RheXMsaD10aGlzLl9tb250aHMs aT10aGlzLl9kYXRhOworLy8gaWYgd2UgaGF2ZSBhIG1peCBvZiBwb3NpdGl2 ZSBhbmQgbmVnYXRpdmUgdmFsdWVzLCBidWJibGUgZG93biBmaXJzdAorLy8g Y2hlY2s6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L2lzc3Vl cy8yMTY2CisvLyBUaGUgZm9sbG93aW5nIGNvZGUgYnViYmxlcyB1cCB2YWx1 ZXMsIHNlZSB0aGUgdGVzdHMgZm9yCisvLyBleGFtcGxlcyBvZiB3aGF0IHRo YXQgbWVhbnMuCisvLyBjb252ZXJ0IGRheXMgdG8gbW9udGhzCisvLyAxMiBt b250aHMgLT4gMSB5ZWFyCityZXR1cm4gZj49MCYmZz49MCYmaD49MHx8MD49 ZiYmMD49ZyYmMD49aHx8KGYrPTg2NGU1KlljKF9jKGgpK2cpLGc9MCxoPTAp LGkubWlsbGlzZWNvbmRzPWYlMWUzLGE9cyhmLzFlMyksaS5zZWNvbmRzPWEl NjAsYj1zKGEvNjApLGkubWludXRlcz1iJTYwLGM9cyhiLzYwKSxpLmhvdXJz PWMlMjQsZys9cyhjLzI0KSxlPXMoJGMoZykpLGgrPWUsZy09WWMoX2MoZSkp LGQ9cyhoLzEyKSxoJT0xMixpLmRheXM9ZyxpLm1vbnRocz1oLGkueWVhcnM9 ZCx0aGlzfWZ1bmN0aW9uICRjKGEpeworLy8gNDAwIHllYXJzIGhhdmUgMTQ2 MDk3IGRheXMgKHRha2luZyBpbnRvIGFjY291bnQgbGVhcCB5ZWFyIHJ1bGVz KQorLy8gNDAwIHllYXJzIGhhdmUgMTIgbW9udGhzID09PSA0ODAwCityZXR1 cm4gNDgwMCphLzE0NjA5N31mdW5jdGlvbiBfYyhhKXsKKy8vIHRoZSByZXZl cnNlIG9mIGRheXNUb01vbnRocworcmV0dXJuIDE0NjA5NyphLzQ4MDB9ZnVu Y3Rpb24gYWQoYSl7dmFyIGIsYyxkPXRoaXMuX21pbGxpc2Vjb25kcztpZihh PUooYSksIm1vbnRoIj09PWF8fCJ5ZWFyIj09PWEpcmV0dXJuIGI9dGhpcy5f ZGF5cytkLzg2NGU1LGM9dGhpcy5fbW9udGhzKyRjKGIpLCJtb250aCI9PT1h P2M6Yy8xMjtzd2l0Y2goYj10aGlzLl9kYXlzK01hdGgucm91bmQoX2ModGhp cy5fbW9udGhzKSksYSl7Y2FzZSJ3ZWVrIjpyZXR1cm4gYi83K2QvNjA0OGU1 O2Nhc2UiZGF5IjpyZXR1cm4gYitkLzg2NGU1O2Nhc2UiaG91ciI6cmV0dXJu IDI0KmIrZC8zNmU1O2Nhc2UibWludXRlIjpyZXR1cm4gMTQ0MCpiK2QvNmU0 O2Nhc2Uic2Vjb25kIjpyZXR1cm4gODY0MDAqYitkLzFlMzsKKy8vIE1hdGgu Zmxvb3IgcHJldmVudHMgZmxvYXRpbmcgcG9pbnQgbWF0aCBlcnJvcnMgaGVy ZQorY2FzZSJtaWxsaXNlY29uZCI6cmV0dXJuIE1hdGguZmxvb3IoODY0ZTUq YikrZDtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biB1bml0ICIr YSl9fQorLy8gVE9ETzogVXNlIHRoaXMuYXMoJ21zJyk/CitmdW5jdGlvbiBi ZCgpe3JldHVybiB0aGlzLl9taWxsaXNlY29uZHMrODY0ZTUqdGhpcy5fZGF5 cyt0aGlzLl9tb250aHMlMTIqMjU5MmU2KzMxNTM2ZTYqdCh0aGlzLl9tb250 aHMvMTIpfWZ1bmN0aW9uIGNkKGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVy biB0aGlzLmFzKGEpfX1mdW5jdGlvbiBkZChhKXtyZXR1cm4gYT1KKGEpLHRo aXNbYSsicyJdKCl9ZnVuY3Rpb24gZWQoYSl7cmV0dXJuIGZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuX2RhdGFbYV19fWZ1bmN0aW9uIGZkKCl7cmV0dXJuIHMo dGhpcy5kYXlzKCkvNyl9CisvLyBoZWxwZXIgZnVuY3Rpb24gZm9yIG1vbWVu dC5mbi5mcm9tLCBtb21lbnQuZm4uZnJvbU5vdywgYW5kIG1vbWVudC5kdXJh dGlvbi5mbi5odW1hbml6ZQorZnVuY3Rpb24gZ2QoYSxiLGMsZCxlKXtyZXR1 cm4gZS5yZWxhdGl2ZVRpbWUoYnx8MSwhIWMsYSxkKX1mdW5jdGlvbiBoZChh LGIsYyl7dmFyIGQ9TmIoYSkuYWJzKCksZT1nZyhkLmFzKCJzIikpLGY9Z2co ZC5hcygibSIpKSxnPWdnKGQuYXMoImgiKSksaD1nZyhkLmFzKCJkIikpLGk9 Z2coZC5hcygiTSIpKSxqPWdnKGQuYXMoInkiKSksaz1lPGhnLnMmJlsicyIs ZV18fDE+PWYmJlsibSJdfHxmPGhnLm0mJlsibW0iLGZdfHwxPj1nJiZbImgi XXx8ZzxoZy5oJiZbImhoIixnXXx8MT49aCYmWyJkIl18fGg8aGcuZCYmWyJk ZCIsaF18fDE+PWkmJlsiTSJdfHxpPGhnLk0mJlsiTU0iLGldfHwxPj1qJiZb InkiXXx8WyJ5eSIsal07cmV0dXJuIGtbMl09YixrWzNdPSthPjAsa1s0XT1j LGdkLmFwcGx5KG51bGwsayl9CisvLyBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5 b3UgdG8gc2V0IHRoZSByb3VuZGluZyBmdW5jdGlvbiBmb3IgcmVsYXRpdmUg dGltZSBzdHJpbmdzCitmdW5jdGlvbiBpZChhKXtyZXR1cm4gdm9pZCAwPT09 YT9nZzoiZnVuY3Rpb24iPT10eXBlb2YgYT8oZ2c9YSwhMCk6ITF9CisvLyBU aGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gc2V0IGEgdGhyZXNob2xkIGZv ciByZWxhdGl2ZSB0aW1lIHN0cmluZ3MKK2Z1bmN0aW9uIGpkKGEsYil7cmV0 dXJuIHZvaWQgMD09PWhnW2FdPyExOnZvaWQgMD09PWI/aGdbYV06KGhnW2Fd PWIsITApfWZ1bmN0aW9uIGtkKGEpe3ZhciBiPXRoaXMubG9jYWxlRGF0YSgp LGM9aGQodGhpcywhYSxiKTtyZXR1cm4gYSYmKGM9Yi5wYXN0RnV0dXJlKCt0 aGlzLGMpKSxiLnBvc3Rmb3JtYXQoYyl9ZnVuY3Rpb24gbGQoKXsKKy8vIGZv ciBJU08gc3RyaW5ncyB3ZSBkbyBub3QgdXNlIHRoZSBub3JtYWwgYnViYmxp bmcgcnVsZXM6CisvLyAgKiBtaWxsaXNlY29uZHMgYnViYmxlIHVwIHVudGls IHRoZXkgYmVjb21lIGhvdXJzCisvLyAgKiBkYXlzIGRvIG5vdCBidWJibGUg YXQgYWxsCisvLyAgKiBtb250aHMgYnViYmxlIHVwIHVudGlsIHRoZXkgYmVj b21lIHllYXJzCisvLyBUaGlzIGlzIGJlY2F1c2UgdGhlcmUgaXMgbm8gY29u dGV4dC1mcmVlIGNvbnZlcnNpb24gYmV0d2VlbiBob3VycyBhbmQgZGF5cwor Ly8gKHRoaW5rIG9mIGNsb2NrIGNoYW5nZXMpCisvLyBhbmQgYWxzbyBub3Qg YmV0d2VlbiBkYXlzIGFuZCBtb250aHMgKDI4LTMxIGRheXMgcGVyIG1vbnRo KQordmFyIGEsYixjLGQ9aWcodGhpcy5fbWlsbGlzZWNvbmRzKS8xZTMsZT1p Zyh0aGlzLl9kYXlzKSxmPWlnKHRoaXMuX21vbnRocyk7YT1zKGQvNjApLGI9 cyhhLzYwKSxkJT02MCxhJT02MCxjPXMoZi8xMiksZiU9MTI7CisvLyBpbnNw aXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vZG9yZGlsbGUvbW9tZW50LWlz b2R1cmF0aW9uL2Jsb2IvbWFzdGVyL21vbWVudC5pc29kdXJhdGlvbi5qcwor dmFyIGc9YyxoPWYsaT1lLGo9YixrPWEsbD1kLG09dGhpcy5hc1NlY29uZHMo KTtyZXR1cm4gbT8oMD5tPyItIjoiIikrIlAiKyhnP2crIlkiOiIiKSsoaD9o KyJNIjoiIikrKGk/aSsiRCI6IiIpKyhqfHxrfHxsPyJUIjoiIikrKGo/aisi SCI6IiIpKyhrP2srIk0iOiIiKSsobD9sKyJTIjoiIik6IlAwRCJ9ZnVuY3Rp b24gbWQoYSxiKXt2YXIgYz1hLnNwbGl0KCJfIik7cmV0dXJuIGIlMTA9PT0x JiZiJTEwMCE9PTExP2NbMF06YiUxMD49MiYmND49YiUxMCYmKDEwPmIlMTAw fHxiJTEwMD49MjApP2NbMV06Y1syXX1mdW5jdGlvbiBuZChhLGIsYyl7dmFy IGQ9e21tOmI/ItGF0LLRltC70ZbQvdCwX9GF0LLRltC70ZbQvdGLX9GF0LLR ltC70ZbQvSI6ItGF0LLRltC70ZbQvdGDX9GF0LLRltC70ZbQvdGLX9GF0LLR ltC70ZbQvSIsaGg6Yj8i0LPQsNC00LfRltC90LBf0LPQsNC00LfRltC90Ytf 0LPQsNC00LfRltC9Ijoi0LPQsNC00LfRltC90YNf0LPQsNC00LfRltC90Ytf 0LPQsNC00LfRltC9IixkZDoi0LTQt9C10L3RjF/QtNC90ZZf0LTQt9GR0L0i LE1NOiLQvNC10YHRj9GGX9C80LXRgdGP0YbRi1/QvNC10YHRj9GG0LDRniIs eXk6ItCz0L7QtF/Qs9Cw0LTRi1/Qs9Cw0LTQvtGeIn07cmV0dXJuIm0iPT09 Yz9iPyLRhdCy0ZbQu9GW0L3QsCI6ItGF0LLRltC70ZbQvdGDIjoiaCI9PT1j P2I/ItCz0LDQtNC30ZbQvdCwIjoi0LPQsNC00LfRltC90YMiOmErIiAiK21k KGRbY10sK2EpfWZ1bmN0aW9uIG9kKGEsYixjKXt2YXIgZD17bW06Im11bnV0 ZW5uIixNTToibWl6IixkZDoiZGV2ZXpoIn07cmV0dXJuIGErIiAiK3JkKGRb Y10sYSl9ZnVuY3Rpb24gcGQoYSl7c3dpdGNoKHFkKGEpKXtjYXNlIDE6Y2Fz ZSAzOmNhc2UgNDpjYXNlIDU6Y2FzZSA5OnJldHVybiBhKyIgYmxvYXoiO2Rl ZmF1bHQ6cmV0dXJuIGErIiB2bG9heiJ9fWZ1bmN0aW9uIHFkKGEpe3JldHVy biBhPjk/cWQoYSUxMCk6YX1mdW5jdGlvbiByZChhLGIpe3JldHVybiAyPT09 Yj9zZChhKTphfWZ1bmN0aW9uIHNkKGEpe3ZhciBiPXttOiJ2IixiOiJ2Iixk OiJ6In07cmV0dXJuIHZvaWQgMD09PWJbYS5jaGFyQXQoMCldP2E6YlthLmNo YXJBdCgwKV0rYS5zdWJzdHJpbmcoMSl9ZnVuY3Rpb24gdGQoYSxiLGMpe3Zh ciBkPWErIiAiO3N3aXRjaChjKXtjYXNlIm0iOnJldHVybiBiPyJqZWRuYSBt aW51dGEiOiJqZWRuZSBtaW51dGUiO2Nhc2UibW0iOnJldHVybiBkKz0xPT09 YT8ibWludXRhIjoyPT09YXx8Mz09PWF8fDQ9PT1hPyJtaW51dGUiOiJtaW51 dGEiO2Nhc2UiaCI6cmV0dXJuIGI/ImplZGFuIHNhdCI6ImplZG5vZyBzYXRh IjtjYXNlImhoIjpyZXR1cm4gZCs9MT09PWE/InNhdCI6Mj09PWF8fDM9PT1h fHw0PT09YT8ic2F0YSI6InNhdGkiO2Nhc2UiZGQiOnJldHVybiBkKz0xPT09 YT8iZGFuIjoiZGFuYSI7Y2FzZSJNTSI6cmV0dXJuIGQrPTE9PT1hPyJtamVz ZWMiOjI9PT1hfHwzPT09YXx8ND09PWE/Im1qZXNlY2EiOiJtamVzZWNpIjtj YXNlInl5IjpyZXR1cm4gZCs9MT09PWE/ImdvZGluYSI6Mj09PWF8fDM9PT1h fHw0PT09YT8iZ29kaW5lIjoiZ29kaW5hIn19ZnVuY3Rpb24gdWQoYSl7cmV0 dXJuIGE+MSYmNT5hJiYxIT09fn4oYS8xMCl9ZnVuY3Rpb24gdmQoYSxiLGMs ZCl7dmFyIGU9YSsiICI7c3dpdGNoKGMpe2Nhc2UicyI6Ly8gYSBmZXcgc2Vj b25kcyAvIGluIGEgZmV3IHNlY29uZHMgLyBhIGZldyBzZWNvbmRzIGFnbwor cmV0dXJuIGJ8fGQ/InDDoXIgc2VrdW5kIjoicMOhciBzZWt1bmRhbWkiO2Nh c2UibSI6Ly8gYSBtaW51dGUgLyBpbiBhIG1pbnV0ZSAvIGEgbWludXRlIGFn bworcmV0dXJuIGI/Im1pbnV0YSI6ZD8ibWludXR1IjoibWludXRvdSI7Y2Fz ZSJtbSI6Ly8gOSBtaW51dGVzIC8gaW4gOSBtaW51dGVzIC8gOSBtaW51dGVz IGFnbworLy8gOSBtaW51dGVzIC8gaW4gOSBtaW51dGVzIC8gOSBtaW51dGVz IGFnbworcmV0dXJuIGJ8fGQ/ZSsodWQoYSk/Im1pbnV0eSI6Im1pbnV0Iik6 ZSsibWludXRhbWkiO2JyZWFrO2Nhc2UiaCI6Ly8gYW4gaG91ciAvIGluIGFu IGhvdXIgLyBhbiBob3VyIGFnbworcmV0dXJuIGI/ImhvZGluYSI6ZD8iaG9k aW51IjoiaG9kaW5vdSI7Y2FzZSJoaCI6Ly8gOSBob3VycyAvIGluIDkgaG91 cnMgLyA5IGhvdXJzIGFnbworLy8gOSBob3VycyAvIGluIDkgaG91cnMgLyA5 IGhvdXJzIGFnbworcmV0dXJuIGJ8fGQ/ZSsodWQoYSk/ImhvZGlueSI6Imhv ZGluIik6ZSsiaG9kaW5hbWkiO2JyZWFrO2Nhc2UiZCI6Ly8gYSBkYXkgLyBp biBhIGRheSAvIGEgZGF5IGFnbworcmV0dXJuIGJ8fGQ/ImRlbiI6ImRuZW0i O2Nhc2UiZGQiOi8vIDkgZGF5cyAvIGluIDkgZGF5cyAvIDkgZGF5cyBhZ28K Ky8vIDkgZGF5cyAvIGluIDkgZGF5cyAvIDkgZGF5cyBhZ28KK3JldHVybiBi fHxkP2UrKHVkKGEpPyJkbnkiOiJkbsOtIik6ZSsiZG55IjticmVhaztjYXNl Ik0iOi8vIGEgbW9udGggLyBpbiBhIG1vbnRoIC8gYSBtb250aCBhZ28KK3Jl dHVybiBifHxkPyJtxJtzw61jIjoibcSbc8OtY2VtIjtjYXNlIk1NIjovLyA5 IG1vbnRocyAvIGluIDkgbW9udGhzIC8gOSBtb250aHMgYWdvCisvLyA5IG1v bnRocyAvIGluIDkgbW9udGhzIC8gOSBtb250aHMgYWdvCityZXR1cm4gYnx8 ZD9lKyh1ZChhKT8ibcSbc8OtY2UiOiJtxJtzw61jxa8iKTplKyJtxJtzw61j aSI7YnJlYWs7Y2FzZSJ5IjovLyBhIHllYXIgLyBpbiBhIHllYXIgLyBhIHll YXIgYWdvCityZXR1cm4gYnx8ZD8icm9rIjoicm9rZW0iO2Nhc2UieXkiOi8v IDkgeWVhcnMgLyBpbiA5IHllYXJzIC8gOSB5ZWFycyBhZ28KKy8vIDkgeWVh cnMgLyBpbiA5IHllYXJzIC8gOSB5ZWFycyBhZ28KK3JldHVybiBifHxkP2Ur KHVkKGEpPyJyb2t5IjoibGV0Iik6ZSsibGV0eSJ9fWZ1bmN0aW9uIHdkKGEs YixjLGQpe3ZhciBlPXttOlsiZWluZSBNaW51dGUiLCJlaW5lciBNaW51dGUi XSxoOlsiZWluZSBTdHVuZGUiLCJlaW5lciBTdHVuZGUiXSxkOlsiZWluIFRh ZyIsImVpbmVtIFRhZyJdLGRkOlthKyIgVGFnZSIsYSsiIFRhZ2VuIl0sTTpb ImVpbiBNb25hdCIsImVpbmVtIE1vbmF0Il0sTU06W2ErIiBNb25hdGUiLGEr IiBNb25hdGVuIl0seTpbImVpbiBKYWhyIiwiZWluZW0gSmFociJdLHl5Olth KyIgSmFocmUiLGErIiBKYWhyZW4iXX07cmV0dXJuIGI/ZVtjXVswXTplW2Nd WzFdfWZ1bmN0aW9uIHhkKGEsYixjLGQpe3ZhciBlPXttOlsiZWluZSBNaW51 dGUiLCJlaW5lciBNaW51dGUiXSxoOlsiZWluZSBTdHVuZGUiLCJlaW5lciBT dHVuZGUiXSxkOlsiZWluIFRhZyIsImVpbmVtIFRhZyJdLGRkOlthKyIgVGFn ZSIsYSsiIFRhZ2VuIl0sTTpbImVpbiBNb25hdCIsImVpbmVtIE1vbmF0Il0s TU06W2ErIiBNb25hdGUiLGErIiBNb25hdGVuIl0seTpbImVpbiBKYWhyIiwi ZWluZW0gSmFociJdLHl5OlthKyIgSmFocmUiLGErIiBKYWhyZW4iXX07cmV0 dXJuIGI/ZVtjXVswXTplW2NdWzFdfWZ1bmN0aW9uIHlkKGEsYixjLGQpe3Zh ciBlPXtzOlsibcO1bmUgc2VrdW5kaSIsIm3DtW5pIHNla3VuZCIsInBhYXIg c2VrdW5kaXQiXSxtOlsiw7xoZSBtaW51dGkiLCLDvGtzIG1pbnV0Il0sbW06 W2ErIiBtaW51dGkiLGErIiBtaW51dGl0Il0saDpbIsO8aGUgdHVubmkiLCJ0 dW5kIGFlZ2EiLCLDvGtzIHR1bmQiXSxoaDpbYSsiIHR1bm5pIixhKyIgdHVu ZGkiXSxkOlsiw7xoZSBww6RldmEiLCLDvGtzIHDDpGV2Il0sTTpbImt1dSBh amEiLCJrdXUgYWVnYSIsIsO8a3Mga3V1Il0sTU06W2ErIiBrdXUiLGErIiBr dXVkIl0seTpbIsO8aGUgYWFzdGEiLCJhYXN0YSIsIsO8a3MgYWFzdGEiXSx5 eTpbYSsiIGFhc3RhIixhKyIgYWFzdGF0Il19O3JldHVybiBiP2VbY11bMl0/ ZVtjXVsyXTplW2NdWzFdOmQ/ZVtjXVswXTplW2NdWzFdfWZ1bmN0aW9uIHpk KGEsYixjLGQpe3ZhciBlPSIiO3N3aXRjaChjKXtjYXNlInMiOnJldHVybiBk PyJtdXV0YW1hbiBzZWt1bm5pbiI6Im11dXRhbWEgc2VrdW50aSI7Y2FzZSJt IjpyZXR1cm4gZD8ibWludXV0aW4iOiJtaW51dXR0aSI7Y2FzZSJtbSI6ZT1k PyJtaW51dXRpbiI6Im1pbnV1dHRpYSI7YnJlYWs7Y2FzZSJoIjpyZXR1cm4g ZD8idHVubmluIjoidHVudGkiO2Nhc2UiaGgiOmU9ZD8idHVubmluIjoidHVu dGlhIjticmVhaztjYXNlImQiOnJldHVybiBkPyJww6RpdsOkbiI6InDDpGl2 w6QiO2Nhc2UiZGQiOmU9ZD8icMOkaXbDpG4iOiJww6RpdsOkw6QiO2JyZWFr O2Nhc2UiTSI6cmV0dXJuIGQ/Imt1dWthdWRlbiI6Imt1dWthdXNpIjtjYXNl Ik1NIjplPWQ/Imt1dWthdWRlbiI6Imt1dWthdXR0YSI7YnJlYWs7Y2FzZSJ5 IjpyZXR1cm4gZD8idnVvZGVuIjoidnVvc2kiO2Nhc2UieXkiOmU9ZD8idnVv ZGVuIjoidnVvdHRhIn1yZXR1cm4gZT1BZChhLGQpKyIgIitlfWZ1bmN0aW9u IEFkKGEsYil7cmV0dXJuIDEwPmE/Yj9PZ1thXTpOZ1thXTphfWZ1bmN0aW9u IEJkKGEsYixjKXt2YXIgZD1hKyIgIjtzd2l0Y2goYyl7Y2FzZSJtIjpyZXR1 cm4gYj8iamVkbmEgbWludXRhIjoiamVkbmUgbWludXRlIjtjYXNlIm1tIjpy ZXR1cm4gZCs9MT09PWE/Im1pbnV0YSI6Mj09PWF8fDM9PT1hfHw0PT09YT8i bWludXRlIjoibWludXRhIjtjYXNlImgiOnJldHVybiBiPyJqZWRhbiBzYXQi OiJqZWRub2cgc2F0YSI7Y2FzZSJoaCI6cmV0dXJuIGQrPTE9PT1hPyJzYXQi OjI9PT1hfHwzPT09YXx8ND09PWE/InNhdGEiOiJzYXRpIjtjYXNlImRkIjpy ZXR1cm4gZCs9MT09PWE/ImRhbiI6ImRhbmEiO2Nhc2UiTU0iOnJldHVybiBk Kz0xPT09YT8ibWplc2VjIjoyPT09YXx8Mz09PWF8fDQ9PT1hPyJtamVzZWNh IjoibWplc2VjaSI7Y2FzZSJ5eSI6cmV0dXJuIGQrPTE9PT1hPyJnb2RpbmEi OjI9PT1hfHwzPT09YXx8ND09PWE/ImdvZGluZSI6ImdvZGluYSJ9fWZ1bmN0 aW9uIENkKGEsYixjLGQpe3ZhciBlPWE7c3dpdGNoKGMpe2Nhc2UicyI6cmV0 dXJuIGR8fGI/Im7DqWjDoW55IG3DoXNvZHBlcmMiOiJuw6low6FueSBtw6Fz b2RwZXJjZSI7Y2FzZSJtIjpyZXR1cm4iZWd5IisoZHx8Yj8iIHBlcmMiOiIg cGVyY2UiKTtjYXNlIm1tIjpyZXR1cm4gZSsoZHx8Yj8iIHBlcmMiOiIgcGVy Y2UiKTtjYXNlImgiOnJldHVybiJlZ3kiKyhkfHxiPyIgw7NyYSI6IiDDs3LD oWphIik7Y2FzZSJoaCI6cmV0dXJuIGUrKGR8fGI/IiDDs3JhIjoiIMOzcsOh amEiKTtjYXNlImQiOnJldHVybiJlZ3kiKyhkfHxiPyIgbmFwIjoiIG5hcGph Iik7Y2FzZSJkZCI6cmV0dXJuIGUrKGR8fGI/IiBuYXAiOiIgbmFwamEiKTtj YXNlIk0iOnJldHVybiJlZ3kiKyhkfHxiPyIgaMOzbmFwIjoiIGjDs25hcGph Iik7Y2FzZSJNTSI6cmV0dXJuIGUrKGR8fGI/IiBow7NuYXAiOiIgaMOzbmFw amEiKTtjYXNlInkiOnJldHVybiJlZ3kiKyhkfHxiPyIgw6l2IjoiIMOpdmUi KTtjYXNlInl5IjpyZXR1cm4gZSsoZHx8Yj8iIMOpdiI6IiDDqXZlIil9cmV0 dXJuIiJ9ZnVuY3Rpb24gRGQoYSl7cmV0dXJuKGE/IiI6Ilttw7psdF0gIikr IlsiK1lnW3RoaXMuZGF5KCldKyJdIExUWy1rb3JdIn1mdW5jdGlvbiBFZChh KXtyZXR1cm4gYSUxMDA9PT0xMT8hMDphJTEwIT09MX1mdW5jdGlvbiBGZChh LGIsYyxkKXt2YXIgZT1hKyIgIjtzd2l0Y2goYyl7Y2FzZSJzIjpyZXR1cm4g Ynx8ZD8ibm9ra3JhciBzZWvDum5kdXIiOiJub2trcnVtIHNla8O6bmR1bSI7 Y2FzZSJtIjpyZXR1cm4gYj8ibcOtbsO6dGEiOiJtw61uw7p0dSI7Y2FzZSJt bSI6cmV0dXJuIEVkKGEpP2UrKGJ8fGQ/Im3DrW7DunR1ciI6Im3DrW7DunR1 bSIpOmI/ZSsibcOtbsO6dGEiOmUrIm3DrW7DunR1IjtjYXNlImhoIjpyZXR1 cm4gRWQoYSk/ZSsoYnx8ZD8ia2x1a2t1c3R1bmRpciI6ImtsdWtrdXN0dW5k dW0iKTplKyJrbHVra3VzdHVuZCI7Y2FzZSJkIjpyZXR1cm4gYj8iZGFndXIi OmQ/ImRhZyI6ImRlZ2kiO2Nhc2UiZGQiOnJldHVybiBFZChhKT9iP2UrImRh Z2FyIjplKyhkPyJkYWdhIjoiZMO2Z3VtIik6Yj9lKyJkYWd1ciI6ZSsoZD8i ZGFnIjoiZGVnaSIpO2Nhc2UiTSI6cmV0dXJuIGI/Im3DoW51w7B1ciI6ZD8i bcOhbnXDsCI6Im3DoW51w7BpIjtjYXNlIk1NIjpyZXR1cm4gRWQoYSk/Yj9l KyJtw6FudcOwaXIiOmUrKGQ/Im3DoW51w7BpIjoibcOhbnXDsHVtIik6Yj9l KyJtw6FudcOwdXIiOmUrKGQ/Im3DoW51w7AiOiJtw6FudcOwaSIpO2Nhc2Ui eSI6cmV0dXJuIGJ8fGQ/IsOhciI6IsOhcmkiO2Nhc2UieXkiOnJldHVybiBF ZChhKT9lKyhifHxkPyLDoXIiOiLDoXJ1bSIpOmUrKGJ8fGQ/IsOhciI6IsOh cmkiKX19ZnVuY3Rpb24gR2QoYSxiLGMsZCl7dmFyIGU9e206WyJlbmcgTWlu dXR0IiwiZW5nZXIgTWludXR0Il0saDpbImVuZyBTdG9ubiIsImVuZ2VyIFN0 b25uIl0sZDpbImVlbiBEYWciLCJlbmdlbSBEYWciXSxNOlsiZWUgTW91bnQi LCJlbmdlbSBNb3VudCJdLHk6WyJlZSBKb2VyIiwiZW5nZW0gSm9lciJdfTty ZXR1cm4gYj9lW2NdWzBdOmVbY11bMV19ZnVuY3Rpb24gSGQoYSl7dmFyIGI9 YS5zdWJzdHIoMCxhLmluZGV4T2YoIiAiKSk7cmV0dXJuIEpkKGIpPyJhICIr YToiYW4gIithfWZ1bmN0aW9uIElkKGEpe3ZhciBiPWEuc3Vic3RyKDAsYS5p bmRleE9mKCIgIikpO3JldHVybiBKZChiKT8idmlydSAiK2E6InZpcnVuICIr YX0vKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHdvcmQgYmVmb3Jl IHRoZSBnaXZlbiBudW1iZXIgbG9zZXMgdGhlICctbicgZW5kaW5nLgorICAg ICAqIGUuZy4gJ2FuIDEwIERlZWcnIGJ1dCAnYSA1IERlZWcnCisgICAgICoK KyAgICAgKiBAcGFyYW0gbnVtYmVyIHtpbnRlZ2VyfQorICAgICAqIEByZXR1 cm5zIHtib29sZWFufQorICAgICAqLworZnVuY3Rpb24gSmQoYSl7aWYoYT1w YXJzZUludChhLDEwKSxpc05hTihhKSlyZXR1cm4hMTtpZigwPmEpCisvLyBO ZWdhdGl2ZSBOdW1iZXIgLS0+IGFsd2F5cyB0cnVlCityZXR1cm4hMDtpZigx MD5hKQorLy8gT25seSAxIGRpZ2l0CityZXR1cm4gYT49NCYmNz49YTtpZigx MDA+YSl7CisvLyAyIGRpZ2l0cwordmFyIGI9YSUxMCxjPWEvMTA7cmV0dXJu IEpkKDA9PT1iP2M6Yil9aWYoMWU0PmEpeworLy8gMyBvciA0IGRpZ2l0cyAt LT4gcmVjdXJzaXZlbHkgY2hlY2sgZmlyc3QgZGlnaXQKK2Zvcig7YT49MTA7 KWEvPTEwO3JldHVybiBKZChhKX0KKy8vIEFueXRoaW5nIGxhcmdlciB0aGFu IDQgZGlnaXRzOiByZWN1cnNpdmVseSBjaGVjayBmaXJzdCBuLTMgZGlnaXRz CityZXR1cm4gYS89MWUzLEpkKGEpfWZ1bmN0aW9uIEtkKGEsYixjLGQpe3Jl dHVybiBiPyJrZWxpb3Mgc2VrdW5kxJdzIjpkPyJrZWxpxbMgc2VrdW5kxb5p xbMiOiJrZWxpYXMgc2VrdW5kZXMifWZ1bmN0aW9uIExkKGEsYixjLGQpe3Jl dHVybiBiP05kKGMpWzBdOmQ/TmQoYylbMV06TmQoYylbMl19ZnVuY3Rpb24g TWQoYSl7cmV0dXJuIGElMTA9PT0wfHxhPjEwJiYyMD5hfWZ1bmN0aW9uIE5k KGEpe3JldHVybiBfZ1thXS5zcGxpdCgiXyIpfWZ1bmN0aW9uIE9kKGEsYixj LGQpe3ZhciBlPWErIiAiO3JldHVybiAxPT09YT9lK0xkKGEsYixjWzBdLGQp OmI/ZSsoTWQoYSk/TmQoYylbMV06TmQoYylbMF0pOmQ/ZStOZChjKVsxXTpl KyhNZChhKT9OZChjKVsxXTpOZChjKVsyXSl9LyoqCisgICAgICogQHBhcmFt IHdpdGhvdXRTdWZmaXggYm9vbGVhbiB0cnVlID0gYSBsZW5ndGggb2YgdGlt ZTsgZmFsc2UgPSBiZWZvcmUvYWZ0ZXIgYSBwZXJpb2Qgb2YgdGltZS4KKyAg ICAgKi8KK2Z1bmN0aW9uIFBkKGEsYixjKXtyZXR1cm4gYz9iJTEwPT09MSYm YiUxMDAhPT0xMT9hWzJdOmFbM106YiUxMD09PTEmJmIlMTAwIT09MTE/YVsw XTphWzFdfWZ1bmN0aW9uIFFkKGEsYixjKXtyZXR1cm4gYSsiICIrUGQoYWhb Y10sYSxiKX1mdW5jdGlvbiBSZChhLGIsYyl7cmV0dXJuIFBkKGFoW2NdLGEs Yil9ZnVuY3Rpb24gU2QoYSxiKXtyZXR1cm4gYj8iZGHFvmFzIHNla3VuZGVz IjoiZGHFvsSBbSBzZWt1bmTEk20ifWZ1bmN0aW9uIFRkKGEsYixjLGQpe3Zh ciBlPSIiO2lmKGIpc3dpdGNoKGMpe2Nhc2UicyI6ZT0i4KSV4KS+4KS54KWA IOCkuOClh+CkleCkguCkpiI7YnJlYWs7Y2FzZSJtIjplPSLgpI/gpJUg4KSu 4KS/4KSo4KS/4KSfIjticmVhaztjYXNlIm1tIjplPSIlZCDgpK7gpL/gpKjg pL/gpJ/gpYciO2JyZWFrO2Nhc2UiaCI6ZT0i4KSP4KSVIOCkpOCkvuCkuCI7 YnJlYWs7Y2FzZSJoaCI6ZT0iJWQg4KSk4KS+4KS4IjticmVhaztjYXNlImQi OmU9IuCkj+CklSDgpKbgpL/gpLXgpLgiO2JyZWFrO2Nhc2UiZGQiOmU9IiVk IOCkpuCkv+CkteCkuCI7YnJlYWs7Y2FzZSJNIjplPSLgpI/gpJUg4KSu4KS5 4KS/4KSo4KS+IjticmVhaztjYXNlIk1NIjplPSIlZCDgpK7gpLngpL/gpKjg pYciO2JyZWFrO2Nhc2UieSI6ZT0i4KSP4KSVIOCkteCksOCljeCktyI7YnJl YWs7Y2FzZSJ5eSI6ZT0iJWQg4KS14KSw4KWN4KS34KWHIn1lbHNlIHN3aXRj aChjKXtjYXNlInMiOmU9IuCkleCkvuCkueClgCDgpLjgpYfgpJXgpILgpKbg pL7gpIIiO2JyZWFrO2Nhc2UibSI6ZT0i4KSP4KSV4KS+IOCkruCkv+CkqOCk v+Ckn+CkviI7YnJlYWs7Y2FzZSJtbSI6ZT0iJWQg4KSu4KS/4KSo4KS/4KSf 4KS+4KSCIjticmVhaztjYXNlImgiOmU9IuCkj+CkleCkviDgpKTgpL7gpLjg pL4iO2JyZWFrO2Nhc2UiaGgiOmU9IiVkIOCkpOCkvuCkuOCkvuCkgiI7YnJl YWs7Y2FzZSJkIjplPSLgpI/gpJXgpL4g4KSm4KS/4KS14KS44KS+IjticmVh aztjYXNlImRkIjplPSIlZCDgpKbgpL/gpLXgpLjgpL7gpIIiO2JyZWFrO2Nh c2UiTSI6ZT0i4KSP4KSV4KS+IOCkruCkueCkv+CkqOCljeCkr+CkviI7YnJl YWs7Y2FzZSJNTSI6ZT0iJWQg4KSu4KS54KS/4KSo4KWN4KSv4KS+4KSCIjti cmVhaztjYXNlInkiOmU9IuCkj+CkleCkviDgpLXgpLDgpY3gpLfgpL4iO2Jy ZWFrO2Nhc2UieXkiOmU9IiVkIOCkteCksOCljeCkt+CkvuCkgiJ9cmV0dXJu IGUucmVwbGFjZSgvJWQvaSxhKX1mdW5jdGlvbiBVZChhKXtyZXR1cm4gNT5h JTEwJiZhJTEwPjEmJn5+KGEvMTApJTEwIT09MX1mdW5jdGlvbiBWZChhLGIs Yyl7dmFyIGQ9YSsiICI7c3dpdGNoKGMpe2Nhc2UibSI6cmV0dXJuIGI/Im1p bnV0YSI6Im1pbnV0xJkiO2Nhc2UibW0iOnJldHVybiBkKyhVZChhKT8ibWlu dXR5IjoibWludXQiKTtjYXNlImgiOnJldHVybiBiPyJnb2R6aW5hIjoiZ29k emluxJkiO2Nhc2UiaGgiOnJldHVybiBkKyhVZChhKT8iZ29kemlueSI6Imdv ZHppbiIpO2Nhc2UiTU0iOnJldHVybiBkKyhVZChhKT8ibWllc2nEhWNlIjoi bWllc2nEmWN5Iik7Y2FzZSJ5eSI6cmV0dXJuIGQrKFVkKGEpPyJsYXRhIjoi bGF0Iil9fWZ1bmN0aW9uIFdkKGEsYixjKXt2YXIgZD17bW06Im1pbnV0ZSIs aGg6Im9yZSIsZGQ6InppbGUiLE1NOiJsdW5pIix5eToiYW5pIn0sZT0iICI7 cmV0dXJuKGElMTAwPj0yMHx8YT49MTAwJiZhJTEwMD09PTApJiYoZT0iIGRl ICIpLGErZStkW2NdfWZ1bmN0aW9uIFhkKGEsYil7dmFyIGM9YS5zcGxpdCgi XyIpO3JldHVybiBiJTEwPT09MSYmYiUxMDAhPT0xMT9jWzBdOmIlMTA+PTIm JjQ+PWIlMTAmJigxMD5iJTEwMHx8YiUxMDA+PTIwKT9jWzFdOmNbMl19ZnVu Y3Rpb24gWWQoYSxiLGMpe3ZhciBkPXttbTpiPyLQvNC40L3Rg9GC0LBf0LzQ uNC90YPRgtGLX9C80LjQvdGD0YIiOiLQvNC40L3Rg9GC0YNf0LzQuNC90YPR gtGLX9C80LjQvdGD0YIiLGhoOiLRh9Cw0YFf0YfQsNGB0LBf0YfQsNGB0L7Q siIsZGQ6ItC00LXQvdGMX9C00L3Rj1/QtNC90LXQuSIsTU06ItC80LXRgdGP 0YZf0LzQtdGB0Y/RhtCwX9C80LXRgdGP0YbQtdCyIix5eToi0LPQvtC0X9Cz 0L7QtNCwX9C70LXRgiJ9O3JldHVybiJtIj09PWM/Yj8i0LzQuNC90YPRgtCw Ijoi0LzQuNC90YPRgtGDIjphKyIgIitYZChkW2NdLCthKX1mdW5jdGlvbiBa ZChhKXtyZXR1cm4gYT4xJiY1PmF9ZnVuY3Rpb24gJGQoYSxiLGMsZCl7dmFy IGU9YSsiICI7c3dpdGNoKGMpe2Nhc2UicyI6Ly8gYSBmZXcgc2Vjb25kcyAv IGluIGEgZmV3IHNlY29uZHMgLyBhIGZldyBzZWNvbmRzIGFnbworcmV0dXJu IGJ8fGQ/InDDoXIgc2Vrw7puZCI6InDDoXIgc2VrdW5kYW1pIjtjYXNlIm0i Oi8vIGEgbWludXRlIC8gaW4gYSBtaW51dGUgLyBhIG1pbnV0ZSBhZ28KK3Jl dHVybiBiPyJtaW7DunRhIjpkPyJtaW7DunR1IjoibWluw7p0b3UiO2Nhc2Ui bW0iOi8vIDkgbWludXRlcyAvIGluIDkgbWludXRlcyAvIDkgbWludXRlcyBh Z28KKy8vIDkgbWludXRlcyAvIGluIDkgbWludXRlcyAvIDkgbWludXRlcyBh Z28KK3JldHVybiBifHxkP2UrKFpkKGEpPyJtaW7DunR5IjoibWluw7p0Iik6 ZSsibWluw7p0YW1pIjticmVhaztjYXNlImgiOi8vIGFuIGhvdXIgLyBpbiBh biBob3VyIC8gYW4gaG91ciBhZ28KK3JldHVybiBiPyJob2RpbmEiOmQ/Imhv ZGludSI6ImhvZGlub3UiO2Nhc2UiaGgiOi8vIDkgaG91cnMgLyBpbiA5IGhv dXJzIC8gOSBob3VycyBhZ28KKy8vIDkgaG91cnMgLyBpbiA5IGhvdXJzIC8g OSBob3VycyBhZ28KK3JldHVybiBifHxkP2UrKFpkKGEpPyJob2RpbnkiOiJo b2TDrW4iKTplKyJob2RpbmFtaSI7YnJlYWs7Y2FzZSJkIjovLyBhIGRheSAv IGluIGEgZGF5IC8gYSBkYXkgYWdvCityZXR1cm4gYnx8ZD8iZGXFiCI6ImTF iG9tIjtjYXNlImRkIjovLyA5IGRheXMgLyBpbiA5IGRheXMgLyA5IGRheXMg YWdvCisvLyA5IGRheXMgLyBpbiA5IGRheXMgLyA5IGRheXMgYWdvCityZXR1 cm4gYnx8ZD9lKyhaZChhKT8iZG5pIjoiZG7DrSIpOmUrImTFiGFtaSI7YnJl YWs7Y2FzZSJNIjovLyBhIG1vbnRoIC8gaW4gYSBtb250aCAvIGEgbW9udGgg YWdvCityZXR1cm4gYnx8ZD8ibWVzaWFjIjoibWVzaWFjb20iO2Nhc2UiTU0i Oi8vIDkgbW9udGhzIC8gaW4gOSBtb250aHMgLyA5IG1vbnRocyBhZ28KKy8v IDkgbW9udGhzIC8gaW4gOSBtb250aHMgLyA5IG1vbnRocyBhZ28KK3JldHVy biBifHxkP2UrKFpkKGEpPyJtZXNpYWNlIjoibWVzaWFjb3YiKTplKyJtZXNp YWNtaSI7YnJlYWs7Y2FzZSJ5IjovLyBhIHllYXIgLyBpbiBhIHllYXIgLyBh IHllYXIgYWdvCityZXR1cm4gYnx8ZD8icm9rIjoicm9rb20iO2Nhc2UieXki Oi8vIDkgeWVhcnMgLyBpbiA5IHllYXJzIC8gOSB5ZWFycyBhZ28KKy8vIDkg eWVhcnMgLyBpbiA5IHllYXJzIC8gOSB5ZWFycyBhZ28KK3JldHVybiBifHxk P2UrKFpkKGEpPyJyb2t5Ijoicm9rb3YiKTplKyJyb2ttaSJ9fWZ1bmN0aW9u IF9kKGEsYixjLGQpe3ZhciBlPWErIiAiO3N3aXRjaChjKXtjYXNlInMiOnJl dHVybiBifHxkPyJuZWthaiBzZWt1bmQiOiJuZWthaiBzZWt1bmRhbWkiO2Nh c2UibSI6cmV0dXJuIGI/ImVuYSBtaW51dGEiOiJlbm8gbWludXRvIjtjYXNl Im1tIjpyZXR1cm4gZSs9MT09PWE/Yj8ibWludXRhIjoibWludXRvIjoyPT09 YT9ifHxkPyJtaW51dGkiOiJtaW51dGFtYSI6NT5hP2J8fGQ/Im1pbnV0ZSI6 Im1pbnV0YW1pIjpifHxkPyJtaW51dCI6Im1pbnV0YW1pIjtjYXNlImgiOnJl dHVybiBiPyJlbmEgdXJhIjoiZW5vIHVybyI7Y2FzZSJoaCI6cmV0dXJuIGUr PTE9PT1hP2I/InVyYSI6InVybyI6Mj09PWE/Ynx8ZD8idXJpIjoidXJhbWEi OjU+YT9ifHxkPyJ1cmUiOiJ1cmFtaSI6Ynx8ZD8idXIiOiJ1cmFtaSI7Y2Fz ZSJkIjpyZXR1cm4gYnx8ZD8iZW4gZGFuIjoiZW5pbSBkbmVtIjtjYXNlImRk IjpyZXR1cm4gZSs9MT09PWE/Ynx8ZD8iZGFuIjoiZG5lbSI6Mj09PWE/Ynx8 ZD8iZG5pIjoiZG5ldm9tYSI6Ynx8ZD8iZG5pIjoiZG5ldmkiO2Nhc2UiTSI6 cmV0dXJuIGJ8fGQ/ImVuIG1lc2VjIjoiZW5pbSBtZXNlY2VtIjtjYXNlIk1N IjpyZXR1cm4gZSs9MT09PWE/Ynx8ZD8ibWVzZWMiOiJtZXNlY2VtIjoyPT09 YT9ifHxkPyJtZXNlY2EiOiJtZXNlY2VtYSI6NT5hP2J8fGQ/Im1lc2VjZSI6 Im1lc2VjaSI6Ynx8ZD8ibWVzZWNldiI6Im1lc2VjaSI7Y2FzZSJ5IjpyZXR1 cm4gYnx8ZD8iZW5vIGxldG8iOiJlbmltIGxldG9tIjtjYXNlInl5IjpyZXR1 cm4gZSs9MT09PWE/Ynx8ZD8ibGV0byI6ImxldG9tIjoyPT09YT9ifHxkPyJs ZXRpIjoibGV0b21hIjo1PmE/Ynx8ZD8ibGV0YSI6ImxldGkiOmJ8fGQ/Imxl dCI6ImxldGkifX1mdW5jdGlvbiBhZShhKXt2YXIgYj1hO3JldHVybiBiPS0x IT09YS5pbmRleE9mKCJqYWoiKT9iLnNsaWNlKDAsLTMpKyJsZVMiOi0xIT09 YS5pbmRleE9mKCJqYXIiKT9iLnNsaWNlKDAsLTMpKyJ3YVEiOi0xIT09YS5p bmRleE9mKCJESVMiKT9iLnNsaWNlKDAsLTMpKyJuZW0iOmIrIiBwSXEifWZ1 bmN0aW9uIGJlKGEpe3ZhciBiPWE7cmV0dXJuIGI9LTEhPT1hLmluZGV4T2Yo ImphaiIpP2Iuc2xpY2UoMCwtMykrIkh14oCZIjotMSE9PWEuaW5kZXhPZigi amFyIik/Yi5zbGljZSgwLC0zKSsid2VuIjotMSE9PWEuaW5kZXhPZigiRElT Iik/Yi5zbGljZSgwLC0zKSsiYmVuIjpiKyIgcmV0In1mdW5jdGlvbiBjZShh LGIsYyxkKXt2YXIgZT1kZShhKTtzd2l0Y2goYyl7Y2FzZSJtbSI6cmV0dXJu IGUrIiB0dXAiO2Nhc2UiaGgiOnJldHVybiBlKyIgcmVwIjtjYXNlImRkIjpy ZXR1cm4gZSsiIGphaiI7Y2FzZSJNTSI6cmV0dXJuIGUrIiBqYXIiO2Nhc2Ui eXkiOnJldHVybiBlKyIgRElTIn19ZnVuY3Rpb24gZGUoYSl7dmFyIGI9TWF0 aC5mbG9vcihhJTFlMy8xMDApLGM9TWF0aC5mbG9vcihhJTEwMC8xMCksZD1h JTEwLGU9IiI7cmV0dXJuIGI+MCYmKGUrPXhoW2JdKyJ2YXRsaCIpLGM+MCYm KGUrPSgiIiE9PWU/IiAiOiIiKSt4aFtjXSsibWFIIiksZD4wJiYoZSs9KCIi IT09ZT8iICI6IiIpK3hoW2RdKSwiIj09PWU/InBhZ2giOmV9ZnVuY3Rpb24g ZWUoYSxiLGMsZCl7dmFyIGU9e3M6WyJ2aWVuc2FzIHNlY3VuZHMiLCInaWVu c2FzIHNlY3VuZHMiXSxtOlsiJ24gbcOtdXQiLCInaWVucyBtw611dCJdLG1t OlthKyIgbcOtdXRzIiwiIithKyIgbcOtdXRzIl0saDpbIiduIMO+b3JhIiwi J2llbnNhIMO+b3JhIl0saGg6W2ErIiDDvm9yYXMiLCIiK2ErIiDDvm9yYXMi XSxkOlsiJ24geml1YSIsIidpZW5zYSB6aXVhIl0sZGQ6W2ErIiB6aXVhcyIs IiIrYSsiIHppdWFzIl0sTTpbIiduIG1lcyIsIidpZW5zIG1lcyJdLE1NOlth KyIgbWVzZW4iLCIiK2ErIiBtZXNlbiJdLHk6WyInbiBhciIsIidpZW5zIGFy Il0seXk6W2ErIiBhcnMiLCIiK2ErIiBhcnMiXX07cmV0dXJuIGQ/ZVtjXVsw XTpiP2VbY11bMF06ZVtjXVsxXX1mdW5jdGlvbiBmZShhLGIpe3ZhciBjPWEu c3BsaXQoIl8iKTtyZXR1cm4gYiUxMD09PTEmJmIlMTAwIT09MTE/Y1swXTpi JTEwPj0yJiY0Pj1iJTEwJiYoMTA+YiUxMDB8fGIlMTAwPj0yMCk/Y1sxXTpj WzJdfWZ1bmN0aW9uIGdlKGEsYixjKXt2YXIgZD17bW06Yj8i0YXQstC40LvQ uNC90LBf0YXQstC40LvQuNC90Lhf0YXQstC40LvQuNC9Ijoi0YXQstC40LvQ uNC90YNf0YXQstC40LvQuNC90Lhf0YXQstC40LvQuNC9IixoaDpiPyLQs9C+ 0LTQuNC90LBf0LPQvtC00LjQvdC4X9Cz0L7QtNC40L0iOiLQs9C+0LTQuNC9 0YNf0LPQvtC00LjQvdC4X9Cz0L7QtNC40L0iLGRkOiLQtNC10L3RjF/QtNC9 0ZZf0LTQvdGW0LIiLE1NOiLQvNGW0YHRj9GG0Yxf0LzRltGB0Y/RhtGWX9C8 0ZbRgdGP0YbRltCyIix5eToi0YDRltC6X9GA0L7QutC4X9GA0L7QutGW0LIi fTtyZXR1cm4ibSI9PT1jP2I/ItGF0LLQuNC70LjQvdCwIjoi0YXQstC40LvQ uNC90YMiOiJoIj09PWM/Yj8i0LPQvtC00LjQvdCwIjoi0LPQvtC00LjQvdGD IjphKyIgIitmZShkW2NdLCthKX1mdW5jdGlvbiBoZShhLGIpe3ZhciBjPXtu b21pbmF0aXZlOiLQvdC10LTRltC70Y9f0L/QvtC90LXQtNGW0LvQvtC6X9Cy 0ZbQstGC0L7RgNC+0Lpf0YHQtdGA0LXQtNCwX9GH0LXRgtCy0LXRgF/Qv+KA mdGP0YLQvdC40YbRj1/RgdGD0LHQvtGC0LAiLnNwbGl0KCJfIiksYWNjdXNh dGl2ZToi0L3QtdC00ZbQu9GOX9C/0L7QvdC10LTRltC70L7Qul/QstGW0LLR gtC+0YDQvtC6X9GB0LXRgNC10LTRg1/Rh9C10YLQstC10YBf0L/igJnRj9GC 0L3QuNGG0Y5f0YHRg9Cx0L7RgtGDIi5zcGxpdCgiXyIpLGdlbml0aXZlOiLQ vdC10LTRltC70ZZf0L/QvtC90LXQtNGW0LvQutCwX9Cy0ZbQstGC0L7RgNC6 0LBf0YHQtdGA0LXQtNC4X9GH0LXRgtCy0LXRgNCz0LBf0L/igJnRj9GC0L3Q uNGG0ZZf0YHRg9Cx0L7RgtC4Ii5zcGxpdCgiXyIpfSxkPS8oXFtb0JLQstCj 0YNdXF0pID9kZGRkLy50ZXN0KGIpPyJhY2N1c2F0aXZlIjovXFs/KD860LzQ uNC90YPQu9C+0Zd80L3QsNGB0YLRg9C/0L3QvtGXKT8gP1xdID9kZGRkLy50 ZXN0KGIpPyJnZW5pdGl2ZSI6Im5vbWluYXRpdmUiO3JldHVybiBjW2RdW2Eu ZGF5KCldfWZ1bmN0aW9uIGllKGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVy biBhKyLQviIrKDExPT09dGhpcy5ob3VycygpPyLQsSI6IiIpKyJdIExUIn19 dmFyIGplLGtlO2tlPUFycmF5LnByb3RvdHlwZS5zb21lP0FycmF5LnByb3Rv dHlwZS5zb21lOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1PYmplY3QodGhpcyks Yz1iLmxlbmd0aD4+PjAsZD0wO2M+ZDtkKyspaWYoZCBpbiBiJiZhLmNhbGwo dGhpcyxiW2RdLGQsYikpcmV0dXJuITA7cmV0dXJuITF9OworLy8gUGx1Z2lu cyB0aGF0IGFkZCBwcm9wZXJ0aWVzIHNob3VsZCBhbHNvIGFkZCB0aGUga2V5 IGhlcmUgKG51bGwgdmFsdWUpLAorLy8gc28gd2UgY2FuIHByb3Blcmx5IGNs b25lIG91cnNlbHZlcy4KK3ZhciBsZT1hLm1vbWVudFByb3BlcnRpZXM9W10s bWU9ITEsbmU9e307YS5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3M9ITEs YS5kZXByZWNhdGlvbkhhbmRsZXI9bnVsbDt2YXIgb2U7b2U9T2JqZWN0Lmtl eXM/T2JqZWN0LmtleXM6ZnVuY3Rpb24oYSl7dmFyIGIsYz1bXTtmb3IoYiBp biBhKWgoYSxiKSYmYy5wdXNoKGIpO3JldHVybiBjfTt2YXIgcGUscWU9e3Nh bWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0g TFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJk YXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2Ft ZUVsc2U6IkwifSxyZT17TFRTOiJoOm1tOnNzIEEiLExUOiJoOm1tIEEiLEw6 Ik1NL0REL1lZWVkiLExMOiJNTU1NIEQsIFlZWVkiLExMTDoiTU1NTSBELCBZ WVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQSJ9 LHNlPSJJbnZhbGlkIGRhdGUiLHRlPSIlZCIsdWU9L1xkezEsMn0vLHZlPXtm dXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMi LG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6 IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgi LE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sd2U9 e30seGU9e30seWU9LyhcW1teXFtdKlxdKXwoXFwpPyhbSGhdbW0oc3MpP3xN b3xNTT9NP00/fERvfERERG98REQ/RD9EP3xkZGQ/ZD98ZG8/fHdbb3x3XT98 V1tvfFddP3xRbz98WVlZWVlZfFlZWVlZfFlZWVl8WVl8Z2coZ2dnPyk/fEdH KEdHRz8pP3xlfEV8YXxBfGhoP3xISD98a2s/fG1tP3xzcz98U3sxLDl9fHh8 WHx6ej98Wlo/fC4pL2csemU9LyhcW1teXFtdKlxdKXwoXFwpPyhMVFN8TFR8 TEw/TD9MP3xsezEsNH0pL2csQWU9e30sQmU9e30sQ2U9L1xkLyxEZT0vXGRc ZC8sRWU9L1xkezN9LyxGZT0vXGR7NH0vLEdlPS9bKy1dP1xkezZ9LyxIZT0v XGRcZD8vLEllPS9cZFxkXGRcZD8vLEplPS9cZFxkXGRcZFxkXGQ/LyxLZT0v XGR7MSwzfS8sTGU9L1xkezEsNH0vLE1lPS9bKy1dP1xkezEsNn0vLE5lPS9c ZCsvLE9lPS9bKy1dP1xkKy8sUGU9L1p8WystXVxkXGQ6P1xkXGQvZ2ksUWU9 L1p8WystXVxkXGQoPzo6P1xkXGQpPy9naSxSZT0vWystXT9cZCsoXC5cZHsx LDN9KT8vLFNlPS9bMC05XSpbJ2Etelx1MDBBMC1cdTA1RkZcdTA3MDAtXHVE N0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdK3xbXHUwNjAwLVx1MDZG RlwvXSsoXHMqP1tcdTA2MDAtXHUwNkZGXSspezEsMn0vaSxUZT17fSxVZT17 fSxWZT0wLFdlPTEsWGU9MixZZT0zLFplPTQsJGU9NSxfZT02LGFmPTcsYmY9 ODtwZT1BcnJheS5wcm90b3R5cGUuaW5kZXhPZj9BcnJheS5wcm90b3R5cGUu aW5kZXhPZjpmdW5jdGlvbihhKXsKKy8vIEkga25vdwordmFyIGI7Zm9yKGI9 MDtiPHRoaXMubGVuZ3RoOysrYilpZih0aGlzW2JdPT09YSlyZXR1cm4gYjty ZXR1cm4tMX0sVCgiTSIsWyJNTSIsMl0sIk1vIixmdW5jdGlvbigpe3JldHVy biB0aGlzLm1vbnRoKCkrMX0pLFQoIk1NTSIsMCwwLGZ1bmN0aW9uKGEpe3Jl dHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHNTaG9ydCh0aGlzLGEpfSks VCgiTU1NTSIsMCwwLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxvY2FsZURh dGEoKS5tb250aHModGhpcyxhKX0pLEkoIm1vbnRoIiwiTSIpLEwoIm1vbnRo Iiw4KSxZKCJNIixIZSksWSgiTU0iLEhlLERlKSxZKCJNTU0iLGZ1bmN0aW9u KGEsYil7cmV0dXJuIGIubW9udGhzU2hvcnRSZWdleChhKX0pLFkoIk1NTU0i LGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIubW9udGhzUmVnZXgoYSl9KSxhYShb Ik0iLCJNTSJdLGZ1bmN0aW9uKGEsYil7YltXZV09dChhKS0xfSksYWEoWyJN TU0iLCJNTU1NIl0sZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Yy5fbG9jYWxl Lm1vbnRoc1BhcnNlKGEsZCxjLl9zdHJpY3QpO251bGwhPWU/YltXZV09ZTps KGMpLmludmFsaWRNb250aD1hfSk7CisvLyBMT0NBTEVTCit2YXIgY2Y9L0Rb b0RdPyhcW1teXFtcXV0qXF18XHMrKStNTU1NPy8sZGY9IkphbnVhcnlfRmVi cnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVt YmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksZWY9 Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3Zf RGVjIi5zcGxpdCgiXyIpLGZmPVNlLGdmPVNlOworLy8gRk9STUFUVElORwor VCgiWSIsMCwwLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy55ZWFyKCk7cmV0dXJu IDk5OTk+PWE/IiIrYToiKyIrYX0pLFQoMCxbIllZIiwyXSwwLGZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMueWVhcigpJTEwMH0pLFQoMCxbIllZWVkiLDRdLDAs InllYXIiKSxUKDAsWyJZWVlZWSIsNV0sMCwieWVhciIpLFQoMCxbIllZWVlZ WSIsNiwhMF0sMCwieWVhciIpLAorLy8gQUxJQVNFUworSSgieWVhciIsInki KSwKKy8vIFBSSU9SSVRJRVMKK0woInllYXIiLDEpLAorLy8gUEFSU0lORwor WSgiWSIsT2UpLFkoIllZIixIZSxEZSksWSgiWVlZWSIsTGUsRmUpLFkoIllZ WVlZIixNZSxHZSksWSgiWVlZWVlZIixNZSxHZSksYWEoWyJZWVlZWSIsIllZ WVlZWSJdLFZlKSxhYSgiWVlZWSIsZnVuY3Rpb24oYixjKXtjW1ZlXT0yPT09 Yi5sZW5ndGg/YS5wYXJzZVR3b0RpZ2l0WWVhcihiKTp0KGIpfSksYWEoIllZ IixmdW5jdGlvbihiLGMpe2NbVmVdPWEucGFyc2VUd29EaWdpdFllYXIoYil9 KSxhYSgiWSIsZnVuY3Rpb24oYSxiKXtiW1ZlXT1wYXJzZUludChhLDEwKX0p LAorLy8gSE9PS1MKK2EucGFyc2VUd29EaWdpdFllYXI9ZnVuY3Rpb24oYSl7 cmV0dXJuIHQoYSkrKHQoYSk+Njg/MTkwMDoyZTMpfTsKKy8vIE1PTUVOVFMK K3ZhciBoZj1OKCJGdWxsWWVhciIsITApOworLy8gRk9STUFUVElORworVCgi dyIsWyJ3dyIsMl0sIndvIiwid2VlayIpLFQoIlciLFsiV1ciLDJdLCJXbyIs Imlzb1dlZWsiKSwKKy8vIEFMSUFTRVMKK0koIndlZWsiLCJ3IiksSSgiaXNv V2VlayIsIlciKSwKKy8vIFBSSU9SSVRJRVMKK0woIndlZWsiLDUpLEwoImlz b1dlZWsiLDUpLAorLy8gUEFSU0lORworWSgidyIsSGUpLFkoInd3IixIZSxE ZSksWSgiVyIsSGUpLFkoIldXIixIZSxEZSksYmEoWyJ3Iiwid3ciLCJXIiwi V1ciXSxmdW5jdGlvbihhLGIsYyxkKXtiW2Quc3Vic3RyKDAsMSldPXQoYSl9 KTt2YXIgamY9e2RvdzowLC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9m IHRoZSB3ZWVrLgorZG95OjZ9OworLy8gRk9STUFUVElORworVCgiZCIsMCwi ZG8iLCJkYXkiKSxUKCJkZCIsMCwwLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlz LmxvY2FsZURhdGEoKS53ZWVrZGF5c01pbih0aGlzLGEpfSksVCgiZGRkIiww LDAsZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtk YXlzU2hvcnQodGhpcyxhKX0pLFQoImRkZGQiLDAsMCxmdW5jdGlvbihhKXty ZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXModGhpcyxhKX0pLFQo ImUiLDAsMCwid2Vla2RheSIpLFQoIkUiLDAsMCwiaXNvV2Vla2RheSIpLAor Ly8gQUxJQVNFUworSSgiZGF5IiwiZCIpLEkoIndlZWtkYXkiLCJlIiksSSgi aXNvV2Vla2RheSIsIkUiKSwKKy8vIFBSSU9SSVRZCitMKCJkYXkiLDExKSxM KCJ3ZWVrZGF5IiwxMSksTCgiaXNvV2Vla2RheSIsMTEpLAorLy8gUEFSU0lO RworWSgiZCIsSGUpLFkoImUiLEhlKSxZKCJFIixIZSksWSgiZGQiLGZ1bmN0 aW9uKGEsYil7cmV0dXJuIGIud2Vla2RheXNNaW5SZWdleChhKX0pLFkoImRk ZCIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi53ZWVrZGF5c1Nob3J0UmVnZXgo YSl9KSxZKCJkZGRkIixmdW5jdGlvbihhLGIpe3JldHVybiBiLndlZWtkYXlz UmVnZXgoYSl9KSxiYShbImRkIiwiZGRkIiwiZGRkZCJdLGZ1bmN0aW9uKGEs YixjLGQpe3ZhciBlPWMuX2xvY2FsZS53ZWVrZGF5c1BhcnNlKGEsZCxjLl9z dHJpY3QpOworLy8gaWYgd2UgZGlkbid0IGdldCBhIHdlZWtkYXkgbmFtZSwg bWFyayB0aGUgZGF0ZSBhcyBpbnZhbGlkCitudWxsIT1lP2IuZD1lOmwoYyku aW52YWxpZFdlZWtkYXk9YX0pLGJhKFsiZCIsImUiLCJFIl0sZnVuY3Rpb24o YSxiLGMsZCl7YltkXT10KGEpfSk7CisvLyBMT0NBTEVTCit2YXIga2Y9IlN1 bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5 X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLGxmPSJTdW5fTW9uX1R1ZV9XZWRfVGh1 X0ZyaV9TYXQiLnNwbGl0KCJfIiksbWY9IlN1X01vX1R1X1dlX1RoX0ZyX1Nh Ii5zcGxpdCgiXyIpLG5mPVNlLG9mPVNlLHBmPVNlO1QoIkgiLFsiSEgiLDJd LDAsImhvdXIiKSxUKCJoIixbImhoIiwyXSwwLFFhKSxUKCJrIixbImtrIiwy XSwwLFJhKSxUKCJobW0iLDAsMCxmdW5jdGlvbigpe3JldHVybiIiK1FhLmFw cGx5KHRoaXMpK1ModGhpcy5taW51dGVzKCksMil9KSxUKCJobW1zcyIsMCww LGZ1bmN0aW9uKCl7cmV0dXJuIiIrUWEuYXBwbHkodGhpcykrUyh0aGlzLm1p bnV0ZXMoKSwyKStTKHRoaXMuc2Vjb25kcygpLDIpfSksVCgiSG1tIiwwLDAs ZnVuY3Rpb24oKXtyZXR1cm4iIit0aGlzLmhvdXJzKCkrUyh0aGlzLm1pbnV0 ZXMoKSwyKX0pLFQoIkhtbXNzIiwwLDAsZnVuY3Rpb24oKXtyZXR1cm4iIit0 aGlzLmhvdXJzKCkrUyh0aGlzLm1pbnV0ZXMoKSwyKStTKHRoaXMuc2Vjb25k cygpLDIpfSksU2EoImEiLCEwKSxTYSgiQSIsITEpLAorLy8gQUxJQVNFUwor SSgiaG91ciIsImgiKSwKKy8vIFBSSU9SSVRZCitMKCJob3VyIiwxMyksWSgi YSIsVGEpLFkoIkEiLFRhKSxZKCJIIixIZSksWSgiaCIsSGUpLFkoIkhIIixI ZSxEZSksWSgiaGgiLEhlLERlKSxZKCJobW0iLEllKSxZKCJobW1zcyIsSmUp LFkoIkhtbSIsSWUpLFkoIkhtbXNzIixKZSksYWEoWyJIIiwiSEgiXSxZZSks YWEoWyJhIiwiQSJdLGZ1bmN0aW9uKGEsYixjKXtjLl9pc1BtPWMuX2xvY2Fs ZS5pc1BNKGEpLGMuX21lcmlkaWVtPWF9KSxhYShbImgiLCJoaCJdLGZ1bmN0 aW9uKGEsYixjKXtiW1llXT10KGEpLGwoYykuYmlnSG91cj0hMH0pLGFhKCJo bW0iLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmxlbmd0aC0yO2JbWWVdPXQo YS5zdWJzdHIoMCxkKSksYltaZV09dChhLnN1YnN0cihkKSksbChjKS5iaWdI b3VyPSEwfSksYWEoImhtbXNzIixmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5s ZW5ndGgtNCxlPWEubGVuZ3RoLTI7YltZZV09dChhLnN1YnN0cigwLGQpKSxi W1plXT10KGEuc3Vic3RyKGQsMikpLGJbJGVdPXQoYS5zdWJzdHIoZSkpLGwo YykuYmlnSG91cj0hMH0pLGFhKCJIbW0iLGZ1bmN0aW9uKGEsYixjKXt2YXIg ZD1hLmxlbmd0aC0yO2JbWWVdPXQoYS5zdWJzdHIoMCxkKSksYltaZV09dChh LnN1YnN0cihkKSl9KSxhYSgiSG1tc3MiLGZ1bmN0aW9uKGEsYixjKXt2YXIg ZD1hLmxlbmd0aC00LGU9YS5sZW5ndGgtMjtiW1llXT10KGEuc3Vic3RyKDAs ZCkpLGJbWmVdPXQoYS5zdWJzdHIoZCwyKSksYlskZV09dChhLnN1YnN0cihl KSl9KTt2YXIgcWYscmY9L1thcF1cLj9tP1wuPy9pLHNmPU4oIkhvdXJzIiwh MCksdGY9e2NhbGVuZGFyOnFlLGxvbmdEYXRlRm9ybWF0OnJlLGludmFsaWRE YXRlOnNlLG9yZGluYWw6dGUsb3JkaW5hbFBhcnNlOnVlLHJlbGF0aXZlVGlt ZTp2ZSxtb250aHM6ZGYsbW9udGhzU2hvcnQ6ZWYsd2VlazpqZix3ZWVrZGF5 czprZix3ZWVrZGF5c01pbjptZix3ZWVrZGF5c1Nob3J0OmxmLG1lcmlkaWVt UGFyc2U6cmZ9LHVmPXt9LHZmPS9eXHMqKCg/OlsrLV1cZHs2fXxcZHs0fSkt KD86XGRcZC1cZFxkfFdcZFxkLVxkfFdcZFxkfFxkXGRcZHxcZFxkKSkoPzoo VHwgKShcZFxkKD86OlxkXGQoPzo6XGRcZCg/OlsuLF1cZCspPyk/KT8pKFtc K1wtXVxkXGQoPzo6P1xkXGQpP3xccypaKT8pPy8sd2Y9L15ccyooKD86Wyst XVxkezZ9fFxkezR9KSg/OlxkXGRcZFxkfFdcZFxkXGR8V1xkXGR8XGRcZFxk fFxkXGQpKSg/OihUfCApKFxkXGQoPzpcZFxkKD86XGRcZCg/OlsuLF1cZCsp Pyk/KT8pKFtcK1wtXVxkXGQoPzo6P1xkXGQpP3xccypaKT8pPy8seGY9L1p8 WystXVxkXGQoPzo6P1xkXGQpPy8seWY9W1siWVlZWVlZLU1NLUREIiwvWyst XVxkezZ9LVxkXGQtXGRcZC9dLFsiWVlZWS1NTS1ERCIsL1xkezR9LVxkXGQt XGRcZC9dLFsiR0dHRy1bV11XVy1FIiwvXGR7NH0tV1xkXGQtXGQvXSxbIkdH R0ctW1ddV1ciLC9cZHs0fS1XXGRcZC8sITFdLFsiWVlZWS1EREQiLC9cZHs0 fS1cZHszfS9dLFsiWVlZWS1NTSIsL1xkezR9LVxkXGQvLCExXSxbIllZWVlZ WU1NREQiLC9bKy1dXGR7MTB9L10sWyJZWVlZTU1ERCIsL1xkezh9L10sCisv LyBZWVlZTU0gaXMgTk9UIGFsbG93ZWQgYnkgdGhlIHN0YW5kYXJkCitbIkdH R0dbV11XV0UiLC9cZHs0fVdcZHszfS9dLFsiR0dHR1tXXVdXIiwvXGR7NH1X XGR7Mn0vLCExXSxbIllZWVlEREQiLC9cZHs3fS9dXSx6Zj1bWyJISDptbTpz cy5TU1NTIiwvXGRcZDpcZFxkOlxkXGRcLlxkKy9dLFsiSEg6bW06c3MsU1NT UyIsL1xkXGQ6XGRcZDpcZFxkLFxkKy9dLFsiSEg6bW06c3MiLC9cZFxkOlxk XGQ6XGRcZC9dLFsiSEg6bW0iLC9cZFxkOlxkXGQvXSxbIkhIbW1zcy5TU1NT IiwvXGRcZFxkXGRcZFxkXC5cZCsvXSxbIkhIbW1zcyxTU1NTIiwvXGRcZFxk XGRcZFxkLFxkKy9dLFsiSEhtbXNzIiwvXGRcZFxkXGRcZFxkL10sWyJISG1t IiwvXGRcZFxkXGQvXSxbIkhIIiwvXGRcZC9dXSxBZj0vXlwvP0RhdGVcKChc LT9cZCspL2k7YS5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjaz13KCJ2YWx1ZSBw cm92aWRlZCBpcyBub3QgaW4gYSByZWNvZ25pemVkIElTTyBmb3JtYXQuIG1v bWVudCBjb25zdHJ1Y3Rpb24gZmFsbHMgYmFjayB0byBqcyBEYXRlKCksIHdo aWNoIGlzIG5vdCByZWxpYWJsZSBhY3Jvc3MgYWxsIGJyb3dzZXJzIGFuZCB2 ZXJzaW9ucy4gTm9uIElTTyBkYXRlIGZvcm1hdHMgYXJlIGRpc2NvdXJhZ2Vk IGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYW4gdXBjb21pbmcgbWFqb3IgcmVs ZWFzZS4gUGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3Vp ZGVzLyMvd2FybmluZ3MvanMtZGF0ZS8gZm9yIG1vcmUgaW5mby4iLGZ1bmN0 aW9uKGEpe2EuX2Q9bmV3IERhdGUoYS5faSsoYS5fdXNlVVRDPyIgVVRDIjoi IikpfSksCisvLyBjb25zdGFudCB0aGF0IHJlZmVycyB0byB0aGUgSVNPIHN0 YW5kYXJkCithLklTT184NjAxPWZ1bmN0aW9uKCl7fTt2YXIgQmY9dygibW9t ZW50KCkubWluIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQubWF4IGluc3Rl YWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvbWlu LW1heC8iLGZ1bmN0aW9uKCl7dmFyIGE9cmIuYXBwbHkobnVsbCxhcmd1bWVu dHMpO3JldHVybiB0aGlzLmlzVmFsaWQoKSYmYS5pc1ZhbGlkKCk/dGhpcz5h P3RoaXM6YTpuKCl9KSxDZj13KCJtb21lbnQoKS5tYXggaXMgZGVwcmVjYXRl ZCwgdXNlIG1vbWVudC5taW4gaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNv bS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LyIsZnVuY3Rpb24oKXt2YXIg YT1yYi5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMuaXNWYWxp ZCgpJiZhLmlzVmFsaWQoKT9hPnRoaXM/dGhpczphOm4oKX0pLERmPWZ1bmN0 aW9uKCl7cmV0dXJuIERhdGUubm93P0RhdGUubm93KCk6K25ldyBEYXRlfTt5 YigiWiIsIjoiKSx5YigiWloiLCIiKSwKKy8vIFBBUlNJTkcKK1koIloiLFFl KSxZKCJaWiIsUWUpLGFhKFsiWiIsIlpaIl0sZnVuY3Rpb24oYSxiLGMpe2Mu X3VzZVVUQz0hMCxjLl90em09emIoUWUsYSl9KTsKKy8vIEhFTFBFUlMKKy8v IHRpbWV6b25lIGNodW5rZXIKKy8vICcrMTA6MDAnID4gWycxMCcsICAnMDAn XQorLy8gJy0xNTMwJyAgPiBbJy0xNScsICczMCddCit2YXIgRWY9LyhbXCtc LV18XGRcZCkvZ2k7CisvLyBIT09LUworLy8gVGhpcyBmdW5jdGlvbiB3aWxs IGJlIGNhbGxlZCB3aGVuZXZlciBhIG1vbWVudCBpcyBtdXRhdGVkLgorLy8g SXQgaXMgaW50ZW5kZWQgdG8ga2VlcCB0aGUgb2Zmc2V0IGluIHN5bmMgd2l0 aCB0aGUgdGltZXpvbmUuCithLnVwZGF0ZU9mZnNldD1mdW5jdGlvbigpe307 CisvLyBBU1AuTkVUIGpzb24gZGF0ZSBmb3JtYXQgcmVnZXgKK3ZhciBGZj0v XihcLSk/KD86KFxkKilbLiBdKT8oXGQrKVw6KFxkKykoPzpcOihcZCspKFwu XGQqKT8pPyQvLEdmPS9eKC0pP1AoPzooLT9bMC05LC5dKilZKT8oPzooLT9b MC05LC5dKilNKT8oPzooLT9bMC05LC5dKilXKT8oPzooLT9bMC05LC5dKilE KT8oPzpUKD86KC0/WzAtOSwuXSopSCk/KD86KC0/WzAtOSwuXSopTSk/KD86 KC0/WzAtOSwuXSopUyk/KT8kLztOYi5mbj12Yi5wcm90b3R5cGU7dmFyIEhm PVJiKDEsImFkZCIpLElmPVJiKC0xLCJzdWJ0cmFjdCIpO2EuZGVmYXVsdEZv cm1hdD0iWVlZWS1NTS1ERFRISDptbTpzc1oiLGEuZGVmYXVsdEZvcm1hdFV0 Yz0iWVlZWS1NTS1ERFRISDptbTpzc1taXSI7dmFyIEpmPXcoIm1vbWVudCgp LmxhbmcoKSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgbW9tZW50KCku bG9jYWxlRGF0YSgpIHRvIGdldCB0aGUgbGFuZ3VhZ2UgY29uZmlndXJhdGlv bi4gVXNlIG1vbWVudCgpLmxvY2FsZSgpIHRvIGNoYW5nZSBsYW5ndWFnZXMu IixmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YT90aGlzLmxvY2FsZURh dGEoKTp0aGlzLmxvY2FsZShhKX0pOworLy8gRk9STUFUVElORworVCgwLFsi Z2ciLDJdLDAsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53ZWVrWWVhcigpJTEw MH0pLFQoMCxbIkdHIiwyXSwwLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNv V2Vla1llYXIoKSUxMDB9KSx4YygiZ2dnZyIsIndlZWtZZWFyIikseGMoImdn Z2dnIiwid2Vla1llYXIiKSx4YygiR0dHRyIsImlzb1dlZWtZZWFyIikseGMo IkdHR0dHIiwiaXNvV2Vla1llYXIiKSwKKy8vIEFMSUFTRVMKK0koIndlZWtZ ZWFyIiwiZ2ciKSxJKCJpc29XZWVrWWVhciIsIkdHIiksCisvLyBQUklPUklU WQorTCgid2Vla1llYXIiLDEpLEwoImlzb1dlZWtZZWFyIiwxKSwKKy8vIFBB UlNJTkcKK1koIkciLE9lKSxZKCJnIixPZSksWSgiR0ciLEhlLERlKSxZKCJn ZyIsSGUsRGUpLFkoIkdHR0ciLExlLEZlKSxZKCJnZ2dnIixMZSxGZSksWSgi R0dHR0ciLE1lLEdlKSxZKCJnZ2dnZyIsTWUsR2UpLGJhKFsiZ2dnZyIsImdn Z2dnIiwiR0dHRyIsIkdHR0dHIl0sZnVuY3Rpb24oYSxiLGMsZCl7YltkLnN1 YnN0cigwLDIpXT10KGEpfSksYmEoWyJnZyIsIkdHIl0sZnVuY3Rpb24oYixj LGQsZSl7Y1tlXT1hLnBhcnNlVHdvRGlnaXRZZWFyKGIpfSksCisvLyBGT1JN QVRUSU5HCitUKCJRIiwwLCJRbyIsInF1YXJ0ZXIiKSwKKy8vIEFMSUFTRVMK K0koInF1YXJ0ZXIiLCJRIiksCisvLyBQUklPUklUWQorTCgicXVhcnRlciIs NyksCisvLyBQQVJTSU5HCitZKCJRIixDZSksYWEoIlEiLGZ1bmN0aW9uKGEs Yil7YltXZV09MyoodChhKS0xKX0pLAorLy8gRk9STUFUVElORworVCgiRCIs WyJERCIsMl0sIkRvIiwiZGF0ZSIpLAorLy8gQUxJQVNFUworSSgiZGF0ZSIs IkQiKSwKKy8vIFBSSU9ST0lUWQorTCgiZGF0ZSIsOSksCisvLyBQQVJTSU5H CitZKCJEIixIZSksWSgiREQiLEhlLERlKSxZKCJEbyIsZnVuY3Rpb24oYSxi KXtyZXR1cm4gYT9iLl9vcmRpbmFsUGFyc2U6Yi5fb3JkaW5hbFBhcnNlTGVu aWVudH0pLGFhKFsiRCIsIkREIl0sWGUpLGFhKCJEbyIsZnVuY3Rpb24oYSxi KXtiW1hlXT10KGEubWF0Y2goSGUpWzBdLDEwKX0pOworLy8gTU9NRU5UUwor dmFyIEtmPU4oIkRhdGUiLCEwKTsKKy8vIEZPUk1BVFRJTkcKK1QoIkRERCIs WyJEREREIiwzXSwiREREbyIsImRheU9mWWVhciIpLAorLy8gQUxJQVNFUwor SSgiZGF5T2ZZZWFyIiwiREREIiksCisvLyBQUklPUklUWQorTCgiZGF5T2ZZ ZWFyIiw0KSwKKy8vIFBBUlNJTkcKK1koIkRERCIsS2UpLFkoIkREREQiLEVl KSxhYShbIkRERCIsIkREREQiXSxmdW5jdGlvbihhLGIsYyl7Yy5fZGF5T2ZZ ZWFyPXQoYSl9KSwKKy8vIEZPUk1BVFRJTkcKK1QoIm0iLFsibW0iLDJdLDAs Im1pbnV0ZSIpLAorLy8gQUxJQVNFUworSSgibWludXRlIiwibSIpLAorLy8g UFJJT1JJVFkKK0woIm1pbnV0ZSIsMTQpLAorLy8gUEFSU0lORworWSgibSIs SGUpLFkoIm1tIixIZSxEZSksYWEoWyJtIiwibW0iXSxaZSk7CisvLyBNT01F TlRTCit2YXIgTGY9TigiTWludXRlcyIsITEpOworLy8gRk9STUFUVElORwor VCgicyIsWyJzcyIsMl0sMCwic2Vjb25kIiksCisvLyBBTElBU0VTCitJKCJz ZWNvbmQiLCJzIiksCisvLyBQUklPUklUWQorTCgic2Vjb25kIiwxNSksCisv LyBQQVJTSU5HCitZKCJzIixIZSksWSgic3MiLEhlLERlKSxhYShbInMiLCJz cyJdLCRlKTsKKy8vIE1PTUVOVFMKK3ZhciBNZj1OKCJTZWNvbmRzIiwhMSk7 CisvLyBGT1JNQVRUSU5HCitUKCJTIiwwLDAsZnVuY3Rpb24oKXtyZXR1cm5+ fih0aGlzLm1pbGxpc2Vjb25kKCkvMTAwKX0pLFQoMCxbIlNTIiwyXSwwLGZ1 bmN0aW9uKCl7cmV0dXJufn4odGhpcy5taWxsaXNlY29uZCgpLzEwKX0pLFQo MCxbIlNTUyIsM10sMCwibWlsbGlzZWNvbmQiKSxUKDAsWyJTU1NTIiw0XSww LGZ1bmN0aW9uKCl7cmV0dXJuIDEwKnRoaXMubWlsbGlzZWNvbmQoKX0pLFQo MCxbIlNTU1NTIiw1XSwwLGZ1bmN0aW9uKCl7cmV0dXJuIDEwMCp0aGlzLm1p bGxpc2Vjb25kKCl9KSxUKDAsWyJTU1NTU1MiLDZdLDAsZnVuY3Rpb24oKXty ZXR1cm4gMWUzKnRoaXMubWlsbGlzZWNvbmQoKX0pLFQoMCxbIlNTU1NTU1Mi LDddLDAsZnVuY3Rpb24oKXtyZXR1cm4gMWU0KnRoaXMubWlsbGlzZWNvbmQo KX0pLFQoMCxbIlNTU1NTU1NTIiw4XSwwLGZ1bmN0aW9uKCl7cmV0dXJuIDFl NSp0aGlzLm1pbGxpc2Vjb25kKCl9KSxUKDAsWyJTU1NTU1NTU1MiLDldLDAs ZnVuY3Rpb24oKXtyZXR1cm4gMWU2KnRoaXMubWlsbGlzZWNvbmQoKX0pLAor Ly8gQUxJQVNFUworSSgibWlsbGlzZWNvbmQiLCJtcyIpLAorLy8gUFJJT1JJ VFkKK0woIm1pbGxpc2Vjb25kIiwxNiksCisvLyBQQVJTSU5HCitZKCJTIixL ZSxDZSksWSgiU1MiLEtlLERlKSxZKCJTU1MiLEtlLEVlKTt2YXIgTmY7Zm9y KE5mPSJTU1NTIjtOZi5sZW5ndGg8PTk7TmYrPSJTIilZKE5mLE5lKTtmb3Io TmY9IlMiO05mLmxlbmd0aDw9OTtOZis9IlMiKWFhKE5mLEdjKTsKKy8vIE1P TUVOVFMKK3ZhciBPZj1OKCJNaWxsaXNlY29uZHMiLCExKTsKKy8vIEZPUk1B VFRJTkcKK1QoInoiLDAsMCwiem9uZUFiYnIiKSxUKCJ6eiIsMCwwLCJ6b25l TmFtZSIpO3ZhciBQZj1xLnByb3RvdHlwZTtQZi5hZGQ9SGYsUGYuY2FsZW5k YXI9VWIsUGYuY2xvbmU9VmIsUGYuZGlmZj1hYyxQZi5lbmRPZj1tYyxQZi5m b3JtYXQ9ZWMsUGYuZnJvbT1mYyxQZi5mcm9tTm93PWdjLFBmLnRvPWhjLFBm LnRvTm93PWljLFBmLmdldD1RLFBmLmludmFsaWRBdD12YyxQZi5pc0FmdGVy PVdiLFBmLmlzQmVmb3JlPVhiLFBmLmlzQmV0d2Vlbj1ZYixQZi5pc1NhbWU9 WmIsUGYuaXNTYW1lT3JBZnRlcj0kYixQZi5pc1NhbWVPckJlZm9yZT1fYixQ Zi5pc1ZhbGlkPXRjLFBmLmxhbmc9SmYsUGYubG9jYWxlPWpjLFBmLmxvY2Fs ZURhdGE9a2MsUGYubWF4PUNmLFBmLm1pbj1CZixQZi5wYXJzaW5nRmxhZ3M9 dWMsUGYuc2V0PVIsUGYuc3RhcnRPZj1sYyxQZi5zdWJ0cmFjdD1JZixQZi50 b0FycmF5PXFjLFBmLnRvT2JqZWN0PXJjLFBmLnRvRGF0ZT1wYyxQZi50b0lT T1N0cmluZz1kYyxQZi50b0pTT049c2MsUGYudG9TdHJpbmc9Y2MsUGYudW5p eD1vYyxQZi52YWx1ZU9mPW5jLFBmLmNyZWF0aW9uRGF0YT13YywKKy8vIFll YXIKK1BmLnllYXI9aGYsUGYuaXNMZWFwWWVhcj1xYSwKKy8vIFdlZWsgWWVh cgorUGYud2Vla1llYXI9eWMsUGYuaXNvV2Vla1llYXI9emMsCisvLyBRdWFy dGVyCitQZi5xdWFydGVyPVBmLnF1YXJ0ZXJzPUVjLAorLy8gTW9udGgKK1Bm Lm1vbnRoPWphLFBmLmRheXNJbk1vbnRoPWthLAorLy8gV2VlaworUGYud2Vl az1QZi53ZWVrcz1BYSxQZi5pc29XZWVrPVBmLmlzb1dlZWtzPUJhLFBmLndl ZWtzSW5ZZWFyPUJjLFBmLmlzb1dlZWtzSW5ZZWFyPUFjLAorLy8gRGF5CitQ Zi5kYXRlPUtmLFBmLmRheT1QZi5kYXlzPUphLFBmLndlZWtkYXk9S2EsUGYu aXNvV2Vla2RheT1MYSxQZi5kYXlPZlllYXI9RmMsCisvLyBIb3VyCitQZi5o b3VyPVBmLmhvdXJzPXNmLAorLy8gTWludXRlCitQZi5taW51dGU9UGYubWlu dXRlcz1MZiwKKy8vIFNlY29uZAorUGYuc2Vjb25kPVBmLnNlY29uZHM9TWYs CisvLyBNaWxsaXNlY29uZAorUGYubWlsbGlzZWNvbmQ9UGYubWlsbGlzZWNv bmRzPU9mLAorLy8gT2Zmc2V0CitQZi51dGNPZmZzZXQ9Q2IsUGYudXRjPUVi LFBmLmxvY2FsPUZiLFBmLnBhcnNlWm9uZT1HYixQZi5oYXNBbGlnbmVkSG91 ck9mZnNldD1IYixQZi5pc0RTVD1JYixQZi5pc0xvY2FsPUtiLFBmLmlzVXRj T2Zmc2V0PUxiLFBmLmlzVXRjPU1iLFBmLmlzVVRDPU1iLAorLy8gVGltZXpv bmUKK1BmLnpvbmVBYmJyPUhjLFBmLnpvbmVOYW1lPUljLAorLy8gRGVwcmVj YXRpb25zCitQZi5kYXRlcz13KCJkYXRlcyBhY2Nlc3NvciBpcyBkZXByZWNh dGVkLiBVc2UgZGF0ZSBpbnN0ZWFkLiIsS2YpLFBmLm1vbnRocz13KCJtb250 aHMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbnRoIGluc3RlYWQi LGphKSxQZi55ZWFycz13KCJ5ZWFycyBhY2Nlc3NvciBpcyBkZXByZWNhdGVk LiBVc2UgeWVhciBpbnN0ZWFkIixoZiksUGYuem9uZT13KCJtb21lbnQoKS56 b25lIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQoKS51dGNPZmZzZXQgaW5z dGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy96 b25lLyIsRGIpLFBmLmlzRFNUU2hpZnRlZD13KCJpc0RTVFNoaWZ0ZWQgaXMg ZGVwcmVjYXRlZC4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMv d2FybmluZ3MvZHN0LXNoaWZ0ZWQvIGZvciBtb3JlIGluZm9ybWF0aW9uIixK Yik7dmFyIFFmPVBmLFJmPUIucHJvdG90eXBlO1JmLmNhbGVuZGFyPUMsUmYu bG9uZ0RhdGVGb3JtYXQ9RCxSZi5pbnZhbGlkRGF0ZT1FLFJmLm9yZGluYWw9 RixSZi5wcmVwYXJzZT1MYyxSZi5wb3N0Zm9ybWF0PUxjLFJmLnJlbGF0aXZl VGltZT1HLFJmLnBhc3RGdXR1cmU9SCxSZi5zZXQ9eiwKKy8vIE1vbnRoCitS Zi5tb250aHM9ZWEsUmYubW9udGhzU2hvcnQ9ZmEsUmYubW9udGhzUGFyc2U9 aGEsUmYubW9udGhzUmVnZXg9bWEsUmYubW9udGhzU2hvcnRSZWdleD1sYSwK Ky8vIFdlZWsKK1JmLndlZWs9eGEsUmYuZmlyc3REYXlPZlllYXI9emEsUmYu Zmlyc3REYXlPZldlZWs9eWEsCisvLyBEYXkgb2YgV2VlaworUmYud2Vla2Rh eXM9RWEsUmYud2Vla2RheXNNaW49R2EsUmYud2Vla2RheXNTaG9ydD1GYSxS Zi53ZWVrZGF5c1BhcnNlPUlhLFJmLndlZWtkYXlzUmVnZXg9TWEsUmYud2Vl a2RheXNTaG9ydFJlZ2V4PU5hLFJmLndlZWtkYXlzTWluUmVnZXg9T2EsCisv LyBIb3VycworUmYuaXNQTT1VYSxSZi5tZXJpZGllbT1WYSxaYSgiZW4iLHtv cmRpbmFsUGFyc2U6L1xkezEsMn0odGh8c3R8bmR8cmQpLyxvcmRpbmFsOmZ1 bmN0aW9uKGEpe3ZhciBiPWElMTAsYz0xPT09dChhJTEwMC8xMCk/InRoIjox PT09Yj8ic3QiOjI9PT1iPyJuZCI6Mz09PWI/InJkIjoidGgiO3JldHVybiBh K2N9fSksCisvLyBTaWRlIGVmZmVjdCBpbXBvcnRzCithLmxhbmc9dygibW9t ZW50LmxhbmcgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGUgaW5z dGVhZC4iLFphKSxhLmxhbmdEYXRhPXcoIm1vbWVudC5sYW5nRGF0YSBpcyBk ZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZURhdGEgaW5zdGVhZC4iLGFi KTt2YXIgU2Y9TWF0aC5hYnMsVGY9Y2QoIm1zIiksVWY9Y2QoInMiKSxWZj1j ZCgibSIpLFdmPWNkKCJoIiksWGY9Y2QoImQiKSxZZj1jZCgidyIpLFpmPWNk KCJNIiksJGY9Y2QoInkiKSxfZj1lZCgibWlsbGlzZWNvbmRzIiksYWc9ZWQo InNlY29uZHMiKSxiZz1lZCgibWludXRlcyIpLGNnPWVkKCJob3VycyIpLGRn PWVkKCJkYXlzIiksZWc9ZWQoIm1vbnRocyIpLGZnPWVkKCJ5ZWFycyIpLGdn PU1hdGgucm91bmQsaGc9e3M6NDUsLy8gc2Vjb25kcyB0byBtaW51dGUKK206 NDUsLy8gbWludXRlcyB0byBob3VyCitoOjIyLC8vIGhvdXJzIHRvIGRheQor ZDoyNiwvLyBkYXlzIHRvIG1vbnRoCitNOjExfSxpZz1NYXRoLmFicyxqZz12 Yi5wcm90b3R5cGU7amcuYWJzPVVjLGpnLmFkZD1XYyxqZy5zdWJ0cmFjdD1Y YyxqZy5hcz1hZCxqZy5hc01pbGxpc2Vjb25kcz1UZixqZy5hc1NlY29uZHM9 VWYsamcuYXNNaW51dGVzPVZmLGpnLmFzSG91cnM9V2YsamcuYXNEYXlzPVhm LGpnLmFzV2Vla3M9WWYsamcuYXNNb250aHM9WmYsamcuYXNZZWFycz0kZixq Zy52YWx1ZU9mPWJkLGpnLl9idWJibGU9WmMsamcuZ2V0PWRkLGpnLm1pbGxp c2Vjb25kcz1fZixqZy5zZWNvbmRzPWFnLGpnLm1pbnV0ZXM9YmcsamcuaG91 cnM9Y2csamcuZGF5cz1kZyxqZy53ZWVrcz1mZCxqZy5tb250aHM9ZWcsamcu eWVhcnM9ZmcsamcuaHVtYW5pemU9a2QsamcudG9JU09TdHJpbmc9bGQsamcu dG9TdHJpbmc9bGQsamcudG9KU09OPWxkLGpnLmxvY2FsZT1qYyxqZy5sb2Nh bGVEYXRhPWtjLAorLy8gRGVwcmVjYXRpb25zCitqZy50b0lzb1N0cmluZz13 KCJ0b0lzb1N0cmluZygpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgdG9J U09TdHJpbmcoKSBpbnN0ZWFkIChub3RpY2UgdGhlIGNhcGl0YWxzKSIsbGQp LGpnLmxhbmc9SmYsCisvLyBTaWRlIGVmZmVjdCBpbXBvcnRzCisvLyBGT1JN QVRUSU5HCitUKCJYIiwwLDAsInVuaXgiKSxUKCJ4IiwwLDAsInZhbHVlT2Yi KSwKKy8vIFBBUlNJTkcKK1koIngiLE9lKSxZKCJYIixSZSksYWEoIlgiLGZ1 bmN0aW9uKGEsYixjKXtjLl9kPW5ldyBEYXRlKDFlMypwYXJzZUZsb2F0KGEs MTApKX0pLGFhKCJ4IixmdW5jdGlvbihhLGIsYyl7Yy5fZD1uZXcgRGF0ZSh0 KGEpKX0pLGEudmVyc2lvbj0iMi4xNS4wIixiKHJiKSxhLmZuPVFmLGEubWlu PXRiLGEubWF4PXViLGEubm93PURmLGEudXRjPWosYS51bml4PUpjLGEubW9u dGhzPVBjLGEuaXNEYXRlPWYsYS5sb2NhbGU9WmEsYS5pbnZhbGlkPW4sYS5k dXJhdGlvbj1OYixhLmlzTW9tZW50PXIsYS53ZWVrZGF5cz1SYyxhLnBhcnNl Wm9uZT1LYyxhLmxvY2FsZURhdGE9YWIsYS5pc0R1cmF0aW9uPXdiLGEubW9u dGhzU2hvcnQ9UWMsYS53ZWVrZGF5c01pbj1UYyxhLmRlZmluZUxvY2FsZT0k YSxhLnVwZGF0ZUxvY2FsZT1fYSxhLmxvY2FsZXM9YmIsYS53ZWVrZGF5c1No b3J0PVNjLGEubm9ybWFsaXplVW5pdHM9SixhLnJlbGF0aXZlVGltZVJvdW5k aW5nPWlkLGEucmVsYXRpdmVUaW1lVGhyZXNob2xkPWpkLGEuY2FsZW5kYXJG b3JtYXQ9VGIsYS5wcm90b3R5cGU9UWY7dmFyIGtnPWEsbGc9KGtnLmRlZmlu ZUxvY2FsZSgiYWYiLHttb250aHM6IkphbnVhcmllX0ZlYnJ1YXJpZV9NYWFy dF9BcHJpbF9NZWlfSnVuaWVfSnVsaWVfQXVndXN0dXNfU2VwdGVtYmVyX09r dG9iZXJfTm92ZW1iZXJfRGVzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hv cnQ6Ikphbl9GZWJfTXJ0X0Fwcl9NZWlfSnVuX0p1bF9BdWdfU2VwX09rdF9O b3ZfRGVzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTb25kYWdfTWFhbmRhZ19E aW5zZGFnX1dvZW5zZGFnX0RvbmRlcmRhZ19WcnlkYWdfU2F0ZXJkYWciLnNw bGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU29uX01hYV9EaW5fV29lX0Rvbl9W cnlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTb19NYV9EaV9Xb19E b19Wcl9TYSIuc3BsaXQoIl8iKSxtZXJpZGllbVBhcnNlOi92bXxubS9pLGlz UE06ZnVuY3Rpb24oYSl7cmV0dXJuL15ubSQvaS50ZXN0KGEpfSxtZXJpZGll bTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDEyPmE/Yz8idm0iOiJWTSI6Yz8i bm0iOiJOTSJ9LGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6 bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJE IE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6 bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1ZhbmRhZyBvbV0gTFQiLG5leHRE YXk6IltNw7RyZSBvbV0gTFQiLG5leHRXZWVrOiJkZGRkIFtvbV0gTFQiLGxh c3REYXk6IltHaXN0ZXIgb21dIExUIixsYXN0V2VlazoiW0xhYXNdIGRkZGQg W29tXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi b29yICVzIixwYXN0OiIlcyBnZWxlZGUiLHM6IiduIHBhYXIgc2Vrb25kZXMi LG06IiduIG1pbnV1dCIsbW06IiVkIG1pbnV0ZSIsaDoiJ24gdXVyIixoaDoi JWQgdXJlIixkOiInbiBkYWciLGRkOiIlZCBkYWUiLE06IiduIG1hYW5kIixN TToiJWQgbWFhbmRlIix5OiInbiBqYWFyIix5eToiJWQgamFhciJ9LG9yZGlu YWxQYXJzZTovXGR7MSwyfShzdGV8ZGUpLyxvcmRpbmFsOmZ1bmN0aW9uKGEp e3JldHVybiBhKygxPT09YXx8OD09PWF8fGE+PTIwPyJzdGUiOiJkZSIpfSx3 ZWVrOntkb3c6MSwvLyBNYWFuZGFnIGlzIGRpZSBlZXJzdGUgZGFnIHZhbiBk aWUgd2Vlay4KK2RveTo0fX0pLHsxOiIxIiwyOiIyIiwzOiIzIiw0OiI0Iiw1 OiI1Iiw2OiI2Iiw3OiI3Iiw4OiI4Iiw5OiI5IiwwOiIwIn0pLG1nPWZ1bmN0 aW9uKGEpe3JldHVybiAwPT09YT8wOjE9PT1hPzE6Mj09PWE/MjphJTEwMD49 MyYmMTA+PWElMTAwPzM6YSUxMDA+PTExPzQ6NX0sbmc9e3M6WyLYo9mC2YQg 2YXZhiDYq9in2YbZitipIiwi2KvYp9mG2YrYqSDZiNin2K3Yr9ipIixbItir 2KfZhtmK2KrYp9mGIiwi2KvYp9mG2YrYqtmK2YYiXSwiJWQg2KvZiNin2YYi LCIlZCDYq9in2YbZitipIiwiJWQg2KvYp9mG2YrYqSJdLG06WyLYo9mC2YQg 2YXZhiDYr9mC2YrZgtipIiwi2K/ZgtmK2YLYqSDZiNin2K3Yr9ipIixbItiv 2YLZitmC2KrYp9mGIiwi2K/ZgtmK2YLYqtmK2YYiXSwiJWQg2K/Zgtin2KbZ giIsIiVkINiv2YLZitmC2KkiLCIlZCDYr9mC2YrZgtipIl0saDpbItij2YLZ hCDZhdmGINiz2KfYudipIiwi2LPYp9i52Kkg2YjYp9it2K/YqSIsWyLYs9in 2LnYqtin2YYiLCLYs9in2LnYqtmK2YYiXSwiJWQg2LPYp9i52KfYqiIsIiVk INiz2KfYudipIiwiJWQg2LPYp9i52KkiXSxkOlsi2KPZgtmEINmF2YYg2YrZ iNmFIiwi2YrZiNmFINmI2KfYrdivIixbItmK2YjZhdin2YYiLCLZitmI2YXZ itmGIl0sIiVkINij2YrYp9mFIiwiJWQg2YrZiNmF2YvYpyIsIiVkINmK2YjZ hSJdLE06WyLYo9mC2YQg2YXZhiDYtNmH2LEiLCLYtNmH2LEg2YjYp9it2K8i LFsi2LTZh9ix2KfZhiIsIti02YfYsdmK2YYiXSwiJWQg2KPYtNmH2LEiLCIl ZCDYtNmH2LHYpyIsIiVkINi02YfYsSJdLHk6WyLYo9mC2YQg2YXZhiDYudin 2YUiLCLYudin2YUg2YjYp9it2K8iLFsi2LnYp9mF2KfZhiIsIti52KfZhdmK 2YYiXSwiJWQg2KPYudmI2KfZhSIsIiVkINi52KfZhdmL2KciLCIlZCDYudin 2YUiXX0sb2c9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIsYyxkLGUp e3ZhciBmPW1nKGIpLGc9bmdbYV1bbWcoYildO3JldHVybiAyPT09ZiYmKGc9 Z1tjPzA6MV0pLGcucmVwbGFjZSgvJWQvaSxiKX19LHBnPVsi2YrZhtin2YrY sSIsItmB2KjYsdin2YrYsSIsItmF2KfYsdizIiwi2KPYqNix2YrZhCIsItmF 2KfZitmIIiwi2YrZiNmG2YrZiCIsItmK2YjZhNmK2YgiLCLYo9i62LPYt9iz Iiwi2LPYqNiq2YXYqNixIiwi2KPZg9iq2YjYqNixIiwi2YbZiNmB2YXYqNix Iiwi2K/Zitiz2YXYqNixIl0scWc9KGtnLmRlZmluZUxvY2FsZSgiYXItbHki LHttb250aHM6cGcsbW9udGhzU2hvcnQ6cGcsd2Vla2RheXM6Itin2YTYo9it 2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio 2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqiIu c3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLYo9it2K9f2KXYq9mG2YrZhl/Y q9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz 2KjYqiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi2K1f2YZf2Ktf2LFf2K5f 2Kxf2LMiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdE YXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkQv4oCP TS/igI9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkg SEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGll bVBhcnNlOi/YtXzZhS8saXNQTTpmdW5jdGlvbihhKXtyZXR1cm4i2YUiPT09 YX0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMj5hPyLYtSI6 ItmFIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvYp9mE2YrZiNmFINi52YbYryDY p9mE2LPYp9i52KldIExUIixuZXh0RGF5OiJb2LrYr9mL2Kcg2LnZhtivINin 2YTYs9in2LnYqV0gTFQiLG5leHRXZWVrOiJkZGRkIFvYudmG2K8g2KfZhNiz 2KfYudipXSBMVCIsbGFzdERheToiW9ij2YXYsyDYudmG2K8g2KfZhNiz2KfY udipXSBMVCIsbGFzdFdlZWs6ImRkZGQgW9i52YbYryDYp9mE2LPYp9i52Kld IExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLYqNi5 2K8gJXMiLHBhc3Q6ItmF2YbYsCAlcyIsczpvZygicyIpLG06b2coIm0iKSxt bTpvZygibSIpLGg6b2coImgiKSxoaDpvZygiaCIpLGQ6b2coImQiKSxkZDpv ZygiZCIpLE06b2coIk0iKSxNTTpvZygiTSIpLHk6b2coInkiKSx5eTpvZygi eSIpfSxwcmVwYXJzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9c dTIwMGYvZywiIikucmVwbGFjZSgv2IwvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1 bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oYSl7 cmV0dXJuIGxnW2FdfSkucmVwbGFjZSgvLC9nLCLYjCIpfSx3ZWVrOntkb3c6 NiwvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgor ZG95OjEyfX0pLGtnLmRlZmluZUxvY2FsZSgiYXItbWEiLHttb250aHM6ItmK 2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXY p9mKX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiNiyX9i62LTYql/YtNiq2YbYqNix X9ij2YPYqtmI2KjYsV/ZhtmI2YbYqNixX9iv2KzZhtio2LEiLnNwbGl0KCJf IiksbW9udGhzU2hvcnQ6ItmK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfY sdizX9ij2KjYsdmK2YRf2YXYp9mKX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiNiy X9i62LTYql/YtNiq2YbYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YbYqNixX9iv 2KzZhtio2LEiLnNwbGl0KCJfIiksd2Vla2RheXM6Itin2YTYo9it2K9f2KfZ hNil2KrZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ih X9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqiIuc3BsaXQo Il8iKSx3ZWVrZGF5c1Nob3J0OiLYp9it2K9f2KfYqtmG2YrZhl/Yq9mE2KfY q9in2KFf2KfYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqiIu c3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi2K1f2YZf2Ktf2LFf2K5f2Kxf2LMi LnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9y bWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVki LExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExM TDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5 OiJb2KfZhNmK2YjZhSDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbmV4dERh eToiW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbmV4dFdlZWs6 ImRkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUIixsYXN0RGF5OiJb2KPZ hdizINi52YTZiSDYp9mE2LPYp9i52KldIExUIixsYXN0V2VlazoiZGRkZCBb 2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRp dmVUaW1lOntmdXR1cmU6ItmB2YogJXMiLHBhc3Q6ItmF2YbYsCAlcyIsczoi 2KvZiNin2YYiLG06Itiv2YLZitmC2KkiLG1tOiIlZCDYr9mC2KfYptmCIixo OiLYs9in2LnYqSIsaGg6IiVkINiz2KfYudin2KoiLGQ6ItmK2YjZhSIsZGQ6 IiVkINij2YrYp9mFIixNOiLYtNmH2LEiLE1NOiIlZCDYo9i02YfYsSIseToi 2LPZhtipIix5eToiJWQg2LPZhtmI2KfYqiJ9LHdlZWs6e2Rvdzo2LC8vIFNh dHVyZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCitkb3k6MTJ9 fSksezE6ItmhIiwyOiLZoiIsMzoi2aMiLDQ6ItmkIiw1OiLZpSIsNjoi2aYi LDc6ItmnIiw4OiLZqCIsOToi2akiLDA6ItmgIn0pLHJnPXsi2aEiOiIxIiwi 2aIiOiIyIiwi2aMiOiIzIiwi2aQiOiI0Iiwi2aUiOiI1Iiwi2aYiOiI2Iiwi 2aciOiI3Iiwi2agiOiI4Iiwi2akiOiI5Iiwi2aAiOiIwIn0sc2c9KGtnLmRl ZmluZUxvY2FsZSgiYXItc2EiLHttb250aHM6ItmK2YbYp9mK2LFf2YHYqNix 2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mK2Yhf2YrZiNmG2YrZ iF/ZitmI2YTZitmIX9ij2LrYs9i32LNf2LPYqNiq2YXYqNixX9ij2YPYqtmI 2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixIi5zcGxpdCgiXyIpLG1v bnRoc1Nob3J0OiLZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Y o9io2LHZitmEX9mF2KfZitmIX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiF/Yo9i6 2LPYt9izX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNix X9iv2YrYs9mF2KjYsSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi2KfZhNij2K3Y r1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjY udin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqIi5z cGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Itij2K3Yr1/Ypdir2YbZitmGX9ir 2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPY qNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLYrV/Zhl/Yq1/YsV/Yrl/Y rF/YsyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0Rh dGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0v WVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1t IixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJz ZTov2LV82YUvLGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJuItmFIj09PWF9LG1l cmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMTI+YT8i2LUiOiLZhSJ9 LGNhbGVuZGFyOntzYW1lRGF5OiJb2KfZhNmK2YjZhSDYudmE2Ykg2KfZhNiz 2KfYudipXSBMVCIsbmV4dERheToiW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfY udipXSBMVCIsbmV4dFdlZWs6ImRkZGQgW9i52YTZiSDYp9mE2LPYp9i52Kld IExUIixsYXN0RGF5OiJb2KPZhdizINi52YTZiSDYp9mE2LPYp9i52KldIExU IixsYXN0V2VlazoiZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLHNh bWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ItmB2YogJXMiLHBh c3Q6ItmF2YbYsCAlcyIsczoi2KvZiNin2YYiLG06Itiv2YLZitmC2KkiLG1t OiIlZCDYr9mC2KfYptmCIixoOiLYs9in2LnYqSIsaGg6IiVkINiz2KfYudin 2KoiLGQ6ItmK2YjZhSIsZGQ6IiVkINij2YrYp9mFIixNOiLYtNmH2LEiLE1N OiIlZCDYo9i02YfYsSIseToi2LPZhtipIix5eToiJWQg2LPZhtmI2KfYqiJ9 LHByZXBhcnNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1vZodmi 2aPZpNml2abZp9mo2anZoF0vZyxmdW5jdGlvbihhKXtyZXR1cm4gcmdbYV19 KS5yZXBsYWNlKC/YjC9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oYSl7 cmV0dXJuIGEucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihhKXtyZXR1cm4gcWdb YV19KS5yZXBsYWNlKC8sL2csItiMIil9LHdlZWs6e2Rvdzo2LC8vIFNhdHVy ZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCitkb3k6MTJ9fSks a2cuZGVmaW5lTG9jYWxlKCJhci10biIse21vbnRoczoi2KzYp9mG2YHZil/Z gdmK2YHYsdmKX9mF2KfYsdizX9ij2YHYsdmK2YRf2YXYp9mKX9is2YjYp9mG X9is2YjZitmE2YrYqV/Yo9mI2Kpf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjY sV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixIi5zcGxpdCgiXyIpLG1vbnRo c1Nob3J0OiLYrNin2YbZgdmKX9mB2YrZgdix2Ypf2YXYp9ix2LNf2KPZgdix 2YrZhF/Zhdin2Ypf2KzZiNin2YZf2KzZiNmK2YTZitipX9ij2YjYql/Ys9io 2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio 2LEiLnNwbGl0KCJfIiksd2Vla2RheXM6Itin2YTYo9it2K9f2KfZhNil2KvZ htmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTY rtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqiIuc3BsaXQoIl8iKSx3 ZWVrZGF5c1Nob3J0OiLYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf 2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqiIuc3BsaXQo Il8iKSx3ZWVrZGF5c01pbjoi2K1f2YZf2Ktf2LFf2K5f2Kxf2LMiLnNwbGl0 KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntM VDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJE IE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRk ZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb2KfZ hNmK2YjZhSDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbmV4dERheToiW9i6 2K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbmV4dFdlZWs6ImRkZGQg W9i52YTZiSDYp9mE2LPYp9i52KldIExUIixsYXN0RGF5OiJb2KPZhdizINi5 2YTZiSDYp9mE2LPYp9i52KldIExUIixsYXN0V2VlazoiZGRkZCBb2LnZhNmJ INin2YTYs9in2LnYqV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1l OntmdXR1cmU6ItmB2YogJXMiLHBhc3Q6ItmF2YbYsCAlcyIsczoi2KvZiNin 2YYiLG06Itiv2YLZitmC2KkiLG1tOiIlZCDYr9mC2KfYptmCIixoOiLYs9in 2LnYqSIsaGg6IiVkINiz2KfYudin2KoiLGQ6ItmK2YjZhSIsZGQ6IiVkINij 2YrYp9mFIixNOiLYtNmH2LEiLE1NOiIlZCDYo9i02YfYsSIseToi2LPZhtip Iix5eToiJWQg2LPZhtmI2KfYqiJ9LHdlZWs6e2RvdzoxLC8vIE1vbmRheSBp cyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorZG95OjR9fSksezE6Itmh IiwyOiLZoiIsMzoi2aMiLDQ6ItmkIiw1OiLZpSIsNjoi2aYiLDc6ItmnIiw4 OiLZqCIsOToi2akiLDA6ItmgIn0pLHRnPXsi2aEiOiIxIiwi2aIiOiIyIiwi 2aMiOiIzIiwi2aQiOiI0Iiwi2aUiOiI1Iiwi2aYiOiI2Iiwi2aciOiI3Iiwi 2agiOiI4Iiwi2akiOiI5Iiwi2aAiOiIwIn0sdWc9ZnVuY3Rpb24oYSl7cmV0 dXJuIDA9PT1hPzA6MT09PWE/MToyPT09YT8yOmElMTAwPj0zJiYxMD49YSUx MDA/MzphJTEwMD49MTE/NDo1fSx2Zz17czpbItij2YLZhCDZhdmGINir2KfZ htmK2KkiLCLYq9in2YbZitipINmI2KfYrdiv2KkiLFsi2KvYp9mG2YrYqtin 2YYiLCLYq9in2YbZitiq2YrZhiJdLCIlZCDYq9mI2KfZhiIsIiVkINir2KfZ htmK2KkiLCIlZCDYq9in2YbZitipIl0sbTpbItij2YLZhCDZhdmGINiv2YLZ itmC2KkiLCLYr9mC2YrZgtipINmI2KfYrdiv2KkiLFsi2K/ZgtmK2YLYqtin 2YYiLCLYr9mC2YrZgtiq2YrZhiJdLCIlZCDYr9mC2KfYptmCIiwiJWQg2K/Z gtmK2YLYqSIsIiVkINiv2YLZitmC2KkiXSxoOlsi2KPZgtmEINmF2YYg2LPY p9i52KkiLCLYs9in2LnYqSDZiNin2K3Yr9ipIixbItiz2KfYudiq2KfZhiIs Itiz2KfYudiq2YrZhiJdLCIlZCDYs9in2LnYp9iqIiwiJWQg2LPYp9i52Kki LCIlZCDYs9in2LnYqSJdLGQ6WyLYo9mC2YQg2YXZhiDZitmI2YUiLCLZitmI 2YUg2YjYp9it2K8iLFsi2YrZiNmF2KfZhiIsItmK2YjZhdmK2YYiXSwiJWQg 2KPZitin2YUiLCIlZCDZitmI2YXZi9inIiwiJWQg2YrZiNmFIl0sTTpbItij 2YLZhCDZhdmGINi02YfYsSIsIti02YfYsSDZiNin2K3YryIsWyLYtNmH2LHY p9mGIiwi2LTZh9ix2YrZhiJdLCIlZCDYo9i02YfYsSIsIiVkINi02YfYsdin IiwiJWQg2LTZh9ixIl0seTpbItij2YLZhCDZhdmGINi52KfZhSIsIti52KfZ hSDZiNin2K3YryIsWyLYudin2YXYp9mGIiwi2LnYp9mF2YrZhiJdLCIlZCDY o9i52YjYp9mFIiwiJWQg2LnYp9mF2YvYpyIsIiVkINi52KfZhSJdfSx3Zz1m dW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYixjLGQsZSl7dmFyIGY9dWco YiksZz12Z1thXVt1ZyhiKV07cmV0dXJuIDI9PT1mJiYoZz1nW2M/MDoxXSks Zy5yZXBsYWNlKC8lZC9pLGIpfX0seGc9WyLZg9in2YbZiNmGINin2YTYq9in 2YbZiiDZitmG2KfZitixIiwi2LTYqNin2Lcg2YHYqNix2KfZitixIiwi2KLY sNin2LEg2YXYp9ix2LMiLCLZhtmK2LPYp9mGINij2KjYsdmK2YQiLCLYo9mK 2KfYsSDZhdin2YrZiCIsItit2LLZitix2KfZhiDZitmI2YbZitmIIiwi2KrZ hdmI2LIg2YrZiNmE2YrZiCIsItii2Kgg2KPYutiz2LfYsyIsItij2YrZhNmI 2YQg2LPYqNiq2YXYqNixIiwi2KrYtNix2YrZhiDYp9mE2KPZiNmEINij2YPY qtmI2KjYsSIsItiq2LTYsdmK2YYg2KfZhNir2KfZhtmKINmG2YjZgdmF2KjY sSIsItmD2KfZhtmI2YYg2KfZhNij2YjZhCDYr9mK2LPZhdio2LEiXSx5Zz0o a2cuZGVmaW5lTG9jYWxlKCJhciIse21vbnRoczp4Zyxtb250aHNTaG9ydDp4 Zyx3ZWVrZGF5czoi2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZ hNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTY rNmF2LnYqV/Yp9mE2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6 Itij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf 2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlz TWluOiLYrV/Zhl/Yq1/YsV/Yrl/YrF/YsyIuc3BsaXQoIl8iKSx3ZWVrZGF5 c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRT OiJISDptbTpzcyIsTDoiRC/igI9NL+KAj1lZWVkiLExMOiJEIE1NTU0gWVlZ WSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0g WVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L9i1fNmFLyxpc1BNOmZ1bmN0 aW9uKGEpe3JldHVybiLZhSI9PT1hfSxtZXJpZGllbTpmdW5jdGlvbihhLGIs Yyl7cmV0dXJuIDEyPmE/Iti1Ijoi2YUifSxjYWxlbmRhcjp7c2FtZURheToi W9in2YTZitmI2YUg2LnZhtivINin2YTYs9in2LnYqV0gTFQiLG5leHREYXk6 IlvYutiv2YvYpyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCIsbmV4dFdlZWs6 ImRkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUIixsYXN0RGF5OiJb2KPZ hdizINi52YbYryDYp9mE2LPYp9i52KldIExUIixsYXN0V2VlazoiZGRkZCBb 2LnZhtivINin2YTYs9in2LnYqV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRp dmVUaW1lOntmdXR1cmU6Itio2LnYryAlcyIscGFzdDoi2YXZhtiwICVzIixz OndnKCJzIiksbTp3ZygibSIpLG1tOndnKCJtIiksaDp3ZygiaCIpLGhoOndn KCJoIiksZDp3ZygiZCIpLGRkOndnKCJkIiksTTp3ZygiTSIpLE1NOndnKCJN IikseTp3ZygieSIpLHl5OndnKCJ5Iil9LHByZXBhcnNlOmZ1bmN0aW9uKGEp e3JldHVybiBhLnJlcGxhY2UoL1x1MjAwZi9nLCIiKS5yZXBsYWNlKC9b2aHZ otmj2aTZpdmm2afZqNmp2aBdL2csZnVuY3Rpb24oYSl7cmV0dXJuIHRnW2Fd fSkucmVwbGFjZSgv2IwvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEp e3JldHVybiBhLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oYSl7cmV0dXJuIHNn W2FdfSkucmVwbGFjZSgvLC9nLCLYjCIpfSx3ZWVrOntkb3c6NiwvLyBTYXR1 cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorZG95OjEyfX0p LHsxOiItaW5jaSIsNToiLWluY2kiLDg6Ii1pbmNpIiw3MDoiLWluY2kiLDgw OiItaW5jaSIsMjoiLW5jaSIsNzoiLW5jaSIsMjA6Ii1uY2kiLDUwOiItbmNp IiwzOiItw7xuY8O8Iiw0OiItw7xuY8O8IiwxMDA6Ii3DvG5jw7wiLDY6Ii1u Y8SxIiw5OiItdW5jdSIsMTA6Ii11bmN1IiwzMDoiLXVuY3UiLDYwOiItxLFu Y8SxIiw5MDoiLcSxbmPEsSJ9KSx6Zz0oa2cuZGVmaW5lTG9jYWxlKCJheiIs e21vbnRoczoieWFudmFyX2ZldnJhbF9tYXJ0X2FwcmVsX21heV9peXVuX2l5 dWxfYXZxdXN0X3NlbnR5YWJyX29rdHlhYnJfbm95YWJyX2Rla2FiciIuc3Bs aXQoIl8iKSxtb250aHNTaG9ydDoieWFuX2Zldl9tYXJfYXByX21heV9peW5f aXlsX2F2cV9zZW5fb2t0X25veV9kZWsiLnNwbGl0KCJfIiksd2Vla2RheXM6 IkJhemFyX0JhemFyIGVydMmZc2lfw4fJmXLFn8mZbmLJmSBheMWfYW3EsV/D h8mZcsWfyZluYsmZX0PDvG3JmSBheMWfYW3EsV9Dw7xtyZlfxZ7JmW5iyZki LnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiQmF6X0J6RV/Dh0F4X8OHyZly X0NBeF9Dw7xtX8WeyZluIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJCel9C RV/Dh0Ffw4fJmV9DQV9Dw7xfxZ7JmSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Bh cnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJI SDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6 IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBI SDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbYnVnw7xuIHNhYXRdIExUIixu ZXh0RGF5OiJbc2FiYWggc2FhdF0gTFQiLG5leHRXZWVrOiJbZ8mZbMmZbiBo yZlmdMmZXSBkZGRkIFtzYWF0XSBMVCIsbGFzdERheToiW2TDvG7JmW5dIExU IixsYXN0V2VlazoiW2tlw6fJmW4gaMmZZnTJmV0gZGRkZCBbc2FhdF0gTFQi LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIHNvbnJh IixwYXN0OiIlcyDJmXZ2yZlsIixzOiJiaXJuZcOnyZkgc2FuaXl5yZkiLG06 ImJpciBkyZlxaXHJmSIsbW06IiVkIGTJmXFpccmZIixoOiJiaXIgc2FhdCIs aGg6IiVkIHNhYXQiLGQ6ImJpciBnw7xuIixkZDoiJWQgZ8O8biIsTToiYmly IGF5IixNTToiJWQgYXkiLHk6ImJpciBpbCIseXk6IiVkIGlsIn0sbWVyaWRp ZW1QYXJzZTovZ2VjyZl8c8mZaMmZcnxnw7xuZMO8enxheMWfYW0vLGlzUE06 ZnVuY3Rpb24oYSl7cmV0dXJuL14oZ8O8bmTDvHp8YXjFn2FtKSQvLnRlc3Qo YSl9LG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gND5hPyJnZWPJ mSI6MTI+YT8ic8mZaMmZciI6MTc+YT8iZ8O8bmTDvHoiOiJheMWfYW0ifSxv cmRpbmFsUGFyc2U6L1xkezEsMn0tKMSxbmPEsXxpbmNpfG5jaXzDvG5jw7x8 bmPEsXx1bmN1KS8sb3JkaW5hbDpmdW5jdGlvbihhKXtpZigwPT09YSkvLyBz cGVjaWFsIGNhc2UgZm9yIHplcm8KK3JldHVybiBhKyItxLFuY8SxIjt2YXIg Yj1hJTEwLGM9YSUxMDAtYixkPWE+PTEwMD8xMDA6bnVsbDtyZXR1cm4gYSso eWdbYl18fHlnW2NdfHx5Z1tkXSl9LHdlZWs6e2RvdzoxLC8vIE1vbmRheSBp cyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorZG95Ojd9fSksa2cuZGVm aW5lTG9jYWxlKCJiZSIse21vbnRoczp7Zm9ybWF0OiLRgdGC0YPQtNC30LXQ vdGPX9C70Y7RgtCw0LPQsF/RgdCw0LrQsNCy0ZbQutCwX9C60YDQsNGB0LDQ stGW0LrQsF/RgtGA0LDRntC90Y9f0YfRjdGA0LLQtdC90Y9f0LvRltC/0LXQ vdGPX9C20L3RltGe0L3Rj1/QstC10YDQsNGB0L3Rj1/QutCw0YHRgtGA0YvR h9C90ZbQutCwX9C70ZbRgdGC0LDQv9Cw0LTQsF/RgdC90LXQttC90Y8iLnNw bGl0KCJfIiksc3RhbmRhbG9uZToi0YHRgtGD0LTQt9C10L3RjF/Qu9GO0YLR i1/RgdCw0LrQsNCy0ZbQul/QutGA0LDRgdCw0LLRltC6X9GC0YDQsNCy0LXQ vdGMX9GH0Y3RgNCy0LXQvdGMX9C70ZbQv9C10L3RjF/QttC90ZbQstC10L3R jF/QstC10YDQsNGB0LXQvdGMX9C60LDRgdGC0YDRi9GH0L3RltC6X9C70ZbR gdGC0LDQv9Cw0LRf0YHQvdC10LbQsNC90YwiLnNwbGl0KCJfIil9LG1vbnRo c1Nob3J0OiLRgdGC0YPQtF/Qu9GO0YJf0YHQsNC6X9C60YDQsNGBX9GC0YDQ sNCyX9GH0Y3RgNCyX9C70ZbQv1/QttC90ZbQsl/QstC10YBf0LrQsNGB0YJf 0LvRltGB0YJf0YHQvdC10LYiLnNwbGl0KCJfIiksd2Vla2RheXM6e2Zvcm1h dDoi0L3Rj9C00LfQtdC70Y5f0L/QsNC90Y/QtNC30LXQu9Cw0Lpf0LDRntGC 0L7RgNCw0Lpf0YHQtdGA0LDQtNGDX9GH0LDRhtCy0LXRgF/Qv9GP0YLQvdGW 0YbRg1/RgdGD0LHQvtGC0YMiLnNwbGl0KCJfIiksc3RhbmRhbG9uZToi0L3R j9C00LfQtdC70Y9f0L/QsNC90Y/QtNC30LXQu9Cw0Lpf0LDRntGC0L7RgNCw 0Lpf0YHQtdGA0LDQtNCwX9GH0LDRhtCy0LXRgF/Qv9GP0YLQvdGW0YbQsF/R gdGD0LHQvtGC0LAiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L1xbID9b0JLQsl0g Pyg/OtC80ZbQvdGD0LvRg9GOfNC90LDRgdGC0YPQv9C90YPRjik/ID9cXSA/ ZGRkZC99LHdlZWtkYXlzU2hvcnQ6ItC90LRf0L/QvV/QsNGCX9GB0YBf0YfR hl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItC90LRf0L/Q vV/QsNGCX9GB0YBf0YfRhl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksbG9uZ0Rh dGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0u WVlZWSIsTEw6IkQgTU1NTSBZWVlZINCzLiIsTExMOiJEIE1NTU0gWVlZWSDQ sy4sIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSDQsy4sIEhIOm1t In0sY2FsZW5kYXI6e3NhbWVEYXk6IlvQodGR0L3QvdGPINGeXSBMVCIsbmV4 dERheToiW9CX0LDRntGC0YDQsCDRnl0gTFQiLGxhc3REYXk6IlvQo9GH0L7R gNCwINGeXSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW9CjXSBk ZGRkIFvRnl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlz LmRheSgpKXtjYXNlIDA6Y2FzZSAzOmNhc2UgNTpjYXNlIDY6cmV0dXJuIlvQ oyDQvNGW0L3Rg9C70YPRjl0gZGRkZCBb0Z5dIExUIjtjYXNlIDE6Y2FzZSAy OmNhc2UgNDpyZXR1cm4iW9CjINC80ZbQvdGD0LvRi10gZGRkZCBb0Z5dIExU In19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ItC/0YDQ sNC3ICVzIixwYXN0OiIlcyDRgtCw0LzRgyIsczoi0L3QtdC60LDQu9GM0LrR liDRgdC10LrRg9C90LQiLG06bmQsbW06bmQsaDpuZCxoaDpuZCxkOiLQtNC3 0LXQvdGMIixkZDpuZCxNOiLQvNC10YHRj9GGIixNTTpuZCx5OiLQs9C+0LQi LHl5Om5kfSxtZXJpZGllbVBhcnNlOi/QvdC+0YfRi3zRgNCw0L3RltGG0Yt8 0LTQvdGPfNCy0LXRh9Cw0YDQsC8saXNQTTpmdW5jdGlvbihhKXtyZXR1cm4v XijQtNC90Y980LLQtdGH0LDRgNCwKSQvLnRlc3QoYSl9LG1lcmlkaWVtOmZ1 bmN0aW9uKGEsYixjKXtyZXR1cm4gND5hPyLQvdC+0YfRiyI6MTI+YT8i0YDQ sNC90ZbRhtGLIjoxNz5hPyLQtNC90Y8iOiLQstC10YfQsNGA0LAifSxvcmRp bmFsUGFyc2U6L1xkezEsMn0tKNGWfNGLfNCz0LApLyxvcmRpbmFsOmZ1bmN0 aW9uKGEsYil7c3dpdGNoKGIpe2Nhc2UiTSI6Y2FzZSJkIjpjYXNlIkRERCI6 Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBhJTEwIT09MiYmYSUxMCE9PTN8fGEl MTAwPT09MTJ8fGElMTAwPT09MTM/YSsiLdGLIjphKyIt0ZYiO2Nhc2UiRCI6 cmV0dXJuIGErIi3Qs9CwIjtkZWZhdWx0OnJldHVybiBhfX0sd2Vlazp7ZG93 OjEsLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCitk b3k6N319KSxrZy5kZWZpbmVMb2NhbGUoImJnIix7bW9udGhzOiLRj9C90YPQ sNGA0Lhf0YTQtdCy0YDRg9Cw0YDQuF/QvNCw0YDRgl/QsNC/0YDQuNC7X9C8 0LDQuV/RjtC90Lhf0Y7Qu9C4X9Cw0LLQs9GD0YHRgl/RgdC10L/RgtC10LzQ stGA0Lhf0L7QutGC0L7QvNCy0YDQuF/QvdC+0LXQvNCy0YDQuF/QtNC10LrQ tdC80LLRgNC4Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLRj9C90YBf0YTQ tdCyX9C80LDRgF/QsNC/0YBf0LzQsNC5X9GO0L3QuF/RjtC70Lhf0LDQstCz X9GB0LXQv1/QvtC60YJf0L3QvtC1X9C00LXQuiIuc3BsaXQoIl8iKSx3ZWVr ZGF5czoi0L3QtdC00LXQu9GPX9C/0L7QvdC10LTQtdC70L3QuNC6X9Cy0YLQ vtGA0L3QuNC6X9GB0YDRj9C00LBf0YfQtdGC0LLRitGA0YLRitC6X9C/0LXR gtGK0Lpf0YHRitCx0L7RgtCwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6 ItC90LXQtF/Qv9C+0L1f0LLRgtC+X9GB0YDRj1/Rh9C10YJf0L/QtdGCX9GB 0YrQsSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi0L3QtF/Qv9C9X9Cy0YJf 0YHRgF/Rh9GCX9C/0YJf0YHQsSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1h dDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiRC5NTS5ZWVlZIixMTDoi RCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRk ZCwgRCBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb0JTQ vdC10YEg0LJdIExUIixuZXh0RGF5OiJb0KPRgtGA0LUg0LJdIExUIixuZXh0 V2VlazoiZGRkZCBb0LJdIExUIixsYXN0RGF5OiJb0JLRh9C10YDQsCDQsl0g TFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nh c2UgMDpjYXNlIDM6Y2FzZSA2OnJldHVybiJb0JIg0LjQt9C80LjQvdCw0LvQ sNGC0LBdIGRkZGQgW9CyXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2Fz ZSA1OnJldHVybiJb0JIg0LjQt9C80LjQvdCw0LvQuNGPXSBkZGRkIFvQsl0g TFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi0YHQ u9C10LQgJXMiLHBhc3Q6ItC/0YDQtdC00LggJXMiLHM6ItC90Y/QutC+0LvQ utC+INGB0LXQutGD0L3QtNC4IixtOiLQvNC40L3Rg9GC0LAiLG1tOiIlZCDQ vNC40L3Rg9GC0LgiLGg6ItGH0LDRgSIsaGg6IiVkINGH0LDRgdCwIixkOiLQ tNC10L0iLGRkOiIlZCDQtNC90LgiLE06ItC80LXRgdC10YYiLE1NOiIlZCDQ vNC10YHQtdGG0LAiLHk6ItCz0L7QtNC40L3QsCIseXk6IiVkINCz0L7QtNC4 0L3QuCJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfS0o0LXQsnzQtdC9fNGC0Lh8 0LLQuHzRgNC4fNC80LgpLyxvcmRpbmFsOmZ1bmN0aW9uKGEpe3ZhciBiPWEl MTAsYz1hJTEwMDtyZXR1cm4gMD09PWE/YSsiLdC10LIiOjA9PT1jP2ErIi3Q tdC9IjpjPjEwJiYyMD5jP2ErIi3RgtC4IjoxPT09Yj9hKyIt0LLQuCI6Mj09 PWI/YSsiLdGA0LgiOjc9PT1ifHw4PT09Yj9hKyIt0LzQuCI6YSsiLdGC0Lgi fSx3ZWVrOntkb3c6MSwvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0 aGUgd2Vlay4KK2RveTo3fX0pLHsxOiLgp6ciLDI6IuCnqCIsMzoi4KepIiw0 OiLgp6oiLDU6IuCnqyIsNjoi4KesIiw3OiLgp60iLDg6IuCnriIsOToi4Kev IiwwOiLgp6YifSksQWc9eyLgp6ciOiIxIiwi4KeoIjoiMiIsIuCnqSI6IjMi LCLgp6oiOiI0Iiwi4KerIjoiNSIsIuCnrCI6IjYiLCLgp60iOiI3Iiwi4Keu IjoiOCIsIuCnryI6IjkiLCLgp6YiOiIwIn0sQmc9KGtnLmRlZmluZUxvY2Fs ZSgiYm4iLHttb250aHM6IuCmnOCmvuCmqOCngeCnn+CmvuCmsOCngF/gpqvg p4fgpqzgp43gprDgp4Hgp5/gpr7gprDgpr9f4Kau4Ka+4Kaw4KeN4KaaX+Cm j+CmquCnjeCmsOCmv+Cmsl/gpq7gp4df4Kac4KeB4KaoX+CmnOCngeCmsuCm vuCmh1/gpobgppfgprjgp43gpp9f4Ka44KeH4Kaq4KeN4Kaf4KeH4Kau4KeN 4Kas4KawX+CmheCmleCnjeCmn+Cni+CmrOCmsF/gpqjgpq3gp4fgpq7gp43g pqzgprBf4Kah4Ka/4Ka44KeH4Kau4KeN4Kas4KawIi5zcGxpdCgiXyIpLG1v bnRoc1Nob3J0OiLgppzgpr7gpqjgp4Ff4Kar4KeH4KasX+CmruCmvuCmsOCn jeCmml/gpo/gpqrgp43gprBf4Kau4KeHX+CmnOCngeCmqF/gppzgp4HgprJf 4KaG4KaXX+CmuOCnh+CmquCnjeCmn1/gpoXgppXgp43gpp/gp4tf4Kao4Kat 4KeHX+CmoeCmv+CmuOCnhyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi4Kaw4Kas 4Ka/4Kas4Ka+4KawX+CmuOCni+CmruCmrOCmvuCmsF/gpq7gppngp43gppfg prLgpqzgpr7gprBf4Kas4KeB4Kan4Kas4Ka+4KawX+CmrOCng+CmueCmuOCn jeCmquCmpOCmv+CmrOCmvuCmsF/gprbgp4HgppXgp43gprDgpqzgpr7gprBf 4Ka24Kao4Ka/4Kas4Ka+4KawIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6 IuCmsOCmrOCmv1/gprjgp4vgpq5f4Kau4KaZ4KeN4KaX4KayX+CmrOCngeCm p1/gpqzgp4Pgprngprjgp43gpqrgpqTgpr9f4Ka24KeB4KaV4KeN4KawX+Cm tuCmqOCmvyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi4Kaw4Kas4Ka/X+Cm uOCni+Cmrl/gpq7gppngp43gppdf4Kas4KeB4KanX+CmrOCng+CmueCmg1/g prbgp4HgppXgp43gprBf4Ka24Kao4Ka/Ii5zcGxpdCgiXyIpLGxvbmdEYXRl Rm9ybWF0OntMVDoiQSBoOm1tIOCmuOCmruCnnyIsTFRTOiJBIGg6bW06c3Mg 4Ka44Kau4KefIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExM TDoiRCBNTU1NIFlZWVksIEEgaDptbSDgprjgpq7gp58iLExMTEw6ImRkZGQs IEQgTU1NTSBZWVlZLCBBIGg6bW0g4Ka44Kau4KefIn0sY2FsZW5kYXI6e3Nh bWVEYXk6IlvgpobgppxdIExUIixuZXh0RGF5OiJb4KaG4KaX4Ka+4Kau4KeA 4KaV4Ka+4KayXSBMVCIsbmV4dFdlZWs6ImRkZGQsIExUIixsYXN0RGF5OiJb 4KaX4Kak4KaV4Ka+4KayXSBMVCIsbGFzdFdlZWs6IlvgppfgpqRdIGRkZGQs IExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyDg pqrgprDgp4ciLHBhc3Q6IiVzIOCmhuCml+CnhyIsczoi4KaV4Kef4KeH4KaV IOCmuOCnh+CmleCnh+CmqOCnjeCmoSIsbToi4KaP4KaVIOCmruCmv+CmqOCm v+CmnyIsbW06IiVkIOCmruCmv+CmqOCmv+CmnyIsaDoi4KaP4KaVIOCmmOCm qOCnjeCmn+CmviIsaGg6IiVkIOCmmOCmqOCnjeCmn+CmviIsZDoi4KaP4KaV IOCmpuCmv+CmqCIsZGQ6IiVkIOCmpuCmv+CmqCIsTToi4KaP4KaVIOCmruCm vuCmuCIsTU06IiVkIOCmruCmvuCmuCIseToi4KaP4KaVIOCmrOCmm+CmsCIs eXk6IiVkIOCmrOCmm+CmsCJ9LHByZXBhcnNlOmZ1bmN0aW9uKGEpe3JldHVy biBhLnJlcGxhY2UoL1vgp6fgp6jgp6ngp6rgp6vgp6zgp63gp67gp6/gp6Zd L2csZnVuY3Rpb24oYSl7cmV0dXJuIEFnW2FdfSl9LHBvc3Rmb3JtYXQ6ZnVu Y3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihhKXty ZXR1cm4gemdbYV19KX0sbWVyaWRpZW1QYXJzZTov4Kaw4Ka+4KakfOCmuOCm leCmvuCmsnzgpqbgp4Hgpqrgp4HgprB84Kas4Ka/4KaV4Ka+4KayfOCmsOCm vuCmpC8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIDEyPT09 YSYmKGE9MCksIuCmsOCmvuCmpCI9PT1iJiZhPj00fHwi4Kam4KeB4Kaq4KeB 4KawIj09PWImJjU+YXx8IuCmrOCmv+CmleCmvuCmsiI9PT1iP2ErMTI6YX0s bWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiA0PmE/IuCmsOCmvuCm pCI6MTA+YT8i4Ka44KaV4Ka+4KayIjoxNz5hPyLgpqbgp4Hgpqrgp4HgprAi OjIwPmE/IuCmrOCmv+CmleCmvuCmsiI6IuCmsOCmvuCmpCJ9LHdlZWs6e2Rv dzowLC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgor ZG95OjZ9fSksezE6IuC8oSIsMjoi4LyiIiwzOiLgvKMiLDQ6IuC8pCIsNToi 4LylIiw2OiLgvKYiLDc6IuC8pyIsODoi4LyoIiw5OiLgvKkiLDA6IuC8oCJ9 KSxDZz17IuC8oSI6IjEiLCLgvKIiOiIyIiwi4LyjIjoiMyIsIuC8pCI6IjQi LCLgvKUiOiI1Iiwi4LymIjoiNiIsIuC8pyI6IjciLCLgvKgiOiI4Iiwi4Lyp IjoiOSIsIuC8oCI6IjAifSxEZz0oa2cuZGVmaW5lTG9jYWxlKCJibyIse21v bnRoczoi4L2f4L6z4LyL4L2W4LyL4L2R4L2E4LyL4L2U4L28X+C9n+C+s+C8 i+C9luC8i+C9guC9ieC9suC9puC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvYLg vabgvbTgvZjgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2e4L2y4LyL4L2U X+C9n+C+s+C8i+C9luC8i+C9o+C+lOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvg vZHgvrLgvbTgvYLgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2R4L204L2T 4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9ouC+kuC+seC9keC8i+C9lF/g vZ/gvrPgvIvgvZbgvIvgvZHgvYLgvbTgvIvgvZRf4L2f4L6z4LyL4L2W4LyL 4L2W4L2F4L204LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9heC9tOC8i+C9 guC9heC9suC9guC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvYXgvbTgvIvg vYLgvYngvbLgvabgvIvgvZQiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IuC9 n+C+s+C8i+C9luC8i+C9keC9hOC8i+C9lOC9vF/gvZ/gvrPgvIvgvZbgvIvg vYLgvYngvbLgvabgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2C4L2m4L204L2Y 4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9nuC9suC8i+C9lF/gvZ/gvrPg vIvgvZbgvIvgvaPgvpTgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2R4L6y4L20 4L2C4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9keC9tOC9k+C8i+C9lF/g vZ/gvrPgvIvgvZbgvIvgvZbgvaLgvpLgvrHgvZHgvIvgvZRf4L2f4L6z4LyL 4L2W4LyL4L2R4L2C4L204LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9heC9 tOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvYXgvbTgvIvgvYLgvYXgvbLg vYLgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2F4L204LyL4L2C4L2J4L2y 4L2m4LyL4L2UIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLgvYLgvZ/gvaDgvIvg vYngvbLgvIvgvZjgvItf4L2C4L2f4L2g4LyL4L2f4L6z4LyL4L2W4LyLX+C9 guC9n+C9oOC8i+C9mOC9suC9guC8i+C9keC9mOC9ouC8i1/gvYLgvZ/gvaDg vIvgvaPgvrfgvYLgvIvgvZTgvItf4L2C4L2f4L2g4LyL4L2V4L204L2i4LyL 4L2W4L20X+C9guC9n+C9oOC8i+C9lOC8i+C9puC9hOC9puC8i1/gvYLgvZ/g vaDgvIvgvabgvqTgvbrgvZPgvIvgvZTgvIsiLnNwbGl0KCJfIiksd2Vla2Rh eXNTaG9ydDoi4L2J4L2y4LyL4L2Y4LyLX+C9n+C+s+C8i+C9luC8i1/gvZjg vbLgvYLgvIvgvZHgvZjgvaLgvItf4L2j4L634L2C4LyL4L2U4LyLX+C9leC9 tOC9ouC8i+C9luC9tF/gvZTgvIvgvabgvYTgvabgvItf4L2m4L6k4L264L2T 4LyL4L2U4LyLIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLgvYngvbLgvIvg vZjgvItf4L2f4L6z4LyL4L2W4LyLX+C9mOC9suC9guC8i+C9keC9mOC9ouC8 i1/gvaPgvrfgvYLgvIvgvZTgvItf4L2V4L204L2i4LyL4L2W4L20X+C9lOC8 i+C9puC9hOC9puC8i1/gvabgvqTgvbrgvZPgvIvgvZTgvIsiLnNwbGl0KCJf IiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0iLExUUzoiQSBoOm1tOnNz IixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1N IFlZWVksIEEgaDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDpt bSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb4L2R4L2y4LyL4L2i4L2y4L2EXSBM VCIsbmV4dERheToiW+C9puC9hOC8i+C9ieC9suC9k10gTFQiLG5leHRXZWVr OiJb4L2W4L2R4L204L2T4LyL4L2V4L6y4L2C4LyL4L2i4L6X4L264L2m4LyL 4L2YXSwgTFQiLGxhc3REYXk6IlvgvYHgvIvgvabgvYRdIExUIixsYXN0V2Vl azoiW+C9luC9keC9tOC9k+C8i+C9leC+suC9guC8i+C9mOC9kOC9oOC8i+C9 mF0gZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1 cmU6IiVzIOC9o+C8iyIscGFzdDoiJXMg4L2m4L6U4L2T4LyL4L2jIixzOiLg vaPgvZjgvIvgvabgvYQiLG06IuC9puC+kOC9ouC8i+C9mOC8i+C9guC9heC9 suC9giIsbW06IiVkIOC9puC+kOC9ouC8i+C9mCIsaDoi4L2G4L204LyL4L2a 4L284L2R4LyL4L2C4L2F4L2y4L2CIixoaDoiJWQg4L2G4L204LyL4L2a4L28 4L2RIixkOiLgvYngvbLgvZPgvIvgvYLgvYXgvbLgvYIiLGRkOiIlZCDgvYng vbLgvZPgvIsiLE06IuC9n+C+s+C8i+C9luC8i+C9guC9heC9suC9giIsTU06 IiVkIOC9n+C+s+C8i+C9liIseToi4L2j4L284LyL4L2C4L2F4L2y4L2CIix5 eToiJWQg4L2j4L28In0scHJlcGFyc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEu cmVwbGFjZSgvW+C8oeC8ouC8o+C8pOC8peC8puC8p+C8qOC8qeC8oF0vZyxm dW5jdGlvbihhKXtyZXR1cm4gQ2dbYV19KX0scG9zdGZvcm1hdDpmdW5jdGlv bihhKXtyZXR1cm4gYS5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKGEpe3JldHVy biBCZ1thXX0pfSxtZXJpZGllbVBhcnNlOi/gvZjgvZrgvZPgvIvgvZjgvbx8 4L2e4L284L2C4L2m4LyL4L2A4L2mfOC9ieC9suC9k+C8i+C9guC9tOC9hHzg vZHgvYLgvbzgvYTgvIvgvZHgvYJ84L2Y4L2a4L2T4LyL4L2Y4L28LyxtZXJp ZGllbUhvdXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMTI9PT1hJiYoYT0wKSwi 4L2Y4L2a4L2T4LyL4L2Y4L28Ij09PWImJmE+PTR8fCLgvYngvbLgvZPgvIvg vYLgvbTgvYQiPT09YiYmNT5hfHwi4L2R4L2C4L284L2E4LyL4L2R4L2CIj09 PWI/YSsxMjphfSxtZXJpZGllbTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDQ+ YT8i4L2Y4L2a4L2T4LyL4L2Y4L28IjoxMD5hPyLgvZ7gvbzgvYLgvabgvIvg vYDgvaYiOjE3PmE/IuC9ieC9suC9k+C8i+C9guC9tOC9hCI6MjA+YT8i4L2R 4L2C4L284L2E4LyL4L2R4L2CIjoi4L2Y4L2a4L2T4LyL4L2Y4L28In0sd2Vl azp7ZG93OjAsLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdl ZWsuCitkb3k6Nn19KSxrZy5kZWZpbmVMb2NhbGUoImJyIix7bW9udGhzOiJH ZW52ZXJfQydod2V2cmVyX01ldXJ6aF9FYnJlbF9NYWVfTWV6aGV2ZW5fR291 ZXJlX0Vvc3RfR3dlbmdvbG9fSGVyZV9EdV9LZXJ6dSIuc3BsaXQoIl8iKSxt b250aHNTaG9ydDoiR2VuX0MnaHdlX01ldV9FYnJfTWFlX0V2ZV9Hb3VfRW9z X0d3ZV9IZXJfRHVfS2VyIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdWxfTHVu X01ldXJ6aF9NZXJjJ2hlcl9ZYW91X0d3ZW5lcl9TYWRvcm4iLnNwbGl0KCJf Iiksd2Vla2RheXNTaG9ydDoiU3VsX0x1bl9NZXVfTWVyX1lhb19Hd2VfU2Fk Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9MdV9NZV9NZXJfWWFfR3df U2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRl Rm9ybWF0OntMVDoiaFtlXW1tIEEiLExUUzoiaFtlXW1tOnNzIEEiLEw6IkRE L01NL1lZWVkiLExMOiJEIFthIHZpel0gTU1NTSBZWVlZIixMTEw6IkQgW2Eg dml6XSBNTU1NIFlZWVkgaFtlXW1tIEEiLExMTEw6ImRkZGQsIEQgW2Egdml6 XSBNTU1NIFlZWVkgaFtlXW1tIEEifSxjYWxlbmRhcjp7c2FtZURheToiW0hp eml2IGRhXSBMVCIsbmV4dERheToiW1dhcmMnaG9hemggZGFdIExUIixuZXh0 V2VlazoiZGRkZCBbZGFdIExUIixsYXN0RGF5OiJbRGVjJ2ggZGFdIExUIixs YXN0V2VlazoiZGRkZCBbcGFzZXQgZGFdIExUIixzYW1lRWxzZToiTCJ9LHJl bGF0aXZlVGltZTp7ZnV0dXJlOiJhLWJlbm4gJXMiLHBhc3Q6IiVzICd6byIs czoidW4gbmViZXVkIHNlZ29uZGVubm/DuSIsbToidXIgdnVudXRlbm4iLG1t Om9kLGg6InVuIGV1ciIsaGg6IiVkIGV1ciIsZDoidW4gZGV2ZXpoIixkZDpv ZCxNOiJ1ciBtaXoiLE1NOm9kLHk6InVyIGJsb2F6Iix5eTpwZH0sb3JkaW5h bFBhcnNlOi9cZHsxLDJ9KGHDsXx2ZXQpLyxvcmRpbmFsOmZ1bmN0aW9uKGEp e3ZhciBiPTE9PT1hPyJhw7EiOiJ2ZXQiO3JldHVybiBhK2J9LHdlZWs6e2Rv dzoxLC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgor ZG95OjR9fSksa2cuZGVmaW5lTG9jYWxlKCJicyIse21vbnRoczoiamFudWFy X2ZlYnJ1YXJfbWFydF9hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdF9zZXB0 ZW1iYXJfb2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhciIuc3BsaXQoIl8iKSxt b250aHNTaG9ydDoiamFuLl9mZWIuX21hci5fYXByLl9tYWouX2p1bi5fanVs Ll9hdWcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhz UGFyc2VFeGFjdDohMCx3ZWVrZGF5czoibmVkamVsamFfcG9uZWRqZWxqYWtf dXRvcmFrX3NyaWplZGFfxI1ldHZydGFrX3BldGFrX3N1Ym90YSIuc3BsaXQo Il8iKSx3ZWVrZGF5c1Nob3J0OiJuZWQuX3Bvbi5fdXRvLl9zcmkuX8SNZXQu X3BldC5fc3ViLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdXRf c3JfxI1lX3BlX3N1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDoh MCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoi REQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZ WVkgSDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0ifSxjYWxl bmRhcjp7c2FtZURheToiW2RhbmFzIHVdIExUIixuZXh0RGF5OiJbc3V0cmEg dV0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkp e2Nhc2UgMDpyZXR1cm4iW3VdIFtuZWRqZWxqdV0gW3VdIExUIjtjYXNlIDM6 cmV0dXJuIlt1XSBbc3JpamVkdV0gW3VdIExUIjtjYXNlIDY6cmV0dXJuIlt1 XSBbc3Vib3R1XSBbdV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2Ug NTpyZXR1cm4iW3VdIGRkZGQgW3VdIExUIn19LGxhc3REYXk6IltqdcSNZXIg dV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkp e2Nhc2UgMDpjYXNlIDM6cmV0dXJuIltwcm/FoWx1XSBkZGRkIFt1XSBMVCI7 Y2FzZSA2OnJldHVybiJbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUIjtjYXNl IDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIltwcm/FoWxpXSBkZGRk IFt1XSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJl OiJ6YSAlcyIscGFzdDoicHJpamUgJXMiLHM6InBhciBzZWt1bmRpIixtOnRk LG1tOnRkLGg6dGQsaGg6dGQsZDoiZGFuIixkZDp0ZCxNOiJtamVzZWMiLE1N OnRkLHk6ImdvZGludSIseXk6dGR9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwu LyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLC8vIE1vbmRheSBpcyB0aGUg Zmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorZG95Ojd9fSksa2cuZGVmaW5lTG9j YWxlKCJjYSIse21vbnRoczoiZ2VuZXJfZmVicmVyX21hcsOnX2FicmlsX21h aWdfanVueV9qdWxpb2xfYWdvc3Rfc2V0ZW1icmVfb2N0dWJyZV9ub3ZlbWJy ZV9kZXNlbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiZ2VuLl9mZWJy Ll9tYXIuX2Fici5fbWFpLl9qdW4uX2p1bC5fYWcuX3NldC5fb2N0Ll9ub3Yu X2Rlcy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5 czoiZGl1bWVuZ2VfZGlsbHVuc19kaW1hcnRzX2RpbWVjcmVzX2Rpam91c19k aXZlbmRyZXNfZGlzc2FidGUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi ZGcuX2RsLl9kdC5fZGMuX2RqLl9kdi5fZHMuIi5zcGxpdCgiXyIpLHdlZWtk YXlzTWluOiJEZ19EbF9EdF9EY19Eal9Edl9EcyIuc3BsaXQoIl8iKSx3ZWVr ZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixM VFM6Ikg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIs TExMOiJEIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZ IEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheTpmdW5jdGlvbigpe3JldHVybiJb YXZ1aSBhICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQi fSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltkZW3DoCBhICIrKDEhPT10 aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxuZXh0V2VlazpmdW5j dGlvbigpe3JldHVybiJkZGRkIFthICIrKDEhPT10aGlzLmhvdXJzKCk/Imxl cyI6ImxhIikrIl0gTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlth aGlyIGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9 LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIltlbF0gZGRkZCBbcGFzc2F0 IGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LHNh bWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVuICVzIixwYXN0 OiJmYSAlcyIsczoidW5zIHNlZ29ucyIsbToidW4gbWludXQiLG1tOiIlZCBt aW51dHMiLGg6InVuYSBob3JhIixoaDoiJWQgaG9yZXMiLGQ6InVuIGRpYSIs ZGQ6IiVkIGRpZXMiLE06InVuIG1lcyIsTU06IiVkIG1lc29zIix5OiJ1biBh bnkiLHl5OiIlZCBhbnlzIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHJ8bnx0 fMOofGEpLyxvcmRpbmFsOmZ1bmN0aW9uKGEsYil7dmFyIGM9MT09PWE/InIi OjI9PT1hPyJuIjozPT09YT8iciI6ND09PWE/InQiOiLDqCI7cmV0dXJuInci IT09YiYmIlciIT09Ynx8KGM9ImEiKSxhK2N9LHdlZWs6e2RvdzoxLC8vIE1v bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorZG95OjR9fSks ImxlZGVuX8O6bm9yX2LFmWV6ZW5fZHViZW5fa3bEm3Rlbl/EjWVydmVuX8SN ZXJ2ZW5lY19zcnBlbl96w6HFmcOtX8WZw61qZW5fbGlzdG9wYWRfcHJvc2lu ZWMiLnNwbGl0KCJfIikpLEVnPSJsZWRfw7pub19ixZllX2R1Yl9rdsSbX8SN dm5fxI12Y19zcnBfesOhxZlfxZnDrWpfbGlzX3BybyIuc3BsaXQoIl8iKSxG Zz0oa2cuZGVmaW5lTG9jYWxlKCJjcyIse21vbnRoczpEZyxtb250aHNTaG9y dDpFZyxtb250aHNQYXJzZTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9W107Zm9y KGM9MDsxMj5jO2MrKykKKy8vIHVzZSBjdXN0b20gcGFyc2VyIHRvIHNvbHZl IHByb2JsZW0gd2l0aCBKdWx5ICjEjWVydmVuZWMpCitkW2NdPW5ldyBSZWdF eHAoIl4iK2FbY10rIiR8XiIrYltjXSsiJCIsImkiKTtyZXR1cm4gZH0oRGcs RWcpLHNob3J0TW9udGhzUGFyc2U6ZnVuY3Rpb24oYSl7dmFyIGIsYz1bXTtm b3IoYj0wOzEyPmI7YisrKWNbYl09bmV3IFJlZ0V4cCgiXiIrYVtiXSsiJCIs ImkiKTtyZXR1cm4gY30oRWcpLGxvbmdNb250aHNQYXJzZTpmdW5jdGlvbihh KXt2YXIgYixjPVtdO2ZvcihiPTA7MTI+YjtiKyspY1tiXT1uZXcgUmVnRXhw KCJeIithW2JdKyIkIiwiaSIpO3JldHVybiBjfShEZyksd2Vla2RheXM6Im5l ZMSbbGVfcG9uZMSbbMOtX8O6dGVyw71fc3TFmWVkYV/EjXR2cnRla19ww6F0 ZWtfc29ib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lX3BvX8O6 dF9zdF/EjXRfcMOhX3NvIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9w b1/DunRfc3RfxI10X3DDoV9zbyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1h dDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6 IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSIsTExMTDoi ZGRkZCBELiBNTU1NIFlZWVkgSDptbSIsbDoiRC4gTS4gWVlZWSJ9LGNhbGVu ZGFyOntzYW1lRGF5OiJbZG5lcyB2XSBMVCIsbmV4dERheToiW3rDrXRyYSB2 XSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7 Y2FzZSAwOnJldHVybiJbdiBuZWTEm2xpIHZdIExUIjtjYXNlIDE6Y2FzZSAy OnJldHVybiJbdl0gZGRkZCBbdl0gTFQiO2Nhc2UgMzpyZXR1cm4iW3ZlIHN0 xZllZHUgdl0gTFQiO2Nhc2UgNDpyZXR1cm4iW3ZlIMSNdHZydGVrIHZdIExU IjtjYXNlIDU6cmV0dXJuIlt2IHDDoXRlayB2XSBMVCI7Y2FzZSA2OnJldHVy biJbdiBzb2JvdHUgdl0gTFQifX0sbGFzdERheToiW3bEjWVyYSB2XSBMVCIs bGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAw OnJldHVybiJbbWludWxvdSBuZWTEm2xpIHZdIExUIjtjYXNlIDE6Y2FzZSAy OnJldHVybiJbbWludWzDqV0gZGRkZCBbdl0gTFQiO2Nhc2UgMzpyZXR1cm4i W21pbnVsb3Ugc3TFmWVkdSB2XSBMVCI7Y2FzZSA0OmNhc2UgNTpyZXR1cm4i W21pbnVsw71dIGRkZGQgW3ZdIExUIjtjYXNlIDY6cmV0dXJuIlttaW51bG91 IHNvYm90dSB2XSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7 ZnV0dXJlOiJ6YSAlcyIscGFzdDoicMWZZWQgJXMiLHM6dmQsbTp2ZCxtbTp2 ZCxoOnZkLGhoOnZkLGQ6dmQsZGQ6dmQsTTp2ZCxNTTp2ZCx5OnZkLHl5OnZk fSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVr Ontkb3c6MSwvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vl ay4KK2RveTo0fX0pLGtnLmRlZmluZUxvY2FsZSgiY3YiLHttb250aHM6ItC6 05HRgNC70LDRh1/QvdCw0YDTkdGBX9C/0YPRiF/QsNC60LBf0LzQsNC5X9Kr 05fRgNGC0LzQtV/Rg9GC05Ff0qvRg9GA0LvQsF/QsNCy05HQvV/RjtC/0LBf 0YfTs9C6X9GA0LDRiNGC0LDQsiIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi 0LrTkdGAX9C90LDRgF/Qv9GD0Yhf0LDQutCwX9C80LDQuV/Sq9OX0YBf0YPR gtORX9Kr0YPRgF/QsNCy0L1f0Y7Qv9CwX9GH07PQul/RgNCw0YgiLnNwbGl0 KCJfIiksd2Vla2RheXM6ItCy0YvRgNGB0LDRgNC90LjQutGD0L1f0YLRg9C9 0YLQuNC60YPQvV/Ri9GC0LvQsNGA0LjQutGD0L1f0Y7QvdC60YPQvV/QutOX 0qvQvdC10YDQvdC40LrRg9C9X9GN0YDQvdC10LrRg9C9X9GI05HQvNCw0YLQ utGD0L0iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi0LLRi9GAX9GC0YPQ vV/Ri9GC0Ltf0Y7QvV/QutOX0qtf0Y3RgNC9X9GI05HQvCIuc3BsaXQoIl8i KSx3ZWVrZGF5c01pbjoi0LLRgF/RgtC9X9GL0YJf0Y7QvV/QutKrX9GN0YBf 0YjQvCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixM VFM6IkhIOm1tOnNzIixMOiJERC1NTS1ZWVlZIixMTDoiWVlZWSBb0qvRg9C7 0YXQuF0gTU1NTSBb0YPQudOR0YXTl9C9XSBEWy3QvNOX0YjTl10iLExMTDoi WVlZWSBb0qvRg9C70YXQuF0gTU1NTSBb0YPQudOR0YXTl9C9XSBEWy3QvNOX 0YjTl10sIEhIOm1tIixMTExMOiJkZGRkLCBZWVlZIFvSq9GD0LvRhdC4XSBN TU1NIFvRg9C505HRhdOX0L1dIERbLdC805fRiNOXXSwgSEg6bW0ifSxjYWxl bmRhcjp7c2FtZURheToiW9Cf0LDRj9C9XSBMVCBb0YHQtdGF0LXRgtGA0LVd IixuZXh0RGF5OiJb0KvRgNCw0L1dIExUIFvRgdC10YXQtdGC0YDQtV0iLGxh c3REYXk6IlvTltC90LXRgF0gTFQgW9GB0LXRhdC10YLRgNC1XSIsbmV4dFdl ZWs6IlvSqtC40YLQtdGBXSBkZGRkIExUIFvRgdC10YXQtdGC0YDQtV0iLGxh c3RXZWVrOiJb0JjRgNGC0L3Tl10gZGRkZCBMVCBb0YHQtdGF0LXRgtGA0LVd IixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOmZ1bmN0aW9u KGEpe3ZhciBiPS/RgdC10YXQtdGCJC9pLmV4ZWMoYSk/ItGA0LXQvSI6L9Kr 0YPQuyQvaS5leGVjKGEpPyLRgtCw0L0iOiLRgNCw0L0iO3JldHVybiBhK2J9 LHBhc3Q6IiVzINC60LDRj9C70LvQsCIsczoi0L/Tl9GALdC40Log0qvQtdC6 0LrRg9C90YIiLG06ItC/05fRgCDQvNC40L3Rg9GCIixtbToiJWQg0LzQuNC9 0YPRgiIsaDoi0L/Tl9GAINGB0LXRhdC10YIiLGhoOiIlZCDRgdC10YXQtdGC IixkOiLQv9OX0YAg0LrRg9C9IixkZDoiJWQg0LrRg9C9IixNOiLQv9OX0YAg 0YPQudOR0YUiLE1NOiIlZCDRg9C505HRhSIseToi0L/Tl9GAINKr0YPQuyIs eXk6IiVkINKr0YPQuyJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfS3QvNOX0Ygv LG9yZGluYWw6IiVkLdC805fRiCIsd2Vlazp7ZG93OjEsLy8gTW9uZGF5IGlz IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCitkb3k6N319KSxrZy5kZWZp bmVMb2NhbGUoImN5Iix7bW9udGhzOiJJb25hd3JfQ2h3ZWZyb3JfTWF3cnRo X0VicmlsbF9NYWlfTWVoZWZpbl9Hb3JmZmVubmFmX0F3c3RfTWVkaV9IeWRy ZWZfVGFjaHdlZGRfUmhhZ2Z5ciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi SW9uX0Nod2VfTWF3X0Vicl9NYWlfTWVoX0dvcl9Bd3NfTWVkX0h5ZF9UYWNo X1JoYWciLnNwbGl0KCJfIiksd2Vla2RheXM6IkR5ZGQgU3VsX0R5ZGQgTGx1 bl9EeWRkIE1hd3J0aF9EeWRkIE1lcmNoZXJfRHlkZCBJYXVfRHlkZCBHd2Vu ZXJfRHlkZCBTYWR3cm4iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3Vs X0xsdW5fTWF3X01lcl9JYXVfR3dlX1NhZCIuc3BsaXQoIl8iKSx3ZWVrZGF5 c01pbjoiU3VfTGxfTWFfTWVfSWFfR3dfU2EiLnNwbGl0KCJfIiksd2Vla2Rh eXNQYXJzZUV4YWN0OiEwLAorLy8gdGltZSBmb3JtYXRzIGFyZSB0aGUgc2Ft ZSBhcyBlbi1nYgorbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJI SDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6 IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBI SDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSGVkZGl3IGFtXSBMVCIsbmV4 dERheToiW1lmb3J5IGFtXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2FtXSBMVCIs bGFzdERheToiW0Rkb2UgYW1dIExUIixsYXN0V2VlazoiZGRkZCBbZGl3ZXRo YWYgYW1dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJl OiJtZXduICVzIixwYXN0OiIlcyB5biDDtGwiLHM6InljaHlkaWcgZWlsaWFk YXUiLG06Im11bnVkIixtbToiJWQgbXVudWQiLGg6ImF3ciIsaGg6IiVkIGF3 ciIsZDoiZGl3cm5vZCIsZGQ6IiVkIGRpd3Jub2QiLE06Im1pcyIsTU06IiVk IG1pcyIseToiYmx3eWRkeW4iLHl5OiIlZCBmbHluZWRkIn0sb3JkaW5hbFBh cnNlOi9cZHsxLDJ9KGZlZHxhaW58YWZ8aWx8eWRkfGVkfGVnKS8sCisvLyB0 cmFkaXRpb25hbCBvcmRpbmFsIG51bWJlcnMgYWJvdmUgMzEgYXJlIG5vdCBj b21tb25seSB1c2VkIGluIGNvbGxvcXVpYWwgV2Vsc2gKK29yZGluYWw6ZnVu Y3Rpb24oYSl7dmFyIGI9YSxjPSIiLGQ9WyIiLCJhZiIsImlsIiwieWRkIiwi eWRkIiwiZWQiLCJlZCIsImVkIiwiZmVkIiwiZmVkIiwiZmVkIiwvLyAxYWYg dG8gMTBmZWQKKyJlZyIsImZlZCIsImVnIiwiZWciLCJmZWQiLCJlZyIsImVn IiwiZmVkIiwiZWciLCJmZWQiXTtyZXR1cm4gYj4yMD9jPTQwPT09Ynx8NTA9 PT1ifHw2MD09PWJ8fDgwPT09Ynx8MTAwPT09Yj8iZmVkIjoiYWluIjpiPjAm JihjPWRbYl0pLGErY30sd2Vlazp7ZG93OjEsLy8gTW9uZGF5IGlzIHRoZSBm aXJzdCBkYXkgb2YgdGhlIHdlZWsuCitkb3k6NH19KSxrZy5kZWZpbmVMb2Nh bGUoImRhIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJ0c19hcHJpbF9t YWpfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJl cl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9t YXJfYXByX21hal9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0 KCJfIiksd2Vla2RheXM6InPDuG5kYWdfbWFuZGFnX3RpcnNkYWdfb25zZGFn X3RvcnNkYWdfZnJlZGFnX2zDuHJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNT aG9ydDoic8O4bl9tYW5fdGlyX29uc190b3JfZnJlX2zDuHIiLnNwbGl0KCJf Iiksd2Vla2RheXNNaW46InPDuF9tYV90aV9vbl90b19mcl9sw7giLnNwbGl0 KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpz cyIsTDoiREQvTU0vWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBN TU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgW2QuXSBELiBNTU1NIFlZWVkg SEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0kgZGFnIGtsLl0gTFQiLG5l eHREYXk6IltJIG1vcmdlbiBrbC5dIExUIixuZXh0V2VlazoiZGRkZCBba2wu XSBMVCIsbGFzdERheToiW0kgZ8OlciBrbC5dIExUIixsYXN0V2VlazoiW3Np ZHN0ZV0gZGRkZCBba2xdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGlt ZTp7ZnV0dXJlOiJvbSAlcyIscGFzdDoiJXMgc2lkZW4iLHM6ImbDpSBzZWt1 bmRlciIsbToiZXQgbWludXQiLG1tOiIlZCBtaW51dHRlciIsaDoiZW4gdGlt ZSIsaGg6IiVkIHRpbWVyIixkOiJlbiBkYWciLGRkOiIlZCBkYWdlIixNOiJl biBtw6VuZWQiLE1NOiIlZCBtw6VuZWRlciIseToiZXQgw6VyIix5eToiJWQg w6VyIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIs d2Vlazp7ZG93OjEsLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhl IHdlZWsuCitkb3k6NH19KSxrZy5kZWZpbmVMb2NhbGUoImRlLWF0Iix7bW9u dGhzOiJKw6RubmVyX0ZlYnJ1YXJfTcOkcnpfQXByaWxfTWFpX0p1bmlfSnVs aV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXIi LnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IkrDpG4uX0ZlYnIuX01yei5fQXBy Ll9NYWlfSnVuLl9KdWwuX0F1Zy5fU2VwdC5fT2t0Ll9Ob3YuX0Rlei4iLnNw bGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiU29ubnRh Z19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFn X1NhbXN0YWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU28uX01vLl9E aS5fTWkuX0RvLl9Gci5fU2EuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJT b19Nb19EaV9NaV9Eb19Gcl9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNl RXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDpt bTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJE LiBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBI SDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbaGV1dGUgdW1dIExUIFtVaHJd IixzYW1lRWxzZToiTCIsbmV4dERheToiW21vcmdlbiB1bV0gTFQgW1Vocl0i LG5leHRXZWVrOiJkZGRkIFt1bV0gTFQgW1Vocl0iLGxhc3REYXk6IltnZXN0 ZXJuIHVtXSBMVCBbVWhyXSIsbGFzdFdlZWs6IltsZXR6dGVuXSBkZGRkIFt1 bV0gTFQgW1Vocl0ifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBh c3Q6InZvciAlcyIsczoiZWluIHBhYXIgU2VrdW5kZW4iLG06d2QsbW06IiVk IE1pbnV0ZW4iLGg6d2QsaGg6IiVkIFN0dW5kZW4iLGQ6d2QsZGQ6d2QsTTp3 ZCxNTTp3ZCx5OndkLHl5OndkfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8s b3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSwvLyBNb25kYXkgaXMgdGhlIGZp cnN0IGRheSBvZiB0aGUgd2Vlay4KK2RveTo0fX0pLGtnLmRlZmluZUxvY2Fs ZSgiZGUiLHttb250aHM6IkphbnVhcl9GZWJydWFyX03DpHJ6X0FwcmlsX01h aV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVy X0RlemVtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW4uX0ZlYnIu X01yei5fQXByLl9NYWlfSnVuLl9KdWwuX0F1Zy5fU2VwdC5fT2t0Ll9Ob3Yu X0Rlei4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5 czoiU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3Rh Z19GcmVpdGFnX1NhbXN0YWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi U28uX01vLl9EaS5fTWkuX0RvLl9Gci5fU2EuIi5zcGxpdCgiXyIpLHdlZWtk YXlzTWluOiJTb19Nb19EaV9NaV9Eb19Gcl9TYSIuc3BsaXQoIl8iKSx3ZWVr ZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIs TFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZ WSIsTExMOiJELiBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQuIE1N TU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbaGV1dGUgdW1d IExUIFtVaHJdIixzYW1lRWxzZToiTCIsbmV4dERheToiW21vcmdlbiB1bV0g TFQgW1Vocl0iLG5leHRXZWVrOiJkZGRkIFt1bV0gTFQgW1Vocl0iLGxhc3RE YXk6IltnZXN0ZXJuIHVtXSBMVCBbVWhyXSIsbGFzdFdlZWs6IltsZXR6dGVu XSBkZGRkIFt1bV0gTFQgW1Vocl0ifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi aW4gJXMiLHBhc3Q6InZvciAlcyIsczoiZWluIHBhYXIgU2VrdW5kZW4iLG06 eGQsbW06IiVkIE1pbnV0ZW4iLGg6eGQsaGg6IiVkIFN0dW5kZW4iLGQ6eGQs ZGQ6eGQsTTp4ZCxNTTp4ZCx5OnhkLHl5OnhkfSxvcmRpbmFsUGFyc2U6L1xk ezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSwvLyBNb25kYXkg aXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KK2RveTo0fX0pLFsi3pbe rN6C3qreh96m3oPeqSIsIt6K3qzehN6w3oPeqt6H3qbeg96pIiwi3onep96D 3qjel96qIiwi3oferd6V3rDeg96p3o3eqiIsIt6J3q0iLCLelt6r3oLesCIs It6W3qrejd6m3ofeqCIsIt6H3q/ejt6m3pDesN6T3qoiLCLekN6s3pXesN6T 3qzeid6w3oTept6D3qoiLCLeh96u3obesN6T3q/ehN6m3oPeqiIsIt6C3q7e iN6s3onesN6E3qbeg96qIiwi3pHeqN6Q3qzeid6w3oTept6D3qoiXSksR2c9 WyLeh96n3oveqN6H3rDejN6mIiwi3oDer96J3qYiLCLeh96m3oLesN6O3qfe g96mIiwi3oTeqt6L3qYiLCLehN6q3oPep96Q3rDeit6m3ozeqCIsIt6A3qre ht6q3oPeqiIsIt6A3q7egt6o3oDeqN6D3qoiXSxIZz0oa2cuZGVmaW5lTG9j YWxlKCJkdiIse21vbnRoczpGZyxtb250aHNTaG9ydDpGZyx3ZWVrZGF5czpH Zyx3ZWVrZGF5c1Nob3J0OkdnLHdlZWtkYXlzTWluOiLeh96n3oveqF/egN6v 3onepl/eh96m3oLesF/ehN6q3ovepl/ehN6q3oPep1/egN6q3obeql/egN6u 3oLeqCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixM VFM6IkhIOm1tOnNzIixMOiJEL00vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixM TEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZ IEhIOm1tIn0sbWVyaWRpZW1QYXJzZTov3onehnzeid6KLyxpc1BNOmZ1bmN0 aW9uKGEpe3JldHVybiLeid6KIj09PWF9LG1lcmlkaWVtOmZ1bmN0aW9uKGEs YixjKXtyZXR1cm4gMTI+YT8i3onehiI6It6J3ooifSxjYWxlbmRhcjp7c2Ft ZURheToiW96J3qjeh96m3oveql0gTFQiLG5leHREYXk6Ilveid6n3ovept6J 3qddIExUIixuZXh0V2VlazoiZGRkZCBMVCIsbGFzdERheToiW96H3qjeh96w 3pTerF0gTFQiLGxhc3RXZWVrOiJb3orep96H3qjejN6q3ojeqF0gZGRkZCBM VCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi3ozerN6D 3q3ejt6m3ofeqCAlcyIscGFzdDoi3obeqt6D3qjegt6wICVzIixzOiLekN6o 3obeqt6C3rDejN6q3obert6F3qzeh96wIixtOiLeid6o3oLeqN6T3qzeh96w IixtbToi3oneqN6C3qjek96qICVkIixoOiLejt6m3pHeqN6H3qjeg96s3ofe sCIsaGg6It6O3qbekd6o3ofeqN6D3qogJWQiLGQ6It6L3qreiN6m3oDerN6H 3rAiLGRkOiLei96q3ojept6Q3rAgJWQiLE06It6J3qbegN6s3ofesCIsTU06 It6J3qbekN6wICVkIix5OiLeh96m3oDept6D3qzeh96wIix5eToi3ofept6A 3qbeg96qICVkIn0scHJlcGFyc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVw bGFjZSgv2IwvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVy biBhLnJlcGxhY2UoLywvZywi2IwiKX0sd2Vlazp7ZG93OjcsLy8gU3VuZGF5 IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCitkb3k6MTJ9fSksa2cu ZGVmaW5lTG9jYWxlKCJlbCIse21vbnRoc05vbWluYXRpdmVFbDoizpnOsc69 zr/Phc6sz4HOuc6/z4JfzqbOtc6yz4HOv8+FzqzPgc65zr/Pgl/OnM6sz4HP hM65zr/Pgl/Okc+Az4HOr867zrnOv8+CX86czqzOuc6/z4JfzpnOv8+Nzr3O uc6/z4JfzpnOv8+NzrvOuc6/z4JfzpHPjc6zzr/Phc+Dz4TOv8+CX86jzrXP gM+Ezq3OvM6yz4HOuc6/z4Jfzp/Ous+Ez47Oss+BzrnOv8+CX86dzr/Orc68 zrLPgc65zr/Pgl/OlM61zrrOrc68zrLPgc65zr/PgiIuc3BsaXQoIl8iKSxt b250aHNHZW5pdGl2ZUVsOiLOmc6xzr3Ov8+FzrHPgc6vzr/PhV/Ops61zrLP gc6/z4XOsc+Bzq/Ov8+FX86czrHPgc+Ezq/Ov8+FX86Rz4DPgc65zrvOr86/ z4VfzpzOsc6Qzr/PhV/Omc6/z4XOvc6vzr/PhV/Omc6/z4XOu86vzr/PhV/O kc+FzrPOv8+Nz4PPhM6/z4VfzqPOtc+Az4TOtc68zrLPgc6vzr/PhV/On866 z4TPic6yz4HOr86/z4Vfzp3Ov861zrzOss+Bzq/Ov8+FX86UzrXOus61zrzO ss+Bzq/Ov8+FIi5zcGxpdCgiXyIpLG1vbnRoczpmdW5jdGlvbihhLGIpe3Jl dHVybi9ELy50ZXN0KGIuc3Vic3RyaW5nKDAsYi5pbmRleE9mKCJNTU1NIikp KT90aGlzLl9tb250aHNHZW5pdGl2ZUVsW2EubW9udGgoKV06dGhpcy5fbW9u dGhzTm9taW5hdGl2ZUVsW2EubW9udGgoKV19LG1vbnRoc1Nob3J0OiLOmc6x zr1fzqbOtc6yX86czrHPgV/Okc+Az4FfzpzOsc+KX86Zzr/Phc69X86Zzr/P hc67X86Rz4XOs1/Oo861z4Bfzp/Ous+EX86dzr/OtV/OlM61zroiLnNwbGl0 KCJfIiksd2Vla2RheXM6Is6az4XPgc65zrHOus6uX86UzrXPhc+Ezq3Pgc6x X86kz4HOr8+EzrdfzqTOtc+EzqzPgc+EzrdfzqDOrc68z4DPhM63X86gzrHP gc6xz4POus61z4XOrl/Oo86szrLOss6xz4TOvyIuc3BsaXQoIl8iKSx3ZWVr ZGF5c1Nob3J0OiLOms+Fz4FfzpTOtc+FX86kz4HOuV/OpM61z4RfzqDOtc68 X86gzrHPgV/Oo86xzrIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Is6az4Vf zpTOtV/OpM+BX86kzrVfzqDOtV/OoM6xX86jzrEiLnNwbGl0KCJfIiksbWVy aWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhPjExP2M/Is68zrwiOiLO nM6cIjpjPyLPgM68IjoizqDOnCJ9LGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJu Is68Ij09PShhKyIiKS50b0xvd2VyQ2FzZSgpWzBdfSxtZXJpZGllbVBhcnNl Oi9bzqDOnF1cLj/OnD9cLj8vaSxsb25nRGF0ZUZvcm1hdDp7TFQ6Img6bW0g QSIsTFRTOiJoOm1tOnNzIEEiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0g WVlZWSIsTExMOiJEIE1NTU0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQg TU1NTSBZWVlZIGg6bW0gQSJ9LGNhbGVuZGFyRWw6e3NhbWVEYXk6IlvOo86u zrzOtc+BzrEge31dIExUIixuZXh0RGF5OiJbzpHPjc+BzrnOvyB7fV0gTFQi LG5leHRXZWVrOiJkZGRkIFt7fV0gTFQiLGxhc3REYXk6IlvOp864zrXPgiB7 fV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkp e2Nhc2UgNjpyZXR1cm4iW8+Ezr8gz4DPgc6/zrfOs86/z43OvM61zr3Ov10g ZGRkZCBbe31dIExUIjtkZWZhdWx0OnJldHVybiJbz4TOt869IM+Az4HOv863 zrPOv8+NzrzOtc69zrddIGRkZGQgW3t9XSBMVCJ9fSxzYW1lRWxzZToiTCJ9 LGNhbGVuZGFyOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5fY2FsZW5kYXJF bFthXSxkPWImJmIuaG91cnMoKTtyZXR1cm4geShjKSYmKGM9Yy5hcHBseShi KSksYy5yZXBsYWNlKCJ7fSIsZCUxMj09PTE/Is+Dz4TOtyI6Is+Dz4TOuc+C Iil9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLPg861ICVzIixwYXN0OiIlcyDP gM+BzrnOvSIsczoizrvOr86zzrEgzrTOtc+Fz4TOtc+Bz4zOu861z4DPhM6x IixtOiLOrc69zrEgzrvOtc+Az4TPjCIsbW06IiVkIM67zrXPgM+EzqwiLGg6 Is68zq/OsSDPjs+BzrEiLGhoOiIlZCDPjs+BzrXPgiIsZDoizrzOr86xIM68 zq3Pgc6xIixkZDoiJWQgzrzOrc+BzrXPgiIsTToizq3Ovc6xz4IgzrzOrs69 zrHPgiIsTU06IiVkIM68zq7Ovc61z4IiLHk6Is6tzr3Osc+CIM+Hz4HPjM69 zr/PgiIseXk6IiVkIM+Hz4HPjM69zrnOsSJ9LG9yZGluYWxQYXJzZTovXGR7 MSwyfc63LyxvcmRpbmFsOiIlZM63Iix3ZWVrOntkb3c6MSwvLyBNb25kYXkg aXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KK2RveTo0fX0pLGtnLmRl ZmluZUxvY2FsZSgiZW4tYXUiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlf TWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09j dG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hv cnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9O b3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1 ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3Bs aXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0Zy aV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1Ro X0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBB IixMVFM6Img6bW06c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZ WVlZIixMTEw6IkQgTU1NTSBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgRCBN TU1NIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBh dF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJk ZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0 V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxh dGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBm ZXcgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJh biBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIs TToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQg eWVhcnMifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxv cmRpbmFsOmZ1bmN0aW9uKGEpe3ZhciBiPWElMTAsYz0xPT09fn4oYSUxMDAv MTApPyJ0aCI6MT09PWI/InN0IjoyPT09Yj8ibmQiOjM9PT1iPyJyZCI6InRo IjtyZXR1cm4gYStjfSx3ZWVrOntkb3c6MSwvLyBNb25kYXkgaXMgdGhlIGZp cnN0IGRheSBvZiB0aGUgd2Vlay4KK2RveTo0fX0pLGtnLmRlZmluZUxvY2Fs ZSgiZW4tY2EiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXBy aWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92 ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9G ZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5z cGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2Vk bmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3 ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNw bGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5z cGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6 bW06c3MgQSIsTDoiWVlZWS1NTS1ERCIsTEw6Ik1NTU0gRCwgWVlZWSIsTExM OiJNTU1NIEQsIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBNTU1NIEQsIFlZ WVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQi LG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFth dF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2Vlazoi W0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRp bWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vj b25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3Vy IixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBt b250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVhcnMi fSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxvcmRpbmFs OmZ1bmN0aW9uKGEpe3ZhciBiPWElMTAsYz0xPT09fn4oYSUxMDAvMTApPyJ0 aCI6MT09PWI/InN0IjoyPT09Yj8ibmQiOjM9PT1iPyJyZCI6InRoIjtyZXR1 cm4gYStjfX0pLGtnLmRlZmluZUxvY2FsZSgiZW4tZ2IiLHttb250aHM6Ikph bnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1 c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0 KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1 bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJT dW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRh eV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9u X1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46 IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9y bWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVki LExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExM TDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURh eToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIs bmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBh dF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxz ZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMg YWdvIixzOiJhIGZldyBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1p bnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRk OiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHll YXIiLHl5OiIlZCB5ZWFycyJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxu ZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7dmFyIGI9YSUxMCxjPTE9 PT1+fihhJTEwMC8xMCk/InRoIjoxPT09Yj8ic3QiOjI9PT1iPyJuZCI6Mz09 PWI/InJkIjoidGgiO3JldHVybiBhK2N9LHdlZWs6e2RvdzoxLC8vIE1vbmRh eSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorZG95OjR9fSksa2cu ZGVmaW5lTG9jYWxlKCJlbi1pZSIse21vbnRoczoiSmFudWFyeV9GZWJydWFy eV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJf T2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNT aG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0 X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25kYXlf VHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5z cGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVf RnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2Vf VGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDpt bSIsTFRTOiJISDptbTpzcyIsTDoiREQtTU0tWVlZWSIsTEw6IkQgTU1NTSBZ WVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1N TSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0g TFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRk IFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2Vl azoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2 ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcg c2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBo b3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToi YSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVh cnMifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxvcmRp bmFsOmZ1bmN0aW9uKGEpe3ZhciBiPWElMTAsYz0xPT09fn4oYSUxMDAvMTAp PyJ0aCI6MT09PWI/InN0IjoyPT09Yj8ibmQiOjM9PT1iPyJyZCI6InRoIjty ZXR1cm4gYStjfSx3ZWVrOntkb3c6MSwvLyBNb25kYXkgaXMgdGhlIGZpcnN0 IGRheSBvZiB0aGUgd2Vlay4KK2RveTo0fX0pLGtnLmRlZmluZUxvY2FsZSgi ZW4tbnoiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxf TWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1i ZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJf TWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxp dCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVz ZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVr ZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0 KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxp dCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06 c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQg TU1NTSBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgaDpt bSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHRE YXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQi LGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3Rd IGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1 dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIs bToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoi JWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBtb250aCIs TU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVhcnMifSxvcmRp bmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxvcmRpbmFsOmZ1bmN0 aW9uKGEpe3ZhciBiPWElMTAsYz0xPT09fn4oYSUxMDAvMTApPyJ0aCI6MT09 PWI/InN0IjoyPT09Yj8ibmQiOjM9PT1iPyJyZCI6InRoIjtyZXR1cm4gYStj fSx3ZWVrOntkb3c6MSwvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0 aGUgd2Vlay4KK2RveTo0fX0pLGtnLmRlZmluZUxvY2FsZSgiZW8iLHttb250 aHM6ImphbnVhcm9fZmVicnVhcm9fbWFydG9fYXByaWxvX21ham9fanVuaW9f anVsaW9fYcWtZ3VzdG9fc2VwdGVtYnJvX29rdG9icm9fbm92ZW1icm9fZGVj ZW1icm8iLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZWJfbWFyX2Fw cl9tYWpfanVuX2p1bF9hxa1nX3NlcF9va3Rfbm92X2RlYyIuc3BsaXQoIl8i KSx3ZWVrZGF5czoiRGltYW7EiW9fTHVuZG9fTWFyZG9fTWVya3JlZG9fxLRh xa1kb19WZW5kcmVkb19TYWJhdG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9y dDoiRGltX0x1bl9NYXJkX01lcmtfxLRhxa1fVmVuX1NhYiIuc3BsaXQoIl8i KSx3ZWVrZGF5c01pbjoiRGlfTHVfTWFfTWVfxLRhX1ZlX1NhIi5zcGxpdCgi XyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3Mi LEw6IllZWVktTU0tREQiLExMOiJEWy1hbiBkZV0gTU1NTSwgWVlZWSIsTExM OiJEWy1hbiBkZV0gTU1NTSwgWVlZWSBISDptbSIsTExMTDoiZGRkZCwgW2xh XSBEWy1hbiBkZV0gTU1NTSwgWVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6 L1thcF1cLnRcLm0vaSxpc1BNOmZ1bmN0aW9uKGEpe3JldHVybiJwIj09PWEu Y2hhckF0KDApLnRvTG93ZXJDYXNlKCl9LG1lcmlkaWVtOmZ1bmN0aW9uKGEs YixjKXtyZXR1cm4gYT4xMT9jPyJwLnQubS4iOiJQLlQuTS4iOmM/ImEudC5t LiI6IkEuVC5NLiJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSG9kaWHFrSBqZV0g TFQiLG5leHREYXk6IltNb3JnYcWtIGplXSBMVCIsbmV4dFdlZWs6ImRkZGQg W2plXSBMVCIsbGFzdERheToiW0hpZXJhxa0gamVdIExUIixsYXN0V2Vlazoi W3Bhc2ludGFdIGRkZGQgW2plXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2 ZVRpbWU6e2Z1dHVyZToiamUgJXMiLHBhc3Q6ImFudGHFrSAlcyIsczoic2Vr dW5kb2oiLG06Im1pbnV0byIsbW06IiVkIG1pbnV0b2oiLGg6Imhvcm8iLGho OiIlZCBob3JvaiIsZDoidGFnbyIsLy9uZSAnZGl1cm5vJywgxIlhciBlc3Rh cyB1eml0YSBwb3IgcHJva3NpbXVtbworZGQ6IiVkIHRhZ29qIixNOiJtb25h dG8iLE1NOiIlZCBtb25hdG9qIix5OiJqYXJvIix5eToiJWQgamFyb2oifSxv cmRpbmFsUGFyc2U6L1xkezEsMn1hLyxvcmRpbmFsOiIlZGEiLHdlZWs6e2Rv dzoxLC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgor ZG95Ojd9fSksImVuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4uX2p1bC5f YWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuIi5zcGxpdCgiXyIpKSxJZz0iZW5l X2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMi LnNwbGl0KCJfIiksSmc9KGtnLmRlZmluZUxvY2FsZSgiZXMtZG8iLHttb250 aHM6ImVuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxp b19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1i cmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oYSxiKXtyZXR1 cm4vLU1NTS0vLnRlc3QoYik/SWdbYS5tb250aCgpXTpIZ1thLm1vbnRoKCld fSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJkb21pbmdvX2x1bmVz X21hcnRlc19tacOpcmNvbGVzX2p1ZXZlc192aWVybmVzX3PDoWJhZG8iLnNw bGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZG9tLl9sdW4uX21hci5fbWnDqS5f anVlLl92aWUuX3PDoWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkb19s dV9tYV9taV9qdV92aV9zw6EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4 YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06 c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZ WSIsTExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBIixMTExMOiJk ZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6 e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2hveSBhIGxhIisoMSE9PXRo aXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbmV4dERheTpmdW5jdGlvbigp e3JldHVybiJbbWHDsWFuYSBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6 IiIpKyJdIExUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iZGRkZCBb YSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LGxhc3RE YXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2F5ZXIgYSBsYSIrKDEhPT10aGlzLmhv dXJzKCk/InMiOiIiKSsiXSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0 dXJuIltlbF0gZGRkZCBbcGFzYWRvIGEgbGEiKygxIT09dGhpcy5ob3Vycygp PyJzIjoiIikrIl0gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7 ZnV0dXJlOiJlbiAlcyIscGFzdDoiaGFjZSAlcyIsczoidW5vcyBzZWd1bmRv cyIsbToidW4gbWludXRvIixtbToiJWQgbWludXRvcyIsaDoidW5hIGhvcmEi LGhoOiIlZCBob3JhcyIsZDoidW4gZMOtYSIsZGQ6IiVkIGTDrWFzIixNOiJ1 biBtZXMiLE1NOiIlZCBtZXNlcyIseToidW4gYcOxbyIseXk6IiVkIGHDsW9z In0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9wrovLG9yZGluYWw6IiVkwroiLHdl ZWs6e2RvdzoxLC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3 ZWVrLgorZG95OjR9fSksImVuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4u X2p1bC5fYWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuIi5zcGxpdCgiXyIpKSxL Zz0iZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25v dl9kaWMiLnNwbGl0KCJfIiksTGc9KGtnLmRlZmluZUxvY2FsZSgiZXMiLHtt b250aHM6ImVuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19q dWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNp ZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oYSxiKXty ZXR1cm4vLU1NTS0vLnRlc3QoYik/S2dbYS5tb250aCgpXTpKZ1thLm1vbnRo KCldfSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJkb21pbmdvX2x1 bmVzX21hcnRlc19tacOpcmNvbGVzX2p1ZXZlc192aWVybmVzX3PDoWJhZG8i LnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZG9tLl9sdW4uX21hci5fbWnD qS5fanVlLl92aWUuX3PDoWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJk b19sdV9tYV9taV9qdV92aV9zw6EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJz ZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1t OnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZ IixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tIixMTExMOiJkZGRk LCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1l RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltob3kgYSBsYSIrKDEhPT10aGlzLmhv dXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1 cm4iW21hw7FhbmEgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsi XSBMVCJ9LG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuImRkZGQgW2EgbGEi KygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxsYXN0RGF5OmZ1 bmN0aW9uKCl7cmV0dXJuIltheWVyIGEgbGEiKygxIT09dGhpcy5ob3Vycygp PyJzIjoiIikrIl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiJb ZWxdIGRkZGQgW3Bhc2FkbyBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6 IiIpKyJdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVy ZToiZW4gJXMiLHBhc3Q6ImhhY2UgJXMiLHM6InVub3Mgc2VndW5kb3MiLG06 InVuIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVuYSBob3JhIixoaDoi JWQgaG9yYXMiLGQ6InVuIGTDrWEiLGRkOiIlZCBkw61hcyIsTToidW4gbWVz IixNTToiJWQgbWVzZXMiLHk6InVuIGHDsW8iLHl5OiIlZCBhw7FvcyJ9LG9y ZGluYWxQYXJzZTovXGR7MSwyfcK6LyxvcmRpbmFsOiIlZMK6Iix3ZWVrOntk b3c6MSwvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4K K2RveTo0fX0pLGtnLmRlZmluZUxvY2FsZSgiZXQiLHttb250aHM6ImphYW51 YXJfdmVlYnJ1YXJfbcOkcnRzX2FwcmlsbF9tYWlfanV1bmlfanV1bGlfYXVn dXN0X3NlcHRlbWJlcl9va3Rvb2Jlcl9ub3ZlbWJlcl9kZXRzZW1iZXIiLnNw bGl0KCJfIiksbW9udGhzU2hvcnQ6ImphYW5fdmVlYnJfbcOkcnRzX2Fwcl9t YWlfanV1bmlfanV1bGlfYXVnX3NlcHRfb2t0X25vdl9kZXRzIi5zcGxpdCgi XyIpLHdlZWtkYXlzOiJww7xoYXDDpGV2X2VzbWFzcMOkZXZfdGVpc2lww6Rl dl9rb2xtYXDDpGV2X25lbGphcMOkZXZfcmVlZGVfbGF1cMOkZXYiLnNwbGl0 KCJfIiksd2Vla2RheXNTaG9ydDoiUF9FX1RfS19OX1JfTCIuc3BsaXQoIl8i KSx3ZWVrZGF5c01pbjoiUF9FX1RfS19OX1JfTCIuc3BsaXQoIl8iKSxsb25n RGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0u WVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDpt bSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7 c2FtZURheToiW1TDpG5hLF0gTFQiLG5leHREYXk6IltIb21tZSxdIExUIixu ZXh0V2VlazoiW0rDpHJnbWluZV0gZGRkZCBMVCIsbGFzdERheToiW0VpbGUs XSBMVCIsbGFzdFdlZWs6IltFZWxtaW5lXSBkZGRkIExUIixzYW1lRWxzZToi TCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBww6RyYXN0IixwYXN0OiIl cyB0YWdhc2kiLHM6eWQsbTp5ZCxtbTp5ZCxoOnlkLGhoOnlkLGQ6eWQsZGQ6 IiVkIHDDpGV2YSIsTTp5ZCxNTTp5ZCx5OnlkLHl5OnlkfSxvcmRpbmFsUGFy c2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSwvLyBN b25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KK2RveTo0fX0p LGtnLmRlZmluZUxvY2FsZSgiZXUiLHttb250aHM6InVydGFycmlsYV9vdHNh aWxhX21hcnR4b2FfYXBpcmlsYV9tYWlhdHphX2VrYWluYV91enRhaWxhX2Fi dXp0dWFfaXJhaWxhX3VycmlhX2F6YXJvYV9hYmVuZHVhIi5zcGxpdCgiXyIp LG1vbnRoc1Nob3J0OiJ1cnQuX290cy5fbWFyLl9hcGkuX21haS5fZWthLl91 enQuX2FidS5faXJhLl91cnIuX2F6YS5fYWJlLiIuc3BsaXQoIl8iKSxtb250 aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJpZ2FuZGVhX2FzdGVsZWhlbmFf YXN0ZWFydGVhX2FzdGVhemtlbmFfb3N0ZWd1bmFfb3N0aXJhbGFfbGFydW5i YXRhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImlnLl9hbC5fYXIuX2F6 Ll9vZy5fb2wuX2xyLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiaWdfYWxf YXJfYXpfb2dfb2xfbHIiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0 OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3Mi LEw6IllZWVktTU0tREQiLExMOiJZWVlZW2tvXSBNTU1NW3Jlbl0gRFthXSIs TExMOiJZWVlZW2tvXSBNTU1NW3Jlbl0gRFthXSBISDptbSIsTExMTDoiZGRk ZCwgWVlZWVtrb10gTU1NTVtyZW5dIERbYV0gSEg6bW0iLGw6IllZWVktTS1E IixsbDoiWVlZWVtrb10gTU1NIERbYV0iLGxsbDoiWVlZWVtrb10gTU1NIERb YV0gSEg6bW0iLGxsbGw6ImRkZCwgWVlZWVtrb10gTU1NIERbYV0gSEg6bW0i fSxjYWxlbmRhcjp7c2FtZURheToiW2dhdXJdIExUW2V0YW5dIixuZXh0RGF5 OiJbYmloYXJdIExUW2V0YW5dIixuZXh0V2VlazoiZGRkZCBMVFtldGFuXSIs bGFzdERheToiW2F0em9dIExUW2V0YW5dIixsYXN0V2VlazoiW2F1cnJla29d IGRkZGQgTFRbZXRhbl0iLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntm dXR1cmU6IiVzIGJhcnJ1IixwYXN0OiJkdWVsYSAlcyIsczoic2VndW5kbyBi YXR6dWsiLG06Im1pbnV0dSBiYXQiLG1tOiIlZCBtaW51dHUiLGg6Im9yZHUg YmF0IixoaDoiJWQgb3JkdSIsZDoiZWd1biBiYXQiLGRkOiIlZCBlZ3VuIixN OiJoaWxhYmV0ZSBiYXQiLE1NOiIlZCBoaWxhYmV0ZSIseToidXJ0ZSBiYXQi LHl5OiIlZCB1cnRlIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGlu YWw6IiVkLiIsd2Vlazp7ZG93OjEsLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBk YXkgb2YgdGhlIHdlZWsuCitkb3k6N319KSx7MToi27EiLDI6ItuyIiwzOiLb syIsNDoi27QiLDU6Itu1Iiw2OiLbtiIsNzoi27ciLDg6Itu4Iiw5OiLbuSIs MDoi27AifSksTWc9eyLbsSI6IjEiLCLbsiI6IjIiLCLbsyI6IjMiLCLbtCI6 IjQiLCLbtSI6IjUiLCLbtiI6IjYiLCLbtyI6IjciLCLbuCI6IjgiLCLbuSI6 IjkiLCLbsCI6IjAifSxOZz0oa2cuZGVmaW5lTG9jYWxlKCJmYSIse21vbnRo czoi2pjYp9mG2YjbjNmHX9mB2YjYsduM2Ydf2YXYp9ix2LNf2KLZiNix24zZ hF/ZhdmHX9qY2YjYptmGX9qY2YjYptuM2Ydf2KfZiNiqX9iz2b7Yqtin2YXY qNixX9in2qnYqtio2LFf2YbZiNin2YXYqNixX9iv2LPYp9mF2KjYsSIuc3Bs aXQoIl8iKSxtb250aHNTaG9ydDoi2pjYp9mG2YjbjNmHX9mB2YjYsduM2Ydf 2YXYp9ix2LNf2KLZiNix24zZhF/ZhdmHX9qY2YjYptmGX9qY2YjYptuM2Ydf 2KfZiNiqX9iz2b7Yqtin2YXYqNixX9in2qnYqtio2LFf2YbZiNin2YXYqNix X9iv2LPYp9mF2KjYsSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi24zaqeKAjNi0 2YbYqNmHX9iv2YjYtNmG2KjZh1/Ys9mH4oCM2LTZhtio2Ydf2obZh9in2LHY tNmG2KjZh1/ZvtmG2KzigIzYtNmG2KjZh1/YrNmF2LnZh1/YtNmG2KjZhyIu c3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLbjNqp4oCM2LTZhtio2Ydf2K/Z iNi02YbYqNmHX9iz2YfigIzYtNmG2KjZh1/ahtmH2KfYsdi02YbYqNmHX9m+ 2YbYrOKAjNi02YbYqNmHX9is2YXYudmHX9i02YbYqNmHIi5zcGxpdCgiXyIp LHdlZWtkYXlzTWluOiLbjF/Yr1/Ys1/ahl/Zvl/YrF/YtCIuc3BsaXQoIl8i KSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJI SDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1N TSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBE IE1NTU0gWVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L9mC2KjZhCDYp9iy INi42YfYsXzYqNi52K8g2KfYsiDYuNmH2LEvLGlzUE06ZnVuY3Rpb24oYSl7 cmV0dXJuL9io2LnYryDYp9iyINi42YfYsS8udGVzdChhKX0sbWVyaWRpZW06 ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMj5hPyLZgtio2YQg2KfYsiDYuNmH 2LEiOiLYqNi52K8g2KfYsiDYuNmH2LEifSxjYWxlbmRhcjp7c2FtZURheToi W9in2YXYsdmI2LIg2LPYp9i52KpdIExUIixuZXh0RGF5OiJb2YHYsdiv2Kcg 2LPYp9i52KpdIExUIixuZXh0V2VlazoiZGRkZCBb2LPYp9i52KpdIExUIixs YXN0RGF5OiJb2K/bjNix2YjYsiDYs9in2LnYql0gTFQiLGxhc3RXZWVrOiJk ZGRkIFvZvtuM2LRdIFvYs9in2LnYql0gTFQiLHNhbWVFbHNlOiJMIn0scmVs YXRpdmVUaW1lOntmdXR1cmU6Itiv2LEgJXMiLHBhc3Q6IiVzINm+24zYtCIs czoi2obZhtiv24zZhiDYq9in2YbbjNmHIixtOiLbjNqpINiv2YLbjNmC2Yci LG1tOiIlZCDYr9mC24zZgtmHIixoOiLbjNqpINiz2KfYudiqIixoaDoiJWQg 2LPYp9i52KoiLGQ6ItuM2qkg2LHZiNiyIixkZDoiJWQg2LHZiNiyIixNOiLb jNqpINmF2KfZhyIsTU06IiVkINmF2KfZhyIseToi24zaqSDYs9in2YQiLHl5 OiIlZCDYs9in2YQifSxwcmVwYXJzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5y ZXBsYWNlKC9b27At27ldL2csZnVuY3Rpb24oYSl7cmV0dXJuIE1nW2FdfSku cmVwbGFjZSgv2IwvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEpe3Jl dHVybiBhLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oYSl7cmV0dXJuIExnW2Fd fSkucmVwbGFjZSgvLC9nLCLYjCIpfSxvcmRpbmFsUGFyc2U6L1xkezEsMn3Z hS8sb3JkaW5hbDoiJWTZhSIsd2Vlazp7ZG93OjYsLy8gU2F0dXJkYXkgaXMg dGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KK2RveToxMn19KSwibm9sbGEg eWtzaSBrYWtzaSBrb2xtZSBuZWxqw6Qgdmlpc2kga3V1c2kgc2VpdHNlbcOk biBrYWhkZWtzYW4geWhkZWtzw6RuIi5zcGxpdCgiICIpKSxPZz1bIm5vbGxh IiwieWhkZW4iLCJrYWhkZW4iLCJrb2xtZW4iLCJuZWxqw6RuIiwidmlpZGVu Iiwia3V1ZGVuIixOZ1s3XSxOZ1s4XSxOZ1s5XV0sUGc9KGtnLmRlZmluZUxv Y2FsZSgiZmkiLHttb250aHM6InRhbW1pa3V1X2hlbG1pa3V1X21hYWxpc2t1 dV9odWh0aWt1dV90b3Vrb2t1dV9rZXPDpGt1dV9oZWluw6RrdXVfZWxva3V1 X3N5eXNrdXVfbG9rYWt1dV9tYXJyYXNrdXVfam91bHVrdXUiLnNwbGl0KCJf IiksbW9udGhzU2hvcnQ6InRhbW1pX2hlbG1pX21hYWxpc19odWh0aV90b3Vr b19rZXPDpF9oZWluw6RfZWxvX3N5eXNfbG9rYV9tYXJyYXNfam91bHUiLnNw bGl0KCJfIiksd2Vla2RheXM6InN1bm51bnRhaV9tYWFuYW50YWlfdGlpc3Rh aV9rZXNraXZpaWtrb190b3JzdGFpX3BlcmphbnRhaV9sYXVhbnRhaSIuc3Bs aXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzdV9tYV90aV9rZV90b19wZV9sYSIu c3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic3VfbWFfdGlfa2VfdG9fcGVfbGEi LnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISC5tbSIsTFRTOiJI SC5tbS5zcyIsTDoiREQuTU0uWVlZWSIsTEw6IkRvIE1NTU1bdGFdIFlZWVki LExMTDoiRG8gTU1NTVt0YV0gWVlZWSwgW2tsb10gSEgubW0iLExMTEw6ImRk ZGQsIERvIE1NTU1bdGFdIFlZWVksIFtrbG9dIEhILm1tIixsOiJELk0uWVlZ WSIsbGw6IkRvIE1NTSBZWVlZIixsbGw6IkRvIE1NTSBZWVlZLCBba2xvXSBI SC5tbSIsbGxsbDoiZGRkLCBEbyBNTU0gWVlZWSwgW2tsb10gSEgubW0ifSxj YWxlbmRhcjp7c2FtZURheToiW3TDpG7DpMOkbl0gW2tsb10gTFQiLG5leHRE YXk6IltodW9tZW5uYV0gW2tsb10gTFQiLG5leHRXZWVrOiJkZGRkIFtrbG9d IExUIixsYXN0RGF5OiJbZWlsZW5dIFtrbG9dIExUIixsYXN0V2VlazoiW3Zp aW1lXSBkZGRkW25hXSBba2xvXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2 ZVRpbWU6e2Z1dHVyZToiJXMgcMOkw6RzdMOkIixwYXN0OiIlcyBzaXR0ZW4i LHM6emQsbTp6ZCxtbTp6ZCxoOnpkLGhoOnpkLGQ6emQsZGQ6emQsTTp6ZCxN TTp6ZCx5OnpkLHl5OnpkfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3Jk aW5hbDoiJWQuIix3ZWVrOntkb3c6MSwvLyBNb25kYXkgaXMgdGhlIGZpcnN0 IGRheSBvZiB0aGUgd2Vlay4KK2RveTo0fX0pLGtnLmRlZmluZUxvY2FsZSgi Zm8iLHttb250aHM6ImphbnVhcl9mZWJydWFyX21hcnNfYXByw61sX21haV9q dW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2Rl c2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9h cHJfbWFpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlcyIuc3BsaXQoIl8i KSx3ZWVrZGF5czoic3VubnVkYWd1cl9tw6FuYWRhZ3VyX3TDvXNkYWd1cl9t aWt1ZGFndXJfaMOzc2RhZ3VyX2Zyw61nZ2phZGFndXJfbGV5Z2FyZGFndXIi LnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic3VuX23DoW5fdMO9c19taWtf aMOzc19mcsOtX2xleSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic3VfbcOh X3TDvV9taV9ow7NfZnJfbGUiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6 e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6 IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJk ZGRkIEQuIE1NTU0sIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToi W8ONIGRhZyBrbC5dIExUIixuZXh0RGF5OiJbw40gbW9yZ2luIGtsLl0gTFQi LG5leHRXZWVrOiJkZGRkIFtrbC5dIExUIixsYXN0RGF5OiJbw40gZ2rDoXIg a2wuXSBMVCIsbGFzdFdlZWs6Iltzw63DsHN0dV0gZGRkZCBba2xdIExUIixz YW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ1bSAlcyIscGFz dDoiJXMgc8Otw7BhbmkiLHM6ImbDoSBzZWt1bmQiLG06ImVpbiBtaW51dHQi LG1tOiIlZCBtaW51dHRpciIsaDoiZWluIHTDrW1pIixoaDoiJWQgdMOtbWFy IixkOiJlaW4gZGFndXIiLGRkOiIlZCBkYWdhciIsTToiZWluIG3DoW5hw7Bp IixNTToiJWQgbcOhbmHDsGlyIix5OiJlaXR0IMOhciIseXk6IiVkIMOhciJ9 LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6 e2RvdzoxLC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVr LgorZG95OjR9fSksa2cuZGVmaW5lTG9jYWxlKCJmci1jYSIse21vbnRoczoi amFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRf YW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlIi5z cGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW52Ll9mw6l2ci5fbWFyc19hdnIu X21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLiIu c3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJkaW1h bmNoZV9sdW5kaV9tYXJkaV9tZXJjcmVkaV9qZXVkaV92ZW5kcmVkaV9zYW1l ZGkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZGltLl9sdW4uX21hci5f bWVyLl9qZXUuX3Zlbi5fc2FtLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi RGlfTHVfTWFfTWVfSmVfVmVfU2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJz ZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6 bW06c3MiLEw6IllZWVktTU0tREQiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJE IE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDpt bSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbQXVqb3VyZCdodWkgw6BdIExUIixu ZXh0RGF5OiJbRGVtYWluIMOgXSBMVCIsbmV4dFdlZWs6ImRkZGQgW8OgXSBM VCIsbGFzdERheToiW0hpZXIgw6BdIExUIixsYXN0V2VlazoiZGRkZCBbZGVy bmllciDDoF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1 cmU6ImRhbnMgJXMiLHBhc3Q6ImlsIHkgYSAlcyIsczoicXVlbHF1ZXMgc2Vj b25kZXMiLG06InVuZSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJ1bmUg aGV1cmUiLGhoOiIlZCBoZXVyZXMiLGQ6InVuIGpvdXIiLGRkOiIlZCBqb3Vy cyIsTToidW4gbW9pcyIsTU06IiVkIG1vaXMiLHk6InVuIGFuIix5eToiJWQg YW5zIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGVyfGUpLyxvcmRpbmFsOmZ1 bmN0aW9uKGEpe3JldHVybiBhKygxPT09YT8iZXIiOiJlIil9fSksa2cuZGVm aW5lTG9jYWxlKCJmci1jaCIse21vbnRoczoiamFudmllcl9mw6l2cmllcl9t YXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29j dG9icmVfbm92ZW1icmVfZMOpY2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1No b3J0OiJqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fv w7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLiIuc3BsaXQoIl8iKSxtb250aHNQ YXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJkaW1hbmNoZV9sdW5kaV9tYXJkaV9t ZXJjcmVkaV9qZXVkaV92ZW5kcmVkaV9zYW1lZGkiLnNwbGl0KCJfIiksd2Vl a2RheXNTaG9ydDoiZGltLl9sdW4uX21hci5fbWVyLl9qZXUuX3Zlbi5fc2Ft LiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiRGlfTHVfTWFfTWVfSmVfVmVf U2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRl Rm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZ WVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIs TExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1l RGF5OiJbQXVqb3VyZCdodWkgw6BdIExUIixuZXh0RGF5OiJbRGVtYWluIMOg XSBMVCIsbmV4dFdlZWs6ImRkZGQgW8OgXSBMVCIsbGFzdERheToiW0hpZXIg w6BdIExUIixsYXN0V2VlazoiZGRkZCBbZGVybmllciDDoF0gTFQiLHNhbWVF bHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbnMgJXMiLHBhc3Q6 ImlsIHkgYSAlcyIsczoicXVlbHF1ZXMgc2Vjb25kZXMiLG06InVuZSBtaW51 dGUiLG1tOiIlZCBtaW51dGVzIixoOiJ1bmUgaGV1cmUiLGhoOiIlZCBoZXVy ZXMiLGQ6InVuIGpvdXIiLGRkOiIlZCBqb3VycyIsTToidW4gbW9pcyIsTU06 IiVkIG1vaXMiLHk6InVuIGFuIix5eToiJWQgYW5zIn0sb3JkaW5hbFBhcnNl Oi9cZHsxLDJ9KGVyfGUpLyxvcmRpbmFsOmZ1bmN0aW9uKGEpe3JldHVybiBh KygxPT09YT8iZXIiOiJlIil9LHdlZWs6e2RvdzoxLC8vIE1vbmRheSBpcyB0 aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorZG95OjR9fSksa2cuZGVmaW5l TG9jYWxlKCJmciIse21vbnRoczoiamFudmllcl9mw6l2cmllcl9tYXJzX2F2 cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVf bm92ZW1icmVfZMOpY2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJq YW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3Nl cHQuX29jdC5fbm92Ll9kw6ljLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4 YWN0OiEwLHdlZWtkYXlzOiJkaW1hbmNoZV9sdW5kaV9tYXJkaV9tZXJjcmVk aV9qZXVkaV92ZW5kcmVkaV9zYW1lZGkiLnNwbGl0KCJfIiksd2Vla2RheXNT aG9ydDoiZGltLl9sdW4uX21hci5fbWVyLl9qZXUuX3Zlbi5fc2FtLiIuc3Bs aXQoIl8iKSx3ZWVrZGF5c01pbjoiRGlfTHVfTWFfTWVfSmVfVmVfU2EiLnNw bGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0 OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExM OiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoi ZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb QXVqb3VyZCdodWkgw6BdIExUIixuZXh0RGF5OiJbRGVtYWluIMOgXSBMVCIs bmV4dFdlZWs6ImRkZGQgW8OgXSBMVCIsbGFzdERheToiW0hpZXIgw6BdIExU IixsYXN0V2VlazoiZGRkZCBbZGVybmllciDDoF0gTFQiLHNhbWVFbHNlOiJM In0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbnMgJXMiLHBhc3Q6ImlsIHkg YSAlcyIsczoicXVlbHF1ZXMgc2Vjb25kZXMiLG06InVuZSBtaW51dGUiLG1t OiIlZCBtaW51dGVzIixoOiJ1bmUgaGV1cmUiLGhoOiIlZCBoZXVyZXMiLGQ6 InVuIGpvdXIiLGRkOiIlZCBqb3VycyIsTToidW4gbW9pcyIsTU06IiVkIG1v aXMiLHk6InVuIGFuIix5eToiJWQgYW5zIn0sb3JkaW5hbFBhcnNlOi9cZHsx LDJ9KGVyfCkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIGErKDE9PT1h PyJlciI6IiIpfSx3ZWVrOntkb3c6MSwvLyBNb25kYXkgaXMgdGhlIGZpcnN0 IGRheSBvZiB0aGUgd2Vlay4KK2RveTo0fX0pLCJqYW4uX2ZlYi5fbXJ0Ll9h cHIuX21haV9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZXMuIi5z cGxpdCgiXyIpKSxRZz0iamFuX2ZlYl9tcnRfYXByX21haV9qdW5fanVsX2F1 Z19zZXBfb2t0X25vdl9kZXMiLnNwbGl0KCJfIiksUmc9KGtnLmRlZmluZUxv Y2FsZSgiZnkiLHttb250aHM6Imphbm5ld2FyaXNfZmVicmV3YXJpc19tYWFy dF9hcHJpbF9tYWFpZV9qdW55X2p1bHlfYXVndXN0dXNfc2VwdGltYmVyX29r dG9iZXJfbm92aW1iZXJfZGVzaW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hv cnQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4vLU1NTS0vLnRlc3QoYik/UWdbYS5t b250aCgpXTpQZ1thLm1vbnRoKCldfSxtb250aHNQYXJzZUV4YWN0OiEwLHdl ZWtkYXlzOiJzbmVpbl9tb2FuZGVpX3RpaXNkZWlfd29hbnNkZWlfdG9uZ2Vy c2RlaV9mcmVlZF9zbmVvbiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJz aS5fbW8uX3RpLl93by5fdG8uX2ZyLl9zby4iLnNwbGl0KCJfIiksd2Vla2Rh eXNNaW46IlNpX01vX1RpX1dvX1RvX0ZyX1NvIi5zcGxpdCgiXyIpLHdlZWtk YXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixM VFM6IkhIOm1tOnNzIixMOiJERC1NTS1ZWVlZIixMTDoiRCBNTU1NIFlZWVki LExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZ WVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2hqb2VkIG9tXSBMVCIs bmV4dERheToiW21vYXJuIG9tXSBMVCIsbmV4dFdlZWs6ImRkZGQgW29tXSBM VCIsbGFzdERheToiW2p1c3RlciBvbV0gTFQiLGxhc3RXZWVrOiJbw7RmcsO7 bmVdIGRkZGQgW29tXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6 e2Z1dHVyZToib2VyICVzIixwYXN0OiIlcyBseW4iLHM6ImluIHBlYXIgc2Vr b25kZW4iLG06ImllbiBtaW7DunQiLG1tOiIlZCBtaW51dGVuIixoOiJpZW4g b2VyZSIsaGg6IiVkIG9lcmVuIixkOiJpZW4gZGVpIixkZDoiJWQgZGFnZW4i LE06ImllbiBtb2FubmUiLE1NOiIlZCBtb2FubmVuIix5OiJpZW4gamllciIs eXk6IiVkIGppZXJyZW4ifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oc3RlfGRl KS8sb3JkaW5hbDpmdW5jdGlvbihhKXtyZXR1cm4gYSsoMT09PWF8fDg9PT1h fHxhPj0yMD8ic3RlIjoiZGUiKX0sd2Vlazp7ZG93OjEsLy8gTW9uZGF5IGlz IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCitkb3k6NH19KSxbIkFtIEZh b2lsbGVhY2giLCJBbiBHZWFycmFuIiwiQW0gTcOgcnQiLCJBbiBHaWJsZWFu IiwiQW4gQ8OoaXRlYW4iLCJBbiB0LcOSZ21oaW9zIiwiQW4gdC1JdWNoYXIi LCJBbiBMw7luYXN0YWwiLCJBbiB0LVN1bHRhaW4iLCJBbiBEw6BtaGFpciIs IkFuIHQtU2FtaGFpbiIsIkFuIETDuWJobGFjaGQiXSksU2c9WyJGYW9pIiwi R2VhciIsIk3DoHJ0IiwiR2libCIsIkPDqGl0Iiwiw5JnbWgiLCJJdWNoIiwi TMO5biIsIlN1bHQiLCJEw6BtaCIsIlNhbWgiLCJEw7liaCJdLFRnPVsiRGlk w7JtaG5haWNoIiwiRGlsdWFpbiIsIkRpbcOgaXJ0IiwiRGljaWFkYWluIiwi RGlhcmRhb2luIiwiRGloYW9pbmUiLCJEaXNhdGhhaXJuZSJdLFVnPVsiRGlk IiwiRGlsIiwiRGltIiwiRGljIiwiRGlhIiwiRGloIiwiRGlzIl0sVmc9WyJE w7IiLCJMdSIsIk3DoCIsIkNpIiwiQXIiLCJIYSIsIlNhIl0sV2c9KGtnLmRl ZmluZUxvY2FsZSgiZ2QiLHttb250aHM6UmcsbW9udGhzU2hvcnQ6U2csbW9u dGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czpUZyx3ZWVrZGF5c1Nob3J0OlVn LHdlZWtkYXlzTWluOlZnLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExU UzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIs TExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZ WVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0FuLWRpdWdoIGFpZ10g TFQiLG5leHREYXk6IltBLW3DoGlyZWFjaCBhaWddIExUIixuZXh0V2Vlazoi ZGRkZCBbYWlnXSBMVCIsbGFzdERheToiW0FuLWTDqCBhaWddIExUIixsYXN0 V2VlazoiZGRkZCBbc2VvIGNoYWlkaF0gW2FpZ10gTFQiLHNhbWVFbHNlOiJM In0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImFubiBhbiAlcyIscGFzdDoiYmhv IGNoaW9ubiAlcyIsczoiYmVhZ2FuIGRpb2dhbiIsbToibWlvbmFpZCIsbW06 IiVkIG1pb25haWRlYW4iLGg6InVhaXIiLGhoOiIlZCB1YWlyZWFuIixkOiJs YXRoYSIsZGQ6IiVkIGxhdGhhIixNOiJtw6xvcyIsTU06IiVkIG3DrG9zYW4i LHk6ImJsaWFkaG5hIix5eToiJWQgYmxpYWRobmEifSxvcmRpbmFsUGFyc2U6 L1xkezEsMn0oZHxuYXxtaCkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7dmFyIGI9 MT09PWE/ImQiOmElMTA9PT0yPyJuYSI6Im1oIjtyZXR1cm4gYStifSx3ZWVr Ontkb3c6MSwvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vl ay4KK2RveTo0fX0pLGtnLmRlZmluZUxvY2FsZSgiZ2wiLHttb250aHM6Inhh bmVpcm9fZmVicmVpcm9fbWFyem9fYWJyaWxfbWFpb194dcOxb194dWxsb19h Z29zdG9fc2V0ZW1icm9fb3V0dWJyb19ub3ZlbWJyb19kZWNlbWJybyIuc3Bs aXQoIl8iKSxtb250aHNTaG9ydDoieGFuLl9mZWIuX21hci5fYWJyLl9tYWku X3h1w7EuX3h1bC5fYWdvLl9zZXQuX291dC5fbm92Ll9kZWMuIi5zcGxpdCgi XyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImRvbWluZ29fbHVu c19tYXJ0ZXNfbcOpcmNvcmVzX3hvdmVzX3ZlbnJlc19zw6FiYWRvIi5zcGxp dCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRvbS5fbHVuLl9tYXIuX23DqXIuX3hv di5fdmVuLl9zw6FiLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZG9fbHVf bWFfbcOpX3hvX3ZlX3PDoSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhh Y3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3Mi LEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExM TDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQg W2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6 ZnVuY3Rpb24oKXtyZXR1cm4iW2hveGUgIisoMSE9PXRoaXMuaG91cnMoKT8i w6FzIjoiw6EiKSsiXSBMVCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1cm4i W21hw7HDoSAiKygxIT09dGhpcy5ob3VycygpPyLDoXMiOiLDoSIpKyJdIExU In0sbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iZGRkZCBbIisoMSE9PXRo aXMuaG91cnMoKT8iw6FzIjoiYSIpKyJdIExUIn0sbGFzdERheTpmdW5jdGlv bigpe3JldHVybiJbb250ZSAiKygxIT09dGhpcy5ob3VycygpPyLDoSI6ImEi KSsiXSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIltvXSBkZGRk IFtwYXNhZG8gIisoMSE9PXRoaXMuaG91cnMoKT8iw6FzIjoiYSIpKyJdIExU In0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTpmdW5jdGlv bihhKXtyZXR1cm4gMD09PWEuaW5kZXhPZigidW4iKT8ibiIrYToiZW4gIith fSxwYXN0OiJoYWkgJXMiLHM6InVucyBzZWd1bmRvcyIsbToidW4gbWludXRv IixtbToiJWQgbWludXRvcyIsaDoidW5oYSBob3JhIixoaDoiJWQgaG9yYXMi LGQ6InVuIGTDrWEiLGRkOiIlZCBkw61hcyIsTToidW4gbWVzIixNTToiJWQg bWVzZXMiLHk6InVuIGFubyIseXk6IiVkIGFub3MifSxvcmRpbmFsUGFyc2U6 L1xkezEsMn3Cui8sb3JkaW5hbDoiJWTCuiIsd2Vlazp7ZG93OjEsLy8gTW9u ZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCitkb3k6NH19KSxr Zy5kZWZpbmVMb2NhbGUoImhlIix7bW9udGhzOiLXmdeg15XXkNeoX9ek15HX qNeV15DXqF/Xnteo16Vf15DXpNeo15nXnF/XnteQ15lf15nXldeg15lf15nX ldec15lf15DXldeS15XXodeYX9eh16TXmNee15HXqF/XkNeV16fXmNeV15HX qF/XoNeV15HXnteR16hf15PXptee15HXqCIuc3BsaXQoIl8iKSxtb250aHNT aG9ydDoi15nXoNeV17Nf16TXkdeo17Nf157XqNelX9eQ16TXqNezX9ee15DX mV/XmdeV16DXmV/XmdeV15zXmV/XkNeV15LXs1/Xodek15jXs1/XkNeV16fX s1/XoNeV15HXs1/Xk9em157XsyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi16jX kNep15XXn1/Xqdeg15lf16nXnNeZ16nXmV/XqNeR15nXoteZX9eX157Xmdep 15lf16nXmdep15lf16nXkdeqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6 IteQ17Nf15HXs1/XktezX9eT17Nf15TXs1/XldezX9ep17MiLnNwbGl0KCJf Iiksd2Vla2RheXNNaW46IteQX9eRX9eSX9eTX9eUX9eVX9epIi5zcGxpdCgi XyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3Mi LEw6IkREL01NL1lZWVkiLExMOiJEIFvXkV1NTU1NIFlZWVkiLExMTDoiRCBb 15FdTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIFvXkV1NTU1NIFlZ WVkgSEg6bW0iLGw6IkQvTS9ZWVlZIixsbDoiRCBNTU0gWVlZWSIsbGxsOiJE IE1NTSBZWVlZIEhIOm1tIixsbGxsOiJkZGQsIEQgTU1NIFlZWVkgSEg6bW0i fSxjYWxlbmRhcjp7c2FtZURheToiW9eU15nXldedINeR1r5dTFQiLG5leHRE YXk6IlvXnteX16gg15HWvl1MVCIsbmV4dFdlZWs6ImRkZGQgW9eR16nXoteU XSBMVCIsbGFzdERheToiW9eQ16rXnteV15wg15HWvl1MVCIsbGFzdFdlZWs6 IlvXkdeZ15XXnV0gZGRkZCBb15TXkNeX16jXldefINeR16nXoteUXSBMVCIs c2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi15HXoteV15Mg JXMiLHBhc3Q6Itec16TXoNeZICVzIixzOiLXnteh16TXqCDXqdeg15nXldeq IixtOiLXk9en15QiLG1tOiIlZCDXk9en15XXqiIsaDoi16nXoteUIixoaDpm dW5jdGlvbihhKXtyZXR1cm4gMj09PWE/Itep16LXqteZ15nXnSI6YSsiINep 16LXldeqIn0sZDoi15nXldedIixkZDpmdW5jdGlvbihhKXtyZXR1cm4gMj09 PWE/IteZ15XXnteZ15nXnSI6YSsiINeZ157XmdedIn0sTToi15fXldeT16ki LE1NOmZ1bmN0aW9uKGEpe3JldHVybiAyPT09YT8i15fXldeT16nXmdeZ150i OmErIiDXl9eV15PXqdeZ150ifSx5OiLXqdeg15QiLHl5OmZ1bmN0aW9uKGEp e3JldHVybiAyPT09YT8i16nXoNeq15nXmdedIjphJTEwPT09MCYmMTAhPT1h P2ErIiDXqdeg15QiOmErIiDXqdeg15nXnSJ9fSxtZXJpZGllbVBhcnNlOi/X kNeX15Qi16Z815zXpNeg15Qi16Z815DXl9eo15kg15TXpteU16jXmdeZ1518 15zXpNeg15kg15TXpteU16jXmdeZ151815zXpNeg15XXqiDXkdeV16fXqHzX kdeR15XXp9eofNeR16LXqNeRL2ksaXNQTTpmdW5jdGlvbihhKXtyZXR1cm4v XijXkNeX15Qi16Z815DXl9eo15kg15TXpteU16jXmdeZ151815HXoteo15Ep JC8udGVzdChhKX0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiA1 PmE/Itec16TXoNeV16og15HXlden16giOjEwPmE/IteR15HXlden16giOjEy PmE/Yz8n15zXpNeg15Qi16YnOiLXnNek16DXmSDXlNem15TXqNeZ15nXnSI6 MTg+YT9jPyfXkNeX15Qi16YnOiLXkNeX16jXmSDXlNem15TXqNeZ15nXnSI6 IteR16LXqNeRIn19KSx7MToi4KWnIiwyOiLgpagiLDM6IuClqSIsNDoi4KWq Iiw1OiLgpasiLDY6IuClrCIsNzoi4KWtIiw4OiLgpa4iLDk6IuClryIsMDoi 4KWmIn0pLFhnPXsi4KWnIjoiMSIsIuClqCI6IjIiLCLgpakiOiIzIiwi4KWq IjoiNCIsIuClqyI6IjUiLCLgpawiOiI2Iiwi4KWtIjoiNyIsIuClriI6Ijgi LCLgpa8iOiI5Iiwi4KWmIjoiMCJ9LFlnPShrZy5kZWZpbmVMb2NhbGUoImhp Iix7bW9udGhzOiLgpJzgpKjgpLXgpLDgpYBf4KSr4KS84KSw4KS14KSw4KWA X+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpYjgpLJf4KSu4KSIX+Ck nOClguCkqF/gpJzgpYHgpLLgpL7gpIhf4KSF4KSX4KS44KWN4KSkX+CkuOCk v+CkpOCkruCljeCkrOCksF/gpIXgpJXgpY3gpJ/gpYLgpKzgpLBf4KSo4KS1 4KSu4KWN4KSs4KSwX+CkpuCkv+CkuOCkruCljeCkrOCksCIuc3BsaXQoIl8i KSxtb250aHNTaG9ydDoi4KSc4KSoLl/gpKvgpLzgpLAuX+CkruCkvuCksOCl jeCkml/gpIXgpKrgpY3gpLDgpYguX+CkruCkiF/gpJzgpYLgpKhf4KSc4KWB 4KSyLl/gpIXgpJcuX+CkuOCkv+CkpC5f4KSF4KSV4KWN4KSf4KWCLl/gpKjg pLUuX+CkpuCkv+CkuC4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDoh MCx3ZWVrZGF5czoi4KSw4KS14KS/4KS14KS+4KSwX+CkuOCli+CkruCkteCk vuCksF/gpK7gpILgpJfgpLLgpLXgpL7gpLBf4KSs4KWB4KSn4KS14KS+4KSw X+Ckl+ClgeCksOClguCkteCkvuCksF/gpLbgpYHgpJXgpY3gpLDgpLXgpL7g pLBf4KS24KSo4KS/4KS14KS+4KSwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hv cnQ6IuCksOCkteCkv1/gpLjgpYvgpK5f4KSu4KSC4KSX4KSyX+CkrOClgeCk p1/gpJfgpYHgpLDgpYJf4KS24KWB4KSV4KWN4KSwX+CktuCkqOCkvyIuc3Bs aXQoIl8iKSx3ZWVrZGF5c01pbjoi4KSwX+CkuOCli1/gpK7gpIJf4KSs4KWB X+Ckl+ClgV/gpLbgpYFf4KS2Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0 OntMVDoiQSBoOm1tIOCkrOCknOClhyIsTFRTOiJBIGg6bW06c3Mg4KSs4KSc 4KWHIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBN TU1NIFlZWVksIEEgaDptbSDgpKzgpJzgpYciLExMTEw6ImRkZGQsIEQgTU1N TSBZWVlZLCBBIGg6bW0g4KSs4KSc4KWHIn0sY2FsZW5kYXI6e3NhbWVEYXk6 IlvgpIbgpJxdIExUIixuZXh0RGF5OiJb4KSV4KSyXSBMVCIsbmV4dFdlZWs6 ImRkZGQsIExUIixsYXN0RGF5OiJb4KSV4KSyXSBMVCIsbGFzdFdlZWs6Ilvg pKrgpL/gpJvgpLLgpYddIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0 aXZlVGltZTp7ZnV0dXJlOiIlcyDgpK7gpYfgpIIiLHBhc3Q6IiVzIOCkquCk ueCksuClhyIsczoi4KSV4KWB4KSbIOCkueClgCDgpJXgpY3gpLfgpKMiLG06 IuCkj+CklSDgpK7gpL/gpKjgpJ8iLG1tOiIlZCDgpK7gpL/gpKjgpJ8iLGg6 IuCkj+CklSDgpJjgpILgpJ/gpL4iLGhoOiIlZCDgpJjgpILgpJ/gpYciLGQ6 IuCkj+CklSDgpKbgpL/gpKgiLGRkOiIlZCDgpKbgpL/gpKgiLE06IuCkj+Ck lSDgpK7gpLngpYDgpKjgpYciLE1NOiIlZCDgpK7gpLngpYDgpKjgpYciLHk6 IuCkj+CklSDgpLXgpLDgpY3gpLciLHl5OiIlZCDgpLXgpLDgpY3gpLcifSxw cmVwYXJzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9b4KWn4KWo 4KWp4KWq4KWr4KWs4KWt4KWu4KWv4KWmXS9nLGZ1bmN0aW9uKGEpe3JldHVy biBYZ1thXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJl cGxhY2UoL1xkL2csZnVuY3Rpb24oYSl7cmV0dXJuIFdnW2FdfSl9LAorLy8g SGluZGkgbm90YXRpb24gZm9yIG1lcmlkaWVtcyBhcmUgcXVpdGUgZnV6enkg aW4gcHJhY3RpY2UuIFdoaWxlIHRoZXJlIGV4aXN0cworLy8gYSByaWdpZCBu b3Rpb24gb2YgYSAnUGFoYXInIGl0IGlzIG5vdCB1c2VkIGFzIHJpZ2lkbHkg aW4gbW9kZXJuIEhpbmRpLgorbWVyaWRpZW1QYXJzZTov4KSw4KS+4KSkfOCk uOClgeCkrOCkuXzgpKbgpYvgpKrgpLngpLB84KS24KS+4KSuLyxtZXJpZGll bUhvdXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMTI9PT1hJiYoYT0wKSwi4KSw 4KS+4KSkIj09PWI/ND5hP2E6YSsxMjoi4KS44KWB4KSs4KS5Ij09PWI/YToi 4KSm4KWL4KSq4KS54KSwIj09PWI/YT49MTA/YTphKzEyOiLgpLbgpL7gpK4i PT09Yj9hKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3Jl dHVybiA0PmE/IuCksOCkvuCkpCI6MTA+YT8i4KS44KWB4KSs4KS5IjoxNz5h PyLgpKbgpYvgpKrgpLngpLAiOjIwPmE/IuCktuCkvuCkriI6IuCksOCkvuCk pCJ9LHdlZWs6e2RvdzowLC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9m IHRoZSB3ZWVrLgorZG95OjZ9fSksa2cuZGVmaW5lTG9jYWxlKCJociIse21v bnRoczp7Zm9ybWF0OiJzaWplxI1uamFfdmVsamHEjWVfb8W+dWprYV90cmF2 bmphX3N2aWJuamFfbGlwbmphX3NycG5qYV9rb2xvdm96YV9ydWpuYV9saXN0 b3BhZGFfc3R1ZGVub2dhX3Byb3NpbmNhIi5zcGxpdCgiXyIpLHN0YW5kYWxv bmU6InNpamXEjWFual92ZWxqYcSNYV9vxb51amFrX3RyYXZhbmpfc3ZpYmFu al9saXBhbmpfc3JwYW5qX2tvbG92b3pfcnVqYW5fbGlzdG9wYWRfc3R1ZGVu aV9wcm9zaW5hYyIuc3BsaXQoIl8iKX0sbW9udGhzU2hvcnQ6InNpai5fdmVs ai5fb8W+dS5fdHJhLl9zdmkuX2xpcC5fc3JwLl9rb2wuX3J1ai5fbGlzLl9z dHUuX3Byby4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVr ZGF5czoibmVkamVsamFfcG9uZWRqZWxqYWtfdXRvcmFrX3NyaWplZGFfxI1l dHZydGFrX3BldGFrX3N1Ym90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0 OiJuZWQuX3Bvbi5fdXRvLl9zcmkuX8SNZXQuX3BldC5fc3ViLiIuc3BsaXQo Il8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdXRfc3JfxI1lX3BlX3N1Ii5zcGxp dCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7 TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQu IE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRk ZCwgRC4gTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2Rh bmFzIHVdIExUIixuZXh0RGF5OiJbc3V0cmEgdV0gTFQiLG5leHRXZWVrOmZ1 bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3Vd IFtuZWRqZWxqdV0gW3VdIExUIjtjYXNlIDM6cmV0dXJuIlt1XSBbc3JpamVk dV0gW3VdIExUIjtjYXNlIDY6cmV0dXJuIlt1XSBbc3Vib3R1XSBbdV0gTFQi O2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3VdIGRkZGQg W3VdIExUIn19LGxhc3REYXk6IltqdcSNZXIgdV0gTFQiLGxhc3RXZWVrOmZ1 bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpjYXNlIDM6cmV0 dXJuIltwcm/FoWx1XSBkZGRkIFt1XSBMVCI7Y2FzZSA2OnJldHVybiJbcHJv xaFsZV0gW3N1Ym90ZV0gW3VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpj YXNlIDU6cmV0dXJuIltwcm/FoWxpXSBkZGRkIFt1XSBMVCJ9fSxzYW1lRWxz ZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoicHJp amUgJXMiLHM6InBhciBzZWt1bmRpIixtOkJkLG1tOkJkLGg6QmQsaGg6QmQs ZDoiZGFuIixkZDpCZCxNOiJtamVzZWMiLE1NOkJkLHk6ImdvZGludSIseXk6 QmR9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdl ZWs6e2RvdzoxLC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3 ZWVrLgorZG95Ojd9fSksInZhc8Ohcm5hcCBow6l0ZsWRbiBrZWRkZW4gc3pl cmTDoW4gY3PDvHTDtnJ0w7Zrw7ZuIHDDqW50ZWtlbiBzem9tYmF0b24iLnNw bGl0KCIgIikpLFpnPShrZy5kZWZpbmVMb2NhbGUoImh1Iix7bW9udGhzOiJq YW51w6FyX2ZlYnJ1w6FyX23DoXJjaXVzX8OhcHJpbGlzX23DoWp1c19qw7pu aXVzX2rDumxpdXNfYXVndXN6dHVzX3N6ZXB0ZW1iZXJfb2t0w7NiZXJfbm92 ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9m ZWJfbcOhcmNfw6Fwcl9tw6FqX2rDum5fasO6bF9hdWdfc3plcHRfb2t0X25v dl9kZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6InZhc8Ohcm5hcF9ow6l0ZsWR X2tlZGRfc3plcmRhX2Nzw7x0w7ZydMO2a19ww6ludGVrX3N6b21iYXQiLnNw bGl0KCJfIiksd2Vla2RheXNTaG9ydDoidmFzX2jDqXRfa2VkZF9zemVfY3PD vHRfcMOpbl9zem8iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InZfaF9rX3N6 ZV9jc19wX3N6byIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6 bW0iLExUUzoiSDptbTpzcyIsTDoiWVlZWS5NTS5ERC4iLExMOiJZWVlZLiBN TU1NIEQuIixMTEw6IllZWVkuIE1NTU0gRC4gSDptbSIsTExMTDoiWVlZWS4g TU1NTSBELiwgZGRkZCBIOm1tIn0sbWVyaWRpZW1QYXJzZTovZGV8ZHUvaSxp c1BNOmZ1bmN0aW9uKGEpe3JldHVybiJ1Ij09PWEuY2hhckF0KDEpLnRvTG93 ZXJDYXNlKCl9LG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMTI+ YT9jPT09ITA/ImRlIjoiREUiOmM9PT0hMD8iZHUiOiJEVSJ9LGNhbGVuZGFy OntzYW1lRGF5OiJbbWFdIExUWy1rb3JdIixuZXh0RGF5OiJbaG9sbmFwXSBM VFsta29yXSIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gRGQuY2FsbCh0 aGlzLCEwKX0sbGFzdERheToiW3RlZ25hcF0gTFRbLWtvcl0iLGxhc3RXZWVr OmZ1bmN0aW9uKCl7cmV0dXJuIERkLmNhbGwodGhpcywhMSl9LHNhbWVFbHNl OiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIG3Dumx2YSIscGFzdDoi JXMiLHM6Q2QsbTpDZCxtbTpDZCxoOkNkLGhoOkNkLGQ6Q2QsZGQ6Q2QsTTpD ZCxNTTpDZCx5OkNkLHl5OkNkfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8s b3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSwvLyBNb25kYXkgaXMgdGhlIGZp cnN0IGRheSBvZiB0aGUgd2Vlay4KK2RveTo3fX0pLGtnLmRlZmluZUxvY2Fs ZSgiaHktYW0iLHttb250aHM6e2Zvcm1hdDoi1bDVuNaC1bbVvtWh1oDVq1/W g9Wl1b/WgNW+1aHWgNWrX9W01aHWgNW/1atf1aHVutaA1avVrNWrX9W01aHV tdWr1b3Vq1/VsNW41oLVttWr1b3Vq1/VsNW41oLVrNWr1b3Vq1/WhdWj1bjV vdW/1bjVvdWrX9W91aXVutW/1aXVtNWi1aXWgNWrX9Ww1bjVr9W/1aXVtNWi 1aXWgNWrX9W21bjVtdWl1bTVotWl1oDVq1/VpNWl1a/Vv9Wl1bTVotWl1oDV qyIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiLVsNW41oLVttW+1aHWgF/Wg9Wl 1b/WgNW+1aHWgF/VtNWh1oDVv1/VodW61oDVq9WsX9W01aHVtdWr1b1f1bDV uNaC1bbVq9W9X9Ww1bjWgtWs1avVvV/WhdWj1bjVvdW/1bjVvV/VvdWl1brV v9Wl1bTVotWl1oBf1bDVuNWv1b/VpdW01aLVpdaAX9W21bjVtdWl1bTVotWl 1oBf1aTVpdWv1b/VpdW01aLVpdaAIi5zcGxpdCgiXyIpfSxtb250aHNTaG9y dDoi1bDVttW+X9aD1b/WgF/VtNaA1b9f1aHVutaAX9W01bXVvV/VsNW21b1f 1bDVrNW9X9aF1aPVvV/VvdW61b9f1bDVr9W/X9W21bTVol/VpNWv1b8iLnNw bGl0KCJfIiksd2Vla2RheXM6ItWv1avWgNWh1a/Vq1/VpdaA1a/VuNaC1bfV odWi1anVq1/VpdaA1aXWhNW31aHVotWp1atf1bnVuNaA1aXWhNW31aHVotWp 1atf1bDVq9W21aPVt9Wh1aLVqdWrX9W41oLWgNWi1aHVqV/Vt9Wh1aLVodWp Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ItWv1oDVr1/VpdaA1a9f1aXW gNaEX9W51oDWhF/VsNW21aNf1bjWgtaA1aJf1bfVotWpIi5zcGxpdCgiXyIp LHdlZWtkYXlzTWluOiLVr9aA1a9f1aXWgNWvX9Wl1oDWhF/VudaA1oRf1bDV ttWjX9W41oLWgNWiX9W31aLVqSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1h dDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixM TDoiRCBNTU1NIFlZWVkg1akuIixMTEw6IkQgTU1NTSBZWVlZINWpLiwgSEg6 bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZINWpLiwgSEg6bW0ifSxjYWxl bmRhcjp7c2FtZURheToiW9Wh1bXVvdaF1oBdIExUIixuZXh0RGF5OiJb1b7V odWy1ahdIExUIixsYXN0RGF5OiJb1aXWgNWl1a9dIExUIixuZXh0V2Vlazpm dW5jdGlvbigpe3JldHVybiJkZGRkIFvWhdaA1agg1arVodW01ahdIExUIn0s bGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW9Wh1bbWgdWh1a5dIGRkZGQg W9aF1oDVqCDVqtWh1bTVqF0gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZl VGltZTp7ZnV0dXJlOiIlcyDVsNWl1b/VuCIscGFzdDoiJXMg1aHVvNWh1bsi LHM6ItW01asg1oTVodW21asg1b7VodW11oDVr9W11aHVtiIsbToi1oDVuNW6 1aUiLG1tOiIlZCDWgNW41brVpSIsaDoi1arVodW0IixoaDoiJWQg1arVodW0 IixkOiLWhdaAIixkZDoiJWQg1oXWgCIsTToi1aHVtNWr1b0iLE1NOiIlZCDV odW01avVvSIseToi1b/VodaA1asiLHl5OiIlZCDVv9Wh1oDVqyJ9LG1lcmlk aWVtUGFyc2U6L9Wj1avVt9Wl1oDVvtWhfNWh1bzVodW+1bjVv9W+1aF81oHV pdaA1aXVr9W+1aF81aXWgNWl1a/VuNW11aHVti8saXNQTTpmdW5jdGlvbihh KXtyZXR1cm4vXijWgdWl1oDVpdWv1b7VoXzVpdaA1aXVr9W41bXVodW2KSQv LnRlc3QoYSl9LG1lcmlkaWVtOmZ1bmN0aW9uKGEpe3JldHVybiA0PmE/ItWj 1avVt9Wl1oDVvtWhIjoxMj5hPyLVodW81aHVvtW41b/VvtWhIjoxNz5hPyLW gdWl1oDVpdWv1b7VoSI6ItWl1oDVpdWv1bjVtdWh1bYifSxvcmRpbmFsUGFy c2U6L1xkezEsMn18XGR7MSwyfS0o1avVtnzWgNWkKS8sb3JkaW5hbDpmdW5j dGlvbihhLGIpe3N3aXRjaChiKXtjYXNlIkRERCI6Y2FzZSJ3IjpjYXNlIlci OmNhc2UiREREbyI6cmV0dXJuIDE9PT1hP2ErIi3Vq9W2IjphKyIt1oDVpCI7 ZGVmYXVsdDpyZXR1cm4gYX19LHdlZWs6e2RvdzoxLC8vIE1vbmRheSBpcyB0 aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorZG95Ojd9fSksa2cuZGVmaW5l TG9jYWxlKCJpZCIse21vbnRoczoiSmFudWFyaV9GZWJydWFyaV9NYXJldF9B cHJpbF9NZWlfSnVuaV9KdWxpX0FndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJf Tm92ZW1iZXJfRGVzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikph bl9GZWJfTWFyX0Fwcl9NZWlfSnVuX0p1bF9BZ3NfU2VwX09rdF9Ob3ZfRGVz Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJNaW5nZ3VfU2VuaW5fU2VsYXNhX1Jh YnVfS2FtaXNfSnVtYXRfU2FidHUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9y dDoiTWluX1Nlbl9TZWxfUmFiX0thbV9KdW1fU2FiIi5zcGxpdCgiXyIpLHdl ZWtkYXlzTWluOiJNZ19Tbl9TbF9SYl9LbV9KbV9TYiIuc3BsaXQoIl8iKSxs b25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkhILm1tLnNzIixMOiJE RC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkg W3B1a3VsXSBISC5tbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3Vs XSBISC5tbSJ9LG1lcmlkaWVtUGFyc2U6L3BhZ2l8c2lhbmd8c29yZXxtYWxh bS8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIDEyPT09YSYm KGE9MCksInBhZ2kiPT09Yj9hOiJzaWFuZyI9PT1iP2E+PTExP2E6YSsxMjoi c29yZSI9PT1ifHwibWFsYW0iPT09Yj9hKzEyOnZvaWQgMH0sbWVyaWRpZW06 ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMT5hPyJwYWdpIjoxNT5hPyJzaWFu ZyI6MTk+YT8ic29yZSI6Im1hbGFtIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltI YXJpIGluaSBwdWt1bF0gTFQiLG5leHREYXk6IltCZXNvayBwdWt1bF0gTFQi LG5leHRXZWVrOiJkZGRkIFtwdWt1bF0gTFQiLGxhc3REYXk6IltLZW1hcmlu IHB1a3VsXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2xhbHUgcHVrdWxdIExUIixz YW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkYWxhbSAlcyIs cGFzdDoiJXMgeWFuZyBsYWx1IixzOiJiZWJlcmFwYSBkZXRpayIsbToic2Vt ZW5pdCIsbW06IiVkIG1lbml0IixoOiJzZWphbSIsaGg6IiVkIGphbSIsZDoi c2VoYXJpIixkZDoiJWQgaGFyaSIsTToic2VidWxhbiIsTU06IiVkIGJ1bGFu Iix5OiJzZXRhaHVuIix5eToiJWQgdGFodW4ifSx3ZWVrOntkb3c6MSwvLyBN b25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KK2RveTo3fX0p LGtnLmRlZmluZUxvY2FsZSgiaXMiLHttb250aHM6ImphbsO6YXJfZmVicsO6 YXJfbWFyc19hcHLDrWxfbWHDrV9qw7puw61fasO6bMOtX8OhZ8O6c3Rfc2Vw dGVtYmVyX29rdMOzYmVyX27Ds3ZlbWJlcl9kZXNlbWJlciIuc3BsaXQoIl8i KSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21hw61fasO6bl9qw7ps X8OhZ8O6X3NlcF9va3RfbsOzdl9kZXMiLnNwbGl0KCJfIiksd2Vla2RheXM6 InN1bm51ZGFndXJfbcOhbnVkYWd1cl/DvnJpw7BqdWRhZ3VyX21pw7B2aWt1 ZGFndXJfZmltbXR1ZGFndXJfZsO2c3R1ZGFndXJfbGF1Z2FyZGFndXIiLnNw bGl0KCJfIiksd2Vla2RheXNTaG9ydDoic3VuX23DoW5fw75yaV9tacOwX2Zp bV9mw7ZzX2xhdSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTcOhX8Oe cl9NaV9GaV9Gw7ZfTGEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xU OiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBN TU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIFtrbC5dIEg6bW0iLExMTEw6 ImRkZGQsIEQuIE1NTU0gWVlZWSBba2wuXSBIOm1tIn0sY2FsZW5kYXI6e3Nh bWVEYXk6IlvDrSBkYWcga2wuXSBMVCIsbmV4dERheToiW8OhIG1vcmd1biBr bC5dIExUIixuZXh0V2VlazoiZGRkZCBba2wuXSBMVCIsbGFzdERheToiW8Ot IGfDpnIga2wuXSBMVCIsbGFzdFdlZWs6Iltzw63DsGFzdGFdIGRkZGQgW2ts Ll0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVm dGlyICVzIixwYXN0OiJmeXJpciAlcyBzw63DsGFuIixzOkZkLG06RmQsbW06 RmQsaDoia2x1a2t1c3R1bmQiLGhoOkZkLGQ6RmQsZGQ6RmQsTTpGZCxNTTpG ZCx5OkZkLHl5OkZkfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5h bDoiJWQuIix3ZWVrOntkb3c6MSwvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRh eSBvZiB0aGUgd2Vlay4KK2RveTo0fX0pLGtnLmRlZmluZUxvY2FsZSgiaXQi LHttb250aHM6Imdlbm5haW9fZmViYnJhaW9fbWFyem9fYXByaWxlX21hZ2dp b19naXVnbm9fbHVnbGlvX2Fnb3N0b19zZXR0ZW1icmVfb3R0b2JyZV9ub3Zl bWJyZV9kaWNlbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiZ2VuX2Zl Yl9tYXJfYXByX21hZ19naXVfbHVnX2Fnb19zZXRfb3R0X25vdl9kaWMiLnNw bGl0KCJfIiksd2Vla2RheXM6IkRvbWVuaWNhX0x1bmVkw6xfTWFydGVkw6xf TWVyY29sZWTDrF9HaW92ZWTDrF9WZW5lcmTDrF9TYWJhdG8iLnNwbGl0KCJf Iiksd2Vla2RheXNTaG9ydDoiRG9tX0x1bl9NYXJfTWVyX0dpb19WZW5fU2Fi Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEb19MdV9NYV9NZV9HaV9WZV9T YSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6 IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExM TDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZ IEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltPZ2dpIGFsbGVdIExUIixu ZXh0RGF5OiJbRG9tYW5pIGFsbGVdIExUIixuZXh0V2VlazoiZGRkZCBbYWxs ZV0gTFQiLGxhc3REYXk6IltJZXJpIGFsbGVdIExUIixsYXN0V2VlazpmdW5j dGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltsYSBz Y29yc2FdIGRkZGQgW2FsbGVdIExUIjtkZWZhdWx0OnJldHVybiJbbG8gc2Nv cnNvXSBkZGRkIFthbGxlXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZl VGltZTp7ZnV0dXJlOmZ1bmN0aW9uKGEpe3JldHVybigvXlswLTldLiskLy50 ZXN0KGEpPyJ0cmEiOiJpbiIpKyIgIithfSxwYXN0OiIlcyBmYSIsczoiYWxj dW5pIHNlY29uZGkiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0aSIsaDoi dW4nb3JhIixoaDoiJWQgb3JlIixkOiJ1biBnaW9ybm8iLGRkOiIlZCBnaW9y bmkiLE06InVuIG1lc2UiLE1NOiIlZCBtZXNpIix5OiJ1biBhbm5vIix5eToi JWQgYW5uaSJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfcK6LyxvcmRpbmFsOiIl ZMK6Iix3ZWVrOntkb3c6MSwvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBv ZiB0aGUgd2Vlay4KK2RveTo0fX0pLGtnLmRlZmluZUxvY2FsZSgiamEiLHtt b250aHM6IjHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOac iF855pyIXzEw5pyIXzEx5pyIXzEy5pyIIi5zcGxpdCgiXyIpLG1vbnRoc1No b3J0OiIx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhf OeaciF8xMOaciF8xMeaciF8xMuaciCIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi 5pel5puc5pelX+aciOabnOaXpV/ngavmm5zml6Vf5rC05puc5pelX+acqOab nOaXpV/ph5Hmm5zml6Vf5Zyf5puc5pelIi5zcGxpdCgiXyIpLHdlZWtkYXlz U2hvcnQ6IuaXpV/mnIhf54GrX+awtF/mnKhf6YeRX+WcnyIuc3BsaXQoIl8i KSx3ZWVrZGF5c01pbjoi5pelX+aciF/ngatf5rC0X+acqF/ph5Ff5ZyfIi5z cGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiQWjmmYJt5YiGIixMVFM6 IkFo5pmCbeWIhnPnp5IiLEw6IllZWVkvTU0vREQiLExMOiJZWVlZ5bm0Teac iETml6UiLExMTDoiWVlZWeW5tE3mnIhE5pelQWjmmYJt5YiGIixMTExMOiJZ WVlZ5bm0TeaciETml6VBaOaZgm3liIYgZGRkZCJ9LG1lcmlkaWVtUGFyc2U6 L+WNiOWJjXzljYjlvowvaSxpc1BNOmZ1bmN0aW9uKGEpe3JldHVybiLljYjl vowiPT09YX0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMj5h PyLljYjliY0iOiLljYjlvowifSxjYWxlbmRhcjp7c2FtZURheToiW+S7iuaX pV0gTFQiLG5leHREYXk6IlvmmI7ml6VdIExUIixuZXh0V2VlazoiW+adpemA sV1kZGRkIExUIixsYXN0RGF5OiJb5pio5pelXSBMVCIsbGFzdFdlZWs6Ilvl iY3pgLFdZGRkZCBMVCIsc2FtZUVsc2U6IkwifSxvcmRpbmFsUGFyc2U6L1xk ezEsMn3ml6UvLG9yZGluYWw6ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYil7Y2Fz ZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gYSsi5pelIjtkZWZhdWx0 OnJldHVybiBhfX0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVz5b6MIixwYXN0 OiIlc+WJjSIsczoi5pWw56eSIixtOiIx5YiGIixtbToiJWTliIYiLGg6IjHm mYLplpMiLGhoOiIlZOaZgumWkyIsZDoiMeaXpSIsZGQ6IiVk5pelIixNOiIx 44O25pyIIixNTToiJWTjg7bmnIgiLHk6IjHlubQiLHl5OiIlZOW5tCJ9fSks a2cuZGVmaW5lTG9jYWxlKCJqdiIse21vbnRoczoiSmFudWFyaV9GZWJydWFy aV9NYXJldF9BcHJpbF9NZWlfSnVuaV9KdWxpX0FndXN0dXNfU2VwdGVtYmVy X09rdG9iZXJfTm9wZW1iZXJfRGVzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhz U2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NZWlfSnVuX0p1bF9BZ3NfU2VwX09r dF9Ob3BfRGVzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJNaW5nZ3VfU2VuZW5f U2Vsb3NvX1JlYnVfS2VtaXNfSmVtdXdhaF9TZXB0dSIuc3BsaXQoIl8iKSx3 ZWVrZGF5c1Nob3J0OiJNaW5fU2VuX1NlbF9SZWJfS2VtX0plbV9TZXAiLnNw bGl0KCJfIiksd2Vla2RheXNNaW46Ik1nX1NuX1NsX1JiX0ttX0ptX1NwIi5z cGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEgubW0iLExUUzoiSEgu bW0uc3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJE IE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tIixMTExMOiJkZGRkLCBEIE1NTU0g WVlZWSBbcHVrdWxdIEhILm1tIn0sbWVyaWRpZW1QYXJzZTovZW5qaW5nfHNp eWFuZ3xzb250ZW58bmRhbHUvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihhLGIp e3JldHVybiAxMj09PWEmJihhPTApLCJlbmppbmciPT09Yj9hOiJzaXlhbmci PT09Yj9hPj0xMT9hOmErMTI6InNvbnRlbiI9PT1ifHwibmRhbHUiPT09Yj9h KzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAx MT5hPyJlbmppbmciOjE1PmE/InNpeWFuZyI6MTk+YT8ic29udGVuIjoibmRh bHUifSxjYWxlbmRhcjp7c2FtZURheToiW0RpbnRlbiBwdW5pa28gcHVrdWxd IExUIixuZXh0RGF5OiJbTWJlbmphbmcgcHVrdWxdIExUIixuZXh0V2Vlazoi ZGRkZCBbcHVrdWxdIExUIixsYXN0RGF5OiJbS2FsYSB3aW5naSBwdWt1bF0g TFQiLGxhc3RXZWVrOiJkZGRkIFtrZXBlbmdrZXIgcHVrdWxdIExUIixzYW1l RWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ3b250ZW4gaW5nICVz IixwYXN0OiIlcyBpbmdrYW5nIGtlcGVuZ2tlciIsczoic2F3ZXRhd2lzIGRl dGlrIixtOiJzZXR1bmdnYWwgbWVuaXQiLG1tOiIlZCBtZW5pdCIsaDoic2V0 dW5nZ2FsIGphbSIsaGg6IiVkIGphbSIsZDoic2VkaW50ZW4iLGRkOiIlZCBk aW50ZW4iLE06InNld3VsYW4iLE1NOiIlZCB3dWxhbiIseToic2V0YXVuIix5 eToiJWQgdGF1biJ9LHdlZWs6e2RvdzoxLC8vIE1vbmRheSBpcyB0aGUgZmly c3QgZGF5IG9mIHRoZSB3ZWVrLgorZG95Ojd9fSksa2cuZGVmaW5lTG9jYWxl KCJrYSIse21vbnRoczp7c3RhbmRhbG9uZToi4YOY4YOQ4YOc4YOV4YOQ4YOg 4YOYX+GDl+GDlOGDkeGDlOGDoOGDleGDkOGDmuGDmF/hg5vhg5Dhg6Dhg6Lh g5hf4YOQ4YOe4YOg4YOY4YOa4YOYX+GDm+GDkOGDmOGDoeGDmF/hg5jhg5Xh g5zhg5jhg6Hhg5hf4YOY4YOV4YOa4YOY4YOh4YOYX+GDkOGDkuGDleGDmOGD oeGDouGDnV/hg6Hhg5Thg6Xhg6Lhg5Thg5vhg5Hhg5Thg6Dhg5hf4YOd4YOl 4YOi4YOd4YOb4YOR4YOU4YOg4YOYX+GDnOGDneGDlOGDm+GDkeGDlOGDoOGD mF/hg5Phg5Thg5nhg5Thg5vhg5Hhg5Thg6Dhg5giLnNwbGl0KCJfIiksZm9y bWF0OiLhg5jhg5Dhg5zhg5Xhg5Dhg6Dhg6Ff4YOX4YOU4YOR4YOU4YOg4YOV 4YOQ4YOa4YOhX+GDm+GDkOGDoOGDouGDoV/hg5Dhg57hg6Dhg5jhg5rhg5jh g6Ff4YOb4YOQ4YOY4YOh4YOhX+GDmOGDleGDnOGDmOGDoeGDoV/hg5jhg5Xh g5rhg5jhg6Hhg6Ff4YOQ4YOS4YOV4YOY4YOh4YOi4YOhX+GDoeGDlOGDpeGD ouGDlOGDm+GDkeGDlOGDoOGDoV/hg53hg6Xhg6Lhg53hg5vhg5Hhg5Thg6Dh g6Ff4YOc4YOd4YOU4YOb4YOR4YOU4YOg4YOhX+GDk+GDlOGDmeGDlOGDm+GD keGDlOGDoOGDoSIuc3BsaXQoIl8iKX0sbW9udGhzU2hvcnQ6IuGDmOGDkOGD nF/hg5fhg5Thg5Ff4YOb4YOQ4YOgX+GDkOGDnuGDoF/hg5vhg5Dhg5hf4YOY 4YOV4YOcX+GDmOGDleGDml/hg5Dhg5Lhg5Vf4YOh4YOU4YOlX+GDneGDpeGD ol/hg5zhg53hg5Rf4YOT4YOU4YOZIi5zcGxpdCgiXyIpLHdlZWtkYXlzOntz dGFuZGFsb25lOiLhg5nhg5Xhg5jhg6Dhg5Bf4YOd4YOg4YOo4YOQ4YOR4YOQ 4YOX4YOYX+GDoeGDkOGDm+GDqOGDkOGDkeGDkOGDl+GDmF/hg53hg5fhg67h g6jhg5Dhg5Hhg5Dhg5fhg5hf4YOu4YOj4YOX4YOo4YOQ4YOR4YOQ4YOX4YOY X+GDnuGDkOGDoOGDkOGDoeGDmeGDlOGDleGDmF/hg6jhg5Dhg5Hhg5Dhg5fh g5giLnNwbGl0KCJfIiksZm9ybWF0OiLhg5nhg5Xhg5jhg6Dhg5Dhg6Ff4YOd 4YOg4YOo4YOQ4YOR4YOQ4YOX4YOhX+GDoeGDkOGDm+GDqOGDkOGDkeGDkOGD l+GDoV/hg53hg5fhg67hg6jhg5Dhg5Hhg5Dhg5fhg6Ff4YOu4YOj4YOX4YOo 4YOQ4YOR4YOQ4YOX4YOhX+GDnuGDkOGDoOGDkOGDoeGDmeGDlOGDleGDoV/h g6jhg5Dhg5Hhg5Dhg5fhg6EiLnNwbGl0KCJfIiksaXNGb3JtYXQ6Lyjhg6zh g5jhg5zhg5B84YOo4YOU4YOb4YOT4YOU4YOSKS99LHdlZWtkYXlzU2hvcnQ6 IuGDmeGDleGDmF/hg53hg6Dhg6hf4YOh4YOQ4YObX+GDneGDl+GDrl/hg67h g6Phg5df4YOe4YOQ4YOgX+GDqOGDkOGDkSIuc3BsaXQoIl8iKSx3ZWVrZGF5 c01pbjoi4YOZ4YOVX+GDneGDoF/hg6Hhg5Bf4YOd4YOXX+GDruGDo1/hg57h g5Bf4YOo4YOQIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDpt bSBBIixMVFM6Img6bW06c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1N TSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwg RCBNTU1NIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilvhg5Ph g6bhg5Thg6FdIExUWy3hg5bhg5RdIixuZXh0RGF5OiJb4YOu4YOV4YOQ4YOa XSBMVFst4YOW4YOUXSIsbGFzdERheToiW+GDkuGDo+GDqOGDmOGDnF0gTFRb LeGDluGDlF0iLG5leHRXZWVrOiJb4YOo4YOU4YOb4YOT4YOU4YOSXSBkZGRk IExUWy3hg5bhg5RdIixsYXN0V2VlazoiW+GDrOGDmOGDnOGDkF0gZGRkZCBM VC3hg5bhg5QiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6 ZnVuY3Rpb24oYSl7cmV0dXJuLyjhg6zhg5Dhg5vhg5h84YOs4YOj4YOX4YOY fOGDoeGDkOGDkOGDl+GDmHzhg6zhg5Thg5rhg5gpLy50ZXN0KGEpP2EucmVw bGFjZSgv4YOYJC8sIuGDqOGDmCIpOmErIuGDqOGDmCJ9LHBhc3Q6ZnVuY3Rp b24oYSl7cmV0dXJuLyjhg6zhg5Dhg5vhg5h84YOs4YOj4YOX4YOYfOGDoeGD kOGDkOGDl+GDmHzhg5Phg6bhg5R84YOX4YOV4YOUKS8udGVzdChhKT9hLnJl cGxhY2UoLyjhg5h84YOUKSQvLCLhg5jhg6Eg4YOs4YOY4YOcIik6L+GDrOGD lOGDmuGDmC8udGVzdChhKT9hLnJlcGxhY2UoL+GDrOGDlOGDmuGDmCQvLCLh g6zhg5rhg5jhg6Eg4YOs4YOY4YOcIik6dm9pZCAwfSxzOiLhg6Dhg5Dhg5vh g5Phg5Thg5zhg5jhg5vhg5Qg4YOs4YOQ4YOb4YOYIixtOiLhg6zhg6Phg5fh g5giLG1tOiIlZCDhg6zhg6Phg5fhg5giLGg6IuGDoeGDkOGDkOGDl+GDmCIs aGg6IiVkIOGDoeGDkOGDkOGDl+GDmCIsZDoi4YOT4YOm4YOUIixkZDoiJWQg 4YOT4YOm4YOUIixNOiLhg5fhg5Xhg5QiLE1NOiIlZCDhg5fhg5Xhg5QiLHk6 IuGDrOGDlOGDmuGDmCIseXk6IiVkIOGDrOGDlOGDmuGDmCJ9LG9yZGluYWxQ YXJzZTovMHwxLeGDmuGDmHzhg5vhg5QtXGR7MSwyfXxcZHsxLDJ9LeGDlC8s b3JkaW5hbDpmdW5jdGlvbihhKXtyZXR1cm4gMD09PWE/YToxPT09YT9hKyIt 4YOa4YOYIjoyMD5hfHwxMDA+PWEmJmElMjA9PT0wfHxhJTEwMD09PTA/IuGD m+GDlC0iK2E6YSsiLeGDlCJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pLHswOiIt 0YjRliIsMToiLdGI0ZYiLDI6Ii3RiNGWIiwzOiIt0YjRliIsNDoiLdGI0ZYi LDU6Ii3RiNGWIiw2OiIt0YjRiyIsNzoiLdGI0ZYiLDg6Ii3RiNGWIiw5OiIt 0YjRiyIsMTA6Ii3RiNGLIiwyMDoiLdGI0YsiLDMwOiIt0YjRiyIsNDA6Ii3R iNGLIiw1MDoiLdGI0ZYiLDYwOiIt0YjRiyIsNzA6Ii3RiNGWIiw4MDoiLdGI 0ZYiLDkwOiIt0YjRiyIsMTAwOiIt0YjRliJ9KSwkZz0oa2cuZGVmaW5lTG9j YWxlKCJrayIse21vbnRoczoi0pvQsNKj0YLQsNGAX9Cw0pvQv9Cw0L1f0L3Q sNGD0YDRi9C3X9GB05nRg9GW0YBf0LzQsNC80YvRgF/QvNCw0YPRgdGL0Lxf 0YjRltC70LTQtV/RgtCw0LzRi9C3X9Kb0YvRgNC60q/QudC10Lpf0pvQsNC3 0LDQvV/Sm9Cw0YDQsNGI0LBf0LbQtdC70YLQvtKb0YHQsNC9Ii5zcGxpdCgi XyIpLG1vbnRoc1Nob3J0OiLSm9Cw0qNf0LDSm9C/X9C90LDRg1/RgdOZ0YNf 0LzQsNC8X9C80LDRg1/RiNGW0Ltf0YLQsNC8X9Kb0YvRgF/Sm9Cw0Ldf0pvQ sNGAX9C20LXQuyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi0LbQtdC60YHQtdC9 0LHRll/QtNKv0LnRgdC10L3QsdGWX9GB0LXQudGB0LXQvdCx0ZZf0YHTmdGA 0YHQtdC90LHRll/QsdC10LnRgdC10L3QsdGWX9C20rHQvNCwX9GB0LXQvdCx 0ZYiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi0LbQtdC6X9C00q/QuV/R gdC10Llf0YHTmdGAX9Cx0LXQuV/QttKx0Lxf0YHQtdC9Ii5zcGxpdCgiXyIp LHdlZWtkYXlzTWluOiLQttC6X9C00Llf0YHQuV/RgdGAX9Cx0Llf0LbQvF/R gdC9Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExU UzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIs TExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZ WVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW9CR0q/Qs9GW0L0g0YHQ sNKT0LDRgl0gTFQiLG5leHREYXk6IlvQldGA0YLQtdKjINGB0LDSk9Cw0YJd IExUIixuZXh0V2VlazoiZGRkZCBb0YHQsNKT0LDRgl0gTFQiLGxhc3REYXk6 IlvQmtC10YjQtSDRgdCw0pPQsNGCXSBMVCIsbGFzdFdlZWs6IlvTqNGC0LrQ tdC9INCw0L/RgtCw0L3Ri9KjXSBkZGRkIFvRgdCw0pPQsNGCXSBMVCIsc2Ft ZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMg0ZbRiNGW0L3Q tNC1IixwYXN0OiIlcyDQsdKx0YDRi9C9IixzOiLQsdGW0YDQvdC10YjQtSDR gdC10LrRg9C90LQiLG06ItCx0ZbRgCDQvNC40L3Rg9GCIixtbToiJWQg0LzQ uNC90YPRgiIsaDoi0LHRltGAINGB0LDSk9Cw0YIiLGhoOiIlZCDRgdCw0pPQ sNGCIixkOiLQsdGW0YAg0LrSr9C9IixkZDoiJWQg0LrSr9C9IixNOiLQsdGW 0YAg0LDQuSIsTU06IiVkINCw0LkiLHk6ItCx0ZbRgCDQttGL0LsiLHl5OiIl ZCDQttGL0LsifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0tKNGI0ZZ80YjRiykv LG9yZGluYWw6ZnVuY3Rpb24oYSl7dmFyIGI9YSUxMCxjPWE+PTEwMD8xMDA6 bnVsbDtyZXR1cm4gYSsoWmdbYV18fFpnW2JdfHxaZ1tjXSl9LHdlZWs6e2Rv dzoxLC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgor ZG95Ojd9fSksa2cuZGVmaW5lTG9jYWxlKCJrbSIse21vbnRoczoi4Z6Y4Z6A 4Z6a4Z62X+GegOGeu+GemOGfkuGel+GfiF/hnpjhnrjhnpPhnrZf4Z6Y4Z+B 4Z6f4Z62X+Gep+Gen+Gel+Getl/hnpjhnrfhnpDhnrvhnpPhnrZf4Z6A4Z6A 4Z+S4Z6A4Z6K4Z62X+Gen+GeuOGeoOGetl/hnoDhnonhn5LhnonhnrZf4Z6P 4Z674Z6b4Z62X+GenOGet+GeheGfkuGehuGet+GegOGetl/hnpLhn5LhnpPh nrwiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IuGemOGegOGemuGetl/hnoDh nrvhnpjhn5Lhnpfhn4hf4Z6Y4Z644Z6T4Z62X+GemOGfgeGen+Getl/hnqfh np/hnpfhnrZf4Z6Y4Z634Z6Q4Z674Z6T4Z62X+GegOGegOGfkuGegOGeiuGe tl/hnp/hnrjhnqDhnrZf4Z6A4Z6J4Z+S4Z6J4Z62X+Gej+Geu+Gem+Getl/h npzhnrfhnoXhn5LhnobhnrfhnoDhnrZf4Z6S4Z+S4Z6T4Z68Ii5zcGxpdCgi XyIpLHdlZWtkYXlzOiLhnqLhnrbhnpHhnrfhno/hn5Lhnplf4Z6F4Z+Q4Z6T 4Z+S4Z6RX+GeouGehOGfkuGeguGetuGeml/hnpbhnrvhnpJf4Z6W4Z+S4Z6a 4Z6g4Z6f4Z+S4Z6U4Z6P4Z634Z+NX+Gen+Geu+GegOGfkuGeml/hnp/hn4Xh nprhn40iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi4Z6i4Z624Z6R4Z63 4Z6P4Z+S4Z6ZX+GeheGfkOGek+GfkuGekV/hnqLhnoThn5LhnoLhnrbhnppf 4Z6W4Z674Z6SX+GeluGfkuGemuGeoOGen+GfkuGelOGej+Get+GfjV/hnp/h nrvhnoDhn5Lhnppf4Z6f4Z+F4Z6a4Z+NIi5zcGxpdCgiXyIpLHdlZWtkYXlz TWluOiLhnqLhnrbhnpHhnrfhno/hn5Lhnplf4Z6F4Z+Q4Z6T4Z+S4Z6RX+Ge ouGehOGfkuGeguGetuGeml/hnpbhnrvhnpJf4Z6W4Z+S4Z6a4Z6g4Z6f4Z+S 4Z6U4Z6P4Z634Z+NX+Gen+Geu+GegOGfkuGeml/hnp/hn4Xhnprhn40iLnNw bGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDpt bTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQg TU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDpt bSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb4Z6Q4Z+S4Z6E4Z+D4Z6T4Z+B4Z+H IOGemOGfieGfhOGehF0gTFQiLG5leHREYXk6Ilvhnp/hn5LhnqLhn4LhnoAg 4Z6Y4Z+J4Z+E4Z6EXSBMVCIsbmV4dFdlZWs6ImRkZGQgW+GemOGfieGfhOGe hF0gTFQiLGxhc3REYXk6Ilvhnpjhn5Lhnp/hnrfhnpvhnpjhnrfhnokg4Z6Y 4Z+J4Z+E4Z6EXSBMVCIsbGFzdFdlZWs6ImRkZGQgW+Gen+GelOGfkuGej+Ge tuGeoOGfjeGemOGeu+Gek10gW+GemOGfieGfhOGehF0gTFQiLHNhbWVFbHNl OiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVz4Z6R4Z+A4Z6PIixwYXN0 OiIlc+GemOGeu+GekyIsczoi4Z6U4Z+J4Z674Z6T4Z+S4Z6Y4Z624Z6T4Z6c 4Z634Z6T4Z624Z6R4Z64IixtOiLhnpjhnr3hnpnhnpPhnrbhnpHhnrgiLG1t OiIlZCDhnpPhnrbhnpHhnrgiLGg6IuGemOGeveGemeGemOGfieGfhOGehCIs aGg6IiVkIOGemOGfieGfhOGehCIsZDoi4Z6Y4Z694Z6Z4Z6Q4Z+S4Z6E4Z+D IixkZDoiJWQg4Z6Q4Z+S4Z6E4Z+DIixNOiLhnpjhnr3hnpnhnoHhn4IiLE1N OiIlZCDhnoHhn4IiLHk6IuGemOGeveGemeGehuGfkuGek+GetuGfhiIseXk6 IiVkIOGehuGfkuGek+GetuGfhiJ9LHdlZWs6e2RvdzoxLC8vIE1vbmRheSBp cyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorZG95OjR9fSksa2cuZGVm aW5lTG9jYWxlKCJrbyIse21vbnRoczoiMeyblF8y7JuUXzPsm5RfNOyblF81 7JuUXzbsm5RfN+yblF847JuUXznsm5RfMTDsm5RfMTHsm5RfMTLsm5QiLnNw bGl0KCJfIiksbW9udGhzU2hvcnQ6IjHsm5RfMuyblF8z7JuUXzTsm5RfNeyb lF827JuUXzfsm5RfOOyblF857JuUXzEw7JuUXzEx7JuUXzEy7JuUIi5zcGxp dCgiXyIpLHdlZWtkYXlzOiLsnbzsmpTsnbxf7JuU7JqU7J28X+2ZlOyalOyd vF/siJjsmpTsnbxf66qp7JqU7J28X+q4iOyalOydvF/thqDsmpTsnbwiLnNw bGl0KCJfIiksd2Vla2RheXNTaG9ydDoi7J28X+yblF/tmZRf7IiYX+uqqV/q uIhf7YagIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLsnbxf7JuUX+2ZlF/s iJhf66qpX+q4iF/thqAiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xU OiJBIGjsi5wgbeu2hCIsTFRTOiJBIGjsi5wgbeu2hCBz7LSIIixMOiJZWVlZ Lk1NLkREIixMTDoiWVlZWeuFhCBNTU1NIETsnbwiLExMTDoiWVlZWeuFhCBN TU1NIETsnbwgQSBo7IucIG3rtoQiLExMTEw6IllZWVnrhYQgTU1NTSBE7J28 IGRkZGQgQSBo7IucIG3rtoQifSxjYWxlbmRhcjp7c2FtZURheToi7Jik64qY IExUIixuZXh0RGF5OiLrgrTsnbwgTFQiLG5leHRXZWVrOiJkZGRkIExUIixs YXN0RGF5OiLslrTsoJwgTFQiLGxhc3RXZWVrOiLsp4Drgpzso7wgZGRkZCBM VCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMg7ZuE IixwYXN0OiIlcyDsoIQiLHM6IuuqhyDstIgiLHNzOiIlZOy0iCIsbToi7J28 67aEIixtbToiJWTrtoQiLGg6Iu2VnCDsi5zqsIQiLGhoOiIlZOyLnOqwhCIs ZDoi7ZWY66OoIixkZDoiJWTsnbwiLE06Iu2VnCDri6wiLE1NOiIlZOuLrCIs eToi7J28IOuFhCIseXk6IiVk64WEIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9 7J28LyxvcmRpbmFsOiIlZOydvCIsbWVyaWRpZW1QYXJzZTov7Jik7KCEfOyY pO2bhC8saXNQTTpmdW5jdGlvbihhKXtyZXR1cm4i7Jik7ZuEIj09PWF9LG1l cmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMTI+YT8i7Jik7KCEIjoi 7Jik7ZuEIn19KSx7MDoiLdGH0q8iLDE6Ii3Rh9C4IiwyOiIt0YfQuCIsMzoi LdGH0q8iLDQ6Ii3Rh9KvIiw1OiIt0YfQuCIsNjoiLdGH0YsiLDc6Ii3Rh9C4 Iiw4OiIt0YfQuCIsOToiLdGH0YMiLDEwOiIt0YfRgyIsMjA6Ii3Rh9GLIiwz MDoiLdGH0YMiLDQwOiIt0YfRiyIsNTA6Ii3Rh9KvIiw2MDoiLdGH0YsiLDcw OiIt0YfQuCIsODA6Ii3Rh9C4Iiw5MDoiLdGH0YMiLDEwMDoiLdGH0q8ifSks X2c9KGtnLmRlZmluZUxvY2FsZSgia3kiLHttb250aHM6ItGP0L3QstCw0YDR jF/RhNC10LLRgNCw0LvRjF/QvNCw0YDRgl/QsNC/0YDQtdC70Yxf0LzQsNC5 X9C40Y7QvdGMX9C40Y7Qu9GMX9Cw0LLQs9GD0YHRgl/RgdC10L3RgtGP0LHR gNGMX9C+0LrRgtGP0LHRgNGMX9C90L7Rj9Cx0YDRjF/QtNC10LrQsNCx0YDR jCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi0Y/QvdCyX9GE0LXQsl/QvNCw 0YDRgl/QsNC/0YBf0LzQsNC5X9C40Y7QvdGMX9C40Y7Qu9GMX9Cw0LLQs1/R gdC10L1f0L7QutGCX9C90L7Rj1/QtNC10LoiLnNwbGl0KCJfIiksd2Vla2Rh eXM6ItCW0LXQutGI0LXQvNCx0Lhf0JTSr9C50YjTqdC80LHSr1/QqNC10LnR iNC10LzQsdC4X9Co0LDRgNGI0LXQvNCx0Lhf0JHQtdC50YjQtdC80LHQuF/Q ltGD0LzQsF/QmNGI0LXQvNCx0LgiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9y dDoi0JbQtdC6X9CU0q/QuV/QqNC10Llf0KjQsNGAX9CR0LXQuV/QltGD0Lxf 0JjRiNC1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLQltC6X9CU0Llf0KjQ uV/QqNGAX9CR0Llf0JbQvF/QmNGIIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9y bWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVki LExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExM TDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURh eToiW9CR0q/Qs9Kv0L0g0YHQsNCw0YJdIExUIixuZXh0RGF5OiJb0K3RgNGC 0LXSoyDRgdCw0LDRgl0gTFQiLG5leHRXZWVrOiJkZGRkIFvRgdCw0LDRgl0g TFQiLGxhc3REYXk6IlvQmtC10YfQtSDRgdCw0LDRgl0gTFQiLGxhc3RXZWVr OiJb06jRgtC60LXQvSDQsNC/0YLQsNC90YvQvV0gZGRkZCBb0LrSr9C90q9d IFvRgdCw0LDRgl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntm dXR1cmU6IiVzINC40YfQuNC90LTQtSIscGFzdDoiJXMg0LzRg9GA0YPQvSIs czoi0LHQuNGA0L3QtdGH0LUg0YHQtdC60YPQvdC0IixtOiLQsdC40YAg0LzS r9C906nRgiIsbW06IiVkINC80q/QvdOp0YIiLGg6ItCx0LjRgCDRgdCw0LDR giIsaGg6IiVkINGB0LDQsNGCIixkOiLQsdC40YAg0LrSr9C9IixkZDoiJWQg 0LrSr9C9IixNOiLQsdC40YAg0LDQuSIsTU06IiVkINCw0LkiLHk6ItCx0LjR gCDQttGL0LsiLHl5OiIlZCDQttGL0LsifSxvcmRpbmFsUGFyc2U6L1xkezEs Mn0tKNGH0Lh80YfRi3zRh9KvfNGH0YMpLyxvcmRpbmFsOmZ1bmN0aW9uKGEp e3ZhciBiPWElMTAsYz1hPj0xMDA/MTAwOm51bGw7cmV0dXJuIGErKCRnW2Fd fHwkZ1tiXXx8JGdbY10pfSx3ZWVrOntkb3c6MSwvLyBNb25kYXkgaXMgdGhl IGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KK2RveTo3fX0pLGtnLmRlZmluZUxv Y2FsZSgibGIiLHttb250aHM6IkphbnVhcl9GZWJydWFyX03DpGVyel9BYnLD q2xsX01lZV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05v dmVtYmVyX0RlemVtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW4u X0ZlYnIuX01yei5fQWJyLl9NZWVfSnVuLl9KdWwuX0F1Zy5fU2VwdC5fT2t0 Ll9Ob3YuX0Rlei4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3 ZWVrZGF5czoiU29ubmRlZ19Nw6lpbmRlZ19Ew6tuc2NoZGVnX03Dq3R0d29j aF9Eb25uZXNjaGRlZ19GcmVpZGVnX1NhbXNjaGRlZyIuc3BsaXQoIl8iKSx3 ZWVrZGF5c1Nob3J0OiJTby5fTcOpLl9Ew6suX03Dqy5fRG8uX0ZyLl9TYS4i LnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlNvX03DqV9Ew6tfTcOrX0RvX0Zy X1NhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0 ZUZvcm1hdDp7TFQ6Ikg6bW0gW0F1ZXJdIixMVFM6Ikg6bW06c3MgW0F1ZXJd IixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1N TU0gWVlZWSBIOm1tIFtBdWVyXSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZ IEg6bW0gW0F1ZXJdIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIYXV0IHVtXSBM VCIsc2FtZUVsc2U6IkwiLG5leHREYXk6IltNdWVyIHVtXSBMVCIsbmV4dFdl ZWs6ImRkZGQgW3VtXSBMVCIsbGFzdERheToiW0fDq3NjaHRlciB1bV0gTFQi LGxhc3RXZWVrOmZ1bmN0aW9uKCl7CisvLyBEaWZmZXJlbnQgZGF0ZSBzdHJp bmcgZm9yICdEw6tuc2NoZGVnJyAoVHVlc2RheSkgYW5kICdEb25uZXNjaGRl ZycgKFRodXJzZGF5KSBkdWUgdG8gcGhvbm9sb2dpY2FsIHJ1bGUKK3N3aXRj aCh0aGlzLmRheSgpKXtjYXNlIDI6Y2FzZSA0OnJldHVybiJbTGVzY2h0ZW5d IGRkZGQgW3VtXSBMVCI7ZGVmYXVsdDpyZXR1cm4iW0xlc2NodGVdIGRkZGQg W3VtXSBMVCJ9fX0scmVsYXRpdmVUaW1lOntmdXR1cmU6SGQscGFzdDpJZCxz OiJlIHB1ZXIgU2Vrb25uZW4iLG06R2QsbW06IiVkIE1pbnV0dGVuIixoOkdk LGhoOiIlZCBTdG9ubmVuIixkOkdkLGRkOiIlZCBEZWVnIixNOkdkLE1NOiIl ZCBNw6lpbnQiLHk6R2QseXk6IiVkIEpvZXIifSxvcmRpbmFsUGFyc2U6L1xk ezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSwvLyBNb25kYXkg aXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KK2RveTo0fX0pLGtnLmRl ZmluZUxvY2FsZSgibG8iLHttb250aHM6IuC6oeC6seC6h+C6geC6reC6mV/g uoHgurjguqHgup7gurJf4Lqh4Lq14LqZ4LqyX+C7gOC6oeC6quC6sl/gup7g urbgupTguqrgurDgup7gurJf4Lqh4Lq04LqW4Lq44LqZ4LqyX+C6geC7jeC6 peC6sOC6geC6u+C6lF/guqrgurTguofguqvgurJf4LqB4Lqx4LqZ4LqN4Lqy X+C6leC6uOC6peC6sl/gup7gurDguojgurTguoFf4LqX4Lqx4LqZ4Lqn4Lqy Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLguqHgurHguofguoHguq3guplf 4LqB4Lq44Lqh4Lqe4LqyX+C6oeC6teC6meC6sl/gu4DguqHguqrgurJf4Lqe 4Lq24LqU4Lqq4Lqw4Lqe4LqyX+C6oeC6tOC6luC6uOC6meC6sl/guoHgu43g uqXgurDguoHgurvgupRf4Lqq4Lq04LqH4Lqr4LqyX+C6geC6seC6meC6jeC6 sl/gupXgurjguqXgurJf4Lqe4Lqw4LqI4Lq04LqBX+C6l+C6seC6meC6p+C6 siIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi4Lqt4Lqy4LqX4Lq04LqUX+C6iOC6 seC6mV/guq3gurHguofguoTgurLguplf4Lqe4Lq44LqUX+C6nuC6sOC6q+C6 seC6lF/guqrgurjguoFf4LuA4Lqq4Lq74LqyIi5zcGxpdCgiXyIpLHdlZWtk YXlzU2hvcnQ6IuC6l+C6tOC6lF/guojgurHguplf4Lqt4Lqx4LqH4LqE4Lqy 4LqZX+C6nuC6uOC6lF/gup7gurDguqvgurHgupRf4Lqq4Lq44LqBX+C7gOC6 quC6u+C6siIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi4LqXX+C6iF/guq3g uoRf4LqeX+C6nuC6q1/guqrguoFf4LqqIi5zcGxpdCgiXyIpLHdlZWtkYXlz UGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6 IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExM TDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6IuC6p+C6seC6mWRkZGQgRCBN TU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi/gupXguq3gupngu4Dg uorgurvgu4ngurJ84LqV4Lqt4LqZ4LuB4Lql4LqHLyxpc1BNOmZ1bmN0aW9u KGEpe3JldHVybiLgupXguq3gupngu4HguqXguociPT09YX0sbWVyaWRpZW06 ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMj5hPyLgupXguq3gupngu4Dguorg urvgu4ngurIiOiLgupXguq3gupngu4HguqXguocifSxjYWxlbmRhcjp7c2Ft ZURheToiW+C6oeC6t+C7ieC6meC6teC7ieC7gOC6p+C6peC6sl0gTFQiLG5l eHREYXk6IlvguqHgurfgu4nguq3gurfgu4jgupngu4DguqfguqXgurJdIExU IixuZXh0V2VlazoiW+C6p+C6seC6mV1kZGRkW+C7nOC7ieC6suC7gOC6p+C6 peC6sl0gTFQiLGxhc3REYXk6IlvguqHgurfgu4nguqfgurLgupngupngurXg u4ngu4DguqfguqXgurJdIExUIixsYXN0V2VlazoiW+C6p+C6seC6mV1kZGRk W+C7geC6peC7ieC6p+C6meC6teC7ieC7gOC6p+C6peC6sl0gTFQiLHNhbWVF bHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IuC6reC6teC6gSAlcyIs cGFzdDoiJXPgupzgu4jgurLgupnguqHgurIiLHM6IuC6muC7jeC7iOC7gOC6 l+C6u+C7iOC6suC7g+C6lOC6p+C6tOC6meC6suC6l+C6tSIsbToiMSDgupng urLgupfgurUiLG1tOiIlZCDgupngurLgupfgurUiLGg6IjEg4LqK4Lq74LuI 4Lqn4LuC4Lqh4LqHIixoaDoiJWQg4LqK4Lq74LuI4Lqn4LuC4Lqh4LqHIixk OiIxIOC6oeC6t+C7iSIsZGQ6IiVkIOC6oeC6t+C7iSIsTToiMSDgu4DgupTg urfguq3gupkiLE1NOiIlZCDgu4DgupTgurfguq3gupkiLHk6IjEg4Lqb4Lq1 Iix5eToiJWQg4Lqb4Lq1In0sb3JkaW5hbFBhcnNlOi8o4LqX4Lq14LuIKVxk ezEsMn0vLG9yZGluYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIuC6l+C6teC7iCIr YX19KSx7bToibWludXTEl19taW51dMSXc19taW51dMSZIixtbToibWludXTE l3NfbWludcSNacWzX21pbnV0ZXMiLGg6InZhbGFuZGFfdmFsYW5kb3NfdmFs YW5kxIUiLGhoOiJ2YWxhbmRvc192YWxhbmTFs192YWxhbmRhcyIsZDoiZGll bmFfZGllbm9zX2RpZW7EhSIsZGQ6ImRpZW5vc19kaWVuxbNfZGllbmFzIixN OiJtxJdudW9fbcSXbmVzaW9fbcSXbmVzxK8iLE1NOiJtxJduZXNpYWlfbcSX bmVzacWzX23El25lc2l1cyIseToibWV0YWlfbWV0xbNfbWV0dXMiLHl5OiJt ZXRhaV9tZXTFs19tZXR1cyJ9KSxhaD0oa2cuZGVmaW5lTG9jYWxlKCJsdCIs e21vbnRoczp7Zm9ybWF0OiJzYXVzaW9fdmFzYXJpb19rb3ZvX2JhbGFuZMW+ aW9fZ2VndcW+xJdzX2JpcsW+ZWxpb19saWVwb3NfcnVncGrFq8SNaW9fcnVn c8SXam9fc3BhbGlvX2xhcGtyacSNaW9fZ3J1b2TFvmlvIi5zcGxpdCgiXyIp LHN0YW5kYWxvbmU6InNhdXNpc192YXNhcmlzX2tvdmFzX2JhbGFuZGlzX2dl Z3XFvsSXX2JpcsW+ZWxpc19saWVwYV9ydWdwasWrdGlzX3J1Z3PEl2ppc19z cGFsaXNfbGFwa3JpdGlzX2dydW9kaXMiLnNwbGl0KCJfIiksaXNGb3JtYXQ6 L0Rbb0RdPyhcW1teXFtcXV0qXF18XHMrKStNTU1NP3xNTU1NPyhcW1teXFtc XV0qXF18XHMrKStEW29EXT8vfSxtb250aHNTaG9ydDoic2F1X3Zhc19rb3Zf YmFsX2dlZ19iaXJfbGllX3JncF9yZ3Nfc3BhX2xhcF9ncmQiLnNwbGl0KCJf Iiksd2Vla2RheXM6e2Zvcm1hdDoic2VrbWFkaWVuxK9fcGlybWFkaWVuxK9f YW50cmFkaWVuxK9fdHJlxI1pYWRpZW7Er19rZXR2aXJ0YWRpZW7Er19wZW5r dGFkaWVuxK9fxaFlxaF0YWRpZW7EryIuc3BsaXQoIl8iKSxzdGFuZGFsb25l OiJzZWttYWRpZW5pc19waXJtYWRpZW5pc19hbnRyYWRpZW5pc190cmXEjWlh ZGllbmlzX2tldHZpcnRhZGllbmlzX3Blbmt0YWRpZW5pc1/FoWXFoXRhZGll bmlzIi5zcGxpdCgiXyIpLGlzRm9ybWF0Oi9kZGRkIEhIOm1tL30sd2Vla2Rh eXNTaG9ydDoiU2VrX1Bpcl9BbnRfVHJlX0tldF9QZW5fxaBlxaEiLnNwbGl0 KCJfIiksd2Vla2RheXNNaW46IlNfUF9BX1RfS19Qbl/FoCIuc3BsaXQoIl8i KSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJI SDptbSIsTFRTOiJISDptbTpzcyIsTDoiWVlZWS1NTS1ERCIsTEw6IllZWVkg W20uXSBNTU1NIEQgW2QuXSIsTExMOiJZWVlZIFttLl0gTU1NTSBEIFtkLl0s IEhIOm1tIFt2YWwuXSIsTExMTDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBk ZGRkLCBISDptbSBbdmFsLl0iLGw6IllZWVktTU0tREQiLGxsOiJZWVlZIFtt Ll0gTU1NTSBEIFtkLl0iLGxsbDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBI SDptbSBbdmFsLl0iLGxsbGw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSwgZGRk LCBISDptbSBbdmFsLl0ifSxjYWxlbmRhcjp7c2FtZURheToiW8WgaWFuZGll bl0gTFQiLG5leHREYXk6IltSeXRval0gTFQiLG5leHRXZWVrOiJkZGRkIExU IixsYXN0RGF5OiJbVmFrYXJdIExUIixsYXN0V2VlazoiW1ByYcSXanVzxK9d IGRkZGQgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6 InBvICVzIixwYXN0OiJwcmllxaEgJXMiLHM6S2QsbTpMZCxtbTpPZCxoOkxk LGhoOk9kLGQ6TGQsZGQ6T2QsTTpMZCxNTTpPZCx5OkxkLHl5Ok9kfSxvcmRp bmFsUGFyc2U6L1xkezEsMn0tb2ppLyxvcmRpbmFsOmZ1bmN0aW9uKGEpe3Jl dHVybiBhKyItb2ppIn0sd2Vlazp7ZG93OjEsLy8gTW9uZGF5IGlzIHRoZSBm aXJzdCBkYXkgb2YgdGhlIHdlZWsuCitkb3k6NH19KSx7bToibWluxat0ZXNf bWluxat0xJNtX21pbsWrdGVfbWluxat0ZXMiLnNwbGl0KCJfIiksbW06Im1p bsWrdGVzX21pbsWrdMSTbV9taW7Fq3RlX21pbsWrdGVzIi5zcGxpdCgiXyIp LGg6InN0dW5kYXNfc3R1bmTEgW1fc3R1bmRhX3N0dW5kYXMiLnNwbGl0KCJf IiksaGg6InN0dW5kYXNfc3R1bmTEgW1fc3R1bmRhX3N0dW5kYXMiLnNwbGl0 KCJfIiksZDoiZGllbmFzX2RpZW7EgW1fZGllbmFfZGllbmFzIi5zcGxpdCgi XyIpLGRkOiJkaWVuYXNfZGllbsSBbV9kaWVuYV9kaWVuYXMiLnNwbGl0KCJf IiksTToibcSTbmXFoWFfbcSTbmXFoWllbV9txJNuZXNpc19txJNuZcWhaSIu c3BsaXQoIl8iKSxNTToibcSTbmXFoWFfbcSTbmXFoWllbV9txJNuZXNpc19t xJNuZcWhaSIuc3BsaXQoIl8iKSx5OiJnYWRhX2dhZGllbV9nYWRzX2dhZGki LnNwbGl0KCJfIikseXk6ImdhZGFfZ2FkaWVtX2dhZHNfZ2FkaSIuc3BsaXQo Il8iKX0pLGJoPShrZy5kZWZpbmVMb2NhbGUoImx2Iix7bW9udGhzOiJqYW52 xIFyaXNfZmVicnXEgXJpc19tYXJ0c19hcHLEq2xpc19tYWlqc19qxatuaWpz X2rFq2xpanNfYXVndXN0c19zZXB0ZW1icmlzX29rdG9icmlzX25vdmVtYnJp c19kZWNlbWJyaXMiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZWJf bWFyX2Fwcl9tYWlfasWrbl9qxatsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNw bGl0KCJfIiksd2Vla2RheXM6InN2xJN0ZGllbmFfcGlybWRpZW5hX290cmRp ZW5hX3RyZcWhZGllbmFfY2V0dXJ0ZGllbmFfcGlla3RkaWVuYV9zZXN0ZGll bmEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3ZfUF9PX1RfQ19Qa19T Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdl9QX09fVF9DX1BrX1MiLnNw bGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0 OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkuIixM TDoiWVlZWS4gW2dhZGFdIEQuIE1NTU0iLExMTDoiWVlZWS4gW2dhZGFdIEQu IE1NTU0sIEhIOm1tIixMTExMOiJZWVlZLiBbZ2FkYV0gRC4gTU1NTSwgZGRk ZCwgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW8Wgb2RpZW4gcHVsa3N0 ZW5dIExUIixuZXh0RGF5OiJbUsSrdCBwdWxrc3Rlbl0gTFQiLG5leHRXZWVr OiJkZGRkIFtwdWxrc3Rlbl0gTFQiLGxhc3REYXk6IltWYWthciBwdWxrc3Rl bl0gTFQiLGxhc3RXZWVrOiJbUGFnxIFqdcWhxIFdIGRkZGQgW3B1bGtzdGVu XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToicMST YyAlcyIscGFzdDoicGlybXMgJXMiLHM6U2QsbTpSZCxtbTpRZCxoOlJkLGho OlFkLGQ6UmQsZGQ6UWQsTTpSZCxNTTpRZCx5OlJkLHl5OlFkfSxvcmRpbmFs UGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSwv LyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KK2RveTo0 fX0pLHt3b3Jkczp7Ly9EaWZmZXJlbnQgZ3JhbW1hdGljYWwgY2FzZXMKK206 WyJqZWRhbiBtaW51dCIsImplZG5vZyBtaW51dGEiXSxtbTpbIm1pbnV0Iiwi bWludXRhIiwibWludXRhIl0saDpbImplZGFuIHNhdCIsImplZG5vZyBzYXRh Il0saGg6WyJzYXQiLCJzYXRhIiwic2F0aSJdLGRkOlsiZGFuIiwiZGFuYSIs ImRhbmEiXSxNTTpbIm1qZXNlYyIsIm1qZXNlY2EiLCJtamVzZWNpIl0seXk6 WyJnb2RpbmEiLCJnb2RpbmUiLCJnb2RpbmEiXX0sY29ycmVjdEdyYW1tYXRp Y2FsQ2FzZTpmdW5jdGlvbihhLGIpe3JldHVybiAxPT09YT9iWzBdOmE+PTIm JjQ+PWE/YlsxXTpiWzJdfSx0cmFuc2xhdGU6ZnVuY3Rpb24oYSxiLGMpe3Zh ciBkPWJoLndvcmRzW2NdO3JldHVybiAxPT09Yy5sZW5ndGg/Yj9kWzBdOmRb MV06YSsiICIrYmguY29ycmVjdEdyYW1tYXRpY2FsQ2FzZShhLGQpfX0pLGNo PShrZy5kZWZpbmVMb2NhbGUoIm1lIix7bW9udGhzOiJqYW51YXJfZmVicnVh cl9tYXJ0X2FwcmlsX21hal9qdW5fanVsX2F2Z3VzdF9zZXB0ZW1iYXJfb2t0 b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhciIuc3BsaXQoIl8iKSxtb250aHNTaG9y dDoiamFuLl9mZWIuX21hci5fYXByLl9tYWpfanVuX2p1bF9hdmcuX3NlcC5f b2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDoh MCx3ZWVrZGF5czoibmVkamVsamFfcG9uZWRqZWxqYWtfdXRvcmFrX3NyaWpl ZGFfxI1ldHZydGFrX3BldGFrX3N1Ym90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5 c1Nob3J0OiJuZWQuX3Bvbi5fdXRvLl9zcmkuX8SNZXQuX3BldC5fc3ViLiIu c3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdXRfc3JfxI1lX3BlX3N1 Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZv cm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIs TEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSIsTExM TDoiZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURh eToiW2RhbmFzIHVdIExUIixuZXh0RGF5OiJbc2p1dHJhIHVdIExUIixuZXh0 V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0 dXJuIlt1XSBbbmVkamVsanVdIFt1XSBMVCI7Y2FzZSAzOnJldHVybiJbdV0g W3NyaWplZHVdIFt1XSBMVCI7Y2FzZSA2OnJldHVybiJbdV0gW3N1Ym90dV0g W3VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlt1 XSBkZGRkIFt1XSBMVCJ9fSxsYXN0RGF5OiJbanXEjWUgdV0gTFQiLGxhc3RX ZWVrOmZ1bmN0aW9uKCl7dmFyIGE9WyJbcHJvxaFsZV0gW25lZGplbGplXSBb dV0gTFQiLCJbcHJvxaFsb2ddIFtwb25lZGplbGprYV0gW3VdIExUIiwiW3By b8WhbG9nXSBbdXRvcmthXSBbdV0gTFQiLCJbcHJvxaFsZV0gW3NyaWplZGVd IFt1XSBMVCIsIltwcm/FoWxvZ10gW8SNZXR2cnRrYV0gW3VdIExUIiwiW3By b8WhbG9nXSBbcGV0a2FdIFt1XSBMVCIsIltwcm/FoWxlXSBbc3Vib3RlXSBb dV0gTFQiXTtyZXR1cm4gYVt0aGlzLmRheSgpXX0sc2FtZUVsc2U6IkwifSxy ZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6InByaWplICVzIixz OiJuZWtvbGlrbyBzZWt1bmRpIixtOmJoLnRyYW5zbGF0ZSxtbTpiaC50cmFu c2xhdGUsaDpiaC50cmFuc2xhdGUsaGg6YmgudHJhbnNsYXRlLGQ6ImRhbiIs ZGQ6YmgudHJhbnNsYXRlLE06Im1qZXNlYyIsTU06YmgudHJhbnNsYXRlLHk6 ImdvZGludSIseXk6YmgudHJhbnNsYXRlfSxvcmRpbmFsUGFyc2U6L1xkezEs Mn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSwvLyBNb25kYXkgaXMg dGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KK2RveTo3fX0pLGtnLmRlZmlu ZUxvY2FsZSgibWkiLHttb250aHM6IktvaGktdMSBdGVfSHVpLXRhbmd1cnVf UG91dMWrLXRlLXJhbmdpX1BhZW5nYS13aMSBd2jEgV9IYXJhdHVhX1BpcGly aV9IxY1uZ29pbmdvaV9IZXJlLXR1cmkta8WNa8SBX01haHVydV9XaGlyaW5n YS3EgS1udWt1X1doaXJpbmdhLcSBLXJhbmdpX0hha2loZWEiLnNwbGl0KCJf IiksbW9udGhzU2hvcnQ6IktvaGlfSHVpX1BvdV9QYWVfSGFyYV9QaXBpX0jF jW5nb2lfSGVyZV9NYWh1X1doaS1udV9XaGktcmFfSGFraSIuc3BsaXQoIl8i KSxtb250aHNSZWdleDovKD86WydhLXpcdTAxMDFcdTAxNERcdTAxNkJdK1wt Pyl7MSwzfS9pLG1vbnRoc1N0cmljdFJlZ2V4Oi8oPzpbJ2Etelx1MDEwMVx1 MDE0RFx1MDE2Ql0rXC0/KXsxLDN9L2ksbW9udGhzU2hvcnRSZWdleDovKD86 WydhLXpcdTAxMDFcdTAxNERcdTAxNkJdK1wtPyl7MSwzfS9pLG1vbnRoc1No b3J0U3RyaWN0UmVnZXg6Lyg/OlsnYS16XHUwMTAxXHUwMTREXHUwMTZCXStc LT8pezEsMn0vaSx3ZWVrZGF5czoiUsSBdGFwdV9NYW5lX1TFq3JlaV9XZW5l cmVpX1TEgWl0ZV9QYXJhaXJlX0jEgXRhcmVpIi5zcGxpdCgiXyIpLHdlZWtk YXlzU2hvcnQ6IlRhX01hX1TFq19XZV9UxIFpX1BhX0jEgSIuc3BsaXQoIl8i KSx3ZWVrZGF5c01pbjoiVGFfTWFfVMWrX1dlX1TEgWlfUGFfSMSBIi5zcGxp dCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06 c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1N TU0gWVlZWSBbaV0gSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIFtp XSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbaSB0ZWllIG1haGFuYSwg aV0gTFQiLG5leHREYXk6IlthcG9wbyBpXSBMVCIsbmV4dFdlZWs6ImRkZGQg W2ldIExUIixsYXN0RGF5OiJbaW5hbmFoaSBpXSBMVCIsbGFzdFdlZWs6ImRk ZGQgW3doYWthbXV0dW5nYSBpXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2 ZVRpbWU6e2Z1dHVyZToiaSByb3RvIGkgJXMiLHBhc3Q6IiVzIGkgbXVhIixz OiJ0ZSBoxJNrb25hIHJ1YXJ1YSIsbToiaGUgbWVuZXRpIixtbToiJWQgbWVu ZXRpIixoOiJ0ZSBoYW9yYSIsaGg6IiVkIGhhb3JhIixkOiJoZSByYSIsZGQ6 IiVkIHJhIixNOiJoZSBtYXJhbWEiLE1NOiIlZCBtYXJhbWEiLHk6ImhlIHRh dSIseXk6IiVkIHRhdSJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfcK6LyxvcmRp bmFsOiIlZMK6Iix3ZWVrOntkb3c6MSwvLyBNb25kYXkgaXMgdGhlIGZpcnN0 IGRheSBvZiB0aGUgd2Vlay4KK2RveTo0fX0pLGtnLmRlZmluZUxvY2FsZSgi bWsiLHttb250aHM6ItGY0LDQvdGD0LDRgNC4X9GE0LXQstGA0YPQsNGA0Lhf 0LzQsNGA0YJf0LDQv9GA0LjQu1/QvNCw0Zhf0ZjRg9C90Lhf0ZjRg9C70Lhf 0LDQstCz0YPRgdGCX9GB0LXQv9GC0LXQvNCy0YDQuF/QvtC60YLQvtC80LLR gNC4X9C90L7QtdC80LLRgNC4X9C00LXQutC10LzQstGA0LgiLnNwbGl0KCJf IiksbW9udGhzU2hvcnQ6ItGY0LDQvV/RhNC10LJf0LzQsNGAX9Cw0L/RgF/Q vNCw0Zhf0ZjRg9C9X9GY0YPQu1/QsNCy0LNf0YHQtdC/X9C+0LrRgl/QvdC+ 0LVf0LTQtdC6Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiLQvdC10LTQtdC70LBf 0L/QvtC90LXQtNC10LvQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNC10LTQ sF/Rh9C10YLQstGA0YLQvtC6X9C/0LXRgtC+0Lpf0YHQsNCx0L7RgtCwIi5z cGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ItC90LXQtF/Qv9C+0L1f0LLRgtC+ X9GB0YDQtV/Rh9C10YJf0L/QtdGCX9GB0LDQsSIuc3BsaXQoIl8iKSx3ZWVr ZGF5c01pbjoi0L1lX9C/b1/QstGCX9GB0YBf0YfQtV/Qv9C1X9GBYSIuc3Bs aXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpz cyIsTDoiRC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1N IFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSDptbSJ9LGNh bGVuZGFyOntzYW1lRGF5OiJb0JTQtdC90LXRgSDQstC+XSBMVCIsbmV4dERh eToiW9Cj0YLRgNC1INCy0L5dIExUIixuZXh0V2VlazoiW9CS0L5dIGRkZGQg W9Cy0L5dIExUIixsYXN0RGF5OiJb0JLRh9C10YDQsCDQstC+XSBMVCIsbGFz dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOmNh c2UgMzpjYXNlIDY6cmV0dXJuIlvQmNC30LzQuNC90LDRgtCw0YLQsF0gZGRk ZCBb0LLQvl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1 cm4iW9CY0LfQvNC40L3QsNGC0LjQvtGCXSBkZGRkIFvQstC+XSBMVCJ9fSxz YW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLQv9C+0YHQu9C1 ICVzIixwYXN0OiLQv9GA0LXQtCAlcyIsczoi0L3QtdC60L7Qu9C60YMg0YHQ tdC60YPQvdC00LgiLG06ItC80LjQvdGD0YLQsCIsbW06IiVkINC80LjQvdGD 0YLQuCIsaDoi0YfQsNGBIixoaDoiJWQg0YfQsNGB0LAiLGQ6ItC00LXQvSIs ZGQ6IiVkINC00LXQvdCwIixNOiLQvNC10YHQtdGGIixNTToiJWQg0LzQtdGB 0LXRhtC4Iix5OiLQs9C+0LTQuNC90LAiLHl5OiIlZCDQs9C+0LTQuNC90Lgi fSxvcmRpbmFsUGFyc2U6L1xkezEsMn0tKNC10LJ80LXQvXzRgtC4fNCy0Lh8 0YDQuHzQvNC4KS8sb3JkaW5hbDpmdW5jdGlvbihhKXt2YXIgYj1hJTEwLGM9 YSUxMDA7cmV0dXJuIDA9PT1hP2ErIi3QtdCyIjowPT09Yz9hKyIt0LXQvSI6 Yz4xMCYmMjA+Yz9hKyIt0YLQuCI6MT09PWI/YSsiLdCy0LgiOjI9PT1iP2Er Ii3RgNC4Ijo3PT09Ynx8OD09PWI/YSsiLdC80LgiOmErIi3RgtC4In0sd2Vl azp7ZG93OjEsLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdl ZWsuCitkb3k6N319KSxrZy5kZWZpbmVMb2NhbGUoIm1sIix7bW9udGhzOiLg tJzgtKjgtYHgtLXgtLDgtL9f4LSr4LWG4LSs4LWN4LSw4LWB4LS14LSw4LS/ X+C0ruC0vuC1vOC0muC1jeC0muC1jV/gtI/gtKrgtY3gtLDgtL/gtb1f4LSu 4LWH4LSv4LWNX+C0nOC1guC1ul/gtJzgtYLgtLLgtYhf4LST4LSX4LS44LWN 4LSx4LWN4LSx4LWNX+C0uOC1huC0quC1jeC0seC1jeC0seC0guC0rOC1vF/g tJLgtJXgtY3gtJ/gtYvgtKzgtbxf4LSo4LS14LSC4LSs4LW8X+C0oeC0v+C0 uOC0guC0rOC1vCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi4LSc4LSo4LWB Ll/gtKvgtYbgtKzgtY3gtLDgtYEuX+C0ruC0vuC1vC5f4LSP4LSq4LWN4LSw 4LS/Ll/gtK7gtYfgtK/gtY1f4LSc4LWC4LW6X+C0nOC1guC0suC1iC5f4LST 4LSXLl/gtLjgtYbgtKrgtY3gtLHgtY3gtLEuX+C0kuC0leC1jeC0n+C1iy5f 4LSo4LS14LSCLl/gtKHgtL/gtLjgtIIuIi5zcGxpdCgiXyIpLG1vbnRoc1Bh cnNlRXhhY3Q6ITAsd2Vla2RheXM6IuC0nuC0vuC0r+C0seC0vuC0tOC1jeC0 ml/gtKTgtL/gtJngtY3gtJXgtLPgtL7gtLTgtY3gtJpf4LSa4LWK4LS14LWN 4LS14LS+4LS04LWN4LSaX+C0rOC1geC0p+C0qOC0vuC0tOC1jeC0ml/gtLXg tY3gtK/gtL7gtLTgtL7gtLTgtY3gtJpf4LS14LWG4LSz4LWN4LSz4LS/4LSv 4LS+4LS04LWN4LSaX+C0tuC0qOC0v+C0r+C0vuC0tOC1jeC0miIuc3BsaXQo Il8iKSx3ZWVrZGF5c1Nob3J0OiLgtJ7gtL7gtK/gtbxf4LSk4LS/4LSZ4LWN 4LSV4LW+X+C0muC1iuC0teC1jeC0tV/gtKzgtYHgtKfgtbtf4LS14LWN4LSv 4LS+4LS04LSCX+C0teC1huC0s+C1jeC0s+C0v1/gtLbgtKjgtL8iLnNwbGl0 KCJfIiksd2Vla2RheXNNaW46IuC0nuC0vl/gtKTgtL9f4LSa4LWKX+C0rOC1 gV/gtLXgtY3gtK/gtL5f4LS14LWGX+C0tiIuc3BsaXQoIl8iKSxsb25nRGF0 ZUZvcm1hdDp7TFQ6IkEgaDptbSAt4LSo4LWBIixMVFM6IkEgaDptbTpzcyAt 4LSo4LWBIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoi RCBNTU1NIFlZWVksIEEgaDptbSAt4LSo4LWBIixMTExMOiJkZGRkLCBEIE1N TU0gWVlZWSwgQSBoOm1tIC3gtKjgtYEifSxjYWxlbmRhcjp7c2FtZURheToi W+C0h+C0qOC1jeC0qOC1jV0gTFQiLG5leHREYXk6IlvgtKjgtL7gtLPgtYZd IExUIixuZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6IlvgtIfgtKjgtY3g tKjgtLLgtYZdIExUIixsYXN0V2VlazoiW+C0leC0tOC0v+C0nuC1jeC0nl0g ZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6 IiVzIOC0leC0tOC0v+C0nuC1jeC0nuC1jSIscGFzdDoiJXMg4LSu4LWB4LW7 4LSq4LWNIixzOiLgtIXgtb3gtKog4LSo4LS/4LSu4LS/4LS34LSZ4LWN4LSZ 4LW+IixtOiLgtJLgtLDgtYEg4LSu4LS/4LSo4LS/4LSx4LWN4LSx4LWNIixt bToiJWQg4LSu4LS/4LSo4LS/4LSx4LWN4LSx4LWNIixoOiLgtJLgtLDgtYEg 4LSu4LSj4LS/4LSV4LWN4LSV4LWC4LW8IixoaDoiJWQg4LSu4LSj4LS/4LSV 4LWN4LSV4LWC4LW8IixkOiLgtJLgtLDgtYEg4LSm4LS/4LS14LS44LSCIixk ZDoiJWQg4LSm4LS/4LS14LS44LSCIixNOiLgtJLgtLDgtYEg4LSu4LS+4LS4 4LSCIixNTToiJWQg4LSu4LS+4LS44LSCIix5OiLgtJLgtLDgtYEg4LS14LW8 4LS34LSCIix5eToiJWQg4LS14LW84LS34LSCIn0sbWVyaWRpZW1QYXJzZTov 4LSw4LS+4LSk4LWN4LSw4LS/fOC0sOC0vuC0teC0v+C0suC1hnzgtIngtJrg tY3gtJog4LSV4LS04LS/4LSe4LWN4LSe4LWNfOC0teC1iOC0leC1geC0qOC1 jeC0qOC1h+C0sOC0gnzgtLDgtL7gtKTgtY3gtLDgtL8vaSxtZXJpZGllbUhv dXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMTI9PT1hJiYoYT0wKSwi4LSw4LS+ 4LSk4LWN4LSw4LS/Ij09PWImJmE+PTR8fCLgtIngtJrgtY3gtJog4LSV4LS0 4LS/4LSe4LWN4LSe4LWNIj09PWJ8fCLgtLXgtYjgtJXgtYHgtKjgtY3gtKjg tYfgtLDgtIIiPT09Yj9hKzEyOmF9LG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixj KXtyZXR1cm4gND5hPyLgtLDgtL7gtKTgtY3gtLDgtL8iOjEyPmE/IuC0sOC0 vuC0teC0v+C0suC1hiI6MTc+YT8i4LSJ4LSa4LWN4LSaIOC0leC0tOC0v+C0 nuC1jeC0nuC1jSI6MjA+YT8i4LS14LWI4LSV4LWB4LSo4LWN4LSo4LWH4LSw 4LSCIjoi4LSw4LS+4LSk4LWN4LSw4LS/In19KSx7MToi4KWnIiwyOiLgpagi LDM6IuClqSIsNDoi4KWqIiw1OiLgpasiLDY6IuClrCIsNzoi4KWtIiw4OiLg pa4iLDk6IuClryIsMDoi4KWmIn0pLGRoPXsi4KWnIjoiMSIsIuClqCI6IjIi LCLgpakiOiIzIiwi4KWqIjoiNCIsIuClqyI6IjUiLCLgpawiOiI2Iiwi4KWt IjoiNyIsIuClriI6IjgiLCLgpa8iOiI5Iiwi4KWmIjoiMCJ9LGVoPShrZy5k ZWZpbmVMb2NhbGUoIm1yIix7bW9udGhzOiLgpJzgpL7gpKjgpYfgpLXgpL7g pLDgpYBf4KSr4KWH4KSs4KWN4KSw4KWB4KS14KS+4KSw4KWAX+CkruCkvuCk sOCljeCkml/gpI/gpKrgpY3gpLDgpL/gpLJf4KSu4KWHX+CknOClguCkqF/g pJzgpYHgpLLgpYhf4KSR4KSX4KS44KWN4KSfX+CkuOCkquCljeCkn+Clh+Ck guCkrOCksF/gpJHgpJXgpY3gpJ/gpYvgpKzgpLBf4KSo4KWL4KS14KWN4KS5 4KWH4KSC4KSs4KSwX+CkoeCkv+CkuOClh+CkguCkrOCksCIuc3BsaXQoIl8i KSxtb250aHNTaG9ydDoi4KSc4KS+4KSo4KWHLl/gpKvgpYfgpKzgpY3gpLDg pYEuX+CkruCkvuCksOCljeCkmi5f4KSP4KSq4KWN4KSw4KS/Ll/gpK7gpYcu X+CknOClguCkqC5f4KSc4KWB4KSy4KWILl/gpJHgpJcuX+CkuOCkquCljeCk n+Clh+Ckgi5f4KSR4KSV4KWN4KSf4KWLLl/gpKjgpYvgpLXgpY3gpLngpYfg pIIuX+CkoeCkv+CkuOClh+Ckgi4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VF eGFjdDohMCx3ZWVrZGF5czoi4KSw4KS14KS/4KS14KS+4KSwX+CkuOCli+Ck ruCkteCkvuCksF/gpK7gpILgpJfgpLPgpLXgpL7gpLBf4KSs4KWB4KSn4KS1 4KS+4KSwX+Ckl+ClgeCksOClguCkteCkvuCksF/gpLbgpYHgpJXgpY3gpLDg pLXgpL7gpLBf4KS24KSo4KS/4KS14KS+4KSwIi5zcGxpdCgiXyIpLHdlZWtk YXlzU2hvcnQ6IuCksOCkteCkv1/gpLjgpYvgpK5f4KSu4KSC4KSX4KSzX+Ck rOClgeCkp1/gpJfgpYHgpLDgpYJf4KS24KWB4KSV4KWN4KSwX+CktuCkqOCk vyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi4KSwX+CkuOCli1/gpK7gpIJf 4KSs4KWBX+Ckl+ClgV/gpLbgpYFf4KS2Ii5zcGxpdCgiXyIpLGxvbmdEYXRl Rm9ybWF0OntMVDoiQSBoOm1tIOCkteCkvuCknOCkpOCkviIsTFRTOiJBIGg6 bW06c3Mg4KS14KS+4KSc4KSk4KS+IixMOiJERC9NTS9ZWVlZIixMTDoiRCBN TU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVksIEEgaDptbSDgpLXgpL7gpJzg pKTgpL4iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4KS14KS+ 4KSc4KSk4KS+In0sY2FsZW5kYXI6e3NhbWVEYXk6IlvgpIbgpJxdIExUIixu ZXh0RGF5OiJb4KSJ4KSm4KWN4KSv4KS+XSBMVCIsbmV4dFdlZWs6ImRkZGQs IExUIixsYXN0RGF5OiJb4KSV4KS+4KSyXSBMVCIsbGFzdFdlZWs6IlvgpK7g pL7gpJfgpYDgpLJdIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZl VGltZTp7ZnV0dXJlOiIlc+CkruCkp+CljeCkr+ClhyIscGFzdDoiJXPgpKrg pYLgpLDgpY3gpLXgpYAiLHM6VGQsbTpUZCxtbTpUZCxoOlRkLGhoOlRkLGQ6 VGQsZGQ6VGQsTTpUZCxNTTpUZCx5OlRkLHl5OlRkfSxwcmVwYXJzZTpmdW5j dGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9b4KWn4KWo4KWp4KWq4KWr4KWs 4KWt4KWu4KWv4KWmXS9nLGZ1bmN0aW9uKGEpe3JldHVybiBkaFthXX0pfSxw b3N0Zm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1xkL2cs ZnVuY3Rpb24oYSl7cmV0dXJuIGNoW2FdfSl9LG1lcmlkaWVtUGFyc2U6L+Ck sOCkvuCkpOCljeCksOClgHzgpLjgpJXgpL7gpLPgpYB84KSm4KWB4KSq4KS+ 4KSw4KWAfOCkuOCkvuCkr+CkguCkleCkvuCks+ClgC8sbWVyaWRpZW1Ib3Vy OmZ1bmN0aW9uKGEsYil7cmV0dXJuIDEyPT09YSYmKGE9MCksIuCksOCkvuCk pOCljeCksOClgCI9PT1iPzQ+YT9hOmErMTI6IuCkuOCkleCkvuCks+ClgCI9 PT1iP2E6IuCkpuClgeCkquCkvuCksOClgCI9PT1iP2E+PTEwP2E6YSsxMjoi 4KS44KS+4KSv4KSC4KSV4KS+4KSz4KWAIj09PWI/YSsxMjp2b2lkIDB9LG1l cmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gND5hPyLgpLDgpL7gpKTg pY3gpLDgpYAiOjEwPmE/IuCkuOCkleCkvuCks+ClgCI6MTc+YT8i4KSm4KWB 4KSq4KS+4KSw4KWAIjoyMD5hPyLgpLjgpL7gpK/gpILgpJXgpL7gpLPgpYAi OiLgpLDgpL7gpKTgpY3gpLDgpYAifSx3ZWVrOntkb3c6MCwvLyBTdW5kYXkg aXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KK2RveTo2fX0pLGtnLmRl ZmluZUxvY2FsZSgibXMtbXkiLHttb250aHM6IkphbnVhcmlfRmVicnVhcmlf TWFjX0FwcmlsX01laV9KdW5fSnVsYWlfT2dvc19TZXB0ZW1iZXJfT2t0b2Jl cl9Ob3ZlbWJlcl9EaXNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi SmFuX0ZlYl9NYWNfQXByX01laV9KdW5fSnVsX09nc19TZXBfT2t0X05vdl9E aXMiLnNwbGl0KCJfIiksd2Vla2RheXM6IkFoYWRfSXNuaW5fU2VsYXNhX1Jh YnVfS2hhbWlzX0p1bWFhdF9TYWJ0dSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1No b3J0OiJBaGRfSXNuX1NlbF9SYWJfS2hhX0p1bV9TYWIiLnNwbGl0KCJfIiks d2Vla2RheXNNaW46IkFoX0lzX1NsX1JiX0ttX0ptX1NiIi5zcGxpdCgiXyIp LGxvbmdEYXRlRm9ybWF0OntMVDoiSEgubW0iLExUUzoiSEgubW0uc3MiLEw6 IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZ WSBbcHVrdWxdIEhILm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBbcHVr dWxdIEhILm1tIn0sbWVyaWRpZW1QYXJzZTovcGFnaXx0ZW5nYWhhcml8cGV0 YW5nfG1hbGFtLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4g MTI9PT1hJiYoYT0wKSwicGFnaSI9PT1iP2E6InRlbmdhaGFyaSI9PT1iP2E+ PTExP2E6YSsxMjoicGV0YW5nIj09PWJ8fCJtYWxhbSI9PT1iP2ErMTI6dm9p ZCAwfSxtZXJpZGllbTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDExPmE/InBh Z2kiOjE1PmE/InRlbmdhaGFyaSI6MTk+YT8icGV0YW5nIjoibWFsYW0ifSxj YWxlbmRhcjp7c2FtZURheToiW0hhcmkgaW5pIHB1a3VsXSBMVCIsbmV4dERh eToiW0Vzb2sgcHVrdWxdIExUIixuZXh0V2VlazoiZGRkZCBbcHVrdWxdIExU IixsYXN0RGF5OiJbS2VsbWFyaW4gcHVrdWxdIExUIixsYXN0V2VlazoiZGRk ZCBbbGVwYXMgcHVrdWxdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGlt ZTp7ZnV0dXJlOiJkYWxhbSAlcyIscGFzdDoiJXMgeWFuZyBsZXBhcyIsczoi YmViZXJhcGEgc2FhdCIsbToic2VtaW5pdCIsbW06IiVkIG1pbml0IixoOiJz ZWphbSIsaGg6IiVkIGphbSIsZDoic2VoYXJpIixkZDoiJWQgaGFyaSIsTToi c2VidWxhbiIsTU06IiVkIGJ1bGFuIix5OiJzZXRhaHVuIix5eToiJWQgdGFo dW4ifSx3ZWVrOntkb3c6MSwvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBv ZiB0aGUgd2Vlay4KK2RveTo3fX0pLGtnLmRlZmluZUxvY2FsZSgibXMiLHtt b250aHM6IkphbnVhcmlfRmVicnVhcmlfTWFjX0FwcmlsX01laV9KdW5fSnVs YWlfT2dvc19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EaXNlbWJlciIu c3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYWNfQXByX01laV9K dW5fSnVsX09nc19TZXBfT2t0X05vdl9EaXMiLnNwbGl0KCJfIiksd2Vla2Rh eXM6IkFoYWRfSXNuaW5fU2VsYXNhX1JhYnVfS2hhbWlzX0p1bWFhdF9TYWJ0 dSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJBaGRfSXNuX1NlbF9SYWJf S2hhX0p1bV9TYWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkFoX0lzX1Ns X1JiX0ttX0ptX1NiIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoi SEgubW0iLExUUzoiSEgubW0uc3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1N TU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tIixMTExM OiJkZGRkLCBEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tIn0sbWVyaWRpZW1Q YXJzZTovcGFnaXx0ZW5nYWhhcml8cGV0YW5nfG1hbGFtLyxtZXJpZGllbUhv dXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMTI9PT1hJiYoYT0wKSwicGFnaSI9 PT1iP2E6InRlbmdhaGFyaSI9PT1iP2E+PTExP2E6YSsxMjoicGV0YW5nIj09 PWJ8fCJtYWxhbSI9PT1iP2ErMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlv bihhLGIsYyl7cmV0dXJuIDExPmE/InBhZ2kiOjE1PmE/InRlbmdhaGFyaSI6 MTk+YT8icGV0YW5nIjoibWFsYW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0hh cmkgaW5pIHB1a3VsXSBMVCIsbmV4dERheToiW0Vzb2sgcHVrdWxdIExUIixu ZXh0V2VlazoiZGRkZCBbcHVrdWxdIExUIixsYXN0RGF5OiJbS2VsbWFyaW4g cHVrdWxdIExUIixsYXN0V2VlazoiZGRkZCBbbGVwYXMgcHVrdWxdIExUIixz YW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkYWxhbSAlcyIs cGFzdDoiJXMgeWFuZyBsZXBhcyIsczoiYmViZXJhcGEgc2FhdCIsbToic2Vt aW5pdCIsbW06IiVkIG1pbml0IixoOiJzZWphbSIsaGg6IiVkIGphbSIsZDoi c2VoYXJpIixkZDoiJWQgaGFyaSIsTToic2VidWxhbiIsTU06IiVkIGJ1bGFu Iix5OiJzZXRhaHVuIix5eToiJWQgdGFodW4ifSx3ZWVrOntkb3c6MSwvLyBN b25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KK2RveTo3fX0p LHsxOiLhgYEiLDI6IuGBgiIsMzoi4YGDIiw0OiLhgYQiLDU6IuGBhSIsNjoi 4YGGIiw3OiLhgYciLDg6IuGBiCIsOToi4YGJIiwwOiLhgYAifSksZmg9eyLh gYEiOiIxIiwi4YGCIjoiMiIsIuGBgyI6IjMiLCLhgYQiOiI0Iiwi4YGFIjoi NSIsIuGBhiI6IjYiLCLhgYciOiI3Iiwi4YGIIjoiOCIsIuGBiSI6IjkiLCLh gYAiOiIwIn0sZ2g9KGtnLmRlZmluZUxvY2FsZSgibXkiLHttb250aHM6IuGA h+GAlOGAuuGAlOGAneGAq+GAm+GArl/hgJbhgLHhgJbhgLHhgKzhgLrhgJ3h gKvhgJvhgK5f4YCZ4YCQ4YC6X+GAp+GAleGAvOGArl/hgJnhgLFf4YCH4YC9 4YCU4YC6X+GAh+GAsOGAnOGAreGAr+GAhOGAul/hgJ7hgLzhgILhgK/hgJDh gLpf4YCF4YCA4YC64YCQ4YCE4YC64YCY4YCsX+GAoeGAseGArOGAgOGAuuGA kOGAreGAr+GAmOGArF/hgJThgK3hgK/hgJ3hgIThgLrhgJjhgKxf4YCS4YCu 4YCH4YCE4YC64YCY4YCsIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLhgIfh gJThgLpf4YCW4YCxX+GAmeGAkOGAul/hgJXhgLzhgK5f4YCZ4YCxX+GAh+GA veGAlOGAul/hgJzhgK3hgK/hgIThgLpf4YCe4YC8X+GAheGAgOGAul/hgKHh gLHhgKzhgIDhgLpf4YCU4YCt4YCvX+GAkuGAriIuc3BsaXQoIl8iKSx3ZWVr ZGF5czoi4YCQ4YCU4YCE4YC64YC54YCC4YCU4YC94YCxX+GAkOGAlOGAhOGA uuGAueGAnOGArF/hgKHhgIThgLrhgLnhgILhgKtf4YCX4YCv4YCS4YC54YCT 4YCf4YCw4YC4X+GAgOGAvOGArOGAnuGAleGAkOGAseGAuF/hgJ7hgLHhgKzh gIDhgLzhgKxf4YCF4YCU4YCxIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6 IuGAlOGAveGAsV/hgJzhgKxf4YCC4YCrX+GAn+GAsOGAuF/hgIDhgLzhgKxf 4YCe4YCx4YCsX+GAlOGAsSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi4YCU 4YC94YCxX+GAnOGArF/hgILhgKtf4YCf4YCw4YC4X+GAgOGAvOGArF/hgJ7h gLHhgKxf4YCU4YCxIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoi SEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1N TU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBE IE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb4YCa4YCU 4YCxLl0gTFQgW+GAmeGAvuGArF0iLG5leHREYXk6IlvhgJnhgJThgIDhgLrh gJbhgLzhgJThgLpdIExUIFvhgJnhgL7hgKxdIixuZXh0V2VlazoiZGRkZCBM VCBb4YCZ4YC+4YCsXSIsbGFzdERheToiW+GAmeGAlOGAsS7hgIBdIExUIFvh gJnhgL7hgKxdIixsYXN0V2VlazoiW+GAleGAvOGAruGAuOGAgeGAsuGAt+GA nuGAseGArF0gZGRkZCBMVCBb4YCZ4YC+4YCsXSIsc2FtZUVsc2U6IkwifSxy ZWxhdGl2ZVRpbWU6e2Z1dHVyZToi4YCc4YCs4YCZ4YCK4YC64YC3ICVzIOGA meGAvuGArCIscGFzdDoi4YCc4YC94YCU4YC64YCB4YCy4YC34YCe4YCx4YCs ICVzIOGAgCIsczoi4YCF4YCA4YC54YCA4YCU4YC6LuGAoeGAlOGAiuGAuuGA uOGAhOGAmuGAuiIsbToi4YCQ4YCF4YC64YCZ4YCt4YCU4YCF4YC6IixtbToi JWQg4YCZ4YCt4YCU4YCF4YC6IixoOiLhgJDhgIXhgLrhgJThgKzhgJvhgK4i LGhoOiIlZCDhgJThgKzhgJvhgK4iLGQ6IuGAkOGAheGAuuGAm+GAgOGAuiIs ZGQ6IiVkIOGAm+GAgOGAuiIsTToi4YCQ4YCF4YC64YCcIixNTToiJWQg4YCc Iix5OiLhgJDhgIXhgLrhgJThgL7hgIXhgLoiLHl5OiIlZCDhgJThgL7hgIXh gLoifSxwcmVwYXJzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9b 4YGB4YGC4YGD4YGE4YGF4YGG4YGH4YGI4YGJ4YGAXS9nLGZ1bmN0aW9uKGEp e3JldHVybiBmaFthXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVy biBhLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oYSl7cmV0dXJuIGVoW2FdfSl9 LHdlZWs6e2RvdzoxLC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRo ZSB3ZWVrLgorZG95OjR9fSksa2cuZGVmaW5lTG9jYWxlKCJuYiIse21vbnRo czoiamFudWFyX2ZlYnJ1YXJfbWFyc19hcHJpbF9tYWlfanVuaV9qdWxpX2F1 Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZXNlbWJlciIuc3Bs aXQoIl8iKSxtb250aHNTaG9ydDoiamFuLl9mZWIuX21hcnNfYXByaWxfbWFp X2p1bmlfanVsaV9hdWcuX3NlcC5fb2t0Ll9ub3YuX2Rlcy4iLnNwbGl0KCJf IiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoic8O4bmRhZ19tYW5k YWdfdGlyc2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbMO4cmRhZyIuc3Bs aXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzw7guX21hLl90aS5fb24uX3RvLl9m ci5fbMO4LiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic8O4X21hX3RpX29u X3RvX2ZyX2zDuCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAs bG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoi REQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZ WVkgW2tsLl0gSEg6bW0iLExMTEw6ImRkZGQgRC4gTU1NTSBZWVlZIFtrbC5d IEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltpIGRhZyBrbC5dIExUIixu ZXh0RGF5OiJbaSBtb3JnZW4ga2wuXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2ts Ll0gTFQiLGxhc3REYXk6IltpIGfDpXIga2wuXSBMVCIsbGFzdFdlZWs6Iltm b3JyaWdlXSBkZGRkIFtrbC5dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZl VGltZTp7ZnV0dXJlOiJvbSAlcyIscGFzdDoiJXMgc2lkZW4iLHM6Im5vZW4g c2VrdW5kZXIiLG06ImV0dCBtaW51dHQiLG1tOiIlZCBtaW51dHRlciIsaDoi ZW4gdGltZSIsaGg6IiVkIHRpbWVyIixkOiJlbiBkYWciLGRkOiIlZCBkYWdl ciIsTToiZW4gbcOlbmVkIixNTToiJWQgbcOlbmVkZXIiLHk6ImV0dCDDpXIi LHl5OiIlZCDDpXIifSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5h bDoiJWQuIix3ZWVrOntkb3c6MSwvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRh eSBvZiB0aGUgd2Vlay4KK2RveTo0fX0pLHsxOiLgpaciLDI6IuClqCIsMzoi 4KWpIiw0OiLgpaoiLDU6IuClqyIsNjoi4KWsIiw3OiLgpa0iLDg6IuClriIs OToi4KWvIiwwOiLgpaYifSksaGg9eyLgpaciOiIxIiwi4KWoIjoiMiIsIuCl qSI6IjMiLCLgpaoiOiI0Iiwi4KWrIjoiNSIsIuClrCI6IjYiLCLgpa0iOiI3 Iiwi4KWuIjoiOCIsIuClryI6IjkiLCLgpaYiOiIwIn0saWg9KGtnLmRlZmlu ZUxvY2FsZSgibmUiLHttb250aHM6IuCknOCkqOCkteCksOClgF/gpKvgpYfg pKzgpY3gpLDgpYHgpLXgpLDgpYBf4KSu4KS+4KSw4KWN4KSaX+CkheCkquCl jeCksOCkv+Cksl/gpK7gpIhf4KSc4KWB4KSoX+CknOClgeCksuCkvuCkiF/g pIXgpJfgpLfgpY3gpJ9f4KS44KWH4KSq4KWN4KSf4KWH4KSu4KWN4KSs4KSw X+CkheCkleCljeCkn+Cli+CkrOCksF/gpKjgpYvgpK3gpYfgpK7gpY3gpKzg pLBf4KSh4KS/4KS44KWH4KSu4KWN4KSs4KSwIi5zcGxpdCgiXyIpLG1vbnRo c1Nob3J0OiLgpJzgpKguX+Ckq+Clh+CkrOCljeCksOClgS5f4KSu4KS+4KSw 4KWN4KSaX+CkheCkquCljeCksOCkvy5f4KSu4KSIX+CknOClgeCkqF/gpJzg pYHgpLLgpL7gpIguX+CkheCkly5f4KS44KWH4KSq4KWN4KSfLl/gpIXgpJXg pY3gpJ/gpYsuX+CkqOCli+CkreClhy5f4KSh4KS/4KS44KWHLiIuc3BsaXQo Il8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiLgpIbgpIfgpKTg pKzgpL7gpLBf4KS44KWL4KSu4KSs4KS+4KSwX+CkruCkmeCljeCkl+CksuCk rOCkvuCksF/gpKzgpYHgpKfgpKzgpL7gpLBf4KSs4KS/4KS54KS/4KSs4KS+ 4KSwX+CktuClgeCkleCljeCksOCkrOCkvuCksF/gpLbgpKjgpL/gpKzgpL7g pLAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi4KSG4KSH4KSkLl/gpLjg pYvgpK4uX+CkruCkmeCljeCkl+Cksi5f4KSs4KWB4KSnLl/gpKzgpL/gpLng pL8uX+CktuClgeCkleCljeCksC5f4KS24KSo4KS/LiIuc3BsaXQoIl8iKSx3 ZWVrZGF5c01pbjoi4KSGLl/gpLjgpYsuX+CkruCkgi5f4KSs4KWBLl/gpKzg pL8uX+CktuClgS5f4KS2LiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhh Y3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJB4KSV4KWLIGg6bW0g4KSs4KSc 4KWHIixMVFM6IkHgpJXgpYsgaDptbTpzcyDgpKzgpJzgpYciLEw6IkREL01N L1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQeCk leCliyBoOm1tIOCkrOCknOClhyIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVks IEHgpJXgpYsgaDptbSDgpKzgpJzgpYcifSxwcmVwYXJzZTpmdW5jdGlvbihh KXtyZXR1cm4gYS5yZXBsYWNlKC9b4KWn4KWo4KWp4KWq4KWr4KWs4KWt4KWu 4KWv4KWmXS9nLGZ1bmN0aW9uKGEpe3JldHVybiBoaFthXX0pfSxwb3N0Zm9y bWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1xkL2csZnVuY3Rp b24oYSl7cmV0dXJuIGdoW2FdfSl9LG1lcmlkaWVtUGFyc2U6L+CksOCkvuCk pOCkv3zgpKzgpL/gpLngpL7gpKh84KSm4KS/4KSJ4KSB4KS44KWLfOCkuOCk vuCkgeCknS8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIDEy PT09YSYmKGE9MCksIuCksOCkvuCkpOCkvyI9PT1iPzQ+YT9hOmErMTI6IuCk rOCkv+CkueCkvuCkqCI9PT1iP2E6IuCkpuCkv+CkieCkgeCkuOCliyI9PT1i P2E+PTEwP2E6YSsxMjoi4KS44KS+4KSB4KSdIj09PWI/YSsxMjp2b2lkIDB9 LG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMz5hPyLgpLDgpL7g pKTgpL8iOjEyPmE/IuCkrOCkv+CkueCkvuCkqCI6MTY+YT8i4KSm4KS/4KSJ 4KSB4KS44KWLIjoyMD5hPyLgpLjgpL7gpIHgpJ0iOiLgpLDgpL7gpKTgpL8i fSxjYWxlbmRhcjp7c2FtZURheToiW+CkhuCknF0gTFQiLG5leHREYXk6Ilvg pK3gpYvgpLLgpL9dIExUIixuZXh0V2VlazoiW+CkhuCkieCkgeCkpuCli10g ZGRkZFssXSBMVCIsbGFzdERheToiW+CkueCkv+CknOCli10gTFQiLGxhc3RX ZWVrOiJb4KSX4KSP4KSV4KWLXSBkZGRkWyxdIExUIixzYW1lRWxzZToiTCJ9 LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc+CkruCkviIscGFzdDoiJXMg4KSF 4KSX4KS+4KSh4KS/IixzOiLgpJXgpYfgpLngpYAg4KSV4KWN4KS34KSjIixt OiLgpI/gpJUg4KSu4KS/4KSo4KWH4KSfIixtbToiJWQg4KSu4KS/4KSo4KWH 4KSfIixoOiLgpI/gpJUg4KSY4KSj4KWN4KSf4KS+IixoaDoiJWQg4KSY4KSj 4KWN4KSf4KS+IixkOiLgpI/gpJUg4KSm4KS/4KSoIixkZDoiJWQg4KSm4KS/ 4KSoIixNOiLgpI/gpJUg4KSu4KS54KS/4KSo4KS+IixNTToiJWQg4KSu4KS5 4KS/4KSo4KS+Iix5OiLgpI/gpJUg4KSs4KSw4KWN4KS3Iix5eToiJWQg4KSs 4KSw4KWN4KS3In0sd2Vlazp7ZG93OjAsLy8gU3VuZGF5IGlzIHRoZSBmaXJz dCBkYXkgb2YgdGhlIHdlZWsuCitkb3k6Nn19KSwiamFuLl9mZWIuX21ydC5f YXByLl9tZWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLiIu c3BsaXQoIl8iKSksamg9Imphbl9mZWJfbXJ0X2Fwcl9tZWlfanVuX2p1bF9h dWdfc2VwX29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLGtoPVsvXmphbi9pLC9e ZmViL2ksL15tYWFydHxtcnQuPyQvaSwvXmFwci9pLC9ebWVpJC9pLC9eanVu W2kuXT8kL2ksL15qdWxbaS5dPyQvaSwvXmF1Zy9pLC9ec2VwL2ksL15va3Qv aSwvXm5vdi9pLC9eZGVjL2ldLGxoPS9eKGphbnVhcml8ZmVicnVhcml8bWFh cnR8YXByaWx8bWVpfGFwcmlsfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVy fG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXJ8amFuXC4/fGZlYlwuP3xtcnRc Lj98YXByXC4/fGp1W25sXVwuP3xhdWdcLj98c2VwXC4/fG9rdFwuP3xub3Zc Lj98ZGVjXC4/KS9pLG1oPShrZy5kZWZpbmVMb2NhbGUoIm5sIix7bW9udGhz OiJqYW51YXJpX2ZlYnJ1YXJpX21hYXJ0X2FwcmlsX21laV9qdW5pX2p1bGlf YXVndXN0dXNfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXIi LnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4v LU1NTS0vLnRlc3QoYik/amhbYS5tb250aCgpXTppaFthLm1vbnRoKCldfSxt b250aHNSZWdleDpsaCxtb250aHNTaG9ydFJlZ2V4OmxoLG1vbnRoc1N0cmlj dFJlZ2V4Oi9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8bWVpfGp1W25sXWl8 YXByaWx8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVj ZW1iZXIpL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovXihqYW5cLj98ZmVi XC4/fG1ydFwuP3xhcHJcLj98bWVpfGp1W25sXVwuP3xhdWdcLj98c2VwXC4/ fG9rdFwuP3xub3ZcLj98ZGVjXC4/KS9pLG1vbnRoc1BhcnNlOmtoLGxvbmdN b250aHNQYXJzZTpraCxzaG9ydE1vbnRoc1BhcnNlOmtoLHdlZWtkYXlzOiJ6 b25kYWdfbWFhbmRhZ19kaW5zZGFnX3dvZW5zZGFnX2RvbmRlcmRhZ192cmlq ZGFnX3phdGVyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InpvLl9t YS5fZGkuX3dvLl9kby5fdnIuX3phLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01p bjoiWm9fTWFfRGlfV29fRG9fVnJfWmEiLnNwbGl0KCJfIiksd2Vla2RheXNQ YXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoi SEg6bW06c3MiLEw6IkRELU1NLVlZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExM OiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBI SDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbdmFuZGFhZyBvbV0gTFQiLG5l eHREYXk6Ilttb3JnZW4gb21dIExUIixuZXh0V2VlazoiZGRkZCBbb21dIExU IixsYXN0RGF5OiJbZ2lzdGVyZW4gb21dIExUIixsYXN0V2VlazoiW2FmZ2Vs b3Blbl0gZGRkZCBbb21dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGlt ZTp7ZnV0dXJlOiJvdmVyICVzIixwYXN0OiIlcyBnZWxlZGVuIixzOiJlZW4g cGFhciBzZWNvbmRlbiIsbToiw6nDqW4gbWludXV0IixtbToiJWQgbWludXRl biIsaDoiw6nDqW4gdXVyIixoaDoiJWQgdXVyIixkOiLDqcOpbiBkYWciLGRk OiIlZCBkYWdlbiIsTToiw6nDqW4gbWFhbmQiLE1NOiIlZCBtYWFuZGVuIix5 OiLDqcOpbiBqYWFyIix5eToiJWQgamFhciJ9LG9yZGluYWxQYXJzZTovXGR7 MSwyfShzdGV8ZGUpLyxvcmRpbmFsOmZ1bmN0aW9uKGEpe3JldHVybiBhKygx PT09YXx8OD09PWF8fGE+PTIwPyJzdGUiOiJkZSIpfSx3ZWVrOntkb3c6MSwv LyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KK2RveTo0 fX0pLGtnLmRlZmluZUxvY2FsZSgibm4iLHttb250aHM6ImphbnVhcl9mZWJy dWFyX21hcnNfYXByaWxfbWFpX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVy X29rdG9iZXJfbm92ZW1iZXJfZGVzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhz U2hvcnQ6Imphbl9mZWJfbWFyX2Fwcl9tYWlfanVuX2p1bF9hdWdfc2VwX29r dF9ub3ZfZGVzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJzdW5kYWdfbcOlbmRh Z190eXNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2xhdXJkYWciLnNwbGl0 KCJfIiksd2Vla2RheXNTaG9ydDoic3VuX23DpW5fdHlzX29uc190b3JfZnJl X2xhdSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic3VfbcOlX3R5X29uX3Rv X2ZyX2zDuCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1t IixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZ WVlZIixMTEw6IkQuIE1NTU0gWVlZWSBba2wuXSBIOm1tIixMTExMOiJkZGRk IEQuIE1NTU0gWVlZWSBba2wuXSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5 OiJbSSBkYWcga2xva2thXSBMVCIsbmV4dERheToiW0kgbW9yZ29uIGtsb2tr YV0gTFQiLG5leHRXZWVrOiJkZGRkIFtrbG9ra2FdIExUIixsYXN0RGF5OiJb SSBnw6VyIGtsb2trYV0gTFQiLGxhc3RXZWVrOiJbRsO4cmVnw6VhbmRlXSBk ZGRkIFtrbG9ra2FdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7 ZnV0dXJlOiJvbSAlcyIscGFzdDoiJXMgc2lkYW4iLHM6Im5va3JlIHNla3Vu ZCIsbToiZWl0IG1pbnV0dCIsbW06IiVkIG1pbnV0dCIsaDoiZWluIHRpbWUi LGhoOiIlZCB0aW1hciIsZDoiZWluIGRhZyIsZGQ6IiVkIGRhZ2FyIixNOiJl aW4gbcOlbmFkIixNTToiJWQgbcOlbmFkZXIiLHk6ImVpdCDDpXIiLHl5OiIl ZCDDpXIifSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQu Iix3ZWVrOntkb3c6MSwvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0 aGUgd2Vlay4KK2RveTo0fX0pLHsxOiLgqaciLDI6IuCpqCIsMzoi4KmpIiw0 OiLgqaoiLDU6IuCpqyIsNjoi4KmsIiw3OiLgqa0iLDg6IuCpriIsOToi4Kmv IiwwOiLgqaYifSksbmg9eyLgqaciOiIxIiwi4KmoIjoiMiIsIuCpqSI6IjMi LCLgqaoiOiI0Iiwi4KmrIjoiNSIsIuCprCI6IjYiLCLgqa0iOiI3Iiwi4Kmu IjoiOCIsIuCpryI6IjkiLCLgqaYiOiIwIn0sb2g9KGtnLmRlZmluZUxvY2Fs ZSgicGEtaW4iLHsKKy8vIFRoZXJlIGFyZSBtb250aHMgbmFtZSBhcyBwZXIg TmFuYWtzaGFoaSBDYWxlbmRlciBidXQgdGhleSBhcmUgbm90IHVzZWQgYXMg cmlnaWRseSBpbiBtb2Rlcm4gUHVuamFiaS4KK21vbnRoczoi4Kic4Kio4Ki1 4Kiw4KmAX+Coq+CovOCosOCoteCosOCpgF/gqK7gqL7gqLDgqJpf4KiF4Kiq 4KmN4Kiw4KmI4KiyX+CoruCoiF/gqJzgqYLgqKhf4Kic4KmB4Kiy4Ki+4KiI X+CoheCol+CouOCopF/gqLjgqKTgqbDgqKzgqLBf4KiF4KiV4Kik4KmC4Kis 4KiwX+CoqOCoteCpsOCorOCosF/gqKbgqLjgqbDgqKzgqLAiLnNwbGl0KCJf IiksbW9udGhzU2hvcnQ6IuConOCoqOCoteCosOCpgF/gqKvgqLzgqLDgqLXg qLDgqYBf4Kiu4Ki+4Kiw4KiaX+CoheCoquCpjeCosOCpiOCosl/gqK7gqIhf 4Kic4KmC4KioX+ConOCpgeCosuCovuCoiF/gqIXgqJfgqLjgqKRf4Ki44Kik 4Kmw4Kis4KiwX+CoheColeCopOCpguCorOCosF/gqKjgqLXgqbDgqKzgqLBf 4Kim4Ki44Kmw4Kis4KiwIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLgqJDgqKTg qLXgqL7gqLBf4Ki44KmL4Kiu4Ki14Ki+4KiwX+CoruCpsOCol+CosuCoteCo vuCosF/gqKzgqYHgqKfgqLXgqL7gqLBf4Ki14KmA4Kiw4Ki14Ki+4KiwX+Co uOCovOCpgeCpseColeCosOCoteCovuCosF/gqLjgqLzgqKjgqYDgqJrgqLDg qLXgqL7gqLAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi4KiQ4KikX+Co uOCpi+Corl/gqK7gqbDgqJfgqLJf4Kis4KmB4KinX+CoteCpgOCosF/gqLjg qLzgqYHgqJXgqLBf4Ki44Ki84Kio4KmAIi5zcGxpdCgiXyIpLHdlZWtkYXlz TWluOiLgqJDgqKRf4Ki44KmL4KiuX+CoruCpsOCol+Cosl/gqKzgqYHgqKdf 4Ki14KmA4KiwX+CouOCovOCpgeColeCosF/gqLjgqLzgqKjgqYAiLnNwbGl0 KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0g4Ki14Kic4KmHIixM VFM6IkEgaDptbTpzcyDgqLXgqJzgqYciLEw6IkREL01NL1lZWVkiLExMOiJE IE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQSBoOm1tIOCoteConOCp hyIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgqLXgqJzgqYci fSxjYWxlbmRhcjp7c2FtZURheToiW+CoheConF0gTFQiLG5leHREYXk6Ilvg qJXgqLJdIExUIixuZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6IlvgqJXg qLJdIExUIixsYXN0V2VlazoiW+CoquCov+Com+CosuCph10gZGRkZCwgTFQi LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIOCoteCo v+CpseComiIscGFzdDoiJXMg4Kiq4Ki/4Kib4Kiy4KmHIixzOiLgqJXgqYHg qJ0g4Ki44KiV4Ki/4Kmw4KifIixtOiLgqIfgqJUg4Kiu4Ki/4Kmw4KifIixt bToiJWQg4Kiu4Ki/4Kmw4KifIixoOiLgqIfgqbHgqJUg4KiY4Kmw4Kif4Ki+ IixoaDoiJWQg4KiY4Kmw4Kif4KmHIixkOiLgqIfgqbHgqJUg4Kim4Ki/4Kio IixkZDoiJWQg4Kim4Ki/4KioIixNOiLgqIfgqbHgqJUg4Kiu4Ki54KmA4Kio 4Ki+IixNTToiJWQg4Kiu4Ki54KmA4Kio4KmHIix5OiLgqIfgqbHgqJUg4Ki4 4Ki+4KiyIix5eToiJWQg4Ki44Ki+4KiyIn0scHJlcGFyc2U6ZnVuY3Rpb24o YSl7cmV0dXJuIGEucmVwbGFjZSgvW+Cpp+CpqOCpqeCpquCpq+CprOCpreCp ruCpr+Cppl0vZyxmdW5jdGlvbihhKXtyZXR1cm4gbmhbYV19KX0scG9zdGZv cm1hdDpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9cZC9nLGZ1bmN0 aW9uKGEpe3JldHVybiBtaFthXX0pfSwKKy8vIFB1bmphYmkgbm90YXRpb24g Zm9yIG1lcmlkaWVtcyBhcmUgcXVpdGUgZnV6enkgaW4gcHJhY3RpY2UuIFdo aWxlIHRoZXJlIGV4aXN0cworLy8gYSByaWdpZCBub3Rpb24gb2YgYSAnUGFo YXInIGl0IGlzIG5vdCB1c2VkIGFzIHJpZ2lkbHkgaW4gbW9kZXJuIFB1bmph YmkuCittZXJpZGllbVBhcnNlOi/gqLDgqL7gqKR84Ki44Ki14KmH4KiwfOCo puCpgeCoquCoueCov+CosHzgqLjgqLzgqL7gqK4vLG1lcmlkaWVtSG91cjpm dW5jdGlvbihhLGIpe3JldHVybiAxMj09PWEmJihhPTApLCLgqLDgqL7gqKQi PT09Yj80PmE/YTphKzEyOiLgqLjgqLXgqYfgqLAiPT09Yj9hOiLgqKbgqYHg qKrgqLngqL/gqLAiPT09Yj9hPj0xMD9hOmErMTI6IuCouOCovOCovuCoriI9 PT1iP2ErMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihhLGIsYyl7cmV0 dXJuIDQ+YT8i4Kiw4Ki+4KikIjoxMD5hPyLgqLjgqLXgqYfgqLAiOjE3PmE/ IuCopuCpgeCoquCoueCov+CosCI6MjA+YT8i4Ki44Ki84Ki+4KiuIjoi4Kiw 4Ki+4KikIn0sd2Vlazp7ZG93OjAsLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBk YXkgb2YgdGhlIHdlZWsuCitkb3k6Nn19KSwic3R5Y3plxYRfbHV0eV9tYXJ6 ZWNfa3dpZWNpZcWEX21hal9jemVyd2llY19saXBpZWNfc2llcnBpZcWEX3dy emVzaWXFhF9wYcW6ZHppZXJuaWtfbGlzdG9wYWRfZ3J1ZHppZcWEIi5zcGxp dCgiXyIpKSxwaD0ic3R5Y3puaWFfbHV0ZWdvX21hcmNhX2t3aWV0bmlhX21h amFfY3plcndjYV9saXBjYV9zaWVycG5pYV93cnplxZtuaWFfcGHFumR6aWVy bmlrYV9saXN0b3BhZGFfZ3J1ZG5pYSIuc3BsaXQoIl8iKSxxaD0oa2cuZGVm aW5lTG9jYWxlKCJwbCIse21vbnRoczpmdW5jdGlvbihhLGIpe3JldHVybiIi PT09Yj8iKCIrcGhbYS5tb250aCgpXSsifCIrb2hbYS5tb250aCgpXSsiKSI6 L0QgTU1NTS8udGVzdChiKT9waFthLm1vbnRoKCldOm9oW2EubW9udGgoKV19 LG1vbnRoc1Nob3J0OiJzdHlfbHV0X21hcl9rd2lfbWFqX2N6ZV9saXBfc2ll X3dyel9wYcW6X2xpc19ncnUiLnNwbGl0KCJfIiksd2Vla2RheXM6Im5pZWR6 aWVsYV9wb25pZWR6aWHFgmVrX3d0b3Jla1/Fm3JvZGFfY3p3YXJ0ZWtfcGnE hXRla19zb2JvdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibmllX3Bv bl93dF/Fm3JfY3p3X3B0X3NiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJO ZF9Qbl9XdF/FmnJfQ3pfUHRfU28iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3Jt YXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIs TEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExM OiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5 OiJbRHppxZsgb10gTFQiLG5leHREYXk6IltKdXRybyBvXSBMVCIsbmV4dFdl ZWs6IltXXSBkZGRkIFtvXSBMVCIsbGFzdERheToiW1djem9yYWogb10gTFQi LGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2Ug MDpyZXR1cm4iW1cgemVzesWCxIUgbmllZHppZWzEmSBvXSBMVCI7Y2FzZSAz OnJldHVybiJbVyB6ZXN6xYLEhSDFm3JvZMSZIG9dIExUIjtjYXNlIDY6cmV0 dXJuIltXIHplc3rFgsSFIHNvYm90xJkgb10gTFQiO2RlZmF1bHQ6cmV0dXJu IltXIHplc3rFgnldIGRkZGQgW29dIExUIn19LHNhbWVFbHNlOiJMIn0scmVs YXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0OiIlcyB0ZW11IixzOiJr aWxrYSBzZWt1bmQiLG06VmQsbW06VmQsaDpWZCxoaDpWZCxkOiIxIGR6aWXF hCIsZGQ6IiVkIGRuaSIsTToibWllc2nEhWMiLE1NOlZkLHk6InJvayIseXk6 VmR9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdl ZWs6e2RvdzoxLC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3 ZWVrLgorZG95OjR9fSksa2cuZGVmaW5lTG9jYWxlKCJwdC1iciIse21vbnRo czoiSmFuZWlyb19GZXZlcmVpcm9fTWFyw6dvX0FicmlsX01haW9fSnVuaG9f SnVsaG9fQWdvc3RvX1NldGVtYnJvX091dHVicm9fTm92ZW1icm9fRGV6ZW1i cm8iLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZXZfTWFyX0Ficl9N YWlfSnVuX0p1bF9BZ29fU2V0X091dF9Ob3ZfRGV6Ii5zcGxpdCgiXyIpLHdl ZWtkYXlzOiJEb21pbmdvX1NlZ3VuZGEtZmVpcmFfVGVyw6dhLWZlaXJhX1F1 YXJ0YS1mZWlyYV9RdWludGEtZmVpcmFfU2V4dGEtZmVpcmFfU8OhYmFkbyIu c3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJEb21fU2VnX1Rlcl9RdWFfUXVp X1NleF9Tw6FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEb21fMsKqXzPC ql80wqpfNcKqXzbCql9Tw6FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VF eGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1t OnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZ IixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBbw6BzXSBISDptbSIsTExM TDoiZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIFvDoHNdIEhIOm1tIn0s Y2FsZW5kYXI6e3NhbWVEYXk6IltIb2plIMOgc10gTFQiLG5leHREYXk6IltB bWFuaMOjIMOgc10gTFQiLG5leHRXZWVrOiJkZGRkIFvDoHNdIExUIixsYXN0 RGF5OiJbT250ZW0gw6BzXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXsvLyBT YXR1cmRheSArIFN1bmRheQorcmV0dXJuIDA9PT10aGlzLmRheSgpfHw2PT09 dGhpcy5kYXkoKT8iW8OabHRpbW9dIGRkZGQgW8Ogc10gTFQiOiJbw5psdGlt YV0gZGRkZCBbw6BzXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1l OntmdXR1cmU6ImVtICVzIixwYXN0OiIlcyBhdHLDoXMiLHM6InBvdWNvcyBz ZWd1bmRvcyIsbToidW0gbWludXRvIixtbToiJWQgbWludXRvcyIsaDoidW1h IGhvcmEiLGhoOiIlZCBob3JhcyIsZDoidW0gZGlhIixkZDoiJWQgZGlhcyIs TToidW0gbcOqcyIsTU06IiVkIG1lc2VzIix5OiJ1bSBhbm8iLHl5OiIlZCBh bm9zIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9wrovLG9yZGluYWw6IiVkwroi fSksa2cuZGVmaW5lTG9jYWxlKCJwdCIse21vbnRoczoiSmFuZWlyb19GZXZl cmVpcm9fTWFyw6dvX0FicmlsX01haW9fSnVuaG9fSnVsaG9fQWdvc3RvX1Nl dGVtYnJvX091dHVicm9fTm92ZW1icm9fRGV6ZW1icm8iLnNwbGl0KCJfIiks bW9udGhzU2hvcnQ6Ikphbl9GZXZfTWFyX0Ficl9NYWlfSnVuX0p1bF9BZ29f U2V0X091dF9Ob3ZfRGV6Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJEb21pbmdv X1NlZ3VuZGEtRmVpcmFfVGVyw6dhLUZlaXJhX1F1YXJ0YS1GZWlyYV9RdWlu dGEtRmVpcmFfU2V4dGEtRmVpcmFfU8OhYmFkbyIuc3BsaXQoIl8iKSx3ZWVr ZGF5c1Nob3J0OiJEb21fU2VnX1Rlcl9RdWFfUXVpX1NleF9Tw6FiIi5zcGxp dCgiXyIpLHdlZWtkYXlzTWluOiJEb21fMsKqXzPCql80wqpfNcKqXzbCql9T w6FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0 ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9Z WVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBN TU1NIFtkZV0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBbZGVdIE1NTU0g W2RlXSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIb2plIMOg c10gTFQiLG5leHREYXk6IltBbWFuaMOjIMOgc10gTFQiLG5leHRXZWVrOiJk ZGRkIFvDoHNdIExUIixsYXN0RGF5OiJbT250ZW0gw6BzXSBMVCIsbGFzdFdl ZWs6ZnVuY3Rpb24oKXsvLyBTYXR1cmRheSArIFN1bmRheQorcmV0dXJuIDA9 PT10aGlzLmRheSgpfHw2PT09dGhpcy5kYXkoKT8iW8OabHRpbW9dIGRkZGQg W8Ogc10gTFQiOiJbw5psdGltYV0gZGRkZCBbw6BzXSBMVCJ9LHNhbWVFbHNl OiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVtICVzIixwYXN0OiJow6Eg JXMiLHM6InNlZ3VuZG9zIixtOiJ1bSBtaW51dG8iLG1tOiIlZCBtaW51dG9z IixoOiJ1bWEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1bSBkaWEiLGRkOiIl ZCBkaWFzIixNOiJ1bSBtw6pzIixNTToiJWQgbWVzZXMiLHk6InVtIGFubyIs eXk6IiVkIGFub3MifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3Cui8sb3JkaW5h bDoiJWTCuiIsd2Vlazp7ZG93OjEsLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBk YXkgb2YgdGhlIHdlZWsuCitkb3k6NH19KSxrZy5kZWZpbmVMb2NhbGUoInJv Iix7bW9udGhzOiJpYW51YXJpZV9mZWJydWFyaWVfbWFydGllX2FwcmlsaWVf bWFpX2l1bmllX2l1bGllX2F1Z3VzdF9zZXB0ZW1icmllX29jdG9tYnJpZV9u b2llbWJyaWVfZGVjZW1icmllIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJp YW4uX2ZlYnIuX21hcnQuX2Fwci5fbWFpX2l1bi5faXVsLl9hdWcuX3NlcHQu X29jdC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6 ITAsd2Vla2RheXM6ImR1bWluaWPEg19sdW5pX21hcsibaV9taWVyY3VyaV9q b2lfdmluZXJpX3PDom1ixIN0xIMiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9y dDoiRHVtX0x1bl9NYXJfTWllX0pvaV9WaW5fU8OibSIuc3BsaXQoIl8iKSx3 ZWVrZGF5c01pbjoiRHVfTHVfTWFfTWlfSm9fVmlfU8OiIi5zcGxpdCgiXyIp LGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJE RC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkg SDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFy OntzYW1lRGF5OiJbYXppIGxhXSBMVCIsbmV4dERheToiW23DomluZSBsYV0g TFQiLG5leHRXZWVrOiJkZGRkIFtsYV0gTFQiLGxhc3REYXk6IltpZXJpIGxh XSBMVCIsbGFzdFdlZWs6Iltmb3N0YV0gZGRkZCBbbGFdIExUIixzYW1lRWxz ZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJwZXN0ZSAlcyIscGFzdDoi JXMgw65uIHVybcSDIixzOiJjw6J0ZXZhIHNlY3VuZGUiLG06InVuIG1pbnV0 IixtbTpXZCxoOiJvIG9yxIMiLGhoOldkLGQ6Im8gemkiLGRkOldkLE06Im8g bHVuxIMiLE1NOldkLHk6InVuIGFuIix5eTpXZH0sd2Vlazp7ZG93OjEsLy8g TW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCitkb3k6N319 KSxbL17Rj9C90LIvaSwvXtGE0LXQsi9pLC9e0LzQsNGAL2ksL17QsNC/0YAv aSwvXtC80LBb0LnRj10vaSwvXtC40Y7QvS9pLC9e0LjRjtC7L2ksL17QsNCy 0LMvaSwvXtGB0LXQvS9pLC9e0L7QutGCL2ksL17QvdC+0Y8vaSwvXtC00LXQ ui9pXSkscmg9KGtnLmRlZmluZUxvY2FsZSgicnUiLHttb250aHM6e2Zvcm1h dDoi0Y/QvdCy0LDRgNGPX9GE0LXQstGA0LDQu9GPX9C80LDRgNGC0LBf0LDQ v9GA0LXQu9GPX9C80LDRj1/QuNGO0L3Rj1/QuNGO0LvRj1/QsNCy0LPRg9GB 0YLQsF/RgdC10L3RgtGP0LHRgNGPX9C+0LrRgtGP0LHRgNGPX9C90L7Rj9Cx 0YDRj1/QtNC10LrQsNCx0YDRjyIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiLR j9C90LLQsNGA0Yxf0YTQtdCy0YDQsNC70Yxf0LzQsNGA0YJf0LDQv9GA0LXQ u9GMX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LPRg9GB0YJf0YHQ tdC90YLRj9Cx0YDRjF/QvtC60YLRj9Cx0YDRjF/QvdC+0Y/QsdGA0Yxf0LTQ tdC60LDQsdGA0YwiLnNwbGl0KCJfIil9LG1vbnRoc1Nob3J0OnsKKy8vINC/ 0L4gQ0xEUiDQuNC80LXQvdC90L4gItC40Y7Quy4iINC4ICLQuNGO0L0uIiwg 0L3QviDQutCw0LrQvtC5INGB0LzRi9GB0Lsg0LzQtdC90Y/RgtGMINCx0YPQ utCy0YMg0L3QsCDRgtC+0YfQutGDID8KK2Zvcm1hdDoi0Y/QvdCyLl/RhNC1 0LLRgC5f0LzQsNGALl/QsNC/0YAuX9C80LDRj1/QuNGO0L3Rj1/QuNGO0LvR j1/QsNCy0LMuX9GB0LXQvdGCLl/QvtC60YIuX9C90L7Rj9CxLl/QtNC10Lou Ii5zcGxpdCgiXyIpLHN0YW5kYWxvbmU6ItGP0L3Qsi5f0YTQtdCy0YAuX9C8 0LDRgNGCX9Cw0L/RgC5f0LzQsNC5X9C40Y7QvdGMX9C40Y7Qu9GMX9Cw0LLQ sy5f0YHQtdC90YIuX9C+0LrRgi5f0L3QvtGP0LEuX9C00LXQui4iLnNwbGl0 KCJfIil9LHdlZWtkYXlzOntzdGFuZGFsb25lOiLQstC+0YHQutGA0LXRgdC1 0L3RjNC1X9C/0L7QvdC10LTQtdC70YzQvdC40Lpf0LLRgtC+0YDQvdC40Lpf 0YHRgNC10LTQsF/Rh9C10YLQstC10YDQs1/Qv9GP0YLQvdC40YbQsF/RgdGD 0LHQsdC+0YLQsCIuc3BsaXQoIl8iKSxmb3JtYXQ6ItCy0L7RgdC60YDQtdGB 0LXQvdGM0LVf0L/QvtC90LXQtNC10LvRjNC90LjQul/QstGC0L7RgNC90LjQ ul/RgdGA0LXQtNGDX9GH0LXRgtCy0LXRgNCzX9C/0Y/RgtC90LjRhtGDX9GB 0YPQsdCx0L7RgtGDIi5zcGxpdCgiXyIpLGlzRm9ybWF0Oi9cWyA/W9CS0LJd ID8oPzrQv9GA0L7RiNC70YPRjnzRgdC70LXQtNGD0Y7RidGD0Y580Y3RgtGD KT8gP1xdID9kZGRkL30sd2Vla2RheXNTaG9ydDoi0LLRgV/Qv9C9X9Cy0YJf 0YHRgF/Rh9GCX9C/0YJf0YHQsSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi 0LLRgV/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsSIuc3BsaXQoIl8i KSxtb250aHNQYXJzZTpxaCxsb25nTW9udGhzUGFyc2U6cWgsc2hvcnRNb250 aHNQYXJzZTpxaCwKKy8vINC/0L7Qu9C90YvQtSDQvdCw0LfQstCw0L3QuNGP INGBINC/0LDQtNC10LbQsNC80LgsINC/0L4g0YLRgNC4INCx0YPQutCy0Yss INC00LvRjyDQvdC10LrQvtGC0L7RgNGL0YUsINC/0L4gNCDQsdGD0LrQstGL LCDRgdC+0LrRgNCw0YnQtdC90LjRjyDRgSDRgtC+0YfQutC+0Lkg0Lgg0LHQ tdC3INGC0L7Rh9C60LgKK21vbnRoc1JlZ2V4Oi9eKNGP0L3QstCw0YBb0YzR j1180Y/QvdCyXC4/fNGE0LXQstGA0LDQu1vRjNGPXXzRhNC10LLRgD9cLj98 0LzQsNGA0YLQsD980LzQsNGAXC4/fNCw0L/RgNC10Ltb0YzRj1180LDQv9GA XC4/fNC80LBb0LnRj1180LjRjtC9W9GM0Y9dfNC40Y7QvVwuP3zQuNGO0Ltb 0YzRj1180LjRjtC7XC4/fNCw0LLQs9GD0YHRgtCwP3zQsNCy0LNcLj980YHQ tdC90YLRj9Cx0YBb0YzRj1180YHQtdC90YI/XC4/fNC+0LrRgtGP0LHRgFvR jNGPXXzQvtC60YJcLj980L3QvtGP0LHRgFvRjNGPXXzQvdC+0Y/QsT9cLj98 0LTQtdC60LDQsdGAW9GM0Y9dfNC00LXQulwuPykvaSwKKy8vINC60L7Qv9C4 0Y8g0L/RgNC10LTRi9C00YPRidC10LPQvgorbW9udGhzU2hvcnRSZWdleDov XijRj9C90LLQsNGAW9GM0Y9dfNGP0L3QslwuP3zRhNC10LLRgNCw0Ltb0YzR j1180YTQtdCy0YA/XC4/fNC80LDRgNGC0LA/fNC80LDRgFwuP3zQsNC/0YDQ tdC7W9GM0Y9dfNCw0L/RgFwuP3zQvNCwW9C50Y9dfNC40Y7QvVvRjNGPXXzQ uNGO0L1cLj980LjRjtC7W9GM0Y9dfNC40Y7Qu1wuP3zQsNCy0LPRg9GB0YLQ sD980LDQstCzXC4/fNGB0LXQvdGC0Y/QsdGAW9GM0Y9dfNGB0LXQvdGCP1wu P3zQvtC60YLRj9Cx0YBb0YzRj1180L7QutGCXC4/fNC90L7Rj9Cx0YBb0YzR j1180L3QvtGP0LE/XC4/fNC00LXQutCw0LHRgFvRjNGPXXzQtNC10LpcLj8p L2ksCisvLyDQv9C+0LvQvdGL0LUg0L3QsNC30LLQsNC90LjRjyDRgSDQv9Cw 0LTQtdC20LDQvNC4Cittb250aHNTdHJpY3RSZWdleDovXijRj9C90LLQsNGA W9GP0YxdfNGE0LXQstGA0LDQu1vRj9GMXXzQvNCw0YDRgtCwP3zQsNC/0YDQ tdC7W9GP0YxdfNC80LBb0Y/QuV180LjRjtC9W9GP0YxdfNC40Y7Qu1vRj9GM XXzQsNCy0LPRg9GB0YLQsD980YHQtdC90YLRj9Cx0YBb0Y/RjF180L7QutGC 0Y/QsdGAW9GP0YxdfNC90L7Rj9Cx0YBb0Y/RjF180LTQtdC60LDQsdGAW9GP 0YxdKS9pLAorLy8g0JLRi9GA0LDQttC10L3QuNC1LCDQutC+0YLQvtGA0L7Q tSDRgdC+0L7RgtCy0LXRgdGC0LLRg9C10YIg0YLQvtC70YzQutC+INGB0L7Q utGA0LDRidGR0L3QvdGL0Lwg0YTQvtGA0LzQsNC8Cittb250aHNTaG9ydFN0 cmljdFJlZ2V4Oi9eKNGP0L3QslwufNGE0LXQstGAP1wufNC80LDRgFvRgi5d fNCw0L/RgFwufNC80LBb0Y/QuV180LjRjtC9W9GM0Y8uXXzQuNGO0Ltb0YzR jy5dfNCw0LLQs1wufNGB0LXQvdGCP1wufNC+0LrRglwufNC90L7Rj9CxP1wu fNC00LXQulwuKS9pLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoi SEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSDQsy4i LExMTDoiRCBNTU1NIFlZWVkg0LMuLCBISDptbSIsTExMTDoiZGRkZCwgRCBN TU1NIFlZWVkg0LMuLCBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb0KHQ tdCz0L7QtNC90Y8g0LJdIExUIixuZXh0RGF5OiJb0JfQsNCy0YLRgNCwINCy XSBMVCIsbGFzdERheToiW9CS0YfQtdGA0LAg0LJdIExUIixuZXh0V2Vlazpm dW5jdGlvbihhKXtpZihhLndlZWsoKT09PXRoaXMud2VlaygpKXJldHVybiAy PT09dGhpcy5kYXkoKT8iW9CS0L5dIGRkZGQgW9CyXSBMVCI6IlvQkl0gZGRk ZCBb0LJdIExUIjtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJb 0JIg0YHQu9C10LTRg9GO0YnQtdC1XSBkZGRkIFvQsl0gTFQiO2Nhc2UgMTpj YXNlIDI6Y2FzZSA0OnJldHVybiJb0JIg0YHQu9C10LTRg9GO0YnQuNC5XSBk ZGRkIFvQsl0gTFQiO2Nhc2UgMzpjYXNlIDU6Y2FzZSA2OnJldHVybiJb0JIg 0YHQu9C10LTRg9GO0YnRg9GOXSBkZGRkIFvQsl0gTFQifX0sbGFzdFdlZWs6 ZnVuY3Rpb24oYSl7aWYoYS53ZWVrKCk9PT10aGlzLndlZWsoKSlyZXR1cm4g Mj09PXRoaXMuZGF5KCk/IlvQktC+XSBkZGRkIFvQsl0gTFQiOiJb0JJdIGRk ZGQgW9CyXSBMVCI7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4i W9CSINC/0YDQvtGI0LvQvtC1XSBkZGRkIFvQsl0gTFQiO2Nhc2UgMTpjYXNl IDI6Y2FzZSA0OnJldHVybiJb0JIg0L/RgNC+0YjQu9GL0LldIGRkZGQgW9Cy XSBMVCI7Y2FzZSAzOmNhc2UgNTpjYXNlIDY6cmV0dXJuIlvQkiDQv9GA0L7R iNC70YPRjl0gZGRkZCBb0LJdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRp dmVUaW1lOntmdXR1cmU6ItGH0LXRgNC10LcgJXMiLHBhc3Q6IiVzINC90LDQ t9Cw0LQiLHM6ItC90LXRgdC60L7Qu9GM0LrQviDRgdC10LrRg9C90LQiLG06 WWQsbW06WWQsaDoi0YfQsNGBIixoaDpZZCxkOiLQtNC10L3RjCIsZGQ6WWQs TToi0LzQtdGB0Y/RhiIsTU06WWQseToi0LPQvtC0Iix5eTpZZH0sbWVyaWRp ZW1QYXJzZTov0L3QvtGH0Lh80YPRgtGA0LB80LTQvdGPfNCy0LXRh9C10YDQ sC9pLGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJuL14o0LTQvdGPfNCy0LXRh9C1 0YDQsCkkLy50ZXN0KGEpfSxtZXJpZGllbTpmdW5jdGlvbihhLGIsYyl7cmV0 dXJuIDQ+YT8i0L3QvtGH0LgiOjEyPmE/ItGD0YLRgNCwIjoxNz5hPyLQtNC9 0Y8iOiLQstC10YfQtdGA0LAifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0tKNC5 fNCz0L580Y8pLyxvcmRpbmFsOmZ1bmN0aW9uKGEsYil7c3dpdGNoKGIpe2Nh c2UiTSI6Y2FzZSJkIjpjYXNlIkRERCI6cmV0dXJuIGErIi3QuSI7Y2FzZSJE IjpyZXR1cm4gYSsiLdCz0L4iO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gYSsi LdGPIjtkZWZhdWx0OnJldHVybiBhfX0sd2Vlazp7ZG93OjEsLy8gTW9uZGF5 IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCitkb3k6N319KSxrZy5k ZWZpbmVMb2NhbGUoInNlIix7bW9udGhzOiJvxJHEkWFqYWdlbcOhbm51X2d1 b3Z2YW3DoW5udV9uanVrxI1hbcOhbm51X2N1b8WLb23DoW5udV9taWVzc2Vt w6FubnVfZ2Vhc3NlbcOhbm51X3N1b2lkbmVtw6FubnVfYm9yZ2Vtw6FubnVf xI1ha8SNYW3DoW5udV9nb2xnZ290bcOhbm51X3Nrw6FibWFtw6FubnVfanVv dmxhbcOhbm51Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJvxJHEkWpfZ3Vv dl9uanVrX2N1b19taWVzX2dlYXNfc3VvaV9ib3JnX8SNYWvEjV9nb2xnX3Nr w6FiX2p1b3YiLnNwbGl0KCJfIiksd2Vla2RheXM6InNvdG5hYmVhaXZpX3Z1 b3Nzw6FyZ2FfbWHFi8WLZWLDoXJnYV9nYXNrYXZhaGtrdV9kdW9yYXN0YXRf YmVhcmphZGF0X2zDoXZ2YXJkYXQiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9y dDoic290bl92dW9zX21hxYtfZ2Fza19kdW9yX2JlYXJfbMOhdiIuc3BsaXQo Il8iKSx3ZWVrZGF5c01pbjoic192X21fZ19kX2JfTCIuc3BsaXQoIl8iKSxs b25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJE RC5NTS5ZWVlZIixMTDoiTU1NTSBELiBbYi5dIFlZWVkiLExMTDoiTU1NTSBE LiBbYi5dIFlZWVkgW3RpLl0gSEg6bW0iLExMTEw6ImRkZGQsIE1NTU0gRC4g W2IuXSBZWVlZIFt0aS5dIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6Iltv dG5lIHRpXSBMVCIsbmV4dERheToiW2lodHRpbiB0aV0gTFQiLG5leHRXZWVr OiJkZGRkIFt0aV0gTFQiLGxhc3REYXk6Iltpa3RlIHRpXSBMVCIsbGFzdFdl ZWs6IltvdmRkaXRdIGRkZGQgW3RpXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxh dGl2ZVRpbWU6e2Z1dHVyZToiJXMgZ2Vhxb5lcyIscGFzdDoibWHFi2l0ICVz IixzOiJtb2FkZGUgc2VrdW5kZGF0IixtOiJva3RhIG1pbnVodGEiLG1tOiIl ZCBtaW51aHRhdCIsaDoib2t0YSBkaWltbXUiLGhoOiIlZCBkaWltbXV0Iixk OiJva3RhIGJlYWl2aSIsZGQ6IiVkIGJlYWl2dml0IixNOiJva3RhIG3DoW5u dSIsTU06IiVkIG3DoW51dCIseToib2t0YSBqYWhraSIseXk6IiVkIGphZ2l0 In0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vl azp7ZG93OjEsLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdl ZWsuCitkb3k6NH19KSxrZy5kZWZpbmVMb2NhbGUoInNpIix7bW9udGhzOiLg tqLgtrHgt4Dgt4/gtrvgt5Jf4La04LeZ4La24La74LeA4LeP4La74LeSX+C2 uOC3j+C2u+C3iuC2reC3lF/gtoXgtrTgt4rigI3gtrvgt5rgtr3gt4pf4La4 4LeQ4La64LeSX+C2ouC3luC2seC3kl/gtqLgt5bgtr3gt5Jf4LaF4Lac4Led 4LeD4LeK4Lat4LeUX+C3g+C3kOC2tOC3iuC2reC3kOC2uOC3iuC2tuC2u+C3 il/gtpTgtprgt4rgtq3gt53gtrbgtrvgt4pf4Lax4Lec4LeA4LeQ4La44LeK 4La24La74LeKX+C2r+C3meC3g+C3kOC2uOC3iuC2tuC2u+C3iiIuc3BsaXQo Il8iKSxtb250aHNTaG9ydDoi4Lai4LaxX+C2tOC3meC2tl/gtrjgt4/gtrvg t4pf4LaF4La04LeKX+C2uOC3kOC2uuC3kl/gtqLgt5bgtrHgt5Jf4Lai4LeW 4La94LeSX+C2heC2nOC3nV/gt4Pgt5DgtrTgt4pf4LaU4Laa4LeKX+C2seC3 nOC3gOC3kF/gtq/gt5ngt4Pgt5AiLnNwbGl0KCJfIiksd2Vla2RheXM6IuC2 ieC2u+C3kuC2r+C3j1/gt4PgtrPgt5Tgtq/gt49f4LaF4Laf4LeE4La74LeU 4LeA4LeP4Lav4LePX+C2tuC2r+C3j+C2r+C3j1/gtrbgt4rigI3gtrvgt4Tg t4Pgt4rgtrTgtq3gt5LgtrHgt4rgtq/gt49f4LeD4LeS4Laa4LeU4La74LeP 4Lav4LePX+C3g+C3meC2seC3g+C3lOC2u+C3j+C2r+C3jyIuc3BsaXQoIl8i KSx3ZWVrZGF5c1Nob3J0OiLgtongtrvgt5Jf4LeD4Laz4LeUX+C2heC2n1/g trbgtq/gt49f4La24LeK4oCN4La74LeEX+C3g+C3kuC2muC3lF/gt4Pgt5ng trEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IuC2iV/gt4Nf4LaFX+C2tl/g trbgt4rigI3gtrtf4LeD4LeSX+C3g+C3mSIuc3BsaXQoIl8iKSx3ZWVrZGF5 c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJhIGg6bW0iLExU UzoiYSBoOm1tOnNzIixMOiJZWVlZL01NL0REIixMTDoiWVlZWSBNTU1NIEQi LExMTDoiWVlZWSBNTU1NIEQsIGEgaDptbSIsTExMTDoiWVlZWSBNTU1NIEQg W+C3gOC3kOC2seC3kl0gZGRkZCwgYSBoOm1tOnNzIn0sY2FsZW5kYXI6e3Nh bWVEYXk6IlvgtoXgtq9dIExUW+C2p10iLG5leHREYXk6Ilvgt4Tgt5ngtqdd IExUW+C2p10iLG5leHRXZWVrOiJkZGRkIExUW+C2p10iLGxhc3REYXk6Ilvg torgtrrgt5pdIExUW+C2p10iLGxhc3RXZWVrOiJb4La04LeD4LeU4Lac4LeS 4La6XSBkZGRkIExUW+C2p10iLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1l OntmdXR1cmU6IiVz4Laa4LeS4Lax4LeKIixwYXN0OiIlc+C2muC2pyDgtrTg t5ngtrsiLHM6IuC2reC2reC3iuC2tOC2uyDgtprgt5Lgt4Tgt5LgtrTgtroi LG06IuC2uOC3kuC2seC3kuC2reC3iuC2reC3lOC3gCIsbW06IuC2uOC3kuC2 seC3kuC2reC3iuC2reC3lCAlZCIsaDoi4La04LeQ4La6IixoaDoi4La04LeQ 4La6ICVkIixkOiLgtq/gt5LgtrHgtroiLGRkOiLgtq/gt5LgtrEgJWQiLE06 IuC2uOC3j+C3g+C2uiIsTU06IuC2uOC3j+C3gyAlZCIseToi4LeA4LeD4La7 Iix5eToi4LeA4LeD4La7ICVkIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9IOC3 gOC3kOC2seC3ki8sb3JkaW5hbDpmdW5jdGlvbihhKXtyZXR1cm4gYSsiIOC3 gOC3kOC2seC3kiJ9LG1lcmlkaWVtUGFyc2U6L+C2tOC3meC2uyDgt4Dgtrvg t5R84La04LeD4LeKIOC3gOC2u+C3lHzgtrTgt5ku4LeAfOC2tC7gt4AuLyxp c1BNOmZ1bmN0aW9uKGEpe3JldHVybiLgtrQu4LeALiI9PT1hfHwi4La04LeD 4LeKIOC3gOC2u+C3lCI9PT1hfSxtZXJpZGllbTpmdW5jdGlvbihhLGIsYyl7 cmV0dXJuIGE+MTE/Yz8i4La0LuC3gC4iOiLgtrTgt4Pgt4og4LeA4La74LeU IjpjPyLgtrTgt5ku4LeALiI6IuC2tOC3meC2uyDgt4Dgtrvgt5QifX0pLCJq YW51w6FyX2ZlYnJ1w6FyX21hcmVjX2FwcsOtbF9tw6FqX2rDum5fasO6bF9h dWd1c3Rfc2VwdGVtYmVyX29rdMOzYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5z cGxpdCgiXyIpKSxzaD0iamFuX2ZlYl9tYXJfYXByX23DoWpfasO6bl9qw7ps X2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksdGg9KGtnLmRlZmlu ZUxvY2FsZSgic2siLHttb250aHM6cmgsbW9udGhzU2hvcnQ6c2gsd2Vla2Rh eXM6Im5lZGXEvmFfcG9uZGVsb2tfdXRvcm9rX3N0cmVkYV/FoXR2cnRva19w aWF0b2tfc29ib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lX3Bv X3V0X3N0X8WhdF9waV9zbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVf cG9fdXRfc3RfxaF0X3BpX3NvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0 OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoi RC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBIOm1tIixMTExMOiJk ZGRkIEQuIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6Iltk bmVzIG9dIExUIixuZXh0RGF5OiJbemFqdHJhIG9dIExUIixuZXh0V2Vlazpm dW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlt2 IG5lZGXEvnUgb10gTFQiO2Nhc2UgMTpjYXNlIDI6cmV0dXJuIlt2XSBkZGRk IFtvXSBMVCI7Y2FzZSAzOnJldHVybiJbdiBzdHJlZHUgb10gTFQiO2Nhc2Ug NDpyZXR1cm4iW3ZvIMWhdHZydG9rIG9dIExUIjtjYXNlIDU6cmV0dXJuIlt2 IHBpYXRvayBvXSBMVCI7Y2FzZSA2OnJldHVybiJbdiBzb2JvdHUgb10gTFQi fX0sbGFzdERheToiW3bEjWVyYSBvXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24o KXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbbWludWzDuiBu ZWRlxL51IG9dIExUIjtjYXNlIDE6Y2FzZSAyOnJldHVybiJbbWludWzDvV0g ZGRkZCBbb10gTFQiO2Nhc2UgMzpyZXR1cm4iW21pbnVsw7ogc3RyZWR1IG9d IExUIjtjYXNlIDQ6Y2FzZSA1OnJldHVybiJbbWludWzDvV0gZGRkZCBbb10g TFQiO2Nhc2UgNjpyZXR1cm4iW21pbnVsw7ogc29ib3R1IG9dIExUIn19LHNh bWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0 OiJwcmVkICVzIixzOiRkLG06JGQsbW06JGQsaDokZCxoaDokZCxkOiRkLGRk OiRkLE06JGQsTU06JGQseTokZCx5eTokZH0sb3JkaW5hbFBhcnNlOi9cZHsx LDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsLy8gTW9uZGF5IGlz IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCitkb3k6NH19KSxrZy5kZWZp bmVMb2NhbGUoInNsIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJlY19h cHJpbF9tYWpfanVuaWpfanVsaWpfYXZndXN0X3NlcHRlbWJlcl9va3RvYmVy X25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJq YW4uX2ZlYi5fbWFyLl9hcHIuX21hai5fanVuLl9qdWwuX2F2Zy5fc2VwLl9v a3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEw LHdlZWtkYXlzOiJuZWRlbGphX3BvbmVkZWxqZWtfdG9yZWtfc3JlZGFfxI1l dHJ0ZWtfcGV0ZWtfc29ib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6 Im5lZC5fcG9uLl90b3IuX3NyZS5fxI1ldC5fcGV0Ll9zb2IuIi5zcGxpdCgi XyIpLHdlZWtkYXlzTWluOiJuZV9wb190b19zcl/EjWVfcGVfc28iLnNwbGl0 KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntM VDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4g TU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRk LCBELiBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZGFu ZXMgb2JdIExUIixuZXh0RGF5OiJbanV0cmkgb2JdIExUIixuZXh0V2Vlazpm dW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlt2 XSBbbmVkZWxqb10gW29iXSBMVCI7Y2FzZSAzOnJldHVybiJbdl0gW3NyZWRv XSBbb2JdIExUIjtjYXNlIDY6cmV0dXJuIlt2XSBbc29ib3RvXSBbb2JdIExU IjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlt2XSBkZGRk IFtvYl0gTFQifX0sbGFzdERheToiW3bEjWVyYWogb2JdIExUIixsYXN0V2Vl azpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJu IltwcmVqxaFuam9dIFtuZWRlbGpvXSBbb2JdIExUIjtjYXNlIDM6cmV0dXJu IltwcmVqxaFuam9dIFtzcmVkb10gW29iXSBMVCI7Y2FzZSA2OnJldHVybiJb cHJlasWhbmpvXSBbc29ib3RvXSBbb2JdIExUIjtjYXNlIDE6Y2FzZSAyOmNh c2UgNDpjYXNlIDU6cmV0dXJuIltwcmVqxaFuamldIGRkZGQgW29iXSBMVCJ9 fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLEjWV6ICVz IixwYXN0OiJwcmVkICVzIixzOl9kLG06X2QsbW06X2QsaDpfZCxoaDpfZCxk Ol9kLGRkOl9kLE06X2QsTU06X2QseTpfZCx5eTpfZH0sb3JkaW5hbFBhcnNl Oi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsLy8gTW9u ZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCitkb3k6N319KSxr Zy5kZWZpbmVMb2NhbGUoInNxIix7bW9udGhzOiJKYW5hcl9TaGt1cnRfTWFy c19QcmlsbF9NYWpfUWVyc2hvcl9Lb3JyaWtfR3VzaHRfU2h0YXRvcl9UZXRv cl9Ow6tudG9yX0RoamV0b3IiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikph bl9TaGtfTWFyX1ByaV9NYWpfUWVyX0tvcl9HdXNfU2h0X1RldF9Ow6tuX0Ro aiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiRSBEaWVsX0UgSMOrbsOrX0UgTWFy dMOrX0UgTcOrcmt1csOrX0UgRW5qdGVfRSBQcmVtdGVfRSBTaHR1bsOrIi5z cGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkRpZV9Iw6tuX01hcl9Nw6tyX0Vu al9QcmVfU2h0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEX0hfTWFfTcOr X0VfUF9TaCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbWVy aWRpZW1QYXJzZTovUER8TUQvLGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJuIk0i PT09YS5jaGFyQXQoMCl9LG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1 cm4gMTI+YT8iUEQiOiJNRCJ9LGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0i LExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZ WSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1N IFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1NvdCBuw6tdIExU IixuZXh0RGF5OiJbTmVzw6tyIG7Dq10gTFQiLG5leHRXZWVrOiJkZGRkIFtu w6tdIExUIixsYXN0RGF5OiJbRGplIG7Dq10gTFQiLGxhc3RXZWVrOiJkZGRk IFtlIGthbHVhciBuw6tdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGlt ZTp7ZnV0dXJlOiJuw6sgJXMiLHBhc3Q6IiVzIG3DqyBwYXLDqyIsczoiZGlz YSBzZWtvbmRhIixtOiJuasOrIG1pbnV0w6siLG1tOiIlZCBtaW51dGEiLGg6 Im5qw6sgb3LDqyIsaGg6IiVkIG9yw6siLGQ6Im5qw6sgZGl0w6siLGRkOiIl ZCBkaXTDqyIsTToibmrDqyBtdWFqIixNTToiJWQgbXVhaiIseToibmrDqyB2 aXQiLHl5OiIlZCB2aXRlIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9y ZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsLy8gTW9uZGF5IGlzIHRoZSBmaXJz dCBkYXkgb2YgdGhlIHdlZWsuCitkb3k6NH19KSx7d29yZHM6ey8vRGlmZmVy ZW50IGdyYW1tYXRpY2FsIGNhc2VzCittOlsi0ZjQtdC00LDQvSDQvNC40L3R g9GCIiwi0ZjQtdC00L3QtSDQvNC40L3Rg9GC0LUiXSxtbTpbItC80LjQvdGD 0YIiLCLQvNC40L3Rg9GC0LUiLCLQvNC40L3Rg9GC0LAiXSxoOlsi0ZjQtdC0 0LDQvSDRgdCw0YIiLCLRmNC10LTQvdC+0LMg0YHQsNGC0LAiXSxoaDpbItGB 0LDRgiIsItGB0LDRgtCwIiwi0YHQsNGC0LgiXSxkZDpbItC00LDQvSIsItC0 0LDQvdCwIiwi0LTQsNC90LAiXSxNTTpbItC80LXRgdC10YYiLCLQvNC10YHQ tdGG0LAiLCLQvNC10YHQtdGG0LgiXSx5eTpbItCz0L7QtNC40L3QsCIsItCz 0L7QtNC40L3QtSIsItCz0L7QtNC40L3QsCJdfSxjb3JyZWN0R3JhbW1hdGlj YWxDYXNlOmZ1bmN0aW9uKGEsYil7cmV0dXJuIDE9PT1hP2JbMF06YT49MiYm ND49YT9iWzFdOmJbMl19LHRyYW5zbGF0ZTpmdW5jdGlvbihhLGIsYyl7dmFy IGQ9dGgud29yZHNbY107cmV0dXJuIDE9PT1jLmxlbmd0aD9iP2RbMF06ZFsx XTphKyIgIit0aC5jb3JyZWN0R3JhbW1hdGljYWxDYXNlKGEsZCl9fSksdWg9 KGtnLmRlZmluZUxvY2FsZSgic3ItY3lybCIse21vbnRoczoi0ZjQsNC90YPQ sNGAX9GE0LXQsdGA0YPQsNGAX9C80LDRgNGCX9Cw0L/RgNC40Ltf0LzQsNGY X9GY0YPQvV/RmNGD0Ltf0LDQstCz0YPRgdGCX9GB0LXQv9GC0LXQvNCx0LDR gF/QvtC60YLQvtCx0LDRgF/QvdC+0LLQtdC80LHQsNGAX9C00LXRhtC10LzQ sdCw0YAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ItGY0LDQvS5f0YTQtdCx Ll/QvNCw0YAuX9Cw0L/RgC5f0LzQsNGYX9GY0YPQvV/RmNGD0Ltf0LDQstCz Ll/RgdC10L8uX9C+0LrRgi5f0L3QvtCyLl/QtNC10YYuIi5zcGxpdCgiXyIp LG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ItC90LXQtNC10ZnQsF/Q v9C+0L3QtdC00LXRmdCw0Lpf0YPRgtC+0YDQsNC6X9GB0YDQtdC00LBf0YfQ tdGC0LLRgNGC0LDQul/Qv9C10YLQsNC6X9GB0YPQsdC+0YLQsCIuc3BsaXQo Il8iKSx3ZWVrZGF5c1Nob3J0OiLQvdC10LQuX9C/0L7QvS5f0YPRgtC+Ll/R gdGA0LUuX9GH0LXRgi5f0L/QtdGCLl/RgdGD0LEuIi5zcGxpdCgiXyIpLHdl ZWtkYXlzTWluOiLQvdC1X9C/0L5f0YPRgl/RgdGAX9GH0LVf0L/QtV/RgdGD Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZv cm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIs TEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSIsTExM TDoiZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURh eToiW9C00LDQvdCw0YEg0YNdIExUIixuZXh0RGF5OiJb0YHRg9GC0YDQsCDR g10gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkp e2Nhc2UgMDpyZXR1cm4iW9GDXSBb0L3QtdC00LXRmdGDXSBb0YNdIExUIjtj YXNlIDM6cmV0dXJuIlvRg10gW9GB0YDQtdC00YNdIFvRg10gTFQiO2Nhc2Ug NjpyZXR1cm4iW9GDXSBb0YHRg9Cx0L7RgtGDXSBb0YNdIExUIjtjYXNlIDE6 Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlvRg10gZGRkZCBb0YNdIExU In19LGxhc3REYXk6IlvRmNGD0YfQtSDRg10gTFQiLGxhc3RXZWVrOmZ1bmN0 aW9uKCl7dmFyIGE9WyJb0L/RgNC+0YjQu9C1XSBb0L3QtdC00LXRmdC1XSBb 0YNdIExUIiwiW9C/0YDQvtGI0LvQvtCzXSBb0L/QvtC90LXQtNC10ZnQutCw XSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQvtCzXSBb0YPRgtC+0YDQutCwXSBb 0YNdIExUIiwiW9C/0YDQvtGI0LvQtV0gW9GB0YDQtdC00LVdIFvRg10gTFQi LCJb0L/RgNC+0YjQu9C+0LNdIFvRh9C10YLQstGA0YLQutCwXSBb0YNdIExU IiwiW9C/0YDQvtGI0LvQvtCzXSBb0L/QtdGC0LrQsF0gW9GDXSBMVCIsIlvQ v9GA0L7RiNC70LVdIFvRgdGD0LHQvtGC0LVdIFvRg10gTFQiXTtyZXR1cm4g YVt0aGlzLmRheSgpXX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1 dHVyZToi0LfQsCAlcyIscGFzdDoi0L/RgNC1ICVzIixzOiLQvdC10LrQvtC7 0LjQutC+INGB0LXQutGD0L3QtNC4IixtOnRoLnRyYW5zbGF0ZSxtbTp0aC50 cmFuc2xhdGUsaDp0aC50cmFuc2xhdGUsaGg6dGgudHJhbnNsYXRlLGQ6ItC0 0LDQvSIsZGQ6dGgudHJhbnNsYXRlLE06ItC80LXRgdC10YYiLE1NOnRoLnRy YW5zbGF0ZSx5OiLQs9C+0LTQuNC90YMiLHl5OnRoLnRyYW5zbGF0ZX0sb3Jk aW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93 OjEsLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCitk b3k6N319KSx7d29yZHM6ey8vRGlmZmVyZW50IGdyYW1tYXRpY2FsIGNhc2Vz CittOlsiamVkYW4gbWludXQiLCJqZWRuZSBtaW51dGUiXSxtbTpbIm1pbnV0 IiwibWludXRlIiwibWludXRhIl0saDpbImplZGFuIHNhdCIsImplZG5vZyBz YXRhIl0saGg6WyJzYXQiLCJzYXRhIiwic2F0aSJdLGRkOlsiZGFuIiwiZGFu YSIsImRhbmEiXSxNTTpbIm1lc2VjIiwibWVzZWNhIiwibWVzZWNpIl0seXk6 WyJnb2RpbmEiLCJnb2RpbmUiLCJnb2RpbmEiXX0sY29ycmVjdEdyYW1tYXRp Y2FsQ2FzZTpmdW5jdGlvbihhLGIpe3JldHVybiAxPT09YT9iWzBdOmE+PTIm JjQ+PWE/YlsxXTpiWzJdfSx0cmFuc2xhdGU6ZnVuY3Rpb24oYSxiLGMpe3Zh ciBkPXVoLndvcmRzW2NdO3JldHVybiAxPT09Yy5sZW5ndGg/Yj9kWzBdOmRb MV06YSsiICIrdWguY29ycmVjdEdyYW1tYXRpY2FsQ2FzZShhLGQpfX0pLHZo PShrZy5kZWZpbmVMb2NhbGUoInNyIix7bW9udGhzOiJqYW51YXJfZmVicnVh cl9tYXJ0X2FwcmlsX21hal9qdW5fanVsX2F2Z3VzdF9zZXB0ZW1iYXJfb2t0 b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhciIuc3BsaXQoIl8iKSxtb250aHNTaG9y dDoiamFuLl9mZWIuX21hci5fYXByLl9tYWpfanVuX2p1bF9hdmcuX3NlcC5f b2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDoh MCx3ZWVrZGF5czoibmVkZWxqYV9wb25lZGVsamFrX3V0b3Jha19zcmVkYV/E jWV0dnJ0YWtfcGV0YWtfc3Vib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hv cnQ6Im5lZC5fcG9uLl91dG8uX3NyZS5fxI1ldC5fcGV0Ll9zdWIuIi5zcGxp dCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb191dF9zcl/EjWVfcGVfc3UiLnNw bGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0 OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoi RC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBIOm1tIixMTExMOiJk ZGRkLCBELiBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb ZGFuYXMgdV0gTFQiLG5leHREYXk6IltzdXRyYSB1XSBMVCIsbmV4dFdlZWs6 ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJb dV0gW25lZGVsanVdIFt1XSBMVCI7Y2FzZSAzOnJldHVybiJbdV0gW3NyZWR1 XSBbdV0gTFQiO2Nhc2UgNjpyZXR1cm4iW3VdIFtzdWJvdHVdIFt1XSBMVCI7 Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbdV0gZGRkZCBb dV0gTFQifX0sbGFzdERheToiW2p1xI1lIHVdIExUIixsYXN0V2VlazpmdW5j dGlvbigpe3ZhciBhPVsiW3Byb8WhbGVdIFtuZWRlbGplXSBbdV0gTFQiLCJb cHJvxaFsb2ddIFtwb25lZGVsamthXSBbdV0gTFQiLCJbcHJvxaFsb2ddIFt1 dG9ya2FdIFt1XSBMVCIsIltwcm/FoWxlXSBbc3JlZGVdIFt1XSBMVCIsIltw cm/FoWxvZ10gW8SNZXR2cnRrYV0gW3VdIExUIiwiW3Byb8WhbG9nXSBbcGV0 a2FdIFt1XSBMVCIsIltwcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQiXTtyZXR1 cm4gYVt0aGlzLmRheSgpXX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6 e2Z1dHVyZToiemEgJXMiLHBhc3Q6InByZSAlcyIsczoibmVrb2xpa28gc2Vr dW5kaSIsbTp1aC50cmFuc2xhdGUsbW06dWgudHJhbnNsYXRlLGg6dWgudHJh bnNsYXRlLGhoOnVoLnRyYW5zbGF0ZSxkOiJkYW4iLGRkOnVoLnRyYW5zbGF0 ZSxNOiJtZXNlYyIsTU06dWgudHJhbnNsYXRlLHk6ImdvZGludSIseXk6dWgu dHJhbnNsYXRlfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoi JWQuIix3ZWVrOntkb3c6MSwvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBv ZiB0aGUgd2Vlay4KK2RveTo3fX0pLGtnLmRlZmluZUxvY2FsZSgic3MiLHtt b250aHM6IkJoaW1iaWR2d2FuZV9JbmRsb3ZhbmFfSW5kbG92J2xlbmtodWx1 X01hYmFzYV9Jbmtod2VraHdldGlfSW5obGFiYV9LaG9sd2FuZV9JbmdjaV9J bnlvbmlfSW1waGFsYV9Md2V0aV9JbmdvbmdvbmkiLnNwbGl0KCJfIiksbW9u dGhzU2hvcnQ6IkJoaV9JbmFfSW51X01hYl9JbmtfSW5oX0tob19JZ2NfSW55 X0ltcF9Md2VfSWdvIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJMaXNvbnRmb19V bXNvbWJ1bHVrb19MZXNpYmlsaV9MZXNpdHNhdGZ1X0xlc2luZV9MZXNpaGxh bnVfVW1nY2liZWxvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ikxpc19V bWJfTHNiX0xlc19Mc2lfTHNoX1VtZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01p bjoiTGlfVXNfTGJfTHRfTHNfTGhfVWciLnNwbGl0KCJfIiksd2Vla2RheXNQ YXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6 Img6bW06c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixM TEw6IkQgTU1NTSBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZ WVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltOYW11aGxhIG5nYV0g TFQiLG5leHREYXk6IltLdXNhc2EgbmdhXSBMVCIsbmV4dFdlZWs6ImRkZGQg W25nYV0gTFQiLGxhc3REYXk6IltJdG9sbyBuZ2FdIExUIixsYXN0V2Vlazoi ZGRkZCBbbGVsaXBoZWxpbGVdIFtuZ2FdIExUIixzYW1lRWxzZToiTCJ9LHJl bGF0aXZlVGltZTp7ZnV0dXJlOiJuZ2EgJXMiLHBhc3Q6IndlbnRla2Egbmdh ICVzIixzOiJlbWl6dXp3YW5hIGxvbWNhbmUiLG06InVtenV6dSIsbW06IiVk IGVtaXp1enUiLGg6ImxpaG9yYSIsaGg6IiVkIGVtYWhvcmEiLGQ6ImxpbGFu Z2EiLGRkOiIlZCBlbWFsYW5nYSIsTToiaW55YW5nYSIsTU06IiVkIHRpbnlh bmdhIix5OiJ1bW55YWthIix5eToiJWQgaW1pbnlha2EifSxtZXJpZGllbVBh cnNlOi9la3VzZW5pfGVtaW5pfGVudHNhbWJhbWF8ZWJ1c3VrdS8sbWVyaWRp ZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMT5hPyJla3VzZW5pIjoxNT5h PyJlbWluaSI6MTk+YT8iZW50c2FtYmFtYSI6ImVidXN1a3UifSxtZXJpZGll bUhvdXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMTI9PT1hJiYoYT0wKSwiZWt1 c2VuaSI9PT1iP2E6ImVtaW5pIj09PWI/YT49MTE/YTphKzEyOiJlbnRzYW1i YW1hIj09PWJ8fCJlYnVzdWt1Ij09PWI/MD09PWE/MDphKzEyOnZvaWQgMH0s b3JkaW5hbFBhcnNlOi9cZHsxLDJ9LyxvcmRpbmFsOiIlZCIsd2Vlazp7ZG93 OjEsLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCitk b3k6NH19KSxrZy5kZWZpbmVMb2NhbGUoInN2Iix7bW9udGhzOiJqYW51YXJp X2ZlYnJ1YXJpX21hcnNfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3RpX3Nl cHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIp LG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWFqX2p1bl9qdWxfYXVn X3NlcF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic8O2bmRh Z19tw6VuZGFnX3Rpc2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbMO2cmRh ZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzw7ZuX23DpW5fdGlzX29u c190b3JfZnJlX2zDtnIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InPDtl9t w6VfdGlfb25fdG9fZnJfbMO2Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0 OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVktTU0tREQiLExM OiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBba2wuXSBISDptbSIs TExMTDoiZGRkZCBEIE1NTU0gWVlZWSBba2wuXSBISDptbSIsbGxsOiJEIE1N TSBZWVlZIEhIOm1tIixsbGxsOiJkZGQgRCBNTU0gWVlZWSBISDptbSJ9LGNh bGVuZGFyOntzYW1lRGF5OiJbSWRhZ10gTFQiLG5leHREYXk6IltJbW9yZ29u XSBMVCIsbGFzdERheToiW0lnw6VyXSBMVCIsbmV4dFdlZWs6IltQw6VdIGRk ZGQgTFQiLGxhc3RXZWVrOiJbSV0gZGRkZFtzXSBMVCIsc2FtZUVsc2U6Ikwi fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib20gJXMiLHBhc3Q6ImbDtnIgJXMg c2VkYW4iLHM6Im7DpWdyYSBzZWt1bmRlciIsbToiZW4gbWludXQiLG1tOiIl ZCBtaW51dGVyIixoOiJlbiB0aW1tZSIsaGg6IiVkIHRpbW1hciIsZDoiZW4g ZGFnIixkZDoiJWQgZGFnYXIiLE06ImVuIG3DpW5hZCIsTU06IiVkIG3DpW5h ZGVyIix5OiJldHQgw6VyIix5eToiJWQgw6VyIn0sb3JkaW5hbFBhcnNlOi9c ZHsxLDJ9KGV8YSkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7dmFyIGI9YSUxMCxj PTE9PT1+fihhJTEwMC8xMCk/ImUiOjE9PT1iPyJhIjoyPT09Yj8iYSI6ImUi O3JldHVybiBhK2N9LHdlZWs6e2RvdzoxLC8vIE1vbmRheSBpcyB0aGUgZmly c3QgZGF5IG9mIHRoZSB3ZWVrLgorZG95OjR9fSksa2cuZGVmaW5lTG9jYWxl KCJzdyIse21vbnRoczoiSmFudWFyaV9GZWJydWFyaV9NYWNoaV9BcHJpbGlf TWVpX0p1bmlfSnVsYWlfQWdvc3RpX1NlcHRlbWJhX09rdG9iYV9Ob3ZlbWJh X0Rlc2VtYmEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFj X0Fwcl9NZWlfSnVuX0p1bF9BZ29fU2VwX09rdF9Ob3ZfRGVzIi5zcGxpdCgi XyIpLHdlZWtkYXlzOiJKdW1hcGlsaV9KdW1hdGF0dV9KdW1hbm5lX0p1bWF0 YW5vX0FsaGFtaXNpX0lqdW1hYV9KdW1hbW9zaSIuc3BsaXQoIl8iKSx3ZWVr ZGF5c1Nob3J0OiJKcGxfSnRhdF9Kbm5lX0p0YW5fQWxoX0lqbV9KbW9zIi5z cGxpdCgiXyIpLHdlZWtkYXlzTWluOiJKMl9KM19KNF9KNV9BbF9Jal9KMSIu c3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3Jt YXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIs TEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExM OiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5 OiJbbGVvIHNhYV0gTFQiLG5leHREYXk6IltrZXNobyBzYWFdIExUIixuZXh0 V2VlazoiW3dpa2kgaWpheW9dIGRkZGQgW3NhYXRdIExUIixsYXN0RGF5OiJb amFuYV0gTFQiLGxhc3RXZWVrOiJbd2lraSBpbGl5b3BpdGFdIGRkZGQgW3Nh YXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIl cyBiYWFkYXllIixwYXN0OiJ0b2tlYSAlcyIsczoiaGl2aSBwdW5kZSIsbToi ZGFraWthIG1vamEiLG1tOiJkYWtpa2EgJWQiLGg6InNhYSBsaW1vamEiLGho OiJtYXNhYSAlZCIsZDoic2lrdSBtb2phIixkZDoibWFzaWt1ICVkIixNOiJt d2V6aSBtbW9qYSIsTU06Im1pZXppICVkIix5OiJtd2FrYSBtbW9qYSIseXk6 Im1pYWthICVkIn0sd2Vlazp7ZG93OjEsLy8gTW9uZGF5IGlzIHRoZSBmaXJz dCBkYXkgb2YgdGhlIHdlZWsuCitkb3k6N319KSx7MToi4K+nIiwyOiLgr6gi LDM6IuCvqSIsNDoi4K+qIiw1OiLgr6siLDY6IuCvrCIsNzoi4K+tIiw4OiLg r64iLDk6IuCvryIsMDoi4K+mIn0pLHdoPXsi4K+nIjoiMSIsIuCvqCI6IjIi LCLgr6kiOiIzIiwi4K+qIjoiNCIsIuCvqyI6IjUiLCLgr6wiOiI2Iiwi4K+t IjoiNyIsIuCvriI6IjgiLCLgr68iOiI5Iiwi4K+mIjoiMCJ9LHhoPShrZy5k ZWZpbmVMb2NhbGUoInRhIix7bW9udGhzOiLgrpzgrqngrrXgrrDgrr9f4K6q 4K6/4K6q4K+N4K6w4K614K6w4K6/X+CuruCuvuCusOCvjeCumuCvjV/gro/g rqrgr43grrDgrrLgr41f4K6u4K+HX+CunOCvguCuqeCvjV/grpzgr4LgrrLg r4hf4K6G4K6V4K644K+N4K6f4K+NX+CumuCvhuCuquCvjeCun+CvhuCuruCv jeCuquCusOCvjV/groXgrpXgr43grp/gr4fgrr7grqrgrrDgr41f4K6o4K61 4K6u4K+N4K6q4K6w4K+NX+Cun+Cuv+CumuCuruCvjeCuquCusOCvjSIuc3Bs aXQoIl8iKSxtb250aHNTaG9ydDoi4K6c4K6p4K614K6w4K6/X+CuquCuv+Cu quCvjeCusOCuteCusOCuv1/grq7grr7grrDgr43grprgr41f4K6P4K6q4K+N 4K6w4K6y4K+NX+CuruCvh1/grpzgr4Lgrqngr41f4K6c4K+C4K6y4K+IX+Cu huCuleCuuOCvjeCun+CvjV/grprgr4bgrqrgr43grp/gr4bgrq7gr43grqrg rrDgr41f4K6F4K6V4K+N4K6f4K+H4K6+4K6q4K6w4K+NX+CuqOCuteCuruCv jeCuquCusOCvjV/grp/grr/grprgrq7gr43grqrgrrDgr40iLnNwbGl0KCJf Iiksd2Vla2RheXM6IuCunuCuvuCur+Cuv+CuseCvjeCuseCvgeCuleCvjeCu leCuv+CutOCuruCviF/grqTgrr/grpngr43grpXgrp/gr43grpXgrr/grrTg rq7gr4hf4K6a4K+G4K614K+N4K614K6+4K6v4K+N4K6V4K6/4K604K6u4K+I X+CuquCvgeCupOCuqeCvjeCuleCuv+CutOCuruCviF/grrXgrr/grq/grr7g rrTgrpXgr43grpXgrr/grrTgrq7gr4hf4K614K+G4K6z4K+N4K6z4K6/4K6V 4K+N4K6V4K6/4K604K6u4K+IX+CumuCuqeCuv+CuleCvjeCuleCuv+CutOCu ruCviCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLgrp7grr7grq/grr/g rrHgr4Ff4K6k4K6/4K6Z4K+N4K6V4K6z4K+NX+CumuCvhuCuteCvjeCuteCu vuCur+CvjV/grqrgr4HgrqTgrqngr41f4K614K6/4K6v4K6+4K604K6p4K+N X+CuteCvhuCus+CvjeCus+Cuv1/grprgrqngrr8iLnNwbGl0KCJfIiksd2Vl a2RheXNNaW46IuCunuCuvl/grqTgrr9f4K6a4K+GX+CuquCvgV/grrXgrr9f 4K614K+GX+CumiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhI Om1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1N IFlZWVkiLExMTDoiRCBNTU1NIFlZWVksIEhIOm1tIixMTExMOiJkZGRkLCBE IE1NTU0gWVlZWSwgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW+Cuh+Cu qeCvjeCuseCvgV0gTFQiLG5leHREYXk6Ilvgrqjgrr7grrPgr4hdIExUIixu ZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6Ilvgrqjgr4fgrrHgr43grrHg r4FdIExUIixsYXN0V2VlazoiW+CuleCun+CuqOCvjeCupCDgrrXgrr7grrDg rq7gr41dIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7 ZnV0dXJlOiIlcyDgrofgrrLgr40iLHBhc3Q6IiVzIOCuruCvgeCuqeCvjSIs czoi4K6S4K6w4K+BIOCumuCuv+CusiDgrrXgrr/grqjgrr7grp/grr/grpXg rrPgr40iLG06IuCukuCusOCvgSDgrqjgrr/grq7grr/grp/grq7gr40iLG1t OiIlZCDgrqjgrr/grq7grr/grp/grpngr43grpXgrrPgr40iLGg6IuCukuCu sOCvgSDgrq7grqPgrr8g4K6o4K+H4K6w4K6u4K+NIixoaDoiJWQg4K6u4K6j 4K6/IOCuqOCvh+CusOCuruCvjSIsZDoi4K6S4K6w4K+BIOCuqOCuvuCus+Cv jSIsZGQ6IiVkIOCuqOCuvuCun+CvjeCuleCus+CvjSIsTToi4K6S4K6w4K+B IOCuruCuvuCupOCuruCvjSIsTU06IiVkIOCuruCuvuCupOCumeCvjeCuleCu s+CvjSIseToi4K6S4K6w4K+BIOCuteCusOCvgeCun+CuruCvjSIseXk6IiVk IOCuhuCuo+CvjeCun+CvgeCuleCus+CvjSJ9LG9yZGluYWxQYXJzZTovXGR7 MSwyfeCuteCupOCvgS8sb3JkaW5hbDpmdW5jdGlvbihhKXtyZXR1cm4gYSsi 4K614K6k4K+BIn0scHJlcGFyc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVw bGFjZSgvW+Cvp+CvqOCvqeCvquCvq+CvrOCvreCvruCvr+Cvpl0vZyxmdW5j dGlvbihhKXtyZXR1cm4gd2hbYV19KX0scG9zdGZvcm1hdDpmdW5jdGlvbihh KXtyZXR1cm4gYS5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKGEpe3JldHVybiB2 aFthXX0pfSwKKy8vIHJlZmVyIGh0dHA6Ly90YS53aWtpcGVkaWEub3JnL3Mv MWVyMQorbWVyaWRpZW1QYXJzZTov4K6v4K6+4K6u4K6u4K+NfOCuteCviOCu leCuseCviHzgrpXgrr7grrLgr4h84K6o4K6j4K+N4K6q4K6V4K6y4K+NfOCu juCuseCvjeCuquCuvuCun+CvgXzgrq7grr7grrLgr4gvLG1lcmlkaWVtOmZ1 bmN0aW9uKGEsYixjKXtyZXR1cm4gMj5hPyIg4K6v4K6+4K6u4K6u4K+NIjo2 PmE/IiDgrrXgr4jgrpXgrrHgr4giOjEwPmE/IiDgrpXgrr7grrLgr4giOjE0 PmE/IiDgrqjgrqPgr43grqrgrpXgrrLgr40iOjE4PmE/IiDgro7grrHgr43g rqrgrr7grp/gr4EiOjIyPmE/IiDgrq7grr7grrLgr4giOiIg4K6v4K6+4K6u 4K6u4K+NIn0sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIDEy PT09YSYmKGE9MCksIuCur+CuvuCuruCuruCvjSI9PT1iPzI+YT9hOmErMTI6 IuCuteCviOCuleCuseCviCI9PT1ifHwi4K6V4K6+4K6y4K+IIj09PWI/YToi 4K6o4K6j4K+N4K6q4K6V4K6y4K+NIj09PWImJmE+PTEwP2E6YSsxMn0sd2Vl azp7ZG93OjAsLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdl ZWsuCitkb3k6Nn19KSxrZy5kZWZpbmVMb2NhbGUoInRlIix7bW9udGhzOiLg sJzgsKjgsLXgsLDgsL9f4LCr4LC/4LCs4LGN4LCw4LC14LCw4LC/X+CwruCw vuCwsOCxjeCwmuCwv1/gsI/gsKrgsY3gsLDgsL/gsLLgsY1f4LCu4LGHX+Cw nOCxguCwqOCxjV/gsJzgsYLgsLLgsYbgsZZf4LCG4LCX4LC44LGN4LCf4LGB X+CwuOCxhuCwquCxjeCwn+CxhuCwguCwrOCwsOCxjV/gsIXgsJXgsY3gsJ/g sYvgsKzgsLDgsY1f4LCo4LC14LCC4LCs4LCw4LGNX+CwoeCwv+CwuOCxhuCw guCwrOCwsOCxjSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi4LCc4LCoLl/g sKvgsL/gsKzgsY3gsLAuX+CwruCwvuCwsOCxjeCwmuCwv1/gsI/gsKrgsY3g sLDgsL8uX+CwruCxh1/gsJzgsYLgsKjgsY1f4LCc4LGC4LCy4LGG4LGWX+Cw huCwly5f4LC44LGG4LCq4LGNLl/gsIXgsJXgsY3gsJ/gsYsuX+CwqOCwtS5f 4LCh4LC/4LC44LGGLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEw LHdlZWtkYXlzOiLgsIbgsKbgsL/gsLXgsL7gsLDgsIJf4LC44LGL4LCu4LC1 4LC+4LCw4LCCX+CwruCwguCwl+Cws+CwteCwvuCwsOCwgl/gsKzgsYHgsKfg sLXgsL7gsLDgsIJf4LCX4LGB4LCw4LGB4LC14LC+4LCw4LCCX+CwtuCxgeCw leCxjeCwsOCwteCwvuCwsOCwgl/gsLbgsKjgsL/gsLXgsL7gsLDgsIIiLnNw bGl0KCJfIiksd2Vla2RheXNTaG9ydDoi4LCG4LCm4LC/X+CwuOCxi+Cwrl/g sK7gsILgsJfgsLNf4LCs4LGB4LCnX+Cwl+CxgeCwsOCxgV/gsLbgsYHgsJXg sY3gsLBf4LC24LCo4LC/Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLgsIZf 4LC44LGLX+CwruCwgl/gsKzgsYFf4LCX4LGBX+CwtuCxgV/gsLYiLnNwbGl0 KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0iLExUUzoiQSBoOm1t OnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBN TU1NIFlZWVksIEEgaDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEg aDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb4LCo4LGH4LCh4LGBXSBMVCIs bmV4dERheToiW+CwsOCxh+CwquCxgV0gTFQiLG5leHRXZWVrOiJkZGRkLCBM VCIsbGFzdERheToiW+CwqOCwv+CwqOCxjeCwqF0gTFQiLGxhc3RXZWVrOiJb 4LCX4LCkXSBkZGRkLCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6 e2Z1dHVyZToiJXMg4LCy4LGLIixwYXN0OiIlcyDgsJXgsY3gsLDgsL/gsKTg sIIiLHM6IuCwleCxiuCwqOCxjeCwqOCwvyDgsJXgsY3gsLfgsKPgsL7gsLLg sYEiLG06IuCwkuCwlSDgsKjgsL/gsK7gsL/gsLfgsIIiLG1tOiIlZCDgsKjg sL/gsK7gsL/gsLfgsL7gsLLgsYEiLGg6IuCwkuCwlSDgsJfgsILgsJ8iLGho OiIlZCDgsJfgsILgsJ/gsLLgsYEiLGQ6IuCwkuCwlSDgsLDgsYvgsJzgsYEi LGRkOiIlZCDgsLDgsYvgsJzgsYHgsLLgsYEiLE06IuCwkuCwlSDgsKjgsYbg sLIiLE1NOiIlZCDgsKjgsYbgsLLgsLLgsYEiLHk6IuCwkuCwlSDgsLjgsILg sLXgsKTgsY3gsLjgsLDgsIIiLHl5OiIlZCDgsLjgsILgsLXgsKTgsY3gsLjg sLDgsL7gsLLgsYEifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3gsLUvLG9yZGlu YWw6IiVk4LC1IixtZXJpZGllbVBhcnNlOi/gsLDgsL7gsKTgsY3gsLDgsL98 4LCJ4LCm4LCv4LCCfOCwruCwp+CxjeCwr+CwvuCwueCxjeCwqOCwgnzgsLjg sL7gsK/gsILgsKTgsY3gsLDgsIIvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihh LGIpe3JldHVybiAxMj09PWEmJihhPTApLCLgsLDgsL7gsKTgsY3gsLDgsL8i PT09Yj80PmE/YTphKzEyOiLgsIngsKbgsK/gsIIiPT09Yj9hOiLgsK7gsKfg sY3gsK/gsL7gsLngsY3gsKjgsIIiPT09Yj9hPj0xMD9hOmErMTI6IuCwuOCw vuCwr+CwguCwpOCxjeCwsOCwgiI9PT1iP2ErMTI6dm9pZCAwfSxtZXJpZGll bTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDQ+YT8i4LCw4LC+4LCk4LGN4LCw 4LC/IjoxMD5hPyLgsIngsKbgsK/gsIIiOjE3PmE/IuCwruCwp+CxjeCwr+Cw vuCwueCxjeCwqOCwgiI6MjA+YT8i4LC44LC+4LCv4LCC4LCk4LGN4LCw4LCC Ijoi4LCw4LC+4LCk4LGN4LCw4LC/In0sd2Vlazp7ZG93OjAsLy8gU3VuZGF5 IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCitkb3k6Nn19KSxrZy5k ZWZpbmVMb2NhbGUoInRoIix7bW9udGhzOiLguKHguIHguKPguLLguITguKFf 4LiB4Li44Lih4Lig4Liy4Lie4Lix4LiZ4LiY4LmMX+C4oeC4teC4meC4suC4 hOC4oV/guYDguKHguKnguLLguKLguJlf4Lie4Lik4Lip4Lig4Liy4LiE4Lih X+C4oeC4tOC4luC4uOC4meC4suC4ouC4mV/guIHguKPguIHguI7guLLguITg uKFf4Liq4Li04LiH4Lir4Liy4LiE4LihX+C4geC4seC4meC4ouC4suC4ouC4 mV/guJXguLjguKXguLLguITguKFf4Lie4Lik4Lio4LiI4Li04LiB4Liy4Lii 4LiZX+C4mOC4seC4meC4p+C4suC4hOC4oSIuc3BsaXQoIl8iKSxtb250aHNT aG9ydDoi4LihLuC4hC5f4LiBLuC4ni5f4Lih4Li1LuC4hC5f4LmA4LihLuC4 oi5f4LieLuC4hC5f4Lih4Li0LuC4oi5f4LiBLuC4hC5f4LiqLuC4hC5f4LiB LuC4oi5f4LiVLuC4hC5f4LieLuC4oi5f4LiYLuC4hC4iLnNwbGl0KCJfIiks bW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoi4Lit4Liy4LiX4Li04LiV 4Lii4LmMX+C4iOC4seC4meC4l+C4o+C5jF/guK3guLHguIfguITguLLguKNf 4Lie4Li44LiYX+C4nuC4pOC4q+C4seC4quC4muC4lOC4tV/guKjguLjguIHg uKPguYxf4LmA4Liq4Liy4Lij4LmMIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hv cnQ6IuC4reC4suC4l+C4tOC4leC4ouC5jF/guIjguLHguJnguJfguKPguYxf 4Lit4Lix4LiH4LiE4Liy4LijX+C4nuC4uOC4mF/guJ7guKTguKvguLHguKpf 4Lio4Li44LiB4Lij4LmMX+C5gOC4quC4suC4o+C5jCIuc3BsaXQoIl8iKSwv LyB5ZXMsIHRocmVlIGNoYXJhY3RlcnMgZGlmZmVyZW5jZQord2Vla2RheXNN aW46IuC4reC4si5f4LiILl/guK0uX+C4ni5f4Lie4LikLl/guKguX+C4qi4i LnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9y bWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJZWVlZL01NL0REIixM TDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkg4LmA4Lin4Lil4Liy IEg6bW0iLExMTEw6IuC4p+C4seC4mWRkZGTguJfguLXguYggRCBNTU1NIFlZ WVkg4LmA4Lin4Lil4LiyIEg6bW0ifSxtZXJpZGllbVBhcnNlOi/guIHguYjg uK3guJnguYDguJfguLXguYjguKLguId84Lir4Lil4Lix4LiH4LmA4LiX4Li1 4LmI4Lii4LiHLyxpc1BNOmZ1bmN0aW9uKGEpe3JldHVybiLguKvguKXguLHg uIfguYDguJfguLXguYjguKLguIciPT09YX0sbWVyaWRpZW06ZnVuY3Rpb24o YSxiLGMpe3JldHVybiAxMj5hPyLguIHguYjguK3guJnguYDguJfguLXguYjg uKLguIciOiLguKvguKXguLHguIfguYDguJfguLXguYjguKLguIcifSxjYWxl bmRhcjp7c2FtZURheToiW+C4p+C4seC4meC4meC4teC5iSDguYDguKfguKXg uLJdIExUIixuZXh0RGF5OiJb4Lie4Lij4Li44LmI4LiH4LiZ4Li14LmJIOC5 gOC4p+C4peC4sl0gTFQiLG5leHRXZWVrOiJkZGRkW+C4q+C4meC5ieC4siDg uYDguKfguKXguLJdIExUIixsYXN0RGF5OiJb4LmA4Lih4Li34LmI4Lit4Lin 4Liy4LiZ4LiZ4Li14LmJIOC5gOC4p+C4peC4sl0gTFQiLGxhc3RXZWVrOiJb 4Lin4Lix4LiZXWRkZGRb4LiX4Li14LmI4LmB4Lil4LmJ4LinIOC5gOC4p+C4 peC4sl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6 IuC4reC4teC4gSAlcyIscGFzdDoiJXPguJfguLXguYjguYHguKXguYnguKci LHM6IuC5hOC4oeC5iOC4geC4teC5iOC4p+C4tOC4meC4suC4l+C4tSIsbToi MSDguJnguLLguJfguLUiLG1tOiIlZCDguJnguLLguJfguLUiLGg6IjEg4LiK 4Lix4LmI4Lin4LmC4Lih4LiHIixoaDoiJWQg4LiK4Lix4LmI4Lin4LmC4Lih 4LiHIixkOiIxIOC4p+C4seC4mSIsZGQ6IiVkIOC4p+C4seC4mSIsTToiMSDg uYDguJTguLfguK3guJkiLE1NOiIlZCDguYDguJTguLfguK3guJkiLHk6IjEg 4Lib4Li1Iix5eToiJWQg4Lib4Li1In19KSxrZy5kZWZpbmVMb2NhbGUoInRs LXBoIix7bW9udGhzOiJFbmVyb19QZWJyZXJvX01hcnNvX0FicmlsX01heW9f SHVueW9fSHVseW9fQWdvc3RvX1NldHllbWJyZV9Pa3R1YnJlX05vYnllbWJy ZV9EaXN5ZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IkVuZV9QZWJf TWFyX0Ficl9NYXlfSHVuX0h1bF9BZ29fU2V0X09rdF9Ob2JfRGlzIi5zcGxp dCgiXyIpLHdlZWtkYXlzOiJMaW5nZ29fTHVuZXNfTWFydGVzX01peWVya3Vs ZXNfSHV3ZWJlc19CaXllcm5lc19TYWJhZG8iLnNwbGl0KCJfIiksd2Vla2Rh eXNTaG9ydDoiTGluX0x1bl9NYXJfTWl5X0h1d19CaXlfU2FiIi5zcGxpdCgi XyIpLHdlZWtkYXlzTWluOiJMaV9MdV9NYV9NaV9IdV9CaV9TYWIiLnNwbGl0 KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpz cyIsTDoiTU0vRC9ZWVlZIixMTDoiTU1NTSBELCBZWVlZIixMTEw6Ik1NTU0g RCwgWVlZWSBISDptbSIsTExMTDoiZGRkZCwgTU1NTSBERCwgWVlZWSBISDpt bSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbTmdheW9uIHNhXSBMVCIsbmV4dERh eToiW0J1a2FzIHNhXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3NhXSBMVCIsbGFz dERheToiW0thaGFwb24gc2FdIExUIixsYXN0V2VlazoiZGRkZCBbaHVsaW5n IGxpbmdnb10gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1 cmU6InNhIGxvb2IgbmcgJXMiLHBhc3Q6IiVzIGFuZyBuYWthbGlwYXMiLHM6 ImlsYW5nIHNlZ3VuZG8iLG06ImlzYW5nIG1pbnV0byIsbW06IiVkIG1pbnV0 byIsaDoiaXNhbmcgb3JhcyIsaGg6IiVkIG9yYXMiLGQ6ImlzYW5nIGFyYXci LGRkOiIlZCBhcmF3IixNOiJpc2FuZyBidXdhbiIsTU06IiVkIGJ1d2FuIix5 OiJpc2FuZyB0YW9uIix5eToiJWQgdGFvbiJ9LG9yZGluYWxQYXJzZTovXGR7 MSwyfS8sb3JkaW5hbDpmdW5jdGlvbihhKXtyZXR1cm4gYX0sd2Vlazp7ZG93 OjEsLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCitk b3k6NH19KSwicGFnaF93YeKAmV9jaGHigJlfd2VqX2xvU192YWdoX2phdl9T b2NoX2Nob3JnaF9IdXQiLnNwbGl0KCJfIikpLHloPShrZy5kZWZpbmVMb2Nh bGUoInRsaCIse21vbnRoczoidGVyYeKAmSBqYXIgd2HigJlfdGVyYeKAmSBq YXIgY2hh4oCZX3RlcmHigJkgamFyIHdlal90ZXJh4oCZIGphciBsb1NfdGVy YeKAmSBqYXIgdmFnaF90ZXJh4oCZIGphciBqYXZfdGVyYeKAmSBqYXIgU29j aF90ZXJh4oCZIGphciBjaG9yZ2hfdGVyYeKAmSBqYXIgSHV0X3RlcmHigJkg amFyIHdh4oCZbWFIX3RlcmHigJkgamFyIHdh4oCZbWFIIHdh4oCZX3RlcmHi gJkgamFyIHdh4oCZbWFIIGNoYeKAmSIuc3BsaXQoIl8iKSxtb250aHNTaG9y dDoiamFyIHdh4oCZX2phciBjaGHigJlfamFyIHdlal9qYXIgbG9TX2phciB2 YWdoX2phciBqYXZfamFyIFNvY2hfamFyIGNob3JnaF9qYXIgSHV0X2phciB3 YeKAmW1hSF9qYXIgd2HigJltYUggd2HigJlfamFyIHdh4oCZbWFIIGNoYeKA mSIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJs b2ptSXRqYWpfRGFTamFqX3Bvdmphal9naEl0bGhqYWpfbG9naGphal9idXFq YWpfZ2hJbmphaiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJsb2ptSXRq YWpfRGFTamFqX3Bvdmphal9naEl0bGhqYWpfbG9naGphal9idXFqYWpfZ2hJ bmphaiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibG9qbUl0amFqX0RhU2ph al9wb3ZqYWpfZ2hJdGxoamFqX2xvZ2hqYWpfYnVxamFqX2doSW5qYWoiLnNw bGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDpt bTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQg TU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDpt bSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbRGFIamFqXSBMVCIsbmV4dERheToi W3dh4oCZbGVTXSBMVCIsbmV4dFdlZWs6IkxMTCIsbGFzdERheToiW3dh4oCZ SHXigJldIExUIixsYXN0V2VlazoiTExMIixzYW1lRWxzZToiTCJ9LHJlbGF0 aXZlVGltZTp7ZnV0dXJlOmFlLHBhc3Q6YmUsczoicHVTIGx1cCIsbToid2Hi gJkgdHVwIixtbTpjZSxoOiJ3YeKAmSByZXAiLGhoOmNlLGQ6Indh4oCZIGph aiIsZGQ6Y2UsTToid2HigJkgamFyIixNTTpjZSx5OiJ3YeKAmSBESVMiLHl5 OmNlfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3 ZWVrOntkb3c6MSwvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUg d2Vlay4KK2RveTo0fX0pLHsxOiInaW5jaSIsNToiJ2luY2kiLDg6IidpbmNp Iiw3MDoiJ2luY2kiLDgwOiInaW5jaSIsMjoiJ25jaSIsNzoiJ25jaSIsMjA6 IiduY2kiLDUwOiInbmNpIiwzOiInw7xuY8O8Iiw0OiInw7xuY8O8IiwxMDA6 IifDvG5jw7wiLDY6IiduY8SxIiw5OiIndW5jdSIsMTA6Iid1bmN1IiwzMDoi J3VuY3UiLDYwOiInxLFuY8SxIiw5MDoiJ8SxbmPEsSJ9KSx6aD0oa2cuZGVm aW5lTG9jYWxlKCJ0ciIse21vbnRoczoiT2Nha1/FnnViYXRfTWFydF9OaXNh bl9NYXnEsXNfSGF6aXJhbl9UZW1tdXpfQcSfdXN0b3NfRXlsw7xsX0VraW1f S2FzxLFtX0FyYWzEsWsiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ik9jYV/F nnViX01hcl9OaXNfTWF5X0hhel9UZW1fQcSfdV9FeWxfRWtpX0thc19BcmEi LnNwbGl0KCJfIiksd2Vla2RheXM6IlBhemFyX1BhemFydGVzaV9TYWzEsV/D h2FyxZ9hbWJhX1BlcsWfZW1iZV9DdW1hX0N1bWFydGVzaSIuc3BsaXQoIl8i KSx3ZWVrZGF5c1Nob3J0OiJQYXpfUHRzX1NhbF/Dh2FyX1Blcl9DdW1fQ3Rz Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJQel9QdF9TYV/Dh2FfUGVfQ3Vf Q3QiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRT OiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixM TEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZ WSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbYnVnw7xuIHNhYXRdIExU IixuZXh0RGF5OiJbeWFyxLFuIHNhYXRdIExUIixuZXh0V2VlazoiW2hhZnRh eWFdIGRkZGQgW3NhYXRdIExUIixsYXN0RGF5OiJbZMO8bl0gTFQiLGxhc3RX ZWVrOiJbZ2XDp2VuIGhhZnRhXSBkZGRkIFtzYWF0XSBMVCIsc2FtZUVsc2U6 IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgc29ucmEiLHBhc3Q6IiVz IMO2bmNlIixzOiJiaXJrYcOnIHNhbml5ZSIsbToiYmlyIGRha2lrYSIsbW06 IiVkIGRha2lrYSIsaDoiYmlyIHNhYXQiLGhoOiIlZCBzYWF0IixkOiJiaXIg Z8O8biIsZGQ6IiVkIGfDvG4iLE06ImJpciBheSIsTU06IiVkIGF5Iix5OiJi aXIgecSxbCIseXk6IiVkIHnEsWwifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0n KGluY2l8bmNpfMO8bmPDvHxuY8SxfHVuY3V8xLFuY8SxKS8sb3JkaW5hbDpm dW5jdGlvbihhKXtpZigwPT09YSkvLyBzcGVjaWFsIGNhc2UgZm9yIHplcm8K K3JldHVybiBhKyInxLFuY8SxIjt2YXIgYj1hJTEwLGM9YSUxMDAtYixkPWE+ PTEwMD8xMDA6bnVsbDtyZXR1cm4gYSsoeWhbYl18fHloW2NdfHx5aFtkXSl9 LHdlZWs6e2RvdzoxLC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRo ZSB3ZWVrLgorZG95Ojd9fSksa2cuZGVmaW5lTG9jYWxlKCJ0emwiLHttb250 aHM6IkphbnVhcl9GZXZyYWdsaF9NYXLDp19BdnLDr3VfTWFpX0fDvG5fSnVs aWFfR3VzY2h0X1NldGVtdmFyX0xpc3RvcMOkdHNfTm9lbXZhcl9aZWNlbXZh ciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0Zldl9NYXJfQXZyX01h aV9Hw7xuX0p1bF9HdXNfU2V0X0xpc19Ob2VfWmVjIi5zcGxpdCgiXyIpLHdl ZWtkYXlzOiJTw7psYWRpX0zDum5lw6dpX01haXR6aV9Nw6FyY3VyaV9YaMO6 YWRpX1Zpw6luZXLDp2lfU8OhdHVyaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1No b3J0OiJTw7psX0zDum5fTWFpX03DoXJfWGjDul9WacOpX1PDoXQiLnNwbGl0 KCJfIiksd2Vla2RheXNNaW46IlPDul9Mw7pfTWFfTcOhX1hoX1ZpX1PDoSIu c3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkhI Lm1tLnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBbZGFsbGFzXSBZ WVlZIixMTEw6IkQuIE1NTU0gW2RhbGxhc10gWVlZWSBISC5tbSIsTExMTDoi ZGRkZCwgW2xpXSBELiBNTU1NIFtkYWxsYXNdIFlZWVkgSEgubW0ifSxtZXJp ZGllbVBhcnNlOi9kXCdvfGRcJ2EvaSxpc1BNOmZ1bmN0aW9uKGEpe3JldHVy biJkJ28iPT09YS50b0xvd2VyQ2FzZSgpfSxtZXJpZGllbTpmdW5jdGlvbihh LGIsYyl7cmV0dXJuIGE+MTE/Yz8iZCdvIjoiRCdPIjpjPyJkJ2EiOiJEJ0Ei fSxjYWxlbmRhcjp7c2FtZURheToiW294aGkgw6BdIExUIixuZXh0RGF5OiJb ZGVtw6Agw6BdIExUIixuZXh0V2VlazoiZGRkZCBbw6BdIExUIixsYXN0RGF5 OiJbaWVpcmkgw6BdIExUIixsYXN0V2VlazoiW3PDvHIgZWxdIGRkZGQgW2xh c3RldSDDoF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1 cmU6Im9zcHJlaSAlcyIscGFzdDoiamElcyIsczplZSxtOmVlLG1tOmVlLGg6 ZWUsaGg6ZWUsZDplZSxkZDplZSxNOmVlLE1NOmVlLHk6ZWUseXk6ZWV9LG9y ZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2Rv dzoxLC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgor ZG95OjR9fSksa2cuZGVmaW5lTG9jYWxlKCJ0em0tbGF0biIse21vbnRoczoi aW5uYXlyX2Jyy6RheXLLpF9tYXLLpHPLpF9pYnJpcl9tYXl5d195d255d195 d2x5d3pfyaN3xaF0X8Whd3RhbmJpcl9rdMukd2Jyy6Rfbnd3YW5iaXJfZHdq bmJpciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiaW5uYXlyX2Jyy6RheXLL pF9tYXLLpHPLpF9pYnJpcl9tYXl5d195d255d195d2x5d3pfyaN3xaF0X8Wh d3RhbmJpcl9rdMukd2Jyy6Rfbnd3YW5iaXJfZHdqbmJpciIuc3BsaXQoIl8i KSx3ZWVrZGF5czoiYXNhbWFzX2F5bmFzX2FzaW5hc19ha3Jhc19ha3dhc19h c2ltd2FzX2FzaeG4jXlhcyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJh c2FtYXNfYXluYXNfYXNpbmFzX2FrcmFzX2Frd2FzX2FzaW13YXNfYXNp4biN eWFzIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJhc2FtYXNfYXluYXNfYXNp bmFzX2FrcmFzX2Frd2FzX2FzaW13YXNfYXNp4biNeWFzIi5zcGxpdCgiXyIp LGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6 IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZ WSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVu ZGFyOntzYW1lRGF5OiJbYXNka2ggZ10gTFQiLG5leHREYXk6Ilthc2thIGdd IExUIixuZXh0V2VlazoiZGRkZCBbZ10gTFQiLGxhc3REYXk6Ilthc3NhbnQg Z10gTFQiLGxhc3RXZWVrOiJkZGRkIFtnXSBMVCIsc2FtZUVsc2U6IkwifSxy ZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZGFka2ggcyB5YW4gJXMiLHBhc3Q6Inlh biAlcyIsczoiaW1payIsbToibWludeG4jSIsbW06IiVkIG1pbnXhuI0iLGg6 InNhyZthIixoaDoiJWQgdGFzc2HJm2luIixkOiJhc3MiLGRkOiIlZCBvc3Nh biIsTToiYXlvd3IiLE1NOiIlZCBpeXlpcm4iLHk6ImFzZ2FzIix5eToiJWQg aXNnYXNuIn0sd2Vlazp7ZG93OjYsLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0 IGRheSBvZiB0aGUgd2Vlay4KK2RveToxMn19KSxrZy5kZWZpbmVMb2NhbGUo InR6bSIse21vbnRoczoi4rWJ4rWP4rWP4rSw4rWi4rWUX+K0seK1leK0sOK1 ouK1lV/itY7itLDitZXitZpf4rWJ4rSx4rWU4rWJ4rWUX+K1juK0sOK1ouK1 ouK1k1/itaLitZPitY/itaLitZNf4rWi4rWT4rWN4rWi4rWT4rWjX+K1luK1 k+K1m+K1nF/itZvitZPitZzitLDitY/itLHitYnitZRf4rS94rWf4rWT4rSx 4rWVX+K1j+K1k+K1oeK0sOK1j+K0seK1ieK1lF/itLfitZPitYritY/itLHi tYnitZQiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IuK1ieK1j+K1j+K0sOK1 ouK1lF/itLHitZXitLDitaLitZVf4rWO4rSw4rWV4rWaX+K1ieK0seK1lOK1 ieK1lF/itY7itLDitaLitaLitZNf4rWi4rWT4rWP4rWi4rWTX+K1ouK1k+K1 jeK1ouK1k+K1o1/itZbitZPitZvitZxf4rWb4rWT4rWc4rSw4rWP4rSx4rWJ 4rWUX+K0veK1n+K1k+K0seK1lV/itY/itZPitaHitLDitY/itLHitYnitZRf 4rS34rWT4rWK4rWP4rSx4rWJ4rWUIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLi tLDitZnitLDitY7itLDitZlf4rSw4rWi4rWP4rSw4rWZX+K0sOK1meK1ieK1 j+K0sOK1mV/itLDitL3itZTitLDitZlf4rSw4rS94rWh4rSw4rWZX+K0sOK1 meK1ieK1juK1oeK0sOK1mV/itLDitZnitYnitLnitaLitLDitZkiLnNwbGl0 KCJfIiksd2Vla2RheXNTaG9ydDoi4rSw4rWZ4rSw4rWO4rSw4rWZX+K0sOK1 ouK1j+K0sOK1mV/itLDitZnitYnitY/itLDitZlf4rSw4rS94rWU4rSw4rWZ X+K0sOK0veK1oeK0sOK1mV/itLDitZnitYnitY7itaHitLDitZlf4rSw4rWZ 4rWJ4rS54rWi4rSw4rWZIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLitLDi tZnitLDitY7itLDitZlf4rSw4rWi4rWP4rSw4rWZX+K0sOK1meK1ieK1j+K0 sOK1mV/itLDitL3itZTitLDitZlf4rSw4rS94rWh4rSw4rWZX+K0sOK1meK1 ieK1juK1oeK0sOK1mV/itLDitZnitYnitLnitaLitLDitZkiLnNwbGl0KCJf IiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIs TDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZ WVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2Fs ZW5kYXI6e3NhbWVEYXk6IlvitLDitZnitLfitYUg4rS0XSBMVCIsbmV4dERh eToiW+K0sOK1meK0veK0sCDitLRdIExUIixuZXh0V2VlazoiZGRkZCBb4rS0 XSBMVCIsbGFzdERheToiW+K0sOK1muK0sOK1j+K1nCDitLRdIExUIixsYXN0 V2VlazoiZGRkZCBb4rS0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRp bWU6e2Z1dHVyZToi4rS34rSw4rS34rWFIOK1mSDitaLitLDitY8gJXMiLHBh c3Q6IuK1ouK0sOK1jyAlcyIsczoi4rWJ4rWO4rWJ4rS9IixtOiLitY7itYni tY/itZPitLoiLG1tOiIlZCDitY7itYnitY/itZPitLoiLGg6IuK1meK0sOK1 hOK0sCIsaGg6IiVkIOK1nOK0sOK1meK1meK0sOK1hOK1ieK1jyIsZDoi4rSw 4rWZ4rWZIixkZDoiJWQgb+K1meK1meK0sOK1jyIsTToi4rSw4rWib+K1k+K1 lCIsTU06IiVkIOK1ieK1ouK1ouK1ieK1lOK1jyIseToi4rSw4rWZ4rSz4rSw 4rWZIix5eToiJWQg4rWJ4rWZ4rSz4rSw4rWZ4rWPIn0sd2Vlazp7ZG93OjYs Ly8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KK2Rv eToxMn19KSxrZy5kZWZpbmVMb2NhbGUoInVrIix7bW9udGhzOntmb3JtYXQ6 ItGB0ZbRh9C90Y9f0LvRjtGC0L7Qs9C+X9Cx0LXRgNC10LfQvdGPX9C60LLR ltGC0L3Rj1/RgtGA0LDQstC90Y9f0YfQtdGA0LLQvdGPX9C70LjQv9C90Y9f 0YHQtdGA0L/QvdGPX9Cy0LXRgNC10YHQvdGPX9C20L7QstGC0L3Rj1/Qu9C4 0YHRgtC+0L/QsNC00LBf0LPRgNGD0LTQvdGPIi5zcGxpdCgiXyIpLHN0YW5k YWxvbmU6ItGB0ZbRh9C10L3RjF/Qu9GO0YLQuNC5X9Cx0LXRgNC10LfQtdC9 0Yxf0LrQstGW0YLQtdC90Yxf0YLRgNCw0LLQtdC90Yxf0YfQtdGA0LLQtdC9 0Yxf0LvQuNC/0LXQvdGMX9GB0LXRgNC/0LXQvdGMX9Cy0LXRgNC10YHQtdC9 0Yxf0LbQvtCy0YLQtdC90Yxf0LvQuNGB0YLQvtC/0LDQtF/Qs9GA0YPQtNC1 0L3RjCIuc3BsaXQoIl8iKX0sbW9udGhzU2hvcnQ6ItGB0ZbRh1/Qu9GO0YJf 0LHQtdGAX9C60LLRltGCX9GC0YDQsNCyX9GH0LXRgNCyX9C70LjQv1/RgdC1 0YDQv1/QstC10YBf0LbQvtCy0YJf0LvQuNGB0YJf0LPRgNGD0LQiLnNwbGl0 KCJfIiksd2Vla2RheXM6aGUsd2Vla2RheXNTaG9ydDoi0L3QtF/Qv9C9X9Cy 0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01p bjoi0L3QtF/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsSIuc3BsaXQo Il8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNz IixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkg0YAuIixMTEw6IkQg TU1NTSBZWVlZINGALiwgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZ INGALiwgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheTppZSgiW9Ch0YzQvtCz 0L7QtNC90ZYgIiksbmV4dERheTppZSgiW9CX0LDQstGC0YDQsCAiKSxsYXN0 RGF5OmllKCJb0JLRh9C+0YDQsCAiKSxuZXh0V2VlazppZSgiW9CjXSBkZGRk IFsiKSxsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtj YXNlIDA6Y2FzZSAzOmNhc2UgNTpjYXNlIDY6cmV0dXJuIGllKCJb0JzQuNC9 0YPQu9C+0ZddIGRkZGQgWyIpLmNhbGwodGhpcyk7Y2FzZSAxOmNhc2UgMjpj YXNlIDQ6cmV0dXJuIGllKCJb0JzQuNC90YPQu9C+0LPQvl0gZGRkZCBbIiku Y2FsbCh0aGlzKX19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1 cmU6ItC30LAgJXMiLHBhc3Q6IiVzINGC0L7QvNGDIixzOiLQtNC10LrRltC7 0YzQutCwINGB0LXQutGD0L3QtCIsbTpnZSxtbTpnZSxoOiLQs9C+0LTQuNC9 0YMiLGhoOmdlLGQ6ItC00LXQvdGMIixkZDpnZSxNOiLQvNGW0YHRj9GG0Ywi LE1NOmdlLHk6ItGA0ZbQuiIseXk6Z2V9LAorLy8gTS4gRS46IHRob3NlIHR3 byBhcmUgdmlydHVhbGx5IHVudXNlZCBidXQgYSB1c2VyIG1pZ2h0IHdhbnQg dG8gaW1wbGVtZW50IHRoZW0gZm9yIGhpcy9oZXIgd2Vic2l0ZSBmb3Igc29t ZSByZWFzb24KK21lcmlkaWVtUGFyc2U6L9C90L7Rh9GWfNGA0LDQvdC60YN8 0LTQvdGPfNCy0LXRh9C+0YDQsC8saXNQTTpmdW5jdGlvbihhKXtyZXR1cm4v XijQtNC90Y980LLQtdGH0L7RgNCwKSQvLnRlc3QoYSl9LG1lcmlkaWVtOmZ1 bmN0aW9uKGEsYixjKXtyZXR1cm4gND5hPyLQvdC+0YfRliI6MTI+YT8i0YDQ sNC90LrRgyI6MTc+YT8i0LTQvdGPIjoi0LLQtdGH0L7RgNCwIn0sb3JkaW5h bFBhcnNlOi9cZHsxLDJ9LSjQuXzQs9C+KS8sb3JkaW5hbDpmdW5jdGlvbihh LGIpe3N3aXRjaChiKXtjYXNlIk0iOmNhc2UiZCI6Y2FzZSJEREQiOmNhc2Ui dyI6Y2FzZSJXIjpyZXR1cm4gYSsiLdC5IjtjYXNlIkQiOnJldHVybiBhKyIt 0LPQviI7ZGVmYXVsdDpyZXR1cm4gYX19LHdlZWs6e2RvdzoxLC8vIE1vbmRh eSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorZG95Ojd9fSksa2cu ZGVmaW5lTG9jYWxlKCJ1eiIse21vbnRoczoi0Y/QvdCy0LDRgF/RhNC10LLR gNCw0Ltf0LzQsNGA0YJf0LDQv9GA0LXQu1/QvNCw0Llf0LjRjtC9X9C40Y7Q u1/QsNCy0LPRg9GB0YJf0YHQtdC90YLRj9Cx0YBf0L7QutGC0Y/QsdGAX9C9 0L7Rj9Cx0YBf0LTQtdC60LDQsdGAIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0 OiLRj9C90LJf0YTQtdCyX9C80LDRgF/QsNC/0YBf0LzQsNC5X9C40Y7QvV/Q uNGO0Ltf0LDQstCzX9GB0LXQvV/QvtC60YJf0L3QvtGPX9C00LXQuiIuc3Bs aXQoIl8iKSx3ZWVrZGF5czoi0K/QutGI0LDQvdCx0LBf0JTRg9GI0LDQvdCx 0LBf0KHQtdGI0LDQvdCx0LBf0KfQvtGA0YjQsNC90LHQsF/Qn9Cw0LnRiNCw 0L3QsdCwX9CW0YPQvNCwX9Co0LDQvdCx0LAiLnNwbGl0KCJfIiksd2Vla2Rh eXNTaG9ydDoi0K/QutGIX9CU0YPRiF/QodC10Yhf0KfQvtGAX9Cf0LDQuV/Q ltGD0Lxf0KjQsNC9Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLQr9C6X9CU 0YNf0KHQtV/Qp9C+X9Cf0LBf0JbRg1/QqNCwIi5zcGxpdCgiXyIpLGxvbmdE YXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01N L1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDpt bSIsTExMTDoiRCBNTU1NIFlZWVksIGRkZGQgSEg6bW0ifSxjYWxlbmRhcjp7 c2FtZURheToiW9CR0YPQs9GD0L0g0YHQvtCw0YJdIExUIFvQtNCwXSIsbmV4 dERheToiW9Ct0YDRgtCw0LPQsF0gTFQgW9C00LBdIixuZXh0V2VlazoiZGRk ZCBb0LrRg9C90Lgg0YHQvtCw0YJdIExUIFvQtNCwXSIsbGFzdERheToiW9Ca 0LXRh9CwINGB0L7QsNGCXSBMVCBb0LTQsF0iLGxhc3RXZWVrOiJb0KPRgtCz 0LDQvV0gZGRkZCBb0LrRg9C90Lgg0YHQvtCw0YJdIExUIFvQtNCwXSIsc2Ft ZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi0K/QutC40L0gJXMg 0LjRh9C40LTQsCIscGFzdDoi0JHQuNGAINC90LXRh9CwICVzINC+0LvQtNC4 0L0iLHM6ItGE0YPRgNGB0LDRgiIsbToi0LHQuNGAINC00LDQutC40LrQsCIs bW06IiVkINC00LDQutC40LrQsCIsaDoi0LHQuNGAINGB0L7QsNGCIixoaDoi JWQg0YHQvtCw0YIiLGQ6ItCx0LjRgCDQutGD0L0iLGRkOiIlZCDQutGD0L0i LE06ItCx0LjRgCDQvtC5IixNTToiJWQg0L7QuSIseToi0LHQuNGAINC50LjQ uyIseXk6IiVkINC50LjQuyJ9LHdlZWs6e2RvdzoxLC8vIE1vbmRheSBpcyB0 aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorZG95Ojd9fSksa2cuZGVmaW5l TG9jYWxlKCJ2aSIse21vbnRoczoidGjDoW5nIDFfdGjDoW5nIDJfdGjDoW5n IDNfdGjDoW5nIDRfdGjDoW5nIDVfdGjDoW5nIDZfdGjDoW5nIDdfdGjDoW5n IDhfdGjDoW5nIDlfdGjDoW5nIDEwX3Row6FuZyAxMV90aMOhbmcgMTIiLnNw bGl0KCJfIiksbW9udGhzU2hvcnQ6IlRoMDFfVGgwMl9UaDAzX1RoMDRfVGgw NV9UaDA2X1RoMDdfVGgwOF9UaDA5X1RoMTBfVGgxMV9UaDEyIi5zcGxpdCgi XyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImNo4bunIG5o4bqt dF90aOG7qSBoYWlfdGjhu6kgYmFfdGjhu6kgdMawX3Ro4bupIG7Eg21fdGjh u6kgc8OhdV90aOG7qSBi4bqjeSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0 OiJDTl9UMl9UM19UNF9UNV9UNl9UNyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01p bjoiQ05fVDJfVDNfVDRfVDVfVDZfVDciLnNwbGl0KCJfIiksd2Vla2RheXNQ YXJzZUV4YWN0OiEwLG1lcmlkaWVtUGFyc2U6L3NhfGNoL2ksaXNQTTpmdW5j dGlvbihhKXtyZXR1cm4vXmNoJC9pLnRlc3QoYSl9LG1lcmlkaWVtOmZ1bmN0 aW9uKGEsYixjKXtyZXR1cm4gMTI+YT9jPyJzYSI6IlNBIjpjPyJjaCI6IkNI In0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIs TDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBbbsSDbV0gWVlZWSIsTExMOiJE IE1NTU0gW27Eg21dIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBb bsSDbV0gWVlZWSBISDptbSIsbDoiREQvTS9ZWVlZIixsbDoiRCBNTU0gWVlZ WSIsbGxsOiJEIE1NTSBZWVlZIEhIOm1tIixsbGxsOiJkZGQsIEQgTU1NIFlZ WVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0jDtG0gbmF5IGzDumNd IExUIixuZXh0RGF5OiJbTmfDoHkgbWFpIGzDumNdIExUIixuZXh0V2Vlazoi ZGRkZCBbdHXhuqduIHThu5tpIGzDumNdIExUIixsYXN0RGF5OiJbSMO0bSBx dWEgbMO6Y10gTFQiLGxhc3RXZWVrOiJkZGRkIFt0deG6p24gcuG7k2kgbMO6 Y10gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVz IHThu5tpIixwYXN0OiIlcyB0csaw4bubYyIsczoidsOgaSBnacOieSIsbToi beG7mXQgcGjDunQiLG1tOiIlZCBwaMO6dCIsaDoibeG7mXQgZ2nhu50iLGho OiIlZCBnaeG7nSIsZDoibeG7mXQgbmfDoHkiLGRkOiIlZCBuZ8OgeSIsTToi beG7mXQgdGjDoW5nIixNTToiJWQgdGjDoW5nIix5OiJt4buZdCBuxINtIix5 eToiJWQgbsSDbSJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfS8sb3JkaW5hbDpm dW5jdGlvbihhKXtyZXR1cm4gYX0sd2Vlazp7ZG93OjEsLy8gTW9uZGF5IGlz IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCitkb3k6NH19KSxrZy5kZWZp bmVMb2NhbGUoIngtcHNldWRvIix7bW9udGhzOiJKfsOhw7HDusOhfnLDvV9G fsOpYnLDun7DoXLDvV9+TcOhcmN+aF/DgXB+csOtbF9+TcOhw71ffkrDusOx w6l+X0rDumx+w71fw4HDun5nw7pzdH5fU8OpcH50w6ltYn7DqXJfw5N+Y3TD s2J+w6lyX8ORfsOzdsOpbX5iw6lyX35Ew6ljw6l+bWLDqXIiLnNwbGl0KCJf IiksbW9udGhzU2hvcnQ6Ikp+w6HDsV9+RsOpYl9+TcOhcl9+w4Fwcl9+TcOh w71ffkrDusOxX35Kw7psX37DgcO6Z19+U8OpcF9+w5NjdF9+w5HDs3ZffkTD qWMiLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoi U37DusOxZMOhfsO9X03Ds37DsWTDocO9fl9Uw7rDqX5zZMOhw71+X1fDqWR+ w7HDqXNkfsOhw71fVH5ow7pyc35kw6HDvV9+RnLDrWR+w6HDvV9TfsOhdMO6 cn5kw6HDvSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTfsO6w7Fffk3D s8OxX35Uw7rDqV9+V8OpZF9+VGjDul9+RnLDrV9+U8OhdCIuc3BsaXQoIl8i KSx3ZWVrZGF5c01pbjoiU37Dul9Nw7N+X1TDul9+V8OpX1R+aF9Gcn5fU8Oh Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZv cm1hdDp7TFQ6IkhIOm1tIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZ WVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1N TSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUfsOzZMOhfsO9 IMOhdF0gTFQiLG5leHREYXk6IltUfsOzbcOzfnJyw7N+dyDDoXRdIExUIixu ZXh0V2VlazoiZGRkZCBbw6F0XSBMVCIsbGFzdERheToiW8OdfsOpc3R+w6ly ZMOhfsO9IMOhdF0gTFQiLGxhc3RXZWVrOiJbTH7DoXN0XSBkZGRkIFvDoXRd IExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLDrX7D sSAlcyIscGFzdDoiJXMgw6F+Z8OzIixzOiLDoSB+ZsOpdyB+c8OpY8OzfsOx ZHMiLG06IsOhIH5tw63DsX7DunTDqSIsbW06IiVkIG1+w63DscO6fnTDqXMi LGg6IsOhfsOxIGjDs37DunIiLGhoOiIlZCBofsOzw7pycyIsZDoiw6EgfmTD ocO9IixkZDoiJWQgZH7DocO9cyIsTToiw6Egfm3Ds8OxfnRoIixNTToiJWQg bX7Ds8OxdH5ocyIseToiw6EgfsO9w6nDoXIiLHl5OiIlZCDDvX7DqcOhcnMi fSxvcmRpbmFsUGFyc2U6L1xkezEsMn0odGh8c3R8bmR8cmQpLyxvcmRpbmFs OmZ1bmN0aW9uKGEpe3ZhciBiPWElMTAsYz0xPT09fn4oYSUxMDAvMTApPyJ0 aCI6MT09PWI/InN0IjoyPT09Yj8ibmQiOjM9PT1iPyJyZCI6InRoIjtyZXR1 cm4gYStjfSx3ZWVrOntkb3c6MSwvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRh eSBvZiB0aGUgd2Vlay4KK2RveTo0fX0pLGtnLmRlZmluZUxvY2FsZSgiemgt Y24iLHttb250aHM6IuS4gOaciF/kuozmnIhf5LiJ5pyIX+Wbm+aciF/kupTm nIhf5YWt5pyIX+S4g+aciF/lhavmnIhf5Lmd5pyIX+WNgeaciF/ljYHkuIDm nIhf5Y2B5LqM5pyIIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiIx5pyIXzLm nIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeaciF8xMOaciF8x MeaciF8xMuaciCIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi5pif5pyf5pelX+aY n+acn+S4gF/mmJ/mnJ/kuoxf5pif5pyf5LiJX+aYn+acn+Wbm1/mmJ/mnJ/k upRf5pif5pyf5YWtIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IuWRqOaX pV/lkajkuIBf5ZGo5LqMX+WRqOS4iV/lkajlm5tf5ZGo5LqUX+WRqOWFrSIu c3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi5pelX+S4gF/kuoxf5LiJX+Wbm1/k upRf5YWtIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiQWjngrlt beWIhiIsTFRTOiJBaOeCuW3liIZz56eSIixMOiJZWVlZLU1NLUREIixMTDoi WVlZWeW5tE1NTUTml6UiLExMTDoiWVlZWeW5tE1NTUTml6VBaOeCuW1t5YiG IixMTExMOiJZWVlZ5bm0TU1NROaXpWRkZGRBaOeCuW1t5YiGIixsOiJZWVlZ LU1NLUREIixsbDoiWVlZWeW5tE1NTUTml6UiLGxsbDoiWVlZWeW5tE1NTUTm l6VBaOeCuW1t5YiGIixsbGxsOiJZWVlZ5bm0TU1NROaXpWRkZGRBaOeCuW1t 5YiGIn0sbWVyaWRpZW1QYXJzZTov5YeM5pmofOaXqeS4inzkuIrljYh85Lit 5Y2IfOS4i+WNiHzmmZrkuIovLG1lcmlkaWVtSG91cjpmdW5jdGlvbihhLGIp e3JldHVybiAxMj09PWEmJihhPTApLCLlh4zmmagiPT09Ynx8IuaXqeS4iiI9 PT1ifHwi5LiK5Y2IIj09PWI/YToi5LiL5Y2IIj09PWJ8fCLmmZrkuIoiPT09 Yj9hKzEyOmE+PTExP2E6YSsxMn0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMp e3ZhciBkPTEwMCphK2I7cmV0dXJuIDYwMD5kPyLlh4zmmagiOjkwMD5kPyLm l6nkuIoiOjExMzA+ZD8i5LiK5Y2IIjoxMjMwPmQ/IuS4reWNiCI6MTgwMD5k PyLkuIvljYgiOiLmmZrkuIoifSxjYWxlbmRhcjp7c2FtZURheTpmdW5jdGlv bigpe3JldHVybiAwPT09dGhpcy5taW51dGVzKCk/Ilvku4rlpKldQWhb54K5 5pW0XSI6Ilvku4rlpKldTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJu IDA9PT10aGlzLm1pbnV0ZXMoKT8iW+aYjuWkqV1BaFvngrnmlbRdIjoiW+aY juWkqV1MVCJ9LGxhc3REYXk6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMu bWludXRlcygpPyJb5pio5aSpXUFoW+eCueaVtF0iOiJb5pio5aSpXUxUIn0s bmV4dFdlZWs6ZnVuY3Rpb24oKXt2YXIgYSxiO3JldHVybiBhPWtnKCkuc3Rh cnRPZigid2VlayIpLGI9dGhpcy5kaWZmKGEsImRheXMiKT49Nz8iW+S4i10i OiJb5pysXSIsMD09PXRoaXMubWludXRlcygpP2IrImRkZEFo54K55pW0Ijpi KyJkZGRBaOeCuW1tIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXt2YXIgYSxiO3Jl dHVybiBhPWtnKCkuc3RhcnRPZigid2VlayIpLGI9dGhpcy51bml4KCk8YS51 bml4KCk/IlvkuIpdIjoiW+acrF0iLDA9PT10aGlzLm1pbnV0ZXMoKT9iKyJk ZGRBaOeCueaVtCI6YisiZGRkQWjngrltbSJ9LHNhbWVFbHNlOiJMTCJ9LG9y ZGluYWxQYXJzZTovXGR7MSwyfSjml6V85pyIfOWRqCkvLG9yZGluYWw6ZnVu Y3Rpb24oYSxiKXtzd2l0Y2goYil7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiRERE IjpyZXR1cm4gYSsi5pelIjtjYXNlIk0iOnJldHVybiBhKyLmnIgiO2Nhc2Ui dyI6Y2FzZSJXIjpyZXR1cm4gYSsi5ZGoIjtkZWZhdWx0OnJldHVybiBhfX0s cmVsYXRpdmVUaW1lOntmdXR1cmU6IiVz5YaFIixwYXN0OiIlc+WJjSIsczoi 5Yeg56eSIixtOiIxIOWIhumSnyIsbW06IiVkIOWIhumSnyIsaDoiMSDlsI/m l7YiLGhoOiIlZCDlsI/ml7YiLGQ6IjEg5aSpIixkZDoiJWQg5aSpIixNOiIx IOS4quaciCIsTU06IiVkIOS4quaciCIseToiMSDlubQiLHl5OiIlZCDlubQi fSx3ZWVrOnsKKy8vIEdCL1QgNzQwOC0xOTk044CK5pWw5o2u5YWD5ZKM5Lqk 5o2i5qC85byPwrfkv6Hmga/kuqTmjaLCt+aXpeacn+WSjOaXtumXtOihqOek uuazleOAi+S4jklTTyA4NjAxOjE5ODjnrYnmlYgKK2RvdzoxLC8vIE1vbmRh eSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorZG95OjR9fSksa2cu ZGVmaW5lTG9jYWxlKCJ6aC1oayIse21vbnRoczoi5LiA5pyIX+S6jOaciF/k uInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3m nIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgiLnNwbGl0KCJfIiksbW9u dGhzU2hvcnQ6IjHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhf OOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIIi5zcGxpdCgiXyIpLHdlZWtk YXlzOiLmmJ/mnJ/ml6Vf5pif5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf 5pif5pyf5ZubX+aYn+acn+S6lF/mmJ/mnJ/lha0iLnNwbGl0KCJfIiksd2Vl a2RheXNTaG9ydDoi6YCx5pelX+mAseS4gF/pgLHkuoxf6YCx5LiJX+mAseWb m1/pgLHkupRf6YCx5YWtIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLml6Vf 5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0iLnNwbGl0KCJfIiksbG9uZ0RhdGVG b3JtYXQ6e0xUOiJBaOm7nm1t5YiGIixMVFM6IkFo6buebeWIhnPnp5IiLEw6 IllZWVnlubRNTU1E5pelIixMTDoiWVlZWeW5tE1NTUTml6UiLExMTDoiWVlZ WeW5tE1NTUTml6VBaOm7nm1t5YiGIixMTExMOiJZWVlZ5bm0TU1NROaXpWRk ZGRBaOm7nm1t5YiGIixsOiJZWVlZ5bm0TU1NROaXpSIsbGw6IllZWVnlubRN TU1E5pelIixsbGw6IllZWVnlubRNTU1E5pelQWjpu55tbeWIhiIsbGxsbDoi WVlZWeW5tE1NTUTml6VkZGRkQWjpu55tbeWIhiJ9LG1lcmlkaWVtUGFyc2U6 L+WHjOaZqHzml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxt ZXJpZGllbUhvdXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMTI9PT1hJiYoYT0w KSwi5YeM5pmoIj09PWJ8fCLml6nkuIoiPT09Ynx8IuS4iuWNiCI9PT1iP2E6 IuS4reWNiCI9PT1iP2E+PTExP2E6YSsxMjoi5LiL5Y2IIj09PWJ8fCLmmZrk uIoiPT09Yj9hKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMp e3ZhciBkPTEwMCphK2I7cmV0dXJuIDYwMD5kPyLlh4zmmagiOjkwMD5kPyLm l6nkuIoiOjExMzA+ZD8i5LiK5Y2IIjoxMjMwPmQ/IuS4reWNiCI6MTgwMD5k PyLkuIvljYgiOiLmmZrkuIoifSxjYWxlbmRhcjp7c2FtZURheToiW+S7iuWk qV1MVCIsbmV4dERheToiW+aYjuWkqV1MVCIsbmV4dFdlZWs6IlvkuItdZGRk ZExUIixsYXN0RGF5OiJb5pio5aSpXUxUIixsYXN0V2VlazoiW+S4il1kZGRk TFQiLHNhbWVFbHNlOiJMIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KOaXpXzm nIh86YCxKS8sb3JkaW5hbDpmdW5jdGlvbihhLGIpe3N3aXRjaChiKXtjYXNl ImQiOmNhc2UiRCI6Y2FzZSJEREQiOnJldHVybiBhKyLml6UiO2Nhc2UiTSI6 cmV0dXJuIGErIuaciCI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBhKyLpgLEi O2RlZmF1bHQ6cmV0dXJuIGF9fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXPl haciLHBhc3Q6IiVz5YmNIixzOiLlub7np5IiLG06IjEg5YiG6ZCYIixtbToi JWQg5YiG6ZCYIixoOiIxIOWwj+aZgiIsaGg6IiVkIOWwj+aZgiIsZDoiMSDl pKkiLGRkOiIlZCDlpKkiLE06IjEg5YCL5pyIIixNTToiJWQg5YCL5pyIIix5 OiIxIOW5tCIseXk6IiVkIOW5tCJ9fSksa2cuZGVmaW5lTG9jYWxlKCJ6aC10 dyIse21vbnRoczoi5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOac iF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOac iF/ljYHkuozmnIgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjHmnIhfMuac iF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx 5pyIXzEy5pyIIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLmmJ/mnJ/ml6Vf5pif 5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf5pif5pyf5ZubX+aYn+acn+S6 lF/mmJ/mnJ/lha0iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi6YCx5pel X+mAseS4gF/pgLHkuoxf6YCx5LiJX+mAseWbm1/pgLHkupRf6YCx5YWtIi5z cGxpdCgiXyIpLHdlZWtkYXlzTWluOiLml6Vf5LiAX+S6jF/kuIlf5ZubX+S6 lF/lha0iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBaOm7nm1t 5YiGIixMVFM6IkFo6buebeWIhnPnp5IiLEw6IllZWVnlubRNTU1E5pelIixM TDoiWVlZWeW5tE1NTUTml6UiLExMTDoiWVlZWeW5tE1NTUTml6VBaOm7nm1t 5YiGIixMTExMOiJZWVlZ5bm0TU1NROaXpWRkZGRBaOm7nm1t5YiGIixsOiJZ WVlZ5bm0TU1NROaXpSIsbGw6IllZWVnlubRNTU1E5pelIixsbGw6IllZWVnl ubRNTU1E5pelQWjpu55tbeWIhiIsbGxsbDoiWVlZWeW5tE1NTUTml6VkZGRk QWjpu55tbeWIhiJ9LG1lcmlkaWVtUGFyc2U6L+WHjOaZqHzml6nkuIp85LiK 5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxtZXJpZGllbUhvdXI6ZnVuY3Rp b24oYSxiKXtyZXR1cm4gMTI9PT1hJiYoYT0wKSwi5YeM5pmoIj09PWJ8fCLm l6nkuIoiPT09Ynx8IuS4iuWNiCI9PT1iP2E6IuS4reWNiCI9PT1iP2E+PTEx P2E6YSsxMjoi5LiL5Y2IIj09PWJ8fCLmmZrkuIoiPT09Yj9hKzEyOnZvaWQg MH0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTEwMCphK2I7cmV0 dXJuIDYwMD5kPyLlh4zmmagiOjkwMD5kPyLml6nkuIoiOjExMzA+ZD8i5LiK 5Y2IIjoxMjMwPmQ/IuS4reWNiCI6MTgwMD5kPyLkuIvljYgiOiLmmZrkuIoi fSxjYWxlbmRhcjp7c2FtZURheToiW+S7iuWkqV1MVCIsbmV4dERheToiW+aY juWkqV1MVCIsbmV4dFdlZWs6IlvkuItdZGRkZExUIixsYXN0RGF5OiJb5pio 5aSpXUxUIixsYXN0V2VlazoiW+S4il1kZGRkTFQiLHNhbWVFbHNlOiJMIn0s b3JkaW5hbFBhcnNlOi9cZHsxLDJ9KOaXpXzmnIh86YCxKS8sb3JkaW5hbDpm dW5jdGlvbihhLGIpe3N3aXRjaChiKXtjYXNlImQiOmNhc2UiRCI6Y2FzZSJE REQiOnJldHVybiBhKyLml6UiO2Nhc2UiTSI6cmV0dXJuIGErIuaciCI7Y2Fz ZSJ3IjpjYXNlIlciOnJldHVybiBhKyLpgLEiO2RlZmF1bHQ6cmV0dXJuIGF9 fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXPlhaciLHBhc3Q6IiVz5YmNIixz OiLlub7np5IiLG06IjEg5YiG6ZCYIixtbToiJWQg5YiG6ZCYIixoOiIxIOWw j+aZgiIsaGg6IiVkIOWwj+aZgiIsZDoiMSDlpKkiLGRkOiIlZCDlpKkiLE06 IjEg5YCL5pyIIixNTToiJWQg5YCL5pyIIix5OiIxIOW5tCIseXk6IiVkIOW5 tCJ9fSksa2cpO3JldHVybiB6aC5sb2NhbGUoImVuIiksemh9KTsKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi90ZW1wbGF0ZXMvYmFzZS5odG1sIGIvd2ViL3BnYWRtaW4vdGVtcGxhdGVz L2Jhc2UuaHRtbAppbmRleCBiYTY0NGY1Li5mYWNkMjQ4IDEwMDc1NQotLS0g YS93ZWIvcGdhZG1pbi90ZW1wbGF0ZXMvYmFzZS5odG1sCisrKyBiL3dlYi9w Z2FkbWluL3RlbXBsYXRlcy9iYXNlLmh0bWwKQEAgLTMwLDcgKzMwLDggQEAK ICAgICA8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0Igog ICAgICAgICAgIGhyZWY9Int7IHVybF9mb3IoJ3N0YXRpYycsIGZpbGVuYW1l PSdjc3MvZm9udC1hd2Vzb21lLmNzcycgaWYgY29uZmlnLkRFQlVHIGVsc2Ug J2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcycpIH19Ii8+CiAgICAgPGxpbmsg dHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ie3sgdXJs X2Zvcignc3RhdGljJywgZmlsZW5hbWU9J2Nzcy9mb250LW1maXp6LmNzcycp IH19Ii8+Ci0gICAgPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVz aGVldCIgaHJlZj0ie3sgdXJsX2Zvcignc3RhdGljJywgZmlsZW5hbWU9J2Nz cy9ib290c3RyYXAtZGF0ZXBpY2tlcjMuY3NzJyl9fSIvPgorICAgIDxsaW5r IHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Int7IHVy bF9mb3IoJ3N0YXRpYycsIGZpbGVuYW1lPSdjc3MvYm9vdHN0cmFwLWRhdGVw aWNrZXIzLmNzcycpIH19Ii8+CisgICAgPGxpbmsgdHlwZT0idGV4dC9jc3Mi IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ie3sgdXJsX2Zvcignc3RhdGljJywg ZmlsZW5hbWU9J2Nzcy9ib290c3RyYXAtZGF0ZXRpbWVwaWNrZXIubWluLmNz cycpfX0iLz4KICAgICA8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHls ZXNoZWV0IiBocmVmPSJ7eyB1cmxfZm9yKCdzdGF0aWMnLCBmaWxlbmFtZT0n Y3NzL2Jvb3RzdHJhcC1zd2l0Y2guY3NzJyl9fSIvPgogICAgIDxsaW5rIHR5 cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Int7IHVybF9m b3IoJ3N0YXRpYycsIGZpbGVuYW1lPSdjc3MvYmFja2dyaWQvYmFja2dyaWQu Y3NzJyl9fSIvPgogICAgIDxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0 eWxlc2hlZXQiCkBAIC0xMTcsOCArMTE4LDEyIEBACiAgICAgICAgICAgICAg ICAgICAgICAgICAiZGVwcyI6IFsnanF1ZXJ5JywgJ2Jvb3RzdHJhcCddLAog ICAgICAgICAgICAgICAgICAgICAgICAgImV4cG9ydHMiOiAnalF1ZXJ5LmZu LmRhdGVwaWNrZXInCiAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAg ICAgICAgICAgICAgICJib290c3RyYXAuZGF0ZXRpbWVwaWNrZXIiOiB7Cisg ICAgICAgICAgICAgICAgICAgICAgICAiZGVwcyI6IFsnanF1ZXJ5JywgJ2Jv b3RzdHJhcCcsICdtb21lbnQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICJleHBvcnRzIjogJ2pRdWVyeS5mbi5kYXRldGltZXBpY2tlcicKKyAgICAg ICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgInBnYWRt aW4uYmFja2dyaWQiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAiZGVw cyI6IFsiYmFja2dyaWQiLCAiYm9vdHN0cmFwLmRhdGVwaWNrZXIiLCAiYm9v dHN0cmFwLnN3aXRjaCJdLAorICAgICAgICAgICAgICAgICAgICAgICAgImRl cHMiOiBbImJhY2tncmlkIiwgImJvb3RzdHJhcC5kYXRldGltZXBpY2tlciIs ICJib290c3RyYXAuc3dpdGNoIl0sCiAgICAgICAgICAgICAgICAgICAgIH0s CiAgICAgICAgICAgICAgICAgICAgICJwZ2FkbWluLmJhY2tmb3JtIjogewog ICAgICAgICAgICAgICAgICAgICAgICAgImRlcHMiOiBbJ2JhY2tmb3JtJywg InBnYWRtaW4uYmFja2dyaWQiLCAic2VsZWN0MiJdLApAQCAtMTU2LDYgKzE2 MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIG1vZGVybml6cjogInt7IHVy bF9mb3IoJ3N0YXRpYycsIGZpbGVuYW1lPSdqcy9tb2Rlcm5penItMi42LjIt cmVzcG9uZC0xLjEuMC5taW4nKSB9fSIsCiAgICAgICAgICAgICAgICAgICAg IGpxdWVyeTogInt7IHVybF9mb3IoJ3N0YXRpYycsIGZpbGVuYW1lPSdqcy8n ICsgKCdqcXVlcnktMS4xMS4yJyBpZiBjb25maWcuREVCVUcgZWxzZSAnanF1 ZXJ5LTEuMTEuMi5taW4nKSkgfX0iLAogICAgICAgICAgICAgICAgICAgICBz ZWxlY3QyOiAie3sgdXJsX2Zvcignc3RhdGljJywgZmlsZW5hbWU9J2pzL3Nl bGVjdDIvJyArICgnc2VsZWN0Mi5mdWxsJyBpZiBjb25maWcuREVCVUcgZWxz ZSAnc2VsZWN0Mi5mdWxsLm1pbicpKSB9fSIsCisgICAgICAgICAgICAgICAg ICAgIG1vbWVudDogInt7IHVybF9mb3IoJ3N0YXRpYycsIGZpbGVuYW1lPSdq cy9tb21lbnQtd2l0aC1sb2NhbGVzJyArICgnJyBpZiBjb25maWcuREVCVUcg ZWxzZSAnLm1pbicpKSB9fSIsCiAgICAgICAgICAgICAgICAgICAgIHVuZGVy c2NvcmU6ICJ7eyB1cmxfZm9yKCdzdGF0aWMnLCBmaWxlbmFtZT0nanMvJyAr ICgndW5kZXJzY29yZScgaWYgY29uZmlnLkRFQlVHIGVsc2UgJ3VuZGVyc2Nv cmUtbWluJykpIH19IiwKICAgICAgICAgICAgICAgICAgICAgInVuZGVyc2Nv cmUuc3RyaW5nIjogInt7IHVybF9mb3IoJ3N0YXRpYycsIGZpbGVuYW1lPSdq cy8nICsgKCd1bmRlcnNjb3JlLnN0cmluZycgaWYgY29uZmlnLkRFQlVHIGVs c2UgJ3VuZGVyc2NvcmUuc3RyaW5nLm1pbicpKSB9fSIsCiAgICAgICAgICAg ICAgICAgICAgIGJvb3RzdHJhcDogInt7IHVybF9mb3IoJ3N0YXRpYycsIGZp bGVuYW1lPSdqcy8nICsgKCdib290c3RyYXAnIGlmIGNvbmZpZy5ERUJVRyBl bHNlICdib290c3RyYXAubWluJykpIH19IiwKQEAgLTE2Myw3ICsxNjksOCBA QAogICAgICAgICAgICAgICAgICAgICAncGdhZG1pbi5hbGVydGlmeWpzJzog Int7IHVybF9mb3IoJ3N0YXRpYycsIGZpbGVuYW1lPSdqcy9hbGVydGlmeWpz L3BnYWRtaW4uZGVmYXVsdHMnKSB9fSIsCiAgICAgICAgICAgICAgICAgICAg IGJhY2tib25lOiAie3sgdXJsX2Zvcignc3RhdGljJywgZmlsZW5hbWU9J2pz LycgKyAoJ2JhY2tib25lJyBpZiBjb25maWcuREVCVUcgZWxzZSAnYmFja2Jv bmUtbWluJykpIH19IiwKICAgICAgICAgICAgICAgICAgICAgImJhY2tib25l LnBhZ2luYXRvciI6ICJ7eyB1cmxfZm9yKCdzdGF0aWMnLCBmaWxlbmFtZT0n anMvJyArICgnYmFja2JvbmUucGFnaW5hdG9yJyBpZiBjb25maWcuREVCVUcg ZWxzZSAnYmFja2JvbmUucGFnaW5hdG9yLm1pbicpKSB9fSIsCi0gICAgICAg ICAgICAgICAgICAgICJib290c3RyYXAuZGF0ZXBpY2tlciI6ICJ7eyB1cmxf Zm9yKCdzdGF0aWMnLCBmaWxlbmFtZT0nanMvJyArICgnYm9vdHN0cmFwLWRh dGVwaWNrZXInIGlmIGNvbmZpZy5ERUJVRyBlbHNlICdib290c3RyYXAtZGF0 ZXBpY2tlci5taW4nKSkgfX0iLAorICAgICAgICAgICAgICAgICAgICAiYm9v dHN0cmFwLmRhdGVwaWNrZXIiOiAie3sgdXJsX2Zvcignc3RhdGljJywgZmls ZW5hbWU9J2pzL2Jvb3RzdHJhcC1kYXRlcGlja2VyJyArICgnJyBpZiBjb25m aWcuREVCVUcgZWxzZSAnLm1pbicpKSB9fSIsCisgICAgICAgICAgICAgICAg ICAgICJib290c3RyYXAuZGF0ZXRpbWVwaWNrZXIiOiAie3sgdXJsX2Zvcign c3RhdGljJywgZmlsZW5hbWU9J2pzL2Jvb3RzdHJhcC1kYXRldGltZXBpY2tl cicgKyAoJycgaWYgY29uZmlnLkRFQlVHIGVsc2UgJy5taW4nKSkgfX0iLAog ICAgICAgICAgICAgICAgICAgICAiYm9vdHN0cmFwLnN3aXRjaCI6ICJ7eyB1 cmxfZm9yKCdzdGF0aWMnLCBmaWxlbmFtZT0nanMvJyArICgnYm9vdHN0cmFw LXN3aXRjaCcgaWYgY29uZmlnLkRFQlVHIGVsc2UgJ2Jvb3RzdHJhcC1zd2l0 Y2gubWluJykpIH19IiwKICAgICAgICAgICAgICAgICAgICAgYmFja2Zvcm06 ICJ7eyB1cmxfZm9yKCdzdGF0aWMnLCBmaWxlbmFtZT0nanMvYmFja2Zvcm0n KSB9fSIsCiAgICAgICAgICAgICAgICAgICAgIGJhY2tncmlkOiAie3sgdXJs X2Zvcignc3RhdGljJywgZmlsZW5hbWU9J2pzL2JhY2tncmlkLycgKyAoJ2Jh Y2tncmlkJyBpZiBjb25maWcuREVCVUcgZWxzZSAnYmFja2dyaWQubWluJykp IH19IiwK --001a114100fc37b2be053d1664af Content-Type: application/octet-stream; name="pgagent_v2.patch" Content-Disposition: attachment; filename="pgagent_v2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ite7r66f1 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3BnQWdlbnQvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L19faW5pdF9f LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2M2E1 OTYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L19faW5pdF9fLnB5CkBAIC0w LDAgKzEsNTI3IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHly aWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50 IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUg UG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCisiIiJJbXBsZW1lbnRzIHRoZSBwZ0FnZW50IEpvYnMgTm9k ZSIiIgorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCitpbXBvcnQganNv bgorCitmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUsIG1ha2Vf cmVzcG9uc2UsIHJlcXVlc3QsIGpzb25pZnkKK2Zyb20gZmxhc2tfYmFiZWwg aW1wb3J0IGdldHRleHQgYXMgXworCitmcm9tIGNvbmZpZyBpbXBvcnQgUEdf REVGQVVMVF9EUklWRVIKKworZnJvbSBwZ2FkbWluLmJyb3dzZXIuY29sbGVj dGlvbiBpbXBvcnQgQ29sbGVjdGlvbk5vZGVNb2R1bGUKK2Zyb20gcGdhZG1p bi5icm93c2VyLnV0aWxzIGltcG9ydCBQR0NoaWxkTm9kZVZpZXcKK2Zyb20g cGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMgaW1wb3J0IHNlcnZlcnMK K2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pzb25fcmVz cG9uc2UsIGludGVybmFsX3NlcnZlcl9lcnJvciwgXAorICAgIG1ha2VfcmVz cG9uc2UgYXMgYWpheF9yZXNwb25zZSwgZ29uZSwgc3VjY2Vzc19yZXR1cm4K K2Zyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIK KworCitjbGFzcyBKb2JNb2R1bGUoQ29sbGVjdGlvbk5vZGVNb2R1bGUpOgor ICAgIE5PREVfVFlQRSA9ICdwZ2Ffam9iJworICAgIENPTExFQ1RJT05fTEFC RUwgPSBfKCJwZ0FnZW50IEpvYnMiKQorCisgICAgZGVmIGdldF9ub2Rlcyhz ZWxmLCBnaWQsIHNpZCk6CisgICAgICAgICIiIgorICAgICAgICBHZW5lcmF0 ZSB0aGUgY29sbGVjdGlvbiBub2RlCisgICAgICAgICIiIgorICAgICAgICBp ZiBzZWxmLnNob3dfbm9kZToKKyAgICAgICAgICAgIHlpZWxkIHNlbGYuZ2Vu ZXJhdGVfYnJvd3Nlcl9jb2xsZWN0aW9uX25vZGUoc2lkKQorCisgICAgQHBy b3BlcnR5CisgICAgZGVmIHNjcmlwdF9sb2FkKHNlbGYpOgorICAgICAgICAi IiIKKyAgICAgICAgTG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBmb3Igc2VydmVy LCB3aGVuIGFueSBvZiB0aGUgc2VydmVyLWdyb3VwIG5vZGUgaXMKKyAgICAg ICAgaW5pdGlhbGl6ZWQuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4g c2VydmVycy5TZXJ2ZXJNb2R1bGUuTk9ERV9UWVBFCisKKyAgICBkZWYgQmFj a2VuZFN1cHBvcnRlZChzZWxmLCBtYW5hZ2VyLCAqKmt3YXJncyk6CisgICAg ICAgIGlmIGhhc2F0dHIoc2VsZiwgJ3Nob3dfbm9kZScpOgorICAgICAgICAg ICAgaWYgbm90IHNlbGYuc2hvd19ub2RlOgorICAgICAgICAgICAgICAgIHJl dHVybiBGYWxzZQorCisgICAgICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rp b24oKQorCisgICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX3Nj YWxhcigiIiIKK1NFTEVDVAorICAgIGhhc190YWJsZV9wcml2aWxlZ2UoJ3Bn YWdlbnQucGdhX2pvYicsICdJTlNFUlQsIFNFTEVDVCwgVVBEQVRFJykgaGFz X3ByaXZpbGVkZ2UKK1dIRVJFIEVYSVNUUygKKyAgICBTRUxFQ1QgaGFzX3Nj aGVtYV9wcml2aWxlZ2UoJ3BnYWdlbnQnLCAnVVNBR0UnKQorICAgIFdIRVJF IEVYSVNUUygKKyAgICAgICAgU0VMRUNUIGNsLm9pZCBGUk9NIHBnX2NsYXNz IGNsCisgICAgICAgIExFRlQgSk9JTiBwZ19uYW1lc3BhY2UgbnMgT04gbnMu b2lkPXJlbG5hbWVzcGFjZQorICAgICAgICBXSEVSRSByZWxuYW1lPSdwZ2Ff am9iJyBBTkQgbnNwbmFtZT0ncGdhZ2VudCcKKyAgICApCispCisiIiIpCisg ICAgICAgIGlmIHN0YXR1cyBhbmQgcmVzOgorICAgICAgICAgICAgc3RhdHVz LCByZXMgPSBjb25uLmV4ZWN1dGVfZGljdCgiIiIKK1NFTEVDVCBFWElTVFMo CisgICAgICAgIFNFTEVDVCAxIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLmNv bHVtbnMKKyAgICAgICAgV0hFUkUKKyAgICAgICAgICAgIHRhYmxlX3NjaGVt YT0ncGdhZ2VudCcgQU5EIHRhYmxlX25hbWU9J3BnYV9qb2JzdGVwJyBBTkQK KyAgICAgICAgICAgIGNvbHVtbl9uYW1lPSdqc3Rjb25uc3RyJworICAgICkg aGFzX2Nvbm5zdHIiIiIpCisKKyAgICAgICAgICAgIG1hbmFnZXIuZGJfaW5m b1sncGdBZ2VudCddID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgICAgIHJl dHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgQHByb3Bl cnR5CisgICAgZGVmIGNzc3NuaXBwZXRzKHNlbGYpOgorICAgICAgICAiIiIK KyAgICAgICAgUmV0dXJucyBhIHNuaXBwZXQgb2YgY3NzIHRvIGluY2x1ZGUg aW4gdGhlIHBhZ2UKKyAgICAgICAgIiIiCisgICAgICAgIHNuaXBwZXRzID0g WworICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg ICAgICJicm93c2VyL2Nzcy9jb2xsZWN0aW9uLmNzcyIsCisgICAgICAgICAg ICAgICAgbm9kZV90eXBlPXNlbGYubm9kZV90eXBlLAorICAgICAgICAgICAg ICAgIF89XworICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHJlbmRlcl90 ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAicGdhX2pvYi9jc3MvcGdhX2pv Yi5jc3MiLAorICAgICAgICAgICAgICAgIG5vZGVfdHlwZT1zZWxmLm5vZGVf dHlwZSwKKyAgICAgICAgICAgICAgICBfPV8KKyAgICAgICAgICAgICkKKyAg ICAgICAgXQorCisgICAgICAgIGZvciBzdWJtb2R1bGUgaW4gc2VsZi5zdWJt b2R1bGVzOgorICAgICAgICAgICAgc25pcHBldHMuZXh0ZW5kKHN1Ym1vZHVs ZS5jc3NzbmlwcGV0cykKKworICAgICAgICByZXR1cm4gc25pcHBldHMKKwor CitibHVlcHJpbnQgPSBKb2JNb2R1bGUoX19uYW1lX18pCisKKworY2xhc3Mg Sm9iVmlldyhQR0NoaWxkTm9kZVZpZXcpOgorICAgIG5vZGVfdHlwZSA9IGJs dWVwcmludC5ub2RlX3R5cGUKKworICAgIHBhcmVudF9pZHMgPSBbCisgICAg ICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZ2lkJ30sCisgICAgICAgIHsn dHlwZSc6ICdpbnQnLCAnaWQnOiAnc2lkJ30KKyAgICBdCisgICAgaWRzID0g WworICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2ppZCd9CisgICAg XQorCisgICAgb3BlcmF0aW9ucyA9IGRpY3QoeworICAgICAgICAnb2JqJzog WworICAgICAgICAgICAgeydnZXQnOiAncHJvcGVydGllcycsICdkZWxldGUn OiAnZGVsZXRlJywgJ3B1dCc6ICd1cGRhdGUnfSwKKyAgICAgICAgICAgIHsn Z2V0JzogJ3Byb3BlcnRpZXMnLCAncG9zdCc6ICdjcmVhdGUnfQorICAgICAg ICBdLAorICAgICAgICAnbm9kZXMnOiBbeydnZXQnOiAnbm9kZXMnfSwgeydn ZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdzcWwnOiBbeydnZXQnOiAnc3Fs J31dLAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6ICdtc3FsJ30sIHsnZ2V0 JzogJ21zcWwnfV0sCisgICAgICAgICdydW5fbm93JzogW3sncG9zdCc6ICdy dW5fbm93J31dLAorICAgICAgICAnY2xhc3Nlcyc6IFt7fSwgeydnZXQnOiAn am9iX2NsYXNzZXMnfV0sCisgICAgICAgICdjaGlsZHJlbic6IFt7J2dldCc6 ICdjaGlsZHJlbid9XSwKKyAgICAgICAgJ3N0YXRzJzogW3snZ2V0JzogJ3N0 YXRpc3RpY3MnfV0sCisgICAgICAgICdtb2R1bGUuanMnOiBbe30sIHt9LCB7 J2dldCc6ICdtb2R1bGVfanMnfV0KKyAgICB9KQorCisgICAgZGVmIGNoZWNr X3ByZWNvbmRpdGlvbihmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMg ZnVuY3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2ls bCBjaGVja3MKKyAgICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUg cnVubmluZyB2aWV3LCBpdCB3aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAg bWFuYWdlcixjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNl bGYKKyAgICAgICAgIiIiCisKKyAgICAgICAgQHdyYXBzKGYpCisgICAgICAg IGRlZiB3cmFwKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisKKyAgICAgICAg ICAgIHNlbGYubWFuYWdlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklW RVIpLmNvbm5lY3Rpb25fbWFuYWdlcihrd2FyZ3NbJ3NpZCddKQorICAgICAg ICAgICAgc2VsZi5jb25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oKQor CisgICAgICAgICAgICAjIFNldCB0aGUgdGVtcGxhdGUgcGF0aCBmb3IgdGhl IHNxbCBzY3JpcHRzLgorICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRo ID0gJ3BnYV9qb2Ivc3FsL3ByZTMuNCcKKworICAgICAgICAgICAgaWYgbm90 ICgncGdBZ2VudCcgaW4gc2VsZi5tYW5hZ2VyLmRiX2luZm8pOgorICAgICAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGlj dCgiIiIKK1NFTEVDVCBFWElTVFMoCisgICAgICAgIFNFTEVDVCAxIEZST00g aW5mb3JtYXRpb25fc2NoZW1hLmNvbHVtbnMKKyAgICAgICAgV0hFUkUKKyAg ICAgICAgICAgIHRhYmxlX3NjaGVtYT0ncGdhZ2VudCcgQU5EIHRhYmxlX25h bWU9J3BnYV9qb2JzdGVwJyBBTkQKKyAgICAgICAgICAgIGNvbHVtbl9uYW1l PSdqc3Rjb25uc3RyJworICAgICkgaGFzX2Nvbm5zdHIiIiIpCisKKyAgICAg ICAgICAgICAgICBzZWxmLm1hbmFnZXIuZGJfaW5mb1sncGdBZ2VudCddID0g cmVzWydyb3dzJ11bMF0KKworICAgICAgICAgICAgcmV0dXJuIGYoc2VsZiwg KmFyZ3MsICoqa3dhcmdzKQorICAgICAgICByZXR1cm4gd3JhcAorCisgICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBub2RlcyhzZWxmLCBnaWQs IHNpZCwgamlkPU5vbmUpOgorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAnbm9kZXMuc3FsJ10pLAorICAgICAgICAgICAgamlkPWppZCwgY29ubj1z ZWxmLmNvbm4KKyAgICAgICAgKQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgIGlmIGppZCBpcyBub3Qg Tm9uZToKKyAgICAgICAgICAgIGlmIGxlbihyc2V0Wydyb3dzJ10pICE9IDE6 CisgICAgICAgICAgICAgICAgcmV0dXJuIGdvbmUoCisgICAgICAgICAgICAg ICAgICAgIGVycm9ybXNnPV8oCisgICAgICAgICAgICAgICAgICAgICAgICAi Q291bGQgbm90IGZpbmQgdGhlIHBnQWdlbnQgam9iIG9uIHRoZSBzZXJ2ZXIu IgorICAgICAgICAgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgZGF0 YT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAg ICAgICAgICAgICAgICAgIHJzZXRbJ3Jvd3MnXVswXVsnam9iaWQnXSwKKyAg ICAgICAgICAgICAgICAgICAgc2lkLAorICAgICAgICAgICAgICAgICAgICBy c2V0Wydyb3dzJ11bMF1bJ2pvYm5hbWUnXSwKKyAgICAgICAgICAgICAgICAg ICAgImljb24tcGdhX2pvYiIgaWYgcnNldFsncm93cyddWzBdWydqb2JlbmFi bGVkJ10gZWxzZQorICAgICAgICAgICAgICAgICAgICAiaWNvbi1wZ2Ffam9i LWRpc2FibGVkIgorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAg ICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgKQorCisgICAgICAgIHJlcyA9 IFtdCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAg ICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLmJsdWVw cmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAg ICAgIHJvd1snam9iaWQnXSwKKyAgICAgICAgICAgICAgICAgICAgc2lkLAor ICAgICAgICAgICAgICAgICAgICByb3dbJ2pvYm5hbWUnXSwKKyAgICAgICAg ICAgICAgICAgICAgImljb24tcGdhX2pvYiIgaWYgcm93Wydqb2JlbmFibGVk J10gZWxzZQorICAgICAgICAgICAgICAgICAgICAiaWNvbi1wZ2Ffam9iLWRp c2FibGVkIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKwor ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgZGF0YT1yZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAg ICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVy dGllcyhzZWxmLCBnaWQsIHNpZCwgamlkPU5vbmUpOgorICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAg ICAgICBqaWQ9amlkLCBjb25uPXNlbGYuY29ubgorICAgICAgICApCisgICAg ICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FM KQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAg ICAgICAgaWYgamlkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgbGVu KHJzZXRbJ3Jvd3MnXSkgIT0gMToKKyAgICAgICAgICAgICAgICByZXR1cm4g Z29uZSgKKyAgICAgICAgICAgICAgICAgICAgZXJyb3Jtc2c9XygKKyAgICAg ICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3QgZmluZCB0aGUgcGdBZ2Vu dCBqb2Igb24gdGhlIHNlcnZlci4iCisgICAgICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICByZXMgPSByc2V0Wydy b3dzJ11bMF0KKyAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3QoCisgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAnc3RlcHMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICBqaWQ9amlkLCBjb25uPXNlbGYuY29ubiwKKyAgICAgICAgICAgICAgICAg ICAgaGFzX2Nvbm5zdHI9c2VsZi5tYW5hZ2VyLmRiX2luZm9bJ3BnQWdlbnQn XVsnaGFzX2Nvbm5zdHInXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAg ICAgICkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y c2V0KQorICAgICAgICAgICAgcmVzWydqc3RlcHMnXSA9IHJzZXRbJ3Jvd3Mn XQorICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdCgKKyAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisg ICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdzY2hlZHVsZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBq aWQ9amlkLCBjb25uPXNlbGYuY29ubgorICAgICAgICAgICAgICAgICkKKyAg ICAgICAgICAgICkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yc2V0KQorICAgICAgICAgICAgcmVzWydqc2NoZWR1bGVzJ10gPSBy c2V0Wydyb3dzJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlcyA9 IHJzZXRbJ3Jvd3MnXQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNl KAorICAgICAgICAgICAgcmVzcG9uc2U9cmVzLAorICAgICAgICAgICAgc3Rh dHVzPTIwMAorICAgICAgICApCisKKyAgICBkZWYgbW9kdWxlX2pzKHNlbGYp OgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBwcm9wZXJ0eSBkZWZpbmVz IChpZiBqYXZhc2NyaXB0KSBleGlzdHMgZm9yIHRoaXMgbm9kZS4KKyAgICAg ICAgT3ZlcnJpZGUgdGhpcyBwcm9wZXJ0eSBmb3IgeW91ciBvd24gbG9naWMu CisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gbWFrZV9yZXNwb25zZSgK KyAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAg ICAicGdhX2pvYi9qcy9wZ2Ffam9iLmpzIiwKKyAgICAgICAgICAgICAgICBf PV8KKyAgICAgICAgICAgICksCisgICAgICAgICAgICAyMDAsIHsnQ29udGVu dC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCd9CisgICAgICAg ICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgY3JlYXRl KHNlbGYsIGdpZCwgc2lkKToKKyAgICAgICAgIiIiQ3JlYXRlIHRoZSBwZ0Fn ZW50IGpvYi4iIiIKKyAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsKKyAgICAg ICAgICAgIHUnam9ibmFtZScKKyAgICAgICAgXQorCisgICAgICAgIGRhdGEg PSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNvbi5sb2Fk cygKKyAgICAgICAgICAgIHJlcXVlc3QuZGF0YS5kZWNvZGUoJ3V0Zi04JykK KyAgICAgICAgKQorCisgICAgICAgIGZvciBhcmcgaW4gcmVxdWlyZWRfYXJn czoKKyAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKKyAgICAgICAg ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgICAgICAgICBzdGF0dXM9NDEwLAorICAgICAgICAgICAgICAgICAgICBz dWNjZXNzPTAsCisgICAgICAgICAgICAgICAgICAgIGVycm9ybXNnPV8oCisg ICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IGZpbmQgdGhlIHJl cXVpcmVkIHBhcmFtZXRlciAoJXMpLiIgJSBhcmcKKyAgICAgICAgICAgICAg ICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3ZvaWQoJ0JFR0lOJykKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKAorICAgICAgICAg ICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAg ICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4sIGZldGNoX2lk PVRydWUsCisgICAgICAgICAgICAgICAgaGFzX2Nvbm5zdHI9c2VsZi5tYW5h Z2VyLmRiX2luZm9bJ3BnQWdlbnQnXVsnaGFzX2Nvbm5zdHInXQorICAgICAg ICAgICAgKQorICAgICAgICApCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgIHNlbGYuY29ubi5leGVjdXRlX3ZvaWQoJ0VORCcpCisg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKKworICAgICAgICAjIFdlIG5lZWQgb2lkIG9mIG5ld2x5IGNy ZWF0ZWQgZGF0YWJhc2UKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRl KAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdub2Rlcy5zcWwnXSksCisgICAgICAgICAgICAgICAgamlkPXJlcywg Y29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisg ICAgICAgIHNlbGYuY29ubi5leGVjdXRlX3ZvaWQoJ0VORCcpCisgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICByb3cgPSBy ZXNbJ3Jvd3MnXVswXQorCisgICAgICAgIHJldHVybiBqc29uaWZ5KAorICAg ICAgICAgICAgbm9kZT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2Vy X25vZGUoCisgICAgICAgICAgICAgICAgcm93Wydqb2JpZCddLAorICAgICAg ICAgICAgICAgIHNpZCwKKyAgICAgICAgICAgICAgICByb3dbJ2pvYm5hbWUn XSwKKyAgICAgICAgICAgICAgICBpY29uPSJpY29uLXBnYV9qb2IiCisgICAg ICAgICAgICApCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBkZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBqaWQpOgorICAg ICAgICAiIiJVcGRhdGUgdGhlIHBnQWdlbnQgSm9iLiIiIgorCisgICAgICAg IGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNv bi5sb2FkcygKKyAgICAgICAgICAgIHJlcXVlc3QuZGF0YS5kZWNvZGUoJ3V0 Zi04JykKKyAgICAgICAgKQorCisgICAgICAgIHN0YXR1cywgcmVzID0gc2Vs Zi5jb25uLmV4ZWN1dGVfdm9pZCgKKyAgICAgICAgICAgIHJlbmRlcl90ZW1w bGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICBkYXRh PWRhdGEsIGNvbm49c2VsZi5jb25uLCBqaWQ9amlkLAorICAgICAgICAgICAg ICAgIGhhc19jb25uc3RyPXNlbGYubWFuYWdlci5kYl9pbmZvWydwZ0FnZW50 J11bJ2hhc19jb25uc3RyJ10KKyAgICAgICAgICAgICkKKyAgICAgICAgKQor CisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAg ICAjIFdlIG5lZWQgb2lkIG9mIG5ld2x5IGNyZWF0ZWQgZGF0YWJhc2UKKyAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KAor ICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAg ICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdub2Rlcy5zcWwnXSks CisgICAgICAgICAgICAgICAgamlkPXJlcywgY29ubj1zZWxmLmNvbm4KKyAg ICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKKworICAgICAgICByb3cgPSByZXNbJ3Jvd3MnXVsw XQorCisgICAgICAgIHJldHVybiBqc29uaWZ5KAorICAgICAgICAgICAgbm9k ZT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAg ICAgICAgICAgICAgamlkLAorICAgICAgICAgICAgICAgIHNpZCwKKyAgICAg ICAgICAgICAgICByb3dbJ2pvYm5hbWUnXSwKKyAgICAgICAgICAgICAgICBp Y29uPSJpY29uLXBnYV9qb2IiIGlmIHJvd1snam9iZW5hYmxlZCddIGVsc2UK KyAgICAgICAgICAgICAgICAgICAgImljb24tcGdhX2pvYi1kaXNhYmxlZCIK KyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNv bmRpdGlvbgorICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGppZCk6 CisgICAgICAgICIiIkRlbGV0ZSB0aGUgcGdBZ2VudCBKb2IuIiIiCisKKyAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV92b2lkKAor ICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAg ICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdkZWxldGUuc3FsJ10p LAorICAgICAgICAgICAgICAgIGppZD1qaWQsIGNvbm49c2VsZi5jb25uCisg ICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVz cG9uc2Uoc3VjY2Vzcz0xKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwgc2lkLCBqaWQ9Tm9uZSk6CisgICAg ICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHRvIHJldHVybiBtb2Rp ZmllZCBTUUwuCisgICAgICAgICIiIgorICAgICAgICBkYXRhID0ge30KKyAg ICAgICAgZm9yIGssIHYgaW4gcmVxdWVzdC5hcmdzLml0ZW1zKCk6CisgICAg ICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IGpzb24u bG9hZHMoCisgICAgICAgICAgICAgICAgICAgIHYuZGVjb2RlKCd1dGYtOCcp IGlmIGhhc2F0dHIodiwgJ2RlY29kZScpIGVsc2UgdgorICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAg ICAgICAgICAgIGRhdGFba10gPSB2CisKKyAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgIGRhdGE9cmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFsKKyAgICAgICAgICAg ICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAnY3JlYXRlLnNxbCcgaWYgamlkIGlzIE5vbmUgZWxzZSAndXBkYXRl LnNxbCcKKyAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICBq aWQ9amlkLCBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uLCBmZXRjaF9pZD1G YWxzZSwKKyAgICAgICAgICAgICAgICBoYXNfY29ubnN0cj1zZWxmLm1hbmFn ZXIuZGJfaW5mb1sncGdBZ2VudCddWydoYXNfY29ubnN0ciddCisgICAgICAg ICAgICApLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisK KyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHN0YXRpc3RpY3Mo c2VsZiwgZ2lkLCBzaWQsIGppZCk6CisgICAgICAgICIiIgorICAgICAgICBz dGF0aXN0aWNzCisgICAgICAgIFJldHVybnMgdGhlIHN0YXRpc3RpY3MgZm9y IGEgcGFydGljdWxhciBkYXRhYmFzZSBpZiBqaWQgaXMgc3BlY2lmaWVkLAor ICAgICAgICBvdGhlcndpc2UgaXQgd2lsbCByZXR1cm4gc3RhdGlzdGljcyBm b3IgYWxsIHRoZSBkYXRhYmFzZXMgaW4gdGhhdAorICAgICAgICBzZXJ2ZXIu CisgICAgICAgICIiIgorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3QoCisgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUo CisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ3N0YXRzLnNxbCddKSwKKyAgICAgICAgICAgICAgICBjb25uPXNlbGYu Y29ubiwgamlkPWppZAorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICBkYXRhPXJl cywKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBzcWwoc2VsZiwgZ2lkLCBz aWQsIGppZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9u IHdpbGwgZ2VuZXJhdGUgc3FsIGZvciBzcWwgcGFuZWwKKyAgICAgICAgIiIi CisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAg ICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNx bCddKSwKKyAgICAgICAgICAgIGppZD1qaWQsIGNvbm49c2VsZi5jb25uLCBs YXN0X3N5c3RlbV9vaWQ9MAorICAgICAgICApCisgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICByb3cgPSByZXNb J3Jvd3MnXVswXQorCisgICAgICAgIHN0YXR1cywgcmVzPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAor ICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs ICdzdGVwcy5zcWwnXSksCisgICAgICAgICAgICAgICAgamlkPWppZCwgY29u bj1zZWxmLmNvbm4sCisgICAgICAgICAgICAgICAgaGFzX2Nvbm5zdHI9c2Vs Zi5tYW5hZ2VyLmRiX2luZm9bJ3BnQWdlbnQnXVsnaGFzX2Nvbm5zdHInXQor ICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKKworICAgICAgICByb3dbJ2pzdGVwcyddID0gcmVz Wydyb3dzJ10KKworICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5l eGVjdXRlX2RpY3QoCisgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisg ICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J3NjaGVkdWxlcy5zcWwnXSksCisgICAgICAgICAgICAgICAgamlkPWppZCwg Y29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgcm93 Wydqc2NoZWR1bGVzJ10gPSByZXNbJ3Jvd3MnXQorICAgICAgICBmb3Igc2No ZWR1bGUgaW4gcm93Wydqc2NoZWR1bGVzJ106CisgICAgICAgICAgICBzY2hl ZHVsZVsnanNjZXhjZXB0aW9ucyddID0gW10KKyAgICAgICAgICAgIGlmIHNj aGVkdWxlWydqZXhpZCddOgorICAgICAgICAgICAgICAgIGlkeCA9IDAKKyAg ICAgICAgICAgICAgICBmb3IgZXhjIGluIHNjaGVkdWxlWydqZXhpZCddOgor ICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZVsnanNjZXhjZXB0aW9ucydd LmFwcGVuZCh7CisgICAgICAgICAgICAgICAgICAgICAgICAnamV4aWQnOiBl eGMsCisgICAgICAgICAgICAgICAgICAgICAgICAnamV4ZGF0ZSc6IHNjaGVk dWxlWydqZXhkYXRlJ11baWR4XSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICdqZXh0aW1lJzogc2NoZWR1bGVbJ2pleHRpbWUnXVtpZHhdCisgICAgICAg ICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAgIGlkeCs9MQor ICAgICAgICAgICAgZGVsIHNjaGVkdWxlWydqZXhpZCddCisgICAgICAgICAg ICBkZWwgc2NoZWR1bGVbJ2pleGRhdGUnXQorICAgICAgICAgICAgZGVsIHNj aGVkdWxlWydqZXh0aW1lJ10KKworICAgICAgICByZXR1cm4gYWpheF9yZXNw b25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPXJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICBqaWQ9amlkLCBk YXRhPXJvdywgY29ubj1zZWxmLmNvbm4sIGZldGNoX2lkPUZhbHNlLAorICAg ICAgICAgICAgICAgIGhhc19jb25uc3RyPXNlbGYubWFuYWdlci5kYl9pbmZv WydwZ0FnZW50J11bJ2hhc19jb25uc3RyJ10KKyAgICAgICAgICAgICkKKyAg ICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBy dW5fbm93KHNlbGYsIGdpZCwgc2lkLCBqaWQpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgbmV4dCBydW4gdG8g bm93LCB0byBpbmZvcm0gdGhlIHBnQWdlbnQgdG8KKyAgICAgICAgcnVuIHRo ZSBqb2Igbm93LgorICAgICAgICAiIiIKKyAgICAgICAgc3RhdHVzLCByZXMg PSBzZWxmLmNvbm4uZXhlY3V0ZV92b2lkKAorICAgICAgICAgICAgcmVuZGVy X3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsICdydW5fbm93LnNxbCddKSwKKyAgICAgICAgICAgICAg ICBqaWQ9amlkLCBjb25uPXNlbGYuY29ubgorICAgICAgICAgICAgKQorICAg ICAgICApCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICByZXR1cm4gc3VjY2Vzc19yZXR1cm4oCisgICAgICAgICAgICBt ZXNzYWdlPV8oIlVwZGF0ZWQgdGhlIG5leHQtcnVudGltZSB0byBub3chIikK KyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRl ZiBqb2JfY2xhc3NlcyhzZWxmLCBnaWQsIHNpZCk6CisgICAgICAgICIiIgor ICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSBzZXQgb2Yg am9iIGNsYXNzZXMuCisgICAgICAgICIiIgorICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoCisgICAgICAgICAgICByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2pv Yl9jbGFzc2VzLnNxbCddKSkKKyAgICAgICAgKQorCisgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICByZXR1cm4gbWFrZV9q c29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXNbJ3Jvd3MnXSwK KyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCitKb2JWaWV3 LnJlZ2lzdGVyX25vZGVfdmlldyhibHVlcHJpbnQpCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0Fn ZW50L3NjaGVkdWxlcy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc2NoZWR1bGVzL19f aW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjI0ZWExYmEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3NjaGVkdWxlcy9f X2luaXRfXy5weQpAQCAtMCwwICsxLDQ0MSBAQAorIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBU b29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdB ZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVs ZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIiSW1wbGVtZW50cyBwZ0Fn ZW50IEpvYiBTY2hlZHVsZSBOb2RlIiIiCisKK2ltcG9ydCBqc29uCitmcm9t IGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKKworZnJvbSBmbGFzayBpbXBvcnQg cmVuZGVyX3RlbXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCByZXF1ZXN0Citmcm9t IGZsYXNrX2JhYmVsIGltcG9ydCBnZXR0ZXh0Citmcm9tIHBnYWRtaW4uYnJv d3Nlci5jb2xsZWN0aW9uIGltcG9ydCBDb2xsZWN0aW9uTm9kZU1vZHVsZQor ZnJvbSBwZ2FkbWluLmJyb3dzZXIudXRpbHMgaW1wb3J0IFBHQ2hpbGROb2Rl VmlldworZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNv bl9yZXNwb25zZSwgZ29uZSwgXAorICAgIG1ha2VfcmVzcG9uc2UgYXMgYWph eF9yZXNwb25zZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yCitmcm9tIHBnYWRt aW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCisKK2Zyb20gY29u ZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgorCisKK2NsYXNzIEpvYlNj aGVkdWxlTW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxlKToKKyAgICAiIiIK KyAgICBjbGFzcyBKb2JTY2hlZHVsZU1vZHVsZShDb2xsZWN0aW9uTm9kZU1v ZHVsZSkKKworICAgICAgICBBIG1vZHVsZSBjbGFzcyBmb3IgSm9iU2NoZWR1 bGUgbm9kZSBkZXJpdmVkIGZyb20gQ29sbGVjdGlvbk5vZGVNb2R1bGUuCisK KyAgICBNZXRob2RzOgorICAgIC0tLS0tLS0KKyAgICAqIGdldF9ub2Rlcyhn aWQsIHNpZCwgamlkKQorICAgICAgLSBNZXRob2QgaXMgdXNlZCB0byBnZW5l cmF0ZSB0aGUgYnJvd3NlciBjb2xsZWN0aW9uIG5vZGUuCisKKyAgICAqIG5v ZGVfaW5vZGUoKQorICAgICAgLSBNZXRob2QgaXMgb3ZlcnJpZGRlbiBmcm9t IGl0cyBiYXNlIGNsYXNzIHRvIG1ha2UgdGhlIG5vZGUgYXMgbGVhZiBub2Rl LgorICAgICIiIgorCisgICAgTk9ERV9UWVBFID0gJ3BnYV9zY2hlZHVsZScK KyAgICBDT0xMRUNUSU9OX0xBQkVMID0gZ2V0dGV4dCgiU2NoZWR1bGVzIikK KworICAgIGRlZiBnZXRfbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGppZCk6Cisg ICAgICAgICIiIgorICAgICAgICBNZXRob2QgaXMgdXNlZCB0byBnZW5lcmF0 ZSB0aGUgYnJvd3NlciBjb2xsZWN0aW9uIG5vZGUKKworICAgICAgICBBcmdz OgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAg ICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgICBqaWQ6IERhdGFiYXNl IElkCisgICAgICAgICIiIgorICAgICAgICB5aWVsZCBzZWxmLmdlbmVyYXRl X2Jyb3dzZXJfY29sbGVjdGlvbl9ub2RlKGppZCkKKworICAgIEBwcm9wZXJ0 eQorICAgIGRlZiBub2RlX2lub2RlKHNlbGYpOgorICAgICAgICAiIiIKKyAg ICAgICAgT3ZlcnJpZGUgdGhpcyBwcm9wZXJ0eSB0byBtYWtlIHRoZSBub2Rl IGEgbGVhZiBub2RlLgorCisgICAgICAgIFJldHVybnM6IEZhbHNlIGFzIHRo aXMgaXMgdGhlIGxlYWYgbm9kZQorICAgICAgICAiIiIKKyAgICAgICAgcmV0 dXJuIEZhbHNlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2NyaXB0X2xv YWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBMb2FkIHRoZSBtb2R1 bGUgc2NyaXB0IGZvciBsYW5ndWFnZSwgd2hlbiBhbnkgb2YgdGhlIGRhdGFi YXNlIG5vZGVzIGFyZSBpbml0aWFsaXplZC4KKworICAgICAgICBSZXR1cm5z OiBub2RlIHR5cGUgb2YgdGhlIHNlcnZlciBtb2R1bGUuCisgICAgICAgICIi IgorICAgICAgICByZXR1cm4gJ3BnYV9qb2InCisKKworYmx1ZXByaW50ID0g Sm9iU2NoZWR1bGVNb2R1bGUoX19uYW1lX18pCisKKworY2xhc3MgSm9iU2No ZWR1bGVWaWV3KFBHQ2hpbGROb2RlVmlldyk6CisgICAgIiIiCisgICAgY2xh c3MgSm9iU2NoZWR1bGVWaWV3KFBHQ2hpbGROb2RlVmlldykKKworICAgICAg ICBBIHZpZXcgY2xhc3MgZm9yIEpvYlNjaGVkdWxlIG5vZGUgZGVyaXZlZCBm cm9tIFBHQ2hpbGROb2RlVmlldy4gVGhpcyBjbGFzcyBpcworICAgICAgICBy ZXNwb25zaWJsZSBmb3IgYWxsIHRoZSBzdHVmZiByZWxhdGVkIHRvIHZpZXcg bGlrZSB1cGRhdGluZyBsYW5ndWFnZQorICAgICAgICBub2RlLCBzaG93aW5n IHByb3BlcnRpZXMsIHNob3dpbmcgc3FsIGluIHNxbCBwYW5lLgorCisgICAg TWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBfX2luaXRfXygqKmt3YXJn cykKKyAgICAgIC0gTWV0aG9kIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUg Sm9iU2NoZWR1bGVWaWV3IGFuZCBpdCdzIGJhc2Ugdmlldy4KKworICAgICog bW9kdWxlX2pzKCkKKyAgICAgIC0gVGhpcyBwcm9wZXJ0eSBkZWZpbmVzIChp ZiBqYXZhc2NyaXB0KSBleGlzdHMgZm9yIHRoaXMgbm9kZS4KKyAgICAgICAg T3ZlcnJpZGUgdGhpcyBwcm9wZXJ0eSBmb3IgeW91ciBvd24gbG9naWMKKwor ICAgICogY2hlY2tfcHJlY29uZGl0aW9uKCkKKyAgICAgIC0gVGhpcyBmdW5j dGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3aWxsIGNo ZWNrcworICAgICAgICBkYXRhYmFzZSBjb25uZWN0aW9uIGJlZm9yZSBydW5u aW5nIHZpZXcsIGl0IHdpbGwgYWxzbyBhdHRhY2hlcworICAgICAgICBtYW5h Z2VyLGNvbm4gJiB0ZW1wbGF0ZV9wYXRoIHByb3BlcnRpZXMgdG8gc2VsZgor CisgICAgKiBsaXN0KCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiBpcyB1c2Vk IHRvIGxpc3QgYWxsIHRoZSBsYW5ndWFnZSBub2RlcyB3aXRoaW4gdGhhdCBj b2xsZWN0aW9uLgorCisgICAgKiBub2RlcygpCisgICAgICAtIFRoaXMgZnVu Y3Rpb24gd2lsbCB1c2VkIHRvIGNyZWF0ZSBhbGwgdGhlIGNoaWxkIG5vZGUg d2l0aGluIHRoYXQgY29sbGVjdGlvbi4KKyAgICAgICAgSGVyZSBpdCB3aWxs IGNyZWF0ZSBhbGwgdGhlIGxhbmd1YWdlIG5vZGUuCisKKyAgICAqIHByb3Bl cnRpZXMoZ2lkLCBzaWQsIGppZCwganNjaWQpCisgICAgICAtIFRoaXMgZnVu Y3Rpb24gd2lsbCBzaG93IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBzZWxlY3Rl ZCBsYW5ndWFnZSBub2RlCisKKyAgICAqIHVwZGF0ZShnaWQsIHNpZCwgamlk LCBqc2NpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSB0 aGUgZGF0YSBmb3IgdGhlIHNlbGVjdGVkIGxhbmd1YWdlIG5vZGUKKworICAg ICogbXNxbChnaWQsIHNpZCwgamlkLCBqc2NpZCkKKyAgICAgIC0gVGhpcyBm dW5jdGlvbiBpcyB1c2VkIHRvIHJldHVybiBtb2RpZmllZCBTUUwgZm9yIHRo ZSBzZWxlY3RlZCBsYW5ndWFnZSBub2RlCisgICAgIiIiCisKKyAgICBub2Rl X3R5cGUgPSBibHVlcHJpbnQubm9kZV90eXBlCisKKyAgICBwYXJlbnRfaWRz ID0gWworICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2dpZCd9LAor ICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NpZCd9LAorICAgICAg ICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2ppZCd9CisgICAgXQorICAgIGlk cyA9IFsKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdqc2NpZCd9 CisgICAgXQorCisgICAgb3BlcmF0aW9ucyA9IGRpY3QoeworICAgICAgICAn b2JqJzogWworICAgICAgICAgICAgeydnZXQnOiAncHJvcGVydGllcycsICdw dXQnOiAndXBkYXRlJ30sCisgICAgICAgICAgICB7J2dldCc6ICdsaXN0Jywg J3Bvc3QnOiAnY3JlYXRlJ30KKyAgICAgICAgXSwKKyAgICAgICAgJ25vZGVz JzogW3snZ2V0JzogJ25vZGVzJ30sIHsnZ2V0JzogJ25vZGVzJ31dLAorICAg ICAgICAnbXNxbCc6IFt7J2dldCc6ICdtc3FsJ30sIHsnZ2V0JzogJ21zcWwn fV0sCisgICAgICAgICdtb2R1bGUuanMnOiBbe30sIHt9LCB7J2dldCc6ICdt b2R1bGVfanMnfV0KKyAgICB9KQorCisgICAgZGVmIF9pbml0XyhzZWxmLCAq Kmt3YXJncyk6CisgICAgICAgICIiIgorICAgICAgICBNZXRob2QgaXMgdXNl ZCB0byBpbml0aWFsaXplIHRoZSBKb2JTY2hlZHVsZVZpZXcgYW5kIGl0cyBi YXNlIHZpZXcuCisgICAgICAgIEluaXRpYWxpemUgYWxsIHRoZSB2YXJpYWJs ZXMgY3JlYXRlL3VzZWQgZHluYW1pY2FsbHkgbGlrZSBjb25uLCB0ZW1wbGF0 ZV9wYXRoLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICAqKmt3YXJn czoKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuY29ubiA9IE5vbmUKKyAg ICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gTm9uZQorICAgICAgICBzZWxm Lm1hbmFnZXIgPSBOb25lCisKKyAgICAgICAgc3VwZXIoSm9iU2NoZWR1bGVW aWV3LCBzZWxmKS5fX2luaXRfXygqKmt3YXJncykKKworICAgIGRlZiBtb2R1 bGVfanMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIHByb3Bl cnR5IGRlZmluZXMgd2hldGhlciBqYXZhc2NyaXB0IGV4aXN0cyBmb3IgdGhp cyBub2RlLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIG1ha2VfcmVz cG9uc2UoCisgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAg ICAgICAgICAgInBnYV9zY2hlZHVsZS9qcy9wZ2Ffc2NoZWR1bGUuanMiLAor ICAgICAgICAgICAgICAgIF89Z2V0dGV4dAorICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgIDIwMCwgeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24v eC1qYXZhc2NyaXB0J30KKyAgICAgICAgKQorCisgICAgZGVmIGNoZWNrX3By ZWNvbmRpdGlvbihmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBj aGVjayB0aGUKKyAgICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUg cnVubmluZyB0aGUgdmlldy4gSXQgYWxzbyBhdHRhY2hlcworICAgICAgICBt YW5hZ2VyLCBjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNl bGYKKyAgICAgICAgIiIiCisKKyAgICAgICAgQHdyYXBzKGYpCisgICAgICAg IGRlZiB3cmFwKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAjIEhl cmUgYXJnc1swXSB3aWxsIGhvbGQgc2VsZiAmIGt3YXJncyB3aWxsIGhvbGQg Z2lkLHNpZCxqaWQKKyAgICAgICAgICAgIHNlbGYgPSBhcmdzWzBdCisgICAg ICAgICAgICBzZWxmLmRyaXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9E UklWRVIpCisgICAgICAgICAgICBzZWxmLm1hbmFnZXIgPSBzZWxmLmRyaXZl ci5jb25uZWN0aW9uX21hbmFnZXIoa3dhcmdzWydzaWQnXSkKKyAgICAgICAg ICAgIHNlbGYuY29ubiA9IHNlbGYubWFuYWdlci5jb25uZWN0aW9uKCkKKwor ICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ3BnYV9zY2hlZHVs ZS9zcWwvcHJlMy40JworCisgICAgICAgICAgICByZXR1cm4gZigqYXJncywg Kiprd2FyZ3MpCisKKyAgICAgICAgcmV0dXJuIHdyYXAKKworICAgIEBjaGVj a19wcmVjb25kaXRpb24KKyAgICBkZWYgbGlzdChzZWxmLCBnaWQsIHNpZCwg amlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMg dXNlZCB0byBsaXN0IGFsbCB0aGUgbGFuZ3VhZ2Ugbm9kZXMgd2l0aGluIHRo YXQgY29sbGVjdGlvbi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAg Z2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVy IElECisgICAgICAgICAgICBqaWQ6IEpvYiBJRAorICAgICAgICAiIiIKKyAg ICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10p LAorICAgICAgICAgICAgamlkPWppZAorICAgICAgICApCisgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJl dHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVzcG9uc2U9cmVz Wydyb3dzJ10sCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkK KworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbm9kZXMoc2Vs ZiwgZ2lkLCBzaWQsIGppZCwganNjaWQ9Tm9uZSk6CisgICAgICAgICIiIgor ICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY3JlYXRlIGFsbCB0 aGUgY2hpbGQgbm9kZXMgd2l0aGluIHRoZSBjb2xsZWN0aW9uLgorICAgICAg ICBIZXJlIGl0IHdpbGwgY3JlYXRlIGFsbCB0aGUgbGFuZ3VhZ2Ugbm9kZXMu CisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdy b3VwIElECisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAg ICAgamlkOiBKb2IgSUQKKyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IFtd CisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAg ICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdub2Rlcy5zcWwnXSks CisgICAgICAgICAgICBqc2NpZCA9IGpzY2lkLAorICAgICAgICAgICAgamlk ID0gamlkCisgICAgICAgICkKKworICAgICAgICBzdGF0dXMsIHJlc3VsdCA9 IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoc3FsKQorCisgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlc3VsdCkKKworICAgICAgICBpZiBqc2Np ZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIGxlbihyZXN1bHRbJ3Jv d3MnXSkgPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ29uZShlcnJv cm1zZz0iQ291bGRuJ3QgZmluZCB0aGUgc3BlY2lmaWVkIGpvYiBzdGVwLiIp CisKKyAgICAgICAgICAgIHJvdyA9IHJlc3VsdFsncm93cyddWzBdCisgICAg ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgICAgIHNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgK KyAgICAgICAgICAgICAgICAgICAgcm93Wydqc2NpZCddLAorICAgICAgICAg ICAgICAgICAgICByb3dbJ2pzY2pvYmlkJ10sCisgICAgICAgICAgICAgICAg ICAgIHJvd1snanNjbmFtZSddLAorICAgICAgICAgICAgICAgICAgICBpY29u PSJpY29uLXBnYV9zY2hlZHVsZSIsCisgICAgICAgICAgICAgICAgICAgIGVu YWJsZWQ9cm93Wydqc2NlbmFibGVkJ10KKyAgICAgICAgICAgICAgICApCisg ICAgICAgICAgICApCisKKyAgICAgICAgZm9yIHJvdyBpbiByZXN1bHRbJ3Jv d3MnXToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAgICAgICAgICAg ICAgc2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAg ICAgICAgICAgICAgICAgICByb3dbJ2pzY2lkJ10sCisgICAgICAgICAgICAg ICAgICAgIHJvd1snanNjam9iaWQnXSwKKyAgICAgICAgICAgICAgICAgICAg cm93Wydqc2NuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgIGljb249Imlj b24tcGdhX3NjaGVkdWxlIiwKKyAgICAgICAgICAgICAgICAgICAgZW5hYmxl ZD1yb3dbJ2pzY2VuYWJsZWQnXQorICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICkKKworICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNl KAorICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICBzdGF0dXM9 MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBkZWYgcHJvcGVydGllcyhzZWxmLCBnaWQsIHNpZCwgamlkLCBqc2NpZCk6 CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2hv dyB0aGUgcHJvcGVydGllcyBvZiB0aGUgc2VsZWN0ZWQgbGFuZ3VhZ2Ugbm9k ZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIg R3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAg ICAgICBqaWQ6IEpvYiBJRAorICAgICAgICAgICAganNjaWQ6IEpvYlNjaGVk dWxlIElECisgICAgICAgICIiIgorICAgICAgICBzcWwgPSByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICBqc2NpZD1q c2NpZCwgamlkPWppZAorICAgICAgICApCisgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGlmIGxlbihyZXNb J3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgICAgIHJldHVybiBnb25lKGVycm9y bXNnPSJDb3VsZG4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgam9iIHN0ZXAuIikK KworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAg IHJlc3BvbnNlPXJlc1sncm93cyddWzBdLAorICAgICAgICAgICAgc3RhdHVz PTIwMAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisg ICAgZGVmIGNyZWF0ZShzZWxmLCBnaWQsIHNpZCwgamlkKToKKyAgICAgICAg IiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgdGhlIGRh dGEgZm9yIHRoZSBzZWxlY3RlZCBsYW5ndWFnZSBub2RlLgorCisgICAgICAg IEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAg ICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGppZDogSm9i IElECisgICAgICAgICIiIgorICAgICAgICBkYXRhID0ge30KKyAgICAgICAg Zm9yIGssIHYgaW4gcmVxdWVzdC5hcmdzLml0ZW1zKCk6CisgICAgICAgICAg ICB0cnk6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IGpzb24ubG9hZHMo CisgICAgICAgICAgICAgICAgICAgIHYuZGVjb2RlKCd1dGYtOCcpIGlmIGhh c2F0dHIodiwgJ2RlY29kZScpIGVsc2UgdgorICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAg ICAgIGRhdGFba10gPSB2CisKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICBqaWQ9amlkLAorICAg ICAgICAgICAgZGF0YT1kYXRhLAorICAgICAgICAgICAgZmV0Y2hfaWQ9RmFs c2UKKyAgICAgICAgKQorCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfdm9pZCgnQkVHSU4nKQorICAgICAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxm LmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorCisgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICBpZiBzZWxmLmNvbm4uY29ubmVjdGVkKCk6 CisgICAgICAgICAgICAgICAgc2VsZi5jb25uLmV4ZWN1dGVfdm9pZCgnRU5E JykKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHNlbGYuY29ubi5leGVjdXRlX3Zv aWQoJ0VORCcpCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAg ICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdub2Rl cy5zcWwnXSksCisgICAgICAgICAgICBqc2NpZCA9IHJlcywKKyAgICAgICAg ICAgIGppZCA9IGppZAorICAgICAgICApCisgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShzcWwpCisKKyAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJvdyA9IHJl c1sncm93cyddWzBdCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICBkYXRhPXNlbGYuYmx1ZXByaW50LmdlbmVyYXRl X2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICByb3dbJ2pzY2lkJ10s CisgICAgICAgICAgICAgICAgcm93Wydqc2Nqb2JpZCddLAorICAgICAgICAg ICAgICAgIHJvd1snanNjbmFtZSddLAorICAgICAgICAgICAgICAgIGljb249 Imljb24tcGdhX3NjaGVkdWxlIgorICAgICAgICAgICAgKQorICAgICAgICAp CisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHVwZGF0ZShz ZWxmLCBnaWQsIHNpZCwgamlkLCBqc2NpZCk6CisgICAgICAgICIiIgorICAg ICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIHRoZSBkYXRhIGZvciB0 aGUgc2VsZWN0ZWQgbGFuZ3VhZ2Ugbm9kZS4KKworICAgICAgICBBcmdzOgor ICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAg IHNpZDogU2VydmVyIElECisgICAgICAgICAgICBqaWQ6IEpvYiBJRAorICAg ICAgICAgICAganNjaWQ6IEpvYlNjaGVkdWxlIElECisgICAgICAgICIiIgor ICAgICAgICBkYXRhID0ge30KKyAgICAgICAgZm9yIGssIHYgaW4gcmVxdWVz dC5hcmdzLml0ZW1zKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAg ICAgICAgZGF0YVtrXSA9IGpzb24ubG9hZHMoCisgICAgICAgICAgICAgICAg ICAgIHYuZGVjb2RlKCd1dGYtOCcpIGlmIGhhc2F0dHIodiwgJ2RlY29kZScp IGVsc2UgdgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGV4Y2Vw dCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIGRhdGFba10gPSB2CisK KyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSks CisgICAgICAgICAgICBqaWQ9amlkLAorICAgICAgICAgICAgZGF0YT1kYXRh CisgICAgICAgICkKKworICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX3ZvaWQoc3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKKworICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUo CisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAn bm9kZXMuc3FsJ10pLAorICAgICAgICAgICAganNjaWQgPSBqc2NpZCwKKyAg ICAgICAgICAgIGppZCA9IGppZAorICAgICAgICApCisgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShzcWwpCisKKyAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJv dyA9IHJlc1sncm93cyddWzBdCisgICAgICAgIHJldHVybiBtYWtlX2pzb25f cmVzcG9uc2UoCisgICAgICAgICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0 ZV9icm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAgcm93Wydqc2NpZCdd LAorICAgICAgICAgICAgICAgIHJvd1snanNjam9iaWQnXSwKKyAgICAgICAg ICAgICAgICByb3dbJ2pzY25hbWUnXSwKKyAgICAgICAgICAgICAgICBpY29u PSJpY29uLXBnYV9zY2hlZHVsZSIKKyAgICAgICAgICAgICkKKyAgICAgICAg KQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBtc3FsKHNl bGYsIGdpZCwgc2lkLCBqaWQsIGpzY2lkPU5vbmUpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJldHVybiBtb2Rp ZmllZCBTUUwgZm9yIHRoZSBzZWxlY3RlZCBsYW5ndWFnZSBub2RlLgorCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJ RAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGpp ZDogSm9iIElECisgICAgICAgICAgICBqc2NpZDogSm9iIFNjaGVkdWxlIElE IChvcHRpb25hbCkKKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSB7fQor ICAgICAgICBzcWwgPSAnJworICAgICAgICBmb3IgaywgdiBpbiByZXF1ZXN0 LmFyZ3MuaXRlbXMoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAg ICAgICBkYXRhW2tdID0ganNvbi5sb2FkcygKKyAgICAgICAgICAgICAgICAg ICAgdi5kZWNvZGUoJ3V0Zi04JykgaWYgaGFzYXR0cih2LCAnZGVjb2RlJykg ZWxzZSB2CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZXhjZXB0 IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IHYKKwor ICAgICAgICBpZiBqc2NpZCBpcyBOb25lOgorICAgICAgICAgICAgc3FsID0g cmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAg ICAgICAgIGppZD1qaWQsCisgICAgICAgICAgICAgICAgZGF0YT1kYXRhLAor ICAgICAgICAgICAgICAgIGZldGNoX2lkPUZhbHNlCisgICAgICAgICAgICAp CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgamlk PWppZCwKKyAgICAgICAgICAgICAgICBqc2NpZD1qc2NpZCwKKyAgICAgICAg ICAgICAgICBkYXRhPWRhdGEKKyAgICAgICAgICAgICkKKworICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1z cWwsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworCitK b2JTY2hlZHVsZVZpZXcucmVnaXN0ZXJfbm9kZV92aWV3KGJsdWVwcmludCkK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3BnQWdlbnQvc2NoZWR1bGVzL3N0YXRpYy9pbWcvY29sbC1w Z2Ffc2NoZWR1bGUucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zY2hlZHVsZXMvc3RhdGljL2ltZy9j b2xsLXBnYV9zY2hlZHVsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uNDNiMmFlNApCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFu ZCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L3BnQWdlbnQvc2NoZWR1bGVzL3N0YXRpYy9pbWcvY29sbC1wZ2Ffc2NoZWR1 bGUucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zY2hlZHVsZXMvc3Rh dGljL2ltZy9wZ2Ffc2NoZWR1bGUucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zY2hlZHVsZXMvc3Rh dGljL2ltZy9wZ2Ffc2NoZWR1bGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjQyMDMxNzQKQmluYXJ5IGZpbGVzIC9kZXYvbnVs bCBhbmQgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9wZ0FnZW50L3NjaGVkdWxlcy9zdGF0aWMvaW1nL3BnYV9zY2hlZHVs ZS5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3NjaGVkdWxlcy90ZW1w bGF0ZXMvcGdhX3NjaGVkdWxlL2Nzcy9wZ2Ffc2NoZWR1bGUuY3NzIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2Vu dC9zY2hlZHVsZXMvdGVtcGxhdGVzL3BnYV9zY2hlZHVsZS9jc3MvcGdhX3Nj aGVkdWxlLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5jNjJiMDU4Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zY2hlZHVsZXMv dGVtcGxhdGVzL3BnYV9zY2hlZHVsZS9jc3MvcGdhX3NjaGVkdWxlLmNzcwpA QCAtMCwwICsxLDcgQEAKKy5pY29uLXBnYV9zY2hlZHVsZSB7CisgIGJhY2tn cm91bmQtaW1hZ2U6IHVybCgne3sgdXJsX2ZvcignTk9ERS1wZ2Ffc2NoZWR1 bGUuc3RhdGljJywgZmlsZW5hbWU9J2ltZy9wZ2Ffc2NoZWR1bGUucG5nJykg fX0nKSAhaW1wb3J0YW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVw ZWF0OworICBhbGlnbi1jb250ZW50OiBjZW50ZXI7CisgIHZlcnRpY2FsLWFs aWduOiBtaWRkbGU7CisgIGhlaWdodDogMS4zZW07Cit9CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9w Z0FnZW50L3NjaGVkdWxlcy90ZW1wbGF0ZXMvcGdhX3NjaGVkdWxlL2pzL3Bn YV9zY2hlZHVsZS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc2NoZWR1bGVzL3RlbXBsYXRlcy9wZ2Ff c2NoZWR1bGUvanMvcGdhX3NjaGVkdWxlLmpzCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjVhMWU3MDMKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9w Z0FnZW50L3NjaGVkdWxlcy90ZW1wbGF0ZXMvcGdhX3NjaGVkdWxlL2pzL3Bn YV9zY2hlZHVsZS5qcwpAQCAtMCwwICsxLDQ3NCBAQAorZGVmaW5lKFsKKyAg ICAgICAgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUuc3Ry aW5nJywgJ3BnYWRtaW4nLCAnbW9tZW50JywKKyAgICAgICAgJ3BnYWRtaW4u YnJvd3NlcicsICdhbGVydGlmeScsICdiYWNrZm9ybScsICdwZ2FkbWluLmJh Y2tmb3JtJworICAgICAgICBdLAorZnVuY3Rpb24oJCwgXywgUywgcGdBZG1p biwgbW9tZW50LCBwZ0Jyb3dzZXIsIEFsZXJ0aWZ5LCBCYWNrZm9ybSkgewor CisgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb2xsLXBnYV9zY2hlZHVsZSdd KSB7CisgICAgcGdCcm93c2VyLk5vZGVzWydjb2xsLXBnYV9zY2hlZHVsZSdd ID0KKyAgICAgIHBnQnJvd3Nlci5Db2xsZWN0aW9uLmV4dGVuZCh7CisgICAg ICAgIG5vZGU6ICdwZ2Ffc2NoZWR1bGUnLAorICAgICAgICBsYWJlbDogJ3t7 IF8oJ1NjaGVkdWxlcycpIH19JywKKyAgICAgICAgdHlwZTogJ2NvbGwtcGdh X3NjaGVkdWxlJywKKyAgICAgICAgY29sdW1uczogWydqc2NpZCcsICdqc2Nu YW1lJywgJ2pzY2VuYWJsZWQnXSwKKyAgICAgICAgaGFzU3RhdGlzdGljczog ZmFsc2UKKyAgICAgIH0pOworICB9CisKKyAgaWYgKCFwZ0Jyb3dzZXIuTm9k ZXNbJ3BnYV9zY2hlZHVsZSddKSB7CisKKyAgICB2YXIgd2Vla2RheXMgPSBb CisgICAgICAgICAgJ3t7IF8oIlN1bmRheSIpIH19JywgJ3t7IF8oIk1vbmRh eSIpIH19JywgJ3t7IF8oIlR1ZXNkYXkiKSB9fScsCisgICAgICAgICAgJ3t7 IF8oIldlZG5lc2RheSIpIH19JywgJ3t7IF8oIlRodXJzZGF5IikgfX0nLCAn e3sgXygiRnJpZGF5IikgfX0nLAorICAgICAgICAgICd7eyBfKCJTYXR1cmRh eSIpIH19JworICAgICAgICBdLAorICAgICAgICBtb250aGRheXMgPSBbCisg ICAgICAgICAgJ3t7IF8oIjFzdCIpIH19JywgJ3t7IF8oIjJuZCIpIH19Jywg J3t7IF8oIjNyZCIpIH19JywKKyAgICAgICAgICAne3sgXygiNHRoIikgfX0n LCAne3sgXygiNXRoIikgfX0nLCAne3sgXygiNnRoIikgfX0nLAorICAgICAg ICAgICd7eyBfKCI3dGgiKSB9fScsICd7eyBfKCI4dGgiKSB9fScsICd7eyBf KCI5dGgiKSB9fScsCisgICAgICAgICAgJ3t7IF8oIjEwdGgiKSB9fScsICd7 eyBfKCIxMXRoIikgfX0nLCAne3sgXygiMTJ0aCIpIH19JywKKyAgICAgICAg ICAne3sgXygiMTN0aCIpIH19JywgJ3t7IF8oIjE0dGgiKSB9fScsICd7eyBf KCIxNXRoIikgfX0nLAorICAgICAgICAgICd7eyBfKCIxNnRoIikgfX0nLCAn e3sgXygiMTd0aCIpIH19JywgJ3t7IF8oIjE4dGgiKSB9fScsCisgICAgICAg ICAgJ3t7IF8oIjE5dGgiKSB9fScsICd7eyBfKCIyMHRoIikgfX0nLCAne3sg XygiMjFzdCIpIH19JywKKyAgICAgICAgICAne3sgXygiMjJuZCIpIH19Jywg J3t7IF8oIjIzcmQiKSB9fScsICd7eyBfKCIyNHRoIikgfX0nLAorICAgICAg ICAgICd7eyBfKCIyNXRoIikgfX0nLCAne3sgXygiMjZ0aCIpIH19JywgJ3t7 IF8oIjI3dGgiKSB9fScsCisgICAgICAgICAgJ3t7IF8oIjI4dGgiKSB9fScs ICd7eyBfKCIyOXRoIikgfX0nLCAne3sgXygiMzB0aCIpIH19JywKKyAgICAg ICAgICAne3sgXygiMzFzdCIpIH19JywgJ3t7IF8oIkxhc3QgZGF5IikgfX0n CisgICAgICAgIF0sCisgICAgICAgIG1vbnRocyA9IFsKKyAgICAgICAgICAn e3sgXygiSmFudWFyeSIpIH19JywgJ3t7IF8oIkZlYnJ1YXJ5IikgfX0nLCAn e3sgXygiTWFyY2giKSB9fScsCisgICAgICAgICAgJ3t7IF8oIkFwcmlsIikg fX0nLCAne3sgXygiTWF5IikgfX0nLCAne3sgXygiSnVuZSIpIH19JywKKyAg ICAgICAgICAne3sgXygiSnVseSIpIH19JywgJ3t7IF8oIkF1Z3VzdCIpIH19 JywgJ3t7IF8oIlNlcHRlbWJlciIpIH19JywKKyAgICAgICAgICAne3sgXygi T2N0b2JlciIpIH19JywgJ3t7IF8oIk5vdmVtYmVyIikgfX0nLCAne3sgXygi RGVjZW1iZXIiKSB9fScKKyAgICAgICAgXSwKKyAgICAgICAgaG91cnMgPSBb CisgICAgICAgICAgJ3t7IF8oIjAwIikgfX0nLCAne3sgXygiMDEiKSB9fScs ICd7eyBfKCIwMiIpIH19JywgJ3t7IF8oIjAzIikgfX0nLAorICAgICAgICAg ICd7eyBfKCIwNCIpIH19JywgJ3t7IF8oIjA1IikgfX0nLCAne3sgXygiMDYi KSB9fScsICd7eyBfKCIwNyIpIH19JywKKyAgICAgICAgICAne3sgXygiMDgi KSB9fScsICd7eyBfKCIwOSIpIH19JywgJ3t7IF8oIjEwIikgfX0nLCAne3sg XygiMTEiKSB9fScsCisgICAgICAgICAgJ3t7IF8oIjEyIikgfX0nLCAne3sg XygiMTMiKSB9fScsICd7eyBfKCIxNCIpIH19JywgJ3t7IF8oIjE1IikgfX0n LAorICAgICAgICAgICd7eyBfKCIxNiIpIH19JywgJ3t7IF8oIjE3IikgfX0n LCAne3sgXygiMTgiKSB9fScsICd7eyBfKCIxOSIpIH19JywKKyAgICAgICAg ICAne3sgXygiMjAiKSB9fScsICd7eyBfKCIyMSIpIH19JywgJ3t7IF8oIjIy IikgfX0nLCAne3sgXygiMjMiKSB9fScKKyAgICAgICAgXSwKKyAgICAgICAg bWludXRlcyA9IFsKKyAgICAgICAgICAne3sgXygiMDAiKSB9fScsICd7eyBf KCIwMSIpIH19JywgJ3t7IF8oIjAyIikgfX0nLCAne3sgXygiMDMiKSB9fScs CisgICAgICAgICAgJ3t7IF8oIjA0IikgfX0nLCAne3sgXygiMDUiKSB9fScs ICd7eyBfKCIwNiIpIH19JywgJ3t7IF8oIjA3IikgfX0nLAorICAgICAgICAg ICd7eyBfKCIwOCIpIH19JywgJ3t7IF8oIjA5IikgfX0nLCAne3sgXygiMTAi KSB9fScsICd7eyBfKCIxMSIpIH19JywKKyAgICAgICAgICAne3sgXygiMTIi KSB9fScsICd7eyBfKCIxMyIpIH19JywgJ3t7IF8oIjE0IikgfX0nLCAne3sg XygiMTUiKSB9fScsCisgICAgICAgICAgJ3t7IF8oIjE2IikgfX0nLCAne3sg XygiMTciKSB9fScsICd7eyBfKCIxOCIpIH19JywgJ3t7IF8oIjE5IikgfX0n LAorICAgICAgICAgICd7eyBfKCIyMCIpIH19JywgJ3t7IF8oIjIxIikgfX0n LCAne3sgXygiMjIiKSB9fScsICd7eyBfKCIyMyIpIH19JywKKyAgICAgICAg ICAne3sgXygiMjQiKSB9fScsICd7eyBfKCIyNSIpIH19JywgJ3t7IF8oIjI2 IikgfX0nLCAne3sgXygiMjciKSB9fScsCisgICAgICAgICAgJ3t7IF8oIjI4 IikgfX0nLCAne3sgXygiMjkiKSB9fScsICd7eyBfKCIzMCIpIH19JywgJ3t7 IF8oIjMxIikgfX0nLAorICAgICAgICAgICd7eyBfKCIzMiIpIH19JywgJ3t7 IF8oIjMzIikgfX0nLCAne3sgXygiMzQiKSB9fScsICd7eyBfKCIzNSIpIH19 JywKKyAgICAgICAgICAne3sgXygiMzYiKSB9fScsICd7eyBfKCIzNyIpIH19 JywgJ3t7IF8oIjM4IikgfX0nLCAne3sgXygiMzkiKSB9fScsCisgICAgICAg ICAgJ3t7IF8oIjQwIikgfX0nLCAne3sgXygiNDEiKSB9fScsICd7eyBfKCI0 MiIpIH19JywgJ3t7IF8oIjQzIikgfX0nLAorICAgICAgICAgICd7eyBfKCI0 NCIpIH19JywgJ3t7IF8oIjQ1IikgfX0nLCAne3sgXygiNDYiKSB9fScsICd7 eyBfKCI0NyIpIH19JywKKyAgICAgICAgICAne3sgXygiNDgiKSB9fScsICd7 eyBfKCI0OSIpIH19JywgJ3t7IF8oIjUwIikgfX0nLCAne3sgXygiNTEiKSB9 fScsCisgICAgICAgICAgJ3t7IF8oIjUyIikgfX0nLCAne3sgXygiNTMiKSB9 fScsICd7eyBfKCI1NCIpIH19JywgJ3t7IF8oIjU1IikgfX0nLAorICAgICAg ICAgICd7eyBfKCI1NiIpIH19JywgJ3t7IF8oIjU3IikgfX0nLCAne3sgXygi NTgiKSB9fScsICd7eyBfKCI1OSIpIH19JworICAgICAgICBdLAorICAgICAg ICBBbnlEYXRldGltZUNlbGwgPSBCYWNrZ3JpZC5FeHRlbnNpb24uTW9tZW50 Q2VsbC5leHRlbmQoeworICAgICAgICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7 CisgICAgICAgICAgICB0aGlzLiRlbC5lbXB0eSgpOworICAgICAgICAgICAg dmFyIG1vZGVsID0gdGhpcy5tb2RlbDsKKyAgICAgICAgICAgIHRoaXMuJGVs LnRleHQodGhpcy5mb3JtYXR0ZXIuZnJvbVJhdyhtb2RlbC5nZXQodGhpcy5j b2x1bW4uZ2V0KCJuYW1lIikpLCBtb2RlbCkgfHwgJ3t7IF8oJzxBbnk+Jykg fX0nKTsKKyAgICAgICAgICAgIHRoaXMuZGVsZWdhdGVFdmVudHMoKTsKKwor ICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgfQorICAgICAg ICB9KSwKKyAgICAgICAgQm9vbGVhbkFycmF5Rm9ybWF0dGVyID0gZnVuY3Rp b24oc2VsZWN0b3IsIGluZGV4ZXMpIHsKKyAgICAgICAgICB2YXIgc2VsZiA9 IHRoaXM7CisKKyAgICAgICAgICBzZWxmLnNlbGVjdG9yID0gc2VsZWN0b3I7 CisgICAgICAgICAgc2VsZi5pbmRleGVzID0gaW5kZXhlczsKKworICAgICAg ICAgIHRoaXMuZnJvbVJhdyA9IGZ1bmN0aW9uKHJhd0RhdGEpIHsKKyAgICAg ICAgICAgIGlmICghXy5pc0FycmF5KHJhd0RhdGEpKSB7CisgICAgICAgICAg ICAgIHJldHVybiByYXdEYXRhOworICAgICAgICAgICAgfQorCisgICAgICAg ICAgICB2YXIgcmVzID0gW10sIGlkeCA9IDAsIHJlc0lkeCA9IFtdOworCisg ICAgICAgICAgICBmb3IgKDsgaWR4IDwgcmF3RGF0YS5sZW5ndGg7IGlkeCsr KSB7CisgICAgICAgICAgICAgIGlmICghcmF3RGF0YVtpZHhdKQorICAgICAg ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICByZXMucHVzaChz ZWxmLnNlbGVjdG9yW2lkeF0pOworICAgICAgICAgICAgICByZXNJZHgucHVz aChpZHggKyAxKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0 dXJuIHNlbGYuaW5kZXhlcyA/IHJlc0lkeCA6IHJlcy5qb2luKCcsICcpOwor ICAgICAgICAgIH0KKyAgICAgICAgICB0aGlzLnRvUmF3ID0gZnVuY3Rpb24o ZCkgeworICAgICAgICAgICAgaWYgKCFzZWxmLmluZGV4ZXMpCisgICAgICAg ICAgICAgIHJldHVybiBkOworICAgICAgICAgICAgdmFyIHJlcyA9IFtdLCBp ID0gMCwgbCA9IHNlbGYuc2VsZWN0b3IubGVuZ3RoOworCisgICAgICAgICAg ICBmb3IgKDsgaSA8IGw7IGkrKykgeworICAgICAgICAgICAgICByZXMucHVz aChfLmluZGV4T2YoZCwgU3RyaW5nKGkgKyAxKSkgIT0gLTEpOworICAgICAg ICAgICAgfQorICAgICAgICAgICAgY29uc29sZS5sb2cocmVzKTsKKyAgICAg ICAgICAgIHJldHVybiByZXM7CisgICAgICAgICAgfQorCisgICAgICAgICAg cmV0dXJuIHNlbGY7CisgICAgICAgIH0sCisgICAgICAgIEJvb2xlYW5BcnJh eU9wdGlvbnMgPSBmdW5jdGlvbihjdHJsKSB7CisgICAgICAgICAgdmFyIHNl bGVjdG9yID0gY3RybC5maWVsZC5nZXQoJ3NlbGVjdG9yJyksCisgICAgICAg ICAgICAgIHZhbCA9IGN0cmwubW9kZWwuZ2V0KGN0cmwuZmllbGQuZ2V0KCdu YW1lJykpLAorICAgICAgICAgICAgICByZXMgPSBbXTsKKworICAgICAgICAg IGlmIChzZWxlY3RvcikgeworICAgICAgICAgICAgcmVzID0gXy5tYXAoCisg ICAgICAgICAgICAgIHNlbGVjdG9yLCBmdW5jdGlvbih2LCBpKSB7CisgICAg ICAgICAgICAgICAgcmV0dXJuIHtsYWJlbDogdiwgdmFsdWU6IGkgKyAxLCBz ZWxlY3RlZDogdmFsW2ldfTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgKTsKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHJlczsKKyAg ICAgICAgfSwKKyAgICAgICAgRXhjZXB0aW9uTW9kZWwgPSBwZ0Jyb3dzZXIu Tm9kZS5Nb2RlbC5leHRlbmQoeworICAgICAgICAgIGRlZmF1bHRzOiB7Cisg ICAgICAgICAgICBqZXhpZDogdW5kZWZpbmVkLAorICAgICAgICAgICAgamV4 ZGF0ZTogbnVsbCwKKyAgICAgICAgICAgIGpleHRpbWU6IG51bGwKKyAgICAg ICAgICB9LAorICAgICAgICAgIGlkQXR0cmlidXRlOiAnamV4aWQnLAorICAg ICAgICAgIHNjaGVtYTogW3sKKyAgICAgICAgICAgIGlkOiAnamV4ZGF0ZScs IHR5cGU6ICd0ZXh0JywgbGFiZWw6ICd7eyBfKCdEYXRlJykgfX0nLAorICAg ICAgICAgICAgZWRpdGFibGU6IHRydWUsIHBsYWNlaG9sZGVyOiAne3sgXygn PGFueT4nKSB9fScsCisgICAgICAgICAgICBjZWxsOiBBbnlEYXRldGltZUNl bGwsIG9wdGlvbnM6IHtmb3JtYXQ6ICdNTS9ERC9ZWVlZJ30sIGFsbG93RW1w dHk6IHRydWUsCisgICAgICAgICAgICBkaXNwbGF5Rm9ybWF0OiAnTU0vREQv WVlZWScsIG1vZGVsRm9ybWF0OiAnTU0vREQvWVlZWScsCisgICAgICAgICAg ICBjZWxsSGVhZGVyQ2xhc3Nlczond2lkdGhfcGVyY2VudF81MCcKKyAgICAg ICAgICB9LHsKKyAgICAgICAgICAgIGlkOiAnamV4dGltZScsIHR5cGU6ICd0 ZXh0JywgcGxhY2Vob2xkZXI6ICd7eyBfKCc8YW55PicpIH19JywKKyAgICAg ICAgICAgIGxhYmVsOiAne3sgXygnVGltZScpIH19JywgZWRpdGFibGU6IHRy dWUsIGNlbGw6IEFueURhdGV0aW1lQ2VsbCwKKyAgICAgICAgICAgIG9wdGlv bnM6IHtmb3JtYXQ6ICdISDptbTpzcyd9LCBkaXNwbGF5Rm9ybWF0OiAnSEg6 bW06c3MnLAorICAgICAgICAgICAgbW9kZWxGb3JtYXQ6ICdISDptbTpzcycs IGRpc3BsYXlJblVUQzogZmFsc2UsIGFsbG93RW1wdHk6IHRydWUsCisgICAg ICAgICAgICBjZWxsSGVhZGVyQ2xhc3Nlczond2lkdGhfcGVyY2VudF81MCcK KyAgICAgICAgICB9XSwKKyAgICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24o KSB7CisgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsIGV4Y2VwdGlvbnMg PSB0aGlzLmNvbGxlY3Rpb24sCisgICAgICAgICAgICAgICAgZGF0ZXMgPSB7 fSwgZXJyTXNnLCBoYXNFeGNlcHRpb25FcnIgPSBmYWxzZSwKKyAgICAgICAg ICAgICAgICBkID0gKHRoaXMuZ2V0KCdqZXhkYXRlJykgfHwgJzxhbnk+Jyks CisgICAgICAgICAgICAgICAgdCA9IHRoaXMuZ2V0KCdqZXh0aW1lJykgfHwg Jzxhbnk+JywKKyAgICAgICAgICAgICAgICBpZCA9IHRoaXMuZ2V0KCdqZXhp ZCcpIHx8IHRoaXMuY2lkOworCisgICAgICAgICAgICBzZWxmLmVycm9yTW9k ZWwudW5zZXQoJ2pzY2RhdGUnKTsKKyAgICAgICAgICAgIGlmIChkID09IHQg JiYgZCA9PSAnPGFueT4nKSB7CisgICAgICAgICAgICAgIGVyck1zZyA9ICd7 eyBfKCdQbGVhc2Ugc3BlY2lmeSBkYXRlL3RpbWUuJykgfX0nOworICAgICAg ICAgICAgICBzZWxmLmVycm9yTW9kZWwuc2V0KCdqc2NkYXRlJywgZXJyTXNn KTsKKyAgICAgICAgICAgICAgcmV0dXJuIGVyck1zZyA7CisgICAgICAgICAg ICB9CisKKyAgICAgICAgICAgIGV4Y2VwdGlvbnMuZWFjaChmdW5jdGlvbihl eCkgeworICAgICAgICAgICAgICBpZiAoaGFzRXhjZXB0aW9uRXJyIHx8IGlk ID09IChleC5nZXQoJ2pleGlkJykgfHwgZXguY2lkKSkKKyAgICAgICAgICAg ICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgaWYgKAorICAgICAgICAg ICAgICAgIGQgPT0gKGV4LmdldCgnamV4ZGF0ZScpIHx8ICc8YW55PicpICYm CisgICAgICAgICAgICAgICAgdCA9PSAoZXguZ2V0KCdqZXh0aW1lJykgfHwg Jzxhbnk+JykKKyAgICAgICAgICAgICAgKSB7CisgICAgICAgICAgICAgICAg ZXJyTXNnID0gJ3t7IF8oJ1BsZWFzZSBzcGVjaWZ5IHVuaXF1ZSBzZXQgb2Yg ZXhjZXB0aW9ucy4nKSB9fSc7CisgICAgICAgICAgICAgICAgaWYgKGV4LmVy cm9yTW9kZWwuZ2V0KCdqc2NkYXRlJykgIT0gZXJyTXNnKQorICAgICAgICAg ICAgICAgICAgICBzZWxmLmVycm9yTW9kZWwuc2V0KCdqc2NkYXRlJywgZXJy TXNnKTsKKyAgICAgICAgICAgICAgICBoYXNFeGNlcHRpb25FcnIgPSB0cnVl OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKworICAgICAg ICAgICAgcmV0dXJuIGVyck1zZzsKKyAgICAgICAgICB9CisgICAgICAgIH0p OworCisgICAgcGdCcm93c2VyLk5vZGVzWydwZ2Ffc2NoZWR1bGUnXSA9IHBn QnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgICBwYXJlbnRfdHlwZTogJ3Bn YV9qb2InLAorICAgICAgdHlwZTogJ3BnYV9zY2hlZHVsZScsCisgICAgICBo YXNTUUw6IGZhbHNlLAorICAgICAgaGFzRGVwZW5kczogZmFsc2UsCisgICAg ICBoYXNTdGF0aXN0aWNzOiBmYWxzZSwKKyAgICAgIGNhbkRyb3A6IGZ1bmN0 aW9uKG5vZGUpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9LAor ICAgICAgbGFiZWw6ICd7eyBfKCdTY2hlZHVsZScpIH19JywKKyAgICAgIG5v ZGVfaW1hZ2U6ICdpY29uLXBnYV9zY2hlZHVsZScsCisgICAgICBJbml0OiBm dW5jdGlvbigpIHsKKyAgICAgICAgLyogQXZvaWQgbXVsaXRwbGUgcmVnaXN0 cmF0aW9uIG9mIG1lbnVzICovCisgICAgICAgIGlmICh0aGlzLmluaXRpYWxp emVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuaW5p dGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgIHBnQnJvd3Nlci5hZGRfbWVu dXMoW3sKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX3BnYV9zY2hlZHVsZV9v bl9qb2InLCBub2RlOiAncGdhX2pvYicsIG1vZHVsZTogdGhpcywKKyAgICAg ICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNr OiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6 ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdTY2hlZHVs ZS4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24t cGdhX3NjaGVkdWxlJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZSd9CisgICAg ICAgIH0seworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfcGdhX3NjaGVkdWxl X29uX2NvbGwnLCBub2RlOiAnY29sbC1wZ2Ffc2NoZWR1bGUnLCBtb2R1bGU6 IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4 dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAg ICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAn e3sgXygnU2NoZWR1bGUuLi4nKSB9fScsCisgICAgICAgICAgaWNvbjogJ3dj VGFiSWNvbiBpY29uLXBnYV9zY2hlZHVsZScsIGRhdGE6IHthY3Rpb246ICdj cmVhdGUnfQorICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRl X3BnYV9zY2hlZHVsZScsIG5vZGU6ICdwZ2Ffc2NoZWR1bGUnLCBtb2R1bGU6 IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4 dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAg ICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAn e3sgXygnU2NoZWR1bGUuLi4nKSB9fScsCisgICAgICAgICAgaWNvbjogJ3dj VGFiSWNvbiBpY29uLXBnYV9zY2hlZHVsZScsIGRhdGE6IHthY3Rpb246ICdj cmVhdGUnfQorICAgICAgICB9XSk7CisgICAgICB9LAorICAgICAgbW9kZWw6 IHBnQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgICAgIGRlZmF1 bHRzOiB7CisgICAgICAgICAganNjaWQ6IG51bGwsCisgICAgICAgICAganNj am9iaWQ6IG51bGwsCisgICAgICAgICAganNjbmFtZTogJycsCisgICAgICAg ICAganNjZGVzYzogJycsCisgICAgICAgICAganNjZW5hYmxlZDogdHJ1ZSwK KyAgICAgICAgICBqc2NzdGFydDogbnVsbCwKKyAgICAgICAgICBqc2NlbmQ6 IG51bGwsCisgICAgICAgICAganNjd2Vla2RheXM6IF8ubWFwKHdlZWtkYXlz LCBmdW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9KSwKKyAgICAgICAgICBq c2Ntb250aGRheXM6IF8ubWFwKG1vbnRoZGF5cywgZnVuY3Rpb24oKSB7IHJl dHVybiBmYWxzZTsgfSksCisgICAgICAgICAganNjbW9udGhzOiBfLm1hcCht b250aHMsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0pLAorICAgICAg ICAgIGpzY2hvdXJzOiBfLm1hcChob3VycywgZnVuY3Rpb24oKSB7IHJldHVy biBmYWxzZTsgfSksCisgICAgICAgICAganNjbWludXRlczogXy5tYXAobWlu dXRlcywgZnVuY3Rpb24oKSB7IHJldHVybiBmYWxzZTsgfSksCisgICAgICAg ICAganNjZXhjZXB0aW9uczogW10KKyAgICAgICAgfSwKKyAgICAgICAgaWRB dHRyaWJ1dGU6ICdqc2NpZCcsCisgICAgICAgIHBhcnNlOiBmdW5jdGlvbihk KSB7CisgICAgICAgICAgZC5qc2NleGNlcHRpb25zID0gW107CisgICAgICAg ICAgaWYgKGQuamV4aWQgJiYgZC5qZXhpZC5sZW5ndGgpIHsKKyAgICAgICAg ICAgIHZhciBpZHggPSAwOworICAgICAgICAgICAgZm9yICg7IGlkeCA8IGQu amV4aWQubGVuZ3RoOyBpZHgrKykgeworICAgICAgICAgICAgICBkLmpzY2V4 Y2VwdGlvbnMucHVzaCh7CisgICAgICAgICAgICAgICAgJ2pleGlkJzogZC5q ZXhpZFtpZHhdLAorICAgICAgICAgICAgICAgICdqZXhkYXRlJzogZC5qZXhk YXRlW2lkeF0sCisgICAgICAgICAgICAgICAgJ2pleHRpbWUnOiBkLmpleHRp bWVbaWR4XQorICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICB9CisgICAgICAgICAgZGVsZXRlIGQuamV4aWQ7CisgICAgICAg ICAgZGVsZXRlIGQuamV4ZGF0ZTsKKyAgICAgICAgICBkZWxldGUgZC5qZXh0 aW1lOworCisgICAgICAgICAgcmV0dXJuIHBnQnJvd3Nlci5Ob2RlLk1vZGVs LnByb3RvdHlwZS5wYXJzZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAg ICAgICB9LAorICAgICAgICBzY2hlbWE6IFt7CisgICAgICAgICAgaWQ6ICdq c2NpZCcsIGxhYmVsOiAne3sgXygnSUQnKSB9fScsIHR5cGU6ICdpbnRlZ2Vy JywKKyAgICAgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNl bnRfNScsIG1vZGU6IFsncHJvcGVydGllcyddCisgICAgICAgIH0seworICAg ICAgICAgIGlkOiAnanNjbmFtZScsIGxhYmVsOiAne3sgXygnTmFtZScpIH19 JywgdHlwZTogJ3RleHQnLAorICAgICAgICAgIGNlbGxIZWFkZXJDbGFzc2Vz OiAnd2lkdGhfcGVyY2VudF80NScsCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1 bmN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgfSx7CisgICAg ICAgICAgaWQ6ICdqc2NlbmFibGVkJywgbGFiZWw6ICd7eyBfKCdFbmFibGVk JykgfX0nLCB0eXBlOiAnc3dpdGNoJywKKyAgICAgICAgICBkaXNhYmxlZDog ZnVuY3Rpb24oKSB7IHJldHVybiBmYWxzZTsgfSwKKyAgICAgICAgICBjZWxs SGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfNScKKyAgICAgICAgfSx7 CisgICAgICAgICAgaWQ6ICdqc2NzdGFydCcsIGxhYmVsOiAne3sgXygnU3Rh cnQnKSB9fScsIHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICBjb250cm9sOiAn ZGF0ZXRpbWVwaWNrZXInLCBjZWxsOiAnbW9tZW50JywKKyAgICAgICAgICBk aXNhYmxlZDogZnVuY3Rpb24oKSB7IHJldHVybiBmYWxzZTsgfSwKKyAgICAg ICAgICBkaXNwbGF5Rm9ybWF0OiAnTU0vREQvWVlZWSBISDptbTpTUycsCisg ICAgICAgICAgbW9kZWxGb3JtYXQ6ICdNTS9ERC9ZWVlZIEhIOm1tOlNTJywg b3B0aW9uczogeworICAgICAgICAgICAgZm9ybWF0OiAnTU0vREQvWVlZWSBI SDptbTpTUycsCisgICAgICAgICAgfSwgY2VsbEhlYWRlckNsYXNzZXM6ICd3 aWR0aF9wZXJjZW50XzI1JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDog J2pzY2VuZCcsIGxhYmVsOiAne3sgXygnRW5kJykgfX0nLCB0eXBlOiAndGV4 dCcsCisgICAgICAgICAgY29udHJvbDogJ2RhdGV0aW1lcGlja2VyJywgY2Vs bDogJ21vbWVudCcsCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKCkg eyByZXR1cm4gZmFsc2U7IH0sIGRpc3BsYXlJblVUQzogZmFsc2UsCisgICAg ICAgICAgZGlzcGxheUZvcm1hdDogJ01NL0REL1lZWVkgSEg6bW06U1MnLCBv cHRpb25zOiB7CisgICAgICAgICAgICBmb3JtYXQ6ICdNTS9ERC9ZWVlZIEhI Om1tOlNTJywgdXNlQ3VycmVudDogZmFsc2UKKyAgICAgICAgICB9LCBjZWxs SGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMjUnLAorICAgICAgICAg IG1vZGVsRm9ybWF0OiAnTU0vREQvWVlZWSBISDptbTpTUycKKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdqc2N3ZWVrZGF5cycsIGxhYmVsOid7eyBf KCdXZWVrIERheXMnKSB9fScsIHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICBj b250cm9sOiBCYWNrZm9ybS5Db250cm9sLmV4dGVuZCh7CisgICAgICAgICAg ICBmb3JtYXR0ZXI6IG5ldyBCb29sZWFuQXJyYXlGb3JtYXR0ZXIod2Vla2Rh eXMsIGZhbHNlKQorICAgICAgICAgIH0pLCBtb2RlOiBbJ3Byb3BlcnRpZXMn XQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pzY21vbnRoZGF5cycs IGxhYmVsOid7eyBfKCdNb250aCBEYXlzJykgfX0nLCB0eXBlOiAndGV4dCcs CisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uQ29udHJvbC5leHRlbmQo eworICAgICAgICAgICAgZm9ybWF0dGVyOiBuZXcgQm9vbGVhbkFycmF5Rm9y bWF0dGVyKG1vbnRoZGF5cywgZmFsc2UpCisgICAgICAgICAgfSksIG1vZGU6 IFsncHJvcGVydGllcyddCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn anNjbW9udGhzJywgbGFiZWw6J3t7IF8oJ01vbnRocycpIH19JywgdHlwZTog J3RleHQnLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkNvbnRyb2wu ZXh0ZW5kKHsKKyAgICAgICAgICAgIGZvcm1hdHRlcjogbmV3IEJvb2xlYW5B cnJheUZvcm1hdHRlcihtb250aHMsIGZhbHNlKQorICAgICAgICAgIH0pLCBt b2RlOiBbJ3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ2pzY2hvdXJzJywgbGFiZWw6J3t7IF8oJ0hvdXJzJykgfX0nLCB0eXBl OiAndGV4dCcsCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uQ29udHJv bC5leHRlbmQoeworICAgICAgICAgICAgZm9ybWF0dGVyOiBuZXcgQm9vbGVh bkFycmF5Rm9ybWF0dGVyKGhvdXJzLCBmYWxzZSkKKyAgICAgICAgICB9KSwg bW9kZTogWydwcm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAg aWQ6ICdqc2NtaW51dGVzJywgbGFiZWw6J3t7IF8oJ01pbnV0ZXMnKSB9fScs IHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5D b250cm9sLmV4dGVuZCh7CisgICAgICAgICAgICBmb3JtYXR0ZXI6IG5ldyBC b29sZWFuQXJyYXlGb3JtYXR0ZXIobWludXRlcywgZmFsc2UpCisgICAgICAg ICAgfSksIG1vZGU6IFsncHJvcGVydGllcyddCisgICAgICAgIH0seworICAg ICAgICAgIGlkOiAnanNjZXhjZXB0aW9ucycsIGxhYmVsOid7eyBfKCdFeGNl cHRpb25zJykgfX0nLCB0eXBlOiAndGV4dCcsCisgICAgICAgICAgY29udHJv bDogQmFja2Zvcm0uQ29udHJvbC5leHRlbmQoeworICAgICAgICAgICAgZm9y bWF0dGVyOiBuZXcgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgIHRoaXMu ZnJvbVJhdyA9IGZ1bmN0aW9uKHJhd0RhdGEpIHsKKyAgICAgICAgICAgICAg ICB2YXIgcmVzID0gJycsIGlkeCA9IDAsIGQ7CisKKyAgICAgICAgICAgICAg ICBpZiAoIXJhd0RhdGEpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBy ZXM7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZm9y ICg7IGlkeCA8IHJhd0RhdGEubGVuZ3RoOyBpZHgrKykgeworICAgICAgICAg ICAgICAgICAgZCA9IHJhd0RhdGFbaWR4XTsKKyAgICAgICAgICAgICAgICAg IGlmIChpZHgpCisgICAgICAgICAgICAgICAgICAgICAgcmVzICs9ICcsICc7 CisgICAgICAgICAgICAgICAgICByZXMgKz0gJ1snICsgU3RyaW5nKChkLmpl eGRhdGUgfHwgJycpICsgJyAnICsgKGQuamV4dGltZSB8fCAnJykpLnJlcGxh Y2UoL15ccyt8XHMrJC9nLCAnJykgKyAnXSc7CisgICAgICAgICAgICAgICAg fQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICB0aGlzLnRvUmF3ID0gZnVuY3Rpb24oZGF0 YSkgeyByZXR1cm4gZGF0YTsgfQorCisgICAgICAgICAgICAgIHJldHVybiB0 aGlzOworICAgICAgICAgICAgfQorICAgICAgICAgIH0pLCBtb2RlOiBbJ3By b3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICB0eXBlOiAnbmVz dGVkJywgbGFiZWw6ICd7eyBfKCdEYXlzJykgfX0nLCBncm91cDogJ3t7IF8o J1JlcGVhdCcpIH19JywKKyAgICAgICAgICBtb2RlOiBbJ2NyZWF0ZScsICdl ZGl0J10sCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uRmllbGRzZXRD b250cm9sLmV4dGVuZCh7CisgICAgICAgICAgICByZW5kZXI6IGZ1bmN0aW9u KCkgeworICAgICAgICAgICAgICB2YXIgcmVzID0gQmFja2Zvcm0uRmllbGRz ZXRDb250cm9sLnByb3RvdHlwZS5yZW5kZXIuYXBwbHkoCisgICAgICAgICAg ICAgICAgdGhpcywgYXJndW1lbnRzCisgICAgICAgICAgICAgICk7CisKKyAg ICAgICAgICAgICAgdGhpcy4kZWwucHJlcGVuZCgKKyAgICAgICAgICAgICAg ICAnPGRpdiBjbGFzcz0iJyArIEJhY2tmb3JtLmhlbHBNZXNzYWdlQ2xhc3NO YW1lICsgJyBzZXQtZ3JvdXAgcGctZWwteHMtMTIiPnt7IF8oIlNjaGVkdWxl cyBhcmUgc3BlY2lmaWVkIHVzaW5nIGEgPGI+Y3Jvbi1zdHlsZTwvYj4gZm9y bWF0Ljxici8+PHVsPjxsaT5Gb3IgZWFjaCBzZWxlY3RlZCB0aW1lIG9yIGRh dGUgZWxlbWVudCwgdGhlIHNjaGVkdWxlIHdpbGwgZXhlY3V0ZS48YnIvPmUu Zy4gVG8gZXhlY3V0ZSBhdCA1IG1pbnV0ZXMgcGFzdCBldmVyeSBob3VyLCBz aW1wbHkgc2VsZWN0IOKAmDA14oCZIGluIHRoZSBNaW51dGVzIGxpc3QgYm94 Ljxici8+PC9saT48bGk+VmFsdWVzIGZyb20gbW9yZSB0aGFuIG9uZSBmaWVs ZCBtYXkgYmUgc3BlY2lmaWVkIGluIG9yZGVyIHRvIGZ1cnRoZXIgY29udHJv bCB0aGUgc2NoZWR1bGUuPGJyLz5lLmcuIFRvIGV4ZWN1dGUgYXQgMTI6MDUg YW5kIDE0OjA1IGV2ZXJ5IE1vbmRheSBhbmQgVGh1cnNkYXksIHlvdSB3b3Vs ZCBjbGljayBtaW51dGUgMDUsIGhvdXJzIDEyIGFuZCAxNCwgYW5kIHdlZWtk YXlzIE1vbmRheSBhbmQgVGh1cnNkYXkuPC9saT48bGk+Rm9yIGFkZGl0aW9u YWwgZmxleGliaWxpdHksIHRoZSBNb250aCBEYXlzIGNoZWNrIGxpc3QgaW5j bHVkZXMgYW4gZXh0cmEgTGFzdCBEYXkgb3B0aW9uLiBUaGlzIG1hdGNoZXMg dGhlIGxhc3QgZGF5IG9mIHRoZSBtb250aCwgd2hldGhlciBpdCBoYXBwZW5z IHRvIGJlIHRoZSAyOHRoLCAyOXRoLCAzMHRoIG9yIDMxc3QuPC9saT48L3Vs PiIpIH19PC9kaXY+JworICAgICAgICAgICAgICApOworCisgICAgICAgICAg ICAgIHJldHVybiByZXM7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSks CisgICAgICAgICAgc2NoZW1hOlt7CisgICAgICAgICAgICBpZDogJ2pzY3dl ZWtkYXlzJywgbGFiZWw6J3t7IF8oJ1dlZWsgRGF5cycpIH19JywgY2VsbDog J3NlbGVjdDInLAorICAgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdEYXlzJykg fX0nLCBjb250cm9sOiAnc2VsZWN0MicsIHR5cGU6ICdhcnJheScsCisgICAg ICAgICAgICBzZWxlY3QyOiB7CisgICAgICAgICAgICAgIGZpcnN0X2VtcHR5 OiBmYWxzZSwKKyAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsCisgICAg ICAgICAgICAgIGFsbG93Q2xlYXI6IHRydWUsCisgICAgICAgICAgICAgIHBs YWNlaG9sZGVyOiAne3sgXygiU2VsZWN0IHRoZSB3ZWVrZGF5cy4uLiIpIH19 JywKKyAgICAgICAgICAgICAgd2lkdGg6ICdzdHlsZScsCisgICAgICAgICAg ICAgIGRyb3Bkb3duQWRhcHRlcjogJC5mbi5zZWxlY3QyLmFtZC5yZXF1aXJl KAorICAgICAgICAgICAgICAgICdzZWxlY3QyL3NlbGVjdEFsbEFkYXB0ZXIn CisgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg ICBzZWxlY3Rvcjogd2Vla2RheXMsCisgICAgICAgICAgICBmb3JtYXR0ZXI6 IG5ldyBCb29sZWFuQXJyYXlGb3JtYXR0ZXIod2Vla2RheXMsIHRydWUpLAor ICAgICAgICAgICAgb3B0aW9uczogQm9vbGVhbkFycmF5T3B0aW9ucworICAg ICAgICAgIH0seworICAgICAgICAgICAgaWQ6ICdqc2Ntb250aGRheXMnLCBs YWJlbDone3sgXygnTW9udGggRGF5cycpIH19JywgY2VsbDogJ3NlbGVjdDIn LAorICAgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdEYXlzJykgfX0nLCBjb250 cm9sOiAnc2VsZWN0MicsIHR5cGU6ICdhcnJheScsCisgICAgICAgICAgICBz ZWxlY3QyOiB7CisgICAgICAgICAgICAgIGZpcnN0X2VtcHR5OiBmYWxzZSwK KyAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsCisgICAgICAgICAgICAg IGFsbG93Q2xlYXI6IHRydWUsCisgICAgICAgICAgICAgIHBsYWNlaG9sZGVy OiAne3sgXygiU2VsZWN0IHRoZSBtb250aCBkYXlzLi4uIikgfX0nLAorICAg ICAgICAgICAgICB3aWR0aDogJ3N0eWxlJywKKyAgICAgICAgICAgICAgZHJv cGRvd25BZGFwdGVyOiAkLmZuLnNlbGVjdDIuYW1kLnJlcXVpcmUoCisgICAg ICAgICAgICAgICAgJ3NlbGVjdDIvc2VsZWN0QWxsQWRhcHRlcicKKyAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZvcm1h dHRlcjogbmV3IEJvb2xlYW5BcnJheUZvcm1hdHRlcihtb250aGRheXMsIHRy dWUpLAorICAgICAgICAgICAgc2VsZWN0b3I6IG1vbnRoZGF5cywgb3B0aW9u czogQm9vbGVhbkFycmF5T3B0aW9ucworICAgICAgICAgIH0seworICAgICAg ICAgICAgaWQ6ICdqc2Ntb250aHMnLCBsYWJlbDone3sgXygnTW9udGhzJykg fX0nLCBjZWxsOiAnc2VsZWN0MicsCisgICAgICAgICAgICBncm91cDogJ3t7 IF8oJ0RheXMnKSB9fScsIGNvbnRyb2w6ICdzZWxlY3QyJywgdHlwZTogJ2Fy cmF5JywKKyAgICAgICAgICAgIHNlbGVjdDI6IHsKKyAgICAgICAgICAgICAg Zmlyc3RfZW1wdHk6IGZhbHNlLAorICAgICAgICAgICAgICBtdWx0aXBsZTog dHJ1ZSwKKyAgICAgICAgICAgICAgYWxsb3dDbGVhcjogdHJ1ZSwKKyAgICAg ICAgICAgICAgcGxhY2Vob2xkZXI6ICd7eyBfKCJTZWxlY3QgdGhlIG1vbnRo cy4uLiIpIH19JywKKyAgICAgICAgICAgICAgd2lkdGg6ICdzdHlsZScsCisg ICAgICAgICAgICAgIGRyb3Bkb3duQWRhcHRlcjogJC5mbi5zZWxlY3QyLmFt ZC5yZXF1aXJlKAorICAgICAgICAgICAgICAgICdzZWxlY3QyL3NlbGVjdEFs bEFkYXB0ZXInCisgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIH0sCisg ICAgICAgICAgICBmb3JtYXR0ZXI6IG5ldyBCb29sZWFuQXJyYXlGb3JtYXR0 ZXIobW9udGhzLCB0cnVlKSwKKyAgICAgICAgICAgIHNlbGVjdG9yOiBtb250 aHMsIG9wdGlvbnM6IEJvb2xlYW5BcnJheU9wdGlvbnMKKyAgICAgICAgICB9 XQorICAgICAgICB9LHsKKyAgICAgICAgICB0eXBlOiAnbmVzdGVkJywgY29u dHJvbDogJ2ZpZWxkc2V0JywgbGFiZWw6ICd7eyBfKCdUaW1lcycpIH19JywK KyAgICAgICAgICBncm91cDogJ3t7IF8oJ1JlcGVhdCcpIH19JywgbW9kZTog WydjcmVhdGUnLCAnZWRpdCddLAorICAgICAgICAgIHNjaGVtYTpbeworICAg ICAgICAgICAgaWQ6ICdqc2Nob3VycycsIGxhYmVsOid7eyBfKCdIb3Vycycp IH19JywgY2VsbDogJ3NlbGVjdDInLAorICAgICAgICAgICAgZ3JvdXA6ICd7 eyBfKCdUaW1lcycpIH19JywgY29udHJvbDogJ3NlbGVjdDInLCB0eXBlOiAn YXJyYXknLAorICAgICAgICAgICAgc2VsZWN0MjogeworICAgICAgICAgICAg ICBmaXJzdF9lbXB0eTogZmFsc2UsCisgICAgICAgICAgICAgIG11bHRpcGxl OiB0cnVlLAorICAgICAgICAgICAgICBhbGxvd0NsZWFyOiB0cnVlLAorICAg ICAgICAgICAgICBwbGFjZWhvbGRlcjogJ3t7IF8oIlNlbGVjdCB0aGUgaG91 cnMuLi4iKSB9fScsCisgICAgICAgICAgICAgIHdpZHRoOiAnc3R5bGUnLAor ICAgICAgICAgICAgICBkcm9wZG93bkFkYXB0ZXI6ICQuZm4uc2VsZWN0Mi5h bWQucmVxdWlyZSgKKyAgICAgICAgICAgICAgICAnc2VsZWN0Mi9zZWxlY3RB bGxBZGFwdGVyJworICAgICAgICAgICAgICApCisgICAgICAgICAgICB9LAor ICAgICAgICAgICAgZm9ybWF0dGVyOiBuZXcgQm9vbGVhbkFycmF5Rm9ybWF0 dGVyKGhvdXJzLCB0cnVlKSwKKyAgICAgICAgICAgIHNlbGVjdG9yOiBob3Vy cywgb3B0aW9uczogQm9vbGVhbkFycmF5T3B0aW9ucworICAgICAgICAgIH0s eworICAgICAgICAgICAgaWQ6ICdqc2NtaW51dGVzJywgbGFiZWw6J3t7IF8o J01pbnV0ZXMnKSB9fScsIGNlbGw6ICdzZWxlY3QyJywKKyAgICAgICAgICAg IGdyb3VwOiAne3sgXygnVGltZXMnKSB9fScsIGNvbnRyb2w6ICdzZWxlY3Qy JywgdHlwZTogJ2FycmF5JywKKyAgICAgICAgICAgIHNlbGVjdDI6IHsKKyAg ICAgICAgICAgICAgZmlyc3RfZW1wdHk6IGZhbHNlLAorICAgICAgICAgICAg ICBtdWx0aXBsZTogdHJ1ZSwKKyAgICAgICAgICAgICAgYWxsb3dDbGVhcjog dHJ1ZSwKKyAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICd7eyBfKCJTZWxl Y3QgdGhlIG1pbnV0ZXMuLi4iKSB9fScsCisgICAgICAgICAgICAgIHdpZHRo OiAnc3R5bGUnLAorICAgICAgICAgICAgICBkcm9wZG93bkFkYXB0ZXI6ICQu Zm4uc2VsZWN0Mi5hbWQucmVxdWlyZSgKKyAgICAgICAgICAgICAgICAnc2Vs ZWN0Mi9zZWxlY3RBbGxBZGFwdGVyJworICAgICAgICAgICAgICApCisgICAg ICAgICAgICB9LAorICAgICAgICAgICAgZm9ybWF0dGVyOiBuZXcgQm9vbGVh bkFycmF5Rm9ybWF0dGVyKG1pbnV0ZXMsIHRydWUpLAorICAgICAgICAgICAg c2VsZWN0b3I6IG1pbnV0ZXMsIG9wdGlvbnM6IEJvb2xlYW5BcnJheU9wdGlv bnMKKyAgICAgICAgICB9XQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDog J2pzY2V4Y2VwdGlvbnMnLCB0eXBlOiAnY29sbGVjdGlvbicsIG1vZGU6IFsn ZWRpdCcsICdjcmVhdGUnXSwKKyAgICAgICAgICBsYWJlbDogIiIsIGNhbkVk aXQ6IGZhbHNlLCBtb2RlbDogRXhjZXB0aW9uTW9kZWwsIGNhbkFkZDogdHJ1 ZSwKKyAgICAgICAgICBncm91cDogJ3t7IF8oJ0V4Y2VwdGlvbnMnKSB9fScs IGNhbkRlbGV0ZTogdHJ1ZSwKKyAgICAgICAgICBjb2xzOiBbJ2pleGRhdGUn LCAnamV4dGltZSddLCBjb250cm9sOiAnc3ViLW5vZGUtY29sbGVjdGlvbicK KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdqc2NkZXNjJywgbGFiZWw6 ICd7eyBfKCdDb21tZW50JykgfX0nLCB0eXBlOiAnbXVsdGlsaW5lJworICAg ICAgICB9XSwKKyAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKGtleXMpIHsK KyAgICAgICAgICB2YXIgdmFsID0gdGhpcy5nZXQoJ2pzY25hbWUnKSwKKyAg ICAgICAgICAgICAgZXJyTXNnID0gbnVsbDsKKworICAgICAgICAgIGlmIChf LmlzVW5kZWZpbmVkKHZhbCkgfHwgXy5pc051bGwodmFsKSB8fAorICAgICAg ICAgICAgU3RyaW5nKHZhbCkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9 PSAnJykgeworICAgICAgICAgICAgdmFyIG1zZyA9ICd7eyBfKCdOYW1lIGNh bm5vdCBiZSBlbXB0eS4nKSB9fSc7CisgICAgICAgICAgICB0aGlzLmVycm9y TW9kZWwuc2V0KCdqc2NuYW1lJywgbXNnKTsKKyAgICAgICAgICAgIGVyck1z ZyA9IG1zZzsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhp cy5lcnJvck1vZGVsLnVuc2V0KCdqc2NuYW1lJyk7CisgICAgICAgICAgfQor CisgICAgICAgICAgdmFsID0gdGhpcy5nZXQoJ2pzY3N0YXJ0Jyk7CisgICAg ICAgICAgaWYgKF8uaXNVbmRlZmluZWQodmFsKSB8fCBfLmlzTnVsbCh2YWwp IHx8CisgICAgICAgICAgICBTdHJpbmcodmFsKS5yZXBsYWNlKC9eXHMrfFxz KyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICB2YXIgbXNnID0gJ3t7 IF8oJ1BsZWFzZSBlbnRlciB0aGUgc3RhcnQgdGltZS4nKSB9fSc7CisgICAg ICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdqc2NzdGFydCcsIG1zZyk7 CisgICAgICAgICAgICBlcnJNc2cgPSBlcnJNc2cgfHwgbXNnOworICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5z ZXQoJ2pzY3N0YXJ0Jyk7CisgICAgICAgICAgfQorCisgICAgICAgICAgdmFs ID0gdGhpcy5nZXQoJ2pzY2VuZCcpOworICAgICAgICAgIGlmIChfLmlzVW5k ZWZpbmVkKHZhbCkgfHwgXy5pc051bGwodmFsKSB8fAorICAgICAgICAgICAg U3RyaW5nKHZhbCkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykg eworICAgICAgICAgICAgdmFyIG1zZyA9ICd7eyBfKCdQbGVhc2UgZW50ZXIg dGhlIGVuZCB0aW1lLicpIH19JzsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JN b2RlbC5zZXQoJ2pzY2VuZCcsIG1zZyk7CisgICAgICAgICAgICBlcnJNc2cg PSBlcnJNc2cgfHwgbXNnOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ2pzY2VuZCcpOworICAgICAg ICAgIH0KKworICAgICAgICAgIHJldHVybiBlcnJNc2c7CisgICAgICAgIH0K KyAgICAgIH0pCisgICAgfSk7CisgIH0KKworICByZXR1cm4gcGdCcm93c2Vy Lk5vZGVzWydwZ2Ffc2NoZWR1bGUnXTsKK30pOwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2Vu dC9zdGF0aWMvaW1nL2NvbGwtcGdhX2pvYi5wbmcgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3N0YXRpYy9p bWcvY29sbC1wZ2Ffam9iLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi43MDVlMjMzCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5k IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv cGdBZ2VudC9zdGF0aWMvaW1nL2NvbGwtcGdhX2pvYi5wbmcgZGlmZmVyCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9wZ0FnZW50L3N0YXRpYy9pbWcvcGdhX2pvYi1kaXNhYmxlZC5w bmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9wZ0FnZW50L3N0YXRpYy9pbWcvcGdhX2pvYi1kaXNhYmxlZC5wbmcKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTliZjNlZgpCaW5h cnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc3RhdGljL2ltZy9wZ2Ff am9iLWRpc2FibGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc3Rh dGljL2ltZy9wZ2Ffam9iLnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc3RhdGljL2ltZy9wZ2Ffam9i LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzU0 Njc0CkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zdGF0aWMv aW1nL3BnYV9qb2IucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zdGVw cy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc3RlcHMvX19pbml0X18ucHkKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NkZWQ3YQotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3BnQWdlbnQvc3RlcHMvX19pbml0X18ucHkKQEAgLTAsMCAr MSw1MzYgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisj IHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0 IChDKSAyMDEzIC0gMjAxNiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVh bQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisKKyIiIkltcGxlbWVudHMgcGdBZ2VudCBKb2IgU3RlcCBOb2RlIiIi CisKK2ltcG9ydCBqc29uCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMK KworZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRlLCBtYWtlX3Jl c3BvbnNlLCByZXF1ZXN0Citmcm9tIGZsYXNrX2JhYmVsIGltcG9ydCBnZXR0 ZXh0Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uIGltcG9ydCBD b2xsZWN0aW9uTm9kZU1vZHVsZQorZnJvbSBwZ2FkbWluLmJyb3dzZXIudXRp bHMgaW1wb3J0IFBHQ2hpbGROb2RlVmlldworZnJvbSBwZ2FkbWluLnV0aWxz LmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgZ29uZSwgXAorICAg IG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgaW50ZXJuYWxfc2Vy dmVyX2Vycm9yCitmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBn ZXRfZHJpdmVyCisKK2Zyb20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RS SVZFUgorCisKK2NsYXNzIEpvYlN0ZXBNb2R1bGUoQ29sbGVjdGlvbk5vZGVN b2R1bGUpOgorICAgICIiIgorICAgIGNsYXNzIEpvYlN0ZXBNb2R1bGUoQ29s bGVjdGlvbk5vZGVNb2R1bGUpCisKKyAgICAgICAgQSBtb2R1bGUgY2xhc3Mg Zm9yIEpvYlN0ZXAgbm9kZSBkZXJpdmVkIGZyb20gQ29sbGVjdGlvbk5vZGVN b2R1bGUuCisKKyAgICBNZXRob2RzOgorICAgIC0tLS0tLS0KKyAgICAqIGdl dF9ub2RlcyhnaWQsIHNpZCwgamlkKQorICAgICAgLSBNZXRob2QgaXMgdXNl ZCB0byBnZW5lcmF0ZSB0aGUgYnJvd3NlciBjb2xsZWN0aW9uIG5vZGUuCisK KyAgICAqIG5vZGVfaW5vZGUoKQorICAgICAgLSBNZXRob2QgaXMgb3ZlcnJp ZGRlbiBmcm9tIGl0cyBiYXNlIGNsYXNzIHRvIG1ha2UgdGhlIG5vZGUgYXMg bGVhZiBub2RlLgorICAgICIiIgorCisgICAgTk9ERV9UWVBFID0gJ3BnYV9q b2JzdGVwJworICAgIENPTExFQ1RJT05fTEFCRUwgPSBnZXR0ZXh0KCJTdGVw cyIpCisKKyAgICBkZWYgZ2V0X25vZGVzKHNlbGYsIGdpZCwgc2lkLCBqaWQp OgorICAgICAgICAiIiIKKyAgICAgICAgTWV0aG9kIGlzIHVzZWQgdG8gZ2Vu ZXJhdGUgdGhlIGJyb3dzZXIgY29sbGVjdGlvbiBub2RlCisKKyAgICAgICAg QXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAg ICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICAgamlkOiBEYXRh YmFzZSBJZAorICAgICAgICAiIiIKKyAgICAgICAgeWllbGQgc2VsZi5nZW5l cmF0ZV9icm93c2VyX2NvbGxlY3Rpb25fbm9kZShqaWQpCisKKyAgICBAcHJv cGVydHkKKyAgICBkZWYgbm9kZV9pbm9kZShzZWxmKToKKyAgICAgICAgIiIi CisgICAgICAgIE92ZXJyaWRlIHRoaXMgcHJvcGVydHkgdG8gbWFrZSB0aGUg bm9kZSBhIGxlYWYgbm9kZS4KKworICAgICAgICBSZXR1cm5zOiBGYWxzZSBh cyB0aGlzIGlzIHRoZSBsZWFmIG5vZGUKKyAgICAgICAgIiIiCisgICAgICAg IHJldHVybiBGYWxzZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNjcmlw dF9sb2FkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9hZCB0aGUg bW9kdWxlIHNjcmlwdCBmb3IgbGFuZ3VhZ2UsIHdoZW4gYW55IG9mIHRoZSBk YXRhYmFzZSBub2RlcyBhcmUgaW5pdGlhbGl6ZWQuCisKKyAgICAgICAgUmV0 dXJuczogbm9kZSB0eXBlIG9mIHRoZSBzZXJ2ZXIgbW9kdWxlLgorICAgICAg ICAiIiIKKyAgICAgICAgcmV0dXJuICdwZ2Ffam9iJworCisKK2JsdWVwcmlu dCA9IEpvYlN0ZXBNb2R1bGUoX19uYW1lX18pCisKKworY2xhc3MgSm9iU3Rl cFZpZXcoUEdDaGlsZE5vZGVWaWV3KToKKyAgICAiIiIKKyAgICBjbGFzcyBK b2JTdGVwVmlldyhQR0NoaWxkTm9kZVZpZXcpCisKKyAgICAgICAgQSB2aWV3 IGNsYXNzIGZvciBKb2JTdGVwIG5vZGUgZGVyaXZlZCBmcm9tIFBHQ2hpbGRO b2RlVmlldy4gVGhpcyBjbGFzcyBpcworICAgICAgICByZXNwb25zaWJsZSBm b3IgYWxsIHRoZSBzdHVmZiByZWxhdGVkIHRvIHZpZXcgbGlrZSB1cGRhdGlu ZyBsYW5ndWFnZQorICAgICAgICBub2RlLCBzaG93aW5nIHByb3BlcnRpZXMs IHNob3dpbmcgc3FsIGluIHNxbCBwYW5lLgorCisgICAgTWV0aG9kczoKKyAg ICAtLS0tLS0tCisgICAgKiBfX2luaXRfXygqKmt3YXJncykKKyAgICAgIC0g TWV0aG9kIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgSm9iU3RlcFZpZXcg YW5kIGl0J3MgYmFzZSB2aWV3LgorCisgICAgKiBtb2R1bGVfanMoKQorICAg ICAgLSBUaGlzIHByb3BlcnR5IGRlZmluZXMgKGlmIGphdmFzY3JpcHQpIGV4 aXN0cyBmb3IgdGhpcyBub2RlLgorICAgICAgICBPdmVycmlkZSB0aGlzIHBy b3BlcnR5IGZvciB5b3VyIG93biBsb2dpYworCisgICAgKiBjaGVja19wcmVj b25kaXRpb24oKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgYmVoYXZl IGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgY2hlY2tzCisgICAgICAgIGRh dGFiYXNlIGNvbm5lY3Rpb24gYmVmb3JlIHJ1bm5pbmcgdmlldywgaXQgd2ls bCBhbHNvIGF0dGFjaGVzCisgICAgICAgIG1hbmFnZXIsY29ubiAmIHRlbXBs YXRlX3BhdGggcHJvcGVydGllcyB0byBzZWxmCisKKyAgICAqIGxpc3QoKQor ICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbGlzdCBhbGwgdGhl IGxhbmd1YWdlIG5vZGVzIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24uCisKKyAg ICAqIG5vZGVzKCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHVzZWQg dG8gY3JlYXRlIGFsbCB0aGUgY2hpbGQgbm9kZSB3aXRoaW4gdGhhdCBjb2xs ZWN0aW9uLgorICAgICAgICBIZXJlIGl0IHdpbGwgY3JlYXRlIGFsbCB0aGUg bGFuZ3VhZ2Ugbm9kZS4KKworICAgICogcHJvcGVydGllcyhnaWQsIHNpZCwg amlkLCBqc3RpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHNob3cg dGhlIHByb3BlcnRpZXMgb2YgdGhlIHNlbGVjdGVkIGxhbmd1YWdlIG5vZGUK KworICAgICogdXBkYXRlKGdpZCwgc2lkLCBqaWQsIGpzdGlkKQorICAgICAg LSBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIHRoZSBkYXRhIGZvciB0aGUg c2VsZWN0ZWQgbGFuZ3VhZ2Ugbm9kZQorCisgICAgKiBtc3FsKGdpZCwgc2lk LCBqaWQsIGpzdGlkKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQg dG8gcmV0dXJuIG1vZGlmaWVkIFNRTCBmb3IgdGhlIHNlbGVjdGVkIGxhbmd1 YWdlIG5vZGUKKyAgICAiIiIKKworICAgIG5vZGVfdHlwZSA9IGJsdWVwcmlu dC5ub2RlX3R5cGUKKworICAgIHBhcmVudF9pZHMgPSBbCisgICAgICAgIHsn dHlwZSc6ICdpbnQnLCAnaWQnOiAnZ2lkJ30sCisgICAgICAgIHsndHlwZSc6 ICdpbnQnLCAnaWQnOiAnc2lkJ30sCisgICAgICAgIHsndHlwZSc6ICdpbnQn LCAnaWQnOiAnamlkJ30KKyAgICBdCisgICAgaWRzID0gWworICAgICAgICB7 J3R5cGUnOiAnaW50JywgJ2lkJzogJ2pzdGlkJ30KKyAgICBdCisKKyAgICBv cGVyYXRpb25zID0gZGljdCh7CisgICAgICAgICdvYmonOiBbCisgICAgICAg ICAgICB7J2dldCc6ICdwcm9wZXJ0aWVzJywgJ3B1dCc6ICd1cGRhdGUnfSwK KyAgICAgICAgICAgIHsnZ2V0JzogJ2xpc3QnLCAncG9zdCc6ICdjcmVhdGUn fQorICAgICAgICBdLAorICAgICAgICAnbm9kZXMnOiBbeydnZXQnOiAnbm9k ZXMnfSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdtc3FsJzogW3sn Z2V0JzogJ21zcWwnfSwgeydnZXQnOiAnbXNxbCd9XSwKKyAgICAgICAgJ3N0 YXRzJzogW3snZ2V0JzogJ3N0YXRpc3RpY3MnfV0sCisgICAgICAgICdtb2R1 bGUuanMnOiBbe30sIHt9LCB7J2dldCc6ICdtb2R1bGVfanMnfV0KKyAgICB9 KQorCisgICAgZGVmIF9pbml0XyhzZWxmLCAqKmt3YXJncyk6CisgICAgICAg ICIiIgorICAgICAgICBNZXRob2QgaXMgdXNlZCB0byBpbml0aWFsaXplIHRo ZSBKb2JTdGVwVmlldyBhbmQgaXRzIGJhc2Ugdmlldy4KKyAgICAgICAgSW5p dGlhbGl6ZSBhbGwgdGhlIHZhcmlhYmxlcyBjcmVhdGUvdXNlZCBkeW5hbWlj YWxseSBsaWtlIGNvbm4sIHRlbXBsYXRlX3BhdGguCisKKyAgICAgICAgQXJn czoKKyAgICAgICAgICAgICoqa3dhcmdzOgorICAgICAgICAiIiIKKyAgICAg ICAgc2VsZi5jb25uID0gTm9uZQorICAgICAgICBzZWxmLnRlbXBsYXRlX3Bh dGggPSBOb25lCisgICAgICAgIHNlbGYubWFuYWdlciA9IE5vbmUKKworICAg ICAgICBzdXBlcihKb2JTdGVwVmlldywgc2VsZikuX19pbml0X18oKiprd2Fy Z3MpCisKKyAgICBkZWYgbW9kdWxlX2pzKHNlbGYpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBwcm9wZXJ0eSBkZWZpbmVzIHdoZXRoZXIgamF2YXNj cmlwdCBleGlzdHMgZm9yIHRoaXMgbm9kZS4KKyAgICAgICAgIiIiCisgICAg ICAgIHJldHVybiBtYWtlX3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVuZGVy X3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICJwZ2Ffam9ic3RlcC9qcy9w Z2Ffam9ic3RlcC5qcyIsCisgICAgICAgICAgICAgICAgXz1nZXR0ZXh0Cisg ICAgICAgICAgICApLAorICAgICAgICAgICAgMjAwLCB7J0NvbnRlbnQtVHlw ZSc6ICdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnfQorICAgICAgICApCisK KyAgICBkZWYgY2hlY2tfcHJlY29uZGl0aW9uKGYpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRlY29y YXRvciB3aGljaCB3aWxsIGNoZWNrIHRoZQorICAgICAgICBkYXRhYmFzZSBj b25uZWN0aW9uIGJlZm9yZSBydW5uaW5nIHRoZSB2aWV3LiBJdCBhbHNvIGF0 dGFjaGVzCisgICAgICAgIG1hbmFnZXIsIGNvbm4gJiB0ZW1wbGF0ZV9wYXRo IHByb3BlcnRpZXMgdG8gc2VsZgorICAgICAgICAiIiIKKworICAgICAgICBA d3JhcHMoZikKKyAgICAgICAgZGVmIHdyYXAoKmFyZ3MsICoqa3dhcmdzKToK KyAgICAgICAgICAgICMgSGVyZSBhcmdzWzBdIHdpbGwgaG9sZCBzZWxmICYg a3dhcmdzIHdpbGwgaG9sZCBnaWQsc2lkLGppZAorICAgICAgICAgICAgc2Vs ZiA9IGFyZ3NbMF0KKyAgICAgICAgICAgIHNlbGYuZHJpdmVyID0gZ2V0X2Ry aXZlcihQR19ERUZBVUxUX0RSSVZFUikKKyAgICAgICAgICAgIHNlbGYubWFu YWdlciA9IHNlbGYuZHJpdmVyLmNvbm5lY3Rpb25fbWFuYWdlcihrd2FyZ3Nb J3NpZCddKQorICAgICAgICAgICAgc2VsZi5jb25uID0gc2VsZi5tYW5hZ2Vy LmNvbm5lY3Rpb24oKQorCisgICAgICAgICAgICBzZWxmLnRlbXBsYXRlX3Bh dGggPSAncGdhX2pvYnN0ZXAvc3FsL3ByZTMuNCcKKworICAgICAgICAgICAg aWYgbm90ICgncGdBZ2VudCcgaW4gc2VsZi5tYW5hZ2VyLmRiX2luZm8pOgor ICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdCgiIiIKK1NFTEVDVCBFWElTVFMoCisgICAgICAgIFNFTEVDVCAx IEZST00gaW5mb3JtYXRpb25fc2NoZW1hLmNvbHVtbnMKKyAgICAgICAgV0hF UkUKKyAgICAgICAgICAgIHRhYmxlX3NjaGVtYT0ncGdhZ2VudCcgQU5EIHRh YmxlX25hbWU9J3BnYV9qb2JzdGVwJyBBTkQKKyAgICAgICAgICAgIGNvbHVt bl9uYW1lPSdqc3Rjb25uc3RyJworICAgICkgaGFzX2Nvbm5zdHIiIiIpCisK KyAgICAgICAgICAgICAgICBzZWxmLm1hbmFnZXIuZGJfaW5mb1sncGdBZ2Vu dCddID0gcmVzWydyb3dzJ11bMF0KKworICAgICAgICAgICAgcmV0dXJuIGYo KmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIHJldHVybiB3cmFwCisKKyAg ICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGxpc3Qoc2VsZiwgZ2lk LCBzaWQsIGppZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0 aW9uIGlzIHVzZWQgdG8gbGlzdCBhbGwgdGhlIGxhbmd1YWdlIG5vZGVzIHdp dGhpbiB0aGF0IGNvbGxlY3Rpb24uCisKKyAgICAgICAgQXJnczoKKyAgICAg ICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAgICBzaWQ6 IFNlcnZlciBJRAorICAgICAgICAgICAgamlkOiBKb2IgSUQKKyAgICAgICAg IiIiCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAg ICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVz LnNxbCddKSwKKyAgICAgICAgICAgIGppZD1qaWQsCisgICAgICAgICAgICBo YXNfY29ubnN0cj1zZWxmLm1hbmFnZXIuZGJfaW5mb1sncGdBZ2VudCddWydo YXNfY29ubnN0ciddCisgICAgICAgICkKKyAgICAgICAgc3RhdHVzLCByZXMg PSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgcmV0dXJuIGFqYXhf cmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1yZXNbJ3Jvd3MnXSwK KyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBub2RlcyhzZWxmLCBnaWQsIHNp ZCwgamlkLCBqc3RpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRo aXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjcmVhdGUgYWxsIHRoZSBjaGlsZCBu b2RlcyB3aXRoaW4gdGhlIGNvbGxlY3Rpb24uCisgICAgICAgIEhlcmUgaXQg d2lsbCBjcmVhdGUgYWxsIHRoZSBsYW5ndWFnZSBub2Rlcy4KKworICAgICAg ICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAg ICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgICBqaWQ6IEpv YiBJRAorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAg c3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwgJ25vZGVzLnNxbCddKSwKKyAgICAgICAg ICAgIGpzdGlkID0ganN0aWQsCisgICAgICAgICAgICBqaWQgPSBqaWQKKyAg ICAgICAgKQorCisgICAgICAgIHN0YXR1cywgcmVzdWx0ID0gc2VsZi5jb25u LmV4ZWN1dGVfMmRhcnJheShzcWwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzdWx0KQorCisgICAgICAgIGlmIGpzdGlkIGlzIG5vdCBO b25lOgorICAgICAgICAgICAgaWYgbGVuKHJlc3VsdFsncm93cyddKSA9PSAw OgorICAgICAgICAgICAgICAgIHJldHVybiBnb25lKGVycm9ybXNnPSJDb3Vs ZG4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgam9iIHN0ZXAuIikKKworICAgICAg ICAgICAgcm93ID0gcmVzdWx0Wydyb3dzJ11bMF0KKyAgICAgICAgICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgc2Vs Zi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAg ICAgICAgICAgICByb3dbJ2pzdGlkJ10sCisgICAgICAgICAgICAgICAgICAg IHJvd1snanN0am9iaWQnXSwKKyAgICAgICAgICAgICAgICAgICAgcm93Wydq c3RuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgIGljb249Imljb24tcGdh X2pvYnN0ZXAiLAorICAgICAgICAgICAgICAgICAgICBlbmFibGVkPXJvd1sn anN0ZW5hYmxlZCddLAorICAgICAgICAgICAgICAgICAgICBraW5kPXJvd1sn anN0a2luZCddCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQor CisgICAgICAgIGZvciByb3cgaW4gcmVzdWx0Wydyb3dzJ106CisgICAgICAg ICAgICByZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuYmx1ZXBy aW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICAg ICAgcm93Wydqc3RpZCddLAorICAgICAgICAgICAgICAgICAgICByb3dbJ2pz dGpvYmlkJ10sCisgICAgICAgICAgICAgICAgICAgIHJvd1snanN0bmFtZSdd LAorICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLXBnYV9qb2JzdGVw IiwKKyAgICAgICAgICAgICAgICAgICAgZW5hYmxlZD1yb3dbJ2pzdGVuYWJs ZWQnXSwKKyAgICAgICAgICAgICAgICAgICAga2luZD1yb3dbJ2pzdGtpbmQn XQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgICAg ICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0 YT1yZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKwor ICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVydGllcyhz ZWxmLCBnaWQsIHNpZCwgamlkLCBqc3RpZCk6CisgICAgICAgICIiIgorICAg ICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2hvdyB0aGUgcHJvcGVydGllcyBv ZiB0aGUgc2VsZWN0ZWQgbGFuZ3VhZ2Ugbm9kZS4KKworICAgICAgICBBcmdz OgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAg ICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgICBqaWQ6IEpvYiBJRAor ICAgICAgICAgICAganN0aWQ6IEpvYlN0ZXAgSUQKKyAgICAgICAgIiIiCisg ICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCdd KSwKKyAgICAgICAgICAgIGpzdGlkPWpzdGlkLAorICAgICAgICAgICAgamlk PWppZCwKKyAgICAgICAgICAgIGhhc19jb25uc3RyPXNlbGYubWFuYWdlci5k Yl9pbmZvWydwZ0FnZW50J11bJ2hhc19jb25uc3RyJ10KKyAgICAgICAgKQor ICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qo c3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6CisgICAgICAgICAg ICByZXR1cm4gZ29uZShlcnJvcm1zZz0iQ291bGRuJ3QgZmluZCB0aGUgc3Bl Y2lmaWVkIGpvYiBzdGVwLiIpCisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVz cG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1yZXNbJ3Jvd3MnXVswXSwK KyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBjcmVhdGUoc2VsZiwgZ2lkLCBz aWQsIGppZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9u IHdpbGwgdXBkYXRlIHRoZSBkYXRhIGZvciB0aGUgc2VsZWN0ZWQgbGFuZ3Vh Z2Ugbm9kZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBT ZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisg ICAgICAgICAgICBqaWQ6IEpvYiBJRAorICAgICAgICAiIiIKKyAgICAgICAg ZGF0YSA9IHt9CisgICAgICAgIGZvciBrLCB2IGluIHJlcXVlc3QuYXJncy5p dGVtcygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRh dGFba10gPSBqc29uLmxvYWRzKAorICAgICAgICAgICAgICAgICAgICB2LmRl Y29kZSgndXRmLTgnKSBpZiBoYXNhdHRyKHYsICdkZWNvZGUnKSBlbHNlIHYK KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgVmFsdWVF cnJvcjoKKyAgICAgICAgICAgICAgICBkYXRhW2tdID0gdgorCisgICAgICAg IHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAg ICAgICAgamlkPWppZCwKKyAgICAgICAgICAgIGRhdGE9ZGF0YSwKKyAgICAg ICAgICAgIGhhc19jb25uc3RyPXNlbGYubWFuYWdlci5kYl9pbmZvWydwZ0Fn ZW50J11bJ2hhc19jb25uc3RyJ10KKyAgICAgICAgKQorCisgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKHNxbCkKKwor ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg c3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwgJ25vZGVzLnNxbCddKSwKKyAgICAgICAg ICAgIGpzdGlkID0gcmVzLAorICAgICAgICAgICAgamlkID0gamlkCisgICAg ICAgICkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV8yZGFycmF5KHNxbCkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgcm93ID0gcmVzWydyb3dzJ11bMF0KKyAgICAg ICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgIGRh dGE9c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAg ICAgICAgICAgICAgIHJvd1snanN0aWQnXSwKKyAgICAgICAgICAgICAgICBy b3dbJ2pzdGpvYmlkJ10sCisgICAgICAgICAgICAgICAgcm93Wydqc3RuYW1l J10sCisgICAgICAgICAgICAgICAgaWNvbj0iaWNvbi1wZ2Ffam9ic3RlcCIK KyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNv bmRpdGlvbgorICAgIGRlZiB1cGRhdGUoc2VsZiwgZ2lkLCBzaWQsIGppZCwg anN0aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3 aWxsIHVwZGF0ZSB0aGUgZGF0YSBmb3IgdGhlIHNlbGVjdGVkIGxhbmd1YWdl IG5vZGUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2Vy dmVyIEdyb3VwIElECisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAg ICAgICAgICAgamlkOiBKb2IgSUQKKyAgICAgICAgICAgIGpzdGlkOiBKb2JT dGVwIElECisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gcmVxdWVzdC5m b3JtIGlmIHJlcXVlc3QuZm9ybSBlbHNlIGpzb24ubG9hZHMoCisgICAgICAg ICAgICByZXF1ZXN0LmRhdGEuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgICkK KworICAgICAgICBpZiAoCisgICAgICAgICAgICBzZWxmLm1hbmFnZXIuZGJf aW5mb1sncGdBZ2VudCddWydoYXNfY29ubnN0ciddIGFuZAorICAgICAgICAg ICAgJ2pzdGNvbm50eXBlJyBub3QgaW4gZGF0YSBhbmQKKyAgICAgICAgICAg ICgnanN0ZGJuYW1lJyBpbiBkYXRhIG9yICdqc3Rjb25uc3RyJyBpbiBkYXRh KQorICAgICAgICApOgorICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICBq c3RpZD1qc3RpZCwKKyAgICAgICAgICAgICAgICBqaWQ9amlkLAorICAgICAg ICAgICAgICAgIGhhc19jb25uc3RyPXNlbGYubWFuYWdlci5kYl9pbmZvWydw Z0FnZW50J11bJ2hhc19jb25uc3RyJ10KKyAgICAgICAgICAgICkKKyAgICAg ICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChz cWwpCisKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y ZXMpCisKKyAgICAgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoK KyAgICAgICAgICAgICAgICByZXR1cm4gZ29uZSgKKyAgICAgICAgICAgICAg ICAgICAgZXJyb3Jtc2c9Z2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAg ICAgICJDb3VsZG4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgam9iIHN0ZXAuIgor ICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAg ICAgICAgICAgcm93ID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgICAgIGRh dGFbJ2pzdGNvbm50eXBlJ10gPSByb3dbJ2pzdGNvbm50eXBlJ10KKworICAg ICAgICAgICAgaWYgcm93Wydqc3Rjb25udHlwZSddOgorICAgICAgICAgICAg ICAgIGlmIG5vdCAoJ2pzdGRibmFtZScgaW4gZGF0YSk6CisgICAgICAgICAg ICAgICAgICAgIGRhdGFbJ2pzdGRibmFtZSddID0gcm93Wydqc3RkYm5hbWUn XQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBub3Qg KCdqc3Rjb25uc3RyJyBpbiBkYXRhKToKKyAgICAgICAgICAgICAgICAgICAg ZGF0YVsnanN0Y29ubnN0ciddID0gcm93Wydqc3Rjb25uc3RyJ10KKworICAg ICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKKyAg ICAgICAgICAgIGppZD1qaWQsCisgICAgICAgICAgICBqc3RpZD1qc3RpZCwK KyAgICAgICAgICAgIGRhdGE9ZGF0YSwKKyAgICAgICAgICAgIGhhc19jb25u c3RyPXNlbGYubWFuYWdlci5kYl9pbmZvWydwZ0FnZW50J11bJ2hhc19jb25u c3RyJ10KKyAgICAgICAgKQorCisgICAgICAgIHN0YXR1cywgcmVzID0gc2Vs Zi5jb25uLmV4ZWN1dGVfdm9pZChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1w bGF0ZSgKKyAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdub2Rlcy5zcWwnXSksCisgICAgICAgICAgICBqc3RpZCA9IGpzdGlk LAorICAgICAgICAgICAgamlkID0gamlkCisgICAgICAgICkKKyAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KHNxbCkK KworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAg ICAgcm93ID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgIHNlbGYuYmx1ZXByaW50Lmdl bmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICByb3dbJ2pz dGlkJ10sCisgICAgICAgICAgICAgICAgcm93Wydqc3Rqb2JpZCddLAorICAg ICAgICAgICAgICAgIHJvd1snanN0bmFtZSddLAorICAgICAgICAgICAgICAg IGljb249Imljb24tcGdhX2pvYnN0ZXAiCisgICAgICAgICAgICApCisgICAg ICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbXNx bChzZWxmLCBnaWQsIHNpZCwgamlkLCBqc3RpZD1Ob25lKToKKyAgICAgICAg IiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byByZXR1cm4g bW9kaWZpZWQgU1FMIGZvciB0aGUgc2VsZWN0ZWQgbGFuZ3VhZ2Ugbm9kZS4K KworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3Jv dXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAg ICBqaWQ6IEpvYiBJRAorICAgICAgICAgICAganN0aWQ6IEpvYiBTdGVwIElE CisgICAgICAgICIiIgorICAgICAgICBkYXRhID0ge30KKyAgICAgICAgc3Fs ID0gJycKKyAgICAgICAgZm9yIGssIHYgaW4gcmVxdWVzdC5hcmdzLml0ZW1z KCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGF0YVtr XSA9IGpzb24ubG9hZHMoCisgICAgICAgICAgICAgICAgICAgIHYuZGVjb2Rl KCd1dGYtOCcpIGlmIGhhc2F0dHIodiwgJ2RlY29kZScpIGVsc2UgdgorICAg ICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9y OgorICAgICAgICAgICAgICAgIGRhdGFba10gPSB2CisKKyAgICAgICAgaWYg anN0aWQgaXMgTm9uZToKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1w bGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICBqaWQ9 amlkLAorICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwKKyAgICAgICAgICAg ICAgICBoYXNfY29ubnN0cj1zZWxmLm1hbmFnZXIuZGJfaW5mb1sncGdBZ2Vu dCddWydoYXNfY29ubnN0ciddCisgICAgICAgICAgICApCisgICAgICAgIGVs c2U6CisgICAgICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAgc2VsZi5t YW5hZ2VyLmRiX2luZm9bJ3BnQWdlbnQnXVsnaGFzX2Nvbm5zdHInXSBhbmQK KyAgICAgICAgICAgICAgICAnanN0Y29ubnR5cGUnIG5vdCBpbiBkYXRhIGFu ZAorICAgICAgICAgICAgICAgICgnanN0ZGJuYW1lJyBpbiBkYXRhIG9yICdq c3Rjb25uc3RyJyBpbiBkYXRhKQorICAgICAgICAgICAgKToKKyAgICAgICAg ICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAg ICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0 aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAganN0aWQ9anN0aWQs CisgICAgICAgICAgICAgICAgICAgIGppZD1qaWQsCisgICAgICAgICAgICAg ICAgICAgIGhhc19jb25uc3RyPXNlbGYubWFuYWdlci5kYl9pbmZvWydwZ0Fn ZW50J11bJ2hhc19jb25uc3RyJ10KKyAgICAgICAgICAgICAgICApCisgICAg ICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KHNxbCkKKworICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAgICAgaWYgbGVuKHJl c1sncm93cyddKSA9PSAwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g Z29uZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ybXNnPWdldHRl eHQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGZp bmQgdGhlIHNwZWNpZmllZCBqb2Igc3RlcC4iCisgICAgICAgICAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg ICAgICByb3cgPSByZXNbJ3Jvd3MnXVswXQorICAgICAgICAgICAgICAgIGRh dGFbJ2pzdGNvbm50eXBlJ10gPSByb3dbJ2pzdGNvbm50eXBlJ10KKworICAg ICAgICAgICAgICAgIGlmIHJvd1snanN0Y29ubnR5cGUnXToKKyAgICAgICAg ICAgICAgICAgICAgaWYgbm90ICgnanN0ZGJuYW1lJyBpbiBkYXRhKToKKyAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2pzdGRibmFtZSddID0gcm93 Wydqc3RkYm5hbWUnXQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg ICAgICAgICAgICAgIGlmIG5vdCAoJ2pzdGNvbm5zdHInIGluIGRhdGEpOgor ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsnanN0Y29ubnN0ciddID0g cm93Wydqc3Rjb25uc3RyJ10KKworICAgICAgICAgICAgc3FsID0gcmVuZGVy X3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsICd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAg IGppZD1qaWQsCisgICAgICAgICAgICAgICAganN0aWQ9anN0aWQsCisgICAg ICAgICAgICAgICAgZGF0YT1kYXRhLAorICAgICAgICAgICAgICAgIGhhc19j b25uc3RyPXNlbGYubWFuYWdlci5kYl9pbmZvWydwZ0FnZW50J11bJ2hhc19j b25uc3RyJ10KKyAgICAgICAgICAgICkKKworICAgICAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1zcWwsCisgICAg ICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgc3RhdGlzdGljcyhzZWxmLCBnaWQsIHNp ZCwgamlkLCBqc3RpZCk6CisgICAgICAgICIiIgorICAgICAgICBzdGF0aXN0 aWNzCisgICAgICAgIFJldHVybnMgdGhlIHN0YXRpc3RpY3MgZm9yIGEgcGFy dGljdWxhciBkYXRhYmFzZSBpZiBqaWQgaXMgc3BlY2lmaWVkLAorICAgICAg ICBvdGhlcndpc2UgaXQgd2lsbCByZXR1cm4gc3RhdGlzdGljcyBmb3IgYWxs IHRoZSBkYXRhYmFzZXMgaW4gdGhhdAorICAgICAgICBzZXJ2ZXIuCisgICAg ICAgICIiIgorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVj dXRlX2RpY3QoCisgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisgICAg ICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3N0 YXRzLnNxbCddKSwKKyAgICAgICAgICAgICAgICBqaWQ9amlkLCBqc3RpZD1q c3RpZCwgY29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAgICkKKyAgICAgICAg KQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAg ICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAg ZGF0YT1yZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkK KworCitKb2JTdGVwVmlldy5yZWdpc3Rlcl9ub2RlX3ZpZXcoYmx1ZXByaW50 KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvcGdBZ2VudC9zdGVwcy9zdGF0aWMvaW1nL2NvbGwtcGdh X2pvYnN0ZXAucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvcGdBZ2VudC9zdGVwcy9zdGF0aWMvaW1nL2NvbGwtcGdh X2pvYnN0ZXAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjUxYjg2YTcKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50 L3N0ZXBzL3N0YXRpYy9pbWcvY29sbC1wZ2Ffam9ic3RlcC5wbmcgZGlmZmVy CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9wZ0FnZW50L3N0ZXBzL3N0YXRpYy9pbWcvcGdhX2pvYnN0 ZXAucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvcGdBZ2VudC9zdGVwcy9zdGF0aWMvaW1nL3BnYV9qb2JzdGVwLnBu ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmY4OThh CkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zdGVwcy9zdGF0 aWMvaW1nL3BnYV9qb2JzdGVwLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdl bnQvc3RlcHMvdGVtcGxhdGVzL3BnYV9qb2JzdGVwL2Nzcy9wZ2Ffc3RlcC5j c3MgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9wZ0FnZW50L3N0ZXBzL3RlbXBsYXRlcy9wZ2Ffam9ic3RlcC9jc3MvcGdh X3N0ZXAuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmMzOTY2MDQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3N0ZXBzL3RlbXBs YXRlcy9wZ2Ffam9ic3RlcC9jc3MvcGdhX3N0ZXAuY3NzCkBAIC0wLDAgKzEs NyBAQAorLmljb24tcGdhX2pvYnN0ZXAgeworICBiYWNrZ3JvdW5kLWltYWdl OiB1cmwoJ3t7IHVybF9mb3IoJ05PREUtcGdhX2pvYnN0ZXAuc3RhdGljJywg ZmlsZW5hbWU9J2ltZy9wZ2Ffam9ic3RlcC5wbmcnKSB9fScpICFpbXBvcnRh bnQ7CisgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIGFsaWdu LWNvbnRlbnQ6IGNlbnRlcjsKKyAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsK KyAgaGVpZ2h0OiAxLjNlbTsKK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc3RlcHMv dGVtcGxhdGVzL3BnYV9qb2JzdGVwL2pzL3BnYV9qb2JzdGVwLmpzIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2Vu dC9zdGVwcy90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvanMvcGdhX2pvYnN0ZXAu anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMyZGU1 NQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc3RlcHMvdGVtcGxhdGVzL3Bn YV9qb2JzdGVwL2pzL3BnYV9qb2JzdGVwLmpzCkBAIC0wLDAgKzEsMjU3IEBA CitkZWZpbmUoWworICAgICAgICAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAn dW5kZXJzY29yZS5zdHJpbmcnLCAncGdhZG1pbicsCisgICAgICAgICdwZ2Fk bWluLmJyb3dzZXInLCAnYWxlcnRpZnknLCAnYmFja2Zvcm0nLCAncGdhZG1p bi5iYWNrZm9ybScKKyAgICAgICAgXSwKK2Z1bmN0aW9uKCQsIF8sIFMsIHBn QWRtaW4sIHBnQnJvd3NlciwgQWxlcnRpZnksIEJhY2tmb3JtKSB7CisKKyAg aWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtcGdhX2pvYnN0ZXAnXSkgewor ICAgIHBnQnJvd3Nlci5Ob2Rlc1snY29sbC1wZ2Ffam9ic3RlcCddID0KKyAg ICAgIHBnQnJvd3Nlci5Db2xsZWN0aW9uLmV4dGVuZCh7CisgICAgICAgIG5v ZGU6ICdwZ2Ffam9ic3RlcCcsCisgICAgICAgIGxhYmVsOiAne3sgXygnU3Rl cHMnKSB9fScsCisgICAgICAgIHR5cGU6ICdjb2xsLXBnYV9qb2JzdGVwJywK KyAgICAgICAgY29sdW1uczogWworICAgICAgICAgICdqc3RpZCcsICdqc3Ru YW1lJywgJ2pzdGVuYWJsZWQnLCAnanN0a2luZCcsICdqc3Rjb25udHlwZScs CisgICAgICAgICAgJ2pzdG9uZXJyb3InCisgICAgICAgIF0sCisgICAgICAg IGhhc1N0YXRpc3RpY3M6IGZhbHNlCisgICAgICB9KTsKKyAgfQorCisgIGlm ICghcGdCcm93c2VyLk5vZGVzWydwZ2Ffam9ic3RlcCddKSB7CisgICAgcGdC cm93c2VyLk5vZGVzWydwZ2Ffam9ic3RlcCddID0gcGdCcm93c2VyLk5vZGUu ZXh0ZW5kKHsKKyAgICAgIHBhcmVudF90eXBlOiAncGdhX2pvYicsCisgICAg ICB0eXBlOiAncGdhX2pvYnN0ZXAnLAorICAgICAgaGFzU1FMOiB0cnVlLAor ICAgICAgaGFzRGVwZW5kczogZmFsc2UsCisgICAgICBoYXNTdGF0aXN0aWNz OiB0cnVlLAorICAgICAgaGFzQ29sbGVjdGl2ZVN0YXRpc3RpY3M6IHRydWUs CisgICAgICB3aWR0aDogJzcwJScsCisgICAgICBoZWlnaHQ6ICc4MCUnLAor ICAgICAgY2FuRHJvcDogZnVuY3Rpb24obm9kZSkgeworICAgICAgICByZXR1 cm4gdHJ1ZTsKKyAgICAgIH0sCisgICAgICBsYWJlbDogJ3t7IF8oJ1N0ZXBz JykgfX0nLAorICAgICAgbm9kZV9pbWFnZTogZnVuY3Rpb24oKSB7CisgICAg ICAgIGNvbnNvbGUubG9nKGFyZ3VtZW50cyk7CisgICAgICAgIHJldHVybiAn aWNvbi1wZ2Ffam9ic3RlcCc7CisgICAgICB9LAorICAgICAgSW5pdDogZnVu Y3Rpb24oKSB7CisgICAgICAgIC8qIEF2b2lkIG11bGl0cGxlIHJlZ2lzdHJh dGlvbiBvZiBtZW51cyAqLworICAgICAgICBpZiAodGhpcy5pbml0aWFsaXpl ZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmluaXRp YWxpemVkID0gdHJ1ZTsKKworICAgICAgICBwZ0Jyb3dzZXIuYWRkX21lbnVz KFt7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9wZ2Ffam9ic3RlcF9vbl9q b2InLCBub2RlOiAncGdhX2pvYicsIG1vZHVsZTogdGhpcywKKyAgICAgICAg ICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAn c2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdj cmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdKb2IgU3RlcC4u LicpIH19JywKKyAgICAgICAgICBkYXRhOiB7J2FjdGlvbic6ICdjcmVhdGUn fSwgaWNvbjogJ3djVGFiSWNvbiBpY29uLXBnYV9qb2JzdGVwJworICAgICAg ICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX3BnYV9qb2JzdGVwX29u X2NvbGwnLCBub2RlOiAnY29sbC1wZ2Ffam9ic3RlcCcsIG1vZHVsZTogdGhp cywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10s IGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAg Y2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBf KCdKb2IgU3RlcC4uLicpIH19JywKKyAgICAgICAgICBkYXRhOiB7J2FjdGlv bic6ICdjcmVhdGUnfSwgaWNvbjogJ3djVGFiSWNvbiBpY29uLXBnYV9qb2Jz dGVwJworICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX3Bn YV9qb2JzdGVwJywgbm9kZTogJ3BnYV9qb2JzdGVwJywgbW9kdWxlOiB0aGlz LAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwg Y2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBj YXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8o J0pvYiBTdGVwLi4uJykgfX0nLAorICAgICAgICAgIGRhdGE6IHsnYWN0aW9u JzogJ2NyZWF0ZSd9LCBpY29uOiAnd2NUYWJJY29uIGljb24tcGdhX2pvYnN0 ZXAnCisgICAgICAgIH1dKTsKKyAgICAgIH0sCisgICAgICBtb2RlbDogcGdC cm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgZGVmYXVsdHM6 IHsKKyAgICAgICAgICBqc3RpZDogbnVsbCwKKyAgICAgICAgICBqc3Rqb2Jp ZDogbnVsbCwKKyAgICAgICAgICBqc3RuYW1lOiAnJywKKyAgICAgICAgICBq c3RkZXNjOiAnJywKKyAgICAgICAgICBqc3RlbmFibGVkOiB0cnVlLAorICAg ICAgICAgIGpzdGtpbmQ6IHRydWUsCisgICAgICAgICAganN0Y29ubnR5cGU6 IHRydWUsCisgICAgICAgICAganN0Y29kZTogJycsCisgICAgICAgICAganN0 Y29ubnN0cjogbnVsbCwKKyAgICAgICAgICBqc3RkYm5hbWU6IG51bGwsCisg ICAgICAgICAganN0b25lcnJvcjogJ2YnLAorICAgICAgICAgIGpzdG5leHRy dW46ICcnCisgICAgICAgIH0sCisgICAgICAgIGluaXRpYWxpemU6IGZ1bmN0 aW9uKCkgeworICAgICAgICAgIHBnQnJvd3Nlci5Ob2RlLk1vZGVsLnByb3Rv dHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAg ICAgICAgaWYgKHRoaXMuaXNOZXcoKSAmJiB0aGlzLmdldCgnanN0Y29ubnR5 cGUnKSkgeworICAgICAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMgJiYg YXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdOworCisgICAg ICAgICAgICBpZiAoYXJncykgeworICAgICAgICAgICAgICB0aGlzLnNldCgK KyAgICAgICAgICAgICAgICAnanN0ZGJuYW1lJywKKyAgICAgICAgICAgICAg ICAoYXJnc1snbm9kZV9pbmZvJ10gfHwgYXJncy5jb2xsZWN0aW9uLnRvcFsn bm9kZV9pbmZvJ10pWydzZXJ2ZXInXVsnZGInXQorICAgICAgICAgICAgICAp OworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg ICAgICAgaWRBdHRyaWJ1dGU6ICdqc3RpZCcsCisgICAgICAgIHNjaGVtYTog W3sKKyAgICAgICAgICBpZDogJ2pzdGlkJywgbGFiZWw6ICd7eyBfKCdJRCcp IH19JywgdHlwZTogJ2ludGVnZXInLAorICAgICAgICAgIGNlbGxIZWFkZXJD bGFzc2VzOiAnd2lkdGhfcGVyY2VudF81JywgbW9kZTogWydwcm9wZXJ0aWVz J10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdqc3RuYW1lJywgbGFi ZWw6ICd7eyBfKCdOYW1lJykgfX0nLCB0eXBlOiAndGV4dCcsCisgICAgICAg ICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsgcmV0dXJuIGZhbHNlOyB9LAor ICAgICAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF82 MCcKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdqc3RlbmFibGVkJywg bGFiZWw6ICd7eyBfKCdFbmFibGVkJykgfX0nLCB0eXBlOiAnc3dpdGNoJywK KyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeyByZXR1cm4gZmFs c2U7IH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdqc3RraW5kJywg bGFiZWw6ICd7eyBfKCdLaW5kJykgfX0nLCB0eXBlOiAnc3dpdGNoJywKKyAg ICAgICAgICBvcHRpb25zOiB7CisgICAgICAgICAgICAnb25UZXh0JzogJ3t7 IF8oJ1NRTCcpIH19JywgJ29mZlRleHQnOiAne3sgXygnQmF0Y2gnKSB9fScs CisgICAgICAgICAgICAnb25Db2xvcic6ICdwcmltYXJ5JywgJ29mZkNvbG9y JzogJ3ByaW1hcnknCisgICAgICAgICAgfSwgY29udHJvbDogQmFja2Zvcm0u U3dpdGNoQ29udHJvbCwKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24o bSkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgfSx7CisgICAgICAgICAg aWQ6ICdqc3Rjb25udHlwZScsIGxhYmVsOiAne3sgXygnQ29ubmVjdGlvbiB0 eXBlJykgfX0nLAorICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBkZXBzOiBb J2pzdGtpbmQnXSwKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkg eyByZXR1cm4gIW0uZ2V0KCdqc3RraW5kJyk7IH0sCisgICAgICAgICAgb3B0 aW9uczogeworICAgICAgICAgICAgJ29uVGV4dCc6ICd7eyBfKCdMb2NhbCcp IH19JywgJ29mZlRleHQnOiAne3sgXygnUmVtb3RlJykgfX0nLAorICAgICAg ICAgICAgJ29uQ29sb3InOiAncHJpbWFyeScsICdvZmZDb2xvcic6ICdwcmlt YXJ5JworICAgICAgICAgIH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6 ICdqc3RkYm5hbWUnLCBsYWJlbDogJ3t7IF8oJ0RhdGFiYXNlJykgfX0nLCB0 eXBlOiAndGV4dCcsCisgICAgICAgICAgbW9kZTogWydwcm9wZXJ0aWVzJ10s IGRpc2FibGVkOiBmdW5jdGlvbihtKSB7IHJldHVybiBmYWxzZTsgfQorICAg ICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pzdGNvbm5zdHInLCB0eXBlOiAn dGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddLAorICAgICAgICAgIGxhYmVs OiAne3sgXygnQ29ubmVjdGlvbiBzdHJpbmcnKSB9fScKKyAgICAgICAgfSx7 CisgICAgICAgICAgaWQ6ICdqc3RkYm5hbWUnLCBsYWJlbDogJ3t7IF8oJ0Rh dGFiYXNlJykgfX0nLCB0eXBlOiAndGV4dCcsCisgICAgICAgICAgY29udHJv bDogJ25vZGUtbGlzdC1ieS1uYW1lJywgbm9kZTogJ2RhdGFiYXNlJywKKyAg ICAgICAgICBjYWNoZV9ub2RlOiAnZGF0YWJhc2UnLCBzZWxlY3QyOiB7YWxs b3dDbGVhcjogdHJ1ZSwgcGxhY2Vob2xkZXI6ICcnfSwKKyAgICAgICAgICBk aXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgcmV0dXJuICFt LmdldCgnanN0a2luZCcpIHx8ICFtLmdldCgnanN0Y29ubnR5cGUnKTsKKyAg ICAgICAgICB9LCBkZXBzOiBbJ2pzdGtpbmQnLCAnanN0Y29ubnR5cGUnXSwg bW9kZTogWydjcmVhdGUnLCAnZWRpdCddLAorICAgICAgICAgIGhlbHBNZXNz YWdlOiAne3sgXygnUGxlYXNlIHNlbGVjdCBhIGRhdGFiYXNlIGZyb20gdGhl IGxpc3QuJykgfX0nLAorICAgICAgICAgIHZpc2libGU6IGZ1bmN0aW9uKG0p IHsgcmV0dXJuIG0uZ2V0KCdqc3Rjb25udHlwZScpOyB9CisgICAgICAgIH0s eworICAgICAgICAgIGlkOiAnanN0Y29ubnN0cicsIGxhYmVsOiAne3sgXygn Q29ubmVjdGlvbiBzdHJpbmcnKSB9fScsIHR5cGU6ICd0ZXh0JywKKyAgICAg ICAgICBkZXBzOiBbJ2pzdGtpbmQnLCAnanN0Y29ubnR5cGUnXSwgZGlzYWJs ZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHJldHVybiAhbS5nZXQo J2pzdGtpbmQnKSB8fCBtLmdldCgnanN0Y29ubnR5cGUnKTsKKyAgICAgICAg ICB9LCBoZWxwTWVzc2FnZTogUygKKyAgICAgICAgICAgICd7eyBfKCJQbGVh c2Ugc3BlY2lmeSB0aGUgY29ubmVjdGlvbiBzdHJpbmcgZm9yIHRoZSByZW1v dGUgZGF0YWJhc2Ugc2VydmVyLiBFYWNoIHBhcmFtZXRlciBzZXR0aW5nIGlz IGluIHRoZSBmb3JtIGtleXdvcmQgPSB2YWx1ZS4gU3BhY2VzIGFyb3VuZCB0 aGUgZXF1YWwgc2lnbiBhcmUgb3B0aW9uYWwuIFRvIHdyaXRlIGFuIGVtcHR5 IHZhbHVlLCBvciBhIHZhbHVlIGNvbnRhaW5pbmcgc3BhY2VzLCBzdXJyb3Vu ZCBpdCB3aXRoIHNpbmdsZSBxdW90ZXMsIGUuZy4sIGtleXdvcmQgPSBcXCdh IHZhbHVlXFwnLiBTaW5nbGUgcXVvdGVzIGFuZCBiYWNrc2xhc2hlcyB3aXRo aW4gdGhlIHZhbHVlIG11c3QgYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNo LCBpLmUuLCBcXFwnIGFuZCBcXFxcLjxicj5SZWZlcmVuY2U6ICVzIikgfX0n CisgICAgICAgICAgKS5zcHJpbnRmKAorICAgICAgICAgICAgJzxhIGhyZWY9 Imh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvY3VycmVudC9zdGF0 aWMvbGlicHEtY29ubmVjdC5odG1sI0xJQlBRLUNPTk5TVFJJTkciIHRhcmdl dD0iX2JsYW5rIj5MaWJQUSBjb25uZWN0aW9uIHN0cmluZ3M8L2E+JworICAg ICAgICAgICkudmFsdWUoKSwgbW9kZTogWydjcmVhdGUnLCAnZWRpdCddLAor ICAgICAgICAgIHZpc2libGU6IGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtLmdl dCgnanN0Y29ubnR5cGUnKTsgfQorICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ2pzdG9uZXJyb3InLCBsYWJlbDogJ3t7IF8oJ09uIGVycm9yJykgfX0n LCBjZWxsOiAnc2VsZWN0MicsCisgICAgICAgICAgY29udHJvbDogJ3NlbGVj dDInLCBvcHRpb25zOiBbCisgICAgICAgICAgICB7J2xhYmVsJzogJ3t7IF8o IkZhaWwiKSB9fScsICd2YWx1ZSc6ICJmIn0sCisgICAgICAgICAgICB7J2xh YmVsJzogJ3t7IF8oIlN1Y2Nlc3MiKSB9fScsICd2YWx1ZSc6ICJzIn0sCisg ICAgICAgICAgICB7J2xhYmVsJzogJ3t7IF8oIklnbm9yZSIpIH19JywgJ3Zh bHVlJzogImkifQorICAgICAgICAgIF0sIHNlbGVjdDI6IHthbGxvd0NsZWFy OiBmYWxzZX0sIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAg ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAg ICAgICAgICBpZDogJ2pzdGRlc2MnLCBsYWJlbDogJ3t7IF8oJ0NvbW1lbnQn KSB9fScsIHR5cGU6ICdtdWx0aWxpbmUnCisgICAgICAgIH0seworICAgICAg ICAgIGlkOiAnanN0Y29kZScsIGxhYmVsOiAne3sgXygnU2NyaXB0JykgIH19 JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBj b250cm9sOiAnc3FsLWZpZWxkJworICAgICAgICB9XSwKKyAgICAgICAgdmFs aWRhdGU6IGZ1bmN0aW9uKGtleXMpIHsKKyAgICAgICAgICB2YXIgdmFsID0g dGhpcy5nZXQoJ2pzdG5hbWUnKSwKKyAgICAgICAgICAgICAgZXJyTXNnID0g bnVsbDsKKworICAgICAgICAgIGlmICgKKyAgICAgICAgICAgIF8uaXNVbmRl ZmluZWQodmFsKSB8fCBfLmlzTnVsbCh2YWwpIHx8CisgICAgICAgICAgICBT dHJpbmcodmFsKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnCisg ICAgICAgICAgKSB7CisgICAgICAgICAgICBlcnJNc2cgPSAne3sgXygnTmFt ZSBjYW5ub3QgYmUgZW1wdHkuJykgfX0nOworICAgICAgICAgICAgdGhpcy5l cnJvck1vZGVsLnNldCgnanN0bmFtZScsIGVyck1zZyk7CisgICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgn anN0bmFtZScpOworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAodGhpcy5n ZXQoJ2pzdGtpbmQnKSkgeworICAgICAgICAgICAgaWYgKHRoaXMuZ2V0KCdq c3Rjb25udHlwZScpKSB7CisgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2Rl bC51bnNldCgnanN0Y29ubnN0cicpOworICAgICAgICAgICAgICB2YWwgPSB0 aGlzLmdldCgnanN0ZGJuYW1lJyk7CisgICAgICAgICAgICAgIGlmICgKKyAg ICAgICAgICAgICAgICBfLmlzVW5kZWZpbmVkKHZhbCkgfHwgXy5pc051bGwo dmFsKSB8fAorICAgICAgICAgICAgICAgICAgU3RyaW5nKHZhbCkucmVwbGFj ZSgvXlxzK3xccyskL2csICcnKSA9PSAnJworICAgICAgICAgICAgICApIHsK KyAgICAgICAgICAgICAgICB2YXIgbXNnID0gJ3t7IF8oJ1BsZWFzZSBzZWxl Y3QgYSBkYXRhYmFzZS4nKSB9fSc7CisgICAgICAgICAgICAgICAgZXJyTXNn ID0gZXJyTXNnIHx8IG1zZzsKKyAgICAgICAgICAgICAgICB0aGlzLmVycm9y TW9kZWwuc2V0KCdqc3RkYm5hbWUnLCBtc2cpOworICAgICAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNl dCgnanN0ZGJuYW1lJyk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNl dCgnanN0ZGJuYW1lJyk7CisgICAgICAgICAgICAgIHZhciBtc2csCisgICAg ICAgICAgICAgICAgciA9IC9ccypcYihcdyspXHMqPVxzKignKFteJ1xcXSoo PzpcXC5bXidcXF0qKSopJ3xcdyopL2c7CisgICAgICAgICAgICAgIHZhbCA9 IHRoaXMuZ2V0KCdqc3Rjb25uc3RyJyk7CisgICAgICAgICAgICAgIGlmICgK KyAgICAgICAgICAgICAgICBfLmlzVW5kZWZpbmVkKHZhbCkgfHwgXy5pc051 bGwodmFsKSB8fAorICAgICAgICAgICAgICAgICAgU3RyaW5nKHZhbCkucmVw bGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJworICAgICAgICAgICAgICAp IHsKKyAgICAgICAgICAgICAgICBtc2cgPSAgJ3t7IF8oIlBsZWFzZSBlbnRl ciBhIGNvbm5lY3Rpb24gc3RyaW5nLiIpIH19JzsKKyAgICAgICAgICAgICAg fSBlbHNlIGlmIChTdHJpbmcodmFsKS5yZXBsYWNlKHIsICcnKSAhPSAnJykg eworICAgICAgICAgICAgICAgIG1zZyA9ICd7eyBfKCJQbGVhc2UgZW50ZXIg YSB2YWxpZCBjb25uZWN0aW9uIHN0cmluZy4iKSB9fSc7CisgICAgICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIG0sCisgICAgICAg ICAgICAgICAgICAgIHBhcmFtcyA9IHsKKyAgICAgICAgICAgICAgICAgICAg ICAnaG9zdCc6IHRydWUsICdob3N0YWRkcic6IHRydWUsICdwb3J0JzogdHJ1 ZSwKKyAgICAgICAgICAgICAgICAgICAgICAnZGJuYW1lJzogdHJ1ZSwgJ3Vz ZXInOiB0cnVlLCAncGFzc3dvcmQnOiB0cnVlLAorICAgICAgICAgICAgICAg ICAgICAgICdjb25uZWN0X3RpbWVvdXQnOiB0cnVlLCAnY2xpZW50X2VuY29k aW5nJzogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAnYXBwbGljYXRp b25fbmFtZSc6IHRydWUsICdvcHRpb25zJzogdHJ1ZSwKKyAgICAgICAgICAg ICAgICAgICAgICAnZmFsbGJhY2tfYXBwbGljYXRpb25fbmFtZSc6IHRydWUs ICdzc2xtb2RlJzogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAnc3Ns Y2VydCc6IHRydWUsICdzc2xrZXknOiB0cnVlLCAnc3Nscm9vdGNlcnQnOiB0 cnVlLAorICAgICAgICAgICAgICAgICAgICAgICdzc2xjcmwnOiB0cnVlLCAn a2VlcGFsaXZlcyc6IHRydWUsICdzZXJ2aWNlJzogdHJ1ZSwKKyAgICAgICAg ICAgICAgICAgICAgICAna2VlcGFsaXZlc19pZGxlJzogdHJ1ZSwgJ2tlZXBh bGl2ZXNfaW50ZXJ2YWwnOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAg ICdrZWVwYWxpdmVzX2NvdW50JzogdHJ1ZSwgJ3NzbGNvbXByZXNzaW9uJzog dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXBlZXInOiB0 cnVlLCAna3Jic3J2bmFtZSc6IHRydWUsICdnc3NsaWInOiB0cnVlLAorICAg ICAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgd2hpbGUo KG0gPSByLmV4ZWModmFsKSkpIHsKKyAgICAgICAgICAgICAgICAgIGlmIChw YXJhbXNbbVsxXV0pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1bMl0p CisgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg ICAgICAgICAgIG1zZyA9ICd7eyBfKCJQbGVhc2UgZW50ZXIgYSB2YWxpZCBj b25uZWN0aW9uIHN0cmluZy4iKSB9fSc7CisgICAgICAgICAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg ICAgICBtc2cgPSBTKAorICAgICAgICAgICAgICAgICAgICAne3sgXygiSW52 YWxpZCBwYXJhbWV0ZXIgaW4gdGhlIGNvbm5lY3Rpb24gc3RyaW5nIC0gJXMu IikgfX0nCisgICAgICAgICAgICAgICAgICApLnNwcmludGYobVsxXSkudmFs dWUoKTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgIGlmICht c2cpIHsKKyAgICAgICAgICAgICAgICBlcnJNc2cgPSBlcnJNc2cgfHwgbXNn OworICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2pzdGNv bm5zdHInLCBtc2cpOworICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnanN0Y29ubnN0cicp OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgn anN0Y29ubnN0cicpOworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVu c2V0KCdqc3RkYm5hbWUnKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICB2 YWwgPSB0aGlzLmdldCgnanN0Y29kZScpOworICAgICAgICAgIGlmICgKKyAg ICAgICAgICAgIF8uaXNVbmRlZmluZWQodmFsKSB8fCBfLmlzTnVsbCh2YWwp IHx8CisgICAgICAgICAgICBTdHJpbmcodmFsKS5yZXBsYWNlKC9eXHMrfFxz KyQvZywgJycpID09ICcnCisgICAgICAgICAgKSB7CisgICAgICAgICAgICB2 YXIgbXNnID0gJ3t7IF8oJ1BsZWFzZSBzcGVjaWZ5IGNvZGUgdG8gZXhlY3V0 ZS4nKSB9fSc7CisgICAgICAgICAgICBlcnJNc2cgPSBlcnJNc2cgfHwgbXNn OworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnanN0Y29kZScs IG1zZyk7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMu ZXJyb3JNb2RlbC51bnNldCgnanN0Y29kZScpOworICAgICAgICAgIH0KKwor ICAgICAgICAgIHJldHVybiBlcnJNc2c7CisgICAgICAgIH0KKyAgICAgIH0p CisgICAgfSk7CisgIH0KKworICByZXR1cm4gcGdCcm93c2VyLk5vZGVzWydw Z2Ffam9iJ107Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL21h Y3Jvcy9wZ2FfZXhjZXB0aW9uLm1hY3JvcyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL21h Y3Jvcy9wZ2FfZXhjZXB0aW9uLm1hY3JvcwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4zOGVlYzI5Ci0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdB Z2VudC90ZW1wbGF0ZXMvbWFjcm9zL3BnYV9leGNlcHRpb24ubWFjcm9zCkBA IC0wLDAgKzEsMjQgQEAKK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sjIFRoaXMgd2lsbCBiZSBzcGVj aWZpYyBtYWNybyBmb3IgcGdhX2V4Y2VwdGlvbi4gI30KK3sjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sl IG1hY3JvIElOU0VSVChqc2NpZCwgZGF0YSkgLSV9CistLSBJbnNlcnRpbmcg YSBzY2hlZHVsZSBleGNlcHRpb24geyUgaWYganNjaWQgJX0oc2NoZWR1bGU6 IHt7IGpzY2lkfHF0TGl0ZXJhbH19KXslIGVuZGlmICV9CisKK0lOU0VSVCBJ TlRPIHBnYWdlbnQucGdhX2V4Y2VwdGlvbiAoCisgICAgamV4c2NpZCwgamV4 ZGF0ZSwgamV4dGltZQorKSBWQUxVRVMgKAorICAgIHslIGlmIGpzY2lkICV9 e3sganNjaWR8cXRMaXRlcmFsIH19eyUgZWxzZSAlfXNjaWR7JSBlbmRpZiAl fSwgeyUgaWYgZGF0YS5qZXhkYXRlICV9dG9fZGF0ZSh7eyBkYXRhLmpleGRh dGV8cXRMaXRlcmFsIH19LCAnTU0vREQvWVlZWScpOjpkYXRleyUgZWxzZSAl fU5VTEw6OmRhdGV7JSBlbmRpZiAlfSwgeyUgaWYgZGF0YS5qZXh0aW1lICV9 e3sgZGF0YS5qZXh0aW1lfHF0TGl0ZXJhbCB9fTo6dGltZSB3aXRob3V0IHRp bWUgem9uZXslIGVsc2UgJX1OVUxMOjp0aW1lIHdpdGhvdXQgdGltZSB6b25l eyUgZW5kaWYgJX0KKworKTsKK3slLSBlbmRtYWNybyAlfQoreyUgbWFjcm8g VVBEQVRFKGpzY2lkLCBkYXRhKSAtJX0KKy0tIFVwZGF0aW5nIGFuIGV4aXN0 aW5nIHNjaGVkdWxlIGV4Y2VwdGlvbiAoaWQ6IHt7IGRhdGEuamV4aWR8cXRM aXRlcmFsIH19LCBzY2hlZHVsZToge3sganNjaWR8cXRMaXRlcmFsIH19KQor VVBEQVRFIHBnYWdlbnQucGdhX2V4Y2VwdGlvbiBTRVQKKyAgICB7JSBpZiAn amV4ZGF0ZScgaW4gZGF0YSAlfWpleGRhdGU9eyUgaWYgZGF0YS5qZXhkYXRl ICV9dG9fZGF0ZSh7eyBkYXRhLmpleGRhdGV8cXRMaXRlcmFsIH19LCAnTU0v REQvWVlZWScpOjpkYXRleyUgZWxzZSAlfU5VTEw6OmRhdGV7JSBlbmRpZiAl fXslIGVuZGlmICV9eyUgaWYgJ2pleHRpbWUnIGluIGRhdGElfXslIGlmICdq ZXhkYXRlJyBpbiBkYXRhICV9LCB7JSBlbmRpZiAlfWpleHRpbWU9eyUgaWYg ZGF0YS5qZXh0aW1lICV9e3sgZGF0YS5qZXh0aW1lfHF0TGl0ZXJhbCB9fTo6 dGltZSB3aXRob3V0IHRpbWUgem9uZXslIGVsc2UgJX1OVUxMOjp0aW1lIHdp dGhvdXQgdGltZSB6b25leyUgZW5kaWYgJX17JSBlbmRpZiAlfQorCitXSEVS RSBqZXhpZD17eyBkYXRhLmpleGlkfHF0TGl0ZXJhbCB9fTo6aW50ZWdlciBB TkQganNjaWQ9e3sganNjaWR8cXRMaXRlcmFsIH19OjppbnRlZ2VyOworeyUt IGVuZG1hY3JvICV9Cit7JSBtYWNybyBERUxFVEUoanNjaWQsIGRhdGEpIC0l fQorLS0gRGVsZXRpbmcgYSBzY2hlZHVsZSBleGNlcHRpb24gKGlkOiB7eyBk YXRhLmpleGlkfHF0TGl0ZXJhbCB9fSwgc2NoZWR1bGU6IHt7IGpzY2lkfHF0 TGl0ZXJhbCB9fSkKK0RFTEVURSBGUk9NIHBnYWdlbnQucGdhX2V4Y2VwdGlv biBXSEVSRSBqZXhpZD17eyBkYXRhLmpleGlkfHF0TGl0ZXJhbCB9fTo6aW50 ZWdlciBBTkQganNjaWQ9e3sganNjaWR8cXRMaXRlcmFsIH19OjppbnRlZ2Vy OworeyUtIGVuZG1hY3JvICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRl cy9tYWNyb3MvcGdhX2pvYnN0ZXAubWFjcm9zIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMv bWFjcm9zL3BnYV9qb2JzdGVwLm1hY3JvcwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5kYmYzMTdmCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdB Z2VudC90ZW1wbGF0ZXMvbWFjcm9zL3BnYV9qb2JzdGVwLm1hY3JvcwpAQCAt MCwwICsxLDUxIEBACit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjfQoreyMgVGhpcyB3aWxsIGJlIHNwZWNpZmlj IG1hY3JvIGZvciBwZ2Ffam9ic3RlcC4gI30KK3sjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBtYWNybyBJ TlNFUlQoaGFzX2Nvbm5zdHIsIGppZCwgZGF0YSkgLSV9CistLSBJbnNlcnRp bmcgYSBzdGVwIChqb2JpZDoge3sgamlkfHF0TGl0ZXJhbCB9fSkKK0lOU0VS VCBJTlRPIHBnYWdlbnQucGdhX2pvYnN0ZXAgKAorICAgIGpzdGpvYmlkLCBq c3RuYW1lLCBqc3RlbmFibGVkLCBqc3RraW5kLAorICAgIHslIGlmIGhhc19j b25uc3RyICV9anN0Y29ubnN0ciwgeyUgZW5kaWYgJX1qc3RkYm5hbWUsIGpz dG9uZXJyb3IsCisgICAganN0Y29kZSwganN0ZGVzYworKSBWQUxVRVMgKAor ICAgIHslIGlmIGppZCAlfXt7IGppZHxxdExpdGVyYWwgfX17JSBlbHNlICV9 amlkeyUgZW5kaWYgJX0sIHt7IGRhdGEuanN0bmFtZXxxdExpdGVyYWwgfX06 OnRleHQsIHslIGlmIGRhdGEuanN0ZW5hYmxlZCAlfXRydWV7JSBlbHNlICV9 ZmFsc2UgeyUgZW5kaWYgJX0sIHslIGlmIGRhdGEuanN0a2luZCAlfSdzJ3sl IGVsc2UgJX0nYid7JSBlbmRpZiAlfTo6Y2hhcmFjdGVyKDEpLAorICAgIHsl IGlmIGhhc19jb25uc3RyICV9eyUgaWYgZGF0YS5qc3Rjb25udHlwZSAlfScn eyUgZWxzZSAlfXt7IGRhdGEuanN0Y29ubnN0cnxxdExpdGVyYWwgfX17JSBl bmRpZiAlfTo6dGV4dCwgeyUgaWYgbm90IGRhdGEuanN0Y29ubnR5cGUgJX0n Jzo6bmFtZXslIGVsc2UgJX17eyBkYXRhLmpzdGRibmFtZXxxdExpdGVyYWwg fX17JSBlbmRpZiAlfTo6bmFtZXslIGVsc2UgJX17eyBkYXRhLmpzdGRibmFt ZXxxdExpdGVyYWwgfX06Om5hbWV7JSBlbmRpZiAlfSwge3sgZGF0YS5qc3Rv bmVycm9yfHF0TGl0ZXJhbCB9fTo6Y2hhcmFjdGVyKDEpLAorICAgIHt7IGRh dGEuanN0Y29kZXxxdExpdGVyYWwgfX06OnRleHQsIHt7IGRhdGEuanN0ZGVz Y3xxdExpdGVyYWwgfX06OnRleHQKKykgeyUgaWYgamlkICV9UkVUVVJOSU5H IGpzdGlkeyUgZW5kaWYgJX07Cit7JS0gZW5kbWFjcm8gJX0KK3slIG1hY3Jv IFVQREFURShoYXNfY29ubnN0ciwgamlkLCBqc3RpZCwgZGF0YSkgLSV9Cist LSBVcGRhdGluZyB0aGUgZXhpc3Rpbmcgc3RlcCAoaWQ6IHt7IGpzdGlkfHF0 TGl0ZXJhbCB9fSBqb2JpZDoge3sgamlkfHF0TGl0ZXJhbCB9fSkKK1VQREFU RSBwZ2FnZW50LnBnYV9qb2JzdGVwCitTRVQKKyAgICB7JSBpZiBoYXNfY29u bnN0ciAlfXslIGlmICdqc3Rjb25udHlwZScgaW4gZGF0YSAlfXslIGlmIGRh dGEuanN0Y29ubnR5cGUgJX1qc3RkYm5hbWU9e3sgZGF0YS5qc3RkYm5hbWV8 cXRMaXRlcmFsIH19LCBqc3Rjb25uc3RyPScneyUgZWxzZSAlfWpzdGRibmFt ZT0nJywganN0Y29ubnN0cj17eyBkYXRhLmpzdGNvbm5zdHJ8cXRMaXRlcmFs IH19eyUgZW5kaWYgJX17JSBpZiAnanN0bmFtZScgaW4gZGF0YSBvciAnanN0 ZW5hYmxlZCcgaW4gZGF0YSBvciAnanN0ZGVzYycgaW4gZGF0YSBvciAnanN0 b25lcnJvcicgaW4gZGF0YSBvciAnanN0Y29kZScgaW4gZGF0YSAlfSx7JSBl bmRpZiAlfXslIGVuZGlmICV9eyUgZWxzZSAlfXslIGlmICdqc3RkYm5hbWUn IGluIGRhdGEgJX1qc3RkYm5hbWU9e3sgZGF0YS5qc3RkYm5hbWV8cXRMaXRl cmFsIH19OjpuYW1leyUgZW5kaWYgJX17JSBpZiAnanN0bmFtZScgaW4gZGF0 YSBvciAnanN0ZW5hYmxlZCcgaW4gZGF0YSBvciAnanN0ZGVzYycgaW4gZGF0 YSBvciAnanN0b25lcnJvcicgaW4gZGF0YSBvciAnanN0Y29kZScgaW4gZGF0 YSAlfSx7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ2pzdG5hbWUnIGlu IGRhdGEgICV9CisKKyAgICBqc3RuYW1lPXt7IGRhdGEuanN0bmFtZXxxdExp dGVyYWwgfX06OnRleHR7JSBpZiAnanN0ZW5hYmxlZCcgaW4gZGF0YSBvciAn anN0ZGVzYycgaW4gZGF0YSBvciAnanN0b25lcnJvcicgaW4gZGF0YSBvciAn anN0Y29kZScgaW4gZGF0YSAlfSx7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUg aWYgJ2pzdGVuYWJsZWQnIGluIGRhdGEgJX0KKworICAgIGpzdGVuYWJsZWQ9 eyUgaWYgZGF0YS5qc3RlbmFibGVkICV9dHJ1ZXslIGVsc2UgJX1mYWxzZXsl IGVuZGlmICV9eyUgaWYgJ2pzdGRlc2MnIGluIGRhdGEgb3IgJ2pzdG9uZXJy b3InIGluIGRhdGEgb3IgJ2pzdGNvZGUnIGluIGRhdGEgJX0seyUgZW5kaWYg JX17JSBlbmRpZiAlfXslIGlmICdqc3RkZXNjJyBpbiBkYXRhICV9CisKKyAg ICBqc3RkZXNjPXt7IGRhdGEuanN0ZGVzY3xxdExpdGVyYWwgfX17JSBpZiAn anN0b25lcnJvcicgaW4gZGF0YSBvciAnanN0Y29kZScgaW4gZGF0YSAlfSx7 JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ2pzdG9uZXJyb3InIGluIGRh dGEgJX0KKworICAgIGpzdG9uZXJyb3I9e3sgZGF0YS5qc3RvbmVycm9yfHF0 TGl0ZXJhbCB9fXslIGlmICdqc3Rjb2RlJyBpbiBkYXRhICV9LHslIGVuZGlm ICV9eyUgZW5kaWYgJX17JSBpZiAnanN0Y29kZScgaW4gZGF0YSAlfQorCisg ICAganN0Y29kZT17eyBkYXRhLmpzdGNvZGV8cXRMaXRlcmFsIH19eyUgZW5k aWYgJX0KKworV0hFUkUganN0aWQ9e3sganN0aWR8cXRMaXRlcmFsIH19Ojpp bnRlZ2VyIEFORCBqc3Rqb2JpZD17eyBqaWR8cXRMaXRlcmFsIH19OjppbnRl Z2VyOworeyUtIGVuZG1hY3JvICV9Cit7JSBtYWNybyBERUxFVEUoamlkLCBq c3RpZCkgLSV9CistLSBEZWxldGluZyBhIHN0ZXAgKGlkOiB7eyBqc3RpZHxx dExpdGVyYWwgfX0sIGpvYmlkOiB7eyBqaWR8cXRMaXRlcmFsIH19KQorREVM RVRFIEZST00gcGdhZ2VudC5wZ2Ffam9ic3RlcCBXSEVSRSBqc3RpZD17eyBq c3RpZHxxdExpdGVyYWwgfX06OmludGVnZXIgQU5EIGpzdGpvYmlkPXt7IGpp ZHxxdExpdGVyYWwgfX06OmludGVnZXI7Cit7JS0gZW5kbWFjcm8gJX0KK3sl IG1hY3JvIFBST1BFUlRJRVMoaGFzX2Nvbm5zdHIsIGppZCwganN0aWQpIC0l fQorU0VMRUNUCisgICAganN0aWQsICBqc3Rqb2JpZCwganN0bmFtZSwganN0 ZGVzYywganN0ZW5hYmxlZCwganN0a2luZCA9ICdzJzo6YnBjaGFyIGFzIGpz dGtpbmQsCisgICAganN0Y29kZSwgQ0FTRSBXSEVOIGpzdGRibmFtZSAhPSAn JyBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQgQVMganN0Y29ubnR5cGUsCisg ICAgeyUgaWYgaGFzX2Nvbm5zdHIgJX1qc3Rjb25uc3RyLCB7JSBlbmRpZiAl fSBqc3RkYm5hbWUsIGpzdG9uZXJyb3IsIGpzY25leHRydW4KK0ZST00KKyAg ICBwZ2FnZW50LnBnYV9qb2JzdGVwCitXSEVSRQoreyUgaWYganN0aWQgJX0K KyAgICBqc3RpZCA9IHt7IGpzdGlkfHF0TGl0ZXJhbCB9fTo6aW50ZWdlciBB TkQKK3slIGVuZGlmICV9CisgICAganN0am9iaWQgPSB7eyBqaWR8cXRMaXRl cmFsIH19OjppbnRlZ2VyCitPUkRFUiBCWSBqc3RuYW1lOworeyUtIGVuZG1h Y3JvICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9tYWNyb3MvcGdh X3NjaGVkdWxlLm1hY3JvcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL21hY3Jvcy9wZ2Ff c2NoZWR1bGUubWFjcm9zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjVmNzA5ODUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBs YXRlcy9tYWNyb3MvcGdhX3NjaGVkdWxlLm1hY3JvcwpAQCAtMCwwICsxLDEw NyBAQAoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyN9Cit7IyBUaGlzIHdpbGwgYmUgc3BlY2lmaWMgbWFjcm8g Zm9yIHBnYV9zY2hlZHVsZS4gI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaW1wb3J0ICdtYWNy b3MvcGdhX2V4Y2VwdGlvbi5tYWNyb3MnIGFzIEVYQ0VQVElPTlMgJX0KK3sl IG1hY3JvIElOU0VSVChqaWQsIGRhdGEpIC0lfQorLS0gSW5zZXJ0aW5nIGEg c2NoZWR1bGV7JSBpZiBqaWQgJX0gKGpvYmlkOiB7eyBqaWR8cXRMaXRlcmFs IH19KXslIGVuZGlmICV9CisKK0lOU0VSVCBJTlRPIHBnYWdlbnQucGdhX3Nj aGVkdWxlKAorICAgIGpzY2pvYmlkLCBqc2NuYW1lLCBqc2NkZXNjLCBqc2Nl bmFibGVkLAorICAgIGpzY3N0YXJ0LCB7JSBpZiBkYXRhLmpzY2VuZCAlfWpz Y2VuZCx7JSBlbmRpZiAlfQorICAgIGpzY21pbnV0ZXMsIGpzY2hvdXJzLCBq c2N3ZWVrZGF5cywganNjbW9udGhkYXlzLCBqc2Ntb250aHMKKykgVkFMVUVT ICgKKyAgICB7JSBpZiBqaWQgJX17eyBqaWR8cXRMaXRlcmFsIH19eyUgZWxz ZSAlfWppZHslIGVuZGlmICV9LCB7eyBkYXRhLmpzY25hbWV8cXRMaXRlcmFs IH19Ojp0ZXh0LCB7eyBkYXRhLmpzY2Rlc2N8cXRMaXRlcmFsIH19Ojp0ZXh0 LCB7JSBpZiBkYXRhLmpzY2VuYWJsZWQgJX10cnVleyUgZWxzZSAlfWZhbHNl eyUgZW5kaWYgJX0sCisgICAge3sgZGF0YS5qc2NzdGFydHxxdExpdGVyYWwg fX06OnRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZSwgeyUgaWYgZGF0YS5qc2Nl bmQgJX17eyBkYXRhLmpzY2VuZHxxdExpdGVyYWwgfX06OnRpbWVzdGFtcCB3 aXRoIHRpbWUgem9uZSx7JSBlbmRpZiAlfQorCisgICAgLS0gTWludXRlcwor ICAgIHt7IGRhdGEuanNjbWludXRlc3xxdExpdGVyYWwgfX06OmJvb2xlYW5b XSwKKyAgICAtLSBIb3VycworICAgIHt7IGRhdGEuanNjaG91cnN8cXRMaXRl cmFsIH19Ojpib29sZWFuW10sCisgICAgLS0gV2VlayBkYXlzCisgICAge3sg ZGF0YS5qc2N3ZWVrZGF5c3xxdExpdGVyYWwgfX06OmJvb2xlYW5bXSwKKyAg ICAtLSBNb250aCBkYXlzCisgICAge3sgZGF0YS5qc2Ntb250aGRheXN8cXRM aXRlcmFsIH19Ojpib29sZWFuW10sCisgICAgLS0gTW9udGhzCisgICAge3sg ZGF0YS5qc2Ntb250aHN8cXRMaXRlcmFsIH19Ojpib29sZWFuW10KKykgUkVU VVJOSU5HIGpzY2lkIElOVE8gc2NpZDt7JSBpZiAnanNjZXhjZXB0aW9ucycg aW4gZGF0YSAlfQoreyUgZm9yIGV4YyBpbiBkYXRhLmpzY2V4Y2VwdGlvbnMg JX0KKwore3sgRVhDRVBUSU9OUy5JTlNFUlQoTm9uZSwgZXhjKSB9fXslIGVu ZGZvciAlfXslIGVuZGlmICV9Cit7JS0gZW5kbWFjcm8gJX0KK3slIG1hY3Jv IFVQREFURShqaWQsIGpzY2lkLCBkYXRhKSAtJX0KK3slIGlmICdqc2NuYW1l JyBpbiBkYXRhIG9yICdqc2NlbmFibGVkJyBpbiBkYXRhIG9yICdqc2NkZXNj JyBpbiBkYXRhIG9yICdqc2NzdGFydCcgaW4gZGF0YSBvciAnanNjZW5kJyBp biBkYXRhIG9yICdqc2NlbmQnIGluIGRhdGEgb3IgJ2pzY21vbnRocycgaW4g ZGF0YSBvciAnanNjbWludXRlcycgaW4gZGF0YSBvciAnanNjbW9udGhkYXlz JyBpbiBkYXRhIG9yICdqc2Nob3VycycgaW4gZGF0YSBvciAnanNjd2Vla2Rh eXMnIGluIGRhdGEgJX0KKy0tIFVwZGF0aW5nIHRoZSBzY2hlZHVsZSAoaWQ6 IHt7IGpzY2lkfHF0TGl0ZXJhbCB9fSwgam9iaWQ6IHt7IGppZHxxdExpdGVy YWwgfX0pCitVUERBVEUgcGdhZ2VudC5wZ2Ffc2NoZWR1bGUKK1NFVHslIGlm ICdqc2NuYW1lJyBpbiBkYXRhICV9CisKKyAgICBqc2NuYW1lPXt7IGRhdGEu anNjbmFtZXxxdExpdGVyYWwgfX06OnRleHR7JSBpZiAnanNjZGVzYycgaW4g ZGF0YSBvciAnanNjc3RhcnQnIGluIGRhdGEgb3IgJ2pzY2VuZCcgaW4gZGF0 YSBvciAnanNjZW5kJyBpbiBkYXRhIG9yICdqc2Ntb250aHMnIGluIGRhdGEg b3IgJ2pzY21pbnV0ZXMnIGluIGRhdGEgb3IgJ2pzY21vbnRoZGF5cycgaW4g ZGF0YSBvciAnanNjaG91cnMnIGluIGRhdGEgb3IgJ2pzY3dlZWtkYXlzJyBp biBkYXRhIG9yICdqc2NlbmFibGVkJyBpbiBkYXRhICV9LHslIGVuZGlmICV9 eyUgZW5kaWYgJX17JSBpZiAnanNjZW5hYmxlZCcgaW4gZGF0YSAlfQorCisg ICAganNjZW5hYmxlZD17JSBpZiBkYXRhLmpzY2VuYWJsZWQgJX10cnVleyUg ZWxzZSAlfWZhbHNleyUgZW5kaWYgJX17JSBpZiAnanNjZGVzYycgaW4gZGF0 YSBvciAnanNjc3RhcnQnIGluIGRhdGEgb3IgJ2pzY2VuZCcgaW4gZGF0YSBv ciAnanNjZW5kJyBpbiBkYXRhIG9yICdqc2Ntb250aHMnIGluIGRhdGEgb3Ig J2pzY21pbnV0ZXMnIGluIGRhdGEgb3IgJ2pzY21vbnRoZGF5cycgaW4gZGF0 YSBvciAnanNjaG91cnMnIGluIGRhdGEgb3IgJ2pzY3dlZWtkYXlzJyBpbiBk YXRhICV9LHslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBpZiAnanNjZGVzYycg aW4gZGF0YSAlfQorCisgICAganNjZGVzYz17JSBpZiBkYXRhLmpzY2Rlc2Mg JX17eyBkYXRhLmpzY2Rlc2N8cXRMaXRlcmFsIH19Ojp0ZXh0eyUgZWxzZSAl fScnOjp0ZXh0eyUgZW5kaWYgJX17JSBpZiAnanNjc3RhcnQnIGluIGRhdGEg b3IgJ2pzY2VuZCcgaW4gZGF0YSBvciAnanNjZW5kJyBpbiBkYXRhIG9yICdq c2Ntb250aHMnIGluIGRhdGEgb3IgJ2pzY21pbnV0ZXMnIGluIGRhdGEgb3Ig J2pzY21vbnRoZGF5cycgaW4gZGF0YSBvciAnanNjaG91cnMnIGluIGRhdGEg b3IgJ2pzY3dlZWtkYXlzJyBpbiBkYXRhICV9LHslIGVuZGlmICV9eyUgZW5k aWYgJX17JSBpZiAnanNjc3RhcnQnIGluIGRhdGEgJX0KKworICAgIGpzY3N0 YXJ0PXt7IGRhdGEuanNjc3RhcnR8cXRMaXRlcmFsIH19Ojp0ZXh0eyUgaWYg J2pzY2VuZCcgaW4gZGF0YSBvciAnanNjZW5kJyBpbiBkYXRhIG9yICdqc2Nt b250aHMnIGluIGRhdGEgb3IgJ2pzY21pbnV0ZXMnIGluIGRhdGEgb3IgJ2pz Y21vbnRoZGF5cycgaW4gZGF0YSBvciAnanNjaG91cnMnIGluIGRhdGEgb3Ig J2pzY3dlZWtkYXlzJyBpbiBkYXRhICV9LHslIGVuZGlmICV9eyUgZW5kaWYg JX17JSBpZiAnanNjZW5kJyBpbiBkYXRhICV9CisKKyAgICBqc2NlbmQ9eyUg aWYgZGF0YS5qc2NlbmQgJX17eyBkYXRhLmpzY2VuZHxxdExpdGVyYWwgfX06 OnRpbWVzdGFtcHR6eyUgZWxzZSAlfU5VTEw6OnRpbWVzdGFtcHR6eyUgZW5k aWYgJX17JSBpZiAnanNjZW5kJyBpbiBkYXRhIG9yICdqc2Ntb250aHMnIGlu IGRhdGEgb3IgJ2pzY21pbnV0ZXMnIGluIGRhdGEgb3IgJ2pzY21vbnRoZGF5 cycgaW4gZGF0YSBvciAnanNjaG91cnMnIGluIGRhdGEgb3IgJ2pzY3dlZWtk YXlzJyBpbiBkYXRhICV9LHslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBpZiAn anNjbW9udGhzJyBpbiBkYXRhICV9CisKKyAgICBqc2Ntb250aHM9e3sgZGF0 YS5qc2Ntb250aHN8cXRMaXRlcmFsIH19Ojpib29sZWFuW117JSBpZiAnanNj bWludXRlcycgaW4gZGF0YSBvciAnanNjbW9udGhkYXlzJyBpbiBkYXRhIG9y ICdqc2Nob3VycycgaW4gZGF0YSBvciAnanNjd2Vla2RheXMnIGluIGRhdGEg JX0seyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdqc2NtaW51dGVzJyBp biBkYXRhICV9CisKKyAgICBqc2NtaW51dGVzPXt7IGRhdGEuanNjbWludXRl c3xxdExpdGVyYWwgfX06OmJvb2xlYW5bXXslIGlmICdqc2Ntb250aGRheXMn IGluIGRhdGEgb3IgJ2pzY2hvdXJzJyBpbiBkYXRhIG9yICdqc2N3ZWVrZGF5 cycgaW4gZGF0YSAlfSx7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ2pz Y21vbnRoZGF5cycgaW4gZGF0YSAlfQorCisgICAganNjbW9udGhkYXlzPXt7 IGRhdGEuanNjbW9udGhkYXlzfHF0TGl0ZXJhbCB9fTo6Ym9vbGVhbltdeyUg aWYgJ2pzY2hvdXJzJyBpbiBkYXRhIG9yICdqc2N3ZWVrZGF5cycgaW4gZGF0 YSAlfSx7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ2pzY2hvdXJzJyBp biBkYXRhICV9CisKKyAgICBqc2Nob3Vycz17eyBkYXRhLmpzY2hvdXJzfHF0 TGl0ZXJhbCB9fTo6Ym9vbGVhbltdeyUgaWYgJ2pzY3dlZWtkYXlzJyBpbiBk YXRhICV9LHslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBpZiAnanNjd2Vla2Rh eXMnIGluIGRhdGEgJX0KKworICAgIGpzY3dlZWtkYXlzPXt7IGRhdGEuanNj d2Vla2RheXN8cXRMaXRlcmFsIH19Ojpib29sZWFuW117JSBlbmRpZiAlfQor CitXSEVSRSBqc2NpZD17eyBqc2NpZHxxdExpdGVyYWwgfX06OmludGVnZXIg QU5EIGpzY2pvYmlkPXt7IGppZHxxdExpdGVyYWwgfX06OmludGVnZXI7eyUg ZW5kaWYgJX17JSBpZiAnanNjZXhjZXB0aW9ucycgaW4gZGF0YSAlfQoreyUg aWYgJ2FkZGVkJyBpbiBkYXRhLmpzY2V4Y2VwdGlvbnMgYW5kIGRhdGEuanNj ZXhjZXB0aW9ucy5hZGRlZHxsZW5ndGggPiAwICV9CisKK3slIGZvciBleGMg aW4gZGF0YS5qc2NleGNlcHRpb25zLmFkZGVkICV9Cit7eyBFWENFUFRJT05T LklOU0VSVChqc2NpZCwgZXhjKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRp ZiAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIGRhdGEuanNjZXhjZXB0aW9ucyBh bmQgZGF0YS5qc2NleGNlcHRpb25zLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQor Cit7JSBmb3IgZXhjIGluIGRhdGEuanNjZXhjZXB0aW9ucy5kZWxldGVkICV9 Cit7eyBFWENFUFRJT05TLkRFTEVURShqc2NpZCwgZXhjKSB9fQoreyUgZW5k Zm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2NoYW5nZWQnIGluIGRhdGEu anNjZXhjZXB0aW9ucyBhbmQgZGF0YS5qc2NleGNlcHRpb25zLmNoYW5nZWR8 bGVuZ3RoID4gMCAlfQorCit7JSBmb3IgZXhjIGluIGRhdGEuanNjZXhjZXB0 aW9ucy5jaGFuZ2VkICV9Cit7eyBFWENFUFRJT05TLlVQREFURShqc2NpZCwg ZXhjKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYg JX0KK3slLSBlbmRtYWNybyAlfQoreyUgbWFjcm8gREVMRVRFKGppZCwganNj aWQpIC0lfQorLS0gUmVtb3ZpbmcgdGhlIGV4aXN0aW5nIHNjaGVkdWxlIChp ZDoge3sganNjaWR8cXRMaXRlcmFsIH19LCBqb2JpZDoge3sgamlkfHF0TGl0 ZXJhbCB9fSkKK0RFTEVURSBGUk9NIHBnYWdlbnQucGdhX3NjaGVkdWxlIFdI RVJFIGpzY2lkPXt7IGpzY2lkfHF0TGl0ZXJhbCB9fTo6aW50ZWdlciBBTkQg anNjam9iaWQ9e3sgamlkfHF0TGl0ZXJhbCB9fTo6aW50ZWdlcjsKK3slLSBl bmRtYWNybyAlfQoreyUgbWFjcm8gRkVUQ0hfQ1VSUkVOVCgpIC0lfQorU0VM RUNUIGpzY2lkIEZST00gcGdhZ2VudC5wZ2Ffc2NoZWR1bGUgV0hFUkUgeG1p bjo6dGV4dCA9ICh0eGlkX2N1cnJlbnQoKSAlICgyXjMyKTo6YmlnaW50KTo6 dGV4dDsKK3slLSBlbmRtYWNybyAlfQoreyUgbWFjcm8gUFJPUEVSVElFUyhq aWQsIGpzY2lkKSAtJX0KK1NFTEVDVAorICAgIGpzY2lkLCAganNjam9iaWQs IGpzY25hbWUsIGpzY2Rlc2MsIGpzY2VuYWJsZWQsIGpzY3N0YXJ0LCBqc2Nl bmQsCisgICAganNjbWludXRlcywganNjaG91cnMsIGpzY3dlZWtkYXlzLCBq c2Ntb250aGRheXMsIGpzY21vbnRocywKKyAgICBqZXhpZCwgamV4ZGF0ZSwg amV4dGltZQorRlJPTQorICAgIHBnYWdlbnQucGdhX3NjaGVkdWxlIHMKKyAg ICBMRUZUIEpPSU4gKAorICAgICAgICBTRUxFQ1QKKyAgICAgICAgICAgIGpl eHNjaWQsIGFycmF5X2FnZyhqZXhpZCkgQVMgamV4aWQsIGFycmF5X2FnZyh0 b19jaGFyKGpleGRhdGUsICdNTS9ERC9ZWVlZJykpIEFTIGpleGRhdGUsCisg ICAgICAgICAgICBhcnJheV9hZ2coamV4dGltZSkgQVMgamV4dGltZQorICAg ICAgICBGUk9NCisgICAgICAgICAgICBwZ2FnZW50LnBnYV9leGNlcHRpb24g ZXgKKyAgICAgICAgR1JPVVAgQlkKKyAgICAgICAgICAgIGpleHNjaWQKKyAg ICApIGUgT04gcy5qc2NpZCA9IGUuamV4c2NpZAorV0hFUkUKK3slIGlmIGpz Y2lkICV9CisgICBzLmpzY2lkID0ge3sganNjaWR8cXRMaXRlcmFsIH19Ojpp bnRlZ2VyIEFORAoreyUgZW5kaWYgJX0KKyAgIHMuanNjam9iaWQgPSB7eyBq aWR8cXRMaXRlcmFsIH19OjppbnRlZ2VyCitPUkRFUiBCWSBqc2NuYW1lOwor eyUtIGVuZG1hY3JvICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9w Z2Ffam9iL2Nzcy9wZ2Ffam9iLmNzcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9q b2IvY3NzL3BnYV9qb2IuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjM2OGFkNTIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3Rl bXBsYXRlcy9wZ2Ffam9iL2Nzcy9wZ2Ffam9iLmNzcwpAQCAtMCwwICsxLDI0 IEBACisuaWNvbi1wZ2Ffam9iIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJs KCd7eyB1cmxfZm9yKCdOT0RFLXBnYV9qb2Iuc3RhdGljJywgZmlsZW5hbWU9 J2ltZy9wZ2Ffam9iLnBuZycpIH19JykgIWltcG9ydGFudDsKKyAgYmFja2dy b3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgYWxpZ24tY29udGVudDogY2Vu dGVyOworICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOworICBoZWlnaHQ6IDEu M2VtOworfQorCisuaWNvbi1wZ2Ffam9iLWRpc2FibGVkIHsKKyAgYmFja2dy b3VuZC1pbWFnZTogdXJsKCd7eyB1cmxfZm9yKCdOT0RFLXBnYV9qb2Iuc3Rh dGljJywgZmlsZW5hbWU9J2ltZy9wZ2Ffam9iLWRpc2FibGVkLnBuZycpIH19 JykgIWltcG9ydGFudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVh dDsKKyAgYWxpZ24tY29udGVudDogY2VudGVyOworICB2ZXJ0aWNhbC1hbGln bjogbWlkZGxlOworICBoZWlnaHQ6IDEuM2VtOworfQorCisucGctZWwtY29u dGFpbmVyW2VsPXNtXSAucGdhLXJvdW5kLWJvcmRlciB7CisgIGJvcmRlcjog MXB4IHNvbGlkIGRhcmtncmF5OworICBib3JkZXItcmFkaXVzOiAxMnB4Owor fQorCisucGctZWwtY29udGFpbmVyW2VsPXNtXSAucGdhLXJvdW5kLWJvcmRl ciB7CisgIG1hcmdpbjogNXB4OworfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1w bGF0ZXMvcGdhX2pvYi9qcy9wZ2Ffam9iLmpzIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMv cGdhX2pvYi9qcy9wZ2Ffam9iLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmY4YzIxMWQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50 L3RlbXBsYXRlcy9wZ2Ffam9iL2pzL3BnYV9qb2IuanMKQEAgLTAsMCArMSwx NTUgQEAKK2RlZmluZSgKKyAgWworICAgICdqcXVlcnknLCAndW5kZXJzY29y ZScsICd1bmRlcnNjb3JlLnN0cmluZycsICdwZ2FkbWluJywKKyAgICAncGdh ZG1pbi5icm93c2VyJywgJ2FsZXJ0aWZ5JywgJ3BnYWRtaW4ubm9kZS5wZ2Ff am9ic3RlcCcsCisgICAgJ3BnYWRtaW4ubm9kZS5wZ2Ffc2NoZWR1bGUnCisg IF0sCitmdW5jdGlvbigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEFs ZXJ0aWZ5KSB7CisKKyAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtcGdh X2pvYiddKSB7CisgICAgdmFyIHBnYV9qb2JzID0gcGdCcm93c2VyLk5vZGVz Wydjb2xsLXBnYV9qb2InXSA9CisgICAgICBwZ0Jyb3dzZXIuQ29sbGVjdGlv bi5leHRlbmQoeworICAgICAgICBub2RlOiAncGdhX2pvYicsCisgICAgICAg IGxhYmVsOiAne3sgXygncGdhX2pvYnMnKSB9fScsCisgICAgICAgIHR5cGU6 ICdjb2xsLXBnYV9qb2InLAorICAgICAgICBjb2x1bW5zOiBbJ2pvYmlkJywg J2pvYm5hbWUnLCAnam9iZW5hYmxlZCcsICdqbGdzdGF0dXMnLCAnam9ibmV4 dHJ1bicsICdqb2JsYXN0cnVuJywgJ2pvYmRlc2MnXSwKKyAgICAgICAgaGFz U3RhdGlzdGljczogZmFsc2UKKyAgICAgIH0pOworICB9OworCisgIGlmICgh cGdCcm93c2VyLk5vZGVzWydwZ2Ffam9iJ10pIHsKKyAgICBwZ0Jyb3dzZXIu Tm9kZXNbJ3BnYV9qb2InXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7Cisg ICAgICBwYXJlbnRfdHlwZTogJ3NlcnZlcicsCisgICAgICB0eXBlOiAncGdh X2pvYicsCisgICAgICBoYXNTUUw6IHRydWUsCisgICAgICBoYXNEZXBlbmRz OiBmYWxzZSwKKyAgICAgIGhhc1N0YXRpc3RpY3M6IHRydWUsCisgICAgICBo YXNDb2xsZWN0aXZlU3RhdGlzdGljczogdHJ1ZSwKKyAgICAgIHdpZHRoOiAn ODAlJywKKyAgICAgIGhlaWdodDogJzgwJScsCisgICAgICBjYW5Ecm9wOiBm dW5jdGlvbihub2RlKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAg fSwKKyAgICAgIGxhYmVsOiAne3sgXygncGdBZ2VudCBKb2InKSB9fScsCisg ICAgICBub2RlX2ltYWdlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJu ICdpY29uLXBnYV9qb2InOworICAgICAgfSwKKyAgICAgIEluaXQ6IGZ1bmN0 aW9uKCkgeworICAgICAgICAvKiBBdm9pZCBtdWxpdHBsZSByZWdpc3RyYXRp b24gb2YgbWVudXMgKi8KKyAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQp CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5pbml0aWFs aXplZCA9IHRydWU7CisKKyAgICAgICAgcGdCcm93c2VyLmFkZF9tZW51cyhb eworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfcGdhX2pvYl9vbl9jb2xsJywg bm9kZTogJ2NvbGwtcGdhX2pvYicsIG1vZHVsZTogdGhpcywKKyAgICAgICAg ICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAn c2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdj cmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdwZ0FnZW50IEpv Yi4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24t cGdhX2pvYicsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnfQorICAgICAgICB9 LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX3BnYV9qb2InLCBub2RlOiAn cGdhX2pvYicsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBb J29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJv cGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlv cml0eTogNCwgbGFiZWw6ICd7eyBfKCdwZ0FnZW50IEpvYi4uLicpIH19JywK KyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tcGdhX2pvYicsIGRh dGE6IHthY3Rpb246ICdjcmVhdGUnfQorICAgICAgICB9XSk7CisgICAgICB9 LAorICAgICAgbW9kZWw6IHBnQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7 CisgICAgICAgIGRlZmF1bHRzOiB7CisgICAgICAgICAgam9ibmFtZTogJycs CisgICAgICAgICAgam9iaWQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICBqb2Jl bmFibGVkOiB0cnVlLAorICAgICAgICAgIGpvYmhvc3RhZ2VudDogJycsCisg ICAgICAgICAgam9iamNsaWQ6IDEsCisgICAgICAgICAgam9iY3JlYXRlZDog dW5kZWZpbmVkLAorICAgICAgICAgIGpvYmNoYW5nZWQ6IHVuZGVmaW5lZCwK KyAgICAgICAgICBqb2JuZXh0cnVuOiB1bmRlZmluZWQsCisgICAgICAgICAg am9ibGFzdHJ1bjogdW5kZWZpbmVkLAorICAgICAgICAgIGpsZ3N0YXR1czog dW5kZWZpbmVkLAorICAgICAgICAgIGpvYnJ1bm5pbmdhdDogdW5kZWZpbmVk LAorICAgICAgICAgIGpvYmRlc2M6ICcnLAorICAgICAgICAgIGpzdGVwczog W10sCisgICAgICAgICAganNjaGVkdWxlczogW10KKyAgICAgICAgfSwKKyAg ICAgICAgaWRBdHRyaWJ1dGU6ICdqb2JpZCcsCisgICAgICAgIHBhcnNlOiBm dW5jdGlvbigpIHsKKyAgICAgICAgICB2YXIgZCA9IHBnQnJvd3Nlci5Ob2Rl Lk1vZGVsLnByb3RvdHlwZS5wYXJzZS5hcHBseSh0aGlzLCBhcmd1bWVudHMp OworCisgICAgICAgICAgaWYgKGQpIHsKKyAgICAgICAgICAgIGQuam9icnVu bmluZ2F0ID0gZC5qYWdob3N0YWdlbnQgfHwgInt7IF8oJ05vdCBydW5uaW5n IGN1cnJlbnRseS4nKSB9fSI7CisgICAgICAgICAgICBkLmpsZ3N0YXR1cyA9 IGQuamxnc3RhdHVzIHx8ICJ7eyBfKCdVbmtub3duJykgfX0iOworICAgICAg ICAgIH0KKyAgICAgICAgICByZXR1cm4gZDsKKyAgICAgICAgfSwKKyAgICAg ICAgc2NoZW1hOiBbeworICAgICAgICAgIGlkOiAnam9ibmFtZScsIGxhYmVs OiAne3sgXygnTmFtZScpIH19JywgdHlwZTogJ3RleHQnLAorICAgICAgICAg IGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8zMCcKKyAgICAg ICAgfSx7CisgICAgICAgICAgaWQ6ICdqb2JpZCcsIGxhYmVsOid7eyBfKCdJ RCcpIH19JywgbW9kZTogWydwcm9wZXJ0aWVzJ10sCisgICAgICAgICAgdHlw ZTogJ2ludCcKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdqb2JlbmFi bGVkJywgbGFiZWw6J3t7IF8oJ0VuYWJsZWQnKSB9fScsIHR5cGU6ICdzd2l0 Y2gnLAorICAgICAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVy Y2VudF81JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pvYmNsYXNz JywgbGFiZWw6ICd7eyBfKCdKb2IgQ2xhc3MnKSB9fScsIHR5cGU6ICd0ZXh0 JywKKyAgICAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMnXQorICAgICAgICB9 LHsKKyAgICAgICAgICBpZDogJ2pvYmpjbGlkJywgbGFiZWw6ICd7eyBfKCdK b2IgQ2xhc3MnKSB9fScsIHR5cGU6ICdpbnRlZ2VyJywKKyAgICAgICAgICBj b250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLCB1cmw6ICdjbGFzc2VzJywg dXJsX3dpdGhfaWQ6IGZhbHNlLAorICAgICAgICAgIGNhY2hlX25vZGU6ICdz ZXJ2ZXInLCBtb2RlOiBbJ2NyZWF0ZScsICdlZGl0J10sCisgICAgICAgICAg c2VsZWN0Mjoge2FsbG93Q2xlYXI6IGZhbHNlfQorICAgICAgICB9LHsKKyAg ICAgICAgICBpZDogJ2pvYmhvc3RhZ2VudCcsIGxhYmVsOiAne3sgXygnSG9z dCBBZ2VudCcpIH19JywgdHlwZTogJ3RleHQnCisgICAgICAgIH0seworICAg ICAgICAgIGlkOiAnam9iY3JlYXRlZCcsIHR5cGU6ICd0ZXh0JywgbW9kZTog Wydwcm9wZXJ0aWVzJ10sCisgICAgICAgICAgbGFiZWw6ICd7eyBfKCdDcmVh dGVkJykgfX0nCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnam9iY2hh bmdlZCcsIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJ10sCisg ICAgICAgICAgbGFiZWw6ICd7eyBfKCdDaGFuZ2VkJykgfX0nCisgICAgICAg IH0seworICAgICAgICAgIGlkOiAnam9ibmV4dHJ1bicsIHR5cGU6ICd0ZXh0 JywgbW9kZTogWydwcm9wZXJ0aWVzJ10sCisgICAgICAgICAgbGFiZWw6ICd7 eyBfKCdOZXh0IHJ1bicpIH19JywgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0 aF9wZXJjZW50XzIwJworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pv Ymxhc3RydW4nLCB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcydd LAorICAgICAgICAgIGxhYmVsOiAne3sgXygnTGFzdCBydW4nKSB9fScsIGNl bGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8yMCcKKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdqbGdzdGF0dXMnLCB0eXBlOiAndGV4dCcs IGxhYmVsOiAne3sgXygnTGFzdCByZXN1bHQnKSB9fScsCisgICAgICAgICAg Y2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzUnLCBtb2RlOiBb J3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pv YnJ1bm5pbmdhdCcsIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVz J10sCisgICAgICAgICAgbGFiZWw6ICd7eyBfKCdSdW5uaW5nIGF0JykgfX0n CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnam9iZGVzYycsIGxhYmVs Oid7eyBfKCdDb21tZW50JykgfX0nLCB0eXBlOiAnbXVsdGlsaW5lJywKKyAg ICAgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMTUn CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnanN0ZXBzJywgbGFiZWw6 ICcnLCBncm91cDogJ3t7IF8oIlN0ZXBzIikgfX0nLAorICAgICAgICAgIHR5 cGU6ICdjb2xsZWN0aW9uJywgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAor ICAgICAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZXNbJ3BnYV9qb2JzdGVw J10ubW9kZWwsIGNhbkVkaXQ6IHRydWUsCisgICAgICAgICAgY29udHJvbDog J3N1Yi1ub2RlLWNvbGxlY3Rpb24nLCBjYW5BZGQ6IHRydWUsIGNhbkRlbGV0 ZTogdHJ1ZSwKKyAgICAgICAgICBjb2x1bW5zOiBbCisgICAgICAgICAgICAn anN0bmFtZScsICdqc3RlbmFibGVkJywgJ2pzdGtpbmQnLCAnanN0Y29ubnR5 cGUnLCAnanN0b25lcnJvcicKKyAgICAgICAgICBdCisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAnanNjaGVkdWxlcycsIGxhYmVsOiAnJywgZ3JvdXA6 ICd7eyBfKCJTY2hlZHVsZXMiKSB9fScsCisgICAgICAgICAgdHlwZTogJ2Nv bGxlY3Rpb24nLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAg ICAgY29udHJvbDogJ3N1Yi1ub2RlLWNvbGxlY3Rpb24nLCBjYW5BZGQ6IHRy dWUsIGNhbkRlbGV0ZTogdHJ1ZSwKKyAgICAgICAgICBjYW5FZGl0OiB0cnVl LCBtb2RlbDogcGdCcm93c2VyLk5vZGVzWydwZ2Ffc2NoZWR1bGUnXS5tb2Rl bCwKKyAgICAgICAgICBjb2x1bW5zOiBbJ2pzY25hbWUnLCAnanNjZW5hYmxl ZCcsICdqc2NzdGFydCcsICdqc2NlbmQnXQorICAgICAgICB9XSwKKyAgICAg ICAgdmFsaWRhdGU6IGZ1bmN0aW9uKGtleXMpIHsKKyAgICAgICAgICB2YXIg bmFtZSA9IHRoaXMuZ2V0KCdqb2JuYW1lJyk7CisgICAgICAgICAgaWYgKF8u aXNVbmRlZmluZWQobmFtZSkgfHwgXy5pc051bGwobmFtZSkgfHwKKyAgICAg ICAgICAgIFN0cmluZyhuYW1lKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycp ID09ICcnKSB7CisgICAgICAgICAgICB2YXIgbXNnID0gJ3t7IF8oJ05hbWUg Y2Fubm90IGJlIGVtcHR5LicpIH19JzsKKyAgICAgICAgICAgIHRoaXMuZXJy b3JNb2RlbC5zZXQoJ2pvYm5hbWUnLCBtc2cpOworICAgICAgICAgICAgcmV0 dXJuIG1zZzsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhp cy5lcnJvck1vZGVsLnVuc2V0KCdqb2JuYW1lJyk7CisgICAgICAgICAgfQor ICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICB9KQor ICAgIH0pOworICB9CisKKyAgcmV0dXJuIHBnQnJvd3Nlci5Ob2Rlc1sncGdh X2pvYiddOworfSk7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ff am9iL3NxbC9wcmUzLjQvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3Bn YV9qb2Ivc3FsL3ByZTMuNC9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmI4OTU5Y2MKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9w Z0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvY3JlYXRlLnNx bApAQCAtMCwwICsxLDI5IEBACit7JSBpbXBvcnQgJ21hY3Jvcy9wZ2Ffam9i c3RlcC5tYWNyb3MnIGFzIFNURVAgJX0KK3slIGltcG9ydCAnbWFjcm9zL3Bn YV9zY2hlZHVsZS5tYWNyb3MnIGFzIFNDSEVEVUxFICV9CitETyAkJAorREVD TEFSRQorICAgIGppZCBpbnRlZ2VyO3slIGlmICdqc2NoZWR1bGVzJyBpbiBk YXRhIGFuZCBkYXRhLmpzY2hlZHVsZXN8bGVuZ3RoID4gMCAlfQorCisgICAg c2NpZCBpbnRlZ2VyO3slIGVuZGlmICV9CisKK0JFR0lOCistLSBDcmVhdGlu ZyBhIG5ldyBqb2IKK0lOU0VSVCBJTlRPIHBnYWdlbnQucGdhX2pvYigKKyAg ICBqb2JqY2xpZCwgam9ibmFtZSwgam9iZGVzYywgam9iaG9zdGFnZW50LCBq b2JlbmFibGVkCispIFZBTFVFUyAoCisgICAge3sgZGF0YS5qb2JqY2xpZHxx dExpdGVyYWwgfX06OmludGVnZXIsIHt7IGRhdGEuam9ibmFtZXxxdExpdGVy YWwgfX06OnRleHQsIHt7IGRhdGEuam9iZGVzY3xxdExpdGVyYWwgfX06OnRl eHQsIHt7IGRhdGEuam9iaG9zdGFnZW50fHF0TGl0ZXJhbCB9fTo6dGV4dCwg eyUgaWYgZGF0YS5qb2JlbmFibGVkICV9dHJ1ZXslIGVsc2UgJX1mYWxzZXsl IGVuZGlmICV9CisKKykgUkVUVVJOSU5HIGpvYmlkIElOVE8gamlkO3slIGlm ICdqc3RlcHMnIGluIGRhdGEgYW5kIGRhdGEuanN0ZXBzfGxlbmd0aCA+IDAg JX0KKworLS0gU3RlcHMKK3slIGZvciBzdGVwIGluIGRhdGEuanN0ZXBzICV9 e3sgU1RFUC5JTlNFUlQoaGFzX2Nvbm5zdHIsIE5vbmUsIHN0ZXApIH19eyUg ZW5kZm9yICV9Cit7JSBlbmRpZiAlfXslIGlmICdqc2NoZWR1bGVzJyBpbiBk YXRhIGFuZCBkYXRhLmpzY2hlZHVsZXN8bGVuZ3RoID4gMCAlfQorCistLSBT Y2hlZHVsZXMKK3slIGZvciBzY2hlZHVsZSBpbiBkYXRhLmpzY2hlZHVsZXMg JX17eyBTQ0hFRFVMRS5JTlNFUlQoTm9uZSwgc2NoZWR1bGUpIH19eyUgZW5k Zm9yICV9Cit7JSBlbmRpZiAlfQorCitFTkQKKyQkO3slIGlmIGZldGNoX2lk ICV9CisKK1NFTEVDVCBqb2JpZCBGUk9NIHBnYWdlbnQucGdhX2pvYiBXSEVS RSB4bWluOjp0ZXh0ID0gKHR4aWRfY3VycmVudCgpICUgKDJeMzIpOjpiaWdp bnQpOjp0ZXh0O3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBs YXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvZGVsZXRlLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVt cGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC9kZWxldGUuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlM2NkODYKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQv ZGVsZXRlLnNxbApAQCAtMCwwICsxIEBACitERUxFVEUgRlJPTSBwZ2FnZW50 LnBnYV9qb2IgV0hFUkUgam9iaWQgPSB7eyBqaWR8cXRMaXRlcmFsIH19Ojpp bnRlZ2VyOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9z cWwvcHJlMy40L2pvYl9jbGFzc2VzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3Bn YV9qb2Ivc3FsL3ByZTMuNC9qb2JfY2xhc3Nlcy5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjUzMTkxYQotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC9qb2Jf Y2xhc3Nlcy5zcWwKQEAgLTAsMCArMSBAQAorU0VMRUNUIGpjbGlkIEFTIHZh bHVlLCBqY2xuYW1lIEFTIGxhYmVsIEZST00gcGdhZ2VudC5wZ2Ffam9iY2xh c3MKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Ivc3FsL3By ZTMuNC9ub2Rlcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9w cmUzLjQvbm9kZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmZhOTZlYWYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBs YXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvbm9kZXMuc3FsCkBAIC0wLDAgKzEs OCBAQAorU0VMRUNUCisgICAgam9iaWQsIGpvYm5hbWUsIGpvYmVuYWJsZWQK K0ZST00KKyAgICBwZ2FnZW50LnBnYV9qb2IKK3slIGlmIGppZCAlfQorV0hF UkUgam9iaWQgPSB7eyBqaWR8cXRMaXRlcmFsIH19OjppbnRlZ2VyCit7JSBl bmRpZiAlfQorT1JERVIgQlkgam9ibmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQv dGVtcGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC9wcm9wZXJ0aWVzLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Bn QWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC9wcm9wZXJ0aWVz LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTZk ODIwCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pv Yi9zcWwvcHJlMy40L3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMjEgQEAK K1NFTEVDVAorICAgIGouam9iaWQgQVMgam9iaWQsIGouam9ibmFtZSBhcyBq b2JuYW1lLCBqLmpvYmVuYWJsZWQgYXMgam9iZW5hYmxlZCwKKyAgICBqLmpv YmRlc2MgQVMgam9iZGVzYywgai5qb2Job3N0YWdlbnQgQVMgam9iaG9zdGFn ZW50LAorICAgIGouam9iY3JlYXRlZCBBUyBqb2JjcmVhdGVkLCBqLmpvYmNo YW5nZWQgQVMgam9iY2hhbmdlZCwKKyAgICBhZy5qYWdzdGF0aW9uIEFTIGph Z2FnZW50LCBzdWIuamxnc3RhdHVzIEFTIGpsZ3N0YXR1cywKKyAgICBqLmpv YmFnZW50aWQgQVMgam9iYWdlbnRpZCwgai5qb2JuZXh0cnVuIEFTIGpvYm5l eHRydW4sCisgICAgai5qb2JsYXN0cnVuIEFTIGpvYmxhc3RydW4sIGouam9i amNsaWQgQVMgam9iamNsaWQsCisgICAgamMuamNsbmFtZSBBUyBqb2JjbGFz cworRlJPTQorICAgIHBnYWdlbnQucGdhX2pvYiBqCisgICAgTEVGVCBPVVRF UiBKT0lOIHBnYWdlbnQucGdhX2pvYmFnZW50IGFnIE9OIGFnLmphZ3BpZD1q b2JhZ2VudGlkCisgICAgTEVGVCBPVVRFUiBKT0lOICgKKyAgICAgICAgU0VM RUNUIERJU1RJTkNUIE9OIChqbGdqb2JpZCkgamxnc3RhdHVzLCBqbGdqb2Jp ZAorICAgICAgICBGUk9NIHBnYWdlbnQucGdhX2pvYmxvZworICAgICAgICBP UkRFUiBCWSBqbGdqb2JpZCwgamxnaWQgREVTQworICAgICkgc3ViIE9OIHN1 Yi5qbGdqb2JpZCA9IGouam9iaWQKKyAgICBMRUZUIEpPSU4gcGdhZ2VudC5w Z2Ffam9iY2xhc3MgamMgT04gKGouam9iamNsaWQgPSBqYy5qY2xpZCkKK3sl IGlmIGppZCAlfQorV0hFUkUgai5qb2JpZCA9IHt7IGppZHxxdExpdGVyYWwg fX06OmludGVnZXIKK3slIGVuZGlmICV9CitPUkRFUiBCWSBqLmpvYm5hbWU7 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUz LjQvcnVuX25vdy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9w cmUzLjQvcnVuX25vdy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uOTc2MmNjMQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVt cGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC9ydW5fbm93LnNxbApAQCAtMCww ICsxLDMgQEAKK1VQREFURSBwZ2FnZW50LnBnYV9qb2IKK1NFVCBqb2JuZXh0 cnVuPW5vdygpOjp0aW1lc3RhbXB0egorV0hFUkUgam9iaWQ9e3sgamlkfHF0 TGl0ZXJhbCB9fTo6aW50ZWdlcgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0 ZXMvcGdhX2pvYi9zcWwvcHJlMy40L3NjaGVkdWxlcy5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3Rl bXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvc2NoZWR1bGVzLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzAwZGNkCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJl My40L3NjaGVkdWxlcy5zcWwKQEAgLTAsMCArMSwyIEBACit7JSBpbXBvcnQg J21hY3Jvcy9wZ2Ffc2NoZWR1bGUubWFjcm9zJyBhcyBTQ0hFRFVMRSAlfQor e3sgU0NIRURVTEUuUFJPUEVSVElFUyhqaWQsIGpzY2lkKSB9fQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJlMy40L3N0YXRz LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC9zdGF0 cy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU5 ZjYxYwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9q b2Ivc3FsL3ByZTMuNC9zdGF0cy5zcWwKQEAgLTAsMCArMSwxMSBAQAorU0VM RUNUCisgICAgamxnaWQgQVMge3sgY29ubnxxdElkZW50KF8oJ1J1bicpKSB9 fSwKKyAgICBqbGdzdGF0dXMgQVMge3sgY29ubnxxdElkZW50KF8oJ1N0YXR1 cycpKSB9fSwKKyAgICBqbGdzdGFydCBBUyB7eyBjb25ufHF0SWRlbnQoXygn U3RhcnQgdGltZScpKSB9fSwKKyAgICBqbGdkdXJhdGlvbiBBUyB7eyBjb25u fHF0SWRlbnQoXygnRHVyYXRpb24nKSkgfX0sCisgICAgKGpsZ3N0YXJ0ICsg amxnZHVyYXRpb24pIEFTIHt7IGNvbm58cXRJZGVudChfKCdFbmQgdGltZScp KSB9fQorRlJPTQorICAgIHBnYWdlbnQucGdhX2pvYmxvZworV0hFUkUKKyAg ICBqbGdqb2JpZCA9IHt7IGppZHxxdExpdGVyYWwgfX06OmludGVnZXIKK09S REVSIEJZIGpsZ2lkIERFU0M7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRl cy9wZ2Ffam9iL3NxbC9wcmUzLjQvc3RlcHMuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0 ZXMvcGdhX2pvYi9zcWwvcHJlMy40L3N0ZXBzLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGMzZWNlCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJlMy40L3N0ZXBz LnNxbApAQCAtMCwwICsxLDIgQEAKK3slIGltcG9ydCAnbWFjcm9zL3BnYV9q b2JzdGVwLm1hY3JvcycgYXMgU1RFUCAlfQore3sgU1RFUC5QUk9QRVJUSUVT KGhhc19jb25uc3RyLCBqaWQsIGpzdGlkKSB9fQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2Vu dC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJlMy40L3VwZGF0ZS5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0Fn ZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvdXBkYXRlLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODU1ODQzCi0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwv cHJlMy40L3VwZGF0ZS5zcWwKQEAgLTAsMCArMSwyMCBAQAoreyUgaW1wb3J0 ICdtYWNyb3MvcGdhX2pvYnN0ZXAubWFjcm9zJyBhcyBTVEVQICV9Cit7JSBp bXBvcnQgJ21hY3Jvcy9wZ2Ffc2NoZWR1bGUubWFjcm9zJyBhcyBTQ0hFRFVM RSAlfQoreyUgaWYgJ2pvYmpjbGlkJyBpbiBkYXRhIG9yICdqb2JuYW1lJyBp biBkYXRhIG9yICdqb2JkZXNjJyBpbiBkYXRhIG9yICdqb2Job3N0YWdlbnQn IGluIGRhdGEgb3IgJ2pvYmVuYWJsZWQnIGluIGRhdGEgJX0KK1VQREFURSBw Z2FnZW50LnBnYV9qb2IKK1NFVCB7JSBpZiAnam9iamNsaWQnIGluIGRhdGEg JX1qb2JqY2xpZD17eyBkYXRhLmpvYmpjbGlkfHF0TGl0ZXJhbCB9fTo6aW50 ZWdlcnslIGlmICdqb2JuYW1lJyBpbiBkYXRhIG9yICdqb2JkZXNjJyBpbiBk YXRhIG9yICdqb2Job3N0YWdlbnQnIGluIGRhdGEgb3IgJ2pvYmVuYWJsZWQn IGluIGRhdGEgJX0sIHslIGVuZGlmICV9eyUgZW5kaWYgJX0KK3slIGlmICdq b2JuYW1lJyBpbiBkYXRhICV9am9ibmFtZT17eyBkYXRhLmpvYm5hbWV8cXRM aXRlcmFsIH19Ojp0ZXh0eyVpZiAnam9iZGVzYycgaW4gZGF0YSBvciAnam9i aG9zdGFnZW50JyBpbiBkYXRhIG9yICdqb2JlbmFibGVkJyBpbiBkYXRhICV9 LCB7JSBlbmRpZiAlfXslIGVuZGlmICV9Cit7JSBpZiAnam9iZGVzYycgaW4g ZGF0YSAlfWpvYmRlc2M9e3sgZGF0YS5qb2JkZXNjfHF0TGl0ZXJhbCB9fTo6 dGV4dHslaWYgJ2pvYmhvc3RhZ2VudCcgaW4gZGF0YSBvciAnam9iZW5hYmxl ZCcgaW4gZGF0YSAlfSwgeyUgZW5kaWYgJX17JSBlbmRpZiAlfQoreyVpZiAn am9iaG9zdGFnZW50JyBpbiBkYXRhICV9am9iaG9zdGFnZW50PXt7IGRhdGEu am9iaG9zdGFnZW50fHF0TGl0ZXJhbCB9fTo6dGV4dHslIGlmICdqb2JlbmFi bGVkJyBpbiBkYXRhICV9LCB7JSBlbmRpZiAlfXslIGVuZGlmICV9Cit7JSBp ZiAnam9iZW5hYmxlZCcgaW4gZGF0YSAlfWpvYmVuYWJsZWQ9eyUgaWYgZGF0 YS5qb2JlbmFibGVkICV9dHJ1ZXslIGVsc2UgJX1mYWxzZXslIGVuZGlmICV9 eyUgZW5kaWYgJX0KKworV0hFUkUgam9iaWQgPSB7eyBqaWQgfX07Cit7JSBl bmRpZiAlfXslIGlmICdqc3RlcHMnIGluIGRhdGEgJX0KKworeyUgaWYgJ2Rl bGV0ZWQnIGluIGRhdGEuanN0ZXBzICV9eyUgZm9yIHN0ZXAgaW4gZGF0YS5q c3RlcHMuZGVsZXRlZCAlfXt7IFNURVAuREVMRVRFKGppZCwgc3RlcC5qc3Rp ZCkgfX17JSBlbmRmb3IgJX17JSBlbmRpZiAlfQoreyUgaWYgJ2NoYW5nZWQn IGluIGRhdGEuanN0ZXBzICV9eyUgZm9yIHN0ZXAgaW4gZGF0YS5qc3RlcHMu Y2hhbmdlZCAlfXt7IFNURVAuVVBEQVRFKGhhc19jb25uc3RyLCBqaWQsIHN0 ZXAuanN0aWQsIHN0ZXApIH19eyUgZW5kZm9yICV9eyUgZW5kaWYgJX0KK3sl IGlmICdhZGRlZCcgaW4gZGF0YS5qc3RlcHMgJX17JSBmb3Igc3RlcCBpbiBk YXRhLmpzdGVwcy5hZGRlZCAlfXt7IFNURVAuSU5TRVJUKGhhc19jb25uc3Ry LCBqaWQsIHN0ZXApIH19eyUgZW5kZm9yICV9eyUgZW5kaWYgJX17JSBlbmRp ZiAlfXslIGlmICdqc2NoZWR1bGVzJyBpbiBkYXRhICV9CisKK3slIGlmICdk ZWxldGVkJyBpbiBkYXRhLmpzY2hlZHVsZXMgJX17JSBmb3Igc2NoZWR1bGUg aW4gZGF0YS5qc2NoZWR1bGVzLmRlbGV0ZWQgJX17eyBTQ0hFRFVMRS5ERUxF VEUoamlkLCBzY2hlZHVsZS5qc2NpZCkgfX17JSBlbmRmb3IgJX17JSBlbmRp ZiAlfQoreyUgaWYgJ2NoYW5nZWQnIGluIGRhdGEuanNjaGVkdWxlcyAlfXsl IGZvciBzY2hlZHVsZSBpbiBkYXRhLmpzY2hlZHVsZXMuY2hhbmdlZCAlfXt7 IFNDSEVEVUxFLlVQREFURShoYXNfY29ubnN0ciwgamlkLCBzY2hlZHVsZS5q c2NpZCwgc2NoZWR1bGUpIH19eyUgZW5kZm9yICV9eyUgZW5kaWYgJX0KK3sl IGlmICdhZGRlZCcgaW4gZGF0YS5qc2NoZWR1bGVzICV9eyUgZm9yIHNjaGVk dWxlIGluIGRhdGEuanNjaGVkdWxlcy5hZGRlZCAlfXt7IFNDSEVEVUxFLklO U0VSVChoYXNfY29ubnN0ciwgamlkLCBzY2hlZHVsZSkgfX17JSBlbmRmb3Ig JX17JSBlbmRpZiAlfXslIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3Rl bXBsYXRlcy9wZ2Ffam9ic3RlcC9zcWwvcHJlMy40L2NyZWF0ZS5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0Fn ZW50L3RlbXBsYXRlcy9wZ2Ffam9ic3RlcC9zcWwvcHJlMy40L2NyZWF0ZS5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRkMjE3 MgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Jz dGVwL3NxbC9wcmUzLjQvY3JlYXRlLnNxbApAQCAtMCwwICsxLDIgQEAKK3sl IGltcG9ydCAnbWFjcm9zL3BnYV9qb2JzdGVwLm1hY3JvcycgYXMgU1RFUCAl fQore3sgU1RFUC5JTlNFUlQoaGFzX2Nvbm5zdHIsIGppZCwgZGF0YSkgfX0K ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2JzdGVwL3NxbC9w cmUzLjQvZGVsZXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2JzdGVw L3NxbC9wcmUzLjQvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi41OWRiMWFjCi0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2Vu dC90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMuNC9kZWxldGUuc3Fs CkBAIC0wLDAgKzEsMiBAQAoreyUgaW1wb3J0ICdtYWNyb3MvcGdhX2pvYnN0 ZXAubWFjcm9zJyBhcyBTVEVQICV9Cit7eyBTVEVQLkRFTEVURShqaWQsIGpz dGlkKSB9fQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYnN0 ZXAvc3FsL3ByZTMuNC9ub2Rlcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ff am9ic3RlcC9zcWwvcHJlMy40L25vZGVzLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5lM2I2ZjRjCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv cGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMuNC9ub2Rl cy5zcWwKQEAgLTAsMCArMSwxMCBAQAorU0VMRUNUCisgICAganN0aWQsIGpz dGpvYmlkLCBqc3RuYW1lLCBqc3RlbmFibGVkLCBqc3RraW5kID0gJ3MnOjpi cGNoYXIgQVMganN0a2luZAorRlJPTQorICAgIHBnYWdlbnQucGdhX2pvYnN0 ZXAKK1dIRVJFCit7JSBpZiBqc3RpZCAlfQorICAgIGpzdGlkID0ge3sganN0 aWR8cXRMaXRlcmFsIH19OjppbnRlZ2VyIEFORAoreyUgZW5kaWYgJX0KKyAg ICBqc3Rqb2JpZCA9IHt7IGppZHxxdExpdGVyYWwgfX06OmludGVnZXIKK09S REVSIEJZIGpzdG5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9w Z2Ffam9ic3RlcC9zcWwvcHJlMy40L3Byb3BlcnRpZXMuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90 ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMuNC9wcm9wZXJ0aWVzLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGMzZWNl Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYnN0 ZXAvc3FsL3ByZTMuNC9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsxLDIgQEAK K3slIGltcG9ydCAnbWFjcm9zL3BnYV9qb2JzdGVwLm1hY3JvcycgYXMgU1RF UCAlfQore3sgU1RFUC5QUk9QRVJUSUVTKGhhc19jb25uc3RyLCBqaWQsIGpz dGlkKSB9fQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYnN0 ZXAvc3FsL3ByZTMuNC9zdGF0cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ff am9ic3RlcC9zcWwvcHJlMy40L3N0YXRzLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5iMmVlODU0Ci0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv cGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMuNC9zdGF0 cy5zcWwKQEAgLTAsMCArMSwxMyBAQAorU0VMRUNUCisgICAganNsaWQgQVMg e3sgY29ubnxxdElkZW50KF8oJ1J1bicpKSB9fSwKKyAgICBqc2xzdGF0dXMg QVMge3sgY29ubnxxdElkZW50KF8oJ1N0YXR1cycpKSB9fSwKKyAgICBqc2xy ZXN1bHQgQVMge3sgY29ubnxxdElkZW50KF8oJ1Jlc3VsdCcpKSB9fSwKKyAg ICBqc2xzdGFydCBBUyB7eyBjb25ufHF0SWRlbnQoXygnU3RhcnQgdGltZScp KSB9fSwKKyAgICAoanNsc3RhcnQgKyBqc2xkdXJhdGlvbikgQVMge3sgY29u bnxxdElkZW50KF8oJ0VuZCB0aW1lJykpIH19LAorICAgIGpzbGR1cmF0aW9u IEFTIHt7IGNvbm58cXRJZGVudChfKCdEdXJhdGlvbicpKSB9fSwKKyAgICBq c2xvdXRwdXQgQVMge3sgY29ubnxxdElkZW50KF8oJ091dHB1dCcpKSB9fQor RlJPTQorICAgIHBnYWdlbnQucGdhX2pvYnN0ZXBsb2cKK1dIRVJFCisgICAg anNsanN0aWQgPSB7eyBqc3RpZHxxdExpdGVyYWwgfX06OmludGVnZXIKK09S REVSIEJZIGpzbGlkIERFU0M7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRl cy9wZ2Ffam9ic3RlcC9zcWwvcHJlMy40L3VwZGF0ZS5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3Rl bXBsYXRlcy9wZ2Ffam9ic3RlcC9zcWwvcHJlMy40L3VwZGF0ZS5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE2MzU1ZQotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2JzdGVwL3Nx bC9wcmUzLjQvdXBkYXRlLnNxbApAQCAtMCwwICsxLDIgQEAKK3slIGltcG9y dCAnbWFjcm9zL3BnYV9qb2JzdGVwLm1hY3JvcycgYXMgU1RFUCAlfQore3sg U1RFUC5VUERBVEUoaGFzX2Nvbm5zdHIsIGppZCwganN0aWQsIGRhdGEpIH19 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffc2NoZWR1bGUvc3Fs L3ByZTMuNC9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX3NjaGVk dWxlL3NxbC9wcmUzLjQvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5lOWY2NTdmCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdB Z2VudC90ZW1wbGF0ZXMvcGdhX3NjaGVkdWxlL3NxbC9wcmUzLjQvY3JlYXRl LnNxbApAQCAtMCwwICsxLDEwIEBACit7JSBpbXBvcnQgJ21hY3Jvcy9wZ2Ff c2NoZWR1bGUubWFjcm9zJyBhcyBTQ0hFRFVMRSAlfQorRE8gJCQKK0RFQ0xB UkUKKyAganNjaWQgaW50ZWdlcjsKK0JFR0lOCit7eyBTQ0hFRFVMRS5JTlNF UlQoamlkLCBkYXRhKSB9fQorRU5ECiskJCBMQU5HVUFHRSAncGxwZ3NxbCc7 eyUgaWYgZmV0Y2hfaWQgJX0KKwore3sgU0NIRURVTEUuRkVUQ0hfQ1VSUkVO VCgpIH19eyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVz L3BnYV9zY2hlZHVsZS9zcWwvcHJlMy40L2RlbGV0ZS5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3Rl bXBsYXRlcy9wZ2Ffc2NoZWR1bGUvc3FsL3ByZTMuNC9kZWxldGUuc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDMwNzEKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffc2NoZWR1bGUv c3FsL3ByZTMuNC9kZWxldGUuc3FsCkBAIC0wLDAgKzEsMiBAQAoreyUgaW1w b3J0ICdtYWNyb3MvcGdhX3NjaGVkdWxlLm1hY3JvcycgYXMgU0NIRURVTEUg JX0KK3t7IFNDSEVEVUxFLkRFTEVURShqaWQsIGpzY2lkKSB9fQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX3NjaGVkdWxlL3NxbC9wcmUzLjQv bm9kZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX3NjaGVkdWxlL3NxbC9w cmUzLjQvbm9kZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjVkMGYwODMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBs YXRlcy9wZ2Ffc2NoZWR1bGUvc3FsL3ByZTMuNC9ub2Rlcy5zcWwKQEAgLTAs MCArMSwxMSBAQAorU0VMRUNUCisgICAganNjaWQsIGpzY2pvYmlkLCBqc2Nu YW1lLCBqc2NlbmFibGVkCitGUk9NCisgICAgcGdhZ2VudC5wZ2Ffc2NoZWR1 bGUKK1dIRVJFCit7JSBpZiBqc2NpZCAlfQorICAgIGpzY2lkID0ge3sganNj aWR8cXRMaXRlcmFsIH19OjppbnRlZ2VyCit7JSBlbHNlICV9CisgICAganNj am9iaWQgPSB7eyBqaWR8cXRMaXRlcmFsIH19OjppbnRlZ2VyCit7JSBlbmRp ZiAlfQorT1JERVIgQlkganNjbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVt cGxhdGVzL3BnYV9zY2hlZHVsZS9zcWwvcHJlMy40L3Byb3BlcnRpZXMuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv cGdBZ2VudC90ZW1wbGF0ZXMvcGdhX3NjaGVkdWxlL3NxbC9wcmUzLjQvcHJv cGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uNmNiZDllNAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVz L3BnYV9zY2hlZHVsZS9zcWwvcHJlMy40L3Byb3BlcnRpZXMuc3FsCkBAIC0w LDAgKzEsMiBAQAoreyUgaW1wb3J0ICdtYWNyb3MvcGdhX3NjaGVkdWxlLm1h Y3JvcycgYXMgU0NIRURVTEUgJX0KK3t7IFNDSEVEVUxFLlBST1BFUlRJRVMo amlkLCBqc3RpZCkgfX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3Bn YV9zY2hlZHVsZS9zcWwvcHJlMy40L3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBs YXRlcy9wZ2Ffc2NoZWR1bGUvc3FsL3ByZTMuNC91cGRhdGUuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZmI3Y2IKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffc2NoZWR1bGUvc3Fs L3ByZTMuNC91cGRhdGUuc3FsCkBAIC0wLDAgKzEsMiBAQAoreyUgaW1wb3J0 ICdtYWNyb3MvcGdhX3NjaGVkdWxlLm1hY3JvcycgYXMgU0NIRURVTEUgJX0K K3t7IFNDSEVEVUxFLlVQREFURShqaWQsIGpzY2lkLCBkYXRhKSB9fQo= --001a114100fc37b2be053d1664af 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 --001a114100fc37b2be053d1664af--