Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nTl38-0000oU-T9 for pgadmin-hackers@arkaria.postgresql.org; Mon, 14 Mar 2022 13:47:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nTl36-0006j4-Je for pgadmin-hackers@arkaria.postgresql.org; Mon, 14 Mar 2022 13:47:48 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nTl35-0006it-IU for pgadmin-hackers@lists.postgresql.org; Mon, 14 Mar 2022 13:47:48 +0000 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nTl30-0001ik-Br for pgadmin-hackers@postgresql.org; Mon, 14 Mar 2022 13:47:47 +0000 Received: by mail-pg1-x529.google.com with SMTP id q29so12893682pgn.7 for ; Mon, 14 Mar 2022 06:47:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=mime-version:from:date:message-id:subject:to; bh=pQIucOneHygFG+xHnhvOHg8iE6OnbVbJ5++k+9MUgXw=; b=Ogk+vY+Ro7rIojiyGqpLzbx+iZnJvg+xCQk5sXy0tRObbzU6FiZWMdM5ocAnejxgyO 3QAMKDCZExpbe7gTQjO411ui6vg40p62+BzlNBeJBfYWjECHIB+uPOV2aF/XEzp3unPd PVH88avXv+4nl8+4WMT4bOarXMvsZcRJCGPx6Bvu8WgwOpy7bwa3TDU6nd0775wHTU3T KoolFXnbEMjwuFbIiCMV/vcnSy85ClGL9Ircvqwe9z9NxfQhRUKuCYMyxdkXP5RPTmRE /RvBX14pN8NmaOAC4xSFR0jlERdpAYkCA+Im6hqPr6P4eqko7MKpPFvGpeEVqI37qkW4 6eIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=pQIucOneHygFG+xHnhvOHg8iE6OnbVbJ5++k+9MUgXw=; b=8DthvInNtLjFwjG31jq5LuMluJgulKXm89tFaqBI+JFa9XOS5OwsPvSKRt93cWkfVw SYOQEgVSkgdrzdz0vicNgU5UWAAzfXZ07zgUMRCNUn7rLiqMfs9gGcFeIrLhOmzrm4R7 ClOl3Lny8kii2n/gfaKNOyAqnHfVR32Wu9Zbma7wQKSAn2fDSMVLHX9lFNglcOOrwGYX +gLBtJc4iZQOf5Ve7c3tp2BerLPhtSnNNiQw6JO8YIOGzTC6SG9WBnvh5ULJqWGppnXz bGYZHZHbAsSVouRAZdr+yJdu7MSTTnHYzWvATWGX7HzLXuT2+oMOaBzCjSukD35+Y2Yz zhdg== X-Gm-Message-State: AOAM532n7/y8CFjvau6JS052UaraAN7DYFbQEiJw8phkzFGNDXcplElV drHsPyHT2MXo42chnclg//cO5+qyvsIv7fPKjAIUwCPAm9QHHsjn7iLXEknGCHsBvIBEBNA0LPu wM/+rfBB9R8HwlJ0b4klROBS4a2oes18kLWk0YGxw/uhJzEUBL+6QlecEzWOjdUKOMt731h3pwH O7Gopv7EFsL5YHcrS1pTG/lCYqz5PZaYwREnfh0BNwx5mrbnWjwOb5DkDdzsqUJTXk4g== X-Google-Smtp-Source: ABdhPJw/Rhn+VG5Y4l5HsePgL/OGCUu6al7zMzw4OjxIqM+u8yKQqYDpLKq91csxiZSzpqX4C9MC0zkHA4GAV5SZkGI= X-Received: by 2002:a05:6a00:a8b:b0:4e1:52db:9e5c with SMTP id b11-20020a056a000a8b00b004e152db9e5cmr23637427pfl.38.1647265659114; Mon, 14 Mar 2022 06:47:39 -0700 (PDT) MIME-Version: 1.0 From: Pradip Parkale Date: Mon, 14 Mar 2022 19:17:27 +0530 Message-ID: Subject: [pgAdmin][RM-7132]: Port Properties collection, Dashboard and SQL panel in React To: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000768ac105da2dec10" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000768ac105da2dec10 Content-Type: multipart/alternative; boundary="000000000000768abf05da2dec0e" --000000000000768abf05da2dec0e Content-Type: text/plain; charset="UTF-8" Hi Hackers, Please find the attached patch for #7132 Port Properties collection, Dashboard and SQL panel in React. -- Thanks & Regards, Pradip Parkale Software Engineer | EnterpriseDB Corporation --000000000000768abf05da2dec0e Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Please find the attached pa= tch for #7132=C2=A0Port Properties collection, Dashboard and SQL panel in= React.


--
Thanks & Regards,
Pra= dip Parkale
Software Engineer | EnterpriseDB Corporation
--000000000000768abf05da2dec0e-- --000000000000768ac105da2dec10 Content-Type: application/x-patch; name="RM7132.patch" Content-Disposition: attachment; filename="RM7132.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l0qre3lv0 ZGlmZiAtLWdpdCBhL3dlYi9wYWNrYWdlLmpzb24gYi93ZWIvcGFja2FnZS5qc29uCmluZGV4IGU0 YTI3YmQxMC4uM2M4ZTc2OWVhIDEwMDY0NAotLS0gYS93ZWIvcGFja2FnZS5qc29uCisrKyBiL3dl Yi9wYWNrYWdlLmpzb24KQEAgLTg3LDYgKzg3LDggQEAKICAgICAiQG1hdGVyaWFsLXVpL2ljb25z IjogIl40LjExLjIiLAogICAgICJAbWF0ZXJpYWwtdWkvbGFiIjogIjQuMC4wLWFscGhhLjU4IiwK ICAgICAiQG1hdGVyaWFsLXVpL3BpY2tlcnMiOiAiXjMuMi4xMCIsCisgICAgIkBtdWkvaWNvbnMt bWF0ZXJpYWwiOiAiXjUuNC4yIiwKKyAgICAiQG11aS9tYXRlcmlhbCI6ICJeNS40LjMiLAogICAg ICJAcHJvamVjdHN0b3JtL3JlYWN0LWRpYWdyYW1zIjogIl42LjYuMSIsCiAgICAgIkBzaW1vbndl cC9waWNrciI6ICJeMS41LjEiLAogICAgICJAc3poc2luL3JlYWN0LW1lbnUiOiAiXjIuMi4wIiwK QEAgLTEyMiw2ICsxMjQsNyBAQAogICAgICJkYXRlLWZucyI6ICJeMi4yNC4wIiwKICAgICAiZGlm Zi1hcnJheXMtb2Ytb2JqZWN0cyI6ICJeMS4xLjgiLAogICAgICJkcm9wem9uZSI6ICJeNS45LjMi LAorICAgICJodG1sLWxvYWRlciI6ICJeMy4xLjAiLAogICAgICJodG1sMmNhbnZhcyI6ICJeMS4w LjAtcmMuNyIsCiAgICAgImltbXV0YWJpbGl0eS1oZWxwZXIiOiAiXjMuMC4wIiwKICAgICAiaW1w b3J0cy1sb2FkZXIiOiAiXjIuMC4wIiwKQEAgLTE1NCw2ICsxNTcsNyBAQAogICAgICJyZWFjdC1j aGVja2JveC10cmVlIjogIl4xLjcuMiIsCiAgICAgInJlYWN0LWRvbSI6ICJeMTcuMC4xIiwKICAg ICAicmVhY3QtZHJhZ2dhYmxlIjogIl40LjQuNCIsCisgICAgInJlYWN0LXJvdXRlci1kb20iOiAi XjYuMi4yIiwKICAgICAicmVhY3Qtc2VsZWN0IjogIl40LjIuMSIsCiAgICAgInJlYWN0LXRhYmxl IjogIl43LjYuMyIsCiAgICAgInJlYWN0LXRpbWVyLWhvb2siOiAiXjMuMC41IiwKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9j YXN0cy9zdGF0aWMvanMvY2FzdC5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy9zdGF0aWMvanMvY2FzdC5qcwppbmRleCBkZDk4NzQ5 NzYuLmQxZWU4YjNiMyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3N0YXRpYy9qcy9jYXN0LmpzCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy9zdGF0 aWMvanMvY2FzdC5qcwpAQCAtNjgsMjUgKzY4LDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuY2Fz dCcsIFsKIAogICAgICAgfSwKIAotICAgICAgLy8gRGVmaW5lIHRoZSBiYWNrZm9ybSBtb2RlbCBm b3IgY2FzdCBub2RlCi0gICAgICBtb2RlbDogcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0 ZW5kKHsKLSAgICAgICAgaWRBdHRyaWJ1dGU6ICdvaWQnLAotCi0gICAgICAgIC8vIERlZmluZSB0 aGUgc2NoZW1hIGZvciBjYXN0Ci0gICAgICAgIHNjaGVtYTogW3sKLSAgICAgICAgICBpZDogJ25h bWUnLCBsYWJlbDogZ2V0dGV4dCgnTmFtZScpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICBl ZGl0YWJsZTogZmFsc2UsIHR5cGU6ICd0ZXh0JywgcmVhZG9ubHk6IHRydWUsIGNlbGxIZWFkZXJD bGFzc2VzOiAnd2lkdGhfcGVyY2VudF81MCcsCi0gICAgICAgIH0sewotICAgICAgICAgIGlkOiAn b2lkJywgbGFiZWw6IGdldHRleHQoJ09JRCcpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICBl ZGl0YWJsZTogZmFsc2UsIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJ10sCi0gICAg ICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICBpZDogJ2Rlc2NyaXB0aW9uJywgbGFiZWw6IGdl dHRleHQoJ0NvbW1lbnQnKSwKLSAgICAgICAgICB0eXBlOiAnbXVsdGlsaW5lJywgY2VsbEhlYWRl ckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzUwJywKLSAgICAgICAgfSwKLSAgICAgICAgXSwKLSAg ICAgIH0pLAotCiAgICAgICBnZXRTY2hlbWE6IGZ1bmN0aW9uKHRyZWVOb2RlSW5mbywgaXRlbU5v ZGVEYXRhKXsKICAgICAgICAgcmV0dXJuIG5ldyBDYXN0U2NoZW1hKHsKICAgICAgICAgICBnZXRU eXBlT3B0aW9uczogKCk9PmdldE5vZGVBamF4T3B0aW9ucygnZ2V0X3R5cGUnLCB0aGlzLCB0cmVl Tm9kZUluZm8sIGl0ZW1Ob2RlRGF0YSksCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXZlbnRfdHJpZ2dlcnMvc3RhdGljL2pz L2V2ZW50X3RyaWdnZXIuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvZXZlbnRfdHJpZ2dlcnMvc3RhdGljL2pzL2V2ZW50X3RyaWdnZXIuanMK aW5kZXggYzZkN2E3ZTUxLi41ZTgzMGFmODcgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9ldmVudF90cmlnZ2Vycy9zdGF0aWMv anMvZXZlbnRfdHJpZ2dlci5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvZXZlbnRfdHJpZ2dlcnMvc3RhdGljL2pzL2V2ZW50X3RyaWdn ZXIuanMKQEAgLTEyLDkgKzEyLDggQEAgaW1wb3J0IHsgZ2V0Tm9kZUxpc3RCeU5hbWUsIGdldE5v ZGVBamF4T3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3N0YXRpYy8KIAogZGVmaW5l KCdwZ2FkbWluLm5vZGUuZXZlbnRfdHJpZ2dlcicsIFsKICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdz b3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLAotICAnc291cmNlcy9wZ2Fk bWluJywgJ3BnYWRtaW4uYnJvd3NlcicsCi0gICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRtaW4u YnJvd3Nlci5jb2xsZWN0aW9uJywKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8s IHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2Zvcm0pIHsKKyAgJ3NvdXJjZXMvcGdhZG1pbicsICdw Z2FkbWluLmJyb3dzZXInLCAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAorXSwgZnVuY3Rp b24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgcGdBZG1pbiwgcGdCcm93c2VyKSB7CiAKICAgLy8g RXh0ZW5kIHRoZSBicm93c2VyJ3MgY29sbGVjdGlvbiBjbGFzcyBmb3IgZXZlbnQgdHJpZ2dlciBj b2xsZWN0aW9uCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb2xsLWV2ZW50X3RyaWdnZXInXSkg ewpAQCAtODAsMTMyICs3OSw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmV2ZW50X3RyaWdnZXIn LCBbCiAgICAgICAgICAgfQogICAgICAgICApOwogICAgICAgfSwKLSAgICAgIC8vIERlZmluZSB0 aGUgbW9kZWwgZm9yIGV2ZW50IHRyaWdnZXIgbm9kZQotICAgICAgbW9kZWw6IHBnQWRtaW4uQnJv d3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7Ci0gICAgICAgIGlkQXR0cmlidXRlOiAnb2lkJywKLSAg ICAgICAgZGVmYXVsdHM6IHsKLSAgICAgICAgICBvaWQ6IHVuZGVmaW5lZCwKLSAgICAgICAgICBu YW1lOiB1bmRlZmluZWQsCi0gICAgICAgICAgZXZlbnRvd25lcjogdW5kZWZpbmVkLAotICAgICAg ICAgIGlzX3N5c19vYmo6IHVuZGVmaW5lZCwKLSAgICAgICAgICBjb21tZW50OiB1bmRlZmluZWQs Ci0gICAgICAgICAgZW5hYmxlZDogJ08nLAotICAgICAgICAgIGV2ZW50ZnVuY29pZDogdW5kZWZp bmVkLAotICAgICAgICAgIGV2ZW50ZnVubmFtZTogdW5kZWZpbmVkLAotICAgICAgICAgIGV2ZW50 bmFtZTogJ0RETF9DT01NQU5EX1NUQVJUJywKLSAgICAgICAgICB3aGVuOiB1bmRlZmluZWQsCi0g ICAgICAgICAgeG1pbjogdW5kZWZpbmVkLAotICAgICAgICAgIHNvdXJjZTogdW5kZWZpbmVkLAot ICAgICAgICAgIGxhbmd1YWdlOiB1bmRlZmluZWQsCi0gICAgICAgIH0sCi0KLSAgICAgICAgLy8g RGVmYXVsdCB2YWx1ZXMhCi0gICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdz KSB7Ci0gICAgICAgICAgdmFyIGlzTmV3ID0gKF8uc2l6ZShhdHRycykgPT09IDApOwotCi0gICAg ICAgICAgaWYgKGlzTmV3KSB7Ci0gICAgICAgICAgICB2YXIgdXNlckluZm8gPSBwZ0Jyb3dzZXIu c2VydmVySW5mb1thcmdzLm5vZGVfaW5mby5zZXJ2ZXIuX2lkXS51c2VyOwotCi0gICAgICAgICAg ICB0aGlzLnNldCh7J2V2ZW50b3duZXInOiB1c2VySW5mby5uYW1lfSwge3NpbGVudDogdHJ1ZX0p OwotICAgICAgICAgIH0KLSAgICAgICAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5wcm90 b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotICAgICAgICB9LAotCi0g ICAgICAgIC8vIERlZmluZSB0aGUgc2NoZW1hIGZvciB0aGUgZXZlbnQgdHJpZ2dlciBub2RlCi0g ICAgICAgIHNjaGVtYTogW3sKLSAgICAgICAgICBpZDogJ25hbWUnLCBsYWJlbDogZ2V0dGV4dCgn TmFtZScpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBlOiAndGV4dCcsCi0gICAgICAg IH0sewotICAgICAgICAgIGlkOiAnb2lkJywgbGFiZWw6IGdldHRleHQoJ09JRCcpLCBjZWxsOiAn c3RyaW5nJywKLSAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddLAot ICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ2V2ZW50b3duZXInLCBsYWJlbDogZ2V0dGV4dCgn T3duZXInKSwgY2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBb J3Byb3BlcnRpZXMnLCAnZWRpdCcsJ2NyZWF0ZSddLCBub2RlOiAncm9sZScsCi0gICAgICAgICAg Y29udHJvbDogQmFja2Zvcm0uTm9kZUxpc3RCeU5hbWVDb250cm9sLAotICAgICAgICB9LHsKLSAg ICAgICAgICBpZDogJ2lzX3N5c19vYmonLCBsYWJlbDogZ2V0dGV4dCgnU3lzdGVtIGV2ZW50IHRy aWdnZXI/JyksCi0gICAgICAgICAgY2VsbDonYm9vbGVhbicsIHR5cGU6ICdzd2l0Y2gnLAotICAg ICAgICAgIG1vZGU6IFsncHJvcGVydGllcyddLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDog J2NvbW1lbnQnLCBsYWJlbDogZ2V0dGV4dCgnQ29tbWVudCcpLCB0eXBlOiAnbXVsdGlsaW5lJywK LSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdlbmFibGVkJywgbGFiZWw6IGdldHRleHQoJ1Ry aWdnZXIgZW5hYmxlZD8nKSwKLSAgICAgICAgICBncm91cDogZ2V0dGV4dCgnRGVmaW5pdGlvbicp LCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnZWRpdCcsJ2NyZWF0ZSddLAotICAgICAgICAgIG9wdGlv bnM6IFsKLSAgICAgICAgICAgIHtsYWJlbDogZ2V0dGV4dCgnRW5hYmxlJyksIHZhbHVlOiAnTyd9 LAotICAgICAgICAgICAge2xhYmVsOiBnZXR0ZXh0KCdEaXNhYmxlJyksIHZhbHVlOiAnRCd9LAot ICAgICAgICAgICAge2xhYmVsOiBnZXR0ZXh0KCdSZXBsaWNhJyksIHZhbHVlOiAnUid9LAotICAg ICAgICAgICAge2xhYmVsOiBnZXR0ZXh0KCdBbHdheXMnKSwgdmFsdWU6ICdBJ30sCi0gICAgICAg ICAgXSwKLSAgICAgICAgICBjb250cm9sOiAnc2VsZWN0MicsIHNlbGVjdDI6IHsgYWxsb3dDbGVh cjogZmFsc2UsIHdpZHRoOiAnMTAwJScgfSwKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdl dmVudGZ1bm5hbWUnLCBsYWJlbDogZ2V0dGV4dCgnVHJpZ2dlciBmdW5jdGlvbicpLAotICAgICAg ICAgIHR5cGU6ICd0ZXh0JywgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywgZ3JvdXA6IGdl dHRleHQoJ0RlZmluaXRpb24nKSwKLSAgICAgICAgICB1cmw6J2ZvcHRzJywgY2FjaGVfbm9kZTog J3RyaWdnZXJfZnVuY3Rpb24nLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ2V2ZW50bmFt ZScsIGxhYmVsOiBnZXR0ZXh0KCdFdmVudCcpLAotICAgICAgICAgIGdyb3VwOiBnZXR0ZXh0KCdE ZWZpbml0aW9uJyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIG9wdGlvbnM6IFsKLSAgICAg ICAgICAgIHtsYWJlbDogZ2V0dGV4dCgnRERMIENPTU1BTkQgU1RBUlQnKSwgdmFsdWU6ICdERExf Q09NTUFORF9TVEFSVCd9LAotICAgICAgICAgICAge2xhYmVsOiBnZXR0ZXh0KCdEREwgQ09NTUFO RCBFTkQnKSwgdmFsdWU6ICdERExfQ09NTUFORF9FTkQnfSwKLSAgICAgICAgICAgIHtsYWJlbDog Z2V0dGV4dCgnU1FMIERST1AnKSwgdmFsdWU6ICdTUUxfRFJPUCd9LAotICAgICAgICAgIF0sCi0g ICAgICAgICAgY29udHJvbDogJ3NlbGVjdDInLCBzZWxlY3QyOiB7IGFsbG93Q2xlYXI6IGZhbHNl LCB3aWR0aDogJzEwMCUnIH0sCi0gICAgICAgIH0sewotICAgICAgICAgIGlkOiAnd2hlbicsIGxh YmVsOiBnZXR0ZXh0KCdXaGVuIFRBRyBpbicpLCAgY2VsbDogJ3N0cmluZycsCi0gICAgICAgICAg dHlwZTogJ3RleHQnLCBncm91cDogZ2V0dGV4dCgnRGVmaW5pdGlvbicpLAotICAgICAgICAgIGNv bnRyb2w6IEJhY2tmb3JtLlNxbEZpZWxkQ29udHJvbCwKLSAgICAgICAgICBleHRyYUNsYXNzZXM6 WydjdXN0b21faGVpZ2h0X2Nzc19jbGFzcyddLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDog J3NlY2xhYmVscycsIGxhYmVsOiBnZXR0ZXh0KCdTZWN1cml0eSBsYWJlbHMnKSwKLSAgICAgICAg ICBtb2RlbDogcGdCcm93c2VyLlNlY0xhYmVsTW9kZWwsIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTog J2NvbGxlY3Rpb24nLAotICAgICAgICAgIGdyb3VwOiBnZXR0ZXh0KCdTZWN1cml0eScpLCBtb2Rl OiBbJ2VkaXQnLCAnY3JlYXRlJ10sCi0gICAgICAgICAgbWluX3ZlcnNpb246IDkwMjAwLCBjYW5B ZGQ6IHRydWUsCi0gICAgICAgICAgY2FuRWRpdDogZmFsc2UsIGNhbkRlbGV0ZTogdHJ1ZSwgY29u dHJvbDogJ3VuaXF1ZS1jb2wtY29sbGVjdGlvbicsCi0gICAgICAgIH0sCi0gICAgICAgIF0sCi0g ICAgICAgIC8vIGV2ZW50IHRyaWdnZXIgbW9kZWwgZGF0YSB2YWxpZGF0aW9uLgotICAgICAgICB2 YWxpZGF0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgdmFyIG1zZyA9IHVuZGVmaW5lZDsKLSAg ICAgICAgICAvLyBDbGVhciBhbnkgZXhpc3RpbmcgZXJyb3IgbXNnLgotICAgICAgICAgIHRoaXMu ZXJyb3JNb2RlbC5jbGVhcigpOwotCi0gICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5n ZXQoJ25hbWUnKSkKLSAgICAgICAgICAgICAgfHwgU3RyaW5nKHRoaXMuZ2V0KCduYW1lJykpLnJl cGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKLSAgICAgICAgICAgIG1zZyA9IGdldHRl eHQoJ0V2ZW50IHRyaWdnZXIgbmFtZSBjYW5ub3QgYmUgZW1wdHkuJyk7Ci0gICAgICAgICAgICB0 aGlzLmVycm9yTW9kZWwuc2V0KCduYW1lJywgbXNnKTsKLSAgICAgICAgICAgIHJldHVybiBtc2c7 Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ2V2 ZW50b3duZXInKSkKLSAgICAgICAgICAgICAgfHwgU3RyaW5nKHRoaXMuZ2V0KCdldmVudG93bmVy JykpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKLSAgICAgICAgICAgIG1zZyA9 IGdldHRleHQoJ0V2ZW50IHRyaWdnZXIgb3duZXIgY2Fubm90IGJlIGVtcHR5LicpOwotICAgICAg ICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnZXZlbnRvd25lcicsIG1zZyk7Ci0gICAgICAgICAg ICByZXR1cm4gbXNnOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVk KHRoaXMuZ2V0KCdlbmFibGVkJykpKSB7Ci0gICAgICAgICAgICBtc2cgPSBnZXR0ZXh0KCdFdmVu dCB0cmlnZ2VyIGVuYWJsZWQgc3RhdHVzIGNhbm5vdCBiZSBlbXB0eS4nKTsKLSAgICAgICAgICAg IHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2VuYWJsZWQnLCBtc2cpOwotICAgICAgICAgICAgcmV0dXJu IG1zZzsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdl dCgnZXZlbnRmdW5uYW1lJykpCi0gICAgICAgICAgICAgIHx8IFN0cmluZyh0aGlzLmdldCgnZXZl bnRmdW5uYW1lJykpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKLSAgICAgICAg ICAgIG1zZyA9IGdldHRleHQoJ0V2ZW50IHRyaWdnZXIgZnVuY3Rpb24gY2Fubm90IGJlIGVtcHR5 LicpOwotICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnZXZlbnRmdW5uYW1lJywgbXNn KTsKLSAgICAgICAgICAgIHJldHVybiBtc2c7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgaWYg KF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ2V2ZW50bmFtZScpKSkgewotICAgICAgICAgICAgbXNn ID0gZ2V0dGV4dCgnRXZlbnQgdHJpZ2dlciBldmVudCBjYW5ub3QgYmUgZW1wdHkuJyk7Ci0gICAg ICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdldmVudG5hbWUnLCBtc2cpOwotICAgICAgICAg ICAgcmV0dXJuIG1zZzsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICByZXR1cm4gbnVsbDsKLSAg ICAgICAgfSwKLSAgICAgIH0pLAogICAgIH0pOwogCiAgIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3N0 YXRpYy9qcy9leHRlbnNpb24uanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy9zdGF0aWMvanMvZXh0ZW5zaW9uLmpzCmluZGV4 IDYwNDViMGM3NS4uODIwMDFlMTA3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy9zdGF0aWMvanMvZXh0ZW5z aW9uLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9leHRlbnNpb25zL3N0YXRpYy9qcy9leHRlbnNpb24uanMKQEAgLTEzLDkgKzEzLDgg QEAgaW1wb3J0IEV4dGVuc2lvbnNTY2hlbWEgZnJvbSAnLi9leHRlbnNpb24udWknOwogCiBkZWZp bmUoJ3BnYWRtaW4ubm9kZS5leHRlbnNpb24nLCBbCiAgICdzb3VyY2VzL2dldHRleHQnLCAnc291 cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywKLSAgJ3NvdXJjZXMvcGdhZG1p bicsICdwZ2FkbWluLmJyb3dzZXInLAotICAncGdhZG1pbi5iYWNrZm9ybScsICdwZ2FkbWluLmJy b3dzZXIuY29sbGVjdGlvbicsCi1dLCBmdW5jdGlvbihnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBw Z0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtKSB7CisgICdzb3VyY2VzL3BnYWRtaW4nLCAncGdh ZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywKK10sIGZ1bmN0aW9u KGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIHBnQnJvd3NlcikgewogCiAgIC8qCiAg ICAqIENyZWF0ZSBhbmQgQWRkIGFuIEV4dGVuc2lvbiBDb2xsZWN0aW9uIGludG8gbm9kZXMKQEAg LTk2LDEwOSArOTUsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5leHRlbnNpb24nLCBbCiAgICAg ICAgKiBEZWZpbmUgbW9kZWwgZm9yIHRoZSBOb2RlIGFuZCBzcGVjaWZ5IHRoZSBwcm9wZXJ0aWVz CiAgICAgICAgKiBvZiB0aGUgbW9kZWwgaW4gc2NoZW1hLgogICAgICAgICovCi0gICAgICBtb2Rl bDogcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKLSAgICAgICAgaWRBdHRyaWJ1 dGU6ICdvaWQnLAotICAgICAgICBzY2hlbWE6IFsKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBp ZDogJ25hbWUnLCBsYWJlbDogZ2V0dGV4dCgnTmFtZScpLCBmaXJzdF9lbXB0eTogdHJ1ZSwKLSAg ICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdl ZGl0J10sCi0gICAgICAgICAgICB2aXNpYmxlOiB0cnVlLCB1cmw6J2F2YWlscycsIHJlYWRvbmx5 OiBmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgICAgIHJldHVybiAhbS5pc05ldygpOwotICAgICAg ICAgICAgfSwKLSAgICAgICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24oZGF0YSwgY2VsbCkgewot ICAgICAgICAgICAgICB2YXIgcmVzID0gW10sCi0gICAgICAgICAgICAgICAgY29udHJvbCA9IGNl bGwgfHwgdGhpcywKLSAgICAgICAgICAgICAgICBsYWJlbCA9IGNvbnRyb2wubW9kZWwuZ2V0KCdu YW1lJyk7Ci0KLSAgICAgICAgICAgICAgaWYgKCFjb250cm9sLm1vZGVsLmlzTmV3KCkpIHsKLSAg ICAgICAgICAgICAgICByZXMucHVzaCh7bGFiZWw6IGxhYmVsLCB2YWx1ZTogbGFiZWx9KTsKLSAg ICAgICAgICAgICAgfQotICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAo ZGF0YSAmJiBfLmlzQXJyYXkoZGF0YSkpIHsKLSAgICAgICAgICAgICAgICAgIF8uZWFjaChkYXRh LCBmdW5jdGlvbihkKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkLmluc3RhbGxlZF92ZXJz aW9uID09PSBudWxsKQotCi0gICAgICAgICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAg ICAgICAgICAgKiBkIGNvbnRhaW5zIGpzb24gZGF0YSBhbmQgc2V0cyBpbnRvCi0gICAgICAgICAg ICAgICAgICAgICAgICogc2VsZWN0J3Mgb3B0aW9uIGNvbnRyb2wKLSAgICAgICAgICAgICAgICAg ICAgICAgKgotICAgICAgICAgICAgICAgICAgICAgICAqIFdlIG5lZWQgdG8gc3RyaW5naWZ5IGRh dGEgYmVjYXVzZSBmb3JtYXR0ZXIgd2lsbAotICAgICAgICAgICAgICAgICAgICAgICAqIGNvbnZl cnQgQXJyYXkgT2JqZWN0IGFzIFtPYmplY3RdIHN0cmluZwotICAgICAgICAgICAgICAgICAgICAg ICAqLwotICAgICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKHtsYWJlbDogZC5uYW1lLCB2YWx1 ZTogSlNPTi5zdHJpbmdpZnkoZCl9KTsKLSAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICByZXR1cm4gcmVzOwotICAg ICAgICAgICAgfSwKLQotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIGV4dGVuZHMgTm9k ZUFqYXhPcHRpb25zQ29udHJvbCB0byBvdmVycmlkZSB0aGUgcHJvcGVydGllcwotICAgICAgICAg ICAgICogZ2V0VmFsdWVGcm9tRE9NIHdoaWNoIHRha2VzIHN0cmluZ2lmaWVkIGRhdGEgZnJvbSBv cHRpb24gb2YKLSAgICAgICAgICAgICAqIHNlbGVjdCBjb250cm9sIGFuZCBwYXJzZSBpdC4gQW5k IGBvbkNoYW5nZWAgdGFrZXMgdGhlIHN0cmluZ2lmaWVkCi0gICAgICAgICAgICAgKiBkYXRhIGZy b20gc2VsZWN0J3Mgb3B0aW9uLCB0aHVzIGNvbnZlcnQgaXQgdG8ganNvbiBmb3JtYXQgYW5kIHNl dCB0aGUKLSAgICAgICAgICAgICAqIGRhdGEgaW50byBNb2RlbCB3aGljaCBpcyB1c2VkIHRvIGVu YWJsZS9kaXNhYmxlIHRoZSBzY2hlbWEgZmllbGQuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAg ICAgIGNvbnRyb2w6IEJhY2tmb3JtLk5vZGVBamF4T3B0aW9uc0NvbnRyb2wuZXh0ZW5kKHsKLSAg ICAgICAgICAgICAgZ2V0VmFsdWVGcm9tRE9NOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg ICB2YXIgZGF0YSA9IHRoaXMuZm9ybWF0dGVyLnRvUmF3KAotICAgICAgICAgICAgICAgICAgXy51 bmVzY2FwZSh0aGlzLiRlbC5maW5kKCdzZWxlY3QnKS52YWwoKSksIHRoaXMubW9kZWwpOwotICAg ICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICogcmV0dXJuIG51bGwgaWYgZGF0YSBp cyBlbXB0eSB0byBwcmV2ZW50IGl0IGZyb20KLSAgICAgICAgICAgICAgICAgKiB0aHJvd2luZyBw YXJzaW5nIGVycm9yLiBBZGRzIGNoZWNrIGFzIG5hbWUgY2FuIGJlIGVtcHR5Ci0gICAgICAgICAg ICAgICAgICovCi0gICAgICAgICAgICAgICAgaWYgKGRhdGEgPT09ICcnKSB7Ci0gICAgICAgICAg ICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg ZWxzZSBpZiAodHlwZW9mKGRhdGEpID09PSAnc3RyaW5nJykgewotICAgICAgICAgICAgICAgICAg ZGF0YT1KU09OLnBhcnNlKGRhdGEpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg ICByZXR1cm4gZGF0YS5uYW1lOwotICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgIC8q Ci0gICAgICAgICAgICAgICAqIFdoZW4gbmFtZSBpcyBjaGFuZ2VkLCBleHRyYWN0IHZhbHVlIGZy b20gaXRzIHNlbGVjdCBvcHRpb24gYW5kCi0gICAgICAgICAgICAgICAqIHNldCBhdHRyaWJ1dGVz IHZhbHVlcyBpbnRvIHRoZSBtb2RlbAotICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAg b25DaGFuZ2U6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIEJhY2tmb3JtLk5vZGVBamF4 T3B0aW9uc0NvbnRyb2wucHJvdG90eXBlLm9uQ2hhbmdlLmFwcGx5KAotICAgICAgICAgICAgICAg ICAgdGhpcywgYXJndW1lbnRzCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICB2 YXIgc2VsZWN0ZWRWYWx1ZSA9IHRoaXMuJGVsLmZpbmQoJ3NlbGVjdCcpLnZhbCgpOwotICAgICAg ICAgICAgICAgIGlmIChzZWxlY3RlZFZhbHVlLnRyaW0oKSAhPSAnJykgewotICAgICAgICAgICAg ICAgICAgdmFyIGQgPSB0aGlzLmZvcm1hdHRlci50b1JhdyhzZWxlY3RlZFZhbHVlLCB0aGlzLm1v ZGVsKTsKLSAgICAgICAgICAgICAgICAgIGlmKHR5cGVvZihkKSA9PT0gJ3N0cmluZycpCi0gICAg ICAgICAgICAgICAgICAgIGQ9SlNPTi5wYXJzZShkKTsKLSAgICAgICAgICAgICAgICAgIHRoaXMu bW9kZWwuc2V0KHsKLSAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nIDogJycsCi0gICAgICAg ICAgICAgICAgICAgICdyZWxvY2F0YWJsZSc6ICgKLSAgICAgICAgICAgICAgICAgICAgICAoIV8u aXNOdWxsKGQucmVsb2NhdGFibGVbMF0pICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAhXy5p c1VuZGVmaW5lZChkLnJlbG9jYXRhYmxlWzBdKSkgPyBkLnJlbG9jYXRhYmxlWzBdOiAnJwotICAg ICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAg ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgIHRoaXMubW9kZWwuc2V0KHsKLSAgICAgICAg ICAgICAgICAgICAgJ3ZlcnNpb24nOiAnJywgJ3JlbG9jYXRhYmxlJzogdHJ1ZSwgJ3NjaGVtYSc6 ICcnLAotICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg ICAgICB9LAotICAgICAgICAgICAgfSksCi0gICAgICAgICAgfSwKLSAgICAgICAgICB7Ci0gICAg ICAgICAgICBpZDogJ29pZCcsIGxhYmVsOiBnZXR0ZXh0KCdPSUQnKSwgY2VsbDogJ3N0cmluZycs Ci0gICAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddLAotICAgICAg ICAgIH0sCi0gICAgICAgICAgewotICAgICAgICAgICAgaWQ6ICdvd25lcicsIGxhYmVsOiBnZXR0 ZXh0KCdPd25lcicpLCBjb250cm9sOiAnbm9kZS1saXN0LWJ5LW5hbWUnLAotICAgICAgICAgICAg bW9kZTogWydwcm9wZXJ0aWVzJ10sIG5vZGU6ICdyb2xlJywgY2VsbDogJ3N0cmluZycsCi0gICAg ICAgICAgICBjYWNoZV9sZXZlbDogJ3NlcnZlcicsCi0gICAgICAgICAgfSwKLSAgICAgICAgICB7 Ci0gICAgICAgICAgICBpZDogJ2NvbW1lbnQnLCBsYWJlbDogZ2V0dGV4dCgnQ29tbWVudCcpLCBj ZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICAgIHR5cGU6ICdtdWx0aWxpbmUnLCByZWFkb25seTog dHJ1ZSwKLSAgICAgICAgICB9LAotICAgICAgICBdLAotICAgICAgfSksCiAgICAgICBnZXRTY2hl bWE6ICh0cmVlTm9kZUluZm8sIGl0ZW1Ob2RlRGF0YSk9PnsKICAgICAgICAgbGV0IG5vZGVPYmog PSBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2V4dGVuc2lvbiddOwogICAgICAgICByZXR1cm4gbmV3 IEV4dGVuc2lvbnNTY2hlbWEoCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZm9yZWlnbl9kYXRhX3dyYXBwZXJzL2ZvcmVpZ25f c2VydmVycy9zdGF0aWMvanMvZm9yZWlnbl9zZXJ2ZXIuanMgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZm9yZWlnbl9kYXRhX3dyYXBwZXJzL2Zv cmVpZ25fc2VydmVycy9zdGF0aWMvanMvZm9yZWlnbl9zZXJ2ZXIuanMKaW5kZXggOGYwZWQ5NWVm Li40ZGM4NWFhZTAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3JhcHBlcnMvZm9yZWlnbl9zZXJ2ZXJz L3N0YXRpYy9qcy9mb3JlaWduX3NlcnZlci5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZm9yZWlnbl9kYXRhX3dyYXBwZXJzL2ZvcmVp Z25fc2VydmVycy9zdGF0aWMvanMvZm9yZWlnbl9zZXJ2ZXIuanMKQEAgLTEzLDkgKzEzLDkgQEAg aW1wb3J0IEZvcmVpZ25TZXJ2ZXJTY2hlbWEgZnJvbSAnLi9mb3JlaWduX3NlcnZlci51aSc7CiAK IGRlZmluZSgncGdhZG1pbi5ub2RlLmZvcmVpZ25fc2VydmVyJywgWwogICAnc291cmNlcy9nZXR0 ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsICdzb3VyY2Vz L3BnYWRtaW4nLAotICAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdh ZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAorICAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4u YnJvd3Nlci5jb2xsZWN0aW9uJywKICAgJ3BnYWRtaW4uYnJvd3Nlci5zZXJ2ZXIucHJpdmlsZWdl JywKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIHBnQnJvd3Nl ciwgQmFja2Zvcm0pIHsKK10sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRt aW4sIHBnQnJvd3NlcikgewogCiAgIC8vIEV4dGVuZCB0aGUgYnJvd3NlcidzIGNvbGxlY3Rpb24g Y2xhc3MgZm9yIGZvcmVpZ24gc2VydmVyIGNvbGxlY3Rpb24KICAgaWYgKCFwZ0Jyb3dzZXIuTm9k ZXNbJ2NvbGwtZm9yZWlnbl9zZXJ2ZXInXSkgewpAQCAtODIsNDUgKzgyLDYgQEAgZGVmaW5lKCdw Z2FkbWluLm5vZGUuZm9yZWlnbl9zZXJ2ZXInLCBbCiAgICAgICAgICAgfQogICAgICAgICApOwog ICAgICAgfSwKLQotICAgICAgLy8gRGVmaW5pbmcgbW9kZWwgZm9yIGZvcmVpZ24gc2VydmVyIG5v ZGUKLSAgICAgIG1vZGVsOiBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoewotICAg ICAgICBpZEF0dHJpYnV0ZTogJ29pZCcsCi0KLSAgICAgICAgLy8gRGVmYXVsdCB2YWx1ZXMhCi0g ICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdzKSB7Ci0gICAgICAgICAgdmFy IGlzTmV3ID0gKF8uc2l6ZShhdHRycykgPT09IDApOwotCi0gICAgICAgICAgaWYgKGlzTmV3KSB7 Ci0gICAgICAgICAgICB2YXIgdXNlckluZm8gPSBwZ0Jyb3dzZXIuc2VydmVySW5mb1thcmdzLm5v ZGVfaW5mby5zZXJ2ZXIuX2lkXS51c2VyOwotCi0gICAgICAgICAgICB0aGlzLnNldCh7J2ZzcnZv d25lcic6IHVzZXJJbmZvLm5hbWV9LCB7c2lsZW50OiB0cnVlfSk7Ci0gICAgICAgICAgfQotICAg ICAgICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlwZS5pbml0aWFsaXplLmFw cGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgLy8gRGVmaW5pbmcg c2NoZW1hIGZvciB0aGUgZm9yZWlnbiBzZXJ2ZXIgbm9kZQotICAgICAgICBzY2hlbWE6IFsKLSAg ICAgICAgICB7Ci0gICAgICAgICAgICBpZDogJ25hbWUnLCBsYWJlbDogZ2V0dGV4dCgnTmFtZScp LCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZGlzYWJsZWQ6IGZ1 bmN0aW9uKCkgewotICAgICAgICAgICAgICByZXR1cm4gKAotICAgICAgICAgICAgICAgIHRoaXMu bW9kZSA9PSAnZWRpdCcgJiYgdGhpcy5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24gPCA5MDIwMAot ICAgICAgICAgICAgICApOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICB9LCB7Ci0gICAgICAg ICAgICBpZDogJ29pZCcsIGxhYmVsOiBnZXR0ZXh0KCdPSUQnKSwgY2VsbDogJ3N0cmluZycsCi0g ICAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddLAotICAgICAgICAg IH0sIHsKLSAgICAgICAgICAgIGlkOiAnZnNydm93bmVyJywgbGFiZWw6IGdldHRleHQoJ093bmVy JyksIHR5cGU6ICd0ZXh0JywKLSAgICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLk5vZGVMaXN0 QnlOYW1lQ29udHJvbCwgbm9kZTogJ3JvbGUnLAotICAgICAgICAgICAgbW9kZTogWydlZGl0Jywg J2NyZWF0ZScsICdwcm9wZXJ0aWVzJ10sIHNlbGVjdDI6IHsgYWxsb3dDbGVhcjogZmFsc2UgfSwK LSAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICBpZDogJ2Rlc2NyaXB0aW9uJywgbGFiZWw6IGdl dHRleHQoJ0NvbW1lbnQnKSwgY2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgICB0eXBlOiAnbXVs dGlsaW5lJywKLSAgICAgICAgICB9LAotICAgICAgICBdLAotICAgICAgfSksCiAgICAgfSk7CiAK ICAgfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL2ZvcmVpZ25fZGF0YV93cmFwcGVycy9zdGF0aWMvanMvZm9yZWlnbl9kYXRh X3dyYXBwZXIuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvZm9yZWlnbl9kYXRhX3dyYXBwZXJzL3N0YXRpYy9qcy9mb3JlaWduX2RhdGFfd3Jh cHBlci5qcwppbmRleCA1YzViZTNjODUuLmI0NWJlODE4NyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2ZvcmVpZ25fZGF0YV93 cmFwcGVycy9zdGF0aWMvanMvZm9yZWlnbl9kYXRhX3dyYXBwZXIuanMKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2ZvcmVpZ25fZGF0YV93 cmFwcGVycy9zdGF0aWMvanMvZm9yZWlnbl9kYXRhX3dyYXBwZXIuanMKQEAgLTEyLDEwICsxMiwx MCBAQCBpbXBvcnQgeyBnZXROb2RlUHJpdmlsZWdlUm9sZVNjaGVtYSB9IGZyb20gJy4uLy4uLy4u Ly4uL3N0YXRpYy9qcy9wcml2aWxlZ2UudWknOwogaW1wb3J0IEZvcmVpZ25EYXRhV3JhcHBlclNj aGVtYSBmcm9tICcuL2ZvcmVpZ25fZGF0YV93cmFwcGVyLnVpJzsKIAogZGVmaW5lKCdwZ2FkbWlu Lm5vZGUuZm9yZWlnbl9kYXRhX3dyYXBwZXInLCBbCi0gICdzb3VyY2VzL2dldHRleHQnLCAnc291 cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywKLSAgJ3NvdXJjZXMvcGdhZG1p bicsICdwZ2FkbWluLmJyb3dzZXInLCAncGdhZG1pbi5iYWNrZm9ybScsCisgICdzb3VyY2VzL2dl dHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsCisgICdzb3VyY2VzL3BnYWRtaW4n LCAncGdhZG1pbi5icm93c2VyJywKICAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywgJ3Bn YWRtaW4uYnJvd3Nlci5zZXJ2ZXIucHJpdmlsZWdlJywKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVy bF9mb3IsICQsIF8sIHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2Zvcm0pIHsKK10sIGZ1bmN0aW9u KGdldHRleHQsIHVybF9mb3IsICQsIHBnQWRtaW4sIHBnQnJvd3NlcikgewogCiAgIC8vIEV4dGVu ZCB0aGUgYnJvd3NlcidzIGNvbGxlY3Rpb24gY2xhc3MgZm9yIGZvcmVpZ24gZGF0YSB3cmFwcGVy IGNvbGxlY3Rpb24KICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZm9yZWlnbl9kYXRhX3dy YXBwZXInXSkgewpAQCAtODcsNDQgKzg3LDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuZm9yZWln bl9kYXRhX3dyYXBwZXInLCBbCiAgICAgICAgICAgfQogICAgICAgICApOwogICAgICAgfSwKLQot ICAgICAgLy8gRGVmaW5pbmcgbW9kZWwgZm9yIGZvcmVpZ24gZGF0YSB3cmFwcGVyIG5vZGUKLSAg ICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoewotICAgICAgICBpZEF0dHJp YnV0ZTogJ29pZCcsCi0KLSAgICAgICAgLy8gRGVmYXVsdCB2YWx1ZXMhCi0gICAgICAgIGluaXRp YWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdzKSB7Ci0gICAgICAgICAgdmFyIGlzTmV3ID0gKF8u c2l6ZShhdHRycykgPT09IDApOwotCi0gICAgICAgICAgaWYgKGlzTmV3KSB7Ci0gICAgICAgICAg ICB2YXIgdXNlckluZm8gPSBwZ0Jyb3dzZXIuc2VydmVySW5mb1thcmdzLm5vZGVfaW5mby5zZXJ2 ZXIuX2lkXS51c2VyOwotCi0gICAgICAgICAgICB0aGlzLnNldCh7J2Zkd293bmVyJzogdXNlcklu Zm8ubmFtZX0sIHtzaWxlbnQ6IHRydWV9KTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcGdCcm93 c2VyLk5vZGUuTW9kZWwucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRz KTsKLSAgICAgICAgfSwKLQotICAgICAgICAvLyBEZWZpbmluZyBzY2hlbWEgZm9yIHRoZSBmb3Jl aWduIGRhdGEgd3JhcHBlciBub2RlCi0gICAgICAgIHNjaGVtYTogW3sKLSAgICAgICAgICBpZDog J25hbWUnLCBsYWJlbDogZ2V0dGV4dCgnTmFtZScpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAg ICB0eXBlOiAndGV4dCcsIHJlYWRvbmx5OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIC8vIG5h bWUgZmllbGQgd2lsbCBiZSBkaXNhYmxlZCBvbmx5IGlmIGVkaXQgbW9kZQotICAgICAgICAgICAg cmV0dXJuICgKLSAgICAgICAgICAgICAgdGhpcy5tb2RlID09ICdlZGl0JwotICAgICAgICAgICAg KTsKLSAgICAgICAgICB9LAotICAgICAgICB9LCB7Ci0gICAgICAgICAgaWQ6ICdvaWQnLCBsYWJl bDogZ2V0dGV4dCgnT0lEJyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICd0ZXh0 JywgbW9kZTogWydwcm9wZXJ0aWVzJ10sCi0gICAgICAgIH0sIHsKLSAgICAgICAgICBpZDogJ2Zk d293bmVyJywgbGFiZWw6IGdldHRleHQoJ093bmVyJyksIHR5cGU6ICd0ZXh0JywKLSAgICAgICAg ICBjb250cm9sOiBCYWNrZm9ybS5Ob2RlTGlzdEJ5TmFtZUNvbnRyb2wsIG5vZGU6ICdyb2xlJywK LSAgICAgICAgICBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJywgJ3Byb3BlcnRpZXMnXSwgc2VsZWN0 MjogeyBhbGxvd0NsZWFyOiBmYWxzZSB9LAotICAgICAgICB9LCB7Ci0gICAgICAgICAgaWQ6ICdk ZXNjcmlwdGlvbicsIGxhYmVsOiBnZXR0ZXh0KCdDb21tZW50JyksIGNlbGw6ICdzdHJpbmcnLAot ICAgICAgICAgIHR5cGU6ICdtdWx0aWxpbmUnLAotICAgICAgICB9XSwKLSAgICAgIH0pLAogICAg IH0pOwogICB9CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9sYW5ndWFnZXMvc3RhdGljL2pzL2xhbmd1YWdlLmpzIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2xhbmd1YWdl cy9zdGF0aWMvanMvbGFuZ3VhZ2UuanMKaW5kZXggYWFhYmU3MzRkLi41NmRjNjcwYTEgMTAwNjQ0 Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9sYW5ndWFnZXMvc3RhdGljL2pzL2xhbmd1YWdlLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9sYW5ndWFnZXMvc3RhdGljL2pzL2xh bmd1YWdlLmpzCkBAIC0xMCwxMyArMTAsMTIgQEAKIGltcG9ydCB7IGdldE5vZGVBamF4T3B0aW9u cywgZ2V0Tm9kZUxpc3RCeU5hbWUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zdGF0aWMvanMv bm9kZV9hamF4JzsKIGltcG9ydCBMYW5ndWFnZVNjaGVtYSBmcm9tICcuL2xhbmd1YWdlLnVpJzsK IGltcG9ydCB7IGdldE5vZGVQcml2aWxlZ2VSb2xlU2NoZW1hIH0gZnJvbSAnLi4vLi4vLi4vLi4v c3RhdGljL2pzL3ByaXZpbGVnZS51aSc7Ci1pbXBvcnQgXyBmcm9tICdsb2Rhc2gnOwogCiBkZWZp bmUoJ3BnYWRtaW4ubm9kZS5sYW5ndWFnZScsIFsKICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3Vy Y2VzL3VybF9mb3InLCAnanF1ZXJ5JywKLSAgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmJy b3dzZXInLCAncGdhZG1pbi5iYWNrZm9ybScsCisgICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1p bi5icm93c2VyJywKICAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywgJ3BnYWRtaW4uYnJv d3Nlci5zZXJ2ZXIucHJpdmlsZWdlJywKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQs IHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2Zvcm0pIHsKK10sIGZ1bmN0aW9uKGdldHRleHQsIHVy bF9mb3IsICQsIHBnQWRtaW4sIHBnQnJvd3NlcikgewogCiAgIC8vIEV4dGVuZCB0aGUgYnJvd3Nl cidzIGNvbGxlY3Rpb24gY2xhc3MgZm9yIGxhbmd1YWdlcyBjb2xsZWN0aW9uCiAgIGlmICghcGdC cm93c2VyLk5vZGVzWydjb2xsLWxhbmd1YWdlJ10pIHsKQEAgLTcxLDM3ICs3MCw2IEBAIGRlZmlu ZSgncGdhZG1pbi5ub2RlLmxhbmd1YWdlJywgWwogICAgICAgICB9XSk7CiAgICAgICB9LAogCi0g ICAgICAvLyBEZWZpbmUgdGhlIG1vZGVsIGZvciBsYW5ndWFnZSBub2RlCi0gICAgICBtb2RlbDog cGdCcm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKLSAgICAgICAgaWRBdHRyaWJ1dGU6ICdvaWQn LAotICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihhdHRycywgYXJncykgewotICAgICAgICAg IHZhciBpc05ldyA9IChfLnNpemUoYXR0cnMpID09PSAwKTsKLSAgICAgICAgICBpZiAoaXNOZXcp IHsKLSAgICAgICAgICAgIHZhciB1c2VySW5mbyA9IHBnQnJvd3Nlci5zZXJ2ZXJJbmZvW2FyZ3Mu bm9kZV9pbmZvLnNlcnZlci5faWRdLnVzZXI7Ci0KLSAgICAgICAgICAgIHRoaXMuc2V0KHsnbGFu b3duZXInOiB1c2VySW5mby5uYW1lfSwge3NpbGVudDogdHJ1ZX0pOwotICAgICAgICAgIH0KLSAg ICAgICAgICBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0 aGlzLCBhcmd1bWVudHMpOwotICAgICAgICB9LAotCi0gICAgICAgIC8vIERlZmluZSB0aGUgc2No ZW1hIGZvciB0aGUgbGFuZ3VhZ2Ugbm9kZQotICAgICAgICBzY2hlbWE6IFt7Ci0gICAgICAgICAg aWQ6ICduYW1lJywgbGFiZWw6IGdldHRleHQoJ05hbWUnKSwgdHlwZTogJ3RleHQnLAotICAgICAg ICAgIG1vZGU6IFsncHJvcGVydGllcyddLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ29p ZCcsIGxhYmVsOiBnZXR0ZXh0KCdPSUQnKSwgY2VsbDogJ3N0cmluZycsIG1vZGU6IFsncHJvcGVy dGllcyddLAotICAgICAgICAgIHR5cGU6ICd0ZXh0JywKLSAgICAgICAgfSx7Ci0gICAgICAgICAg aWQ6ICdsYW5vd25lcicsIGxhYmVsOiBnZXR0ZXh0KCdPd25lcicpLCB0eXBlOiAndGV4dCcsCi0g ICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uTm9kZUxpc3RCeU5hbWVDb250cm9sLCBub2RlOiAn cm9sZScsCi0gICAgICAgICAgbW9kZTogWydlZGl0JywgJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJ10s IHNlbGVjdDI6IHsgYWxsb3dDbGVhcjogZmFsc2UgfSwKLSAgICAgICAgfSwKLSAgICAgICAgewot ICAgICAgICAgIGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDogZ2V0dGV4dCgnQ29tbWVudCcpLCBj ZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBlOiAnbXVsdGlsaW5lJywKLSAgICAgICAgfSwK LSAgICAgICAgXSwKLSAgICAgIH0pLAogCiAgICAgICBnZXRTY2hlbWE6IGZ1bmN0aW9uKHRyZWVO b2RlSW5mbywgaXRlbU5vZGVEYXRhKXsKICAgICAgICAgcmV0dXJuIG5ldyBMYW5ndWFnZVNjaGVt YSgKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9wdWJsaWNhdGlvbnMvc3RhdGljL2pzL3B1YmxpY2F0aW9uLmpzIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3B1YmxpY2F0aW9u cy9zdGF0aWMvanMvcHVibGljYXRpb24uanMKaW5kZXggYjc2NzA1N2NkLi42OTdkZGYyNjUgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9wdWJsaWNhdGlvbnMvc3RhdGljL2pzL3B1YmxpY2F0aW9uLmpzCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9wdWJsaWNhdGlvbnMv c3RhdGljL2pzL3B1YmxpY2F0aW9uLmpzCkBAIC0xMiw5ICsxMiw5IEBAIGltcG9ydCBQdWJsaWNh dGlvblNjaGVtYSBmcm9tICcuL3B1YmxpY2F0aW9uLnVpJzsKIAogZGVmaW5lKCdwZ2FkbWluLm5v ZGUucHVibGljYXRpb24nLCBbCiAgICdzb3VyY2VzL2dldHRleHQnLCAnc291cmNlcy91cmxfZm9y JywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywKLSAgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWlu LmJyb3dzZXInLCAncGdhZG1pbi5iYWNrZm9ybScsCisgICdzb3VyY2VzL3BnYWRtaW4nLCAncGdh ZG1pbi5icm93c2VyJywKICAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywgJ3BnYWRtaW4u YnJvd3Nlci5zZXJ2ZXIucHJpdmlsZWdlJywKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3Is ICQsIF8sIHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2Zvcm0pIHsKK10sIGZ1bmN0aW9uKGdldHRl eHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIHBnQnJvd3NlcikgewogCiAgIC8vIEV4dGVuZCB0 aGUgYnJvd3NlcidzIGNvbGxlY3Rpb24gY2xhc3MgZm9yIHB1YmxpY2F0aW9ucyBjb2xsZWN0aW9u CiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb2xsLXB1YmxpY2F0aW9uJ10pIHsKQEAgLTIzLDcg KzIzLDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUucHVibGljYXRpb24nLCBbCiAgICAgICAgIG5v ZGU6ICdwdWJsaWNhdGlvbicsCiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdQdWJsaWNhdGlvbnMn KSwKICAgICAgICAgdHlwZTogJ2NvbGwtcHVibGljYXRpb24nLAotICAgICAgICBjb2x1bW5zOiBb J25hbWUnLCAncHVib3duZXInLCAncHVidGFibGUnLCAnYWxsX3RhYmxlJ10sCisgICAgICAgIGNv bHVtbnM6IFsnbmFtZScsICdwdWJvd25lcicsICdwcm9wdGFibGUnLCAnYWxsX3RhYmxlJ10sCiAK ICAgICAgIH0pOwogICB9CkBAIC03MCw4MiArNzAsNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5w dWJsaWNhdGlvbicsIFsKICAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tcHVibGljYXRp b24nLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30sCiAgICAgICAgIH1dKTsKICAgICAgIH0sCi0g ICAgICAvLyBEZWZpbmUgdGhlIG1vZGVsIGZvciBwdWJsaWNhdGlvbiBub2RlCi0gICAgICBtb2Rl bDogcGdCcm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKLSAgICAgICAgaWRBdHRyaWJ1dGU6ICdv aWQnLAogCi0gICAgICAgIC8vIERlZmF1bHQgdmFsdWVzIQotICAgICAgICBpbml0aWFsaXplOiBm dW5jdGlvbihhdHRycywgYXJncykgewotICAgICAgICAgIHZhciBpc05ldyA9IChfLnNpemUoYXR0 cnMpID09PSAwKTsKLSAgICAgICAgICBpZiAoaXNOZXcpIHsKLSAgICAgICAgICAgIHZhciB1c2Vy SW5mbyA9IHBnQnJvd3Nlci5zZXJ2ZXJJbmZvW2FyZ3Mubm9kZV9pbmZvLnNlcnZlci5faWRdLnVz ZXI7Ci0KLSAgICAgICAgICAgIHRoaXMuc2V0KHsncHVib3duZXInOiB1c2VySW5mby5uYW1lfSwg e3NpbGVudDogdHJ1ZX0pOwotICAgICAgICAgIH0KLSAgICAgICAgICBwZ0Jyb3dzZXIuTm9kZS5N b2RlbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotICAgICAg ICB9LAotCi0gICAgICAgIC8vIERlZmluZSB0aGUgc2NoZW1hIGZvciB0aGUgcHVibGljYXRpb24g bm9kZQotICAgICAgICBzY2hlbWE6IFt7Ci0gICAgICAgICAgaWQ6ICduYW1lJywgbGFiZWw6IGdl dHRleHQoJ05hbWUnKSwgdHlwZTogJ3RleHQnLAotICAgICAgICAgIG1vZGU6IFsncHJvcGVydGll cycsICdjcmVhdGUnLCAnZWRpdCddLAotICAgICAgICAgIHZpc2libGU6IGZ1bmN0aW9uKCkgewot ICAgICAgICAgICAgaWYoIV8uaXNVbmRlZmluZWQodGhpcy5ub2RlX2luZm8pICYmICFfLmlzVW5k ZWZpbmVkKHRoaXMubm9kZV9pbmZvLnNlcnZlcikKLSAgICAgICAgICAgICAgJiYgIV8uaXNVbmRl ZmluZWQodGhpcy5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24pICYmCi0gICAgICAgICAgICAgICAg dGhpcy5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24gPj0gMTAwMDAwKSB7Ci0gICAgICAgICAgICAg IHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot ICAgICAgICAgIH0sCi0gICAgICAgIH0sewotICAgICAgICAgIGlkOiAnb2lkJywgbGFiZWw6IGdl dHRleHQoJ09JRCcpLCBjZWxsOiAnc3RyaW5nJywgbW9kZTogWydwcm9wZXJ0aWVzJ10sCi0gICAg ICAgICAgdHlwZTogJ3RleHQnLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ3B1Ym93bmVy JywgbGFiZWw6IGdldHRleHQoJ093bmVyJyksIHR5cGU6ICd0ZXh0JywKLSAgICAgICAgICBjb250 cm9sOiBCYWNrZm9ybS5Ob2RlTGlzdEJ5TmFtZUNvbnRyb2wsIG5vZGU6ICdyb2xlJywKLSAgICAg ICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSl7Ci0gICAgICAgICAgICBpZihtLmlzTmV3KCkpCi0g ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg ICAgICAgIH0sCi0gICAgICAgICAgbW9kZTogWydlZGl0JywgJ3Byb3BlcnRpZXMnLCAnY3JlYXRl J10sIHNlbGVjdDI6IHsgYWxsb3dDbGVhcjogZmFsc2V9LAotICAgICAgICB9LHsKLSAgICAgICAg ICBpZDogJ2FsbF90YWJsZScsIGxhYmVsOiBnZXR0ZXh0KCdBbGwgdGFibGVzPycpLCB0eXBlOiAn c3dpdGNoJywKLSAgICAgICAgICBncm91cDogZ2V0dGV4dCgnRGVmaW5pdGlvbicpLCBtb2RlOiBb J2VkaXQnLCAncHJvcGVydGllcycsICdjcmVhdGUnXSwgZGVwczogWyduYW1lJ10sCi0gICAgICAg ICAgcmVhZG9ubHk6IGZ1bmN0aW9uKG0pIHtyZXR1cm4gIW0uaXNOZXcoKTt9LAotICAgICAgICB9 LAotICAgICAgICB7Ci0gICAgICAgICAgaWQ6ICdwdWJ0YWJsZScsIGxhYmVsOiBnZXR0ZXh0KCdU YWJsZXMnKSwgdHlwZTogJ3RleHQnLCBncm91cDogZ2V0dGV4dCgnRGVmaW5pdGlvbicpLAotICAg ICAgICAgIG1vZGU6IFsncHJvcGVydGllcyddLAotICAgICAgICB9LAotICAgICAgICBdLAotCi0K LSAgICAgICAgLyogdmFsaWRhdGUgZnVuY3Rpb24gaXMgdXNlZCB0byB2YWxpZGF0ZSB0aGUgaW5w dXQgZ2l2ZW4gYnkKLSAgICAgICAgICogdGhlIHVzZXIuIEluIGNhc2Ugb2YgZXJyb3IsIG1lc3Nh Z2Ugd2lsbCBiZSBkaXNwbGF5ZWQgb24KLSAgICAgICAgICogdGhlIEdVSSBmb3IgdGhlIHJlc3Bl Y3RpdmUgY29udHJvbC4KLSAgICAgICAgICovCi0KLSAgICAgICAgc2Vzc0NoYW5nZWQ6IGZ1bmN0 aW9uKCkgewotICAgICAgICAgIGlmICh0aGlzLnNlc3NBdHRyc1sncHVidGFibGUnXSA9PSAnJyAm JiB0aGlzLm9yaWdTZXNzQXR0cnNbJ3B1YnRhYmxlJ10gPT0gJycpCi0gICAgICAgICAgICByZXR1 cm4gZmFsc2U7Ci0gICAgICAgICAgcmV0dXJuIHBnQnJvd3Nlci5EYXRhTW9kZWwucHJvdG90eXBl LnNlc3NDaGFuZ2VkLmFwcGx5KHRoaXMpOwotICAgICAgICB9LAotCi0gICAgICAgIGNhbkNyZWF0 ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0pIHsKLQotICAgICAgICAgIHZhciB0cmVlRGF0YSA9 IHBnQnJvd3Nlci50cmVlLmdldFRyZWVOb2RlSGllcmFyY2h5KGl0ZW0pLAotICAgICAgICAgICAg c2VydmVyID0gdHJlZURhdGFbJ3NlcnZlciddOwotCi0gICAgICAgICAgLy8gSWYgc2VydmVyIGlz IGxlc3MgdGhhbiAxMCB0aGVuIGRvIG5vdCBhbGxvdyAnY3JlYXRlJyBtZW51Ci0gICAgICAgICAg aWYgKHNlcnZlciAmJiBzZXJ2ZXIudmVyc2lvbiA8IDEwMDAwMCkKLSAgICAgICAgICAgIHJldHVy biBmYWxzZTsKLQotICAgICAgICAgIC8vIGJ5IGRlZmF1bHQgd2Ugd2FudCB0byBhbGxvdyBjcmVh dGUgbWVudQotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9LAotCi0gICAgICB9KSwK IAogICAgICAgZ2V0U2NoZW1hOiBmdW5jdGlvbih0cmVlTm9kZUluZm8sIGl0ZW1Ob2RlRGF0YSl7 CiAgICAgICAgIHJldHVybiBuZXcgUHVibGljYXRpb25TY2hlbWEoCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvcHVibGljYXRp b25zL3N0YXRpYy9qcy9wdWJsaWNhdGlvbi51aS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9wdWJsaWNhdGlvbnMvc3RhdGljL2pzL3B1Ymxp Y2F0aW9uLnVpLmpzCmluZGV4IDQ2Y2ZiMGU4Ny4uNTU3MzZkNGIwIDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvcHVibGljYXRp b25zL3N0YXRpYy9qcy9wdWJsaWNhdGlvbi51aS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvcHVibGljYXRpb25zL3N0YXRpYy9qcy9w dWJsaWNhdGlvbi51aS5qcwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNz IFB1YmxpY2F0aW9uU2NoZW1hIGV4dGVuZHMgQmFzZVVJU2NoZW1hIHsKICAgICAgIGdyb3VwOiBn ZXR0ZXh0KCdEZWZpbml0aW9uJyksIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKICAgICAgIGRl cHM6IFsnYWxsX3RhYmxlJ10sIGRpc2FibGVkOiBvYmouaXNBbGxUYWJsZSwKICAgICB9LHsKLSAg ICAgIGlkOiAncHVidGFibGUnLCBsYWJlbDogZ2V0dGV4dCgnVGFibGVzJyksIHR5cGU6ICd0ZXh0 JywgZ3JvdXA6IGdldHRleHQoJ0RlZmluaXRpb24nKSwKKyAgICAgIGlkOiAncHJvcHRhYmxlJywg bGFiZWw6IGdldHRleHQoJ1RhYmxlcycpLCB0eXBlOiAndGV4dCcsIGdyb3VwOiBnZXR0ZXh0KCdE ZWZpbml0aW9uJyksCiAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwKICAgICB9LHsKICAgICAg IHR5cGU6ICduZXN0ZWQtZmllbGRzZXQnLCBtb2RlOiBbJ2NyZWF0ZScsJ2VkaXQnLCAncHJvcGVy dGllcyddLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3B1YmxpY2F0aW9ucy90ZW1wbGF0ZXMvcHVibGljYXRpb25zL3NxbC9k ZWZhdWx0L2dldF90YWJsZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3B1YmxpY2F0aW9ucy90ZW1wbGF0ZXMvcHVibGljYXRpb25zL3Nx bC9kZWZhdWx0L2dldF90YWJsZXMuc3FsCmluZGV4IDU4ZWFjNDVhOC4uNjY4YjRlYmE1IDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvcHVibGljYXRpb25zL3RlbXBsYXRlcy9wdWJsaWNhdGlvbnMvc3FsL2RlZmF1bHQvZ2V0X3Rh Ymxlcy5zcWwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3B1YmxpY2F0aW9ucy90ZW1wbGF0ZXMvcHVibGljYXRpb25zL3NxbC9kZWZhdWx0 L2dldF90YWJsZXMuc3FsCkBAIC0xLDMgKzEsNiBAQAogU0VMRUNUIHBnX2NhdGFsb2cucXVvdGVf aWRlbnQocGdiX3RhYmxlLnNjaGVtYW5hbWUpfHwnLid8fHBnX2NhdGFsb2cucXVvdGVfaWRlbnQo cGdiX3RhYmxlLnRhYmxlbmFtZSkKLUFTIHB1YnRhYmxlICBGUk9NIHBnX2NhdGFsb2cucGdfcHVi bGljYXRpb25fdGFibGVzIHBnYl90YWJsZSBXSEVSRSBwdWJuYW1lID0gJ3t7IHBuYW1lIH19Jwor QVMgcHVidGFibGUsCitwZ19jYXRhbG9nLnF1b3RlX2lkZW50KHBnYl90YWJsZS5zY2hlbWFuYW1l KXx8Jy4nfHxwZ19jYXRhbG9nLnF1b3RlX2lkZW50KHBnYl90YWJsZS50YWJsZW5hbWUpCitBUyBw cm9wdGFibGUKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3RhYmxlcyBwZ2JfdGFi bGUgV0hFUkUgcHVibmFtZSA9ICd7eyBwbmFtZSB9fScKIEFORCBwZ2JfdGFibGUuc2NoZW1hbmFt ZSBOT1QgTElLRSAncGdhZ2VudCc7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9hZ2dyZWdhdGVzL3N0YXRpYy9q cy9hZ2dyZWdhdGUuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9hZ2dyZWdhdGVzL3N0YXRpYy9qcy9hZ2dyZWdhdGUuanMKaW5k ZXggMjVjMGYwNGZjLi5kZjhkOWI0ZjkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2FnZ3JlZ2F0ZXMvc3RhdGlj L2pzL2FnZ3JlZ2F0ZS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9hZ2dyZWdhdGVzL3N0YXRpYy9qcy9hZ2dyZWdhdGUu anMKQEAgLTQ1LDM3ICs0NSw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmFnZ3JlZ2F0ZScsIFsK IAogICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsKICAgICAgIH0sCi0gICAgICBtb2Rl bDogcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKLSAgICAgICAgaWRBdHRyaWJ1 dGU6ICdvaWQnLAotCi0gICAgICAgIC8vIERlZmF1bHQgdmFsdWVzIQotICAgICAgICBpbml0aWFs aXplOiBmdW5jdGlvbihhdHRycywgYXJncykgewotICAgICAgICAgIHZhciBpc05ldyA9IChfLnNp emUoYXR0cnMpID09PSAwKTsKLQotICAgICAgICAgIGlmIChpc05ldykgewotICAgICAgICAgICAg dmFyIHVzZXJJbmZvID0gcGdCcm93c2VyLnNlcnZlckluZm9bYXJncy5ub2RlX2luZm8uc2VydmVy Ll9pZF0udXNlcjsKLSAgICAgICAgICAgIHZhciBzY2hlbWFJbmZvID0gYXJncy5ub2RlX2luZm8u c2NoZW1hOwotCi0gICAgICAgICAgICB0aGlzLnNldCh7J293bmVyJzogdXNlckluZm8ubmFtZX0s IHtzaWxlbnQ6IHRydWV9KTsKLSAgICAgICAgICAgIHRoaXMuc2V0KHsnc2NoZW1hJzogc2NoZW1h SW5mby5fbGFiZWx9LCB7c2lsZW50OiB0cnVlfSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHBn QWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMs IGFyZ3VtZW50cyk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgc2NoZW1hOiBbewotICAgICAgICAg IGlkOiAnbmFtZScsIGxhYmVsOiBnZXR0ZXh0KCdBZ2dyZWdhdGUnKSwgY2VsbDogJ3N0cmluZycs Ci0gICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywg J2VkaXQnXSwKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdvd25lcicsIGxhYmVsOiBnZXR0 ZXh0KCdPd25lcicpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBlOiAndGV4dCcsIG1v ZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLAotICAgICAgICAgIGNvbnRyb2w6 ICdub2RlLWxpc3QtYnktbmFtZScsCi0gICAgICAgICAgbm9kZTogJ3JvbGUnLAotICAgICAgICB9 LHsKLSAgICAgICAgICBpZDogJ2Rlc2NyaXB0aW9uJywgbGFiZWw6IGdldHRleHQoJ0NvbW1lbnQn KSwgY2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgdHlwZTogJ211bHRpbGluZScsIG1vZGU6IFsn cHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLAotICAgICAgICB9Ci0gICAgICAgIF0sCi0g ICAgICB9KSwKICAgICAgIGdldFNjaGVtYTogKCk9PnsKICAgICAgICAgcmV0dXJuIG5ldyBBZ2dy ZWdhdGVTY2hlbWEoKTsKICAgICAgIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2NhdGFsb2dfb2JqZWN0cy9j b2x1bW5zL3N0YXRpYy9qcy9jYXRhbG9nX29iamVjdF9jb2x1bW4uanMgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9jYXRhbG9nX29i amVjdHMvY29sdW1ucy9zdGF0aWMvanMvY2F0YWxvZ19vYmplY3RfY29sdW1uLmpzCmluZGV4IDg3 ODVkMTQ3YS4uZTExNTJlYjIyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9jYXRhbG9nX29iamVjdHMvY29sdW1u cy9zdGF0aWMvanMvY2F0YWxvZ19vYmplY3RfY29sdW1uLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2NhdGFsb2dfb2Jq ZWN0cy9jb2x1bW5zL3N0YXRpYy9qcy9jYXRhbG9nX29iamVjdF9jb2x1bW4uanMKQEAgLTQ1LDMy ICs0NSw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmNhdGFsb2dfb2JqZWN0X2NvbHVtbicsIFsK ICAgICAgICAgZ2V0U2NoZW1hOiBmdW5jdGlvbigpIHsKICAgICAgICAgICByZXR1cm4gbmV3IENh dGFsb2dPYmplY3RDb2x1bW5TY2hlbWEoKTsKICAgICAgICAgfSwKLSAgICAgICAgbW9kZWw6IHBn QWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7Ci0gICAgICAgICAgZGVmYXVsdHM6IHsK LSAgICAgICAgICAgIGF0dG5hbWU6IHVuZGVmaW5lZCwKLSAgICAgICAgICAgIGF0dG93bmVyOiB1 bmRlZmluZWQsCi0gICAgICAgICAgICBhdHR0eXBpZDogdW5kZWZpbmVkLAotICAgICAgICAgICAg YXR0bnVtOiB1bmRlZmluZWQsCi0gICAgICAgICAgICBjbHR5cGU6IHVuZGVmaW5lZCwKLSAgICAg ICAgICAgIGNvbGxzcGNuYW1lOiB1bmRlZmluZWQsCi0gICAgICAgICAgICBhdHRhY2w6IHVuZGVm aW5lZCwKLSAgICAgICAgICAgIGlzX3N5c19vYmo6IHVuZGVmaW5lZCwKLSAgICAgICAgICAgIGRl c2NyaXB0aW9uOiB1bmRlZmluZWQsCi0gICAgICAgICAgfSwKLSAgICAgICAgICBzY2hlbWE6IFt7 Ci0gICAgICAgICAgICBpZDogJ2F0dG5hbWUnLCBsYWJlbDogZ2V0dGV4dCgnQ29sdW1uJyksIGNl bGw6ICdzdHJpbmcnLAotICAgICAgICAgICAgdHlwZTogJ3RleHQnLCByZWFkb25seTogdHJ1ZSwK LSAgICAgICAgICB9LHsKLSAgICAgICAgICAgIGlkOiAnYXR0bnVtJywgbGFiZWw6IGdldHRleHQo J1Bvc2l0aW9uJyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgICAgdHlwZTogJ3RleHQnLCBy ZWFkb25seTogdHJ1ZSwKLSAgICAgICAgICB9LHsKLSAgICAgICAgICAgIGlkOiAnY2x0eXBlJywg bGFiZWw6IGdldHRleHQoJ0RhdGEgdHlwZScpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICAg IGdyb3VwOiBnZXR0ZXh0KCdEZWZpbml0aW9uJyksIHR5cGU6ICd0ZXh0JywgcmVhZG9ubHk6IHRy dWUsCi0gICAgICAgICAgfSx7Ci0gICAgICAgICAgICBpZDogJ2Rlc2NyaXB0aW9uJywgbGFiZWw6 IGdldHRleHQoJ0NvbW1lbnQnKSwgY2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgICB0eXBlOiAn bXVsdGlsaW5lJywgcmVhZG9ubHk6IHRydWUsCi0gICAgICAgICAgfV0sCi0gICAgICAgIH0pLAog ICAgICAgfSk7CiAgIH0KIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvY2F0YWxvZ19vYmplY3RzL3N0YXRpYy9q cy9jYXRhbG9nX29iamVjdC5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2NhdGFsb2dfb2JqZWN0cy9zdGF0aWMvanMvY2F0YWxv Z19vYmplY3QuanMKaW5kZXggMDY3NTNhNDI3Li5kYWM0NjcyMWEgMTAwNjQ0Ci0tLSBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Nh dGFsb2dfb2JqZWN0cy9zdGF0aWMvanMvY2F0YWxvZ19vYmplY3QuanMKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvY2F0YWxv Z19vYmplY3RzL3N0YXRpYy9qcy9jYXRhbG9nX29iamVjdC5qcwpAQCAtNDMsMzEgKzQzLDYgQEAg ZGVmaW5lKCdwZ2FkbWluLm5vZGUuY2F0YWxvZ19vYmplY3QnLCBbCiAKICAgICAgIH0sCiAgICAg ICBnZXRTY2hlbWE6ICgpPT5uZXcgQ2F0YWxvZ09iamVjdFNjaGVtYSgpLAotICAgICAgLyogRmV3 IGZpZWxkcyBhcmUga2VwdCBzaW5jZSB0aGUgcHJvcGVydGllcyB0YWIgZm9yIGNvbGxlY3Rpb24g aXMgbm90Ci0gICAgICB5ZXQgbWlncmF0ZWQgdG8gbmV3IHJlYWN0IHNjaGVtYS4gT25jZSB0aGUg cHJvcGVydGllcyBmb3IgY29sbGVjdGlvbgotICAgICAgaXMgcmVtb3ZlZCwgcmVtb3ZlIHRoaXMg bW9kZWwgKi8KLSAgICAgIG1vZGVsOiBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQo ewotICAgICAgICBkZWZhdWx0czogewotICAgICAgICAgIG5hbWU6IHVuZGVmaW5lZCwKLSAgICAg ICAgICBuYW1lc3BhY2Vvd25lcjogdW5kZWZpbmVkLAotICAgICAgICAgIG5zcGFjbDogdW5kZWZp bmVkLAotICAgICAgICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsCi0gICAgICAgIH0sCi0gICAg ICAgIHNjaGVtYTogW3sKLSAgICAgICAgICBpZDogJ25hbWUnLCBsYWJlbDogZ2V0dGV4dCgnTmFt ZScpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBlOiAndGV4dCcsIHJlYWRvbmx5OiB0 cnVlLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ29pZCcsIGxhYmVsOiBnZXR0ZXh0KCdP SUQnKSwgY2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgdHlwZTogJ3RleHQnLAotICAgICAgICB9 LHsKLSAgICAgICAgICBpZDogJ293bmVyJywgbGFiZWw6IGdldHRleHQoJ093bmVyJyksIGNlbGw6 ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICd0ZXh0JywgcmVhZG9ubHk6IHRydWUsCi0gICAg ICAgIH0sewotICAgICAgICAgIGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDogZ2V0dGV4dCgnQ29t bWVudCcpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBlOiAnbXVsdGlsaW5lJyAsICBy ZWFkb25seTogdHJ1ZSwKLSAgICAgICAgfSwKLSAgICAgICAgXSwKLSAgICAgIH0pLAogCiAgICAg fSk7CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2NvbGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbi5qcyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2NvbGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbi5qcwppbmRleCA1ODZmNDEwYmMuLjRk M2RmZjEzMiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvY29sbGF0aW9ucy9zdGF0aWMvanMvY29sbGF0aW9uLmpz CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2NvbGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbi5qcwpAQCAtNjksNDIgKzY5 LDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuY29sbGF0aW9uJywgWwogICAgICAgICBdKTsKIAog ICAgICAgfSwKLSAgICAgIG1vZGVsOiBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQo ewotICAgICAgICBpZEF0dHJpYnV0ZTogJ29pZCcsCi0KLSAgICAgICAgLy8gRGVmYXVsdCB2YWx1 ZXMhCi0gICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdzKSB7Ci0gICAgICAg ICAgdmFyIGlzTmV3ID0gKF8uc2l6ZShhdHRycykgPT09IDApOwotCi0gICAgICAgICAgaWYgKGlz TmV3KSB7Ci0gICAgICAgICAgICB2YXIgdXNlckluZm8gPSBwZ0Jyb3dzZXIuc2VydmVySW5mb1th cmdzLm5vZGVfaW5mby5zZXJ2ZXIuX2lkXS51c2VyOwotICAgICAgICAgICAgdmFyIHNjaGVtYUlu Zm8gPSBhcmdzLm5vZGVfaW5mby5zY2hlbWE7Ci0KLSAgICAgICAgICAgIHRoaXMuc2V0KHsnb3du ZXInOiB1c2VySW5mby5uYW1lfSwge3NpbGVudDogdHJ1ZX0pOwotICAgICAgICAgICAgdGhpcy5z ZXQoeydzY2hlbWEnOiBzY2hlbWFJbmZvLl9sYWJlbH0sIHtzaWxlbnQ6IHRydWV9KTsKLSAgICAg ICAgICB9Ci0gICAgICAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwucHJvdG90eXBlLmlu aXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgICAgICAgfSwKLQotICAgICAgICBz Y2hlbWE6IFt7Ci0gICAgICAgICAgaWQ6ICduYW1lJywgbGFiZWw6IGdldHRleHQoJ05hbWUnKSwg Y2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRp ZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKLSAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hJywK LSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdvaWQnLCBsYWJlbDogZ2V0dGV4dCgnT0lEJyks IGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICd0ZXh0JyAsIG1vZGU6IFsncHJvcGVy dGllcyddLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ293bmVyJywgbGFiZWw6IGdldHRl eHQoJ093bmVyJyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9k ZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCi0gICAgICAgICAgZGlzYWJsZWQ6 ICdpblNjaGVtYScsIGNvbnRyb2w6ICdub2RlLWxpc3QtYnktbmFtZScsCi0gICAgICAgICAgbm9k ZTogJ3JvbGUnLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ2Rlc2NyaXB0aW9uJywgbGFi ZWw6IGdldHRleHQoJ0NvbW1lbnQnKSwgY2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgdHlwZTog J211bHRpbGluZScsIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLAotICAg ICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWEnLAotICAgICAgICB9Ci0gICAgICAgIF0sCi0gICAg ICB9KSwKICAgICAgIGdldFNjaGVtYTogKHRyZWVOb2RlSW5mbywgaXRlbU5vZGVEYXRhKT0+ewog ICAgICAgICBsZXQgbm9kZU9iaiA9IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29sbGF0aW9uJ107 CiAgICAgICAgIHJldHVybiBuZXcgQ29sbGF0aW9uU2NoZW1hKApkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy9kb21haW5fY29uc3RyYWludHMvc3RhdGljL2pzL2RvbWFpbl9jb25zdHJhaW50cy5qcyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvZG9tYWluX2NvbnN0cmFpbnRzL3N0YXRpYy9qcy9kb21haW5fY29uc3RyYWlu dHMuanMKaW5kZXggNjdmMjNlNWNhLi40YzY1OTRkZGIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv ZG9tYWluX2NvbnN0cmFpbnRzL3N0YXRpYy9qcy9kb21haW5fY29uc3RyYWludHMuanMKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZG9tYWlucy9kb21haW5fY29uc3RyYWludHMvc3RhdGljL2pzL2RvbWFpbl9jb25zdHJhaW50 cy5qcwpAQCAtNzUsNDMgKzc1LDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuZG9tYWluX2NvbnN0 cmFpbnRzJywgWwogICAgICAgZ2V0U2NoZW1hOiBmdW5jdGlvbigpIHsKICAgICAgICAgcmV0dXJu IG5ldyBEb21haW5Db25zdHJhaW50U2NoZW1hKCk7CiAgICAgICB9LAotCi0gICAgICBtb2RlbDog cGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKLSAgICAgICAgaWRBdHRyaWJ1dGU6 ICdvaWQnLAotICAgICAgICAvLyBEb21haW4gQ29uc3RyYWludCBTY2hlbWEKLSAgICAgICAgc2No ZW1hOiBbewotICAgICAgICAgIGlkOiAnbmFtZScsIGxhYmVsOiBnZXR0ZXh0KCdOYW1lJyksIHR5 cGU6J3RleHQnLCBjZWxsOidzdHJpbmcnLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ2Rl c2NyaXB0aW9uJywgbGFiZWw6IGdldHRleHQoJ0NvbW1lbnQnKSwgdHlwZTogJ211bHRpbGluZScs IGNlbGw6Ci0gICAgICAgICAgJ3N0cmluZycsIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUn LCAnZWRpdCddLCBtaW5fdmVyc2lvbjogOTA1MDAsCi0gICAgICAgIH1dLAotICAgICAgICAvLyBD bGllbnQgU2lkZSBWYWxpZGF0aW9uCi0gICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKLSAg ICAgICAgICB2YXIgZXJyID0ge30sCi0gICAgICAgICAgICBlcnJtc2c7Ci0KLSAgICAgICAgICBp ZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnbmFtZScpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ25h bWUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewotICAgICAgICAgICAgZXJy WyduYW1lJ10gPSBnZXR0ZXh0KCdOYW1lIGNhbm5vdCBiZSBlbXB0eS4nKTsKLSAgICAgICAgICAg IGVycm1zZyA9IGVyclsnbmFtZSddOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmIChfLmlz VW5kZWZpbmVkKHRoaXMuZ2V0KCdjb25zcmMnKSkgfHwgU3RyaW5nKHRoaXMuZ2V0KCdjb25zcmMn KSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewotICAgICAgICAgICAgZXJyWydj b25zcmMnXSA9IGdldHRleHQoJ0NoZWNrIGNhbm5vdCBiZSBlbXB0eS4nKTsKLSAgICAgICAgICAg IGVycm1zZyA9IGVycm1zZyB8fCBlcnJbJ2NvbnNyYyddOwotCi0gICAgICAgICAgfQotCi0gICAg ICAgICAgdGhpcy5lcnJvck1vZGVsLmNsZWFyKCkuc2V0KGVycik7Ci0KLSAgICAgICAgICBpZiAo Xy5zaXplKGVycikpIHsKLSAgICAgICAgICAgIHRoaXMudHJpZ2dlcignb24tc3RhdHVzJywge21z ZzogZXJybXNnfSk7Ci0gICAgICAgICAgICByZXR1cm4gZXJybXNnOwotICAgICAgICAgIH0KLQot ICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAgIH0sCi0gICAgICB9KSwKICAgICB9KTsK ICAgfQogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3N0YXRpYy9qcy9kb21haW4uanMgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL3N0YXRpYy9qcy9kb21haW4uanMKaW5kZXggYTE0ZmJmMzk1Li44YjJiMzYxZjkgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvc3RhdGljL2pzL2RvbWFpbi5qcworKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L3N0YXRpYy9qcy9kb21haW4uanMKQEAgLTk4LDM4ICs5OCw2IEBAIGRlZmluZSgncGdhZG1pbi5u b2RlLmRvbWFpbicsIFsKICAgICAgICAgICB9CiAgICAgICAgICk7CiAgICAgICB9LAotCi0gICAg ICAvLyBEb21haW4gTm9kZSBNb2RlbAotICAgICAgbW9kZWw6IHBnQnJvd3Nlci5Ob2RlLk1vZGVs LmV4dGVuZCh7Ci0gICAgICAgIGlkQXR0cmlidXRlOiAnb2lkJywKLSAgICAgICAgaW5pdGlhbGl6 ZTogZnVuY3Rpb24oYXR0cnMsIGFyZ3MpIHsKLSAgICAgICAgICB2YXIgaXNOZXcgPSAoXy5zaXpl KGF0dHJzKSA9PT0gMCk7Ci0gICAgICAgICAgaWYgKGlzTmV3KSB7Ci0gICAgICAgICAgICAvLyBT ZXQgU2VsZWN0ZWQgU2NoZW1hCi0gICAgICAgICAgICB2YXIgc2NoZW1hID0gYXJncy5ub2RlX2lu Zm8uc2NoZW1hLmxhYmVsOwotICAgICAgICAgICAgdGhpcy5zZXQoeydiYXNlbnNwJzogc2NoZW1h fSwge3NpbGVudDogdHJ1ZX0pOwotCi0gICAgICAgICAgICAvLyBTZXQgQ3VycmVudCBVc2VyCi0g ICAgICAgICAgICB2YXIgdXNlckluZm8gPSBwZ0Jyb3dzZXIuc2VydmVySW5mb1thcmdzLm5vZGVf aW5mby5zZXJ2ZXIuX2lkXS51c2VyOwotICAgICAgICAgICAgdGhpcy5zZXQoeydvd25lcic6IHVz ZXJJbmZvLm5hbWV9LCB7c2lsZW50OiB0cnVlfSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHBn QnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3Vt ZW50cyk7Ci0gICAgICAgIH0sCi0gICAgICAgIC8vIERvbWFpbiBTY2hlbWEKLSAgICAgICAgc2No ZW1hOiBbewotICAgICAgICAgIGlkOiAnbmFtZScsIGxhYmVsOiBnZXR0ZXh0KCdOYW1lJyksIGNl bGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVz JywgJ2NyZWF0ZScsICdlZGl0J10sCi0gICAgICAgIH0sewotICAgICAgICAgIGlkOiAnb2lkJywg bGFiZWw6IGdldHRleHQoJ09JRCcpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBlOiAn dGV4dCcgLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6 ICdvd25lcicsIGxhYmVsOiBnZXR0ZXh0KCdPd25lcicpLCBjZWxsOiAnc3RyaW5nJywgY29udHJv bDogQmFja2Zvcm0uTm9kZUxpc3RCeU5hbWVDb250cm9sLAotICAgICAgICAgIG5vZGU6ICdyb2xl JywgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydlZGl0JywgJ2NyZWF0ZScsICdwcm9wZXJ0aWVzJ10s Ci0gICAgICAgIH0sewotICAgICAgICAgIGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDogZ2V0dGV4 dCgnQ29tbWVudCcpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBlOiAnbXVsdGlsaW5l JywKLSAgICAgICAgfV0sCi0gICAgICB9KSwKICAgICB9KTsKIAogICB9CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mb3JlaWduX3RhYmxlcy9zdGF0aWMvanMvZm9yZWlnbl90YWJsZS5qcyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25f dGFibGVzL3N0YXRpYy9qcy9mb3JlaWduX3RhYmxlLmpzCmluZGV4IDhlNjA1OTQ4Ni4uM2FmZmRl ZWZiIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy9zdGF0aWMvanMvZm9yZWlnbl90YWJs ZS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy9zdGF0aWMvanMvZm9yZWlnbl90YWJsZS5qcwpA QCAtMTAsMTUgKzEwLDE2IEBAIGltcG9ydCB7IGdldE5vZGVMaXN0QnlOYW1lLCBnZXROb2RlQWph eE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdGF0CiBpbXBvcnQgeyBnZXRO b2RlVmFyaWFibGVTY2hlbWEgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zdGF0aWMvanMvdmFyaWFi bGUudWknOwogaW1wb3J0IHsgZ2V0Tm9kZVByaXZpbGVnZVJvbGVTY2hlbWEgfSBmcm9tICcuLi8u Li8uLi8uLi8uLi9zdGF0aWMvanMvcHJpdmlsZWdlLnVpJzsKIGltcG9ydCBGb3JlaWduVGFibGVT Y2hlbWEgZnJvbSAnLi9mb3JlaWduX3RhYmxlLnVpJzsKK2ltcG9ydCBfIGZyb20gJ2xvZGFzaCc7 CiAKIC8qIENyZWF0ZSBhbmQgUmVnaXN0ZXIgRm9yZWlnbiBUYWJsZSBDb2xsZWN0aW9uIGFuZCBO b2RlLiAqLwogZGVmaW5lKCdwZ2FkbWluLm5vZGUuZm9yZWlnbl90YWJsZScsIFsKLSAgJ3NvdXJj ZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAn YmFja2JvbmUnLAotICAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdwZ2Fk bWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYmFja2dyaWQnLAorICAnc291cmNlcy9nZXR0ZXh0Jywg J3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAnYmFja2JvbmUnLAorICAnc291cmNlcy9wZ2Fk bWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLmJhY2tncmlkJywKICAgJ3BnYWRtaW4u bm9kZS5zY2hlbWEuZGlyL2NoaWxkJywgJ3BnYWRtaW4ubm9kZS5zY2hlbWEuZGlyL3NjaGVtYV9j aGlsZF90cmVlX25vZGUnLAogICAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAogXSwgZnVu Y3Rpb24oCi0gIGdldHRleHQsIHVybF9mb3IsICQsIF8sIEJhY2tib25lLCBwZ0FkbWluLCBwZ0Jy b3dzZXIsIEJhY2tmb3JtLCBCYWNrZ3JpZCwKKyAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgQmFja2Jv bmUsIHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2dyaWQsCiAgIHNjaGVtYUNoaWxkLCBzY2hlbWFD aGlsZFRyZWVOb2RlCiApIHsKIApAQCAtMzQsNDY1ICszNSw2IEBAIGRlZmluZSgncGdhZG1pbi5u b2RlLmZvcmVpZ25fdGFibGUnLCBbCiAgICAgICB9KTsKICAgfQogCi0gIC8vIE9wdGlvbnMgTW9k ZWwKLSAgdmFyIENvbHVtbk9wdGlvbnNNb2RlbCA9IHBnQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVu ZCh7Ci0gICAgaWRBdHRyaWJ1dGU6ICdvcHRpb24nLAotICAgIGRlZmF1bHRzOiB7Ci0gICAgICBv cHRpb246IHVuZGVmaW5lZCwKLSAgICAgIHZhbHVlOiB1bmRlZmluZWQsCi0gICAgfSwKLSAgICBz Y2hlbWE6IFsKLSAgICAgIHtpZDogJ29wdGlvbicsIGxhYmVsOiBnZXR0ZXh0KCdPcHRpb24nKSwg dHlwZTondGV4dCcsIGVkaXRhYmxlOiB0cnVlLCBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3Bl cmNlbnRfMzAnfSwKLSAgICAgIHsKLSAgICAgICAgaWQ6ICd2YWx1ZScsIGxhYmVsOiBnZXR0ZXh0 KCdWYWx1ZScpLCB0eXBlOiAndGV4dCcsIGVkaXRhYmxlOiB0cnVlLCBjZWxsSGVhZGVyQ2xhc3Nl czogJ3dpZHRoX3BlcmNlbnRfNTAnLAotICAgICAgfSwKLSAgICBdLAotICAgIHZhbGlkYXRlOiBm dW5jdGlvbigpIHsKLSAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCd2YWx1ZScpKSB8 fAotICAgICAgICAgIF8uaXNOdWxsKHRoaXMuZ2V0KCd2YWx1ZScpKSB8fAotICAgICAgICAgIFN0 cmluZyh0aGlzLmdldCgndmFsdWUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykg ewotICAgICAgICB2YXIgbXNnID0gJ1BsZWFzZSBlbnRlciBhIHZhbHVlLic7Ci0KLSAgICAgICAg dGhpcy5lcnJvck1vZGVsLnNldCgndmFsdWUnLCBtc2cpOwotCi0gICAgICAgIHJldHVybiBtc2c7 Ci0gICAgICB9IGVsc2UgewotICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ3ZhbHVlJyk7 Ci0gICAgICB9Ci0KLSAgICAgIHJldHVybiBudWxsOwotICAgIH0sCi0gIH0pOwotCi0gIC8vIENv bHVtbnMgTW9kZWwKLSAgdmFyIENvbHVtbnNNb2RlbCA9IHBnQnJvd3Nlci5Ob2RlLk1vZGVsLmV4 dGVuZCh7Ci0gICAgaWRBdHRyaWJ1dGU6ICdhdHRudW0nLAotICAgIGRlZmF1bHRzOiB7Ci0gICAg ICBhdHRuYW1lOiB1bmRlZmluZWQsCi0gICAgICBkYXRhdHlwZTogdW5kZWZpbmVkLAotICAgICAg dHlwbGVuOiB1bmRlZmluZWQsCi0gICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCwKLSAgICAgIHR5 cGRlZmF1bHQ6IHVuZGVmaW5lZCwKLSAgICAgIGF0dG5vdG51bGw6IHVuZGVmaW5lZCwKLSAgICAg IGNvbGxuYW1lOiB1bmRlZmluZWQsCi0gICAgICBhdHRudW06IHVuZGVmaW5lZCwKLSAgICAgIGlu aGVyaXRlZGZyb206IHVuZGVmaW5lZCwKLSAgICAgIGluaGVyaXRlZGlkOiB1bmRlZmluZWQsCi0g ICAgICBhdHRzdGF0dGFyZ2V0OiB1bmRlZmluZWQsCi0gICAgICBjb2xvcHRpb25zOiBbXSwKLSAg ICB9LAotICAgIHR5cGVfb3B0aW9uczogdW5kZWZpbmVkLAotICAgIHNjaGVtYTogW3sKLSAgICAg IGlkOiAnYXR0bmFtZScsIGxhYmVsOiBnZXR0ZXh0KCdOYW1lJyksIGNlbGw6ICdzdHJpbmcnLCB0 eXBlOiAndGV4dCcsCi0gICAgICBlZGl0YWJsZTogJ2lzX2VkaXRhYmxlX2NvbHVtbicsIGNlbGxI ZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF80MCcsCi0gICAgfSx7Ci0gICAgICBpZDogJ2Rh dGF0eXBlJywgbGFiZWw6IGdldHRleHQoJ0RhdGEgdHlwZScpLCBjZWxsOiAnbm9kZS1hamF4LW9w dGlvbnMnLAotICAgICAgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywgdHlwZTogJ3RleHQn LCB1cmw6ICdnZXRfdHlwZXMnLAotICAgICAgZWRpdGFibGU6ICdpc19lZGl0YWJsZV9jb2x1bW4n LCBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMCcsCi0gICAgICBncm91cDogZ2V0 dGV4dCgnRGVmaW5pdGlvbicpLAotICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbihkLCBzZWxmKXsK LSAgICAgICAgc2VsZi5tb2RlbC50eXBlX29wdGlvbnMgPSBkOwotICAgICAgICByZXR1cm4gZDsK LSAgICAgIH0sCi0gICAgfSwKLSAgICB7Ci0gICAgICBpZDogJ3R5cGxlbicsIGxhYmVsOiBnZXR0 ZXh0KCdMZW5ndGgnKSwKLSAgICAgIGNlbGw6ICdzdHJpbmcnLCBncm91cDogZ2V0dGV4dCgnRGVm aW5pdGlvbicpLAotICAgICAgdHlwZTogJ2ludCcsIGRlcHM6IFsnZGF0YXR5cGUnXSwKLSAgICAg IGRpc2FibGVkOiBmdW5jdGlvbihtKSB7Ci0gICAgICAgIHZhciB2YWwgPSBtLmdldCgndHlwbGVu Jyk7Ci0gICAgICAgIC8vIFdlIHdpbGwgc3RvcmUgdHlwZSBmcm9tIHNlbGVjdGVkIGZyb20gY29t Ym9ib3gKLSAgICAgICAgaWYoIShfLmlzVW5kZWZpbmVkKG0uZ2V0KCdpbmhlcml0ZWRpZCcpKQot ICAgICAgICAgICAgfHwgXy5pc051bGwobS5nZXQoJ2luaGVyaXRlZGlkJykpCi0gICAgICAgICAg ICB8fCBfLmlzVW5kZWZpbmVkKG0uZ2V0KCdpbmhlcml0ZWRmcm9tJykpCi0gICAgICAgICAgICB8 fCBfLmlzTnVsbChtLmdldCgnaW5oZXJpdGVkZnJvbScpKSkpIHsKLQotICAgICAgICAgIGlmICgh Xy5pc1VuZGVmaW5lZCh2YWwpKSB7Ci0gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg ewotICAgICAgICAgICAgICBtLnNldCgndHlwbGVuJywgdW5kZWZpbmVkKTsKLSAgICAgICAgICAg IH0sIDEwKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0K LQotICAgICAgICB2YXIgb2ZfdHlwZSA9IG0uZ2V0KCdkYXRhdHlwZScpLAotICAgICAgICAgIGhh c19sZW5ndGggPSBmYWxzZTsKLSAgICAgICAgaWYobS50eXBlX29wdGlvbnMpIHsKLSAgICAgICAg ICBtLnNldCgnaXNfdGxlbmd0aCcsIGZhbHNlLCB7c2lsZW50OiB0cnVlfSk7Ci0KLSAgICAgICAg ICAvLyBpdGVyYXRpbmcgb3ZlciBhbGwgdGhlIHR5cGVzCi0gICAgICAgICAgXy5lYWNoKG0udHlw ZV9vcHRpb25zLCBmdW5jdGlvbihvKSB7Ci0gICAgICAgICAgICAvLyBpZiB0eXBlIGZyb20gc2Vs ZWN0ZWQgZnJvbSBjb21ib2JveCBtYXRjaGVzIGluIG9wdGlvbnMKLSAgICAgICAgICAgIGlmICgg b2ZfdHlwZSA9PSBvLnZhbHVlICkgewotICAgICAgICAgICAgICAvLyBpZiBsZW5ndGggaXMgYWxs b3dlZCBmb3Igc2VsZWN0ZWQgdHlwZQotICAgICAgICAgICAgICBpZihvLmxlbmd0aCkKLSAgICAg ICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIHNldCB0aGUgdmFsdWVzIGluIG1vZGVsCi0g ICAgICAgICAgICAgICAgaGFzX2xlbmd0aCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgbS5zZXQo J2lzX3RsZW5ndGgnLCB0cnVlLCB7c2lsZW50OiB0cnVlfSk7Ci0gICAgICAgICAgICAgICAgbS5z ZXQoJ21pbl92YWwnLCBvLm1pbl92YWwsIHtzaWxlbnQ6IHRydWV9KTsKLSAgICAgICAgICAgICAg ICBtLnNldCgnbWF4X3ZhbCcsIG8ubWF4X3ZhbCwge3NpbGVudDogdHJ1ZX0pOwotICAgICAgICAg ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICBpZiAoIWhh c19sZW5ndGggJiYgIV8uaXNVbmRlZmluZWQodmFsKSkgewotICAgICAgICAgICAgc2V0VGltZW91 dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgbS5zZXQoJ3R5cGxlbicsIHVuZGVmaW5lZCk7 Ci0gICAgICAgICAgICB9LCAxMCk7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgcmV0dXJuICEo bS5nZXQoJ2lzX3RsZW5ndGgnKSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFoYXNfbGVuZ3Ro ICYmICFfLmlzVW5kZWZpbmVkKHZhbCkpIHsKLSAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u KCkgewotICAgICAgICAgICAgbS5zZXQoJ3R5cGxlbicsIHVuZGVmaW5lZCk7Ci0gICAgICAgICAg fSwgMTApOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfSwKLSAgICAg IGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8xMCcsCi0gICAgfSwKLSAgICB7Ci0g ICAgICBpZDogJ3ByZWNpc2lvbicsIGxhYmVsOiBnZXR0ZXh0KCdQcmVjaXNpb24nKSwKLSAgICAg IHR5cGU6ICdpbnQnLCBkZXBzOiBbJ2RhdGF0eXBlJ10sCi0gICAgICBjZWxsOiAnc3RyaW5nJywg Z3JvdXA6IGdldHRleHQoJ0RlZmluaXRpb24nKSwKLSAgICAgIGRpc2FibGVkOiBmdW5jdGlvbiht KSB7Ci0gICAgICAgIHZhciB2YWwgPSBtLmdldCgncHJlY2lzaW9uJyk7Ci0gICAgICAgIGlmKCEo Xy5pc1VuZGVmaW5lZChtLmdldCgnaW5oZXJpdGVkaWQnKSkKLSAgICAgICAgICAgIHx8IF8uaXNO dWxsKG0uZ2V0KCdpbmhlcml0ZWRpZCcpKQotICAgICAgICAgICAgfHwgXy5pc1VuZGVmaW5lZCht LmdldCgnaW5oZXJpdGVkZnJvbScpKQotICAgICAgICAgICAgfHwgXy5pc051bGwobS5nZXQoJ2lu aGVyaXRlZGZyb20nKSkpKSB7Ci0KLSAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQodmFsKSkg ewotICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgbS5z ZXQoJ3ByZWNpc2lvbicsIHVuZGVmaW5lZCk7Ci0gICAgICAgICAgICB9LCAxMCk7Ci0gICAgICAg ICAgfQotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIG9m X3R5cGUgPSBtLmdldCgnZGF0YXR5cGUnKSwKLSAgICAgICAgICBoYXNfcHJlY2lzaW9uID0gZmFs c2U7Ci0KLSAgICAgICAgaWYobS50eXBlX29wdGlvbnMpIHsKLSAgICAgICAgICBtLnNldCgnaXNf cHJlY2lzaW9uJywgZmFsc2UsIHtzaWxlbnQ6IHRydWV9KTsKLSAgICAgICAgICAvLyBpdGVyYXRp bmcgb3ZlciBhbGwgdGhlIHR5cGVzCi0gICAgICAgICAgXy5lYWNoKG0udHlwZV9vcHRpb25zLCBm dW5jdGlvbihvKSB7Ci0gICAgICAgICAgICAvLyBpZiB0eXBlIGZyb20gc2VsZWN0ZWQgZnJvbSBj b21ib2JveCBtYXRjaGVzIGluIG9wdGlvbnMKLSAgICAgICAgICAgIGlmICggb2ZfdHlwZSA9PSBv LnZhbHVlICkgewotICAgICAgICAgICAgICAvLyBpZiBwcmVjZXNzaW9uIGlzIGFsbG93ZWQgZm9y IHNlbGVjdGVkIHR5cGUKLSAgICAgICAgICAgICAgaWYoby5wcmVjaXNpb24pCi0gICAgICAgICAg ICAgIHsKLSAgICAgICAgICAgICAgICBoYXNfcHJlY2lzaW9uID0gdHJ1ZTsKLSAgICAgICAgICAg ICAgICAvLyBzZXQgdGhlIHZhbHVlcyBpbiBtb2RlbAotICAgICAgICAgICAgICAgIG0uc2V0KCdp c19wcmVjaXNpb24nLCB0cnVlLCB7c2lsZW50OiB0cnVlfSk7Ci0gICAgICAgICAgICAgICAgbS5z ZXQoJ21pbl92YWwnLCBvLm1pbl92YWwsIHtzaWxlbnQ6IHRydWV9KTsKLSAgICAgICAgICAgICAg ICBtLnNldCgnbWF4X3ZhbCcsIG8ubWF4X3ZhbCwge3NpbGVudDogdHJ1ZX0pOwotICAgICAgICAg ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSk7Ci0gICAgICAgICAgaWYgKCFoYXNf cHJlY2lzaW9uICYmICFfLmlzVW5kZWZpbmVkKHZhbCkpIHsKLSAgICAgICAgICAgIHNldFRpbWVv dXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIG0uc2V0KCdwcmVjaXNpb24nLCB1bmRlZmlu ZWQpOwotICAgICAgICAgICAgfSwgMTApOwotICAgICAgICAgIH0KLSAgICAgICAgICByZXR1cm4g IShtLmdldCgnaXNfcHJlY2lzaW9uJykpOwotICAgICAgICB9Ci0gICAgICAgIGlmICghaGFzX3By ZWNpc2lvbiAmJiAhXy5pc1VuZGVmaW5lZCh2YWwpKSB7Ci0gICAgICAgICAgc2V0VGltZW91dChm dW5jdGlvbigpIHsKLSAgICAgICAgICAgIG0uc2V0KCdwcmVjaXNpb24nLCB1bmRlZmluZWQpOwot ICAgICAgICAgIH0sIDEwKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg IH0sIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8xMCcsCi0gICAgfSwKLSAgICB7 Ci0gICAgICBpZDogJ3R5cGRlZmF1bHQnLCBsYWJlbDogZ2V0dGV4dCgnRGVmYXVsdCcpLCB0eXBl OiAndGV4dCcsCi0gICAgICBjZWxsOiAnc3RyaW5nJywgbWluX3ZlcnNpb246IDkwMzAwLCBncm91 cDogZ2V0dGV4dCgnRGVmaW5pdGlvbicpLAotICAgICAgcGxhY2Vob2xkZXI6IGdldHRleHQoJ0Vu dGVyIGFuIGV4cHJlc3Npb24gb3IgYSB2YWx1ZS4nKSwKLSAgICAgIGNlbGxIZWFkZXJDbGFzc2Vz OiAnd2lkdGhfcGVyY2VudF8xMCcsCi0gICAgICBlZGl0YWJsZTogZnVuY3Rpb24obSkgewotICAg ICAgICBpZighKF8uaXNVbmRlZmluZWQobS5nZXQoJ2luaGVyaXRlZGlkJykpCi0gICAgICAgICAg ICB8fCBfLmlzTnVsbChtLmdldCgnaW5oZXJpdGVkaWQnKSkKLSAgICAgICAgICAgIHx8IF8uaXNV bmRlZmluZWQobS5nZXQoJ2luaGVyaXRlZGZyb20nKSkKLSAgICAgICAgICAgIHx8IF8uaXNOdWxs KG0uZ2V0KCdpbmhlcml0ZWRmcm9tJykpKSkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgaWYg KHRoaXMuZ2V0KCdub2RlX2luZm8nKS5zZXJ2ZXIudmVyc2lvbiA8IDkwMzAwKXsKLSAgICAgICAg ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9 LAotICAgIH0sCi0gICAgewotICAgICAgaWQ6ICdhdHRub3RudWxsJywgbGFiZWw6IGdldHRleHQo J05vdCBOVUxMPycpLAotICAgICAgY2VsbDogJ2Jvb2xlYW4nLHR5cGU6ICdzd2l0Y2gnLCBlZGl0 YWJsZTogJ2lzX2VkaXRhYmxlX2NvbHVtbicsCi0gICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dp ZHRoX3BlcmNlbnRfMTAnLCBncm91cDogZ2V0dGV4dCgnRGVmaW5pdGlvbicpLAotICAgIH0sCi0g ICAgewotICAgICAgaWQ6ICdhdHRzdGF0dGFyZ2V0JywgbGFiZWw6IGdldHRleHQoJ1N0YXRpc3Rp Y3MnKSwgbWluX3ZlcnNpb246IDkwMjAwLAotICAgICAgY2VsbDogJ2ludGVnZXInLCB0eXBlOiAn aW50JywgZ3JvdXA6IGdldHRleHQoJ0RlZmluaXRpb24nKSwKLSAgICAgIGVkaXRhYmxlOiBmdW5j dGlvbihtKSB7Ci0gICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG0uaXNOZXcpIHx8IG0uaXNOZXco KSkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgaWYgKHRoaXMuZ2V0KCdub2RlX2luZm8nKS5z ZXJ2ZXIudmVyc2lvbiA8IDkwMjAwKXsKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg IH0KLSAgICAgICAgcmV0dXJuIChfLmlzVW5kZWZpbmVkKG0uZ2V0KCdpbmhlcml0ZWRpZCcpKSB8 fCBfLmlzTnVsbChtLmdldCgnaW5oZXJpdGVkaWQnKSkKLSAgICAgICAgICB8fCBfLmlzVW5kZWZp bmVkKG0uZ2V0KCdpbmhlcml0ZWRmcm9tJykpIHx8IF8uaXNOdWxsKG0uZ2V0KCdpbmhlcml0ZWRm cm9tJykpKSA/IHRydWUgOiBmYWxzZTsKLSAgICAgIH0sIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lk dGhfcGVyY2VudF8xMCcsCi0gICAgfSwKLSAgICB7Ci0gICAgICBpZDogJ2NvbGxuYW1lJywgbGFi ZWw6IGdldHRleHQoJ0NvbGxhdGlvbicpLCBjZWxsOiAnbm9kZS1hamF4LW9wdGlvbnMnLAotICAg ICAgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywgdHlwZTogJ3RleHQnLCB1cmw6ICdnZXRf Y29sbGF0aW9ucycsCi0gICAgICBtaW5fdmVyc2lvbjogOTAzMDAsIGVkaXRhYmxlOiBmdW5jdGlv bihtKSB7Ci0gICAgICAgIGlmICghKF8uaXNVbmRlZmluZWQobS5pc05ldykpICYmICFtLmlzTmV3 KCkpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHJldHVybiAoXy5pc1VuZGVmaW5lZChtLmdl dCgnaW5oZXJpdGVkaWQnKSkgfHwgXy5pc051bGwobS5nZXQoJ2luaGVyaXRlZGlkJykpCi0gICAg ICAgICAgIHx8IF8uaXNVbmRlZmluZWQobS5nZXQoJ2luaGVyaXRlZGZyb20nKSkgfHwgXy5pc051 bGwobS5nZXQoJ2luaGVyaXRlZGZyb20nKSkpID8gdHJ1ZSA6IGZhbHNlOwotICAgICAgfSwKLSAg ICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8yMCcsIGdyb3VwOiBnZXR0ZXh0 KCdEZWZpbml0aW9uJyksCi0gICAgfSwKLSAgICB7Ci0gICAgICBpZDogJ2F0dG51bScsIGNlbGw6 ICdzdHJpbmcnLHR5cGU6ICd0ZXh0JywgdmlzaWJsZTogZmFsc2UsCi0gICAgfSwKLSAgICB7Ci0g ICAgICBpZDogJ2luaGVyaXRlZGZyb20nLCBsYWJlbDogZ2V0dGV4dCgnSW5oZXJpdGVkIEZyb20n KSwgY2VsbDogJ3N0cmluZycsCi0gICAgICB0eXBlOiAndGV4dCcsIHZpc2libGU6IGZhbHNlLCBt b2RlOiBbJ3Byb3BlcnRpZXMnLCAnZWRpdCddLAotICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3 aWR0aF9wZXJjZW50XzEwJywKLSAgICB9LAotICAgIHsKLSAgICAgIGlkOiAnY29sb3B0aW9ucycs IGxhYmVsOiBnZXR0ZXh0KCdPcHRpb25zJyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAgdHlwZTog J2NvbGxlY3Rpb24nLCBncm91cDogZ2V0dGV4dCgnT3B0aW9ucycpLCBtb2RlOiBbJ2VkaXQnLCAn Y3JlYXRlJ10sCi0gICAgICBtb2RlbDogQ29sdW1uT3B0aW9uc01vZGVsLCBjYW5BZGQ6IHRydWUs IGNhbkRlbGV0ZTogdHJ1ZSwgY2FuRWRpdDogZmFsc2UsCi0gICAgICBjb250cm9sOiBCYWNrZm9y bS5VbmlxdWVDb2xDb2xsZWN0aW9uQ29udHJvbCwgdW5pcXVlQ29sIDogWydvcHRpb24nXSwKLSAg ICAgIG1pbl92ZXJzaW9uOiA5MDIwMCwKLSAgICB9XSwKLSAgICB2YWxpZGF0ZTogZnVuY3Rpb24o KSB7Ci0gICAgICB2YXIgZXJybXNnID0gbnVsbDsKLQotICAgICAgaWYgKF8uaXNVbmRlZmluZWQo dGhpcy5nZXQoJ2F0dG5hbWUnKSkgfHwgU3RyaW5nKHRoaXMuZ2V0KCdhdHRuYW1lJykpLnJlcGxh Y2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKLSAgICAgICAgZXJybXNnID0gZ2V0dGV4dCgn Q29sdW1uIE5hbWUgY2Fubm90IGJlIGVtcHR5LicpOwotICAgICAgICB0aGlzLmVycm9yTW9kZWwu c2V0KCdhdHRuYW1lJywgZXJybXNnKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHRoaXMuZXJy b3JNb2RlbC51bnNldCgnYXR0bmFtZScpOwotICAgICAgfQotCi0gICAgICBpZiAoXy5pc1VuZGVm aW5lZCh0aGlzLmdldCgnZGF0YXR5cGUnKSkgfHwgU3RyaW5nKHRoaXMuZ2V0KCdkYXRhdHlwZScp KQotICAgICAgICAucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewotICAgICAgICBl cnJtc2cgPSBnZXR0ZXh0KCdDb2x1bW4gRGF0YXR5cGUgY2Fubm90IGJlIGVtcHR5LicpOwotICAg ICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdkYXRhdHlwZScsIGVycm1zZyk7Ci0gICAgICB9IGVs c2UgewotICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ2RhdGF0eXBlJyk7Ci0gICAgICB9 Ci0KLSAgICAgIHJldHVybiBlcnJtc2c7Ci0gICAgfSwKLSAgICBpc19lZGl0YWJsZV9jb2x1bW46 IGZ1bmN0aW9uKG0pIHsKLSAgICAgIHJldHVybiAoXy5pc1VuZGVmaW5lZChtLmdldCgnaW5oZXJp dGVkaWQnKSkgfHwgXy5pc051bGwobS5nZXQoJ2luaGVyaXRlZGlkJykpCi0gICAgICAgfHwgXy5p c1VuZGVmaW5lZChtLmdldCgnaW5oZXJpdGVkZnJvbScpKSB8fCBfLmlzTnVsbChtLmdldCgnaW5o ZXJpdGVkZnJvbScpKSkgPyB0cnVlIDogZmFsc2U7Ci0gICAgfSwKLSAgICB0b0pTT046IEJhY2ti b25lLk1vZGVsLnByb3RvdHlwZS50b0pTT04sCi0gIH0pOwotCi0KLSAgLyogTm9kZUFqYXhPcHRp b25zTXVsdGlwbGVDb250cm9sIGlzIGZvciBtdWx0aXBsZSBzZWxlY3Rpb24gb2YgQ29tYm9ib3gu Ci0gICogIFRoaXMgY29udHJvbCBpcyB1c2VkIHRvIHNlbGVjdCBNdWx0aXBsZSBQYXJlbnQgVGFi bGVzIHRvIGJlIGluaGVyaXRlZC4KLSAgKiAgSXQgYWxzbyBwb3B1bGF0ZXMvdmFjYXRlcyBDb2x1 bW5zIG9uIHNlbGVjdGlvbi9kZXNlbGVjdGlvbiBvZiB0aGUgb3B0aW9uIChpLmUuIHRhYmxlIG5h bWUpLgotICAqICBUbyBwb3B1bGF0ZXMgdGhlIGNvbHVtbiwgaXQgY2FsbHMgdGhlIHNlcnZlciBh bmQgZmV0Y2ggdGhlIGNvbHVtbnMgZGF0YQotICAqICBmb3IgdGhlIHNlbGVjdGVkIHRhYmxlLgot ICAqLwotICB2YXIgTm9kZUFqYXhPcHRpb25zTXVsdGlwbGVDb250cm9sID0gQmFja2Zvcm0uTm9k ZUFqYXhPcHRpb25zQ29udHJvbC5leHRlbmQoewotICAgIG9uQ2hhbmdlOiBmdW5jdGlvbigpIHsK LSAgICAgIHZhciBtb2RlbCA9IHRoaXMubW9kZWwsCi0gICAgICAgIGF0dHJBcnIgPSB0aGlzLmZp ZWxkLmdldCgnbmFtZScpLnNwbGl0KCcuJyksCi0gICAgICAgIG5hbWUgPSBhdHRyQXJyLnNoaWZ0 KCksCi0gICAgICAgIHBhdGggPSBhdHRyQXJyLmpvaW4oJy4nKSwKLSAgICAgICAgdmFsdWUgPSB0 aGlzLmdldFZhbHVlRnJvbURPTSgpLAotICAgICAgICBjaGFuZ2VzID0ge30sCi0gICAgICAgIGNv bHVtbnMgPSBtb2RlbC5nZXQoJ2NvbHVtbnMnKSwKLSAgICAgICAgaW5oZXJpdHMgPSBtb2RlbC5n ZXQobmFtZSk7Ci0KLSAgICAgIGlmICh0aGlzLm1vZGVsLmVycm9yTW9kZWwgaW5zdGFuY2VvZiBC YWNrYm9uZS5Nb2RlbCkgewotICAgICAgICBpZiAoXy5pc0VtcHR5KHBhdGgpKSB7Ci0gICAgICAg ICAgdGhpcy5tb2RlbC5lcnJvck1vZGVsLnVuc2V0KG5hbWUpOwotICAgICAgICB9IGVsc2Ugewot ICAgICAgICAgIHZhciBuZXN0ZWRFcnJvciA9IHRoaXMubW9kZWwuZXJyb3JNb2RlbC5nZXQobmFt ZSk7Ci0gICAgICAgICAgaWYgKG5lc3RlZEVycm9yKSB7Ci0gICAgICAgICAgICB0aGlzLmtleVBh dGhTZXR0ZXIobmVzdGVkRXJyb3IsIHBhdGgsIG51bGwpOwotICAgICAgICAgICAgdGhpcy5tb2Rl bC5lcnJvck1vZGVsLnNldChuYW1lLCBuZXN0ZWRFcnJvcik7Ci0gICAgICAgICAgfQotICAgICAg ICB9Ci0gICAgICB9Ci0KLSAgICAgIHZhciBzZWxmID0gdGhpczsKLQotICAgICAgaWYgKHR5cGVv Zihpbmhlcml0cykgID09ICdzdHJpbmcnKXsgaW5oZXJpdHMgPSBKU09OLnBhcnNlKGluaGVyaXRz KTsgfQotCi0gICAgICAvLyBSZW1vdmUgQ29sdW1ucyBpZiBpbmhlcml0IG9wdGlvbiBpcyBkZXNl bGVjdGVkIGZyb20gdGhlIGNvbWJvYm94Ci0gICAgICBpZihfLnNpemUodmFsdWUpIDwgXy5zaXpl KGluaGVyaXRzKSkgewotICAgICAgICB2YXIgZGlmID0gIF8uZGlmZmVyZW5jZShpbmhlcml0cywg dmFsdWUpOwotICAgICAgICB2YXIgcm12X2NvbHVtbnMgPSBjb2x1bW5zLndoZXJlKHtpbmhlcml0 ZWRpZDogcGFyc2VJbnQoZGlmWzBdKX0pOwotICAgICAgICBjb2x1bW5zLnJlbW92ZShybXZfY29s dW1ucyk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIF8uZWFjaCh2YWx1 ZSwgZnVuY3Rpb24oaSkgewotICAgICAgICAgIC8vIEZldGNoIENvbHVtbnMgZnJvbSBzZXJ2ZXIK LSAgICAgICAgICB2YXIgZm5kX2NvbHVtbnMgPSBjb2x1bW5zLndoZXJlKHtpbmhlcml0ZWRpZDog cGFyc2VJbnQoaSl9KTsKLSAgICAgICAgICBpZiAoZm5kX2NvbHVtbnMgJiYgZm5kX2NvbHVtbnMu bGVuZ3RoIDw9IDApIHsKLSAgICAgICAgICAgIHZhciBpbmh0ZWRfY29sdW1ucyA9IHNlbGYuZmV0 Y2hDb2x1bW5zKGkpOwotICAgICAgICAgICAgY29sdW1ucy5hZGQoaW5odGVkX2NvbHVtbnMpOwot ICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgICB9Ci0KLSAgICAgIGNoYW5nZXNbbmFtZV0g PSBfLmlzRW1wdHkocGF0aCkgPyB2YWx1ZSA6IF8uY2xvbmUobW9kZWwuZ2V0KG5hbWUpKSB8fCB7 fTsKLSAgICAgIHRoaXMuc3RvcExpc3RlbmluZyh0aGlzLm1vZGVsLCAnY2hhbmdlOicgKyBuYW1l LCB0aGlzLnJlbmRlcik7Ci0gICAgICBtb2RlbC5zZXQoY2hhbmdlcyk7Ci0gICAgICB0aGlzLmxp c3RlblRvKHRoaXMubW9kZWwsICdjaGFuZ2U6JyArIG5hbWUsIHRoaXMucmVuZGVyKTsKLSAgICB9 LAotICAgIGZldGNoQ29sdW1uczogZnVuY3Rpb24odGFibGVfaWQpewotICAgICAgdmFyIHNlbGYg PSB0aGlzLAotICAgICAgICB1cmwgPSAnZ2V0X2NvbHVtbnMnLAotICAgICAgICBtID0gc2VsZi5t b2RlbC50b3AgfHwgc2VsZi5tb2RlbDsKLQotICAgICAgdmFyIG5vZGUgPSB0aGlzLmZpZWxkLmdl dCgnc2NoZW1hX25vZGUnKSwKLSAgICAgICAgbm9kZV9pbmZvID0gdGhpcy5maWVsZC5nZXQoJ25v ZGVfaW5mbycpLAotICAgICAgICBmdWxsX3VybCA9IG5vZGUuZ2VuZXJhdGVfdXJsLmFwcGx5KAot ICAgICAgICAgIG5vZGUsIFsKLSAgICAgICAgICAgIG51bGwsIHVybCwgdGhpcy5maWVsZC5nZXQo J25vZGVfZGF0YScpLAotICAgICAgICAgICAgdGhpcy5maWVsZC5nZXQoJ3VybF93aXRoX2lkJykg fHwgZmFsc2UsIG5vZGVfaW5mbywKLSAgICAgICAgICBdKSwKLSAgICAgICAgY2FjaGVfbGV2ZWwg PSB0aGlzLmZpZWxkLmdldCgnY2FjaGVfbGV2ZWwnKSB8fCBub2RlLnR5cGUsCi0gICAgICAgIGNh Y2hlX25vZGUgPSB0aGlzLmZpZWxkLmdldCgnY2FjaGVfbm9kZScpOwotCi0gICAgICBjYWNoZV9u b2RlID0gKGNhY2hlX25vZGUgJiYgcGdCcm93c2VyLk5vZGVzWydjYWNoZV9ub2RlJ10pIHx8IG5v ZGU7Ci0KLSAgICAgIG0udHJpZ2dlcigncGdhZG1pbjp2aWV3OmZldGNoaW5nJywgbSwgc2VsZi5m aWVsZCk7Ci0gICAgICB2YXIgZGF0YSA9IHthdHRyZWxpZDogdGFibGVfaWR9OwotCi0gICAgICAv LyBGZXRjaGluZyBDb2x1bW5zIGRhdGEgZm9yIHRoZSBzZWxlY3RlZCB0YWJsZS4KLSAgICAgICQu YWpheCh7Ci0gICAgICAgIGFzeW5jOiBmYWxzZSwKLSAgICAgICAgdXJsOiBmdWxsX3VybCwKLSAg ICAgICAgZGF0YTogZGF0YSwKLSAgICAgIH0pCi0gICAgICAgIC5kb25lKGZ1bmN0aW9uKHJlcykg ewotICAgICAgICAvKgotICAgICAgICAgKiBXZSB3aWxsIGNhY2hlIHRoaXMgZGF0YSBmb3Igc2hv cnQgcGVyaW9kIG9mIHRpbWUgZm9yIGF2b2lkaW5nCi0gICAgICAgICAqIHNhbWUgY2FsbHMuCi0g ICAgICAgICAqLwotICAgICAgICAgIGRhdGEgPSBjYWNoZV9ub2RlLmNhY2hlKHVybCwgbm9kZV9p bmZvLCBjYWNoZV9sZXZlbCwgcmVzLmRhdGEpOwotCi0gICAgICAgIH0pCi0gICAgICAgIC5mYWls KGZ1bmN0aW9uKCkgewotICAgICAgICAgIG0udHJpZ2dlcigncGdhZG1pbjp2aWV3OmZldGNoOmVy cm9yJywgbSwgc2VsZi5maWVsZCk7Ci0gICAgICAgIH0pOwotICAgICAgbS50cmlnZ2VyKCdwZ2Fk bWluOnZpZXc6ZmV0Y2hlZCcsIG0sIHNlbGYuZmllbGQpOwotCi0gICAgICAvLyBUbyBmZXRjaCBv bmx5IG9wdGlvbnMgZnJvbSBjYWNoZSwgd2UgZG8gbm90IG5lZWQgdGltZSBmcm9tICdhdCcKLSAg ICAgIC8vIGF0dHJpYnV0ZSBidXQgb25seSBvcHRpb25zLgotICAgICAgLy8KLSAgICAgIC8vIEl0 IGlzIGZlYXNpYmxlIHRoYXQgdGhlIGRhdGEgbWF5IG5vdCBoYXZlIGJlZW4gZmV0Y2hlZC4KLSAg ICAgIGRhdGEgPSAoZGF0YSAmJiBkYXRhLmRhdGEpIHx8IFtdOwotICAgICAgcmV0dXJuIGRhdGE7 Ci0KLSAgICB9LAotICB9KTsKLQotCi0gIC8vIENvbnN0cmFpbnRzIE1vZGVsCi0gIHZhciBDb25z dHJhaW50TW9kZWwgPSBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoewotICAgIGlkQXR0cmli dXRlOiAnY29ub2lkJywKLSAgICBpbml0aWFsaXplOiBmdW5jdGlvbihhdHRycykgewotICAgICAg dmFyIGlzTmV3ID0gKF8uc2l6ZShhdHRycykgPT09IDApOwotICAgICAgaWYgKCFpc05ldykgewot ICAgICAgICB0aGlzLmNvbnZhbGlkYXRlZF9kZWZhdWx0ID0gdGhpcy5nZXQoJ2NvbnZhbGlkYXRl ZCcpOwotICAgICAgfQotICAgICAgcGdCcm93c2VyLk5vZGUuTW9kZWwucHJvdG90eXBlLmluaXRp YWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgICB9LAotICAgIGRlZmF1bHRzOiB7Ci0g ICAgICBjb25vaWQ6IHVuZGVmaW5lZCwKLSAgICAgIGNvbm5hbWU6IHVuZGVmaW5lZCwKLSAgICAg IGNvbnNyYzogdW5kZWZpbmVkLAotICAgICAgY29ubm9pbmhlcml0OiB1bmRlZmluZWQsCi0gICAg ICBjb252YWxpZGF0ZWQ6IHRydWUsCi0gICAgICBjb25pc2xvY2FsOiB1bmRlZmluZWQsCi0gICAg fSwKLSAgICBjb252YWxpZGF0ZWRfZGVmYXVsdDogdHJ1ZSwKLSAgICBzY2hlbWE6IFt7Ci0gICAg ICBpZDogJ2Nvbm9pZCcsIHR5cGU6ICd0ZXh0JywgY2VsbDogJ3N0cmluZycsIHZpc2libGU6IGZh bHNlLAotICAgIH0sewotICAgICAgaWQ6ICdjb25uYW1lJywgbGFiZWw6IGdldHRleHQoJ05hbWUn KSwgdHlwZTogJ3RleHQnLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgIGVkaXRhYmxlOiAnaXNfZWRp dGFibGUnLCBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMzAnLAotICAgIH0sewot ICAgICAgaWQ6ICdjb25zcmMnLCBsYWJlbDogZ2V0dGV4dCgnQ2hlY2snKSwgdHlwZTogJ211bHRp bGluZScsCi0gICAgICBlZGl0YWJsZTogJ2lzX2VkaXRhYmxlJywgY2VsbDogQmFja2dyaWQuRXh0 ZW5zaW9uLlRleHRhcmVhQ2VsbCwKLSAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVy Y2VudF8zMCcsCi0gICAgfSx7Ci0gICAgICBpZDogJ2Nvbm5vaW5oZXJpdCcsIGxhYmVsOiBnZXR0 ZXh0KCdObyBpbmhlcml0PycpLCB0eXBlOiAnc3dpdGNoJywKLSAgICAgIGNlbGw6ICdib29sZWFu JywgZWRpdGFibGU6ICdpc19lZGl0YWJsZScsCi0gICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dp ZHRoX3BlcmNlbnRfMjAnLAotICAgIH0sewotICAgICAgaWQ6ICdjb252YWxpZGF0ZWQnLCBsYWJl bDogZ2V0dGV4dCgnVmFsaWRhdGU/JyksIHR5cGU6ICdzd2l0Y2gnLAotICAgICAgY2VsbDogJ2Jv b2xlYW4nLCBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMjAnLAotICAgICAgZWRp dGFibGU6IGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQobS5pc05ldykp IHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgaWYgKCFtLmlzTmV3KCkpIHsKLSAgICAgICAgICBp ZihtLmdldCgnY29udmFsaWRhdGVkJykgJiYgbS5jb252YWxpZGF0ZWRfZGVmYXVsdCkgewotICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgICByZXR1cm4gdHJ1 ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0sCi0gICAgfSwKLSAg ICBdLAotICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKLSAgICAgIHZhciBlcnIgPSB7fSwKLSAg ICAgICAgZXJybXNnOwotCi0gICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnY29ubmFt ZScpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ2Nvbm5hbWUnKSkucmVwbGFjZSgvXlxzK3xccyskL2cs ICcnKSA9PSAnJykgewotICAgICAgICBlcnJbJ2Nvbm5hbWUnXSA9IGdldHRleHQoJ0NvbnN0cmFp bnQgTmFtZSBjYW5ub3QgYmUgZW1wdHkuJyk7Ci0gICAgICAgIGVycm1zZyA9IGVyclsnY29ubmFt ZSddOwotICAgICAgfQotCi0gICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnY29uc3Jj JykpIHx8IFN0cmluZyh0aGlzLmdldCgnY29uc3JjJykpCi0gICAgICAgIC5yZXBsYWNlKC9eXHMr fFxzKyQvZywgJycpID09ICcnKSB7Ci0gICAgICAgIGVyclsnY29uc3JjJ10gPSBnZXR0ZXh0KCdD b25zdHJhaW50IENoZWNrIGNhbm5vdCBiZSBlbXB0eS4nKTsKLSAgICAgICAgZXJybXNnID0gZXJy bXNnIHx8IGVyclsnY29uc3JjJ107Ci0gICAgICB9Ci0KLSAgICAgIHRoaXMuZXJyb3JNb2RlbC5j bGVhcigpLnNldChlcnIpOwotCi0gICAgICByZXR1cm4gZXJybXNnOwotICAgIH0sCi0gICAgaXNf ZWRpdGFibGU6IGZ1bmN0aW9uKG0pIHsKLSAgICAgIHJldHVybiBfLmlzVW5kZWZpbmVkKG0uaXNO ZXcpID8gdHJ1ZSA6IG0uaXNOZXcoKTsKLSAgICB9LAotICAgIHRvSlNPTjogQmFja2JvbmUuTW9k ZWwucHJvdG90eXBlLnRvSlNPTiwKLSAgfSk7Ci0KLQotICAvLyBPcHRpb25zIE1vZGVsCi0gIHZh ciBPcHRpb25zTW9kZWwgPSBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoewotICAgIGRlZmF1 bHRzOiB7Ci0gICAgICBvcHRpb246IHVuZGVmaW5lZCwKLSAgICAgIHZhbHVlOiB1bmRlZmluZWQs Ci0gICAgfSwKLSAgICBzY2hlbWE6IFt7Ci0gICAgICBpZDogJ29wdGlvbicsIGxhYmVsOiBnZXR0 ZXh0KCdPcHRpb24nKSwgY2VsbDogJ3N0cmluZycsIHR5cGU6ICd0ZXh0JywKLSAgICAgIGVkaXRh YmxlOiB0cnVlLCBjZWxsSGVhZGVyQ2xhc3Nlczond2lkdGhfcGVyY2VudF81MCcsCi0gICAgfSx7 Ci0gICAgICBpZDogJ3ZhbHVlJywgbGFiZWw6IGdldHRleHQoJ1ZhbHVlJyksIGNlbGw6ICdzdHJp bmcnLHR5cGU6ICd0ZXh0JywKLSAgICAgIGVkaXRhYmxlOiB0cnVlLCBjZWxsSGVhZGVyQ2xhc3Nl czond2lkdGhfcGVyY2VudF81MCcsCi0gICAgfSwKLSAgICBdLAotICAgIHZhbGlkYXRlOiBmdW5j dGlvbigpIHsKLSAgICAgIC8vIFRPRE86IEFkZCB2YWxpZGF0aW9uIGhlcmUKLSAgICB9LAotICAg IHRvSlNPTjogQmFja2JvbmUuTW9kZWwucHJvdG90eXBlLnRvSlNPTiwKLSAgfSk7Ci0KLQogICBp ZiAoIXBnQnJvd3Nlci5Ob2Rlc1snZm9yZWlnbl90YWJsZSddKSB7CiAgICAgcGdCcm93c2VyLk5v ZGVzWydmb3JlaWduX3RhYmxlJ10gPSBzY2hlbWFDaGlsZC5TY2hlbWFDaGlsZE5vZGUuZXh0ZW5k KHsKICAgICAgIHR5cGU6ICdmb3JlaWduX3RhYmxlJywKQEAgLTU2MSwxNjAgKzEwMyw2IEBAIGRl ZmluZSgncGdhZG1pbi5ub2RlLmZvcmVpZ25fdGFibGUnLCBbCiAgICAgICAgICAgfQogICAgICAg ICApOwogICAgICAgfSwKLSAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQo ewotICAgICAgICBpZEF0dHJpYnV0ZTogJ29pZCcsCi0gICAgICAgIGluaXRpYWxpemU6IGZ1bmN0 aW9uKGF0dHJzLCBhcmdzKSB7Ci0gICAgICAgICAgdmFyIGlzTmV3ID0gKF8uc2l6ZShhdHRycykg PT09IDApOwotICAgICAgICAgIGlmIChpc05ldykgewotICAgICAgICAgICAgdmFyIHNjaGVtYSA9 IGFyZ3Mubm9kZV9pbmZvLnNjaGVtYS5fbGFiZWwsCi0gICAgICAgICAgICAgIHVzZXJJbmZvID0g cGdCcm93c2VyLnNlcnZlckluZm9bYXJncy5ub2RlX2luZm8uc2VydmVyLl9pZF0udXNlcjsKLQot ICAgICAgICAgICAgLy8gU2V0IFNlbGVjdGVkIFNjaGVtYSBhbmQgQ3VycmVudCBVc2VyCi0gICAg ICAgICAgICB0aGlzLnNldCh7Ci0gICAgICAgICAgICAgICdiYXNlbnNwJzogc2NoZW1hLCAnb3du ZXInOiB1c2VySW5mby5uYW1lLAotICAgICAgICAgICAgfSwge3NpbGVudDogdHJ1ZX0pOwotICAg ICAgICAgIH0KLSAgICAgICAgICBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5wcm90b3R5cGUuaW5pdGlh bGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotICAgICAgICB9LAotICAgICAgICBkZWZhdWx0 czogewotICAgICAgICAgIG5hbWU6IHVuZGVmaW5lZCwKLSAgICAgICAgICBvaWQ6IHVuZGVmaW5l ZCwKLSAgICAgICAgICBvd25lcjogdW5kZWZpbmVkLAotICAgICAgICAgIGJhc2Vuc3A6IHVuZGVm aW5lZCwKLSAgICAgICAgICBpc19zeXNfb2JqOiB1bmRlZmluZWQsCi0gICAgICAgICAgZGVzY3Jp cHRpb246IHVuZGVmaW5lZCwKLSAgICAgICAgICBmdHNydm5hbWU6IHVuZGVmaW5lZCwKLSAgICAg ICAgICBzdHJmdG9wdGlvbnM6IHVuZGVmaW5lZCwKLSAgICAgICAgICBpbmhlcml0czogW10sCi0g ICAgICAgICAgY29sdW1uczogW10sCi0gICAgICAgICAgY29uc3RyYWludHM6IFtdLAotICAgICAg ICAgIGZ0b3B0aW9uczogW10sCi0gICAgICAgICAgcmVsYWNsOiBbXSwKLSAgICAgICAgICBzdHJh Y2w6IFtdLAotICAgICAgICAgIHNlY2xhYmVsczogW10sCi0gICAgICAgIH0sCi0gICAgICAgIHNj aGVtYTogW3sKLSAgICAgICAgICBpZDogJ25hbWUnLCBsYWJlbDogZ2V0dGV4dCgnTmFtZScpLCBj ZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGll cycsICdjcmVhdGUnLCAnZWRpdCddLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ29pZCcs IGxhYmVsOiBnZXR0ZXh0KCdPSUQnKSwgY2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgdHlwZTog J3RleHQnICwgbW9kZTogWydwcm9wZXJ0aWVzJ10sCi0gICAgICAgIH0sewotICAgICAgICAgIGlk OiAnb3duZXInLCBsYWJlbDogZ2V0dGV4dCgnT3duZXInKSwgY2VsbDogJ3N0cmluZycsCi0gICAg ICAgICAgY29udHJvbDogQmFja2Zvcm0uTm9kZUxpc3RCeU5hbWVDb250cm9sLAotICAgICAgICAg IG5vZGU6ICdyb2xlJywgIHR5cGU6ICd0ZXh0Jywgc2VsZWN0MjogeyBhbGxvd0NsZWFyOiBmYWxz ZSB9LAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ2Jhc2Vuc3AnLCBsYWJlbDogZ2V0dGV4 dCgnU2NoZW1hJyksIGNlbGw6ICdub2RlLWxpc3QtYnktbmFtZScsCi0gICAgICAgICAgY29udHJv bDogJ25vZGUtbGlzdC1ieS1uYW1lJywgY2FjaGVfbGV2ZWw6ICdkYXRhYmFzZScsIHR5cGU6ICd0 ZXh0JywKLSAgICAgICAgICBub2RlOiAnc2NoZW1hJywgbW9kZTpbJ2NyZWF0ZScsICdlZGl0J10s Ci0gICAgICAgIH0sewotICAgICAgICAgIGlkOiAnaXNfc3lzX29iaicsIGxhYmVsOiBnZXR0ZXh0 KCdTeXN0ZW0gZm9yZWlnbiB0YWJsZT8nKSwKLSAgICAgICAgICBjZWxsOidib29sZWFuJywgdHlw ZTogJ3N3aXRjaCcsIG1vZGU6IFsncHJvcGVydGllcyddLAotICAgICAgICB9LHsKLSAgICAgICAg ICBpZDogJ2Rlc2NyaXB0aW9uJywgbGFiZWw6IGdldHRleHQoJ0NvbW1lbnQnKSwgY2VsbDogJ3N0 cmluZycsCi0gICAgICAgICAgdHlwZTogJ211bHRpbGluZScsCi0gICAgICAgIH0sewotICAgICAg ICAgIGlkOiAnZnRzcnZuYW1lJywgbGFiZWw6IGdldHRleHQoJ0ZvcmVpZ24gc2VydmVyJyksIGNl bGw6ICdzdHJpbmcnLCBjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLAotICAgICAgICAgIHR5 cGU6ICd0ZXh0JywgZ3JvdXA6IGdldHRleHQoJ0RlZmluaXRpb24nKSwgdXJsOiAnZ2V0X2ZvcmVp Z25fc2VydmVycycsCi0gICAgICAgICAgcmVhZG9ubHk6IGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFt LmlzTmV3KCk7IH0sIGNhY2hlX25vZGU6ICdkYXRhYmFzZScsCi0gICAgICAgIH0sewotICAgICAg ICAgIGlkOiAnaW5oZXJpdHMnLCBsYWJlbDogZ2V0dGV4dCgnSW5oZXJpdHMnKSwgZ3JvdXA6IGdl dHRleHQoJ0RlZmluaXRpb24nKSwKLSAgICAgICAgICB0eXBlOiAnYXJyYXknLCBtaW5fdmVyc2lv bjogOTA1MDAsIGNvbnRyb2w6IE5vZGVBamF4T3B0aW9uc011bHRpcGxlQ29udHJvbCwKLSAgICAg ICAgICB1cmw6ICdnZXRfdGFibGVzJywgc2VsZWN0Mjoge211bHRpcGxlOiB0cnVlfSwKLSAgICAg ICAgICAnY2FjaGVfbGV2ZWwnOiAnZGF0YWJhc2UnLAotICAgICAgICAgIHRyYW5zZm9ybTogZnVu Y3Rpb24oZCkgewotICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQuZ2V0KCdtb2RlJykgPT0gJ2Vk aXQnKSB7Ci0gICAgICAgICAgICAgIHZhciBvaWQgPSB0aGlzLm1vZGVsLmdldCgnb2lkJyk7Ci0g ICAgICAgICAgICAgIHZhciBzID0gXy5maW5kV2hlcmUoZCwgeydpZCc6IG9pZH0pOwotICAgICAg ICAgICAgICBpZiAocykgewotICAgICAgICAgICAgICAgIGQgPSBfLnJlamVjdChkLCBzKTsKLSAg ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGQ7Ci0gICAg ICAgICAgfSwKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdjb2x1bW5zJywgbGFiZWw6IGdl dHRleHQoJ0NvbHVtbnMnKSwgY2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgdHlwZTogJ2NvbGxl Y3Rpb24nLCBncm91cDogZ2V0dGV4dCgnQ29sdW1ucycpLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRl J10sCi0gICAgICAgICAgbW9kZWw6IENvbHVtbnNNb2RlbCwgY2FuQWRkOiB0cnVlLCBjYW5EZWxl dGU6IHRydWUsIGNhbkVkaXQ6IHRydWUsCi0gICAgICAgICAgY29sdW1uczogWydhdHRuYW1lJywg J2RhdGF0eXBlJywgJ2luaGVyaXRlZGZyb20nXSwKLSAgICAgICAgICBjYW5EZWxldGVSb3c6IGZ1 bmN0aW9uKG0pIHsKLSAgICAgICAgICAgIHJldHVybiAoXy5pc1VuZGVmaW5lZChtLmdldCgnaW5o ZXJpdGVkaWQnKSkgfHwgXy5pc051bGwobS5nZXQoJ2luaGVyaXRlZGlkJykpCi0gICAgICAgICAg ICAgIHx8IF8uaXNVbmRlZmluZWQobS5nZXQoJ2luaGVyaXRlZGZyb20nKSkgfHwgXy5pc051bGwo bS5nZXQoJ2luaGVyaXRlZGZyb20nKSkpID8gdHJ1ZSA6IGZhbHNlOwotICAgICAgICAgIH0sCi0g ICAgICAgICAgY2FuRWRpdFJvdzogZnVuY3Rpb24obSkgewotICAgICAgICAgICAgcmV0dXJuIChf LmlzVW5kZWZpbmVkKG0uZ2V0KCdpbmhlcml0ZWRpZCcpKSB8fCBfLmlzTnVsbChtLmdldCgnaW5o ZXJpdGVkaWQnKSkKLSAgICAgICAgICAgICAgfHwgXy5pc1VuZGVmaW5lZChtLmdldCgnaW5oZXJp dGVkZnJvbScpKSB8fCBfLmlzTnVsbChtLmdldCgnaW5oZXJpdGVkZnJvbScpKSkgPyB0cnVlIDog ZmFsc2U7Ci0gICAgICAgICAgfSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgIGlk OiAnY29uc3RyYWludHMnLCBsYWJlbDogZ2V0dGV4dCgnQ29uc3RyYWludHMnKSwgY2VsbDogJ3N0 cmluZycsCi0gICAgICAgICAgdHlwZTogJ2NvbGxlY3Rpb24nLCBncm91cDogZ2V0dGV4dCgnQ29u c3RyYWludHMnKSwgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAotICAgICAgICAgIG1vZGVsOiBD b25zdHJhaW50TW9kZWwsIGNhbkFkZDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLCBjb2x1bW5zOiBb J2Nvbm5hbWUnLCdjb25zcmMnLCAnY29ubm9pbmhlcml0JywgJ2NvbnZhbGlkYXRlZCddLAotICAg ICAgICAgIGNhbkVkaXQ6IGZ1bmN0aW9uKG8pIHsKLSAgICAgICAgICAgIGlmIChvIGluc3RhbmNl b2YgQmFja2JvbmUuTW9kZWwpIHsKLSAgICAgICAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBDb25z dHJhaW50TW9kZWwpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gby5pc05ldygpOwotICAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg ICAgICB9LCBtaW5fdmVyc2lvbjogOTA1MDAsIGNhbkRlbGV0ZVJvdzogZnVuY3Rpb24obSkgewot ICAgICAgICAgICAgcmV0dXJuIChtLmdldCgnY29uaXNsb2NhbCcpID09IHRydWUgfHwgXy5pc1Vu ZGVmaW5lZChtLmdldCgnY29uaXNsb2NhbCcpKSkgPyB0cnVlIDogZmFsc2U7Ci0gICAgICAgICAg fSwKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdzdHJmdG9wdGlvbnMnLCBsYWJlbDogZ2V0 dGV4dCgnT3B0aW9ucycpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBlOiAndGV4dCcs IGdyb3VwOiBnZXR0ZXh0KCdEZWZpbml0aW9uJyksIG1vZGU6IFsncHJvcGVydGllcyddLAotICAg ICAgICB9LHsKLSAgICAgICAgICBpZDogJ2Z0b3B0aW9ucycsIGxhYmVsOiBnZXR0ZXh0KCdPcHRp b25zJyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICdjb2xsZWN0aW9uJywgZ3Jv dXA6IGdldHRleHQoJ09wdGlvbnMnKSwgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAotICAgICAg ICAgIG1vZGVsOiBPcHRpb25zTW9kZWwsIGNhbkFkZDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLCBj YW5FZGl0OiBmYWxzZSwKLSAgICAgICAgICBjb250cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0aW9u JywgdW5pcXVlQ29sIDogWydvcHRpb24nXSwKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdy ZWxhY2wnLCBsYWJlbDogZ2V0dGV4dCgnUHJpdmlsZWdlcycpLCBjZWxsOiAnc3RyaW5nJywKLSAg ICAgICAgICB0eXBlOiAndGV4dCcsIGdyb3VwOiBnZXR0ZXh0KCdTZWN1cml0eScpLAotICAgICAg ICAgIG1vZGU6IFsncHJvcGVydGllcyddLCBtaW5fdmVyc2lvbjogOTAyMDAsCi0gICAgICAgIH0s IHBnQnJvd3Nlci5TZWN1cml0eUdyb3VwU2NoZW1hLCB7Ci0gICAgICAgICAgaWQ6ICdhY2wnLCBs YWJlbDogZ2V0dGV4dCgnUHJpdmlsZWdlcycpLCBtb2RlbDogcGdBZG1pbgotICAgICAgICAgICAg LkJyb3dzZXIuTm9kZS5Qcml2aWxlZ2VSb2xlTW9kZWwuZXh0ZW5kKAotICAgICAgICAgICAgICB7 cHJpdmlsZWdlczogWydhJywncicsJ3cnLCd4J119KSwgdW5pcXVlQ29sIDogWydncmFudGVlJywg J2dyYW50b3InXSwKLSAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdjb2xsZWN0aW9u JywgZ3JvdXA6ICdzZWN1cml0eScsCi0gICAgICAgICAgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSdd LAotICAgICAgICAgIGNhbkFkZDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLCBjb250cm9sOiAndW5p cXVlLWNvbC1jb2xsZWN0aW9uJywKLSAgICAgICAgICBtaW5fdmVyc2lvbjogOTAyMDAsCi0gICAg ICAgIH0sewotICAgICAgICAgIGlkOiAnc2VjbGFiZWxzJywgbGFiZWw6IGdldHRleHQoJ1NlY3Vy aXR5IGxhYmVscycpLAotICAgICAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuU2VjTGFiZWxNb2RlbCwg dHlwZTogJ2NvbGxlY3Rpb24nLAotICAgICAgICAgIGdyb3VwOiAnc2VjdXJpdHknLCBtb2RlOiBb J2VkaXQnLCAnY3JlYXRlJ10sCi0gICAgICAgICAgbWluX3ZlcnNpb246IDkwMTAwLCBjYW5BZGQ6 IHRydWUsCi0gICAgICAgICAgY2FuRWRpdDogZmFsc2UsIGNhbkRlbGV0ZTogdHJ1ZSwKLSAgICAg ICAgICBjb250cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0aW9uJywgdW5pcXVlQ29sIDogWydwcm92 aWRlciddLAotICAgICAgICB9LAotICAgICAgICBdLAotICAgICAgICB2YWxpZGF0ZTogZnVuY3Rp b24oKQotICAgICAgICB7Ci0gICAgICAgICAgdmFyIGVyciA9IHt9LAotICAgICAgICAgICAgZXJy bXNnID0gbnVsbDsKLQotICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCduYW1l JykpIHx8IFN0cmluZyh0aGlzLmdldCgnbmFtZScpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycp ID09ICcnKSB7Ci0gICAgICAgICAgICBlcnJbJ25hbWUnXSA9IGdldHRleHQoJ05hbWUgY2Fubm90 IGJlIGVtcHR5LicpOwotICAgICAgICAgICAgZXJybXNnID0gZXJyWyduYW1lJ107Ci0gICAgICAg ICAgfQotCi0gICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ2Jhc2Vuc3AnKSkg fHwgU3RyaW5nKHRoaXMuZ2V0KCdiYXNlbnNwJykpCi0gICAgICAgICAgICAucmVwbGFjZSgvXlxz K3xccyskL2csICcnKSA9PSAnJykgewotICAgICAgICAgICAgZXJyWydiYXNlbnNwJ10gPSBnZXR0 ZXh0KCdTY2hlbWEgY2Fubm90IGJlIGVtcHR5LicpOwotICAgICAgICAgICAgZXJybXNnID0gZXJy bXNnIHx8IGVyclsnYmFzZW5zcCddOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmIChfLmlz VW5kZWZpbmVkKHRoaXMuZ2V0KCdmdHNydm5hbWUnKSkgfHwgU3RyaW5nKHRoaXMuZ2V0KCdmdHNy dm5hbWUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewotICAgICAgICAgICAg ZXJyWydmdHNydm5hbWUnXSA9IGdldHRleHQoJ0ZvcmVpZ24gc2VydmVyIGNhbm5vdCBiZSBlbXB0 eS4nKTsKLSAgICAgICAgICAgIGVycm1zZyA9IGVycm1zZyB8fCBlcnJbJ2Z0c3J2bmFtZSddOwot ICAgICAgICAgIH0KLQotICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpLnNldChlcnIp OwotCi0gICAgICAgICAgcmV0dXJuIGVycm1zZzsKLSAgICAgICAgfSwKLSAgICAgIH0pLAogICAg IH0pOwogCiAgIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy9zdGF0aWMvanMv ZnRzX2NvbmZpZ3VyYXRpb24uanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvc3RhdGljL2pzL2Z0 c19jb25maWd1cmF0aW9uLmpzCmluZGV4IDAwNDlkZTViZC4uMDczZGQ0YWNjIDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvc3RhdGljL2pzL2Z0c19jb25maWd1cmF0aW9uLmpzCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy9zdGF0aWMvanMvZnRzX2NvbmZpZ3VyYXRpb24uanMK QEAgLTkzLDMyICs5Myw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmZ0c19jb25maWd1cmF0aW9u JywgWwogICAgICAgICAgIH0KICAgICAgICAgKTsKICAgICAgIH0sCi0KLSAgICAgIC8vIERlZmlu aW5nIG1vZGVsIGZvciBGVFMgQ29uZmlndXJhdGlvbiBub2RlCi0gICAgICBtb2RlbDogcGdBZG1p bi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKLSAgICAgICAgaWRBdHRyaWJ1dGU6ICdvaWQn LAotCi0gICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBvcHRzKSB7Ci0gICAgICAg ICAgdmFyIGlzTmV3ID0gKF8uc2l6ZShhdHRycykgPT09IDApOwotICAgICAgICAgIHBnQWRtaW4u QnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3Vt ZW50cyk7Ci0KLSAgICAgICAgICBpZiAoaXNOZXcpIHsKLSAgICAgICAgICAgIHZhciB1c2VyID0g cGdCcm93c2VyLnNlcnZlckluZm9bb3B0cy5ub2RlX2luZm8uc2VydmVyLl9pZF0udXNlcjsKLSAg ICAgICAgICAgIHRoaXMuc2V0KHsKLSAgICAgICAgICAgICAgJ293bmVyJzogdXNlci5uYW1lLAot ICAgICAgICAgICAgICAnc2NoZW1hJzogb3B0cy5ub2RlX2luZm8uc2NoZW1hLl9pZCwKLSAgICAg ICAgICAgIH0sIHtzaWxlbnQ6IHRydWV9KTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAg ICAgIC8vIERlZmluaW5nIHNjaGVtYSBmb3IgRlRTIENvbmZpZ3VyYXRpb24KLSAgICAgICAgc2No ZW1hOiBbewotICAgICAgICAgIGlkOiAnbmFtZScsIGxhYmVsOiBnZXR0ZXh0KCdOYW1lJyksIGNl bGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICd0ZXh0JywgY2VsbEhlYWRlckNsYXNzZXM6 ICd3aWR0aF9wZXJjZW50XzUwJywKLSAgICAgICAgfSwgewotICAgICAgICAgIGlkOiAnZGVzY3Jp cHRpb24nLCBsYWJlbDogZ2V0dGV4dCgnQ29tbWVudCcpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAg ICAgICB0eXBlOiAnbXVsdGlsaW5lJywgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50 XzUwJywKLSAgICAgICAgfV0sCi0gICAgICB9KSwKICAgICB9KTsKICAgfQogCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mdHNfZGljdGlvbmFyaWVzL3N0YXRpYy9qcy9mdHNfZGljdGlvbmFyeS5qcyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0 c19kaWN0aW9uYXJpZXMvc3RhdGljL2pzL2Z0c19kaWN0aW9uYXJ5LmpzCmluZGV4IDVkNWJkM2E4 Zi4uMGVhNzQxMDM0IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfZGljdGlvbmFyaWVzL3N0YXRpYy9qcy9m dHNfZGljdGlvbmFyeS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfZGljdGlvbmFyaWVzL3N0YXRpYy9qcy9mdHNf ZGljdGlvbmFyeS5qcwpAQCAtODgsMzEgKzg4LDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuZnRz X2RpY3Rpb25hcnknLCBbCiAgICAgICAgICAgfQogICAgICAgICApOwogICAgICAgfSwKLQotICAg ICAgLy8gRGVmaW5pbmcgYmFja2Zvcm0gbW9kZWwgZm9yIEZUUyBEaWN0aW9uYXJ5IG5vZGUKLSAg ICAgIG1vZGVsOiBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoewotICAgICAgICBp ZEF0dHJpYnV0ZTogJ29pZCcsCi0gICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBh cmdzKSB7Ci0gICAgICAgICAgdmFyIGlzTmV3ID0gKF8uc2l6ZShhdHRycykgPT09IDApOwotICAg ICAgICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlwZS5pbml0aWFsaXplLmFw cGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0KLSAgICAgICAgICBpZiAoaXNOZXcpIHsKLSAgICAgICAg ICAgIHZhciB1c2VyID0gcGdCcm93c2VyLnNlcnZlckluZm9bYXJncy5ub2RlX2luZm8uc2VydmVy Ll9pZF0udXNlcjsKLSAgICAgICAgICAgIHRoaXMuc2V0KHsKLSAgICAgICAgICAgICAgJ293bmVy JzogdXNlci5uYW1lLAotICAgICAgICAgICAgICAnc2NoZW1hJzogYXJncy5ub2RlX2luZm8uc2No ZW1hLl9pZCwKLSAgICAgICAgICAgIH0sIHtzaWxlbnQ6IHRydWV9KTsKLSAgICAgICAgICB9Ci0g ICAgICAgIH0sCi0gICAgICAgIC8vIERlZmluaW5nIHNjaGVtYSBmb3IgZnRzIGRpY3Rpb25hcnkK LSAgICAgICAgc2NoZW1hOiBbewotICAgICAgICAgIGlkOiAnbmFtZScsIGxhYmVsOiBnZXR0ZXh0 KCdOYW1lJyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICd0ZXh0JywgY2VsbEhl YWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzUwJywKLSAgICAgICAgfSwgewotICAgICAgICAg IGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDogZ2V0dGV4dCgnQ29tbWVudCcpLCBjZWxsOiAnc3Ry aW5nJywKLSAgICAgICAgICB0eXBlOiAnbXVsdGlsaW5lJywgY2VsbEhlYWRlckNsYXNzZXM6ICd3 aWR0aF9wZXJjZW50XzUwJywKLSAgICAgICAgfV0sCi0gICAgICB9KSwKICAgICB9KTsKICAgfQog CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mdHNfcGFyc2Vycy9zdGF0aWMvanMvZnRzX3BhcnNlci5qcyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2Z0c19wYXJzZXJzL3N0YXRpYy9qcy9mdHNfcGFyc2VyLmpzCmluZGV4IDI3YTRjZTg3Zi4uYWQ1 NTc5ZDBkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfcGFyc2Vycy9zdGF0aWMvanMvZnRzX3BhcnNlci5q cworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mdHNfcGFyc2Vycy9zdGF0aWMvanMvZnRzX3BhcnNlci5qcwpAQCAtNzAsMTA4 ICs3MCw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmZ0c19wYXJzZXInLCBbCiAKICAgICAgIH0s CiAKLSAgICAgIC8vIERlZmluaW5nIGJhY2tmb3JtIG1vZGVsIGZvciBmdHMgcGFyc2VyIG5vZGUK LSAgICAgIG1vZGVsOiBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoewotICAgICAg ICBpZEF0dHJpYnV0ZTogJ29pZCcsCi0gICAgICAgIGRlZmF1bHRzOiB7Ci0gICAgICAgICAgbmFt ZTogdW5kZWZpbmVkLCAgICAgICAgICAvLyBGdHMgcGFyc2VyIG5hbWUKLSAgICAgICAgICBpc19z eXNfb2JqOiB1bmRlZmluZWQsICAvLyBJcyBzeXN0ZW0gb2JqZWN0Ci0gICAgICAgICAgZGVzY3Jp cHRpb246IHVuZGVmaW5lZCwgICAvLyBDb21tZW50IG9uIHBhcnNlcgotICAgICAgICB9LAotICAg ICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihhdHRycywgYXJncykgewotICAgICAgICAgIHZhciBp c05ldyA9IChfLnNpemUoYXR0cnMpID09PSAwKTsKLSAgICAgICAgICBwZ0FkbWluLkJyb3dzZXIu Tm9kZS5Nb2RlbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSgKLSAgICAgICAgICAgIHRoaXMs IGFyZ3VtZW50cwotICAgICAgICAgICk7Ci0gICAgICAgICAgaWYgKGlzTmV3KSB7Ci0gICAgICAg ICAgICB0aGlzLnNldCgnc2NoZW1hJywgYXJncy5ub2RlX2luZm8uc2NoZW1hLl9pZCk7Ci0gICAg ICAgICAgfQotICAgICAgICB9LAotICAgICAgICAvLyBEZWZpbmluZyBzY2hlbWEgZm9yIGZ0cyBw YXJzZXIKLSAgICAgICAgc2NoZW1hOiBbewotICAgICAgICAgIGlkOiAnbmFtZScsIGxhYmVsOiBn ZXR0ZXh0KCdOYW1lJyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICd0ZXh0Jywg Y2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzUwJywKLSAgICAgICAgfSx7Ci0gICAg ICAgICAgaWQ6ICdvaWQnLCBsYWJlbDogZ2V0dGV4dCgnT0lEJyksIGNlbGw6ICdzdHJpbmcnLAot ICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTogJ3RleHQnLCBtb2RlOlsncHJvcGVydGll cyddLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ2Rlc2NyaXB0aW9uJywgbGFiZWw6IGdl dHRleHQoJ0NvbW1lbnQnKSwgY2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgdHlwZTogJ211bHRp bGluZScsIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF81MCcsCi0gICAgICAgIH1d LAotCi0gICAgICAgIC8qCi0gICAgICAgICAqIFRyaWdnZXJzIGNvbnRyb2wgc3BlY2lmaWMgZXJy b3IgbWVzc2FnZXMgZm9yIHBhcnNlciBuYW1lLAotICAgICAgICAgKiBzdGFydCwgdG9rZW4sIGVu ZCwgbGV4dHlwZSBmdW5jdGlvbnMgYW5kIHNjaGVtYSwgaWYgYW55IG9uZSBvZiB0aGVtIGlzIG5v dCBzcGVjaWZpZWQKLSAgICAgICAgICogd2hpbGUgY3JlYXRpbmcgbmV3IGZ0cyBwYXJzZXIKLSAg ICAgICAgICovCi0gICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICB2YXIg bmFtZSA9IHRoaXMuZ2V0KCduYW1lJyksCi0gICAgICAgICAgICBzdGFydCA9IHRoaXMuZ2V0KCdw cnNzdGFydCcpLAotICAgICAgICAgICAgdG9rZW4gPSB0aGlzLmdldCgncHJzdG9rZW4nKSwKLSAg ICAgICAgICAgIGVuZCA9IHRoaXMuZ2V0KCdwcnNlbmQnKSwKLSAgICAgICAgICAgIGxleHR5cGUg PSB0aGlzLmdldCgncHJzbGV4dHlwZScpLAotICAgICAgICAgICAgc2NoZW1hID0gdGhpcy5nZXQo J3NjaGVtYScpLAotICAgICAgICAgICAgbXNnOwotCi0gICAgICAgICAgLy8gVmFsaWRhdGUgZnRz IHBhcnNlciBuYW1lCi0gICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQobmFtZSkgfHwKLSAgICAg ICAgICAgICAgICBfLmlzTnVsbChuYW1lKSB8fAotICAgICAgICAgICAgICAgIFN0cmluZyhuYW1l KS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7Ci0gICAgICAgICAgICBtc2cgPSBn ZXR0ZXh0KCdOYW1lIG11c3QgYmUgc3BlY2lmaWVkLicpOwotICAgICAgICAgICAgdGhpcy5lcnJv ck1vZGVsLnNldCgnbmFtZScsIG1zZyk7Ci0gICAgICAgICAgICByZXR1cm4gbXNnOwotICAgICAg ICAgIH0KLQotICAgICAgICAgIC8vIFZhbGlkYXRlIHN0YXJ0IGZ1bmN0aW9uIGNvbnRyb2wKLSAg ICAgICAgICBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKHN0YXJ0KSB8fAotICAgICAgICAgICAgICAg ICAgICBfLmlzTnVsbChzdGFydCkgfHwKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nKHN0YXJ0 KS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7Ci0gICAgICAgICAgICBtc2cgPSBn ZXR0ZXh0KCdTdGFydCBmdW5jdGlvbiBtdXN0IGJlIHNlbGVjdGVkLicpOwotICAgICAgICAgICAg dGhpcy5lcnJvck1vZGVsLnNldCgncHJzc3RhcnQnLCBtc2cpOwotICAgICAgICAgICAgcmV0dXJu IG1zZzsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICAvLyBWYWxpZGF0ZSBnZXR0b2tlbiBmdW5j dGlvbiBjb250cm9sCi0gICAgICAgICAgZWxzZSBpZiAoXy5pc1VuZGVmaW5lZCh0b2tlbikgfHwK LSAgICAgICAgICAgICAgICAgICAgXy5pc051bGwodG9rZW4pIHx8Ci0gICAgICAgICAgICAgICAg ICAgIFN0cmluZyh0b2tlbikucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewotICAg ICAgICAgICAgbXNnID0gZ2V0dGV4dCgnR2V0IG5leHQgdG9rZW4gZnVuY3Rpb24gbXVzdCBiZSBz ZWxlY3RlZC4nKTsKLSAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3Byc3Rva2VuJywg bXNnKTsKLSAgICAgICAgICAgIHJldHVybiBtc2c7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAg Ly8gVmFsaWRhdGUgZW5kIGZ1bmN0aW9uIGNvbnRyb2wKLSAgICAgICAgICBlbHNlIGlmIChfLmlz VW5kZWZpbmVkKGVuZCkgfHwKLSAgICAgICAgICAgICAgICAgICAgXy5pc051bGwoZW5kKSB8fAot ICAgICAgICAgICAgICAgICAgICBTdHJpbmcoZW5kKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycp ID09ICcnKSB7Ci0gICAgICAgICAgICBtc2cgPSBnZXR0ZXh0KCdFbmQgZnVuY3Rpb24gbXVzdCBi ZSBzZWxlY3RlZC4nKTsKLSAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3Byc2VuZCcs IG1zZyk7Ci0gICAgICAgICAgICByZXR1cm4gbXNnOwotICAgICAgICAgIH0KLQotICAgICAgICAg IC8vIFZhbGlkYXRlIGxleHR5cGUgZnVuY3Rpb24gY29udHJvbAotICAgICAgICAgIGVsc2UgaWYg KF8uaXNVbmRlZmluZWQobGV4dHlwZSkgfHwKLSAgICAgICAgICAgICAgICAgICAgXy5pc051bGwo bGV4dHlwZSkgfHwKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nKGxleHR5cGUpLnJlcGxhY2Uo L15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKLSAgICAgICAgICAgIG1zZyA9IGdldHRleHQoJ0xl eHR5cGUgZnVuY3Rpb24gbXVzdCBiZSBzZWxlY3RlZC4nKTsKLSAgICAgICAgICAgIHRoaXMuZXJy b3JNb2RlbC5zZXQoJ3Byc2xleHR5cGUnLCBtc2cpOwotICAgICAgICAgICAgcmV0dXJuIG1zZzsK LSAgICAgICAgICB9Ci0KLSAgICAgICAgICAvLyBWYWxpZGF0ZSBzY2hlbWEgZm9yIGZ0cyBwYXJz ZXIKLSAgICAgICAgICBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKHNjaGVtYSkgfHwKLSAgICAgICAg ICAgICAgICAgICAgXy5pc051bGwoc2NoZW1hKSB8fAotICAgICAgICAgICAgICAgICAgICBTdHJp bmcoc2NoZW1hKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7Ci0gICAgICAgICAg ICBtc2cgPSBnZXR0ZXh0KCdTY2hlbWEgbXVzdCBiZSBzZWxlY3RlZC4nKTsKLSAgICAgICAgICAg IHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3NjaGVtYScsIG1zZyk7Ci0gICAgICAgICAgICByZXR1cm4g bXNnOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigp OwotCi0gICAgICAgICAgdGhpcy50cmlnZ2VyKCdvbi1zdGF0dXMtY2xlYXInKTsKLSAgICAgICAg ICByZXR1cm4gbnVsbDsKLSAgICAgICAgfSwKLSAgICAgIH0pLAogICAgICAgZ2V0U2NoZW1hOiAo dHJlZU5vZGVJbmZvLCBpdGVtTm9kZURhdGEpID0+IHsKICAgICAgICAgbGV0IG5vZGVPYmogPSBw Z0FkbWluLkJyb3dzZXIuTm9kZXNbJ2Z0c19wYXJzZXInXTsKICAgICAgICAgcmV0dXJuIG5ldyBG VFNQYXJzZXJTY2hlbWEoCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfdGVtcGxhdGVzL3N0YXRpYy9qcy9m dHNfdGVtcGxhdGUuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfdGVtcGxhdGVzL3N0YXRpYy9qcy9mdHNfdGVtcGxhdGUu anMKaW5kZXggNzkxYWRiMmY5Li41MzIwMjQ2ZjMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c190ZW1wbGF0 ZXMvc3RhdGljL2pzL2Z0c190ZW1wbGF0ZS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfdGVtcGxhdGVzL3N0YXRp Yy9qcy9mdHNfdGVtcGxhdGUuanMKQEAgLTcwLDY1ICs3MCw2IEBAIGRlZmluZSgncGdhZG1pbi5u b2RlLmZ0c190ZW1wbGF0ZScsIFsKIAogICAgICAgfSwKIAotICAgICAgLy8gRGVmaW5pbmcgYmFj a2Zvcm0gbW9kZWwgZm9yIGZ0cyB0ZW1wbGF0ZSBub2RlCi0gICAgICBtb2RlbDogcGdBZG1pbi5C cm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKLSAgICAgICAgaWRBdHRyaWJ1dGU6ICdvaWQnLAot ICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihhdHRycywgYXJncykgewotICAgICAgICAgIHZh ciBpc05ldyA9IChfLnNpemUoYXR0cnMpID09PSAwKTsKLSAgICAgICAgICBwZ0FkbWluLkJyb3dz ZXIuTm9kZS5Nb2RlbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMp OwotICAgICAgICAgIGlmIChpc05ldykgewotICAgICAgICAgICAgdGhpcy5zZXQoJ3NjaGVtYScs IGFyZ3Mubm9kZV9pbmZvLnNjaGVtYS5faWQpOwotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAg ICAgICAgLy8gRGVmaW5pbmcgc2NoZW1hIGZvciBmdHMgdGVtcGxhdGUKLSAgICAgICAgc2NoZW1h OiBbewotICAgICAgICAgIGlkOiAnbmFtZScsIGxhYmVsOiBnZXR0ZXh0KCdOYW1lJyksIGNlbGw6 ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICd0ZXh0JywgY2VsbEhlYWRlckNsYXNzZXM6ICd3 aWR0aF9wZXJjZW50XzUwJywKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdvaWQnLCBsYWJl bDogZ2V0dGV4dCgnT0lEJyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIGVkaXRhYmxlOiBm YWxzZSwgdHlwZTogJ3RleHQnLCBtb2RlOlsncHJvcGVydGllcyddLAotICAgICAgICB9LHsKLSAg ICAgICAgICBpZDogJ2Rlc2NyaXB0aW9uJywgbGFiZWw6IGdldHRleHQoJ0NvbW1lbnQnKSwgY2Vs bDogJ3N0cmluZycsCi0gICAgICAgICAgdHlwZTogJ211bHRpbGluZScsIGNlbGxIZWFkZXJDbGFz c2VzOiAnd2lkdGhfcGVyY2VudF81MCcsCi0gICAgICAgIH1dLAotCi0gICAgICAgIC8qCi0gICAg ICAgICAqIFRyaWdnZXJzIGNvbnRyb2wgc3BlY2lmaWMgZXJyb3IgbWVzc2FnZXMgZm9yIHRlbXBs YXRlIG5hbWUsCi0gICAgICAgICAqIGxleGl6ZSBmdW5jdGlvbiBhbmQgc2NoZW1hLCBpZiBhbnkg b25lIG9mIHRoZW0gaXMgbm90IHNwZWNpZmllZAotICAgICAgICAgKiB3aGlsZSBjcmVhdGluZyBu ZXcgZnRzIHRlbXBsYXRlCi0gICAgICAgICAqLwotICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24o KSB7Ci0gICAgICAgICAgdmFyIG5hbWUgPSB0aGlzLmdldCgnbmFtZScpLAotICAgICAgICAgICAg bGV4aXplID0gdGhpcy5nZXQoJ3RtcGxsZXhpemUnKSwKLSAgICAgICAgICAgIHNjaGVtYSA9IHRo aXMuZ2V0KCdzY2hlbWEnKSwKLSAgICAgICAgICAgIG1zZzsKLQotICAgICAgICAgIC8vIFZhbGlk YXRlIGZ0cyB0ZW1wbGF0ZSBuYW1lCi0gICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQobmFtZSkg fHwgXy5pc051bGwobmFtZSkgfHwgU3RyaW5nKG5hbWUpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAn JykgPT0gJycpIHsKLSAgICAgICAgICAgIG1zZyA9IGdldHRleHQoJ05hbWUgbXVzdCBiZSBzcGVj aWZpZWQuJyk7Ci0gICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCduYW1lJywgbXNnKTsK LSAgICAgICAgICAgIHJldHVybiBtc2c7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgLy8gVmFs aWRhdGUgbGV4aXplIGZ1bmN0aW9uIGNvbnRyb2wKLSAgICAgICAgICBlbHNlIGlmIChfLmlzVW5k ZWZpbmVkKGxleGl6ZSkgfHwgXy5pc051bGwobGV4aXplKSB8fCBTdHJpbmcobGV4aXplKS5yZXBs YWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7Ci0gICAgICAgICAgICBtc2cgPSBnZXR0ZXh0 KCdMZXhpemUgZnVuY3Rpb24gbXVzdCBiZSBzZWxlY3RlZC4nKTsKLSAgICAgICAgICAgIHRoaXMu ZXJyb3JNb2RlbC5zZXQoJ3RtcGxsZXhpemUnLCBtc2cpOwotICAgICAgICAgICAgcmV0dXJuIG1z ZzsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICAvLyBWYWxpZGF0ZSBzY2hlbWEgZm9yIGZ0cyB0 ZW1wbGF0ZQotICAgICAgICAgIGVsc2UgaWYgKF8uaXNVbmRlZmluZWQoc2NoZW1hKSB8fCBfLmlz TnVsbChzY2hlbWEpIHx8IFN0cmluZyhzY2hlbWEpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykg PT0gJycpIHsKLSAgICAgICAgICAgIG1zZyA9IGdldHRleHQoJ1NjaGVtYSBtdXN0IGJlIHNlbGVj dGVkLicpOwotICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnc2NoZW1hJywgbXNnKTsK LSAgICAgICAgICAgIHJldHVybiBtc2c7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgdGhp cy5lcnJvck1vZGVsLmNsZWFyKCk7Ci0KLSAgICAgICAgICB0aGlzLnRyaWdnZXIoJ29uLXN0YXR1 cy1jbGVhcicpOwotICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9LAotICAgICAgfSks CiAgICAgICBnZXRTY2hlbWE6ICh0cmVlTm9kZUluZm8sIGl0ZW1Ob2RlRGF0YSkgPT4gewogICAg ICAgICBsZXQgbm9kZU9iaiA9IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snZnRzX3RlbXBsYXRlJ107 CiAgICAgICAgIHJldHVybiBuZXcgRlRTVGVtcGxhdGVTY2hlbWEoCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m dW5jdGlvbnMvc3RhdGljL2pzL2Z1bmN0aW9uLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0YXRpYy9qcy9m dW5jdGlvbi5qcwppbmRleCA0MTE3MWM2MmEuLmI5MTA3ZDk4ZiAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVu Y3Rpb25zL3N0YXRpYy9qcy9mdW5jdGlvbi5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvc3RhdGljL2pz L2Z1bmN0aW9uLmpzCkBAIC0xMSw3ICsxMSw2IEBAIGltcG9ydCB7IGdldE5vZGVBamF4T3B0aW9u cywgZ2V0Tm9kZUxpc3RCeU5hbWUsIGdldE5vZGVMaXN0QnlJZH0gZnJvbSAnLi4vLi4vLi4vCiBp bXBvcnQgRnVuY3Rpb25TY2hlbWEgZnJvbSAnLi9mdW5jdGlvbi51aSc7CiBpbXBvcnQgeyBnZXRO b2RlUHJpdmlsZWdlUm9sZVNjaGVtYSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9w cml2aWxlZ2UudWknOwogaW1wb3J0IHsgZ2V0Tm9kZVZhcmlhYmxlU2NoZW1hIH0gZnJvbSAnLi4v Li4vLi4vLi4vLi4vc3RhdGljL2pzL3ZhcmlhYmxlLnVpJzsKLWltcG9ydCBfIGZyb20gJ2xvZGFz aCc7CiAKIC8qIENyZWF0ZSBhbmQgUmVnaXN0ZXIgRnVuY3Rpb24gQ29sbGVjdGlvbiBhbmQgTm9k ZS4gKi8KIGRlZmluZSgncGdhZG1pbi5ub2RlLmZ1bmN0aW9uJywgWwpAQCAtMTA5LDQ0ICsxMDgs NyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdW5jdGlvbicsIFsKICAgICAgICAgICB9CiAgICAg ICAgICk7CiAgICAgICB9LAotICAgICAgbW9kZWw6IHBnQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVu ZCh7Ci0gICAgICAgIGlkQXR0cmlidXRlOiAnb2lkJywKLSAgICAgICAgaW5pdGlhbGl6ZTogZnVu Y3Rpb24oYXR0cnMsIGFyZ3MpIHsKLSAgICAgICAgICB2YXIgaXNOZXcgPSAoXy5zaXplKGF0dHJz KSA9PT0gMCk7Ci0gICAgICAgICAgaWYgKGlzTmV3KSB7Ci0gICAgICAgICAgICAvLyBTZXQgU2Vs ZWN0ZWQgU2NoZW1hCi0gICAgICAgICAgICB2YXIgc2NoZW1hX2lkID0gYXJncy5ub2RlX2luZm8u c2NoZW1hLl9pZDsKLSAgICAgICAgICAgIHRoaXMuc2V0KHsncHJvbmFtZXNwYWNlJzogc2NoZW1h X2lkfSwge3NpbGVudDogdHJ1ZX0pOwotCi0gICAgICAgICAgICAvLyBTZXQgQ3VycmVudCBVc2Vy Ci0gICAgICAgICAgICB2YXIgdXNlckluZm8gPSBwZ0Jyb3dzZXIuc2VydmVySW5mb1thcmdzLm5v ZGVfaW5mby5zZXJ2ZXIuX2lkXS51c2VyOwotICAgICAgICAgICAgdGhpcy5zZXQoeydmdW5jb3du ZXInOiB1c2VySW5mby5uYW1lfSwge3NpbGVudDogdHJ1ZX0pOwotICAgICAgICAgIH0KLSAgICAg ICAgICBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlz LCBhcmd1bWVudHMpOwotICAgICAgICB9LAotICAgICAgICBzY2hlbWE6IFt7Ci0gICAgICAgICAg aWQ6ICduYW1lJywgbGFiZWw6IGdldHRleHQoJ05hbWUnKSwgY2VsbDogJ3N0cmluZycsCi0gICAg ICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQn XSwKLSAgICAgICAgICBkaXNhYmxlZDogJ2lzRGlzYWJsZWQnLAotICAgICAgICB9LHsKLSAgICAg ICAgICBpZDogJ29pZCcsIGxhYmVsOiBnZXR0ZXh0KCdPSUQnKSwgY2VsbDogJ3N0cmluZycsCi0g ICAgICAgICAgdHlwZTogJ3RleHQnICwgbW9kZTogWydwcm9wZXJ0aWVzJ10sCi0gICAgICAgIH0s ewotICAgICAgICAgIGlkOiAnZnVuY293bmVyJywgbGFiZWw6IGdldHRleHQoJ093bmVyJyksIGNl bGw6ICdzdHJpbmcnLAotICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLk5vZGVMaXN0QnlOYW1l Q29udHJvbCwgbm9kZTogJ3JvbGUnLCAgdHlwZToKLSAgICAgICAgICAndGV4dCcsIGRpc2FibGVk OiAnaXNEaXNhYmxlZCcsCi0gICAgICAgIH0sewotICAgICAgICAgIGlkOiAncHJvbmFtZXNwYWNl JywgbGFiZWw6IGdldHRleHQoJ1NjaGVtYScpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICBj b250cm9sOiAnbm9kZS1saXN0LWJ5LWlkJywgdHlwZTogJ3RleHQnLCBjYWNoZV9sZXZlbDogJ2Rh dGFiYXNlJywKLSAgICAgICAgICBub2RlOiAnc2NoZW1hJywgZGlzYWJsZWQ6ICdpc0Rpc2FibGVk JywgbW9kZTogWydjcmVhdGUnLCAnZWRpdCddLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDog J2Rlc2NyaXB0aW9uJywgbGFiZWw6IGdldHRleHQoJ0NvbW1lbnQnKSwgY2VsbDogJ3N0cmluZycs Ci0gICAgICAgICAgdHlwZTogJ211bHRpbGluZScsIGRpc2FibGVkOiAnaXNEaXNhYmxlZCcsCi0g ICAgICAgIH1dLAotICAgICAgfSksCiAgICAgfSk7Ci0KICAgfQotCiAgIHJldHVybiBwZ0Jyb3dz ZXIuTm9kZXNbJ2Z1bmN0aW9uJ107CiB9KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy9zdGF0 aWMvanMvcHJvY2VkdXJlLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0YXRpYy9qcy9wcm9jZWR1cmUuanMK aW5kZXggMWI2YjYxODYzLi43Y2JjZGM5MDcgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy9zdGF0 aWMvanMvcHJvY2VkdXJlLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy9zdGF0aWMvanMvcHJvY2VkdXJl LmpzCkBAIC0xMSw3ICsxMSw2IEBAIGltcG9ydCB7IGdldE5vZGVBamF4T3B0aW9ucywgZ2V0Tm9k ZUxpc3RCeU5hbWUsIGdldE5vZGVMaXN0QnlJZH0gZnJvbSAnLi4vLi4vLi4vCiBpbXBvcnQgRnVu Y3Rpb25TY2hlbWEgZnJvbSAnLi9mdW5jdGlvbi51aSc7CiBpbXBvcnQgeyBnZXROb2RlUHJpdmls ZWdlUm9sZVNjaGVtYSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9wcml2aWxlZ2Uu dWknOwogaW1wb3J0IHsgZ2V0Tm9kZVZhcmlhYmxlU2NoZW1hIH0gZnJvbSAnLi4vLi4vLi4vLi4v Li4vc3RhdGljL2pzL3ZhcmlhYmxlLnVpJzsKLWltcG9ydCBfIGZyb20gJ2xvZGFzaCc7CiAKIC8q IENyZWF0ZSBhbmQgUmVnaXN0ZXIgUHJvY2VkdXJlIENvbGxlY3Rpb24gYW5kIE5vZGUuICovCiBk ZWZpbmUoJ3BnYWRtaW4ubm9kZS5wcm9jZWR1cmUnLCBbCkBAIC0xMjYsMTI2ICsxMjUsNiBAQCBk ZWZpbmUoJ3BnYWRtaW4ubm9kZS5wcm9jZWR1cmUnLCBbCiAgICAgICAgICk7CiAgICAgICB9LAog Ci0gICAgICBtb2RlbDogRnVuY3Rpb24ubW9kZWwuZXh0ZW5kKHsKLSAgICAgICAgZGVmYXVsdHM6 IF8uZXh0ZW5kKHt9LAotICAgICAgICAgIEZ1bmN0aW9uLm1vZGVsLnByb3RvdHlwZS5kZWZhdWx0 cywKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBsYW5uYW1lOiAnZWRic3BsJywKLSAgICAgICAg ICB9Ci0gICAgICAgICksCi0gICAgICAgIGNhblZhckFkZDogZnVuY3Rpb24oKSB7Ci0gICAgICAg ICAgdmFyIHNlcnZlciA9IHRoaXMubm9kZV9pbmZvLnNlcnZlcjsKLSAgICAgICAgICByZXR1cm4g c2VydmVyLnZlcnNpb24gPj0gOTA1MDA7Ci0gICAgICAgIH0sCi0gICAgICAgIGlzVmlzaWJsZTog ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAnc3lzZnVuYycpIHsgcmV0 dXJuIGZhbHNlOyB9Ci0gICAgICAgICAgZWxzZSBpZiAodGhpcy5uYW1lID09ICdzeXNwcm9jJykg eyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfSwKLSAg ICAgICAgaXNEaXNhYmxlZDogZnVuY3Rpb24obSkgewotICAgICAgICAgIGlmKHRoaXMubm9kZV9p bmZvICYmICAnY2F0YWxvZycgaW4gdGhpcy5ub2RlX2luZm8pIHsKLSAgICAgICAgICAgIHJldHVy biB0cnVlOwotICAgICAgICAgIH0KLSAgICAgICAgICBzd2l0Y2godGhpcy5uYW1lKXsKLSAgICAg ICAgICBjYXNlICdwcm92b2xhdGlsZSc6Ci0gICAgICAgICAgY2FzZSAncHJvaXNzdHJpY3QnOgot ICAgICAgICAgIGNhc2UgJ3Byb2Nvc3QnOgotICAgICAgICAgIGNhc2UgJ3Byb2xlYWtwcm9vZic6 Ci0gICAgICAgICAgICBpZih0aGlzLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbiA8IDkwNTAwIHx8 Ci0gICAgICAgICAgICAgIHRoaXMubm9kZV9pbmZvLnNlcnZlci5zZXJ2ZXJfdHlwZSAhPSAncHBh cycgfHwKLSAgICAgICAgICAgICAgbS5nZXQoJ2xhbm5hbWUnKSAhPSAnZWRic3BsJykgewotCi0g ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgbS5z ZXQoJ3Byb3ZvbGF0aWxlJywgbnVsbCk7Ci0gICAgICAgICAgICAgICAgbS5zZXQoJ3Byb2lzc3Ry aWN0JywgZmFsc2UpOwotICAgICAgICAgICAgICAgIG0uc2V0KCdwcm9jb3N0JywgbnVsbCk7Ci0g ICAgICAgICAgICAgICAgbS5zZXQoJ3Byb2xlYWtwcm9vZicsIGZhbHNlKTsKLSAgICAgICAgICAg ICAgfSwgMTApOwotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAg ICAgICAgICAgIGVsc2V7Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg IH0KLSAgICAgICAgICBjYXNlICd2YXJpYWJsZXMnOgotICAgICAgICAgIGNhc2UgJ3Byb3NlY2Rl Zic6Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24gPCA5 MDUwMDsKLSAgICAgICAgICBjYXNlICdwcm9yb3dzJzoKLSAgICAgICAgICAgIHZhciBzZXJ2ZXIg PSB0aGlzLm5vZGVfaW5mby5zZXJ2ZXI7Ci0gICAgICAgICAgICByZXR1cm4gIShzZXJ2ZXIudmVy c2lvbiA+PSA5MDUwMCAmJiBtLmdldCgncHJvcmV0c2V0JykgPT0gdHJ1ZSk7Ci0gICAgICAgICAg Y2FzZSAncHJvcGFyYWxsZWwnOgotICAgICAgICAgICAgaWYgKHRoaXMubm9kZV9pbmZvLnNlcnZl ci52ZXJzaW9uIDwgOTA2MDAgfHwKLSAgICAgICAgICAgICAgdGhpcy5ub2RlX2luZm8uc2VydmVy LnNlcnZlcl90eXBlICE9ICdwcGFzJyB8fAotICAgICAgICAgICAgICBtLmdldCgnbGFubmFtZScp ICE9ICdlZGJzcGwnKSB7Ci0gICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0g ICAgICAgICAgICAgICAgbS5zZXQoJ3Byb3BhcmFsbGVsJywgbnVsbCk7Ci0gICAgICAgICAgICAg IH0sIDEwKTsKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAg ICAgICAgICBlbHNlewotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9 Ci0gICAgICAgICAgY2FzZSAnbGFubmFtZSc6Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5ub2Rl X2luZm8uc2VydmVyLnZlcnNpb24gPCAxMTAwMDA7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIHZh bGlkYXRlOiBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICB2YXIgZXJyID0ge30sCi0g ICAgICAgICAgICBlcnJtc2csCi0gICAgICAgICAgICBzZWNsYWJlbHMgPSB0aGlzLmdldCgnc2Vj bGFiZWxzJyk7Ci0KLSAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnbmFtZScp KSB8fCBTdHJpbmcodGhpcy5nZXQoJ25hbWUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9 PSAnJykgewotICAgICAgICAgICAgZXJyWyduYW1lJ10gPSBnZXR0ZXh0KCdOYW1lIGNhbm5vdCBi ZSBlbXB0eS4nKTsKLSAgICAgICAgICAgIGVycm1zZyA9IGVyclsnbmFtZSddOwotICAgICAgICAg IH0KLQotICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdwcm9uYW1lc3BhY2Un KSkgfHwgU3RyaW5nKHRoaXMuZ2V0KCdwcm9uYW1lc3BhY2UnKSkucmVwbGFjZSgvXlxzK3xccysk L2csICcnKSA9PSAnJykgewotICAgICAgICAgICAgZXJyWydwcm9uYW1lc3BhY2UnXSA9IGdldHRl eHQoJ1NjaGVtYSBjYW5ub3QgYmUgZW1wdHkuJyk7Ci0gICAgICAgICAgICBlcnJtc2cgPSBlcnJt c2cgfHwgZXJyWydwcm9uYW1lc3BhY2UnXTsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBpZiAo Xy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnbGFubmFtZScpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ2xh bm5hbWUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewotICAgICAgICAgICAg ZXJyWydsYW5uYW1lJ10gPSBnZXR0ZXh0KCdMYW5ndWFnZSBjYW5ub3QgYmUgZW1wdHkuJyk7Ci0g ICAgICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWydsYW5uYW1lJ107Ci0gICAgICAgICAg fQotCi0gICAgICAgICAgaWYgKFN0cmluZyh0aGlzLmdldCgnbGFubmFtZScpKSA9PSAnYycpIHsK LSAgICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdwcm9iaW4nKSkgfHwgU3Ry aW5nKHRoaXMuZ2V0KCdwcm9iaW4nKSkKLSAgICAgICAgICAgICAgLnJlcGxhY2UoL15ccyt8XHMr JC9nLCAnJykgPT0gJycpIHsKLSAgICAgICAgICAgICAgZXJyWydwcm9iaW4nXSA9IGdldHRleHQo J09iamVjdCBGaWxlIGNhbm5vdCBiZSBlbXB0eS4nKTsKLSAgICAgICAgICAgICAgZXJybXNnID0g ZXJybXNnIHx8IGVyclsncHJvYmluJ107Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlm IChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdwcm9zcmNfYycpKSB8fCBTdHJpbmcodGhpcy5nZXQo J3Byb3NyY19jJykpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKLSAgICAgICAg ICAgICAgZXJyWydwcm9zcmNfYyddID0gZ2V0dGV4dCgnTGluayBTeW1ib2wgY2Fubm90IGJlIGVt cHR5LicpOwotICAgICAgICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWydwcm9zcmNfYydd OwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAg ICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdwcm9zcmMnKSkgfHwgU3RyaW5nKHRoaXMu Z2V0KCdwcm9zcmMnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewotICAgICAg ICAgICAgICBlcnJbJ3Byb3NyYyddID0gZ2V0dGV4dCgnQ29kZSBjYW5ub3QgYmUgZW1wdHkuJyk7 Ci0gICAgICAgICAgICAgIGVycm1zZyA9IGVycm1zZyB8fCBlcnJbJ3Byb3NyYyddOwotICAgICAg ICAgICAgfQotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmIChzZWNsYWJlbHMpIHsKLSAgICAg ICAgICAgIHZhciBzZWNMYWJlbHNFcnI7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8 IHNlY2xhYmVscy5tb2RlbHMubGVuZ3RoICYmICFzZWNMYWJlbHNFcnI7IGkrKykgewotICAgICAg ICAgICAgICBzZWNMYWJlbHNFcnIgPSAoc2VjbGFiZWxzLm1vZGVsc1tpXSkudmFsaWRhdGUuYXBw bHkoc2VjbGFiZWxzLm1vZGVsc1tpXSk7Ci0gICAgICAgICAgICAgIGlmIChzZWNMYWJlbHNFcnIp IHsKLSAgICAgICAgICAgICAgICBlcnJbJ3NlY2xhYmVscyddID0gc2VjTGFiZWxzRXJyOwotICAg ICAgICAgICAgICAgIGVycm1zZyA9IGVycm1zZyB8fCBzZWNMYWJlbHNFcnI7Ci0gICAgICAgICAg ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0KLSAgICAgICAgICB0aGlzLmVycm9y TW9kZWwuY2xlYXIoKS5zZXQoZXJyKTsKLQotICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAg ICB9LAotICAgICAgfSksCiAgICAgfSk7CiAKICAgfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25z L3N0YXRpYy9qcy90cmlnZ2VyX2Z1bmN0aW9uLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0YXRpYy9qcy90 cmlnZ2VyX2Z1bmN0aW9uLmpzCmluZGV4IGVjMGI5ZjJjNS4uMWVlZDhlOGJmIDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mdW5jdGlvbnMvc3RhdGljL2pzL3RyaWdnZXJfZnVuY3Rpb24uanMKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVu Y3Rpb25zL3N0YXRpYy9qcy90cmlnZ2VyX2Z1bmN0aW9uLmpzCkBAIC0xMDcsMTUxICsxMDcsNiBA QCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50cmlnZ2VyX2Z1bmN0aW9uJywgWwogICAgICAgICAgIH0K ICAgICAgICAgKTsKICAgICAgIH0sCi0gICAgICBtb2RlbDogcGdCcm93c2VyLk5vZGUuTW9kZWwu ZXh0ZW5kKHsKLSAgICAgICAgaWRBdHRyaWJ1dGU6ICdvaWQnLAotICAgICAgICBpbml0aWFsaXpl OiBmdW5jdGlvbihhdHRycywgYXJncykgewotICAgICAgICAgIHZhciBpc05ldyA9IChfLnNpemUo YXR0cnMpID09PSAwKTsKLSAgICAgICAgICBpZiAoaXNOZXcpIHsKLSAgICAgICAgICAgIC8vIFNl dCBTZWxlY3RlZCBTY2hlbWEKLSAgICAgICAgICAgIHZhciBzY2hlbWFfaWQgPSBhcmdzLm5vZGVf aW5mby5zY2hlbWEuX2lkOwotICAgICAgICAgICAgdGhpcy5zZXQoeydwcm9uYW1lc3BhY2UnOiBz Y2hlbWFfaWR9LCB7c2lsZW50OiB0cnVlfSk7Ci0KLSAgICAgICAgICAgIC8vIFNldCBDdXJyZW50 IFVzZXIKLSAgICAgICAgICAgIHZhciB1c2VySW5mbyA9IHBnQnJvd3Nlci5zZXJ2ZXJJbmZvW2Fy Z3Mubm9kZV9pbmZvLnNlcnZlci5faWRdLnVzZXI7Ci0gICAgICAgICAgICB0aGlzLnNldCh7J2Z1 bmNvd25lcic6IHVzZXJJbmZvLm5hbWV9LCB7c2lsZW50OiB0cnVlfSk7Ci0gICAgICAgICAgfQot ICAgICAgICAgIHBnQnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5 KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICAgIH0sCi0gICAgICAgIGRlZmF1bHRzOiB7Ci0gICAg ICAgICAgbmFtZTogdW5kZWZpbmVkLAotICAgICAgICAgIG9pZDogdW5kZWZpbmVkLAotICAgICAg ICAgIGZ1bmNvd25lcjogdW5kZWZpbmVkLAotICAgICAgICAgIGRlc2NyaXB0aW9uOiB1bmRlZmlu ZWQsCi0gICAgICAgIH0sCi0gICAgICAgIHNjaGVtYTogW3sKLSAgICAgICAgICBpZDogJ25hbWUn LCBsYWJlbDogZ2V0dGV4dCgnTmFtZScpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBl OiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLAotICAgICAg ICAgIGRpc2FibGVkOiAnaXNEaXNhYmxlZCcsIHJlYWRvbmx5OiAnaXNSZWFkb25seScsCi0gICAg ICAgIH0sewotICAgICAgICAgIGlkOiAnb2lkJywgbGFiZWw6IGdldHRleHQoJ09JRCcpLCBjZWxs OiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBlOiAndGV4dCcgLCBtb2RlOiBbJ3Byb3BlcnRpZXMn XSwKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdmdW5jb3duZXInLCBsYWJlbDogZ2V0dGV4 dCgnT3duZXInKSwgY2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgY29udHJvbDogQmFja2Zvcm0u Tm9kZUxpc3RCeU5hbWVDb250cm9sLCBub2RlOiAncm9sZScsICB0eXBlOgotICAgICAgICAgICd0 ZXh0JywgZGlzYWJsZWQ6ICdpc0Rpc2FibGVkJywgcmVhZG9ubHk6ICdpc1JlYWRvbmx5JywKLSAg ICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdkZXNjcmlwdGlvbicsIGxhYmVsOiBnZXR0ZXh0KCdD b21tZW50JyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICdtdWx0aWxpbmUnLCBk aXNhYmxlZDogJ2lzRGlzYWJsZWQnLCByZWFkb25seTogJ2lzUmVhZG9ubHknLAotICAgICAgICB9 XSwKLSAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKGtleXMpCi0gICAgICAgIHsKLSAgICAgICAg ICB2YXIgZXJyID0ge30sCi0gICAgICAgICAgICBlcnJtc2csCi0gICAgICAgICAgICBzZWNsYWJl bHMgPSB0aGlzLmdldCgnc2VjbGFiZWxzJyk7Ci0KLSAgICAgICAgICAvLyBOb3RoaW5nIHRvIHZh bGlkYXRlCi0gICAgICAgICAgaWYoa2V5cyAmJiBrZXlzLmxlbmd0aCA9PSAwKSB7Ci0gICAgICAg ICAgICB0aGlzLmVycm9yTW9kZWwuY2xlYXIoKTsKLSAgICAgICAgICAgIHJldHVybiBudWxsOwot ICAgICAgICAgIH0KLQotICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCduYW1l JykpIHx8IFN0cmluZyh0aGlzLmdldCgnbmFtZScpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycp ID09ICcnKSB7Ci0gICAgICAgICAgICBlcnJbJ25hbWUnXSA9IGdldHRleHQoJ05hbWUgY2Fubm90 IGJlIGVtcHR5LicpOwotICAgICAgICAgICAgZXJybXNnID0gZXJyWyduYW1lJ107Ci0gICAgICAg ICAgfQotCi0gICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ2Z1bmNvd25lcicp KSB8fCBTdHJpbmcodGhpcy5nZXQoJ2Z1bmNvd25lcicpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywg JycpID09ICcnKSB7Ci0gICAgICAgICAgICBlcnJbJ2Z1bmNvd25lciddID0gZ2V0dGV4dCgnT3du ZXIgY2Fubm90IGJlIGVtcHR5LicpOwotICAgICAgICAgICAgZXJybXNnID0gZXJybXNnIHx8IGVy clsnZnVuY293bmVyJ107Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgaWYgKF8uaXNVbmRlZmlu ZWQodGhpcy5nZXQoJ3Byb25hbWVzcGFjZScpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ3Byb25hbWVz cGFjZScpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7Ci0gICAgICAgICAgICBl cnJbJ3Byb25hbWVzcGFjZSddID0gZ2V0dGV4dCgnU2NoZW1hIGNhbm5vdCBiZSBlbXB0eS4nKTsK LSAgICAgICAgICAgIGVycm1zZyA9IGVycm1zZyB8fCBlcnJbJ3Byb25hbWVzcGFjZSddOwotICAg ICAgICAgIH0KLQotICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdwcm9yZXR0 eXBlbmFtZScpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ3Byb3JldHR5cGVuYW1lJykpLnJlcGxhY2Uo L15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKLSAgICAgICAgICAgIGVyclsncHJvcmV0dHlwZW5h bWUnXSA9IGdldHRleHQoJ1JldHVybiB0eXBlIGNhbm5vdCBiZSBlbXB0eS4nKTsKLSAgICAgICAg ICAgIGVycm1zZyA9IGVycm1zZyB8fCBlcnJbJ3Byb3JldHR5cGVuYW1lJ107Ci0gICAgICAgICAg fQotCi0gICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ2xhbm5hbWUnKSkgfHwg U3RyaW5nKHRoaXMuZ2V0KCdsYW5uYW1lJykpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0g JycpIHsKLSAgICAgICAgICAgIGVyclsnbGFubmFtZSddID0gZ2V0dGV4dCgnTGFuZ3VhZ2UgY2Fu bm90IGJlIGVtcHR5LicpOwotICAgICAgICAgICAgZXJybXNnID0gZXJybXNnIHx8IGVyclsnbGFu bmFtZSddOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmIChTdHJpbmcodGhpcy5nZXQoJ2xh bm5hbWUnKSkgPT0gJ2MnKSB7Ci0gICAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdl dCgncHJvYmluJykpIHx8IFN0cmluZyh0aGlzLmdldCgncHJvYmluJykpCi0gICAgICAgICAgICAg IC5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7Ci0gICAgICAgICAgICAgIGVyclsn cHJvYmluJ10gPSBnZXR0ZXh0KCdPYmplY3QgRmlsZSBjYW5ub3QgYmUgZW1wdHkuJyk7Ci0gICAg ICAgICAgICAgIGVycm1zZyA9IGVycm1zZyB8fCBlcnJbJ3Byb2JpbiddOwotICAgICAgICAgICAg fQotCi0gICAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgncHJvc3JjX2MnKSkg fHwgU3RyaW5nKHRoaXMuZ2V0KCdwcm9zcmNfYycpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycp ID09ICcnKSB7Ci0gICAgICAgICAgICAgIGVyclsncHJvc3JjX2MnXSA9IGdldHRleHQoJ0xpbmsg U3ltYm9sIGNhbm5vdCBiZSBlbXB0eS4nKTsKLSAgICAgICAgICAgICAgZXJybXNnID0gZXJybXNn IHx8IGVyclsncHJvc3JjX2MnXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAg ICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgncHJvc3Jj JykpIHx8IFN0cmluZyh0aGlzLmdldCgncHJvc3JjJykpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAn JykgPT0gJycpIHsKLSAgICAgICAgICAgICAgZXJyWydwcm9zcmMnXSA9IGdldHRleHQoJ0NvZGUg Y2Fubm90IGJlIGVtcHR5LicpOwotICAgICAgICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJy Wydwcm9zcmMnXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBpZiAo c2VjbGFiZWxzKSB7Ci0gICAgICAgICAgICB2YXIgc2VjTGFiZWxzRXJyOwotICAgICAgICAgICAg Zm9yICh2YXIgaSA9IDA7IGkgPCBzZWNsYWJlbHMubW9kZWxzLmxlbmd0aCAmJiAhc2VjTGFiZWxz RXJyOyBpKyspIHsKLSAgICAgICAgICAgICAgc2VjTGFiZWxzRXJyID0gKHNlY2xhYmVscy5tb2Rl bHNbaV0pLnZhbGlkYXRlLmFwcGx5KHNlY2xhYmVscy5tb2RlbHNbaV0pOwotICAgICAgICAgICAg ICBpZiAoc2VjTGFiZWxzRXJyKSB7Ci0gICAgICAgICAgICAgICAgZXJyWydzZWNsYWJlbHMnXSA9 IHNlY0xhYmVsc0VycjsKLSAgICAgICAgICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgc2VjTGFi ZWxzRXJyOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotCi0g ICAgICAgICAgdGhpcy5lcnJvck1vZGVsLmNsZWFyKCkuc2V0KGVycik7Ci0KLSAgICAgICAgICBp ZiAoXy5zaXplKGVycikpIHsKLSAgICAgICAgICAgIHRoaXMudHJpZ2dlcignb24tc3RhdHVzJywg e21zZzogZXJybXNnfSk7Ci0gICAgICAgICAgICByZXR1cm4gZXJybXNnOwotICAgICAgICAgIH0K LQotICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9LAotICAgICAgICBpc1Zpc2libGU6 IGZ1bmN0aW9uKCkgewotICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3N5c3Byb2MnKSB7IHJl dHVybiBmYWxzZTsgfQotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9LAotICAgICAg ICBpc1JlYWRvbmx5OiBmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgc3dpdGNoKHRoaXMubmFtZSl7 Ci0gICAgICAgICAgY2FzZSAncHJvYXJncyc6Ci0gICAgICAgICAgY2FzZSAncHJvYXJndHlwZW5h bWVzJzoKLSAgICAgICAgICBjYXNlICdwcm9yZXR0eXBlbmFtZSc6Ci0gICAgICAgICAgY2FzZSAn cHJvcmV0c2V0JzoKLSAgICAgICAgICBjYXNlICdwcm9pc3dpbmRvdyc6Ci0gICAgICAgICAgICBy ZXR1cm4gIW0uaXNOZXcoKTsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJu IGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgaXNEaXNhYmxlZDogZnVu Y3Rpb24obSkgewotICAgICAgICAgIGlmKHRoaXMubm9kZV9pbmZvICYmICAnY2F0YWxvZycgaW4g dGhpcy5ub2RlX2luZm8pIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIH0K LSAgICAgICAgICBpZiAodGhpcy5uYW1lID09PSAncHJvcm93cycpewotICAgICAgICAgICAgaWYo bS5nZXQoJ3Byb3JldHNldCcpID09IHRydWUpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0s Ci0gICAgICAgIGNhblZhckFkZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgcmV0dXJuICEodGhp cy5ub2RlX2luZm8gJiYgICdjYXRhbG9nJyBpbiB0aGlzLm5vZGVfaW5mbyk7Ci0gICAgICAgIH0s Ci0gICAgICB9KSwKICAgICB9KTsKIAogICB9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9vcGVyYXRvcnMvc3Rh dGljL2pzL29wZXJhdG9yLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvb3BlcmF0b3JzL3N0YXRpYy9qcy9vcGVyYXRvci5qcwpp bmRleCA5OGZmZjZiYWIuLjNhMmJiNjVhOCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvb3BlcmF0b3JzL3N0YXRp Yy9qcy9vcGVyYXRvci5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9vcGVyYXRvcnMvc3RhdGljL2pzL29wZXJhdG9yLmpz CkBAIC00NSwzNyArNDUsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5vcGVyYXRvcicsIFsKIAog ICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsKICAgICAgIH0sCi0gICAgICBtb2RlbDog cGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKLSAgICAgICAgaWRBdHRyaWJ1dGU6 ICdvaWQnLAotCi0gICAgICAgIC8vIERlZmF1bHQgdmFsdWVzIQotICAgICAgICBpbml0aWFsaXpl OiBmdW5jdGlvbihhdHRycywgYXJncykgewotICAgICAgICAgIHZhciBpc05ldyA9IChfLnNpemUo YXR0cnMpID09PSAwKTsKLQotICAgICAgICAgIGlmIChpc05ldykgewotICAgICAgICAgICAgdmFy IHVzZXJJbmZvID0gcGdCcm93c2VyLnNlcnZlckluZm9bYXJncy5ub2RlX2luZm8uc2VydmVyLl9p ZF0udXNlcjsKLSAgICAgICAgICAgIHZhciBzY2hlbWFJbmZvID0gYXJncy5ub2RlX2luZm8uc2No ZW1hOwotCi0gICAgICAgICAgICB0aGlzLnNldCh7J293bmVyJzogdXNlckluZm8ubmFtZX0sIHtz aWxlbnQ6IHRydWV9KTsKLSAgICAgICAgICAgIHRoaXMuc2V0KHsnc2NoZW1hJzogc2NoZW1hSW5m by5fbGFiZWx9LCB7c2lsZW50OiB0cnVlfSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHBnQWRt aW4uQnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFy Z3VtZW50cyk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgc2NoZW1hOiBbewotICAgICAgICAgIGlk OiAnbmFtZScsIGxhYmVsOiBnZXR0ZXh0KCdPcGVyYXRvcicpLCBjZWxsOiAnc3RyaW5nJywKLSAg ICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRp dCddLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ293bmVyJywgbGFiZWw6IGdldHRleHQo J093bmVyJyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTog Wydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCi0gICAgICAgICAgY29udHJvbDogJ25v ZGUtbGlzdC1ieS1uYW1lJywKLSAgICAgICAgICBub2RlOiAncm9sZScsCi0gICAgICAgIH0sewot ICAgICAgICAgIGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDogZ2V0dGV4dCgnQ29tbWVudCcpLCBj ZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBlOiAnbXVsdGlsaW5lJywgbW9kZTogWydwcm9w ZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCi0gICAgICAgIH0KLSAgICAgICAgXSwKLSAgICAg IH0pLAogICAgICAgZ2V0U2NoZW1hOiAoKT0+ewogICAgICAgICByZXR1cm4gbmV3IE9wZXJhdG9y U2NoZW1hKCk7CiAgICAgICB9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9wYWNrYWdlcy9lZGJ2YXJzL3N0YXRp Yy9qcy9lZGJ2YXIuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9wYWNrYWdlcy9lZGJ2YXJzL3N0YXRpYy9qcy9lZGJ2YXIuanMK aW5kZXggYTNjMzQwNDA3Li5kOWViYjlkM2QgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3BhY2thZ2VzL2VkYnZh cnMvc3RhdGljL2pzL2VkYnZhci5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9wYWNrYWdlcy9lZGJ2YXJzL3N0YXRpYy9q cy9lZGJ2YXIuanMKQEAgLTQ4LDE2ICs0OCw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmVkYnZh cicsIFsKICAgICAgIH0sCiAgICAgICBjYW5Ecm9wOiBmYWxzZSwKICAgICAgIGNhbkRyb3BDYXNj YWRlOiBmYWxzZSwKLSAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoewot ICAgICAgICBpZEF0dHJpYnV0ZTogJ29pZCcsCi0gICAgICAgIHNjaGVtYTogW3sKLSAgICAgICAg ICBpZDogJ25hbWUnLCBsYWJlbDogZ2V0dGV4dCgnTmFtZScpLCBjZWxsOiAnc3RyaW5nJywKLSAg ICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddLAotICAgICAgICB9LHsK LSAgICAgICAgICBpZDogJ29pZCcsIGxhYmVsOiBnZXR0ZXh0KCdPSUQnKSwgY2VsbDogJ3N0cmlu ZycsCi0gICAgICAgICAgdHlwZTogJ3RleHQnICwgbW9kZTogWydwcm9wZXJ0aWVzJ10sCi0gICAg ICAgIH1dCi0gICAgICB9KSwKICAgICAgIGdldFNjaGVtYTogKCkgPT4gewogICAgICAgICByZXR1 cm4gbmV3IEVEQlZhclNjaGVtYSgpOwogICAgICAgfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvcGFja2FnZXMv c3RhdGljL2pzL3BhY2thZ2UuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9wYWNrYWdlcy9zdGF0aWMvanMvcGFja2FnZS5qcwpp bmRleCBhMmNlNjNmYzMuLjAwM2YzNzliZCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvcGFja2FnZXMvc3RhdGlj L2pzL3BhY2thZ2UuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvcGFja2FnZXMvc3RhdGljL2pzL3BhY2thZ2UuanMKQEAg LTkyLDQxICs5Miw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnBhY2thZ2UnLCBbCiAgICAgICAg IC8vIGJ5IGRlZmF1bHQgd2Ugd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQogICAgICAgICByZXR1 cm4gdHJ1ZTsKICAgICAgIH0sCi0gICAgICAvLyBEZWZpbmUgdGhlIG1vZGVsIGZvciBwYWNrYWdl IG5vZGUuCi0gICAgICBtb2RlbDogcGdCcm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKLSAgICAg ICAgaWRBdHRyaWJ1dGU6ICdvaWQnLAotICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihhdHRy cywgYXJncykgewotICAgICAgICAgIGlmIChfLnNpemUoYXR0cnMpID09PSAwKSB7Ci0gICAgICAg ICAgICB2YXIgdXNlckluZm8gPSBwZ0Jyb3dzZXIuc2VydmVySW5mb1thcmdzLm5vZGVfaW5mby5z ZXJ2ZXIuX2lkXS51c2VyOwotICAgICAgICAgICAgdmFyIHNjaGVtYUluZm8gPSBhcmdzLm5vZGVf aW5mby5zY2hlbWE7Ci0KLSAgICAgICAgICAgIHRoaXMuc2V0KHsKLSAgICAgICAgICAgICAgJ293 bmVyJzogdXNlckluZm8ubmFtZSwgJ3NjaGVtYSc6IHNjaGVtYUluZm8uX2xhYmVsLAotICAgICAg ICAgICAgfSwge3NpbGVudDogdHJ1ZX0pOwotICAgICAgICAgIH0KLSAgICAgICAgICBwZ0FkbWlu LkJyb3dzZXIuTm9kZS5Nb2RlbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1 bWVudHMpOwotICAgICAgICB9LAotICAgICAgICAvLyBEZWZpbmUgdGhlIHNjaGVtYSBmb3IgcGFj a2FnZSBub2RlLgotICAgICAgICBzY2hlbWE6IFt7Ci0gICAgICAgICAgaWQ6ICduYW1lJywgbGFi ZWw6IGdldHRleHQoJ05hbWUnKSwgY2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgdHlwZTogJ3Rl eHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKLSAgICAgICAgICBy ZWFkb25seTogZnVuY3Rpb24obSkgewotICAgICAgICAgICAgcmV0dXJuICFtLmlzTmV3KCk7Ci0g ICAgICAgICAgfSwKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdvaWQnLCBsYWJlbDogZ2V0 dGV4dCgnT0lEJyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9k ZTogWydwcm9wZXJ0aWVzJ10sCi0gICAgICAgIH0sewotICAgICAgICAgIGlkOiAnb3duZXInLCBs YWJlbDogZ2V0dGV4dCgnT3duZXInKSwgY2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgdHlwZTog J3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKLSAgICAgICAg ICByZWFkb25seTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlLCB2aXNpYmxlOiBmdW5jdGlvbihtKSB7 Ci0gICAgICAgICAgICByZXR1cm4gIW0uaXNOZXcoKTsKLSAgICAgICAgICB9LAotICAgICAgICB9 LHsKLSAgICAgICAgICBpZDogJ2Rlc2NyaXB0aW9uJywgbGFiZWw6IGdldHRleHQoJ0NvbW1lbnQn KSwgdHlwZTogJ211bHRpbGluZScsCi0gICAgICAgICAgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2Ny ZWF0ZScsICdlZGl0J10sCi0gICAgICAgIH1dCi0gICAgICB9KSwKICAgICAgIGdldFNjaGVtYTog KHRyZWVOb2RlSW5mbywgaXRlbU5vZGVEYXRhKSA9PiB7CiAgICAgICAgIHZhciBub2RlT2JqID0g cGdCcm93c2VyLk5vZGVzWydwYWNrYWdlJ107CiAgICAgICAgIHJldHVybiBuZXcgUGFja2FnZVNj aGVtYSgKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3NlcXVlbmNlcy9zdGF0aWMvanMvc2VxdWVuY2UuanMgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9zZXF1ZW5jZXMvc3RhdGljL2pzL3NlcXVlbmNlLmpzCmluZGV4IDZjMzU4ZmQ1OC4uMGUzMzY2 ODJhIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9zZXF1ZW5jZXMvc3RhdGljL2pzL3NlcXVlbmNlLmpzCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3NlcXVlbmNlcy9zdGF0aWMvanMvc2VxdWVuY2UuanMKQEAgLTEwNiw0MSArMTA2LDYgQEAg ZGVmaW5lKCdwZ2FkbWluLm5vZGUuc2VxdWVuY2UnLCBbCiAgICAgICAgICAgfQogICAgICAgICAp OwogICAgICAgfSwKLQotICAgICAgLy8gRGVmaW5lIHRoZSBtb2RlbCBmb3Igc2VxdWVuY2Ugbm9k ZS4KLSAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoewotICAgICAgICBp ZEF0dHJpYnV0ZTogJ29pZCcsCi0KLSAgICAgICAgLy8gRGVmYXVsdCB2YWx1ZXMhCi0gICAgICAg IGluaXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdzKSB7Ci0gICAgICAgICAgdmFyIGlzTmV3 ID0gKF8uc2l6ZShhdHRycykgPT09IDApOwotCi0gICAgICAgICAgaWYgKGlzTmV3KSB7Ci0gICAg ICAgICAgICB2YXIgdXNlckluZm8gPSBwZ0Jyb3dzZXIuc2VydmVySW5mb1thcmdzLm5vZGVfaW5m by5zZXJ2ZXIuX2lkXS51c2VyOwotICAgICAgICAgICAgdmFyIHNjaGVtYUluZm8gPSBhcmdzLm5v ZGVfaW5mby5zY2hlbWE7Ci0KLSAgICAgICAgICAgIHRoaXMuc2V0KHsnc2Vxb3duZXInOiB1c2Vy SW5mby5uYW1lfSwge3NpbGVudDogdHJ1ZX0pOwotICAgICAgICAgICAgdGhpcy5zZXQoeydzY2hl bWEnOiBzY2hlbWFJbmZvLl9sYWJlbH0sIHtzaWxlbnQ6IHRydWV9KTsKLSAgICAgICAgICB9Ci0g ICAgICAgICAgcGdCcm93c2VyLk5vZGUuTW9kZWwucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHko dGhpcywgYXJndW1lbnRzKTsKLSAgICAgICAgfSwKLQotICAgICAgICAvLyBEZWZpbmUgdGhlIHNj aGVtYSBmb3Igc2VxdWVuY2Ugbm9kZS4KLSAgICAgICAgc2NoZW1hOiBbewotICAgICAgICAgIGlk OiAnbmFtZScsIGxhYmVsOiBnZXR0ZXh0KCdOYW1lJyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAg ICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10s Ci0gICAgICAgIH0sewotICAgICAgICAgIGlkOiAnb2lkJywgbGFiZWw6IGdldHRleHQoJ09JRCcp LCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVy dGllcyddLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ3NlcW93bmVyJywgbGFiZWw6IGdl dHRleHQoJ093bmVyJyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICd0ZXh0Jywg bW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sIG5vZGU6ICdyb2xlJywKLSAg ICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5Ob2RlTGlzdEJ5TmFtZUNvbnRyb2wsCi0gICAgICAg IH0sewotICAgICAgICAgIGlkOiAnY29tbWVudCcsIGxhYmVsOiBnZXR0ZXh0KCdDb21tZW50Jyks IHR5cGU6ICdtdWx0aWxpbmUnLAotICAgICAgICAgIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVh dGUnLCAnZWRpdCddLAotICAgICAgICB9XSwKLSAgICAgIH0pLAogICAgIH0pOwogICB9CiAKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9jYXRhbG9nLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL2NhdGFsb2cu anMKaW5kZXggYzQxY2JkNWQyLi40MmQxODJjNDggMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9j YXRhbG9nLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9jYXRhbG9nLmpzCkBAIC00MiwyNSArNDIsNiBA QCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5jYXRhbG9nJywgWwogICAgICAgICB0aGlzLmluaXRpYWxp emVkID0gdHJ1ZTsKIAogICAgICAgfSwKLSAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZS5Nb2Rl bC5leHRlbmQoewotICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihhdHRycywgYXJncykgewot ICAgICAgICAgIHZhciBpc05ldyA9IChfLnNpemUoYXR0cnMpID09PSAwKTsKLQotICAgICAgICAg IGlmIChpc05ldykgewotICAgICAgICAgICAgdmFyIHVzZXJJbmZvID0gcGdCcm93c2VyLnNlcnZl ckluZm9bYXJncy5ub2RlX2luZm8uc2VydmVyLl9pZF0udXNlcjsKLQotICAgICAgICAgICAgdGhp cy5zZXQoeyduYW1lc3BhY2Vvd25lcic6IHVzZXJJbmZvLm5hbWV9LCB7c2lsZW50OiB0cnVlfSk7 Ci0gICAgICAgICAgfQotICAgICAgICAgIHBnQnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlwZS5p bml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICAgIH0sCi0gICAgICAgIHNj aGVtYTogW3sKLSAgICAgICAgICBpZDogJ25hbWUnLCBsYWJlbDogZ2V0dGV4dCgnTmFtZScpLCBj ZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBlOiAndGV4dCcsIHJlYWRvbmx5OiB0cnVlLAot ICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ29pZCcsIGxhYmVsOiBnZXR0ZXh0KCdPSUQnKSwg Y2VsbDogJ3N0cmluZycsIG1vZGU6IFsncHJvcGVydGllcyddLAotICAgICAgICAgIHR5cGU6ICd0 ZXh0JywKLSAgICAgICAgfV0KLSAgICAgIH0pLAogICAgICAgZ2V0U2NoZW1hOiBmdW5jdGlvbih0 cmVlTm9kZUluZm8pIHsKICAgICAgICAgcmV0dXJuIG5ldyBDYXRhbG9nU2NoZW1hKAogICAgICAg ICAgIHsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9zY2hlbWEuanMgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zdGF0aWMvanMv c2NoZW1hLmpzCmluZGV4IGVlMzg0ZjYyOS4uNDgyMmMyMDRkIDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zdGF0 aWMvanMvc2NoZW1hLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9zY2hlbWEuanMKQEAgLTM2MSwzNiAr MzYxLDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuc2NoZW1hJywgWwogICAgICAgY2FuX2NyZWF0 ZV9zY2hlbWE6IGZ1bmN0aW9uKG5vZGUpIHsKICAgICAgICAgcmV0dXJuIHBnQnJvd3Nlci5Ob2Rl c1snZGF0YWJhc2UnXS5pc19jb25uX2FsbG93LmNhbGwodGhpcywgbm9kZSk7CiAgICAgICB9LAot ICAgICAgbW9kZWw6IHBnQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7Ci0gICAgICAgIGlkQXR0 cmlidXRlOiAnb2lkJywKLSAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYXR0cnMsIGFyZ3Mp IHsKLSAgICAgICAgICB2YXIgaXNOZXcgPSAoXy5zaXplKGF0dHJzKSA9PT0gMCk7Ci0KLSAgICAg ICAgICBpZiAoaXNOZXcpIHsKLSAgICAgICAgICAgIHZhciB1c2VySW5mbyA9IHBnQnJvd3Nlci5z ZXJ2ZXJJbmZvW2FyZ3Mubm9kZV9pbmZvLnNlcnZlci5faWRdLnVzZXI7Ci0KLSAgICAgICAgICAg IHRoaXMuc2V0KHsnbmFtZXNwYWNlb3duZXInOiB1c2VySW5mby5uYW1lfSwge3NpbGVudDogdHJ1 ZX0pOwotICAgICAgICAgIH0KLSAgICAgICAgICBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5wcm90b3R5 cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotICAgICAgICB9LAotICAgICAg ICBzY2hlbWE6IFt7Ci0gICAgICAgICAgaWQ6ICduYW1lJywgbGFiZWw6IGdldHRleHQoJ05hbWUn KSwgY2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgdHlwZTogJ3RleHQnLAotICAgICAgICB9LHsK LSAgICAgICAgICBpZDogJ29pZCcsIGxhYmVsOiBnZXR0ZXh0KCdPSUQnKSwgY2VsbDogJ3N0cmlu ZycsCi0gICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwKLSAgICAg ICAgfSx7Ci0gICAgICAgICAgaWQ6ICduYW1lc3BhY2Vvd25lcicsIGxhYmVsOiBnZXR0ZXh0KCdP d25lcicpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBlOiAndGV4dCcsIGNvbnRyb2w6 ICdub2RlLWxpc3QtYnktbmFtZScsIG5vZGU6ICdyb2xlJywKLSAgICAgICAgICBzZWxlY3QyOiB7 IGFsbG93Q2xlYXI6IGZhbHNlIH0sCi0gICAgICAgIH0sewotICAgICAgICAgIGlkOiAnaXNfc3lz X29iaicsIGxhYmVsOiBnZXR0ZXh0KCdTeXN0ZW0gc2NoZW1hPycpLAotICAgICAgICAgIGNlbGw6 ICdzd2l0Y2gnLCB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydwcm9wZXJ0aWVzJ10sCi0gICAgICAg IH0sewotICAgICAgICAgIGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDogZ2V0dGV4dCgnQ29tbWVu dCcpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBlOiAnbXVsdGlsaW5lJwotICAgICAg ICB9XQotICAgICAgfSksCiAgICAgICBnZXRTY2hlbWE6IGZ1bmN0aW9uKHRyZWVOb2RlSW5mbywg aXRlbU5vZGVEYXRhKSB7CiAgICAgICAgIHZhciBzY2hlbWFPYmogPSBwZ0Jyb3dzZXIuTm9kZXNb J3NjaGVtYSddOwogICAgICAgICByZXR1cm4gbmV3IFBHU2NoZW1hKApkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv c3lub255bXMvc3RhdGljL2pzL3N5bm9ueW0uanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zeW5vbnltcy9zdGF0aWMvanMvc3lu b255bS5qcwppbmRleCA4MTgxZmRjOTQuLjEwNDMyNGNiMyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3lub255 bXMvc3RhdGljL2pzL3N5bm9ueW0uanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3lub255bXMvc3RhdGljL2pzL3N5bm9u eW0uanMKQEAgLTEwMCw1NCArMTAwLDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuc3lub255bScs IFsKICAgICAgICAgICB9CiAgICAgICAgICk7CiAgICAgICB9LAotCi0gICAgICBtb2RlbDogcGdB ZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKLSAgICAgICAgaXNOZXc6IGZ1bmN0aW9u KCkgewotICAgICAgICAgIHJldHVybiAhdGhpcy5mZXRjaEZyb21TZXJ2ZXI7Ci0gICAgICAgIH0s Ci0gICAgICAgIGlkQXR0cmlidXRlOiAnb2lkJywKLSAgICAgICAgLy8gRGVmYXVsdCB2YWx1ZXMh Ci0gICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdzKSB7Ci0gICAgICAgICAg dmFyIGlzTmV3ID0gKF8uc2l6ZShhdHRycykgPT09IDApOwotCi0gICAgICAgICAgaWYgKGlzTmV3 KSB7Ci0gICAgICAgICAgICB2YXIgdXNlckluZm8gPSBwZ0Jyb3dzZXIuc2VydmVySW5mb1thcmdz Lm5vZGVfaW5mby5zZXJ2ZXIuX2lkXS51c2VyOwotICAgICAgICAgICAgdmFyIHNjaGVtYUluZm8g PSBhcmdzLm5vZGVfaW5mby5zY2hlbWE7Ci0gICAgICAgICAgICB0aGlzLnNldCh7Ci0gICAgICAg ICAgICAgICdvd25lcic6IHVzZXJJbmZvLm5hbWUsCi0gICAgICAgICAgICAgICdzeW5vYmpzY2hl bWEnOiBzY2hlbWFJbmZvLl9sYWJlbCwKLSAgICAgICAgICAgICAgJ3NjaGVtYSc6IHNjaGVtYUlu Zm8uX2xhYmVsLAotICAgICAgICAgICAgICAndGFyZ2V0dHlwZSc6ICdyJywKLSAgICAgICAgICAg IH0sIHtzaWxlbnQ6IHRydWV9KTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhp cy5mZXRjaEZyb21TZXJ2ZXIgPSB0cnVlOwotICAgICAgICAgIH0KLSAgICAgICAgICBwZ0FkbWlu LkJyb3dzZXIuTm9kZS5Nb2RlbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1 bWVudHMpOwotCi0gICAgICAgIH0sCi0gICAgICAgIHNjaGVtYTogW3sKLSAgICAgICAgICBpZDog J25hbWUnLCBsYWJlbDogZ2V0dGV4dCgnTmFtZScpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAg ICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLAot ICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWEnLCByZWFkb25seTogZnVuY3Rpb24obSkgeyBy ZXR1cm4gIW0uaXNOZXcoKTsgfSwKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdvaWQnLCBs YWJlbDogZ2V0dGV4dCgnT0lEJyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICd0 ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJ10sCi0gICAgICAgIH0sewotICAgICAgICAgIGlkOiAn b3duZXInLCBsYWJlbDogZ2V0dGV4dCgnT3duZXInKSwgY2VsbDogJ3N0cmluZycsCi0gICAgICAg ICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwK LSAgICAgICAgICByZWFkb25seTogdHJ1ZSAsIGNvbnRyb2w6ICdub2RlLWxpc3QtYnktbmFtZScs Ci0gICAgICAgICAgbm9kZTogJ3JvbGUnLCB2aXNpYmxlOiBmYWxzZSwKLSAgICAgICAgfV0sCi0K LSAgICAgICAgLy8gV2Ugd2lsbCBkaXNhYmxlIGV2ZXJ5dGhpbmcgaWYgd2UgYXJlIHVuZGVyIGNh dGFsb2cgbm9kZQotICAgICAgICBpblNjaGVtYTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgaWYo dGhpcy5ub2RlX2luZm8gJiYgICdjYXRhbG9nJyBpbiB0aGlzLm5vZGVfaW5mbykKLSAgICAgICAg ICB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0 dXJuIGZhbHNlOwotICAgICAgICB9LAotICAgICAgfSksCiAgICAgICBjYW5DcmVhdGU6IGZ1bmN0 aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7CiAgICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2Ug dGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKICAgICAgICAgaWYgKGRhdGEgJiYgZGF0 YS5jaGVjayA9PSBmYWxzZSkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb2x1bW5zL3N0YXRpYy9q cy9jb2x1bW4uanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29sdW1ucy9zdGF0aWMvanMvY29sdW1uLmpzCmluZGV4 IDVlMTJmMTU5YS4uNGRmNmM3YWU3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29sdW1ucy9zdGF0 aWMvanMvY29sdW1uLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb2x1bW5zL3N0YXRpYy9qcy9jb2x1bW4u anMKQEAgLTk4LDM2ICs5OCw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmNvbHVtbicsIFsKICAg ICAgIGdldFNjaGVtYTogZnVuY3Rpb24odHJlZU5vZGVJbmZvLCBpdGVtTm9kZURhdGEpIHsKICAg ICAgICAgcmV0dXJuIGdldE5vZGVDb2x1bW5TY2hlbWEodHJlZU5vZGVJbmZvLCBpdGVtTm9kZURh dGEsIHBnQnJvd3Nlcik7CiAgICAgICB9LAotICAgICAgbW9kZWw6IHBnQnJvd3Nlci5Ob2RlLk1v ZGVsLmV4dGVuZCh7Ci0gICAgICAgIGlkQXR0cmlidXRlOiAnYXR0bnVtJywKLQotICAgICAgICBk ZWZhdWx0czogewotICAgICAgICAgIG5hbWU6IHVuZGVmaW5lZCwKLSAgICAgICAgICBhdHRudW06 IHVuZGVmaW5lZCwKLSAgICAgICAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLAotICAgICAgICB9 LAotICAgICAgICBzY2hlbWE6IFt7Ci0gICAgICAgICAgaWQ6ICduYW1lJywgbGFiZWw6IGdldHRl eHQoJ05hbWUnKSwgY2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgdHlwZTogJ3RleHQnLCBkaXNh YmxlZDogJ2luU2NoZW1hV2l0aENvbHVtbkNoZWNrJywKLSAgICAgICAgICBjZWxsSGVhZGVyQ2xh c3Nlczond2lkdGhfcGVyY2VudF8zMCcsCi0gICAgICAgICAgZWRpdGFibGU6ICdlZGl0YWJsZV9j aGVja19mb3JfdGFibGUnLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ2F0dG51bScsIGxh YmVsOiBnZXR0ZXh0KCdQb3NpdGlvbicpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBl OiAndGV4dCcsIGRpc2FibGVkOiAnbm90SW5TY2hlbWEnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwK LSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdkZXNjcmlwdGlvbicsIGxhYmVsOiBnZXR0ZXh0 KCdDb21tZW50JyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICdtdWx0aWxpbmUn LCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKLSAgICAgICAgICBkaXNh YmxlZDogJ25vdEluU2NoZW1hJywKLSAgICAgICAgfV0sCi0gICAgICAgIC8vIFdlIHdpbGwgY2hl Y2sgaWYgd2UgYXJlIHVuZGVyIHNjaGVtYSBub2RlICYgaW4gJ2NyZWF0ZScgbW9kZQotICAgICAg ICBub3RJblNjaGVtYTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgaWYodGhpcy5ub2RlX2luZm8g JiYgICdjYXRhbG9nJyBpbiB0aGlzLm5vZGVfaW5mbykKLSAgICAgICAgICB7Ci0gICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg ICAgICB9LAotICAgICAgfSksCiAgICAgICAvLyBCZWxvdyBmdW5jdGlvbiB3aWxsIGVuYWJsZSBy aWdodCBjbGljayBtZW51IGZvciBjcmVhdGluZyBjb2x1bW4KICAgICAgIGNhbkNyZWF0ZTogZnVu Y3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKICAgICAgICAgLy8gSWYgY2hlY2sgaXMgZmFs c2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy9jb21wb3VuZF90cmlnZ2Vycy9zdGF0aWMvanMvY29tcG91bmRfdHJpZ2dlci5qcyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy9jb21wb3VuZF90cmlnZ2Vycy9zdGF0aWMvanMvY29tcG91bmRfdHJpZ2dlci5qcwppbmRl eCA0MzM4MjgzNzMuLjA2YjQxMDI2YSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbXBvdW5kX3Ry aWdnZXJzL3N0YXRpYy9qcy9jb21wb3VuZF90cmlnZ2VyLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb21w b3VuZF90cmlnZ2Vycy9zdGF0aWMvanMvY29tcG91bmRfdHJpZ2dlci5qcwpAQCAtMTg5LDE2ICsx ODksNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5jb21wb3VuZF90cmlnZ2VyJywgWwogICAgICAg ICApOwogICAgICAgfSwKIAotICAgICAgbW9kZWw6IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVs LmV4dGVuZCh7Ci0gICAgICAgIGlkQXR0cmlidXRlOiAnb2lkJywKLSAgICAgICAgc2NoZW1hOiBb ewotICAgICAgICAgIGlkOiAnbmFtZScsIGxhYmVsOiBnZXR0ZXh0KCdOYW1lJyksIGNlbGw6ICdz dHJpbmcnLAotICAgICAgICAgIHR5cGU6ICd0ZXh0JywKLSAgICAgICAgfSwgewotICAgICAgICAg IGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDogZ2V0dGV4dCgnQ29tbWVudCcpLCBjZWxsOiAnc3Ry aW5nJywKLSAgICAgICAgICB0eXBlOiAnbXVsdGlsaW5lJywgbW9kZTogWydwcm9wZXJ0aWVzJywg J2NyZWF0ZScsICdlZGl0J10sCi0gICAgICAgIH1dLAotICAgICAgfSksCiAgICAgICBjYW5DcmVh dGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7CiAgICAgICAgIC8vSWYgY2hlY2sg aXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKICAgICAgICAgaWYgKGRh dGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJh aW50cy9zdGF0aWMvanMvY29uc3RyYWludHMuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvc3Rh dGljL2pzL2NvbnN0cmFpbnRzLmpzCmluZGV4IGQxMzVkZWFlNS4uZGY1ZjBlNGNiIDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvc3RhdGljL2pzL2NvbnN0cmFpbnRzLmpzCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy9jb25zdHJhaW50cy9zdGF0aWMvanMvY29uc3RyYWludHMuanMKQEAgLTQzLDI0 ICs0Myw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmNvbnN0cmFpbnRzJywgWwogCiAgICAgICAg IHBnQnJvd3Nlci5hZGRfbWVudXMoW10pOwogICAgICAgfSwKLSAgICAgIG1vZGVsOiBwZ0FkbWlu LkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoewotICAgICAgICBpZEF0dHJpYnV0ZTogJ29pZCcs Ci0gICAgICAgIGRlZmF1bHRzOiB7Ci0gICAgICAgICAgbmFtZTogdW5kZWZpbmVkLAotICAgICAg ICAgIG9pZDogdW5kZWZpbmVkLAotICAgICAgICAgIGNvbW1lbnQ6IHVuZGVmaW5lZCwKLSAgICAg ICAgfSwKLSAgICAgICAgc2NoZW1hOiBbewotICAgICAgICAgIGlkOiAnbmFtZScsIGxhYmVsOiBn ZXR0ZXh0KCdOYW1lJyksIHR5cGU6ICd0ZXh0JywKLSAgICAgICAgICBtb2RlOiBbJ3Byb3BlcnRp ZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdvaWQn LCBsYWJlbDogZ2V0dGV4dCgnT2lkJyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6 ICd0ZXh0JyAsIG1vZGU6IFsncHJvcGVydGllcyddLAotICAgICAgICB9LHsKLSAgICAgICAgICBp ZDogJ2NvbW1lbnQnLCBsYWJlbDogZ2V0dGV4dCgnQ29tbWVudCcpLCBjZWxsOiAnc3RyaW5nJywK LSAgICAgICAgICB0eXBlOiAnbXVsdGlsaW5lJywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0 ZScsICdlZGl0J10sCi0gICAgICAgIH1dLAotICAgICAgfSksCiAgICAgfSk7CiAgIH0KIApkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvc3RhdGljL2pzL2luZGV4LmpzIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L2luZGV4ZXMvc3RhdGljL2pzL2luZGV4LmpzCmluZGV4IDNmYjhhNmMxNy4uY2IxNzQ5YzA4IDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvaW5kZXhlcy9zdGF0aWMvanMvaW5kZXguanMKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL2luZGV4ZXMvc3RhdGljL2pzL2luZGV4LmpzCkBAIC05MiwyOSArOTIsNiBAQCBkZWZp bmUoJ3BnYWRtaW4ubm9kZS5pbmRleCcsIFsKICAgICAgIH0sCiAgICAgICBjYW5Ecm9wOiBTY2hl bWFDaGlsZFRyZWVOb2RlLmlzVHJlZUl0ZW1PZkNoaWxkT2ZTY2hlbWEsCiAgICAgICBjYW5Ecm9w Q2FzY2FkZTogU2NoZW1hQ2hpbGRUcmVlTm9kZS5pc1RyZWVJdGVtT2ZDaGlsZE9mU2NoZW1hLAot ICAgICAgbW9kZWw6IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7Ci0gICAgICAg IGlkQXR0cmlidXRlOiAnb2lkJywKLQotICAgICAgICBkZWZhdWx0czogewotICAgICAgICAgIG5h bWU6IHVuZGVmaW5lZCwKLSAgICAgICAgICBvaWQ6IHVuZGVmaW5lZCwKLSAgICAgICAgICBuc3Bu YW1lOiB1bmRlZmluZWQsCi0gICAgICAgICAgdGFibmFtZTogdW5kZWZpbmVkLAotICAgICAgICAg IHNwY25hbWU6IHVuZGVmaW5lZCwKLSAgICAgICAgICBhbW5hbWU6ICdidHJlZScsCi0gICAgICAg IH0sCi0gICAgICAgIHNjaGVtYTogW3sKLSAgICAgICAgICBpZDogJ25hbWUnLCBsYWJlbDogZ2V0 dGV4dCgnTmFtZScpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBlOiAndGV4dCcsIGRp c2FibGVkOiAnaW5TY2hlbWEnLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ29pZCcsIGxh YmVsOiBnZXR0ZXh0KCdPSUQnKSwgY2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgdHlwZTogJ2lu dCcsIHJlYWRvbmx5OiB0cnVlLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwKLSAgICAgICAgfSwgewot ICAgICAgICAgIGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDogZ2V0dGV4dCgnQ29tbWVudCcpLCBj ZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBlOiAnbXVsdGlsaW5lJywgbW9kZTogWydwcm9w ZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCi0gICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVt YScsCi0gICAgICAgIH1dLAotICAgICAgfSksCiAgICAgICAvLyBCZWxvdyBmdW5jdGlvbiB3aWxs IGVuYWJsZSByaWdodCBjbGljayBtZW51IGZvciBjcmVhdGluZyBjb2x1bW4KICAgICAgIGNhbkNy ZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKICAgICAgICAgLy8gSWYgY2hl Y2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy9wYXJ0aXRpb25zL3N0YXRpYy9qcy9wYXJ0aXRpb24uanMgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv cGFydGl0aW9ucy9zdGF0aWMvanMvcGFydGl0aW9uLmpzCmluZGV4IDY4MzZjZTMwYy4uZDBhMWVl YzVmIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcGFydGl0aW9ucy9zdGF0aWMvanMvcGFydGl0aW9u LmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy9wYXJ0aXRpb25zL3N0YXRpYy9qcy9wYXJ0aXRpb24uanMKQEAg LTMwNSw0OSArMzA1LDYgQEAgZnVuY3Rpb24oCiAgICAgICBnZXRTY2hlbWE6IGZ1bmN0aW9uKHRy ZWVOb2RlSW5mbywgaXRlbU5vZGVEYXRhKSB7CiAgICAgICAgIHJldHVybiBnZXROb2RlUGFydGl0 aW9uVGFibGVTY2hlbWEodHJlZU5vZGVJbmZvLCBpdGVtTm9kZURhdGEsIHBnQnJvd3Nlcik7CiAg ICAgICB9LAotICAgICAgbW9kZWw6IHBnQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7Ci0gICAg ICAgIGlkQXR0cmlidXRlOiAnb2lkJywKLSAgICAgICAgZGVmYXVsdHM6IHsKLSAgICAgICAgICBu YW1lOiB1bmRlZmluZWQsCi0gICAgICAgICAgb2lkOiB1bmRlZmluZWQsCi0gICAgICAgICAgZGVz Y3JpcHRpb246IHVuZGVmaW5lZCwKLSAgICAgICAgICBpc19wYXJ0aXRpb25lZDogZmFsc2UsCi0g ICAgICAgICAgcGFydGl0aW9uX3ZhbHVlOiB1bmRlZmluZWQsCi0gICAgICAgIH0sCi0gICAgICAg IC8vIERlZmF1bHQgdmFsdWVzIQotICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihhdHRycywg YXJncykgewotICAgICAgICAgIGlmIChfLnNpemUoYXR0cnMpID09PSAwKSB7Ci0gICAgICAgICAg ICB2YXIgdXNlckluZm8gPSBwZ0Jyb3dzZXIuc2VydmVySW5mb1sKLSAgICAgICAgICAgICAgICBh cmdzLm5vZGVfaW5mby5zZXJ2ZXIuX2lkCi0gICAgICAgICAgICAgIF0udXNlciwKLSAgICAgICAg ICAgICAgc2NoZW1hSW5mbyA9IGFyZ3Mubm9kZV9pbmZvLnNjaGVtYTsKLQotICAgICAgICAgICAg dGhpcy5zZXQoewotICAgICAgICAgICAgICAncmVsb3duZXInOiB1c2VySW5mby5uYW1lLCAnc2No ZW1hJzogc2NoZW1hSW5mby5fbGFiZWwsCi0gICAgICAgICAgICB9LCB7c2lsZW50OiB0cnVlfSk7 Ci0gICAgICAgICAgfQotICAgICAgICAgIHBnQnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlwZS5p bml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0KLSAgICAgICAgfSwKLSAgICAgICAg c2NoZW1hOiBbewotICAgICAgICAgIGlkOiAnbmFtZScsIGxhYmVsOiBnZXR0ZXh0KCdOYW1lJyks IHR5cGU6ICd0ZXh0JywKLSAgICAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywg J2VkaXQnXSwKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdvaWQnLCBsYWJlbDogZ2V0dGV4 dCgnT0lEJyksIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJ10sCi0gICAgICAgIH0s ewotICAgICAgICAgIGlkOiAnc2NoZW1hJywgbGFiZWw6IGdldHRleHQoJ1NjaGVtYScpLCB0eXBl OiAndGV4dCcsIG5vZGU6ICdzY2hlbWEnLAotICAgICAgICAgIG1vZGU6IFsnY3JlYXRlJywgJ2Vk aXQnLCAncHJvcGVydGllcyddLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ2lzX3BhcnRp dGlvbmVkJywgbGFiZWw6Z2V0dGV4dCgnUGFydGl0aW9uZWQgdGFibGU/JyksIGNlbGw6ICdzd2l0 Y2gnLAotICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3Jl YXRlJywgJ2VkaXQnXSwKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdwYXJ0aXRpb25fdmFs dWUnLCBsYWJlbDpnZXR0ZXh0KCdQYXJ0aXRpb24gU2NoZW1lJyksCi0gICAgICAgICAgdHlwZTog J3RleHQnLCB2aXNpYmxlOiBmYWxzZSwKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdkZXNj cmlwdGlvbicsIGxhYmVsOiBnZXR0ZXh0KCdDb21tZW50JyksIHR5cGU6ICdtdWx0aWxpbmUnLAot ICAgICAgICAgIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLAotICAgICAg ICB9XSwKLSAgICAgIH0pLAogICAgICAgY2FuQ3JlYXRlOiBTY2hlbWFDaGlsZFRyZWVOb2RlLmlz VHJlZUl0ZW1PZkNoaWxkT2ZTY2hlbWEsCiAgICAgICAvLyBDaGVjayB0byB3aGV0aGVyIHRhYmxl IGhhcyBkaXNhYmxlIHRyaWdnZXIocykKICAgICAgIGNhbkNyZWF0ZV93aXRoX3RyaWdnZXJfZW5h YmxlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3Jvd19zZWN1cml0eV9wb2xpY2llcy9zdGF0aWMvanMvcm93X3NlY3VyaXR5X3BvbGljeS5q cyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy9yb3dfc2VjdXJpdHlfcG9saWNpZXMvc3RhdGljL2pzL3Jvd19zZWN1cml0 eV9wb2xpY3kuanMKaW5kZXggYWNjMjg1ZTk5Li5kMTkwOGE2ZWIgMTAwNjQ0Ci0tLSBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy9yb3dfc2VjdXJpdHlfcG9saWNpZXMvc3RhdGljL2pzL3Jvd19zZWN1cml0eV9wb2xpY3ku anMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3Jvd19zZWN1cml0eV9wb2xpY2llcy9zdGF0aWMvanMvcm93X3Nl Y3VyaXR5X3BvbGljeS5qcwpAQCAtODgsNjQgKzg4LDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUu cm93X3NlY3VyaXR5X3BvbGljeScsIFsKICAgICAgICAgICB9CiAgICAgICAgICk7CiAgICAgICB9 LAotICAgICAgbW9kZWw6IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7Ci0gICAg ICAgIGlkQXR0cmlidXRlOiAnb2lkJywKLSAgICAgICAgZGVmYXVsdHM6IHsKLSAgICAgICAgICBu YW1lOiB1bmRlZmluZWQsCi0gICAgICAgIH0sCi0gICAgICAgIHNjaGVtYTogW3sKLSAgICAgICAg ICBpZDogJ25hbWUnLCBsYWJlbDogZ2V0dGV4dCgnTmFtZScpLCBjZWxsOiAnc3RyaW5nJywKLSAg ICAgICAgICB0eXBlOiAndGV4dCcsIHJlYWRvbmx5OiB0cnVlLCBjZWxsSGVhZGVyQ2xhc3Nlczog J3dpZHRoX3BlcmNlbnRfNTAnLAotICAgICAgICAgIG1vZGU6IFsncHJvcGVydGllcyddCi0gICAg ICAgIH0sewotICAgICAgICAgIGlkOiAnb2lkJywgbGFiZWw6IGdldHRleHQoJ09JRCcpLCBjZWxs OiAnc3RyaW5nJywKLSAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICd0ZXh0JywgbW9k ZTogWydwcm9wZXJ0aWVzJ10sCi0gICAgICAgIH1dLAotICAgICAgICB2YWxpZGF0ZTogZnVuY3Rp b24oa2V5cykgewotICAgICAgICAgIHZhciBtc2c7Ci0gICAgICAgICAgdGhpcy5lcnJvck1vZGVs LmNsZWFyKCk7Ci0gICAgICAgICAgLy8gSWYgbm90aGluZyB0byB2YWxpZGF0ZQotICAgICAgICAg IGlmIChrZXlzICYmIGtleXMubGVuZ3RoID09IDApIHsKLSAgICAgICAgICAgIHJldHVybiBudWxs OwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ25h bWUnKSkKLSAgICAgICAgICAgIHx8IFN0cmluZyh0aGlzLmdldCgnbmFtZScpKS5yZXBsYWNlKC9e XHMrfFxzKyQvZywgJycpID09ICcnKSB7Ci0gICAgICAgICAgICBtc2cgPSBnZXR0ZXh0KCdOYW1l IGNhbm5vdCBiZSBlbXB0eS4nKTsKLSAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ25h bWUnLCBtc2cpOwotICAgICAgICAgICAgcmV0dXJuIG1zZzsKLSAgICAgICAgICB9Ci0gICAgICAg ICAgaWYgKCF0aGlzLmlzTmV3KCkgJiYgIV8uaXNOdWxsKHRoaXMuZ2V0KCd1c2luZ19vcmlnJykp ICYmIHRoaXMuZ2V0KCd1c2luZ19vcmlnJykgIT0gJycgJiYgU3RyaW5nKHRoaXMuZ2V0KCd1c2lu ZycpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKXsKLSAgICAgICAgICAgIG1zZyA9 IGdldHRleHQoJyJVU0lORyIgY2FuIG5vdCBiZSBlbXB0eSBvbmNlIHRoZSB2YWx1ZSBpcyBzZXQn KTsKLSAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3VzaW5nJywgbXNnKTsKLSAgICAg ICAgICAgIHJldHVybiBtc2c7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmICghdGhpcy5pc05l dygpICYmICFfLmlzTnVsbCh0aGlzLmdldCgnd2l0aGNoZWNrX29yaWcnKSkgJiYgdGhpcy5nZXQo J3dpdGhjaGVja19vcmlnJykgIT0gJycgJiYgU3RyaW5nKHRoaXMuZ2V0KCd3aXRoY2hlY2snKSku cmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJyl7Ci0gICAgICAgICAgICBtc2cgPSBnZXR0 ZXh0KCciV2l0aGNoZWNrIiBjYW4gbm90IGJlIGVtcHR5IG9uY2UgdGhlIHZhbHVlIGlzIHNldCcp OwotICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnd2l0aGNoZWNrJywgbXNnKTsKLSAg ICAgICAgICAgIHJldHVybiBtc2c7Ci0gICAgICAgICAgfQotICAgICAgICAgIHJldHVybiBudWxs OwotICAgICAgICB9LAotICAgICAgICBkaXNhYmxlV2l0aENoZWNrOiBmdW5jdGlvbihtKXsKLSAg ICAgICAgICB2YXIgZXZlbnQgPSBtLmdldCgnZXZlbnQnKTsKLSAgICAgICAgICBpZiAoKGV2ZW50 ID09ICdTRUxFQ1QnKSB8fCAoZXZlbnQgPT0gJ0RFTEVURScpKXsKLSAgICAgICAgICAgIG0uc2V0 KCd3aXRoY2hlY2snLCAnJyk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICB9 Ci0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9LAotCi0gICAgICAgIGRpc2FibGVV c2luZzogZnVuY3Rpb24obSl7Ci0gICAgICAgICAgdmFyIGV2ZW50ID0gbS5nZXQoJ2V2ZW50Jyk7 Ci0KLSAgICAgICAgICBpZiAoZXZlbnQgPT0gJ0lOU0VSVCcpewotICAgICAgICAgICAgcmV0dXJu IHRydWU7Ci0gICAgICAgICAgfQotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfSwK LQotICAgICAgfSksCiAgICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtKSB7 CiAKICAgICAgICAgdmFyIHRyZWVEYXRhID0gcGdCcm93c2VyLnRyZWUuZ2V0VHJlZU5vZGVIaWVy YXJjaHkoaXRlbSksCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcnVsZXMvc3RhdGljL2pzL3J1bGUu anMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvcnVsZXMvc3RhdGljL2pzL3J1bGUuanMKaW5kZXggY2RlMjUwMDliLi43 M2ViZDQxODMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9ydWxlcy9zdGF0aWMvanMvcnVsZS5qcwor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvcnVsZXMvc3RhdGljL2pzL3J1bGUuanMKQEAgLTIwNyw1NCArMjA3LDYg QEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUucnVsZScsIFsKICAgICAgICAgICB9CiAgICAgICAgICk7 CiAgICAgICB9LAotICAgICAgLyoqCi0gICAgICAgIERlZmluZSBtb2RlbCBmb3IgdGhlIHJ1bGUg bm9kZSBhbmQgc3BlY2lmeSB0aGUgbm9kZQotICAgICAgICBwcm9wZXJ0aWVzIG9mIHRoZSBtb2Rl bCBpbiBzY2hlbWEuCi0gICAgICAgKi8KLSAgICAgIG1vZGVsOiBwZ0FkbWluLkJyb3dzZXIuTm9k ZS5Nb2RlbC5leHRlbmQoewotICAgICAgICBpZEF0dHJpYnV0ZTogJ29pZCcsCi0gICAgICAgIHNj aGVtYTogW3sKLSAgICAgICAgICBpZDogJ25hbWUnLCBsYWJlbDogZ2V0dGV4dCgnTmFtZScpLAot ICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKLSAgICAgICAg ICAgIC8vIGRpc2FibGUgbmFtZSBmaWVsZCBpdCBpdCBpcyBzeXN0ZW0gcnVsZQotICAgICAgICAg ICAgaWYgKG0gJiYgbS5nZXQoJ25hbWUnKSA9PSAnX1JFVFVSTicpIHsKLSAgICAgICAgICAgICAg cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobS5pc05ldyAmJiBt LmlzTmV3KCkgfHwgbS5ub2RlX2luZm8gJiYgbS5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24gPj0g OTA0MDApIHsKLSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAg ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgfSwKLSAgICAgICAgfSwKLSAgICAgICAg ewotICAgICAgICAgIGlkOiAnb2lkJywgbGFiZWw6IGdldHRleHQoJ09JRCcpLAotICAgICAgICAg IHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJ10sCi0gICAgICAgIH0sCi0gICAgICAg IHsKLSAgICAgICAgICBpZDogJ2NvbW1lbnQnLCBsYWJlbDogZ2V0dGV4dCgnQ29tbWVudCcpLCBj ZWxsOiAnc3RyaW5nJywgdHlwZTogJ211bHRpbGluZScsCi0gICAgICAgIH0sCi0gICAgICAgIF0s Ci0gICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKLQotICAgICAgICAgIC8vIFRyaWdnZXJz IHNwZWNpZmljIGVycm9yIG1lc3NhZ2VzIGZvciBmaWVsZHMKLSAgICAgICAgICB2YXIgZXJyID0g e30sCi0gICAgICAgICAgICBlcnJtc2csCi0gICAgICAgICAgICBmaWVsZF9uYW1lID0gdGhpcy5n ZXQoJ25hbWUnKTsKLSAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChmaWVsZF9uYW1lKSB8fCBf LmlzTnVsbChmaWVsZF9uYW1lKSB8fAotICAgICAgICAgICAgU3RyaW5nKGZpZWxkX25hbWUpLnJl cGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT09ICcnKQotICAgICAgICAgIHsKLSAgICAgICAgICAg IGVyclsnbmFtZSddID0gZ2V0dGV4dCgnUGxlYXNlIHNwZWNpZnkgbmFtZS4nKTsKLSAgICAgICAg ICAgIGVycm1zZyA9IGVyclsnbmFtZSddOwotICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNl dCgnbmFtZScsIGVycm1zZyk7Ci0gICAgICAgICAgICByZXR1cm4gZXJybXNnOwotICAgICAgICAg IH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5lcnJvck1v ZGVsLnVuc2V0KCduYW1lJyk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHJldHVybiBudWxsOwot ICAgICAgICB9LAotICAgICAgfSksCiAKICAgICAgIC8vIFNob3cgb3IgaGlkZSBjcmVhdGUgcnVs ZSBtZW51IG9wdGlvbiBvbiBwYXJlbnQgbm9kZQogICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihp dGVtRGF0YSwgaXRlbSwgZGF0YSkgewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RyaWdnZXJzL3N0 YXRpYy9qcy90cmlnZ2VyLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RyaWdnZXJzL3N0YXRpYy9qcy90cmlnZ2Vy LmpzCmluZGV4IDFlNGVjYmE4OS4uYzYwZWNiYzVjIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdHJp Z2dlcnMvc3RhdGljL2pzL3RyaWdnZXIuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RyaWdnZXJzL3N0YXRp Yy9qcy90cmlnZ2VyLmpzCkBAIC0xODcsNDY4ICsxODcsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9k ZS50cmlnZ2VyJywgWwogICAgICAgICAgIH0sCiAgICAgICAgICk7CiAgICAgICB9LAotICAgICAg bW9kZWw6IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7Ci0gICAgICAgIGlkQXR0 cmlidXRlOiAnb2lkJywKLSAgICAgICAgZGVmYXVsdHM6IHsKLSAgICAgICAgICBuYW1lOiB1bmRl ZmluZWQsCi0gICAgICAgICAgaXNfcm93X3RyaWdnZXI6IHRydWUsCi0gICAgICAgICAgZmlyZXM6 ICdCRUZPUkUnLAotICAgICAgICB9LAotICAgICAgICBzY2hlbWE6IFt7Ci0gICAgICAgICAgaWQ6 ICduYW1lJywgbGFiZWw6IGdldHRleHQoJ05hbWUnKSwgY2VsbDogJ3N0cmluZycsCi0gICAgICAg ICAgdHlwZTogJ3RleHQnLCBkaXNhYmxlZDogJ2luU2NoZW1hJywKLSAgICAgICAgfSx7Ci0gICAg ICAgICAgaWQ6ICdvaWQnLCBsYWJlbDogZ2V0dGV4dCgnT0lEJyksIGNlbGw6ICdzdHJpbmcnLAot ICAgICAgICAgIHR5cGU6ICdpbnQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwKLSAgICAgICAgfSx7 Ci0gICAgICAgICAgaWQ6ICdpc19lbmFibGVfdHJpZ2dlcicsIGxhYmVsOiBnZXR0ZXh0KCdUcmln Z2VyIGVuYWJsZWQ/JyksCi0gICAgICAgICAgbW9kZTogWydlZGl0JywgJ3Byb3BlcnRpZXMnXSwg Z3JvdXA6IGdldHRleHQoJ0RlZmluaXRpb24nKSwKLSAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rp b24oKSB7Ci0gICAgICAgICAgICBpZih0aGlzLm5vZGVfaW5mbyAmJiAoJ2NhdGFsb2cnIGluIHRo aXMubm9kZV9pbmZvIHx8ICd2aWV3JyBpbiB0aGlzLm5vZGVfaW5mbykpIHsKLSAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7 Ci0gICAgICAgICAgfSwKLSAgICAgICAgICBvcHRpb25zOiBbCi0gICAgICAgICAgICB7bGFiZWw6 IGdldHRleHQoJ0VuYWJsZScpLCB2YWx1ZTogJ08nfSwKLSAgICAgICAgICAgIHtsYWJlbDogZ2V0 dGV4dCgnRW5hYmxlIFJlcGxpY2EnKSwgdmFsdWU6ICdSJ30sCi0gICAgICAgICAgICB7bGFiZWw6 IGdldHRleHQoJ0VuYWJsZSBBbHdheXMnKSwgdmFsdWU6ICdBJ30sCi0gICAgICAgICAgICB7bGFi ZWw6IGdldHRleHQoJ0Rpc2FibGUnKSwgdmFsdWU6ICdEJ30sCi0gICAgICAgICAgXSwKLSAgICAg ICAgICBjb250cm9sOiAnc2VsZWN0MicsIHNlbGVjdDI6IHsgYWxsb3dDbGVhcjogZmFsc2UsIHdp ZHRoOiAnMTAwJScgfSwKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdpc19yb3dfdHJpZ2dl cicsIGxhYmVsOiBnZXR0ZXh0KCdSb3cgdHJpZ2dlcj8nKSwKLSAgICAgICAgICB0eXBlOiAnc3dp dGNoJywgZ3JvdXA6IGdldHRleHQoJ0RlZmluaXRpb24nKSwKLSAgICAgICAgICBtb2RlOiBbJ2Ny ZWF0ZScsJ2VkaXQnLCAncHJvcGVydGllcyddLAotICAgICAgICAgIGRlcHM6IFsnaXNfY29uc3Ry YWludF90cmlnZ2VyJ10sCi0gICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKLSAgICAg ICAgICAgIC8vIERpc2FibGVkIGlmIHRhYmxlIGlzIGEgcGFydGl0aW9uZWQgdGFibGUuCi0gICAg ICAgICAgICBpZiAoIW0uaXNOZXcoKSkKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg ICAgICAgICAgIGlmIChfLmhhcyhtLCAnbm9kZV9pbmZvJykgJiYgXy5oYXMobS5ub2RlX2luZm8s ICd0YWJsZScpICYmCi0gICAgICAgICAgICAgIF8uaGFzKG0ubm9kZV9pbmZvLnRhYmxlLCAnaXNf cGFydGl0aW9uZWQnKSAmJgotICAgICAgICAgICAgICAgbS5ub2RlX2luZm8udGFibGUuaXNfcGFy dGl0aW9uZWQgJiYgbS5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24gPCAxMTAwMDAKLSAgICAgICAg ICAgICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp ewotICAgICAgICAgICAgICAgIG0uc2V0KCdpc19yb3dfdHJpZ2dlcicsIGZhbHNlKTsKLSAgICAg ICAgICAgICAgfSwxMCk7Ci0KLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg ICB9Ci0KLSAgICAgICAgICAgIC8vIElmIGNvbnN0cmFpbnQgdHJpZ2dlciBpcyBzZXQgdG8gVHJ1 ZSB0aGVuIHJvdyB0cmlnZ2VyIHdpbGwKLSAgICAgICAgICAgIC8vIGF1dG9tYXRpY2FsbHkgc2V0 IHRvIFRydWUgYW5kIGJlY29tZXMgZGlzYWJsZQotICAgICAgICAgICAgdmFyIGlzX2NvbnN0cmFp bnRfdHJpZ2dlciA9IG0uZ2V0KCdpc19jb25zdHJhaW50X3RyaWdnZXInKTsKLSAgICAgICAgICAg IGlmKCFtLmluU2NoZW1hV2l0aE1vZGVsQ2hlY2suYXBwbHkodGhpcywgW21dKSkgewotICAgICAg ICAgICAgICBpZighXy5pc1VuZGVmaW5lZChpc19jb25zdHJhaW50X3RyaWdnZXIpICYmCi0gICAg ICAgICAgICAgICAgaXNfY29uc3RyYWludF90cmlnZ2VyID09PSB0cnVlKSB7Ci0gICAgICAgICAg ICAgICAgLy8gY2hhbmdlIGl0J3MgbW9kZWwgdmFsdWUKLSAgICAgICAgICAgICAgICBzZXRUaW1l b3V0KGZ1bmN0aW9uKCkgeyBtLnNldCgnaXNfcm93X3RyaWdnZXInLCB0cnVlKTsgfSwgMTApOwot ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICB9IGVsc2UgewotICAg ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAg fSBlbHNlIHsKLSAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgaXQgaXMgcm93IHRyaWdnZXIgdGhl biBlbmFibGVkIGl0LgotICAgICAgICAgICAgICB2YXIgaXNfcm93X3RyaWdnZXIgPSBtLmdldCgn aXNfcm93X3RyaWdnZXInKTsKLSAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKGlzX3Jv d190cmlnZ2VyKSAmJiBtLm5vZGVfaW5mb1snc2VydmVyJ11bJ3NlcnZlcl90eXBlJ10gPT0gJ3Bw YXMnKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICB9Ci0g ICAgICAgICAgICAgIC8vIERpc2FibGUgaXQKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g ICAgICAgICAgICB9Ci0gICAgICAgICAgfSwKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdp c19jb25zdHJhaW50X3RyaWdnZXInLCBsYWJlbDogZ2V0dGV4dCgnQ29uc3RyYWludCB0cmlnZ2Vy PycpLAotICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLAotICAgICAgICAgIG1vZGU6IFsnY3JlYXRl JywnZWRpdCcsICdwcm9wZXJ0aWVzJ10sCi0gICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ0RlZmlu aXRpb24nKSwKLSAgICAgICAgICBkZXBzOiBbJ3RmdW5jdGlvbiddLAotICAgICAgICAgIGRpc2Fi bGVkOiBmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgICAvLyBEaXNhYmxlZCBpZiB0YWJsZSBpcyBh IHBhcnRpdGlvbmVkIHRhYmxlLgotICAgICAgICAgICAgdmFyIHRmdW5jdGlvbiA9IG0uZ2V0KCd0 ZnVuY3Rpb24nKTsKLSAgICAgICAgICAgIGlmICgoXy5oYXMobSwgJ25vZGVfaW5mbycpICYmIF8u aGFzKG0ubm9kZV9pbmZvLCAndGFibGUnKSAmJgotICAgICAgICAgICAgICBfLmhhcyhtLm5vZGVf aW5mby50YWJsZSwgJ2lzX3BhcnRpdGlvbmVkJykgJiYKLSAgICAgICAgICAgICAgICBtLm5vZGVf aW5mby50YWJsZS5pc19wYXJ0aXRpb25lZCkgfHwKLSAgICAgICAgICAgICAgICBfLmluZGV4T2Yo T2JqZWN0LmtleXMobS5ub2RlX2luZm8pLCAndmlldycpICE9IC0xIHx8Ci0gICAgICAgICAgICAg ICAgKG0ubm9kZV9pbmZvLnNlcnZlci5zZXJ2ZXJfdHlwZSA9PT0gJ3BwYXMnICYmCi0gICAgICAg ICAgICAgICAgIV8uaXNVbmRlZmluZWQodGZ1bmN0aW9uKSAmJgotICAgICAgICAgICAgICAgICB0 ZnVuY3Rpb24gPT09ICdJbmxpbmUgRURCLVNQTCcpKSB7Ci0gICAgICAgICAgICAgIHNldFRpbWVv dXQoZnVuY3Rpb24oKXsKLSAgICAgICAgICAgICAgICBtLnNldCgnaXNfY29uc3RyYWludF90cmln Z2VyJywgZmFsc2UpOwotICAgICAgICAgICAgICB9LDEwKTsKLQotICAgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIG0uaW5TY2hlbWFX aXRoTW9kZWxDaGVjay5hcHBseSh0aGlzLCBbbV0pOwotICAgICAgICAgIH0sCi0gICAgICAgIH0s ewotICAgICAgICAgIGlkOiAndGdkZWZlcnJhYmxlJywgbGFiZWw6IGdldHRleHQoJ0RlZmVycmFi bGU/JyksCi0gICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIGdyb3VwOiBnZXR0ZXh0KCdEZWZpbml0 aW9uJyksCi0gICAgICAgICAgbW9kZTogWydjcmVhdGUnLCdlZGl0JywgJ3Byb3BlcnRpZXMnXSwK LSAgICAgICAgICBkZXBzOiBbJ2lzX2NvbnN0cmFpbnRfdHJpZ2dlciddLAotICAgICAgICAgIGRp c2FibGVkOiBmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgICAvLyBJZiBjb25zdHJhaW50IHRyaWdn ZXIgaXMgc2V0IHRvIFRydWUgdGhlbiBvbmx5IGVuYWJsZSBpdAotICAgICAgICAgICAgdmFyIGlz X2NvbnN0cmFpbnRfdHJpZ2dlciA9IG0uZ2V0KCdpc19jb25zdHJhaW50X3RyaWdnZXInKTsKLSAg ICAgICAgICAgIGlmKCFtLmluU2NoZW1hV2l0aE1vZGVsQ2hlY2suYXBwbHkodGhpcywgW21dKSkg ewotICAgICAgICAgICAgICBpZighXy5pc1VuZGVmaW5lZChpc19jb25zdHJhaW50X3RyaWdnZXIp ICYmCi0gICAgICAgICAgICAgICAgaXNfY29uc3RyYWludF90cmlnZ2VyID09PSB0cnVlKSB7Ci0g ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICB9IGVsc2UgewotICAg ICAgICAgICAgICAgIC8vIElmIHZhbHVlIGlzIGFscmVhZHkgc2V0IHRoZW4gcmVzZXQgaXQgdG8g ZmFsc2UKLSAgICAgICAgICAgICAgICBpZihtLmdldCgndGdkZWZlcnJhYmxlJykpIHsKLSAgICAg ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IG0uc2V0KCd0Z2RlZmVycmFibGUn LCBmYWxzZSk7IH0sIDEwKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0 dXJuIHRydWU7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg ICAgICAgIC8vIERpc2FibGUgaXQKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg ICAgICB9Ci0gICAgICAgICAgfSwKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICd0Z2luaXRk ZWZlcnJlZCcsIGxhYmVsOiBnZXR0ZXh0KCdEZWZlcnJlZD8nKSwKLSAgICAgICAgICB0eXBlOiAn c3dpdGNoJywgZ3JvdXA6IGdldHRleHQoJ0RlZmluaXRpb24nKSwKLSAgICAgICAgICBtb2RlOiBb J2NyZWF0ZScsJ2VkaXQnLCAncHJvcGVydGllcyddLAotICAgICAgICAgIGRlcHM6IFsndGdkZWZl cnJhYmxlJywgJ2lzX2NvbnN0cmFpbnRfdHJpZ2dlciddLAotICAgICAgICAgIGRpc2FibGVkOiBm dW5jdGlvbihtKSB7Ci0gICAgICAgICAgICAvLyBJZiBEZWZlcnJhYmxlIGlzIHNldCB0byBUcnVl IHRoZW4gb25seSBlbmFibGUgaXQKLSAgICAgICAgICAgIHZhciB0Z2RlZmVycmFibGUgPSBtLmdl dCgndGdkZWZlcnJhYmxlJyk7Ci0gICAgICAgICAgICBpZighbS5pblNjaGVtYVdpdGhNb2RlbENo ZWNrLmFwcGx5KHRoaXMsIFttXSkpIHsKLSAgICAgICAgICAgICAgaWYoIV8uaXNVbmRlZmluZWQo dGdkZWZlcnJhYmxlKSAmJgotICAgICAgICAgICAgICAgIHRnZGVmZXJyYWJsZSkgewotICAgICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg ICAgICAgICAvLyBJZiB2YWx1ZSBpcyBhbHJlYWR5IHNldCB0aGVuIHJlc2V0IGl0IHRvIGZhbHNl Ci0gICAgICAgICAgICAgICAgaWYobS5nZXQoJ3RnaW5pdGRlZmVycmVkJykpIHsKLSAgICAgICAg ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IG0uc2V0KCd0Z2luaXRkZWZlcnJlZCcs IGZhbHNlKTsgfSwgMTApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvLyBJ ZiBjb25zdHJhaW50IHRyaWdnZXIgaXMgc2V0IHRoZW4gZG8gbm90IGRpc2FibGUKLSAgICAgICAg ICAgICAgICByZXR1cm4gbS5nZXQoJ2lzX2NvbnN0cmFpbnRfdHJpZ2dlcicpID8gZmFsc2UgOiB0 cnVlOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg ICAvLyBEaXNhYmxlIGl0Ci0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg fQotICAgICAgICAgIH0sCi0gICAgICAgIH0sewotICAgICAgICAgIGlkOiAndGZ1bmN0aW9uJywg bGFiZWw6IGdldHRleHQoJ1RyaWdnZXIgZnVuY3Rpb24nKSwKLSAgICAgICAgICB0eXBlOiAndGV4 dCcsIGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxDaGVjaycsCi0gICAgICAgICAgbW9kZTog WydjcmVhdGUnLCdlZGl0JywgJ3Byb3BlcnRpZXMnXSwgZ3JvdXA6IGdldHRleHQoJ0RlZmluaXRp b24nKSwKLSAgICAgICAgICBjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLCB1cmw6ICdnZXRf dHJpZ2dlcmZ1bmN0aW9ucycsIHVybF9qdW1wX2FmdGVyX25vZGU6ICdzY2hlbWEnLAotICAgICAg ICAgIGNhY2hlX25vZGU6ICd0cmlnZ2VyX2Z1bmN0aW9uJywKLSAgICAgICAgfSx7Ci0gICAgICAg ICAgaWQ6ICd0Z2FyZ3MnLCBsYWJlbDogZ2V0dGV4dCgnQXJndW1lbnRzJyksIGNlbGw6ICdzdHJp bmcnLAotICAgICAgICAgIGdyb3VwOiBnZXR0ZXh0KCdEZWZpbml0aW9uJyksCi0gICAgICAgICAg dHlwZTogJ3RleHQnLG1vZGU6IFsnY3JlYXRlJywnZWRpdCcsICdwcm9wZXJ0aWVzJ10sIGRlcHM6 IFsndGZ1bmN0aW9uJ10sCi0gICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKLSAgICAg ICAgICAgIC8vIFdlIHdpbGwgZGlzYWJsZSBpdCB3aGVuIEVEQiBQUEFTIGFuZCB0cmlnZ2VyIGZ1 bmN0aW9uIGlzCi0gICAgICAgICAgICAvLyBzZXQgdG8gSW5saW5lIEVEQi1TUEwKLSAgICAgICAg ICAgIHZhciB0ZnVuY3Rpb24gPSBtLmdldCgndGZ1bmN0aW9uJyksCi0gICAgICAgICAgICAgIHNl cnZlcl90eXBlID0gbS5ub2RlX2luZm9bJ3NlcnZlciddWydzZXJ2ZXJfdHlwZSddOwotICAgICAg ICAgICAgaWYoIW0uaW5TY2hlbWFXaXRoTW9kZWxDaGVjay5hcHBseSh0aGlzLCBbbV0pKSB7Ci0g ICAgICAgICAgICAgIGlmKHNlcnZlcl90eXBlID09PSAncHBhcycgJiYKLSAgICAgICAgICAgICAg ICAhXy5pc1VuZGVmaW5lZCh0ZnVuY3Rpb24pICYmCi0gICAgICAgICAgICAgICAgICB0ZnVuY3Rp b24gPT09ICdJbmxpbmUgRURCLVNQTCcpIHsKLSAgICAgICAgICAgICAgICAvLyBEaXNhYmxlIGFu ZCBjbGVhciBpdHMgdmFsdWUKLSAgICAgICAgICAgICAgICBtLnNldCgndGdhcmdzJywgdW5kZWZp bmVkKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgfSBlbHNl IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgIH0KLSAgICAg ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIC8vIERpc2FibGUgaXQKLSAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSwKLSAgICAgICAgfSx7 Ci0gICAgICAgICAgaWQ6ICdmaXJlcycsIGxhYmVsOiBnZXR0ZXh0KCdGaXJlcycpLCBkZXBzOiBb J2lzX2NvbnN0cmFpbnRfdHJpZ2dlciddLAotICAgICAgICAgIG1vZGU6IFsnY3JlYXRlJywnZWRp dCcsICdwcm9wZXJ0aWVzJ10sIGdyb3VwOiBnZXR0ZXh0KCdFdmVudHMnKSwKLSAgICAgICAgICBv cHRpb25zOiBmdW5jdGlvbihjb250cm9sKSB7Ci0gICAgICAgICAgICB2YXIgdGFibGVfb3B0aW9u cyA9IFsKLSAgICAgICAgICAgICAgICB7bGFiZWw6ICdCRUZPUkUnLCB2YWx1ZTogJ0JFRk9SRSd9 LAotICAgICAgICAgICAgICAgIHtsYWJlbDogJ0FGVEVSJywgdmFsdWU6ICdBRlRFUid9XSwKLSAg ICAgICAgICAgICAgdmlld19vcHRpb25zID0gWwotICAgICAgICAgICAgICAgIHtsYWJlbDogJ0JF Rk9SRScsIHZhbHVlOiAnQkVGT1JFJ30sCi0gICAgICAgICAgICAgICAge2xhYmVsOiAnQUZURVIn LCB2YWx1ZTogJ0FGVEVSJ30sCi0gICAgICAgICAgICAgICAge2xhYmVsOiAnSU5TVEVBRCBPRics IHZhbHVlOiAnSU5TVEVBRCBPRid9XTsKLSAgICAgICAgICAgIC8vIElmIHdlIGFyZSB1bmRlciB0 YWJsZSB0aGVuIHNob3cgdGFibGUgc3BlY2lmaWMgb3B0aW9ucwotICAgICAgICAgICAgaWYoXy5p bmRleE9mKE9iamVjdC5rZXlzKGNvbnRyb2wubW9kZWwubm9kZV9pbmZvKSwgJ3RhYmxlJykgIT0g LTEpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlX29wdGlvbnM7Ci0gICAgICAgICAgICB9 IGVsc2UgewotICAgICAgICAgICAgICByZXR1cm4gdmlld19vcHRpb25zOwotICAgICAgICAgICAg fQotICAgICAgICAgIH0sCi0gICAgICAgICAgY29udHJvbDogJ3NlbGVjdDInLCBzZWxlY3QyOiB7 IGFsbG93Q2xlYXI6IGZhbHNlLCB3aWR0aDogJzEwMCUnIH0sCi0gICAgICAgICAgZGlzYWJsZWQ6 IGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgICAgIGlmICghbS5pc05ldygpKQotICAgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIC8vIElmIGNvbnRyYWludCB0cmlnZ2VyIGlzIHNl dCB0byBUcnVlIHRoZW4gb25seSBlbmFibGUgaXQKLSAgICAgICAgICAgIHZhciBpc19jb25zdHJh aW50X3RyaWdnZXIgPSBtLmdldCgnaXNfY29uc3RyYWludF90cmlnZ2VyJyk7Ci0gICAgICAgICAg ICBpZighbS5pblNjaGVtYVdpdGhNb2RlbENoZWNrLmFwcGx5KHRoaXMsIFttXSkpIHsKLSAgICAg ICAgICAgICAgaWYoIV8uaXNVbmRlZmluZWQoaXNfY29uc3RyYWludF90cmlnZ2VyKSAmJgotICAg ICAgICAgICAgICAgIGlzX2NvbnN0cmFpbnRfdHJpZ2dlciA9PT0gdHJ1ZSkgewotICAgICAgICAg ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IG0uc2V0KCdmaXJlcycsICdBRlRFUicpOyB9 LCAxMCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgIH0gZWxz ZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICB9Ci0gICAg ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAvLyBDaGVjayBpZiBpdCBpcyByb3cgdHJp Z2dlciB0aGVuIGVuYWJsZWQgaXQuCi0gICAgICAgICAgICAgIHZhciBmaXJlc18gPSBtLmdldCgn ZmlyZXMnKTsKLSAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKGZpcmVzXykgJiYgbS5u b2RlX2luZm9bJ3NlcnZlciddWydzZXJ2ZXJfdHlwZSddID09ICdwcGFzJykgewotICAgICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAvLyBE aXNhYmxlIGl0Ci0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAg ICAgICAgIH0sCi0gICAgICAgIH0sewotICAgICAgICAgIHR5cGU6ICduZXN0ZWQnLCBjb250cm9s OiAnZmllbGRzZXQnLCBtb2RlOiBbJ2NyZWF0ZScsJ2VkaXQnLCAncHJvcGVydGllcyddLAotICAg ICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdFdmVudHMnKSwgZ3JvdXA6IGdldHRleHQoJ0V2ZW50cycp LCBjb250ZW50Q2xhc3M6ICdyb3cnLAotICAgICAgICAgIHNjaGVtYTpbewotICAgICAgICAgICAg aWQ6ICdldm50X2luc2VydCcsIGxhYmVsOiBnZXR0ZXh0KCdJTlNFUlQnKSwKLSAgICAgICAgICAg IHR5cGU6ICdzd2l0Y2gnLCBtb2RlOiBbJ2NyZWF0ZScsJ2VkaXQnLCAncHJvcGVydGllcyddLAot ICAgICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ0V2ZW50cycpLAotICAgICAgICAgICAgZXh0cmFU b2dnbGVDbGFzc2VzOiAncGctZWwtc20tNicsCi0gICAgICAgICAgICBjb250cm9sTGFiZWxDbGFz c05hbWU6ICdjb250cm9sLWxhYmVsIHBnLWVsLXNtLTUgcGctZWwtMTInLAotICAgICAgICAgICAg Y29udHJvbHNDbGFzc05hbWU6ICdwZ2FkbWluLWNvbnRyb2xzIHBnLWVsLXNtLTcgcGctZWwtMTIn LAotICAgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgICAgICAgdmFy IGV2bl9pbnNlcnQgPSBtLmdldCgnZXZudF9pbnNlcnQnKTsKLSAgICAgICAgICAgICAgaWYgKCFf LmlzVW5kZWZpbmVkKGV2bl9pbnNlcnQpICYmIG0ubm9kZV9pbmZvWydzZXJ2ZXInXVsnc2VydmVy X3R5cGUnXSA9PSAncHBhcycgJiYgbS5pc05ldygpKQotICAgICAgICAgICAgICAgIHJldHVybiBm YWxzZTsKLSAgICAgICAgICAgICAgcmV0dXJuIG0uaW5TY2hlbWFXaXRoTW9kZWxDaGVjay5hcHBs eSh0aGlzLCBbbV0pOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICB9LHsKLSAgICAgICAgICAg IGlkOiAnZXZudF91cGRhdGUnLCBsYWJlbDogZ2V0dGV4dCgnVVBEQVRFJyksCi0gICAgICAgICAg ICB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydjcmVhdGUnLCdlZGl0JywgJ3Byb3BlcnRpZXMnXSwK LSAgICAgICAgICAgIGdyb3VwOiBnZXR0ZXh0KCdFdmVudHMnKSwKLSAgICAgICAgICAgIGV4dHJh VG9nZ2xlQ2xhc3NlczogJ3BnLWVsLXNtLTYnLAotICAgICAgICAgICAgY29udHJvbExhYmVsQ2xh c3NOYW1lOiAnY29udHJvbC1sYWJlbCBwZy1lbC1zbS01IHBnLWVsLTEyJywKLSAgICAgICAgICAg IGNvbnRyb2xzQ2xhc3NOYW1lOiAncGdhZG1pbi1jb250cm9scyBwZy1lbC1zbS03IHBnLWVsLTEy JywKLSAgICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgICAgIHZh ciBldm5fdXBkYXRlID0gbS5nZXQoJ2V2bnRfdXBkYXRlJyk7Ci0gICAgICAgICAgICAgIGlmICgh Xy5pc1VuZGVmaW5lZChldm5fdXBkYXRlKSAmJiBtLm5vZGVfaW5mb1snc2VydmVyJ11bJ3NlcnZl cl90eXBlJ10gPT0gJ3BwYXMnICYmIG0uaXNOZXcoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7Ci0gICAgICAgICAgICAgIHJldHVybiBtLmluU2NoZW1hV2l0aE1vZGVsQ2hlY2suYXBw bHkodGhpcywgW21dKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgfSx7Ci0gICAgICAgICAg ICBpZDogJ2V2bnRfZGVsZXRlJywgbGFiZWw6IGdldHRleHQoJ0RFTEVURScpLAotICAgICAgICAg ICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6IFsnY3JlYXRlJywnZWRpdCcsICdwcm9wZXJ0aWVzJ10s Ci0gICAgICAgICAgICBncm91cDogZ2V0dGV4dCgnRXZlbnRzJyksCi0gICAgICAgICAgICBleHRy YVRvZ2dsZUNsYXNzZXM6ICdwZy1lbC1zbS02JywKLSAgICAgICAgICAgIGNvbnRyb2xMYWJlbENs YXNzTmFtZTogJ2NvbnRyb2wtbGFiZWwgcGctZWwtc20tNSBwZy1lbC0xMicsCi0gICAgICAgICAg ICBjb250cm9sc0NsYXNzTmFtZTogJ3BnYWRtaW4tY29udHJvbHMgcGctZWwtc20tNyBwZy1lbC0x MicsCi0gICAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgewotICAgICAgICAgICAgICB2 YXIgZXZuX2RlbGV0ZSA9IG0uZ2V0KCdldm50X2RlbGV0ZScpOwotICAgICAgICAgICAgICBpZiAo IV8uaXNVbmRlZmluZWQoZXZuX2RlbGV0ZSkgJiYgbS5ub2RlX2luZm9bJ3NlcnZlciddWydzZXJ2 ZXJfdHlwZSddID09ICdwcGFzJyAmJiBtLmlzTmV3KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu IGZhbHNlOwotICAgICAgICAgICAgICByZXR1cm4gbS5pblNjaGVtYVdpdGhNb2RlbENoZWNrLmFw cGx5KHRoaXMsIFttXSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgIH0sewotICAgICAgICAg ICAgaWQ6ICdldm50X3RydW5jYXRlJywgbGFiZWw6IGdldHRleHQoJ1RSVU5DQVRFJyksCi0gICAg ICAgICAgICB0eXBlOiAnc3dpdGNoJywgZ3JvdXA6IGdldHRleHQoJ0V2ZW50cycpLGRlcHM6IFsn aXNfcm93X3RyaWdnZXInLCAnaXNfY29uc3RyYWludF90cmlnZ2VyJ10sCi0gICAgICAgICAgICBl eHRyYVRvZ2dsZUNsYXNzZXM6ICdwZy1lbC1zbS02JywKLSAgICAgICAgICAgIGNvbnRyb2xMYWJl bENsYXNzTmFtZTogJ2NvbnRyb2wtbGFiZWwgcGctZWwtc20tNSBwZy1lbC0xMicsCi0gICAgICAg ICAgICBjb250cm9sc0NsYXNzTmFtZTogJ3BnYWRtaW4tY29udHJvbHMgcGctZWwtc20tNyBwZy1l bC0xMicsCi0gICAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgewotICAgICAgICAgICAg ICB2YXIgaXNfY29uc3RyYWludF90cmlnZ2VyID0gbS5nZXQoJ2lzX2NvbnN0cmFpbnRfdHJpZ2dl cicpLAotICAgICAgICAgICAgICAgIGlzX3Jvd190cmlnZ2VyID0gbS5nZXQoJ2lzX3Jvd190cmln Z2VyJyksCi0gICAgICAgICAgICAgICAgc2VydmVyX3R5cGUgPSBtLm5vZGVfaW5mb1snc2VydmVy J11bJ3NlcnZlcl90eXBlJ107Ci0gICAgICAgICAgICAgIGlmIChpc19yb3dfdHJpZ2dlciA9PSB0 cnVlKXsKLSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Ci0gICAgICAgICAg ICAgICAgICBtLnNldCgnZXZudF90cnVuY2F0ZScsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICB9 LDEwKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgfQotCi0g ICAgICAgICAgICAgIGlmIChzZXJ2ZXJfdHlwZSA9PT0gJ3BwYXMnICYmCi0gICAgICAgICAgICAg ICAgICAhXy5pc1VuZGVmaW5lZChpc19jb25zdHJhaW50X3RyaWdnZXIpICYmCi0gICAgICAgICAg ICAgICAgICAgICFfLmlzVW5kZWZpbmVkKGlzX3Jvd190cmlnZ2VyKSAmJgotICAgICAgICAgICAg ICAgICAgICBpc19jb25zdHJhaW50X3RyaWdnZXIgPT09IGZhbHNlICYmIG0uaXNOZXcoKSkKLSAg ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgIHJldHVybiBtLmluU2No ZW1hV2l0aE1vZGVsQ2hlY2suYXBwbHkodGhpcywgW21dKTsKLSAgICAgICAgICAgIH0sCi0gICAg ICAgICAgfV0sCi0gICAgICAgIH0sewotICAgICAgICAgIGlkOiAnd2hlbmNsYXVzZScsIGxhYmVs OiBnZXR0ZXh0KCdXaGVuJyksCi0gICAgICAgICAgdHlwZTogJ3RleHQnLCBkaXNhYmxlZDogJ2lu U2NoZW1hV2l0aE1vZGVsQ2hlY2snLAotICAgICAgICAgIG1vZGU6IFsnY3JlYXRlJywgJ2VkaXQn LCAncHJvcGVydGllcyddLAotICAgICAgICAgIGNvbnRyb2w6ICdzcWwtZmllbGQnLCB2aXNpYmxl OiB0cnVlLCBncm91cDogZ2V0dGV4dCgnRXZlbnRzJyksCi0gICAgICAgIH0sewotICAgICAgICAg IGlkOiAnY29sdW1ucycsIGxhYmVsOiBnZXR0ZXh0KCdDb2x1bW5zJyksIHVybDogJ25vZGVzJywK LSAgICAgICAgICBjb250cm9sOiAnbm9kZS1saXN0LWJ5LW5hbWUnLCBjYWNoZV9ub2RlOiAnY29s dW1uJywgdHlwZTogJ2FycmF5JywKLSAgICAgICAgICBzZWxlY3QyOiB7J211bHRpcGxlJzogdHJ1 ZX0sCi0gICAgICAgICAgZGVwczogWydldm50X3VwZGF0ZSddLCBub2RlOiAnY29sdW1uJywgZ3Jv dXA6IGdldHRleHQoJ0V2ZW50cycpLAotICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7 Ci0gICAgICAgICAgICBpZih0aGlzLm5vZGVfaW5mbyAmJiAgJ2NhdGFsb2cnIGluIHRoaXMubm9k ZV9pbmZvKSB7Ci0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAg ICAgICAgICAgLy9EaXNhYmxlIGluIGVkaXQgbW9kZQotICAgICAgICAgICAgaWYgKCFtLmlzTmV3 KCkpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAg ICAgICAvLyBFbmFibGUgY29sdW1uIG9ubHkgaWYgdXBkYXRlIGV2ZW50IGlzIHNldCB0cnVlCi0g ICAgICAgICAgICB2YXIgaXNVcGRhdGUgPSBtLmdldCgnZXZudF91cGRhdGUnKTsKLSAgICAgICAg ICAgIGlmKCFfLmlzVW5kZWZpbmVkKGlzVXBkYXRlKSAmJiBpc1VwZGF0ZSkgewotICAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKLSAgICAgICAgICB9LAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ3Rnb2xkdGFibGUn LCBsYWJlbDogZ2V0dGV4dCgnT2xkIHRhYmxlJyksCi0gICAgICAgICAgdHlwZTogJ3RleHQnLCBn cm91cDogZ2V0dGV4dCgnVHJhbnNpdGlvbicpLAotICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLCBt b2RlOiBbJ2NyZWF0ZScsICdlZGl0JywgJ3Byb3BlcnRpZXMnXSwKLSAgICAgICAgICBkZXBzOiBb J2ZpcmVzJywgJ2lzX2NvbnN0cmFpbnRfdHJpZ2dlcicsICdldm50X2luc2VydCcsICdldm50X3Vw ZGF0ZScsICdldm50X2RlbGV0ZScsICdjb2x1bW5zJ10sCi0gICAgICAgICAgZGlzYWJsZWQ6ICdk aXNhYmxlVHJhbnNpdGlvbicsCi0gICAgICAgIH0sewotICAgICAgICAgIGlkOiAndGduZXd0YWJs ZScsIGxhYmVsOiBnZXR0ZXh0KCdOZXcgdGFibGUnKSwKLSAgICAgICAgICB0eXBlOiAndGV4dCcs IGdyb3VwOiBnZXR0ZXh0KCdUcmFuc2l0aW9uJyksCi0gICAgICAgICAgY2VsbDogJ3N0cmluZycs IG1vZGU6IFsnY3JlYXRlJywgJ2VkaXQnLCAncHJvcGVydGllcyddLAotICAgICAgICAgIGRlcHM6 IFsnZmlyZXMnLCAnaXNfY29uc3RyYWludF90cmlnZ2VyJywgJ2V2bnRfaW5zZXJ0JywgJ2V2bnRf dXBkYXRlJywgJ2V2bnRfZGVsZXRlJywgJ2NvbHVtbnMnXSwKLSAgICAgICAgICBkaXNhYmxlZDog J2Rpc2FibGVUcmFuc2l0aW9uJywKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdwcm9zcmMn LCBsYWJlbDogZ2V0dGV4dCgnQ29kZScpLCBncm91cDogZ2V0dGV4dCgnQ29kZScpLAotICAgICAg ICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydjcmVhdGUnLCAnZWRpdCddLCBkZXBzOiBbJ3RmdW5j dGlvbiddLAotICAgICAgICAgIHRhYlBhbmVsQ29kZUNsYXNzOiAnc3FsLWNvZGUtY29udHJvbCcs Ci0gICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uU3FsQ29kZUNvbnRyb2wsCi0gICAgICAgICAg dmlzaWJsZTogdHJ1ZSwKLSAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgewotICAgICAg ICAgICAgLy8gV2Ugd2lsbCBlbmFibGUgaXQgb25seSB3aGVuIEVEQiBQUEFTIGFuZCB0cmlnZ2Vy IGZ1bmN0aW9uIGlzCi0gICAgICAgICAgICAvLyBzZXQgdG8gSW5saW5lIEVEQi1TUEwKLSAgICAg ICAgICAgIHZhciB0ZnVuY3Rpb24gPSBtLmdldCgndGZ1bmN0aW9uJyksCi0gICAgICAgICAgICAg IHNlcnZlcl90eXBlID0gbS5ub2RlX2luZm9bJ3NlcnZlciddWydzZXJ2ZXJfdHlwZSddOwotCi0g ICAgICAgICAgICByZXR1cm4gKHNlcnZlcl90eXBlICE9PSAncHBhcycgfHwKLSAgICAgICAgICAg IF8uaXNVbmRlZmluZWQodGZ1bmN0aW9uKSB8fAotICAgICAgICAgICAgICB0ZnVuY3Rpb24gIT09 ICdJbmxpbmUgRURCLVNQTCcpOwotICAgICAgICAgIH0sCi0gICAgICAgIH0sewotICAgICAgICAg IGlkOiAnaXNfc3lzX3RyaWdnZXInLCBsYWJlbDogZ2V0dGV4dCgnU3lzdGVtIHRyaWdnZXI/Jyks IGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBkaXNhYmxlZDogJ2lu U2NoZW1hV2l0aE1vZGVsQ2hlY2snLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwKLSAgICAgICAgfSx7 Ci0gICAgICAgICAgaWQ6ICdkZXNjcmlwdGlvbicsIGxhYmVsOiBnZXR0ZXh0KCdDb21tZW50Jyks IGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICdtdWx0aWxpbmUnLCBtb2RlOiBbJ3By b3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKLSAgICAgICAgICBkaXNhYmxlZDogJ2luU2No ZW1hJywKLSAgICAgICAgfV0sCi0gICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbihrZXlzKSB7Ci0g ICAgICAgICAgdmFyIG1zZzsKLSAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuY2xlYXIoKTsKLQot ICAgICAgICAgIC8vIElmIG5vdGhpbmcgdG8gdmFsaWRhdGUKLSAgICAgICAgICBpZiAoa2V5cyAm JiBrZXlzLmxlbmd0aCA9PSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAg ICB9Ci0KLSAgICAgICAgICBpZihfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCduYW1lJykpCi0gICAg ICAgICAgICB8fCBTdHJpbmcodGhpcy5nZXQoJ25hbWUnKSkucmVwbGFjZSgvXlxzK3xccyskL2cs ICcnKSA9PSAnJykgewotICAgICAgICAgICAgbXNnID0gZ2V0dGV4dCgnTmFtZSBjYW5ub3QgYmUg ZW1wdHkuJyk7Ci0gICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCduYW1lJywgbXNnKTsK LSAgICAgICAgICAgIHJldHVybiBtc2c7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmKF8uaXNV bmRlZmluZWQodGhpcy5nZXQoJ3RmdW5jdGlvbicpKQotICAgICAgICAgICAgfHwgU3RyaW5nKHRo aXMuZ2V0KCd0ZnVuY3Rpb24nKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewot ICAgICAgICAgICAgbXNnID0gZ2V0dGV4dCgnVHJpZ2dlciBmdW5jdGlvbiBjYW5ub3QgYmUgZW1w dHkuJyk7Ci0gICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCd0ZnVuY3Rpb24nLCBtc2cp OwotICAgICAgICAgICAgcmV0dXJuIG1zZzsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBpZigh dGhpcy5nZXQoJ2V2bnRfdHJ1bmNhdGUnKSAmJiAhdGhpcy5nZXQoJ2V2bnRfZGVsZXRlJykgJiYK LSAgICAgICAgICAgICF0aGlzLmdldCgnZXZudF91cGRhdGUnKSAmJiAhdGhpcy5nZXQoJ2V2bnRf aW5zZXJ0JykpIHsKLSAgICAgICAgICAgIG1zZyA9IGdldHRleHQoJ1NwZWNpZnkgYXQgbGVhc3Qg b25lIGV2ZW50LicpOwotICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnZXZudF90cnVu Y2F0ZScsICcgJyk7Ci0gICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdldm50X2RlbGV0 ZScsICcgJyk7Ci0gICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdldm50X3VwZGF0ZScs ICcgJyk7Ci0gICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdldm50X2luc2VydCcsIG1z Zyk7Ci0gICAgICAgICAgICByZXR1cm4gbXNnOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlm KCFfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCd0ZnVuY3Rpb24nKSkgJiYKLSAgICAgICAgICAgIHRo aXMuZ2V0KCd0ZnVuY3Rpb24nKSA9PT0gJ0lubGluZSBFREItU1BMJyAmJgotICAgICAgICAgICAg ICAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgncHJvc3JjJykpCi0gICAgICAgICAgICAgICAgfHwg U3RyaW5nKHRoaXMuZ2V0KCdwcm9zcmMnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAn JykpCi0gICAgICAgICAgewotICAgICAgICAgICAgbXNnID0gZ2V0dGV4dCgnVHJpZ2dlciBjb2Rl IGNhbm5vdCBiZSBlbXB0eS4nKTsKLSAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3By b3NyYycsIG1zZyk7Ci0gICAgICAgICAgICByZXR1cm4gbXNnOwotICAgICAgICAgIH0KLSAgICAg ICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfSwKLSAgICAgICAgLy8gV2Ugd2lsbCBjaGVjayBp ZiB3ZSBhcmUgdW5kZXIgc2NoZW1hIG5vZGUgJiBpbiAnY3JlYXRlJyBtb2RlCi0gICAgICAgIGlu U2NoZW1hOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICBpZih0aGlzLm5vZGVfaW5mbyAmJiAgJ2Nh dGFsb2cnIGluIHRoaXMubm9kZV9pbmZvKSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg ICAgICAgICB9Ci0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9LAotICAgICAgICAv LyBXZSB3aWxsIGNoZWNrIGlmIHdlIGFyZSB1bmRlciBzY2hlbWEgbm9kZSAmIGluICdjcmVhdGUn IG1vZGUKLSAgICAgICAgaW5TY2hlbWFXaXRoTW9kZWxDaGVjazogZnVuY3Rpb24obSkgewotICAg ICAgICAgIGlmKHRoaXMubm9kZV9pbmZvICYmICAnc2NoZW1hJyBpbiB0aGlzLm5vZGVfaW5mbykg ewotICAgICAgICAgICAgLy8gV2Ugd2lsbCBkaXNhYmxlIGNvbnRyb2wgaWYgaXQncyBpbiAnZWRp dCcgbW9kZQotICAgICAgICAgICAgcmV0dXJuICFtLmlzTmV3KCk7Ci0gICAgICAgICAgfQotICAg ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9LAotICAgICAgICAvLyBDaGVja3Mgd2VhdGhl ciB0byBlbmFibGUvZGlzYWJsZSBjb250cm9sCi0gICAgICAgIGluU2NoZW1hV2l0aENvbHVtbkNo ZWNrOiBmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgaWYodGhpcy5ub2RlX2luZm8gJiYgICdzY2hl bWEnIGluIHRoaXMubm9kZV9pbmZvKSB7Ci0gICAgICAgICAgICAvLyBXZSB3aWxsIGRpc2FibGUg Y29udHJvbCBpZiBpdCdzIHN5c3RlbSBjb2x1bW5zCi0gICAgICAgICAgICAvLyBpZTogaXQncyBw b3NpdGlvbiBpcyBsZXNzIHRoZW4gMQotICAgICAgICAgICAgaWYgKG0uaXNOZXcoKSkgewotICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg ICAgICAvLyBpZiB3ZSBhcmUgaW4gZWRpdCBtb2RlCi0gICAgICAgICAgICAgIHJldHVybiAoXy5p c1VuZGVmaW5lZChtLmdldCgnYXR0bnVtJykpIHx8IG0uZ2V0KCdhdHRudW0nKSA8IDEgKTsKLSAg ICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg IH0sCi0gICAgICAgIC8vIERpc2FibGUvRW5hYmxlIFRyYW5zaXRpb24gdGFibGVzCi0gICAgICAg IGRpc2FibGVUcmFuc2l0aW9uOiBmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgaWYgKCFtLmlzTmV3 KCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICB2YXIgZmxhZyA9IGZhbHNl LAotICAgICAgICAgICAgZXZudCA9IG51bGwsCi0gICAgICAgICAgICBuYW1lID0gdGhpcy5uYW1l LAotICAgICAgICAgICAgZXZudF9jb3VudCA9IDA7Ci0KLSAgICAgICAgICAvLyBEaXNhYmxlIHRy YW5zaXRpb24gdGFibGVzIGZvciB2aWV3IHRyaWdnZXIgYW5kIFBHIHZlcnNpb24gPCAxMDAwMDAK LSAgICAgICAgICBpZihfLmluZGV4T2YoT2JqZWN0LmtleXMobS5ub2RlX2luZm8pLCAndGFibGUn KSA9PSAtMSB8fAotICAgICAgICAgICAgbS5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24gPCAxMDAw MDApIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgaWYgKG5hbWUgPT0gJ3Rnb2xkdGFibGUnKSBl dm50ID0gJ2V2bnRfZGVsZXRlJzsKLSAgICAgICAgICBlbHNlIGlmIChuYW1lID09ICd0Z25ld3Rh YmxlJykgZXZudCA9ICdldm50X2luc2VydCc7Ci0KLSAgICAgICAgICBpZihtLmdldCgnZXZudF9p bnNlcnQnKSkgZXZudF9jb3VudCsrOwotICAgICAgICAgIGlmKG0uZ2V0KCdldm50X3VwZGF0ZScp KSBldm50X2NvdW50Kys7Ci0gICAgICAgICAgaWYobS5nZXQoJ2V2bnRfZGVsZXRlJykpIGV2bnRf Y291bnQrKzsKLQotCi0gICAgICAgICAgLy8gRGlzYWJsZSB0cmFuc2l0aW9uIHRhYmxlcyBpZgot ICAgICAgICAgIC8vICAtIEl0IGlzIGEgY29uc3RyYWludCB0cmlnZ2VyCi0gICAgICAgICAgLy8g IC0gRmlyZXMgb3RoZXIgdGhhbiBBRlRFUgotICAgICAgICAgIC8vICAtIE1vcmUgdGhhbiBvbmUg ZXZlbnRzIGVuYWJsZWQKLSAgICAgICAgICAvLyAgLSBVcGRhdGUgZXZlbnQgd2l0aCB0aGUgY29s dW1uIGxpc3QKLQotICAgICAgICAgIC8vIERpc2FibGUgT2xkIHRyYW5zaXRpb24gdGFibGUgaWYg Ym90aCBVUERBVEUgYW5kIERFTEVURSBldmVudHMgYXJlIGRpc2FibGVkCi0gICAgICAgICAgLy8g RGlzYWJsZSBOZXcgdHJhbnNpdGlvbiB0YWJsZSBpZiBib3RoIFVQREFURSBhbmQgSU5TRVJUIGV2 ZW50cyBhcmUgZGlzYWJsZWQKLSAgICAgICAgICBpZighbS5nZXQoJ2lzX2NvbnN0cmFpbnRfdHJp Z2dlcicpICYmIG0uZ2V0KCdmaXJlcycpID09ICdBRlRFUicgJiYKLSAgICAgICAgICAgIChtLmdl dCgnZXZudF91cGRhdGUnKSB8fCBtLmdldChldm50KSkgJiYgZXZudF9jb3VudCA9PSAxKSB7Ci0g ICAgICAgICAgICBmbGFnID0gKG0uZ2V0KCdldm50X3VwZGF0ZScpICYmIChfLnNpemUobS5nZXQo J2NvbHVtbnMnKSkgPj0gMSAmJiBtLmdldCgnY29sdW1ucycpWzBdICE9ICcnKSk7Ci0gICAgICAg ICAgfQotCi0gICAgICAgICAgZmxhZyAmJiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAg ICAgICAgaWYobS5nZXQobmFtZSkpIHsKLSAgICAgICAgICAgICAgbS5zZXQobmFtZSwgbnVsbCk7 Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSwxMCk7Ci0KLSAgICAgICAgICByZXR1cm4gZmxh ZzsKLSAgICAgICAgfSwKLSAgICAgIH0pLAogICAgICAgY2FuQ3JlYXRlOiBTY2hlbWFDaGlsZFRy ZWVOb2RlLmlzVHJlZUl0ZW1PZkNoaWxkT2ZTY2hlbWEsCiAgICAgICAvLyBDaGVjayB0byB3aGV0 aGVyIHRyaWdnZXIgaXMgZGlzYWJsZSA/CiAgICAgICBjYW5DcmVhdGVfd2l0aF90cmlnZ2VyX2Vu YWJsZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5 cGVzL3N0YXRpYy9qcy90eXBlLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvc3RhdGljL2pzL3R5cGUuanMKaW5kZXgg ZjBlYzI4N2YwLi41NmVmMTk4ZTEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3N0YXRpYy9qcy90eXBl LmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3R5cGVzL3N0YXRpYy9qcy90eXBlLmpzCkBAIC03NCw0OCArNzQsNiBAQCBk ZWZpbmUoJ3BnYWRtaW4ubm9kZS50eXBlJywgWwogCiAgICAgICB9LAogICAgICAgZXh0X2Z1bmNz OiB1bmRlZmluZWQsCi0gICAgICAvKiBGZXcgZmllbGRzIGFyZSBrZXB0IHNpbmNlIHRoZSBwcm9w ZXJ0aWVzIHRhYiBmb3IgY29sbGVjdGlvbiBpcyBub3QKLSAgICAgIHlldCBtaWdyYXRlZCB0byBu ZXcgcmVhY3Qgc2NoZW1hLiBPbmNlIHRoZSBwcm9wZXJ0aWVzIGZvciBjb2xsZWN0aW9uCi0gICAg ICBpcyByZW1vdmVkLCByZW1vdmUgdGhpcyBtb2RlbCAqLwotICAgICAgbW9kZWw6IHBnQnJvd3Nl ci5Ob2RlLk1vZGVsLmV4dGVuZCh7Ci0gICAgICAgIGlkQXR0cmlidXRlOiAnb2lkJywKLSAgICAg ICAgZGVmYXVsdHM6IHsKLSAgICAgICAgICBuYW1lOiB1bmRlZmluZWQsCi0gICAgICAgICAgaXNf c3lzX3R5cGU6IGZhbHNlLAotICAgICAgICAgIHR5cHR5cGU6IHVuZGVmaW5lZCwKLSAgICAgICAg fSwKLQotICAgICAgICAvLyBEZWZhdWx0IHZhbHVlcyEKLSAgICAgICAgaW5pdGlhbGl6ZTogZnVu Y3Rpb24oYXR0cnMsIGFyZ3MpIHsKLSAgICAgICAgICBpZiAoXy5zaXplKGF0dHJzKSA9PT0gMCkg ewotICAgICAgICAgICAgdmFyIHVzZXJJbmZvID0gcGdCcm93c2VyLnNlcnZlckluZm9bYXJncy5u b2RlX2luZm8uc2VydmVyLl9pZF0udXNlciwKLSAgICAgICAgICAgICAgc2NoZW1hSW5mbyA9IGFy Z3Mubm9kZV9pbmZvLnNjaGVtYTsKLQotICAgICAgICAgICAgdGhpcy5zZXQoewotICAgICAgICAg ICAgICAndHlwZW93bmVyJzogdXNlckluZm8ubmFtZSwgJ3NjaGVtYSc6IHNjaGVtYUluZm8uX2xh YmVsLAotICAgICAgICAgICAgfSwge3NpbGVudDogdHJ1ZX0pOwotICAgICAgICAgIH0KLSAgICAg ICAgICBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlz LCBhcmd1bWVudHMpOwotICAgICAgICB9LAotCi0gICAgICAgIHNjaGVtYTogW3sKLSAgICAgICAg ICBpZDogJ25hbWUnLCBsYWJlbDogZ2V0dGV4dCgnTmFtZScpLCBjZWxsOiAnc3RyaW5nJywKLSAg ICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRp dCddLAotICAgICAgICAgIGRpc2FibGVkOiAnc2NoZW1hQ2hlY2snLAotICAgICAgICB9LHsKLSAg ICAgICAgICBpZDogJ29pZCcsIGxhYmVsOiBnZXR0ZXh0KCdPSUQnKSwgY2VsbDogJ3N0cmluZycs Ci0gICAgICAgICAgdHlwZTogJ3RleHQnICwgbW9kZTogWydwcm9wZXJ0aWVzJ10sCi0gICAgICAg IH0sewotICAgICAgICAgIGlkOiAndHlwZW93bmVyJywgbGFiZWw6IGdldHRleHQoJ093bmVyJyks IGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIGNvbnRyb2w6ICdub2RlLWxpc3QtYnktbmFtZScs Ci0gICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywg J2VkaXQnXSwgbm9kZTogJ3JvbGUnLAotICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWEnLCBz ZWxlY3QyOiB7YWxsb3dDbGVhcjogZmFsc2V9LAotICAgICAgICB9LCB7Ci0gICAgICAgICAgaWQ6 ICdkZXNjcmlwdGlvbicsIGxhYmVsOiBnZXR0ZXh0KCdDb21tZW50JyksIGNlbGw6ICdzdHJpbmcn LAotICAgICAgICAgIHR5cGU6ICdtdWx0aWxpbmUnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3Jl YXRlJywgJ2VkaXQnXSwKLSAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hJywKLSAgICAgICAg fV0KLSAgICAgIH0pLAogICAgICAgZ2V0U2NoZW1hOiAodHJlZU5vZGVJbmZvLCBpdGVtTm9kZURh dGEpID0+IHsKICAgICAgICAgbGV0IG5vZGVPYmogPSBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ3R5 cGUnXTsKICAgICAgICAgcmV0dXJuIG5ldyBUeXBlU2NoZW1hKApkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmll d3Mvc3RhdGljL2pzL212aWV3LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mvc3RhdGljL2pzL212aWV3LmpzCmluZGV4 IDM5MzcwN2M5Yi4uY2JmZDY4NjY3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy9zdGF0aWMvanMvbXZp ZXcuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdmlld3Mvc3RhdGljL2pzL212aWV3LmpzCkBAIC0xNDYsOTMgKzE0Niw2 IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLm12aWV3JywgWwogICAgICAgICAgIH0KICAgICAgICAg KTsKICAgICAgIH0sCi0gICAgICAvKioKLSAgICAgICAgRGVmaW5lIG1vZGVsIGZvciB0aGUgdmll dyBub2RlIGFuZCBzcGVjaWZ5IHRoZQotICAgICAgICBwcm9wZXJ0aWVzIG9mIHRoZSBtb2RlbCBp biBzY2hlbWEuCi0gICAgICAgKi8KLSAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5l eHRlbmQoewotICAgICAgICBpZEF0dHJpYnV0ZTogJ29pZCcsCi0gICAgICAgIGluaXRpYWxpemU6 IGZ1bmN0aW9uKGF0dHJzLCBhcmdzKSB7Ci0gICAgICAgICAgaWYgKF8uc2l6ZShhdHRycykgPT09 IDApIHsKLSAgICAgICAgICAgIC8vIFNldCBTZWxlY3RlZCBTY2hlbWEgYW5kIEN1cnJlbnQgVXNl cgotICAgICAgICAgICAgdmFyIHNjaGVtYUxhYmVsID0gYXJncy5ub2RlX2luZm8uc2NoZW1hLl9s YWJlbCB8fCAncHVibGljJywKLSAgICAgICAgICAgICAgdXNlckluZm8gPSBwZ0Jyb3dzZXIuc2Vy dmVySW5mb1thcmdzLm5vZGVfaW5mby5zZXJ2ZXIuX2lkXS51c2VyOwotICAgICAgICAgICAgdGhp cy5zZXQoewotICAgICAgICAgICAgICAnc2NoZW1hJzogc2NoZW1hTGFiZWwsICdvd25lcic6IHVz ZXJJbmZvLm5hbWUsCi0gICAgICAgICAgICB9LCB7c2lsZW50OiB0cnVlfSk7Ci0gICAgICAgICAg fQotICAgICAgICAgIHBnQnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlwZS5pbml0aWFsaXplLmFw cGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICAgIH0sCi0gICAgICAgIGRlZmF1bHRzOiB7Ci0g ICAgICAgICAgc3BjbmFtZTogdW5kZWZpbmVkLAotICAgICAgICB9LAotICAgICAgICBzY2hlbWE6 IFt7Ci0gICAgICAgICAgaWQ6ICduYW1lJywgbGFiZWw6IGdldHRleHQoJ05hbWUnKSwgY2VsbDog J3N0cmluZycsCi0gICAgICAgICAgdHlwZTogJ3RleHQnLCBkaXNhYmxlZDogJ2luU2NoZW1hJywK LSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdvaWQnLCBsYWJlbDogZ2V0dGV4dCgnT0lEJyks IGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0 aWVzJ10sCi0gICAgICAgIH0sewotICAgICAgICAgIGlkOiAnb3duZXInLCBsYWJlbDogZ2V0dGV4 dCgnT3duZXInKSwgY2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgY29udHJvbDogJ25vZGUtbGlz dC1ieS1uYW1lJywgc2VsZWN0MjogeyBhbGxvd0NsZWFyOiBmYWxzZSB9LAotICAgICAgICAgIG5v ZGU6ICdyb2xlJywgZGlzYWJsZWQ6ICdpblNjaGVtYScsCi0gICAgICAgIH0sewotICAgICAgICAg IGlkOiAnY29tbWVudCcsIGxhYmVsOiBnZXR0ZXh0KCdDb21tZW50JyksIGNlbGw6ICdzdHJpbmcn LAotICAgICAgICAgIHR5cGU6ICdtdWx0aWxpbmUnLAotICAgICAgICB9XSwKLSAgICAgICAgc2Vz c0NoYW5nZWQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgIC8qIElmIG9ubHkgY3VzdG9tIGF1dG92 YWN1dW0gb3B0aW9uIGlzIGVuYWJsZWQgdGhlIGNoZWNrIGlmIHRoZSBvcHRpb25zIHRhYmxlIGlz IGFsc28gY2hhbmdlZC4gKi8KLSAgICAgICAgICBpZihfLnNpemUodGhpcy5zZXNzQXR0cnMpID09 IDIgJiYgdGhpcy5zZXNzQXR0cnNbJ2F1dG92YWN1dW1fY3VzdG9tJ10gJiYgdGhpcy5zZXNzQXR0 cnNbJ3RvYXN0X2F1dG92YWN1dW0nXSkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCd2 YWN1dW1fdGFibGUnKS5zZXNzQ2hhbmdlZCgpIHx8IHRoaXMuZ2V0KCd2YWN1dW1fdG9hc3QnKS5z ZXNzQ2hhbmdlZCgpOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZihfLnNpemUodGhpcy5zZXNz QXR0cnMpID09IDEgJiYgKHRoaXMuc2Vzc0F0dHJzWydhdXRvdmFjdXVtX2N1c3RvbSddIHx8IHRo aXMuc2Vzc0F0dHJzWyd0b2FzdF9hdXRvdmFjdXVtJ10pKSB7Ci0gICAgICAgICAgICByZXR1cm4g dGhpcy5nZXQoJ3ZhY3V1bV90YWJsZScpLnNlc3NDaGFuZ2VkKCkgfHwgdGhpcy5nZXQoJ3ZhY3V1 bV90b2FzdCcpLnNlc3NDaGFuZ2VkKCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHJldHVybiBw Z0Jyb3dzZXIuRGF0YU1vZGVsLnByb3RvdHlwZS5zZXNzQ2hhbmdlZC5hcHBseSh0aGlzKTsKLSAg ICAgICAgfSwKLSAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKGtleXMpIHsKLQotICAgICAgICAg IC8vIFRyaWdnZXJzIHNwZWNpZmljIGVycm9yIG1lc3NhZ2VzIGZvciBmaWVsZHMKLSAgICAgICAg ICB2YXIgZXJyID0ge30sCi0gICAgICAgICAgICBlcnJtc2csCi0gICAgICAgICAgICBmaWVsZF9u YW1lID0gdGhpcy5nZXQoJ25hbWUnKSwKLSAgICAgICAgICAgIGZpZWxkX2RlZiA9IHRoaXMuZ2V0 KCdkZWZpbml0aW9uJyk7Ci0KLSAgICAgICAgICBpZihfLmluZGV4T2Yoa2V5cywgJ2F1dG92YWN1 dW1fY3VzdG9tJykpCi0gICAgICAgICAgICBpZiAoXy5pbmRleE9mKGtleXMsICdhdXRvdmFjdXVt X2VuYWJsZWQnKSAhPSAtMSB8fAotICAgICAgICAgICAgICBfLmluZGV4T2Yoa2V5cywgJ3RvYXN0 X2F1dG92YWN1dW1fZW5hYmxlZCcpICE9IC0xICkKLSAgICAgICAgICAgICAgcmV0dXJuIG51bGw7 Ci0KLSAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChmaWVsZF9uYW1lKSB8fCBfLmlzTnVsbChm aWVsZF9uYW1lKSB8fAotICAgICAgICAgICAgU3RyaW5nKGZpZWxkX25hbWUpLnJlcGxhY2UoL15c cyt8XHMrJC9nLCAnJykgPT0gJycpIHsKLSAgICAgICAgICAgIGVyclsnbmFtZSddID0gZ2V0dGV4 dCgnUGxlYXNlIHNwZWNpZnkgbmFtZS4nKTsKLSAgICAgICAgICAgIGVycm1zZyA9IGVyclsnbmFt ZSddOwotICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnbmFtZScsIGVycm1zZyk7Ci0g ICAgICAgICAgICByZXR1cm4gZXJybXNnOwotICAgICAgICAgIH1lbHNlewotICAgICAgICAgICAg dGhpcy5lcnJvck1vZGVsLnVuc2V0KCduYW1lJyk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlm IChfLmlzVW5kZWZpbmVkKGZpZWxkX2RlZikgfHwgXy5pc051bGwoZmllbGRfZGVmKSB8fAotICAg ICAgICAgICAgU3RyaW5nKGZpZWxkX2RlZikucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAn JykgewotICAgICAgICAgICAgZXJyWydkZWZpbml0aW9uJ10gPSBnZXR0ZXh0KCdQbGVhc2UgZW50 ZXIgdmlldyBkZWZpbml0aW9uLicpOwotICAgICAgICAgICAgZXJybXNnID0gZXJyWydkZWZpbml0 aW9uJ107Ci0gICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdkZWZpbml0aW9uJywgZXJy bXNnKTsKLSAgICAgICAgICAgIHJldHVybiBlcnJtc2c7Ci0gICAgICAgICAgfWVsc2V7Ci0gICAg ICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ2RlZmluaXRpb24nKTsKLSAgICAgICAgICB9 Ci0gICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0sCi0gICAgICAgIC8vIFdlIHdpbGwg ZGlzYWJsZSBldmVyeXRoaW5nIGlmIHdlIGFyZSB1bmRlciBjYXRhbG9nIG5vZGUKLSAgICAgICAg aW5TY2hlbWE6IGZ1bmN0aW9uKCkgewotICAgICAgICAgIGlmKHRoaXMubm9kZV9pbmZvICYmICdj YXRhbG9nJyBpbiB0aGlzLm5vZGVfaW5mbykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9 LAotCi0gICAgICB9KSwKIAogICAgICAgcmVmcmVzaF9tdmlldzogZnVuY3Rpb24oYXJncykgewog ICAgICAgICB2YXIgaW5wdXQgPSBhcmdzIHx8IHt9LApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mvc3Rh dGljL2pzL3ZpZXcuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy9zdGF0aWMvanMvdmlldy5qcwppbmRleCBiOThlYTZj NmMuLjBiYTk1Mjk1NCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mvc3RhdGljL2pzL3ZpZXcuanMKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdmlld3Mvc3RhdGljL2pzL3ZpZXcuanMKQEAgLTEwOCwxNjMgKzEwOCw2IEBAIGRlZmlu ZSgncGdhZG1pbi5ub2RlLnZpZXcnLCBbCiAgICAgICAgICAgfQogICAgICAgICApOwogICAgICAg fSwKLSAgICAgIC8qKgotICAgICAgICBEZWZpbmUgbW9kZWwgZm9yIHRoZSB2aWV3IG5vZGUgYW5k IHNwZWNpZnkgdGhlCi0gICAgICAgIHByb3BlcnRpZXMgb2YgdGhlIG1vZGVsIGluIHNjaGVtYS4K LSAgICAgICovCi0gICAgICBtb2RlbDogcGdCcm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKLSAg ICAgICAgaWRBdHRyaWJ1dGU6ICdvaWQnLAotICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihh dHRycywgYXJncykgewotICAgICAgICAgIGlmIChfLnNpemUoYXR0cnMpID09PSAwKSB7Ci0gICAg ICAgICAgICAvLyBTZXQgU2VsZWN0ZWQgU2NoZW1hIGFuZCwgQ3VycmVudCBVc2VyCi0gICAgICAg ICAgICB2YXIgc2NoZW1hTGFiZWwgPSBhcmdzLm5vZGVfaW5mby5zY2hlbWEuX2xhYmVsIHx8ICdw dWJsaWMnLAotICAgICAgICAgICAgICB1c2VySW5mbyA9IHBnQnJvd3Nlci5zZXJ2ZXJJbmZvW2Fy Z3Mubm9kZV9pbmZvLnNlcnZlci5faWRdLnVzZXI7Ci0gICAgICAgICAgICB0aGlzLnNldCh7Ci0g ICAgICAgICAgICAgICdzY2hlbWEnOiBzY2hlbWFMYWJlbCwgJ293bmVyJzogdXNlckluZm8ubmFt ZSwKLSAgICAgICAgICAgIH0sIHtzaWxlbnQ6IHRydWV9KTsKLSAgICAgICAgICB9Ci0gICAgICAg ICAgcGdCcm93c2VyLk5vZGUuTW9kZWwucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywg YXJndW1lbnRzKTsKLSAgICAgICAgfSwKLSAgICAgICAgc2NoZW1hOiBbewotICAgICAgICAgIGlk OiAnbmFtZScsIGxhYmVsOiBnZXR0ZXh0KCdOYW1lJyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAg ICAgIHR5cGU6ICd0ZXh0JywgZGlzYWJsZWQ6ICdub3RJblNjaGVtYScsCi0gICAgICAgIH0sewot ICAgICAgICAgIGlkOiAnb2lkJywgbGFiZWw6IGdldHRleHQoJ09JRCcpLCBjZWxsOiAnc3RyaW5n JywKLSAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddLAotICAgICAg ICB9LHsKLSAgICAgICAgICBpZDogJ293bmVyJywgbGFiZWw6IGdldHRleHQoJ093bmVyJyksIGNl bGw6ICdzdHJpbmcnLCBjb250cm9sOiAnbm9kZS1saXN0LWJ5LW5hbWUnLAotICAgICAgICAgIG5v ZGU6ICdyb2xlJywgZGlzYWJsZWQ6ICdub3RJblNjaGVtYScsIHNlbGVjdDI6IHsgYWxsb3dDbGVh cjogZmFsc2UgfSwKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdzY2hlbWEnLCBsYWJlbDog Z2V0dGV4dCgnU2NoZW1hJyksIGNlbGw6ICdzdHJpbmcnLCBmaXJzdF9lbXB0eTogZmFsc2UsCi0g ICAgICAgICAgY29udHJvbDogJ25vZGUtbGlzdC1ieS1uYW1lJywgdHlwZTogJ3RleHQnLCBjYWNo ZV9sZXZlbDogJ2RhdGFiYXNlJywKLSAgICAgICAgICBub2RlOiAnc2NoZW1hJywgZGlzYWJsZWQ6 ICdub3RJblNjaGVtYScsIG1vZGU6IFsnY3JlYXRlJywgJ2VkaXQnXSwKLSAgICAgICAgICBzZWxl Y3QyOiB7IGFsbG93Q2xlYXI6IGZhbHNlIH0sIGNhY2hlX25vZGU6ICdkYXRhYmFzZScsCi0gICAg ICAgIH0sewotICAgICAgICAgIGlkOiAnc3lzdGVtX3ZpZXcnLCBsYWJlbDogZ2V0dGV4dCgnU3lz dGVtIHZpZXc/JyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBt b2RlOiBbJ3Byb3BlcnRpZXMnXSwKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdhY2wnLCBs YWJlbDogZ2V0dGV4dCgnUHJpdmlsZWdlcycpLAotICAgICAgICAgIG1vZGU6IFsncHJvcGVydGll cyddLCB0eXBlOiAndGV4dCcsIGdyb3VwOiBnZXR0ZXh0KCdTZWN1cml0eScpLAotICAgICAgICB9 LHsKLSAgICAgICAgICBpZDogJ2NvbW1lbnQnLCBsYWJlbDogZ2V0dGV4dCgnQ29tbWVudCcpLCBj ZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICB0eXBlOiAnbXVsdGlsaW5lJywgZGlzYWJsZWQ6ICdu b3RJblNjaGVtYScsCi0gICAgICAgIH0sewotICAgICAgICAgIGlkOiAnc2VjdXJpdHlfYmFycmll cicsIGxhYmVsOiBnZXR0ZXh0KCdTZWN1cml0eSBiYXJyaWVyPycpLAotICAgICAgICAgIHR5cGU6 ICdzd2l0Y2gnLCBtaW5fdmVyc2lvbjogJzkwMjAwJywgZ3JvdXA6IGdldHRleHQoJ0RlZmluaXRp b24nKSwKLSAgICAgICAgICBkaXNhYmxlZDogJ25vdEluU2NoZW1hJywKLSAgICAgICAgfSx7Ci0g ICAgICAgICAgaWQ6ICdjaGVja19vcHRpb24nLCBsYWJlbDogZ2V0dGV4dCgnQ2hlY2sgb3B0aW9u cycpLAotICAgICAgICAgIGNvbnRyb2w6ICdzZWxlY3QyJywgZ3JvdXA6IGdldHRleHQoJ0RlZmlu aXRpb24nKSwgdHlwZTogJ3RleHQnLAotICAgICAgICAgIG1pbl92ZXJzaW9uOiAnOTA0MDAnLCBt b2RlOlsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLAotICAgICAgICAgIHNlbGVjdDI6 IHsKLSAgICAgICAgICAgIC8vIFNldCBzZWxlY3QyIG9wdGlvbiB3aWR0aCB0byAxMDAlCi0gICAg ICAgICAgICBhbGxvd0NsZWFyOiBmYWxzZSwKLSAgICAgICAgICB9LCBkaXNhYmxlZDogJ25vdElu U2NoZW1hJywKLSAgICAgICAgICBvcHRpb25zOlt7Ci0gICAgICAgICAgICBsYWJlbDogZ2V0dGV4 dCgnTm8nKSwgdmFsdWU6ICdubycsCi0gICAgICAgICAgfSx7Ci0gICAgICAgICAgICBsYWJlbDog Z2V0dGV4dCgnTG9jYWwnKSwgdmFsdWU6ICdsb2NhbCcsCi0gICAgICAgICAgfSx7Ci0gICAgICAg ICAgICBsYWJlbDogZ2V0dGV4dCgnQ2FzY2FkZWQnKSwgdmFsdWU6ICdjYXNjYWRlZCcsCi0gICAg ICAgICAgfV0sCi0gICAgICAgIH0sewotICAgICAgICAgIGlkOiAnZGVmaW5pdGlvbicsIGxhYmVs OiBnZXR0ZXh0KCdDb2RlJyksIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgIHR5cGU6ICd0ZXh0 JywgbW9kZTogWydjcmVhdGUnLCAnZWRpdCddLCBncm91cDogZ2V0dGV4dCgnQ29kZScpLAotICAg ICAgICAgIHRhYlBhbmVsQ29kZUNsYXNzOiAnc3FsLWNvZGUtY29udHJvbCcsCi0gICAgICAgICAg ZGlzYWJsZWQ6ICdub3RJblNjaGVtYScsCi0gICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uU3Fs Q29kZUNvbnRyb2wuZXh0ZW5kKHsKLSAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbigpIHsK LSAgICAgICAgICAgICAgQmFja2Zvcm0uU3FsQ29kZUNvbnRyb2wucHJvdG90eXBlLm9uQ2hhbmdl LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0KLSAgICAgICAgICAgICAgaWYgKCF0aGlzLm1vZGVs IHx8ICEoCi0gICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5jaGFuZ2VkICYmCi0gICAgICAgICAg ICAgICAgdGhpcy5tb2RlbC5ub2RlX2luZm8uc2VydmVyLnNlcnZlcl90eXBlID09ICdwZycgJiYK LSAgICAgICAgICAgICAgICAvLyBObyBuZWVkIHRvIGNoZWNrIHRoaXMgd2hlbiBjcmVhdGluZyBh IHZpZXcKLSAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLmdldCgnb2lkJykgIT09IHVuZGVmaW5l ZAotICAgICAgICAgICAgICApIHx8ICEoCi0gICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5vcmln U2Vzc0F0dHJzICYmCi0gICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5jaGFuZ2VkLmRlZmluaXRp b24gIT0gdGhpcy5tb2RlbC5vcmlnU2Vzc0F0dHJzLmRlZmluaXRpb24KLSAgICAgICAgICAgICAg KSkgewotICAgICAgICAgICAgICAgIHRoaXMubW9kZWwud2Fybl90ZXh0ID0gdW5kZWZpbmVkOwot ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg IGxldCBvbGRfZGVmID0gdGhpcy5tb2RlbC5vcmlnU2Vzc0F0dHJzLmRlZmluaXRpb24gJiYKLSAg ICAgICAgICAgICAgICB0aGlzLm1vZGVsLm9yaWdTZXNzQXR0cnMuZGVmaW5pdGlvbi5yZXBsYWNl KAotICAgICAgICAgICAgICAgICAgL1xzL2dpLCAnJwotICAgICAgICAgICAgICAgICkuc3BsaXQo J0ZST00nKSwKLSAgICAgICAgICAgICAgICBuZXdfZGVmID0gW107Ci0KLSAgICAgICAgICAgICAg aWYgKHRoaXMubW9kZWwuY2hhbmdlZC5kZWZpbml0aW9uICE9PSB1bmRlZmluZWQpIHsKLSAgICAg ICAgICAgICAgICBuZXdfZGVmID0gdGhpcy5tb2RlbC5jaGFuZ2VkLmRlZmluaXRpb24ucmVwbGFj ZSgKLSAgICAgICAgICAgICAgICAgIC9ccy9naSwgJycKLSAgICAgICAgICAgICAgICApLnNwbGl0 KCdGUk9NJyk7Ci0gICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICBpZiAoKG9sZF9kZWYu bGVuZ3RoICE9IG5ld19kZWYubGVuZ3RoKSB8fCAoCi0gICAgICAgICAgICAgICAgb2xkX2RlZi5s ZW5ndGggPiAxICYmICgKLSAgICAgICAgICAgICAgICAgIG9sZF9kZWZbMF0gIT0gbmV3X2RlZlsw XQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgKSkgewotICAgICAgICAgICAgICAg IHRoaXMubW9kZWwud2Fybl90ZXh0ID0gZ2V0dGV4dCgKLSAgICAgICAgICAgICAgICAgICdDaGFu Z2luZyB0aGUgY29sdW1ucyBpbiBhIHZpZXcgcmVxdWlyZXMgZHJvcHBpbmcgYW5kIHJlLWNyZWF0 aW5nIHRoZSB2aWV3LiBUaGlzIG1heSBmYWlsIGlmIG90aGVyIG9iamVjdHMgYXJlIGRlcGVuZGVu dCB1cG9uIHRoaXMgdmlldywgb3IgbWF5IGNhdXNlIHByb2NlZHVyYWwgZnVuY3Rpb25zIHRvIGZh aWwgaWYgdGhleSBhcmUgbm90IG1vZGlmaWVkIHRvIHRha2UgYWNjb3VudCBvZiB0aGUgY2hhbmdl cy4nCi0gICAgICAgICAgICAgICAgKSArICc8YnI+PGJyPjxiPicgKyBnZXR0ZXh0KCdEbyB5b3Ug d2lzaCB0byBjb250aW51ZT8nKSArCi0gICAgICAgICAgICAgICAgJzwvYj4nOwotICAgICAgICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHRoaXMubW9kZWwud2Fybl90ZXh0ID0gdW5k ZWZpbmVkOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgIH0pLAot ICAgICAgICB9LCBwZ0Jyb3dzZXIuU2VjdXJpdHlHcm91cFNjaGVtYSwgewotICAgICAgICAgIC8v IEFkZCBQcml2aWxlZ2UgQ29udHJvbAotICAgICAgICAgIGlkOiAnZGF0YWNsJywgbGFiZWw6IGdl dHRleHQoJ1ByaXZpbGVnZXMnKSwgdHlwZTogJ2NvbGxlY3Rpb24nLAotICAgICAgICAgIG1vZGVs OiBwZ0Jyb3dzZXIuTm9kZS5Qcml2aWxlZ2VSb2xlTW9kZWwuZXh0ZW5kKHsKLSAgICAgICAgICAg IHByaXZpbGVnZXM6IFsnYScsICdyJywgJ3cnLCAnZCcsICdEJywgJ3gnLCAndCddLAotICAgICAg ICAgIH0pLCB1bmlxdWVDb2wgOiBbJ2dyYW50ZWUnXSwgZWRpdGFibGU6IGZhbHNlLCBncm91cDog J3NlY3VyaXR5JywKLSAgICAgICAgICBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sIGNhbkFkZDog dHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLAotICAgICAgICAgIGNvbnRyb2w6ICd1bmlxdWUtY29sLWNv bGxlY3Rpb24nLCBkaXNhYmxlZDogJ25vdEluU2NoZW1hJywKLSAgICAgICAgfSx7Ci0gICAgICAg ICAgLy8gQWRkIFNlY3VyaXR5IExhYmVscyBDb250cm9sCi0gICAgICAgICAgaWQ6ICdzZWNsYWJl bHMnLCBsYWJlbDogZ2V0dGV4dCgnU2VjdXJpdHkgbGFiZWxzJyksCi0gICAgICAgICAgbW9kZWw6 IHBnQnJvd3Nlci5TZWNMYWJlbE1vZGVsLCBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdjb2xsZWN0 aW9uJywKLSAgICAgICAgICBjYW5FZGl0OiBmYWxzZSwgZ3JvdXA6ICdzZWN1cml0eScsIGNhbkRl bGV0ZTogdHJ1ZSwKLSAgICAgICAgICBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sIGNhbkFkZDog dHJ1ZSwgZGlzYWJsZWQ6ICdub3RJblNjaGVtYScsCi0gICAgICAgICAgY29udHJvbDogJ3VuaXF1 ZS1jb2wtY29sbGVjdGlvbicsIHVuaXF1ZUNvbCA6IFsncHJvdmlkZXInXSwKLSAgICAgICAgfV0s Ci0gICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAvLyBUcmlnZ2VycyBz cGVjaWZpYyBlcnJvciBtZXNzYWdlcyBmb3IgZmllbGRzCi0gICAgICAgICAgdmFyIGVyciA9IHt9 LAotICAgICAgICAgICAgZXJybXNnLAotICAgICAgICAgICAgZmllbGRfbmFtZSA9IHRoaXMuZ2V0 KCduYW1lJyksCi0gICAgICAgICAgICBmaWVsZF9kZWYgPSB0aGlzLmdldCgnZGVmaW5pdGlvbicp OwotICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGZpZWxkX25hbWUpIHx8IF8uaXNOdWxsKGZp ZWxkX25hbWUpIHx8Ci0gICAgICAgICAgICBTdHJpbmcoZmllbGRfbmFtZSkucmVwbGFjZSgvXlxz K3xccyskL2csICcnKSA9PSAnJykgewotICAgICAgICAgICAgZXJyWyduYW1lJ10gPSBnZXR0ZXh0 KCdQbGVhc2Ugc3BlY2lmeSBuYW1lLicpOwotICAgICAgICAgICAgZXJybXNnID0gZXJyWyduYW1l J107Ci0gICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCduYW1lJywgZXJybXNnKTsKLSAg ICAgICAgICAgIHJldHVybiBlcnJtc2c7Ci0gICAgICAgICAgfWVsc2V7Ci0gICAgICAgICAgICB0 aGlzLmVycm9yTW9kZWwudW5zZXQoJ25hbWUnKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYg KF8uaXNVbmRlZmluZWQoZmllbGRfZGVmKSB8fCBfLmlzTnVsbChmaWVsZF9kZWYpIHx8Ci0gICAg ICAgICAgICBTdHJpbmcoZmllbGRfZGVmKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcn KSB7Ci0gICAgICAgICAgICBlcnJbJ2RlZmluaXRpb24nXSA9IGdldHRleHQoJ1BsZWFzZSBlbnRl ciB2aWV3IGNvZGUuJyk7Ci0gICAgICAgICAgICBlcnJtc2cgPSBlcnJbJ2RlZmluaXRpb24nXTsK LSAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2RlZmluaXRpb24nLCBlcnJtc2cpOwot ICAgICAgICAgICAgcmV0dXJuIGVycm1zZzsKLSAgICAgICAgICB9ZWxzZXsKLSAgICAgICAgICAg IHRoaXMuZXJyb3JNb2RlbC51bnNldCgnZGVmaW5pdGlvbicpOwotICAgICAgICAgIH0KLSAgICAg ICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfSwKLSAgICAgICAgLy8gV2Ugd2lsbCBkaXNhYmxl IGV2ZXJ5dGhpbmcgaWYgd2UgYXJlIHVuZGVyIGNhdGFsb2cgbm9kZQotICAgICAgICBub3RJblNj aGVtYTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgaWYodGhpcy5ub2RlX2luZm8gJiYgJ2NhdGFs b2cnIGluIHRoaXMubm9kZV9pbmZvKSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg ICAgICB9Ci0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9LAotICAgICAgfSksCiAg ICAgfSk7CiAgIH0KIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3N0YXRpYy9qcy9kYXRhYmFzZS5qcyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zdGF0aWMvanMvZGF0YWJh c2UuanMKaW5kZXggMzQ0YWJjYWM1Li5hNjBmYzI2ZDkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zdGF0aWMvanMvZGF0YWJh c2UuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3N0YXRpYy9qcy9kYXRhYmFzZS5qcwpAQCAtMzUxLDQ1ICszNTEsNiBAQCBkZWZpbmUo J3BnYWRtaW4ubm9kZS5kYXRhYmFzZScsIFsKICAgICAgICAgICB9CiAgICAgICAgICk7CiAgICAg ICB9LAotICAgICAgLyogRmV3IGZpZWxkcyBhcmUga2VwdCBzaW5jZSB0aGUgcHJvcGVydGllcyB0 YWIgZm9yIGNvbGxlY3Rpb24gaXMgbm90Ci0gICAgICB5ZXQgbWlncmF0ZWQgdG8gbmV3IHJlYWN0 IHNjaGVtYS4gT25jZSB0aGUgcHJvcGVydGllcyBmb3IgY29sbGVjdGlvbgotICAgICAgaXMgcmVt b3ZlZCwgcmVtb3ZlIHRoaXMgbW9kZWwgKi8KLSAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZS5N b2RlbC5leHRlbmQoewotICAgICAgICBpZEF0dHJpYnV0ZTogJ2RpZCcsCi0gICAgICAgIGRlZmF1 bHRzOiB7Ci0gICAgICAgICAgbmFtZTogdW5kZWZpbmVkLAotICAgICAgICAgIG93bmVyOiB1bmRl ZmluZWQsCi0gICAgICAgICAgY29tbWVudDogdW5kZWZpbmVkLAotICAgICAgICB9LAotCi0gICAg ICAgIC8vIERlZmF1bHQgdmFsdWVzIQotICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihhdHRy cywgYXJncykgewotICAgICAgICAgIHZhciBpc05ldyA9IChfLnNpemUoYXR0cnMpID09PSAwKTsK LQotICAgICAgICAgIGlmIChpc05ldykgewotICAgICAgICAgICAgdmFyIHVzZXJJbmZvID0gcGdC cm93c2VyLnNlcnZlckluZm9bYXJncy5ub2RlX2luZm8uc2VydmVyLl9pZF0udXNlcjsKLSAgICAg ICAgICAgIHRoaXMuc2V0KHsnZGF0b3duZXInOiB1c2VySW5mby5uYW1lfSwge3NpbGVudDogdHJ1 ZX0pOwotICAgICAgICAgIH0KLSAgICAgICAgICBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5wcm90b3R5 cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotICAgICAgICB9LAotCi0gICAg ICAgIHNjaGVtYTogWwotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlkOiAnbmFtZScsIGxhYmVs OiBnZXR0ZXh0KCdEYXRhYmFzZScpLCBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgICAgIGVkaXRh YmxlOiBmYWxzZSwgdHlwZTogJ3RleHQnLAotICAgICAgICAgIH0sewotICAgICAgICAgICAgaWQ6 ICdkaWQnLCBsYWJlbDogZ2V0dGV4dCgnT0lEJyksIGNlbGw6ICdzdHJpbmcnLCBtb2RlOiBbJ3By b3BlcnRpZXMnXSwKLSAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTogJ3RleHQnLAot ICAgICAgICAgIH0sewotICAgICAgICAgICAgaWQ6ICdkYXRvd25lcicsIGxhYmVsOiBnZXR0ZXh0 KCdPd25lcicpLAotICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAndGV4dCcsIG5v ZGU6ICdyb2xlJywKLSAgICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLk5vZGVMaXN0QnlOYW1l Q29udHJvbCwgc2VsZWN0MjogeyBhbGxvd0NsZWFyOiBmYWxzZSB9LAotICAgICAgICAgIH0sewot ICAgICAgICAgICAgaWQ6ICdjb21tZW50cycsIGxhYmVsOiBnZXR0ZXh0KCdDb21tZW50JyksCi0g ICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdtdWx0aWxpbmUnLAotICAgICAgICAg IH0sCi0gICAgICAgIF0sCi0gICAgICB9KSwKICAgICB9KTsKIAogICAgIHBnQnJvd3Nlci5TZWN1 cml0eUdyb3VwU2NoZW1hID0gewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3N0YXRpYy9qcy9kYXRhYmFzZS51aS5qcyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zdGF0aWMv anMvZGF0YWJhc2UudWkuanMKaW5kZXggMDcxNWVhMWI3Li41YjAyNzE2ZDMgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zdGF0 aWMvanMvZGF0YWJhc2UudWkuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3N0YXRpYy9qcy9kYXRhYmFzZS51aS5qcwpAQCAtOTUsMjAg Kzk1LDIwIEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIERhdGFiYXNlU2NoZW1hIGV4dGVuZHMgQmFz ZVVJU2NoZW1hIHsKICAgICByZXR1cm4gWwogICAgICAgewogICAgICAgICBpZDogJ25hbWUnLCBs YWJlbDogZ2V0dGV4dCgnRGF0YWJhc2UnKSwgY2VsbDogJ3RleHQnLAotICAgICAgICBlZGl0YWJs ZTogZmFsc2UsIHR5cGU6ICd0ZXh0Jywgbm9FbXB0eTogdHJ1ZSwKKyAgICAgICAgZWRpdGFibGU6 IGZhbHNlLCB0eXBlOiAndGV4dCcsIG5vRW1wdHk6IHRydWUsIGlzQ29sbGVjdGlvblByb3BlcnR5 OiB0cnVlLAogICAgICAgfSx7CiAgICAgICAgIGlkOiAnZGlkJywgbGFiZWw6IGdldHRleHQoJ09J RCcpLCBjZWxsOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddLAogICAgICAgICBlZGl0YWJs ZTogZmFsc2UsIHR5cGU6ICd0ZXh0JywKICAgICAgIH0sewogICAgICAgICBpZDogJ2RhdG93bmVy JywgbGFiZWw6IGdldHRleHQoJ093bmVyJyksCiAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlw ZTogJ3NlbGVjdCcsIG9wdGlvbnM6IHRoaXMuZmllbGRPcHRpb25zLnJvbGUsCi0gICAgICAgIGNv bnRyb2xQcm9wczogeyBhbGxvd0NsZWFyOiBmYWxzZSB9LAorICAgICAgICBjb250cm9sUHJvcHM6 IHsgYWxsb3dDbGVhcjogZmFsc2UgfSwgaXNDb2xsZWN0aW9uUHJvcGVydHk6IHRydWUsCiAgICAg ICB9LHsKICAgICAgICAgaWQ6ICdpc19zeXNfb2JqJywgbGFiZWw6IGdldHRleHQoJ1N5c3RlbSBk YXRhYmFzZT8nKSwKICAgICAgICAgY2VsbDogJ3N3aXRjaCcsIHR5cGU6ICdzd2l0Y2gnLCBtb2Rl OiBbJ3Byb3BlcnRpZXMnXSwKICAgICAgIH0sewogICAgICAgICBpZDogJ2NvbW1lbnRzJywgbGFi ZWw6IGdldHRleHQoJ0NvbW1lbnQnKSwKLSAgICAgICAgZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAn bXVsdGlsaW5lJywKKyAgICAgICAgZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAnbXVsdGlsaW5lJywg aXNDb2xsZWN0aW9uUHJvcGVydHk6IHRydWUsCiAgICAgICB9LHsKICAgICAgICAgaWQ6ICdlbmNv ZGluZycsIGxhYmVsOiBnZXR0ZXh0KCdFbmNvZGluZycpLAogICAgICAgICBlZGl0YWJsZTogZmFs c2UsIHR5cGU6ICdzZWxlY3QnLCBncm91cDogZ2V0dGV4dCgnRGVmaW5pdGlvbicpLApkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3N1YnNjcmlwdGlvbnMvc3RhdGljL2pzL3N1YnNjcmlwdGlvbi5qcyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zdWJzY3JpcHRpb25zL3N0YXRp Yy9qcy9zdWJzY3JpcHRpb24uanMKaW5kZXggMWExNDViNGQ2Li5mNWY1OTYxODggMTAwNjQ0Ci0t LSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z dWJzY3JpcHRpb25zL3N0YXRpYy9qcy9zdWJzY3JpcHRpb24uanMKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3N1YnNjcmlwdGlvbnMvc3Rh dGljL2pzL3N1YnNjcmlwdGlvbi5qcwpAQCAtMTQsOCArMTQsOCBAQCBpbXBvcnQgTm90aWZ5IGZy b20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9oZWxwZXJzL05vdGlmaWVyJzsKIAog ZGVmaW5lKCdwZ2FkbWluLm5vZGUuc3Vic2NyaXB0aW9uJywgWwogICAnc291cmNlcy9nZXR0ZXh0 JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLAotICAnc291cmNlcy9wZ2FkbWluJywgJ3Bn YWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xs ZWN0aW9uJywKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIHBnQWRtaW4sIHBnQnJv d3NlciwgQmFja2Zvcm0pIHsKKyAgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXIn LCAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAorXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJs X2ZvciwgJCwgcGdBZG1pbiwgcGdCcm93c2VyKSB7CiAKICAgLy8gRXh0ZW5kIHRoZSBicm93c2Vy J3MgY29sbGVjdGlvbiBjbGFzcyBmb3Igc3Vic2NyaXB0aW9ucyBjb2xsZWN0aW9uCiAgIGlmICgh cGdCcm93c2VyLk5vZGVzWydjb2xsLXN1YnNjcmlwdGlvbiddKSB7CkBAIC0yNCw3ICsyNCw3IEBA IGRlZmluZSgncGdhZG1pbi5ub2RlLnN1YnNjcmlwdGlvbicsIFsKICAgICAgICAgbm9kZTogJ3N1 YnNjcmlwdGlvbicsCiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdTdWJzY3JpcHRpb25zJyksCiAg ICAgICAgIHR5cGU6ICdjb2xsLXN1YnNjcmlwdGlvbicsCi0gICAgICAgIGNvbHVtbnM6IFsnbmFt ZScsICdzdWJvd25lcicsICdwdWInLCAnZW5hYmxlZCddLAorICAgICAgICBjb2x1bW5zOiBbJ25h bWUnLCAnc3Vib3duZXInLCAncHJvcHB1YicsICdlbmFibGVkJ10sCiAgICAgICAgIGhhc1N0YXRp c3RpY3M6IHRydWUsCiAgICAgICB9KTsKICAgfQpAQCAtNzQsMTAxICs3NCw2IEBAIGRlZmluZSgn cGdhZG1pbi5ub2RlLnN1YnNjcmlwdGlvbicsIFsKICAgICAgICAgICBlbmFibGU6ICdjYW5DcmVh dGUnLAogICAgICAgICB9XSk7CiAgICAgICB9LAotICAgICAgLy8gRGVmaW5lIHRoZSBtb2RlbCBm b3Igc3Vic2NyaXB0aW9uIG5vZGUKLSAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5l eHRlbmQoewotICAgICAgICBpZEF0dHJpYnV0ZTogJ29pZCcsCi0gICAgICAgIGRlZmF1bHRzOiB7 Ci0gICAgICAgICAgbmFtZTogdW5kZWZpbmVkLAotICAgICAgICAgIHN1Ym93bmVyOiB1bmRlZmlu ZWQsCi0gICAgICAgICAgcHVidGFibGU6IHVuZGVmaW5lZCwKLSAgICAgICAgICBjb25uZWN0X3Rp bWVvdXQ6IDEwLAotICAgICAgICAgIHB1YjpbXSwKLSAgICAgICAgICBlbmFibGVkOnRydWUsCi0g ICAgICAgICAgY3JlYXRlX3Nsb3Q6IHRydWUsCi0gICAgICAgICAgY29weV9kYXRhOnRydWUsCi0g ICAgICAgICAgY29ubmVjdDp0cnVlLAotICAgICAgICAgIGNvcHlfZGF0YV9hZnRlcl9yZWZyZXNo OmZhbHNlLAotICAgICAgICAgIHN5bmM6J29mZicsCi0gICAgICAgICAgcmVmcmVzaF9wdWI6IGZh bHNlLAotICAgICAgICAgIHBhc3N3b3JkOiAnJywKLSAgICAgICAgICBzc2xtb2RlOiAncHJlZmVy JywKLSAgICAgICAgICBzc2xjb21wcmVzc2lvbjogZmFsc2UsCi0gICAgICAgICAgc3NsY2VydDog JycsCi0gICAgICAgICAgc3Nsa2V5OiAnJywKLSAgICAgICAgICBzc2xyb290Y2VydDogJycsCi0g ICAgICAgICAgc3NsY3JsOiAnJywKLSAgICAgICAgICBob3N0OiAnJywKLSAgICAgICAgICBob3N0 YWRkcjogJycsCi0gICAgICAgICAgcG9ydDogNTQzMiwKLSAgICAgICAgICBkYjogJ3Bvc3RncmVz JywKLSAgICAgICAgfSwKLQotICAgICAgICAvLyBEZWZhdWx0IHZhbHVlcyEKLSAgICAgICAgaW5p dGlhbGl6ZTogZnVuY3Rpb24oYXR0cnMsIGFyZ3MpIHsKLSAgICAgICAgICB2YXIgaXNOZXcgPSAo Xy5zaXplKGF0dHJzKSA9PT0gMCk7Ci0gICAgICAgICAgaWYgKGlzTmV3KSB7Ci0gICAgICAgICAg ICB2YXIgdXNlckluZm8gPSBwZ0Jyb3dzZXIuc2VydmVySW5mb1thcmdzLm5vZGVfaW5mby5zZXJ2 ZXIuX2lkXS51c2VyOwotCi0gICAgICAgICAgICB0aGlzLnNldCh7J3N1Ym93bmVyJzogdXNlcklu Zm8ubmFtZX0sIHtzaWxlbnQ6IHRydWV9KTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcGdCcm93 c2VyLk5vZGUuTW9kZWwucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRz KTsKLSAgICAgICAgfSwKLQotICAgICAgICAvLyBEZWZpbmUgdGhlIHNjaGVtYSBmb3IgdGhlIHN1 YnNjcmlwdGlvbiBub2RlCi0gICAgICAgIHNjaGVtYTogW3sKLSAgICAgICAgICBpZDogJ25hbWUn LCBsYWJlbDogZ2V0dGV4dCgnTmFtZScpLCB0eXBlOiAndGV4dCcsCi0gICAgICAgICAgbW9kZTog Wydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCi0gICAgICAgICAgdmlzaWJsZTogZnVu Y3Rpb24oKSB7Ci0gICAgICAgICAgICBpZighXy5pc1VuZGVmaW5lZCh0aGlzLm5vZGVfaW5mbykg JiYgIV8uaXNVbmRlZmluZWQodGhpcy5ub2RlX2luZm8uc2VydmVyKQotICAgICAgICAgICAgICAm JiAhXy5pc1VuZGVmaW5lZCh0aGlzLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbikgJiYKLSAgICAg ICAgICAgICAgICB0aGlzLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbiA+PSAxMDAwMDApIHsKLSAg ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1 cm4gZmFsc2U7Ci0gICAgICAgICAgfSwKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdvaWQn LCBsYWJlbDogZ2V0dGV4dCgnT0lEJyksIGNlbGw6ICdzdHJpbmcnLCBtb2RlOiBbJ3Byb3BlcnRp ZXMnXSwKLSAgICAgICAgICB0eXBlOiAndGV4dCcsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAg ICAgICAgICBpZDogJ3N1Ym93bmVyJywgbGFiZWw6IGdldHRleHQoJ093bmVyJyksIHR5cGU6ICd0 ZXh0JywKLSAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5Ob2RlTGlzdEJ5TmFtZUNvbnRyb2ws IG5vZGU6ICdyb2xlJywKLSAgICAgICAgICBtb2RlOiBbJ2VkaXQnLCAncHJvcGVydGllcycsICdj cmVhdGUnXSwgc2VsZWN0MjogeyBhbGxvd0NsZWFyOiBmYWxzZX0sCi0gICAgICAgICAgZGlzYWJs ZWQ6IGZ1bmN0aW9uKG0pewotICAgICAgICAgICAgaWYobS5pc05ldygpKQotICAgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9LAot ICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgaWQ6ICdlbmFibGVkJywgbGFiZWw6IGdl dHRleHQoJ0VuYWJsZWQ/JyksCi0gICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6IFsncHJv cGVydGllcyddLAotICAgICAgICAgIGdyb3VwOiBnZXR0ZXh0KCdXaXRoJyksCi0gICAgICAgICAg cmVhZG9ubHk6ICdpc0Nvbm5lY3QnLCBkZXBzIDpbJ2Nvbm5lY3QnXSwKLSAgICAgICAgICBoZWxw TWVzc2FnZTogZ2V0dGV4dCgnU3BlY2lmaWVzIHdoZXRoZXIgdGhlIHN1YnNjcmlwdGlvbiBzaG91 bGQgYmUgYWN0aXZlbHkgcmVwbGljYXRpbmcsIG9yIHdoZXRoZXIgaXQgc2hvdWxkIGJlIGp1c3Qg c2V0dXAgYnV0IG5vdCBzdGFydGVkIHlldC4nKSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAg ICAgICAgIGlkOiAncHViJywgbGFiZWw6IGdldHRleHQoJ1B1YmxpY2F0aW9uJyksIHR5cGU6ICd0 ZXh0JywgZ3JvdXA6IGdldHRleHQoJ0Nvbm5lY3Rpb24nKSwKLSAgICAgICAgICBtb2RlOiBbJ3By b3BlcnRpZXMnXSwKLSAgICAgICAgfSwKLSAgICAgICAgXSwKLSAgICAgICAgc2Vzc0NoYW5nZWQ6 IGZ1bmN0aW9uKCkgewotICAgICAgICAgIGlmICghdGhpcy5pc05ldygpICYmIF8uaXNVbmRlZmlu ZWQodGhpcy5hdHRyaWJ1dGVzWydyZWZyZXNoX3B1YiddKSkKLSAgICAgICAgICAgIHJldHVybiBm YWxzZTsKLSAgICAgICAgICByZXR1cm4gcGdCcm93c2VyLkRhdGFNb2RlbC5wcm90b3R5cGUuc2Vz c0NoYW5nZWQuYXBwbHkodGhpcyk7Ci0gICAgICAgIH0sCi0gICAgICAgIGNhbkNyZWF0ZTogZnVu Y3Rpb24oaXRlbURhdGEsIGl0ZW0pIHsKLSAgICAgICAgICB2YXIgdHJlZURhdGEgPSBwZ0Jyb3dz ZXIudHJlZS5nZXRUcmVlTm9kZUhpZXJhcmNoeShpdGVtKSwKLSAgICAgICAgICAgIHNlcnZlciA9 IHRyZWVEYXRhWydzZXJ2ZXInXTsKLQotICAgICAgICAgIC8vIElmIHNlcnZlciBpcyBsZXNzIHRo YW4gMTAgdGhlbiBkbyBub3QgYWxsb3cgJ2NyZWF0ZScgbWVudQotICAgICAgICAgIGlmIChzZXJ2 ZXIgJiYgc2VydmVyLnZlcnNpb24gPCAxMDAwMDApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7 Ci0KLSAgICAgICAgICAvLyBieSBkZWZhdWx0IHdlIHdhbnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUK LSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSwKLSAgICAgIH0pLAogICAgICAgZ2V0 U2NoZW1hOiBmdW5jdGlvbih0cmVlTm9kZUluZm8sIGl0ZW1Ob2RlRGF0YSl7CiAgICAgICAgIHJl dHVybiBuZXcgU3Vic2NyaXB0aW9uU2NoZW1hKAogICAgICAgICAgIHsKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zdWJzY3Jp cHRpb25zL3N0YXRpYy9qcy9zdWJzY3JpcHRpb24udWkuanMgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc3Vic2NyaXB0aW9ucy9zdGF0aWMvanMv c3Vic2NyaXB0aW9uLnVpLmpzCmluZGV4IGJiNmI0MThjNi4uNzcxZTNjMDNiIDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc3Vi c2NyaXB0aW9ucy9zdGF0aWMvanMvc3Vic2NyaXB0aW9uLnVpLmpzCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zdWJzY3JpcHRpb25zL3N0 YXRpYy9qcy9zdWJzY3JpcHRpb24udWkuanMKQEAgLTE3Niw3ICsxNzYsNyBAQCBleHBvcnQgZGVm YXVsdCBjbGFzcyBTdWJzY3JpcHRpb25TY2hlbWEgZXh0ZW5kcyBCYXNlVUlTY2hlbWF7CiAgICAg ICBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnZWRpdCcsICdjcmVhdGUnXSwKICAgICB9LAogICAgIHsK LSAgICAgIGlkOiAncHViJywgbGFiZWw6IGdldHRleHQoJ1B1YmxpY2F0aW9uJyksIHR5cGU6ICd0 ZXh0JywgZ3JvdXA6IGdldHRleHQoJ0Nvbm5lY3Rpb24nKSwKKyAgICAgIGlkOiAncHJvcHB1Yics IGxhYmVsOiBnZXR0ZXh0KCdQdWJsaWNhdGlvbicpLCB0eXBlOiAndGV4dCcsIGdyb3VwOiBnZXR0 ZXh0KCdDb25uZWN0aW9uJyksCiAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwKICAgICB9LAog ICAgIHsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zdWJzY3JpcHRpb25zL3RlbXBsYXRlcy9zdWJzY3JpcHRpb25zL3NxbC9k ZWZhdWx0L3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3N1YnNjcmlwdGlvbnMvdGVtcGxhdGVzL3N1YnNjcmlwdGlvbnMv c3FsL2RlZmF1bHQvcHJvcGVydGllcy5zcWwKaW5kZXggZjdhNmJhZjNiLi5hNDE2ODIxZGEgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zdWJzY3JpcHRpb25zL3RlbXBsYXRlcy9zdWJzY3JpcHRpb25zL3NxbC9kZWZhdWx0L3By b3BlcnRpZXMuc3FsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zdWJzY3JpcHRpb25zL3RlbXBsYXRlcy9zdWJzY3JpcHRpb25zL3NxbC9k ZWZhdWx0L3Byb3BlcnRpZXMuc3FsCkBAIC0xLDYgKzEsNyBAQAogU0VMRUNUICBzdWIub2lkIGFz IG9pZCwKICAgICAgICAgc3VibmFtZSBhcyBuYW1lLAogICAgICAgICBzdWJwdWJsaWNhdGlvbnMg YXMgcHViLAorICAgICAgICBzdWJwdWJsaWNhdGlvbnMgYXMgcHJvcHB1YiwKICAgICAgICAgc3Vi LnN1YnN5bmNjb21taXQgYXMgc3luYywKICAgICAgICAgcGdhLnJvbG5hbWUgYXMgc3Vib3duZXIs CiAgICAgICAgIHN1YnNsb3RuYW1lIGFzIHNsb3RfbmFtZSwKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3N0YXRpYy9qcy9yb2xlLmpz IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvc3RhdGlj L2pzL3JvbGUuanMKaW5kZXggMTE0N2UzNTJjLi4wYjAzNzgxM2MgMTAwNjQ0Ci0tLSBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3N0YXRpYy9qcy9yb2xl LmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVz L3N0YXRpYy9qcy9yb2xlLmpzCkBAIC01ODIsMTUyICs1ODIsNiBAQCBkZWZpbmUoJ3BnYWRtaW4u bm9kZS5yb2xlJywgWwogICAgICAgICAgIH0sCiAgICAgICAgICk7CiAgICAgICB9LAotICAgICAg bW9kZWw6IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7Ci0gICAgICAgIGlkQXR0 cmlidXRlOiAnb2lkJywKLSAgICAgICAgZGVmYXVsdHM6IHsKLSAgICAgICAgICBvaWQ6IG51bGws Ci0gICAgICAgICAgcm9sbmFtZTogdW5kZWZpbmVkLAotICAgICAgICAgIHJvbGNhbmxvZ2luOiBm YWxzZSwKLSAgICAgICAgICByb2xjb25ubGltaXQ6IC0xLAotICAgICAgICAgIHJvbHN1cGVyOiBm YWxzZSwKLSAgICAgICAgICByb2xjcmVhdGVyb2xlOiBmYWxzZSwKLSAgICAgICAgICByb2xjcmVh dGVkYjogZmFsc2UsCi0gICAgICAgICAgcm9saW5oZXJpdDogdHJ1ZSwKLSAgICAgICAgICByb2xj YXR1cGRhdGU6IGZhbHNlLAotICAgICAgICAgIHJvbHJlcGxpY2F0aW9uOiBmYWxzZSwKLSAgICAg ICAgICByb2x2YWxpZHVudGlsOiBudWxsLAotICAgICAgICB9LAotICAgICAgICBzY2hlbWE6IFt7 Ci0gICAgICAgICAgaWQ6ICdyb2xuYW1lJywgbGFiZWw6IGdldHRleHQoJ05hbWUnKSwgdHlwZTog J3RleHQnLAotICAgICAgICAgIHJlYWRvbmx5OiAncmVhZG9ubHknLAotICAgICAgICB9LHsKLSAg ICAgICAgICBpZDogJ29pZCcsIGxhYmVsOiBnZXR0ZXh0KCdPSUQnKSwgY2VsbDogJ3N0cmluZycs IG1vZGU6IFsncHJvcGVydGllcyddLAotICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTog J3RleHQnLCB2aXNpYmxlOiB0cnVlLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ3JvbHZh bGlkdW50aWwnLCByZWFkb25seTogJ3JlYWRvbmx5JywgdHlwZTogJ3RleHQnLAotICAgICAgICAg IGdyb3VwOiBnZXR0ZXh0KCdEZWZpbml0aW9uJyksIGxhYmVsOiBnZXR0ZXh0KCdBY2NvdW50IGV4 cGlyZXMnKSwKLSAgICAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnZWRpdCcsICdjcmVhdGUn XSwgY29udHJvbDogJ2RhdGV0aW1lcGlja2VyJywKLSAgICAgICAgICBkZXBzOiBbJ3JvbGNhbmxv Z2luJ10sCi0gICAgICAgICAgcGxhY2Vob2xkZXI6IGdldHRleHQoJ05vIEV4cGlyeScpLAotICAg ICAgICAgIGhlbHBNZXNzYWdlOiBnZXR0ZXh0KCdQbGVhc2Ugbm90ZSB0aGF0IGlmIHlvdSBsZWF2 ZSB0aGlzIGZpZWxkIGJsYW5rLCB0aGVuIHBhc3N3b3JkIHdpbGwgbmV2ZXIgZXhwaXJlLicpLAot ICAgICAgICAgIHNldE1pbkRhdGU6IGZhbHNlLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDog J3JvbGNvbm5saW1pdCcsICB0eXBlOiAnaW50JywgZ3JvdXA6IGdldHRleHQoJ0RlZmluaXRpb24n KSwKLSAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQ29ubmVjdGlvbiBsaW1pdCcpLCBjZWxsOiAn aW50ZWdlcicsIG1pbiA6IC0xLAotICAgICAgICAgIG1vZGU6IFsncHJvcGVydGllcycsICdlZGl0 JywgJ2NyZWF0ZSddLCByZWFkb25seTogJ3JlYWRvbmx5JywKLSAgICAgICAgfSx7Ci0gICAgICAg ICAgaWQ6ICdyb2xjYW5sb2dpbicsIGxhYmVsOiBnZXR0ZXh0KCdDYW4gbG9naW4/JyksCi0gICAg ICAgICAgdHlwZTogJ3N3aXRjaCcsCi0gICAgICAgICAgY29udHJvbExhYmVsQ2xhc3NOYW1lOiAn Y29udHJvbC1sYWJlbCBwZy1lbC1zbS00IHBnLWVsLTEyJywKLSAgICAgICAgICBjb250cm9sc0Ns YXNzTmFtZTogJ3BnYWRtaW4tY29udHJvbHMgcGctZWwtc20tOCBwZy1lbC0xMicsCi0gICAgICAg ICAgZ3JvdXA6IGdldHRleHQoJ1ByaXZpbGVnZXMnKSwKLSAgICAgICAgICByZWFkb25seTogJ3Jl YWRvbmx5JywKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdyb2xzdXBlcicsIGxhYmVsOiBn ZXR0ZXh0KCdTdXBlcnVzZXI/JyksCi0gICAgICAgICAgdHlwZTogJ3N3aXRjaCcsCi0gICAgICAg ICAgY29udHJvbExhYmVsQ2xhc3NOYW1lOiAnY29udHJvbC1sYWJlbCBwZy1lbC1zbS00IHBnLWVs LTEyJywKLSAgICAgICAgICBjb250cm9sc0NsYXNzTmFtZTogJ3BnYWRtaW4tY29udHJvbHMgcGct ZWwtc20tOCBwZy1lbC0xMicsCi0gICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ1ByaXZpbGVnZXMn KSwKLSAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5Td2l0Y2hDb250cm9sLmV4dGVuZCh7Ci0g ICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIEJhY2tmb3Jt LlN3aXRjaENvbnRyb2wucHJvdG90eXBlLm9uQ2hhbmdlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7 Ci0KLSAgICAgICAgICAgICAgdGhpcy5tb2RlbC5zZXQoJ3JvbGNhdHVwZGF0ZScsIHRoaXMubW9k ZWwuZ2V0KCdyb2xzdXBlcicpKTsKLSAgICAgICAgICAgICAgdGhpcy5tb2RlbC5zZXQoJ3JvbGNy ZWF0ZXJvbGUnLCB0aGlzLm1vZGVsLmdldCgncm9sc3VwZXInKSk7Ci0gICAgICAgICAgICAgIHRo aXMubW9kZWwuc2V0KCdyb2xjcmVhdGVkYicsIHRoaXMubW9kZWwuZ2V0KCdyb2xzdXBlcicpKTsK LSAgICAgICAgICAgIH0sCi0gICAgICAgICAgfSksCi0gICAgICAgICAgcmVhZG9ubHk6ICdyZWFk b25seScsCi0gICAgICAgIH0sewotICAgICAgICAgIGlkOiAncm9sY3JlYXRlcm9sZScsIGxhYmVs OiBnZXR0ZXh0KCdDcmVhdGUgcm9sZXM/JyksCi0gICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ1By aXZpbGVnZXMnKSwKLSAgICAgICAgICB0eXBlOiAnc3dpdGNoJywKLSAgICAgICAgICBjb250cm9s TGFiZWxDbGFzc05hbWU6ICdjb250cm9sLWxhYmVsIHBnLWVsLXNtLTQgcGctZWwtMTInLAotICAg ICAgICAgIGNvbnRyb2xzQ2xhc3NOYW1lOiAncGdhZG1pbi1jb250cm9scyBwZy1lbC1zbS04IHBn LWVsLTEyJywKLSAgICAgICAgICByZWFkb25seTogJ3JlYWRvbmx5JywKLSAgICAgICAgfSx7Ci0g ICAgICAgICAgaWQ6ICdpc19zeXNfb2JqJywgbGFiZWw6IGdldHRleHQoJ1N5c3RlbSByb2xlPycp LAotICAgICAgICAgIGNlbGw6J2Jvb2xlYW4nLCB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydwcm9w ZXJ0aWVzJ10sCi0gICAgICAgIH0sewotICAgICAgICAgIGlkOiAnZGVzY3JpcHRpb24nLCBsYWJl bDogZ2V0dGV4dCgnQ29tbWVudHMnKSwgdHlwZTogJ211bHRpbGluZScsCi0gICAgICAgICAgZ3Jv dXA6IG51bGwsIG1vZGU6IFsncHJvcGVydGllcycsICdlZGl0JywgJ2NyZWF0ZSddLAotICAgICAg ICAgIHJlYWRvbmx5OiAncmVhZG9ubHknLAotICAgICAgICB9LHsKLSAgICAgICAgICBpZDogJ3Jv bGNyZWF0ZWRiJywgbGFiZWw6IGdldHRleHQoJ0NyZWF0ZSBkYXRhYmFzZXM/JyksCi0gICAgICAg ICAgZ3JvdXA6IGdldHRleHQoJ1ByaXZpbGVnZXMnKSwKLSAgICAgICAgICB0eXBlOiAnc3dpdGNo JywKLSAgICAgICAgICBjb250cm9sTGFiZWxDbGFzc05hbWU6ICdjb250cm9sLWxhYmVsIHBnLWVs LXNtLTQgcGctZWwtMTInLAotICAgICAgICAgIGNvbnRyb2xzQ2xhc3NOYW1lOiAncGdhZG1pbi1j b250cm9scyBwZy1lbC1zbS04IHBnLWVsLTEyJywKLSAgICAgICAgICByZWFkb25seTogJ3JlYWRv bmx5JywKLSAgICAgICAgfSx7Ci0gICAgICAgICAgaWQ6ICdyb2xjYXR1cGRhdGUnLCBsYWJlbDog Z2V0dGV4dCgnVXBkYXRlIGNhdGFsb2c/JyksCi0gICAgICAgICAgdHlwZTogJ3N3aXRjaCcsCi0g ICAgICAgICAgY29udHJvbExhYmVsQ2xhc3NOYW1lOiAnY29udHJvbC1sYWJlbCBwZy1lbC1zbS00 IHBnLWVsLTEyJywKLSAgICAgICAgICBjb250cm9sc0NsYXNzTmFtZTogJ3BnYWRtaW4tY29udHJv bHMgcGctZWwtc20tOCBwZy1lbC0xMicsCi0gICAgICAgICAgbWF4X3ZlcnNpb246IDkwNDAwLAot ICAgICAgICAgIGdyb3VwOiBnZXR0ZXh0KCdQcml2aWxlZ2VzJyksIHJlYWRvbmx5OiBmdW5jdGlv bihtKSB7Ci0gICAgICAgICAgICByZXR1cm4gbS5nZXQoJ3JlYWRfb25seScpOwotICAgICAgICAg IH0sCi0gICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgICAgIHJldHVy biAhbS5nZXQoJ3JvbHN1cGVyJyk7Ci0gICAgICAgICAgfSwKLSAgICAgICAgfSx7Ci0gICAgICAg ICAgaWQ6ICdyb2xpbmhlcml0JywgZ3JvdXA6IGdldHRleHQoJ1ByaXZpbGVnZXMnKSwKLSAgICAg ICAgICBsYWJlbDogZ2V0dGV4dCgnSW5oZXJpdCByaWdodHMgZnJvbSB0aGUgcGFyZW50IHJvbGVz PycpLAotICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLAotICAgICAgICAgIGNvbnRyb2xMYWJlbENs YXNzTmFtZTogJ2NvbnRyb2wtbGFiZWwgcGctZWwtc20tNCBwZy1lbC0xMicsCi0gICAgICAgICAg Y29udHJvbHNDbGFzc05hbWU6ICdwZ2FkbWluLWNvbnRyb2xzIHBnLWVsLXNtLTggcGctZWwtMTIn LAotICAgICAgICAgIHJlYWRvbmx5OiAncmVhZG9ubHknLAotICAgICAgICB9LHsKLSAgICAgICAg ICBpZDogJ3JvbHJlcGxpY2F0aW9uJywgZ3JvdXA6IGdldHRleHQoJ1ByaXZpbGVnZXMnKSwKLSAg ICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQ2FuIGluaXRpYXRlIHN0cmVhbWluZyByZXBsaWNhdGlv biBhbmQgYmFja3Vwcz8nKSwKLSAgICAgICAgICB0eXBlOiAnc3dpdGNoJywKLSAgICAgICAgICBj b250cm9sTGFiZWxDbGFzc05hbWU6ICdjb250cm9sLWxhYmVsIHBnLWVsLXNtLTQgcGctZWwtMTIn LAotICAgICAgICAgIGNvbnRyb2xzQ2xhc3NOYW1lOiAncGdhZG1pbi1jb250cm9scyBwZy1lbC1z bS04IHBnLWVsLTEyJywKLSAgICAgICAgICBtaW5fdmVyc2lvbjogOTAxMDAsCi0gICAgICAgICAg cmVhZG9ubHk6ICdyZWFkb25seScsCi0gICAgICAgIH1dLAotICAgICAgICByZWFkb25seTogZnVu Y3Rpb24obSkgewotICAgICAgICAgIGlmICghbS5oYXMoJ3JlYWRfb25seScpKSB7Ci0gICAgICAg ICAgICB2YXIgdXNlciA9IHRoaXMubm9kZV9pbmZvLnNlcnZlci51c2VyOwotCi0gICAgICAgICAg ICBtLnNldCgncmVhZF9vbmx5JywgISh1c2VyLmlzX3N1cGVydXNlciB8fCB1c2VyLmNhbl9jcmVh dGVfcm9sZSkpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIHJldHVybiBtLmdldCgncmVhZF9v bmx5Jyk7Ci0gICAgICAgIH0sCi0gICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpCi0gICAgICAg IHsKLSAgICAgICAgICB2YXIgZXJyID0ge30sCi0gICAgICAgICAgICBlcnJtc2csCi0gICAgICAg ICAgICBzZWNsYWJlbHMgPSB0aGlzLmdldCgnc2VjbGFiZWxzJyk7Ci0KLSAgICAgICAgICBpZiAo Xy5pc1VuZGVmaW5lZCh0aGlzLmdldCgncm9sbmFtZScpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ3Jv bG5hbWUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewotICAgICAgICAgICAg ZXJyWyduYW1lJ10gPSBnZXR0ZXh0KCdOYW1lIGNhbm5vdCBiZSBlbXB0eS4nKTsKLSAgICAgICAg ICAgIGVycm1zZyA9IGVyclsnbmFtZSddOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmIChz ZWNsYWJlbHMpIHsKLSAgICAgICAgICAgIHZhciBzZWNMYWJlbHNFcnI7Ci0gICAgICAgICAgICBm b3IgKHZhciBpID0gMDsgaSA8IHNlY2xhYmVscy5tb2RlbHMubGVuZ3RoICYmICFzZWNMYWJlbHNF cnI7IGkrKykgewotICAgICAgICAgICAgICBzZWNMYWJlbHNFcnIgPSAoc2VjbGFiZWxzLm1vZGVs c1tpXSkudmFsaWRhdGUuYXBwbHkoc2VjbGFiZWxzLm1vZGVsc1tpXSk7Ci0gICAgICAgICAgICAg IGlmIChzZWNMYWJlbHNFcnIpIHsKLSAgICAgICAgICAgICAgICBlcnJbJ3NlY2xhYmVscyddID0g c2VjTGFiZWxzRXJyOwotICAgICAgICAgICAgICAgIGVycm1zZyA9IGVycm1zZyB8fCBzZWNMYWJl bHNFcnI7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0KLSAg ICAgICAgICB0aGlzLmVycm9yTW9kZWwuY2xlYXIoKS5zZXQoZXJyKTsKLQotICAgICAgICAgIGlm IChfLnNpemUoZXJyKSkgewotICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCdvbi1zdGF0dXMnLCB7 bXNnOiBlcnJtc2d9KTsKLSAgICAgICAgICAgIHJldHVybiBlcnJtc2c7Ci0gICAgICAgICAgfQot Ci0gICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0sCi0gICAgICB9KSwKICAgICB9KTsK ICAgfQogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9ub2RlLmpz IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvbm9kZS5qcwppbmRleCA5ZTZkM2Q1NDMu LjdlZTk4OTEyMiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvbm9k ZS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9ub2RlLmpzCkBAIC05LDYg KzksMTEgQEAKIAogaW1wb3J0IHtnZXROb2RlVmlldywgcmVtb3ZlTm9kZVZpZXd9IGZyb20gJy4v bm9kZV92aWV3JzsKIGltcG9ydCBOb3RpZnkgZnJvbSAnLi4vLi4vLi4vc3RhdGljL2pzL2hlbHBl cnMvTm90aWZpZXInOworaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JzsKK2ltcG9ydCBSZWFjdERP TSBmcm9tICdyZWFjdC1kb20nOworaW1wb3J0IFRoZW1lIGZyb20gJ3NvdXJjZXMvVGhlbWUnOwor CitpbXBvcnQge0NvbGxlY3Rpb25Ob2RlVmlld30gZnJvbSAnLi4vLi4vLi4vLi4vcGdhZG1pbi9t aXNjL3Byb3BlcnRpZXMvQ29sbGVjdGlvbk5vZGVQcm9wZXJ0aWVzJzsKIAogZGVmaW5lKCdwZ2Fk bWluLmJyb3dzZXIubm9kZScsIFsKICAgJ3NvdXJjZXMvdXJsX2ZvcicsCkBAIC0xMDcyLDcgKzEw NzcsOCBAQCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3Nlci5ub2RlJywgWwogICAgICAgICAvLyArIFN0 YXRpc3RpY3MKICAgICAgICAgdmFyIGIgPSBicm93c2VyIHx8IHBnQnJvd3NlciwKICAgICAgICAg ICB0ID0gYi50cmVlLAotICAgICAgICAgIGQgPSBkYXRhIHx8IHQuaXRlbURhdGEoaXRlbSk7Cisg ICAgICAgICAgZCA9IGRhdGEgfHwgdC5pdGVtRGF0YShpdGVtKSwKKyAgICAgICAgICBub2RlID0g aXRlbSAmJiBkICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXTsKIAogICAgICAgICAvLyBVcGRh dGUgdGhlIG1lbnUgaXRlbXMKICAgICAgICAgcGdBZG1pbi5Ccm93c2VyLmVuYWJsZV9kaXNhYmxl X21lbnVzLmFwcGx5KGIsIFtpdGVtXSk7CkBAIC0xMDg0LDcgKzEwOTAsMjYgQEAgZGVmaW5lKCdw Z2FkbWluLmJyb3dzZXIubm9kZScsIFsKICAgICAgICAgICAgIGIucGFuZWxzWydwcm9wZXJ0aWVz J10ucGFuZWwuaXNWaXNpYmxlKCkpIHsKICAgICAgICAgICAgIC8vIFNob3cgb2JqZWN0IHByb3Bl cnRpZXMgKG9ubHkgd2hlbiB0aGUgJ3Byb3BlcnRpZXMnIHRhYgogICAgICAgICAgICAgLy8gaXMg YWN0aXZlKS4KLSAgICAgICAgICAgIHRoaXMuc2hvd1Byb3BlcnRpZXMoaXRlbSwgZCwgYi5wYW5l bHNbJ3Byb3BlcnRpZXMnXS5wYW5lbCk7CisgICAgICAgICAgICBsZXQgdHJlZU5vZGVJbmZvID0g cGdCcm93c2VyLnRyZWUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkoaXRlbSk7CisKKyAgICAgICAgICAg IGlmIChkLl90eXBlLmluY2x1ZGVzKCdjb2xsLScpKXsKKyAgICAgICAgICAgICAgYi5wYW5lbHNb J3Byb3BlcnRpZXMnXS5wYW5lbC4kY29udGFpbmVyLnJlbW92ZUNsYXNzKCdwZy1wYW5lbC1jb250 ZW50IHBnLW5vLW92ZXJmbG93IHBnLWVsLWNvbnRhaW5lcicpOworCisgICAgICAgICAgICAgIFJl YWN0RE9NLnJlbmRlcigKKyAgICAgICAgICAgICAgICA8VGhlbWU+CisgICAgICAgICAgICAgICAg ICA8Q29sbGVjdGlvbk5vZGVWaWV3CisgICAgICAgICAgICAgICAgICAgIG5vZGU9e25vZGV9Cisg ICAgICAgICAgICAgICAgICAgIHRyZWVOb2RlSW5mbz17dHJlZU5vZGVJbmZvfQorICAgICAgICAg ICAgICAgICAgICBpdGVtPXtpdGVtfQorICAgICAgICAgICAgICAgICAgICBpdGVtTm9kZURhdGE9 e2R9CisgICAgICAgICAgICAgICAgICAgIHBnQnJvd3Nlcj17cGdCcm93c2VyfQorICAgICAgICAg ICAgICAgICAgPjwvQ29sbGVjdGlvbk5vZGVWaWV3PgorICAgICAgICAgICAgICAgIDwvVGhlbWU+ LAorICAgICAgICAgICAgICAgIGIucGFuZWxzWydwcm9wZXJ0aWVzJ10ucGFuZWwuJGNvbnRhaW5l clswXQorICAgICAgICAgICAgICApOworICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAg IHRoaXMuc2hvd1Byb3BlcnRpZXMoaXRlbSwgZCwgYi5wYW5lbHNbJ3Byb3BlcnRpZXMnXS5wYW5l bCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTEyNTksMjAg KzEyODQsMjAgQEAgZGVmaW5lKCdwZ2FkbWluLmJyb3dzZXIubm9kZScsIFsKICAgICAgICAgICAg IGQgPSBpICYmIHRyZWUuaXRlbURhdGEoaSksCiAgICAgICAgICAgICB0cmVlSGllcmFyY2h5ID0g dHJlZS5nZXRUcmVlTm9kZUhpZXJhcmNoeShpKTsKIAotICAgICAgICAgIGlmIChfLmlzRXF1YWwo JCh0aGlzKS5kYXRhKCdub2RlLXByb3AnKSwgdHJlZUhpZXJhcmNoeSkpIHsKLSAgICAgICAgICAg IHJldHVybjsKLSAgICAgICAgICB9Ci0KICAgICAgICAgICAvLyBDYWNoZSB0aGUgY3VycmVudCBJ RHMgZm9yIG5leHQgdGltZQogICAgICAgICAgICQodGhpcykuZGF0YSgnbm9kZS1wcm9wJywgdHJl ZUhpZXJhcmNoeSk7CiAKICAgICAgICAgICAvKiBSZW1vdmUgYW55IGRvbSByZW5kZXJlZCBieSBn ZXROb2RlVmlldyAqLwotICAgICAgICAgIHJlbW92ZU5vZGVWaWV3KGpbMF0pOwotICAgICAgICAg IC8qIGdldFNjaGVtYSBpcyBhIHNjaGVtYSBmb3IgUmVhY3QuIEdldCB0aGUgcmVhY3Qgbm9kZSB2 aWV3ICovCisgICAgICAgICAgcmVtb3ZlTm9kZVZpZXcocGdCcm93c2VyLnBhbmVsc1sncHJvcGVy dGllcyddLnBhbmVsLiRjb250YWluZXJbMF0pOworCisgICAgICAgICAgdmFyIGNvbnRhaW5lclBy b3BlcnRpZXMgPSAgcGdCcm93c2VyLnBhbmVsc1sncHJvcGVydGllcyddLnBhbmVsLiRjb250YWlu ZXI7CisgICAgICAgICAgY29udGFpbmVyUHJvcGVydGllcy5hZGRDbGFzcygncGctcGFuZWwtY29u dGVudCBwZy1uby1vdmVyZmxvdyBwZy1lbC1jb250YWluZXInKTsKKworCiAgICAgICAgICAgaWYo dGhhdC5nZXRTY2hlbWEpIHsKICAgICAgICAgICAgIGxldCB0cmVlTm9kZUluZm8gPSBwZ0Jyb3dz ZXIudHJlZS5nZXRUcmVlTm9kZUhpZXJhcmNoeShpdGVtKTsKICAgICAgICAgICAgIGdldE5vZGVW aWV3KAotICAgICAgICAgICAgICB0aGF0LnR5cGUsIHRyZWVOb2RlSW5mbywgJ3Byb3BlcnRpZXMn LCBkYXRhLCAndGFiJywgalswXSwgdGhpcywgb25FZGl0CisgICAgICAgICAgICAgIHRoYXQudHlw ZSwgdHJlZU5vZGVJbmZvLCAncHJvcGVydGllcycsIGRhdGEsICd0YWInLCBjb250YWluZXJQcm9w ZXJ0aWVzWzBdLCB0aGlzLCBvbkVkaXQKICAgICAgICAgICAgICk7CiAgICAgICAgICAgICByZXR1 cm47CiAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMv anMvbm9kZV9hamF4LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvbm9kZV9hamF4 LmpzCmluZGV4IDE0YTlhZmEzYy4uMTlhYzc2NTYyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9i cm93c2VyL3N0YXRpYy9qcy9ub2RlX2FqYXguanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z dGF0aWMvanMvbm9kZV9hamF4LmpzCkBAIC0yNSw4ICsyNSw5IEBAIGV4cG9ydCBmdW5jdGlvbiBn ZW5lcmF0ZUNvbGxlY3Rpb25VUkwoaXRlbSwgdHlwZSkgewogICB9OwogICB2YXIgdHJlZUluZm8g PSBwZ0FkbWluLkJyb3dzZXIudHJlZS5nZXRUcmVlTm9kZUhpZXJhcmNoeShpdGVtKTsKICAgdmFy IGFjdGlvblR5cGUgPSB0eXBlIGluIG9wVVJMID8gb3BVUkxbdHlwZV0gOiB0eXBlOworICB2YXIg bm9kZVR5cGUgPSB0eXBlID09PSAncHJvcGVydGllcycgPyBub2RlT2JqLnR5cGUgOiBub2RlT2Jq Lm5vZGU7CiAgIHJldHVybiBnZW5lcmF0ZV91cmwoCi0gICAgcGdBZG1pbi5Ccm93c2VyLlVSTCwg dHJlZUluZm8sIGFjdGlvblR5cGUsIG5vZGVPYmoubm9kZSwKKyAgICBwZ0FkbWluLkJyb3dzZXIu VVJMLCB0cmVlSW5mbywgYWN0aW9uVHlwZSwgbm9kZVR5cGUsCiAgICAgY29sbGVjdGlvblBpY2tG dW5jdGlvbgogICApOwogfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMv anMvbm9kZV92aWV3LmpzeCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL25vZGVfdmll dy5qc3gKaW5kZXggYjllYzc5ZTkwLi40NTNmMjBjOTUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc3RhdGljL2pzL25vZGVfdmlldy5qc3gKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zdGF0aWMvanMvbm9kZV92aWV3LmpzeApAQCAtMTYsNyArMTYsNiBAQCBpbXBvcnQge2dldEhl bHBVcmwsIGdldEVQQVNIZWxwVXJsfSBmcm9tICdwZ2FkbWluLmhlbHAnOwogaW1wb3J0IFNjaGVt YVZpZXcgZnJvbSAnc291cmNlcy9TY2hlbWFWaWV3JzsKIGltcG9ydCB7IGdlbmVyYXRlTm9kZVVy bCB9IGZyb20gJy4vbm9kZV9hamF4JzsKIGltcG9ydCBOb3RpZnkgZnJvbSAnLi4vLi4vLi4vc3Rh dGljL2pzL2hlbHBlcnMvTm90aWZpZXInOwotCiBpbXBvcnQgZ2V0dGV4dCBmcm9tICdzb3VyY2Vz L2dldHRleHQnOwogaW1wb3J0ICd3Y2RvY2tlcic7CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc3RhdGljL2pzL3BhbmVsLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMv anMvcGFuZWwuanMKaW5kZXggZmJiYzU2YmQ1Li4xYWE0YTczYWMgMTAwNjQ0Ci0tLSBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL3BhbmVsLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc3RhdGljL2pzL3BhbmVsLmpzCkBAIC0xMjIsMTYgKzEyMiw1NiBAQCBkZWZpbmUoCiAgICAg ICAgICAgICAgICAgdGhhdC5yZXNpemVkQ29udGFpbmVyLmFwcGx5KG15UGFuZWwpOwogICAgICAg ICAgICAgICB9CiAKLSAgICAgICAgICAgICAgLy8gQmluZCBldmVudHMgb25seSBpZiB0aGV5IGFy ZSBjb25maWd1cmFibGUKLSAgICAgICAgICAgICAgaWYgKHRoYXQuY2FuSGlkZSkgewotICAgICAg ICAgICAgICAgIF8uZWFjaChbd2NEb2NrZXIuRVZFTlQuQ0xPU0VELCB3Y0RvY2tlci5FVkVOVC5W SVNJQklMSVRZX0NIQU5HRURdLAotICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZXYpIHsKLSAg ICAgICAgICAgICAgICAgICAgbXlQYW5lbC5vbihldiwgdGhhdC5oYW5kbGVWaXNpYmlsaXR5LmJp bmQobXlQYW5lbCwgZXYpKTsKLSAgICAgICAgICAgICAgICAgIH0pOworCisKKyAgICAgICAgICAg ICAgaWYgKG15UGFuZWwuX3R5cGUgPT0gJ2Rhc2hib2FyZCcpIHsKKyAgICAgICAgICAgICAgICBn ZXRQYW5lbFZpZXcoCisgICAgICAgICAgICAgICAgICBwZ0Jyb3dzZXIudHJlZSwKKyAgICAgICAg ICAgICAgICAgICRjb250YWluZXJbMF0sCisgICAgICAgICAgICAgICAgICBwZ0Jyb3dzZXIsCisg ICAgICAgICAgICAgICAgICBteVBhbmVsLl90eXBlCisgICAgICAgICAgICAgICAgKTsKICAgICAg ICAgICAgICAgfQogCisgICAgICAgICAgICAgIC8vIEJpbmQgZXZlbnRzIG9ubHkgaWYgdGhleSBh cmUgY29uZmlndXJhYmxlCisgICAgICAgICAgICAgIC8vIGlmICh0aGF0LmNhbkhpZGUpIHsKKyAg ICAgICAgICAgICAgXy5lYWNoKFt3Y0RvY2tlci5FVkVOVC5DTE9TRUQsIHdjRG9ja2VyLkVWRU5U LlZJU0lCSUxJVFlfQ0hBTkdFRF0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24oZXYpIHsKKyAg ICAgICAgICAgICAgICAgIG15UGFuZWwub24oZXYsIHRoYXQuaGFuZGxlVmlzaWJpbGl0eS5iaW5k KG15UGFuZWwsIGV2KSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgIC8vIH0K KwogICAgICAgICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLm9uKCdwZ2FkbWluLWJyb3dzZXI6dHJl ZTpzZWxlY3RlZCcsICgpID0+IHsKIAorICAgICAgICAgICAgICAgIGlmKG15UGFuZWwuaXNWaXNp YmxlKCkpIHsKKyAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZVBhbmVsVmlldygkY29udGFpbmVy WzBdKTsKKyAgICAgICAgICAgICAgICAgIGdldFBhbmVsVmlldygKKyAgICAgICAgICAgICAgICAg ICAgcGdCcm93c2VyLnRyZWUsCisgICAgICAgICAgICAgICAgICAgICRjb250YWluZXJbMF0sCisg ICAgICAgICAgICAgICAgICAgIHBnQnJvd3NlciwKKyAgICAgICAgICAgICAgICAgICAgbXlQYW5l bC5fdHlwZQorICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgIH0pOworICAgICAgICAgICAgICAvLyBwZ0Jyb3dzZXIuRXZlbnRzLm9mZigncGdhZG1p bi1icm93c2VyOnRyZWU6c2VsZWN0ZWQnLCAoKSA9PiB7CisKKyAgICAgICAgICAgICAgLy8gICAg IHJlbW92ZVBhbmVsVmlldygkY29udGFpbmVyWzBdKTsKKyAgICAgICAgICAgICAgLy8gfSk7CisK KyAgICAgICAgICAgICAgLy8gcGdCcm93c2VyLkV2ZW50cy5vbigncGdhZG1pbjpicm93c2VyOm5v ZGU6dXBkYXRlZCcsICgpID0+IHsKKworICAgICAgICAgICAgICAvLyAgIGlmKG15UGFuZWwuaXNW aXNpYmxlKCkpIHsKKyAgICAgICAgICAgICAgLy8gICAgIGdldFBhbmVsVmlldygKKyAgICAgICAg ICAgICAgLy8gICAgICAgcGdCcm93c2VyLnRyZWUsCisgICAgICAgICAgICAgIC8vICAgICAgICRj b250YWluZXJbMF0sCisgICAgICAgICAgICAgIC8vICAgICAgIHBnQnJvd3NlciwKKyAgICAgICAg ICAgICAgLy8gICAgICAgbXlQYW5lbC5fdHlwZQorICAgICAgICAgICAgICAvLyAgICAgKTsKKyAg ICAgICAgICAgICAgLy8gICB9CisgICAgICAgICAgICAgIC8vIH0pOworCisgICAgICAgICAgICAg IHBnQnJvd3Nlci5FdmVudHMub24oJ3BnYWRtaW4tYnJvd3Nlcjp0cmVlOnJlZnJlc2hpbmcnLCAo KSA9PiB7CisKICAgICAgICAgICAgICAgICBpZihteVBhbmVsLmlzVmlzaWJsZSgpKSB7CiAgICAg ICAgICAgICAgICAgICBnZXRQYW5lbFZpZXcoCiAgICAgICAgICAgICAgICAgICAgIHBnQnJvd3Nl ci50cmVlLApAQCAtMjA2LDEwICsyNDYsOSBAQCBkZWZpbmUoCiAgICAgICB9LAogICAgICAgaGFu ZGxlVmlzaWJpbGl0eTogZnVuY3Rpb24oZXZlbnROYW1lKSB7CiAgICAgICAgIC8vIFN1cHBvcnRl ZCBtb2R1bGVzCi0gICAgICAgIGxldCB0eXBlX21vZHVsZSA9IHsKLSAgICAgICAgICBkYXNoYm9h cmQ6IHBnQWRtaW4uRGFzaGJvYXJkLAotICAgICAgICB9OwotICAgICAgICBsZXQgbW9kdWxlID0g dHlwZV9tb2R1bGVbdGhpcy5fdHlwZV07CisgICAgICAgIC8vIGxldCB0eXBlX21vZHVsZSA9IHsK KyAgICAgICAgLy8gICBkYXNoYm9hcmQ6IHBnQWRtaW4uRGFzaGJvYXJkLAorICAgICAgICAvLyB9 OwogICAgICAgICBpZiAoXy5pc051bGwocGdCcm93c2VyLnRyZWUpKSByZXR1cm47CiAKICAgICAg ICAgbGV0IHNlbGVjdGVkUGFuZWwgPSBwZ0Jyb3dzZXIuZG9ja2VyLmZpbmRQYW5lbHModGhpcy5f dHlwZSlbMF07CkBAIC0yMTksMTcgKzI1OCwxNyBAQCBkZWZpbmUoCiAgICAgICAgICAgLnNjZW5l KCkKICAgICAgICAgICAuZmluZCgnLnBnLXBhbmVsLWNvbnRlbnQnKTsKIAotICAgICAgICBpZiAo dGhpcy5fdHlwZSA9PT0gJ2Rhc2hib2FyZCcpIHsKLSAgICAgICAgICBpZiAoZXZlbnROYW1lID09 ICdwYW5lbENsb3NlZCcpIHsKLSAgICAgICAgICAgIG1vZHVsZS50b2dnbGVWaXNpYmlsaXR5LmNh bGwobW9kdWxlLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgfSBlbHNlIGlmIChldmVudE5hbWUg PT0gJ3BhbmVsVmlzaWJpbGl0eUNoYW5nZWQnKSB7Ci0gICAgICAgICAgICBtb2R1bGUudG9nZ2xl VmlzaWJpbGl0eS5jYWxsKAotICAgICAgICAgICAgICBtb2R1bGUsCi0gICAgICAgICAgICAgIHBn QnJvd3Nlci5kb2NrZXIuZmluZFBhbmVscyh0aGlzLl90eXBlKVswXS5pc1Zpc2libGUoKSwKLSAg ICAgICAgICAgICAgZmFsc2UKLSAgICAgICAgICAgICk7Ci0gICAgICAgICAgfQotICAgICAgICB9 CisgICAgICAgIC8vIGlmICh0aGlzLl90eXBlID09PSAnZGFzaGJvYXJkJykgeworICAgICAgICAv LyAgIGlmIChldmVudE5hbWUgPT0gJ3BhbmVsQ2xvc2VkJykgeworICAgICAgICAvLyAgICAgbW9k dWxlLnRvZ2dsZVZpc2liaWxpdHkuY2FsbChtb2R1bGUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAg Ly8gICB9IGVsc2UgaWYgKGV2ZW50TmFtZSA9PSAncGFuZWxWaXNpYmlsaXR5Q2hhbmdlZCcpIHsK KyAgICAgICAgLy8gICAgIG1vZHVsZS50b2dnbGVWaXNpYmlsaXR5LmNhbGwoCisgICAgICAgIC8v ICAgICAgIG1vZHVsZSwKKyAgICAgICAgLy8gICAgICAgcGdCcm93c2VyLmRvY2tlci5maW5kUGFu ZWxzKHRoaXMuX3R5cGUpWzBdLmlzVmlzaWJsZSgpLAorICAgICAgICAvLyAgICAgICBmYWxzZQor ICAgICAgICAvLyAgICAgKTsKKyAgICAgICAgLy8gICB9CisgICAgICAgIC8vIH0KIAogICAgICAg ICBpZiAoaXNQYW5lbFZpc2libGUpIHsKICAgICAgICAgICBpZiAoZXZlbnROYW1lID09ICdwYW5l bENsb3NlZCcpIHsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL3Bh bmVsX3ZpZXcuanN4IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvcGFuZWxfdmlldy5q c3gKaW5kZXggY2YwYTVhMDdlLi4wYzVlMTg1NDkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc3RhdGljL2pzL3BhbmVsX3ZpZXcuanN4CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c3RhdGljL2pzL3BhbmVsX3ZpZXcuanN4CkBAIC0xMyw2ICsxMywxMSBAQCBpbXBvcnQgVGhlbWUg ZnJvbSAnc291cmNlcy9UaGVtZSc7CiBpbXBvcnQgRGVwZW5kZW5jaWVzIGZyb20gJy4uLy4uLy4u L21pc2MvZGVwZW5kZW5jaWVzL3N0YXRpYy9qcy9EZXBlbmRlbmNpZXMnOwogaW1wb3J0IERlcGVu ZGVudHMgZnJvbSAnLi4vLi4vLi4vbWlzYy9kZXBlbmRlbnRzL3N0YXRpYy9qcy9EZXBlbmRlbnRz JzsKIGltcG9ydCBTdGF0aXN0aWNzIGZyb20gJy4uLy4uLy4uL21pc2Mvc3RhdGlzdGljcy9zdGF0 aWMvanMvU3RhdGlzdGljcyc7CitpbXBvcnQgU1FMIGZyb20gJy4uLy4uLy4uL21pc2Mvc3FsL3N0 YXRpYy9qcy9TcWwnOworaW1wb3J0IERhc2hib2FyZCBmcm9tICcuLi8uLi8uLi9kYXNoYm9hcmQv c3RhdGljL2pzL0Rhc2hib2FyZCc7CitpbXBvcnQgXyBmcm9tICdsb2Rhc2gnOworaW1wb3J0IHsg Q29sbGVjdGlvbk5vZGVWaWV3IH0gZnJvbSAnLi4vLi4vLi4vbWlzYy9wcm9wZXJ0aWVzL0NvbGxl Y3Rpb25Ob2RlUHJvcGVydGllcyc7CisKIAogLyogVGhlIGVudHJ5IHBvaW50IGZvciByZW5kZXJp bmcgUmVhY3QgYmFzZWQgdmlldyBpbiBwcm9wZXJ0aWVzLCBjYWxsZWQgaW4gbm9kZS5qcyAqLwog ZXhwb3J0IGZ1bmN0aW9uIGdldFBhbmVsVmlldygKQEAgLTIxLDEwICsyNiwzMyBAQCBleHBvcnQg ZnVuY3Rpb24gZ2V0UGFuZWxWaWV3KAogICBwZ0Jyb3dzZXIsCiAgIHBhbmVsVHlwZQogKSB7Ci0g IGxldCBpdGVtID0gdHJlZS5zZWxlY3RlZCgpLAotICAgIG5vZGVEYXRhID0gaXRlbSAmJiB0cmVl Lml0ZW1EYXRhKGl0ZW0pLAotICAgIG5vZGUgPSBpdGVtICYmIG5vZGVEYXRhICYmIHBnQnJvd3Nl ci5Ob2Rlc1tub2RlRGF0YS5fdHlwZV0sCisgIGxldCBpdGVtID0gIV8uaXNOdWxsKHRyZWUpPyB0 cmVlLnNlbGVjdGVkKCk6IG51bGwsCisKKyAgICBub2RlRGF0YSwgbm9kZSwgdHJlZU5vZGVJbmZv LCBwcmVmZXJlbmNlczsKKyAgaWYgKGl0ZW0peworICAgIG5vZGVEYXRhID0gdHJlZS5pdGVtRGF0 YShpdGVtKTsKKyAgICBub2RlID0gbm9kZURhdGEgJiYgcGdCcm93c2VyLk5vZGVzW25vZGVEYXRh Ll90eXBlXTsKICAgICB0cmVlTm9kZUluZm8gPSBwZ0Jyb3dzZXIudHJlZS5nZXRUcmVlTm9kZUhp ZXJhcmNoeShpdGVtKTsKKyAgICBwcmVmZXJlbmNlcyA9IHBnQnJvd3Nlci5nZXRfcHJlZmVyZW5j ZXNfZm9yX21vZHVsZSgnZGFzaGJvYXJkcycpOworICB9CisgIGlmIChwYW5lbFR5cGUgPT0gJ2Rh c2hib2FyZCcpIHsKKyAgICBSZWFjdERPTS5yZW5kZXIoCisgICAgICA8VGhlbWU+CisgICAgICAg IDxEYXNoYm9hcmQKKyAgICAgICAgICB0cmVlTm9kZUluZm89e3RyZWVOb2RlSW5mb30KKyAgICAg ICAgICBwZ0Jyb3dzZXI9e3BnQnJvd3Nlcn0KKyAgICAgICAgICBub2RlRGF0YT17bm9kZURhdGF9 CisgICAgICAgICAgbm9kZT17bm9kZX0KKyAgICAgICAgICBpdGVtPXtpdGVtfQorICAgICAgICAg IHByZWZlcmVuY2VzPXtwcmVmZXJlbmNlc30KKyAgICAgICAgICBkaWQ9eygoIV8uaXNVbmRlZmlu ZWQodHJlZU5vZGVJbmZvKSkgJiYgKCFfLmlzVW5kZWZpbmVkKHRyZWVOb2RlSW5mb1snZGF0YWJh c2UnXSkpKSAmJiB0cmVlTm9kZUluZm9bJ2RhdGFiYXNlJ10uX2lkfQorICAgICAgICAgIHNpZD17 IV8uaXNVbmRlZmluZWQodHJlZU5vZGVJbmZvKSAmJiAhXy5pc1VuZGVmaW5lZCh0cmVlTm9kZUlu Zm9bJ3NlcnZlciddKSA/IHRyZWVOb2RlSW5mb1snc2VydmVyJ10uX2lkIDogJyd9CisgICAgICAg ICAgc2VydmVyQ29ubmVjdGVkPXshXy5pc1VuZGVmaW5lZCh0cmVlTm9kZUluZm8pICYmICFfLmlz VW5kZWZpbmVkKHRyZWVOb2RlSW5mb1snc2VydmVyJ10pID8gdHJlZU5vZGVJbmZvLnNlcnZlci5j b25uZWN0ZWQ6IGZhbHNlfQorICAgICAgICAvPgorICAgICAgPC9UaGVtZT4sCisgICAgICBjb250 YWluZXIKKyAgICApOworICB9CiAKIAogICBpZiAocGFuZWxUeXBlID09ICdzdGF0aXN0aWNzJykg ewpAQCAtNDEsNiArNjksMjAgQEAgZXhwb3J0IGZ1bmN0aW9uIGdldFBhbmVsVmlldygKICAgICAg IGNvbnRhaW5lcgogICAgICk7CiAgIH0KKyAgaWYgKHBhbmVsVHlwZSA9PSAncHJvcGVydGllcycp IHsKKyAgICBSZWFjdERPTS5yZW5kZXIoCisgICAgICA8VGhlbWU+CisgICAgICAgIDxDb2xsZWN0 aW9uTm9kZVZpZXcKKyAgICAgICAgICB0cmVlTm9kZUluZm89e3RyZWVOb2RlSW5mb30KKyAgICAg ICAgICBpdGVtPXtpdGVtfQorICAgICAgICAgIGl0ZW1Ob2RlRGF0YT17bm9kZURhdGF9CisgICAg ICAgICAgbm9kZT17bm9kZX0KKyAgICAgICAgICBwZ0Jyb3dzZXI9e3BnQnJvd3Nlcn0KKyAgICAg ICAgLz4KKyAgICAgIDwvVGhlbWU+LAorICAgICAgY29udGFpbmVyCisgICAgKTsKKyAgfQogICBp ZiAocGFuZWxUeXBlID09ICdkZXBlbmRlbmNpZXMnKSB7CiAgICAgUmVhY3RET00ucmVuZGVyKAog ICAgICAgPFRoZW1lPgpAQCAtNjksNiArMTExLDIwIEBAIGV4cG9ydCBmdW5jdGlvbiBnZXRQYW5l bFZpZXcoCiAgICAgICBjb250YWluZXIKICAgICApOwogICB9CisgIGlmIChwYW5lbFR5cGUgPT0g J3NxbCcpIHsKKyAgICBSZWFjdERPTS5yZW5kZXIoCisgICAgICA8VGhlbWU+CisgICAgICAgIDxT UUwKKyAgICAgICAgICB0cmVlTm9kZUluZm89e3RyZWVOb2RlSW5mb30KKyAgICAgICAgICBwZ0Jy b3dzZXI9e3BnQnJvd3Nlcn0KKyAgICAgICAgICBub2RlRGF0YT17bm9kZURhdGF9CisgICAgICAg ICAgbm9kZT17bm9kZX0KKyAgICAgICAgICBpdGVtPXtpdGVtfQorICAgICAgICAvPgorICAgICAg PC9UaGVtZT4sCisgICAgICBjb250YWluZXIKKyAgICApOworICB9CiB9CiAKIC8qIFdoZW4gc3dp dGNoaW5nIGZyb20gbm9ybWFsIG5vZGUgdG8gY29sbGVjdGlvbiBub2RlLCBjbGVhbiB1cCB0aGUg UmVhY3QgbW91bnRlZCBET00gKi8KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9z dGF0aWMvanMvQWN0aXZlUXVlcnkudWkuanMgYi93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGlj L2pzL0FjdGl2ZVF1ZXJ5LnVpLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MC4uYjhhNTAwYWVhCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0 YXRpYy9qcy9BY3RpdmVRdWVyeS51aS5qcwpAQCAtMCwwICsxLDY0IEBACisvLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8g cGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAt IDIwMjIsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMg cmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9y dCBnZXR0ZXh0IGZyb20gJ3NvdXJjZXMvZ2V0dGV4dCc7CitpbXBvcnQgQmFzZVVJU2NoZW1hIGZy b20gJ3NvdXJjZXMvU2NoZW1hVmlldy9iYXNlX3NjaGVtYS51aSc7CisKK2V4cG9ydCBkZWZhdWx0 IGNsYXNzIEFjdGl2ZVF1ZXJ5IGV4dGVuZHMgQmFzZVVJU2NoZW1hIHsKKyAgY29uc3RydWN0b3Io aW5pdFZhbHVlcykgeworICAgIHN1cGVyKHsKKyAgICAgIC4uLmluaXRWYWx1ZXMsCisgICAgfSk7 CisKKyAgfQorCisgIGdldCBiYXNlRmllbGRzKCkgeworCisgICAgcmV0dXJuIFsKKworICAgICAg eworICAgICAgICBpZDogJ2JhY2tlbmRfdHlwZScsCisgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdC YWNrZW5kIHR5cGUnKSwKKyAgICAgICAgdHlwZTogJ3RleHQnLAorICAgICAgICBlZGl0YWJsZTog dHJ1ZSwKKyAgICAgICAgbm9FbXB0eTogdHJ1ZSwKKyAgICAgICAgcmVhZG9ubHk6IHRydWUsCisg ICAgICAgIG1vZGU6IFsncHJvcGVydGllcyddLAorICAgICAgICBncm91cDogZ2V0dGV4dCgnRGV0 YWlscycpLAorICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAgaWQ6ICdxdWVyeV9zdGFydCcsCisg ICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdRdWVyeSBzdGFydGVkIGF0JyksCisgICAgICAgIHR5cGU6 ICd0ZXh0JywKKyAgICAgICAgZWRpdGFibGU6IGZhbHNlLAorICAgICAgICByZWFkb25seTogdHJ1 ZSwKKyAgICAgICAgZ3JvdXA6IGdldHRleHQoJ0RldGFpbHMnKSwKKyAgICAgIH0sCisgICAgICB7 CisgICAgICAgIGlkOiAnc3RhdGVfY2hhbmdlJywKKyAgICAgICAgbGFiZWw6IGdldHRleHQoJ0xh c3Qgc3RhdGUgY2hhbmdlZCBhdCcpLAorICAgICAgICB0eXBlOiAndGV4dCcsCisgICAgICAgIGVk aXRhYmxlOiB0cnVlLAorICAgICAgICByZWFkb25seTogdHJ1ZSwKKyAgICAgICAgZ3JvdXA6IGdl dHRleHQoJ0RldGFpbHMnKSwKKyAgICAgIH0sCisgICAgICB7CisgICAgICAgIGlkOiAncXVlcnkn LAorICAgICAgICBsYWJlbDogZ2V0dGV4dCgnU1FMJyksCisgICAgICAgIHR5cGU6ICd0ZXh0JywK KyAgICAgICAgZWRpdGFibGU6IHRydWUsCisgICAgICAgIHJlYWRvbmx5OiB0cnVlLAorICAgICAg ICBjb250cm9sOiAnc3FsJywKKyAgICAgICAgZ3JvdXA6IGdldHRleHQoJ0RldGFpbHMnKSwKKyAg ICAgIH0sCisgICAgXTsKKworICB9CisKK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Rhc2hi b2FyZC9zdGF0aWMvanMvRGFzaGJvYXJkLmpzeCBiL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0 aWMvanMvRGFzaGJvYXJkLmpzeApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAu LjY3YmNkODNjNAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0 aWMvanMvRGFzaGJvYXJkLmpzeApAQCAtMCwwICsxLDg2OCBAQAorLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRt aW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIy LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVh c2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gZXNsaW50LWRp c2FibGUtbmV4dC1saW5lIHJlYWN0L2Rpc3BsYXktbmFtZQoraW1wb3J0IFJlYWN0LCB7IHVzZUVm ZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JzsKK2ltcG9ydCBnZXR0ZXh0IGZyb20gJ3NvdXJj ZXMvZ2V0dGV4dCc7CitpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnOworaW1wb3J0 IGdldEFwaUluc3RhbmNlIGZyb20gJ3NvdXJjZXMvYXBpX2luc3RhbmNlJzsKK2ltcG9ydCBQZ1Rh YmxlIGZyb20gJ3NvdXJjZXMvY29tcG9uZW50cy9QZ1RhYmxlJzsKK2ltcG9ydCB7IG1ha2VTdHls ZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMnOworaW1wb3J0IHVybF9mb3IgZnJv bSAnc291cmNlcy91cmxfZm9yJzsKK2ltcG9ydCBHcmFwaHMgZnJvbSAnLi9HcmFwaHMnOworaW1w b3J0IE5vdGlmeSBmcm9tICcuLi8uLi8uLi9zdGF0aWMvanMvaGVscGVycy9Ob3RpZmllcic7Citp bXBvcnQgeyBCb3gsIFRhYiwgVGFicyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlJzsKK2ltcG9y dCB7IFBnSWNvbkJ1dHRvbiB9IGZyb20gJy4uLy4uLy4uL3N0YXRpYy9qcy9jb21wb25lbnRzL0J1 dHRvbnMnOworaW1wb3J0IENhbmNlbEljb24gZnJvbSAnQG11aS9pY29ucy1tYXRlcmlhbC9DYW5j ZWwnOworaW1wb3J0IFNxdWFyZUljb24gZnJvbSAnQG11aS9pY29ucy1tYXRlcmlhbC9TcXVhcmUn OworaW1wb3J0IEFycm93UmlnaHRPdXRsaW5lZEljb24gZnJvbSAnQG11aS9pY29ucy1tYXRlcmlh bC9BcnJvd1JpZ2h0T3V0bGluZWQnOworaW1wb3J0IEFycm93RHJvcERvd25PdXRsaW5lZEljb24g ZnJvbSAnQG11aS9pY29ucy1tYXRlcmlhbC9BcnJvd0Ryb3BEb3duT3V0bGluZWQnOworCitpbXBv cnQgV2VsY29tZURhc2hib2FyZCBmcm9tICcuL1dlbGNvbWVEYXNoYm9hcmQnOworCitpbXBvcnQg QWN0aXZlUXVlcnkgZnJvbSAnLi9BY3RpdmVRdWVyeS51aSc7CisKKworZnVuY3Rpb24gcGFyc2VE YXRhKGRhdGEpIHsKKyAgdmFyIHJlcyA9IFtdOworCisgIGRhdGEuZm9yRWFjaCgocm93KSA9PiB7 CisgICAgcmVzLnB1c2goeyAuLi5yb3csIGljb246ICcnIH0pOworICB9KTsKKyAgcmV0dXJuIHJl czsKK30KKworY29uc3QgdXNlU3R5bGVzID0gbWFrZVN0eWxlcygodGhlbWUpID0+ICh7CisgIGVt cHR5UGFuZWw6IHsKKyAgICBoZWlnaHQ6ICcxMDAlJywKKyAgICBiYWNrZ3JvdW5kOiB0aGVtZS5w YWxldHRlLmdyZXlbNDAwXSwKKyAgICBvdmVyZmxvdzogJ2hpZGRlbicsCisgICAgcGFkZGluZzog JzhweCcsCisgICAgZGlzcGxheTogJ2ZsZXgnLAorICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4n LAorICAgIGZsZXhHcm93OiAxCisKKyAgfSwKKyAgY2FyZEhlYWRlcjogeworICAgIHBhZGRpbmc6 ICcwLjI1cmVtIDAuNXJlbScsCisgICAgZm9udFdlaWdodDogJ2JvbGQnLAorICAgIGJhY2tncm91 bmRDb2xvcjogJyNmZmYnLAorICAgIGNvbG9yOiAnIzIyMjIyMicsCisgICAgYm9yZGVyQ29sb3I6 ICcjZGRlMGU2JworICB9LAorICBzZWFyY2hQYWRkaW5nOiB7CisgICAgZGlzcGxheTogJ2ZsZXgn LAorICAgIGZsZXg6IDIuNSwKKyAgfSwKKyAgY29tcG9uZW50OiB7CisgICAgcGFkZGluZzogJzhw eCcsCisgICAgZmxleEdyb3c6IDEsCisgICAgbWluSGVpZ2h0OiAwCisgIH0sCisgIHNlYXJjaElu cHV0OiB7CisgICAgZmxleDogMSwKKyAgICAvLyBtYXJnaW5Ub3A6IDIsCisgICAgLy8gYm9yZGVy TGVmdDogIm5vbmUiLAorICAgIC8vIHBhZGRpbmdMZWZ0OiA1LAorICB9LAorICBwYW5lbEljb246 IHsKKyAgICB3aWR0aDogJzgwJScsCisgICAgbWFyZ2luOiAnMCBhdXRvJywKKyAgICBtYXJnaW5U b3A6ICcyNXB4ICFpbXBvcnRhbnQnLAorICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLAorICAgIHRl eHRBbGlnbjogJ2NlbnRlcicsCisgIH0sCisgIHBhbmVsTWVzc2FnZTogeworICAgIG1hcmdpbkxl ZnQ6ICcwLjVyZW0nLAorICAgIGZvbnRTaXplOiAnMC44NzVyZW0nLAorICB9LAorICBwYW5lbENv bnRlbnQ6IHsKKyAgICBtYXJnaW46IDAsCisgICAgLy8gcGFkZGluZzogdGhlbWUuc3BhY2luZygw LjUpLAorICAgIC8vIC4uLnRoZW1lLm1peGlucy5wYW5lbEJvcmRlci50b3AsCisgICAgLy8gLi4u dGhlbWUubWl4aW5zLnBhbmVsQm9yZGVyLmxlZnQsCisgICAgYm9yZGVyOiAnMnB4IHNvbGlkICNk ZGUwZTYnLAorICAgIC8vIGRpc3BsYXk6ICdmbGV4JywKKyAgICBmbGV4RGlyZWN0aW9uOiAnY29s dW1uJywKKyAgICBmbGV4R3JvdzogMSwKKyAgICBvdmVyZmxvdzogJ2F1dG8nCisgICAgLy8gbWF4 SGVpZ2h0OiAnMTAwMDBweCcKKyAgfSwKKyAgYXV0b1Jlc2l6ZXI6IHsKKyAgICB3aWR0aDogJzEw MCUgIWltcG9ydGFudCcsCisgICAgaGVpZ2h0OiAnMTAwJSAhaW1wb3J0YW50JywKKyAgICBtaW5X aWR0aDogJzEwMCUnLAorICAgIHBhZGRpbmdUb3A6ICc2cHgnLAorICAgIG1pbkhlaWdodDogJzEw JSAhaW1wb3J0YW50JywKKyAgICAvLyBtYXhIZWlnaHQ6JzEwMDBweCAhaW1wb3J0YW50JywKKyAg ICAvLyBvdmVyZmxvd3k6ICdoaWRkZW4gIWltcG9ydGFudCcsCisgIH0sCit9KSk7CisKKy8qIGVz bGludC1kaXNhYmxlIHJlYWN0L2Rpc3BsYXktbmFtZSAqLworZXhwb3J0IGRlZmF1bHQgZnVuY3Rp b24gRGFzaGJvYXJkKHsKKyAgbm9kZURhdGEsCisgIG5vZGUsCisgIGl0ZW0sCisgIHBnQnJvd3Nl ciwKKyAgcHJlZmVyZW5jZXMsCisgIHNpZCwKKyAgZGlkLAorICAuLi5wcm9wcworfSkgeworICBj b25zdCBjbGFzc2VzID0gdXNlU3R5bGVzKCk7CisgIGxldCB0YWIgPSBbJ1Nlc3Npb25zJywgJ0xv Y2snLCAnUHJlcGFyZWQgVHJhbnNhY3Rpb25zJ107CisKKyAgY29uc3QgW2Rhc2hEYXRhLCBzZXRk YXNoRGF0YV0gPSB1c2VTdGF0ZShbXSk7CisgIGNvbnN0IFttc2csIHNldE1zZ10gPSB1c2VTdGF0 ZSgnJyk7CisgIGNvbnN0IFt2YWwsIHNldFZhbF0gPSB1c2VTdGF0ZSgwKTsKKyAgY29uc3QgW3Nj aGVtYSwgc2V0U2NoZW1hXSA9IFJlYWN0LnVzZVN0YXRlKCk7CisKKyAgaWYgKCFkaWQpIHsKKyAg ICB0YWIucHVzaCgnQ29uZmlndXJhdGlvbicpOworICB9CisKKyAgY29uc3QgdGFiQ2hhbmdlZCA9 IChlLCB0YWJWYWwpID0+IHsKKyAgICBzZXRWYWwodGFiVmFsKTsKKyAgfTsKKworICBjb25zdCBz ZXJ2ZXJDb25maWdDb2x1bW5zID0gUmVhY3QudXNlTWVtbygoKSA9PiBbCisgICAgeworICAgICAg YWNjZXNzb3I6ICduYW1lJywKKyAgICAgIEhlYWRlcjogZ2V0dGV4dCgnTmFtZScpLAorICAgICAg c29ydGJsZTogdHJ1ZSwKKyAgICAgIHJlc2l6YWJsZTogdHJ1ZSwKKyAgICAgIGRpc2FibGVHbG9i YWxGaWx0ZXI6IGZhbHNlLAorICAgIH0sCisgICAgeworICAgICAgYWNjZXNzb3I6ICdjYXRlZ29y eScsCisgICAgICBIZWFkZXI6IGdldHRleHQoJ0NhdGVnb3J5JyksCisgICAgICBzb3J0YmxlOiB0 cnVlLAorICAgICAgcmVzaXphYmxlOiB0cnVlLAorICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjog ZmFsc2UsCisgICAgfSwKKyAgICB7CisgICAgICBhY2Nlc3NvcjogJ3NldHRpbmcnLAorICAgICAg SGVhZGVyOiBnZXR0ZXh0KCdTZXR0aW5nJyksCisgICAgICBzb3J0YmxlOiB0cnVlLAorICAgICAg cmVzaXphYmxlOiB0cnVlLAorICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisgICAg fSwKKyAgICB7CisgICAgICBhY2Nlc3NvcjogJ3VuaXQnLAorICAgICAgSGVhZGVyOiBnZXR0ZXh0 KCdVbml0JyksCisgICAgICBlZGl0YWJsZTogZmFsc2UsCisgICAgICBjZWxsOiAnc3RyaW5nJywK KyAgICB9LAorICAgIHsKKyAgICAgIGFjY2Vzc29yOiAnc2hvcnRfZGVzYycsCisgICAgICBIZWFk ZXI6IGdldHRleHQoJ0Rlc2NyaXB0aW9uJyksCisgICAgICBzb3J0YmxlOiB0cnVlLAorICAgICAg cmVzaXphYmxlOiBmYWxzZSwKKyAgICAgIGRpc2FibGVHbG9iYWxGaWx0ZXI6IGZhbHNlLAorICAg IH0sCisgIF0sIFt2YWxdKTsKKworICBjb25zdCBhY3Rpdml0eUNvbHVtbnMgPSBbCisgICAgewor ICAgICAgYWNjZXNzb3I6ICd0ZXJtaW5hdGVfcXVlcnknLAorICAgICAgSGVhZGVyOiAnICcsCisg ICAgICBzb3J0YmxlOiB0cnVlLAorICAgICAgcmVzaXphYmxlOiB0cnVlLAorICAgICAgZGlzYWJs ZUdsb2JhbEZpbHRlcjogZmFsc2UsCisgICAgICBtaW5XaWR0aDogMjYsCisgICAgICBtYXhXaWR0 aDogNDQsCisgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvZGlzcGxheS1u YW1lCisgICAgICBDZWxsOiAoe3Jvd30pPT57CisgICAgICAgIHZhciB0ZXJtaW5hdGVfc2Vzc2lv bl91cmwgPQorICAgICAgICAgIHVybF9mb3IoJ2Rhc2hib2FyZC5pbmRleCcpICsKKyAgICAgICAg ICAndGVybWluYXRlX3Nlc3Npb24nICsKKyAgICAgICAgICAnLycgKworICAgICAgICAgIHNpZCwK KyAgICAgICAgICB0aXRsZSA9IGdldHRleHQoJ1Rlcm1pbmF0ZSBTZXNzaW9uPycpLAorICAgICAg ICAgIHR4dENvbmZpcm0gPSBnZXR0ZXh0KAorICAgICAgICAgICAgJ0FyZSB5b3Ugc3VyZSB5b3Ug d2lzaCB0byB0ZXJtaW5hdGUgdGhlIHNlc3Npb24/JworICAgICAgICAgICksCisgICAgICAgICAg dHh0U3VjY2VzcyA9IGdldHRleHQoJ1Nlc3Npb24gdGVybWluYXRlZCBzdWNjZXNzZnVsbHkuJyks CisgICAgICAgICAgdHh0RXJyb3IgPSBnZXR0ZXh0KAorICAgICAgICAgICAgJ0FuIGVycm9yIG9j Y3VycmVkIHdoaWxzdCB0ZXJtaW5hdGluZyB0aGUgYWN0aXZlIHF1ZXJ5LicKKyAgICAgICAgICAp LAorICAgICAgICAgIGFjdGlvbl91cmwgPSBkaWQgPyB0ZXJtaW5hdGVfc2Vzc2lvbl91cmwgKyAn LycgKyBkaWQgOiB0ZXJtaW5hdGVfc2Vzc2lvbl91cmw7CisKKyAgICAgICAgY29uc3QgYXBpID0g Z2V0QXBpSW5zdGFuY2UoKTsKKworICAgICAgICByZXR1cm4gKAorICAgICAgICAgIDxQZ0ljb25C dXR0b24KKyAgICAgICAgICAgIHZhcmlhbnQ9Im91dGxpbmVkIgorICAgICAgICAgICAgaWNvbj17 PENhbmNlbEljb24gZm9udFNpemU9InNtYWxsIiBzeD17eyBjb2xvcjogJyNkMTE2MTYnIH19IC8+ fQorICAgICAgICAgICAgb25DbGljaz17KCkgPT4geworICAgICAgICAgICAgICBpZiAoCisgICAg ICAgICAgICAgICAgIWNhblRha2VBY3Rpb24oCisgICAgICAgICAgICAgICAgICByb3csCisgICAg ICAgICAgICAgICAgICAndGVybWluYXRlJywKKyAgICAgICAgICAgICAgICAgIG5vZGVEYXRhLAor ICAgICAgICAgICAgICAgICAgcHJvcHMudHJlZU5vZGVJbmZvCisgICAgICAgICAgICAgICAgKQor ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICBh Y3Rpb25fdXJsICs9ICcvJyArIHJvdy52YWx1ZXMucGlkOworICAgICAgICAgICAgICBOb3RpZnku Y29uZmlybSgKKyAgICAgICAgICAgICAgICB0aXRsZSwKKyAgICAgICAgICAgICAgICB0eHRDb25m aXJtLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgIGFw aQorICAgICAgICAgICAgICAgICAgICAuZGVsZXRlKGFjdGlvbl91cmwpCisgICAgICAgICAgICAg ICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICBpZiAo cmVzID09IGdldHRleHQoJ1N1Y2Nlc3MnKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgTm90 aWZ5LnN1Y2Nlc3ModHh0U3VjY2Vzcyk7CisgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmeS5lcnJvcih0eHRFcnJvcik7CisgICAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAg ICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CisgICAgICAgICAgICAgICAgICAgICAgTm90 aWZ5LmFsZXJ0KAorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgnRmFpbGVkIHRvIHJl dHJpZXZlIGRhdGEgZnJvbSB0aGUgc2VydmVyLicpLAorICAgICAgICAgICAgICAgICAgICAgICAg Z2V0dGV4dChlcnJvci5tZXNzYWdlKQorICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAg ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVu Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICApOworICAgICAgICAgICAgfX0KKyAgICAgICAgICAgIGNvbG9y PSJkZWZhdWx0IgorICAgICAgICAgICAgYXJpYS1sYWJlbD0iVGVybWluYXRlIFNlc3Npb24/Igor ICAgICAgICAgICAgdGl0bGU9e2dldHRleHQoJ1Rlcm1pbmF0ZSBTZXNzaW9uPycpfQorICAgICAg ICAgID48L1BnSWNvbkJ1dHRvbj4KKyAgICAgICAgKTsKKyAgICAgIH0sCisgICAgfSwKKyAgICB7 CisgICAgICBhY2Nlc3NvcjogJ2NhbmNlbF9RdWVyeScsCisgICAgICBIZWFkZXI6ICcgJywKKyAg ICAgIHNvcnRibGU6IHRydWUsCisgICAgICByZXNpemFibGU6IHRydWUsCisgICAgICBkaXNhYmxl R2xvYmFsRmlsdGVyOiBmYWxzZSwKKyAgICAgIG1pbldpZHRoOiAyNiwKKyAgICAgIG1heFdpZHRo OiA0NCwKKyAgICAgIENlbGw6ICh7IHJvdyB9KSA9PiB7CisgICAgICAgIHZhciBjYW5jZWxfcXVl cnlfdXJsID0KKyAgICAgICAgICB1cmxfZm9yKCdkYXNoYm9hcmQuaW5kZXgnKSArICdjYW5jZWxf cXVlcnknICsgJy8nICsgc2lkICwKKyAgICAgICAgICB0aXRsZSA9IGdldHRleHQoJ0NhbmNlbCBB Y3RpdmUgUXVlcnk/JyksCisgICAgICAgICAgdHh0Q29uZmlybSA9IGdldHRleHQoCisgICAgICAg ICAgICAnQXJlIHlvdSBzdXJlIHlvdSB3aXNoIHRvIGNhbmNlbCB0aGUgYWN0aXZlIHF1ZXJ5PycK KyAgICAgICAgICApLAorICAgICAgICAgIHR4dFN1Y2Nlc3MgPSBnZXR0ZXh0KCdBY3RpdmUgcXVl cnkgY2FuY2VsbGVkIHN1Y2Nlc3NmdWxseS4nKSwKKyAgICAgICAgICB0eHRFcnJvciA9IGdldHRl eHQoCisgICAgICAgICAgICAnQW4gZXJyb3Igb2NjdXJyZWQgd2hpbHN0IGNhbmNlbGxpbmcgdGhl IGFjdGl2ZSBxdWVyeS4nCisgICAgICAgICAgKSwKKyAgICAgICAgICBhY3Rpb25fdXJsID0gZGlk ID8gY2FuY2VsX3F1ZXJ5X3VybCArICcvJyArIGRpZCA6IGNhbmNlbF9xdWVyeV91cmw7CisgICAg ICAgIAorICAgICAgICBjb25zdCBhcGkgPSBnZXRBcGlJbnN0YW5jZSgpOworCisgICAgICAgIHJl dHVybiAoCisgICAgICAgICAgPFBnSWNvbkJ1dHRvbgorICAgICAgICAgICAgdmFyaWFudD0ib3V0 bGluZWQiCisgICAgICAgICAgICBpY29uPXs8U3F1YXJlSWNvbiBmb250U2l6ZT0ic21hbGwiIC8+ fQorICAgICAgICAgICAgb25DbGljaz17KCkgPT4geworICAgICAgICAgICAgICBpZiAoCisgICAg ICAgICAgICAgICAgIWNhblRha2VBY3Rpb24oCisgICAgICAgICAgICAgICAgICByb3csCisgICAg ICAgICAgICAgICAgICAnY2FuY2VsJywKKyAgICAgICAgICAgICAgICAgIG5vZGVEYXRhLAorICAg ICAgICAgICAgICAgICAgcHJvcHMudHJlZU5vZGVJbmZvICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgYWN0aW9u X3VybCArPSAnLycgKyByb3cudmFsdWVzLnBpZDsKKyAgICAgICAgICAgICAgTm90aWZ5LmNvbmZp cm0oCisgICAgICAgICAgICAgICAgdGl0bGUsCisgICAgICAgICAgICAgICAgdHh0Q29uZmlybSwK KyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICBhcGkKKyAg ICAgICAgICAgICAgICAgICAgLmRlbGV0ZShhY3Rpb25fdXJsKQorICAgICAgICAgICAgICAgICAg ICAudGhlbihmdW5jdGlvbiAocmVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyA9 PSBnZXR0ZXh0KCdTdWNjZXNzJykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmeS5z dWNjZXNzKHR4dFN1Y2Nlc3MpOworICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICAgICAgICAgICAgICBOb3RpZnkuZXJyb3IodHh0RXJyb3IpOworICAgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAgICAg LmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgeworICAgICAgICAgICAgICAgICAgICAgIE5vdGlmeS5h bGVydCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldHRleHQoJ0ZhaWxlZCB0byByZXRyaWV2 ZSBkYXRhIGZyb20gdGhlIHNlcnZlci4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldHRl eHQoZXJyb3IubWVzc2FnZSkKKyAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAg ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9u ICgpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH19CisgICAgICAgICAgICBjb2xvcj0iZGVm YXVsdCIKKyAgICAgICAgICAgIGFyaWEtbGFiZWw9IkNhbmNlbCB0aGUgcXVlcnkiCisgICAgICAg ICAgICB0aXRsZT17Z2V0dGV4dCgnQ2FuY2VsIHRoZSBhY3RpdmUgcXVlcnknKX0KKyAgICAgICAg ICA+PC9QZ0ljb25CdXR0b24+CisgICAgICAgICk7CisgICAgICB9LAorICAgIH0sCisgICAgewor ICAgICAgYWNjZXNzb3I6ICd2aWV3X2FjdGl2ZV9xdWVyeScsCisgICAgICBIZWFkZXI6ICcgJywK KyAgICAgIHNvcnRibGU6IHRydWUsCisgICAgICByZXNpemFibGU6IHRydWUsCisgICAgICBkaXNh YmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKyAgICAgIG1pbldpZHRoOiAyNiwKKyAgICAgIG1heFdp ZHRoOiA0NCwKKyAgICAgIENlbGw6ICh7IHJvdyB9KSA9PiB7CisKKworICAgICAgICBsZXQgY2Fu RWRpdFJvdyA9IHRydWU7CisgICAgICAgIHJldHVybiAoCisgICAgICAgICAgPFBnSWNvbkJ1dHRv bgorICAgICAgICAgICAgaWNvbj17cm93LmlzRXhwYW5kZWQgPyA8QXJyb3dEcm9wRG93bk91dGxp bmVkSWNvbiBmb250U2l6ZT0ic21hbGwiIC8+IDogPEFycm93UmlnaHRPdXRsaW5lZEljb24gZm9u dFNpemU9InNtYWxsIiAvPn0KKyAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHsKKyAgICAgICAg ICAgICAgcm93LnRvZ2dsZVJvd0V4cGFuZGVkKCFyb3cuaXNFeHBhbmRlZCk7CisgICAgICAgICAg ICAgIHNldFNjaGVtYSgKKyAgICAgICAgICAgICAgICBuZXcgQWN0aXZlUXVlcnkoeworICAgICAg ICAgICAgICAgICAgcXVlcnk6IHJvdy5vcmlnaW5hbC5xdWVyeSwKKyAgICAgICAgICAgICAgICAg IGJhY2tlbmRfdHlwZTogcm93Lm9yaWdpbmFsLmJhY2tlbmRfdHlwZSwKKyAgICAgICAgICAgICAg ICAgIHN0YXRlX2NoYW5nZTogcm93Lm9yaWdpbmFsLnN0YXRlX2NoYW5nZSwKKyAgICAgICAgICAg ICAgICAgIHF1ZXJ5X3N0YXJ0OiByb3cub3JpZ2luYWwucXVlcnlfc3RhcnQsCisgICAgICAgICAg ICAgICAgfSkKKyAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH19CisgICAgICAgICAgICBk aXNhYmxlZD17IWNhbkVkaXRSb3d9CisgICAgICAgICAgICBjb2xvcj0iZGVmYXVsdCIKKyAgICAg ICAgICAgIGFyaWEtbGFiZWw9IlZpZXcgdGhlIGFjdGl2ZSBzZXNzaW9uIGRldGFpbHMiCisgICAg ICAgICAgICB0aXRsZT17Z2V0dGV4dCgnVmlldyB0aGUgYWN0aXZlIHNlc3Npb24gZGV0YWlscycp fQorICAgICAgICAgIC8+CisgICAgICAgICk7CisgICAgICB9LAorICAgIH0sCisgICAgeworICAg ICAgYWNjZXNzb3I6ICdwaWQnLAorICAgICAgSGVhZGVyOiBnZXR0ZXh0KCdQSUQnKSwKKyAgICAg IHNvcnRibGU6IHRydWUsCisgICAgICByZXNpemFibGU6IGZhbHNlLAorICAgICAgZGlzYWJsZUds b2JhbEZpbHRlcjogZmFsc2UsCisgICAgICBtaW5XaWR0aDogMjYsCisgICAgICBtYXhXaWR0aDog NjAsCisgICAgfSwKKyAgICB7CisgICAgICBhY2Nlc3NvcjogJ3VzZW5hbWUnLAorICAgICAgSGVh ZGVyOiBnZXR0ZXh0KCdVc2VyJyksCisgICAgICBzb3J0YmxlOiB0cnVlLAorICAgICAgcmVzaXph YmxlOiBmYWxzZSwKKyAgICAgIGRpc2FibGVHbG9iYWxGaWx0ZXI6IGZhbHNlLAorICAgICAgbWlu V2lkdGg6IDI2LAorICAgICAgbWF4V2lkdGg6IDgwLAorICAgIH0sCisgICAgeworICAgICAgYWNj ZXNzb3I6ICdhcHBsaWNhdGlvbl9uYW1lJywKKyAgICAgIEhlYWRlcjogZ2V0dGV4dCgnQXBwbGlj YXRpb24nKSwKKyAgICAgIHNvcnRibGU6IHRydWUsCisgICAgICByZXNpemFibGU6IGZhbHNlLAor ICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisgICAgICBtaW5XaWR0aDogMjYsCisg ICAgICBtYXhXaWR0aDogMTUwLAorICAgIH0sCisgICAgeworICAgICAgYWNjZXNzb3I6ICdjbGll bnRfYWRkcicsCisgICAgICBIZWFkZXI6IGdldHRleHQoJ0NsaWVudCcpLAorICAgICAgc29ydGJs ZTogdHJ1ZSwKKyAgICAgIHJlc2l6YWJsZTogZmFsc2UsCisgICAgICBkaXNhYmxlR2xvYmFsRmls dGVyOiBmYWxzZSwKKyAgICAgIG1pbldpZHRoOiAyNiwKKyAgICAgIG1heFdpZHRoOiA2MCwKKyAg ICB9LAorICAgIHsKKyAgICAgIGFjY2Vzc29yOiAnYmFja2VuZF9zdGFydCcsCisgICAgICBIZWFk ZXI6IGdldHRleHQoJ0JhY2tlbmQgc3RhcnQnKSwKKyAgICAgIHNvcnRibGU6IHRydWUsCisgICAg ICByZXNpemFibGU6IGZhbHNlLAorICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisg ICAgICBtaW5XaWR0aDogMjYsCisgICAgICBtYXhXaWR0aDogMTUwLAorICAgIH0sCisgICAgewor ICAgICAgYWNjZXNzb3I6ICdzdGF0ZScsCisgICAgICBIZWFkZXI6IGdldHRleHQoJ1N0YXRlJyks CisgICAgICBzb3J0YmxlOiB0cnVlLAorICAgICAgcmVzaXphYmxlOiBmYWxzZSwKKyAgICAgIGRp c2FibGVHbG9iYWxGaWx0ZXI6IGZhbHNlLAorICAgICAgbWluV2lkdGg6IDI2LAorICAgICAgbWF4 V2lkdGg6IDYwLAorICAgIH0sCisKKyAgICB7CisgICAgICBhY2Nlc3NvcjogJ3dhaXRpbmcnLAor ICAgICAgSGVhZGVyOiBnZXR0ZXh0KCdXYWl0aW5nJyksCisgICAgICBzb3J0YmxlOiB0cnVlLAor ICAgICAgcmVzaXphYmxlOiBmYWxzZSwKKyAgICAgIGRpc2FibGVHbG9iYWxGaWx0ZXI6IGZhbHNl LAorICAgIH0sCisgICAgeworICAgICAgYWNjZXNzb3I6ICd3YWl0X2V2ZW50JywKKyAgICAgIEhl YWRlcjogZ2V0dGV4dCgnV2FpdCBldmVudCcpLAorICAgICAgc29ydGJsZTogdHJ1ZSwKKyAgICAg IHJlc2l6YWJsZTogZmFsc2UsCisgICAgICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKyAg ICB9LAorICAgIHsKKyAgICAgIGFjY2Vzc29yOiAnYmxvY2tpbmdfcGlkcycsCisgICAgICBIZWFk ZXI6IGdldHRleHQoJ0Jsb2NraW5nIFBJRHMnKSwKKyAgICAgIHNvcnRibGU6IHRydWUsCisgICAg ICByZXNpemFibGU6IGZhbHNlLAorICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisg ICAgfSwKKyAgXTsKKworICBjb25zdCBkYXRhYmFzZUxvY2tzQ29sdW1ucyA9IFsKKyAgICB7Cisg ICAgICBhY2Nlc3NvcjogJ3BpZCcsCisgICAgICBIZWFkZXI6IGdldHRleHQoJ1BJRCcpLAorICAg ICAgc29ydGJsZTogdHJ1ZSwKKyAgICAgIHJlc2l6YWJsZTogZmFsc2UsCisgICAgICBkaXNhYmxl R2xvYmFsRmlsdGVyOiBmYWxzZSwKKyAgICAgIG1pbldpZHRoOiAyNiwKKyAgICAgIG1heFdpZHRo OiA1MCwKKyAgICB9LAorICAgIHsKKyAgICAgIGFjY2Vzc29yOiAnbG9ja3R5cGUnLAorICAgICAg SGVhZGVyOiBnZXR0ZXh0KCdMb2NrIHR5cGUnKSwKKyAgICAgIHNvcnRibGU6IHRydWUsCisgICAg ICByZXNpemFibGU6IGZhbHNlLAorICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisg ICAgICBtaW5XaWR0aDogMjYsCisgICAgICBtYXhXaWR0aDogNjAsCisgICAgfSwKKyAgICB7Cisg ICAgICBhY2Nlc3NvcjogJ3JlbGF0aW9uJywKKyAgICAgIEhlYWRlcjogZ2V0dGV4dCgnVGFyZ2V0 IHJlbGF0aW9uJyksCisgICAgICBzb3J0YmxlOiB0cnVlLAorICAgICAgcmVzaXphYmxlOiBmYWxz ZSwKKyAgICAgIGRpc2FibGVHbG9iYWxGaWx0ZXI6IGZhbHNlLAorICAgIH0sCisgICAgeworICAg ICAgYWNjZXNzb3I6ICdwYWdlJywKKyAgICAgIEhlYWRlcjogZ2V0dGV4dCgnUGFnZScpLAorICAg ICAgc29ydGJsZTogdHJ1ZSwKKyAgICAgIHJlc2l6YWJsZTogZmFsc2UsCisgICAgICBkaXNhYmxl R2xvYmFsRmlsdGVyOiBmYWxzZSwKKyAgICAgIG1pbldpZHRoOiAyNiwKKyAgICAgIG1heFdpZHRo OiA1MCwKKyAgICB9LAorICAgIHsKKyAgICAgIGFjY2Vzc29yOiAndHVwbGUnLAorICAgICAgSGVh ZGVyOiBnZXR0ZXh0KCdUdXBsZScpLAorICAgICAgc29ydGJsZTogdHJ1ZSwKKyAgICAgIHJlc2l6 YWJsZTogZmFsc2UsCisgICAgICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKyAgICAgIG1p bldpZHRoOiAyNiwKKyAgICAgIG1heFdpZHRoOiA1MCwKKyAgICB9LAorICAgIHsKKyAgICAgIGFj Y2Vzc29yOiAndmlydHVhbHhpZCcsCisgICAgICBIZWFkZXI6IGdldHRleHQoJ3ZYSUQgKHRhcmdl dCknKSwKKyAgICAgIHNvcnRibGU6IHRydWUsCisgICAgICByZXNpemFibGU6IGZhbHNlLAorICAg ICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisgICAgfSwKKyAgICB7CisgICAgICBhY2Nl c3NvcjogJ3RyYW5zYWN0aW9uaWQnLAorICAgICAgSGVhZGVyOiBnZXR0ZXh0KCdYSUQgKHRhcmdl dCknKSwKKyAgICAgIHNvcnRibGU6IHRydWUsCisgICAgICByZXNpemFibGU6IGZhbHNlLAorICAg ICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisgICAgfSwKKyAgICB7CisgICAgICBhY2Nl c3NvcjogJ2NsYXNzaWQnLAorICAgICAgSGVhZGVyOiBnZXR0ZXh0KCdDbGFzcycpLAorICAgICAg c29ydGJsZTogdHJ1ZSwKKyAgICAgIHJlc2l6YWJsZTogZmFsc2UsCisgICAgICBkaXNhYmxlR2xv YmFsRmlsdGVyOiBmYWxzZSwKKyAgICAgIG1pbldpZHRoOiAyNiwKKyAgICAgIG1heFdpZHRoOiA0 MCwKKyAgICB9LAorICAgIHsKKyAgICAgIGFjY2Vzc29yOiAnb2JqaWQnLAorICAgICAgSGVhZGVy OiBnZXR0ZXh0KCdPYmplY3QgSUQnKSwKKyAgICAgIHNvcnRibGU6IHRydWUsCisgICAgICByZXNp emFibGU6IGZhbHNlLAorICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisgICAgfSwK KyAgICB7CisgICAgICBhY2Nlc3NvcjogJ3ZpcnR1YWx0cmFuc2FjdGlvbicsCisgICAgICBIZWFk ZXI6IGdldHRleHQoJ3ZYSUQgKG93bmVyKScpLAorICAgICAgc29ydGJsZTogdHJ1ZSwKKyAgICAg IHJlc2l6YWJsZTogZmFsc2UsCisgICAgICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKyAg ICB9LAorICAgIHsKKyAgICAgIGFjY2Vzc29yOiAnbW9kZScsCisgICAgICBIZWFkZXI6IGdldHRl eHQoJ01vZGUnKSwKKyAgICAgIHNvcnRibGU6IHRydWUsCisgICAgICByZXNpemFibGU6IGZhbHNl LAorICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisgICAgfSwKKyAgICB7CisgICAg ICBhY2Nlc3NvcjogJ2dyYW50ZWQnLAorICAgICAgSGVhZGVyOiBnZXR0ZXh0KCdHcmFudGVkPycp LAorICAgICAgc29ydGJsZTogdHJ1ZSwKKyAgICAgIHJlc2l6YWJsZTogZmFsc2UsCisgICAgICBk aXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKyAgICB9LAorICAgIC8vIHsKKyAgICAvLyAgIGFj Y2Vzc29yOiAiZGF0bmFtZSIsCisgICAgLy8gICBIZWFkZXI6IGdldHRleHQoIkRCIE5hbWU/Iiks CisgICAgLy8gICBzb3J0YmxlOiB0cnVlLAorICAgIC8vICAgcmVzaXphYmxlOiBmYWxzZSwKKyAg ICAvLyAgIGRpc2FibGVHbG9iYWxGaWx0ZXI6IGZhbHNlLAorICAgIC8vIH0sCisgICAgLy8gewor ICAgIC8vICAgYWNjZXNzb3I6ICJmYXN0cGF0aCIsCisgICAgLy8gICBIZWFkZXI6IGdldHRleHQo ImZhc3RwYXRoPyIpLAorICAgIC8vICAgc29ydGJsZTogdHJ1ZSwKKyAgICAvLyAgIHJlc2l6YWJs ZTogZmFsc2UsCisgICAgLy8gICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKyAgICAvLyB9 LAorICAgIC8vIHsKKyAgICAvLyAgIGFjY2Vzc29yOiAib2Jqc3ViaWQiLAorICAgIC8vICAgSGVh ZGVyOiBnZXR0ZXh0KCJvYmpzdWJpZD8iKSwKKyAgICAvLyAgIHNvcnRibGU6IHRydWUsCisgICAg Ly8gICByZXNpemFibGU6IGZhbHNlLAorICAgIC8vICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFs c2UsCisgICAgLy8gfSwKKyAgXTsKKworICBjb25zdCBkYXRhYmFzZVByZXBhcmVkQ29sdW1ucyA9 IFsKKyAgICB7CisgICAgICBhY2Nlc3NvcjogJ2dpdCcsCisgICAgICBIZWFkZXI6IGdldHRleHQo J05hbWUnKSwKKyAgICAgIHNvcnRibGU6IHRydWUsCisgICAgICByZXNpemFibGU6IGZhbHNlLAor ICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisgICAgfSwKKyAgICB7CisgICAgICBh Y2Nlc3NvcjogJ093bmVyJywKKyAgICAgIEhlYWRlcjogZ2V0dGV4dCgnT3duZXInKSwKKyAgICAg IHNvcnRibGU6IHRydWUsCisgICAgICByZXNpemFibGU6IGZhbHNlLAorICAgICAgZGlzYWJsZUds b2JhbEZpbHRlcjogZmFsc2UsCisgICAgfSwKKyAgICB7CisgICAgICBhY2Nlc3NvcjogJ3RyYW5z YWN0aW9uJywKKyAgICAgIEhlYWRlcjogZ2V0dGV4dCgnWElEJyksCisgICAgICBzb3J0YmxlOiB0 cnVlLAorICAgICAgcmVzaXphYmxlOiBmYWxzZSwKKyAgICAgIGRpc2FibGVHbG9iYWxGaWx0ZXI6 IGZhbHNlLAorICAgIH0sCisgICAgeworICAgICAgYWNjZXNzb3I6ICdwcmVwYXJlZCcsCisgICAg ICBIZWFkZXI6IGdldHRleHQoJ1ByZXBhcmVkIGF0JyksCisgICAgICBzb3J0YmxlOiB0cnVlLAor ICAgICAgcmVzaXphYmxlOiBmYWxzZSwKKyAgICAgIGRpc2FibGVHbG9iYWxGaWx0ZXI6IGZhbHNl LAorICAgIH0sCisgIF07CisKKworCisgIGNvbnN0IGNhblRha2VBY3Rpb24gPSAocm93LCBjZWxs QWN0aW9uLCBpdGVtTm9kZURhdGEsIHRyZWVOb2RlSW5mbykgPT4geworICAgIC8vIFdlIHdpbGwg dmFsaWRhdGUgaWYgdXNlciBpcyBhbGxvd2VkIHRvIGNhbmNlbCB0aGUgYWN0aXZlIHF1ZXJ5Cisg ICAgLy8gSWYgdGhlcmUgaXMgb25seSBvbmUgYWN0aXZlIHNlc3Npb24gbWVhbnMgaXQgcHJvYmFi bHkgb3VyIG1haW4KKyAgICAvLyBjb25uZWN0aW9uIHNlc3Npb24KKyAgICAvLyBjb25zb2xlLmxv Zyhyb3csICc9PT0+Jywgbm9kZURhdGEsIHRyZWVOb2RlSW5mbywgbm9kZS5jb2xsZWN0aW9uKTsK KyAgICAvLyAvLyBtLmNvbGxlY3Rpb24ud2hlcmUoeworICAgIC8vIC8vICAgJ3N0YXRlJzogJ2Fj dGl2ZScsCisgICAgLy8gLy8gfSksCisgICAgY2VsbEFjdGlvbiA9IGNlbGxBY3Rpb24gfHwgbnVs bDsKKyAgICB2YXIgcGdfdmVyc2lvbiA9IHRyZWVOb2RlSW5mby5zZXJ2ZXIudmVyc2lvbiB8fCBu dWxsLAorICAgICAgaXNfY2FuY2VsX3Nlc3Npb24gPSBjZWxsQWN0aW9uID09PSAnY2FuY2VsJywK KyAgICAgIHR4dE1lc3NhZ2UsCisgICAgICBtYWludGVuYW5jZV9kYXRhYmFzZSA9IHRyZWVOb2Rl SW5mby5zZXJ2ZXIuZGIsCisgICAgICBpc19zdXBlcl91c2VyLAorICAgICAgY3VycmVudF91c2Vy OworCisgICAgdmFyIGNhbl9zaWduYWxfYmFja2VuZCA9CisgICAgICB0cmVlTm9kZUluZm8uc2Vy dmVyICYmIHRyZWVOb2RlSW5mby5zZXJ2ZXIudXNlcgorICAgICAgICA/IHRyZWVOb2RlSW5mby5z ZXJ2ZXIudXNlci5jYW5fc2lnbmFsX2JhY2tlbmQKKyAgICAgICAgOiBmYWxzZTsKKworICAgIGlm ICgKKyAgICAgIHRyZWVOb2RlSW5mby5zZXJ2ZXIgJiYKKyAgICAgIHRyZWVOb2RlSW5mby5zZXJ2 ZXIudXNlciAmJgorICAgICAgdHJlZU5vZGVJbmZvLnNlcnZlci51c2VyLmlzX3N1cGVydXNlcgor ICAgICkgeworICAgICAgaXNfc3VwZXJfdXNlciA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAg IGlzX3N1cGVyX3VzZXIgPSBmYWxzZTsKKyAgICAgIGN1cnJlbnRfdXNlciA9CisgICAgICAgIHRy ZWVOb2RlSW5mby5zZXJ2ZXIgJiYgdHJlZU5vZGVJbmZvLnNlcnZlci51c2VyCisgICAgICAgICAg PyB0cmVlTm9kZUluZm8uc2VydmVyLnVzZXIubmFtZQorICAgICAgICAgIDogbnVsbDsKKyAgICB9 CisKKyAgICAvLyBXaXRoIFBHMTAsIFdlIGhhdmUgYmFja2dyb3VuZCBwcm9jZXNzIHNob3dpbmcg b24gZGFzaGJvYXJkCisgICAgLy8gV2Ugd2lsbCBub3QgYWxsb3cgdXNlciB0byBjYW5jZWwgdGhl bSBhcyB0aGV5IHdpbGwgZmFpbCB3aXRoIGVycm9yCisgICAgLy8gYW55d2F5LCBzbyBiZXR0ZXIg dXNhYmlsaXR5IHdlIHdpbGwgdGhyb3cgb3VyIG9uIG5vdGlmaWNhdGlvbgorCisgICAgLy8gQmFj a2dyb3VuZCBwcm9jZXNzZXMgZG8gbm90IGhhdmUgZGF0YWJhc2UgZmllbGQgcG9wdWxhdGVkCisg ICAgaWYgKHBnX3ZlcnNpb24gJiYgcGdfdmVyc2lvbiA+PSAxMDAwMDAgJiYgIXJvdy5vcmlnaW5h bC5kYXRuYW1lKSB7CisgICAgICBpZiAoaXNfY2FuY2VsX3Nlc3Npb24pIHsKKyAgICAgICAgdHh0 TWVzc2FnZSA9IGdldHRleHQoJ1lvdSBjYW5ub3QgY2FuY2VsIGJhY2tncm91bmQgd29ya2VyIHBy b2Nlc3Nlcy4nKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHR4dE1lc3NhZ2UgPSBnZXR0ZXh0 KAorICAgICAgICAgICdZb3UgY2Fubm90IHRlcm1pbmF0ZSBiYWNrZ3JvdW5kIHdvcmtlciBwcm9j ZXNzZXMuJworICAgICAgICApOworICAgICAgfQorICAgICAgTm90aWZ5LmluZm8odHh0TWVzc2Fn ZSk7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAvLyBJZiBpdCBpcyB0aGUgbGFzdCBhY3Rp dmUgY29ubmVjdGlvbiBvbiBtYWludGVuYW5jZSBkYiB0aGVuIGVycm9yIG91dAorICAgIH0gZWxz ZSBpZiAoCisgICAgICBtYWludGVuYW5jZV9kYXRhYmFzZSA9PSByb3cub3JpZ2luYWwuZGF0bmFt ZSAmJgorICAgICAgcm93Lm9yaWdpbmFsLnN0YXRlID09ICdhY3RpdmUnCisgICAgKSB7CisgICAg ICBpZiAoaXNfY2FuY2VsX3Nlc3Npb24pIHsKKyAgICAgICAgdHh0TWVzc2FnZSA9IGdldHRleHQo CisgICAgICAgICAgJ1lvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2FuY2VsIHRoZSBtYWluIGFjdGl2 ZSBzZXNzaW9uLicKKyAgICAgICAgKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHR4dE1lc3Nh Z2UgPSBnZXR0ZXh0KAorICAgICAgICAgICdZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIHRlcm1pbmF0 ZSB0aGUgbWFpbiBhY3RpdmUgc2Vzc2lvbi4nCisgICAgICAgICk7CisgICAgICB9CisgICAgICBO b3RpZnkuZXJyb3IodHh0TWVzc2FnZSk7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNl IGlmIChpc19jYW5jZWxfc2Vzc2lvbiAmJiByb3cub3JpZ2luYWwuc3RhdGUgPT0gJ2lkbGUnKSB7 CisgICAgICAvLyBJZiB0aGlzIHNlc3Npb24gaXMgYWxyZWFkeSBpZGxlIHRoZW4gZG8gbm90aGlu ZworICAgICAgTm90aWZ5LmluZm8oZ2V0dGV4dCgnVGhlIHNlc3Npb24gaXMgYWxyZWFkeSBpbiBp ZGxlIHN0YXRlLicpKTsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKGNhbl9z aWduYWxfYmFja2VuZCkgeworICAgICAgLy8gdXNlciB3aXRoIG1lbWJlcnNoaXAgb2YgJ3BnX3Np Z25hbF9iYWNrZW5kJyBjYW4gdGVybWluYXRlIHRoZSBzZXNzaW9uIG9mIG5vbiBhZG1pbiB1c2Vy LgorICAgICAgcmV0dXJuIHRydWU7CisgICAgfSBlbHNlIGlmIChpc19zdXBlcl91c2VyKSB7Cisg ICAgICAvLyBTdXBlciB1c2VyIGNhbiBkbyBhbnl0aGluZworICAgICAgcmV0dXJuIHRydWU7Cisg ICAgfSBlbHNlIGlmIChjdXJyZW50X3VzZXIgJiYgY3VycmVudF91c2VyID09IHRyZWVOb2RlSW5m by5zZXJ2ZXIudXNlcikgeworICAgICAgLy8gTm9uLXN1cGVyIHVzZXIgY2FuIGNhbmNlbCBvbmx5 IHRoZWlyIGFjdGl2ZSBxdWVyaWVzCisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IGVsc2Ugewor ICAgICAgLy8gRG8gbm90IGFsbG93IHRvIGNhbmNlbCBzb21lb25lIGVsc2Ugc2Vzc2lvbiB0byBu b24tc3VwZXIgdXNlcgorICAgICAgaWYgKGlzX2NhbmNlbF9zZXNzaW9uKSB7CisgICAgICAgIHR4 dE1lc3NhZ2UgPSBnZXR0ZXh0KAorICAgICAgICAgICdTdXBlcnVzZXIgcHJpdmlsZWdlcyBhcmUg cmVxdWlyZWQgdG8gY2FuY2VsIGFub3RoZXIgdXNlcnMgcXVlcnkuJworICAgICAgICApOworICAg ICAgfSBlbHNlIHsKKyAgICAgICAgdHh0TWVzc2FnZSA9IGdldHRleHQoCisgICAgICAgICAgJ1N1 cGVydXNlciBwcml2aWxlZ2VzIGFyZSByZXF1aXJlZCB0byB0ZXJtaW5hdGUgYW5vdGhlciB1c2Vy cyBxdWVyeS4nCisgICAgICAgICk7CisgICAgICB9CisgICAgICBOb3RpZnkuZXJyb3IodHh0TWVz c2FnZSk7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9OworCisgIHVzZUVmZmVjdCgo KSA9PiB7CisgICAgbGV0IHVybCwKKyAgICAgIG1lc3NhZ2UgPSBnZXR0ZXh0KAorICAgICAgICAn UGxlYXNlIGNvbm5lY3QgdG8gdGhlIHNlbGVjdGVkIHNlcnZlciB0byB2aWV3IHRoZSBkYXNoYm9h cmQuJworICAgICAgKTsKKworICAgIGlmIChzaWQgJiYgcHJvcHMuc2VydmVyQ29ubmVjdGVkKSB7 CisgICAgICBpZiAodmFsID09PSAwKSB7CisgICAgICAgIHVybCA9IHVybF9mb3IoJ2Rhc2hib2Fy ZC5hY3Rpdml0eScpOworICAgICAgfSBlbHNlIGlmICh2YWwgPT09IDEpIHsKKyAgICAgICAgdXJs ID0gdXJsX2ZvcignZGFzaGJvYXJkLmxvY2tzJyk7CisgICAgICB9IGVsc2UgaWYgKHZhbCA9PT0g MikgeworICAgICAgICB1cmwgPSB1cmxfZm9yKCdkYXNoYm9hcmQucHJlcGFyZWQnKTsKKyAgICAg IH0gZWxzZSB7CisgICAgICAgIHVybCA9IHVybF9mb3IoJ2Rhc2hib2FyZC5jb25maWcnKTsKKyAg ICAgIH0KKworICAgICAgbWVzc2FnZSA9IGdldHRleHQoJ0xvYWRpbmcgZGFzaGJvYXJkLi4uJyk7 CisgICAgICBpZiAoZGlkKSB1cmwgKz0gc2lkICsgJy8nICsgZGlkOworICAgICAgZWxzZSB1cmwg Kz0gc2lkOworCisgICAgICBjb25zdCBhcGkgPSBnZXRBcGlJbnN0YW5jZSgpOworICAgICAgaWYg KG5vZGUpIHsKKyAgICAgICAgYXBpKHsKKyAgICAgICAgICB1cmw6IHVybCwKKyAgICAgICAgICB0 eXBlOiAnR0VUJywKKyAgICAgICAgfSkKKyAgICAgICAgICAudGhlbigocmVzKSA9PiB7CisgICAg ICAgICAgICBzZXRkYXNoRGF0YShwYXJzZURhdGEocmVzLmRhdGEpKTsKKyAgICAgICAgICB9KQor ICAgICAgICAgIC5jYXRjaCgoZSkgPT4geworICAgICAgICAgICAgTm90aWZ5LmFsZXJ0KAorICAg ICAgICAgICAgICBnZXR0ZXh0KCdGYWlsZWQgdG8gcmV0cmlldmUgZGF0YSBmcm9tIHRoZSBzZXJ2 ZXIuJyksCisgICAgICAgICAgICAgIGdldHRleHQoZS5tZXNzYWdlKQorICAgICAgICAgICAgKTsK KyAgICAgICAgICAgIC8vIHNob3cgZmFpbGVkIG1lc3NhZ2UuCisgICAgICAgICAgICBzZXRNc2co Z2V0dGV4dCgnRmFpbGVkIHRvIHJldHJpZXZlIGRhdGEgZnJvbSB0aGUgc2VydmVyLicpKTsKKyAg ICAgICAgICB9KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHNldE1zZyhtZXNzYWdlKTsKKyAg ICAgIH0KKyAgICB9CisgICAgaWYgKG1lc3NhZ2UgIT0gJycpIHsKKyAgICAgIHNldE1zZyhtZXNz YWdlKTsKKyAgICB9CisgIH0sIFtub2RlRGF0YSwgdmFsLCBkaWRdKTsKKworCisgIHJldHVybiAo CisgICAgPD4KKyAgICAgIHtzaWQgJiYgcHJvcHMuc2VydmVyQ29ubmVjdGVkID8gKAorICAgICAg ICA8Qm94IGNsYXNzTmFtZT17Y2xhc3Nlcy5lbXB0eVBhbmVsfT4KKyAgICAgICAgICA8R3JhcGhz CisgICAgICAgICAgICBwcmVmZXJlbmNlcz17cHJlZmVyZW5jZXN9CisgICAgICAgICAgICBzaWQ9 e3NpZH0KKyAgICAgICAgICAgIGRpZD17ZGlkICYmIGRpZH0KKyAgICAgICAgICAgIHBhZ2VWaXNp YmxlPXt0cnVlfQorICAgICAgICAgID48L0dyYXBocz4KKyAgICAgICAgICA8Qm94IGNsYXNzTmFt ZT17Y2xhc3Nlcy5wYW5lbENvbnRlbnR9PgorICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e2Ns YXNzZXMuY2FyZEhlYWRlcn0gdGl0bGU9e2dldHRleHQoJ1NlcnZlciBhY3Rpdml0eScpfT4KKyAg ICAgICAgICAgICAge2dldHRleHQoJ1NlcnZlciBhY3Rpdml0eScpfXsnICd9CisgICAgICAgICAg ICA8L0JveD4KKyAgICAgICAgICAgIHsvKiA8Qm94IGNsYXNzTmFtZT17Y2xhc3Nlcy5wYW5lbENv bnRlbnR9PiAqL30KKyAgICAgICAgICAgIDxUYWJzCisgICAgICAgICAgICAgIHZhbHVlPXt2YWx9 CisgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0YWJDaGFuZ2VkfQorICAgICAgICAgICAgICBjbGFz c05hbWU9e2NsYXNzZXMuc2VhcmNoSW5wdXR9CisgICAgICAgICAgICA+CisgICAgICAgICAgICAg IHt0YWIubWFwKCh0YWJWYWx1ZSwgaSkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiA8VGFi IGtleT17aX0gbGFiZWw9e3RhYlZhbHVlfSAvPjsKKyAgICAgICAgICAgICAgfSl9CisgICAgICAg ICAgICA8L1RhYnM+CisgICAgICAgICAgICB7LyogPC9Cb3g+ICovfQorICAgICAgICAgICAgey8q IDxCb3ggY2xhc3NOYW1lPXtjbGFzc2VzLmNvbXBvbmVudH0+ICovfQorICAgICAgICAgICAgPFBn VGFibGUKKyAgICAgICAgICAgICAgLy8gY2xhc3NOYW1lPXtjbGFzc2VzLmF1dG9SZXNpemVyfXNl YXJjaFRleHQ9e3NlYXJjaFZhbH0KKyAgICAgICAgICAgICAgLy8gdHlwZT17InBhbmVsIn0KKyAg ICAgICAgICAgICAgLy8gY2xhc3NOYW1lPXtjbGFzc2VzLmF1dG9SZXNpemVyfQorICAgICAgICAg ICAgICBjbGFzc05hbWU9e2NsYXNzZXMudGFibGV9CisgICAgICAgICAgICAgIGNvbHVtbnM9ewor ICAgICAgICAgICAgICAgIHZhbCA9PT0gMAorICAgICAgICAgICAgICAgICAgPyBhY3Rpdml0eUNv bHVtbnMKKyAgICAgICAgICAgICAgICAgIDogdmFsID09PSAxCisgICAgICAgICAgICAgICAgICAg ID8gZGF0YWJhc2VMb2Nrc0NvbHVtbnMKKyAgICAgICAgICAgICAgICAgICAgOiB2YWwgPT0gMgor ICAgICAgICAgICAgICAgICAgICAgID8gZGF0YWJhc2VQcmVwYXJlZENvbHVtbnMKKyAgICAgICAg ICAgICAgICAgICAgICA6IHNlcnZlckNvbmZpZ0NvbHVtbnMKKyAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICBkYXRhPXtkYXNoRGF0YX0KKyAgICAgICAgICAgICAgc2NoZW1hPXtzY2hlbWF9 CisgICAgICAgICAgICA+PC9QZ1RhYmxlPgorICAgICAgICAgICAgey8qIDwvQm94PiAqL30KKyAg ICAgICAgICA8L0JveD4KKyAgICAgICAgPC9Cb3g+CisgICAgICApIDogc2lkICYmICFwcm9wcy5z ZXJ2ZXJDb25uZWN0ZWQgPyAoCisgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmVtcHR5 UGFuZWx9PgorICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLnBhbmVsSWNvbn0+Cisg ICAgICAgICAgICA8aSBjbGFzc05hbWU9ImZhIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZSI+PC9pPgor ICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc2VzLnBhbmVsTWVzc2FnZX0+e2dldHRl eHQobXNnKX08L3NwYW4+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAg KSA6ICgKKyAgICAgICAgPFdlbGNvbWVEYXNoYm9hcmQKKyAgICAgICAgICBwZ0Jyb3dzZXI9e3Bn QnJvd3Nlcn0KKyAgICAgICAgICBub2RlPXtub2RlfQorICAgICAgICAgIGl0ZW1EYXRhPXtub2Rl RGF0YX0KKyAgICAgICAgICBpdGVtPXtpdGVtfQorICAgICAgICAgIHNpZD17c2lkfQorICAgICAg ICAgIGRpZD17ZGlkfQorICAgICAgICAvPgorICAgICAgKX0KKyAgICA8Lz4KKyAgKTsKK30KKwor RGFzaGJvYXJkLnByb3BUeXBlcyA9IHsKKyAgbm9kZTogUHJvcFR5cGVzLmZ1bmMsCisgIGl0ZW1E YXRhOiBQcm9wVHlwZXMub2JqZWN0LAorICBub2RlRGF0YTogUHJvcFR5cGVzLm9iamVjdCwKKyAg dHJlZU5vZGVJbmZvOiBQcm9wVHlwZXMub2JqZWN0LAorICBpdGVtOiBQcm9wVHlwZXMub2JqZWN0 LAorICBwZ0Jyb3dzZXI6IFByb3BUeXBlcy5vYmplY3QsCisgIHByZWZlcmVuY2VzOiBQcm9wVHlw ZXMub2JqZWN0LAorICBzaWQ6IFByb3BUeXBlcy5zdHJpbmcsCisgIGRpZDogUHJvcFR5cGVzLm9u ZU9mVHlwZShbCisgICAgUHJvcFR5cGVzLmJvb2wsCisgICAgUHJvcFR5cGVzLm51bWJlcgorICBd KSwKKyAgcm93OiBQcm9wVHlwZXMub2JqZWN0LAorICBzZXJ2ZXJDb25uZWN0ZWQ6IFByb3BUeXBl cy5ib29sLAorfTsKKworCitleHBvcnQgZnVuY3Rpb24gQ2hhcnRDb250YWluZXIocHJvcHMpIHsK KyAgcmV0dXJuICgKKyAgICA8ZGl2IGNsYXNzTmFtZT0iY2FyZCBkYXNoYm9hcmQtZ3JhcGgiIHJv bGU9Im9iamVjdC1kb2N1bWVudCIgdGFiSW5kZXg9IjAiIGFyaWEtbGFiZWxsZWRieT17cHJvcHMu aWR9PgorICAgICAgPGRpdiBjbGFzc05hbWU9ImNhcmQtaGVhZGVyIj4KKyAgICAgICAgPGRpdiBj bGFzc05hbWU9ImQtZmxleCI+CisgICAgICAgICAgPGRpdiBpZD17cHJvcHMuaWR9Pntwcm9wcy50 aXRsZX08L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ibWwtYXV0byBteS1hdXRvIGxl Z2VuZCIgcmVmPXtwcm9wcy5sZWdlbmRSZWZ9PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAg IDwvZGl2PgorICAgICAgPGRpdiBjbGFzc05hbWU9ImNhcmQtYm9keSBkYXNoYm9hcmQtZ3JhcGgt Ym9keSI+CisgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY2hhcnQtd3JhcHBlciAnICsgKHByb3Bz LmVycm9yTXNnID8gJ2Qtbm9uZScgOiAnJyl9PgorICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn0K KyAgICAgICAgPC9kaXY+CisgICAgICAgIDxDaGFydEVycm9yIG1lc3NhZ2U9e3Byb3BzLmVycm9y TXNnfSAvPgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgICk7Cit9CisKK0NoYXJ0Q29udGFp bmVyLnByb3BUeXBlcyA9IHsKKyAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCwKKyAg dGl0bGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCwKKyAgbGVnZW5kUmVmOiBQcm9wVHlw ZXMub25lT2ZUeXBlKFsKKyAgICBQcm9wVHlwZXMuZnVuYywKKyAgICBQcm9wVHlwZXMuc2hhcGUo eyBjdXJyZW50OiBQcm9wVHlwZXMuYW55IH0pLAorICBdKS5pc1JlcXVpcmVkLAorICBjaGlsZHJl bjogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCwKKyAgZXJyb3JNc2c6IFByb3BUeXBlcy5zdHJp bmcsCit9OworCitleHBvcnQgZnVuY3Rpb24gQ2hhcnRFcnJvcihwcm9wcykgeworICBpZiAocHJv cHMubWVzc2FnZSA9PT0gbnVsbCkgeworICAgIHJldHVybiA8PjwvPjsKKyAgfQorICByZXR1cm4g KAorICAgIDxkaXYgY2xhc3NOYW1lPSJwZy1wYW5lbC1lcnJvciBwZy1wYW5lbC1tZXNzYWdlIiBy b2xlPSJhbGVydCI+e3Byb3BzLm1lc3NhZ2V9PC9kaXY+CisgICk7Cit9CisKK0NoYXJ0RXJyb3Iu cHJvcFR5cGVzID0geworICBtZXNzYWdlOiBQcm9wVHlwZXMuc3RyaW5nLAorfTsKKworZXhwb3J0 IGZ1bmN0aW9uIERhc2hib2FyZFJvdyh7IGNoaWxkcmVuIH0pIHsKKyAgcmV0dXJuICgKKyAgICA8 ZGl2IGNsYXNzTmFtZT0icm93IGRhc2hib2FyZC1yb3ciPntjaGlsZHJlbn08L2Rpdj4KKyAgKTsK K30KK0Rhc2hib2FyZFJvdy5wcm9wVHlwZXMgPSB7CisgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9k ZS5pc1JlcXVpcmVkLAorfTsKKworZXhwb3J0IGZ1bmN0aW9uIERhc2hib2FyZFJvd0NvbCh7IGJy ZWFrcG9pbnQsIHBhcnRzLCBjaGlsZHJlbiB9KSB7CisgIHJldHVybiAoCisgICAgPGRpdiBjbGFz c05hbWU9e2Bjb2wtJHticmVha3BvaW50fS0ke3BhcnRzfWB9PntjaGlsZHJlbn08L2Rpdj4KKyAg KTsKK30KKworRGFzaGJvYXJkUm93Q29sLnByb3BUeXBlcyA9IHsKKyAgYnJlYWtwb2ludDogUHJv cFR5cGVzLm9uZU9mKFsneHMnLCAnc20nLCAnbWQnLCAnbGcnLCAneGwnXSkuaXNSZXF1aXJlZCwK KyAgcGFydHM6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCwKKyAgY2hpbGRyZW46IFByb3BU eXBlcy5ub2RlLmlzUmVxdWlyZWQsCit9OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vZGFzaGJv YXJkL3N0YXRpYy9qcy9HcmFwaHMuanN4IGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9q cy9HcmFwaHMuanN4CmluZGV4IGNkOGZhNjVhMy4uNjlhOWFmNGZjIDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pzL0dyYXBocy5qc3gKKysrIGIvd2ViL3BnYWRtaW4v ZGFzaGJvYXJkL3N0YXRpYy9qcy9HcmFwaHMuanN4CkBAIC04LDcgKzgsNyBAQAogLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIGlt cG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUsIHVzZVJlZHVjZXIsIHVz ZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnOwogaW1wb3J0IHtMaW5lQ2hhcnR9IGZy b20gJ3NvdXJjZXMvY2hhcnRqcyc7Ci1pbXBvcnQge0NoYXJ0Q29udGFpbmVyLCBEYXNoYm9hcmRS b3dDb2wsIERhc2hib2FyZFJvd30gZnJvbSAnLi9kYXNoYm9hcmRfY29tcG9uZW50cyc7CitpbXBv cnQge0NoYXJ0Q29udGFpbmVyLCBEYXNoYm9hcmRSb3dDb2wsIERhc2hib2FyZFJvd30gZnJvbSAn Li9EYXNoYm9hcmQnOwogaW1wb3J0IHVybF9mb3IgZnJvbSAnc291cmNlcy91cmxfZm9yJzsKIGlt cG9ydCBheGlvcyBmcm9tICdheGlvcyc7CiBpbXBvcnQgZ2V0dGV4dCBmcm9tICdzb3VyY2VzL2dl dHRleHQnOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9XZWxj b21lRGFzaGJvYXJkLmpzeCBiL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0aWMvanMvV2VsY29t ZURhc2hib2FyZC5qc3gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi4yNjVl MDFkMmUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pz L1dlbGNvbWVEYXNoYm9hcmQuanN4CkBAIC0wLDAgKzEsNDE4IEBACisvLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdB ZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIw MjIsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVs ZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCBS ZWFjdCBmcm9tICdyZWFjdCc7CitpbXBvcnQgZ2V0dGV4dCBmcm9tICdzb3VyY2VzL2dldHRleHQn OworaW1wb3J0IF8gZnJvbSAnbG9kYXNoJzsKK2ltcG9ydCB7IExpbmssIEJyb3dzZXJSb3V0ZXIg fSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJzsKK2ltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10 eXBlcyc7CitpbXBvcnQgeyBtYWtlU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5 bGVzJzsKK2ltcG9ydCBwZ0FkbWluIGZyb20gJ3NvdXJjZXMvcGdhZG1pbic7CisKK2NvbnN0IHVz ZVN0eWxlcyA9IG1ha2VTdHlsZXMoKHRoZW1lKSA9PiAoeworICBlbXB0eVBhbmVsOiB7CisgICAg YmFja2dyb3VuZDogdGhlbWUucGFsZXR0ZS5ncmV5WzQwMF0sCisgICAgb3ZlcmZsb3c6ICdoaWRk ZW4nLAorICAgIHBhZGRpbmc6ICc4cHgnLAorICAgIGRpc3BsYXk6ICdmbGV4JywKKyAgICBmbGV4 RGlyZWN0aW9uOiAnY29sdW1uJywKKyAgICBmbGV4R3JvdzogMSwKKyAgICBoZWlnaHQ6ICcxMDAl JworCisgIH0sCisgIGRhc2hib2FyZENvbnRhaW5lcjogeworICAgIHBhZGRpbmdUb3A6ICc3LjVw eCcsCisgICAgcGFkZGluZ0JvdHRvbTogJzcuNXB4JywKKyAgICBtaW5IZWlnaHQ6ICcxMDAlJwor ICB9LAorICBjYXJkOiB7CisgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsCisgICAgbWluV2lkdGg6 IDAsCisgICAgd29yZFdyYXA6ICdicmVhay13b3JkJywKKyAgICBiYWNrZ3JvdW5kQ29sb3I6ICcj ZmZmJywKKyAgICBiYWNrZ3JvdW5kQ2xpcDogJ2JvcmRlci1ib3gnLAorICAgIGJvcmRlcjogJzFw eCBzb2xpZCAjZGRlMGU2JywKKyAgICBib3JkZXJSYWRpdXM6ICcwLjI1cmVtJworICB9LAorICBy b3c6IHsKKyAgICBtYXJnaW5SaWdodDogJy03LjVweCcsCisgICAgbWFyZ2luTGVmdDogJy03LjVw eCcKKyAgfSwKKyAgY2FyZEhlYWRlcjogeworICAgIHBhZGRpbmc6ICcwLjI1cmVtIDAuNXJlbScs CisgICAgZm9udFdlaWdodDogJ2JvbGQnLAorICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmYnLAor ICAgIGNvbG9yOiAnIzIyMjIyMicsCisgICAgYm9yZGVyQ29sb3I6ICcjZGRlMGU2JworICB9CisK K30pKTsKKworCitmdW5jdGlvbiBBZGROZXdTZXJ2ZXIocGdCcm93c2VyKSB7CisgIGlmIChwZ0Jy b3dzZXIgJiYgcGdCcm93c2VyLnRyZWUpIHsKKyAgICB2YXIgaSA9IF8uaXNVbmRlZmluZWQocGdC cm93c2VyLnRyZWUuc2VsZWN0ZWQoKSkgPworICAgICAgICBwZ0Jyb3dzZXIudHJlZS5maXJzdChu dWxsLCBmYWxzZSkgOgorICAgICAgICBwZ0Jyb3dzZXIudHJlZS5zZWxlY3RlZCgpLAorICAgICAg c2VydmVyTW9kdWxlID0gcGdBZG1pbi5Ccm93c2VyLk5vZGVzLnNlcnZlciwKKyAgICAgIGl0ZW1E YXRhID0gcGdCcm93c2VyLnRyZWUuaXRlbURhdGEoaSk7CisKKyAgICB3aGlsZSAoaXRlbURhdGEg JiYgaXRlbURhdGEuX3R5cGUgIT0gJ3NlcnZlcl9ncm91cCcpIHsKKyAgICAgIGkgPSBwZ0Jyb3dz ZXIudHJlZS5uZXh0KGkpOworICAgICAgaXRlbURhdGEgPSBwZ0Jyb3dzZXIudHJlZS5pdGVtRGF0 YShpKTsKKyAgICB9CisKKyAgICBpZiAoIWl0ZW1EYXRhKSB7CisgICAgICByZXR1cm47CisgICAg fQorCisgICAgaWYgKHNlcnZlck1vZHVsZSkgeworICAgICAgc2VydmVyTW9kdWxlLmNhbGxiYWNr cy5zaG93X29ial9wcm9wZXJ0aWVzLmFwcGx5KAorICAgICAgICBzZXJ2ZXJNb2R1bGUsIFt7Cisg ICAgICAgICAgYWN0aW9uOiAnY3JlYXRlJywKKyAgICAgICAgfSwgaV0KKyAgICAgICk7CisgICAg fQorICB9Cit9CisKK2V4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFdlbGNvbWVEYXNoYm9hcmQoeyBw Z0Jyb3dzZXIgfSkgeworCisgIGNvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXMoKTsKKworICByZXR1 cm4gKAorICAgIDxCcm93c2VyUm91dGVyPgorICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMu ZW1wdHlQYW5lbH0+CisgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmRhc2hib2FyZENv bnRhaW5lcn0+CisgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMucm93fT4KKyAgICAg ICAgICAgIDxkaXYgY2xhc3NOYW1lPSJjb2wtMTIiPgorICAgICAgICAgICAgICA8ZGl2IGNsYXNz TmFtZT17Y2xhc3Nlcy5jYXJkfT4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xh c3Nlcy5jYXJkSGVhZGVyfT57Z2V0dGV4dCgnV2VsY29tZScpfTwvZGl2PgorICAgICAgICAgICAg ICAgIDxkaXYgY2xhc3NOYW1lPSJjYXJkLWJvZHkgcC0yIj4KKyAgICAgICAgICAgICAgICAgIDxk aXYgY2xhc3NOYW1lPSJ3ZWxjb21lLWxvZ28iIGFyaWEtaGlkZGVuPSJ0cnVlIj4KKyAgICAgICAg ICAgICAgICAgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdC b3g9IjAgMCA2MDAgMTMwIj4KKyAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz4KKyAgICAgICAg ICAgICAgICAgICAgICAgIDxzdHlsZT57Jy5jbHMtMXtzdHJva2U6IzAwMDtzdHJva2Utd2lkdGg6 MTAuMTlweDt9LmNscy0ye2ZpbGw6IzMzNjc5MTt9LmNscy0zLC5jbHMtNCwuY2xzLTl7ZmlsbDpu b25lO30uY2xzLTMsLmNscy00LC5jbHMtNSwuY2xzLTZ7c3Ryb2tlOiNmZmY7fS5jbHMtMywuY2xz LTR7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLXdpZHRoOjMuNHB4O30uY2xzLTN7c3Ryb2tl LWxpbmVqb2luOnJvdW5kO30uY2xzLTR7c3Ryb2tlLWxpbmVqb2luOmJldmVsO30uY2xzLTUsLmNs cy02e2ZpbGw6I2ZmZjt9LmNscy01e3N0cm9rZS13aWR0aDoxLjEzcHg7fS5jbHMtNntzdHJva2Ut d2lkdGg6MC41N3B4O30uY2xzLTd7ZmlsbDojMjc3NWI2O30uY2xzLTh7ZmlsbDojMzMzO30uY2xz LTl7c3Ryb2tlOiMzMzM7c3Ryb2tlLXdpZHRoOjNweDt9J308L3N0eWxlPgorICAgICAgICAgICAg ICAgICAgICAgIDwvZGVmcz4KKyAgICAgICAgICAgICAgICAgICAgICA8dGl0bGU+cGdBZG1pbl9Q b3N0Z3JlU1FMPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTGF5ZXJfMSIg ZGF0YS1uYW1lPSJMYXllciAxIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJMYXll cl8zIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjbGFzc05hbWU9ImNscy0xIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg IGQ9Ik05NS41OSw5My42NWMuNzctNi40NC41NC03LjM4LDUuMzMtNi4zNGwxLjIxLjExYTI3LjYs MjcuNiwwLDAsMCwxMS4zNC0xLjkxYzYuMDktMi44Myw5LjcxLTcuNTUsMy43LTYuMzEtMTMuNzEs Mi44My0xNC42NS0xLjgxLTE0LjY1LTEuODFDMTE3LDU1LjkxLDEyMywyOC42NCwxMTcuODIsMjIs MTAzLjU3LDMuNzYsNzguOTEsMTIuMzcsNzguNSwxMi42bC0uMTMsMGE0OC42NSw0OC42NSwwLDAs MC05LjE1LS45NUM2MywxMS41Nyw1OC4zMSwxMy4yOSw1NC43NCwxNmMwLDAtNDQtMTguMTItNDEu OTUsMjIuOC40NCw4LjcsMTIuNDgsNjUuODYsMjYuODQsNDguNkM0NC44OCw4MS4wOCw1MCw3NS43 NSw1MCw3NS43NUExMy4zOSwxMy4zOSwwLDAsMCw1OC42NSw3OGwuMjUtLjIxYTksOSwwLDAsMCwu MSwyLjQ2Yy0zLjcsNC4xMy0yLjYyLDQuODYtMTAsNi4zOHMtMy4wOSw0LjI5LS4yMiw1YzMuNDgu ODcsMTEuNTMsMi4xLDE3LTUuNTJsLS4yMi44N2MxLjQ2LDEuMTYsMS4zNiw4LjM1LDEuNTYsMTMu NDhzLjU1LDkuOTMsMS42LDEyLjc1LDIuMjgsMTAuMSwxMiw4Qzg4LjgxLDExOS40Niw5NSwxMTcs OTUuNTksOTMuNjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAg ICAgICAgICAgICAgIDxwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1l PSJjbHMtMiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJNMTE3LjE3LDc5LjJjLTEz LjcxLDIuODMtMTQuNjUtMS44MS0xNC42NS0xLjgxQzExNyw1NS45MSwxMjMsMjguNjQsMTE3Ljgy LDIyLDEwMy41NywzLjc2LDc4LjkxLDEyLjM3LDc4LjUsMTIuNmwtLjEzLDBhNDguNjUsNDguNjUs MCwwLDAtOS4xNS0uOTVDNjMsMTEuNTcsNTguMzEsMTMuMjksNTQuNzQsMTZjMCwwLTQ0LTE4LjEy LTQxLjk1LDIyLjguNDQsOC43LDEyLjQ4LDY1Ljg2LDI2Ljg0LDQ4LjZDNDQuODgsODEuMDgsNTAs NzUuNzUsNTAsNzUuNzVBMTMuMzksMTMuMzksMCwwLDAsNTguNjUsNzhsLjI1LS4yMUE5LjQxLDku NDEsMCwwLDAsNTksODAuMjJjLTMuNyw0LjEzLTIuNjEsNC44Ni0xMCw2LjM4cy0zLjA4LDQuMjkt LjIxLDVjMy40OC44NywxMS41MywyLjEsMTctNS41MmwtLjIyLjg3YzEuNDUsMS4xNiwyLjQ3LDcu NTYsMi4zLDEzLjM1cy0uMjgsOS43Ny44NiwxMi44OCwyLjI4LDEwLjEsMTIsOEM4OC44MSwxMTku NDYsOTMsMTE1LDkzLjYsMTA3LjQyLDk0LDEwMi4wNyw5NSwxMDIuODcsOTUsOTguMDhsLjc1LTIu MjZjLjg3LTcuMjYuMTQtOS42LDUuMTUtOC41MWwxLjIxLjExYTI3LjYsMjcuNiwwLDAsMCwxMS4z NC0xLjkxYzYuMDktMi44Myw5LjcxLTcuNTUsMy43LTYuMzFaIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0iY2xzLTMiCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZD0iTTY2LjMzLDgzLjM2Yy0uMzgsMTMuNS4wOSwyNy4wOSwxLjQxLDMwLjM5czQuMTUs OS43MywxMy44OCw3LjY0YzguMTItMS43NCwxMS4wOC01LjExLDEyLjM2LTEyLjU1Ljk0LTUuNDcs Mi43Ny0yMC42NywzLTIzLjc5IgorICAgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAg ICAgICAgICAgICAgICAgICAgICA8cGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs YXNzTmFtZT0iY2xzLTMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTU0LjY3LDE1 LjdzLTQ0LTE4LTQyLDIyLjkzYy40NCw4LjcsMTIuNDgsNjUuODcsMjYuODQsNDguNiw1LjI1LTYu MzIsMTAtMTEuMjcsMTAtMTEuMjciCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAg ICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2xhc3NOYW1lPSJjbHMtMyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJNNzguNDUs MTIuNDJjLTEuNTIuNDcsMjQuNDktOS41MSwzOS4yOCw5LjM4LDUuMjIsNi42Ny0uODMsMzMuOTQt MTUuMzEsNTUuNDIiCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAg ICAgICAgICAgICAgIDxwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1l PSJjbHMtNCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJNMTAyLjQyLDc3LjIycy45 NCw0LjY0LDE0LjY1LDEuODFjNi0xLjI0LDIuNCwzLjQ4LTMuNyw2LjMxLTUsMi4zMi0xNi4yMSwy LjkyLTE2LjM5LS4yOS0uNDctOC4yNyw1LjktNS43Niw1LjQ0LTcuODMtLjQyLTEuODctMy4yNi0z LjctNS4xNS04LjI3LTEuNjQtNC0yMi41Ny0zNC41OCw1LjgtMzAsMS0uMjItNy40LTI3LTMzLjk1 LTI3LjQyUzQzLjQ1LDQ0LjE0LDQzLjQ1LDQ0LjE0IgorICAgICAgICAgICAgICAgICAgICAgICAg ICAvPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNsYXNzTmFtZT0iY2xzLTMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZD0iTTU4LjksODAuMDVjLTMuNyw0LjEzLTIuNjEsNC44Ni0xMCw2LjM4cy0zLjA5LDQuMjktLjIy LDVjMy40OC44NywxMS41MywyLjEsMTctNS41MiwxLjY2LTIuMzIsMC02LTIuMjgtNy0xLjEtLjQ2 LTIuNTctMS00LjQ2LDEuMDlaIgorICAgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAg ICAgICAgICAgICAgICAgICAgICA8cGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs YXNzTmFtZT0iY2xzLTMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTU4LjY2LDgw Yy0uMzgtMi40NC43OS01LjMzLDIuMDUtOC43MUM2Mi42LDY2LjE5LDY3LDYxLjExLDYzLjQ3LDQ1 Yy0yLjYtMTItMjAtMi41LTIwLS44N2E4MS40OCw4MS40OCwwLDAsMS0uMjksMTZjLTEuNDEsMTAu MDYsNi40LDE4LjU3LDE1LjM5LDE3LjciCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8+Cisg ICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2xhc3NOYW1lPSJjbHMtNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJNNTQu NTEsNDMuOWMtLjA4LjU1LDEsMiwyLjQ1LDIuMjNhMi42MiwyLjYyLDAsMCwwLDIuNzItMS41MWMu MDgtLjU2LTEtMS4xNy0yLjQ0LTEuMzdzLTIuNjUuMDktMi43My42NVoiCisgICAgICAgICAgICAg ICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSJjbHMtNiIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkPSJNOTgsNDIuNzZjLjA3LjU2LTEsMi0yLjQ1LDIuMjRhMi42NCwyLjY0LDAs MCwxLTIuNzMtMS41MmMtLjA3LS41NSwxLTEuMTYsMi40NS0xLjM2czIuNjUuMDksMi43My42NFoi CisgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgICAgICAg IDxwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSJjbHMtMyIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJNMTAzLjA3LDM4LjkyYy4yNCw0LjM2LS45NCw3 LjMzLTEuMDgsMTItLjIyLDYuNzQsMy4yMSwxNC40Ni0yLDIyLjE5IgorICAgICAgICAgICAgICAg ICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgorICAgICAgICAgICAg ICAgICAgICAgICAgPHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSJj bHMtNyBhcHAtbmFtZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTE1NC43MiwyOC4x NWg1LjE2djQuMTZBMTIuODQsMTIuODQsMCwwLDEsMTYzLjM1LDI5YTExLjE3LDExLjE3LDAsMCwx LDYuMjgtMS43NiwxMS44NCwxMS44NCwwLDAsMSw5LjA4LDQuMDljMi40OCwyLjcyLDMuNzMsNi42 MiwzLjczLDExLjY3cTAsMTAuMjYtNS4zOCwxNC42NWExMi4yLDEyLjIsMCwwLDEtNy45NSwyLjc5 LDEwLjc4LDEwLjc4LDAsMCwxLTYtMS41NiwxMy41NSwxMy41NSwwLDAsMS0zLjE0LTN2MTZoLTUu MjhabTE5Ljg0LDI0LjZRMTc3LDQ5LjY1LDE3Nyw0My41YTE3LDE3LDAsMCwwLTEuMDktNi40NCw3 LjUxLDcuNTEsMCwwLDAtNy41My01LjE5cS01LjQ5LDAtNy41Miw1LjQ4YTIxLjQ5LDIxLjQ5LDAs MCwwLTEuMDksNy40NEExNS42NCwxNS42NCwwLDAsMCwxNjAuODgsNTFhOCw4LDAsMCwwLDEzLjY4 LDEuNzhaIgorICAgICAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAg ICAgIDxwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0iY2xzLTcgYXBw LW5hbWUiCisgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0yMDYsMjkuMjZhMTQuNiwxNC42 LDAsMCwxLDMsM1YyOC4zaDQuODZWNTYuODNjMCw0LS41OCw3LjEzLTEuNzUsOS40NHEtMy4yNyw2 LjM4LTEyLjM1LDYuMzhhMTUuMDcsMTUuMDcsMCwwLDEtOC41LTIuMjcsOC44Niw4Ljg2LDAsMCwx LTMuODUtNy4xaDUuMzZhNiw2LDAsMCwwLDEuNTIsMy4yNXExLjc3LDEuNzUsNS41OSwxLjc2LDYs MCw3LjktNC4yOCwxLjEtMi41MiwxLTlhMTAuMzksMTAuMzksMCwwLDEtMy44LDMuNTcsMTMuNTYs MTMuNTYsMCwwLDEtMTQuNzUtMi40NXEtMy44MS0zLjYyLTMuODEtMTIsMC03Ljg5LDMuODQtMTIu MzFhMTEuODUsMTEuODUsMCwwLDEsOS4yNy00LjQyQTExLjM3LDExLjM3LDAsMCwxLDIwNiwyOS4y NlptLjY0LDUuNjZhNy42MSw3LjYxLDAsMCwwLTYuMDktMi44MUE3LjUyLDcuNTIsMCwwLDAsMTkz LDM3LjMyYTIwLjU2LDIwLjU2LDAsMCwwLTEuMDgsNy4zYzAsMy41My43Miw2LjIyLDIuMTQsOC4w N2E2LjkzLDYuOTMsMCwwLDAsNS43NiwyLjc3LDguMDksOC4wOSwwLDAsMCw4LTUuMTNBMTYuNzIs MTYuNzIsMCwwLDAsMjA5LDQzLjU2UTIwOSwzNy43MywyMDYuNjIsMzQuOTJaIgorICAgICAgICAg ICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCisgICAgICAg ICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0iY2xzLTcgYXBwLW5hbWUiCisgICAgICAgICAg ICAgICAgICAgICAgICAgIGQ9Ik0yMzUuMTYsMTYuMzRoNi41OGwxNS42Miw0M0gyNTFsLTQuNS0x Mi44OUgyMjkuNmwtNC42NywxMi44OWgtNlptOS42NywyNS40LTYuNjMtMTktNi44OCwxOVoiCisg ICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgK KyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSJjbHMtNyBhcHAtbmFtZSIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTI3OS4xNiwyOWExNC4zLDE0LjMsMCwwLDEsMy4x OCwzLjA4VjE2LjJoNS4wN1Y1OS4zOGgtNC43NVY1NWExMS4zMywxMS4zMywwLDAsMS00LjM1LDQu MTksMTIuNTEsMTIuNTEsMCwwLDEtNS43NSwxLjI4LDExLjYxLDExLjYxLDAsMCwxLTktNC40cS0z LjgyLTQuNDEtMy44My0xMS43NGEyMC4zNSwyMC4zNSwwLDAsMSwzLjQ5LTExLjg4LDExLjQxLDEx LjQxLDAsMCwxLDEwLTVBMTEuMTUsMTEuMTUsMCwwLDEsMjc5LjE2LDI5Wk0yNjcuMzksNTIuNXEy LjEzLDMuMzksNi44MiwzLjM5YTcuMTcsNy4xNywwLDAsMCw2LTMuMTRjMS41Ni0yLjEsMi4zNS01 LjEyLDIuMzUtOXMtLjgxLTYuOS0yLjQyLTguODFhNy41Niw3LjU2LDAsMCwwLTYtMi44NSw3Ljg4 LDcuODgsMCwwLDAtNi40MywzYy0xLjY0LDItMi40Niw1LTIuNDYsOUExNS42MiwxNS42MiwwLDAs MCwyNjcuMzksNTIuNVoiCisgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAg ICAgICAgICAgICAgPHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSJj bHMtNyBhcHAtbmFtZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTI5NS4yOSwyOGg1 LjIxdjQuNDZhMTcuNCwxNy40LDAsMCwxLDMuNC0zLjM3LDEwLjI0LDEwLjI0LDAsMCwxLDUuOTIt MS43OSw5LjM0LDkuMzQsMCwwLDEsNiwxLjg1LDkuNjEsOS42MSwwLDAsMSwyLjM0LDMuMSwxMS4z NywxMS4zNywwLDAsMSw0LjEzLTMuNzMsMTEuNTIsMTEuNTIsMCwwLDEsNS4zMy0xLjIycTYuMzMs MCw4LjYyLDQuNTdhMTUsMTUsMCwwLDEsMS4yMyw2LjYyVjU5LjM4SDMzMlYzNy41OGMwLTIuMDkt LjUyLTMuNTItMS41Ny00LjNhNi4yLDYuMiwwLDAsMC0zLjgyLTEuMTcsNy41OCw3LjU4LDAsMCww LTUuMzUsMi4wOGMtMS40OSwxLjM4LTIuMjQsMy43LTIuMjQsNi45NFY1OS4zOGgtNS4zNlYzOC45 YTEwLjc4LDEwLjc4LDAsMCwwLS43Ni00LjY2cS0xLjItMi4xOS00LjQ5LTIuMTlBNy43Myw3Ljcz LDAsMCwwLDMwMywzNC4zNmMtMS42MywxLjU0LTIuNDUsNC4zNC0yLjQ1LDguMzhWNTkuMzhoLTUu MjdaIgorICAgICAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgICAg IDxwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0iY2xzLTcgYXBwLW5h bWUiCisgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0zNDUuMjcsMTYuMzRoNS4zNnY2aC01 LjM2Wm0wLDExLjgxaDUuMzZWNTkuMzhoLTUuMzZaIgorICAgICAgICAgICAgICAgICAgICAgICAg Lz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCisgICAgICAgICAgICAgICAgICAgICAg ICAgIGNsYXNzTmFtZT0iY2xzLTcgYXBwLW5hbWUiCisgICAgICAgICAgICAgICAgICAgICAgICAg IGQ9Ik0zNTguNiwyOGg1djQuNDZhMTQsMTQsMCwwLDEsNC43Mi00LDEyLjU2LDEyLjU2LDAsMCwx LDUuNTMtMS4yYzQuNDYsMCw3LjQ2LDEuNTUsOSw0LjY2YTE2LjUyLDE2LjUyLDAsMCwxLDEuMjks Ny4yOVY1OS4zOGgtNS4zN1YzOS42MUExMC44LDEwLjgsMCwwLDAsMzc4LDM1YTUuMTUsNS4xNSww LDAsMC01LjEtMi45MywxMC4yMSwxMC4yMSwwLDAsMC0zLjA4LjM4QTgsOCwwLDAsMCwzNjYsMzVh Ny42Niw3LjY2LDAsMCwwLTEuNzEsMy4yLDIxLjg0LDIxLjg0LDAsMCwwLS40LDQuNzRWNTkuMzhI MzU4LjZaIgorICAgICAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAg ICAgIDxwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0iY2xzLTggYXBw LXRhZ2xpbmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0xNTUuMjQsODYuODdoMy45 bDUuNzcsMTcsNS43NC0xN2gzLjg3VjEwN2gtMi42Vjk1LjFxMC0uNjEsMC0yYzAtLjk0LDAtMiww LTNMMTY2LjI0LDEwN2gtMi43TDE1Ny43NSw5MHYuNjFjMCwuNDksMCwxLjI0LDAsMi4yNXMuMDUs MS43NS4wNSwyLjIyVjEwN2gtMi42WiIKKyAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAg ICAgICAgICAgICAgICAgICAgICA8cGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFz c05hbWU9ImNscy04IGFwcC10YWdsaW5lIgorICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJN MTg2LjE1LDk4LjA5YTEuMzUsMS4zNSwwLDAsMCwxLjE0LS43MSwyLjMxLDIuMzEsMCwwLDAsLjE2 LS45NCwyLDIsMCwwLDAtLjg5LTEuODRBNC43OSw0Ljc5LDAsMCwwLDE4NCw5NGEzLjIxLDMuMjEs MCwwLDAtMi43MywxLDMuNDQsMy40NCwwLDAsMC0uNTksMS43MmgtMi4zQTQuMjgsNC4yOCwwLDAs MSwxODAuMTQsOTMsNy4xNiw3LjE2LDAsMCwxLDE4NC4wNSw5MmE4LDgsMCwwLDEsNC4xOSwxLDMu MzQsMy4zNCwwLDAsMSwxLjYsMy4wNnY4LjQ0YTEuMDYsMS4wNiwwLDAsMCwuMTYuNjIuNzcuNzcs MCwwLDAsLjY2LjIzbC4zNywwLC40NC0uMDdWMTA3YTcuMzgsNy4zOCwwLDAsMS0uODguMjEsNS45 Miw1LjkyLDAsMCwxLS44MiwwLDIsMiwwLDAsMS0xLjg0LS45LDMuNjMsMy42MywwLDAsMS0uNDMt MS4zNiw2LjE2LDYuMTYsMCwwLDEtMi4xNiwxLjcxLDYuNTYsNi41NiwwLDAsMS0zLjEuNzMsNC41 OSw0LjU5LDAsMCwxLTMuMzMtMS4yNCw0LjA5LDQuMDksMCwwLDEtMS4yOS0zLjA5LDQsNCwwLDAs MSwxLjI3LTMuMTYsNi4xNiw2LjE2LDAsMCwxLDMuMzQtMS4zOFpNMTgxLDEwNC43NGEyLjg4LDIu ODgsMCwwLDAsMS44NC42Miw1LjUxLDUuNTEsMCwwLDAsMi41Mi0uNjEsMy4zNywzLjM3LDAsMCww LDItMy4yNnYtMmEzLjc5LDMuNzksMCwwLDEtMS4xNi40OCwxMC4zNywxMC4zNywwLDAsMS0xLjM5 LjI4bC0xLjQ5LjE5YTUuNjgsNS42OCwwLDAsMC0yLC41NiwyLjE4LDIuMTgsMCwwLDAtMS4xNCwy QTIsMiwwLDAsMCwxODEsMTA0Ljc0WiIKKyAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAg ICAgICAgICAgICAgICAgICAgICA8cGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFz c05hbWU9ImNscy04IGFwcC10YWdsaW5lIgorICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJN MTkzLjg4LDkyLjMxaDIuMzN2Mi4wOGE2LjczLDYuNzMsMCwwLDEsMi4yLTEuODVBNiw2LDAsMCwx LDIwMSw5MnEzLjEyLDAsNC4yMSwyLjE4YTcuNzMsNy43MywwLDAsMSwuNiwzLjRWMTA3aC0yLjVW OTcuNzNhNC44Nyw0Ljg3LDAsMCwwLS40LTIuMTYsMi40MSwyLjQxLDAsMCwwLTIuMzgtMS4zNyw0 Ljc1LDQuNzUsMCwwLDAtMS40My4xOCwzLjY4LDMuNjgsMCwwLDAtMS43OCwxLjIsMy41NSwzLjU1 LDAsMCwwLS44LDEuNSwxMC4zLDEwLjMsMCwwLDAtLjE4LDIuMjFWMTA3aC0yLjQ2WiIKKyAgICAg ICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aAorICAg ICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9ImNscy04IGFwcC10YWdsaW5lIgorICAg ICAgICAgICAgICAgICAgICAgICAgICBkPSJNMjE3LjI5LDk4LjA5YTEuMzMsMS4zMywwLDAsMCwx LjE0LS43MSwyLjE1LDIuMTUsMCwwLDAsLjE2LS45NCwyLDIsMCwwLDAtLjg5LTEuODQsNC43OSw0 Ljc5LDAsMCwwLTIuNTYtLjU2LDMuMjQsMy4yNCwwLDAsMC0yLjczLDEsMy40NCwzLjQ0LDAsMCww LS41OCwxLjcyaC0yLjNBNC4yNyw0LjI3LDAsMCwxLDIxMS4yOCw5Myw3LjE5LDcuMTksMCwwLDEs MjE1LjIsOTJhOCw4LDAsMCwxLDQuMTksMUEzLjM2LDMuMzYsMCwwLDEsMjIxLDk2djguNDRhMS4x NCwxLjE0LDAsMCwwLC4xNS42Mi43OS43OSwwLDAsMCwuNjcuMjNsLjM3LDAsLjQzLS4wN1YxMDdh Ny4zMiw3LjMyLDAsMCwxLS44Ny4yMSw2LDYsMCwwLDEtLjgyLDAsMiwyLDAsMCwxLTEuODUtLjks My40NiwzLjQ2LDAsMCwxLS40Mi0xLjM2LDYuMTYsNi4xNiwwLDAsMS0yLjE2LDEuNzEsNi42Myw2 LjYzLDAsMCwxLTMuMTEuNzMsNC41OCw0LjU4LDAsMCwxLTMuMzItMS4yNCw0LjA2LDQuMDYsMCww LDEtMS4zLTMuMDlBNCw0LDAsMCwxLDIxMCwxMDBhNi4xMyw2LjEzLDAsMCwxLDMuMzMtMS4zOFpt LTUuMTgsNi42NWEyLjkxLDIuOTEsMCwwLDAsMS44NS42Miw1LjQ3LDUuNDcsMCwwLDAsMi41MS0u NjEsMy4zOCwzLjM4LDAsMCwwLDIuMDYtMy4yNnYtMmEzLjksMy45LDAsMCwxLTEuMTYuNDgsMTAu NTEsMTAuNTEsMCwwLDEtMS40LjI4bC0xLjQ4LjE5YTUuNTUsNS41NSwwLDAsMC0yLC41NiwyLjE3 LDIuMTcsMCwwLDAtMS4xNSwyQTIsMiwwLDAsMCwyMTIuMTEsMTA0Ljc0WiIKKyAgICAgICAgICAg ICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aAorICAgICAgICAg ICAgICAgICAgICAgICAgICBjbGFzc05hbWU9ImNscy04IGFwcC10YWdsaW5lIgorICAgICAgICAg ICAgICAgICAgICAgICAgICBkPSJNMjMzLjE2LDkyLjlhNy4wNSw3LjA1LDAsMCwxLDEuNDIsMS4z OVY5Mi40NWgyLjI3djEzLjMyYTEwLDEwLDAsMCwxLS44Miw0LjRjLTEsMi0yLjk0LDMtNS43Nywz YTcuMDksNy4wOSwwLDAsMS00LTEuMDYsNC4xNSw0LjE1LDAsMCwxLTEuOC0zLjMySDIyN2EyLjgx LDIuODEsMCwwLDAsLjcxLDEuNTIsMy41NywzLjU3LDAsMCwwLDIuNjEuODJjMS44OCwwLDMuMS0u NjYsMy42OC0yYTExLjE1LDExLjE1LDAsMCwwLC40OC00LjIsNC44NCw0Ljg0LDAsMCwxLTEuNzcs MS42Nyw1LjkzLDUuOTMsMCwwLDEtMi43NC41NCw1Ljc5LDUuNzksMCwwLDEtNC4xNC0xLjY5cS0x Ljc5LTEuNjgtMS43OC01LjU4YTguNDksOC40OSwwLDAsMSwxLjc5LTUuNzQsNS41MSw1LjUxLDAs MCwxLDQuMzItMi4wN0E1LjMzLDUuMzMsMCwwLDEsMjMzLjE2LDkyLjlabS4zLDIuNjRhMy43Nywz Ljc3LDAsMCwwLTYuMzgsMS4xMiw5LjczLDkuNzMsMCwwLDAtLjUsMy40LDYuMDUsNi4wNSwwLDAs MCwxLDMuNzcsMy4yMSwzLjIxLDAsMCwwLDIuNjgsMS4yOSwzLjc3LDMuNzcsMCwwLDAsMy43Mi0y LjM5LDcuNzEsNy43MSwwLDAsMCwuNi0zLjE2QTYuMTMsNi4xMywwLDAsMCwyMzMuNDYsOTUuNTRa IgorICAgICAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxw YXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0iY2xzLTggYXBwLXRhZ2xp bmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0yNDkuNjQsOTIuNzJhNS40NCw1LjQ0 LDAsMCwxLDIuMjEsMS44OSw2LjUyLDYuNTIsMCwwLDEsMSwyLjU4LDE3LjQ0LDE3LjQ0LDAsMCwx LC4yMiwzLjIzSDI0Mi40YTYuMzQsNi4zNCwwLDAsMCwxLDMuNTksMy40OSwzLjQ5LDAsMCwwLDMs MS4zNSwzLjksMy45LDAsMCwwLDMuMDUtMS4yOCw0LjUsNC41LDAsMCwwLC45LTEuNzJoMi40MmE1 LDUsMCwwLDEtLjYzLDEuOCw2LjU4LDYuNTgsMCwwLDEtMS4yMSwxLjYyLDUuNzEsNS43MSwwLDAs MS0yLjc1LDEuNDgsOC43MSw4LjcxLDAsMCwxLTIsLjIxLDYuMTEsNi4xMSwwLDAsMS00LjYtMiw3 Ljc5LDcuNzksMCwwLDEtMS44OS01LjU4LDguNDEsOC40MSwwLDAsMSwxLjktNS43Miw2LjI2LDYu MjYsMCwwLDEsNS0yLjIxQTYuNTksNi41OSwwLDAsMSwyNDkuNjQsOTIuNzJabS44OCw1Ljc0YTYu NDYsNi40NiwwLDAsMC0uNjktMi41NSwzLjU0LDMuNTQsMCwwLDAtMy4zNS0xLjc4LDMuNzIsMy43 MiwwLDAsMC0yLjgyLDEuMjIsNC42OSw0LjY5LDAsMCwwLTEuMjEsMy4xMVoiCisgICAgICAgICAg ICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSJjbHMtOCBhcHAtdGFnbGluZSIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgZD0iTTI1Ni4xNiw5Mi4zMWgyLjQ0djIuMDhhOC4yMyw4LjIzLDAs MCwxLDEuNTgtMS41N0E0Ljc5LDQuNzksMCwwLDEsMjYzLDkyYTQuMzEsNC4zMSwwLDAsMSwyLjgx Ljg3LDQuNSw0LjUsMCwwLDEsMS4xLDEuNDQsNS4yNyw1LjI3LDAsMCwxLDEuOTItMS43NCw1LjM3 LDUuMzcsMCwwLDEsMi40OS0uNTcsNC4wOCw0LjA4LDAsMCwxLDQsMi4xNCw3LDcsMCwwLDEsLjU4 LDMuMDlWMTA3aC0yLjU2Vjk2Ljc4YTIuNDEsMi40MSwwLDAsMC0uNzMtMiwyLjkzLDIuOTMsMCww LDAtMS43OS0uNTQsMy41MywzLjUzLDAsMCwwLTIuNDksMSw0LjIzLDQuMjMsMCwwLDAtMS4wNSwz LjI0VjEwN2gtMi41Vjk3LjRhNSw1LDAsMCwwLS4zNi0yLjE4LDIuMTcsMi4xNywwLDAsMC0yLjA5 LTEsMy41OSwzLjU5LDAsMCwwLTIuNTMsMS4wOGMtLjc2LjcyLTEuMTQsMi0xLjE0LDMuOTFWMTA3 aC0yLjQ3WiIKKyAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAg ICAgICA8cGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9ImNscy04IGFw cC10YWdsaW5lIgorICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJNMjg4LjUzLDkyLjcyYTUu NDcsNS40NywwLDAsMSwyLjIyLDEuODksNi42Nyw2LjY3LDAsMCwxLDEsMi41OCwxNy42NiwxNy42 NiwwLDAsMSwuMjEsMy4yM0gyODEuMjlhNi40Miw2LjQyLDAsMCwwLDEsMy41OSwzLjQ4LDMuNDgs MCwwLDAsMywxLjM1LDMuOSwzLjksMCwwLDAsMy4wNi0xLjI4LDQuNSw0LjUsMCwwLDAsLjktMS43 MmgyLjQyYTUuMjMsNS4yMywwLDAsMS0uNjQsMS44LDYuNTYsNi41NiwwLDAsMS0xLjIsMS42Miw1 LjcsNS43LDAsMCwxLTIuNzYsMS40OCw4LjYyLDguNjIsMCwwLDEtMiwuMjEsNi4xNCw2LjE0LDAs MCwxLTQuNjEtMiw3Ljc5LDcuNzksMCwwLDEtMS44OS01LjU4LDguNDEsOC40MSwwLDAsMSwxLjkx LTUuNzIsNi4yNCw2LjI0LDAsMCwxLDUtMi4yMUE2LjU4LDYuNTgsMCwwLDEsMjg4LjUzLDkyLjcy Wm0uODgsNS43NGE2LjQ2LDYuNDYsMCwwLDAtLjY5LTIuNTUsMy41MywzLjUzLDAsMCwwLTMuMzUt MS43OCwzLjcyLDMuNzIsMCwwLDAtMi44MiwxLjIyLDQuNjMsNC42MywwLDAsMC0xLjIsMy4xMVoi CisgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBh dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSJjbHMtOCBhcHAtdGFnbGlu ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTI5NS4wNiw5Mi4zMWgyLjM0djIuMDhh Ni42Myw2LjYzLDAsMCwxLDIuMi0xLjg1LDUuOTEsNS45MSwwLDAsMSwyLjU4LS41NmMyLjA4LDAs My40OS43Myw0LjIxLDIuMThhNy41Nyw3LjU3LDAsMCwxLC42MSwzLjRWMTA3aC0yLjUxVjk3Ljcz YTUsNSwwLDAsMC0uMzktMi4xNiwyLjQxLDIuNDEsMCwwLDAtMi4zOC0xLjM3LDQuODYsNC44Niww LDAsMC0xLjQ0LjE4LDMuNywzLjcsMCwwLDAtMS43NywxLjIsMy41NSwzLjU1LDAsMCwwLS44LDEu NSw5LjU4LDkuNTgsMCwwLDAtLjE5LDIuMjFWMTA3aC0yLjQ2WiIKKyAgICAgICAgICAgICAgICAg ICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aAorICAgICAgICAgICAgICAg ICAgICAgICAgICBjbGFzc05hbWU9ImNscy04IGFwcC10YWdsaW5lIgorICAgICAgICAgICAgICAg ICAgICAgICAgICBkPSJNMzExLjEzLDg4LjIyaDIuNDh2NC4wOUgzMTZ2MmgtMi4zNHY5LjU2YTEs MSwwLDAsMCwuNTIsMSwyLjIxLDIuMjEsMCwwLDAsMSwuMTVoLjM4bC40OCwwdjJhNC4xNiw0LjE2 LDAsMCwxLS44OC4xOCw3Ljc0LDcuNzQsMCwwLDEtMSwuMDYsMi42OSwyLjY5LDAsMCwxLTIuMzQt Ljg4LDMuOTQsMy45NCwwLDAsMS0uNjEtMi4yOXYtOS43aC0ydi0yaDJaIgorICAgICAgICAgICAg ICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCisgICAgICAgICAg ICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0iY2xzLTggYXBwLXRhZ2xpbmUiCisgICAgICAgICAg ICAgICAgICAgICAgICAgIGQ9Ik0zNDAuNjMsODYuODd2Mi4zOWgtNi43N1YxMDdoLTIuNzVWODku MjZoLTYuNzZWODYuODdaIgorICAgICAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAg ICAgICAgICAgICAgIDxwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0i Y2xzLTggYXBwLXRhZ2xpbmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0zNTAuMzEs OTMuNzdhNy40Miw3LjQyLDAsMCwxLDEuOTQsNS41NSw5LjU3LDkuNTcsMCwwLDEtMS43MSw1Ljg1 LDYuMTksNi4xOSwwLDAsMS01LjMxLDIuMyw2LDYsMCwwLDEtNC43Ni0yQTguMDgsOC4wOCwwLDAs MSwzMzguNywxMDBhOC43OCw4Ljc4LDAsMCwxLDEuODYtNS44OCw2LjI1LDYuMjUsMCwwLDEsNS0y LjE4QTYuNiw2LjYsMCwwLDEsMzUwLjMxLDkzLjc3Wm0tMS41Myw5Ljc0YTkuMzIsOS4zMiwwLDAs MCwuOS00LjEyLDcuMzksNy4zOSwwLDAsMC0uNjUtMy4zMywzLjYzLDMuNjMsMCwwLDAtMy41NC0y LDMuNDksMy40OSwwLDAsMC0zLjI1LDEuNzIsOC4wNyw4LjA3LDAsMCwwLTEsNC4xNSw3LjA1LDcu MDUsMCwwLDAsMSwzLjg5LDMuNTYsMy41NiwwLDAsMCwzLjIyLDEuNTZBMy4zNSwzLjM1LDAsMCww LDM0OC43OCwxMDMuNTFaIgorICAgICAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAg ICAgICAgICAgICAgIDxwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0i Y2xzLTggYXBwLXRhZ2xpbmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0zNjUuODgs OTMuNzdhNy40Miw3LjQyLDAsMCwxLDEuOTQsNS41NSw5LjU3LDkuNTcsMCwwLDEtMS43MSw1Ljg1 LDYuMTksNi4xOSwwLDAsMS01LjMxLDIuMyw2LDYsMCwwLDEtNC43Ni0yLDguMDgsOC4wOCwwLDAs MS0xLjc3LTUuNDgsOC43OCw4Ljc4LDAsMCwxLDEuODYtNS44OCw2LjI1LDYuMjUsMCwwLDEsNS0y LjE4QTYuNTgsNi41OCwwLDAsMSwzNjUuODgsOTMuNzdabS0xLjUzLDkuNzRhOS4zMiw5LjMyLDAs MCwwLC45LTQuMTIsNy4yNiw3LjI2LDAsMCwwLS42NS0zLjMzLDMuNjMsMy42MywwLDAsMC0zLjU0 LTIsMy40NiwzLjQ2LDAsMCwwLTMuMjQsMS43Miw4LDgsMCwwLDAtMSw0LjE1LDcsNywwLDAsMCwx LDMuODksMy41NCwzLjU0LDAsMCwwLDMuMjEsMS41NkEzLjM1LDMuMzUsMCwwLDAsMzY0LjM1LDEw My41MVoiCisgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICAg ICAgPHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSJjbHMtOCBhcHAt dGFnbGluZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTM3MC45MSw4Ni44N2gyLjQ2 VjEwN2gtMi40NloiCisgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAg ICAgICAgICAgPHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSJjbHMt OCBhcHAtdGFnbGluZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTM3OC41MywxMDIu MzZhMy40NywzLjQ3LDAsMCwwLC42MywxLjg5LDQsNCwwLDAsMCwzLjI5LDEuMTksNC44Niw0Ljg2 LDAsMCwwLDIuNDUtLjZBMiwyLDAsMCwwLDM4NiwxMDNhMS41NiwxLjU2LDAsMCwwLS44NC0xLjQz LDEwLjYzLDEwLjYzLDAsMCwwLTIuMTQtLjdsLTItLjQ5YTEwLDEwLDAsMCwxLTIuODEtMSwzLjEx LDMuMTEsMCwwLDEtMS42MS0yLjc2LDQuMjEsNC4yMSwwLDAsMSwxLjUyLTMuMzcsNi4xMyw2LjEz LDAsMCwxLDQuMDgtMS4yOHEzLjM2LDAsNC44MywxLjk0YTQuMjQsNC4yNCwwLDAsMSwuOTEsMi42 NWgtMi4zM0EyLjcyLDIuNzIsMCwwLDAsMzg1LDk1YTMuOTIsMy45MiwwLDAsMC0zLTEsMy43LDMu NywwLDAsMC0yLjE2LjUzLDEuNjUsMS42NSwwLDAsMC0uNzQsMS40LDEuNzMsMS43MywwLDAsMCwx LDEuNTMsNS42OSw1LjY5LDAsMCwwLDEuNjQuNmwxLjY2LjRBMTIuNzMsMTIuNzMsMCwwLDEsMzg3 LDk5Ljc1YTMuMywzLjMsMCwwLDEsMS40NCwzLDQuNDgsNC40OCwwLDAsMS0xLjUsMy4zNyw2LjQ1 LDYuNDUsMCwwLDEtNC41OCwxLjQzYy0yLjIsMC0zLjc3LS41LTQuNjgtMS40OWE1LjU5LDUuNTks MCwwLDEtMS40OC0zLjY3WiIKKyAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAg ICAgICAgICAgICAgICA8cGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9 ImNscy04IGFwcC10YWdsaW5lIgorICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJNNDAwLDg3 Ljg0Yy41OC0uODQsMS42OC0xLjI2LDMuMzItMS4yNmwuNDgsMCwuNTYsMHYyLjI0bC0uNTYsMGgt LjMyYy0uNzYsMC0xLjIxLjE5LTEuMzYuNThhMTEuNzUsMTEuNzUsMCwwLDAtLjIyLDNoMi40NnYx Ljk0aC0yLjQ2VjEwN2gtMi40M1Y5NC4zMmgtMlY5Mi4zOGgydi0yLjNBNC40Myw0LjQzLDAsMCwx LDQwMCw4Ny44NFoiCisgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAg ICAgICAgICAgPHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSJjbHMt OCBhcHAtdGFnbGluZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTQxNy4yMyw5My43 N2E3LjM4LDcuMzgsMCwwLDEsMS45NCw1LjU1LDkuNTcsOS41NywwLDAsMS0xLjcxLDUuODUsNi4x OCw2LjE4LDAsMCwxLTUuMywyLjMsNiw2LDAsMCwxLTQuNzctMiw4LjA3LDguMDcsMCwwLDEtMS43 Ni01LjQ4LDguODMsOC44MywwLDAsMSwxLjg1LTUuODgsNi4yNSw2LjI1LDAsMCwxLDUtMi4xOEE2 LjU4LDYuNTgsMCwwLDEsNDE3LjIzLDkzLjc3Wm0tMS41Myw5Ljc0YTkuMzIsOS4zMiwwLDAsMCwu OS00LjEyLDcuMjYsNy4yNiwwLDAsMC0uNjUtMy4zMywzLjYzLDMuNjMsMCwwLDAtMy41NC0yLDMu NDcsMy40NywwLDAsMC0zLjI0LDEuNzIsOCw4LDAsMCwwLTEsNC4xNSw3LDcsMCwwLDAsMSwzLjg5 LDMuNTUsMy41NSwwLDAsMCwzLjIyLDEuNTZBMy4zNSwzLjM1LDAsMCwwLDQxNS43LDEwMy41MVoi CisgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBh dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSJjbHMtOCBhcHAtdGFnbGlu ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTQyMi4yNiw5Mi4zMWgyLjM0djIuNTNB NS42MSw1LjYxLDAsMCwxLDQyNiw5MywzLjY4LDMuNjgsMCwwLDEsNDI4LjU5LDkybC4yNCwwLC41 NiwwdjIuNmEyLjA4LDIuMDgsMCwwLDAtLjQxLS4wNWwtLjQsMGEzLjUyLDMuNTIsMCwwLDAtMi44 NiwxLjIsNC4yLDQuMiwwLDAsMC0xLDIuNzVWMTA3aC0yLjQ2WiIKKyAgICAgICAgICAgICAgICAg ICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aAorICAgICAgICAgICAgICAg ICAgICAgICAgICBjbGFzc05hbWU9ImNscy04IGFwcC10YWdsaW5lIgorICAgICAgICAgICAgICAg ICAgICAgICAgICBkPSJNNDM5Ljg5LDg2Ljg3aDlhNi4wOSw2LjA5LDAsMCwxLDQuMzEsMS41MSw1 LjUsNS41LDAsMCwxLDEuNjQsNC4yNSw2LjE1LDYuMTUsMCwwLDEtMS40Nyw0LjA5LDUuNSw1LjUs MCwwLDEtNC40NywxLjc0aC02LjI3VjEwN2gtMi43MlptMTAuNTUsMi43NmE1LjkyLDUuOTIsMCww LDAtMi40Ni0uNDJoLTUuMzd2N0g0NDhhNS4wNyw1LjA3LDAsMCwwLDIuOTUtLjc4LDMuMSwzLjEs MCwwLDAsMS4xNC0yLjc1QTMsMywwLDAsMCw0NTAuNDQsODkuNjNaIgorICAgICAgICAgICAgICAg ICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCisgICAgICAgICAgICAg ICAgICAgICAgICAgIGNsYXNzTmFtZT0iY2xzLTggYXBwLXRhZ2xpbmUiCisgICAgICAgICAgICAg ICAgICAgICAgICAgIGQ9Ik00NjguNTgsOTMuNzdhNy4zOCw3LjM4LDAsMCwxLDEuOTUsNS41NSw5 LjUxLDkuNTEsMCwwLDEtMS43Miw1Ljg1LDYuMTcsNi4xNywwLDAsMS01LjMsMi4zLDYsNiwwLDAs MS00Ljc3LTJBOC4wNyw4LjA3LDAsMCwxLDQ1NywxMDBhOC43OCw4Ljc4LDAsMCwxLDEuODYtNS44 OCw2LjIzLDYuMjMsMCwwLDEsNS0yLjE4QTYuNTYsNi41NiwwLDAsMSw0NjguNTgsOTMuNzdabS0x LjUyLDkuNzRhOS4zMiw5LjMyLDAsMCwwLC45LTQuMTIsNy4zOSw3LjM5LDAsMCwwLS42NS0zLjMz LDMuNjUsMy42NSwwLDAsMC0zLjU1LTIsMy40OCwzLjQ4LDAsMCwwLTMuMjQsMS43Miw4LDgsMCww LDAtMSw0LjE1LDcsNywwLDAsMCwxLDMuODksMy41NiwzLjU2LDAsMCwwLDMuMjIsMS41NkEzLjM2 LDMuMzYsMCwwLDAsNDY3LjA2LDEwMy41MVoiCisgICAgICAgICAgICAgICAgICAgICAgICAvPgor ICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg Y2xhc3NOYW1lPSJjbHMtOCBhcHAtdGFnbGluZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ZD0iTTQ3NSwxMDIuMzZhMy40NywzLjQ3LDAsMCwwLC42MywxLjg5LDQsNCwwLDAsMCwzLjI5LDEu MTksNC45Myw0LjkzLDAsMCwwLDIuNDYtLjYsMiwyLDAsMCwwLDEuMDYtMS44NCwxLjU1LDEuNTUs MCwwLDAtLjg1LTEuNDMsMTAuNCwxMC40LDAsMCwwLTIuMTQtLjdsLTItLjQ5YTkuNzgsOS43OCww LDAsMS0yLjgtMSwzLjEsMy4xLDAsMCwxLTEuNjItMi43Niw0LjIxLDQuMjEsMCwwLDEsMS41Mi0z LjM3LDYuMTMsNi4xMywwLDAsMSw0LjA4LTEuMjhxMy4zNiwwLDQuODQsMS45NGE0LjE3LDQuMTcs MCwwLDEsLjksMi42NWgtMi4zM2EyLjcyLDIuNzIsMCwwLDAtLjYtMS41MSwzLjkyLDMuOTIsMCww LDAtMy0xLDMuNywzLjcsMCwwLDAtMi4xNi41MywxLjY0LDEuNjQsMCwwLDAtLjczLDEuNCwxLjcy LDEuNzIsMCwwLDAsMSwxLjUzLDUuNjYsNS42NiwwLDAsMCwxLjY1LjZsMS42NS40YTEyLjgzLDEy LjgzLDAsMCwxLDMuNjMsMS4yNCwzLjMxLDMuMzEsMCwwLDEsMS40MywzLDQuNDgsNC40OCwwLDAs MS0xLjUsMy4zNyw2LjQ1LDYuNDUsMCwwLDEtNC41OCwxLjQzcS0zLjMsMC00LjY4LTEuNDlhNS41 OSw1LjU5LDAsMCwxLTEuNDgtMy42N1oiCisgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAg ICAgICAgICAgICAgICAgICAgICAgPHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xh c3NOYW1lPSJjbHMtOCBhcHAtdGFnbGluZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZD0i TTQ4OCw4OC4yMmgyLjQ5djQuMDloMi4zNHYyaC0yLjM0djkuNTZhMSwxLDAsMCwwLC41MiwxLDIu MTksMi4xOSwwLDAsMCwuOTUuMTVoLjM5bC40OCwwdjJhNC4zOSw0LjM5LDAsMCwxLS44OS4xOCw3 LjUyLDcuNTIsMCwwLDEtMSwuMDYsMi42OSwyLjY5LDAsMCwxLTIuMzQtLjg4QTMuOTQsMy45NCww LDAsMSw0ODgsMTA0di05LjdoLTJ2LTJoMloiCisgICAgICAgICAgICAgICAgICAgICAgICAvPgor ICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg Y2xhc3NOYW1lPSJjbHMtOCBhcHAtdGFnbGluZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ZD0iTTUwMy40Nyw5Mi45YTYuNzgsNi43OCwwLDAsMSwxLjQxLDEuMzlWOTIuNDVoMi4yN3YxMy4z MmExMCwxMCwwLDAsMS0uODEsNC40Yy0xLDItMi45NCwzLTUuNzcsM2E3LjA5LDcuMDksMCwwLDEt NC0xLjA2LDQuMSw0LjEsMCwwLDEtMS44LTMuMzJoMi41YTIuNzQsMi43NCwwLDAsMCwuNzEsMS41 MiwzLjU3LDMuNTcsMCwwLDAsMi42MS44MmMxLjg3LDAsMy4xLS42NiwzLjY4LTJhMTEuMzcsMTEu MzcsMCwwLDAsLjQ4LTQuMiw0Ljg0LDQuODQsMCwwLDEtMS43NywxLjY3LDYsNiwwLDAsMS0yLjc0 LjU0LDUuODMsNS44MywwLDAsMS00LjE1LTEuNjlxLTEuNzctMS42OC0xLjc3LTUuNThhOC40Myw4 LjQzLDAsMCwxLDEuNzktNS43NCw1LjUxLDUuNTEsMCwwLDEsNC4zMi0yLjA3QTUuMzgsNS4zOCww LDAsMSw1MDMuNDcsOTIuOVptLjMsMi42NGEzLjU2LDMuNTYsMCwwLDAtMi44NS0xLjMxLDMuNSwz LjUsMCwwLDAtMy41MywyLjQzLDkuNDgsOS40OCwwLDAsMC0uNTEsMy40LDYuMTIsNi4xMiwwLDAs MCwxLDMuNzcsMy4yNCwzLjI0LDAsMCwwLDIuNjksMS4yOSwzLjc1LDMuNzUsMCwwLDAsMy43MS0y LjM5LDcuNzEsNy43MSwwLDAsMCwuNi0zLjE2QTYuMTQsNi4xNCwwLDAsMCw1MDMuNzcsOTUuNTRa IgorICAgICAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxw YXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0iY2xzLTggYXBwLXRhZ2xp bmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik01MTEsOTIuMzFoMi4zM3YyLjUzYTUu OTEsNS45MSwwLDAsMSwxLjQxLTEuOEEzLjY5LDMuNjksMCwwLDEsNTE3LjMsOTJsLjIzLDAsLjU2 LDB2Mi42YTIuMDgsMi4wOCwwLDAsMC0uNC0uMDVsLS40MSwwYTMuNDgsMy40OCwwLDAsMC0yLjg1 LDEuMiw0LjE0LDQuMTQsMCwwLDAtMSwyLjc1VjEwN0g1MTFaIgorICAgICAgICAgICAgICAgICAg ICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCisgICAgICAgICAgICAgICAg ICAgICAgICAgIGNsYXNzTmFtZT0iY2xzLTggYXBwLXRhZ2xpbmUiCisgICAgICAgICAgICAgICAg ICAgICAgICAgIGQ9Ik01MjkuMjcsOTIuNzJhNS40NCw1LjQ0LDAsMCwxLDIuMjEsMS44OSw2LjUy LDYuNTIsMCwwLDEsMSwyLjU4LDE2LjYsMTYuNiwwLDAsMSwuMjIsMy4yM0g1MjJhNi4zNCw2LjM0 LDAsMCwwLDEsMy41OSwzLjQ5LDMuNDksMCwwLDAsMywxLjM1LDMuOSwzLjksMCwwLDAsMy0xLjI4 LDQuMzcsNC4zNywwLDAsMCwuOS0xLjcyaDIuNDJhNSw1LDAsMCwxLS42MywxLjgsNi4zNCw2LjM0 LDAsMCwxLTEuMjEsMS42Miw1LjcxLDUuNzEsMCwwLDEtMi43NSwxLjQ4LDguNjUsOC42NSwwLDAs MS0yLC4yMSw2LjExLDYuMTEsMCwwLDEtNC42LTIsNy43OSw3Ljc5LDAsMCwxLTEuODktNS41OCw4 LjQxLDguNDEsMCwwLDEsMS45LTUuNzIsNi4yNiw2LjI2LDAsMCwxLDUtMi4yMUE2LjU5LDYuNTks MCwwLDEsNTI5LjI3LDkyLjcyWm0uODgsNS43NGE2LjQ2LDYuNDYsMCwwLDAtLjY5LTIuNTUsMy41 NCwzLjU0LDAsMCwwLTMuMzUtMS43OCwzLjcyLDMuNzIsMCwwLDAtMi44MiwxLjIyLDQuNjksNC42 OSwwLDAsMC0xLjIxLDMuMTFaIgorICAgICAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAg ICAgICAgICAgICAgICAgIDxwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFt ZT0iY2xzLTggYXBwLXRhZ2xpbmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik01Mzcu OSwxMDAuNDdhNS42LDUuNiwwLDAsMCwuNzgsMi43OHExLjMsMiw0LjU5LDJhNy45LDcuOSwwLDAs MCwyLjY5LS40NCwzLjA5LDMuMDksMCwwLDAsMi4zNC0zLDIuNjQsMi42NCwwLDAsMC0xLTIuMzMs OS41NSw5LjU1LDAsMCwwLTMuMTUtMS4xOWwtMi42NC0uNjJhMTEuNDEsMTEuNDEsMCwwLDEtMy42 NS0xLjMzQTQuMjMsNC4yMywwLDAsMSw1MzYsOTIuNTRhNS44Niw1Ljg2LDAsMCwxLDEuODMtNC40 NEE3LjE2LDcuMTYsMCwwLDEsNTQzLDg2LjM3YTguNzUsOC43NSwwLDAsMSw1LjIyLDEuNTIsNS41 Nyw1LjU3LDAsMCwxLDIuMTUsNC44N2gtMi41NmE1LjEyLDUuMTIsMCwwLDAtLjg0LTIuNDdjLS43 OS0xLjA1LTIuMTQtMS41Ny00LjA1LTEuNTdhNC41MSw0LjUxLDAsMCwwLTMuMzEsMSwzLjIsMy4y LDAsMCwwLTEsMi4zNSwyLjMzLDIuMzMsMCwwLDAsMS4xOSwyLjE2LDE2Ljc2LDE2Ljc2LDAsMCww LDMuNTQsMS4wOWwyLjczLjY1YTguMTUsOC4xNSwwLDAsMSwzLDEuMjcsNC44MSw0LjgxLDAsMCwx LDEuODYsNC4wOSw1LjE0LDUuMTQsMCwwLDEtMi4zNyw0Ljc3LDEwLjQ2LDEwLjQ2LDAsMCwxLTUu NSwxLjQzLDguMDcsOC4wNywwLDAsMS01LjcyLTEuOTEsNi41Nyw2LjU3LDAsMCwxLTItNS4xNloi CisgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBh dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSJjbHMtOCBhcHAtdGFnbGlu ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTU3My4xNywxMDYuOWwtMS4zNiwxLjY1 LTMuMTEtMi4zNmExMS4zMywxMS4zMywwLDAsMS0yLjQzLDEsMTAuMjksMTAuMjksMCwwLDEtMi44 NS4zNyw5LjE4LDkuMTgsMCwwLDEtNy4zMi0zLjA2QTExLjcxLDExLjcxLDAsMCwxLDU1My43Niw5 N2ExMS45LDExLjksMCwwLDEsMi03LDguNzgsOC43OCwwLDAsMSw3LjY5LTMuNzJjMy41NCwwLDYu MTcsMS4xNCw3Ljg3LDMuNDJhMTEuMDgsMTEuMDgsMCwwLDEsMiw2LjgyLDE0LjI4LDE0LjI4LDAs MCwxLS40OCwzLjczLDkuNjcsOS42NywwLDAsMS0yLjQ0LDQuNDZaTTU2NS4zNSwxMDVhMy4zNiwz LjM2LDAsMCwwLDEuMjktLjQ3bC0yLjIyLTEuNzIsMS4zNy0xLjY4LDIuNjIsMkE3LjUsNy41LDAs MCwwLDU3MC4xLDEwMGExMy43NiwxMy43NiwwLDAsMCwuNDUtMy4zOSw4LjQ4LDguNDgsMCwwLDAt MS44NS01LjcsNi4zNSw2LjM1LDAsMCwwLTUuMDctMi4xNyw2LjYsNi42LDAsMCwwLTUuMTUsMi4w OHEtMS45LDIuMDctMS45LDYuMzhBOC42NCw4LjY0LDAsMCwwLDU1OC40LDEwM2E2LjYzLDYuNjMs MCwwLDAsNS4zNiwyLjE1QTExLjI0LDExLjI0LDAsMCwwLDU2NS4zNSwxMDVaIgorICAgICAgICAg ICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCisgICAgICAg ICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0iY2xzLTggYXBwLXRhZ2xpbmUiCisgICAgICAg ICAgICAgICAgICAgICAgICAgIGQ9Ik01NzYuNTgsODYuODdoMi43MnYxNy42OWgxMC4wOFYxMDdo LTEyLjhaIgorICAgICAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAg ICAgIDxsaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0iY2xzLTkgYXBw LW5hbWUtdW5kZXJsaW5lIgorICAgICAgICAgICAgICAgICAgICAgICAgICB4MT0iMjE5LjE3Igor ICAgICAgICAgICAgICAgICAgICAgICAgICB5MT0iNjYuNSIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgeDI9IjM4NC4xNyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeTI9IjY2LjUiCisg ICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICAgIDwvZz4KKyAg ICAgICAgICAgICAgICAgICAgPC9zdmc+CisgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAg ICAgICAgICAgICAgIDxoND4KKyAgICAgICAgICAgICAgICAgICAge2dldHRleHQoJ0ZlYXR1cmUg cmljaCcpfSB8IHtnZXR0ZXh0KCdNYXhpbWlzZXMgUG9zdGdyZVNRTCcpfXsnICd9CisgICAgICAg ICAgICAgICAgICAgIHwge2dldHRleHQoJ09wZW4gU291cmNlJyl9eycgJ30KKyAgICAgICAgICAg ICAgICAgIDwvaDQ+CisgICAgICAgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICAgICAg e2dldHRleHQoCisgICAgICAgICAgICAgICAgICAgICAgJ3BnQWRtaW4gaXMgYW4gT3BlbiBTb3Vy Y2UgYWRtaW5pc3RyYXRpb24gYW5kIG1hbmFnZW1lbnQgdG9vbCBmb3IgdGhlIFBvc3RncmVTUUwg ZGF0YWJhc2UuIEl0IGluY2x1ZGVzIGEgZ3JhcGhpY2FsIGFkbWluaXN0cmF0aW9uIGludGVyZmFj ZSwgYW4gU1FMIHF1ZXJ5IHRvb2wsIGEgcHJvY2VkdXJhbCBjb2RlIGRlYnVnZ2VyIGFuZCBtdWNo IG1vcmUuIFRoZSB0b29sIGlzIGRlc2lnbmVkIHRvIGFuc3dlciB0aGUgbmVlZHMgb2YgZGV2ZWxv cGVycywgREJBcyBhbmQgc3lzdGVtIGFkbWluaXN0cmF0b3JzIGFsaWtlLicKKyAgICAgICAgICAg ICAgICAgICAgKX0KKyAgICAgICAgICAgICAgICAgIDwvcD4KKyAgICAgICAgICAgICAgICA8L2Rp dj4KKyAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8 L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5yb3d9PgorICAgICAgICAg ICAgPGRpdiBjbGFzc05hbWU9ImNvbC0xMiI+CisgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1l PXtjbGFzc2VzLmNhcmR9PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2Vz LmNhcmRIZWFkZXJ9PntnZXR0ZXh0KCdRdWljayBMaW5rcycpfTwvZGl2PgorICAgICAgICAgICAg ICAgIDxkaXYgY2xhc3NOYW1lPSJjYXJkLWJvZHkgcC0yIj4KKyAgICAgICAgICAgICAgICAgIDxk aXYgY2xhc3NOYW1lPSJyb3ciPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0i Y29sLTYgZGFzaGJvYXJkLWxpbmsiPgorCisgICAgICAgICAgICAgICAgICAgICAgPExpbmsgdG89 IiMiIG9uQ2xpY2s9eygpID0+IHsgQWRkTmV3U2VydmVyKHBnQnJvd3Nlcik7IH19PgorICAgICAg ICAgICAgICAgICAgICAgICAgPHNwYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NO YW1lPSJmYSBmYS00eCBkYXNoYm9hcmQtaWNvbiBmYS1zZXJ2ZXIiCisgICAgICAgICAgICAgICAg ICAgICAgICAgIGFyaWEtaGlkZGVuPSJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgICAgPjwv c3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPgorICAgICAgICAgICAgICAgICAg ICAgICAge2dldHRleHQoJ0FkZCBOZXcgU2VydmVyJyl9CisgICAgICAgICAgICAgICAgICAgICAg PC9MaW5rPgorICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAg PGRpdiBjbGFzc05hbWU9ImNvbC02IGRhc2hib2FyZC1saW5rIj4KKyAgICAgICAgICAgICAgICAg ICAgICB7LyogPGEgaHJlZj0iIyIgb25DbGljaz17cGdBZG1pbi5QcmVmZXJlbmNlcy5zaG93KCl9 PiAqL30KKyAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIj4KKyAgICAgICAgICAgICAg ICAgICAgICAgIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPSJtbnVfcHJlZmVy ZW5jZXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0iZmEgZmEtNHggZGFz aGJvYXJkLWljb24gZmEtY29ncyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRk ZW49InRydWUiCisgICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPgorICAgICAgICAgICAg ICAgICAgICAgICAgPGJyIC8+CisgICAgICAgICAgICAgICAgICAgICAgICB7Z2V0dGV4dCgnQ29u ZmlndXJlIHBnQWRtaW4nKX0KKyAgICAgICAgICAgICAgICAgICAgICA8L2E+CisgICAgICAgICAg ICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAg ICAgPC9kaXY+CisgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAg ICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMucm93fT4KKyAg ICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSJjb2wtMTIiPgorICAgICAgICAgICAgICA8ZGl2IGNs YXNzTmFtZT17Y2xhc3Nlcy5jYXJkfT4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17 Y2xhc3Nlcy5jYXJkSGVhZGVyfT57Z2V0dGV4dCgnR2V0dGluZyBTdGFydGVkJyl9PC9kaXY+Cisg ICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9ImNhcmQtYm9keSBwLTIiPgorICAgICAgICAg ICAgICAgICAgPGRpdiBjbGFzc05hbWU9InJvdyI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYg Y2xhc3NOYW1lPSJjb2wtMyBkYXNoYm9hcmQtbGluayI+CisgICAgICAgICAgICAgICAgICAgICAg PGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHA6Ly93d3cucG9zdGdyZXNxbC5v cmcvZG9jcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD0icG9zdGdyZXNfaGVscCIK KyAgICAgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbgor ICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9ImZhIGZhLTR4IGRhc2hib2FyZC1p Y29uIGRhc2hib2FyZC1wZy1kb2MiCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlk ZGVuPSJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj4KKyAgICAgICAgICAg ICAgICAgICAgICAgIDxiciAvPgorICAgICAgICAgICAgICAgICAgICAgICAge2dldHRleHQoJ1Bv c3RncmVTUUwgRG9jdW1lbnRhdGlvbicpfQorICAgICAgICAgICAgICAgICAgICAgIDwvYT4KKyAg ICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NO YW1lPSJjb2wtMyBkYXNoYm9hcmQtbGluayI+CisgICAgICAgICAgICAgICAgICAgICAgPGEgaHJl Zj0iaHR0cHM6Ly93d3cucGdhZG1pbi5vcmciIHRhcmdldD0icGdhZG1pbl93ZWJzaXRlIj4KKyAg ICAgICAgICAgICAgICAgICAgICAgIDxzcGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNs YXNzTmFtZT0iZmEgZmEtNHggZGFzaGJvYXJkLWljb24gZmEtZ2xvYmUiCisgICAgICAgICAgICAg ICAgICAgICAgICAgIGFyaWEtaGlkZGVuPSJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgICAg Pjwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPgorICAgICAgICAgICAgICAg ICAgICAgICAge2dldHRleHQoJ3BnQWRtaW4gV2Vic2l0ZScpfQorICAgICAgICAgICAgICAgICAg ICAgIDwvYT4KKyAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAg IDxkaXYgY2xhc3NOYW1lPSJjb2wtMyBkYXNoYm9hcmQtbGluayI+CisgICAgICAgICAgICAgICAg ICAgICAgPGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHA6Ly9wbGFuZXQucG9z dGdyZXNxbC5vcmciCisgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9InBsYW5ldF93ZWJz aXRlIgorICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxz cGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0iZmEgZmEtNHggZGFzaGJv YXJkLWljb24gZmEtYm9vayIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49 InRydWUiCisgICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPgorICAgICAgICAgICAgICAg ICAgICAgICAgPGJyIC8+CisgICAgICAgICAgICAgICAgICAgICAgICB7Z2V0dGV4dCgnUGxhbmV0 IFBvc3RncmVTUUwnKX0KKyAgICAgICAgICAgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICAg ICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0iY29sLTMg ZGFzaGJvYXJkLWxpbmsiPgorICAgICAgICAgICAgICAgICAgICAgIDxhCisgICAgICAgICAgICAg ICAgICAgICAgICBocmVmPSJodHRwOi8vd3d3LnBvc3RncmVzcWwub3JnL2NvbW11bml0eSIKKyAg ICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD0icG9zdGdyZXNfd2Vic2l0ZSIKKyAgICAgICAg ICAgICAgICAgICAgICA+CisgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbgorICAgICAgICAg ICAgICAgICAgICAgICAgICBjbGFzc05hbWU9ImZhIGZhLTR4IGRhc2hib2FyZC1pY29uIGZhLXVz ZXJzIgorICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj0idHJ1ZSIKKyAgICAg ICAgICAgICAgICAgICAgICAgID48L3NwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICA8YnIg Lz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHtnZXR0ZXh0KCdDb21tdW5pdHkgU3VwcG9ydCcp fQorICAgICAgICAgICAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgICAgICAgICAgPC9kaXY+ CisgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAg ICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8L2Rpdj4KKyAg ICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L0Jyb3dzZXJSb3V0ZXI+CisgICk7Cit9 CisKKworV2VsY29tZURhc2hib2FyZC5wcm9wVHlwZXMgPSB7CisgIHBnQnJvd3NlcjogUHJvcFR5 cGVzLm9iamVjdC5pc1JlcXVpcmVkCit9OworCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9kYXNo Ym9hcmQvc3RhdGljL2pzL2Rhc2hib2FyZC5qcyBiL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0 aWMvanMvZGFzaGJvYXJkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTgwNzFk YTQuLjAwMDAwMDAwMAotLS0gYS93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pzL2Rhc2hi b2FyZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDEyMDkgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIHBn QWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAy MDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCi0vLyBUaGlzIHNvZnR3YXJlIGlzIHJl bGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKLS8vCi0vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1pbXBvcnQg Tm90aWZ5IGZyb20gJy4uLy4uLy4uL3N0YXRpYy9qcy9oZWxwZXJzL05vdGlmaWVyJzsKLQotZGVm aW5lKCdwZ2FkbWluLmRhc2hib2FyZCcsIFsKLSAgJ3NvdXJjZXMvdXJsX2ZvcicsICdzb3VyY2Vz L2dldHRleHQnLCAncmVxdWlyZScsICdqcXVlcnknLCAndW5kZXJzY29yZScsCi0gICdzb3VyY2Vz L3BnYWRtaW4nLCAnYmFja2JvbmUnLCAnYmFja2dyaWQnLAotICAncGdhZG1pbi5hbGVydGlmeWpz JywgJ3BnYWRtaW4uYmFja2Zvcm0nLCAnc291cmNlcy9ub2Rlcy9kYXNoYm9hcmQnLAotICAnc291 cmNlcy93aW5kb3cnLCAnLi9DaGFydHNET00nLCAncGdhZG1pbi5icm93c2VyJywgJ2Jvb3RzdHJh cCcsICd3Y2RvY2tlcicsCi1dLCBmdW5jdGlvbigKLSAgdXJsX2ZvciwgZ2V0dGV4dCwgciwgJCwg XywgcGdBZG1pbiwgQmFja2JvbmUsIEJhY2tncmlkLAotICBBbGVydGlmeSwgQmFja2Zvcm0sIE5v ZGVzRGFzaGJvYXJkLCBwZ1dpbmRvdywgQ2hhcnRzRE9NCi0pIHsKLQotICBwZ0FkbWluLkJyb3dz ZXIgPSBwZ0FkbWluLkJyb3dzZXIgfHwge307Ci0gIHZhciBwZ0Jyb3dzZXIgPSBwZ0FkbWluLkJy b3dzZXI7Ci0KLSAgLyogUmV0dXJuIGJhY2ssIHRoaXMgaGFzIGJlZW4gY2FsbGVkIG1vcmUgdGhh biBvbmNlICovCi0gIGlmIChwZ0FkbWluLkRhc2hib2FyZCkKLSAgICByZXR1cm47Ci0KLSAgdmFy IGRhc2hib2FyZFZpc2libGUgPSB0cnVlLAotICAgIGNhbmNlbF9xdWVyeV91cmwgPSAnJywKLSAg ICB0ZXJtaW5hdGVfc2Vzc2lvbl91cmwgPSAnJywKLSAgICBpc19zdXBlcl91c2VyID0gZmFsc2Us Ci0gICAgY3VycmVudF91c2VyLCBtYWludGVuYW5jZV9kYXRhYmFzZSwKLSAgICBpc19zZXJ2ZXJf ZGFzaGJvYXJkID0gZmFsc2UsCi0gICAgaXNfZGF0YWJhc2VfZGFzaGJvYXJkID0gZmFsc2UsCi0g ICAgY2FuX3NpZ25hbF9iYWNrZW5kID0gZmFsc2U7Ci0KLSAgLy8gQ3VzdG9tIEJhY2tHcmlkIGNl bGwsIFJlc3BvbnNpYmxlIGZvciBjYW5jZWxsaW5nIGFjdGl2ZSBzZXNzaW9ucwotICB2YXIgY3Vz dG9tRGFzaGJvYXJkQWN0aW9uQ2VsbCA9IEJhY2tncmlkLkV4dGVuc2lvbi5EZWxldGVDZWxsLmV4 dGVuZCh7Ci0gICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKLSAgICAgIHRoaXMuJGVsLmVtcHR5KCk7 Ci0gICAgICB2YXIgc2VsZiA9IHRoaXMsCi0gICAgICAgIGNlbGxfYWN0aW9uID0gc2VsZi5jb2x1 bW4uZ2V0KCdjZWxsX2FjdGlvbicpOwotICAgICAgLy8gaWYgY2FuY2VsIHF1ZXJ5IGJ1dHRvbiB0 aGVuCi0gICAgICBpZiAoY2VsbF9hY3Rpb24gPT09ICdjYW5jZWwnKSB7Ci0gICAgICAgIHRoaXMu JGVsLmh0bWwoCi0gICAgICAgICAgJzxpIGNsYXNzPVwnZmEgZmEtc3RvcFwnIGRhdGEtdG9nZ2xl PVwndG9vbHRpcFwnICcgKwotICAgICAgICAgICd0aXRsZT1cJycgKyBnZXR0ZXh0KCdDYW5jZWwg dGhlIGFjdGl2ZSBxdWVyeScpICsKLSAgICAgICAgICAnXCcgYXJpYS1sYWJlbD1cJycrIGdldHRl eHQoJ0NhbmNlbCB0aGUgYWN0aXZlIHF1ZXJ5JykgKydcJz48L2k+JwotICAgICAgICApOwotICAg ICAgfSBlbHNlIHsKLSAgICAgICAgdGhpcy4kZWwuaHRtbCgKLSAgICAgICAgICAnPGkgY2xhc3M9 XCdmYSBmYS10aW1lcy1jaXJjbGUgdGV4dC1kYW5nZXJcJyBkYXRhLXRvZ2dsZT1cJ3Rvb2x0aXBc JyAnICsKLSAgICAgICAgICAndGl0bGU9XCcnICsgZ2V0dGV4dCgnVGVybWluYXRlIHRoZSBzZXNz aW9uJykgKwotICAgICAgICAgICdcJyBhcmlhLWxhYmVsPVwnJysgZ2V0dGV4dCgnVGVybWluYXRl IHRoZSBzZXNzaW9uJykgKydcJz48L2k+JwotICAgICAgICApOwotICAgICAgfQotICAgICAgdGhp cy4kZWwuYXR0cigndGFiaW5kZXgnLCAwKTsKLSAgICAgIHRoaXMuJGVsLm9uKCdrZXlkb3duJywg ZnVuY3Rpb24oZSkgewotICAgICAgICAvLyB0ZXJtaW5hdGluZyBzZXNzaW9uIG9yIGNhbmNlbCB0 aGUgYWN0aXZlIHF1ZXJ5LgotICAgICAgICBpZiAoZS5rZXlDb2RlID09IDMyKSB7Ci0gICAgICAg ICAgc2VsZi4kZWwuY2xpY2soKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgICB0aGlzLmRl bGVnYXRlRXZlbnRzKCk7Ci0gICAgICByZXR1cm4gdGhpczsKLSAgICB9LAotICAgIGRlbGV0ZVJv dzogZnVuY3Rpb24oZSkgewotICAgICAgdmFyIHNlbGYgPSB0aGlzLAotICAgICAgICB0aXRsZSwg dHh0Q29uZmlybSwgdHh0U3VjY2VzcywgdHh0RXJyb3IsIGFjdGlvbl91cmwsCi0gICAgICAgIGNl bGxfYWN0aW9uID0gc2VsZi5jb2x1bW4uZ2V0KCdjZWxsX2FjdGlvbicpOwotCi0gICAgICBlLnBy ZXZlbnREZWZhdWx0KCk7Ci0KLSAgICAgIHZhciBjYW5EZWxldGVSb3cgPSBCYWNrZ3JpZC5jYWxs QnlOZWVkKAotICAgICAgICBzZWxmLmNvbHVtbi5nZXQoJ2NhbkRlbGV0ZVJvdycpLCBzZWxmLmNv bHVtbiwgc2VsZi5tb2RlbAotICAgICAgKTsKLSAgICAgIC8vIElmIHdlIGFyZSBub3QgYWxsb3dl ZCB0byBjYW5jZWwgdGhlIHF1ZXJ5LCByZXR1cm4gZnJvbSBoZXJlCi0gICAgICBpZiAoIWNhbkRl bGV0ZVJvdykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgICAvLyBUaGlzIHdpbGwgcmVmcmVzaCB0 aGUgZ3JpZAotICAgICAgbGV0IHJlZnJlc2hfZ3JpZCA9ICgpID0+IHsKLSAgICAgICAgJCgnI2J0 bl9yZWZyZXNoJykudHJpZ2dlcignY2xpY2snKTsKLSAgICAgIH07Ci0KLSAgICAgIGlmIChjZWxs X2FjdGlvbiA9PT0gJ2NhbmNlbCcpIHsKLSAgICAgICAgdGl0bGUgPSBnZXR0ZXh0KCdDYW5jZWwg QWN0aXZlIFF1ZXJ5PycpOwotICAgICAgICB0eHRDb25maXJtID0gZ2V0dGV4dCgnQXJlIHlvdSBz dXJlIHlvdSB3aXNoIHRvIGNhbmNlbCB0aGUgYWN0aXZlIHF1ZXJ5PycpOwotICAgICAgICB0eHRT dWNjZXNzID0gZ2V0dGV4dCgnQWN0aXZlIHF1ZXJ5IGNhbmNlbGxlZCBzdWNjZXNzZnVsbHkuJyk7 Ci0gICAgICAgIHR4dEVycm9yID0gZ2V0dGV4dCgnQW4gZXJyb3Igb2NjdXJyZWQgd2hpbHN0IGNh bmNlbGxpbmcgdGhlIGFjdGl2ZSBxdWVyeS4nKTsKLSAgICAgICAgYWN0aW9uX3VybCA9IGNhbmNl bF9xdWVyeV91cmwgKyBzZWxmLm1vZGVsLmdldCgncGlkJyk7Ci0gICAgICB9IGVsc2UgewotICAg ICAgICB0aXRsZSA9IGdldHRleHQoJ1Rlcm1pbmF0ZSBTZXNzaW9uPycpOwotICAgICAgICB0eHRD b25maXJtID0gZ2V0dGV4dCgnQXJlIHlvdSBzdXJlIHlvdSB3aXNoIHRvIHRlcm1pbmF0ZSB0aGUg c2Vzc2lvbj8nKTsKLSAgICAgICAgdHh0U3VjY2VzcyA9IGdldHRleHQoJ1Nlc3Npb24gdGVybWlu YXRlZCBzdWNjZXNzZnVsbHkuJyk7Ci0gICAgICAgIHR4dEVycm9yID0gZ2V0dGV4dCgnQW4gZXJy b3Igb2NjdXJyZWQgd2hpbHN0IHRlcm1pbmF0aW5nIHRoZSBhY3RpdmUgcXVlcnkuJyk7Ci0gICAg ICAgIGFjdGlvbl91cmwgPSB0ZXJtaW5hdGVfc2Vzc2lvbl91cmwgKyBzZWxmLm1vZGVsLmdldCgn cGlkJyk7Ci0gICAgICB9Ci0KLSAgICAgIE5vdGlmeS5jb25maXJtKAotICAgICAgICB0aXRsZSwg dHh0Q29uZmlybSwKLSAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgJC5hamF4KHsKLSAg ICAgICAgICAgIHVybDogYWN0aW9uX3VybCwKLSAgICAgICAgICAgIHR5cGU6ICdERUxFVEUnLAot ICAgICAgICAgIH0pCi0gICAgICAgICAgICAuZG9uZShmdW5jdGlvbihyZXMpIHsKLSAgICAgICAg ICAgICAgaWYgKHJlcyA9PSBnZXR0ZXh0KCdTdWNjZXNzJykpIHsKLSAgICAgICAgICAgICAgICBO b3RpZnkuc3VjY2Vzcyh0eHRTdWNjZXNzKTsKLSAgICAgICAgICAgICAgICByZWZyZXNoX2dyaWQo KTsKLSAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBOb3RpZnkuZXJyb3Io dHh0RXJyb3IpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KQotICAgICAgICAgICAg LmZhaWwoZnVuY3Rpb24oeGhyLCBzdGF0dXMsIGVycm9yKSB7Ci0gICAgICAgICAgICAgIE5vdGlm eS5wZ1Jlc3BFcnJvck5vdGlmeSh4aHIsIGVycm9yKTsKLSAgICAgICAgICAgIH0pOwotICAgICAg ICB9LAotICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg ICAgfQotICAgICAgKTsKLSAgICB9LAotICB9KTsKLQotCi0gIC8vIFN1Ym5vZGUgQ2VsbCwgd2hp Y2ggd2lsbCBkaXNwbGF5IHN1Ym5vZGUgY29udHJvbAotICB2YXIgU2Vzc2lvbkRldGFpbHNDZWxs ID0gQmFja2dyaWQuRXh0ZW5zaW9uLk9iamVjdENlbGwuZXh0ZW5kKHsKLSAgICBlbnRlckVkaXRN b2RlOiBmdW5jdGlvbigpIHsKLSAgICAgIC8vIE5vdGlmeSB0aGF0IHdlIGFyZSBhYm91dCB0byBl bnRlciBpbiBlZGl0IG1vZGUgZm9yIGN1cnJlbnQgY2VsbC4KLSAgICAgIHRoaXMubW9kZWwudHJp Z2dlcignZW50ZXJpbmdFZGl0TW9kZScsIFt0aGlzXSk7Ci0KLSAgICAgIEJhY2tncmlkLkNlbGwu cHJvdG90eXBlLmVudGVyRWRpdE1vZGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgICAgIC8q IE1ha2Ugc3VyZSAtIHdlIGxpc3RlbiB0byB0aGUgY2xpY2sgZXZlbnQgKi8KLSAgICAgIHRoaXMu ZGVsZWdhdGVFdmVudHMoKTsKLSAgICAgIHZhciBlZGl0YWJsZSA9IEJhY2tncmlkLmNhbGxCeU5l ZWQodGhpcy5jb2x1bW4uZWRpdGFibGUoKSwgdGhpcy5jb2x1bW4sIHRoaXMubW9kZWwpOwotCi0g ICAgICBpZiAoZWRpdGFibGUpIHsKLSAgICAgICAgdGhpcy4kZWwuaHRtbCgKLSAgICAgICAgICAn PGkgY2xhc3M9XCdmYSBmYS1jYXJldC1kb3duIHN1Ym5vZGUtZWRpdC1pbi1wcm9jZXNzXCc+PC9p PicKLSAgICAgICAgKTsKLSAgICAgICAgdGhpcy5tb2RlbC50cmlnZ2VyKAotICAgICAgICAgICdw Zy1zdWItbm9kZTpvcGVuZWQnLCB0aGlzLm1vZGVsLCB0aGlzCi0gICAgICAgICk7Ci0gICAgICB9 Ci0gICAgfSwKLSAgICByZW5kZXI6IGZ1bmN0aW9uKCkgewotICAgICAgdGhpcy4kZWwuZW1wdHko KTsKLSAgICAgIHRoaXMuJGVsLmh0bWwoCi0gICAgICAgICc8aSBjbGFzcz1cJ2ZhIGZhLWNhcmV0 LXJpZ2h0XCcgZGF0YS10b2dnbGU9XCd0b29sdGlwXCcgJyArCi0gICAgICAgICd0aXRsZT1cJycg KyBnZXR0ZXh0KCdWaWV3IHRoZSBhY3RpdmUgc2Vzc2lvbiBkZXRhaWxzJykgKwotICAgICAgICAn XCcgYXJpYS1sYWJlbD1cJycrIGdldHRleHQoJ1ZpZXcgdGhlIGFjdGl2ZSBzZXNzaW9uIGRldGFp bHMnKSArJ1wnPjwvaT4nCi0gICAgICApOwotICAgICAgdGhpcy5kZWxlZ2F0ZUV2ZW50cygpOwot ICAgICAgaWYgKHRoaXMuZ3JhYkZvY3VzKQotICAgICAgICB0aGlzLiRlbC50cmlnZ2VyKCdmb2N1 cycpOwotICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfSwKLSAgfSk7Ci0KLSAgLy8gU3Vibm9kZSBN b2RlbAotICB2YXIgQWN0aXZlUXVlcnlEZXRhaWxzTW9kZWwgPSBCYWNrYm9uZS5Nb2RlbC5leHRl bmQoewotICAgIGRlZmF1bHRzOiB7Ci0gICAgICB2ZXJzaW9uOiBudWxsLAotICAgICAgLyogUG9z dGdyZXMgdmVyc2lvbiAqLwotICAgIH0sCi0gICAgc2NoZW1hOiBbewotICAgICAgaWQ6ICdiYWNr ZW5kX3R5cGUnLAotICAgICAgbGFiZWw6IGdldHRleHQoJ0JhY2tlbmQgdHlwZScpLAotICAgICAg dHlwZTogJ3RleHQnLAotICAgICAgZWRpdGFibGU6IHRydWUsCi0gICAgICByZWFkb25seTogdHJ1 ZSwKLSAgICAgIGdyb3VwOiBnZXR0ZXh0KCdEZXRhaWxzJyksCi0gICAgICB2aXNpYmxlOiBmdW5j dGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudmVyc2lvbiA+PSAxMDAwMDA7Ci0gICAgICB9 LAotICAgIH0sIHsKLSAgICAgIGlkOiAncXVlcnlfc3RhcnQnLAotICAgICAgbGFiZWw6IGdldHRl eHQoJ1F1ZXJ5IHN0YXJ0ZWQgYXQnKSwKLSAgICAgIHR5cGU6ICd0ZXh0JywKLSAgICAgIGVkaXRh YmxlOiBmYWxzZSwKLSAgICAgIHJlYWRvbmx5OiB0cnVlLAotICAgICAgZ3JvdXA6IGdldHRleHQo J0RldGFpbHMnKSwKLSAgICB9LCB7Ci0gICAgICBpZDogJ3N0YXRlX2NoYW5nZScsCi0gICAgICBs YWJlbDogZ2V0dGV4dCgnTGFzdCBzdGF0ZSBjaGFuZ2VkIGF0JyksCi0gICAgICB0eXBlOiAndGV4 dCcsCi0gICAgICBlZGl0YWJsZTogdHJ1ZSwKLSAgICAgIHJlYWRvbmx5OiB0cnVlLAotICAgICAg Z3JvdXA6IGdldHRleHQoJ0RldGFpbHMnKSwKLSAgICB9LCB7Ci0gICAgICBpZDogJ3F1ZXJ5JywK LSAgICAgIGxhYmVsOiBnZXR0ZXh0KCdTUUwnKSwKLSAgICAgIHR5cGU6ICd0ZXh0JywKLSAgICAg IGVkaXRhYmxlOiB0cnVlLAotICAgICAgcmVhZG9ubHk6IHRydWUsCi0gICAgICBjb250cm9sOiBC YWNrZm9ybS5TcWxGaWVsZENvbnRyb2wsCi0gICAgICBncm91cDogZ2V0dGV4dCgnRGV0YWlscycp LAotICAgIH1dLAotICB9KTsKLQotICBwZ0FkbWluLkRhc2hib2FyZCA9IHsKLSAgICBpbml0OiBm dW5jdGlvbigpIHsKLSAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQotICAgICAgICByZXR1cm47 Ci0KLSAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgICAgdGhpcy5jaGFydHNEb21P YmogPSBudWxsOwotCi0gICAgICB0aGlzLnNpZCA9IHRoaXMuZGlkID0gLTE7Ci0gICAgICB0aGlz LnZlcnNpb24gPSAtMTsKLQotCi0gICAgICAvLyBCaW5kIHRoZSBEYXNoYm9hcmQgb2JqZWN0IHdp dGggdGhlICdvYmplY3Rfc2VsZWN0ZWQnIGZ1bmN0aW9uCi0gICAgICB2YXIgc2VsZWN0ZWQgPSB0 aGlzLm9iamVjdF9zZWxlY3RlZC5iaW5kKHRoaXMpOwotICAgICAgdmFyIGRpc2Nvbm5lY3RlZCA9 IHRoaXMub2JqZWN0X2Rpc2Nvbm5lY3RlZC5iaW5kKHRoaXMpOwotCi0gICAgICAvLyBMaXN0ZW4g Zm9yIHNlbGVjdGlvbiBvZiBhbnkgb2Ygb2JqZWN0Ci0gICAgICBwZ0Jyb3dzZXIuRXZlbnRzLm9u KCdwZ2FkbWluLWJyb3dzZXI6dHJlZTpzZWxlY3RlZCcsIHNlbGVjdGVkKTsKLQotICAgICAgLy8g TGlzdGVuIGZvciBzZXJ2ZXIgZGlzY29ubmVjdGVkIGV2ZW50Ci0gICAgICBwZ0Jyb3dzZXIuRXZl bnRzLm9uKCdwZ2FkbWluOnNlcnZlcjpkaXNjb25uZWN0JywgZGlzY29ubmVjdGVkKTsKLQotICAg ICAgLy8gTG9hZCB0aGUgZGVmYXVsdCB3ZWxjb21lIGRhc2hib2FyZAotICAgICAgdmFyIHVybCA9 IHVybF9mb3IoJ2Rhc2hib2FyZC5pbmRleCcpOwotCi0gICAgICB2YXIgZGFzaGJvYXJkUGFuZWwg PSBwZ0Jyb3dzZXIucGFuZWxzWydkYXNoYm9hcmQnXS5wYW5lbDsKLSAgICAgIGlmIChkYXNoYm9h cmRQYW5lbCkgewotICAgICAgICB2YXIgZGl2ID0gZGFzaGJvYXJkUGFuZWwubGF5b3V0KCkuc2Nl bmUoKS5maW5kKCcucGctcGFuZWwtY29udGVudCcpOwotICAgICAgICBpZiAoZGl2KSB7Ci0gICAg ICAgICAgdmFyIGFqYXhIb29rID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAkLmFqYXgoewot ICAgICAgICAgICAgICB1cmw6IHVybCwKLSAgICAgICAgICAgICAgdHlwZTogJ0dFVCcsCi0gICAg ICAgICAgICAgIGRhdGFUeXBlOiAnaHRtbCcsCi0gICAgICAgICAgICB9KQotICAgICAgICAgICAg ICAuZG9uZShmdW5jdGlvbihkYXRhKSB7Ci0gICAgICAgICAgICAgICAgJChkaXYpLmh0bWwoZGF0 YSk7Ci0gICAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAgIC5mYWlsKGZ1bmN0aW9uKHhociwg ZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBzZWxmLm9uRmFpbCh4aHIsIGVycm9yLCBkaXYsIGFq YXhIb29rKTsKLSAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgfTsKLSAgICAgICAgICAkKGRp dikuaHRtbCgKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJwZy1wYW5lbC1tZXNzYWdlIiByb2xl PSJhbGVydCI+JyArIGdldHRleHQoJ0xvYWRpbmcgZGFzaGJvYXJkLi4uJykgKyAnPC9kaXY+Jwot ICAgICAgICAgICk7Ci0gICAgICAgICAgYWpheEhvb2soKTsKLQotICAgICAgICAgIC8vIENhY2hl IHRoZSBjdXJyZW50IElEcyBmb3IgbmV4dCB0aW1lCi0gICAgICAgICAgJChkYXNoYm9hcmRQYW5l bCkuZGF0YSgnc2lkJywgLTEpOwotICAgICAgICAgICQoZGFzaGJvYXJkUGFuZWwpLmRhdGEoJ2Rp ZCcsIC0xKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0sCi0KLSAgICBvbkZhaWw6IGZ1bmN0 aW9uKHhociwgZXJyb3IsIGRpdiwgYWpheEhvb2spIHsKLSAgICAgIE5vdGlmeS5wZ05vdGlmaWVy KAotICAgICAgICBlcnJvciwgeGhyLAotICAgICAgICBnZXR0ZXh0KCdBbiBlcnJvciBvY2N1cnJl ZCB3aGlsc3QgbG9hZGluZyB0aGUgZGFzaGJvYXJkLicpLAotICAgICAgICBmdW5jdGlvbihtc2cp IHsKLSAgICAgICAgICBpZihtc2cgPT09ICdDUllQVEtFWV9TRVQnKSB7Ci0gICAgICAgICAgICBh amF4SG9vaygpOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkKGRpdikuaHRtbCgK LSAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InBnLXBhbmVsLW1lc3NhZ2UiIHJvbGU9ImFsZXJ0 Ij4nICsgZ2V0dGV4dCgnQW4gZXJyb3Igb2NjdXJyZWQgd2hpbHN0IGxvYWRpbmcgdGhlIGRhc2hi b2FyZC4nKSArICc8L2Rpdj4nCi0gICAgICAgICAgICApOwotICAgICAgICAgIH0KLSAgICAgICAg fQotICAgICAgKTsKLSAgICB9LAotCi0gICAgLy8gSGFuZGxlIFNlcnZlciBEaXNjb25uZWN0Ci0g ICAgb2JqZWN0X2Rpc2Nvbm5lY3RlZDogZnVuY3Rpb24oKSB7Ci0gICAgICBsZXQgaXRlbSA9IHBn QnJvd3Nlci50cmVlLnNlbGVjdGVkKCksCi0gICAgICAgIGl0ZW1EYXRhID0gaXRlbSAmJiBwZ0Jy b3dzZXIudHJlZS5pdGVtRGF0YShpdGVtKTsKLQotICAgICAgLy8gVGhlIHNlcnZlciBjb25uZWN0 ZWQgbWF5IG5vdCBiZSB0aGUgc2FtZSBvbmUsIHdoaWNoIHdhcyBzZWxlY3RlZCwgYW5kCi0gICAg ICAvLyB3ZSBkbyBjYXJlIG91dCB0aGUgY3VycmVudCBzZWxlY3RlZCBvbmUgb25seS4KLSAgICAg IGlmIChpdGVtLmxlbmd0aCAhPSAwKSB7Ci0gICAgICAgIHRoaXMub2JqZWN0X3NlbGVjdGVkKGl0 ZW0sIGl0ZW1EYXRhKTsKLSAgICAgIH0KLSAgICB9LAotCi0gICAgLy8gSGFuZGxlIHRyZWV2aWV3 IGNsaWNrcwotICAgIG9iamVjdF9zZWxlY3RlZDogZnVuY3Rpb24oaXRlbSwgaXRlbURhdGEpIHsK LSAgICAgIGxldCBzZWxmID0gdGhpczsKLQotICAgICAgaWYgKGl0ZW1EYXRhICYmIGl0ZW1EYXRh Ll90eXBlKSB7Ci0gICAgICAgIHZhciB0cmVlSGllcmFyY2h5ID0gcGdCcm93c2VyLnRyZWUuZ2V0 VHJlZU5vZGVIaWVyYXJjaHkoaXRlbSksCi0gICAgICAgICAgdXJsID0gTm9kZXNEYXNoYm9hcmQu dXJsKGl0ZW1EYXRhLCBpdGVtLCB0cmVlSGllcmFyY2h5KTsKLQotICAgICAgICBpZiAodXJsID09 PSBudWxsKSB7Ci0gICAgICAgICAgdXJsID0gdXJsX2ZvcignZGFzaGJvYXJkLmluZGV4Jyk7Ci0g ICAgICAgICAgc2VsZi52ZXJzaW9uID0gKHRyZWVIaWVyYXJjaHkuc2VydmVyICYmIHRyZWVIaWVy YXJjaHkuc2VydmVyLnZlcnNpb24pIHx8IDA7Ci0KLSAgICAgICAgICBjYW5jZWxfcXVlcnlfdXJs ID0gdXJsICsgJ2NhbmNlbF9xdWVyeS8nOwotICAgICAgICAgIHRlcm1pbmF0ZV9zZXNzaW9uX3Vy bCA9IHVybCArICd0ZXJtaW5hdGVfc2Vzc2lvbi8nOwotCi0gICAgICAgICAgLy8gQ2hlY2sgaWYg dXNlciBpcyBzdXBlciB1c2VyCi0gICAgICAgICAgdmFyIHNlcnZlciA9IHRyZWVIaWVyYXJjaHlb J3NlcnZlciddOwotICAgICAgICAgIG1haW50ZW5hbmNlX2RhdGFiYXNlID0gKHNlcnZlciAmJiBz ZXJ2ZXIuZGIpIHx8IG51bGw7Ci0gICAgICAgICAgY2FuX3NpZ25hbF9iYWNrZW5kID0gKHNlcnZl ciAmJiBzZXJ2ZXIudXNlcikgPyBzZXJ2ZXIudXNlci5jYW5fc2lnbmFsX2JhY2tlbmQgOiBmYWxz ZTsKLQotICAgICAgICAgIGlmIChzZXJ2ZXIgJiYgc2VydmVyLnVzZXIgJiYgc2VydmVyLnVzZXIu aXNfc3VwZXJ1c2VyKSB7Ci0gICAgICAgICAgICBpc19zdXBlcl91c2VyID0gdHJ1ZTsKLSAgICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgaXNfc3VwZXJfdXNlciA9IGZhbHNlOwotICAgICAg ICAgICAgLy8gU2V0IGN1cnJlbnQgdXNlcgotICAgICAgICAgICAgY3VycmVudF91c2VyID0gKHNl cnZlciAmJiBzZXJ2ZXIudXNlcikgPyBzZXJ2ZXIudXNlci5uYW1lIDogbnVsbDsKLSAgICAgICAg ICB9Ci0KLSAgICAgICAgICBpZiAoJ2RhdGFiYXNlJyBpbiB0cmVlSGllcmFyY2h5KSB7Ci0gICAg ICAgICAgICBzZWxmLnNpZCA9IHRyZWVIaWVyYXJjaHkuc2VydmVyLl9pZDsKLSAgICAgICAgICAg IHNlbGYuZGlkID0gdHJlZUhpZXJhcmNoeS5kYXRhYmFzZS5faWQ7Ci0gICAgICAgICAgICBpc19z ZXJ2ZXJfZGFzaGJvYXJkID0gZmFsc2U7Ci0gICAgICAgICAgICBpc19kYXRhYmFzZV9kYXNoYm9h cmQgPSB0cnVlOwotICAgICAgICAgICAgdXJsICs9IHNlbGYuc2lkICsgJy8nICsgc2VsZi5kaWQ7 Ci0gICAgICAgICAgICBjYW5jZWxfcXVlcnlfdXJsICs9IHNlbGYuc2lkICsgJy8nICsgc2VsZi5k aWQgKyAnLyc7Ci0gICAgICAgICAgICB0ZXJtaW5hdGVfc2Vzc2lvbl91cmwgKz0gc2VsZi5zaWQg KyAnLycgKyBzZWxmLmRpZCArICcvJzsKLSAgICAgICAgICB9IGVsc2UgaWYgKCdzZXJ2ZXInIGlu IHRyZWVIaWVyYXJjaHkpIHsKLSAgICAgICAgICAgIHNlbGYuc2lkID0gdHJlZUhpZXJhcmNoeS5z ZXJ2ZXIuX2lkOwotICAgICAgICAgICAgc2VsZi5kaWQgPSAtMTsKLSAgICAgICAgICAgIGlzX3Nl cnZlcl9kYXNoYm9hcmQgPSB0cnVlOwotICAgICAgICAgICAgaXNfZGF0YWJhc2VfZGFzaGJvYXJk ID0gZmFsc2U7Ci0gICAgICAgICAgICB1cmwgKz0gc2VsZi5zaWQ7Ci0gICAgICAgICAgICBjYW5j ZWxfcXVlcnlfdXJsICs9IHNlbGYuc2lkICsgJy8nOwotICAgICAgICAgICAgdGVybWluYXRlX3Nl c3Npb25fdXJsICs9IHNlbGYuc2lkICsgJy8nOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg ICAgICBpc19zZXJ2ZXJfZGFzaGJvYXJkID0gaXNfZGF0YWJhc2VfZGFzaGJvYXJkID0gZmFsc2U7 Ci0gICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGlzX3NlcnZlcl9kYXNo Ym9hcmQgPSBpc19kYXRhYmFzZV9kYXNoYm9hcmQgPSBmYWxzZTsKLSAgICAgICAgfQotCi0gICAg ICAgIHZhciBkYXNoYm9hcmRQYW5lbCA9IHBnQnJvd3Nlci5wYW5lbHNbJ2Rhc2hib2FyZCddLnBh bmVsOwotICAgICAgICBpZiAoZGFzaGJvYXJkUGFuZWwpIHsKLSAgICAgICAgICB2YXIgZGl2ID0g ZGFzaGJvYXJkUGFuZWwubGF5b3V0KCkuc2NlbmUoKS5maW5kKAotICAgICAgICAgICAgJy5wZy1w YW5lbC1jb250ZW50JwotICAgICAgICAgICk7Ci0KLSAgICAgICAgICBpZiAoZGl2KSB7Ci0gICAg ICAgICAgICBpZiAoaXRlbURhdGEuY29ubmVjdGVkIHx8IF8uaXNVbmRlZmluZWQoaXRlbURhdGEu Y29ubmVjdGVkKSkgewotICAgICAgICAgICAgICAvLyBBdm9pZCB1bm5lY2Vzc2FyeSByZWxvYWRz Ci0gICAgICAgICAgICAgIGlmICgKLSAgICAgICAgICAgICAgICB1cmwgIT09ICQoZGFzaGJvYXJk UGFuZWwpLmRhdGEoJ2Rhc2hib2FyZF91cmwnKSB8fCAoCi0gICAgICAgICAgICAgICAgICB1cmwg PT09ICQoZGFzaGJvYXJkUGFuZWwpLmRhdGEoJ2Rhc2hib2FyZF91cmwnKSAmJgotICAgICAgICAg ICAgICAgICAgJChkYXNoYm9hcmRQYW5lbCkuZGF0YSgnc2VydmVyX3N0YXR1cycpID09IGZhbHNl Ci0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICApIHsKLSAgICAgICAgICAgICAgICB0 aGlzLmNoYXJ0c0RvbU9iaiAmJiB0aGlzLmNoYXJ0c0RvbU9iai51bm1vdW50KCk7Ci0gICAgICAg ICAgICAgICAgJChkaXYpLmVtcHR5KCk7Ci0KLSAgICAgICAgICAgICAgICBsZXQgYWpheEhvb2sg PSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICQuYWpheCh7Ci0gICAgICAgICAgICAg ICAgICAgIHVybDogdXJsLAotICAgICAgICAgICAgICAgICAgICB0eXBlOiAnR0VUJywKLSAgICAg ICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdodG1sJywKLSAgICAgICAgICAgICAgICAgIH0pCi0g ICAgICAgICAgICAgICAgICAgIC5kb25lKGZ1bmN0aW9uKGRhdGEpIHsKLSAgICAgICAgICAgICAg ICAgICAgICAkKGRpdikuaHRtbChkYXRhKTsKLSAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlu aXRfZGFzaGJvYXJkKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAgICAg ICAgIC5mYWlsKGZ1bmN0aW9uKHhociwgZXJyb3IpIHsKLSAgICAgICAgICAgICAgICAgICAgICBz ZWxmLm9uRmFpbCh4aHIsIGVycm9yLCBkaXYsIGFqYXhIb29rKTsKLSAgICAgICAgICAgICAgICAg ICAgfSk7Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAkKGRpdikuaHRtbCgK LSAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJwZy1wYW5lbC1tZXNzYWdlIiByb2xlPSJh bGVydCI+JyArIGdldHRleHQoJ0xvYWRpbmcgZGFzaGJvYXJkLi4uJykgKyAnPC9kaXY+JwotICAg ICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgYWpheEhvb2soKTsKLSAgICAgICAgICAg ICAgICAkKGRhc2hib2FyZFBhbmVsKS5kYXRhKCdzZXJ2ZXJfc3RhdHVzJywgdHJ1ZSk7Ci0gICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHRoaXMuY2hh cnRzRG9tT2JqICYmIHRoaXMuY2hhcnRzRG9tT2JqLnVubW91bnQoKTsKLSAgICAgICAgICAgICAg JChkaXYpLmh0bWwoCi0gICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InBnLXBhbmVsLW1lc3Nh Z2UiIHJvbGU9ImFsZXJ0Ij4nICsgZ2V0dGV4dCgnUGxlYXNlIGNvbm5lY3QgdG8gdGhlIHNlbGVj dGVkIHNlcnZlciB0byB2aWV3IHRoZSBkYXNoYm9hcmQuJykgKyAnPC9kaXY+JwotICAgICAgICAg ICAgICApOwotICAgICAgICAgICAgICAkKGRhc2hib2FyZFBhbmVsKS5kYXRhKCdzZXJ2ZXJfc3Rh dHVzJywgZmFsc2UpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gQ2FjaGUgdGhlIGN1 cnJlbnQgSURzIGZvciBuZXh0IHRpbWUKLSAgICAgICAgICAgICQoZGFzaGJvYXJkUGFuZWwpLmRh dGEoJ2Rhc2hib2FyZF91cmwnLCB1cmwpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg fQotICAgIH0sCi0KLSAgICAvLyBIYW5kbGVyIGZ1bmN0aW9uIHRvIHN1cHBvcnQgdGhlICJBZGQg U2VydmVyIiBsaW5rCi0gICAgYWRkX25ld19zZXJ2ZXI6IGZ1bmN0aW9uKCkgewotICAgICAgaWYg KHBnQnJvd3NlciAmJiBwZ0Jyb3dzZXIudHJlZSkgewotICAgICAgICB2YXIgaSA9IF8uaXNVbmRl ZmluZWQocGdCcm93c2VyLnRyZWUuc2VsZWN0ZWQoKSkgPwotICAgICAgICAgICAgcGdCcm93c2Vy LnRyZWUuZmlyc3QobnVsbCwgZmFsc2UpOgotICAgICAgICAgICAgcGdCcm93c2VyLnRyZWUuc2Vs ZWN0ZWQoKSwKLSAgICAgICAgICBzZXJ2ZXJNb2R1bGUgPSByZXF1aXJlKCdwZ2FkbWluLm5vZGUu c2VydmVyJyksCi0gICAgICAgICAgaXRlbURhdGEgPSBwZ0Jyb3dzZXIudHJlZS5pdGVtRGF0YShp KTsKLQotICAgICAgICB3aGlsZSAoaXRlbURhdGEgJiYgaXRlbURhdGEuX3R5cGUgIT0gJ3NlcnZl cl9ncm91cCcpIHsKLSAgICAgICAgICBpID0gcGdCcm93c2VyLnRyZWUubmV4dChpKTsKLSAgICAg ICAgICBpdGVtRGF0YSA9IHBnQnJvd3Nlci50cmVlLml0ZW1EYXRhKGkpOwotICAgICAgICB9Ci0K LSAgICAgICAgaWYgKCFpdGVtRGF0YSkgewotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot Ci0gICAgICAgIGlmIChzZXJ2ZXJNb2R1bGUpIHsKLSAgICAgICAgICBzZXJ2ZXJNb2R1bGUuY2Fs bGJhY2tzLnNob3dfb2JqX3Byb3BlcnRpZXMuYXBwbHkoCi0gICAgICAgICAgICBzZXJ2ZXJNb2R1 bGUsIFt7Ci0gICAgICAgICAgICAgIGFjdGlvbjogJ2NyZWF0ZScsCi0gICAgICAgICAgICB9LCBp XQotICAgICAgICAgICk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9LAotCi0gICAgLy8gUmVu ZGVyIGEgZ3JpZAotICAgIHJlbmRlcl9ncmlkOiBmdW5jdGlvbihjb250YWluZXIsIHVybCwgY29s dW1ucykgewotICAgICAgdmFyIERhdHVtID0gQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHt9KSwKLSAg ICAgICAgc2VsZiA9IHRoaXM7Ci0KLSAgICAgIHZhciBwYXRoID0gdXJsICsgc2VsZi5zaWQ7Ci0g ICAgICBpZiAoc2VsZi5kaWQgIT0gLTEpIHsKLSAgICAgICAgcGF0aCArPSAnLycgKyBzZWxmLmRp ZDsKLSAgICAgIH0KLQotICAgICAgdmFyIERhdGEgPSBCYWNrYm9uZS5Db2xsZWN0aW9uLmV4dGVu ZCh7Ci0gICAgICAgIG1vZGVsOiBEYXR1bSwKLSAgICAgICAgdXJsOiBwYXRoLAotICAgICAgICBt b2RlOiAnY2xpZW50JywKLSAgICAgIH0pOwotCi0gICAgICB2YXIgZGF0YSA9IG5ldyBEYXRhKCk7 Ci0KLSAgICAgIHZhciBIaWdobGlnaHRlZFJvdyA9IEJhY2tncmlkLlJvdy5leHRlbmQoewotICAg ICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgewotICAgICAgICAgIEJhY2tncmlkLlJvdy5wcm90b3R5 cGUucmVuZGVyLmNhbGwodGhpcyk7Ci0gICAgICAgICAgdmFyIHJvd190eXBlID0gdGhpcy5tb2Rl bC5nZXQoJ3Jvd190eXBlJyk7Ci0KLSAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChyb3dfdHlw ZSkgfHwgXy5pc051bGwocm93X3R5cGUpKSB7Ci0gICAgICAgICAgICB0aGlzLiRlbC5yZW1vdmVD bGFzcygnYWxlcnQnKTsKLSAgICAgICAgICAgIHRoaXMuJGVsLnJlbW92ZUNsYXNzKCd3YXJuaW5n Jyk7Ci0gICAgICAgICAgfSBlbHNlIGlmIChyb3dfdHlwZSA9PT0gJ3dhcm5pbmcnKSB7Ci0gICAg ICAgICAgICB0aGlzLiRlbC5hZGRDbGFzcygnd2FybmluZycpOwotICAgICAgICAgIH0gZWxzZSBp ZiAocm93X3R5cGUgPT09ICdhbGVydCcpIHsKLSAgICAgICAgICAgIHRoaXMuJGVsLmFkZENsYXNz KCdhbGVydCcpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAg ICB9Ci0gICAgICB9KTsKLQotICAgICAgLy8gU2V0IHVwIHRoZSBncmlkCi0gICAgICB2YXIgZ3Jp ZCA9IG5ldyBCYWNrZ3JpZC5HcmlkKHsKLSAgICAgICAgZW1wdHlUZXh0OiBnZXR0ZXh0KCdObyBk YXRhIGZvdW5kJyksCi0gICAgICAgIGNvbHVtbnM6IGNvbHVtbnMsCi0gICAgICAgIGNvbGxlY3Rp b246IGRhdGEsCi0gICAgICAgIGNsYXNzTmFtZTogJ2JhY2tncmlkIHByZXNlbnRhdGlvbiB0YWJs ZSB0YWJsZS1ib3JkZXJlZCB0YWJsZS1ub291dGVyLWJvcmRlciB0YWJsZS1ob3ZlcicsCi0gICAg ICAgIHJvdzogSGlnaGxpZ2h0ZWRSb3cKLSAgICAgIH0pOwotCi0gICAgICAvLyBSZW5kZXIgdGhl IGdyaWQKLSAgICAgICQoY29udGFpbmVyKS5lbXB0eSgpOwotICAgICAgJChjb250YWluZXIpLmFw cGVuZChncmlkLnJlbmRlcigpLmVsKTsKLQotICAgICAgLy8gSW5pdGlhbGl6ZSBhIGNsaWVudC1z aWRlIGZpbHRlciB0byBmaWx0ZXIgb24gdGhlIGNsaWVudAotICAgICAgLy8gbW9kZSBwYWdlYWJs ZSBjb2xsZWN0aW9uJ3MgY2FjaGUuCi0gICAgICB2YXIgZmlsdGVyID0gbmV3IEJhY2tncmlkLkV4 dGVuc2lvbi5DbGllbnRTaWRlRmlsdGVyKHsKLSAgICAgICAgY29sbGVjdGlvbjogZGF0YSwKLSAg ICAgIH0pOwotCi0gICAgICBmaWx0ZXIuc2V0Q3VzdG9tU2VhcmNoQm94KCQoJyN0eHRHcmlkU2Vh cmNoJykpOwotICAgICAgLy8gU3Rhc2ggb2JqZWN0cyBmb3IgZnV0dXJlIHVzZQotICAgICAgJChj b250YWluZXIpLmRhdGEoJ2RhdGEnLCBkYXRhKTsKLSAgICAgICQoY29udGFpbmVyKS5kYXRhKCdn cmlkJywgZ3JpZCk7Ci0gICAgICAkKGNvbnRhaW5lcikuZGF0YSgnZmlsdGVyJywgZmlsdGVyKTsK LSAgICB9LAotICAgIF9fbG9hZE1vcmVSb3dzOiBmdW5jdGlvbihlKSB7Ci0gICAgICBsZXQgZWxl bSA9IGUuY3VycmVudFRhcmdldDsKLSAgICAgIGlmICgoZWxlbS5zY3JvbGxIZWlnaHQgLSAxMCkg PCBlbGVtLnNjcm9sbFRvcCArIGVsZW0ub2Zmc2V0SGVpZ2h0KSB7Ci0gICAgICAgIGlmICh0aGlz LmRhdGEubGVuZ3RoID4gMCkgewotICAgICAgICAgIHRoaXMubG9jYWxfZ3JpZC5jb2xsZWN0aW9u LmFkZCh0aGlzLmRhdGEuc3BsaWNlKDAsIDUwKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9 LAotICAgIC8vIFJlbmRlciB0aGUgZGF0YSBpbiBhIGdyaWQKLSAgICByZW5kZXJfZ3JpZF9kYXRh OiBmdW5jdGlvbihjb250YWluZXIpIHsKLSAgICAgIHZhciB0aGF0ID0gdGhpczsKLSAgICAgIHZh ciBkYXRhID0gJChjb250YWluZXIpLmRhdGEoJ2RhdGEnKSwKLSAgICAgICAgZ3JpZCA9ICQoY29u dGFpbmVyKS5kYXRhKCdncmlkJyksCi0gICAgICAgIGZpbHRlciA9ICQoY29udGFpbmVyKS5kYXRh KCdmaWx0ZXInKTsKLQotICAgICAgaWYgKF8uaXNVbmRlZmluZWQoZGF0YSkpIHsKLSAgICAgICAg cmV0dXJuIG51bGw7Ci0gICAgICB9Ci0KLSAgICAgIGRhdGEuZmV0Y2goewotICAgICAgICByZXNl dDogdHJ1ZSwKLSAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7Ci0gICAgICAgICAgdGhh dC5kYXRhID0gcmVzLm1vZGVsczsKLSAgICAgICAgICB0aGF0LmxvY2FsX2dyaWQgPSBncmlkOwot ICAgICAgICAgIGdyaWQuY29sbGVjdGlvbi5yZXNldCh0aGF0LmRhdGEuc3BsaWNlKDAsNTApKTsK LQotICAgICAgICAgIC8vIElmIHdlJ3JlIHNob3dpbmcgYW4gZXJyb3IsIHJlbW92ZSBpdCwgYW5k IHJlcGxhY2UgdGhlIGdyaWQgJiBmaWx0ZXIKLSAgICAgICAgICBpZiAoJChjb250YWluZXIpLmhh c0NsYXNzKCdncmlkLWVycm9yJykpIHsKLSAgICAgICAgICAgICQoY29udGFpbmVyKS5yZW1vdmVD bGFzcygnZ3JpZC1lcnJvcicpOwotICAgICAgICAgICAgJChjb250YWluZXIpLmh0bWwoZ3JpZC5y ZW5kZXIoKS5lbCk7Ci0gICAgICAgICAgICAkKGZpbHRlci5lbCkuc2hvdygpOwotICAgICAgICAg IH0KLQotICAgICAgICAgIGlmKHRoYXQuZGF0YS5sZW5ndGggPiA1MCkgewotICAgICAgICAgICAg Ly8gTGlzdGVuIHNjcm9sbCBldmVudCB0byBsb2FkIG1vcmUgcm93cwotICAgICAgICAgICAgJCgn LndjU2Nyb2xsYWJsZVknKS5vbignc2Nyb2xsJywgdGhhdC5fX2xvYWRNb3JlUm93cy5iaW5kKHRo YXQpKTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gTGlzdGVuIHNjcm9sbCBl dmVudCB0byBsb2FkIG1vcmUgcm93cwotICAgICAgICAgICAgJCgnLndjU2Nyb2xsYWJsZVknKS5v ZmYoJ3Njcm9sbCcsIHRoYXQuX19sb2FkTW9yZVJvd3MpOwotICAgICAgICAgIH0KLQotICAgICAg ICAgIC8vIFJlLWFwcGx5IHNlYXJjaCBjcml0ZXJpYQotICAgICAgICAgIGZpbHRlci5zZWFyY2go KTsKLSAgICAgICAgfSwKLSAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKG1vZGVsLCB4aHIpIHsKLSAg ICAgICAgICBsZXQgZXJyID0gJyc7Ci0gICAgICAgICAgbGV0IG1zZyA9ICcnOwotICAgICAgICAg IGxldCBjbHMgPSAnaW5mbyc7Ci0KLSAgICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT09IDAp IHsKLSAgICAgICAgICAgIG1zZyA9IGdldHRleHQoJ05vdCBjb25uZWN0ZWQgdG8gdGhlIHNlcnZl ciBvciB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGNsb3NlZC4nKTsKLSAg ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZXJyID0gSlNPTi5wYXJzZSh4aHIucmVzcG9u c2VUZXh0KTsKLSAgICAgICAgICAgIG1zZyA9IGVyci5lcnJvcm1zZzsKLQotICAgICAgICAgICAg Ly8gSWYgd2UgZ2V0IGEgNDI4LCBpdCBtZWFucyB0aGUgc2VydmVyIGlzbid0IGNvbm5lY3RlZAot ICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDQyOCkgewotICAgICAgICAgICAgICBpZiAo Xy5pc1VuZGVmaW5lZChtc2cpIHx8IF8uaXNOdWxsKG1zZykpIHsKLSAgICAgICAgICAgICAgICBt c2cgPSBnZXR0ZXh0KCdQbGVhc2UgY29ubmVjdCB0byB0aGUgc2VsZWN0ZWQgc2VydmVyIHRvIHZp ZXcgdGhlIHRhYmxlLicpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2Ugewot ICAgICAgICAgICAgICBtc2cgPSBnZXR0ZXh0KCdBbiBlcnJvciBvY2N1cnJlZCB3aGlsc3QgcmVu ZGVyaW5nIHRoZSB0YWJsZS4nKTsKLSAgICAgICAgICAgICAgY2xzID0gJ2Vycm9yJzsKLSAgICAg ICAgICAgIH0KLSAgICAgICAgICB9Ci0KLSAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBjb250ZW50 IHdpdGggdGhlIGVycm9yLCBpZiBub3QgYWxyZWFkeSBwcmVzZW50LiBBbHdheXMgdXBkYXRlIHRo ZSBtZXNzYWdlCi0gICAgICAgICAgaWYgKCEkKGNvbnRhaW5lcikuaGFzQ2xhc3MoJ2dyaWQtZXJy b3InKSkgewotICAgICAgICAgICAgJChmaWx0ZXIuZWwpLmhpZGUoKTsKLSAgICAgICAgICAgICQo Y29udGFpbmVyKS5hZGRDbGFzcygnZ3JpZC1lcnJvcicpOwotICAgICAgICAgIH0KLQotICAgICAg ICAgICQoY29udGFpbmVyKS5odG1sKAotICAgICAgICAgICAgJzxkaXYgY2xhc3M9InBnLXBhbmVs LScgKyBjbHMgKyAnIHBnLXBhbmVsLW1lc3NhZ2UiIHJvbGU9ImFsZXJ0Ij4nICsgbXNnICsgJzwv ZGl2PicKLSAgICAgICAgICApOwotCi0gICAgICAgICAgLy8gVHJ5IGFnYWluCi0gICAgICAgICAg c2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHBnQWRtaW4uRGFzaGJvYXJkLnJl bmRlcl9ncmlkX2RhdGEoY29udGFpbmVyLCBkYXRhKTsKLSAgICAgICAgICB9LCA1MDAwKTsKLSAg ICAgICAgfSwKLSAgICAgIH0pOwotICAgIH0sCi0KLSAgICAvLyBSb2NrIG4nIHJvbGwgb24gdGhl IGRhc2hib2FyZAotICAgIGluaXRfZGFzaGJvYXJkOiBmdW5jdGlvbigpIHsKLSAgICAgIGxldCBz ZWxmID0gdGhpczsKLQotICAgICAgdGhpcy5jaGFydHNEb21PYmogPSBuZXcgQ2hhcnRzRE9NLmRl ZmF1bHQoCi0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXNoYm9hcmQtZ3JhcGhz JyksCi0gICAgICAgIHNlbGYucHJlZmVyZW5jZXMsCi0gICAgICAgIHNlbGYuc2lkLAotICAgICAg ICBzZWxmLmRpZCwKLSAgICAgICAgJCgnLmRhc2hib2FyZC1jb250YWluZXInKVswXS5jbGllbnRI ZWlnaHQgPD0wID8gZmFsc2UgOiB0cnVlCi0gICAgICApOwotCi0gICAgICAvKiBDYWNoZSBtYXkg dGFrZSB0aW1lIHRvIGxvYWQgZm9yIHRoZSBmaXJzdCB0aW1lCi0gICAgICAgKiBLZWVwIHRyeWlu ZyB0aWxsIGF2YWlsYWJsZQotICAgICAgICovCi0gICAgICBsZXQgY2FjaGVJbnRlcnZhbElkID0g c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgaWYocGdX aW5kb3cuZGVmYXVsdC5wZ0FkbWluLkJyb3dzZXIucHJlZmVyZW5jZV92ZXJzaW9uKCkgPiAwKSB7 Ci0gICAgICAgICAgICBjbGVhckludGVydmFsKGNhY2hlSW50ZXJ2YWxJZCk7Ci0gICAgICAgICAg ICBzZWxmLnJlZmxlY3RQcmVmZXJlbmNlcygpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAg ICAgICBjYXRjaChlcnIpIHsKLSAgICAgICAgICBjbGVhckludGVydmFsKGNhY2hlSW50ZXJ2YWxJ ZCk7Ci0gICAgICAgICAgdGhyb3cgZXJyOwotICAgICAgICB9Ci0gICAgICB9LDApOwotCi0gICAg ICAvKiBSZWdpc3RlciBmb3IgcHJlZmVyZW5jZSBjaGFuZ2VkIGV2ZW50IGJyb2FkY2FzdGVkICov Ci0gICAgICBwZ0Jyb3dzZXIub25QcmVmZXJlbmNlc0NoYW5nZSgnZGFzaGJvYXJkcycsIGZ1bmN0 aW9uKCkgewotICAgICAgICBzZWxmLnJlZmxlY3RQcmVmZXJlbmNlcygpOwotICAgICAgfSk7Ci0g ICAgfSwKLQotICAgIHJlZmxlY3RQcmVmZXJlbmNlczogZnVuY3Rpb24oKSB7Ci0gICAgICB2YXIg c2VsZiA9IHRoaXM7Ci0gICAgICBzZWxmLnByZWZlcmVuY2VzID0gcGdXaW5kb3cuZGVmYXVsdC5w Z0FkbWluLkJyb3dzZXIuZ2V0X3ByZWZlcmVuY2VzX2Zvcl9tb2R1bGUoJ2Rhc2hib2FyZHMnKTsK LSAgICAgIHRoaXMuY2hhcnRzRG9tT2JqLnJlZmxlY3RQcmVmZXJlbmNlcyhzZWxmLnByZWZlcmVu Y2VzKTsKLQotICAgICAgaWYoaXNfc2VydmVyX2Rhc2hib2FyZCB8fCBpc19kYXRhYmFzZV9kYXNo Ym9hcmQpIHsKLSAgICAgICAgaWYgKHNlbGYucHJlZmVyZW5jZXMuc2hvd19hY3Rpdml0eSAmJiAk KCcjZGFzaGJvYXJkLWFjdGl2aXR5JykuaGFzQ2xhc3MoJ2Rhc2hib2FyZC1oaWRkZW4nKSkgewot ICAgICAgICAgICQoJyNkYXNoYm9hcmQtYWN0aXZpdHknKS5yZW1vdmVDbGFzcygnZGFzaGJvYXJk LWhpZGRlbicpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYoIXNlbGYucHJlZmVyZW5jZXMu c2hvd19hY3Rpdml0eSkgewotICAgICAgICAgICQoJyNkYXNoYm9hcmQtYWN0aXZpdHknKS5hZGRD bGFzcygnZGFzaGJvYXJkLWhpZGRlbicpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNlbGYu cHJlZmVyZW5jZXMuc2hvd19hY3Rpdml0eSAmJiAkKCcjZGFzaGJvYXJkLWFjdGl2aXR5JykuaGFz Q2xhc3MoJ2Rhc2hib2FyZC1oaWRkZW4nKSkgewotICAgICAgICAgICQoJyNkYXNoYm9hcmQtYWN0 aXZpdHknKS5yZW1vdmVDbGFzcygnZGFzaGJvYXJkLWhpZGRlbicpOwotICAgICAgICB9Ci0gICAg ICAgIGVsc2UgaWYoIXNlbGYucHJlZmVyZW5jZXMuc2hvd19hY3Rpdml0eSkgewotICAgICAgICAg ICQoJyNkYXNoYm9hcmQtYWN0aXZpdHknKS5hZGRDbGFzcygnZGFzaGJvYXJkLWhpZGRlbicpOwot ICAgICAgICB9Ci0KLSAgICAgICAgLyogRGFzaGJvYXJkIHNwZWNpZmljIHByZWZlcmVuY2VzIGNh biBiZSB1cGRhdGVkIGluIHRoZQotICAgICAgICAgKiBhcHByb3ByaWF0ZSBmdW5jdGlvbnMKLSAg ICAgICAgICovCi0gICAgICAgIGlmKGlzX3NlcnZlcl9kYXNoYm9hcmQpIHsKLSAgICAgICAgICBz ZWxmLnJlZmxlY3RQcmVmZXJlbmNlc1NlcnZlcigpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ug aWYoaXNfZGF0YWJhc2VfZGFzaGJvYXJkKSB7Ci0gICAgICAgICAgc2VsZi5yZWZsZWN0UHJlZmVy ZW5jZXNEYXRhYmFzZSgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSwKLQotICAgIHJlbmRl clRhYjogZnVuY3Rpb24oZSwgdGFiX2dyaWRfbWFwKSB7Ci0gICAgICBsZXQgcHJldkdyaWQgPSB0 YWJfZ3JpZF9tYXBbJChlLnJlbGF0ZWRUYXJnZXQpLmF0dHIoJ2FyaWEtY29udHJvbHMnKV07Ci0g ICAgICAkKHByZXZHcmlkKS5kYXRhKCdmaWx0ZXJ0ZXh0JywgJCgnI3R4dEdyaWRTZWFyY2gnKS52 YWwoKSk7Ci0KLSAgICAgIGxldCBjdXJyR3JpZCA9IHRhYl9ncmlkX21hcFskKGUudGFyZ2V0KS5h dHRyKCdhcmlhLWNvbnRyb2xzJyldOwotICAgICAgJCgnI3R4dEdyaWRTZWFyY2gnKS52YWwoJChj dXJyR3JpZCkuZGF0YSgnZmlsdGVydGV4dCcpKTsKLSAgICAgIHBnQWRtaW4uRGFzaGJvYXJkLnJl bmRlcl9ncmlkX2RhdGEoY3VyckdyaWQpOwotICAgIH0sCi0KLSAgICByZWZsZWN0UHJlZmVyZW5j ZXNTZXJ2ZXI6IGZ1bmN0aW9uKCkgewotICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgdmFy ICRkYXNoYm9hcmRDb250YWluZXIgPSAkKCcuZGFzaGJvYXJkLWNvbnRhaW5lcicpOwotICAgICAg dmFyIGRpdl9zZXJ2ZXJfYWN0aXZpdHkgPSAkZGFzaGJvYXJkQ29udGFpbmVyLmZpbmQoJyNzZXJ2 ZXJfYWN0aXZpdHknKS5nZXQoMCk7Ci0gICAgICB2YXIgZGl2X3NlcnZlcl9sb2NrcyA9ICRkYXNo Ym9hcmRDb250YWluZXIuZmluZCgnI3NlcnZlcl9sb2NrcycpLmdldCgwKTsKLSAgICAgIHZhciBk aXZfc2VydmVyX3ByZXBhcmVkID0gJGRhc2hib2FyZENvbnRhaW5lci5maW5kKCcjc2VydmVyX3By ZXBhcmVkJykuZ2V0KDApOwotICAgICAgdmFyIGRpdl9zZXJ2ZXJfY29uZmlnID0gJGRhc2hib2Fy ZENvbnRhaW5lci5maW5kKCcjc2VydmVyX2NvbmZpZycpLmdldCgwKTsKLQotICAgICAgdmFyIHRh Yl9ncmlkX21hcCA9IHsKLSAgICAgICAgJ3RhYl9zZXJ2ZXJfYWN0aXZpdHknOiBkaXZfc2VydmVy X2FjdGl2aXR5LAotICAgICAgICAndGFiX3NlcnZlcl9sb2Nrcyc6IGRpdl9zZXJ2ZXJfbG9ja3Ms Ci0gICAgICAgICd0YWJfc2VydmVyX3ByZXBhcmVkJzogZGl2X3NlcnZlcl9wcmVwYXJlZCwKLSAg ICAgICAgJ3RhYl9zZXJ2ZXJfY29uZmlnJzogZGl2X3NlcnZlcl9jb25maWcsCi0gICAgICB9Owot Ci0gICAgICAvLyBEaXNwbGF5IHNlcnZlciBhY3Rpdml0eQotICAgICAgaWYgKHNlbGYucHJlZmVy ZW5jZXMuc2hvd19hY3Rpdml0eSkgewotICAgICAgICB2YXIgc2VydmVyX2FjdGl2aXR5X2NvbHVt bnMgPSBbewotICAgICAgICAgIG5hbWU6ICdwaWQnLAotICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0 KCdQSUQnKSwKLSAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCi0gICAgICAgICAgY2VsbDogJ3N0 cmluZycsCi0gICAgICAgIH0sIHsKLSAgICAgICAgICBuYW1lOiAnZGF0bmFtZScsCi0gICAgICAg ICAgbGFiZWw6IGdldHRleHQoJ0RhdGFiYXNlJyksCi0gICAgICAgICAgZWRpdGFibGU6IGZhbHNl LAotICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICB9LCB7Ci0gICAgICAgICAgbmFt ZTogJ3VzZW5hbWUnLAotICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdVc2VyJyksCi0gICAgICAg ICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICB9 LCB7Ci0gICAgICAgICAgbmFtZTogJ2FwcGxpY2F0aW9uX25hbWUnLAotICAgICAgICAgIGxhYmVs OiBnZXR0ZXh0KCdBcHBsaWNhdGlvbicpLAotICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKLSAg ICAgICAgICBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgfSwgewotICAgICAgICAgIG5hbWU6ICdj bGllbnRfYWRkcicsCi0gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0NsaWVudCcpLAotICAgICAg ICAgIGVkaXRhYmxlOiBmYWxzZSwKLSAgICAgICAgICBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAg fSwgewotICAgICAgICAgIG5hbWU6ICdiYWNrZW5kX3N0YXJ0JywKLSAgICAgICAgICBsYWJlbDog Z2V0dGV4dCgnQmFja2VuZCBzdGFydCcpLAotICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKLSAg ICAgICAgICBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgfSwgewotICAgICAgICAgIG5hbWU6ICdz dGF0ZScsCi0gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1N0YXRlJyksCi0gICAgICAgICAgZWRp dGFibGU6IGZhbHNlLAotICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICB9XTsKLQot ICAgICAgICBpZiAoc2VsZi52ZXJzaW9uIDwgOTA2MDApIHsKLSAgICAgICAgICBzZXJ2ZXJfYWN0 aXZpdHlfY29sdW1ucyA9IHNlcnZlcl9hY3Rpdml0eV9jb2x1bW5zLmNvbmNhdCgKLSAgICAgICAg ICAgIFt7Ci0gICAgICAgICAgICAgIG5hbWU6ICd3YWl0aW5nJywKLSAgICAgICAgICAgICAgbGFi ZWw6IGdldHRleHQoJ1dhaXRpbmc/JyksCi0gICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwK LSAgICAgICAgICAgICAgY2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgICB9XSk7Ci0gICAgICAg IH0gZWxzZSB7Ci0gICAgICAgICAgc2VydmVyX2FjdGl2aXR5X2NvbHVtbnMgPSBzZXJ2ZXJfYWN0 aXZpdHlfY29sdW1ucy5jb25jYXQoCi0gICAgICAgICAgICBbewotICAgICAgICAgICAgICBuYW1l OiAnd2FpdF9ldmVudCcsCi0gICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdXYWl0IGV2ZW50 JyksCi0gICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKLSAgICAgICAgICAgICAgY2VsbDog J3N0cmluZycsCi0gICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgIG5hbWU6ICdibG9ja2lu Z19waWRzJywKLSAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0Jsb2NraW5nIFBJRHMnKSwK LSAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAgICAgICAgICBjZWxsOiAnc3Ry aW5nJywKLSAgICAgICAgICAgIH1dKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBuZXdBY3Rp dmVRdWVyeURldGFpbHNNb2RlbCA9IG5ldyBBY3RpdmVRdWVyeURldGFpbHNNb2RlbCgpOwotCi0g ICAgICAgIHZhciBzdWJOb2RlRmllbGRzTW9kZWwgPSBCYWNrZm9ybS5nZW5lcmF0ZVZpZXdTY2hl bWEoCi0gICAgICAgICAgbnVsbCwgbmV3QWN0aXZlUXVlcnlEZXRhaWxzTW9kZWwsICdjcmVhdGUn LCBudWxsLCBudWxsLCB0cnVlCi0gICAgICAgICk7Ci0KLSAgICAgICAgLy8gQWRkIHZlcnNpb24g dG8gZWFjaCBmaWVsZAotICAgICAgICBfLmVhY2goc3ViTm9kZUZpZWxkc01vZGVsWzBdLmZpZWxk cywgZnVuY3Rpb24ob2JqKSB7Ci0gICAgICAgICAgb2JqWyd2ZXJzaW9uJ10gPSBzZWxmLnZlcnNp b247Ci0gICAgICAgIH0pOwotCi0gICAgICAgIC8vIEFkZCBjYW5jZWwgYWN0aXZlIHF1ZXJ5IGJ1 dHRvbgotICAgICAgICBzZXJ2ZXJfYWN0aXZpdHlfY29sdW1ucy51bnNoaWZ0KHsKLSAgICAgICAg ICBuYW1lOiAncGctYmFja2Zvcm0tZXhwYW5kJywKLSAgICAgICAgICBsYWJlbDogJycsCi0gICAg ICAgICAgY2VsbDogU2Vzc2lvbkRldGFpbHNDZWxsLAotICAgICAgICAgIGNlbGxfcHJpb3JpdHk6 IC0xLAotICAgICAgICAgIHBvc3RncmVzX3ZlcnNpb246IHNlbGYudmVyc2lvbiwKLSAgICAgICAg ICBzY2hlbWE6IHN1Yk5vZGVGaWVsZHNNb2RlbCwKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgLy8g QWRkIGNhbmNlbCBhY3RpdmUgcXVlcnkgYnV0dG9uCi0gICAgICAgIHNlcnZlcl9hY3Rpdml0eV9j b2x1bW5zLnVuc2hpZnQoewotICAgICAgICAgIG5hbWU6ICdwZy1iYWNrZm9ybS1kZWxldGUnLAot ICAgICAgICAgIGxhYmVsOiAnJywKLSAgICAgICAgICBjZWxsOiBjdXN0b21EYXNoYm9hcmRBY3Rp b25DZWxsLAotICAgICAgICAgIGNlbGxfYWN0aW9uOiAnY2FuY2VsJywKLSAgICAgICAgICBlZGl0 YWJsZTogZmFsc2UsCi0gICAgICAgICAgY2VsbF9wcmlvcml0eTogLTEsCi0gICAgICAgICAgY2Fu RGVsZXRlUm93OiBwZ0FkbWluLkRhc2hib2FyZC5jYW5fdGFrZV9hY3Rpb24sCi0gICAgICAgICAg cG9zdGdyZXNfdmVyc2lvbjogc2VsZi52ZXJzaW9uLAotICAgICAgICB9KTsKLQotICAgICAgICBz ZXJ2ZXJfYWN0aXZpdHlfY29sdW1ucy51bnNoaWZ0KHsKLSAgICAgICAgICBuYW1lOiAncGctYmFj a2Zvcm0tZGVsZXRlJywKLSAgICAgICAgICBsYWJlbDogJycsCi0gICAgICAgICAgY2VsbDogY3Vz dG9tRGFzaGJvYXJkQWN0aW9uQ2VsbCwKLSAgICAgICAgICBjZWxsX2FjdGlvbjogJ3Rlcm1pbmF0 ZScsCi0gICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAgICAgIGNlbGxfcHJpb3JpdHk6 IC0xLAotICAgICAgICAgIGNhbkRlbGV0ZVJvdzogcGdBZG1pbi5EYXNoYm9hcmQuY2FuX3Rha2Vf YWN0aW9uLAotICAgICAgICAgIHBvc3RncmVzX3ZlcnNpb246IHNlbGYudmVyc2lvbiwKLSAgICAg ICAgfSk7Ci0KLSAgICAgICAgdmFyIHNlcnZlcl9sb2Nrc19jb2x1bW5zID0gW3sKLSAgICAgICAg ICBuYW1lOiAncGlkJywKLSAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnUElEJyksCi0gICAgICAg ICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICB9 LCB7Ci0gICAgICAgICAgbmFtZTogJ2RhdG5hbWUnLAotICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0 KCdEYXRhYmFzZScpLAotICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKLSAgICAgICAgICBjZWxs OiAnc3RyaW5nJywKLSAgICAgICAgfSwgewotICAgICAgICAgIG5hbWU6ICdsb2NrdHlwZScsCi0g ICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0xvY2sgdHlwZScpLAotICAgICAgICAgIGVkaXRhYmxl OiBmYWxzZSwKLSAgICAgICAgICBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgfSwgewotICAgICAg ICAgIG5hbWU6ICdyZWxhdGlvbicsCi0gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1RhcmdldCBy ZWxhdGlvbicpLAotICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKLSAgICAgICAgICBjZWxsOiAn c3RyaW5nJywKLSAgICAgICAgfSwgewotICAgICAgICAgIG5hbWU6ICdwYWdlJywKLSAgICAgICAg ICBsYWJlbDogZ2V0dGV4dCgnUGFnZScpLAotICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKLSAg ICAgICAgICBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgfSwgewotICAgICAgICAgIG5hbWU6ICd0 dXBsZScsCi0gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1R1cGxlJyksCi0gICAgICAgICAgZWRp dGFibGU6IGZhbHNlLAotICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICB9LCB7Ci0g ICAgICAgICAgbmFtZTogJ3ZpcnR1YWx4aWQnLAotICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCd2 WElEICh0YXJnZXQpJyksCi0gICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAgICAgIGNl bGw6ICdzdHJpbmcnLAotICAgICAgICB9LCB7Ci0gICAgICAgICAgbmFtZTogJ3RyYW5zYWN0aW9u aWQnLAotICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdYSUQgKHRhcmdldCknKSwKLSAgICAgICAg ICBlZGl0YWJsZTogZmFsc2UsCi0gICAgICAgICAgY2VsbDogJ3N0cmluZycsCi0gICAgICAgIH0s IHsKLSAgICAgICAgICBuYW1lOiAnY2xhc3NpZCcsCi0gICAgICAgICAgbGFiZWw6IGdldHRleHQo J0NsYXNzJyksCi0gICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAgICAgIGNlbGw6ICdz dHJpbmcnLAotICAgICAgICB9LCB7Ci0gICAgICAgICAgbmFtZTogJ29iamlkJywKLSAgICAgICAg ICBsYWJlbDogZ2V0dGV4dCgnT2JqZWN0IElEJyksCi0gICAgICAgICAgZWRpdGFibGU6IGZhbHNl LAotICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICB9LCB7Ci0gICAgICAgICAgbmFt ZTogJ3ZpcnR1YWx0cmFuc2FjdGlvbicsCi0gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ3ZYSUQg KG93bmVyKScpLAotICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKLSAgICAgICAgICBjZWxsOiAn c3RyaW5nJywKLSAgICAgICAgfSwgewotICAgICAgICAgIG5hbWU6ICdtb2RlJywKLSAgICAgICAg ICBsYWJlbDogZ2V0dGV4dCgnTW9kZScpLAotICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKLSAg ICAgICAgICBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgfSwgewotICAgICAgICAgIG5hbWU6ICdn cmFudGVkJywKLSAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnR3JhbnRlZD8nKSwKLSAgICAgICAg ICBlZGl0YWJsZTogZmFsc2UsCi0gICAgICAgICAgY2VsbDogJ3N0cmluZycsCi0gICAgICAgIH1d OwotCi0gICAgICAgIHZhciBzZXJ2ZXJfcHJlcGFyZWRfY29sdW1ucyA9IFt7Ci0gICAgICAgICAg bmFtZTogJ2dpdCcsCi0gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ05hbWUnKSwKLSAgICAgICAg ICBlZGl0YWJsZTogZmFsc2UsCi0gICAgICAgICAgY2VsbDogJ3N0cmluZycsCi0gICAgICAgIH0s IHsKLSAgICAgICAgICBuYW1lOiAnZGF0YWJhc2UnLAotICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0 KCdEYXRhYmFzZScpLAotICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKLSAgICAgICAgICBjZWxs OiAnc3RyaW5nJywKLSAgICAgICAgfSwgewotICAgICAgICAgIG5hbWU6ICdPd25lcicsCi0gICAg ICAgICAgbGFiZWw6IGdldHRleHQoJ093bmVyJyksCi0gICAgICAgICAgZWRpdGFibGU6IGZhbHNl LAotICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICB9LCB7Ci0gICAgICAgICAgbmFt ZTogJ3RyYW5zYWN0aW9uJywKLSAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnWElEJyksCi0gICAg ICAgICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAotICAgICAg ICB9LCB7Ci0gICAgICAgICAgbmFtZTogJ3ByZXBhcmVkJywKLSAgICAgICAgICBsYWJlbDogZ2V0 dGV4dCgnUHJlcGFyZWQgYXQnKSwKLSAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCi0gICAgICAg ICAgY2VsbDogJ3N0cmluZycsCi0gICAgICAgIH1dOwotCi0gICAgICAgIHZhciBzZXJ2ZXJfY29u ZmlnX2NvbHVtbnMgPSBbewotICAgICAgICAgIG5hbWU6ICduYW1lJywKLSAgICAgICAgICBsYWJl bDogZ2V0dGV4dCgnTmFtZScpLAotICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKLSAgICAgICAg ICBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAgfSwgewotICAgICAgICAgIG5hbWU6ICdjYXRlZ29y eScsCi0gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0NhdGVnb3J5JyksCi0gICAgICAgICAgZWRp dGFibGU6IGZhbHNlLAotICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICB9LCB7Ci0g ICAgICAgICAgbmFtZTogJ3NldHRpbmcnLAotICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdTZXR0 aW5nJyksCi0gICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAgICAgIGNlbGw6ICdzdHJp bmcnLAotICAgICAgICB9LCB7Ci0gICAgICAgICAgbmFtZTogJ3VuaXQnLAotICAgICAgICAgIGxh YmVsOiBnZXR0ZXh0KCdVbml0JyksCi0gICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAg ICAgIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICB9LCB7Ci0gICAgICAgICAgbmFtZTogJ3Nob3J0 X2Rlc2MnLAotICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdEZXNjcmlwdGlvbicpLAotICAgICAg ICAgIGVkaXRhYmxlOiBmYWxzZSwKLSAgICAgICAgICBjZWxsOiAnc3RyaW5nJywKLSAgICAgICAg fV07Ci0KLSAgICAgICAgLy8gVG8gYWxpZ24gc3Vibm9kZSBjb250cm9scyBwcm9wZXJseQotICAg ICAgICAkKGRpdl9zZXJ2ZXJfYWN0aXZpdHkpLmFkZENsYXNzKCdwZy1lbC1jb250YWluZXInKTsK LSAgICAgICAgJChkaXZfc2VydmVyX2FjdGl2aXR5KS5hdHRyKCdlbCcsICdzbScpOwotCi0gICAg ICAgIC8vIFJlbmRlciB0aGUgdGFicywgYnV0IG9ubHkgZ2V0IGRhdGEgZm9yIHRoZSBhY3Rpdml0 eSB0YWIgZm9yIG5vdwotICAgICAgICBwZ0FkbWluLkRhc2hib2FyZC5yZW5kZXJfZ3JpZCgKLSAg ICAgICAgICBkaXZfc2VydmVyX2FjdGl2aXR5LCB1cmxfZm9yKCdkYXNoYm9hcmQuYWN0aXZpdHkn KSwgc2VydmVyX2FjdGl2aXR5X2NvbHVtbnMKLSAgICAgICAgKTsKLSAgICAgICAgcGdBZG1pbi5E YXNoYm9hcmQucmVuZGVyX2dyaWQoCi0gICAgICAgICAgZGl2X3NlcnZlcl9sb2NrcywgdXJsX2Zv cignZGFzaGJvYXJkLmxvY2tzJyksIHNlcnZlcl9sb2Nrc19jb2x1bW5zCi0gICAgICAgICk7Ci0g ICAgICAgIHBnQWRtaW4uRGFzaGJvYXJkLnJlbmRlcl9ncmlkKAotICAgICAgICAgIGRpdl9zZXJ2 ZXJfcHJlcGFyZWQsIHVybF9mb3IoJ2Rhc2hib2FyZC5wcmVwYXJlZCcpLCBzZXJ2ZXJfcHJlcGFy ZWRfY29sdW1ucwotICAgICAgICApOwotICAgICAgICBwZ0FkbWluLkRhc2hib2FyZC5yZW5kZXJf Z3JpZCgKLSAgICAgICAgICBkaXZfc2VydmVyX2NvbmZpZywgdXJsX2ZvcignZGFzaGJvYXJkLmNv bmZpZycpLCBzZXJ2ZXJfY29uZmlnX2NvbHVtbnMKLSAgICAgICAgKTsKLQotICAgICAgICBwZ0Fk bWluLkRhc2hib2FyZC5yZW5kZXJfZ3JpZF9kYXRhKGRpdl9zZXJ2ZXJfYWN0aXZpdHkpOwotCi0g ICAgICAgIC8vIChSZSlyZW5kZXIgdGhlIGFwcHJvcHJpYXRlIHRhYgotICAgICAgICAkKCdhW2Rh dGEtdG9nZ2xlPSJ0YWIiXScpLm9uKCdzaG93bi5icy50YWInLCBmdW5jdGlvbihlKSB7Ci0gICAg ICAgICAgc2VsZi5yZW5kZXJUYWIoZSwgdGFiX2dyaWRfbWFwKTsKLSAgICAgICAgfSk7Ci0KLSAg ICAgICAgJCgnI2J0bl9yZWZyZXNoJykub2ZmKCdjbGljaycpLm9uKCdjbGljaycsICgpID0+IHsK LSAgICAgICAgICBsZXQgY3VyckdyaWQgPSB0YWJfZ3JpZF9tYXBbJCgnI2Rhc2hib2FyZC1hY3Rp dml0eSAubmF2LXRhYnMgLmFjdGl2ZScpLmF0dHIoJ2FyaWEtY29udHJvbHMnKV07Ci0gICAgICAg ICAgcGdBZG1pbi5EYXNoYm9hcmQucmVuZGVyX2dyaWRfZGF0YShjdXJyR3JpZCk7Ci0gICAgICAg IH0pOwotICAgICAgfQotICAgIH0sCi0gICAgcmVmbGVjdFByZWZlcmVuY2VzRGF0YWJhc2U6IGZ1 bmN0aW9uKCkgewotICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgdmFyIGRpdl9kYXRhYmFz ZV9hY3Rpdml0eSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRhYmFzZV9hY3Rpdml0eScp OwotICAgICAgdmFyIGRpdl9kYXRhYmFzZV9sb2NrcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdkYXRhYmFzZV9sb2NrcycpOwotICAgICAgdmFyIGRpdl9kYXRhYmFzZV9wcmVwYXJlZCA9IGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRhYmFzZV9wcmVwYXJlZCcpOwotCi0gICAgICB2YXIg dGFiX2dyaWRfbWFwID0gewotICAgICAgICAndGFiX2RhdGFiYXNlX2FjdGl2aXR5JzogZGl2X2Rh dGFiYXNlX2FjdGl2aXR5LAotICAgICAgICAndGFiX2RhdGFiYXNlX2xvY2tzJzogZGl2X2RhdGFi YXNlX2xvY2tzLAotICAgICAgICAndGFiX2RhdGFiYXNlX3ByZXBhcmVkJzogZGl2X2RhdGFiYXNl X3ByZXBhcmVkLAotICAgICAgfTsKLQotICAgICAgLy8gRGlzcGxheSBzZXJ2ZXIgYWN0aXZpdHkK LSAgICAgIGlmIChzZWxmLnByZWZlcmVuY2VzLnNob3dfYWN0aXZpdHkpIHsKLSAgICAgICAgdmFy IGRhdGFiYXNlX2FjdGl2aXR5X2NvbHVtbnMgPSBbewotICAgICAgICAgIG5hbWU6ICdwaWQnLAot ICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdQSUQnKSwKLSAgICAgICAgICBlZGl0YWJsZTogZmFs c2UsCi0gICAgICAgICAgY2VsbDogJ3N0cmluZycsCi0gICAgICAgIH0sIHsKLSAgICAgICAgICBu YW1lOiAndXNlbmFtZScsCi0gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1VzZXInKSwKLSAgICAg ICAgICBlZGl0YWJsZTogZmFsc2UsCi0gICAgICAgICAgY2VsbDogJ3N0cmluZycsCi0gICAgICAg IH0sIHsKLSAgICAgICAgICBuYW1lOiAnYXBwbGljYXRpb25fbmFtZScsCi0gICAgICAgICAgbGFi ZWw6IGdldHRleHQoJ0FwcGxpY2F0aW9uJyksCi0gICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAot ICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICB9LCB7Ci0gICAgICAgICAgbmFtZTog J2NsaWVudF9hZGRyJywKLSAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQ2xpZW50JyksCi0gICAg ICAgICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAotICAgICAg ICB9LCB7Ci0gICAgICAgICAgbmFtZTogJ2JhY2tlbmRfc3RhcnQnLAotICAgICAgICAgIGxhYmVs OiBnZXR0ZXh0KCdCYWNrZW5kIHN0YXJ0JyksCi0gICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAot ICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICB9LCB7Ci0gICAgICAgICAgbmFtZTog J3N0YXRlJywKLSAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnU3RhdGUnKSwKLSAgICAgICAgICBl ZGl0YWJsZTogZmFsc2UsCi0gICAgICAgICAgY2VsbDogJ3N0cmluZycsCi0gICAgICAgIH1dOwot Ci0gICAgICAgIGlmIChzZWxmLnZlcnNpb24gPCA5MDYwMCkgewotICAgICAgICAgIGRhdGFiYXNl X2FjdGl2aXR5X2NvbHVtbnMgPSBkYXRhYmFzZV9hY3Rpdml0eV9jb2x1bW5zLmNvbmNhdCgKLSAg ICAgICAgICAgIFt7Ci0gICAgICAgICAgICAgIG5hbWU6ICd3YWl0aW5nJywKLSAgICAgICAgICAg ICAgbGFiZWw6IGdldHRleHQoJ1dhaXRpbmc/JyksCi0gICAgICAgICAgICAgIGVkaXRhYmxlOiBm YWxzZSwKLSAgICAgICAgICAgICAgY2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgICB9XSk7Ci0g ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgZGF0YWJhc2VfYWN0aXZpdHlfY29sdW1ucyA9IGRh dGFiYXNlX2FjdGl2aXR5X2NvbHVtbnMuY29uY2F0KAotICAgICAgICAgICAgW3sKLSAgICAgICAg ICAgICAgbmFtZTogJ3dhaXRfZXZlbnQnLAotICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgn V2FpdCBldmVudCcpLAotICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCi0gICAgICAgICAg ICAgIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICBuYW1l OiAnYmxvY2tpbmdfcGlkcycsCi0gICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCbG9ja2lu ZyBQSURzJyksCi0gICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKLSAgICAgICAgICAgICAg Y2VsbDogJ3N0cmluZycsCi0gICAgICAgICAgICB9XSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2 YXIgbmV3QWN0aXZlUXVlcnlEZXRhaWxzTW9kZWwgPSBuZXcgQWN0aXZlUXVlcnlEZXRhaWxzTW9k ZWwoKTsKLQotICAgICAgICB2YXIgc3ViTm9kZUZpZWxkc01vZGVsID0gQmFja2Zvcm0uZ2VuZXJh dGVWaWV3U2NoZW1hKAotICAgICAgICAgIG51bGwsIG5ld0FjdGl2ZVF1ZXJ5RGV0YWlsc01vZGVs LCAnY3JlYXRlJywgbnVsbCwgbnVsbCwgdHJ1ZQotICAgICAgICApOwotCi0gICAgICAgIC8vIEFk ZCB2ZXJzaW9uIHRvIGVhY2ggZmllbGQKLSAgICAgICAgXy5lYWNoKHN1Yk5vZGVGaWVsZHNNb2Rl bFswXS5maWVsZHMsIGZ1bmN0aW9uKG9iaikgewotICAgICAgICAgIG9ialsndmVyc2lvbiddID0g c2VsZi52ZXJzaW9uOwotICAgICAgICB9KTsKLQotICAgICAgICAvLyBBZGQgY2FuY2VsIGFjdGl2 ZSBxdWVyeSBidXR0b24KLSAgICAgICAgZGF0YWJhc2VfYWN0aXZpdHlfY29sdW1ucy51bnNoaWZ0 KHsKLSAgICAgICAgICBuYW1lOiAncGctYmFja2Zvcm0tZXhwYW5kJywKLSAgICAgICAgICBsYWJl bDogJycsCi0gICAgICAgICAgY2VsbDogU2Vzc2lvbkRldGFpbHNDZWxsLAotICAgICAgICAgIGNl bGxfcHJpb3JpdHk6IC0xLAotICAgICAgICAgIHBvc3RncmVzX3ZlcnNpb246IHNlbGYudmVyc2lv biwKLSAgICAgICAgICBzY2hlbWE6IHN1Yk5vZGVGaWVsZHNNb2RlbCwKLSAgICAgICAgfSk7Ci0K LSAgICAgICAgZGF0YWJhc2VfYWN0aXZpdHlfY29sdW1ucy51bnNoaWZ0KHsKLSAgICAgICAgICBu YW1lOiAncGctYmFja2Zvcm0tZGVsZXRlJywKLSAgICAgICAgICBsYWJlbDogJycsCi0gICAgICAg ICAgY2VsbDogY3VzdG9tRGFzaGJvYXJkQWN0aW9uQ2VsbCwKLSAgICAgICAgICBjZWxsX2FjdGlv bjogJ2NhbmNlbCcsCi0gICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAgICAgIGNlbGxf cHJpb3JpdHk6IC0xLAotICAgICAgICAgIGNhbkRlbGV0ZVJvdzogcGdBZG1pbi5EYXNoYm9hcmQu Y2FuX3Rha2VfYWN0aW9uLAotICAgICAgICAgIHBvc3RncmVzX3ZlcnNpb246IHNlbGYudmVyc2lv biwKLSAgICAgICAgfSk7Ci0gICAgICAgIGRhdGFiYXNlX2FjdGl2aXR5X2NvbHVtbnMudW5zaGlm dCh7Ci0gICAgICAgICAgbmFtZTogJ3BnLWJhY2tmb3JtLWRlbGV0ZScsCi0gICAgICAgICAgbGFi ZWw6ICcnLAotICAgICAgICAgIGNlbGw6IGN1c3RvbURhc2hib2FyZEFjdGlvbkNlbGwsCi0gICAg ICAgICAgY2VsbF9hY3Rpb246ICd0ZXJtaW5hdGUnLAotICAgICAgICAgIGVkaXRhYmxlOiBmYWxz ZSwKLSAgICAgICAgICBjZWxsX3ByaW9yaXR5OiAtMSwKLSAgICAgICAgICBjYW5EZWxldGVSb3c6 IHBnQWRtaW4uRGFzaGJvYXJkLmNhbl90YWtlX2FjdGlvbiwKLSAgICAgICAgICBwb3N0Z3Jlc192 ZXJzaW9uOiBzZWxmLnZlcnNpb24sCi0gICAgICAgIH0pOwotCi0gICAgICAgIHZhciBkYXRhYmFz ZV9sb2Nrc19jb2x1bW5zID0gW3sKLSAgICAgICAgICBuYW1lOiAncGlkJywKLSAgICAgICAgICBs YWJlbDogZ2V0dGV4dCgnUElEJyksCi0gICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAg ICAgIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICB9LCB7Ci0gICAgICAgICAgbmFtZTogJ2xvY2t0 eXBlJywKLSAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnTG9jayB0eXBlJyksCi0gICAgICAgICAg ZWRpdGFibGU6IGZhbHNlLAotICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICB9LCB7 Ci0gICAgICAgICAgbmFtZTogJ3JlbGF0aW9uJywKLSAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgn VGFyZ2V0IHJlbGF0aW9uJyksCi0gICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAgICAg IGNlbGw6ICdzdHJpbmcnLAotICAgICAgICB9LCB7Ci0gICAgICAgICAgbmFtZTogJ3BhZ2UnLAot ICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdQYWdlJyksCi0gICAgICAgICAgZWRpdGFibGU6IGZh bHNlLAotICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICB9LCB7Ci0gICAgICAgICAg bmFtZTogJ3R1cGxlJywKLSAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnVHVwbGUnKSwKLSAgICAg ICAgICBlZGl0YWJsZTogZmFsc2UsCi0gICAgICAgICAgY2VsbDogJ3N0cmluZycsCi0gICAgICAg IH0sIHsKLSAgICAgICAgICBuYW1lOiAndmlydHVhbHhpZCcsCi0gICAgICAgICAgbGFiZWw6IGdl dHRleHQoJ3ZYSUQgKHRhcmdldCknKSwKLSAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCi0gICAg ICAgICAgY2VsbDogJ3N0cmluZycsCi0gICAgICAgIH0sIHsKLSAgICAgICAgICBuYW1lOiAndHJh bnNhY3Rpb25pZCcsCi0gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1hJRCAodGFyZ2V0KScpLAot ICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKLSAgICAgICAgICBjZWxsOiAnc3RyaW5nJywKLSAg ICAgICAgfSwgewotICAgICAgICAgIG5hbWU6ICdjbGFzc2lkJywKLSAgICAgICAgICBsYWJlbDog Z2V0dGV4dCgnQ2xhc3MnKSwKLSAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCi0gICAgICAgICAg Y2VsbDogJ3N0cmluZycsCi0gICAgICAgIH0sIHsKLSAgICAgICAgICBuYW1lOiAnb2JqaWQnLAot ICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdPYmplY3QgSUQnKSwKLSAgICAgICAgICBlZGl0YWJs ZTogZmFsc2UsCi0gICAgICAgICAgY2VsbDogJ3N0cmluZycsCi0gICAgICAgIH0sIHsKLSAgICAg ICAgICBuYW1lOiAndmlydHVhbHRyYW5zYWN0aW9uJywKLSAgICAgICAgICBsYWJlbDogZ2V0dGV4 dCgndlhJRCAob3duZXIpJyksCi0gICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAgICAg IGNlbGw6ICdzdHJpbmcnLAotICAgICAgICB9LCB7Ci0gICAgICAgICAgbmFtZTogJ21vZGUnLAot ICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdNb2RlJyksCi0gICAgICAgICAgZWRpdGFibGU6IGZh bHNlLAotICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAotICAgICAgICB9LCB7Ci0gICAgICAgICAg bmFtZTogJ2dyYW50ZWQnLAotICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdHcmFudGVkPycpLAot ICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKLSAgICAgICAgICBjZWxsOiAnc3RyaW5nJywKLSAg ICAgICAgfV07Ci0KLSAgICAgICAgdmFyIGRhdGFiYXNlX3ByZXBhcmVkX2NvbHVtbnMgPSBbewot ICAgICAgICAgIG5hbWU6ICdnaXQnLAotICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdOYW1lJyks Ci0gICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAot ICAgICAgICB9LCB7Ci0gICAgICAgICAgbmFtZTogJ093bmVyJywKLSAgICAgICAgICBsYWJlbDog Z2V0dGV4dCgnT3duZXInKSwKLSAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCi0gICAgICAgICAg Y2VsbDogJ3N0cmluZycsCi0gICAgICAgIH0sIHsKLSAgICAgICAgICBuYW1lOiAndHJhbnNhY3Rp b24nLAotICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdYSUQnKSwKLSAgICAgICAgICBlZGl0YWJs ZTogZmFsc2UsCi0gICAgICAgICAgY2VsbDogJ3N0cmluZycsCi0gICAgICAgIH0sIHsKLSAgICAg ICAgICBuYW1lOiAncHJlcGFyZWQnLAotICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdQcmVwYXJl ZCBhdCcpLAotICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKLSAgICAgICAgICBjZWxsOiAnc3Ry aW5nJywKLSAgICAgICAgfV07Ci0KLSAgICAgICAgLy8gVG8gYWxpZ24gc3Vibm9kZSBjb250cm9s cyBwcm9wZXJseQotICAgICAgICAkKGRpdl9kYXRhYmFzZV9hY3Rpdml0eSkuYWRkQ2xhc3MoJ3Bn LWVsLWNvbnRhaW5lcicpOwotICAgICAgICAkKGRpdl9kYXRhYmFzZV9hY3Rpdml0eSkuYXR0cign ZWwnLCAnc20nKTsKLQotICAgICAgICAvLyBSZW5kZXIgdGhlIHRhYnMsIGJ1dCBvbmx5IGdldCBk YXRhIGZvciB0aGUgYWN0aXZpdHkgdGFiIGZvciBub3cKLSAgICAgICAgcGdBZG1pbi5EYXNoYm9h cmQucmVuZGVyX2dyaWQoCi0gICAgICAgICAgZGl2X2RhdGFiYXNlX2FjdGl2aXR5LCB1cmxfZm9y KCdkYXNoYm9hcmQuYWN0aXZpdHknKSwgZGF0YWJhc2VfYWN0aXZpdHlfY29sdW1ucwotICAgICAg ICApOwotICAgICAgICBwZ0FkbWluLkRhc2hib2FyZC5yZW5kZXJfZ3JpZCgKLSAgICAgICAgICBk aXZfZGF0YWJhc2VfbG9ja3MsIHVybF9mb3IoJ2Rhc2hib2FyZC5sb2NrcycpLCBkYXRhYmFzZV9s b2Nrc19jb2x1bW5zCi0gICAgICAgICk7Ci0gICAgICAgIHBnQWRtaW4uRGFzaGJvYXJkLnJlbmRl cl9ncmlkKAotICAgICAgICAgIGRpdl9kYXRhYmFzZV9wcmVwYXJlZCwgdXJsX2ZvcignZGFzaGJv YXJkLnByZXBhcmVkJyksIGRhdGFiYXNlX3ByZXBhcmVkX2NvbHVtbnMKLSAgICAgICAgKTsKLQot ICAgICAgICBwZ0FkbWluLkRhc2hib2FyZC5yZW5kZXJfZ3JpZF9kYXRhKGRpdl9kYXRhYmFzZV9h Y3Rpdml0eSk7Ci0KLSAgICAgICAgLy8gKFJlKXJlbmRlciB0aGUgYXBwcm9wcmlhdGUgdGFiCi0g ICAgICAgICQoJ2FbZGF0YS10b2dnbGU9InRhYiJdJykub24oJ3Nob3duLmJzLnRhYicsIGZ1bmN0 aW9uKGUpIHsKLSAgICAgICAgICBzZWxmLnJlbmRlclRhYihlLCB0YWJfZ3JpZF9tYXApOwotICAg ICAgICB9KTsKLQotICAgICAgICAkKCcjYnRuX3JlZnJlc2gnKS5vZmYoJ2NsaWNrJykub24oJ2Ns aWNrJywgKCkgPT4gewotICAgICAgICAgIGxldCBjdXJyR3JpZCA9IHRhYl9ncmlkX21hcFskKCcj ZGFzaGJvYXJkLWFjdGl2aXR5IC5uYXYtdGFicyAuYWN0aXZlJykuYXR0cignYXJpYS1jb250cm9s cycpXTsKLSAgICAgICAgICBwZ0FkbWluLkRhc2hib2FyZC5yZW5kZXJfZ3JpZF9kYXRhKGN1cnJH cmlkKTsKLSAgICAgICAgfSk7Ci0gICAgICB9Ci0gICAgfSwKLSAgICB0b2dnbGVWaXNpYmlsaXR5 OiBmdW5jdGlvbih2aXNpYmxlLCBjbG9zZWQ9ZmFsc2UpIHsKLSAgICAgIGRhc2hib2FyZFZpc2li bGUgPSB2aXNpYmxlOwotICAgICAgaWYoY2xvc2VkKSB7Ci0gICAgICAgIHRoaXMuY2hhcnRzRG9t T2JqICYmIHRoaXMuY2hhcnRzRG9tT2JqLnVubW91bnQoKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAg ICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgICAgaSA9IHQgPyB0LnNlbGVjdGVk KCkgOiAwLAotICAgICAgICAgIGQgPSBpICYmIHQuaXRlbURhdGEoaSk7Ci0KLSAgICAgICAgdGhp cy5jaGFydHNEb21PYmogJiYgdGhpcy5jaGFydHNEb21PYmouc2V0UGFnZVZpc2libGUoZGFzaGJv YXJkVmlzaWJsZSk7Ci0gICAgICAgIHRoaXMub2JqZWN0X3NlbGVjdGVkKGksIGQpOwotICAgICAg fQotICAgIH0sCi0gICAgY2FuX3Rha2VfYWN0aW9uOiBmdW5jdGlvbihtKSB7Ci0gICAgICAvLyBX ZSB3aWxsIHZhbGlkYXRlIGlmIHVzZXIgaXMgYWxsb3dlZCB0byBjYW5jZWwgdGhlIGFjdGl2ZSBx dWVyeQotICAgICAgLy8gSWYgdGhlcmUgaXMgb25seSBvbmUgYWN0aXZlIHNlc3Npb24gbWVhbnMg aXQgcHJvYmFibHkgb3VyIG1haW4KLSAgICAgIC8vIGNvbm5lY3Rpb24gc2Vzc2lvbgotICAgICAg dmFyIGFjdGl2ZV9zZXNzaW9ucyA9IG0uY29sbGVjdGlvbi53aGVyZSh7Ci0gICAgICAgICAgJ3N0 YXRlJzogJ2FjdGl2ZScsCi0gICAgICAgIH0pLAotICAgICAgICBwZ192ZXJzaW9uID0gdGhpcy5n ZXQoJ3Bvc3RncmVzX3ZlcnNpb24nKSB8fCBudWxsLAotICAgICAgICBjZWxsX2FjdGlvbiA9IHRo aXMuZ2V0KCdjZWxsX2FjdGlvbicpIHx8IG51bGwsCi0gICAgICAgIGlzX2NhbmNlbF9zZXNzaW9u ID0gY2VsbF9hY3Rpb24gPT09ICdjYW5jZWwnLAotICAgICAgICB0eHRNZXNzYWdlOwotCi0gICAg ICAvLyBXaXRoIFBHMTAsIFdlIGhhdmUgYmFja2dyb3VuZCBwcm9jZXNzIHNob3dpbmcgb24gZGFz aGJvYXJkCi0gICAgICAvLyBXZSB3aWxsIG5vdCBhbGxvdyB1c2VyIHRvIGNhbmNlbCB0aGVtIGFz IHRoZXkgd2lsbCBmYWlsIHdpdGggZXJyb3IKLSAgICAgIC8vIGFueXdheSwgc28gYmV0dGVyIHVz YWJpbGl0eSB3ZSB3aWxsIHRocm93IG91ciBvbiBub3RpZmljYXRpb24KLQotICAgICAgLy8gQmFj a2dyb3VuZCBwcm9jZXNzZXMgZG8gbm90IGhhdmUgZGF0YWJhc2UgZmllbGQgcG9wdWxhdGVkCi0g ICAgICBpZiAocGdfdmVyc2lvbiAmJiBwZ192ZXJzaW9uID49IDEwMDAwMCAmJiAhbS5nZXQoJ2Rh dG5hbWUnKSkgewotICAgICAgICBpZiAoaXNfY2FuY2VsX3Nlc3Npb24pIHsKLSAgICAgICAgICB0 eHRNZXNzYWdlID0gZ2V0dGV4dCgnWW91IGNhbm5vdCBjYW5jZWwgYmFja2dyb3VuZCB3b3JrZXIg cHJvY2Vzc2VzLicpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHR4dE1lc3NhZ2UgPSBn ZXR0ZXh0KCdZb3UgY2Fubm90IHRlcm1pbmF0ZSBiYWNrZ3JvdW5kIHdvcmtlciBwcm9jZXNzZXMu Jyk7Ci0gICAgICAgIH0KLSAgICAgICAgTm90aWZ5LmluZm8odHh0TWVzc2FnZSk7Ci0gICAgICAg IHJldHVybiBmYWxzZTsKLSAgICAgICAgLy8gSWYgaXQgaXMgdGhlIGxhc3QgYWN0aXZlIGNvbm5l Y3Rpb24gb24gbWFpbnRlbmFuY2UgZGIgdGhlbiBlcnJvciBvdXQKLSAgICAgIH0gZWxzZSBpZiAo bWFpbnRlbmFuY2VfZGF0YWJhc2UgPT0gbS5nZXQoJ2RhdG5hbWUnKSAmJgotICAgICAgICBtLmdl dCgnc3RhdGUnKSA9PSAnYWN0aXZlJyAmJiBhY3RpdmVfc2Vzc2lvbnMubGVuZ3RoID09IDEpIHsK LSAgICAgICAgaWYgKGlzX2NhbmNlbF9zZXNzaW9uKSB7Ci0gICAgICAgICAgdHh0TWVzc2FnZSA9 IGdldHRleHQoJ1lvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2FuY2VsIHRoZSBtYWluIGFjdGl2ZSBz ZXNzaW9uLicpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHR4dE1lc3NhZ2UgPSBnZXR0 ZXh0KCdZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIHRlcm1pbmF0ZSB0aGUgbWFpbiBhY3RpdmUgc2Vz c2lvbi4nKTsKLSAgICAgICAgfQotICAgICAgICBOb3RpZnkuZXJyb3IodHh0TWVzc2FnZSk7Ci0g ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0gZWxzZSBpZiAoaXNfY2FuY2VsX3Nlc3Npb24g JiYgbS5nZXQoJ3N0YXRlJykgPT0gJ2lkbGUnKSB7Ci0gICAgICAgIC8vIElmIHRoaXMgc2Vzc2lv biBpcyBhbHJlYWR5IGlkbGUgdGhlbiBkbyBub3RoaW5nCi0gICAgICAgIE5vdGlmeS5pbmZvKAot ICAgICAgICAgIGdldHRleHQoJ1RoZSBzZXNzaW9uIGlzIGFscmVhZHkgaW4gaWRsZSBzdGF0ZS4n KQotICAgICAgICApOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9IGVsc2UgaWYgKGNh bl9zaWduYWxfYmFja2VuZCkgewotICAgICAgICAvLyB1c2VyIHdpdGggbWVtYmVyc2hpcCBvZiAn cGdfc2lnbmFsX2JhY2tlbmQnIGNhbiB0ZXJtaW5hdGUgdGhlIHNlc3Npb24gb2Ygbm9uIGFkbWlu IHVzZXIuCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfSBlbHNlIGlmIChpc19zdXBlcl91 c2VyKSB7Ci0gICAgICAgIC8vIFN1cGVyIHVzZXIgY2FuIGRvIGFueXRoaW5nCi0gICAgICAgIHJl dHVybiB0cnVlOwotICAgICAgfSBlbHNlIGlmIChjdXJyZW50X3VzZXIgJiYgY3VycmVudF91c2Vy ID09IG0uZ2V0KCd1c2VuYW1lJykpIHsKLSAgICAgICAgLy8gTm9uLXN1cGVyIHVzZXIgY2FuIGNh bmNlbCBvbmx5IHRoZWlyIGFjdGl2ZSBxdWVyaWVzCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg ICAgfSBlbHNlIHsKLSAgICAgICAgLy8gRG8gbm90IGFsbG93IHRvIGNhbmNlbCBzb21lb25lIGVs c2Ugc2Vzc2lvbiB0byBub24tc3VwZXIgdXNlcgotICAgICAgICBpZiAoaXNfY2FuY2VsX3Nlc3Np b24pIHsKLSAgICAgICAgICB0eHRNZXNzYWdlID0gZ2V0dGV4dCgnU3VwZXJ1c2VyIHByaXZpbGVn ZXMgYXJlIHJlcXVpcmVkIHRvIGNhbmNlbCBhbm90aGVyIHVzZXJzIHF1ZXJ5LicpOwotICAgICAg ICB9IGVsc2UgewotICAgICAgICAgIHR4dE1lc3NhZ2UgPSBnZXR0ZXh0KCdTdXBlcnVzZXIgcHJp dmlsZWdlcyBhcmUgcmVxdWlyZWQgdG8gdGVybWluYXRlIGFub3RoZXIgdXNlcnMgcXVlcnkuJyk7 Ci0gICAgICAgIH0KLSAgICAgICAgTm90aWZ5LmVycm9yKHR4dE1lc3NhZ2UpOwotICAgICAgICBy ZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgfSwKLSAgfTsKLQotICByZXR1cm4gcGdBZG1pbi5E YXNoYm9hcmQ7Ci19KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0aWMv anMvZGFzaGJvYXJkRHVtbXkuanMgYi93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pzL2Rh c2hib2FyZER1bW15LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uMTgz Njg2OGUxCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9q cy9kYXNoYm9hcmREdW1teS5qcwpAQCAtMCwwICsxLDI3ODggQEAKKy8vIC8vICAvLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyAv LyAgLy8KKy8vIC8vICAvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLyAvLyAgLy8K Ky8vIC8vICAvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9w bWVudCBUZWFtCisvLyAvLyAgLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUg UG9zdGdyZVNRTCBMaWNlbmNlCisvLyAvLyAgLy8KKy8vIC8vICAvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisvLyAvLyAgaW1w b3J0IE5vdGlmeSBmcm9tICcuLi8uLi8uLi9zdGF0aWMvanMvaGVscGVycy9Ob3RpZmllcic7CisK Ky8vIC8vICBkZWZpbmUoJ3BnYWRtaW4uZGFzaGJvYXJkJywgWworLy8gLy8gICAnc291cmNlcy91 cmxfZm9yJywgJ3NvdXJjZXMvZ2V0dGV4dCcsICdyZXF1aXJlJywgJ2pxdWVyeScsICd1bmRlcnNj b3JlJywKKy8vIC8vICAgJ3NvdXJjZXMvcGdhZG1pbicsICdiYWNrYm9uZScsICdiYWNrZ3JpZCcs CisvLyAvLyAgICdwZ2FkbWluLmFsZXJ0aWZ5anMnLCAncGdhZG1pbi5iYWNrZm9ybScsICdzb3Vy Y2VzL25vZGVzL2Rhc2hib2FyZCcsCisvLyAvLyAgICdzb3VyY2VzL3dpbmRvdycsICcuL0NoYXJ0 c0RPTScsICdwZ2FkbWluLmJyb3dzZXInLCAnYm9vdHN0cmFwJywgJ3djZG9ja2VyJywKKy8vIC8v ICBdLCBmdW5jdGlvbigKKy8vIC8vICAgdXJsX2ZvciwgZ2V0dGV4dCwgciwgJCwgXywgcGdBZG1p biwgQmFja2JvbmUsIEJhY2tncmlkLAorLy8gLy8gICBBbGVydGlmeSwgQmFja2Zvcm0sIE5vZGVz RGFzaGJvYXJkLCBwZ1dpbmRvdywgQ2hhcnRzRE9NCisvLyAvLyAgKSB7CisKKy8vIC8vICAgcGdB ZG1pbi5Ccm93c2VyID0gcGdBZG1pbi5Ccm93c2VyIHx8IHt9OworLy8gLy8gICB2YXIgcGdCcm93 c2VyID0gcGdBZG1pbi5Ccm93c2VyOworCisvLyAvLyAgIC8qIFJldHVybiBiYWNrLCB0aGlzIGhh cyBiZWVuIGNhbGxlZCBtb3JlIHRoYW4gb25jZSAqLworLy8gLy8gICBpZiAocGdBZG1pbi5EYXNo Ym9hcmQpCisvLyAvLyAgICAgcmV0dXJuOworCisvLyAvLyAgIHZhciBkYXNoYm9hcmRWaXNpYmxl ID0gdHJ1ZSwKKy8vIC8vICAgICBjYW5jZWxfcXVlcnlfdXJsID0gJycsCisvLyAvLyAgICAgdGVy bWluYXRlX3Nlc3Npb25fdXJsID0gJycsCisvLyAvLyAgICAgaXNfc3VwZXJfdXNlciA9IGZhbHNl LAorLy8gLy8gICAgIGN1cnJlbnRfdXNlciwgbWFpbnRlbmFuY2VfZGF0YWJhc2UsCisvLyAvLyAg ICAgaXNfc2VydmVyX2Rhc2hib2FyZCA9IGZhbHNlLAorLy8gLy8gICAgIGlzX2RhdGFiYXNlX2Rh c2hib2FyZCA9IGZhbHNlLAorLy8gLy8gICAgIGNhbl9zaWduYWxfYmFja2VuZCA9IGZhbHNlOwor CisvLyAvLyAgIC8vIEN1c3RvbSBCYWNrR3JpZCBjZWxsLCBSZXNwb25zaWJsZSBmb3IgY2FuY2Vs bGluZyBhY3RpdmUgc2Vzc2lvbnMKKy8vIC8vICAgdmFyIGN1c3RvbURhc2hib2FyZEFjdGlvbkNl bGwgPSBCYWNrZ3JpZC5FeHRlbnNpb24uRGVsZXRlQ2VsbC5leHRlbmQoeworLy8gLy8gICAgIHJl bmRlcjogZnVuY3Rpb24oKSB7CisvLyAvLyAgICAgICB0aGlzLiRlbC5lbXB0eSgpOworLy8gLy8g ICAgICAgdmFyIHNlbGYgPSB0aGlzLAorLy8gLy8gICAgICAgICBjZWxsX2FjdGlvbiA9IHNlbGYu Y29sdW1uLmdldCgnY2VsbF9hY3Rpb24nKTsKKy8vIC8vICAgICAgIC8vIGlmIGNhbmNlbCBxdWVy eSBidXR0b24gdGhlbgorLy8gLy8gICAgICAgaWYgKGNlbGxfYWN0aW9uID09PSAnY2FuY2VsJykg eworLy8gLy8gICAgICAgICB0aGlzLiRlbC5odG1sKAorLy8gLy8gICAgICAgICAgICc8aSBjbGFz cz1cJ2ZhIGZhLXN0b3BcJyBkYXRhLXRvZ2dsZT1cJ3Rvb2x0aXBcJyAnICsKKy8vIC8vICAgICAg ICAgICAndGl0bGU9XCcnICsgZ2V0dGV4dCgnQ2FuY2VsIHRoZSBhY3RpdmUgcXVlcnknKSArCisv LyAvLyAgICAgICAgICAgJ1wnIGFyaWEtbGFiZWw9XCcnKyBnZXR0ZXh0KCdDYW5jZWwgdGhlIGFj dGl2ZSBxdWVyeScpICsnXCc+PC9pPicKKy8vIC8vICAgICAgICAgKTsKKy8vIC8vICAgICAgIH0g ZWxzZSB7CisvLyAvLyAgICAgICAgIHRoaXMuJGVsLmh0bWwoCisvLyAvLyAgICAgICAgICAgJzxp IGNsYXNzPVwnZmEgZmEtdGltZXMtY2lyY2xlIHRleHQtZGFuZ2VyXCcgZGF0YS10b2dnbGU9XCd0 b29sdGlwXCcgJyArCisvLyAvLyAgICAgICAgICAgJ3RpdGxlPVwnJyArIGdldHRleHQoJ1Rlcm1p bmF0ZSB0aGUgc2Vzc2lvbicpICsKKy8vIC8vICAgICAgICAgICAnXCcgYXJpYS1sYWJlbD1cJycr IGdldHRleHQoJ1Rlcm1pbmF0ZSB0aGUgc2Vzc2lvbicpICsnXCc+PC9pPicKKy8vIC8vICAgICAg ICAgKTsKKy8vIC8vICAgICAgIH0KKy8vIC8vICAgICAgIHRoaXMuJGVsLmF0dHIoJ3RhYmluZGV4 JywgMCk7CisvLyAvLyAgICAgICB0aGlzLiRlbC5vbigna2V5ZG93bicsIGZ1bmN0aW9uKGUpIHsK Ky8vIC8vICAgICAgICAgLy8gdGVybWluYXRpbmcgc2Vzc2lvbiBvciBjYW5jZWwgdGhlIGFjdGl2 ZSBxdWVyeS4KKy8vIC8vICAgICAgICAgaWYgKGUua2V5Q29kZSA9PSAzMikgeworLy8gLy8gICAg ICAgICAgIHNlbGYuJGVsLmNsaWNrKCk7CisvLyAvLyAgICAgICAgIH0KKy8vIC8vICAgICAgIH0p OworLy8gLy8gICAgICAgdGhpcy5kZWxlZ2F0ZUV2ZW50cygpOworLy8gLy8gICAgICAgcmV0dXJu IHRoaXM7CisvLyAvLyAgICAgfSwKKy8vIC8vICAgICBkZWxldGVSb3c6IGZ1bmN0aW9uKGUpIHsK Ky8vIC8vICAgICAgIHZhciBzZWxmID0gdGhpcywKKy8vIC8vICAgICAgICAgdGl0bGUsIHR4dENv bmZpcm0sIHR4dFN1Y2Nlc3MsIHR4dEVycm9yLCBhY3Rpb25fdXJsLAorLy8gLy8gICAgICAgICBj ZWxsX2FjdGlvbiA9IHNlbGYuY29sdW1uLmdldCgnY2VsbF9hY3Rpb24nKTsKKworLy8gLy8gICAg ICAgZS5wcmV2ZW50RGVmYXVsdCgpOworCisvLyAvLyAgICAgICB2YXIgY2FuRGVsZXRlUm93ID0g QmFja2dyaWQuY2FsbEJ5TmVlZCgKKy8vIC8vICAgICAgICAgc2VsZi5jb2x1bW4uZ2V0KCdjYW5E ZWxldGVSb3cnKSwgc2VsZi5jb2x1bW4sIHNlbGYubW9kZWwKKy8vIC8vICAgICAgICk7CisvLyAv LyAgICAgICAvLyBJZiB3ZSBhcmUgbm90IGFsbG93ZWQgdG8gY2FuY2VsIHRoZSBxdWVyeSwgcmV0 dXJuIGZyb20gaGVyZQorLy8gLy8gICAgICAgaWYgKCFjYW5EZWxldGVSb3cpCisvLyAvLyAgICAg ICAgIHJldHVybjsKKworLy8gLy8gICAgICAgLy8gVGhpcyB3aWxsIHJlZnJlc2ggdGhlIGdyaWQK Ky8vIC8vICAgICAgIGxldCByZWZyZXNoX2dyaWQgPSAoKSA9PiB7CisvLyAvLyAgICAgICAgICQo JyNidG5fcmVmcmVzaCcpLnRyaWdnZXIoJ2NsaWNrJyk7CisvLyAvLyAgICAgICB9OworCisvLyAv LyAgICAgICBpZiAoY2VsbF9hY3Rpb24gPT09ICdjYW5jZWwnKSB7CisvLyAvLyAgICAgICAgIHRp dGxlID0gZ2V0dGV4dCgnQ2FuY2VsIEFjdGl2ZSBRdWVyeT8nKTsKKy8vIC8vICAgICAgICAgdHh0 Q29uZmlybSA9IGdldHRleHQoJ0FyZSB5b3Ugc3VyZSB5b3Ugd2lzaCB0byBjYW5jZWwgdGhlIGFj dGl2ZSBxdWVyeT8nKTsKKy8vIC8vICAgICAgICAgdHh0U3VjY2VzcyA9IGdldHRleHQoJ0FjdGl2 ZSBxdWVyeSBjYW5jZWxsZWQgc3VjY2Vzc2Z1bGx5LicpOworLy8gLy8gICAgICAgICB0eHRFcnJv ciA9IGdldHRleHQoJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxzdCBjYW5jZWxsaW5nIHRoZSBhY3Rp dmUgcXVlcnkuJyk7CisvLyAvLyAgICAgICAgIGFjdGlvbl91cmwgPSBjYW5jZWxfcXVlcnlfdXJs ICsgc2VsZi5tb2RlbC5nZXQoJ3BpZCcpOworLy8gLy8gICAgICAgfSBlbHNlIHsKKy8vIC8vICAg ICAgICAgdGl0bGUgPSBnZXR0ZXh0KCdUZXJtaW5hdGUgU2Vzc2lvbj8nKTsKKy8vIC8vICAgICAg ICAgdHh0Q29uZmlybSA9IGdldHRleHQoJ0FyZSB5b3Ugc3VyZSB5b3Ugd2lzaCB0byB0ZXJtaW5h dGUgdGhlIHNlc3Npb24/Jyk7CisvLyAvLyAgICAgICAgIHR4dFN1Y2Nlc3MgPSBnZXR0ZXh0KCdT ZXNzaW9uIHRlcm1pbmF0ZWQgc3VjY2Vzc2Z1bGx5LicpOworLy8gLy8gICAgICAgICB0eHRFcnJv ciA9IGdldHRleHQoJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxzdCB0ZXJtaW5hdGluZyB0aGUgYWN0 aXZlIHF1ZXJ5LicpOworLy8gLy8gICAgICAgICBhY3Rpb25fdXJsID0gdGVybWluYXRlX3Nlc3Np b25fdXJsICsgc2VsZi5tb2RlbC5nZXQoJ3BpZCcpOworLy8gLy8gICAgICAgfQorCisvLyAvLyAg ICAgICBOb3RpZnkuY29uZmlybSgKKy8vIC8vICAgICAgICAgdGl0bGUsIHR4dENvbmZpcm0sCisv LyAvLyAgICAgICAgIGZ1bmN0aW9uKCkgeworLy8gLy8gICAgICAgICAgICQuYWpheCh7CisvLyAv LyAgICAgICAgICAgICB1cmw6IGFjdGlvbl91cmwsCisvLyAvLyAgICAgICAgICAgICB0eXBlOiAn REVMRVRFJywKKy8vIC8vICAgICAgICAgICB9KQorLy8gLy8gICAgICAgICAgICAgLmRvbmUoZnVu Y3Rpb24ocmVzKSB7CisvLyAvLyAgICAgICAgICAgICAgIGlmIChyZXMgPT0gZ2V0dGV4dCgnU3Vj Y2VzcycpKSB7CisvLyAvLyAgICAgICAgICAgICAgICAgTm90aWZ5LnN1Y2Nlc3ModHh0U3VjY2Vz cyk7CisvLyAvLyAgICAgICAgICAgICAgICAgcmVmcmVzaF9ncmlkKCk7CisvLyAvLyAgICAgICAg ICAgICAgIH0gZWxzZSB7CisvLyAvLyAgICAgICAgICAgICAgICAgTm90aWZ5LmVycm9yKHR4dEVy cm9yKTsKKy8vIC8vICAgICAgICAgICAgICAgfQorLy8gLy8gICAgICAgICAgICAgfSkKKy8vIC8v ICAgICAgICAgICAgIC5mYWlsKGZ1bmN0aW9uKHhociwgc3RhdHVzLCBlcnJvcikgeworLy8gLy8g ICAgICAgICAgICAgICBOb3RpZnkucGdSZXNwRXJyb3JOb3RpZnkoeGhyLCBlcnJvcik7CisvLyAv LyAgICAgICAgICAgICB9KTsKKy8vIC8vICAgICAgICAgfSwKKy8vIC8vICAgICAgICAgZnVuY3Rp b24oKSB7CisvLyAvLyAgICAgICAgICAgcmV0dXJuIHRydWU7CisvLyAvLyAgICAgICAgIH0KKy8v IC8vICAgICAgICk7CisvLyAvLyAgICAgfSwKKy8vIC8vICAgfSk7CisKKworLy8gLy8gICAvLyBT dWJub2RlIENlbGwsIHdoaWNoIHdpbGwgZGlzcGxheSBzdWJub2RlIGNvbnRyb2wKKy8vIC8vICAg dmFyIFNlc3Npb25EZXRhaWxzQ2VsbCA9IEJhY2tncmlkLkV4dGVuc2lvbi5PYmplY3RDZWxsLmV4 dGVuZCh7CisvLyAvLyAgICAgZW50ZXJFZGl0TW9kZTogZnVuY3Rpb24oKSB7CisvLyAvLyAgICAg ICAvLyBOb3RpZnkgdGhhdCB3ZSBhcmUgYWJvdXQgdG8gZW50ZXIgaW4gZWRpdCBtb2RlIGZvciBj dXJyZW50IGNlbGwuCisvLyAvLyAgICAgICB0aGlzLm1vZGVsLnRyaWdnZXIoJ2VudGVyaW5nRWRp dE1vZGUnLCBbdGhpc10pOworCisvLyAvLyAgICAgICBCYWNrZ3JpZC5DZWxsLnByb3RvdHlwZS5l bnRlckVkaXRNb2RlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisvLyAvLyAgICAgICAvKiBNYWtl IHN1cmUgLSB3ZSBsaXN0ZW4gdG8gdGhlIGNsaWNrIGV2ZW50ICovCisvLyAvLyAgICAgICB0aGlz LmRlbGVnYXRlRXZlbnRzKCk7CisvLyAvLyAgICAgICB2YXIgZWRpdGFibGUgPSBCYWNrZ3JpZC5j YWxsQnlOZWVkKHRoaXMuY29sdW1uLmVkaXRhYmxlKCksIHRoaXMuY29sdW1uLCB0aGlzLm1vZGVs KTsKKworLy8gLy8gICAgICAgaWYgKGVkaXRhYmxlKSB7CisvLyAvLyAgICAgICAgIHRoaXMuJGVs Lmh0bWwoCisvLyAvLyAgICAgICAgICAgJzxpIGNsYXNzPVwnZmEgZmEtY2FyZXQtZG93biBzdWJu b2RlLWVkaXQtaW4tcHJvY2Vzc1wnPjwvaT4nCisvLyAvLyAgICAgICAgICk7CisvLyAvLyAgICAg ICAgIHRoaXMubW9kZWwudHJpZ2dlcigKKy8vIC8vICAgICAgICAgICAncGctc3ViLW5vZGU6b3Bl bmVkJywgdGhpcy5tb2RlbCwgdGhpcworLy8gLy8gICAgICAgICApOworLy8gLy8gICAgICAgfQor Ly8gLy8gICAgIH0sCisvLyAvLyAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKKy8vIC8vICAgICAg IHRoaXMuJGVsLmVtcHR5KCk7CisvLyAvLyAgICAgICB0aGlzLiRlbC5odG1sKAorLy8gLy8gICAg ICAgICAnPGkgY2xhc3M9XCdmYSBmYS1jYXJldC1yaWdodFwnIGRhdGEtdG9nZ2xlPVwndG9vbHRp cFwnICcgKworLy8gLy8gICAgICAgICAndGl0bGU9XCcnICsgZ2V0dGV4dCgnVmlldyB0aGUgYWN0 aXZlIHNlc3Npb24gZGV0YWlscycpICsKKy8vIC8vICAgICAgICAgJ1wnIGFyaWEtbGFiZWw9XCcn KyBnZXR0ZXh0KCdWaWV3IHRoZSBhY3RpdmUgc2Vzc2lvbiBkZXRhaWxzJykgKydcJz48L2k+Jwor Ly8gLy8gICAgICAgKTsKKy8vIC8vICAgICAgIHRoaXMuZGVsZWdhdGVFdmVudHMoKTsKKy8vIC8v ICAgICAgIGlmICh0aGlzLmdyYWJGb2N1cykKKy8vIC8vICAgICAgICAgdGhpcy4kZWwudHJpZ2dl cignZm9jdXMnKTsKKy8vIC8vICAgICAgIHJldHVybiB0aGlzOworLy8gLy8gICAgIH0sCisvLyAv LyAgIH0pOworCisvLyAvLyAgIC8vIFN1Ym5vZGUgTW9kZWwKKy8vIC8vICAgdmFyIEFjdGl2ZVF1 ZXJ5RGV0YWlsc01vZGVsID0gQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHsKKy8vIC8vICAgICBkZWZh dWx0czogeworLy8gLy8gICAgICAgdmVyc2lvbjogbnVsbCwKKy8vIC8vICAgICAgIC8qIFBvc3Rn cmVzIHZlcnNpb24gKi8KKy8vIC8vICAgICB9LAorLy8gLy8gICAgIHNjaGVtYTogW3sKKy8vIC8v ICAgICAgIGlkOiAnYmFja2VuZF90eXBlJywKKy8vIC8vICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdC YWNrZW5kIHR5cGUnKSwKKy8vIC8vICAgICAgIHR5cGU6ICd0ZXh0JywKKy8vIC8vICAgICAgIGVk aXRhYmxlOiB0cnVlLAorLy8gLy8gICAgICAgcmVhZG9ubHk6IHRydWUsCisvLyAvLyAgICAgICBn cm91cDogZ2V0dGV4dCgnRGV0YWlscycpLAorLy8gLy8gICAgICAgdmlzaWJsZTogZnVuY3Rpb24o KSB7CisvLyAvLyAgICAgICAgIHJldHVybiB0aGlzLnZlcnNpb24gPj0gMTAwMDAwOworLy8gLy8g ICAgICAgfSwKKy8vIC8vICAgICB9LCB7CisvLyAvLyAgICAgICBpZDogJ3F1ZXJ5X3N0YXJ0JywK Ky8vIC8vICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdRdWVyeSBzdGFydGVkIGF0JyksCisvLyAvLyAg ICAgICB0eXBlOiAndGV4dCcsCisvLyAvLyAgICAgICBlZGl0YWJsZTogZmFsc2UsCisvLyAvLyAg ICAgICByZWFkb25seTogdHJ1ZSwKKy8vIC8vICAgICAgIGdyb3VwOiBnZXR0ZXh0KCdEZXRhaWxz JyksCisvLyAvLyAgICAgfSwgeworLy8gLy8gICAgICAgaWQ6ICdzdGF0ZV9jaGFuZ2UnLAorLy8g Ly8gICAgICAgbGFiZWw6IGdldHRleHQoJ0xhc3Qgc3RhdGUgY2hhbmdlZCBhdCcpLAorLy8gLy8g ICAgICAgdHlwZTogJ3RleHQnLAorLy8gLy8gICAgICAgZWRpdGFibGU6IHRydWUsCisvLyAvLyAg ICAgICByZWFkb25seTogdHJ1ZSwKKy8vIC8vICAgICAgIGdyb3VwOiBnZXR0ZXh0KCdEZXRhaWxz JyksCisvLyAvLyAgICAgfSwgeworLy8gLy8gICAgICAgaWQ6ICdxdWVyeScsCisvLyAvLyAgICAg ICBsYWJlbDogZ2V0dGV4dCgnU1FMJyksCisvLyAvLyAgICAgICB0eXBlOiAndGV4dCcsCisvLyAv LyAgICAgICBlZGl0YWJsZTogdHJ1ZSwKKy8vIC8vICAgICAgIHJlYWRvbmx5OiB0cnVlLAorLy8g Ly8gICAgICAgY29udHJvbDogQmFja2Zvcm0uU3FsRmllbGRDb250cm9sLAorLy8gLy8gICAgICAg Z3JvdXA6IGdldHRleHQoJ0RldGFpbHMnKSwKKy8vIC8vICAgICB9XSwKKy8vIC8vICAgfSk7CisK Ky8vIC8vICAgcGdBZG1pbi5EYXNoYm9hcmQgPSB7CisvLyAvLyAgICAgaW5pdDogZnVuY3Rpb24o KSB7CisvLyAvLyAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkKKy8vIC8vICAgICAgICAgcmV0 dXJuOworCisvLyAvLyAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsKKy8vIC8vICAgICAg IHRoaXMuY2hhcnRzRG9tT2JqID0gbnVsbDsKKworLy8gLy8gICAgICAgdGhpcy5zaWQgPSB0aGlz LmRpZCA9IC0xOworLy8gLy8gICAgICAgdGhpcy52ZXJzaW9uID0gLTE7CisKKworLy8gLy8gICAg ICAgLy8gQmluZCB0aGUgRGFzaGJvYXJkIG9iamVjdCB3aXRoIHRoZSAnb2JqZWN0X3NlbGVjdGVk JyBmdW5jdGlvbgorLy8gLy8gICAgICAgdmFyIHNlbGVjdGVkID0gdGhpcy5vYmplY3Rfc2VsZWN0 ZWQuYmluZCh0aGlzKTsKKy8vIC8vICAgICAgIHZhciBkaXNjb25uZWN0ZWQgPSB0aGlzLm9iamVj dF9kaXNjb25uZWN0ZWQuYmluZCh0aGlzKTsKKworLy8gLy8gICAgICAgLy8gTGlzdGVuIGZvciBz ZWxlY3Rpb24gb2YgYW55IG9mIG9iamVjdAorLy8gLy8gICAgICAgcGdCcm93c2VyLkV2ZW50cy5v bigncGdhZG1pbi1icm93c2VyOnRyZWU6c2VsZWN0ZWQnLCBzZWxlY3RlZCk7CisKKy8vIC8vICAg ICAgIC8vIExpc3RlbiBmb3Igc2VydmVyIGRpc2Nvbm5lY3RlZCBldmVudAorLy8gLy8gICAgICAg cGdCcm93c2VyLkV2ZW50cy5vbigncGdhZG1pbjpzZXJ2ZXI6ZGlzY29ubmVjdCcsIGRpc2Nvbm5l Y3RlZCk7CisKKy8vIC8vICAgICAgIC8vIExvYWQgdGhlIGRlZmF1bHQgd2VsY29tZSBkYXNoYm9h cmQKKy8vIC8vICAgICAgIHZhciB1cmwgPSB1cmxfZm9yKCdkYXNoYm9hcmQuaW5kZXgnKTsKKwor Ly8gLy8gICAgICAgdmFyIGRhc2hib2FyZFBhbmVsID0gcGdCcm93c2VyLnBhbmVsc1snZGFzaGJv YXJkJ10ucGFuZWw7CisvLyAvLyAgICAgICBpZiAoZGFzaGJvYXJkUGFuZWwpIHsKKy8vIC8vICAg ICAgICAgdmFyIGRpdiA9IGRhc2hib2FyZFBhbmVsLmxheW91dCgpLnNjZW5lKCkuZmluZCgnLnBn LXBhbmVsLWNvbnRlbnQnKTsKKy8vIC8vICAgICAgICAgaWYgKGRpdikgeworLy8gLy8gICAgICAg ICAgIHZhciBhamF4SG9vayA9IGZ1bmN0aW9uKCkgeworLy8gLy8gICAgICAgICAgICAgJC5hamF4 KHsKKy8vIC8vICAgICAgICAgICAgICAgdXJsOiB1cmwsCisvLyAvLyAgICAgICAgICAgICAgIHR5 cGU6ICdHRVQnLAorLy8gLy8gICAgICAgICAgICAgICBkYXRhVHlwZTogJ2h0bWwnLAorLy8gLy8g ICAgICAgICAgICAgfSkKKy8vIC8vICAgICAgICAgICAgICAgLmRvbmUoZnVuY3Rpb24oZGF0YSkg eworLy8gLy8gICAgICAgICAgICAgICAgICQoZGl2KS5odG1sKGRhdGEpOworLy8gLy8gICAgICAg ICAgICAgICB9KQorLy8gLy8gICAgICAgICAgICAgICAuZmFpbChmdW5jdGlvbih4aHIsIGVycm9y KSB7CisvLyAvLyAgICAgICAgICAgICAgICAgc2VsZi5vbkZhaWwoeGhyLCBlcnJvciwgZGl2LCBh amF4SG9vayk7CisvLyAvLyAgICAgICAgICAgICAgIH0pOworLy8gLy8gICAgICAgICAgIH07Cisv LyAvLyAgICAgICAgICAgJChkaXYpLmh0bWwoCisvLyAvLyAgICAgICAgICAgICAnPGRpdiBjbGFz cz0icGctcGFuZWwtbWVzc2FnZSIgcm9sZT0iYWxlcnQiPicgKyBnZXR0ZXh0KCdMb2FkaW5nIGRh c2hib2FyZC4uLicpICsgJzwvZGl2PicKKy8vIC8vICAgICAgICAgICApOworLy8gLy8gICAgICAg ICAgIGFqYXhIb29rKCk7CisKKy8vIC8vICAgICAgICAgICAvLyBDYWNoZSB0aGUgY3VycmVudCBJ RHMgZm9yIG5leHQgdGltZQorLy8gLy8gICAgICAgICAgICQoZGFzaGJvYXJkUGFuZWwpLmRhdGEo J3NpZCcsIC0xKTsKKy8vIC8vICAgICAgICAgICAkKGRhc2hib2FyZFBhbmVsKS5kYXRhKCdkaWQn LCAtMSk7CisvLyAvLyAgICAgICAgIH0KKy8vIC8vICAgICAgIH0KKy8vIC8vICAgICB9LAorCisv LyAvLyAgICAgb25GYWlsOiBmdW5jdGlvbih4aHIsIGVycm9yLCBkaXYsIGFqYXhIb29rKSB7Cisv LyAvLyAgICAgICBOb3RpZnkucGdOb3RpZmllcigKKy8vIC8vICAgICAgICAgZXJyb3IsIHhociwK Ky8vIC8vICAgICAgICAgZ2V0dGV4dCgnQW4gZXJyb3Igb2NjdXJyZWQgd2hpbHN0IGxvYWRpbmcg dGhlIGRhc2hib2FyZC4nKSwKKy8vIC8vICAgICAgICAgZnVuY3Rpb24obXNnKSB7CisvLyAvLyAg ICAgICAgICAgaWYobXNnID09PSAnQ1JZUFRLRVlfU0VUJykgeworLy8gLy8gICAgICAgICAgICAg YWpheEhvb2soKTsKKy8vIC8vICAgICAgICAgICB9IGVsc2UgeworLy8gLy8gICAgICAgICAgICAg JChkaXYpLmh0bWwoCisvLyAvLyAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJwZy1wYW5lbC1t ZXNzYWdlIiByb2xlPSJhbGVydCI+JyArIGdldHRleHQoJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxz dCBsb2FkaW5nIHRoZSBkYXNoYm9hcmQuJykgKyAnPC9kaXY+JworLy8gLy8gICAgICAgICAgICAg KTsKKy8vIC8vICAgICAgICAgICB9CisvLyAvLyAgICAgICAgIH0KKy8vIC8vICAgICAgICk7Cisv LyAvLyAgICAgfSwKKworLy8gLy8gICAgIC8vIEhhbmRsZSBTZXJ2ZXIgRGlzY29ubmVjdAorLy8g Ly8gICAgIG9iamVjdF9kaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkgeworLy8gLy8gICAgICAgbGV0 IGl0ZW0gPSBwZ0Jyb3dzZXIudHJlZS5zZWxlY3RlZCgpLAorLy8gLy8gICAgICAgICBpdGVtRGF0 YSA9IGl0ZW0gJiYgcGdCcm93c2VyLnRyZWUuaXRlbURhdGEoaXRlbSk7CisKKy8vIC8vICAgICAg IC8vIFRoZSBzZXJ2ZXIgY29ubmVjdGVkIG1heSBub3QgYmUgdGhlIHNhbWUgb25lLCB3aGljaCB3 YXMgc2VsZWN0ZWQsIGFuZAorLy8gLy8gICAgICAgLy8gd2UgZG8gY2FyZSBvdXQgdGhlIGN1cnJl bnQgc2VsZWN0ZWQgb25lIG9ubHkuCisvLyAvLyAgICAgICBpZiAoaXRlbS5sZW5ndGggIT0gMCkg eworLy8gLy8gICAgICAgICB0aGlzLm9iamVjdF9zZWxlY3RlZChpdGVtLCBpdGVtRGF0YSk7Cisv LyAvLyAgICAgICB9CisvLyAvLyAgICAgfSwKKworLy8gLy8gICAgIC8vIEhhbmRsZSB0cmVldmll dyBjbGlja3MKKy8vIC8vICAgICBvYmplY3Rfc2VsZWN0ZWQ6IGZ1bmN0aW9uKGl0ZW0sIGl0ZW1E YXRhKSB7CisvLyAvLyAgICAgICBsZXQgc2VsZiA9IHRoaXM7CisKKy8vIC8vICAgICAgIGlmIChp dGVtRGF0YSAmJiBpdGVtRGF0YS5fdHlwZSkgeworLy8gLy8gICAgICAgICB2YXIgdHJlZUhpZXJh cmNoeSA9IHBnQnJvd3Nlci50cmVlLmdldFRyZWVOb2RlSGllcmFyY2h5KGl0ZW0pLAorLy8gLy8g ICAgICAgICAgIHVybCA9IE5vZGVzRGFzaGJvYXJkLnVybChpdGVtRGF0YSwgaXRlbSwgdHJlZUhp ZXJhcmNoeSk7CisKKy8vIC8vICAgICAgICAgaWYgKHVybCA9PT0gbnVsbCkgeworLy8gLy8gICAg ICAgICAgIHVybCA9IHVybF9mb3IoJ2Rhc2hib2FyZC5pbmRleCcpOworLy8gLy8gICAgICAgICAg IHNlbGYudmVyc2lvbiA9ICh0cmVlSGllcmFyY2h5LnNlcnZlciAmJiB0cmVlSGllcmFyY2h5LnNl cnZlci52ZXJzaW9uKSB8fCAwOworCisvLyAvLyAgICAgICAgICAgY2FuY2VsX3F1ZXJ5X3VybCA9 IHVybCArICdjYW5jZWxfcXVlcnkvJzsKKy8vIC8vICAgICAgICAgICB0ZXJtaW5hdGVfc2Vzc2lv bl91cmwgPSB1cmwgKyAndGVybWluYXRlX3Nlc3Npb24vJzsKKworLy8gLy8gICAgICAgICAgIC8v IENoZWNrIGlmIHVzZXIgaXMgc3VwZXIgdXNlcgorLy8gLy8gICAgICAgICAgIHZhciBzZXJ2ZXIg PSB0cmVlSGllcmFyY2h5WydzZXJ2ZXInXTsKKy8vIC8vICAgICAgICAgICBtYWludGVuYW5jZV9k YXRhYmFzZSA9IChzZXJ2ZXIgJiYgc2VydmVyLmRiKSB8fCBudWxsOworLy8gLy8gICAgICAgICAg IGNhbl9zaWduYWxfYmFja2VuZCA9IChzZXJ2ZXIgJiYgc2VydmVyLnVzZXIpID8gc2VydmVyLnVz ZXIuY2FuX3NpZ25hbF9iYWNrZW5kIDogZmFsc2U7CisKKy8vIC8vICAgICAgICAgICBpZiAoc2Vy dmVyICYmIHNlcnZlci51c2VyICYmIHNlcnZlci51c2VyLmlzX3N1cGVydXNlcikgeworLy8gLy8g ICAgICAgICAgICAgaXNfc3VwZXJfdXNlciA9IHRydWU7CisvLyAvLyAgICAgICAgICAgfSBlbHNl IHsKKy8vIC8vICAgICAgICAgICAgIGlzX3N1cGVyX3VzZXIgPSBmYWxzZTsKKy8vIC8vICAgICAg ICAgICAgIC8vIFNldCBjdXJyZW50IHVzZXIKKy8vIC8vICAgICAgICAgICAgIGN1cnJlbnRfdXNl ciA9IChzZXJ2ZXIgJiYgc2VydmVyLnVzZXIpID8gc2VydmVyLnVzZXIubmFtZSA6IG51bGw7Cisv LyAvLyAgICAgICAgICAgfQorCisvLyAvLyAgICAgICAgICAgaWYgKCdkYXRhYmFzZScgaW4gdHJl ZUhpZXJhcmNoeSkgeworLy8gLy8gICAgICAgICAgICAgc2VsZi5zaWQgPSB0cmVlSGllcmFyY2h5 LnNlcnZlci5faWQ7CisvLyAvLyAgICAgICAgICAgICBzZWxmLmRpZCA9IHRyZWVIaWVyYXJjaHku ZGF0YWJhc2UuX2lkOworLy8gLy8gICAgICAgICAgICAgaXNfc2VydmVyX2Rhc2hib2FyZCA9IGZh bHNlOworLy8gLy8gICAgICAgICAgICAgaXNfZGF0YWJhc2VfZGFzaGJvYXJkID0gdHJ1ZTsKKy8v IC8vICAgICAgICAgICAgIHVybCArPSBzZWxmLnNpZCArICcvJyArIHNlbGYuZGlkOworLy8gLy8g ICAgICAgICAgICAgY2FuY2VsX3F1ZXJ5X3VybCArPSBzZWxmLnNpZCArICcvJyArIHNlbGYuZGlk ICsgJy8nOworLy8gLy8gICAgICAgICAgICAgdGVybWluYXRlX3Nlc3Npb25fdXJsICs9IHNlbGYu c2lkICsgJy8nICsgc2VsZi5kaWQgKyAnLyc7CisvLyAvLyAgICAgICAgICAgfSBlbHNlIGlmICgn c2VydmVyJyBpbiB0cmVlSGllcmFyY2h5KSB7CisvLyAvLyAgICAgICAgICAgICBzZWxmLnNpZCA9 IHRyZWVIaWVyYXJjaHkuc2VydmVyLl9pZDsKKy8vIC8vICAgICAgICAgICAgIHNlbGYuZGlkID0g LTE7CisvLyAvLyAgICAgICAgICAgICBpc19zZXJ2ZXJfZGFzaGJvYXJkID0gdHJ1ZTsKKy8vIC8v ICAgICAgICAgICAgIGlzX2RhdGFiYXNlX2Rhc2hib2FyZCA9IGZhbHNlOworLy8gLy8gICAgICAg ICAgICAgdXJsICs9IHNlbGYuc2lkOworLy8gLy8gICAgICAgICAgICAgY2FuY2VsX3F1ZXJ5X3Vy bCArPSBzZWxmLnNpZCArICcvJzsKKy8vIC8vICAgICAgICAgICAgIHRlcm1pbmF0ZV9zZXNzaW9u X3VybCArPSBzZWxmLnNpZCArICcvJzsKKy8vIC8vICAgICAgICAgICB9IGVsc2UgeworLy8gLy8g ICAgICAgICAgICAgaXNfc2VydmVyX2Rhc2hib2FyZCA9IGlzX2RhdGFiYXNlX2Rhc2hib2FyZCA9 IGZhbHNlOworLy8gLy8gICAgICAgICAgIH0KKy8vIC8vICAgICAgICAgfQorLy8gLy8gICAgICAg ICBlbHNlIHsKKy8vIC8vICAgICAgICAgICBpc19zZXJ2ZXJfZGFzaGJvYXJkID0gaXNfZGF0YWJh c2VfZGFzaGJvYXJkID0gZmFsc2U7CisvLyAvLyAgICAgICAgIH0KKworLy8gLy8gICAgICAgICB2 YXIgZGFzaGJvYXJkUGFuZWwgPSBwZ0Jyb3dzZXIucGFuZWxzWydkYXNoYm9hcmQnXS5wYW5lbDsK Ky8vIC8vICAgICAgICAgaWYgKGRhc2hib2FyZFBhbmVsKSB7CisvLyAvLyAgICAgICAgICAgdmFy IGRpdiA9IGRhc2hib2FyZFBhbmVsLmxheW91dCgpLnNjZW5lKCkuZmluZCgKKy8vIC8vICAgICAg ICAgICAgICcucGctcGFuZWwtY29udGVudCcKKy8vIC8vICAgICAgICAgICApOworCisvLyAvLyAg ICAgICAgICAgaWYgKGRpdikgeworLy8gLy8gICAgICAgICAgICAgaWYgKGl0ZW1EYXRhLmNvbm5l Y3RlZCB8fCBfLmlzVW5kZWZpbmVkKGl0ZW1EYXRhLmNvbm5lY3RlZCkpIHsKKy8vIC8vICAgICAg ICAgICAgICAgLy8gQXZvaWQgdW5uZWNlc3NhcnkgcmVsb2FkcworLy8gLy8gICAgICAgICAgICAg ICBpZiAoCisvLyAvLyAgICAgICAgICAgICAgICAgdXJsICE9PSAkKGRhc2hib2FyZFBhbmVsKS5k YXRhKCdkYXNoYm9hcmRfdXJsJykgfHwgKAorLy8gLy8gICAgICAgICAgICAgICAgICAgdXJsID09 PSAkKGRhc2hib2FyZFBhbmVsKS5kYXRhKCdkYXNoYm9hcmRfdXJsJykgJiYKKy8vIC8vICAgICAg ICAgICAgICAgICAgICQoZGFzaGJvYXJkUGFuZWwpLmRhdGEoJ3NlcnZlcl9zdGF0dXMnKSA9PSBm YWxzZQorLy8gLy8gICAgICAgICAgICAgICAgICkKKy8vIC8vICAgICAgICAgICAgICAgKSB7Cisv LyAvLyAgICAgICAgICAgICAgICAgdGhpcy5jaGFydHNEb21PYmogJiYgdGhpcy5jaGFydHNEb21P YmoudW5tb3VudCgpOworLy8gLy8gICAgICAgICAgICAgICAgICQoZGl2KS5lbXB0eSgpOworCisv LyAvLyAgICAgICAgICAgICAgICAgbGV0IGFqYXhIb29rID0gZnVuY3Rpb24oKSB7CisvLyAvLyAg ICAgICAgICAgICAgICAgICAkLmFqYXgoeworLy8gLy8gICAgICAgICAgICAgICAgICAgICB1cmw6 IHVybCwKKy8vIC8vICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0dFVCcsCisvLyAvLyAgICAg ICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnaHRtbCcsCisvLyAvLyAgICAgICAgICAgICAgICAg ICB9KQorLy8gLy8gICAgICAgICAgICAgICAgICAgICAuZG9uZShmdW5jdGlvbihkYXRhKSB7Cisv LyAvLyAgICAgICAgICAgICAgICAgICAgICAgJChkaXYpLmh0bWwoZGF0YSk7CisvLyAvLyAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5pbml0X2Rhc2hib2FyZCgpOworLy8gLy8gICAgICAgICAg ICAgICAgICAgICB9KQorLy8gLy8gICAgICAgICAgICAgICAgICAgICAuZmFpbChmdW5jdGlvbih4 aHIsIGVycm9yKSB7CisvLyAvLyAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vbkZhaWwoeGhy LCBlcnJvciwgZGl2LCBhamF4SG9vayk7CisvLyAvLyAgICAgICAgICAgICAgICAgICAgIH0pOwor Ly8gLy8gICAgICAgICAgICAgICAgIH07CisvLyAvLyAgICAgICAgICAgICAgICAgJChkaXYpLmh0 bWwoCisvLyAvLyAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0icGctcGFuZWwtbWVzc2Fn ZSIgcm9sZT0iYWxlcnQiPicgKyBnZXR0ZXh0KCdMb2FkaW5nIGRhc2hib2FyZC4uLicpICsgJzwv ZGl2PicKKy8vIC8vICAgICAgICAgICAgICAgICApOworLy8gLy8gICAgICAgICAgICAgICAgIGFq YXhIb29rKCk7CisvLyAvLyAgICAgICAgICAgICAgICAgJChkYXNoYm9hcmRQYW5lbCkuZGF0YSgn c2VydmVyX3N0YXR1cycsIHRydWUpOworLy8gLy8gICAgICAgICAgICAgICB9CisvLyAvLyAgICAg ICAgICAgICB9IGVsc2UgeworLy8gLy8gICAgICAgICAgICAgICB0aGlzLmNoYXJ0c0RvbU9iaiAm JiB0aGlzLmNoYXJ0c0RvbU9iai51bm1vdW50KCk7CisvLyAvLyAgICAgICAgICAgICAgICQoZGl2 KS5odG1sKAorLy8gLy8gICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJwZy1wYW5lbC1tZXNz YWdlIiByb2xlPSJhbGVydCI+JyArIGdldHRleHQoJ1BsZWFzZSBjb25uZWN0IHRvIHRoZSBzZWxl Y3RlZCBzZXJ2ZXIgdG8gdmlldyB0aGUgZGFzaGJvYXJkLicpICsgJzwvZGl2PicKKy8vIC8vICAg ICAgICAgICAgICAgKTsKKy8vIC8vICAgICAgICAgICAgICAgJChkYXNoYm9hcmRQYW5lbCkuZGF0 YSgnc2VydmVyX3N0YXR1cycsIGZhbHNlKTsKKy8vIC8vICAgICAgICAgICAgIH0KKy8vIC8vICAg ICAgICAgICAgIC8vIENhY2hlIHRoZSBjdXJyZW50IElEcyBmb3IgbmV4dCB0aW1lCisvLyAvLyAg ICAgICAgICAgICAkKGRhc2hib2FyZFBhbmVsKS5kYXRhKCdkYXNoYm9hcmRfdXJsJywgdXJsKTsK Ky8vIC8vICAgICAgICAgICB9CisvLyAvLyAgICAgICAgIH0KKy8vIC8vICAgICAgIH0KKy8vIC8v ICAgICB9LAorCisvLyAvLyAgICAgIEhhbmRsZXIgZnVuY3Rpb24gdG8gc3VwcG9ydCB0aGUgIkFk ZCBTZXJ2ZXIiIGxpbmsKKy8vIC8vICAgICBhZGRfbmV3X3NlcnZlcjogZnVuY3Rpb24oKSB7Cisv LyAvLyAgICAgICBpZiAocGdCcm93c2VyICYmIHBnQnJvd3Nlci50cmVlKSB7CisvLyAvLyAgICAg ICAgIHZhciBpID0gXy5pc1VuZGVmaW5lZChwZ0Jyb3dzZXIudHJlZS5zZWxlY3RlZCgpKSA/Cisv LyAvLyAgICAgICAgICAgICBwZ0Jyb3dzZXIudHJlZS5maXJzdChudWxsLCBmYWxzZSk6CisvLyAv LyAgICAgICAgICAgICBwZ0Jyb3dzZXIudHJlZS5zZWxlY3RlZCgpLAorLy8gLy8gICAgICAgICAg IHNlcnZlck1vZHVsZSA9IHJlcXVpcmUoJ3BnYWRtaW4ubm9kZS5zZXJ2ZXInKSwKKy8vIC8vICAg ICAgICAgICBpdGVtRGF0YSA9IHBnQnJvd3Nlci50cmVlLml0ZW1EYXRhKGkpOworCisvLyAvLyAg ICAgICAgIHdoaWxlIChpdGVtRGF0YSAmJiBpdGVtRGF0YS5fdHlwZSAhPSAnc2VydmVyX2dyb3Vw JykgeworLy8gLy8gICAgICAgICAgIGkgPSBwZ0Jyb3dzZXIudHJlZS5uZXh0KGkpOworLy8gLy8g ICAgICAgICAgIGl0ZW1EYXRhID0gcGdCcm93c2VyLnRyZWUuaXRlbURhdGEoaSk7CisvLyAvLyAg ICAgICAgIH0KKworLy8gLy8gICAgICAgICBpZiAoIWl0ZW1EYXRhKSB7CisvLyAvLyAgICAgICAg ICAgcmV0dXJuOworLy8gLy8gICAgICAgICB9CisKKy8vIC8vICAgICAgICAgaWYgKHNlcnZlck1v ZHVsZSkgeworLy8gLy8gICAgICAgICAgIHNlcnZlck1vZHVsZS5jYWxsYmFja3Muc2hvd19vYmpf cHJvcGVydGllcy5hcHBseSgKKy8vIC8vICAgICAgICAgICAgIHNlcnZlck1vZHVsZSwgW3sKKy8v IC8vICAgICAgICAgICAgICAgYWN0aW9uOiAnY3JlYXRlJywKKy8vIC8vICAgICAgICAgICAgIH0s IGldCisvLyAvLyAgICAgICAgICAgKTsKKy8vIC8vICAgICAgICAgfQorLy8gLy8gICAgICAgfQor Ly8gLy8gICAgIH0sCisKKy8vIC8vICAgICAvLyBSZW5kZXIgYSBncmlkCisvLyAvLyAgICAgcmVu ZGVyX2dyaWQ6IGZ1bmN0aW9uKGNvbnRhaW5lciwgdXJsLCBjb2x1bW5zKSB7CisvLyAvLyAgICAg ICB2YXIgRGF0dW0gPSBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe30pLAorLy8gLy8gICAgICAgICBz ZWxmID0gdGhpczsKKworLy8gLy8gICAgICAgdmFyIHBhdGggPSB1cmwgKyBzZWxmLnNpZDsKKy8v IC8vICAgICAgIGlmIChzZWxmLmRpZCAhPSAtMSkgeworLy8gLy8gICAgICAgICBwYXRoICs9ICcv JyArIHNlbGYuZGlkOworLy8gLy8gICAgICAgfQorCisvLyAvLyAgICAgICB2YXIgRGF0YSA9IEJh Y2tib25lLkNvbGxlY3Rpb24uZXh0ZW5kKHsKKy8vIC8vICAgICAgICAgbW9kZWw6IERhdHVtLAor Ly8gLy8gICAgICAgICB1cmw6IHBhdGgsCisvLyAvLyAgICAgICAgIG1vZGU6ICdjbGllbnQnLAor Ly8gLy8gICAgICAgfSk7CisKKy8vIC8vICAgICAgIHZhciBkYXRhID0gbmV3IERhdGEoKTsKKwor Ly8gLy8gICAgICAgdmFyIEhpZ2hsaWdodGVkUm93ID0gQmFja2dyaWQuUm93LmV4dGVuZCh7Cisv LyAvLyAgICAgICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7CisvLyAvLyAgICAgICAgICAgQmFja2dy aWQuUm93LnByb3RvdHlwZS5yZW5kZXIuY2FsbCh0aGlzKTsKKy8vIC8vICAgICAgICAgICB2YXIg cm93X3R5cGUgPSB0aGlzLm1vZGVsLmdldCgncm93X3R5cGUnKTsKKworLy8gLy8gICAgICAgICAg IGlmIChfLmlzVW5kZWZpbmVkKHJvd190eXBlKSB8fCBfLmlzTnVsbChyb3dfdHlwZSkpIHsKKy8v IC8vICAgICAgICAgICAgIHRoaXMuJGVsLnJlbW92ZUNsYXNzKCdhbGVydCcpOworLy8gLy8gICAg ICAgICAgICAgdGhpcy4kZWwucmVtb3ZlQ2xhc3MoJ3dhcm5pbmcnKTsKKy8vIC8vICAgICAgICAg ICB9IGVsc2UgaWYgKHJvd190eXBlID09PSAnd2FybmluZycpIHsKKy8vIC8vICAgICAgICAgICAg IHRoaXMuJGVsLmFkZENsYXNzKCd3YXJuaW5nJyk7CisvLyAvLyAgICAgICAgICAgfSBlbHNlIGlm IChyb3dfdHlwZSA9PT0gJ2FsZXJ0JykgeworLy8gLy8gICAgICAgICAgICAgdGhpcy4kZWwuYWRk Q2xhc3MoJ2FsZXJ0Jyk7CisvLyAvLyAgICAgICAgICAgfQorCisvLyAvLyAgICAgICAgICAgcmV0 dXJuIHRoaXM7CisvLyAvLyAgICAgICAgIH0KKy8vIC8vICAgICAgIH0pOworCisvLyAvLyAgICAg ICAvLyBTZXQgdXAgdGhlIGdyaWQKKy8vIC8vICAgICAgIHZhciBncmlkID0gbmV3IEJhY2tncmlk LkdyaWQoeworLy8gLy8gICAgICAgICBlbXB0eVRleHQ6IGdldHRleHQoJ05vIGRhdGEgZm91bmQn KSwKKy8vIC8vICAgICAgICAgY29sdW1uczogY29sdW1ucywKKy8vIC8vICAgICAgICAgY29sbGVj dGlvbjogZGF0YSwKKy8vIC8vICAgICAgICAgY2xhc3NOYW1lOiAnYmFja2dyaWQgcHJlc2VudGF0 aW9uIHRhYmxlIHRhYmxlLWJvcmRlcmVkIHRhYmxlLW5vb3V0ZXItYm9yZGVyIHRhYmxlLWhvdmVy JywKKy8vIC8vICAgICAgICAgcm93OiBIaWdobGlnaHRlZFJvdworLy8gLy8gICAgICAgfSk7CisK Ky8vIC8vICAgICAgIC8vIFJlbmRlciB0aGUgZ3JpZAorLy8gLy8gICAgICAgJChjb250YWluZXIp LmVtcHR5KCk7CisvLyAvLyAgICAgICAkKGNvbnRhaW5lcikuYXBwZW5kKGdyaWQucmVuZGVyKCku ZWwpOworCisvLyAvLyAgICAgICAvLyBJbml0aWFsaXplIGEgY2xpZW50LXNpZGUgZmlsdGVyIHRv IGZpbHRlciBvbiB0aGUgY2xpZW50CisvLyAvLyAgICAgICAvLyBtb2RlIHBhZ2VhYmxlIGNvbGxl Y3Rpb24ncyBjYWNoZS4KKy8vIC8vICAgICAgIHZhciBmaWx0ZXIgPSBuZXcgQmFja2dyaWQuRXh0 ZW5zaW9uLkNsaWVudFNpZGVGaWx0ZXIoeworLy8gLy8gICAgICAgICBjb2xsZWN0aW9uOiBkYXRh LAorLy8gLy8gICAgICAgfSk7CisKKy8vIC8vICAgICAgIGZpbHRlci5zZXRDdXN0b21TZWFyY2hC b3goJCgnI3R4dEdyaWRTZWFyY2gnKSk7CisvLyAvLyAgICAgICAvLyBTdGFzaCBvYmplY3RzIGZv ciBmdXR1cmUgdXNlCisvLyAvLyAgICAgICAkKGNvbnRhaW5lcikuZGF0YSgnZGF0YScsIGRhdGEp OworLy8gLy8gICAgICAgJChjb250YWluZXIpLmRhdGEoJ2dyaWQnLCBncmlkKTsKKy8vIC8vICAg ICAgICQoY29udGFpbmVyKS5kYXRhKCdmaWx0ZXInLCBmaWx0ZXIpOworLy8gLy8gICAgIH0sCisv LyAvLyAgICAgX19sb2FkTW9yZVJvd3M6IGZ1bmN0aW9uKGUpIHsKKy8vIC8vICAgICAgIGxldCBl bGVtID0gZS5jdXJyZW50VGFyZ2V0OworLy8gLy8gICAgICAgaWYgKChlbGVtLnNjcm9sbEhlaWdo dCAtIDEwKSA8IGVsZW0uc2Nyb2xsVG9wICsgZWxlbS5vZmZzZXRIZWlnaHQpIHsKKy8vIC8vICAg ICAgICAgaWYgKHRoaXMuZGF0YS5sZW5ndGggPiAwKSB7CisvLyAvLyAgICAgICAgICAgdGhpcy5s b2NhbF9ncmlkLmNvbGxlY3Rpb24uYWRkKHRoaXMuZGF0YS5zcGxpY2UoMCwgNTApKTsKKy8vIC8v ICAgICAgICAgfQorLy8gLy8gICAgICAgfQorLy8gLy8gICAgIH0sCisvLyAvLyAgICAgLy8gUmVu ZGVyIHRoZSBkYXRhIGluIGEgZ3JpZAorLy8gLy8gICAgIHJlbmRlcl9ncmlkX2RhdGE6IGZ1bmN0 aW9uKGNvbnRhaW5lcikgeworLy8gLy8gICAgICAgdmFyIHRoYXQgPSB0aGlzOworLy8gLy8gICAg ICAgdmFyIGRhdGEgPSAkKGNvbnRhaW5lcikuZGF0YSgnZGF0YScpLAorLy8gLy8gICAgICAgICBn cmlkID0gJChjb250YWluZXIpLmRhdGEoJ2dyaWQnKSwKKy8vIC8vICAgICAgICAgZmlsdGVyID0g JChjb250YWluZXIpLmRhdGEoJ2ZpbHRlcicpOworCisvLyAvLyAgICAgICBpZiAoXy5pc1VuZGVm aW5lZChkYXRhKSkgeworLy8gLy8gICAgICAgICByZXR1cm4gbnVsbDsKKy8vIC8vICAgICAgIH0K KworLy8gLy8gICAgICAgZGF0YS5mZXRjaCh7CisvLyAvLyAgICAgICAgIHJlc2V0OiB0cnVlLAor Ly8gLy8gICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHsKKy8vIC8vICAgICAgICAgICB0 aGF0LmRhdGEgPSByZXMubW9kZWxzOworLy8gLy8gICAgICAgICAgIHRoYXQubG9jYWxfZ3JpZCA9 IGdyaWQ7CisvLyAvLyAgICAgICAgICAgZ3JpZC5jb2xsZWN0aW9uLnJlc2V0KHRoYXQuZGF0YS5z cGxpY2UoMCw1MCkpOworCisvLyAvLyAgICAgICAgICAgLy8gSWYgd2UncmUgc2hvd2luZyBhbiBl cnJvciwgcmVtb3ZlIGl0LCBhbmQgcmVwbGFjZSB0aGUgZ3JpZCAmIGZpbHRlcgorLy8gLy8gICAg ICAgICAgIGlmICgkKGNvbnRhaW5lcikuaGFzQ2xhc3MoJ2dyaWQtZXJyb3InKSkgeworLy8gLy8g ICAgICAgICAgICAgJChjb250YWluZXIpLnJlbW92ZUNsYXNzKCdncmlkLWVycm9yJyk7CisvLyAv LyAgICAgICAgICAgICAkKGNvbnRhaW5lcikuaHRtbChncmlkLnJlbmRlcigpLmVsKTsKKy8vIC8v ICAgICAgICAgICAgICQoZmlsdGVyLmVsKS5zaG93KCk7CisvLyAvLyAgICAgICAgICAgfQorCisv LyAvLyAgICAgICAgICAgaWYodGhhdC5kYXRhLmxlbmd0aCA+IDUwKSB7CisvLyAvLyAgICAgICAg ICAgICAvLyBMaXN0ZW4gc2Nyb2xsIGV2ZW50IHRvIGxvYWQgbW9yZSByb3dzCisvLyAvLyAgICAg ICAgICAgICAkKCcud2NTY3JvbGxhYmxlWScpLm9uKCdzY3JvbGwnLCB0aGF0Ll9fbG9hZE1vcmVS b3dzLmJpbmQodGhhdCkpOworLy8gLy8gICAgICAgICAgIH0gZWxzZSB7CisvLyAvLyAgICAgICAg ICAgICAvLyBMaXN0ZW4gc2Nyb2xsIGV2ZW50IHRvIGxvYWQgbW9yZSByb3dzCisvLyAvLyAgICAg ICAgICAgICAkKCcud2NTY3JvbGxhYmxlWScpLm9mZignc2Nyb2xsJywgdGhhdC5fX2xvYWRNb3Jl Um93cyk7CisvLyAvLyAgICAgICAgICAgfQorCisvLyAvLyAgICAgICAgICAgLy8gUmUtYXBwbHkg c2VhcmNoIGNyaXRlcmlhCisvLyAvLyAgICAgICAgICAgZmlsdGVyLnNlYXJjaCgpOworLy8gLy8g ICAgICAgICB9LAorLy8gLy8gICAgICAgICBlcnJvcjogZnVuY3Rpb24obW9kZWwsIHhocikgewor Ly8gLy8gICAgICAgICAgIGxldCBlcnIgPSAnJzsKKy8vIC8vICAgICAgICAgICBsZXQgbXNnID0g Jyc7CisvLyAvLyAgICAgICAgICAgbGV0IGNscyA9ICdpbmZvJzsKKworLy8gLy8gICAgICAgICAg IGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gMCkgeworLy8gLy8gICAgICAgICAgICAgbXNnID0gZ2V0 dGV4dCgnTm90IGNvbm5lY3RlZCB0byB0aGUgc2VydmVyIG9yIHRoZSBjb25uZWN0aW9uIHRvIHRo ZSBzZXJ2ZXIgaGFzIGJlZW4gY2xvc2VkLicpOworLy8gLy8gICAgICAgICAgIH0gZWxzZSB7Cisv LyAvLyAgICAgICAgICAgICBlcnIgPSBKU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpOworLy8g Ly8gICAgICAgICAgICAgbXNnID0gZXJyLmVycm9ybXNnOworCisvLyAvLyAgICAgICAgICAgICAv LyBJZiB3ZSBnZXQgYSA0MjgsIGl0IG1lYW5zIHRoZSBzZXJ2ZXIgaXNuJ3QgY29ubmVjdGVkCisv LyAvLyAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gNDI4KSB7CisvLyAvLyAgICAgICAg ICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG1zZykgfHwgXy5pc051bGwobXNnKSkgeworLy8gLy8g ICAgICAgICAgICAgICAgIG1zZyA9IGdldHRleHQoJ1BsZWFzZSBjb25uZWN0IHRvIHRoZSBzZWxl Y3RlZCBzZXJ2ZXIgdG8gdmlldyB0aGUgdGFibGUuJyk7CisvLyAvLyAgICAgICAgICAgICAgIH0K Ky8vIC8vICAgICAgICAgICAgIH0gZWxzZSB7CisvLyAvLyAgICAgICAgICAgICAgIG1zZyA9IGdl dHRleHQoJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxzdCByZW5kZXJpbmcgdGhlIHRhYmxlLicpOwor Ly8gLy8gICAgICAgICAgICAgICBjbHMgPSAnZXJyb3InOworLy8gLy8gICAgICAgICAgICAgfQor Ly8gLy8gICAgICAgICAgIH0KKworLy8gLy8gICAgICAgICAgIC8vIFJlcGxhY2UgdGhlIGNvbnRl bnQgd2l0aCB0aGUgZXJyb3IsIGlmIG5vdCBhbHJlYWR5IHByZXNlbnQuIEFsd2F5cyB1cGRhdGUg dGhlIG1lc3NhZ2UKKy8vIC8vICAgICAgICAgICBpZiAoISQoY29udGFpbmVyKS5oYXNDbGFzcygn Z3JpZC1lcnJvcicpKSB7CisvLyAvLyAgICAgICAgICAgICAkKGZpbHRlci5lbCkuaGlkZSgpOwor Ly8gLy8gICAgICAgICAgICAgJChjb250YWluZXIpLmFkZENsYXNzKCdncmlkLWVycm9yJyk7Cisv LyAvLyAgICAgICAgICAgfQorCisvLyAvLyAgICAgICAgICAgJChjb250YWluZXIpLmh0bWwoCisv LyAvLyAgICAgICAgICAgICAnPGRpdiBjbGFzcz0icGctcGFuZWwtJyArIGNscyArICcgcGctcGFu ZWwtbWVzc2FnZSIgcm9sZT0iYWxlcnQiPicgKyBtc2cgKyAnPC9kaXY+JworLy8gLy8gICAgICAg ICAgICk7CisKKy8vIC8vICAgICAgICAgICAvLyBUcnkgYWdhaW4KKy8vIC8vICAgICAgICAgICBz ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworLy8gLy8gICAgICAgICAgICAgcGdBZG1pbi5EYXNoYm9h cmQucmVuZGVyX2dyaWRfZGF0YShjb250YWluZXIsIGRhdGEpOworLy8gLy8gICAgICAgICAgIH0s IDUwMDApOworLy8gLy8gICAgICAgICB9LAorLy8gLy8gICAgICAgfSk7CisvLyAvLyAgICAgfSwK KworLy8gLy8gICAgIC8vIFJvY2sgbicgcm9sbCBvbiB0aGUgZGFzaGJvYXJkCisvLyAvLyAgICAg aW5pdF9kYXNoYm9hcmQ6IGZ1bmN0aW9uKCkgeworLy8gLy8gICAgICAgbGV0IHNlbGYgPSB0aGlz OworCisvLyAvLyAgICAgICB0aGlzLmNoYXJ0c0RvbU9iaiA9IG5ldyBDaGFydHNET00uZGVmYXVs dCgKKy8vIC8vICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rhc2hib2FyZC1ncmFw aHMnKSwKKy8vIC8vICAgICAgICAgc2VsZi5wcmVmZXJlbmNlcywKKy8vIC8vICAgICAgICAgc2Vs Zi5zaWQsCisvLyAvLyAgICAgICAgIHNlbGYuZGlkLAorLy8gLy8gICAgICAgICAkKCcuZGFzaGJv YXJkLWNvbnRhaW5lcicpWzBdLmNsaWVudEhlaWdodCA8PTAgPyBmYWxzZSA6IHRydWUKKy8vIC8v ICAgICAgICk7CisKKy8vIC8vICAgICAgIC8qIENhY2hlIG1heSB0YWtlIHRpbWUgdG8gbG9hZCBm b3IgdGhlIGZpcnN0IHRpbWUKKy8vIC8vICAgICAgICAqIEtlZXAgdHJ5aW5nIHRpbGwgYXZhaWxh YmxlCisvLyAvLyAgICAgICAgKi8KKy8vIC8vICAgICAgIGxldCBjYWNoZUludGVydmFsSWQgPSBz ZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKy8vIC8vICAgICAgICAgdHJ5IHsKKy8vIC8vICAgICAg ICAgICBpZihwZ1dpbmRvdy5kZWZhdWx0LnBnQWRtaW4uQnJvd3Nlci5wcmVmZXJlbmNlX3ZlcnNp b24oKSA+IDApIHsKKy8vIC8vICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2FjaGVJbnRlcnZh bElkKTsKKy8vIC8vICAgICAgICAgICAgIHNlbGYucmVmbGVjdFByZWZlcmVuY2VzKCk7CisvLyAv LyAgICAgICAgICAgfQorLy8gLy8gICAgICAgICB9CisvLyAvLyAgICAgICAgIGNhdGNoKGVycikg eworLy8gLy8gICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2FjaGVJbnRlcnZhbElkKTsKKy8vIC8v ICAgICAgICAgICB0aHJvdyBlcnI7CisvLyAvLyAgICAgICAgIH0KKy8vIC8vICAgICAgIH0sMCk7 CisKKy8vIC8vICAgICAgIC8qIFJlZ2lzdGVyIGZvciBwcmVmZXJlbmNlIGNoYW5nZWQgZXZlbnQg YnJvYWRjYXN0ZWQgKi8KKy8vIC8vICAgICAgIHBnQnJvd3Nlci5vblByZWZlcmVuY2VzQ2hhbmdl KCdkYXNoYm9hcmRzJywgZnVuY3Rpb24oKSB7CisvLyAvLyAgICAgICAgIHNlbGYucmVmbGVjdFBy ZWZlcmVuY2VzKCk7CisvLyAvLyAgICAgICB9KTsKKy8vIC8vICAgICB9LAorCisvLyAvLyAgICAg cmVmbGVjdFByZWZlcmVuY2VzOiBmdW5jdGlvbigpIHsKKy8vIC8vICAgICAgIHZhciBzZWxmID0g dGhpczsKKy8vIC8vICAgICAgIHNlbGYucHJlZmVyZW5jZXMgPSBwZ1dpbmRvdy5kZWZhdWx0LnBn QWRtaW4uQnJvd3Nlci5nZXRfcHJlZmVyZW5jZXNfZm9yX21vZHVsZSgnZGFzaGJvYXJkcycpOwor Ly8gLy8gICAgICAgdGhpcy5jaGFydHNEb21PYmoucmVmbGVjdFByZWZlcmVuY2VzKHNlbGYucHJl ZmVyZW5jZXMpOworCisvLyAvLyAgICAgICBpZihpc19zZXJ2ZXJfZGFzaGJvYXJkIHx8IGlzX2Rh dGFiYXNlX2Rhc2hib2FyZCkgeworLy8gLy8gICAgICAgICBpZiAoc2VsZi5wcmVmZXJlbmNlcy5z aG93X2FjdGl2aXR5ICYmICQoJyNkYXNoYm9hcmQtYWN0aXZpdHknKS5oYXNDbGFzcygnZGFzaGJv YXJkLWhpZGRlbicpKSB7CisvLyAvLyAgICAgICAgICAgJCgnI2Rhc2hib2FyZC1hY3Rpdml0eScp LnJlbW92ZUNsYXNzKCdkYXNoYm9hcmQtaGlkZGVuJyk7CisvLyAvLyAgICAgICAgIH0KKy8vIC8v ICAgICAgICAgZWxzZSBpZighc2VsZi5wcmVmZXJlbmNlcy5zaG93X2FjdGl2aXR5KSB7CisvLyAv LyAgICAgICAgICAgJCgnI2Rhc2hib2FyZC1hY3Rpdml0eScpLmFkZENsYXNzKCdkYXNoYm9hcmQt aGlkZGVuJyk7CisvLyAvLyAgICAgICAgIH0KKworLy8gLy8gICAgICAgICBpZiAoc2VsZi5wcmVm ZXJlbmNlcy5zaG93X2FjdGl2aXR5ICYmICQoJyNkYXNoYm9hcmQtYWN0aXZpdHknKS5oYXNDbGFz cygnZGFzaGJvYXJkLWhpZGRlbicpKSB7CisvLyAvLyAgICAgICAgICAgJCgnI2Rhc2hib2FyZC1h Y3Rpdml0eScpLnJlbW92ZUNsYXNzKCdkYXNoYm9hcmQtaGlkZGVuJyk7CisvLyAvLyAgICAgICAg IH0KKy8vIC8vICAgICAgICAgZWxzZSBpZighc2VsZi5wcmVmZXJlbmNlcy5zaG93X2FjdGl2aXR5 KSB7CisvLyAvLyAgICAgICAgICAgJCgnI2Rhc2hib2FyZC1hY3Rpdml0eScpLmFkZENsYXNzKCdk YXNoYm9hcmQtaGlkZGVuJyk7CisvLyAvLyAgICAgICAgIH0KKworLy8gLy8gICAgICAgICAvKiBE YXNoYm9hcmQgc3BlY2lmaWMgcHJlZmVyZW5jZXMgY2FuIGJlIHVwZGF0ZWQgaW4gdGhlCisvLyAv LyAgICAgICAgICAqIGFwcHJvcHJpYXRlIGZ1bmN0aW9ucworLy8gLy8gICAgICAgICAgKi8KKy8v IC8vICAgICAgICAgaWYoaXNfc2VydmVyX2Rhc2hib2FyZCkgeworLy8gLy8gICAgICAgICAgIHNl bGYucmVmbGVjdFByZWZlcmVuY2VzU2VydmVyKCk7CisvLyAvLyAgICAgICAgIH0KKy8vIC8vICAg ICAgICAgZWxzZSBpZihpc19kYXRhYmFzZV9kYXNoYm9hcmQpIHsKKy8vIC8vICAgICAgICAgICBz ZWxmLnJlZmxlY3RQcmVmZXJlbmNlc0RhdGFiYXNlKCk7CisvLyAvLyAgICAgICAgIH0KKy8vIC8v ICAgICAgIH0KKy8vIC8vICAgICB9LAorCisvLyAvLyAgICAgcmVuZGVyVGFiOiBmdW5jdGlvbihl LCB0YWJfZ3JpZF9tYXApIHsKKy8vIC8vICAgICAgIGxldCBwcmV2R3JpZCA9IHRhYl9ncmlkX21h cFskKGUucmVsYXRlZFRhcmdldCkuYXR0cignYXJpYS1jb250cm9scycpXTsKKy8vIC8vICAgICAg ICQocHJldkdyaWQpLmRhdGEoJ2ZpbHRlcnRleHQnLCAkKCcjdHh0R3JpZFNlYXJjaCcpLnZhbCgp KTsKKworLy8gLy8gICAgICAgbGV0IGN1cnJHcmlkID0gdGFiX2dyaWRfbWFwWyQoZS50YXJnZXQp LmF0dHIoJ2FyaWEtY29udHJvbHMnKV07CisvLyAvLyAgICAgICAkKCcjdHh0R3JpZFNlYXJjaCcp LnZhbCgkKGN1cnJHcmlkKS5kYXRhKCdmaWx0ZXJ0ZXh0JykpOworLy8gLy8gICAgICAgcGdBZG1p bi5EYXNoYm9hcmQucmVuZGVyX2dyaWRfZGF0YShjdXJyR3JpZCk7CisvLyAvLyAgICAgfSwKKwor Ly8gLy8gICAgIHJlZmxlY3RQcmVmZXJlbmNlc1NlcnZlcjogZnVuY3Rpb24oKSB7CisvLyAvLyAg ICAgICB2YXIgc2VsZiA9IHRoaXM7CisvLyAvLyAgICAgICB2YXIgJGRhc2hib2FyZENvbnRhaW5l ciA9ICQoJy5kYXNoYm9hcmQtY29udGFpbmVyJyk7CisvLyAvLyAgICAgICB2YXIgZGl2X3NlcnZl cl9hY3Rpdml0eSA9ICRkYXNoYm9hcmRDb250YWluZXIuZmluZCgnI3NlcnZlcl9hY3Rpdml0eScp LmdldCgwKTsKKy8vIC8vICAgICAgIHZhciBkaXZfc2VydmVyX2xvY2tzID0gJGRhc2hib2FyZENv bnRhaW5lci5maW5kKCcjc2VydmVyX2xvY2tzJykuZ2V0KDApOworLy8gLy8gICAgICAgdmFyIGRp dl9zZXJ2ZXJfcHJlcGFyZWQgPSAkZGFzaGJvYXJkQ29udGFpbmVyLmZpbmQoJyNzZXJ2ZXJfcHJl cGFyZWQnKS5nZXQoMCk7CisvLyAvLyAgICAgICB2YXIgZGl2X3NlcnZlcl9jb25maWcgPSAkZGFz aGJvYXJkQ29udGFpbmVyLmZpbmQoJyNzZXJ2ZXJfY29uZmlnJykuZ2V0KDApOworCisvLyAvLyAg ICAgICB2YXIgdGFiX2dyaWRfbWFwID0geworLy8gLy8gICAgICAgICAndGFiX3NlcnZlcl9hY3Rp dml0eSc6IGRpdl9zZXJ2ZXJfYWN0aXZpdHksCisvLyAvLyAgICAgICAgICd0YWJfc2VydmVyX2xv Y2tzJzogZGl2X3NlcnZlcl9sb2NrcywKKy8vIC8vICAgICAgICAgJ3RhYl9zZXJ2ZXJfcHJlcGFy ZWQnOiBkaXZfc2VydmVyX3ByZXBhcmVkLAorLy8gLy8gICAgICAgICAndGFiX3NlcnZlcl9jb25m aWcnOiBkaXZfc2VydmVyX2NvbmZpZywKKy8vIC8vICAgICAgIH07CisKKy8vIC8vICAgICAgIC8v IERpc3BsYXkgc2VydmVyIGFjdGl2aXR5CisvLyAvLyAgICAgICBpZiAoc2VsZi5wcmVmZXJlbmNl cy5zaG93X2FjdGl2aXR5KSB7CisvLyAvLyAgICAgICAgIHZhciBzZXJ2ZXJfYWN0aXZpdHlfY29s dW1ucyA9IFt7CisvLyAvLyAgICAgICAgICAgbmFtZTogJ3BpZCcsCisvLyAvLyAgICAgICAgICAg bGFiZWw6IGdldHRleHQoJ1BJRCcpLAorLy8gLy8gICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwK Ky8vIC8vICAgICAgICAgICBjZWxsOiAnc3RyaW5nJywKKy8vIC8vICAgICAgICAgfSwgeworLy8g Ly8gICAgICAgICAgIG5hbWU6ICdkYXRuYW1lJywKKy8vIC8vICAgICAgICAgICBsYWJlbDogZ2V0 dGV4dCgnRGF0YWJhc2UnKSwKKy8vIC8vICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCisvLyAv LyAgICAgICAgICAgY2VsbDogJ3N0cmluZycsCisvLyAvLyAgICAgICAgIH0sIHsKKy8vIC8vICAg ICAgICAgICBuYW1lOiAndXNlbmFtZScsCisvLyAvLyAgICAgICAgICAgbGFiZWw6IGdldHRleHQo J1VzZXInKSwKKy8vIC8vICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCisvLyAvLyAgICAgICAg ICAgY2VsbDogJ3N0cmluZycsCisvLyAvLyAgICAgICAgIH0sIHsKKy8vIC8vICAgICAgICAgICBu YW1lOiAnYXBwbGljYXRpb25fbmFtZScsCisvLyAvLyAgICAgICAgICAgbGFiZWw6IGdldHRleHQo J0FwcGxpY2F0aW9uJyksCisvLyAvLyAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAorLy8gLy8g ICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAorLy8gLy8gICAgICAgICB9LCB7CisvLyAvLyAgICAg ICAgICAgbmFtZTogJ2NsaWVudF9hZGRyJywKKy8vIC8vICAgICAgICAgICBsYWJlbDogZ2V0dGV4 dCgnQ2xpZW50JyksCisvLyAvLyAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAorLy8gLy8gICAg ICAgICAgIGNlbGw6ICdzdHJpbmcnLAorLy8gLy8gICAgICAgICB9LCB7CisvLyAvLyAgICAgICAg ICAgbmFtZTogJ2JhY2tlbmRfc3RhcnQnLAorLy8gLy8gICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0 KCdCYWNrZW5kIHN0YXJ0JyksCisvLyAvLyAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAorLy8g Ly8gICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAorLy8gLy8gICAgICAgICB9LCB7CisvLyAvLyAg ICAgICAgICAgbmFtZTogJ3N0YXRlJywKKy8vIC8vICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgn U3RhdGUnKSwKKy8vIC8vICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCisvLyAvLyAgICAgICAg ICAgY2VsbDogJ3N0cmluZycsCisvLyAvLyAgICAgICAgIH1dOworCisvLyAvLyAgICAgICAgIGlm IChzZWxmLnZlcnNpb24gPCA5MDYwMCkgeworLy8gLy8gICAgICAgICAgIHNlcnZlcl9hY3Rpdml0 eV9jb2x1bW5zID0gc2VydmVyX2FjdGl2aXR5X2NvbHVtbnMuY29uY2F0KAorLy8gLy8gICAgICAg ICAgICAgW3sKKy8vIC8vICAgICAgICAgICAgICAgbmFtZTogJ3dhaXRpbmcnLAorLy8gLy8gICAg ICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnV2FpdGluZz8nKSwKKy8vIC8vICAgICAgICAgICAg ICAgZWRpdGFibGU6IGZhbHNlLAorLy8gLy8gICAgICAgICAgICAgICBjZWxsOiAnc3RyaW5nJywK Ky8vIC8vICAgICAgICAgICAgIH1dKTsKKy8vIC8vICAgICAgICAgfSBlbHNlIHsKKy8vIC8vICAg ICAgICAgICBzZXJ2ZXJfYWN0aXZpdHlfY29sdW1ucyA9IHNlcnZlcl9hY3Rpdml0eV9jb2x1bW5z LmNvbmNhdCgKKy8vIC8vICAgICAgICAgICAgIFt7CisvLyAvLyAgICAgICAgICAgICAgIG5hbWU6 ICd3YWl0X2V2ZW50JywKKy8vIC8vICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1dhaXQg ZXZlbnQnKSwKKy8vIC8vICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAorLy8gLy8gICAg ICAgICAgICAgICBjZWxsOiAnc3RyaW5nJywKKy8vIC8vICAgICAgICAgICAgIH0sIHsKKy8vIC8v ICAgICAgICAgICAgICAgbmFtZTogJ2Jsb2NraW5nX3BpZHMnLAorLy8gLy8gICAgICAgICAgICAg ICBsYWJlbDogZ2V0dGV4dCgnQmxvY2tpbmcgUElEcycpLAorLy8gLy8gICAgICAgICAgICAgICBl ZGl0YWJsZTogZmFsc2UsCisvLyAvLyAgICAgICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAorLy8g Ly8gICAgICAgICAgICAgfV0pOworLy8gLy8gICAgICAgICB9CisKKy8vIC8vICAgICAgICAgdmFy IG5ld0FjdGl2ZVF1ZXJ5RGV0YWlsc01vZGVsID0gbmV3IEFjdGl2ZVF1ZXJ5RGV0YWlsc01vZGVs KCk7CisKKy8vIC8vICAgICAgICAgdmFyIHN1Yk5vZGVGaWVsZHNNb2RlbCA9IEJhY2tmb3JtLmdl bmVyYXRlVmlld1NjaGVtYSgKKy8vIC8vICAgICAgICAgICBudWxsLCBuZXdBY3RpdmVRdWVyeURl dGFpbHNNb2RlbCwgJ2NyZWF0ZScsIG51bGwsIG51bGwsIHRydWUKKy8vIC8vICAgICAgICAgKTsK KworLy8gLy8gICAgICAgICAvLyBBZGQgdmVyc2lvbiB0byBlYWNoIGZpZWxkCisvLyAvLyAgICAg ICAgIF8uZWFjaChzdWJOb2RlRmllbGRzTW9kZWxbMF0uZmllbGRzLCBmdW5jdGlvbihvYmopIHsK Ky8vIC8vICAgICAgICAgICBvYmpbJ3ZlcnNpb24nXSA9IHNlbGYudmVyc2lvbjsKKy8vIC8vICAg ICAgICAgfSk7CisKKy8vIC8vICAgICAgICAgLy8gQWRkIGNhbmNlbCBhY3RpdmUgcXVlcnkgYnV0 dG9uCisvLyAvLyAgICAgICAgIHNlcnZlcl9hY3Rpdml0eV9jb2x1bW5zLnVuc2hpZnQoeworLy8g Ly8gICAgICAgICAgIG5hbWU6ICdwZy1iYWNrZm9ybS1leHBhbmQnLAorLy8gLy8gICAgICAgICAg IGxhYmVsOiAnJywKKy8vIC8vICAgICAgICAgICBjZWxsOiBTZXNzaW9uRGV0YWlsc0NlbGwsCisv LyAvLyAgICAgICAgICAgY2VsbF9wcmlvcml0eTogLTEsCisvLyAvLyAgICAgICAgICAgcG9zdGdy ZXNfdmVyc2lvbjogc2VsZi52ZXJzaW9uLAorLy8gLy8gICAgICAgICAgIHNjaGVtYTogc3ViTm9k ZUZpZWxkc01vZGVsLAorLy8gLy8gICAgICAgICB9KTsKKworLy8gLy8gICAgICAgICAvLyBBZGQg Y2FuY2VsIGFjdGl2ZSBxdWVyeSBidXR0b24KKy8vIC8vICAgICAgICAgc2VydmVyX2FjdGl2aXR5 X2NvbHVtbnMudW5zaGlmdCh7CisvLyAvLyAgICAgICAgICAgbmFtZTogJ3BnLWJhY2tmb3JtLWRl bGV0ZScsCisvLyAvLyAgICAgICAgICAgbGFiZWw6ICcnLAorLy8gLy8gICAgICAgICAgIGNlbGw6 IGN1c3RvbURhc2hib2FyZEFjdGlvbkNlbGwsCisvLyAvLyAgICAgICAgICAgY2VsbF9hY3Rpb246 ICdjYW5jZWwnLAorLy8gLy8gICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKKy8vIC8vICAgICAg ICAgICBjZWxsX3ByaW9yaXR5OiAtMSwKKy8vIC8vICAgICAgICAgICBjYW5EZWxldGVSb3c6IHBn QWRtaW4uRGFzaGJvYXJkLmNhbl90YWtlX2FjdGlvbiwKKy8vIC8vICAgICAgICAgICBwb3N0Z3Jl c192ZXJzaW9uOiBzZWxmLnZlcnNpb24sCisvLyAvLyAgICAgICAgIH0pOworCisvLyAvLyAgICAg ICAgIHNlcnZlcl9hY3Rpdml0eV9jb2x1bW5zLnVuc2hpZnQoeworLy8gLy8gICAgICAgICAgIG5h bWU6ICdwZy1iYWNrZm9ybS1kZWxldGUnLAorLy8gLy8gICAgICAgICAgIGxhYmVsOiAnJywKKy8v IC8vICAgICAgICAgICBjZWxsOiBjdXN0b21EYXNoYm9hcmRBY3Rpb25DZWxsLAorLy8gLy8gICAg ICAgICAgIGNlbGxfYWN0aW9uOiAndGVybWluYXRlJywKKy8vIC8vICAgICAgICAgICBlZGl0YWJs ZTogZmFsc2UsCisvLyAvLyAgICAgICAgICAgY2VsbF9wcmlvcml0eTogLTEsCisvLyAvLyAgICAg ICAgICAgY2FuRGVsZXRlUm93OiBwZ0FkbWluLkRhc2hib2FyZC5jYW5fdGFrZV9hY3Rpb24sCisv LyAvLyAgICAgICAgICAgcG9zdGdyZXNfdmVyc2lvbjogc2VsZi52ZXJzaW9uLAorLy8gLy8gICAg ICAgICB9KTsKKworLy8gLy8gICAgICAgICB2YXIgc2VydmVyX2xvY2tzX2NvbHVtbnMgPSBbewor Ly8gLy8gICAgICAgICAgIG5hbWU6ICdwaWQnLAorLy8gLy8gICAgICAgICAgIGxhYmVsOiBnZXR0 ZXh0KCdQSUQnKSwKKy8vIC8vICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCisvLyAvLyAgICAg ICAgICAgY2VsbDogJ3N0cmluZycsCisvLyAvLyAgICAgICAgIH0sIHsKKy8vIC8vICAgICAgICAg ICBuYW1lOiAnZGF0bmFtZScsCisvLyAvLyAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0RhdGFi YXNlJyksCisvLyAvLyAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAorLy8gLy8gICAgICAgICAg IGNlbGw6ICdzdHJpbmcnLAorLy8gLy8gICAgICAgICB9LCB7CisvLyAvLyAgICAgICAgICAgbmFt ZTogJ2xvY2t0eXBlJywKKy8vIC8vICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnTG9jayB0eXBl JyksCisvLyAvLyAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAorLy8gLy8gICAgICAgICAgIGNl bGw6ICdzdHJpbmcnLAorLy8gLy8gICAgICAgICB9LCB7CisvLyAvLyAgICAgICAgICAgbmFtZTog J3JlbGF0aW9uJywKKy8vIC8vICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnVGFyZ2V0IHJlbGF0 aW9uJyksCisvLyAvLyAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAorLy8gLy8gICAgICAgICAg IGNlbGw6ICdzdHJpbmcnLAorLy8gLy8gICAgICAgICB9LCB7CisvLyAvLyAgICAgICAgICAgbmFt ZTogJ3BhZ2UnLAorLy8gLy8gICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdQYWdlJyksCisvLyAv LyAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAorLy8gLy8gICAgICAgICAgIGNlbGw6ICdzdHJp bmcnLAorLy8gLy8gICAgICAgICB9LCB7CisvLyAvLyAgICAgICAgICAgbmFtZTogJ3R1cGxlJywK Ky8vIC8vICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnVHVwbGUnKSwKKy8vIC8vICAgICAgICAg ICBlZGl0YWJsZTogZmFsc2UsCisvLyAvLyAgICAgICAgICAgY2VsbDogJ3N0cmluZycsCisvLyAv LyAgICAgICAgIH0sIHsKKy8vIC8vICAgICAgICAgICBuYW1lOiAndmlydHVhbHhpZCcsCisvLyAv LyAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ3ZYSUQgKHRhcmdldCknKSwKKy8vIC8vICAgICAg ICAgICBlZGl0YWJsZTogZmFsc2UsCisvLyAvLyAgICAgICAgICAgY2VsbDogJ3N0cmluZycsCisv LyAvLyAgICAgICAgIH0sIHsKKy8vIC8vICAgICAgICAgICBuYW1lOiAndHJhbnNhY3Rpb25pZCcs CisvLyAvLyAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1hJRCAodGFyZ2V0KScpLAorLy8gLy8g ICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKKy8vIC8vICAgICAgICAgICBjZWxsOiAnc3RyaW5n JywKKy8vIC8vICAgICAgICAgfSwgeworLy8gLy8gICAgICAgICAgIG5hbWU6ICdjbGFzc2lkJywK Ky8vIC8vICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQ2xhc3MnKSwKKy8vIC8vICAgICAgICAg ICBlZGl0YWJsZTogZmFsc2UsCisvLyAvLyAgICAgICAgICAgY2VsbDogJ3N0cmluZycsCisvLyAv LyAgICAgICAgIH0sIHsKKy8vIC8vICAgICAgICAgICBuYW1lOiAnb2JqaWQnLAorLy8gLy8gICAg ICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdPYmplY3QgSUQnKSwKKy8vIC8vICAgICAgICAgICBlZGl0 YWJsZTogZmFsc2UsCisvLyAvLyAgICAgICAgICAgY2VsbDogJ3N0cmluZycsCisvLyAvLyAgICAg ICAgIH0sIHsKKy8vIC8vICAgICAgICAgICBuYW1lOiAndmlydHVhbHRyYW5zYWN0aW9uJywKKy8v IC8vICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgndlhJRCAob3duZXIpJyksCisvLyAvLyAgICAg ICAgICAgZWRpdGFibGU6IGZhbHNlLAorLy8gLy8gICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAor Ly8gLy8gICAgICAgICB9LCB7CisvLyAvLyAgICAgICAgICAgbmFtZTogJ21vZGUnLAorLy8gLy8g ICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdNb2RlJyksCisvLyAvLyAgICAgICAgICAgZWRpdGFi bGU6IGZhbHNlLAorLy8gLy8gICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAorLy8gLy8gICAgICAg ICB9LCB7CisvLyAvLyAgICAgICAgICAgbmFtZTogJ2dyYW50ZWQnLAorLy8gLy8gICAgICAgICAg IGxhYmVsOiBnZXR0ZXh0KCdHcmFudGVkPycpLAorLy8gLy8gICAgICAgICAgIGVkaXRhYmxlOiBm YWxzZSwKKy8vIC8vICAgICAgICAgICBjZWxsOiAnc3RyaW5nJywKKy8vIC8vICAgICAgICAgfV07 CisKKy8vIC8vICAgICAgICAgdmFyIHNlcnZlcl9wcmVwYXJlZF9jb2x1bW5zID0gW3sKKy8vIC8v ICAgICAgICAgICBuYW1lOiAnZ2l0JywKKy8vIC8vICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgn TmFtZScpLAorLy8gLy8gICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKKy8vIC8vICAgICAgICAg ICBjZWxsOiAnc3RyaW5nJywKKy8vIC8vICAgICAgICAgfSwgeworLy8gLy8gICAgICAgICAgIG5h bWU6ICdkYXRhYmFzZScsCisvLyAvLyAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0RhdGFiYXNl JyksCisvLyAvLyAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAorLy8gLy8gICAgICAgICAgIGNl bGw6ICdzdHJpbmcnLAorLy8gLy8gICAgICAgICB9LCB7CisvLyAvLyAgICAgICAgICAgbmFtZTog J093bmVyJywKKy8vIC8vICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnT3duZXInKSwKKy8vIC8v ICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCisvLyAvLyAgICAgICAgICAgY2VsbDogJ3N0cmlu ZycsCisvLyAvLyAgICAgICAgIH0sIHsKKy8vIC8vICAgICAgICAgICBuYW1lOiAndHJhbnNhY3Rp b24nLAorLy8gLy8gICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdYSUQnKSwKKy8vIC8vICAgICAg ICAgICBlZGl0YWJsZTogZmFsc2UsCisvLyAvLyAgICAgICAgICAgY2VsbDogJ3N0cmluZycsCisv LyAvLyAgICAgICAgIH0sIHsKKy8vIC8vICAgICAgICAgICBuYW1lOiAncHJlcGFyZWQnLAorLy8g Ly8gICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdQcmVwYXJlZCBhdCcpLAorLy8gLy8gICAgICAg ICAgIGVkaXRhYmxlOiBmYWxzZSwKKy8vIC8vICAgICAgICAgICBjZWxsOiAnc3RyaW5nJywKKy8v IC8vICAgICAgICAgfV07CisKKy8vIC8vICAgICAgICAgdmFyIHNlcnZlcl9jb25maWdfY29sdW1u cyA9IFt7CisvLyAvLyAgICAgICAgICAgbmFtZTogJ25hbWUnLAorLy8gLy8gICAgICAgICAgIGxh YmVsOiBnZXR0ZXh0KCdOYW1lJyksCisvLyAvLyAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAor Ly8gLy8gICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAorLy8gLy8gICAgICAgICB9LCB7CisvLyAv LyAgICAgICAgICAgbmFtZTogJ2NhdGVnb3J5JywKKy8vIC8vICAgICAgICAgICBsYWJlbDogZ2V0 dGV4dCgnQ2F0ZWdvcnknKSwKKy8vIC8vICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCisvLyAv LyAgICAgICAgICAgY2VsbDogJ3N0cmluZycsCisvLyAvLyAgICAgICAgIH0sIHsKKy8vIC8vICAg ICAgICAgICBuYW1lOiAnc2V0dGluZycsCisvLyAvLyAgICAgICAgICAgbGFiZWw6IGdldHRleHQo J1NldHRpbmcnKSwKKy8vIC8vICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCisvLyAvLyAgICAg ICAgICAgY2VsbDogJ3N0cmluZycsCisvLyAvLyAgICAgICAgIH0sIHsKKy8vIC8vICAgICAgICAg ICBuYW1lOiAndW5pdCcsCisvLyAvLyAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1VuaXQnKSwK Ky8vIC8vICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCisvLyAvLyAgICAgICAgICAgY2VsbDog J3N0cmluZycsCisvLyAvLyAgICAgICAgIH0sIHsKKy8vIC8vICAgICAgICAgICBuYW1lOiAnc2hv cnRfZGVzYycsCisvLyAvLyAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0Rlc2NyaXB0aW9uJyks CisvLyAvLyAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAorLy8gLy8gICAgICAgICAgIGNlbGw6 ICdzdHJpbmcnLAorLy8gLy8gICAgICAgICB9XTsKKworLy8gLy8gICAgICAgICAvLyBUbyBhbGln biBzdWJub2RlIGNvbnRyb2xzIHByb3Blcmx5CisvLyAvLyAgICAgICAgICQoZGl2X3NlcnZlcl9h Y3Rpdml0eSkuYWRkQ2xhc3MoJ3BnLWVsLWNvbnRhaW5lcicpOworLy8gLy8gICAgICAgICAkKGRp dl9zZXJ2ZXJfYWN0aXZpdHkpLmF0dHIoJ2VsJywgJ3NtJyk7CisKKy8vIC8vICAgICAgICAgLy8g UmVuZGVyIHRoZSB0YWJzLCBidXQgb25seSBnZXQgZGF0YSBmb3IgdGhlIGFjdGl2aXR5IHRhYiBm b3Igbm93CisvLyAvLyAgICAgICAgIHBnQWRtaW4uRGFzaGJvYXJkLnJlbmRlcl9ncmlkKAorLy8g Ly8gICAgICAgICAgIGRpdl9zZXJ2ZXJfYWN0aXZpdHksIHVybF9mb3IoJ2Rhc2hib2FyZC5hY3Rp dml0eScpLCBzZXJ2ZXJfYWN0aXZpdHlfY29sdW1ucworLy8gLy8gICAgICAgICApOworLy8gLy8g ICAgICAgICBwZ0FkbWluLkRhc2hib2FyZC5yZW5kZXJfZ3JpZCgKKy8vIC8vICAgICAgICAgICBk aXZfc2VydmVyX2xvY2tzLCB1cmxfZm9yKCdkYXNoYm9hcmQubG9ja3MnKSwgc2VydmVyX2xvY2tz X2NvbHVtbnMKKy8vIC8vICAgICAgICAgKTsKKy8vIC8vICAgICAgICAgcGdBZG1pbi5EYXNoYm9h cmQucmVuZGVyX2dyaWQoCisvLyAvLyAgICAgICAgICAgZGl2X3NlcnZlcl9wcmVwYXJlZCwgdXJs X2ZvcignZGFzaGJvYXJkLnByZXBhcmVkJyksIHNlcnZlcl9wcmVwYXJlZF9jb2x1bW5zCisvLyAv LyAgICAgICAgICk7CisvLyAvLyAgICAgICAgIHBnQWRtaW4uRGFzaGJvYXJkLnJlbmRlcl9ncmlk KAorLy8gLy8gICAgICAgICAgIGRpdl9zZXJ2ZXJfY29uZmlnLCB1cmxfZm9yKCdkYXNoYm9hcmQu Y29uZmlnJyksIHNlcnZlcl9jb25maWdfY29sdW1ucworLy8gLy8gICAgICAgICApOworCisvLyAv LyAgICAgICAgIHBnQWRtaW4uRGFzaGJvYXJkLnJlbmRlcl9ncmlkX2RhdGEoZGl2X3NlcnZlcl9h Y3Rpdml0eSk7CisKKy8vIC8vICAgICAgICAgLy8gKFJlKXJlbmRlciB0aGUgYXBwcm9wcmlhdGUg dGFiCisvLyAvLyAgICAgICAgICQoJ2FbZGF0YS10b2dnbGU9InRhYiJdJykub24oJ3Nob3duLmJz LnRhYicsIGZ1bmN0aW9uKGUpIHsKKy8vIC8vICAgICAgICAgICBzZWxmLnJlbmRlclRhYihlLCB0 YWJfZ3JpZF9tYXApOworLy8gLy8gICAgICAgICB9KTsKKworLy8gLy8gICAgICAgICAkKCcjYnRu X3JlZnJlc2gnKS5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgKCkgPT4geworLy8gLy8gICAgICAg ICAgIGxldCBjdXJyR3JpZCA9IHRhYl9ncmlkX21hcFskKCcjZGFzaGJvYXJkLWFjdGl2aXR5IC5u YXYtdGFicyAuYWN0aXZlJykuYXR0cignYXJpYS1jb250cm9scycpXTsKKy8vIC8vICAgICAgICAg ICBwZ0FkbWluLkRhc2hib2FyZC5yZW5kZXJfZ3JpZF9kYXRhKGN1cnJHcmlkKTsKKy8vIC8vICAg ICAgICAgfSk7CisvLyAvLyAgICAgICB9CisvLyAvLyAgICAgfSwKKy8vIC8vICAgICByZWZsZWN0 UHJlZmVyZW5jZXNEYXRhYmFzZTogZnVuY3Rpb24oKSB7CisvLyAvLyAgICAgICB2YXIgc2VsZiA9 IHRoaXM7CisvLyAvLyAgICAgICB2YXIgZGl2X2RhdGFiYXNlX2FjdGl2aXR5ID0gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ2RhdGFiYXNlX2FjdGl2aXR5Jyk7CisvLyAvLyAgICAgICB2YXIgZGl2 X2RhdGFiYXNlX2xvY2tzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGFiYXNlX2xvY2tz Jyk7CisvLyAvLyAgICAgICB2YXIgZGl2X2RhdGFiYXNlX3ByZXBhcmVkID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2RhdGFiYXNlX3ByZXBhcmVkJyk7CisKKy8vIC8vICAgICAgIHZhciB0YWJf Z3JpZF9tYXAgPSB7CisvLyAvLyAgICAgICAgICd0YWJfZGF0YWJhc2VfYWN0aXZpdHknOiBkaXZf ZGF0YWJhc2VfYWN0aXZpdHksCisvLyAvLyAgICAgICAgICd0YWJfZGF0YWJhc2VfbG9ja3MnOiBk aXZfZGF0YWJhc2VfbG9ja3MsCisvLyAvLyAgICAgICAgICd0YWJfZGF0YWJhc2VfcHJlcGFyZWQn OiBkaXZfZGF0YWJhc2VfcHJlcGFyZWQsCisvLyAvLyAgICAgICB9OworCisvLyAvLyAgICAgICAv LyBEaXNwbGF5IHNlcnZlciBhY3Rpdml0eQorLy8gLy8gICAgICAgaWYgKHNlbGYucHJlZmVyZW5j ZXMuc2hvd19hY3Rpdml0eSkgeworLy8gLy8gICAgICAgICB2YXIgZGF0YWJhc2VfYWN0aXZpdHlf Y29sdW1ucyA9IFt7CisvLyAvLyAgICAgICAgICAgbmFtZTogJ3BpZCcsCisvLyAvLyAgICAgICAg ICAgbGFiZWw6IGdldHRleHQoJ1BJRCcpLAorLy8gLy8gICAgICAgICAgIGVkaXRhYmxlOiBmYWxz ZSwKKy8vIC8vICAgICAgICAgICBjZWxsOiAnc3RyaW5nJywKKy8vIC8vICAgICAgICAgfSwgewor Ly8gLy8gICAgICAgICAgIG5hbWU6ICd1c2VuYW1lJywKKy8vIC8vICAgICAgICAgICBsYWJlbDog Z2V0dGV4dCgnVXNlcicpLAorLy8gLy8gICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKKy8vIC8v ICAgICAgICAgICBjZWxsOiAnc3RyaW5nJywKKy8vIC8vICAgICAgICAgfSwgeworLy8gLy8gICAg ICAgICAgIG5hbWU6ICdhcHBsaWNhdGlvbl9uYW1lJywKKy8vIC8vICAgICAgICAgICBsYWJlbDog Z2V0dGV4dCgnQXBwbGljYXRpb24nKSwKKy8vIC8vICAgICAgICAgICBlZGl0YWJsZTogZmFsc2Us CisvLyAvLyAgICAgICAgICAgY2VsbDogJ3N0cmluZycsCisvLyAvLyAgICAgICAgIH0sIHsKKy8v IC8vICAgICAgICAgICBuYW1lOiAnY2xpZW50X2FkZHInLAorLy8gLy8gICAgICAgICAgIGxhYmVs OiBnZXR0ZXh0KCdDbGllbnQnKSwKKy8vIC8vICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCisv LyAvLyAgICAgICAgICAgY2VsbDogJ3N0cmluZycsCisvLyAvLyAgICAgICAgIH0sIHsKKy8vIC8v ICAgICAgICAgICBuYW1lOiAnYmFja2VuZF9zdGFydCcsCisvLyAvLyAgICAgICAgICAgbGFiZWw6 IGdldHRleHQoJ0JhY2tlbmQgc3RhcnQnKSwKKy8vIC8vICAgICAgICAgICBlZGl0YWJsZTogZmFs c2UsCisvLyAvLyAgICAgICAgICAgY2VsbDogJ3N0cmluZycsCisvLyAvLyAgICAgICAgIH0sIHsK Ky8vIC8vICAgICAgICAgICBuYW1lOiAnc3RhdGUnLAorLy8gLy8gICAgICAgICAgIGxhYmVsOiBn ZXR0ZXh0KCdTdGF0ZScpLAorLy8gLy8gICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKKy8vIC8v ICAgICAgICAgICBjZWxsOiAnc3RyaW5nJywKKy8vIC8vICAgICAgICAgfV07CisKKy8vIC8vICAg ICAgICAgaWYgKHNlbGYudmVyc2lvbiA8IDkwNjAwKSB7CisvLyAvLyAgICAgICAgICAgZGF0YWJh c2VfYWN0aXZpdHlfY29sdW1ucyA9IGRhdGFiYXNlX2FjdGl2aXR5X2NvbHVtbnMuY29uY2F0KAor Ly8gLy8gICAgICAgICAgICAgW3sKKy8vIC8vICAgICAgICAgICAgICAgbmFtZTogJ3dhaXRpbmcn LAorLy8gLy8gICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnV2FpdGluZz8nKSwKKy8vIC8v ICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAorLy8gLy8gICAgICAgICAgICAgICBjZWxs OiAnc3RyaW5nJywKKy8vIC8vICAgICAgICAgICAgIH1dKTsKKy8vIC8vICAgICAgICAgfSBlbHNl IHsKKy8vIC8vICAgICAgICAgICBkYXRhYmFzZV9hY3Rpdml0eV9jb2x1bW5zID0gZGF0YWJhc2Vf YWN0aXZpdHlfY29sdW1ucy5jb25jYXQoCisvLyAvLyAgICAgICAgICAgICBbeworLy8gLy8gICAg ICAgICAgICAgICBuYW1lOiAnd2FpdF9ldmVudCcsCisvLyAvLyAgICAgICAgICAgICAgIGxhYmVs OiBnZXR0ZXh0KCdXYWl0IGV2ZW50JyksCisvLyAvLyAgICAgICAgICAgICAgIGVkaXRhYmxlOiBm YWxzZSwKKy8vIC8vICAgICAgICAgICAgICAgY2VsbDogJ3N0cmluZycsCisvLyAvLyAgICAgICAg ICAgICB9LCB7CisvLyAvLyAgICAgICAgICAgICAgIG5hbWU6ICdibG9ja2luZ19waWRzJywKKy8v IC8vICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0Jsb2NraW5nIFBJRHMnKSwKKy8vIC8v ICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAorLy8gLy8gICAgICAgICAgICAgICBjZWxs OiAnc3RyaW5nJywKKy8vIC8vICAgICAgICAgICAgIH1dKTsKKy8vIC8vICAgICAgICAgfQorCisv LyAvLyAgICAgICAgIHZhciBuZXdBY3RpdmVRdWVyeURldGFpbHNNb2RlbCA9IG5ldyBBY3RpdmVR dWVyeURldGFpbHNNb2RlbCgpOworCisvLyAvLyAgICAgICAgIHZhciBzdWJOb2RlRmllbGRzTW9k ZWwgPSBCYWNrZm9ybS5nZW5lcmF0ZVZpZXdTY2hlbWEoCisvLyAvLyAgICAgICAgICAgbnVsbCwg bmV3QWN0aXZlUXVlcnlEZXRhaWxzTW9kZWwsICdjcmVhdGUnLCBudWxsLCBudWxsLCB0cnVlCisv LyAvLyAgICAgICAgICk7CisKKy8vIC8vICAgICAgICAgLy8gQWRkIHZlcnNpb24gdG8gZWFjaCBm aWVsZAorLy8gLy8gICAgICAgICBfLmVhY2goc3ViTm9kZUZpZWxkc01vZGVsWzBdLmZpZWxkcywg ZnVuY3Rpb24ob2JqKSB7CisvLyAvLyAgICAgICAgICAgb2JqWyd2ZXJzaW9uJ10gPSBzZWxmLnZl cnNpb247CisvLyAvLyAgICAgICAgIH0pOworCisvLyAvLyAgICAgICAgIC8vIEFkZCBjYW5jZWwg YWN0aXZlIHF1ZXJ5IGJ1dHRvbgorLy8gLy8gICAgICAgICBkYXRhYmFzZV9hY3Rpdml0eV9jb2x1 bW5zLnVuc2hpZnQoeworLy8gLy8gICAgICAgICAgIG5hbWU6ICdwZy1iYWNrZm9ybS1leHBhbmQn LAorLy8gLy8gICAgICAgICAgIGxhYmVsOiAnJywKKy8vIC8vICAgICAgICAgICBjZWxsOiBTZXNz aW9uRGV0YWlsc0NlbGwsCisvLyAvLyAgICAgICAgICAgY2VsbF9wcmlvcml0eTogLTEsCisvLyAv LyAgICAgICAgICAgcG9zdGdyZXNfdmVyc2lvbjogc2VsZi52ZXJzaW9uLAorLy8gLy8gICAgICAg ICAgIHNjaGVtYTogc3ViTm9kZUZpZWxkc01vZGVsLAorLy8gLy8gICAgICAgICB9KTsKKworLy8g Ly8gICAgICAgICBkYXRhYmFzZV9hY3Rpdml0eV9jb2x1bW5zLnVuc2hpZnQoeworLy8gLy8gICAg ICAgICAgIG5hbWU6ICdwZy1iYWNrZm9ybS1kZWxldGUnLAorLy8gLy8gICAgICAgICAgIGxhYmVs OiAnJywKKy8vIC8vICAgICAgICAgICBjZWxsOiBjdXN0b21EYXNoYm9hcmRBY3Rpb25DZWxsLAor Ly8gLy8gICAgICAgICAgIGNlbGxfYWN0aW9uOiAnY2FuY2VsJywKKy8vIC8vICAgICAgICAgICBl ZGl0YWJsZTogZmFsc2UsCisvLyAvLyAgICAgICAgICAgY2VsbF9wcmlvcml0eTogLTEsCisvLyAv LyAgICAgICAgICAgY2FuRGVsZXRlUm93OiBwZ0FkbWluLkRhc2hib2FyZC5jYW5fdGFrZV9hY3Rp b24sCisvLyAvLyAgICAgICAgICAgcG9zdGdyZXNfdmVyc2lvbjogc2VsZi52ZXJzaW9uLAorLy8g Ly8gICAgICAgICB9KTsKKy8vIC8vICAgICAgICAgZGF0YWJhc2VfYWN0aXZpdHlfY29sdW1ucy51 bnNoaWZ0KHsKKy8vIC8vICAgICAgICAgICBuYW1lOiAncGctYmFja2Zvcm0tZGVsZXRlJywKKy8v IC8vICAgICAgICAgICBsYWJlbDogJycsCisvLyAvLyAgICAgICAgICAgY2VsbDogY3VzdG9tRGFz aGJvYXJkQWN0aW9uQ2VsbCwKKy8vIC8vICAgICAgICAgICBjZWxsX2FjdGlvbjogJ3Rlcm1pbmF0 ZScsCisvLyAvLyAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAorLy8gLy8gICAgICAgICAgIGNl bGxfcHJpb3JpdHk6IC0xLAorLy8gLy8gICAgICAgICAgIGNhbkRlbGV0ZVJvdzogcGdBZG1pbi5E YXNoYm9hcmQuY2FuX3Rha2VfYWN0aW9uLAorLy8gLy8gICAgICAgICAgIHBvc3RncmVzX3ZlcnNp b246IHNlbGYudmVyc2lvbiwKKy8vIC8vICAgICAgICAgfSk7CisKKy8vIC8vICAgICAgICAgdmFy IGRhdGFiYXNlX2xvY2tzX2NvbHVtbnMgPSBbeworLy8gLy8gICAgICAgICAgIG5hbWU6ICdwaWQn LAorLy8gLy8gICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdQSUQnKSwKKy8vIC8vICAgICAgICAg ICBlZGl0YWJsZTogZmFsc2UsCisvLyAvLyAgICAgICAgICAgY2VsbDogJ3N0cmluZycsCisvLyAv LyAgICAgICAgIH0sIHsKKy8vIC8vICAgICAgICAgICBuYW1lOiAnbG9ja3R5cGUnLAorLy8gLy8g ICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdMb2NrIHR5cGUnKSwKKy8vIC8vICAgICAgICAgICBl ZGl0YWJsZTogZmFsc2UsCisvLyAvLyAgICAgICAgICAgY2VsbDogJ3N0cmluZycsCisvLyAvLyAg ICAgICAgIH0sIHsKKy8vIC8vICAgICAgICAgICBuYW1lOiAncmVsYXRpb24nLAorLy8gLy8gICAg ICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdUYXJnZXQgcmVsYXRpb24nKSwKKy8vIC8vICAgICAgICAg ICBlZGl0YWJsZTogZmFsc2UsCisvLyAvLyAgICAgICAgICAgY2VsbDogJ3N0cmluZycsCisvLyAv LyAgICAgICAgIH0sIHsKKy8vIC8vICAgICAgICAgICBuYW1lOiAncGFnZScsCisvLyAvLyAgICAg ICAgICAgbGFiZWw6IGdldHRleHQoJ1BhZ2UnKSwKKy8vIC8vICAgICAgICAgICBlZGl0YWJsZTog ZmFsc2UsCisvLyAvLyAgICAgICAgICAgY2VsbDogJ3N0cmluZycsCisvLyAvLyAgICAgICAgIH0s IHsKKy8vIC8vICAgICAgICAgICBuYW1lOiAndHVwbGUnLAorLy8gLy8gICAgICAgICAgIGxhYmVs OiBnZXR0ZXh0KCdUdXBsZScpLAorLy8gLy8gICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKKy8v IC8vICAgICAgICAgICBjZWxsOiAnc3RyaW5nJywKKy8vIC8vICAgICAgICAgfSwgeworLy8gLy8g ICAgICAgICAgIG5hbWU6ICd2aXJ0dWFseGlkJywKKy8vIC8vICAgICAgICAgICBsYWJlbDogZ2V0 dGV4dCgndlhJRCAodGFyZ2V0KScpLAorLy8gLy8gICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwK Ky8vIC8vICAgICAgICAgICBjZWxsOiAnc3RyaW5nJywKKy8vIC8vICAgICAgICAgfSwgeworLy8g Ly8gICAgICAgICAgIG5hbWU6ICd0cmFuc2FjdGlvbmlkJywKKy8vIC8vICAgICAgICAgICBsYWJl bDogZ2V0dGV4dCgnWElEICh0YXJnZXQpJyksCisvLyAvLyAgICAgICAgICAgZWRpdGFibGU6IGZh bHNlLAorLy8gLy8gICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAorLy8gLy8gICAgICAgICB9LCB7 CisvLyAvLyAgICAgICAgICAgbmFtZTogJ2NsYXNzaWQnLAorLy8gLy8gICAgICAgICAgIGxhYmVs OiBnZXR0ZXh0KCdDbGFzcycpLAorLy8gLy8gICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKKy8v IC8vICAgICAgICAgICBjZWxsOiAnc3RyaW5nJywKKy8vIC8vICAgICAgICAgfSwgeworLy8gLy8g ICAgICAgICAgIG5hbWU6ICdvYmppZCcsCisvLyAvLyAgICAgICAgICAgbGFiZWw6IGdldHRleHQo J09iamVjdCBJRCcpLAorLy8gLy8gICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwKKy8vIC8vICAg ICAgICAgICBjZWxsOiAnc3RyaW5nJywKKy8vIC8vICAgICAgICAgfSwgeworLy8gLy8gICAgICAg ICAgIG5hbWU6ICd2aXJ0dWFsdHJhbnNhY3Rpb24nLAorLy8gLy8gICAgICAgICAgIGxhYmVsOiBn ZXR0ZXh0KCd2WElEIChvd25lciknKSwKKy8vIC8vICAgICAgICAgICBlZGl0YWJsZTogZmFsc2Us CisvLyAvLyAgICAgICAgICAgY2VsbDogJ3N0cmluZycsCisvLyAvLyAgICAgICAgIH0sIHsKKy8v IC8vICAgICAgICAgICBuYW1lOiAnbW9kZScsCisvLyAvLyAgICAgICAgICAgbGFiZWw6IGdldHRl eHQoJ01vZGUnKSwKKy8vIC8vICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCisvLyAvLyAgICAg ICAgICAgY2VsbDogJ3N0cmluZycsCisvLyAvLyAgICAgICAgIH0sIHsKKy8vIC8vICAgICAgICAg ICBuYW1lOiAnZ3JhbnRlZCcsCisvLyAvLyAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0dyYW50 ZWQ/JyksCisvLyAvLyAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAorLy8gLy8gICAgICAgICAg IGNlbGw6ICdzdHJpbmcnLAorLy8gLy8gICAgICAgICB9XTsKKworLy8gLy8gICAgICAgICB2YXIg ZGF0YWJhc2VfcHJlcGFyZWRfY29sdW1ucyA9IFt7CisvLyAvLyAgICAgICAgICAgbmFtZTogJ2dp dCcsCisvLyAvLyAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ05hbWUnKSwKKy8vIC8vICAgICAg ICAgICBlZGl0YWJsZTogZmFsc2UsCisvLyAvLyAgICAgICAgICAgY2VsbDogJ3N0cmluZycsCisv LyAvLyAgICAgICAgIH0sIHsKKy8vIC8vICAgICAgICAgICBuYW1lOiAnT3duZXInLAorLy8gLy8g ICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdPd25lcicpLAorLy8gLy8gICAgICAgICAgIGVkaXRh YmxlOiBmYWxzZSwKKy8vIC8vICAgICAgICAgICBjZWxsOiAnc3RyaW5nJywKKy8vIC8vICAgICAg ICAgfSwgeworLy8gLy8gICAgICAgICAgIG5hbWU6ICd0cmFuc2FjdGlvbicsCisvLyAvLyAgICAg ICAgICAgbGFiZWw6IGdldHRleHQoJ1hJRCcpLAorLy8gLy8gICAgICAgICAgIGVkaXRhYmxlOiBm YWxzZSwKKy8vIC8vICAgICAgICAgICBjZWxsOiAnc3RyaW5nJywKKy8vIC8vICAgICAgICAgfSwg eworLy8gLy8gICAgICAgICAgIG5hbWU6ICdwcmVwYXJlZCcsCisvLyAvLyAgICAgICAgICAgbGFi ZWw6IGdldHRleHQoJ1ByZXBhcmVkIGF0JyksCisvLyAvLyAgICAgICAgICAgZWRpdGFibGU6IGZh bHNlLAorLy8gLy8gICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLAorLy8gLy8gICAgICAgICB9XTsK KworLy8gLy8gICAgICAgICAvLyBUbyBhbGlnbiBzdWJub2RlIGNvbnRyb2xzIHByb3Blcmx5Cisv LyAvLyAgICAgICAgICQoZGl2X2RhdGFiYXNlX2FjdGl2aXR5KS5hZGRDbGFzcygncGctZWwtY29u dGFpbmVyJyk7CisvLyAvLyAgICAgICAgICQoZGl2X2RhdGFiYXNlX2FjdGl2aXR5KS5hdHRyKCdl bCcsICdzbScpOworCisvLyAvLyAgICAgICAgIC8vIFJlbmRlciB0aGUgdGFicywgYnV0IG9ubHkg Z2V0IGRhdGEgZm9yIHRoZSBhY3Rpdml0eSB0YWIgZm9yIG5vdworLy8gLy8gICAgICAgICBwZ0Fk bWluLkRhc2hib2FyZC5yZW5kZXJfZ3JpZCgKKy8vIC8vICAgICAgICAgICBkaXZfZGF0YWJhc2Vf YWN0aXZpdHksIHVybF9mb3IoJ2Rhc2hib2FyZC5hY3Rpdml0eScpLCBkYXRhYmFzZV9hY3Rpdml0 eV9jb2x1bW5zCisvLyAvLyAgICAgICAgICk7CisvLyAvLyAgICAgICAgIHBnQWRtaW4uRGFzaGJv YXJkLnJlbmRlcl9ncmlkKAorLy8gLy8gICAgICAgICAgIGRpdl9kYXRhYmFzZV9sb2NrcywgdXJs X2ZvcignZGFzaGJvYXJkLmxvY2tzJyksIGRhdGFiYXNlX2xvY2tzX2NvbHVtbnMKKy8vIC8vICAg ICAgICAgKTsKKy8vIC8vICAgICAgICAgcGdBZG1pbi5EYXNoYm9hcmQucmVuZGVyX2dyaWQoCisv LyAvLyAgICAgICAgICAgZGl2X2RhdGFiYXNlX3ByZXBhcmVkLCB1cmxfZm9yKCdkYXNoYm9hcmQu cHJlcGFyZWQnKSwgZGF0YWJhc2VfcHJlcGFyZWRfY29sdW1ucworLy8gLy8gICAgICAgICApOwor CisvLyAvLyAgICAgICAgIHBnQWRtaW4uRGFzaGJvYXJkLnJlbmRlcl9ncmlkX2RhdGEoZGl2X2Rh dGFiYXNlX2FjdGl2aXR5KTsKKworLy8gLy8gICAgICAgICAvLyAoUmUpcmVuZGVyIHRoZSBhcHBy b3ByaWF0ZSB0YWIKKy8vIC8vICAgICAgICAgJCgnYVtkYXRhLXRvZ2dsZT0idGFiIl0nKS5vbign c2hvd24uYnMudGFiJywgZnVuY3Rpb24oZSkgeworLy8gLy8gICAgICAgICAgIHNlbGYucmVuZGVy VGFiKGUsIHRhYl9ncmlkX21hcCk7CisvLyAvLyAgICAgICAgIH0pOworCisvLyAvLyAgICAgICAg ICQoJyNidG5fcmVmcmVzaCcpLm9mZignY2xpY2snKS5vbignY2xpY2snLCAoKSA9PiB7CisvLyAv LyAgICAgICAgICAgbGV0IGN1cnJHcmlkID0gdGFiX2dyaWRfbWFwWyQoJyNkYXNoYm9hcmQtYWN0 aXZpdHkgLm5hdi10YWJzIC5hY3RpdmUnKS5hdHRyKCdhcmlhLWNvbnRyb2xzJyldOworLy8gLy8g ICAgICAgICAgIHBnQWRtaW4uRGFzaGJvYXJkLnJlbmRlcl9ncmlkX2RhdGEoY3VyckdyaWQpOwor Ly8gLy8gICAgICAgICB9KTsKKy8vIC8vICAgICAgIH0KKy8vIC8vICAgICB9LAorLy8gLy8gICAg IHRvZ2dsZVZpc2liaWxpdHk6IGZ1bmN0aW9uKHZpc2libGUsIGNsb3NlZD1mYWxzZSkgeworLy8g Ly8gICAgICAgZGFzaGJvYXJkVmlzaWJsZSA9IHZpc2libGU7CisvLyAvLyAgICAgICBpZihjbG9z ZWQpIHsKKy8vIC8vICAgICAgICAgdGhpcy5jaGFydHNEb21PYmogJiYgdGhpcy5jaGFydHNEb21P YmoudW5tb3VudCgpOworLy8gLy8gICAgICAgfSBlbHNlIHsKKy8vIC8vICAgICAgICAgdmFyIHQg PSBwZ0Jyb3dzZXIudHJlZSwKKy8vIC8vICAgICAgICAgICBpID0gdCA/IHQuc2VsZWN0ZWQoKSA6 IDAsCisvLyAvLyAgICAgICAgICAgZCA9IGkgJiYgdC5pdGVtRGF0YShpKTsKKworLy8gLy8gICAg ICAgICB0aGlzLmNoYXJ0c0RvbU9iaiAmJiB0aGlzLmNoYXJ0c0RvbU9iai5zZXRQYWdlVmlzaWJs ZShkYXNoYm9hcmRWaXNpYmxlKTsKKy8vIC8vICAgICAgICAgdGhpcy5vYmplY3Rfc2VsZWN0ZWQo aSwgZCk7CisvLyAvLyAgICAgICB9CisvLyAvLyAgICAgfSwKKy8vIC8vICAgICBjYW5fdGFrZV9h Y3Rpb246IGZ1bmN0aW9uKG0pIHsKKy8vIC8vICAgICAgIC8vIFdlIHdpbGwgdmFsaWRhdGUgaWYg dXNlciBpcyBhbGxvd2VkIHRvIGNhbmNlbCB0aGUgYWN0aXZlIHF1ZXJ5CisvLyAvLyAgICAgICAv LyBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhY3RpdmUgc2Vzc2lvbiBtZWFucyBpdCBwcm9iYWJseSBv dXIgbWFpbgorLy8gLy8gICAgICAgLy8gY29ubmVjdGlvbiBzZXNzaW9uCisvLyAvLyAgICAgICB2 YXIgYWN0aXZlX3Nlc3Npb25zID0gbS5jb2xsZWN0aW9uLndoZXJlKHsKKy8vIC8vICAgICAgICAg ICAnc3RhdGUnOiAnYWN0aXZlJywKKy8vIC8vICAgICAgICAgfSksCisvLyAvLyAgICAgICAgIHBn X3ZlcnNpb24gPSB0aGlzLmdldCgncG9zdGdyZXNfdmVyc2lvbicpIHx8IG51bGwsCisvLyAvLyAg ICAgICAgIGNlbGxfYWN0aW9uID0gdGhpcy5nZXQoJ2NlbGxfYWN0aW9uJykgfHwgbnVsbCwKKy8v IC8vICAgICAgICAgaXNfY2FuY2VsX3Nlc3Npb24gPSBjZWxsX2FjdGlvbiA9PT0gJ2NhbmNlbCcs CisvLyAvLyAgICAgICAgIHR4dE1lc3NhZ2U7CisKKy8vIC8vICAgICAgIC8vIFdpdGggUEcxMCwg V2UgaGF2ZSBiYWNrZ3JvdW5kIHByb2Nlc3Mgc2hvd2luZyBvbiBkYXNoYm9hcmQKKy8vIC8vICAg ICAgIC8vIFdlIHdpbGwgbm90IGFsbG93IHVzZXIgdG8gY2FuY2VsIHRoZW0gYXMgdGhleSB3aWxs IGZhaWwgd2l0aCBlcnJvcgorLy8gLy8gICAgICAgLy8gYW55d2F5LCBzbyBiZXR0ZXIgdXNhYmls aXR5IHdlIHdpbGwgdGhyb3cgb3VyIG9uIG5vdGlmaWNhdGlvbgorCisvLyAvLyAgICAgICAvLyBC YWNrZ3JvdW5kIHByb2Nlc3NlcyBkbyBub3QgaGF2ZSBkYXRhYmFzZSBmaWVsZCBwb3B1bGF0ZWQK Ky8vIC8vICAgICAgIGlmIChwZ192ZXJzaW9uICYmIHBnX3ZlcnNpb24gPj0gMTAwMDAwICYmICFt LmdldCgnZGF0bmFtZScpKSB7CisvLyAvLyAgICAgICAgIGlmIChpc19jYW5jZWxfc2Vzc2lvbikg eworLy8gLy8gICAgICAgICAgIHR4dE1lc3NhZ2UgPSBnZXR0ZXh0KCdZb3UgY2Fubm90IGNhbmNl bCBiYWNrZ3JvdW5kIHdvcmtlciBwcm9jZXNzZXMuJyk7CisvLyAvLyAgICAgICAgIH0gZWxzZSB7 CisvLyAvLyAgICAgICAgICAgdHh0TWVzc2FnZSA9IGdldHRleHQoJ1lvdSBjYW5ub3QgdGVybWlu YXRlIGJhY2tncm91bmQgd29ya2VyIHByb2Nlc3Nlcy4nKTsKKy8vIC8vICAgICAgICAgfQorLy8g Ly8gICAgICAgICBOb3RpZnkuaW5mbyh0eHRNZXNzYWdlKTsKKy8vIC8vICAgICAgICAgcmV0dXJu IGZhbHNlOworLy8gLy8gICAgICAgICAvLyBJZiBpdCBpcyB0aGUgbGFzdCBhY3RpdmUgY29ubmVj dGlvbiBvbiBtYWludGVuYW5jZSBkYiB0aGVuIGVycm9yIG91dAorLy8gLy8gICAgICAgfSBlbHNl IGlmIChtYWludGVuYW5jZV9kYXRhYmFzZSA9PSBtLmdldCgnZGF0bmFtZScpICYmCisvLyAvLyAg ICAgICAgIG0uZ2V0KCdzdGF0ZScpID09ICdhY3RpdmUnICYmIGFjdGl2ZV9zZXNzaW9ucy5sZW5n dGggPT0gMSkgeworLy8gLy8gICAgICAgICBpZiAoaXNfY2FuY2VsX3Nlc3Npb24pIHsKKy8vIC8v ICAgICAgICAgICB0eHRNZXNzYWdlID0gZ2V0dGV4dCgnWW91IGFyZSBub3QgYWxsb3dlZCB0byBj YW5jZWwgdGhlIG1haW4gYWN0aXZlIHNlc3Npb24uJyk7CisvLyAvLyAgICAgICAgIH0gZWxzZSB7 CisvLyAvLyAgICAgICAgICAgdHh0TWVzc2FnZSA9IGdldHRleHQoJ1lvdSBhcmUgbm90IGFsbG93 ZWQgdG8gdGVybWluYXRlIHRoZSBtYWluIGFjdGl2ZSBzZXNzaW9uLicpOworLy8gLy8gICAgICAg ICB9CisvLyAvLyAgICAgICAgIE5vdGlmeS5lcnJvcih0eHRNZXNzYWdlKTsKKy8vIC8vICAgICAg ICAgcmV0dXJuIGZhbHNlOworLy8gLy8gICAgICAgfSBlbHNlIGlmIChpc19jYW5jZWxfc2Vzc2lv biAmJiBtLmdldCgnc3RhdGUnKSA9PSAnaWRsZScpIHsKKy8vIC8vICAgICAgICAgLy8gSWYgdGhp cyBzZXNzaW9uIGlzIGFscmVhZHkgaWRsZSB0aGVuIGRvIG5vdGhpbmcKKy8vIC8vICAgICAgICAg Tm90aWZ5LmluZm8oCisvLyAvLyAgICAgICAgICAgZ2V0dGV4dCgnVGhlIHNlc3Npb24gaXMgYWxy ZWFkeSBpbiBpZGxlIHN0YXRlLicpCisvLyAvLyAgICAgICAgICk7CisvLyAvLyAgICAgICAgIHJl dHVybiBmYWxzZTsKKy8vIC8vICAgICAgIH0gZWxzZSBpZiAoY2FuX3NpZ25hbF9iYWNrZW5kKSB7 CisvLyAvLyAgICAgICAgIC8vIHVzZXIgd2l0aCBtZW1iZXJzaGlwIG9mICdwZ19zaWduYWxfYmFj a2VuZCcgY2FuIHRlcm1pbmF0ZSB0aGUgc2Vzc2lvbiBvZiBub24gYWRtaW4gdXNlci4KKy8vIC8v ICAgICAgICAgcmV0dXJuIHRydWU7CisvLyAvLyAgICAgICB9IGVsc2UgaWYgKGlzX3N1cGVyX3Vz ZXIpIHsKKy8vIC8vICAgICAgICAgLy8gU3VwZXIgdXNlciBjYW4gZG8gYW55dGhpbmcKKy8vIC8v ICAgICAgICAgcmV0dXJuIHRydWU7CisvLyAvLyAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRfdXNl ciAmJiBjdXJyZW50X3VzZXIgPT0gbS5nZXQoJ3VzZW5hbWUnKSkgeworLy8gLy8gICAgICAgICAv LyBOb24tc3VwZXIgdXNlciBjYW4gY2FuY2VsIG9ubHkgdGhlaXIgYWN0aXZlIHF1ZXJpZXMKKy8v IC8vICAgICAgICAgcmV0dXJuIHRydWU7CisvLyAvLyAgICAgICB9IGVsc2UgeworLy8gLy8gICAg ICAgICAvLyBEbyBub3QgYWxsb3cgdG8gY2FuY2VsIHNvbWVvbmUgZWxzZSBzZXNzaW9uIHRvIG5v bi1zdXBlciB1c2VyCisvLyAvLyAgICAgICAgIGlmIChpc19jYW5jZWxfc2Vzc2lvbikgeworLy8g Ly8gICAgICAgICAgIHR4dE1lc3NhZ2UgPSBnZXR0ZXh0KCdTdXBlcnVzZXIgcHJpdmlsZWdlcyBh cmUgcmVxdWlyZWQgdG8gY2FuY2VsIGFub3RoZXIgdXNlcnMgcXVlcnkuJyk7CisvLyAvLyAgICAg ICAgIH0gZWxzZSB7CisvLyAvLyAgICAgICAgICAgdHh0TWVzc2FnZSA9IGdldHRleHQoJ1N1cGVy dXNlciBwcml2aWxlZ2VzIGFyZSByZXF1aXJlZCB0byB0ZXJtaW5hdGUgYW5vdGhlciB1c2VycyBx dWVyeS4nKTsKKy8vIC8vICAgICAgICAgfQorLy8gLy8gICAgICAgICBOb3RpZnkuZXJyb3IodHh0 TWVzc2FnZSk7CisvLyAvLyAgICAgICAgIHJldHVybiBmYWxzZTsKKy8vIC8vICAgICAgIH0KKy8v IC8vICAgICB9LAorLy8gLy8gICB9OworCisvLyAvLyAgIHJldHVybiBwZ0FkbWluLkRhc2hib2Fy ZDsKKy8vIC8vIH0pOworCisKKworCisKKworCisKKy8vIC8vLy8vLy8vL0Rhc2hib2FyZC5qc3gK KworCisvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vCisvLyAvLworLy8gLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scwor Ly8gLy8KKy8vIC8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjIsIFRoZSBwZ0FkbWluIERldmVs b3BtZW50IFRlYW0KKy8vIC8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBv c3RncmVTUUwgTGljZW5jZQorLy8gLy8KKy8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKy8vIGltcG9ydCBSZWFjdCwgeyB1 c2VFZmZlY3QsIHVzZVN0YXRlLCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7CisvLyBp bXBvcnQgZ2V0dGV4dCBmcm9tICdzb3VyY2VzL2dldHRleHQnOworLy8gaW1wb3J0IFByb3BUeXBl cyBmcm9tICdwcm9wLXR5cGVzJzsKKy8vIGltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnOworLy8gLy8g aW1wb3J0IE5vdGlmeSBmcm9tICIuLi8uLi8uLi8uLi9zdGF0aWMvanMvaGVscGVycy9Ob3RpZmll ciI7CisvLyBpbXBvcnQgZ2V0QXBpSW5zdGFuY2UgZnJvbSAnc291cmNlcy9hcGlfaW5zdGFuY2Un OworLy8gaW1wb3J0IFBnVGFibGUgZnJvbSAnc291cmNlcy9jb21wb25lbnRzL1BnVGFibGUnOwor Ly8gaW1wb3J0IHsgbWFrZVN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7 CisvLyBpbXBvcnQgdXJsX2ZvciBmcm9tICdzb3VyY2VzL3VybF9mb3InOworLy8gaW1wb3J0IEdy YXBocyBmcm9tICcuL0dyYXBocyc7CisvLyBpbXBvcnQgUmVhY3RIdG1sUGFyc2VyIGZyb20gJ3Jl YWN0LWh0bWwtcGFyc2VyJzsKKy8vIGltcG9ydCB7IGdldFVSTCB9IGZyb20gJy4uLy4uLy4uL21p c2Mvc3RhdGljL3V0aWxzL3V0aWxzJzsKKy8vIGltcG9ydCBOb3RpZnkgZnJvbSAnLi4vLi4vLi4v c3RhdGljL2pzL2hlbHBlcnMvTm90aWZpZXInOworLy8gaW1wb3J0IHsgQm94LCBUYWIsIFRhYnMg fSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZSc7CisvLyBpbXBvcnQgeyBQZ0ljb25CdXR0b24gfSBm cm9tICcuLi8uLi8uLi9zdGF0aWMvanMvY29tcG9uZW50cy9CdXR0b25zJzsKKy8vIGltcG9ydCBD YW5jZWxJY29uIGZyb20gJ0BtdWkvaWNvbnMtbWF0ZXJpYWwvQ2FuY2VsJzsKKy8vIGltcG9ydCBT cXVhcmVJY29uIGZyb20gJ0BtdWkvaWNvbnMtbWF0ZXJpYWwvU3F1YXJlJzsKKy8vIGltcG9ydCBB cnJvd1JpZ2h0T3V0bGluZWRJY29uIGZyb20gJ0BtdWkvaWNvbnMtbWF0ZXJpYWwvQXJyb3dSaWdo dE91dGxpbmVkJzsKKy8vIGltcG9ydCBBcnJvd0Ryb3BEb3duT3V0bGluZWRJY29uIGZyb20gJ0Bt dWkvaWNvbnMtbWF0ZXJpYWwvQXJyb3dEcm9wRG93bk91dGxpbmVkJzsKKy8vIGltcG9ydCBfIGZy b20gJ2xvZGFzaCc7CisKKy8vIGltcG9ydCBXZWxjb21lRGFzaGJvYXJkIGZyb20gJy4vV2VsY29t ZURhc2hib2FyZCc7CisKKy8vIGltcG9ydCBBY3RpdmVRdWVyeSBmcm9tICcuL0FjdGl2ZVF1ZXJ5 LnVpJzsKKworLy8gLy8gZnVuY3Rpb24gdGVybWluYXRlUXVlcnlCdXR0b24oc2lkLCBkaWQsIHJv dykgeworLy8gLy8gICB2YXIgdGVybWluYXRlX3Nlc3Npb25fdXJsID0KKy8vIC8vICAgICB1cmxf Zm9yKCJkYXNoYm9hcmQuaW5kZXgiKSArICJ0ZXJtaW5hdGVfc2Vzc2lvbi8iICsgc2lkICsgIi8i ICsgZGlkLAorLy8gLy8gICAgIHRpdGxlID0gZ2V0dGV4dCgiVGVybWluYXRlIFNlc3Npb24/Iiks CisvLyAvLyAgICAgdHh0Q29uZmlybSA9IGdldHRleHQoIkFyZSB5b3Ugc3VyZSB5b3Ugd2lzaCB0 byB0ZXJtaW5hdGUgdGhlIHNlc3Npb24/IiksCisvLyAvLyAgICAgdHh0U3VjY2VzcyA9IGdldHRl eHQoIlNlc3Npb24gdGVybWluYXRlZCBzdWNjZXNzZnVsbHkuIiksCisvLyAvLyAgICAgdHh0RXJy b3IgPSBnZXR0ZXh0KAorLy8gLy8gICAgICAgIkFuIGVycm9yIG9jY3VycmVkIHdoaWxzdCB0ZXJt aW5hdGluZyB0aGUgYWN0aXZlIHF1ZXJ5LiIKKy8vIC8vICAgICApLAorLy8gLy8gICAgIGFjdGlv bl91cmwgPSB0ZXJtaW5hdGVfc2Vzc2lvbl91cmw7CisKKy8vIC8vICAgY29uc3QgYXBpID0gZ2V0 QXBpSW5zdGFuY2UoKTsKKworLy8gLy8gICByZXR1cm4gKAorLy8gLy8gICAgIDxCdXR0b24KKy8v IC8vICAgICAgIHZhcmlhbnQ9Im91dGxpbmVkIgorLy8gLy8gICAgICAgc3RhcnRJY29uPXs8Q2Fu Y2VsSWNvbiBzeD17eyBjb2xvcjogIiNkMTE2MTYiIH19IC8+fQorLy8gLy8gICAgICAgb25DbGlj az17KGUpID0+IHsKKy8vIC8vICAgICAgICAgYWN0aW9uX3VybCArPSAiLyIgKyByb3cudmFsdWVz LnBpZDsKKy8vIC8vICAgICAgICAgTm90aWZ5LmNvbmZpcm0oCisvLyAvLyAgICAgICAgICAgdGl0 bGUsCisvLyAvLyAgICAgICAgICAgdHh0Q29uZmlybSwKKy8vIC8vICAgICAgICAgICBmdW5jdGlv biAoKSB7CisvLyAvLyAgICAgICAgICAgICBhcGkKKy8vIC8vICAgICAgICAgICAgICAgLmRlbGV0 ZShhY3Rpb25fdXJsKQorLy8gLy8gICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7 CisvLyAvLyAgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBnZXR0ZXh0KCJTdWNjZXNzIikpIHsK Ky8vIC8vICAgICAgICAgICAgICAgICAgIE5vdGlmeS5zdWNjZXNzKHR4dFN1Y2Nlc3MpOworLy8g Ly8gICAgICAgICAgICAgICAgICAgcmVmcmVzaF9ncmlkKCk7CisvLyAvLyAgICAgICAgICAgICAg ICAgfSBlbHNlIHsKKy8vIC8vICAgICAgICAgICAgICAgICAgIE5vdGlmeS5lcnJvcih0eHRFcnJv cik7CisvLyAvLyAgICAgICAgICAgICAgICAgfQorLy8gLy8gICAgICAgICAgICAgICB9KQorLy8g Ly8gICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CisvLyAvLyAgICAgICAg ICAgICAgICAgTm90aWZ5LmFsZXJ0KAorLy8gLy8gICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgi RmFpbGVkIHRvIHJldHJpZXZlIGRhdGEgZnJvbSB0aGUgc2VydmVyLiIpLAorLy8gLy8gICAgICAg ICAgICAgICAgICAgZ2V0dGV4dChlcnJvci5tZXNzYWdlKQorLy8gLy8gICAgICAgICAgICAgICAg ICk7CisvLyAvLyAgICAgICAgICAgICAgIH0pOworLy8gLy8gICAgICAgICAgIH0sCisvLyAvLyAg ICAgICAgICAgZnVuY3Rpb24gKCkgeworLy8gLy8gICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisv LyAvLyAgICAgICAgICAgfQorLy8gLy8gICAgICAgICApOworLy8gLy8gICAgICAgfX0KKy8vIC8v ICAgICAgIGNvbG9yPSJkZWZhdWx0IgorLy8gLy8gICAgICAgYXJpYS1sYWJlbD0iQ2FuY2VsIHRo ZSBxdWVyeSIKKy8vIC8vICAgICAgIHRpdGxlPXtnZXR0ZXh0KCJDYW5jZWwgdGhlIGFjdGl2ZSBx dWVyeSIpfQorLy8gLy8gICAgID48L0J1dHRvbj4KKy8vIC8vICAgKTsKKy8vIC8vIH0KKworLy8g Ly8gZnVuY3Rpb24gY2FuY2VsUXVlcnlCdXR0b24oc2lkLCBkaWQsIHJvdykgeworLy8gLy8gICB2 YXIgY2FuY2VsX3F1ZXJ5X3VybCA9CisvLyAvLyAgICAgdXJsX2ZvcigiZGFzaGJvYXJkLmluZGV4 IikgKyAiY2FuY2VsX3F1ZXJ5LyIgKyBzaWQgKyAiLyIgKyBkaWQsCisvLyAvLyAgICAgdGl0bGUg PSBnZXR0ZXh0KCJDYW5jZWwgQWN0aXZlIFF1ZXJ5PyIpLAorLy8gLy8gICAgIHR4dENvbmZpcm0g PSBnZXR0ZXh0KCJBcmUgeW91IHN1cmUgeW91IHdpc2ggdG8gY2FuY2VsIHRoZSBhY3RpdmUgcXVl cnk/IiksCisvLyAvLyAgICAgdHh0U3VjY2VzcyA9IGdldHRleHQoIkFjdGl2ZSBxdWVyeSBjYW5j ZWxsZWQgc3VjY2Vzc2Z1bGx5LiIpLAorLy8gLy8gICAgIHR4dEVycm9yID0gZ2V0dGV4dCgiQW4g ZXJyb3Igb2NjdXJyZWQgd2hpbHN0IGNhbmNlbGxpbmcgdGhlIGFjdGl2ZSBxdWVyeS4iKSwKKy8v IC8vICAgICBhY3Rpb25fdXJsID0gY2FuY2VsX3F1ZXJ5X3VybDsKKy8vIC8vICAgY29uc3QgYXBp ID0gZ2V0QXBpSW5zdGFuY2UoKTsKKworLy8gLy8gICByZXR1cm4gKAorLy8gLy8gICAgIDxCdXR0 b24KKy8vIC8vICAgICAgIHZhcmlhbnQ9Im91dGxpbmVkIgorLy8gLy8gICAgICAgc3RhcnRJY29u PXs8U3F1YXJlSWNvbiAvPn0KKy8vIC8vICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7CisvLyAvLyAg ICAgICAgIGFjdGlvbl91cmwgKz0gIi8iICsgcm93LnZhbHVlcy5waWQ7CisvLyAvLyAgICAgICAg IE5vdGlmeS5jb25maXJtKAorLy8gLy8gICAgICAgICAgIHRpdGxlLAorLy8gLy8gICAgICAgICAg IHR4dENvbmZpcm0sCisvLyAvLyAgICAgICAgICAgZnVuY3Rpb24gKCkgeworLy8gLy8gICAgICAg ICAgICAgYXBpCisvLyAvLyAgICAgICAgICAgICAgIC5kZWxldGUoYWN0aW9uX3VybCkKKy8vIC8v ICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykgeworLy8gLy8gICAgICAgICAgICAg ICAgIGlmIChyZXMgPT0gZ2V0dGV4dCgiU3VjY2VzcyIpKSB7CisvLyAvLyAgICAgICAgICAgICAg ICAgICBOb3RpZnkuc3VjY2Vzcyh0eHRTdWNjZXNzKTsKKy8vIC8vICAgICAgICAgICAgICAgICAg IHJlZnJlc2hfZ3JpZCgpOworLy8gLy8gICAgICAgICAgICAgICAgIH0gZWxzZSB7CisvLyAvLyAg ICAgICAgICAgICAgICAgICBOb3RpZnkuZXJyb3IodHh0RXJyb3IpOworLy8gLy8gICAgICAgICAg ICAgICAgIH0KKy8vIC8vICAgICAgICAgICAgICAgfSkKKy8vIC8vICAgICAgICAgICAgICAgLmNh dGNoKGZ1bmN0aW9uIChlcnJvcikgeworLy8gLy8gICAgICAgICAgICAgICAgIE5vdGlmeS5hbGVy dCgKKy8vIC8vICAgICAgICAgICAgICAgICAgIGdldHRleHQoIkZhaWxlZCB0byByZXRyaWV2ZSBk YXRhIGZyb20gdGhlIHNlcnZlci4iKSwKKy8vIC8vICAgICAgICAgICAgICAgICAgIGdldHRleHQo ZXJyb3IubWVzc2FnZSkKKy8vIC8vICAgICAgICAgICAgICAgICApOworLy8gLy8gICAgICAgICAg ICAgICB9KTsKKy8vIC8vICAgICAgICAgICB9LAorLy8gLy8gICAgICAgICAgIGZ1bmN0aW9uICgp IHsKKy8vIC8vICAgICAgICAgICAgIHJldHVybiB0cnVlOworLy8gLy8gICAgICAgICAgIH0KKy8v IC8vICAgICAgICAgKTsKKy8vIC8vICAgICAgIH19CisvLyAvLyAgICAgICBjb2xvcj0iZGVmYXVs dCIKKy8vIC8vICAgICAgIGFyaWEtbGFiZWw9IkNhbmNlbCB0aGUgcXVlcnkiCisvLyAvLyAgICAg ICB0aXRsZT17Z2V0dGV4dCgiQ2FuY2VsIHRoZSBhY3RpdmUgcXVlcnkiKX0KKy8vIC8vICAgICA+ PC9CdXR0b24+CisvLyAvLyAgICk7CisvLyAvLyB9CisKKy8vIC8vIGZ1bmN0aW9uIGdldFNjaGVt YSgpIHsKKy8vIC8vICAgY29uc29sZS5sb2cobmV3IEFjdGl2ZVF1ZXJ5KCkpOworLy8gLy8gICBy ZXR1cm4gKAorLy8gLy8gICAgIDxTY2hlbWFWaWV3CisvLyAvLyAgICAgICBmb3JtVHlwZT17ImRp YWxvZyJ9CisvLyAvLyAgICAgICBnZXRJbml0RGF0YT17KCkgPT4geworLy8gLy8gICAgICAgICAv KlRoaXMgaXMgaW50ZW50aW9uYWwgKFNvbmFyUXViZSkqLworLy8gLy8gICAgICAgfX0KKy8vIC8v ICAgICAgIHZpZXdIZWxwZXJQcm9wcz17eyBtb2RlOiAiY3JlYXRlIiB9fQorLy8gLy8gICAgICAg c2NoZW1hPXtuZXcgQWN0aXZlUXVlcnkoKX0KKy8vIC8vICAgICAgIHNob3dGb290ZXI9e2ZhbHNl fQorLy8gLy8gICAgICAgaXNUYWJWaWV3PXtmYWxzZX0KKy8vIC8vICAgICAgIG9uRGF0YUNoYW5n ZT17KCkgPT4geyB9fQorLy8gLy8gICAgIC8+CisvLyAvLyAgICk7CisvLyAvLyB9CisvLyAvLyBm dW5jdGlvbiB2aWV3QWN0aXZlUXVlcnlCdXR0b24oc2lkLCBkaWQpIHsKKy8vIC8vICAgcmV0dXJu ICgKKy8vIC8vICAgICA8QnV0dG9uCisvLyAvLyAgICAgICB2YXJpYW50PSJvdXRsaW5lZCIKKy8v IC8vICAgICAgIHN0YXJ0SWNvbj17PFBsYXlBcnJvd0ljb24gLz59CisvLyAvLyAgICAgICBvbkNs aWNrPXsoKSA9PiB7CisvLyAvLyAgICAgICAgIGdldFNjaGVtYSgpOworLy8gLy8gICAgICAgfX0K Ky8vIC8vICAgICAgIGNvbG9yPSJkZWZhdWx0IgorLy8gLy8gICAgICAgYXJpYS1sYWJlbD0iQ2Fu Y2VsIHRoZSBxdWVyeSIKKy8vIC8vICAgICAgIHRpdGxlPXtnZXR0ZXh0KCJDYW5jZWwgdGhlIGFj dGl2ZSBxdWVyeSIpfQorLy8gLy8gICAgID48L0J1dHRvbj4KKy8vIC8vICAgKTsKKy8vIC8vIH0K KworLy8gZnVuY3Rpb24gcGFyc2VEYXRhKGRhdGEsIGNvbHVtbnMsIHNpZCwgZGlkKSB7CisvLyAg IHZhciByZXMgPSBbXSwKKy8vICAgICBuYW1lLAorLy8gICAgIHZhbHVlOworCisvLyAgIGRhdGEu Zm9yRWFjaCgocm93KSA9PiB7CisvLyAgICAgcmVzLnB1c2goeyAuLi5yb3csIGljb246ICcnIH0p OworLy8gICB9KTsKKy8vICAgcmV0dXJuIHJlczsKKy8vIH0KKworLy8gY29uc3QgdXNlU3R5bGVz ID0gbWFrZVN0eWxlcygodGhlbWUpID0+ICh7CisvLyAgIGVtcHR5UGFuZWw6IHsKKy8vICAgICAv LyBoZWlnaHQ6ICJhdXRvIiwKKy8vICAgICBiYWNrZ3JvdW5kOiB0aGVtZS5wYWxldHRlLmdyZXlb NDAwXSwKKy8vICAgICBvdmVyZmxvdzogJ2hpZGRlbicsCisvLyAgICAgcGFkZGluZzogJzhweCcs CisvLyAgICAgZGlzcGxheTogJ2ZsZXgnLAorLy8gICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4n LAorLy8gICAgIGZsZXhHcm93OiAxCisKKy8vICAgfSwKKy8vICAgY2FyZEhlYWRlcjogeworLy8g ICAgIHBhZGRpbmc6ICcwLjI1cmVtIDAuNXJlbScsCisvLyAgICAgZm9udFdlaWdodDogJ2JvbGQn LAorLy8gICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmYnLAorLy8gICAgIGNvbG9yOiAnIzIyMjIy MicsCisvLyAgICAgYm9yZGVyQ29sb3I6ICcjZGRlMGU2JywKKy8vICAgfSwKKy8vICAgc2VhcmNo UGFkZGluZzogeworLy8gICAgIGRpc3BsYXk6ICdmbGV4JywKKy8vICAgICBmbGV4OiAyLjUsCisv LyAgIH0sCisvLyAgIGNvbXBvbmVudDogeworLy8gICAgIHBhZGRpbmc6ICc4cHgnLAorLy8gICAg IGZsZXhHcm93OiAxLAorLy8gICAgIG1pbkhlaWdodDogMAorLy8gICB9LAorLy8gICBzZWFyY2hJ bnB1dDogeworLy8gICAgIGZsZXg6IDEsCisvLyAgICAgLy8gbWFyZ2luVG9wOiAyLAorLy8gICAg IC8vIGJvcmRlckxlZnQ6ICJub25lIiwKKy8vICAgICAvLyBwYWRkaW5nTGVmdDogNSwKKy8vICAg fSwKKy8vICAgcGFuZWxJY29uOiB7CisvLyAgICAgd2lkdGg6ICc4MCUnLAorLy8gICAgIG1hcmdp bjogJzAgYXV0bycsCisvLyAgICAgbWFyZ2luVG9wOiAnMjVweCAhaW1wb3J0YW50JywKKy8vICAg ICBwb3NpdGlvbjogJ3JlbGF0aXZlJywKKy8vICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLAorLy8g ICB9LAorLy8gICBwYW5lbE1lc3NhZ2U6IHsKKy8vICAgICBtYXJnaW5MZWZ0OiAnMC41cmVtJywK Ky8vICAgICBmb250U2l6ZTogJzAuODc1cmVtJywKKy8vICAgfSwKKy8vICAgdGFibGVDZWxsOiB7 CisvLyAgICAgbWFyZ2luOiAwLAorLy8gICAgIC8vIHBhZGRpbmc6IHRoZW1lLnNwYWNpbmcoMC41 KSwKKy8vICAgICAvLyAuLi50aGVtZS5taXhpbnMucGFuZWxCb3JkZXIudG9wLAorLy8gICAgIC8v IC4uLnRoZW1lLm1peGlucy5wYW5lbEJvcmRlci5sZWZ0LAorLy8gICAgIGJvcmRlcjogJzJweCBz b2xpZCAjZGRlMGU2JywKKy8vICAgICBkaXNwbGF5OiAnZmxleCcsCisvLyAgICAgZmxleERpcmVj dGlvbjogJ2NvbHVtbicsCisvLyAgICAgZmxleEdyb3c6IDEsCisvLyAgICAgLy8gbWF4SGVpZ2h0 OiAnMTAwMDBweCcKKy8vICAgfSwKKy8vICAgYXV0b1Jlc2l6ZXI6IHsKKy8vICAgICB3aWR0aDog JzEwMCUgIWltcG9ydGFudCcsCisvLyAgICAgaGVpZ2h0OiAnMTAwJSAhaW1wb3J0YW50JywKKy8v ICAgICBtaW5XaWR0aDogJzEwMCUnLAorLy8gICAgIHBhZGRpbmdUb3A6ICc2cHgnLAorLy8gICAg IG1pbkhlaWdodDogJzEwJSAhaW1wb3J0YW50JywKKy8vICAgICAvLyBtYXhIZWlnaHQ6JzEwMDBw eCAhaW1wb3J0YW50JywKKy8vICAgICAvLyBvdmVyZmxvd3k6ICdoaWRkZW4gIWltcG9ydGFudCcs CisvLyAgIH0sCisvLyAgIHBhbmVsQ29udGVudDogeworLy8gICAgIGZsZXhHcm93OiAxLAorLy8g ICAgIG1pbkhlaWdodDogMCwKKy8vICAgfSwKKy8vICAgbmVzdGVkQ29udHJvbDogeworLy8gICAg IGhlaWdodDogJ2F1dG8nLAorLy8gICB9LAorLy8gICBzZWFyY2hCdXR0b246IHsKKy8vICAgICBi YWNrZ3JvdW5kQ29sb3I6ICcjZmZmJywKKy8vICAgICBtYXJnaW5MZWZ0OiAnMnB4JywKKy8vICAg ICBwYWRkaW5nOiAnNXB4JywKKy8vICAgfSwKKy8vIH0pKTsKKworLy8gZXhwb3J0IGRlZmF1bHQg ZnVuY3Rpb24gRGFzaGJvYXJkKHsKKy8vICAgbm9kZURhdGEsCisvLyAgIG5vZGUsCisvLyAgIGl0 ZW0sCisvLyAgIHBnQnJvd3NlciwKKy8vICAgcHJlZmVyZW5jZXMsCisvLyAgIHNpZCwKKy8vICAg ZGlkLAorLy8gICAuLi5wcm9wcworLy8gfSkgeworLy8gICBjb25zdCBjbGFzc2VzID0gdXNlU3R5 bGVzKCk7CisvLyAgIGNvbnNvbGUubG9nKHByb3BzLnNlcnZlckNvbm5lY3RlZCk7CisvLyAgIGxl dCB0YWIgPSBbJ1Nlc3Npb25zJywgJ0xvY2snLCAnUHJlcGFyZWQgVHJhbnNhY3Rpb25zJ107CisK Ky8vICAgY29uc3QgW2Rhc2hEYXRhLCBzZXRkYXNoRGF0YV0gPSB1c2VTdGF0ZShbXSk7CisvLyAg IGNvbnN0IFthbGVydE1zZywgc2V0QWxlcnRNc2ddID0gdXNlU3RhdGUoJycpOworLy8gICBjb25z dCBbbXNnLCBzZXRNc2ddID0gdXNlU3RhdGUoJycpOworLy8gICBjb25zdCBbdmFsLCBzZXRWYWxd ID0gdXNlU3RhdGUoMCk7CisvLyAgIGNvbnN0IFtzZWFyY2hWYWwsIHNldFNlYXJjaFZhbF0gPSBS ZWFjdC51c2VTdGF0ZSgnJyk7CisvLyAgIGNvbnN0IFtjYW5FZGl0LCBzZXRDYW5FZGl0XSA9IFJl YWN0LnVzZVN0YXRlKGZhbHNlKTsKKy8vICAgY29uc3QgW2VkaXRSb3csIHNldFJvd10gPSBSZWFj dC51c2VTdGF0ZShmYWxzZSk7CisvLyAgIGNvbnN0IFtzY2hlbWEsIHNldFNjaGVtYV0gPSBSZWFj dC51c2VTdGF0ZSgpOworCisvLyAgIGlmICghZGlkKSB7CisvLyAgICAgdGFiLnB1c2goJ0NvbmZp Z3VyYXRpb24nKTsKKy8vICAgfQorCisvLyAgIGNvbnN0IHRhYkNoYW5nZWQgPSAoZSwgdmFsKSA9 PiB7CisvLyAgICAgc2V0VmFsKHZhbCk7CisvLyAgIH07CisvLyAgIC8vIGNvbnN0IHZpZXdBY3Rp dmVRdWVyeUJ1dHRvbiA9IChzaWQsIGRpZCkgPT4geworLy8gICAvLyAgIHJldHVybiAoCisvLyAg IC8vICAgICA8QnV0dG9uCisvLyAgIC8vICAgICAgIHZhcmlhbnQ9Im91dGxpbmVkIgorLy8gICAv LyAgICAgICBzdGFydEljb249ezxQbGF5QXJyb3dJY29uIC8+fQorLy8gICAvLyAgICAgICBvbkNs aWNrPXsoKSA9PiB7CisvLyAgIC8vICAgICAgICAgc2V0Q2FuRWRpdCh0cnVlKTsKKy8vICAgLy8g ICAgICAgfX0KKy8vICAgLy8gICAgICAgY29sb3I9ImRlZmF1bHQiCisvLyAgIC8vICAgICAgIGFy aWEtbGFiZWw9IkNhbmNlbCB0aGUgcXVlcnkiCisvLyAgIC8vICAgICAgIHRpdGxlPXtnZXR0ZXh0 KCJDYW5jZWwgdGhlIGFjdGl2ZSBxdWVyeSIpfQorLy8gICAvLyAgICAgPjwvQnV0dG9uPgorLy8g ICAvLyAgICk7CisvLyAgIC8vIH07CisKKy8vICAgY29uc3Qgc2VydmVyQ29uZmlnQ29sdW1ucyA9 IFJlYWN0LnVzZU1lbW8oKCkgPT4gWworLy8gICAgIHsKKy8vICAgICAgIGFjY2Vzc29yOiAnbmFt ZScsCisvLyAgICAgICBIZWFkZXI6IGdldHRleHQoJ05hbWUnKSwKKy8vICAgICAgIHNvcnRibGU6 IHRydWUsCisvLyAgICAgICByZXNpemFibGU6IHRydWUsCisvLyAgICAgICBkaXNhYmxlR2xvYmFs RmlsdGVyOiBmYWxzZSwKKy8vICAgICB9LAorLy8gICAgIHsKKy8vICAgICAgIGFjY2Vzc29yOiAn Y2F0ZWdvcnknLAorLy8gICAgICAgSGVhZGVyOiBnZXR0ZXh0KCdDYXRlZ29yeScpLAorLy8gICAg ICAgc29ydGJsZTogdHJ1ZSwKKy8vICAgICAgIHJlc2l6YWJsZTogdHJ1ZSwKKy8vICAgICAgIGRp c2FibGVHbG9iYWxGaWx0ZXI6IGZhbHNlLAorLy8gICAgIH0sCisvLyAgICAgeworLy8gICAgICAg YWNjZXNzb3I6ICdzZXR0aW5nJywKKy8vICAgICAgIEhlYWRlcjogZ2V0dGV4dCgnU2V0dGluZycp LAorLy8gICAgICAgc29ydGJsZTogdHJ1ZSwKKy8vICAgICAgIHJlc2l6YWJsZTogdHJ1ZSwKKy8v ICAgICAgIGRpc2FibGVHbG9iYWxGaWx0ZXI6IGZhbHNlLAorLy8gICAgIH0sCisvLyAgICAgewor Ly8gICAgICAgYWNjZXNzb3I6ICd1bml0JywKKy8vICAgICAgIEhlYWRlcjogZ2V0dGV4dCgnVW5p dCcpLAorLy8gICAgICAgZWRpdGFibGU6IGZhbHNlLAorLy8gICAgICAgY2VsbDogJ3N0cmluZycs CisvLyAgICAgfSwKKy8vICAgICB7CisvLyAgICAgICBhY2Nlc3NvcjogJ3Nob3J0X2Rlc2MnLAor Ly8gICAgICAgSGVhZGVyOiBnZXR0ZXh0KCdEZXNjcmlwdGlvbicpLAorLy8gICAgICAgc29ydGJs ZTogdHJ1ZSwKKy8vICAgICAgIHJlc2l6YWJsZTogZmFsc2UsCisvLyAgICAgICBkaXNhYmxlR2xv YmFsRmlsdGVyOiBmYWxzZSwKKy8vICAgICB9LAorLy8gICBdLFt2YWxdKTsKKworCisvLyAgIGNv bnN0IGFjdGl2aXR5cnJDb2x1bW5zID0gUmVhY3QudXNlTWVtbygKKy8vICAgICAoKSA9PiBbCisv LyAgICAgICB7CisvLyAgICAgICAgIC8vIEJ1aWxkIG91ciBleHBhbmRlciBjb2x1bW4KKy8vICAg ICAgICAgYWNjZXNzb3I6ICcnLAorLy8gICAgICAgICBpZDogJ2V4cGFuZGVyJywKKy8vICAgICAg ICAgc29ydGJsZTogdHJ1ZSwKKy8vICAgICAgICAgcmVzaXphYmxlOiB0cnVlLAorLy8gICAgICAg ICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKy8vICAgICAgICAgbWluV2lkdGg6IDI2LAor Ly8gICAgICAgICBtYXhXaWR0aDogNDQsCisvLyAgICAgICAgIEhlYWRlcjogKHsgZ2V0VG9nZ2xl QWxsUm93c0V4cGFuZGVkUHJvcHMsIGlzQWxsUm93c0V4cGFuZGVkIH0pID0+ICgKKy8vICAgICAg ICAgICA8c3BhbiB7Li4uZ2V0VG9nZ2xlQWxsUm93c0V4cGFuZGVkUHJvcHMoKX0+CisvLyAgICAg ICAgICAgICB7aXNBbGxSb3dzRXhwYW5kZWQgPyAn8J+RhycgOiAn8J+RiSd9CisvLyAgICAgICAg ICAgPC9zcGFuPgorLy8gICAgICAgICApLAorLy8gICAgICAgICBDZWxsOiAoeyByb3cgfSkgPT4K Ky8vICAgICAgICAgICAvLyBVc2UgdGhlIHJvdy5jYW5FeHBhbmQgYW5kIHJvdy5nZXRUb2dnbGVS b3dFeHBhbmRlZFByb3BzIHByb3AgZ2V0dGVyCisvLyAgICAgICAgICAgLy8gdG8gYnVpbGQgdGhl IHRvZ2dsZSBmb3IgZXhwYW5kaW5nIGEgcm93CisvLyAgICAgICAgICAgIXJvdy5jYW5FeHBhbmQg PyAoCisKKy8vICAgICAgICAgICAgIDxQZ0ljb25CdXR0b24KKy8vICAgICAgICAgICAgICAgey4u LnJvdy5nZXRUb2dnbGVSb3dFeHBhbmRlZFByb3BzKHsKKy8vICAgICAgICAgICAgICAgICBzdHls ZTogeworLy8gICAgICAgICAgICAgICAgICAgLy8gV2UgY2FuIGV2ZW4gdXNlIHRoZSByb3cuZGVw dGggcHJvcGVydHkKKy8vICAgICAgICAgICAgICAgICAgIC8vIGFuZCBwYWRkaW5nTGVmdCB0byBp bmRpY2F0ZSB0aGUgZGVwdGgKKy8vICAgICAgICAgICAgICAgICAgIC8vIG9mIHRoZSByb3cKKy8v ICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiBgJHtyb3cuZGVwdGggKiAyfXJlbWAKKy8v ICAgICAgICAgICAgICAgICB9CisvLyAgICAgICAgICAgICAgIH0pfQorLy8gICAgICAgICAgICAg ICBpY29uPXtyb3cuaXNFeHBhbmRlZCA/IDxBcnJvd0Ryb3BEb3duT3V0bGluZWRJY29uIGZvbnRT aXplPSJzbWFsbCIgLz4gOiA8QXJyb3dSaWdodE91dGxpbmVkSWNvbiBmb250U2l6ZT0ic21hbGwi IC8+fQorLy8gICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7CisvLyAgICAgICAgICAgICAg ICAgcm93LnRvZ2dsZVJvd0V4cGFuZGVkKCFyb3cuaXNFeHBhbmRlZCk7CisvLyAgICAgICAgICAg ICAgICAgY29uc29sZS5sb2cocm93LmlzRXhwYW5kZWQsIHJvdyk7CisvLyAgICAgICAgICAgICAg ICAgc2V0Um93KHJvdyk7CisvLyAgICAgICAgICAgICAgICAgc2V0U2NoZW1hKAorLy8gICAgICAg ICAgICAgICAgICAgbmV3IEFjdGl2ZVF1ZXJ5KHsKKy8vICAgICAgICAgICAgICAgICAgICAgcXVl cnk6IHJvdy5vcmlnaW5hbC5xdWVyeSwKKy8vICAgICAgICAgICAgICAgICAgICAgYmFja2VuZF90 eXBlOiByb3cub3JpZ2luYWwuYmFja2VuZF90eXBlLAorLy8gICAgICAgICAgICAgICAgICAgICBz dGF0ZV9jaGFuZ2U6IHJvdy5vcmlnaW5hbC5zdGF0ZV9jaGFuZ2UsCisvLyAgICAgICAgICAgICAg ICAgICAgIHF1ZXJ5X3N0YXJ0OiByb3cub3JpZ2luYWwucXVlcnlfc3RhcnQsCisvLyAgICAgICAg ICAgICAgICAgICB9KQorLy8gICAgICAgICAgICAgICAgICk7CisvLyAgICAgICAgICAgICAgIH19 CisvLyAgICAgICAgICAgICAgIGNvbG9yPSJkZWZhdWx0IgorLy8gICAgICAgICAgICAgICBhcmlh LWxhYmVsPSJWaWV3IHRoZSBhY3RpdmUgc2Vzc2lvbiBkZXRhaWxzIgorLy8gICAgICAgICAgICAg ICB0aXRsZT17Z2V0dGV4dCgnVmlldyB0aGUgYWN0aXZlIHNlc3Npb24gZGV0YWlscycpfQorLy8g ICAgICAgICAgICAgLz4KKworCisKKworLy8gICAgICAgICAgIC8vICAgPFBnSWNvbkJ1dHRvbgor Ly8gICAgICAgICAgIC8vICAgaWNvbj17cm93LmlzRXhwYW5kZWQgPyA8QXJyb3dEcm9wRG93bk91 dGxpbmVkSWNvbiBmb250U2l6ZT0ic21hbGwiIC8+IDogPEFycm93UmlnaHRPdXRsaW5lZEljb24g Zm9udFNpemU9InNtYWxsIiAvPn0KKy8vICAgICAgICAgICAvLyAgIG9uQ2xpY2s9eygpID0+IHsK Ky8vICAgICAgICAgICAvLyAgICAgcm93LnRvZ2dsZVJvd0V4cGFuZGVkKCFyb3cuaXNFeHBhbmRl ZCk7CisvLyAgICAgICAgICAgLy8gICAgIHNldFJvdyhyb3cpOworLy8gICAgICAgICAgIC8vICAg ICBzZXRTY2hlbWEoCisvLyAgICAgICAgICAgLy8gICAgICAgbmV3IEFjdGl2ZVF1ZXJ5KHsKKy8v ICAgICAgICAgICAvLyAgICAgICAgIHF1ZXJ5OiByb3cub3JpZ2luYWwucXVlcnksCisvLyAgICAg ICAgICAgLy8gICAgICAgICBiYWNrZW5kX3R5cGU6IHJvdy5vcmlnaW5hbC5iYWNrZW5kX3R5cGUs CisvLyAgICAgICAgICAgLy8gICAgICAgICBzdGF0ZV9jaGFuZ2U6IHJvdy5vcmlnaW5hbC5zdGF0 ZV9jaGFuZ2UsCisvLyAgICAgICAgICAgLy8gICAgICAgICBxdWVyeV9zdGFydDogcm93Lm9yaWdp bmFsLnF1ZXJ5X3N0YXJ0LAorLy8gICAgICAgICAgIC8vICAgICAgIH0pCisvLyAgICAgICAgICAg Ly8gICAgICk7CisvLyAgICAgICAgICAgLy8gICB9fQorLy8gICAgICAgICAgIC8vICAgZGlzYWJs ZWQ9eyFjYW5FZGl0Um93fQorLy8gICAgICAgICAgIC8vICAgY29sb3I9ImRlZmF1bHQiCisvLyAg ICAgICAgICAgLy8gICBhcmlhLWxhYmVsPSJWaWV3IHRoZSBhY3RpdmUgc2Vzc2lvbiBkZXRhaWxz IgorLy8gICAgICAgICAgIC8vICAgdGl0bGU9e2dldHRleHQoIlZpZXcgdGhlIGFjdGl2ZSBzZXNz aW9uIGRldGFpbHMiKX0KKy8vICAgICAgICAgICAvLyAvPgorLy8gICAgICAgICAgICkgOiBudWxs LAorLy8gICAgICAgfSwKKy8vICAgICAgIC8vIHsKKy8vICAgICAgIC8vICAgLy8gQnVpbGQgb3Vy IGV4cGFuZGVyIGNvbHVtbgorLy8gICAgICAgLy8gICBpZDogImV4cGFuZGVyIiwgLy8gTWFrZSBz dXJlIGl0IGhhcyBhbiBJRAorLy8gICAgICAgLy8gICBIZWFkZXI6ICh7IGdldFRvZ2dsZUFsbFJv d3NFeHBhbmRlZFByb3BzLCBpc0FsbFJvd3NFeHBhbmRlZCB9KSA9PiAoCisvLyAgICAgICAvLyAg ICAgPHNwYW4gey4uLmdldFRvZ2dsZUFsbFJvd3NFeHBhbmRlZFByb3BzKCl9PgorLy8gICAgICAg Ly8gICAgICAge2lzQWxsUm93c0V4cGFuZGVkID8gIvCfkYciIDogIvCfkYkifQorLy8gICAgICAg Ly8gICAgIDwvc3Bhbj4KKy8vICAgICAgIC8vICAgKSwKKy8vICAgICAgIC8vICAgQ2VsbDogKHsg cm93IH0pID0+CisvLyAgICAgICAvLyAgICAgLy8gVXNlIHRoZSByb3cuY2FuRXhwYW5kIGFuZCBy b3cuZ2V0VG9nZ2xlUm93RXhwYW5kZWRQcm9wcyBwcm9wIGdldHRlcgorLy8gICAgICAgLy8gICAg IC8vIHRvIGJ1aWxkIHRoZSB0b2dnbGUgZm9yIGV4cGFuZGluZyBhIHJvdworLy8gICAgICAgLy8g ICAgIHJvdy5jYW5FeHBhbmQgPyAoCisvLyAgICAgICAvLyAgICAgICA8c3BhbgorLy8gICAgICAg Ly8gICAgICAgICB7Li4ucm93LmdldFRvZ2dsZVJvd0V4cGFuZGVkUHJvcHMoeworLy8gICAgICAg Ly8gICAgICAgICAgIHN0eWxlOiB7CisvLyAgICAgICAvLyAgICAgICAgICAgICAvLyBXZSBjYW4g ZXZlbiB1c2UgdGhlIHJvdy5kZXB0aCBwcm9wZXJ0eQorLy8gICAgICAgLy8gICAgICAgICAgICAg Ly8gYW5kIHBhZGRpbmdMZWZ0IHRvIGluZGljYXRlIHRoZSBkZXB0aAorLy8gICAgICAgLy8gICAg ICAgICAgICAgLy8gb2YgdGhlIHJvdworLy8gICAgICAgLy8gICAgICAgICAgICAgcGFkZGluZ0xl ZnQ6IGAke3Jvdy5kZXB0aCAqIDJ9cmVtYAorLy8gICAgICAgLy8gICAgICAgICAgIH0KKy8vICAg ICAgIC8vICAgICAgICAgfSl9CisvLyAgICAgICAvLyAgICAgICA+CisvLyAgICAgICAvLyAgICAg ICAgIHtyb3cuaXNFeHBhbmRlZCA/ICLwn5GHIiA6ICLwn5GJIn0KKy8vICAgICAgIC8vICAgICAg IDwvc3Bhbj4KKy8vICAgICAgIC8vICAgICApIDogbnVsbAorLy8gICAgICAgLy8gfSwKKy8vICAg ICAgIHsKKy8vICAgICAgICAgYWNjZXNzb3I6ICd0ZXJtaW5hdGVfcXVlcnknLAorLy8gICAgICAg ICBIZWFkZXI6ICcgJywKKy8vICAgICAgICAgc29ydGJsZTogdHJ1ZSwKKy8vICAgICAgICAgcmVz aXphYmxlOiB0cnVlLAorLy8gICAgICAgICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKy8v ICAgICAgICAgbWluV2lkdGg6IDI2LAorLy8gICAgICAgICBtYXhXaWR0aDogNDQsCisKKy8vICAg ICAgICAgQ2VsbDogKHsgcm93IH0pID0+IHsKKy8vICAgICAgICAgICB2YXIgdGVybWluYXRlX3Nl c3Npb25fdXJsID0KKy8vICAgICAgICAgICAgICAgdXJsX2ZvcignZGFzaGJvYXJkLmluZGV4Jykg KworLy8gICAgICAgICAgICAgICAndGVybWluYXRlX3Nlc3Npb24nICsKKy8vICAgICAgICAgICAg ICAgJy8nICsKKy8vICAgICAgICAgICAgICAgc2lkICsKKy8vICAgICAgICAgICAgICAgJy8nICsK Ky8vICAgICAgICAgICAgICAgZGlkLAorLy8gICAgICAgICAgICAgdGl0bGUgPSBnZXR0ZXh0KCdU ZXJtaW5hdGUgU2Vzc2lvbj8nKSwKKy8vICAgICAgICAgICAgIHR4dENvbmZpcm0gPSBnZXR0ZXh0 KAorLy8gICAgICAgICAgICAgICAnQXJlIHlvdSBzdXJlIHlvdSB3aXNoIHRvIHRlcm1pbmF0ZSB0 aGUgc2Vzc2lvbj8nCisvLyAgICAgICAgICAgICApLAorLy8gICAgICAgICAgICAgdHh0U3VjY2Vz cyA9IGdldHRleHQoJ1Nlc3Npb24gdGVybWluYXRlZCBzdWNjZXNzZnVsbHkuJyksCisvLyAgICAg ICAgICAgICB0eHRFcnJvciA9IGdldHRleHQoCisvLyAgICAgICAgICAgICAgICdBbiBlcnJvciBv Y2N1cnJlZCB3aGlsc3QgdGVybWluYXRpbmcgdGhlIGFjdGl2ZSBxdWVyeS4nCisvLyAgICAgICAg ICAgICApLAorLy8gICAgICAgICAgICAgYWN0aW9uX3VybCA9IHRlcm1pbmF0ZV9zZXNzaW9uX3Vy bDsKKworLy8gICAgICAgICAgIGNvbnN0IGFwaSA9IGdldEFwaUluc3RhbmNlKCk7CisKKy8vICAg ICAgICAgICByZXR1cm4gKAorLy8gICAgICAgICAgICAgPFBnSWNvbkJ1dHRvbgorLy8gICAgICAg ICAgICAgICB2YXJpYW50PSJvdXRsaW5lZCIKKy8vICAgICAgICAgICAgICAgaWNvbj17PENhbmNl bEljb24gZm9udFNpemU9InNtYWxsIiBzeD17eyBjb2xvcjogJyNkMTE2MTYnIH19IC8+fQorLy8g ICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4geworLy8gICAgICAgICAgICAgICAgIGlmICgK Ky8vICAgICAgICAgICAgICAgICAgICFjYW5UYWtlQWN0aW9uKAorLy8gICAgICAgICAgICAgICAg ICAgICByb3csCisvLyAgICAgICAgICAgICAgICAgICAgICd0ZXJtaW5hdGUnLAorLy8gICAgICAg ICAgICAgICAgICAgICBub2RlRGF0YSwKKy8vICAgICAgICAgICAgICAgICAgICAgcHJvcHMudHJl ZU5vZGVJbmZvLAorLy8gICAgICAgICAgICAgICAgICAgICBub2RlCisvLyAgICAgICAgICAgICAg ICAgICApCisvLyAgICAgICAgICAgICAgICAgKQorLy8gICAgICAgICAgICAgICAgICAgcmV0dXJu OworLy8gICAgICAgICAgICAgICAgIGFjdGlvbl91cmwgKz0gJy8nICsgcm93LnZhbHVlcy5waWQ7 CisvLyAgICAgICAgICAgICAgICAgTm90aWZ5LmNvbmZpcm0oCisvLyAgICAgICAgICAgICAgICAg ICB0aXRsZSwKKy8vICAgICAgICAgICAgICAgICAgIHR4dENvbmZpcm0sCisvLyAgICAgICAgICAg ICAgICAgICBmdW5jdGlvbiAoKSB7CisvLyAgICAgICAgICAgICAgICAgICAgIGFwaQorLy8gICAg ICAgICAgICAgICAgICAgICAgIC5kZWxldGUoYWN0aW9uX3VybCkKKy8vICAgICAgICAgICAgICAg ICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7CisvLyAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAocmVzID09IGdldHRleHQoJ1N1Y2Nlc3MnKSkgeworLy8gICAgICAgICAgICAgICAgICAg ICAgICAgICBOb3RpZnkuc3VjY2Vzcyh0eHRTdWNjZXNzKTsKKy8vICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVmcmVzaF9ncmlkKCk7CisvLyAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs c2UgeworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RpZnkuZXJyb3IodHh0RXJyb3Ip OworLy8gICAgICAgICAgICAgICAgICAgICAgICAgfQorLy8gICAgICAgICAgICAgICAgICAgICAg IH0pCisvLyAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgewor Ly8gICAgICAgICAgICAgICAgICAgICAgICAgTm90aWZ5LmFsZXJ0KAorLy8gICAgICAgICAgICAg ICAgICAgICAgICAgICBnZXR0ZXh0KCdGYWlsZWQgdG8gcmV0cmlldmUgZGF0YSBmcm9tIHRoZSBz ZXJ2ZXIuJyksCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRleHQoZXJyb3IubWVz c2FnZSkKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICk7CisvLyAgICAgICAgICAgICAgICAg ICAgICAgfSk7CisvLyAgICAgICAgICAgICAgICAgICB9LAorLy8gICAgICAgICAgICAgICAgICAg ZnVuY3Rpb24gKCkgeworLy8gICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKy8vICAg ICAgICAgICAgICAgICAgIH0KKy8vICAgICAgICAgICAgICAgICApOworLy8gICAgICAgICAgICAg ICB9fQorLy8gICAgICAgICAgICAgICBjb2xvcj0iZGVmYXVsdCIKKy8vICAgICAgICAgICAgICAg YXJpYS1sYWJlbD0iVGVybWluYXRlIFNlc3Npb24/IgorLy8gICAgICAgICAgICAgICB0aXRsZT17 Z2V0dGV4dCgnVGVybWluYXRlIFNlc3Npb24/Jyl9CisvLyAgICAgICAgICAgICA+PC9QZ0ljb25C dXR0b24+CisvLyAgICAgICAgICAgKTsKKy8vICAgICAgICAgfSwKKy8vICAgICAgIH0sCisvLyAg ICAgICB7CisvLyAgICAgICAgIGFjY2Vzc29yOiAnY2FuY2VsX1F1ZXJ5JywKKy8vICAgICAgICAg SGVhZGVyOiAnICcsCisvLyAgICAgICAgIHNvcnRibGU6IHRydWUsCisvLyAgICAgICAgIHJlc2l6 YWJsZTogdHJ1ZSwKKy8vICAgICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisvLyAg ICAgICAgIG1pbldpZHRoOiAyNiwKKy8vICAgICAgICAgbWF4V2lkdGg6IDQ0LAorLy8gICAgICAg ICBDZWxsOiAoeyByb3cgfSkgPT4geworLy8gICAgICAgICAgIHZhciBjYW5jZWxfcXVlcnlfdXJs ID0KKy8vICAgICAgICAgICAgICAgdXJsX2ZvcignZGFzaGJvYXJkLmluZGV4JykgKyAnY2FuY2Vs X3F1ZXJ5JyArICcvJyArIHNpZCArICcvJyArIGRpZCwKKy8vICAgICAgICAgICAgIHRpdGxlID0g Z2V0dGV4dCgnQ2FuY2VsIEFjdGl2ZSBRdWVyeT8nKSwKKy8vICAgICAgICAgICAgIHR4dENvbmZp cm0gPSBnZXR0ZXh0KAorLy8gICAgICAgICAgICAgICAnQXJlIHlvdSBzdXJlIHlvdSB3aXNoIHRv IGNhbmNlbCB0aGUgYWN0aXZlIHF1ZXJ5PycKKy8vICAgICAgICAgICAgICksCisvLyAgICAgICAg ICAgICB0eHRTdWNjZXNzID0gZ2V0dGV4dCgnQWN0aXZlIHF1ZXJ5IGNhbmNlbGxlZCBzdWNjZXNz ZnVsbHkuJyksCisvLyAgICAgICAgICAgICB0eHRFcnJvciA9IGdldHRleHQoCisvLyAgICAgICAg ICAgICAgICdBbiBlcnJvciBvY2N1cnJlZCB3aGlsc3QgY2FuY2VsbGluZyB0aGUgYWN0aXZlIHF1 ZXJ5LicKKy8vICAgICAgICAgICAgICksCisvLyAgICAgICAgICAgICBhY3Rpb25fdXJsID0gY2Fu Y2VsX3F1ZXJ5X3VybDsKKy8vICAgICAgICAgICBjb25zdCBhcGkgPSBnZXRBcGlJbnN0YW5jZSgp OworCisvLyAgICAgICAgICAgcmV0dXJuICgKKy8vICAgICAgICAgICAgIDxQZ0ljb25CdXR0b24K Ky8vICAgICAgICAgICAgICAgdmFyaWFudD0ib3V0bGluZWQiCisvLyAgICAgICAgICAgICAgIGlj b249ezxTcXVhcmVJY29uIGZvbnRTaXplPSJzbWFsbCIgLz59CisvLyAgICAgICAgICAgICAgIG9u Q2xpY2s9eyhlKSA9PiB7CisvLyAgICAgICAgICAgICAgICAgaWYgKAorLy8gICAgICAgICAgICAg ICAgICAgIWNhblRha2VBY3Rpb24oCisvLyAgICAgICAgICAgICAgICAgICAgIHJvdywKKy8vICAg ICAgICAgICAgICAgICAgICAgJ2NhbmNlbCcsCisvLyAgICAgICAgICAgICAgICAgICAgIG5vZGVE YXRhLAorLy8gICAgICAgICAgICAgICAgICAgICBwcm9wcy50cmVlTm9kZUluZm8sCisvLyAgICAg ICAgICAgICAgICAgICAgIG5vZGUKKy8vICAgICAgICAgICAgICAgICAgICkKKy8vICAgICAgICAg ICAgICAgICApCisvLyAgICAgICAgICAgICAgICAgICByZXR1cm47CisvLyAgICAgICAgICAgICAg ICAgYWN0aW9uX3VybCArPSAnLycgKyByb3cudmFsdWVzLnBpZDsKKy8vICAgICAgICAgICAgICAg ICBOb3RpZnkuY29uZmlybSgKKy8vICAgICAgICAgICAgICAgICAgIHRpdGxlLAorLy8gICAgICAg ICAgICAgICAgICAgdHh0Q29uZmlybSwKKy8vICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgp IHsKKy8vICAgICAgICAgICAgICAgICAgICAgYXBpCisvLyAgICAgICAgICAgICAgICAgICAgICAg LmRlbGV0ZShhY3Rpb25fdXJsKQorLy8gICAgICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0 aW9uIChyZXMpIHsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gZ2V0dGV4 dCgnU3VjY2VzcycpKSB7CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmeS5zdWNj ZXNzKHR4dFN1Y2Nlc3MpOworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoX2dy aWQoKTsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisvLyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5vdGlmeS5lcnJvcih0eHRFcnJvcik7CisvLyAgICAgICAgICAgICAg ICAgICAgICAgICB9CisvLyAgICAgICAgICAgICAgICAgICAgICAgfSkKKy8vICAgICAgICAgICAg ICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CisvLyAgICAgICAgICAgICAgICAg ICAgICAgICBOb3RpZnkuYWxlcnQoCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRl eHQoJ0ZhaWxlZCB0byByZXRyaWV2ZSBkYXRhIGZyb20gdGhlIHNlcnZlci4nKSwKKy8vICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ2V0dGV4dChlcnJvci5tZXNzYWdlKQorLy8gICAgICAgICAg ICAgICAgICAgICAgICAgKTsKKy8vICAgICAgICAgICAgICAgICAgICAgICB9KTsKKy8vICAgICAg ICAgICAgICAgICAgIH0sCisvLyAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisvLyAg ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworLy8gICAgICAgICAgICAgICAgICAgfQor Ly8gICAgICAgICAgICAgICAgICk7CisvLyAgICAgICAgICAgICAgIH19CisvLyAgICAgICAgICAg ICAgIGNvbG9yPSJkZWZhdWx0IgorLy8gICAgICAgICAgICAgICBhcmlhLWxhYmVsPSJDYW5jZWwg dGhlIHF1ZXJ5IgorLy8gICAgICAgICAgICAgICB0aXRsZT17Z2V0dGV4dCgnQ2FuY2VsIHRoZSBh Y3RpdmUgcXVlcnknKX0KKy8vICAgICAgICAgICAgID48L1BnSWNvbkJ1dHRvbj4KKy8vICAgICAg ICAgICApOworLy8gICAgICAgICB9LAorLy8gICAgICAgfSwKKy8vICAgICAgIC8vIHsKKy8vICAg ICAgIC8vICAgYWNjZXNzb3I6ICJ2aWV3X2FjdGl2ZV9xdWVyeSIsCisvLyAgICAgICAvLyAgIEhl YWRlcjogIiAiLAorLy8gICAgICAgLy8gICBzb3J0YmxlOiB0cnVlLAorLy8gICAgICAgLy8gICBy ZXNpemFibGU6IHRydWUsCisvLyAgICAgICAvLyAgIGRpc2FibGVHbG9iYWxGaWx0ZXI6IGZhbHNl LAorLy8gICAgICAgLy8gICBtaW5XaWR0aDogMjYsCisvLyAgICAgICAvLyAgIG1heFdpZHRoOiA0 NCwKKy8vICAgICAgIC8vICAgLy8gY2FuRXhwYW5kOiB0cnVlCisvLyAgICAgICAvLyAgIC8vIENl bGw6IChwcm9wcykgPT4gdmlld0FjdGl2ZVF1ZXJ5QnV0dG9uKHNpZCwgZGlkLCBwcm9wcy5yb3cp LAorCisKKworLy8gICAgICAgLy8gICBDZWxsOiAoeyByb3cgfSkgPT4geworLy8gICAgICAgLy8g ICAgIGNvbnNvbGUubG9nKHJvdyk7CisvLyAgICAgICAvLyAgICAgbGV0IGNhbkVkaXRSb3cgPSB0 cnVlOworLy8gICAgICAgLy8gICAgIC8vIHJvdy5pc0V4cGFuZGVkID0gZmFsc2U7CisvLyAgICAg ICAvLyAgICAgLy8gaWYocHJvcHMuY2FuRWRpdFJvdykgeworLy8gICAgICAgLy8gICAgIC8vICAg Y2FuRWRpdFJvdyA9IGV2YWxGdW5jKHNjaGVtYVJlZi5jdXJyZW50LCBwcm9wcy5jYW5FZGl0Um93 LCByb3cub3JpZ2luYWwgfHwge30pOworLy8gICAgICAgLy8gICAgIC8vIH0KKy8vICAgICAgIC8v ICAgICByZXR1cm4gKAorLy8gICAgICAgLy8gICAgICAgPFBnSWNvbkJ1dHRvbgorLy8gICAgICAg Ly8gICAgICAgICBpY29uPXtyb3cuaXNFeHBhbmRlZCA/IDxBcnJvd0Ryb3BEb3duT3V0bGluZWRJ Y29uIGZvbnRTaXplPSJzbWFsbCIgLz4gOiA8QXJyb3dSaWdodE91dGxpbmVkSWNvbiBmb250U2l6 ZT0ic21hbGwiIC8+fQorLy8gICAgICAgLy8gICAgICAgICBvbkNsaWNrPXsoKSA9PiB7CisvLyAg ICAgICAvLyAgICAgICAgICAgcm93LnRvZ2dsZVJvd0V4cGFuZGVkKCFyb3cuaXNFeHBhbmRlZCk7 CisvLyAgICAgICAvLyAgICAgICAgICAgc2V0Um93KHJvdyk7CisvLyAgICAgICAvLyAgICAgICAg ICAgc2V0U2NoZW1hKAorLy8gICAgICAgLy8gICAgICAgICAgICAgbmV3IEFjdGl2ZVF1ZXJ5KHsK Ky8vICAgICAgIC8vICAgICAgICAgICAgICAgcXVlcnk6IHJvdy5vcmlnaW5hbC5xdWVyeSwKKy8v ICAgICAgIC8vICAgICAgICAgICAgICAgYmFja2VuZF90eXBlOiByb3cub3JpZ2luYWwuYmFja2Vu ZF90eXBlLAorLy8gICAgICAgLy8gICAgICAgICAgICAgICBzdGF0ZV9jaGFuZ2U6IHJvdy5vcmln aW5hbC5zdGF0ZV9jaGFuZ2UsCisvLyAgICAgICAvLyAgICAgICAgICAgICAgIHF1ZXJ5X3N0YXJ0 OiByb3cub3JpZ2luYWwucXVlcnlfc3RhcnQsCisvLyAgICAgICAvLyAgICAgICAgICAgICB9KQor Ly8gICAgICAgLy8gICAgICAgICAgICk7CisvLyAgICAgICAvLyAgICAgICAgIH19CisvLyAgICAg ICAvLyAgICAgICAgIGRpc2FibGVkPXshY2FuRWRpdFJvd30KKy8vICAgICAgIC8vICAgICAgICAg Y29sb3I9ImRlZmF1bHQiCisvLyAgICAgICAvLyAgICAgICAgIGFyaWEtbGFiZWw9IlZpZXcgdGhl IGFjdGl2ZSBzZXNzaW9uIGRldGFpbHMiCisvLyAgICAgICAvLyAgICAgICAgIHRpdGxlPXtnZXR0 ZXh0KCJWaWV3IHRoZSBhY3RpdmUgc2Vzc2lvbiBkZXRhaWxzIil9CisvLyAgICAgICAvLyAgICAg ICAvPgorLy8gICAgICAgLy8gICAgICk7CisvLyAgICAgICAvLyAgIH0sCisKKy8vICAgICAgIC8v ICAgLy8gQ2VsbDogKHtyb3d9KT0+eworLy8gICAgICAgLy8gICAvLyAgIC8vIGlmKHByb3BzLmNh bkVkaXRSb3cpIHsKKy8vICAgICAgIC8vICAgLy8gICAvLyAgIGNhbkVkaXRSb3cgPSBldmFsRnVu YyhzY2hlbWFSZWYuY3VycmVudCwgcHJvcHMuY2FuRWRpdFJvdywgcm93Lm9yaWdpbmFsIHx8IHt9 KTsKKy8vICAgICAgIC8vICAgLy8gICAvLyB9CisvLyAgICAgICAvLyAgIC8vICAgcmV0dXJuIDxQ Z0ljb25CdXR0b24gaWNvbj17PFBsYXlBcnJvd0ljb24gLz59CisvLyAgICAgICAvLyAgIC8vICAg YXJpYS1sYWJlbD0iQ2FuY2VsIHRoZSBxdWVyeSIKKy8vICAgICAgIC8vICAgLy8gdGl0bGU9e2dl dHRleHQoIkNhbmNlbCB0aGUgYWN0aXZlIHF1ZXJ5Iil9CisvLyAgICAgICAvLyAgIC8vICAgLy8g b25DbGljaz17KCk9PnsKKy8vICAgICAgIC8vICAgLy8gICAvLyAgIHJvdy50b2dnbGVSb3dFeHBh bmRlZCghcm93LmlzRXhwYW5kZWQpOworLy8gICAgICAgLy8gICAvLyAgIC8vIH19CisvLyAgICAg ICAvLyAgIC8vICAgICBvbkNsaWNrPXsoKT0+eworLy8gICAgICAgLy8gICAvLyAgICAgICAvLyBy ZXR1cm4gKDxEYXRhR3JpZFZpZXc+PC9EYXRhR3JpZFZpZXc+KTsKKy8vICAgICAgIC8vICAgLy8g ICAgICAgc2V0Q2FuRWRpdCghY2FuRWRpdCk7CisvLyAgICAgICAvLyAgIC8vICAgICAgIHNldFJv dyhyb3cub3JpZ2luYWwpOworLy8gICAgICAgLy8gICAvLyAgICAgfX0KKy8vICAgICAgIC8vICAg Ly8gICAvPjsKKy8vICAgICAgIC8vICAgLy8gfQorLy8gICAgICAgLy8gfSwKKy8vICAgICAgIHsK Ky8vICAgICAgICAgYWNjZXNzb3I6ICdwaWQnLAorLy8gICAgICAgICBIZWFkZXI6IGdldHRleHQo J1BJRCcpLAorLy8gICAgICAgICBzb3J0YmxlOiB0cnVlLAorLy8gICAgICAgICByZXNpemFibGU6 IGZhbHNlLAorLy8gICAgICAgICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKy8vICAgICAg ICAgbWluV2lkdGg6IDI2LAorLy8gICAgICAgICBtYXhXaWR0aDogNjAsCisvLyAgICAgICB9LAor Ly8gICAgICAgeworLy8gICAgICAgICBhY2Nlc3NvcjogJ3VzZW5hbWUnLAorLy8gICAgICAgICBI ZWFkZXI6IGdldHRleHQoJ1VzZXInKSwKKy8vICAgICAgICAgc29ydGJsZTogdHJ1ZSwKKy8vICAg ICAgICAgcmVzaXphYmxlOiBmYWxzZSwKKy8vICAgICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjog ZmFsc2UsCisvLyAgICAgICAgIG1pbldpZHRoOiAyNiwKKy8vICAgICAgICAgbWF4V2lkdGg6IDgw LAorLy8gICAgICAgfSwKKy8vICAgICAgIHsKKy8vICAgICAgICAgYWNjZXNzb3I6ICdhcHBsaWNh dGlvbl9uYW1lJywKKy8vICAgICAgICAgSGVhZGVyOiBnZXR0ZXh0KCdBcHBsaWNhdGlvbicpLAor Ly8gICAgICAgICBzb3J0YmxlOiB0cnVlLAorLy8gICAgICAgICByZXNpemFibGU6IGZhbHNlLAor Ly8gICAgICAgICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKy8vICAgICAgICAgbWluV2lk dGg6IDI2LAorLy8gICAgICAgICBtYXhXaWR0aDogMTUwLAorLy8gICAgICAgfSwKKy8vICAgICAg IHsKKy8vICAgICAgICAgYWNjZXNzb3I6ICdjbGllbnRfYWRkcicsCisvLyAgICAgICAgIEhlYWRl cjogZ2V0dGV4dCgnQ2xpZW50JyksCisvLyAgICAgICAgIHNvcnRibGU6IHRydWUsCisvLyAgICAg ICAgIHJlc2l6YWJsZTogZmFsc2UsCisvLyAgICAgICAgIGRpc2FibGVHbG9iYWxGaWx0ZXI6IGZh bHNlLAorLy8gICAgICAgICBtaW5XaWR0aDogMjYsCisvLyAgICAgICAgIG1heFdpZHRoOiA2MCwK Ky8vICAgICAgIH0sCisvLyAgICAgICB7CisvLyAgICAgICAgIGFjY2Vzc29yOiAnYmFja2VuZF9z dGFydCcsCisvLyAgICAgICAgIEhlYWRlcjogZ2V0dGV4dCgnQmFja2VuZCBzdGFydCcpLAorLy8g ICAgICAgICBzb3J0YmxlOiB0cnVlLAorLy8gICAgICAgICByZXNpemFibGU6IGZhbHNlLAorLy8g ICAgICAgICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKy8vICAgICAgICAgbWluV2lkdGg6 IDI2LAorLy8gICAgICAgICBtYXhXaWR0aDogMTUwLAorLy8gICAgICAgfSwKKy8vICAgICAgIHsK Ky8vICAgICAgICAgYWNjZXNzb3I6ICdzdGF0ZScsCisvLyAgICAgICAgIEhlYWRlcjogZ2V0dGV4 dCgnU3RhdGUnKSwKKy8vICAgICAgICAgc29ydGJsZTogdHJ1ZSwKKy8vICAgICAgICAgcmVzaXph YmxlOiBmYWxzZSwKKy8vICAgICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisvLyAg ICAgICAgIG1pbldpZHRoOiAyNiwKKy8vICAgICAgICAgbWF4V2lkdGg6IDYwLAorLy8gICAgICAg fSwKKworLy8gICAgICAgeworLy8gICAgICAgICBhY2Nlc3NvcjogJ3dhaXRpbmcnLAorLy8gICAg ICAgICBIZWFkZXI6IGdldHRleHQoJ1dhaXRpbmcnKSwKKy8vICAgICAgICAgc29ydGJsZTogdHJ1 ZSwKKy8vICAgICAgICAgcmVzaXphYmxlOiBmYWxzZSwKKy8vICAgICAgICAgZGlzYWJsZUdsb2Jh bEZpbHRlcjogZmFsc2UsCisvLyAgICAgICB9LAorLy8gICAgICAgeworLy8gICAgICAgICBhY2Nl c3NvcjogJ3dhaXRfZXZlbnQnLAorLy8gICAgICAgICBIZWFkZXI6IGdldHRleHQoJ1dhaXQgZXZl bnQnKSwKKy8vICAgICAgICAgc29ydGJsZTogdHJ1ZSwKKy8vICAgICAgICAgcmVzaXphYmxlOiBm YWxzZSwKKy8vICAgICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisvLyAgICAgICB9 LAorLy8gICAgICAgeworLy8gICAgICAgICBhY2Nlc3NvcjogJ2Jsb2NraW5nX3BpZHMnLAorLy8g ICAgICAgICBIZWFkZXI6IGdldHRleHQoJ0Jsb2NraW5nIFBJRHMnKSwKKy8vICAgICAgICAgc29y dGJsZTogdHJ1ZSwKKy8vICAgICAgICAgcmVzaXphYmxlOiBmYWxzZSwKKy8vICAgICAgICAgZGlz YWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisvLyAgICAgICB9LAorLy8gICAgIF0sIFtzY2hlbWFd CisvLyAgICk7CisKKy8vICAgY29uc3QgYWN0aXZpdHlDb2x1bW5zID0gIFJlYWN0LnVzZU1lbW8o KCkgPT4gWworLy8gICAgIHsKKy8vICAgICAgIGFjY2Vzc29yOiAndGVybWluYXRlX3F1ZXJ5JywK Ky8vICAgICAgIEhlYWRlcjogJyAnLAorLy8gICAgICAgc29ydGJsZTogdHJ1ZSwKKy8vICAgICAg IHJlc2l6YWJsZTogdHJ1ZSwKKy8vICAgICAgIGRpc2FibGVHbG9iYWxGaWx0ZXI6IGZhbHNlLAor Ly8gICAgICAgbWluV2lkdGg6IDI2LAorLy8gICAgICAgbWF4V2lkdGg6IDQ0LAorCisvLyAgICAg ICBDZWxsOiAoeyByb3cgfSkgPT4geworLy8gICAgICAgICB2YXIgdGVybWluYXRlX3Nlc3Npb25f dXJsID0KKy8vICAgICAgICAgICB1cmxfZm9yKCdkYXNoYm9hcmQuaW5kZXgnKSArCisvLyAgICAg ICAgICAgJ3Rlcm1pbmF0ZV9zZXNzaW9uJyArCisvLyAgICAgICAgICAgJy8nICsKKy8vICAgICAg ICAgICBzaWQgKworLy8gICAgICAgICAgICcvJyArCisvLyAgICAgICAgICAgZGlkLAorLy8gICAg ICAgICAgIHRpdGxlID0gZ2V0dGV4dCgnVGVybWluYXRlIFNlc3Npb24/JyksCisvLyAgICAgICAg ICAgdHh0Q29uZmlybSA9IGdldHRleHQoCisvLyAgICAgICAgICAgICAnQXJlIHlvdSBzdXJlIHlv dSB3aXNoIHRvIHRlcm1pbmF0ZSB0aGUgc2Vzc2lvbj8nCisvLyAgICAgICAgICAgKSwKKy8vICAg ICAgICAgICB0eHRTdWNjZXNzID0gZ2V0dGV4dCgnU2Vzc2lvbiB0ZXJtaW5hdGVkIHN1Y2Nlc3Nm dWxseS4nKSwKKy8vICAgICAgICAgICB0eHRFcnJvciA9IGdldHRleHQoCisvLyAgICAgICAgICAg ICAnQW4gZXJyb3Igb2NjdXJyZWQgd2hpbHN0IHRlcm1pbmF0aW5nIHRoZSBhY3RpdmUgcXVlcnku JworLy8gICAgICAgICAgICksCisvLyAgICAgICAgICAgYWN0aW9uX3VybCA9IHRlcm1pbmF0ZV9z ZXNzaW9uX3VybDsKKworLy8gICAgICAgICBjb25zdCBhcGkgPSBnZXRBcGlJbnN0YW5jZSgpOwor CisvLyAgICAgICAgIHJldHVybiAoCisvLyAgICAgICAgICAgPFBnSWNvbkJ1dHRvbgorLy8gICAg ICAgICAgICAgdmFyaWFudD0ib3V0bGluZWQiCisvLyAgICAgICAgICAgICBpY29uPXs8Q2FuY2Vs SWNvbiBmb250U2l6ZT0ic21hbGwiIHN4PXt7IGNvbG9yOiAnI2QxMTYxNicgfX0gLz59CisvLyAg ICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4geworLy8gICAgICAgICAgICAgICBpZiAoCisvLyAg ICAgICAgICAgICAgICAgIWNhblRha2VBY3Rpb24oCisvLyAgICAgICAgICAgICAgICAgICByb3cs CisvLyAgICAgICAgICAgICAgICAgICAndGVybWluYXRlJywKKy8vICAgICAgICAgICAgICAgICAg IG5vZGVEYXRhLAorLy8gICAgICAgICAgICAgICAgICAgcHJvcHMudHJlZU5vZGVJbmZvLAorLy8g ICAgICAgICAgICAgICAgICAgbm9kZQorLy8gICAgICAgICAgICAgICAgICkKKy8vICAgICAgICAg ICAgICAgKQorLy8gICAgICAgICAgICAgICAgIHJldHVybjsKKy8vICAgICAgICAgICAgICAgYWN0 aW9uX3VybCArPSAnLycgKyByb3cudmFsdWVzLnBpZDsKKy8vICAgICAgICAgICAgICAgTm90aWZ5 LmNvbmZpcm0oCisvLyAgICAgICAgICAgICAgICAgdGl0bGUsCisvLyAgICAgICAgICAgICAgICAg dHh0Q29uZmlybSwKKy8vICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisvLyAgICAgICAg ICAgICAgICAgICBhcGkKKy8vICAgICAgICAgICAgICAgICAgICAgLmRlbGV0ZShhY3Rpb25fdXJs KQorLy8gICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7CisvLyAgICAg ICAgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBnZXR0ZXh0KCdTdWNjZXNzJykpIHsKKy8vICAg ICAgICAgICAgICAgICAgICAgICAgIE5vdGlmeS5zdWNjZXNzKHR4dFN1Y2Nlc3MpOworLy8gICAg ICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaF9ncmlkKCk7CisvLyAgICAgICAgICAgICAgICAg ICAgICAgfSBlbHNlIHsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmeS5lcnJvcih0 eHRFcnJvcik7CisvLyAgICAgICAgICAgICAgICAgICAgICAgfQorLy8gICAgICAgICAgICAgICAg ICAgICB9KQorLy8gICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7 CisvLyAgICAgICAgICAgICAgICAgICAgICAgTm90aWZ5LmFsZXJ0KAorLy8gICAgICAgICAgICAg ICAgICAgICAgICAgZ2V0dGV4dCgnRmFpbGVkIHRvIHJldHJpZXZlIGRhdGEgZnJvbSB0aGUgc2Vy dmVyLicpLAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGV4dChlcnJvci5tZXNzYWdl KQorLy8gICAgICAgICAgICAgICAgICAgICAgICk7CisvLyAgICAgICAgICAgICAgICAgICAgIH0p OworLy8gICAgICAgICAgICAgICAgIH0sCisvLyAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkg eworLy8gICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisvLyAgICAgICAgICAgICAgICAg fQorLy8gICAgICAgICAgICAgICApOworLy8gICAgICAgICAgICAgfX0KKy8vICAgICAgICAgICAg IGNvbG9yPSJkZWZhdWx0IgorLy8gICAgICAgICAgICAgYXJpYS1sYWJlbD0iVGVybWluYXRlIFNl c3Npb24/IgorLy8gICAgICAgICAgICAgdGl0bGU9e2dldHRleHQoJ1Rlcm1pbmF0ZSBTZXNzaW9u PycpfQorLy8gICAgICAgICAgID48L1BnSWNvbkJ1dHRvbj4KKy8vICAgICAgICAgKTsKKy8vICAg ICAgIH0sCisvLyAgICAgfSwKKy8vICAgICB7CisvLyAgICAgICBhY2Nlc3NvcjogJ2NhbmNlbF9R dWVyeScsCisvLyAgICAgICBIZWFkZXI6ICcgJywKKy8vICAgICAgIHNvcnRibGU6IHRydWUsCisv LyAgICAgICByZXNpemFibGU6IHRydWUsCisvLyAgICAgICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBm YWxzZSwKKy8vICAgICAgIG1pbldpZHRoOiAyNiwKKy8vICAgICAgIG1heFdpZHRoOiA0NCwKKy8v ICAgICAgIENlbGw6ICh7IHJvdyB9KSA9PiB7CisvLyAgICAgICAgIHZhciBjYW5jZWxfcXVlcnlf dXJsID0KKy8vICAgICAgICAgICB1cmxfZm9yKCdkYXNoYm9hcmQuaW5kZXgnKSArICdjYW5jZWxf cXVlcnknICsgJy8nICsgc2lkICsgJy8nICsgZGlkLAorLy8gICAgICAgICAgIHRpdGxlID0gZ2V0 dGV4dCgnQ2FuY2VsIEFjdGl2ZSBRdWVyeT8nKSwKKy8vICAgICAgICAgICB0eHRDb25maXJtID0g Z2V0dGV4dCgKKy8vICAgICAgICAgICAgICdBcmUgeW91IHN1cmUgeW91IHdpc2ggdG8gY2FuY2Vs IHRoZSBhY3RpdmUgcXVlcnk/JworLy8gICAgICAgICAgICksCisvLyAgICAgICAgICAgdHh0U3Vj Y2VzcyA9IGdldHRleHQoJ0FjdGl2ZSBxdWVyeSBjYW5jZWxsZWQgc3VjY2Vzc2Z1bGx5LicpLAor Ly8gICAgICAgICAgIHR4dEVycm9yID0gZ2V0dGV4dCgKKy8vICAgICAgICAgICAgICdBbiBlcnJv ciBvY2N1cnJlZCB3aGlsc3QgY2FuY2VsbGluZyB0aGUgYWN0aXZlIHF1ZXJ5LicKKy8vICAgICAg ICAgICApLAorLy8gICAgICAgICAgIGFjdGlvbl91cmwgPSBjYW5jZWxfcXVlcnlfdXJsOworLy8g ICAgICAgICBjb25zdCBhcGkgPSBnZXRBcGlJbnN0YW5jZSgpOworCisvLyAgICAgICAgIHJldHVy biAoCisvLyAgICAgICAgICAgPFBnSWNvbkJ1dHRvbgorLy8gICAgICAgICAgICAgdmFyaWFudD0i b3V0bGluZWQiCisvLyAgICAgICAgICAgICBpY29uPXs8U3F1YXJlSWNvbiBmb250U2l6ZT0ic21h bGwiIC8+fQorLy8gICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHsKKy8vICAgICAgICAgICAg ICAgaWYgKAorLy8gICAgICAgICAgICAgICAgICFjYW5UYWtlQWN0aW9uKAorLy8gICAgICAgICAg ICAgICAgICAgcm93LAorLy8gICAgICAgICAgICAgICAgICAgJ2NhbmNlbCcsCisvLyAgICAgICAg ICAgICAgICAgICBub2RlRGF0YSwKKy8vICAgICAgICAgICAgICAgICAgIHByb3BzLnRyZWVOb2Rl SW5mbywKKy8vICAgICAgICAgICAgICAgICAgIG5vZGUKKy8vICAgICAgICAgICAgICAgICApCisv LyAgICAgICAgICAgICAgICkKKy8vICAgICAgICAgICAgICAgICByZXR1cm47CisvLyAgICAgICAg ICAgICAgIGFjdGlvbl91cmwgKz0gJy8nICsgcm93LnZhbHVlcy5waWQ7CisvLyAgICAgICAgICAg ICAgIE5vdGlmeS5jb25maXJtKAorLy8gICAgICAgICAgICAgICAgIHRpdGxlLAorLy8gICAgICAg ICAgICAgICAgIHR4dENvbmZpcm0sCisvLyAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewor Ly8gICAgICAgICAgICAgICAgICAgYXBpCisvLyAgICAgICAgICAgICAgICAgICAgIC5kZWxldGUo YWN0aW9uX3VybCkKKy8vICAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykg eworLy8gICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gZ2V0dGV4dCgnU3VjY2Vzcycp KSB7CisvLyAgICAgICAgICAgICAgICAgICAgICAgICBOb3RpZnkuc3VjY2Vzcyh0eHRTdWNjZXNz KTsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hfZ3JpZCgpOworLy8gICAgICAg ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisvLyAgICAgICAgICAgICAgICAgICAgICAgICBOb3Rp ZnkuZXJyb3IodHh0RXJyb3IpOworLy8gICAgICAgICAgICAgICAgICAgICAgIH0KKy8vICAgICAg ICAgICAgICAgICAgICAgfSkKKy8vICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9u IChlcnJvcikgeworLy8gICAgICAgICAgICAgICAgICAgICAgIE5vdGlmeS5hbGVydCgKKy8vICAg ICAgICAgICAgICAgICAgICAgICAgIGdldHRleHQoJ0ZhaWxlZCB0byByZXRyaWV2ZSBkYXRhIGZy b20gdGhlIHNlcnZlci4nKSwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRleHQoZXJy b3IubWVzc2FnZSkKKy8vICAgICAgICAgICAgICAgICAgICAgICApOworLy8gICAgICAgICAgICAg ICAgICAgICB9KTsKKy8vICAgICAgICAgICAgICAgICB9LAorLy8gICAgICAgICAgICAgICAgIGZ1 bmN0aW9uICgpIHsKKy8vICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworLy8gICAgICAg ICAgICAgICAgIH0KKy8vICAgICAgICAgICAgICAgKTsKKy8vICAgICAgICAgICAgIH19CisvLyAg ICAgICAgICAgICBjb2xvcj0iZGVmYXVsdCIKKy8vICAgICAgICAgICAgIGFyaWEtbGFiZWw9IkNh bmNlbCB0aGUgcXVlcnkiCisvLyAgICAgICAgICAgICB0aXRsZT17Z2V0dGV4dCgnQ2FuY2VsIHRo ZSBhY3RpdmUgcXVlcnknKX0KKy8vICAgICAgICAgICA+PC9QZ0ljb25CdXR0b24+CisvLyAgICAg ICAgICk7CisvLyAgICAgICB9LAorLy8gICAgIH0sCisvLyAgICAgeworLy8gICAgICAgYWNjZXNz b3I6ICd2aWV3X2FjdGl2ZV9xdWVyeScsCisvLyAgICAgICBIZWFkZXI6ICcgJywKKy8vICAgICAg IHNvcnRibGU6IHRydWUsCisvLyAgICAgICByZXNpemFibGU6IHRydWUsCisvLyAgICAgICBkaXNh YmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKy8vICAgICAgIG1pbldpZHRoOiAyNiwKKy8vICAgICAg IG1heFdpZHRoOiA0NCwKKy8vICAgICAgIENlbGw6ICh7IHJvdyB9KSA9PiB7CisKKworLy8gICAg ICAgICBsZXQgY2FuRWRpdFJvdyA9IHRydWU7CisvLyAgICAgICAgIHJldHVybiAoCisvLyAgICAg ICAgICAgPFBnSWNvbkJ1dHRvbgorLy8gICAgICAgICAgICAgaWNvbj17cm93LmlzRXhwYW5kZWQg PyA8QXJyb3dEcm9wRG93bk91dGxpbmVkSWNvbiBmb250U2l6ZT0ic21hbGwiIC8+IDogPEFycm93 UmlnaHRPdXRsaW5lZEljb24gZm9udFNpemU9InNtYWxsIiAvPn0KKy8vICAgICAgICAgICAgIG9u Q2xpY2s9eygpID0+IHsKKy8vICAgICAgICAgICAgICAgcm93LnRvZ2dsZVJvd0V4cGFuZGVkKCFy b3cuaXNFeHBhbmRlZCk7CisvLyAgICAgICAgICAgICAgIHNldFNjaGVtYSgKKy8vICAgICAgICAg ICAgICAgICBuZXcgQWN0aXZlUXVlcnkoeworLy8gICAgICAgICAgICAgICAgICAgcXVlcnk6IHJv dy5vcmlnaW5hbC5xdWVyeSwKKy8vICAgICAgICAgICAgICAgICAgIGJhY2tlbmRfdHlwZTogcm93 Lm9yaWdpbmFsLmJhY2tlbmRfdHlwZSwKKy8vICAgICAgICAgICAgICAgICAgIHN0YXRlX2NoYW5n ZTogcm93Lm9yaWdpbmFsLnN0YXRlX2NoYW5nZSwKKy8vICAgICAgICAgICAgICAgICAgIHF1ZXJ5 X3N0YXJ0OiByb3cub3JpZ2luYWwucXVlcnlfc3RhcnQsCisvLyAgICAgICAgICAgICAgICAgfSkK Ky8vICAgICAgICAgICAgICAgKTsKKy8vICAgICAgICAgICAgIH19CisvLyAgICAgICAgICAgICBk aXNhYmxlZD17IWNhbkVkaXRSb3d9CisvLyAgICAgICAgICAgICBjb2xvcj0iZGVmYXVsdCIKKy8v ICAgICAgICAgICAgIGFyaWEtbGFiZWw9IlZpZXcgdGhlIGFjdGl2ZSBzZXNzaW9uIGRldGFpbHMi CisvLyAgICAgICAgICAgICB0aXRsZT17Z2V0dGV4dCgnVmlldyB0aGUgYWN0aXZlIHNlc3Npb24g ZGV0YWlscycpfQorLy8gICAgICAgICAgIC8+CisvLyAgICAgICAgICk7CisvLyAgICAgICB9LAor CisvLyAgICAgICAvLyBDZWxsOiAoe3Jvd30pPT57CisvLyAgICAgICAvLyAgIC8vIGlmKHByb3Bz LmNhbkVkaXRSb3cpIHsKKy8vICAgICAgIC8vICAgLy8gICBjYW5FZGl0Um93ID0gZXZhbEZ1bmMo c2NoZW1hUmVmLmN1cnJlbnQsIHByb3BzLmNhbkVkaXRSb3csIHJvdy5vcmlnaW5hbCB8fCB7fSk7 CisvLyAgICAgICAvLyAgIC8vIH0KKy8vICAgICAgIC8vICAgcmV0dXJuIDxQZ0ljb25CdXR0b24g aWNvbj17PFBsYXlBcnJvd0ljb24gLz59CisvLyAgICAgICAvLyAgIGFyaWEtbGFiZWw9IkNhbmNl bCB0aGUgcXVlcnkiCisvLyAgICAgICAvLyB0aXRsZT17Z2V0dGV4dCgiQ2FuY2VsIHRoZSBhY3Rp dmUgcXVlcnkiKX0KKy8vICAgICAgIC8vICAgLy8gb25DbGljaz17KCk9PnsKKy8vICAgICAgIC8v ICAgLy8gICByb3cudG9nZ2xlUm93RXhwYW5kZWQoIXJvdy5pc0V4cGFuZGVkKTsKKy8vICAgICAg IC8vICAgLy8gfX0KKy8vICAgICAgIC8vICAgICBvbkNsaWNrPXsoKT0+eworLy8gICAgICAgLy8g ICAgICAgLy8gcmV0dXJuICg8RGF0YUdyaWRWaWV3PjwvRGF0YUdyaWRWaWV3Pik7CisvLyAgICAg ICAvLyAgICAgICBzZXRDYW5FZGl0KCFjYW5FZGl0KTsKKy8vICAgICAgIC8vICAgICAgIHNldFJv dyhyb3cub3JpZ2luYWwpOworLy8gICAgICAgLy8gICAgIH19CisvLyAgICAgICAvLyAgIC8+Owor Ly8gICAgICAgLy8gfQorLy8gICAgIH0sCisvLyAgICAgeworLy8gICAgICAgYWNjZXNzb3I6ICdw aWQnLAorLy8gICAgICAgSGVhZGVyOiBnZXR0ZXh0KCdQSUQnKSwKKy8vICAgICAgIHNvcnRibGU6 IHRydWUsCisvLyAgICAgICByZXNpemFibGU6IGZhbHNlLAorLy8gICAgICAgZGlzYWJsZUdsb2Jh bEZpbHRlcjogZmFsc2UsCisvLyAgICAgICBtaW5XaWR0aDogMjYsCisvLyAgICAgICBtYXhXaWR0 aDogNjAsCisvLyAgICAgfSwKKy8vICAgICB7CisvLyAgICAgICBhY2Nlc3NvcjogJ3VzZW5hbWUn LAorLy8gICAgICAgSGVhZGVyOiBnZXR0ZXh0KCdVc2VyJyksCisvLyAgICAgICBzb3J0YmxlOiB0 cnVlLAorLy8gICAgICAgcmVzaXphYmxlOiBmYWxzZSwKKy8vICAgICAgIGRpc2FibGVHbG9iYWxG aWx0ZXI6IGZhbHNlLAorLy8gICAgICAgbWluV2lkdGg6IDI2LAorLy8gICAgICAgbWF4V2lkdGg6 IDgwLAorLy8gICAgIH0sCisvLyAgICAgeworLy8gICAgICAgYWNjZXNzb3I6ICdhcHBsaWNhdGlv bl9uYW1lJywKKy8vICAgICAgIEhlYWRlcjogZ2V0dGV4dCgnQXBwbGljYXRpb24nKSwKKy8vICAg ICAgIHNvcnRibGU6IHRydWUsCisvLyAgICAgICByZXNpemFibGU6IGZhbHNlLAorLy8gICAgICAg ZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisvLyAgICAgICBtaW5XaWR0aDogMjYsCisvLyAg ICAgICBtYXhXaWR0aDogMTUwLAorLy8gICAgIH0sCisvLyAgICAgeworLy8gICAgICAgYWNjZXNz b3I6ICdjbGllbnRfYWRkcicsCisvLyAgICAgICBIZWFkZXI6IGdldHRleHQoJ0NsaWVudCcpLAor Ly8gICAgICAgc29ydGJsZTogdHJ1ZSwKKy8vICAgICAgIHJlc2l6YWJsZTogZmFsc2UsCisvLyAg ICAgICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKy8vICAgICAgIG1pbldpZHRoOiAyNiwK Ky8vICAgICAgIG1heFdpZHRoOiA2MCwKKy8vICAgICB9LAorLy8gICAgIHsKKy8vICAgICAgIGFj Y2Vzc29yOiAnYmFja2VuZF9zdGFydCcsCisvLyAgICAgICBIZWFkZXI6IGdldHRleHQoJ0JhY2tl bmQgc3RhcnQnKSwKKy8vICAgICAgIHNvcnRibGU6IHRydWUsCisvLyAgICAgICByZXNpemFibGU6 IGZhbHNlLAorLy8gICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisvLyAgICAgICBt aW5XaWR0aDogMjYsCisvLyAgICAgICBtYXhXaWR0aDogMTUwLAorLy8gICAgIH0sCisvLyAgICAg eworLy8gICAgICAgYWNjZXNzb3I6ICdzdGF0ZScsCisvLyAgICAgICBIZWFkZXI6IGdldHRleHQo J1N0YXRlJyksCisvLyAgICAgICBzb3J0YmxlOiB0cnVlLAorLy8gICAgICAgcmVzaXphYmxlOiBm YWxzZSwKKy8vICAgICAgIGRpc2FibGVHbG9iYWxGaWx0ZXI6IGZhbHNlLAorLy8gICAgICAgbWlu V2lkdGg6IDI2LAorLy8gICAgICAgbWF4V2lkdGg6IDYwLAorLy8gICAgIH0sCisKKy8vICAgICB7 CisvLyAgICAgICBhY2Nlc3NvcjogJ3dhaXRpbmcnLAorLy8gICAgICAgSGVhZGVyOiBnZXR0ZXh0 KCdXYWl0aW5nJyksCisvLyAgICAgICBzb3J0YmxlOiB0cnVlLAorLy8gICAgICAgcmVzaXphYmxl OiBmYWxzZSwKKy8vICAgICAgIGRpc2FibGVHbG9iYWxGaWx0ZXI6IGZhbHNlLAorLy8gICAgIH0s CisvLyAgICAgeworLy8gICAgICAgYWNjZXNzb3I6ICd3YWl0X2V2ZW50JywKKy8vICAgICAgIEhl YWRlcjogZ2V0dGV4dCgnV2FpdCBldmVudCcpLAorLy8gICAgICAgc29ydGJsZTogdHJ1ZSwKKy8v ICAgICAgIHJlc2l6YWJsZTogZmFsc2UsCisvLyAgICAgICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBm YWxzZSwKKy8vICAgICB9LAorLy8gICAgIHsKKy8vICAgICAgIGFjY2Vzc29yOiAnYmxvY2tpbmdf cGlkcycsCisvLyAgICAgICBIZWFkZXI6IGdldHRleHQoJ0Jsb2NraW5nIFBJRHMnKSwKKy8vICAg ICAgIHNvcnRibGU6IHRydWUsCisvLyAgICAgICByZXNpemFibGU6IGZhbHNlLAorLy8gICAgICAg ZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisvLyAgICAgfSwKKy8vICAgXSxbdmFsXSk7CisK Ky8vICAgY29uc3QgZGF0YWJhc2VMb2Nrc0NvbHVtbnMgPSBSZWFjdC51c2VNZW1vKCgpID0+IFsK Ky8vICAgICB7CisvLyAgICAgICBhY2Nlc3NvcjogJ3BpZCcsCisvLyAgICAgICBIZWFkZXI6IGdl dHRleHQoJ1BJRCcpLAorLy8gICAgICAgc29ydGJsZTogdHJ1ZSwKKy8vICAgICAgIHJlc2l6YWJs ZTogZmFsc2UsCisvLyAgICAgICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKy8vICAgICAg IG1pbldpZHRoOiAyNiwKKy8vICAgICAgIG1heFdpZHRoOiA1MCwKKy8vICAgICB9LAorLy8gICAg IHsKKy8vICAgICAgIGFjY2Vzc29yOiAnbG9ja3R5cGUnLAorLy8gICAgICAgSGVhZGVyOiBnZXR0 ZXh0KCdMb2NrIHR5cGUnKSwKKy8vICAgICAgIHNvcnRibGU6IHRydWUsCisvLyAgICAgICByZXNp emFibGU6IGZhbHNlLAorLy8gICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisvLyAg ICAgICBtaW5XaWR0aDogMjYsCisvLyAgICAgICBtYXhXaWR0aDogNjAsCisvLyAgICAgfSwKKy8v ICAgICB7CisvLyAgICAgICBhY2Nlc3NvcjogJ3JlbGF0aW9uJywKKy8vICAgICAgIEhlYWRlcjog Z2V0dGV4dCgnVGFyZ2V0IHJlbGF0aW9uJyksCisvLyAgICAgICBzb3J0YmxlOiB0cnVlLAorLy8g ICAgICAgcmVzaXphYmxlOiBmYWxzZSwKKy8vICAgICAgIGRpc2FibGVHbG9iYWxGaWx0ZXI6IGZh bHNlLAorLy8gICAgIH0sCisvLyAgICAgeworLy8gICAgICAgYWNjZXNzb3I6ICdwYWdlJywKKy8v ICAgICAgIEhlYWRlcjogZ2V0dGV4dCgnUGFnZScpLAorLy8gICAgICAgc29ydGJsZTogdHJ1ZSwK Ky8vICAgICAgIHJlc2l6YWJsZTogZmFsc2UsCisvLyAgICAgICBkaXNhYmxlR2xvYmFsRmlsdGVy OiBmYWxzZSwKKy8vICAgICAgIG1pbldpZHRoOiAyNiwKKy8vICAgICAgIG1heFdpZHRoOiA1MCwK Ky8vICAgICB9LAorLy8gICAgIHsKKy8vICAgICAgIGFjY2Vzc29yOiAndHVwbGUnLAorLy8gICAg ICAgSGVhZGVyOiBnZXR0ZXh0KCdUdXBsZScpLAorLy8gICAgICAgc29ydGJsZTogdHJ1ZSwKKy8v ICAgICAgIHJlc2l6YWJsZTogZmFsc2UsCisvLyAgICAgICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBm YWxzZSwKKy8vICAgICAgIG1pbldpZHRoOiAyNiwKKy8vICAgICAgIG1heFdpZHRoOiA1MCwKKy8v ICAgICB9LAorLy8gICAgIHsKKy8vICAgICAgIGFjY2Vzc29yOiAndmlydHVhbHhpZCcsCisvLyAg ICAgICBIZWFkZXI6IGdldHRleHQoJ3ZYSUQgKHRhcmdldCknKSwKKy8vICAgICAgIHNvcnRibGU6 IHRydWUsCisvLyAgICAgICByZXNpemFibGU6IGZhbHNlLAorLy8gICAgICAgZGlzYWJsZUdsb2Jh bEZpbHRlcjogZmFsc2UsCisvLyAgICAgfSwKKy8vICAgICB7CisvLyAgICAgICBhY2Nlc3Nvcjog J3RyYW5zYWN0aW9uaWQnLAorLy8gICAgICAgSGVhZGVyOiBnZXR0ZXh0KCdYSUQgKHRhcmdldCkn KSwKKy8vICAgICAgIHNvcnRibGU6IHRydWUsCisvLyAgICAgICByZXNpemFibGU6IGZhbHNlLAor Ly8gICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisvLyAgICAgfSwKKy8vICAgICB7 CisvLyAgICAgICBhY2Nlc3NvcjogJ2NsYXNzaWQnLAorLy8gICAgICAgSGVhZGVyOiBnZXR0ZXh0 KCdDbGFzcycpLAorLy8gICAgICAgc29ydGJsZTogdHJ1ZSwKKy8vICAgICAgIHJlc2l6YWJsZTog ZmFsc2UsCisvLyAgICAgICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKy8vICAgICAgIG1p bldpZHRoOiAyNiwKKy8vICAgICAgIG1heFdpZHRoOiA0MCwKKy8vICAgICB9LAorLy8gICAgIHsK Ky8vICAgICAgIGFjY2Vzc29yOiAnb2JqaWQnLAorLy8gICAgICAgSGVhZGVyOiBnZXR0ZXh0KCdP YmplY3QgSUQnKSwKKy8vICAgICAgIHNvcnRibGU6IHRydWUsCisvLyAgICAgICByZXNpemFibGU6 IGZhbHNlLAorLy8gICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisvLyAgICAgfSwK Ky8vICAgICB7CisvLyAgICAgICBhY2Nlc3NvcjogJ3ZpcnR1YWx0cmFuc2FjdGlvbicsCisvLyAg ICAgICBIZWFkZXI6IGdldHRleHQoJ3ZYSUQgKG93bmVyKScpLAorLy8gICAgICAgc29ydGJsZTog dHJ1ZSwKKy8vICAgICAgIHJlc2l6YWJsZTogZmFsc2UsCisvLyAgICAgICBkaXNhYmxlR2xvYmFs RmlsdGVyOiBmYWxzZSwKKy8vICAgICB9LAorLy8gICAgIHsKKy8vICAgICAgIGFjY2Vzc29yOiAn bW9kZScsCisvLyAgICAgICBIZWFkZXI6IGdldHRleHQoJ01vZGUnKSwKKy8vICAgICAgIHNvcnRi bGU6IHRydWUsCisvLyAgICAgICByZXNpemFibGU6IGZhbHNlLAorLy8gICAgICAgZGlzYWJsZUds b2JhbEZpbHRlcjogZmFsc2UsCisvLyAgICAgfSwKKy8vICAgICB7CisvLyAgICAgICBhY2Nlc3Nv cjogJ2dyYW50ZWQnLAorLy8gICAgICAgSGVhZGVyOiBnZXR0ZXh0KCdHcmFudGVkPycpLAorLy8g ICAgICAgc29ydGJsZTogdHJ1ZSwKKy8vICAgICAgIHJlc2l6YWJsZTogZmFsc2UsCisvLyAgICAg ICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKy8vICAgICB9LAorLy8gICAgIC8vIHsKKy8v ICAgICAvLyAgIGFjY2Vzc29yOiAiZGF0bmFtZSIsCisvLyAgICAgLy8gICBIZWFkZXI6IGdldHRl eHQoIkRCIE5hbWU/IiksCisvLyAgICAgLy8gICBzb3J0YmxlOiB0cnVlLAorLy8gICAgIC8vICAg cmVzaXphYmxlOiBmYWxzZSwKKy8vICAgICAvLyAgIGRpc2FibGVHbG9iYWxGaWx0ZXI6IGZhbHNl LAorLy8gICAgIC8vIH0sCisvLyAgICAgLy8geworLy8gICAgIC8vICAgYWNjZXNzb3I6ICJmYXN0 cGF0aCIsCisvLyAgICAgLy8gICBIZWFkZXI6IGdldHRleHQoImZhc3RwYXRoPyIpLAorLy8gICAg IC8vICAgc29ydGJsZTogdHJ1ZSwKKy8vICAgICAvLyAgIHJlc2l6YWJsZTogZmFsc2UsCisvLyAg ICAgLy8gICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKy8vICAgICAvLyB9LAorLy8gICAg IC8vIHsKKy8vICAgICAvLyAgIGFjY2Vzc29yOiAib2Jqc3ViaWQiLAorLy8gICAgIC8vICAgSGVh ZGVyOiBnZXR0ZXh0KCJvYmpzdWJpZD8iKSwKKy8vICAgICAvLyAgIHNvcnRibGU6IHRydWUsCisv LyAgICAgLy8gICByZXNpemFibGU6IGZhbHNlLAorLy8gICAgIC8vICAgZGlzYWJsZUdsb2JhbEZp bHRlcjogZmFsc2UsCisvLyAgICAgLy8gfSwKKy8vICAgXSk7CisKKy8vICAgY29uc3QgZGF0YWJh c2VQcmVwYXJlZENvbHVtbnMgPSBSZWFjdC51c2VNZW1vKCgpID0+IFsKKy8vICAgICB7CisvLyAg ICAgICBhY2Nlc3NvcjogJ2dpdCcsCisvLyAgICAgICBIZWFkZXI6IGdldHRleHQoJ05hbWUnKSwK Ky8vICAgICAgIHNvcnRibGU6IHRydWUsCisvLyAgICAgICByZXNpemFibGU6IGZhbHNlLAorLy8g ICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisvLyAgICAgfSwKKy8vICAgICB7Cisv LyAgICAgICBhY2Nlc3NvcjogJ093bmVyJywKKy8vICAgICAgIEhlYWRlcjogZ2V0dGV4dCgnT3du ZXInKSwKKy8vICAgICAgIHNvcnRibGU6IHRydWUsCisvLyAgICAgICByZXNpemFibGU6IGZhbHNl LAorLy8gICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisvLyAgICAgfSwKKy8vICAg ICB7CisvLyAgICAgICBhY2Nlc3NvcjogJ3RyYW5zYWN0aW9uJywKKy8vICAgICAgIEhlYWRlcjog Z2V0dGV4dCgnWElEJyksCisvLyAgICAgICBzb3J0YmxlOiB0cnVlLAorLy8gICAgICAgcmVzaXph YmxlOiBmYWxzZSwKKy8vICAgICAgIGRpc2FibGVHbG9iYWxGaWx0ZXI6IGZhbHNlLAorLy8gICAg IH0sCisvLyAgICAgeworLy8gICAgICAgYWNjZXNzb3I6ICdwcmVwYXJlZCcsCisvLyAgICAgICBI ZWFkZXI6IGdldHRleHQoJ1ByZXBhcmVkIGF0JyksCisvLyAgICAgICBzb3J0YmxlOiB0cnVlLAor Ly8gICAgICAgcmVzaXphYmxlOiBmYWxzZSwKKy8vICAgICAgIGRpc2FibGVHbG9iYWxGaWx0ZXI6 IGZhbHNlLAorLy8gICAgIH0sCisvLyAgIF0pOworCisvLyAgIGxldCBjaGFydHNEb21PYmogPSBu dWxsOworCisvLyAgIC8vIGNvbnN0IG1lbW9pemVkVmFsdWUgPSB1c2VNZW1vKCgpID0+IHt9dHJ1 ZSwgW25vZGVEYXRhXSk7CisKKy8vICAgY29uc3QgY2FuVGFrZUFjdGlvbiA9IChyb3csIGNlbGxB Y3Rpb24sIG5vZGVEYXRhLCB0cmVlTm9kZUluZm8sIG5vZGUpID0+IHsKKy8vICAgICAvLyBXZSB3 aWxsIHZhbGlkYXRlIGlmIHVzZXIgaXMgYWxsb3dlZCB0byBjYW5jZWwgdGhlIGFjdGl2ZSBxdWVy eQorLy8gICAgIC8vIElmIHRoZXJlIGlzIG9ubHkgb25lIGFjdGl2ZSBzZXNzaW9uIG1lYW5zIGl0 IHByb2JhYmx5IG91ciBtYWluCisvLyAgICAgLy8gY29ubmVjdGlvbiBzZXNzaW9uCisvLyAgICAg Y29uc29sZS5sb2cocm93LCAnPT09PicsIG5vZGVEYXRhLCB0cmVlTm9kZUluZm8sIG5vZGUuY29s bGVjdGlvbik7CisvLyAgICAgLy8gbS5jb2xsZWN0aW9uLndoZXJlKHsKKy8vICAgICAvLyAgICdz dGF0ZSc6ICdhY3RpdmUnLAorLy8gICAgIC8vIH0pLAorLy8gICAgIHZhciBwZ192ZXJzaW9uID0g bm9kZURhdGEudmVyc2lvbiB8fCBudWxsLAorLy8gICAgICAgY2VsbEFjdGlvbiA9IGNlbGxBY3Rp b24gfHwgbnVsbCwKKy8vICAgICAgIGlzX2NhbmNlbF9zZXNzaW9uID0gY2VsbEFjdGlvbiA9PT0g J2NhbmNlbCcsCisvLyAgICAgICB0eHRNZXNzYWdlLAorLy8gICAgICAgbWFpbnRlbmFuY2VfZGF0 YWJhc2UgPSB0cmVlTm9kZUluZm8uc2VydmVyLmRiLAorLy8gICAgICAgaXNfc3VwZXJfdXNlciwK Ky8vICAgICAgIGN1cnJlbnRfdXNlcjsKKworLy8gICAgIHZhciBjYW5fc2lnbmFsX2JhY2tlbmQg PQorLy8gICAgICAgdHJlZU5vZGVJbmZvLnNlcnZlciAmJiB0cmVlTm9kZUluZm8uc2VydmVyLnVz ZXIKKy8vICAgICAgICAgPyB0cmVlTm9kZUluZm8uc2VydmVyLnVzZXIuY2FuX3NpZ25hbF9iYWNr ZW5kCisvLyAgICAgICAgIDogZmFsc2U7CisKKy8vICAgICBpZiAoCisvLyAgICAgICB0cmVlTm9k ZUluZm8uc2VydmVyICYmCisvLyAgICAgICB0cmVlTm9kZUluZm8uc2VydmVyLnVzZXIgJiYKKy8v ICAgICAgIHRyZWVOb2RlSW5mby5zZXJ2ZXIudXNlci5pc19zdXBlcnVzZXIKKy8vICAgICApIHsK Ky8vICAgICAgIGlzX3N1cGVyX3VzZXIgPSB0cnVlOworLy8gICAgIH0gZWxzZSB7CisvLyAgICAg ICBpc19zdXBlcl91c2VyID0gZmFsc2U7CisvLyAgICAgICBjdXJyZW50X3VzZXIgPQorLy8gICAg ICAgICB0cmVlTm9kZUluZm8uc2VydmVyICYmIHRyZWVOb2RlSW5mby5zZXJ2ZXIudXNlcgorLy8g ICAgICAgICAgID8gdHJlZU5vZGVJbmZvLnNlcnZlci51c2VyLm5hbWUKKy8vICAgICAgICAgICA6 IG51bGw7CisvLyAgICAgfQorCisvLyAgICAgLy8gV2l0aCBQRzEwLCBXZSBoYXZlIGJhY2tncm91 bmQgcHJvY2VzcyBzaG93aW5nIG9uIGRhc2hib2FyZAorLy8gICAgIC8vIFdlIHdpbGwgbm90IGFs bG93IHVzZXIgdG8gY2FuY2VsIHRoZW0gYXMgdGhleSB3aWxsIGZhaWwgd2l0aCBlcnJvcgorLy8g ICAgIC8vIGFueXdheSwgc28gYmV0dGVyIHVzYWJpbGl0eSB3ZSB3aWxsIHRocm93IG91ciBvbiBu b3RpZmljYXRpb24KKworLy8gICAgIC8vIEJhY2tncm91bmQgcHJvY2Vzc2VzIGRvIG5vdCBoYXZl IGRhdGFiYXNlIGZpZWxkIHBvcHVsYXRlZAorLy8gICAgIGlmIChwZ192ZXJzaW9uICYmIHBnX3Zl cnNpb24gPj0gMTAwMDAwICYmICFyb3cub3JpZ2luYWwuZGF0bmFtZSkgeworLy8gICAgICAgaWYg KGlzX2NhbmNlbF9zZXNzaW9uKSB7CisvLyAgICAgICAgIHR4dE1lc3NhZ2UgPSBnZXR0ZXh0KCdZ b3UgY2Fubm90IGNhbmNlbCBiYWNrZ3JvdW5kIHdvcmtlciBwcm9jZXNzZXMuJyk7CisvLyAgICAg ICB9IGVsc2UgeworLy8gICAgICAgICB0eHRNZXNzYWdlID0gZ2V0dGV4dCgKKy8vICAgICAgICAg ICAnWW91IGNhbm5vdCB0ZXJtaW5hdGUgYmFja2dyb3VuZCB3b3JrZXIgcHJvY2Vzc2VzLicKKy8v ICAgICAgICAgKTsKKy8vICAgICAgIH0KKy8vICAgICAgIE5vdGlmeS5pbmZvKHR4dE1lc3NhZ2Up OworLy8gICAgICAgcmV0dXJuIGZhbHNlOworLy8gICAgICAgLy8gSWYgaXQgaXMgdGhlIGxhc3Qg YWN0aXZlIGNvbm5lY3Rpb24gb24gbWFpbnRlbmFuY2UgZGIgdGhlbiBlcnJvciBvdXQKKy8vICAg ICB9IGVsc2UgaWYgKAorLy8gICAgICAgbWFpbnRlbmFuY2VfZGF0YWJhc2UgPT0gcm93Lm9yaWdp bmFsLmRhdG5hbWUgJiYKKy8vICAgICAgIHJvdy5vcmlnaW5hbC5zdGF0ZSA9PSAnYWN0aXZlJwor Ly8gICAgICkgeworLy8gICAgICAgaWYgKGlzX2NhbmNlbF9zZXNzaW9uKSB7CisvLyAgICAgICAg IHR4dE1lc3NhZ2UgPSBnZXR0ZXh0KAorLy8gICAgICAgICAgICdZb3UgYXJlIG5vdCBhbGxvd2Vk IHRvIGNhbmNlbCB0aGUgbWFpbiBhY3RpdmUgc2Vzc2lvbi4nCisvLyAgICAgICAgICk7CisvLyAg ICAgICB9IGVsc2UgeworLy8gICAgICAgICB0eHRNZXNzYWdlID0gZ2V0dGV4dCgKKy8vICAgICAg ICAgICAnWW91IGFyZSBub3QgYWxsb3dlZCB0byB0ZXJtaW5hdGUgdGhlIG1haW4gYWN0aXZlIHNl c3Npb24uJworLy8gICAgICAgICApOworLy8gICAgICAgfQorLy8gICAgICAgTm90aWZ5LmVycm9y KHR4dE1lc3NhZ2UpOworLy8gICAgICAgcmV0dXJuIGZhbHNlOworLy8gICAgIH0gZWxzZSBpZiAo aXNfY2FuY2VsX3Nlc3Npb24gJiYgcm93Lm9yaWdpbmFsLnN0YXRlID09ICdpZGxlJykgeworLy8g ICAgICAgLy8gSWYgdGhpcyBzZXNzaW9uIGlzIGFscmVhZHkgaWRsZSB0aGVuIGRvIG5vdGhpbmcK Ky8vICAgICAgIE5vdGlmeS5pbmZvKGdldHRleHQoJ1RoZSBzZXNzaW9uIGlzIGFscmVhZHkgaW4g aWRsZSBzdGF0ZS4nKSk7CisvLyAgICAgICByZXR1cm4gZmFsc2U7CisvLyAgICAgfSBlbHNlIGlm IChjYW5fc2lnbmFsX2JhY2tlbmQpIHsKKy8vICAgICAgIC8vIHVzZXIgd2l0aCBtZW1iZXJzaGlw IG9mICdwZ19zaWduYWxfYmFja2VuZCcgY2FuIHRlcm1pbmF0ZSB0aGUgc2Vzc2lvbiBvZiBub24g YWRtaW4gdXNlci4KKy8vICAgICAgIHJldHVybiB0cnVlOworLy8gICAgIH0gZWxzZSBpZiAoaXNf c3VwZXJfdXNlcikgeworLy8gICAgICAgLy8gU3VwZXIgdXNlciBjYW4gZG8gYW55dGhpbmcKKy8v ICAgICAgIHJldHVybiB0cnVlOworLy8gICAgIH0gZWxzZSBpZiAoY3VycmVudF91c2VyICYmIGN1 cnJlbnRfdXNlciA9PSBtLmdldCgndXNlbmFtZScpKSB7CisvLyAgICAgICAvLyBOb24tc3VwZXIg dXNlciBjYW4gY2FuY2VsIG9ubHkgdGhlaXIgYWN0aXZlIHF1ZXJpZXMKKy8vICAgICAgIHJldHVy biB0cnVlOworLy8gICAgIH0gZWxzZSB7CisvLyAgICAgICAvLyBEbyBub3QgYWxsb3cgdG8gY2Fu Y2VsIHNvbWVvbmUgZWxzZSBzZXNzaW9uIHRvIG5vbi1zdXBlciB1c2VyCisvLyAgICAgICBpZiAo aXNfY2FuY2VsX3Nlc3Npb24pIHsKKy8vICAgICAgICAgdHh0TWVzc2FnZSA9IGdldHRleHQoCisv LyAgICAgICAgICAgJ1N1cGVydXNlciBwcml2aWxlZ2VzIGFyZSByZXF1aXJlZCB0byBjYW5jZWwg YW5vdGhlciB1c2VycyBxdWVyeS4nCisvLyAgICAgICAgICk7CisvLyAgICAgICB9IGVsc2Ugewor Ly8gICAgICAgICB0eHRNZXNzYWdlID0gZ2V0dGV4dCgKKy8vICAgICAgICAgICAnU3VwZXJ1c2Vy IHByaXZpbGVnZXMgYXJlIHJlcXVpcmVkIHRvIHRlcm1pbmF0ZSBhbm90aGVyIHVzZXJzIHF1ZXJ5 LicKKy8vICAgICAgICAgKTsKKy8vICAgICAgIH0KKy8vICAgICAgIE5vdGlmeS5lcnJvcih0eHRN ZXNzYWdlKTsKKy8vICAgICAgIHJldHVybiBmYWxzZTsKKy8vICAgICB9CisvLyAgIH07CisKKy8v ICAgdXNlRWZmZWN0KCgpID0+IHsKKy8vICAgICBsZXQgdXJsLAorLy8gICAgICAgbWVzc2FnZSA9 IGdldHRleHQoCisvLyAgICAgICAgICdQbGVhc2UgY29ubmVjdCB0byB0aGUgc2VsZWN0ZWQgc2Vy dmVyIHRvIHZpZXcgdGhlIGRhc2hib2FyZC4nCisvLyAgICAgICApOworCisvLyAgICAgaWYgKHNp ZCAmJiBwcm9wcy5zZXJ2ZXJDb25uZWN0ZWQpIHsKKy8vICAgICAgIGxldCBjb2x1bW5zID0gYWN0 aXZpdHlDb2x1bW5zOworLy8gICAgICAgaWYgKHZhbCA9PT0gMCkgeworLy8gICAgICAgICB1cmwg PSB1cmxfZm9yKCdkYXNoYm9hcmQuYWN0aXZpdHknKTsKKy8vICAgICAgIH0gZWxzZSBpZiAodmFs ID09PSAxKSB7CisvLyAgICAgICAgIHVybCA9IHVybF9mb3IoJ2Rhc2hib2FyZC5sb2NrcycpOwor Ly8gICAgICAgICBjb2x1bW5zID0gZGF0YWJhc2VMb2Nrc0NvbHVtbnM7CisvLyAgICAgICB9IGVs c2UgaWYgKHZhbCA9PT0gMikgeworLy8gICAgICAgICB1cmwgPSB1cmxfZm9yKCdkYXNoYm9hcmQu cHJlcGFyZWQnKTsKKy8vICAgICAgICAgY29sdW1ucyA9IGRhdGFiYXNlUHJlcGFyZWRDb2x1bW5z OworLy8gICAgICAgfSBlbHNlIHsKKy8vICAgICAgICAgdXJsID0gdXJsX2ZvcignZGFzaGJvYXJk LmNvbmZpZycpOworLy8gICAgICAgICBjb2x1bW5zID0gc2VydmVyQ29uZmlnQ29sdW1uczsKKy8v ICAgICAgIH0KKworLy8gICAgICAgbWVzc2FnZSA9IGdldHRleHQoJ05vIHN0YXRpc3RpY3MgYXJl IGF2YWlsYWJsZSBmb3IgdGhlIHNlbGVjdGVkIG9iamVjdC4nKTsKKy8vICAgICAgIGlmIChkaWQp IHVybCArPSBzaWQgKyAnLycgKyBkaWQ7CisvLyAgICAgICBlbHNlIHVybCArPSBzaWQ7CisKKy8v ICAgICAgIGNvbnN0IGFwaSA9IGdldEFwaUluc3RhbmNlKCk7CisvLyAgICAgICBpZiAodHJ1ZSkg eworLy8gICAgICAgICBhcGkoeworLy8gICAgICAgICAgIHVybDogdXJsLAorLy8gICAgICAgICAg IHR5cGU6ICdHRVQnLAorLy8gICAgICAgICB9KQorLy8gICAgICAgICAgIC50aGVuKChyZXMpID0+ IHsKKy8vICAgICAgICAgICAgIC8vIHBhcnNlRGF0YShyZXMuZGF0YSwgYWN0aXZpdHlDb2x1bW5z KTsKKy8vICAgICAgICAgICAgIHNldGRhc2hEYXRhKHBhcnNlRGF0YShyZXMuZGF0YSwgY29sdW1u cywgc2lkLCBkaWQpKTsKKy8vICAgICAgICAgICB9KQorLy8gICAgICAgICAgIC5jYXRjaCgoZSkg PT4geworLy8gICAgICAgICAgICAgTm90aWZ5LmFsZXJ0KAorLy8gICAgICAgICAgICAgICBnZXR0 ZXh0KCdGYWlsZWQgdG8gcmV0cmlldmUgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIuJyksCisvLyAgICAg ICAgICAgICAgIGdldHRleHQoZS5tZXNzYWdlKQorLy8gICAgICAgICAgICAgKTsKKy8vICAgICAg ICAgICAgIC8vIHNob3cgZmFpbGVkIG1lc3NhZ2UuCisvLyAgICAgICAgICAgICBzZXRNc2coZ2V0 dGV4dCgnRmFpbGVkIHRvIHJldHJpZXZlIGRhdGEgZnJvbSB0aGUgc2VydmVyLicpKTsKKy8vICAg ICAgICAgICB9KTsKKy8vICAgICAgIH0gZWxzZSB7CisvLyAgICAgICAgIHNldE1zZyhtZXNzYWdl KTsKKy8vICAgICAgIH0KKy8vICAgICB9CisvLyAgICAgaWYgKG1lc3NhZ2UgIT0gJycpIHsKKy8v ICAgICAgIHNldE1zZyhtZXNzYWdlKTsKKy8vICAgICB9CisvLyAgIH0sIFtub2RlRGF0YSwgdmFs LCBkaWRdKTsKKworLy8gICAvLyB1c2VFZmZlY3QoKCkgPT4geworLy8gICAvLyAgIGlmIChub2Rl RGF0YSAmJiBub2RlRGF0YS5fdHlwZSkgeworLy8gICAvLyAgICAgdmFyIHRyZWVIaWVyYXJjaHkg PSBwZ0Jyb3dzZXIudHJlZS5nZXRUcmVlTm9kZUhpZXJhcmNoeShpdGVtKTsKKy8vICAgLy8gICAg IC8vIHVybCA9IE5vZGVzRGFzaGJvYXJkLnVybChub2RlRGF0YSwgaXRlbSwgdHJlZUhpZXJhcmNo eSk7CisvLyAgIC8vICAgICBsZXQgdXJsID0gdXJsX2ZvcigiZGFzaGJvYXJkLmluZGV4IiksCisv LyAgIC8vICAgICAgIGRhc2hib2FyZEFjdGl2aXR5VXJsID0gdXJsX2ZvcigiZGFzaGJvYXJkLmFj dGl2aXR5IiksCisvLyAgIC8vICAgICAgIGRhc2hib2FyZExvY2tVUkwgPSB1cmxfZm9yKCJkYXNo Ym9hcmQubG9ja3MiKSwKKy8vICAgLy8gICAgICAgZGFzaGJvYXJkUHJlcGFyZWQgPSB1cmxfZm9y KCJkYXNoYm9hcmQucHJlcGFyZWQiKTsKKworLy8gICAvLyAgICAgY29uc29sZS5sb2coZGFzaGJv YXJkQWN0aXZpdHlVcmwsIGRhc2hib2FyZExvY2tVUkwsIGRhc2hib2FyZFByZXBhcmVkKTsKKwor Ly8gICAvLyAgICAgaWYgKHRydWUpIHsKKy8vICAgLy8gICAgICAgdmFyIGRhc2hib2FyZFZpc2li bGUgPSB0cnVlLAorLy8gICAvLyAgICAgICAgIGNhbmNlbF9xdWVyeV91cmwgPSAiIiwKKy8vICAg Ly8gICAgICAgICB0ZXJtaW5hdGVfc2Vzc2lvbl91cmwgPSAiIiwKKy8vICAgLy8gICAgICAgICBp c19zdXBlcl91c2VyID0gZmFsc2UsCisvLyAgIC8vICAgICAgICAgY3VycmVudF91c2VyLAorLy8g ICAvLyAgICAgICAgIG1haW50ZW5hbmNlX2RhdGFiYXNlLAorLy8gICAvLyAgICAgICAgIGlzX3Nl cnZlcl9kYXNoYm9hcmQgPSBmYWxzZSwKKy8vICAgLy8gICAgICAgICBpc19kYXRhYmFzZV9kYXNo Ym9hcmQgPSBmYWxzZSwKKy8vICAgLy8gICAgICAgICBjYW5fc2lnbmFsX2JhY2tlbmQgPSBmYWxz ZTsKKy8vICAgLy8gICAgICAgc2VsZi52ZXJzaW9uID0KKy8vICAgLy8gICAgICAgICAodHJlZUhp ZXJhcmNoeS5zZXJ2ZXIgJiYgdHJlZUhpZXJhcmNoeS5zZXJ2ZXIudmVyc2lvbikgfHwgMDsKKwor Ly8gICAvLyBjYW5jZWxfcXVlcnlfdXJsID0gdXJsICsgImNhbmNlbF9xdWVyeS8iOworLy8gICAv LyB0ZXJtaW5hdGVfc2Vzc2lvbl91cmwgPSB1cmwgKyAidGVybWluYXRlX3Nlc3Npb24vIjsKKwor Ly8gICAvLyAgICAgICAvLyBDaGVjayBpZiB1c2VyIGlzIHN1cGVyIHVzZXIKKy8vICAgLy8gICAg ICAgdmFyIHNlcnZlciA9IHRyZWVIaWVyYXJjaHlbInNlcnZlciJdOworLy8gICAvLyAgICAgICBt YWludGVuYW5jZV9kYXRhYmFzZSA9IChzZXJ2ZXIgJiYgc2VydmVyLmRiKSB8fCBudWxsOworLy8g ICAvLyAgICAgICBjYW5fc2lnbmFsX2JhY2tlbmQgPQorLy8gICAvLyAgICAgICAgIHNlcnZlciAm JiBzZXJ2ZXIudXNlciA/IHNlcnZlci51c2VyLmNhbl9zaWduYWxfYmFja2VuZCA6IGZhbHNlOwor CisvLyAgIC8vICAgICAgIGlmIChzZXJ2ZXIgJiYgc2VydmVyLnVzZXIgJiYgc2VydmVyLnVzZXIu aXNfc3VwZXJ1c2VyKSB7CisvLyAgIC8vICAgICAgICAgaXNfc3VwZXJfdXNlciA9IHRydWU7Cisv LyAgIC8vICAgICAgIH0gZWxzZSB7CisvLyAgIC8vICAgICAgICAgaXNfc3VwZXJfdXNlciA9IGZh bHNlOworLy8gICAvLyAgICAgICAgIC8vIFNldCBjdXJyZW50IHVzZXIKKy8vICAgLy8gICAgICAg ICBjdXJyZW50X3VzZXIgPSBzZXJ2ZXIgJiYgc2VydmVyLnVzZXIgPyBzZXJ2ZXIudXNlci5uYW1l IDogbnVsbDsKKy8vICAgLy8gICAgICAgfQorCisvLyAgIC8vICAgICAgIGlmICgiZGF0YWJhc2Ui IGluIHRyZWVIaWVyYXJjaHkpIHsKKy8vICAgLy8gICAgICAgICBzZWxmLnNpZCA9IHRyZWVIaWVy YXJjaHkuc2VydmVyLl9pZDsKKy8vICAgLy8gICAgICAgICBzZWxmLmRpZCA9IHRyZWVIaWVyYXJj aHkuZGF0YWJhc2UuX2lkOworLy8gICAvLyAgICAgICAgIGlzX3NlcnZlcl9kYXNoYm9hcmQgPSBm YWxzZTsKKy8vICAgLy8gICAgICAgICBpc19kYXRhYmFzZV9kYXNoYm9hcmQgPSB0cnVlOworLy8g ICAvLyAgICAgICAgIHVybCArPSBzZWxmLnNpZCArICIvIiArIHNlbGYuZGlkOworLy8gICAvLyAg ICAgICAgIGNhbmNlbF9xdWVyeV91cmwgKz0gc2VsZi5zaWQgKyAiLyIgKyBzZWxmLmRpZCArICIv IjsKKy8vICAgLy8gICAgICAgICB0ZXJtaW5hdGVfc2Vzc2lvbl91cmwgKz0gc2VsZi5zaWQgKyAi LyIgKyBzZWxmLmRpZCArICIvIjsKKy8vICAgLy8gICAgICAgfSBlbHNlIGlmICgic2VydmVyIiBp biB0cmVlSGllcmFyY2h5KSB7CisvLyAgIC8vICAgICAgICAgc2VsZi5zaWQgPSB0cmVlSGllcmFy Y2h5LnNlcnZlci5faWQ7CisvLyAgIC8vICAgICAgICAgc2VsZi5kaWQgPSAtMTsKKy8vICAgLy8g ICAgICAgICBpc19zZXJ2ZXJfZGFzaGJvYXJkID0gdHJ1ZTsKKy8vICAgLy8gICAgICAgICBpc19k YXRhYmFzZV9kYXNoYm9hcmQgPSBmYWxzZTsKKy8vICAgLy8gICAgICAgICB1cmwgKz0gc2VsZi5z aWQ7CisvLyAgIC8vICAgICAgICAgY2FuY2VsX3F1ZXJ5X3VybCArPSBzZWxmLnNpZCArICIvIjsK Ky8vICAgLy8gICAgICAgICB0ZXJtaW5hdGVfc2Vzc2lvbl91cmwgKz0gc2VsZi5zaWQgKyAiLyI7 CisvLyAgIC8vICAgICAgIH0gZWxzZSB7CisvLyAgIC8vICAgICAgICAgaXNfc2VydmVyX2Rhc2hi b2FyZCA9IGlzX2RhdGFiYXNlX2Rhc2hib2FyZCA9IGZhbHNlOworLy8gICAvLyAgICAgICB9Cisv LyAgIC8vICAgICB9IGVsc2UgeworLy8gICAvLyAgICAgICBpc19zZXJ2ZXJfZGFzaGJvYXJkID0g aXNfZGF0YWJhc2VfZGFzaGJvYXJkID0gZmFsc2U7CisvLyAgIC8vICAgICB9CisKKy8vICAgLy8g ICAgIHZhciBkYXNoYm9hcmRQYW5lbCA9IHBnQnJvd3Nlci5wYW5lbHNbImRhc2hib2FyZCJdLnBh bmVsOworLy8gICAvLyAgICAgaWYgKGRhc2hib2FyZFBhbmVsKSB7CisvLyAgIC8vICAgICAgIHZh ciBkaXYgPSBkYXNoYm9hcmRQYW5lbC5sYXlvdXQoKS5zY2VuZSgpLmZpbmQoIi5wZy1wYW5lbC1j b250ZW50Iik7CisKKy8vICAgLy8gICAgICAgaWYgKGRpdikgeworLy8gICAvLyAgICAgICAgIGlm IChub2RlRGF0YS5jb25uZWN0ZWQgfHwgXy5pc1VuZGVmaW5lZChub2RlRGF0YS5jb25uZWN0ZWQp KSB7CisvLyAgIC8vICAgICAgICAgICAvLyBBdm9pZCB1bm5lY2Vzc2FyeSByZWxvYWRzCisvLyAg IC8vICAgICAgICAgICBpZiAoCisvLyAgIC8vICAgICAgICAgICAgIHVybCAhPT0gJChkYXNoYm9h cmRQYW5lbCkuZGF0YSgiZGFzaGJvYXJkX3VybCIpIHx8CisvLyAgIC8vICAgICAgICAgICAgICh1 cmwgPT09ICQoZGFzaGJvYXJkUGFuZWwpLmRhdGEoImRhc2hib2FyZF91cmwiKSAmJgorLy8gICAv LyAgICAgICAgICAgICAgICQoZGFzaGJvYXJkUGFuZWwpLmRhdGEoInNlcnZlcl9zdGF0dXMiKSA9 PSBmYWxzZSkKKy8vICAgLy8gICAgICAgICAgICkgeworLy8gICAvLyAgICAgICAgICAgICBjaGFy dHNEb21PYmogJiYgY2hhcnRzRG9tT2JqLnVubW91bnQoKTsKKy8vICAgLy8gICAgICAgICAgICAg Y29uc3QgYXBpID0gZ2V0QXBpSW5zdGFuY2UoKTsKKy8vICAgLy8gICAgICAgICAgICAgLy8gJChk aXYpLmVtcHR5KCk7CisvLyAgIC8vICAgICAgICAgICAgIGNvbnNvbGUubG9nKHVybCk7CisKKy8v ICAgLy8gICAgICAgICAgICAgYXBpKHsKKy8vICAgLy8gICAgICAgICAgICAgICB1cmw6IHVybCwK Ky8vICAgLy8gICAgICAgICAgICAgICB0eXBlOiAiR0VUIiwKKy8vICAgLy8gICAgICAgICAgICAg ICBkYXRhVHlwZTogImh0bWwiLAorLy8gICAvLyAgICAgICAgICAgICB9KQorLy8gICAvLyAgICAg ICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChkYXRhKSB7CisvLyAgIC8vICAgICAgICAgICAgICAg ICBjb25zb2xlLmxvZygiZGF0YSIsIGRhdGEuZGF0YSk7CisvLyAgIC8vICAgICAgICAgICAgICAg ICAvLyAkKGRpdikuaHRtbChkYXRhKTsKKy8vICAgLy8gICAgICAgICAgICAgICAgIHNldGRhc2hE YXRhKGRhdGEuZGF0YSk7CisKKy8vICAgLy8gICAgICAgICAgICAgICAgIC8vIHNlbGYuaW5pdF9k YXNoYm9hcmQoKTsKKy8vICAgLy8gICAgICAgICAgICAgICB9KQorLy8gICAvLyAgICAgICAgICAg ICAgIC5jYXRjaChmdW5jdGlvbiAoZSkgeworLy8gICAvLyAgICAgICAgICAgICAgICAgTm90aWZ5 LmFsZXJ0KAorLy8gICAvLyAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KCJGYWlsZWQgdG8gcmV0 cmlldmUgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIuIiksCisvLyAgIC8vICAgICAgICAgICAgICAgICAg IGdldHRleHQoZS5tZXNzYWdlKQorLy8gICAvLyAgICAgICAgICAgICAgICAgKTsKKy8vICAgLy8g ICAgICAgICAgICAgICAgIC8vIHNob3cgZmFpbGVkIG1lc3NhZ2UuCisvLyAgIC8vICAgICAgICAg ICAgICAgICBzZXRNc2coZ2V0dGV4dCgiRmFpbGVkIHRvIHJldHJpZXZlIGRhdGEgZnJvbSB0aGUg c2VydmVyLiIpKTsKKy8vICAgLy8gICAgICAgICAgICAgICB9KTsKKy8vICAgLy8gICAgICAgICAg IH0KKy8vICAgLy8gICAgICAgICAgIC8vICQoZGl2KS5odG1sKAorLy8gICAvLyAgICAgICAgICAg Ly8gICAnPGRpdiBjbGFzcz0icGctcGFuZWwtbWVzc2FnZSIgcm9sZT0iYWxlcnQiPicgKworLy8g ICAvLyAgICAgICAgICAgLy8gICAgIGdldHRleHQoIkxvYWRpbmcgZGFzaGJvYXJkLi4uIikgKwor Ly8gICAvLyAgICAgICAgICAgLy8gICAgICI8L2Rpdj4iCisvLyAgIC8vICAgICAgICAgICAvLyAp OworLy8gICAvLyAgICAgICAgICAgLy8gICAvLyBhamF4SG9vaygpOworLy8gICAvLyAgICAgICAg ICAgLy8gJChkYXNoYm9hcmRQYW5lbCkuZGF0YSgic2VydmVyX3N0YXR1cyIsIHRydWUpOworLy8g ICAvLyAgICAgICAgIH0KKy8vICAgLy8gICAgICAgfSBlbHNlIHsKKy8vICAgLy8gICAgICAgICBj aGFydHNEb21PYmogJiYgY2hhcnRzRG9tT2JqLnVubW91bnQoKTsKKy8vICAgLy8gICAgICAgICAk KGRpdikuaHRtbCgKKy8vICAgLy8gICAgICAgICAgICc8ZGl2IGNsYXNzPSJwZy1wYW5lbC1tZXNz YWdlIiByb2xlPSJhbGVydCI+JyArCisvLyAgIC8vICAgICAgICAgICAgIGdldHRleHQoCisvLyAg IC8vICAgICAgICAgICAgICAgIlBsZWFzZSBjb25uZWN0IHRvIHRoZSBzZWxlY3RlZCBzZXJ2ZXIg dG8gdmlldyB0aGUgZGFzaGJvYXJkLiIKKy8vICAgLy8gICAgICAgICAgICAgKSArCisvLyAgIC8v ICAgICAgICAgICAgICI8L2Rpdj4iCisvLyAgIC8vICAgICAgICAgKTsKKy8vICAgLy8gICAgICAg ICAkKGRhc2hib2FyZFBhbmVsKS5kYXRhKCJzZXJ2ZXJfc3RhdHVzIiwgZmFsc2UpOworLy8gICAv LyAgICAgICB9CisvLyAgIC8vICAgICAgIC8vIENhY2hlIHRoZSBjdXJyZW50IElEcyBmb3IgbmV4 dCB0aW1lCisvLyAgIC8vICAgICAgICQoZGFzaGJvYXJkUGFuZWwpLmRhdGEoImRhc2hib2FyZF91 cmwiLCB1cmwpOworLy8gICAvLyAgICAgfQorLy8gICAvLyAgIH0KKy8vICAgLy8gfSk7CisKKy8v ICAgcmV0dXJuICgKKy8vICAgICA8PgorLy8gICAgICAge3NpZCAmJiBwcm9wcy5zZXJ2ZXJDb25u ZWN0ZWQgPyAoCisvLyAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtjbGFzc2VzLmVtcHR5UGFuZWx9 PgorLy8gICAgICAgICAgIDxHcmFwaHMKKy8vICAgICAgICAgICAgIHByZWZlcmVuY2VzPXtwcmVm ZXJlbmNlc30KKy8vICAgICAgICAgICAgIHNpZD17c2lkfQorLy8gICAgICAgICAgICAgZGlkPXtk aWR9CisvLyAgICAgICAgICAgICBwYWdlVmlzaWJsZT17dHJ1ZX0KKy8vICAgICAgICAgICA+PC9H cmFwaHM+CisvLyAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e2NsYXNzZXMudGFibGVDZWxsfT4K Ky8vICAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPSJjYXJkLWhlYWRlciIgdGl0bGU9e2dldHRl eHQoJ1NlcnZlciBhY3Rpdml0eScpfT4KKy8vICAgICAgICAgICAgICAge2dldHRleHQoJ1NlcnZl ciBhY3Rpdml0eScpfXsnICd9CisvLyAgICAgICAgICAgICA8L0JveD4KKy8vICAgICAgICAgICAg IHsvKiA8Qm94IGNsYXNzTmFtZT17Y2xhc3Nlcy50YWJsZUNlbGx9PiAqL30KKy8vICAgICAgICAg ICAgIDxUYWJzCisvLyAgICAgICAgICAgICAgIHZhbHVlPXt2YWx9CisvLyAgICAgICAgICAgICAg IG9uQ2hhbmdlPXt0YWJDaGFuZ2VkfQorLy8gICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNz ZXMuc2VhcmNoSW5wdXR9CisvLyAgICAgICAgICAgICA+CisvLyAgICAgICAgICAgICAgIHt0YWIu bWFwKCh0YWJWYWx1ZSwgaSkgPT4geworLy8gICAgICAgICAgICAgICAgIHJldHVybiA8VGFiIGtl eT17dGFiVmFsdWV9IGxhYmVsPXt0YWJWYWx1ZX0gLz47CisvLyAgICAgICAgICAgICAgIH0pfQor Ly8gICAgICAgICAgICAgPC9UYWJzPgorLy8gICAgICAgICAgICAgey8qIDwvQm94PiAqL30KKy8v ICAgICAgICAgICAgIHsvKiA8Qm94IGNsYXNzTmFtZT17Y2xhc3Nlcy5jb21wb25lbnR9PiAqL30K Ky8vICAgICAgICAgICAgIDxQZ1RhYmxlCisvLyAgICAgICAgICAgICAgIC8vIGNsYXNzTmFtZT17 Y2xhc3Nlcy5hdXRvUmVzaXplcn1zZWFyY2hUZXh0PXtzZWFyY2hWYWx9CisvLyAgICAgICAgICAg ICAgIC8vIHR5cGU9eyJwYW5lbCJ9CisvLyAgICAgICAgICAgICAgIC8vIGNsYXNzTmFtZT17Y2xh c3Nlcy5hdXRvUmVzaXplcn0KKy8vICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnRh YmxlfQorLy8gICAgICAgICAgICAgICBhY2Nlc3NQYXRoPXtbZWRpdFJvdy5pZF19CisvLyAgICAg ICAgICAgICAgIGNvbHVtbnM9eworLy8gICAgICAgICAgICAgICAgIHZhbCA9PT0gMAorLy8gICAg ICAgICAgICAgICAgICAgPyBhY3Rpdml0eUNvbHVtbnMKKy8vICAgICAgICAgICAgICAgICAgIDog dmFsID09PSAxCisvLyAgICAgICAgICAgICAgICAgICAgID8gZGF0YWJhc2VMb2Nrc0NvbHVtbnMK Ky8vICAgICAgICAgICAgICAgICAgICAgOiB2YWwgPT0gMgorLy8gICAgICAgICAgICAgICAgICAg ICAgID8gZGF0YWJhc2VQcmVwYXJlZENvbHVtbnMKKy8vICAgICAgICAgICAgICAgICAgICAgICA6 IHNlcnZlckNvbmZpZ0NvbHVtbnMKKy8vICAgICAgICAgICAgICAgfQorLy8gICAgICAgICAgICAg ICBkYXRhPXtkYXNoRGF0YX0KKy8vICAgICAgICAgICAgICAgLy8gY2FuRWRpdD17Y2FuRWRpdH0K Ky8vICAgICAgICAgICAgICAgc2NoZW1hPXtzY2hlbWF9CisvLyAgICAgICAgICAgICAgIC8vIHJv d0Q9e2VkaXRSb3d9CisvLyAgICAgICAgICAgICA+PC9QZ1RhYmxlPgorLy8gICAgICAgICAgICAg ey8qIDwvQm94PiAqL30KKy8vICAgICAgICAgICA8L0JveD4KKy8vICAgICAgICAgPC9Cb3g+Cisv LyAgICAgICApIDogc2lkICYmICFwcm9wcy5zZXJ2ZXJDb25uZWN0ZWQgPyAoCisvLyAgICAgICAg IDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmVtcHR5UGFuZWx9PgorLy8gICAgICAgICAgIDxkaXYg Y2xhc3NOYW1lPXtjbGFzc2VzLnBhbmVsSWNvbn0+CisvLyAgICAgICAgICAgICA8aSBjbGFzc05h bWU9ImZhIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZSI+PC9pPgorLy8gICAgICAgICAgICAgPHNwYW4g Y2xhc3NOYW1lPXtjbGFzc2VzLnBhbmVsTWVzc2FnZX0+e2dldHRleHQobXNnKX08L3NwYW4+Cisv LyAgICAgICAgICAgPC9kaXY+CisvLyAgICAgICAgIDwvZGl2PgorLy8gICAgICAgKSA6ICgKKy8v ICAgICAgICAgPFdlbGNvbWVEYXNoYm9hcmQKKy8vICAgICAgICAgICBwZ0Jyb3dzZXI9e3BnQnJv d3Nlcn0KKy8vICAgICAgICAgICBub2RlPXtub2RlfQorLy8gICAgICAgICAgIGl0ZW1EYXRhPXtu b2RlRGF0YX0KKy8vICAgICAgICAgICBpdGVtPXtpdGVtfQorLy8gICAgICAgICAgIHNpZD17c2lk fQorLy8gICAgICAgICAgIGRpZD17ZGlkfQorLy8gICAgICAgICAvPgorLy8gICAgICAgKX0KKy8v ICAgICA8Lz4KKy8vICAgKTsKKy8vIH0KKworCisvLyBleHBvcnQgZnVuY3Rpb24gQ2hhcnRDb250 YWluZXIocHJvcHMpIHsKKy8vICAgcmV0dXJuICgKKy8vICAgICA8ZGl2IGNsYXNzTmFtZT0iY2Fy ZCBkYXNoYm9hcmQtZ3JhcGgiIHJvbGU9Im9iamVjdC1kb2N1bWVudCIgdGFiSW5kZXg9IjAiIGFy aWEtbGFiZWxsZWRieT17cHJvcHMuaWR9PgorLy8gICAgICAgPGRpdiBjbGFzc05hbWU9ImNhcmQt aGVhZGVyIj4KKy8vICAgICAgICAgPGRpdiBjbGFzc05hbWU9ImQtZmxleCI+CisvLyAgICAgICAg ICAgPGRpdiBpZD17cHJvcHMuaWR9Pntwcm9wcy50aXRsZX08L2Rpdj4KKy8vICAgICAgICAgICA8 ZGl2IGNsYXNzTmFtZT0ibWwtYXV0byBteS1hdXRvIGxlZ2VuZCIgcmVmPXtwcm9wcy5sZWdlbmRS ZWZ9PjwvZGl2PgorLy8gICAgICAgICA8L2Rpdj4KKy8vICAgICAgIDwvZGl2PgorLy8gICAgICAg PGRpdiBjbGFzc05hbWU9ImNhcmQtYm9keSBkYXNoYm9hcmQtZ3JhcGgtYm9keSI+CisvLyAgICAg ICAgIDxkaXYgY2xhc3NOYW1lPXsnY2hhcnQtd3JhcHBlciAnICsgKHByb3BzLmVycm9yTXNnID8g J2Qtbm9uZSc6ICcnKX0+CisvLyAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufQorLy8gICAgICAg ICA8L2Rpdj4KKy8vICAgICAgICAgPENoYXJ0RXJyb3IgbWVzc2FnZT17cHJvcHMuZXJyb3JNc2d9 IC8+CisvLyAgICAgICA8L2Rpdj4KKy8vICAgICA8L2Rpdj4KKy8vICAgKTsKKy8vIH0KKworLy8g Q2hhcnRDb250YWluZXIucHJvcFR5cGVzID0geworLy8gICBpZDogUHJvcFR5cGVzLnN0cmluZy5p c1JlcXVpcmVkLAorLy8gICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLAorLy8g ICBsZWdlbmRSZWY6IFByb3BUeXBlcy5vbmVPZlR5cGUoWworLy8gICAgIFByb3BUeXBlcy5mdW5j LAorLy8gICAgIFByb3BUeXBlcy5zaGFwZSh7IGN1cnJlbnQ6IFByb3BUeXBlcy5hbnkgfSksCisv LyAgIF0pLmlzUmVxdWlyZWQsCisvLyAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVp cmVkLAorLy8gICBlcnJvck1zZzogUHJvcFR5cGVzLnN0cmluZywKKy8vIH07CisKKy8vIGV4cG9y dCBmdW5jdGlvbiBDaGFydEVycm9yKHByb3BzKSB7CisvLyAgIGlmKHByb3BzLm1lc3NhZ2UgPT09 IG51bGwpIHsKKy8vICAgICByZXR1cm4gIDw+PC8+OworLy8gICB9CisvLyAgIHJldHVybiAoCisv LyAgICAgPGRpdiBjbGFzc05hbWU9InBnLXBhbmVsLWVycm9yIHBnLXBhbmVsLW1lc3NhZ2UiIHJv bGU9ImFsZXJ0Ij57cHJvcHMubWVzc2FnZX08L2Rpdj4KKy8vICAgKTsKKy8vIH0KKworLy8gQ2hh cnRFcnJvci5wcm9wVHlwZXMgPSB7CisvLyAgIG1lc3NhZ2U6IFByb3BUeXBlcy5zdHJpbmcsCisv LyB9OworCisvLyBleHBvcnQgZnVuY3Rpb24gRGFzaGJvYXJkUm93KHtjaGlsZHJlbn0pIHsKKy8v ICAgcmV0dXJuICgKKy8vICAgICA8ZGl2IGNsYXNzTmFtZT0icm93IGRhc2hib2FyZC1yb3ciPntj aGlsZHJlbn08L2Rpdj4KKy8vICAgKTsKKy8vIH0KKy8vIERhc2hib2FyZFJvdy5wcm9wVHlwZXMg PSB7CisvLyAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLAorLy8gfTsKKwor Ly8gZXhwb3J0IGZ1bmN0aW9uIERhc2hib2FyZFJvd0NvbCh7YnJlYWtwb2ludCwgcGFydHMsIGNo aWxkcmVufSkgeworLy8gICByZXR1cm4gKAorLy8gICAgIDxkaXYgY2xhc3NOYW1lPXtgY29sLSR7 YnJlYWtwb2ludH0tJHtwYXJ0c31gfT57Y2hpbGRyZW59PC9kaXY+CisvLyAgICk7CisvLyB9CisK Ky8vIERhc2hib2FyZFJvd0NvbC5wcm9wVHlwZXMgPSB7CisvLyAgIGJyZWFrcG9pbnQ6IFByb3BU eXBlcy5vbmVPZihbJ3hzJywgJ3NtJywgJ21kJywgJ2xnJywgJ3hsJ10pLmlzUmVxdWlyZWQsCisv LyAgIHBhcnRzOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsCisvLyAgIGNoaWxkcmVuOiBQ cm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLAorLy8gfTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Rhc2hib2FyZC9zdGF0aWMvanMvZGFzaGJvYXJkX2NvbXBvbmVudHMuanN4IGIvd2ViL3BnYWRt aW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9kYXNoYm9hcmRfY29tcG9uZW50cy5qc3gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3MjNkZDI0Mi4uMDAwMDAwMDAwCi0tLSBhL3dlYi9wZ2Fk bWluL2Rhc2hib2FyZC9zdGF0aWMvanMvZGFzaGJvYXJkX2NvbXBvbmVudHMuanN4CisrKyAvZGV2 L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIHBnQWRtaW4gNCAtIFBvc3RncmVT UUwgVG9vbHMKLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBE ZXZlbG9wbWVudCBUZWFtCi0vLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQ b3N0Z3JlU1FMIExpY2VuY2UKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JzsK LWltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7Ci0KLWV4cG9ydCBmdW5jdGlvbiBD aGFydENvbnRhaW5lcihwcm9wcykgewotICByZXR1cm4gKAotICAgIDxkaXYgY2xhc3NOYW1lPSJj YXJkIGRhc2hib2FyZC1ncmFwaCIgcm9sZT0ib2JqZWN0LWRvY3VtZW50IiB0YWJJbmRleD0iMCIg YXJpYS1sYWJlbGxlZGJ5PXtwcm9wcy5pZH0+Ci0gICAgICA8ZGl2IGNsYXNzTmFtZT0iY2FyZC1o ZWFkZXIiPgotICAgICAgICA8ZGl2IGNsYXNzTmFtZT0iZC1mbGV4Ij4KLSAgICAgICAgICA8ZGl2 IGlkPXtwcm9wcy5pZH0+e3Byb3BzLnRpdGxlfTwvZGl2PgotICAgICAgICAgIDxkaXYgY2xhc3NO YW1lPSJtbC1hdXRvIG15LWF1dG8gbGVnZW5kIiByZWY9e3Byb3BzLmxlZ2VuZFJlZn0+PC9kaXY+ Ci0gICAgICAgIDwvZGl2PgotICAgICAgPC9kaXY+Ci0gICAgICA8ZGl2IGNsYXNzTmFtZT0iY2Fy ZC1ib2R5IGRhc2hib2FyZC1ncmFwaC1ib2R5Ij4KLSAgICAgICAgPGRpdiBjbGFzc05hbWU9eydj aGFydC13cmFwcGVyICcgKyAocHJvcHMuZXJyb3JNc2cgPyAnZC1ub25lJzogJycpfT4KLSAgICAg ICAgICB7cHJvcHMuY2hpbGRyZW59Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8Q2hhcnRFcnJv ciBtZXNzYWdlPXtwcm9wcy5lcnJvck1zZ30gLz4KLSAgICAgIDwvZGl2PgotICAgIDwvZGl2Pgot ICApOwotfQotCi1DaGFydENvbnRhaW5lci5wcm9wVHlwZXMgPSB7Ci0gIGlkOiBQcm9wVHlwZXMu c3RyaW5nLmlzUmVxdWlyZWQsCi0gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQs Ci0gIGxlZ2VuZFJlZjogUHJvcFR5cGVzLm9uZU9mVHlwZShbCi0gICAgUHJvcFR5cGVzLmZ1bmMs Ci0gICAgUHJvcFR5cGVzLnNoYXBlKHsgY3VycmVudDogUHJvcFR5cGVzLmFueSB9KSwKLSAgXSku aXNSZXF1aXJlZCwKLSAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWQsCi0gIGVy cm9yTXNnOiBQcm9wVHlwZXMuc3RyaW5nLAotfTsKLQotZXhwb3J0IGZ1bmN0aW9uIENoYXJ0RXJy b3IocHJvcHMpIHsKLSAgaWYocHJvcHMubWVzc2FnZSA9PT0gbnVsbCkgewotICAgIHJldHVybiAg PD48Lz47Ci0gIH0KLSAgcmV0dXJuICgKLSAgICA8ZGl2IGNsYXNzTmFtZT0icGctcGFuZWwtZXJy b3IgcGctcGFuZWwtbWVzc2FnZSIgcm9sZT0iYWxlcnQiPntwcm9wcy5tZXNzYWdlfTwvZGl2Pgot ICApOwotfQotCi1DaGFydEVycm9yLnByb3BUeXBlcyA9IHsKLSAgbWVzc2FnZTogUHJvcFR5cGVz LnN0cmluZywKLX07Ci0KLWV4cG9ydCBmdW5jdGlvbiBEYXNoYm9hcmRSb3coe2NoaWxkcmVufSkg ewotICByZXR1cm4gKAotICAgIDxkaXYgY2xhc3NOYW1lPSJyb3cgZGFzaGJvYXJkLXJvdyI+e2No aWxkcmVufTwvZGl2PgotICApOwotfQotRGFzaGJvYXJkUm93LnByb3BUeXBlcyA9IHsKLSAgY2hp bGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWQsCi19OwotCi1leHBvcnQgZnVuY3Rpb24g RGFzaGJvYXJkUm93Q29sKHticmVha3BvaW50LCBwYXJ0cywgY2hpbGRyZW59KSB7Ci0gIHJldHVy biAoCi0gICAgPGRpdiBjbGFzc05hbWU9e2Bjb2wtJHticmVha3BvaW50fS0ke3BhcnRzfWB9Pntj aGlsZHJlbn08L2Rpdj4KLSAgKTsKLX0KLQotRGFzaGJvYXJkUm93Q29sLnByb3BUeXBlcyA9IHsK LSAgYnJlYWtwb2ludDogUHJvcFR5cGVzLm9uZU9mKFsneHMnLCAnc20nLCAnbWQnLCAnbGcnLCAn eGwnXSkuaXNSZXF1aXJlZCwKLSAgcGFydHM6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCwK LSAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWQsCi19OwpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9kYXNoYm9hcmRfcG9uZW50cy5qc3ggYi93 ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pzL2Rhc2hib2FyZF9wb25lbnRzLmpzeApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjNkNDIzNzkwMQotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0aWMvanMvZGFzaGJvYXJkX3BvbmVudHMu anN4CkBAIC0wLDAgKzEsNzQgQEAKKy8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIC8vCisvLyAvLyBwZ0FkbWluIDQgLSBQ b3N0Z3JlU1FMIFRvb2xzCisvLyAvLworLy8gLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMiwg VGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLyAvLworLy8gLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIGlt cG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7CisvLyBpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3At dHlwZXMnOworCisvLyBleHBvcnQgZnVuY3Rpb24gQ2hhcnRDb250YWluZXIocHJvcHMpIHsKKy8v ICAgcmV0dXJuICgKKy8vICAgICA8ZGl2IGNsYXNzTmFtZT0iY2FyZCBkYXNoYm9hcmQtZ3JhcGgi IHJvbGU9Im9iamVjdC1kb2N1bWVudCIgdGFiSW5kZXg9IjAiIGFyaWEtbGFiZWxsZWRieT17cHJv cHMuaWR9PgorLy8gICAgICAgPGRpdiBjbGFzc05hbWU9ImNhcmQtaGVhZGVyIj4KKy8vICAgICAg ICAgPGRpdiBjbGFzc05hbWU9ImQtZmxleCI+CisvLyAgICAgICAgICAgPGRpdiBpZD17cHJvcHMu aWR9Pntwcm9wcy50aXRsZX08L2Rpdj4KKy8vICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ibWwt YXV0byBteS1hdXRvIGxlZ2VuZCIgcmVmPXtwcm9wcy5sZWdlbmRSZWZ9PjwvZGl2PgorLy8gICAg ICAgICA8L2Rpdj4KKy8vICAgICAgIDwvZGl2PgorLy8gICAgICAgPGRpdiBjbGFzc05hbWU9ImNh cmQtYm9keSBkYXNoYm9hcmQtZ3JhcGgtYm9keSI+CisvLyAgICAgICAgIDxkaXYgY2xhc3NOYW1l PXsnY2hhcnQtd3JhcHBlciAnICsgKHByb3BzLmVycm9yTXNnID8gJ2Qtbm9uZSc6ICcnKX0+Cisv LyAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufQorLy8gICAgICAgICA8L2Rpdj4KKy8vICAgICAg ICAgPENoYXJ0RXJyb3IgbWVzc2FnZT17cHJvcHMuZXJyb3JNc2d9IC8+CisvLyAgICAgICA8L2Rp dj4KKy8vICAgICA8L2Rpdj4KKy8vICAgKTsKKy8vIH0KKworLy8gQ2hhcnRDb250YWluZXIucHJv cFR5cGVzID0geworLy8gICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLAorLy8gICB0 aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLAorLy8gICBsZWdlbmRSZWY6IFByb3BU eXBlcy5vbmVPZlR5cGUoWworLy8gICAgIFByb3BUeXBlcy5mdW5jLAorLy8gICAgIFByb3BUeXBl cy5zaGFwZSh7IGN1cnJlbnQ6IFByb3BUeXBlcy5hbnkgfSksCisvLyAgIF0pLmlzUmVxdWlyZWQs CisvLyAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLAorLy8gICBlcnJvck1z ZzogUHJvcFR5cGVzLnN0cmluZywKKy8vIH07CisKKy8vIGV4cG9ydCBmdW5jdGlvbiBDaGFydEVy cm9yKHByb3BzKSB7CisvLyAgIGlmKHByb3BzLm1lc3NhZ2UgPT09IG51bGwpIHsKKy8vICAgICBy ZXR1cm4gIDw+PC8+OworLy8gICB9CisvLyAgIHJldHVybiAoCisvLyAgICAgPGRpdiBjbGFzc05h bWU9InBnLXBhbmVsLWVycm9yIHBnLXBhbmVsLW1lc3NhZ2UiIHJvbGU9ImFsZXJ0Ij57cHJvcHMu bWVzc2FnZX08L2Rpdj4KKy8vICAgKTsKKy8vIH0KKworLy8gQ2hhcnRFcnJvci5wcm9wVHlwZXMg PSB7CisvLyAgIG1lc3NhZ2U6IFByb3BUeXBlcy5zdHJpbmcsCisvLyB9OworCisvLyBleHBvcnQg ZnVuY3Rpb24gRGFzaGJvYXJkUm93KHtjaGlsZHJlbn0pIHsKKy8vICAgcmV0dXJuICgKKy8vICAg ICA8ZGl2IGNsYXNzTmFtZT0icm93IGRhc2hib2FyZC1yb3ciPntjaGlsZHJlbn08L2Rpdj4KKy8v ICAgKTsKKy8vIH0KKy8vIERhc2hib2FyZFJvdy5wcm9wVHlwZXMgPSB7CisvLyAgIGNoaWxkcmVu OiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLAorLy8gfTsKKworLy8gZXhwb3J0IGZ1bmN0aW9u IERhc2hib2FyZFJvd0NvbCh7YnJlYWtwb2ludCwgcGFydHMsIGNoaWxkcmVufSkgeworLy8gICBy ZXR1cm4gKAorLy8gICAgIDxkaXYgY2xhc3NOYW1lPXtgY29sLSR7YnJlYWtwb2ludH0tJHtwYXJ0 c31gfT57Y2hpbGRyZW59PC9kaXY+CisvLyAgICk7CisvLyB9CisKKy8vIERhc2hib2FyZFJvd0Nv bC5wcm9wVHlwZXMgPSB7CisvLyAgIGJyZWFrcG9pbnQ6IFByb3BUeXBlcy5vbmVPZihbJ3hzJywg J3NtJywgJ21kJywgJ2xnJywgJ3hsJ10pLmlzUmVxdWlyZWQsCisvLyAgIHBhcnRzOiBQcm9wVHlw ZXMubnVtYmVyLmlzUmVxdWlyZWQsCisvLyAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZS5pc1Jl cXVpcmVkLAorLy8gfTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC90ZW1wbGF0 ZXMvZGFzaGJvYXJkL2RhdGFiYXNlX2Rhc2hib2FyZC5odG1sIGIvd2ViL3BnYWRtaW4vZGFzaGJv YXJkL3RlbXBsYXRlcy9kYXNoYm9hcmQvZGF0YWJhc2VfZGFzaGJvYXJkLmh0bWwKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0OGNlOTZhYi4uMDAwMDAwMDAwCi0tLSBhL3dlYi9wZ2Fk bWluL2Rhc2hib2FyZC90ZW1wbGF0ZXMvZGFzaGJvYXJkL2RhdGFiYXNlX2Rhc2hib2FyZC5odG1s CisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotPGRpdiBjbGFzcz0iY29udGFpbmVyLWZs dWlkIGRhc2hib2FyZC1jb250YWluZXIgbmVnYXRpdmUtc3BhY2UiPgotICAgIDxkaXYgaWQ9ImRh c2hib2FyZC1ncmFwaHMiPjwvZGl2PgotICAgIDxkaXYgaWQ9ImRhc2hib2FyZC1hY3Rpdml0eSIg Y2xhc3M9ImNhcmQgZGFzaGJvYXJkLXJvdyBkYXNoYm9hcmQtaGlkZGVuIj4KLSAgICAgICAgPGRp diBjbGFzcz0iY2FyZC1oZWFkZXIiPgotICAgICAgICAgICAgPHNwYW4gaWQ9ImRhc2hib2FyZC1h Y3Rpdml0eS1oZWFkZXIiPnt7IF8oJ1NlcnZlciBhY3Rpdml0eScpIH19PC9zcGFuPgotICAgICAg ICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1ib2R5Ij4KLSAgICAgICAgICAgIDxk aXYgY2xhc3M9InJvdyI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTkgY29s LTEyIHByLTAiPgotICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBuYXYtdGFicyIg cm9sZT0idGFibGlzdCIgYXJpYS1sYWJlbGxlZGJ5PSJkYXNoYm9hcmQtYWN0aXZpdHktaGVhZGVy Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibmF2LWl0ZW0iPgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJuYXYtbGluayBhY3RpdmUgc2hvdyIgaWQ9 InRhYl9wYW5lbF9kYXRhYmFzZV9hY3Rpdml0eV90YWIiIGhyZWY9IiN0YWJfcGFuZWxfZGF0YWJh c2VfYWN0aXZpdHkiIGFyaWEtY29udHJvbHM9InRhYl9kYXRhYmFzZV9hY3Rpdml0eSIKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT0idGFiIiBkYXRhLXRvZ2dsZT0idGFiIj57 eyBfKCdTZXNzaW9ucycpIH19PC9hPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KLSAg ICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibmF2LWl0ZW0iPgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJuYXYtbGluayIgaWQ9InRhYl9wYW5lbF9kYXRhYmFz ZV9sb2Nrc190YWIiIGhyZWY9IiN0YWJfcGFuZWxfZGF0YWJhc2VfbG9ja3MiIGFyaWEtY29udHJv bHM9InRhYl9kYXRhYmFzZV9sb2NrcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy b2xlPSJ0YWIiIGRhdGEtdG9nZ2xlPSJ0YWIiPnt7IF8oJ0xvY2tzJykgfX08L2E+Ci0gICAgICAg ICAgICAgICAgICAgICAgICA8L2xpPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNz PSJuYXYtaXRlbSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9Im5hdi1s aW5rIiBpZD0idGFiX3BhbmVsX2RhdGFiYXNlX3ByZXBhcmVkX3RhYiIgaHJlZj0iI3RhYl9wYW5l bF9kYXRhYmFzZV9wcmVwYXJlZCIgYXJpYS1jb250cm9scz0idGFiX2RhdGFiYXNlX3ByZXBhcmVk IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9InRhYiIgZGF0YS10b2dnbGU9 InRhYiI+e3sgXygnUHJlcGFyZWQgVHJhbnNhY3Rpb25zJykgfX08L2E+Ci0gICAgICAgICAgICAg ICAgICAgICAgICA8L2xpPgotICAgICAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAg ICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0zIGNvbC0xMiBw bC0wIHRleHQtcmlnaHQiPgotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZ0YWIt aW5saW5lLWNvbnRyb2xzIj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imlu cHV0LWdyb3VwIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1 dC1ncm91cC1wcmVwZW5kIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4g Y2xhc3M9ImlucHV0LWdyb3VwLXRleHQgZmEgZmEtc2VhcmNoIiBpZD0ibGFiZWxTZWFyY2giIGFy aWEtbGFiZWw9Int7IF8oJ1NlYXJjaCcpIH19Ij48L3NwYW4+Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9 InNlYXJjaCIgY2xhc3M9ImZvcm0tY29udHJvbCIgaWQ9InR4dEdyaWRTZWFyY2giIHBsYWNlaG9s ZGVyPSJ7eyBfKCdTZWFyY2gnKSB9fSIgYXJpYS1kZXNjcmliZWRieT0ibGFiZWxTZWFyY2giIGFy aWEtbGFiZWxsZWRieT0ibGFiZWxTZWFyY2giPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9k aXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG5fcmVmcmVzaCIgdHlw ZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5LWljb24gYnRuLW5hdnRhYi1pbmxpbmUi IHRpdGxlPSJ7eyBfKCdSZWZyZXNoJykgfX0iIGFyaWEtbGFiZWw9Int7IF8oJ1JlZnJlc2gnKSB9 fSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZhIGZhLXN5bmMt YWx0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPgotICAgICAgICAgICAgICAgICAgICAgICAg PC9idXR0b24+Ci0gICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDwv ZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8IS0tIE5hdiB0YWJzIC0tPgot Ci0KLSAgICAgICAgICAgIDwhLS0gVGFiIHBhbmVzIC0tPgotICAgICAgICAgICAgPGRpdiBjbGFz cz0idGFiLWNvbnRlbnQiPgotICAgICAgICAgICAgICAgIDxkaXYgcm9sZT0idGFicGFuZWwiIGNs YXNzPSJ0YWItcGFuZSBuZWdhdGl2ZS1zcGFjZSBwLTIgYWN0aXZlIHNob3ciIGlkPSJ0YWJfcGFu ZWxfZGF0YWJhc2VfYWN0aXZpdHkiIGFyaWEtbGFiZWxsZWRieT0idGFiX3BhbmVsX2RhdGFiYXNl X2FjdGl2aXR5X3RhYiI+Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRhdGFiYXNlX2Fj dGl2aXR5IiBjbGFzcz0iZ3JpZC1jb250YWluZXIiPjwvZGl2PgotICAgICAgICAgICAgICAgIDwv ZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgcm9sZT0idGFicGFuZWwiIGNsYXNzPSJ0YWItcGFu ZSBuZWdhdGl2ZS1zcGFjZSBwLTIiIGlkPSJ0YWJfcGFuZWxfZGF0YWJhc2VfbG9ja3MiIGFyaWEt bGFiZWxsZWRieT0idGFiX3BhbmVsX2RhdGFiYXNlX2xvY2tzX3RhYiI+Ci0gICAgICAgICAgICAg ICAgICAgIDxkaXYgaWQ9ImRhdGFiYXNlX2xvY2tzIiBjbGFzcz0iZ3JpZC1jb250YWluZXIiPjwv ZGl2PgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgcm9sZT0i dGFicGFuZWwiIGNsYXNzPSJ0YWItcGFuZSBuZWdhdGl2ZS1zcGFjZSBwLTIiIGlkPSJ0YWJfcGFu ZWxfZGF0YWJhc2VfcHJlcGFyZWQiIGFyaWEtbGFiZWxsZWRieT0idGFiX3BhbmVsX2RhdGFiYXNl X3ByZXBhcmVkX3RhYiI+Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRhdGFiYXNlX3By ZXBhcmVkIiBjbGFzcz0iZ3JpZC1jb250YWluZXIiPjwvZGl2PgotICAgICAgICAgICAgICAgIDwv ZGl2PgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2PgotICAg IDxkaXYgaWQ9ImRhc2hib2FyZC1ub25lLXNob3ciIGNsYXNzPSJhbGVydCBhbGVydC1pbmZvIHBn LXBhbmVsLW1lc3NhZ2UgZGFzaGJvYXJkLWhpZGRlbiIgcm9sZT0iYWxlcnQiPgotICAgICAgICB7 eyBfKCdBbGwgRGFzaGJvYXJkIGVsZW1lbnRzIGFyZSBjdXJyZW50bHkgZGlzYWJsZWQuJykgfX0K LSAgICA8L2Rpdj4KLTwvZGl2PgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3Rl bXBsYXRlcy9kYXNoYm9hcmQvc2VydmVyX2Rhc2hib2FyZC5odG1sIGIvd2ViL3BnYWRtaW4vZGFz aGJvYXJkL3RlbXBsYXRlcy9kYXNoYm9hcmQvc2VydmVyX2Rhc2hib2FyZC5odG1sCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzRhMWUyMDYuLjAwMDAwMDAwMAotLS0gYS93ZWIvcGdh ZG1pbi9kYXNoYm9hcmQvdGVtcGxhdGVzL2Rhc2hib2FyZC9zZXJ2ZXJfZGFzaGJvYXJkLmh0bWwK KysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi08ZGl2IGNsYXNzPSJjb250YWluZXItZmx1 aWQgZGFzaGJvYXJkLWNvbnRhaW5lciBuZWdhdGl2ZS1zcGFjZSI+Ci0gICAgPGRpdiBpZD0iZGFz aGJvYXJkLWdyYXBocyI+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBpZD0iZGFzaGJvYXJkLWFjdGl2 aXR5IiBjbGFzcz0iY2FyZCBkYXNoYm9hcmQtcm93IGRhc2hib2FyZC1oaWRkZW4iPgotICAgICAg ICA8ZGl2IGNsYXNzPSJjYXJkLWhlYWRlciI+Ci0gICAgICAgICAgICA8c3BhbiBpZD0ic2VydmVy LWFjdGl2aXR5LWhlYWRlciI+e3sgXygnU2VydmVyIGFjdGl2aXR5JykgfX08L3NwYW4+Ci0gICAg ICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWJvZHkiPgotICAgICAgICAgICAg PGRpdiBjbGFzcz0icm93Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtOSBj b2wtMTIgcHItMCI+Ci0gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IG5hdi10YWJz IiByb2xlPSJ0YWJsaXN0IiBhcmlhLWxhYmVsbGVkYnk9InNlcnZlci1hY3Rpdml0eS1oZWFkZXIi PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJuYXYtaXRlbSI+Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9Im5hdi1saW5rIGFjdGl2ZSBzaG93IiBpZD0i dGFiX3BhbmVsX3NlcnZlcl9hY3Rpdml0eV90YWIiIGhyZWY9IiN0YWJfcGFuZWxfc2VydmVyX2Fj dGl2aXR5IiBhcmlhLWNvbnRyb2xzPSJ0YWJfc2VydmVyX2FjdGl2aXR5IgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByb2xlPSJ0YWIiIGRhdGEtdG9nZ2xlPSJ0YWIiPnt7XygnU2Vz c2lvbnMnKSB9fTwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+Ci0gICAgICAgICAg ICAgICAgICAgICAgICA8bGkgY2xhc3M9Im5hdi1pdGVtIj4KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8YSBjbGFzcz0ibmF2LWxpbmsiIGlkPSJ0YWJfcGFuZWxfc2VydmVyX2xvY2tzX3Rh YiIgaHJlZj0iI3RhYl9wYW5lbF9zZXJ2ZXJfbG9ja3MiIGFyaWEtY29udHJvbHM9InRhYl9zZXJ2 ZXJfbG9ja3MiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9InRhYiIgZGF0 YS10b2dnbGU9InRhYiI+e3sgXygnTG9ja3MnKSB9fTwvYT4KLSAgICAgICAgICAgICAgICAgICAg ICAgIDwvbGk+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Im5hdi1pdGVtIj4K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0ibmF2LWxpbmsiIGlkPSJ0YWJf cGFuZWxfc2VydmVyX3ByZXBhcmVkX3RhYiIgaHJlZj0iI3RhYl9wYW5lbF9zZXJ2ZXJfcHJlcGFy ZWQiIGFyaWEtY29udHJvbHM9InRhYl9zZXJ2ZXJfcHJlcGFyZWQiCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJvbGU9InRhYiIgZGF0YS10b2dnbGU9InRhYiI+e3sgXygnUHJlcGFy ZWQgVHJhbnNhY3Rpb25zJykgfX08L2E+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgot ICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJuYXYtaXRlbSI+Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9Im5hdi1saW5rIiBpZD0idGFiX3BhbmVsX3NlcnZl cl9jb25maWdfdGFiIiBocmVmPSIjdGFiX3BhbmVsX3NlcnZlcl9jb25maWciIGFyaWEtY29udHJv bHM9InRhYl9zZXJ2ZXJfY29uZmlnIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy b2xlPSJ0YWIiIGRhdGEtdG9nZ2xlPSJ0YWIiPnt7IF8oJ0NvbmZpZ3VyYXRpb24nKSB9fTwvYT4K LSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+Ci0gICAgICAgICAgICAgICAgICAgIDwvdWw+ Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29s LW1kLTMgY29sLTEyIHBsLTAgdGV4dC1yaWdodCI+Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYg Y2xhc3M9Im5hdnRhYi1pbmxpbmUtY29udHJvbHMiPgotICAgICAgICAgICAgICAgICAgICAgICAg PGRpdiBjbGFzcz0iaW5wdXQtZ3JvdXAiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk aXYgY2xhc3M9ImlucHV0LWdyb3VwLXByZXBlbmQiPgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8c3BhbiBjbGFzcz0iaW5wdXQtZ3JvdXAtdGV4dCBmYSBmYS1zZWFyY2giIGlkPSJs YWJlbFNlYXJjaCI+PC9zcGFuPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzZWFyY2giIGNsYXNzPSJm b3JtLWNvbnRyb2wiIGlkPSJ0eHRHcmlkU2VhcmNoIiBwbGFjZWhvbGRlcj0ie3sgXygnU2VhcmNo JykgfX0iIGFyaWEtbGFiZWw9Int7IF8oJ1NlYXJjaCcpIH19IiBhcmlhLWRlc2NyaWJlZGJ5PSJs YWJlbFNlYXJjaCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg ICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bl9yZWZyZXNoIiB0eXBlPSJidXR0b24iIGNsYXNz PSJidG4gYnRuLXByaW1hcnktaWNvbiBidG4tbmF2dGFiLWlubGluZSIgdGl0bGU9Int7IF8oJ1Jl ZnJlc2gnKSB9fSIgYXJpYS1sYWJlbD0ie3sgXygnUmVmcmVzaCcpIH19Ij4KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmEgZmEtc3luYy1hbHQiIGFyaWEtaGlkZGVu PSJ0cnVlIj48L3NwYW4+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KLSAgICAg ICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg ICA8L2Rpdj4KLSAgICAgICAgICAgIDwhLS0gTmF2IHRhYnMgLS0+Ci0KLQotICAgICAgICAgICAg PCEtLSBUYWIgcGFuZXMgLS0+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWItY29udGVudCI+ Ci0gICAgICAgICAgICAgICAgPGRpdiByb2xlPSJ0YWJwYW5lbCIgY2xhc3M9InRhYi1wYW5lIG5l Z2F0aXZlLXNwYWNlIHAtMiBhY3RpdmUgc2hvdyIgaWQ9InRhYl9wYW5lbF9zZXJ2ZXJfYWN0aXZp dHkiIGFyaWEtbGFiZWxsZWRieT0idGFiX3BhbmVsX3NlcnZlcl9hY3Rpdml0eV90YWIiPgotICAg ICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJzZXJ2ZXJfYWN0aXZpdHkiIGNsYXNzPSJncmlkLWNv bnRhaW5lciI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAg PGRpdiByb2xlPSJ0YWJwYW5lbCIgY2xhc3M9InRhYi1wYW5lIG5lZ2F0aXZlLXNwYWNlIHAtMiIg aWQ9InRhYl9wYW5lbF9zZXJ2ZXJfbG9ja3MiIGFyaWEtbGFiZWxsZWRieT0idGFiX3BhbmVsX3Nl cnZlcl9sb2Nrc190YWIiPgotICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJzZXJ2ZXJfbG9j a3MiIGNsYXNzPSJncmlkLWNvbnRhaW5lciI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPC9kaXY+ Ci0gICAgICAgICAgICAgICAgPGRpdiByb2xlPSJ0YWJwYW5lbCIgY2xhc3M9InRhYi1wYW5lIG5l Z2F0aXZlLXNwYWNlIHAtMiIgaWQ9InRhYl9wYW5lbF9zZXJ2ZXJfcHJlcGFyZWQiIGFyaWEtbGFi ZWxsZWRieT0idGFiX3BhbmVsX3NlcnZlcl9wcmVwYXJlZF90YWIiPgotICAgICAgICAgICAgICAg ICAgICA8ZGl2IGlkPSJzZXJ2ZXJfcHJlcGFyZWQiIGNsYXNzPSJncmlkLWNvbnRhaW5lciI+PC9k aXY+Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPGRpdiByb2xlPSJ0 YWJwYW5lbCIgY2xhc3M9InRhYi1wYW5lIG5lZ2F0aXZlLXNwYWNlIHAtMiIgaWQ9InRhYl9wYW5l bF9zZXJ2ZXJfY29uZmlnIiBhcmlhLWxhYmVsbGVkYnk9InRhYl9wYW5lbF9zZXJ2ZXJfY29uZmln X3RhYiI+Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InNlcnZlcl9jb25maWciIGNsYXNz PSJncmlkLWNvbnRhaW5lciI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg ICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBpZD0iZGFz aGJvYXJkLW5vbmUtc2hvdyIgY2xhc3M9ImFsZXJ0IGFsZXJ0LWluZm8gcGctcGFuZWwtbWVzc2Fn ZSBkYXNoYm9hcmQtaGlkZGVuIiByb2xlPSJhbGVydCI+Ci0gICAgICAgIHt7IF8oJ0FsbCBEYXNo Ym9hcmQgZWxlbWVudHMgYXJlIGN1cnJlbnRseSBkaXNhYmxlZC4nKSB9fQotICAgIDwvZGl2Pgot PC9kaXY+CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvdGVtcGxhdGVzL2Rhc2hi b2FyZC93ZWxjb21lX2Rhc2hib2FyZC5odG1sIGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3RlbXBs YXRlcy9kYXNoYm9hcmQvd2VsY29tZV9kYXNoYm9hcmQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggZmM3OThhYjE5Li4wMDAwMDAwMDAKLS0tIGEvd2ViL3BnYWRtaW4vZGFzaGJv YXJkL3RlbXBsYXRlcy9kYXNoYm9hcmQvd2VsY29tZV9kYXNoYm9hcmQuaHRtbAorKysgL2Rldi9u dWxsCkBAIC0xLDEzNSArMCwwIEBACi08ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQgbmVnYXRp dmUtc3BhY2UiPgotICAgIDxkaXYgY2xhc3M9ImRhc2hib2FyZC1jb250YWluZXIiPgotICAgICAg ICA8ZGl2IGNsYXNzPSJyb3cgbWItMiI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtMTIi PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQiPgotICAgICAgICAgICAgICAgICAg ICA8ZGl2IGNsYXNzPSJjYXJkLWhlYWRlciI+e3sgXygnV2VsY29tZScpIH19PC9kaXY+Ci0gICAg ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtYm9keSBwLTIiPgotICAgICAgICAgICAg ICAgICAgICAgICAgPGRpdiBjbGFzcz0id2VsY29tZS1sb2dvIiBhcmlhLWhpZGRlbj0idHJ1ZSI+ Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v cmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MDAgMTMwIj4KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8ZGVmcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3R5 bGU+LmNscy0xe3N0cm9rZTojMDAwO3N0cm9rZS13aWR0aDoxMC4xOXB4O30uY2xzLTJ7ZmlsbDoj MzM2NzkxO30uY2xzLTMsLmNscy00LC5jbHMtOXtmaWxsOm5vbmU7fS5jbHMtMywuY2xzLTQsLmNs cy01LC5jbHMtNntzdHJva2U6I2ZmZjt9LmNscy0zLC5jbHMtNHtzdHJva2UtbGluZWNhcDpyb3Vu ZDtzdHJva2Utd2lkdGg6My40cHg7fS5jbHMtM3tzdHJva2UtbGluZWpvaW46cm91bmQ7fS5jbHMt NHtzdHJva2UtbGluZWpvaW46YmV2ZWw7fS5jbHMtNSwuY2xzLTZ7ZmlsbDojZmZmO30uY2xzLTV7 c3Ryb2tlLXdpZHRoOjEuMTNweDt9LmNscy02e3N0cm9rZS13aWR0aDowLjU3cHg7fS5jbHMtN3tm aWxsOiMyNzc1YjY7fS5jbHMtOHtmaWxsOiMzMzM7fS5jbHMtOXtzdHJva2U6IzMzMztzdHJva2Ut d2lkdGg6M3B4O308L3N0eWxlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVm cz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGl0bGU+cGdBZG1pbl9Qb3N0Z3Jl U1FMPC90aXRsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iTGF5ZXJf MSIgZGF0YS1uYW1lPSJMYXllciAxIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8ZyBpZD0iTGF5ZXJfMyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNOTUuNTksOTMuNjVjLjc3LTYuNDQuNTQtNy4zOCw1LjMz LTYuMzRsMS4yMS4xMWEyNy42LDI3LjYsMCwwLDAsMTEuMzQtMS45MWM2LjA5LTIuODMsOS43MS03 LjU1LDMuNy02LjMxLTEzLjcxLDIuODMtMTQuNjUtMS44MS0xNC42NS0xLjgxQzExNyw1NS45MSwx MjMsMjguNjQsMTE3LjgyLDIyLDEwMy41NywzLjc2LDc4LjkxLDEyLjM3LDc4LjUsMTIuNmwtLjEz LDBhNDguNjUsNDguNjUsMCwwLDAtOS4xNS0uOTVDNjMsMTEuNTcsNTguMzEsMTMuMjksNTQuNzQs MTZjMCwwLTQ0LTE4LjEyLTQxLjk1LDIyLjguNDQsOC43LDEyLjQ4LDY1Ljg2LDI2Ljg0LDQ4LjZD NDQuODgsODEuMDgsNTAsNzUuNzUsNTAsNzUuNzVBMTMuMzksMTMuMzksMCwwLDAsNTguNjUsNzhs LjI1LS4yMWE5LDksMCwwLDAsLjEsMi40NmMtMy43LDQuMTMtMi42Miw0Ljg2LTEwLDYuMzhzLTMu MDksNC4yOS0uMjIsNWMzLjQ4Ljg3LDExLjUzLDIuMSwxNy01LjUybC0uMjIuODdjMS40NiwxLjE2 LDEuMzYsOC4zNSwxLjU2LDEzLjQ4cy41NSw5LjkzLDEuNiwxMi43NSwyLjI4LDEwLjEsMTIsOEM4 OC44MSwxMTkuNDYsOTUsMTE3LDk1LjU5LDkzLjY1IiAvPgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTExNy4xNyw3OS4yYy0xMy43 MSwyLjgzLTE0LjY1LTEuODEtMTQuNjUtMS44MUMxMTcsNTUuOTEsMTIzLDI4LjY0LDExNy44Miwy MiwxMDMuNTcsMy43Niw3OC45MSwxMi4zNyw3OC41LDEyLjZsLS4xMywwYTQ4LjY1LDQ4LjY1LDAs MCwwLTkuMTUtLjk1QzYzLDExLjU3LDU4LjMxLDEzLjI5LDU0Ljc0LDE2YzAsMC00NC0xOC4xMi00 MS45NSwyMi44LjQ0LDguNywxMi40OCw2NS44NiwyNi44NCw0OC42QzQ0Ljg4LDgxLjA4LDUwLDc1 Ljc1LDUwLDc1Ljc1QTEzLjM5LDEzLjM5LDAsMCwwLDU4LjY1LDc4bC4yNS0uMjFBOS40MSw5LjQx LDAsMCwwLDU5LDgwLjIyYy0zLjcsNC4xMy0yLjYxLDQuODYtMTAsNi4zOHMtMy4wOCw0LjI5LS4y MSw1YzMuNDguODcsMTEuNTMsMi4xLDE3LTUuNTJsLS4yMi44N2MxLjQ1LDEuMTYsMi40Nyw3LjU2 LDIuMywxMy4zNXMtLjI4LDkuNzcuODYsMTIuODgsMi4yOCwxMC4xLDEyLDhDODguODEsMTE5LjQ2 LDkzLDExNSw5My42LDEwNy40Miw5NCwxMDIuMDcsOTUsMTAyLjg3LDk1LDk4LjA4bC43NS0yLjI2 Yy44Ny03LjI2LjE0LTkuNiw1LjE1LTguNTFsMS4yMS4xMWEyNy42LDI3LjYsMCwwLDAsMTEuMzQt MS45MWM2LjA5LTIuODMsOS43MS03LjU1LDMuNy02LjMxWiIgLz4KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik02Ni4zMyw4My4zNmMt LjM4LDEzLjUuMDksMjcuMDksMS40MSwzMC4zOXM0LjE1LDkuNzMsMTMuODgsNy42NGM4LjEyLTEu NzQsMTEuMDgtNS4xMSwxMi4zNi0xMi41NS45NC01LjQ3LDIuNzctMjAuNjcsMy0yMy43OSIgLz4K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTMi IGQ9Ik01NC42NywxNS43cy00NC0xOC00MiwyMi45M2MuNDQsOC43LDEyLjQ4LDY1Ljg3LDI2Ljg0 LDQ4LjYsNS4yNS02LjMyLDEwLTExLjI3LDEwLTExLjI3IiAvPgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTc4LjQ1LDEyLjQyYy0x LjUyLjQ3LDI0LjQ5LTkuNTEsMzkuMjgsOS4zOCw1LjIyLDYuNjctLjgzLDMzLjk0LTE1LjMxLDU1 LjQyIiAvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNz PSJjbHMtNCIgZD0iTTEwMi40Miw3Ny4yMnMuOTQsNC42NCwxNC42NSwxLjgxYzYtMS4yNCwyLjQs My40OC0zLjcsNi4zMS01LDIuMzItMTYuMjEsMi45Mi0xNi4zOS0uMjktLjQ3LTguMjcsNS45LTUu NzYsNS40NC03LjgzLS40Mi0xLjg3LTMuMjYtMy43LTUuMTUtOC4yNy0xLjY0LTQtMjIuNTctMzQu NTgsNS44LTMwLDEtLjIyLTcuNC0yNy0zMy45NS0yNy40MlM0My40NSw0NC4xNCw0My40NSw0NC4x NCIgLz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0i Y2xzLTMiIGQ9Ik01OC45LDgwLjA1Yy0zLjcsNC4xMy0yLjYxLDQuODYtMTAsNi4zOHMtMy4wOSw0 LjI5LS4yMiw1YzMuNDguODcsMTEuNTMsMi4xLDE3LTUuNTIsMS42Ni0yLjMyLDAtNi0yLjI4LTct MS4xLS40Ni0yLjU3LTEtNC40NiwxLjA5WiIgLz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik01OC42Niw4MGMtLjM4LTIuNDQuNzkt NS4zMywyLjA1LTguNzFDNjIuNiw2Ni4xOSw2Nyw2MS4xMSw2My40Nyw0NWMtMi42LTEyLTIwLTIu NS0yMC0uODdhODEuNDgsODEuNDgsMCwwLDEtLjI5LDE2Yy0xLjQxLDEwLjA2LDYuNCwxOC41Nywx NS4zOSwxNy43IiAvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRo IGNsYXNzPSJjbHMtNSIgZD0iTTU0LjUxLDQzLjljLS4wOC41NSwxLDIsMi40NSwyLjIzYTIuNjIs Mi42MiwwLDAsMCwyLjcyLTEuNTFjLjA4LS41Ni0xLTEuMTctMi40NC0xLjM3cy0yLjY1LjA5LTIu NzMuNjVaIiAvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGNs YXNzPSJjbHMtNiIgZD0iTTk4LDQyLjc2Yy4wNy41Ni0xLDItMi40NSwyLjI0YTIuNjQsMi42NCww LDAsMS0yLjczLTEuNTJjLS4wNy0uNTUsMS0xLjE2LDIuNDUtMS4zNnMyLjY1LjA5LDIuNzMuNjRa IiAvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj bHMtMyIgZD0iTTEwMy4wNywzOC45MmMuMjQsNC4zNi0uOTQsNy4zMy0xLjA4LDEyLS4yMiw2Ljc0 LDMuMjEsMTQuNDYtMiwyMi4xOSIgLz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8L2c+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs cy03IGFwcC1uYW1lIiBkPSJNMTU0LjcyLDI4LjE1aDUuMTZ2NC4xNkExMi44NCwxMi44NCwwLDAs MSwxNjMuMzUsMjlhMTEuMTcsMTEuMTcsMCwwLDEsNi4yOC0xLjc2LDExLjg0LDExLjg0LDAsMCwx LDkuMDgsNC4wOWMyLjQ4LDIuNzIsMy43Myw2LjYyLDMuNzMsMTEuNjdxMCwxMC4yNi01LjM4LDE0 LjY1YTEyLjIsMTIuMiwwLDAsMS03Ljk1LDIuNzksMTAuNzgsMTAuNzgsMCwwLDEtNi0xLjU2LDEz LjU1LDEzLjU1LDAsMCwxLTMuMTQtM3YxNmgtNS4yOFptMTkuODQsMjQuNlExNzcsNDkuNjUsMTc3 LDQzLjVhMTcsMTcsMCwwLDAtMS4wOS02LjQ0LDcuNTEsNy41MSwwLDAsMC03LjUzLTUuMTlxLTUu NDksMC03LjUyLDUuNDhhMjEuNDksMjEuNDksMCwwLDAtMS4wOSw3LjQ0QTE1LjY0LDE1LjY0LDAs MCwwLDE2MC44OCw1MWE4LDgsMCwwLDAsMTMuNjgsMS43OFoiIC8+Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNscy03IGFwcC1uYW1lIiBkPSJNMjA2LDI5 LjI2YTE0LjYsMTQuNiwwLDAsMSwzLDNWMjguM2g0Ljg2VjU2LjgzYzAsNC0uNTgsNy4xMy0xLjc1 LDkuNDRxLTMuMjcsNi4zOC0xMi4zNSw2LjM4YTE1LjA3LDE1LjA3LDAsMCwxLTguNS0yLjI3LDgu ODYsOC44NiwwLDAsMS0zLjg1LTcuMWg1LjM2YTYsNiwwLDAsMCwxLjUyLDMuMjVxMS43NywxLjc1 LDUuNTksMS43Niw2LDAsNy45LTQuMjgsMS4xLTIuNTIsMS05YTEwLjM5LDEwLjM5LDAsMCwxLTMu OCwzLjU3LDEzLjU2LDEzLjU2LDAsMCwxLTE0Ljc1LTIuNDVxLTMuODEtMy42Mi0zLjgxLTEyLDAt Ny44OSwzLjg0LTEyLjMxYTExLjg1LDExLjg1LDAsMCwxLDkuMjctNC40MkExMS4zNywxMS4zNyww LDAsMSwyMDYsMjkuMjZabS42NCw1LjY2YTcuNjEsNy42MSwwLDAsMC02LjA5LTIuODFBNy41Miw3 LjUyLDAsMCwwLDE5MywzNy4zMmEyMC41NiwyMC41NiwwLDAsMC0xLjA4LDcuM2MwLDMuNTMuNzIs Ni4yMiwyLjE0LDguMDdhNi45Myw2LjkzLDAsMCwwLDUuNzYsMi43Nyw4LjA5LDguMDksMCwwLDAs OC01LjEzQTE2LjcyLDE2LjcyLDAsMCwwLDIwOSw0My41NlEyMDksMzcuNzMsMjA2LjYyLDM0Ljky WiIgLz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xz LTcgYXBwLW5hbWUiIGQ9Ik0yMzUuMTYsMTYuMzRoNi41OGwxNS42Miw0M0gyNTFsLTQuNS0xMi44 OUgyMjkuNmwtNC42NywxMi44OWgtNlptOS42NywyNS40LTYuNjMtMTktNi44OCwxOVoiIC8+Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNscy03IGFwcC1u YW1lIiBkPSJNMjc5LjE2LDI5YTE0LjMsMTQuMywwLDAsMSwzLjE4LDMuMDhWMTYuMmg1LjA3VjU5 LjM4aC00Ljc1VjU1YTExLjMzLDExLjMzLDAsMCwxLTQuMzUsNC4xOSwxMi41MSwxMi41MSwwLDAs MS01Ljc1LDEuMjgsMTEuNjEsMTEuNjEsMCwwLDEtOS00LjRxLTMuODItNC40MS0zLjgzLTExLjc0 YTIwLjM1LDIwLjM1LDAsMCwxLDMuNDktMTEuODgsMTEuNDEsMTEuNDEsMCwwLDEsMTAtNUExMS4x NSwxMS4xNSwwLDAsMSwyNzkuMTYsMjlaTTI2Ny4zOSw1Mi41cTIuMTMsMy4zOSw2LjgyLDMuMzlh Ny4xNyw3LjE3LDAsMCwwLDYtMy4xNGMxLjU2LTIuMSwyLjM1LTUuMTIsMi4zNS05cy0uODEtNi45 LTIuNDItOC44MWE3LjU2LDcuNTYsMCwwLDAtNi0yLjg1LDcuODgsNy44OCwwLDAsMC02LjQzLDNj LTEuNjQsMi0yLjQ2LDUtMi40Niw5QTE1LjYyLDE1LjYyLDAsMCwwLDI2Ny4zOSw1Mi41WiIgLz4K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTcgYXBw LW5hbWUiIGQ9Ik0yOTUuMjksMjhoNS4yMXY0LjQ2YTE3LjQsMTcuNCwwLDAsMSwzLjQtMy4zNywx MC4yNCwxMC4yNCwwLDAsMSw1LjkyLTEuNzksOS4zNCw5LjM0LDAsMCwxLDYsMS44NSw5LjYxLDku NjEsMCwwLDEsMi4zNCwzLjEsMTEuMzcsMTEuMzcsMCwwLDEsNC4xMy0zLjczLDExLjUyLDExLjUy LDAsMCwxLDUuMzMtMS4yMnE2LjMzLDAsOC42Miw0LjU3YTE1LDE1LDAsMCwxLDEuMjMsNi42MlY1 OS4zOEgzMzJWMzcuNThjMC0yLjA5LS41Mi0zLjUyLTEuNTctNC4zYTYuMiw2LjIsMCwwLDAtMy44 Mi0xLjE3LDcuNTgsNy41OCwwLDAsMC01LjM1LDIuMDhjLTEuNDksMS4zOC0yLjI0LDMuNy0yLjI0 LDYuOTRWNTkuMzhoLTUuMzZWMzguOWExMC43OCwxMC43OCwwLDAsMC0uNzYtNC42NnEtMS4yLTIu MTktNC40OS0yLjE5QTcuNzMsNy43MywwLDAsMCwzMDMsMzQuMzZjLTEuNjMsMS41NC0yLjQ1LDQu MzQtMi40NSw4LjM4VjU5LjM4aC01LjI3WiIgLz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTcgYXBwLW5hbWUiIGQ9Ik0zNDUuMjcsMTYuMzRoNS4z NnY2aC01LjM2Wm0wLDExLjgxaDUuMzZWNTkuMzhoLTUuMzZaIiAvPgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtNyBhcHAtbmFtZSIgZD0iTTM1OC42 LDI4aDV2NC40NmExNCwxNCwwLDAsMSw0LjcyLTQsMTIuNTYsMTIuNTYsMCwwLDEsNS41My0xLjJj NC40NiwwLDcuNDYsMS41NSw5LDQuNjZhMTYuNTIsMTYuNTIsMCwwLDEsMS4yOSw3LjI5VjU5LjM4 aC01LjM3VjM5LjYxQTEwLjgsMTAuOCwwLDAsMCwzNzgsMzVhNS4xNSw1LjE1LDAsMCwwLTUuMS0y LjkzLDEwLjIxLDEwLjIxLDAsMCwwLTMuMDguMzhBOCw4LDAsMCwwLDM2NiwzNWE3LjY2LDcuNjYs MCwwLDAtMS43MSwzLjIsMjEuODQsMjEuODQsMCwwLDAtLjQsNC43NFY1OS4zOEgzNTguNloiIC8+ Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNscy04IGFw cC10YWdsaW5lIiBkPSJNMTU1LjI0LDg2Ljg3aDMuOWw1Ljc3LDE3LDUuNzQtMTdoMy44N1YxMDdo LTIuNlY5NS4xcTAtLjYxLDAtMmMwLS45NCwwLTIsMC0zTDE2Ni4yNCwxMDdoLTIuN0wxNTcuNzUs OTB2LjYxYzAsLjQ5LDAsMS4yNCwwLDIuMjVzLjA1LDEuNzUuMDUsMi4yMlYxMDdoLTIuNloiIC8+ Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNscy04IGFw cC10YWdsaW5lIiBkPSJNMTg2LjE1LDk4LjA5YTEuMzUsMS4zNSwwLDAsMCwxLjE0LS43MSwyLjMx LDIuMzEsMCwwLDAsLjE2LS45NCwyLDIsMCwwLDAtLjg5LTEuODRBNC43OSw0Ljc5LDAsMCwwLDE4 NCw5NGEzLjIxLDMuMjEsMCwwLDAtMi43MywxLDMuNDQsMy40NCwwLDAsMC0uNTksMS43MmgtMi4z QTQuMjgsNC4yOCwwLDAsMSwxODAuMTQsOTMsNy4xNiw3LjE2LDAsMCwxLDE4NC4wNSw5MmE4LDgs MCwwLDEsNC4xOSwxLDMuMzQsMy4zNCwwLDAsMSwxLjYsMy4wNnY4LjQ0YTEuMDYsMS4wNiwwLDAs MCwuMTYuNjIuNzcuNzcsMCwwLDAsLjY2LjIzbC4zNywwLC40NC0uMDdWMTA3YTcuMzgsNy4zOCww LDAsMS0uODguMjEsNS45Miw1LjkyLDAsMCwxLS44MiwwLDIsMiwwLDAsMS0xLjg0LS45LDMuNjMs My42MywwLDAsMS0uNDMtMS4zNiw2LjE2LDYuMTYsMCwwLDEtMi4xNiwxLjcxLDYuNTYsNi41Niww LDAsMS0zLjEuNzMsNC41OSw0LjU5LDAsMCwxLTMuMzMtMS4yNCw0LjA5LDQuMDksMCwwLDEtMS4y OS0zLjA5LDQsNCwwLDAsMSwxLjI3LTMuMTYsNi4xNiw2LjE2LDAsMCwxLDMuMzQtMS4zOFpNMTgx LDEwNC43NGEyLjg4LDIuODgsMCwwLDAsMS44NC42Miw1LjUxLDUuNTEsMCwwLDAsMi41Mi0uNjEs My4zNywzLjM3LDAsMCwwLDItMy4yNnYtMmEzLjc5LDMuNzksMCwwLDEtMS4xNi40OCwxMC4zNywx MC4zNywwLDAsMS0xLjM5LjI4bC0xLjQ5LjE5YTUuNjgsNS42OCwwLDAsMC0yLC41NiwyLjE4LDIu MTgsMCwwLDAtMS4xNCwyQTIsMiwwLDAsMCwxODEsMTA0Ljc0WiIgLz4KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTggYXBwLXRhZ2xpbmUiIGQ9Ik0x OTMuODgsOTIuMzFoMi4zM3YyLjA4YTYuNzMsNi43MywwLDAsMSwyLjItMS44NUE2LDYsMCwwLDEs MjAxLDkycTMuMTIsMCw0LjIxLDIuMThhNy43Myw3LjczLDAsMCwxLC42LDMuNFYxMDdoLTIuNVY5 Ny43M2E0Ljg3LDQuODcsMCwwLDAtLjQtMi4xNiwyLjQxLDIuNDEsMCwwLDAtMi4zOC0xLjM3LDQu NzUsNC43NSwwLDAsMC0xLjQzLjE4LDMuNjgsMy42OCwwLDAsMC0xLjc4LDEuMiwzLjU1LDMuNTUs MCwwLDAtLjgsMS41LDEwLjMsMTAuMywwLDAsMC0uMTgsMi4yMVYxMDdoLTIuNDZaIiAvPgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtOCBhcHAtdGFn bGluZSIgZD0iTTIxNy4yOSw5OC4wOWExLjMzLDEuMzMsMCwwLDAsMS4xNC0uNzEsMi4xNSwyLjE1 LDAsMCwwLC4xNi0uOTQsMiwyLDAsMCwwLS44OS0xLjg0LDQuNzksNC43OSwwLDAsMC0yLjU2LS41 NiwzLjI0LDMuMjQsMCwwLDAtMi43MywxLDMuNDQsMy40NCwwLDAsMC0uNTgsMS43MmgtMi4zQTQu MjcsNC4yNywwLDAsMSwyMTEuMjgsOTMsNy4xOSw3LjE5LDAsMCwxLDIxNS4yLDkyYTgsOCwwLDAs MSw0LjE5LDFBMy4zNiwzLjM2LDAsMCwxLDIyMSw5NnY4LjQ0YTEuMTQsMS4xNCwwLDAsMCwuMTUu NjIuNzkuNzksMCwwLDAsLjY3LjIzbC4zNywwLC40My0uMDdWMTA3YTcuMzIsNy4zMiwwLDAsMS0u ODcuMjEsNiw2LDAsMCwxLS44MiwwLDIsMiwwLDAsMS0xLjg1LS45LDMuNDYsMy40NiwwLDAsMS0u NDItMS4zNiw2LjE2LDYuMTYsMCwwLDEtMi4xNiwxLjcxLDYuNjMsNi42MywwLDAsMS0zLjExLjcz LDQuNTgsNC41OCwwLDAsMS0zLjMyLTEuMjQsNC4wNiw0LjA2LDAsMCwxLTEuMy0zLjA5QTQsNCww LDAsMSwyMTAsMTAwYTYuMTMsNi4xMywwLDAsMSwzLjMzLTEuMzhabS01LjE4LDYuNjVhMi45MSwy LjkxLDAsMCwwLDEuODUuNjIsNS40Nyw1LjQ3LDAsMCwwLDIuNTEtLjYxLDMuMzgsMy4zOCwwLDAs MCwyLjA2LTMuMjZ2LTJhMy45LDMuOSwwLDAsMS0xLjE2LjQ4LDEwLjUxLDEwLjUxLDAsMCwxLTEu NC4yOGwtMS40OC4xOWE1LjU1LDUuNTUsMCwwLDAtMiwuNTYsMi4xNywyLjE3LDAsMCwwLTEuMTUs MkEyLDIsMCwwLDAsMjEyLjExLDEwNC43NFoiIC8+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHBhdGggY2xhc3M9ImNscy04IGFwcC10YWdsaW5lIiBkPSJNMjMzLjE2LDkyLjlh Ny4wNSw3LjA1LDAsMCwxLDEuNDIsMS4zOVY5Mi40NWgyLjI3djEzLjMyYTEwLDEwLDAsMCwxLS44 Miw0LjRjLTEsMi0yLjk0LDMtNS43NywzYTcuMDksNy4wOSwwLDAsMS00LTEuMDYsNC4xNSw0LjE1 LDAsMCwxLTEuOC0zLjMySDIyN2EyLjgxLDIuODEsMCwwLDAsLjcxLDEuNTIsMy41NywzLjU3LDAs MCwwLDIuNjEuODJjMS44OCwwLDMuMS0uNjYsMy42OC0yYTExLjE1LDExLjE1LDAsMCwwLC40OC00 LjIsNC44NCw0Ljg0LDAsMCwxLTEuNzcsMS42Nyw1LjkzLDUuOTMsMCwwLDEtMi43NC41NCw1Ljc5 LDUuNzksMCwwLDEtNC4xNC0xLjY5cS0xLjc5LTEuNjgtMS43OC01LjU4YTguNDksOC40OSwwLDAs MSwxLjc5LTUuNzQsNS41MSw1LjUxLDAsMCwxLDQuMzItMi4wN0E1LjMzLDUuMzMsMCwwLDEsMjMz LjE2LDkyLjlabS4zLDIuNjRhMy43NywzLjc3LDAsMCwwLTYuMzgsMS4xMiw5LjczLDkuNzMsMCww LDAtLjUsMy40LDYuMDUsNi4wNSwwLDAsMCwxLDMuNzcsMy4yMSwzLjIxLDAsMCwwLDIuNjgsMS4y OSwzLjc3LDMuNzcsMCwwLDAsMy43Mi0yLjM5LDcuNzEsNy43MSwwLDAsMCwuNi0zLjE2QTYuMTMs Ni4xMywwLDAsMCwyMzMuNDYsOTUuNTRaIiAvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtOCBhcHAtdGFnbGluZSIgZD0iTTI0OS42NCw5Mi43MmE1 LjQ0LDUuNDQsMCwwLDEsMi4yMSwxLjg5LDYuNTIsNi41MiwwLDAsMSwxLDIuNTgsMTcuNDQsMTcu NDQsMCwwLDEsLjIyLDMuMjNIMjQyLjRhNi4zNCw2LjM0LDAsMCwwLDEsMy41OSwzLjQ5LDMuNDks MCwwLDAsMywxLjM1LDMuOSwzLjksMCwwLDAsMy4wNS0xLjI4LDQuNSw0LjUsMCwwLDAsLjktMS43 MmgyLjQyYTUsNSwwLDAsMS0uNjMsMS44LDYuNTgsNi41OCwwLDAsMS0xLjIxLDEuNjIsNS43MSw1 LjcxLDAsMCwxLTIuNzUsMS40OCw4LjcxLDguNzEsMCwwLDEtMiwuMjEsNi4xMSw2LjExLDAsMCwx LTQuNi0yLDcuNzksNy43OSwwLDAsMS0xLjg5LTUuNTgsOC40MSw4LjQxLDAsMCwxLDEuOS01Ljcy LDYuMjYsNi4yNiwwLDAsMSw1LTIuMjFBNi41OSw2LjU5LDAsMCwxLDI0OS42NCw5Mi43MlptLjg4 LDUuNzRhNi40Niw2LjQ2LDAsMCwwLS42OS0yLjU1LDMuNTQsMy41NCwwLDAsMC0zLjM1LTEuNzgs My43MiwzLjcyLDAsMCwwLTIuODIsMS4yMiw0LjY5LDQuNjksMCwwLDAtMS4yMSwzLjExWiIgLz4K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTggYXBw LXRhZ2xpbmUiIGQ9Ik0yNTYuMTYsOTIuMzFoMi40NHYyLjA4YTguMjMsOC4yMywwLDAsMSwxLjU4 LTEuNTdBNC43OSw0Ljc5LDAsMCwxLDI2Myw5MmE0LjMxLDQuMzEsMCwwLDEsMi44MS44Nyw0LjUs NC41LDAsMCwxLDEuMSwxLjQ0LDUuMjcsNS4yNywwLDAsMSwxLjkyLTEuNzQsNS4zNyw1LjM3LDAs MCwxLDIuNDktLjU3LDQuMDgsNC4wOCwwLDAsMSw0LDIuMTQsNyw3LDAsMCwxLC41OCwzLjA5VjEw N2gtMi41NlY5Ni43OGEyLjQxLDIuNDEsMCwwLDAtLjczLTIsMi45MywyLjkzLDAsMCwwLTEuNzkt LjU0LDMuNTMsMy41MywwLDAsMC0yLjQ5LDEsNC4yMyw0LjIzLDAsMCwwLTEuMDUsMy4yNFYxMDdo LTIuNVY5Ny40YTUsNSwwLDAsMC0uMzYtMi4xOCwyLjE3LDIuMTcsMCwwLDAtMi4wOS0xLDMuNTks My41OSwwLDAsMC0yLjUzLDEuMDhjLS43Ni43Mi0xLjE0LDItMS4xNCwzLjkxVjEwN2gtMi40N1oi IC8+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNscy04 IGFwcC10YWdsaW5lIiBkPSJNMjg4LjUzLDkyLjcyYTUuNDcsNS40NywwLDAsMSwyLjIyLDEuODks Ni42Nyw2LjY3LDAsMCwxLDEsMi41OCwxNy42NiwxNy42NiwwLDAsMSwuMjEsMy4yM0gyODEuMjlh Ni40Miw2LjQyLDAsMCwwLDEsMy41OSwzLjQ4LDMuNDgsMCwwLDAsMywxLjM1LDMuOSwzLjksMCww LDAsMy4wNi0xLjI4LDQuNSw0LjUsMCwwLDAsLjktMS43MmgyLjQyYTUuMjMsNS4yMywwLDAsMS0u NjQsMS44LDYuNTYsNi41NiwwLDAsMS0xLjIsMS42Miw1LjcsNS43LDAsMCwxLTIuNzYsMS40OCw4 LjYyLDguNjIsMCwwLDEtMiwuMjEsNi4xNCw2LjE0LDAsMCwxLTQuNjEtMiw3Ljc5LDcuNzksMCww LDEtMS44OS01LjU4LDguNDEsOC40MSwwLDAsMSwxLjkxLTUuNzIsNi4yNCw2LjI0LDAsMCwxLDUt Mi4yMUE2LjU4LDYuNTgsMCwwLDEsMjg4LjUzLDkyLjcyWm0uODgsNS43NGE2LjQ2LDYuNDYsMCww LDAtLjY5LTIuNTUsMy41MywzLjUzLDAsMCwwLTMuMzUtMS43OCwzLjcyLDMuNzIsMCwwLDAtMi44 MiwxLjIyLDQuNjMsNC42MywwLDAsMC0xLjIsMy4xMVoiIC8+Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNscy04IGFwcC10YWdsaW5lIiBkPSJNMjk1LjA2 LDkyLjMxaDIuMzR2Mi4wOGE2LjYzLDYuNjMsMCwwLDEsMi4yLTEuODUsNS45MSw1LjkxLDAsMCwx LDIuNTgtLjU2YzIuMDgsMCwzLjQ5LjczLDQuMjEsMi4xOGE3LjU3LDcuNTcsMCwwLDEsLjYxLDMu NFYxMDdoLTIuNTFWOTcuNzNhNSw1LDAsMCwwLS4zOS0yLjE2LDIuNDEsMi40MSwwLDAsMC0yLjM4 LTEuMzcsNC44Niw0Ljg2LDAsMCwwLTEuNDQuMTgsMy43LDMuNywwLDAsMC0xLjc3LDEuMiwzLjU1 LDMuNTUsMCwwLDAtLjgsMS41LDkuNTgsOS41OCwwLDAsMC0uMTksMi4yMVYxMDdoLTIuNDZaIiAv PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtOCBh cHAtdGFnbGluZSIgZD0iTTMxMS4xMyw4OC4yMmgyLjQ4djQuMDlIMzE2djJoLTIuMzR2OS41NmEx LDEsMCwwLDAsLjUyLDEsMi4yMSwyLjIxLDAsMCwwLDEsLjE1aC4zOGwuNDgsMHYyYTQuMTYsNC4x NiwwLDAsMS0uODguMTgsNy43NCw3Ljc0LDAsMCwxLTEsLjA2LDIuNjksMi42OSwwLDAsMS0yLjM0 LS44OCwzLjk0LDMuOTQsMCwwLDEtLjYxLTIuMjl2LTkuN2gtMnYtMmgyWiIgLz4KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTggYXBwLXRhZ2xpbmUi IGQ9Ik0zNDAuNjMsODYuODd2Mi4zOWgtNi43N1YxMDdoLTIuNzVWODkuMjZoLTYuNzZWODYuODda IiAvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHMt OCBhcHAtdGFnbGluZSIgZD0iTTM1MC4zMSw5My43N2E3LjQyLDcuNDIsMCwwLDEsMS45NCw1LjU1 LDkuNTcsOS41NywwLDAsMS0xLjcxLDUuODUsNi4xOSw2LjE5LDAsMCwxLTUuMzEsMi4zLDYsNiww LDAsMS00Ljc2LTJBOC4wOCw4LjA4LDAsMCwxLDMzOC43LDEwMGE4Ljc4LDguNzgsMCwwLDEsMS44 Ni01Ljg4LDYuMjUsNi4yNSwwLDAsMSw1LTIuMThBNi42LDYuNiwwLDAsMSwzNTAuMzEsOTMuNzda bS0xLjUzLDkuNzRhOS4zMiw5LjMyLDAsMCwwLC45LTQuMTIsNy4zOSw3LjM5LDAsMCwwLS42NS0z LjMzLDMuNjMsMy42MywwLDAsMC0zLjU0LTIsMy40OSwzLjQ5LDAsMCwwLTMuMjUsMS43Miw4LjA3 LDguMDcsMCwwLDAtMSw0LjE1LDcuMDUsNy4wNSwwLDAsMCwxLDMuODksMy41NiwzLjU2LDAsMCww LDMuMjIsMS41NkEzLjM1LDMuMzUsMCwwLDAsMzQ4Ljc4LDEwMy41MVoiIC8+Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNscy04IGFwcC10YWdsaW5lIiBk PSJNMzY1Ljg4LDkzLjc3YTcuNDIsNy40MiwwLDAsMSwxLjk0LDUuNTUsOS41Nyw5LjU3LDAsMCwx LTEuNzEsNS44NSw2LjE5LDYuMTksMCwwLDEtNS4zMSwyLjMsNiw2LDAsMCwxLTQuNzYtMiw4LjA4 LDguMDgsMCwwLDEtMS43Ny01LjQ4LDguNzgsOC43OCwwLDAsMSwxLjg2LTUuODgsNi4yNSw2LjI1 LDAsMCwxLDUtMi4xOEE2LjU4LDYuNTgsMCwwLDEsMzY1Ljg4LDkzLjc3Wm0tMS41Myw5Ljc0YTku MzIsOS4zMiwwLDAsMCwuOS00LjEyLDcuMjYsNy4yNiwwLDAsMC0uNjUtMy4zMywzLjYzLDMuNjMs MCwwLDAtMy41NC0yLDMuNDYsMy40NiwwLDAsMC0zLjI0LDEuNzIsOCw4LDAsMCwwLTEsNC4xNSw3 LDcsMCwwLDAsMSwzLjg5LDMuNTQsMy41NCwwLDAsMCwzLjIxLDEuNTZBMy4zNSwzLjM1LDAsMCww LDM2NC4zNSwxMDMuNTFaIiAvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw YXRoIGNsYXNzPSJjbHMtOCBhcHAtdGFnbGluZSIgZD0iTTM3MC45MSw4Ni44N2gyLjQ2VjEwN2gt Mi40NloiIC8+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9 ImNscy04IGFwcC10YWdsaW5lIiBkPSJNMzc4LjUzLDEwMi4zNmEzLjQ3LDMuNDcsMCwwLDAsLjYz LDEuODksNCw0LDAsMCwwLDMuMjksMS4xOSw0Ljg2LDQuODYsMCwwLDAsMi40NS0uNkEyLDIsMCww LDAsMzg2LDEwM2ExLjU2LDEuNTYsMCwwLDAtLjg0LTEuNDMsMTAuNjMsMTAuNjMsMCwwLDAtMi4x NC0uN2wtMi0uNDlhMTAsMTAsMCwwLDEtMi44MS0xLDMuMTEsMy4xMSwwLDAsMS0xLjYxLTIuNzYs NC4yMSw0LjIxLDAsMCwxLDEuNTItMy4zNyw2LjEzLDYuMTMsMCwwLDEsNC4wOC0xLjI4cTMuMzYs MCw0LjgzLDEuOTRhNC4yNCw0LjI0LDAsMCwxLC45MSwyLjY1aC0yLjMzQTIuNzIsMi43MiwwLDAs MCwzODUsOTVhMy45MiwzLjkyLDAsMCwwLTMtMSwzLjcsMy43LDAsMCwwLTIuMTYuNTMsMS42NSwx LjY1LDAsMCwwLS43NCwxLjQsMS43MywxLjczLDAsMCwwLDEsMS41Myw1LjY5LDUuNjksMCwwLDAs MS42NC42bDEuNjYuNEExMi43MywxMi43MywwLDAsMSwzODcsOTkuNzVhMy4zLDMuMywwLDAsMSwx LjQ0LDMsNC40OCw0LjQ4LDAsMCwxLTEuNSwzLjM3LDYuNDUsNi40NSwwLDAsMS00LjU4LDEuNDNj LTIuMiwwLTMuNzctLjUtNC42OC0xLjQ5YTUuNTksNS41OSwwLDAsMS0xLjQ4LTMuNjdaIiAvPgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtOCBhcHAt dGFnbGluZSIgZD0iTTQwMCw4Ny44NGMuNTgtLjg0LDEuNjgtMS4yNiwzLjMyLTEuMjZsLjQ4LDAs LjU2LDB2Mi4yNGwtLjU2LDBoLS4zMmMtLjc2LDAtMS4yMS4xOS0xLjM2LjU4YTExLjc1LDExLjc1 LDAsMCwwLS4yMiwzaDIuNDZ2MS45NGgtMi40NlYxMDdoLTIuNDNWOTQuMzJoLTJWOTIuMzhoMnYt Mi4zQTQuNDMsNC40MywwLDAsMSw0MDAsODcuODRaIiAvPgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtOCBhcHAtdGFnbGluZSIgZD0iTTQxNy4yMyw5 My43N2E3LjM4LDcuMzgsMCwwLDEsMS45NCw1LjU1LDkuNTcsOS41NywwLDAsMS0xLjcxLDUuODUs Ni4xOCw2LjE4LDAsMCwxLTUuMywyLjMsNiw2LDAsMCwxLTQuNzctMiw4LjA3LDguMDcsMCwwLDEt MS43Ni01LjQ4LDguODMsOC44MywwLDAsMSwxLjg1LTUuODgsNi4yNSw2LjI1LDAsMCwxLDUtMi4x OEE2LjU4LDYuNTgsMCwwLDEsNDE3LjIzLDkzLjc3Wm0tMS41Myw5Ljc0YTkuMzIsOS4zMiwwLDAs MCwuOS00LjEyLDcuMjYsNy4yNiwwLDAsMC0uNjUtMy4zMywzLjYzLDMuNjMsMCwwLDAtMy41NC0y LDMuNDcsMy40NywwLDAsMC0zLjI0LDEuNzIsOCw4LDAsMCwwLTEsNC4xNSw3LDcsMCwwLDAsMSwz Ljg5LDMuNTUsMy41NSwwLDAsMCwzLjIyLDEuNTZBMy4zNSwzLjM1LDAsMCwwLDQxNS43LDEwMy41 MVoiIC8+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs cy04IGFwcC10YWdsaW5lIiBkPSJNNDIyLjI2LDkyLjMxaDIuMzR2Mi41M0E1LjYxLDUuNjEsMCww LDEsNDI2LDkzLDMuNjgsMy42OCwwLDAsMSw0MjguNTksOTJsLjI0LDAsLjU2LDB2Mi42YTIuMDgs Mi4wOCwwLDAsMC0uNDEtLjA1bC0uNCwwYTMuNTIsMy41MiwwLDAsMC0yLjg2LDEuMiw0LjIsNC4y LDAsMCwwLTEsMi43NVYxMDdoLTIuNDZaIiAvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtOCBhcHAtdGFnbGluZSIgZD0iTTQzOS44OSw4Ni44N2g5 YTYuMDksNi4wOSwwLDAsMSw0LjMxLDEuNTEsNS41LDUuNSwwLDAsMSwxLjY0LDQuMjUsNi4xNSw2 LjE1LDAsMCwxLTEuNDcsNC4wOSw1LjUsNS41LDAsMCwxLTQuNDcsMS43NGgtNi4yN1YxMDdoLTIu NzJabTEwLjU1LDIuNzZhNS45Miw1LjkyLDAsMCwwLTIuNDYtLjQyaC01LjM3djdINDQ4YTUuMDcs NS4wNywwLDAsMCwyLjk1LS43OCwzLjEsMy4xLDAsMCwwLDEuMTQtMi43NUEzLDMsMCwwLDAsNDUw LjQ0LDg5LjYzWiIgLz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBj bGFzcz0iY2xzLTggYXBwLXRhZ2xpbmUiIGQ9Ik00NjguNTgsOTMuNzdhNy4zOCw3LjM4LDAsMCwx LDEuOTUsNS41NSw5LjUxLDkuNTEsMCwwLDEtMS43Miw1Ljg1LDYuMTcsNi4xNywwLDAsMS01LjMs Mi4zLDYsNiwwLDAsMS00Ljc3LTJBOC4wNyw4LjA3LDAsMCwxLDQ1NywxMDBhOC43OCw4Ljc4LDAs MCwxLDEuODYtNS44OCw2LjIzLDYuMjMsMCwwLDEsNS0yLjE4QTYuNTYsNi41NiwwLDAsMSw0Njgu NTgsOTMuNzdabS0xLjUyLDkuNzRhOS4zMiw5LjMyLDAsMCwwLC45LTQuMTIsNy4zOSw3LjM5LDAs MCwwLS42NS0zLjMzLDMuNjUsMy42NSwwLDAsMC0zLjU1LTIsMy40OCwzLjQ4LDAsMCwwLTMuMjQs MS43Miw4LDgsMCwwLDAtMSw0LjE1LDcsNywwLDAsMCwxLDMuODksMy41NiwzLjU2LDAsMCwwLDMu MjIsMS41NkEzLjM2LDMuMzYsMCwwLDAsNDY3LjA2LDEwMy41MVoiIC8+Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNscy04IGFwcC10YWdsaW5lIiBkPSJN NDc1LDEwMi4zNmEzLjQ3LDMuNDcsMCwwLDAsLjYzLDEuODksNCw0LDAsMCwwLDMuMjksMS4xOSw0 LjkzLDQuOTMsMCwwLDAsMi40Ni0uNiwyLDIsMCwwLDAsMS4wNi0xLjg0LDEuNTUsMS41NSwwLDAs MC0uODUtMS40MywxMC40LDEwLjQsMCwwLDAtMi4xNC0uN2wtMi0uNDlhOS43OCw5Ljc4LDAsMCwx LTIuOC0xLDMuMSwzLjEsMCwwLDEtMS42Mi0yLjc2LDQuMjEsNC4yMSwwLDAsMSwxLjUyLTMuMzcs Ni4xMyw2LjEzLDAsMCwxLDQuMDgtMS4yOHEzLjM2LDAsNC44NCwxLjk0YTQuMTcsNC4xNywwLDAs MSwuOSwyLjY1aC0yLjMzYTIuNzIsMi43MiwwLDAsMC0uNi0xLjUxLDMuOTIsMy45MiwwLDAsMC0z LTEsMy43LDMuNywwLDAsMC0yLjE2LjUzLDEuNjQsMS42NCwwLDAsMC0uNzMsMS40LDEuNzIsMS43 MiwwLDAsMCwxLDEuNTMsNS42Niw1LjY2LDAsMCwwLDEuNjUuNmwxLjY1LjRhMTIuODMsMTIuODMs MCwwLDEsMy42MywxLjI0LDMuMzEsMy4zMSwwLDAsMSwxLjQzLDMsNC40OCw0LjQ4LDAsMCwxLTEu NSwzLjM3LDYuNDUsNi40NSwwLDAsMS00LjU4LDEuNDNxLTMuMywwLTQuNjgtMS40OWE1LjU5LDUu NTksMCwwLDEtMS40OC0zLjY3WiIgLz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8cGF0aCBjbGFzcz0iY2xzLTggYXBwLXRhZ2xpbmUiIGQ9Ik00ODgsODguMjJoMi40OXY0LjA5 aDIuMzR2MmgtMi4zNHY5LjU2YTEsMSwwLDAsMCwuNTIsMSwyLjE5LDIuMTksMCwwLDAsLjk1LjE1 aC4zOWwuNDgsMHYyYTQuMzksNC4zOSwwLDAsMS0uODkuMTgsNy41Miw3LjUyLDAsMCwxLTEsLjA2 LDIuNjksMi42OSwwLDAsMS0yLjM0LS44OEEzLjk0LDMuOTQsMCwwLDEsNDg4LDEwNHYtOS43aC0y di0yaDJaIiAvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNz PSJjbHMtOCBhcHAtdGFnbGluZSIgZD0iTTUwMy40Nyw5Mi45YTYuNzgsNi43OCwwLDAsMSwxLjQx LDEuMzlWOTIuNDVoMi4yN3YxMy4zMmExMCwxMCwwLDAsMS0uODEsNC40Yy0xLDItMi45NCwzLTUu NzcsM2E3LjA5LDcuMDksMCwwLDEtNC0xLjA2LDQuMSw0LjEsMCwwLDEtMS44LTMuMzJoMi41YTIu NzQsMi43NCwwLDAsMCwuNzEsMS41MiwzLjU3LDMuNTcsMCwwLDAsMi42MS44MmMxLjg3LDAsMy4x LS42NiwzLjY4LTJhMTEuMzcsMTEuMzcsMCwwLDAsLjQ4LTQuMiw0Ljg0LDQuODQsMCwwLDEtMS43 NywxLjY3LDYsNiwwLDAsMS0yLjc0LjU0LDUuODMsNS44MywwLDAsMS00LjE1LTEuNjlxLTEuNzct MS42OC0xLjc3LTUuNThhOC40Myw4LjQzLDAsMCwxLDEuNzktNS43NCw1LjUxLDUuNTEsMCwwLDEs NC4zMi0yLjA3QTUuMzgsNS4zOCwwLDAsMSw1MDMuNDcsOTIuOVptLjMsMi42NGEzLjU2LDMuNTYs MCwwLDAtMi44NS0xLjMxLDMuNSwzLjUsMCwwLDAtMy41MywyLjQzLDkuNDgsOS40OCwwLDAsMC0u NTEsMy40LDYuMTIsNi4xMiwwLDAsMCwxLDMuNzcsMy4yNCwzLjI0LDAsMCwwLDIuNjksMS4yOSwz Ljc1LDMuNzUsMCwwLDAsMy43MS0yLjM5LDcuNzEsNy43MSwwLDAsMCwuNi0zLjE2QTYuMTQsNi4x NCwwLDAsMCw1MDMuNzcsOTUuNTRaIiAvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxwYXRoIGNsYXNzPSJjbHMtOCBhcHAtdGFnbGluZSIgZD0iTTUxMSw5Mi4zMWgyLjMzdjIu NTNhNS45MSw1LjkxLDAsMCwxLDEuNDEtMS44QTMuNjksMy42OSwwLDAsMSw1MTcuMyw5MmwuMjMs MCwuNTYsMHYyLjZhMi4wOCwyLjA4LDAsMCwwLS40LS4wNWwtLjQxLDBhMy40OCwzLjQ4LDAsMCww LTIuODUsMS4yLDQuMTQsNC4xNCwwLDAsMC0xLDIuNzVWMTA3SDUxMVoiIC8+Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNscy04IGFwcC10YWdsaW5lIiBk PSJNNTI5LjI3LDkyLjcyYTUuNDQsNS40NCwwLDAsMSwyLjIxLDEuODksNi41Miw2LjUyLDAsMCwx LDEsMi41OCwxNi42LDE2LjYsMCwwLDEsLjIyLDMuMjNINTIyYTYuMzQsNi4zNCwwLDAsMCwxLDMu NTksMy40OSwzLjQ5LDAsMCwwLDMsMS4zNSwzLjksMy45LDAsMCwwLDMtMS4yOCw0LjM3LDQuMzcs MCwwLDAsLjktMS43MmgyLjQyYTUsNSwwLDAsMS0uNjMsMS44LDYuMzQsNi4zNCwwLDAsMS0xLjIx LDEuNjIsNS43MSw1LjcxLDAsMCwxLTIuNzUsMS40OCw4LjY1LDguNjUsMCwwLDEtMiwuMjEsNi4x MSw2LjExLDAsMCwxLTQuNi0yLDcuNzksNy43OSwwLDAsMS0xLjg5LTUuNTgsOC40MSw4LjQxLDAs MCwxLDEuOS01LjcyLDYuMjYsNi4yNiwwLDAsMSw1LTIuMjFBNi41OSw2LjU5LDAsMCwxLDUyOS4y Nyw5Mi43MlptLjg4LDUuNzRhNi40Niw2LjQ2LDAsMCwwLS42OS0yLjU1LDMuNTQsMy41NCwwLDAs MC0zLjM1LTEuNzgsMy43MiwzLjcyLDAsMCwwLTIuODIsMS4yMiw0LjY5LDQuNjksMCwwLDAtMS4y MSwzLjExWiIgLz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBjbGFz cz0iY2xzLTggYXBwLXRhZ2xpbmUiIGQ9Ik01MzcuOSwxMDAuNDdhNS42LDUuNiwwLDAsMCwuNzgs Mi43OHExLjMsMiw0LjU5LDJhNy45LDcuOSwwLDAsMCwyLjY5LS40NCwzLjA5LDMuMDksMCwwLDAs Mi4zNC0zLDIuNjQsMi42NCwwLDAsMC0xLTIuMzMsOS41NSw5LjU1LDAsMCwwLTMuMTUtMS4xOWwt Mi42NC0uNjJhMTEuNDEsMTEuNDEsMCwwLDEtMy42NS0xLjMzQTQuMjMsNC4yMywwLDAsMSw1MzYs OTIuNTRhNS44Niw1Ljg2LDAsMCwxLDEuODMtNC40NEE3LjE2LDcuMTYsMCwwLDEsNTQzLDg2LjM3 YTguNzUsOC43NSwwLDAsMSw1LjIyLDEuNTIsNS41Nyw1LjU3LDAsMCwxLDIuMTUsNC44N2gtMi41 NmE1LjEyLDUuMTIsMCwwLDAtLjg0LTIuNDdjLS43OS0xLjA1LTIuMTQtMS41Ny00LjA1LTEuNTdh NC41MSw0LjUxLDAsMCwwLTMuMzEsMSwzLjIsMy4yLDAsMCwwLTEsMi4zNSwyLjMzLDIuMzMsMCww LDAsMS4xOSwyLjE2LDE2Ljc2LDE2Ljc2LDAsMCwwLDMuNTQsMS4wOWwyLjczLjY1YTguMTUsOC4x NSwwLDAsMSwzLDEuMjcsNC44MSw0LjgxLDAsMCwxLDEuODYsNC4wOSw1LjE0LDUuMTQsMCwwLDEt Mi4zNyw0Ljc3LDEwLjQ2LDEwLjQ2LDAsMCwxLTUuNSwxLjQzLDguMDcsOC4wNywwLDAsMS01Ljcy LTEuOTEsNi41Nyw2LjU3LDAsMCwxLTItNS4xNloiIC8+Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNscy04IGFwcC10YWdsaW5lIiBkPSJNNTczLjE3LDEw Ni45bC0xLjM2LDEuNjUtMy4xMS0yLjM2YTExLjMzLDExLjMzLDAsMCwxLTIuNDMsMSwxMC4yOSwx MC4yOSwwLDAsMS0yLjg1LjM3LDkuMTgsOS4xOCwwLDAsMS03LjMyLTMuMDZBMTEuNzEsMTEuNzEs MCwwLDEsNTUzLjc2LDk3YTExLjksMTEuOSwwLDAsMSwyLTcsOC43OCw4Ljc4LDAsMCwxLDcuNjkt My43MmMzLjU0LDAsNi4xNywxLjE0LDcuODcsMy40MmExMS4wOCwxMS4wOCwwLDAsMSwyLDYuODIs MTQuMjgsMTQuMjgsMCwwLDEtLjQ4LDMuNzMsOS42Nyw5LjY3LDAsMCwxLTIuNDQsNC40NlpNNTY1 LjM1LDEwNWEzLjM2LDMuMzYsMCwwLDAsMS4yOS0uNDdsLTIuMjItMS43MiwxLjM3LTEuNjgsMi42 MiwyQTcuNSw3LjUsMCwwLDAsNTcwLjEsMTAwYTEzLjc2LDEzLjc2LDAsMCwwLC40NS0zLjM5LDgu NDgsOC40OCwwLDAsMC0xLjg1LTUuNyw2LjM1LDYuMzUsMCwwLDAtNS4wNy0yLjE3LDYuNiw2LjYs MCwwLDAtNS4xNSwyLjA4cS0xLjksMi4wNy0xLjksNi4zOEE4LjY0LDguNjQsMCwwLDAsNTU4LjQs MTAzYTYuNjMsNi42MywwLDAsMCw1LjM2LDIuMTVBMTEuMjQsMTEuMjQsMCwwLDAsNTY1LjM1LDEw NVoiIC8+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs cy04IGFwcC10YWdsaW5lIiBkPSJNNTc2LjU4LDg2Ljg3aDIuNzJ2MTcuNjloMTAuMDhWMTA3aC0x Mi44WiIgLz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluZSBjbGFzcz0i Y2xzLTkgYXBwLW5hbWUtdW5kZXJsaW5lIiB4MT0iMjE5LjE3IiB5MT0iNjYuNSIgeDI9IjM4NC4x NyIgeTI9IjY2LjUiIC8+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgotICAgICAgICAgICAgICAgICAgICAgICAg PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aDQ+e3sgXygnRmVhdHVyZSByaWNoJykg fX0gfCB7eyBfKCdNYXhpbWlzZXMgUG9zdGdyZVNRTCcpIH19IHwge3sgXygnT3BlbiBTb3VyY2Un KSB9fSA8L2g0PgotICAgICAgICAgICAgICAgICAgICAgICAgPHA+Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAge3sgXygncGdBZG1pbiBpcyBhbiBPcGVuIFNvdXJjZSBhZG1pbmlzdHJhdGlv biBhbmQgbWFuYWdlbWVudCB0b29sIGZvciB0aGUgUG9zdGdyZVNRTCBkYXRhYmFzZS4gSXQgaW5j bHVkZXMgYSBncmFwaGljYWwgYWRtaW5pc3RyYXRpb24gaW50ZXJmYWNlLCBhbiBTUUwgcXVlcnkg dG9vbCwgYSBwcm9jZWR1cmFsIGNvZGUgZGVidWdnZXIgYW5kIG11Y2ggbW9yZS4gVGhlIHRvb2wg aXMgZGVzaWduZWQgdG8gYW5zd2VyIHRoZSBuZWVkcyBvZiBkZXZlbG9wZXJzLCBEQkFzIGFuZCBz eXN0ZW0gYWRtaW5pc3RyYXRvcnMgYWxpa2UuJykgfX0KLSAgICAgICAgICAgICAgICAgICAgICAg IDwvcD4KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgPC9kaXY+ Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9 InJvdyBtYi0yIj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC0xMiI+Ci0gICAgICAgICAg ICAgICAgPGRpdiBjbGFzcz0iY2FyZCAiPgotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz PSJjYXJkLWhlYWRlciI+e3sgXygnUXVpY2sgTGlua3MnKSB9fTwvZGl2PgotICAgICAgICAgICAg ICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWJvZHkgcC0yIj4KLSAgICAgICAgICAgICAgICAgICAg ICAgIDxkaXYgY2xhc3M9InJvdyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj bGFzcz0iY29sLTYgZGFzaGJvYXJkLWxpbmsiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8YSBocmVmPSIjIiBvbmNsaWNrPSJwZ0FkbWluLkRhc2hib2FyZC5hZGRfbmV3X3NlcnZl cigpIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJm YSBmYS00eCBkYXNoYm9hcmQtaWNvbiBmYS1zZXJ2ZXIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3Nw YW4+PGJyLz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IF8oJ0FkZCBO ZXcgU2VydmVyJykgfX0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxkaXYgY2xhc3M9ImNvbC02IGRhc2hib2FyZC1saW5rIj4KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgb25jbGljaz0icGdBZG1pbi5QcmVmZXJlbmNlcy5z aG93KCkiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9Im1u dV9wcmVmZXJlbmNlcyIgY2xhc3M9ImZhIGZhLTR4IGRhc2hib2FyZC1pY29uIGZhLWNvZ3MiCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj0idHJ1 ZSI+PC9zcGFuPjxici8+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBf KCdDb25maWd1cmUgcGdBZG1pbicpIH19Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAg ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg ICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICAgICAg PGRpdiBjbGFzcz0icm93IG1iLTIiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTEyIj4K LSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkICI+Ci0gICAgICAgICAgICAgICAgICAg IDxkaXYgY2xhc3M9ImNhcmQtaGVhZGVyIj57eyBfKCdHZXR0aW5nIFN0YXJ0ZWQnKSB9fTwvZGl2 PgotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWJvZHkgcC0yIj4KLSAgICAg ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+Ci0gICAgICAgICAgICAgICAgICAg ICAgICA8ZGl2IGNsYXNzPSJjb2wtMyBkYXNoYm9hcmQtbGluayI+Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzIiB0YXJn ZXQ9InBvc3RncmVzX2hlbHAiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bh biBjbGFzcz0iZmEgZmEtNHggZGFzaGJvYXJkLWljb24gZGFzaGJvYXJkLXBnLWRvYyIgYXJpYS1o aWRkZW49InRydWUiPjwvc3Bhbj48YnIvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7eyBfKCdQb3N0Z3JlU1FMIERvY3VtZW50YXRpb24nKSB9fQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAg ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTMgZGFzaGJvYXJkLWxpbmsiPgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnBnYWRtaW4ub3JnIiB0 YXJnZXQ9InBnYWRtaW5fd2Vic2l0ZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxzcGFuIGNsYXNzPSJmYSBmYS00eCBkYXNoYm9hcmQtaWNvbiBmYS1nbG9iZSIgYXJpYS1oaWRk ZW49InRydWUiPjwvc3Bhbj48YnIvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 eyBfKCdwZ0FkbWluIFdlYnNpdGUnKSB9fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv YT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAgICAg ICAgPGRpdiBjbGFzcz0iY29sLTMgZGFzaGJvYXJkLWxpbmsiPgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wbGFuZXQucG9zdGdyZXNxbC5vcmciIHRhcmdldD0i cGxhbmV0X3dlYnNpdGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBj bGFzcz0iZmEgZmEtNHggZGFzaGJvYXJkLWljb24gZmEtYm9vayIgYXJpYS1oaWRkZW49InRydWUi Pjwvc3Bhbj48YnIvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBfKCdQbGFu ZXQgUG9zdGdyZVNRTCcpIH19Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgotICAg ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2 IGNsYXNzPSJjb2wtMyBkYXNoYm9hcmQtbGluayI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgPGEgaHJlZj0iaHR0cDovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9jb21tdW5pdHkiIHRhcmdldD0i cG9zdGdyZXNfd2Vic2l0ZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFu IGNsYXNzPSJmYSBmYS00eCBkYXNoYm9hcmQtaWNvbiBmYS11c2VycyIgYXJpYS1oaWRkZW49InRy dWUiPjwvc3Bhbj48YnIvPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBfKCdD b21tdW5pdHkgU3VwcG9ydCcpIH19Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgot ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIDwvZGl2 PgotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAg ICAgICAgICAgIDwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvZGl2PgpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vbWlzYy9wcm9wZXJ0aWVzL0NvbGxlY3Rpb25Ob2RlUHJvcGVy dGllcy5qc3ggYi93ZWIvcGdhZG1pbi9taXNjL3Byb3BlcnRpZXMvQ29sbGVjdGlvbk5vZGVQcm9w ZXJ0aWVzLmpzeApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmJiYmViYTFl OQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL21pc2MvcHJvcGVydGllcy9Db2xsZWN0 aW9uTm9kZVByb3BlcnRpZXMuanN4CkBAIC0wLDAgKzEsMjc3IEBACitpbXBvcnQgUmVhY3QgZnJv bSAncmVhY3QnOworaW1wb3J0IF8gZnJvbSAnbG9kYXNoJzsKK2ltcG9ydCBwZ0FkbWluIGZyb20g J3NvdXJjZXMvcGdhZG1pbic7CitpbXBvcnQgZ2V0QXBpSW5zdGFuY2UgZnJvbSAnc291cmNlcy9h cGlfaW5zdGFuY2UnOworaW1wb3J0IHsgbWFrZVN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9j b3JlL3N0eWxlcyc7CitpbXBvcnQgeyBCdXR0b24gfSBmcm9tICdAbXVpL21hdGVyaWFsJzsKK2lt cG9ydCBEZWxldGVJY29uIGZyb20gJ0BtdWkvaWNvbnMtbWF0ZXJpYWwvRGVsZXRlJzsKK2ltcG9y dCBEZWxldGVTd2VlcFJvdW5kZWRJY29uIGZyb20gJ0BtdWkvaWNvbnMtbWF0ZXJpYWwvRGVsZXRl U3dlZXBSb3VuZGVkJzsKK2ltcG9ydCB7IEJveCB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlJzsK KworaW1wb3J0IHsgZ2VuZXJhdGVDb2xsZWN0aW9uVVJMIH0gZnJvbSAnLi4vLi4vYnJvd3Nlci9z dGF0aWMvanMvbm9kZV9hamF4JzsKK2ltcG9ydCBOb3RpZnkgZnJvbSAnLi4vLi4vc3RhdGljL2pz L2hlbHBlcnMvTm90aWZpZXInOworaW1wb3J0IGdldHRleHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0 JzsKK2ltcG9ydCAnd2Nkb2NrZXInOworaW1wb3J0IFBnVGFibGUgZnJvbSAnc291cmNlcy9jb21w b25lbnRzL1BnVGFibGUnOworaW1wb3J0IFRoZW1lIGZyb20gJ3NvdXJjZXMvVGhlbWUnOworaW1w b3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJzsKKworY29uc3QgdXNlU3R5bGVzID0gbWFr ZVN0eWxlcygodGhlbWUpID0+ICh7CisgIGRlbGV0ZUJ1dHRvbjogeworICAgIHBhZGRpbmc6ICcy cHgnLAorICAgIGZsZXg6ICcxJywKKyAgICBkaXNwbGF5OiAnaW5oZWl0JywKKyAgICBvdmVyZmxv d1k6ICdoaWRkZW4gIWltcG9ydGFudCcsCisgICAgYmFja2dyb3VuZENvbG91cjogJyNmZmYgIWlt cG9ydGFudCcsCisgIH0sCisgIGF1dG9SZXNpemVyOiB7CisgICAgaGVpZ2h0OiAnMTAwJSAhaW1w b3J0YW50JywKKyAgICB3aWR0aDogJzEwMCUgIWltcG9ydGFudCcsCisgICAgYmFja2dyb3VuZDog dGhlbWUucGFsZXR0ZS5ncmV5WzQwMF0sCisgICAgcGFkZGluZzogJzhweCcsCisgIH0sCit9KSk7 CisKK2V4cG9ydCBmdW5jdGlvbiBDb2xsZWN0aW9uTm9kZVZpZXcoeworICBub2RlLAorICB0cmVl Tm9kZUluZm8sCisgIGl0ZW1Ob2RlRGF0YSwKKyAgaXRlbSwKKyAgcGdCcm93c2VyCit9KSB7Cisg IGNvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXMoKTsKKworICBjb25zdCBbZGF0YSwgc2V0RGF0YV0g PSBSZWFjdC51c2VTdGF0ZShbXSk7CisgIGNvbnN0IFtzZWxlY3RlZE9iamVjdCwgc2V0U2VsZWN0 ZWRPYmplY3RdID0gUmVhY3QudXNlU3RhdGUoW10pOworICBjb25zdCBbcmVsb2FkLCBzZXRSZWxv YWRdID0gUmVhY3QudXNlU3RhdGUoKTsKKworICBjb25zdCBbcGdUYWJsZUNvbHVtbnMsIHNldFBn VGFibGVDb2x1bW5zXSA9IFJlYWN0LnVzZVN0YXRlKFsKKyAgICB7CisgICAgICBIZWFkZXI6ICdw cm9wZXJ0aWVzJywKKyAgICAgIGFjY2Vzc29yOiAnUHJvcGVydGllcycsCisgICAgICBzb3J0Ymxl OiB0cnVlLAorICAgICAgcmVzaXphYmxlOiBmYWxzZSwKKyAgICAgIGRpc2FibGVHbG9iYWxGaWx0 ZXI6IHRydWUsCisgICAgfSwKKyAgICB7CisgICAgICBIZWFkZXI6ICd2YWx1ZScsCisgICAgICBh Y2Nlc3NvcjogJ3ZhbHVlJywKKyAgICAgIHNvcnRibGU6IHRydWUsCisgICAgICByZXNpemFibGU6 IGZhbHNlLAorICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogdHJ1ZSwKKyAgICB9LAorICBdKTsK KworICBjb25zdCBnZXRUYWJsZVNlbGVjdGVkUm93cyA9IChzZWxSb3dzKSA9PiB7CisgICAgc2V0 U2VsZWN0ZWRPYmplY3Qoc2VsUm93cyk7CisgIH07CisKKyAgY29uc3Qgb25Ecm9wID0gKHR5cGUp ID0+IHsKKyAgICBsZXQgc2VsUm93TW9kZWxzID0gc2VsZWN0ZWRPYmplY3QsCisgICAgICBzZWxS b3dzID0gW10sCisgICAgICBzZWxJdGVtID0gcGdCcm93c2VyLnRyZWUuc2VsZWN0ZWQoKSwKKyAg ICAgIHNlbGVjdGVkSXRlbURhdGEgPSBzZWxJdGVtID8gcGdCcm93c2VyLnRyZWUuaXRlbURhdGEo c2VsSXRlbSkgOiBudWxsLAorICAgICAgc2VsTm9kZSA9IHNlbGVjdGVkSXRlbURhdGEgJiYgcGdC cm93c2VyLk5vZGVzW3NlbGVjdGVkSXRlbURhdGEuX3R5cGVdLAorICAgICAgdXJsID0gdW5kZWZp bmVkLAorICAgICAgbXNnID0gdW5kZWZpbmVkLAorICAgICAgdGl0bGUgPSB1bmRlZmluZWQ7CisK KyAgICBpZiAoc2VsTm9kZSAmJiBzZWxOb2RlLnR5cGUgJiYgc2VsTm9kZS50eXBlID09ICdjb2xs LWNvbnN0cmFpbnRzJykgeworICAgICAgLy8gSW4gb3JkZXIgdG8gaWRlbnRpZnkgdGhlIGNvbnN0 cmFpbnQgdHlwZSwgdGhlIHR5cGUgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGUgc2VydmVyCisgICAg ICBzZWxSb3dzID0gc2VsUm93TW9kZWxzLm1hcCgocm93KSA9PiAoeworICAgICAgICBpZDogcm93 LmdldCgnb2lkJyksCisgICAgICAgIF90eXBlOiByb3cuZ2V0KCdfdHlwZScpLAorICAgICAgfSkp OworICAgIH0gZWxzZSB7CisgICAgICBzZWxSb3dzID0gc2VsUm93TW9kZWxzLm1hcCgocm93KSA9 PiByb3cub3JpZ2luYWwub2lkKTsKKyAgICB9CisKKyAgICBpZiAoc2VsUm93cy5sZW5ndGggPT09 IDApIHsKKyAgICAgIE5vdGlmeS5hbGVydCgKKyAgICAgICAgZ2V0dGV4dCgnRHJvcCBNdWx0aXBs ZScpLAorICAgICAgICBnZXR0ZXh0KCdQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBvYmplY3Qg dG8gZGVsZXRlLicpCisgICAgICApOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgh c2VsTm9kZSkgcmV0dXJuOworCisgICAgaWYgKHR5cGUgPT09ICdkcm9wQ2FzY2FkZScpIHsKKyAg ICAgIHVybCA9IHNlbE5vZGUuZ2VuZXJhdGVfdXJsKHNlbEl0ZW0sICdkZWxldGUnKTsKKyAgICAg IG1zZyA9IGdldHRleHQoCisgICAgICAgICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZHJvcCBh bGwgdGhlIHNlbGVjdGVkIG9iamVjdHMgYW5kIGFsbCB0aGUgb2JqZWN0cyB0aGF0IGRlcGVuZCBv biB0aGVtPycKKyAgICAgICk7CisgICAgICB0aXRsZSA9IGdldHRleHQoJ0RST1AgQ0FTQ0FERSBt dWx0aXBsZSBvYmplY3RzPycpOworICAgIH0gZWxzZSB7CisgICAgICB1cmwgPSBzZWxOb2RlLmdl bmVyYXRlX3VybChzZWxJdGVtLCAnZHJvcCcpOworICAgICAgbXNnID0gZ2V0dGV4dCgnQXJlIHlv dSBzdXJlIHlvdSB3YW50IHRvIGRyb3AgYWxsIHRoZSBzZWxlY3RlZCBvYmplY3RzPycpOworICAg ICAgdGl0bGUgPSBnZXR0ZXh0KCdEUk9QIG11bHRpcGxlIG9iamVjdHM/Jyk7CisgICAgfQorCisg ICAgY29uc3QgYXBpID0gZ2V0QXBpSW5zdGFuY2UoKTsKKyAgICBsZXQgZHJvcE5vZGVQcm9wZXJ0 aWVzID0gZnVuY3Rpb24gKCkgeworICAgICAgYXBpCisgICAgICAgIC5kZWxldGUodXJsLCB7Cisg ICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoeyBpZHM6IHNlbFJvd3MgfSksCisgICAgICAg ICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JywKKyAgICAg ICAgfSkKKyAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykgeworICAgICAgICAgIGlmIChyZXMu c3VjY2VzcyA9PSAwKSB7CisgICAgICAgICAgICBwZ0Jyb3dzZXIucmVwb3J0X2Vycm9yKHJlcy5l cnJvcm1zZywgcmVzLmluZm8pOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwZ0Jy b3dzZXIuRXZlbnRzLnRyaWdnZXIoCisgICAgICAgICAgICAgICdwZ2FkbWluOmJyb3dzZXI6dHJl ZTpyZWZyZXNoJywKKyAgICAgICAgICAgICAgc2VsSXRlbSB8fCBwZ0Jyb3dzZXIudHJlZS5zZWxl Y3RlZCgpLAorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rp b24gKCkgeworICAgICAgICAgICAgICAgICAgcGdCcm93c2VyLnRyZWUuc2VsZWN0KHNlbEl0ZW0p OworICAgICAgICAgICAgICAgICAgc2VsTm9kZS5jYWxsYmFja3Muc2VsZWN0ZWQuYXBwbHkoc2Vs Tm9kZSwgW3NlbEl0ZW1dKTsKKyAgICAgICAgICAgICAgICAvLyAgIHNldFRpbWVvdXQoZnVuY3Rp b24gKCkgeworICAgICAgICAgICAgICAgIC8vICAgICBwZ0Jyb3dzZXIudHJlZS5zZWxlY3Qoc2Vs SXRlbSk7CisgICAgICAgICAgICAgICAgLy8gICAgIHNlbE5vZGUuY2FsbGJhY2tzLnNlbGVjdGVk LmFwcGx5KHNlbE5vZGUsIFtzZWxJdGVtXSk7CisgICAgICAgICAgICAgICAgLy8gICB9LCAxMDAp OworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7Cisg ICAgICAgICAgfQorICAgICAgICAgIHNldFJlbG9hZCh0cnVlKTsKKyAgICAgICAgfSkKKyAgICAg ICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgeworICAgICAgICAgIE5vdGlmeS5lcnJvcigKKyAg ICAgICAgICAgIGdldHRleHQoJ0Vycm9yIGRyb3BwaW5nICVzJywgc2VsZWN0ZWRJdGVtRGF0YS5f bGFiZWwudG9Mb3dlckNhc2UoKSksCisgICAgICAgICAgICBlcnJvci5tZXNzYWdlCisgICAgICAg ICAgKTsKKyAgICAgICAgLy8gICBOb3RpZnkucGdOb3RpZmllcigKKyAgICAgICAgLy8gICAgIGVy cm9yLAorICAgICAgICAvLyAgICAgeGhyLAorICAgICAgICAvLyAgICAgZ2V0dGV4dCgnRXJyb3Ig ZHJvcHBpbmcgJXMnLCBzZWxlY3RlZEl0ZW1EYXRhLl9sYWJlbC50b0xvd2VyQ2FzZSgpKSwKKyAg ICAgICAgLy8gICAgIGZ1bmN0aW9uIChhbGVydE1zZykgeworICAgICAgICAvLyAgICAgICBpZiAo YWxlcnRNc2cgPT0gJ0NSWVBUS0VZX1NFVCcpIHsKKyAgICAgICAgLy8gICAgICAgICBvbkRyb3Ao dHlwZSk7CisgICAgICAgIC8vICAgICAgIH0gZWxzZSB7CisgICAgICAgIC8vICAgICAgICAgLy8g JChwZ0Jyb3dzZXIucGFuZWxzWydwcm9wZXJ0aWVzJ10ucGFuZWwpLnJlbW92ZURhdGEoJ25vZGUt cHJvcCcpOworICAgICAgICAvLyAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMudHJpZ2dlcigKKyAg ICAgICAgLy8gICAgICAgICAgICdwZ2FkbWluOmJyb3dzZXI6dHJlZTpyZWZyZXNoJywKKyAgICAg ICAgLy8gICAgICAgICAgIHNlbEl0ZW0gfHwgcGdCcm93c2VyLnRyZWUuc2VsZWN0ZWQoKSwKKyAg ICAgICAgLy8gICAgICAgICAgIHsKKyAgICAgICAgLy8gICAgICAgICAgICAgc3VjY2VzczogZnVu Y3Rpb24gKCkgeworICAgICAgICAvLyAgICAgICAgICAgICAgIHNlbE5vZGUuY2FsbGJhY2tzLnNl bGVjdGVkLmFwcGx5KHNlbE5vZGUsIFtzZWxJdGVtXSk7CisgICAgICAgIC8vICAgICAgICAgICAg IH0sCisgICAgICAgIC8vICAgICAgICAgICB9CisgICAgICAgIC8vICAgICAgICAgKTsKKyAgICAg ICAgLy8gICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgLy8gICAgICAgfQorICAgICAgICAv LyAgICAgfQorICAgICAgICAvLyAgICk7CisgICAgICAgIH0pOworICAgIH07CisKKyAgICBpZiAo Y29uZmlybSkgeworICAgICAgTm90aWZ5LmNvbmZpcm0odGl0bGUsIG1zZywgZHJvcE5vZGVQcm9w ZXJ0aWVzLCBudWxsKTsKKyAgICB9IGVsc2UgeworICAgICAgZHJvcE5vZGVQcm9wZXJ0aWVzKCk7 CisgICAgfQorICB9OworCisgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7CisgICAgbGV0IG5vZGVP YmogPQorICAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzW2l0ZW1Ob2RlRGF0YS5fdHlwZS5yZXBs YWNlKCdjb2xsLScsICcnKV07CisKKyAgICBsZXQgc2NoZW1hID0gbm9kZU9iai5nZXRTY2hlbWEu Y2FsbChub2RlT2JqLCB0cmVlTm9kZUluZm8sIGl0ZW1Ob2RlRGF0YSk7CisgICAgbGV0IHVybCA9 IGdlbmVyYXRlQ29sbGVjdGlvblVSTC5jYWxsKG5vZGVPYmosIGl0ZW0sICdwcm9wZXJ0aWVzJyk7 CisKKyAgICBjb25zdCBhcGkgPSBnZXRBcGlJbnN0YW5jZSgpOworCisgICAgbGV0IHRhYmxlQ29s dW1ucyA9IFtdOworCisgICAgaWYgKGl0ZW1Ob2RlRGF0YS5fdHlwZS5pbmRleE9mKCdjb2xsLScp ID4gLTEpIHsKKyAgICAgIHNjaGVtYS5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHsKKyAgICAg ICAgaWYgKG5vZGUuY29sdW1ucy5pbmRleE9mKGZpZWxkLmlkKSA+IC0xKSB7CisgICAgICAgICAg dmFyIGNvbHVtbiA9IHsKKyAgICAgICAgICAgIEhlYWRlcjogZmllbGQubGFiZWwsCisgICAgICAg ICAgICBhY2Nlc3NvcjogZmllbGQuaWQsCisgICAgICAgICAgICBzb3J0YmxlOiB0cnVlLAorICAg ICAgICAgICAgcmVzaXphYmxlOiBmYWxzZSwKKyAgICAgICAgICAgIGRpc2FibGVHbG9iYWxGaWx0 ZXI6IHRydWUsCisgICAgICAgICAgfTsKKyAgICAgICAgICB0YWJsZUNvbHVtbnMucHVzaChjb2x1 bW4pOworICAgICAgICB9CisgICAgICB9KTsKKyAgICAgIGFwaSh7CisgICAgICAgIHVybDogdXJs LAorICAgICAgICB0eXBlOiAnR0VUJywKKyAgICAgIH0pCisgICAgICAgIC50aGVuKChyZXMpID0+ IHsKKyAgICAgICAgICByZXMuZGF0YS5mb3JFYWNoKChlbGVtZW50KSA9PiB7CisgICAgICAgICAg ICBlbGVtZW50WydpY29uJ10gPSAnJzsKKyAgICAgICAgICB9KTsKKyAgICAgICAgICBzZXRQZ1Rh YmxlQ29sdW1ucyh0YWJsZUNvbHVtbnMpOworICAgICAgICAgIHNldERhdGEocmVzLmRhdGEpOwor ICAgICAgICB9KQorICAgICAgICAuY2F0Y2goKGVycikgPT4geworICAgICAgICAgIE5vdGlmeS5h bGVydCgKKyAgICAgICAgICAgIGdldHRleHQoJ0ZhaWxlZCB0byByZXRyaWV2ZSBkYXRhIGZyb20g dGhlIHNlcnZlci4nKSwKKyAgICAgICAgICAgIGdldHRleHQoZXJyLm1lc3NhZ2UpCisgICAgICAg ICAgKTsKKyAgICAgICAgfSk7CisgICAgfQorICB9LCBbaXRlbU5vZGVEYXRhLCBub2RlLCBpdGVt LCByZWxvYWRdKTsKKworICByZXR1cm4gKAorICAgIDxUaGVtZT4KKyAgICAgIDxCb3ggY2xhc3NO YW1lPXtjbGFzc2VzLmRlbGV0ZUJ1dHRvbn0+CisgICAgICAgIDxCdXR0b24KKyAgICAgICAgICB2 YXJpYW50PSJvdXRsaW5lZCIKKyAgICAgICAgICBzdGFydEljb249ezxEZWxldGVJY29uICAvPn0K KyAgICAgICAgICBhcmlhLWxhYmVsPSJEZWxldGUvRHJvcCIKKyAgICAgICAgICB0aXRsZT17Z2V0 dGV4dCgnRGVsZXRlL0Ryb3AnKX0KKyAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7CisgICAgICAg ICAgICAvLyBzZXRSZWxvYWQob25Ecm9wKCdkcm9wJykpOworICAgICAgICAgICAgb25Ecm9wKCdk cm9wJyk7CisgICAgICAgICAgfX0KKyAgICAgICAgICBkaXNhYmxlZD17CisgICAgICAgICAgICAh Xy5pc1VuZGVmaW5lZChub2RlKSAmJiBfLmlzRnVuY3Rpb24obm9kZS5jYW5Ecm9wKQorICAgICAg ICAgICAgICA/ICFub2RlLmNhbkRyb3AuYXBwbHkobm9kZSwgW2l0ZW1Ob2RlRGF0YSwgaXRlbV0p CisgICAgICAgICAgICAgIDogIW5vZGUuY2FuRHJvcAorICAgICAgICAgIH0KKyAgICAgICAgPjwv QnV0dG9uPgorICAgICAgICA8QnV0dG9uCisgICAgICAgICAgdmFyaWFudD0ib3V0bGluZWQiCisg ICAgICAgICAgc3RhcnRJY29uPXs8RGVsZXRlU3dlZXBSb3VuZGVkSWNvbiAvPn0KKyAgICAgICAg ICBhcmlhLWxhYmVsPSJEcm9wIENhc2NhZGUiCisgICAgICAgICAgdGl0bGU9e2dldHRleHQoJ0Ry b3AgQ2FzY2FkZScpfQorICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHsKKyAgICAgICAgICAgIG9u RHJvcCgnZHJvcENhc2NhZGUnKTsKKyAgICAgICAgICB9fQorICAgICAgICAgIGRpc2FibGVkPXsK KyAgICAgICAgICAgICFfLmlzVW5kZWZpbmVkKG5vZGUpICYmIF8uaXNGdW5jdGlvbihub2RlLmNh bkRyb3BDYXNjYWRlKQorICAgICAgICAgICAgICA/ICFub2RlLmNhbkRyb3BDYXNjYWRlLmFwcGx5 KG5vZGUsIFtpdGVtTm9kZURhdGEsIGl0ZW1dKQorICAgICAgICAgICAgICA6ICFub2RlLmNhbkRy b3BDYXNjYWRlCisgICAgICAgICAgfQorICAgICAgICA+PC9CdXR0b24+CisgICAgICA8L0JveD4K KyAgICAgIDxQZ1RhYmxlCisgICAgICAgIGlzU2VsZWN0Um93PXt0cnVlfQorICAgICAgICBjbGFz c05hbWU9e2NsYXNzZXMuYXV0b1Jlc2l6ZXJ9CisgICAgICAgIGNvbHVtbnM9e3BnVGFibGVDb2x1 bW5zfQorICAgICAgICBkYXRhPXtkYXRhfQorICAgICAgICB0eXBlPXsncGFuZWwnfQorICAgICAg ICBnZXRTZWxlY3RlZFJvd3M9e2dldFRhYmxlU2VsZWN0ZWRSb3dzfQorICAgICAgPjwvUGdUYWJs ZT4KKyAgICA8L1RoZW1lPgorICApOworfQorCitDb2xsZWN0aW9uTm9kZVZpZXcucHJvcFR5cGVz ID0geworICBub2RlOiBQcm9wVHlwZXMuZnVuYywKKyAgaXRlbURhdGE6IFByb3BUeXBlcy5vYmpl Y3QsCisgIGl0ZW1Ob2RlRGF0YTogUHJvcFR5cGVzLm9iamVjdCwKKyAgdHJlZU5vZGVJbmZvOiBQ cm9wVHlwZXMub2JqZWN0LAorICBpdGVtOiBQcm9wVHlwZXMub2JqZWN0LAorICBwZ0Jyb3dzZXI6 IFByb3BUeXBlcy5vYmplY3QsCisgIHByZWZlcmVuY2VzOiBQcm9wVHlwZXMub2JqZWN0LAorICBz aWQ6IFByb3BUeXBlcy5udW1iZXIsCisgIGRpZDogUHJvcFR5cGVzLm51bWJlciwKKyAgcm93OiBQ cm9wVHlwZXMub2JqZWN0LAorICBzZXJ2ZXJDb25uZWN0ZWQ6IFByb3BUeXBlcy5ib29sLAorfTsK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL21pc2Mvc3FsL3N0YXRpYy9qcy9TcWwuanN4IGIvd2Vi L3BnYWRtaW4vbWlzYy9zcWwvc3RhdGljL2pzL1NxbC5qc3gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwLi41ZWVjNTdlOGQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9taXNjL3NxbC9zdGF0aWMvanMvU3FsLmpzeApAQCAtMCwwICsxLDExNCBAQAorLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8K Ky8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIw MTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJl IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitp bXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnOworaW1wb3J0IHsgZ2VuZXJh dGVOb2RlVXJsIH0gZnJvbSAnLi4vLi4vLi4vLi4vYnJvd3Nlci9zdGF0aWMvanMvbm9kZV9hamF4 JzsKK2ltcG9ydCBnZXR0ZXh0IGZyb20gJ3NvdXJjZXMvZ2V0dGV4dCc7CitpbXBvcnQgUHJvcFR5 cGVzIGZyb20gJ3Byb3AtdHlwZXMnOworaW1wb3J0IE5vdGlmeSBmcm9tICcuLi8uLi8uLi8uLi9z dGF0aWMvanMvaGVscGVycy9Ob3RpZmllcic7CitpbXBvcnQgZ2V0QXBpSW5zdGFuY2UgZnJvbSAn c291cmNlcy9hcGlfaW5zdGFuY2UnOworaW1wb3J0IHsgbWFrZVN0eWxlcyB9IGZyb20gJ0BtYXRl cmlhbC11aS9jb3JlL3N0eWxlcyc7CitpbXBvcnQgQ29kZU1pcnJvciBmcm9tICcuLi8uLi8uLi8u Li9zdGF0aWMvanMvY29tcG9uZW50cy9Db2RlTWlycm9yJzsKKworY29uc3QgdXNlU3R5bGVzID0g bWFrZVN0eWxlcygodGhlbWUpID0+ICh7CisgIHRleHRBcmVhOiB7CisgICAgaGVpZ2h0OiAnMTAw JSAhaW1wb3J0YW50JywKKyAgICB3aWR0aDogJzEwMCUgIWltcG9ydGFudCcsCisgICAgYmFja2dy b3VuZDogdGhlbWUucGFsZXR0ZS5ncmV5WzQwMF0sCisgICAgb3ZlcmZsb3c6ICdhdXRvICFpbXBv cnRhbnQnLAorICAgIG1pbkhlaWdodDogJzEwMCUnLAorICAgIG1pbldpZHRoOiAnMTAwJScsCisg IH0sCit9KSk7CisKK2V4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNRTCh7IG5vZGVEYXRhLCBub2Rl LCAuLi5wcm9wcyB9KSB7CisgIGNvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXMoKTsKKyAgY29uc3Qg W25vZGVTUUwsIHNldE5vZGVTUUxdID0gUmVhY3QudXNlU3RhdGUoJycpOworCisgIGNvbnN0IFtt c2csIHNldE1zZ10gPSBSZWFjdC51c2VTdGF0ZSgnJyk7CisKKyAgdXNlRWZmZWN0KCgpID0+IHsK KyAgICB2YXIgc3FsID0gJy0tICcgKyBnZXR0ZXh0KCdQbGVhc2Ugc2VsZWN0IGFuIG9iamVjdCBp biB0aGUgdHJlZSB2aWV3LicpOworICAgIGlmIChub2RlKSB7CisgICAgICBsZXQgdXJsID0gZ2Vu ZXJhdGVOb2RlVXJsLmNhbGwoCisgICAgICAgIG5vZGUsCisgICAgICAgIHByb3BzLnRyZWVOb2Rl SW5mbywKKyAgICAgICAgJ3NxbCcsCisgICAgICAgIG5vZGVEYXRhLAorICAgICAgICB0cnVlLAor ICAgICAgICBub2RlLnVybF9qdW1wX2FmdGVyX25vZGUKKyAgICAgICk7CisgICAgICBzcWwgPQor ICAgICAgICAnLS0gJyArIGdldHRleHQoJ05vIFNRTCBjb3VsZCBiZSBnZW5lcmF0ZWQgZm9yIHRo ZSBzZWxlY3RlZCBvYmplY3QuJyk7CisKKyAgICAgIGlmIChub2RlLmhhc1NRTCkgeworICAgICAg ICBjb25zdCBhcGkgPSBnZXRBcGlJbnN0YW5jZSgpOworCisgICAgICAgIGFwaSh7CisgICAgICAg ICAgdXJsOiB1cmwsCisgICAgICAgICAgdHlwZTogJ0dFVCcsCisgICAgICAgIH0pCisgICAgICAg ICAgLnRoZW4oKHJlcykgPT4geworICAgICAgICAgICAgaWYgKHJlcy5kYXRhLmxlbmd0aCA+IDAp IHsKKyAgICAgICAgICAgICAgc2V0Tm9kZVNRTChyZXMuZGF0YSk7CisgICAgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgICBzZXRNc2coc3FsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICB9KQorICAgICAgICAgIC5jYXRjaCgoZSkgPT4geworICAgICAgICAgICAgTm90aWZ5LmFsZXJ0 KAorICAgICAgICAgICAgICBnZXR0ZXh0KCdGYWlsZWQgdG8gcmV0cmlldmUgZGF0YSBmcm9tIHRo ZSBzZXJ2ZXIuJyksCisgICAgICAgICAgICAgIGdldHRleHQoZS5tZXNzYWdlKQorICAgICAgICAg ICAgKTsKKyAgICAgICAgICAgIC8vIHNob3cgZmFpbGVkIG1lc3NhZ2UuCisgICAgICAgICAgICBz ZXRNc2coZ2V0dGV4dCgnRmFpbGVkIHRvIHJldHJpZXZlIGRhdGEgZnJvbSB0aGUgc2VydmVyLicp KTsKKyAgICAgICAgICB9KTsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKHNxbCAhPSAnJykgewor ICAgICAgc2V0TXNnKHNxbCk7CisgICAgfQorICAgIHJldHVybiAoKSA9PiB7CisgICAgICBzZXRO b2RlU1FMKFtdKTsKKyAgICB9OworICB9LCBbbm9kZURhdGFdKTsKKworICByZXR1cm4gKAorICAg IDw+CisgICAgICB7bm9kZVNRTC5sZW5ndGggPiAwID8gKAorICAgICAgICA8Q29kZU1pcnJvcgor ICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy50ZXh0QXJlYX0KKyAgICAgICAgICB2YWx1ZT17 bm9kZVNRTH0KKyAgICAgICAgICBvcHRpb25zPXt7CisgICAgICAgICAgICBsaW5lTnVtYmVyczog dHJ1ZSwKKyAgICAgICAgICAgIG1vZGU6ICd0ZXh0L3gtcGdzcWwnLAorICAgICAgICAgICAgcmVh ZE9ubHk6IHRydWUsCisgICAgICAgICAgfX0KKyAgICAgICAgLz4KKyAgICAgICkgOiAoCisgICAg ICAgIDxDb2RlTWlycm9yCisgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnRleHRBcmVhfQor ICAgICAgICAgIHZhbHVlPXttc2d9CisgICAgICAgICAgb3B0aW9ucz17eworICAgICAgICAgICAg bGluZU51bWJlcnM6IHRydWUsCisgICAgICAgICAgICBtb2RlOiAndGV4dC94LXBnc3FsJywKKyAg ICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLAorICAgICAgICAgIH19CisgICAgICAgIC8+CisgICAg ICApfQorICAgIDwvPgorICApOworfQorCitTUUwucHJvcFR5cGVzID0geworICByZXM6IFByb3BU eXBlcy5hcnJheSwKKyAgbm9kZURhdGE6IFByb3BUeXBlcy5vYmplY3QsCisgIHRyZWVOb2RlSW5m bzogUHJvcFR5cGVzLm9iamVjdCwKKyAgbm9kZTogUHJvcFR5cGVzLmZ1bmMsCit9OwpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vbWlzYy9zcWwvc3RhdGljL2pzL3NxbC5qcyBiL3dlYi9wZ2FkbWlu L21pc2Mvc3FsL3N0YXRpYy9qcy9zcWwuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDU3ZWUzMTI5YS4uMDAwMDAwMDAwCi0tLSBhL3dlYi9wZ2FkbWluL21pc2Mvc3FsL3N0YXRpYy9q cy9zcWwuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyMDcgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIHBn QWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAy MDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCi0vLyBUaGlzIHNvZnR3YXJlIGlzIHJl bGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKLS8vCi0vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1pbXBvcnQg Tm90aWZ5IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9oZWxwZXJzL05vdGlmaWVyJzsKLQot ZGVmaW5lKCdtaXNjLnNxbCcsIFsKLSAgJ3NvdXJjZXMvZ2V0dGV4dCcsICd1bmRlcnNjb3JlJywg J2pxdWVyeScsCi0gICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRt aW4uYWxlcnRpZnlqcycsCi1dLCBmdW5jdGlvbihnZXR0ZXh0LCBfLCAkLCBwZ0FkbWluLCBwZ0Jy b3dzZXIsIEFsZXJ0aWZ5KSB7Ci0KLSAgcGdCcm93c2VyLlNob3dOb2RlU1FMID0gcGdCcm93c2Vy LlNob3dOb2RlU1FMIHx8IHt9OwotCi0gIGlmIChwZ0Jyb3dzZXIuU2hvd05vZGVTUUwuaW5pdGlh bGl6ZWQpIHsKLSAgICByZXR1cm4gcGdCcm93c2VyLlNob3dOb2RlU1FMOwotICB9Ci0gIHZhciB3 Y0RvY2tlciA9IHdpbmRvdy53Y0RvY2tlcjsKLQotICBfLmV4dGVuZChwZ0Jyb3dzZXIuU2hvd05v ZGVTUUwsIHsKLSAgICBpbml0OiBmdW5jdGlvbigpIHsKLSAgICAgIGlmICh0aGlzLmluaXRpYWxp emVkKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIHRoaXMuaW5pdGlhbGl6ZWQg PSB0cnVlOwotICAgICAgXy5iaW5kQWxsKHRoaXMsICdzaG93U1FMJywgJ3NxbFBhbmVsVmlzaWJp bGl0eUNoYW5nZWQnKTsKLQotICAgICAgdmFyIHNxbFBhbmVsczsKLSAgICAgIHRoaXMuc3FsUGFu ZWxzID0gc3FsUGFuZWxzID0gcGdCcm93c2VyLmRvY2tlci5maW5kUGFuZWxzKCdzcWwnKTsKLQot ICAgICAgLy8gV2Ugd2lsbCBsaXN0ZW5kIHRvIHRoZSB2aXNpYmlsaXR5IGNoYW5nZSBvZiB0aGUg U1FMIHBhbmVsCi0gICAgICBwZ0Jyb3dzZXIuRXZlbnRzLm9uKAotICAgICAgICAncGdhZG1pbi1i cm93c2VyOnBhbmVsLXNxbDonICsgd2NEb2NrZXIuRVZFTlQuVklTSUJJTElUWV9DSEFOR0VELAot ICAgICAgICB0aGlzLnNxbFBhbmVsVmlzaWJpbGl0eUNoYW5nZWQKLSAgICAgICk7Ci0KLSAgICAg IHBnQnJvd3Nlci5FdmVudHMub24oCi0gICAgICAgICdwZ2FkbWluOmJyb3dzZXI6bm9kZTp1cGRh dGVkJywKLSAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgaWYgKHRoaXMuc3FsUGFuZWxz ICYmIHRoaXMuc3FsUGFuZWxzLmxlbmd0aCkgewotICAgICAgICAgICAgJCh0aGlzLnNxbFBhbmVs c1swXSkuZGF0YSgnbm9kZS1wcm9wJywgJycpOwotICAgICAgICAgICAgdGhpcy5zcWxQYW5lbFZp c2liaWxpdHlDaGFuZ2VkKHRoaXMuc3FsUGFuZWxzWzBdKTsKLSAgICAgICAgICB9Ci0gICAgICAg IH0sIHRoaXMKLSAgICAgICk7Ci0KLSAgICAgIC8vIEhtbS4uIERpZCB3ZSBmaW5kIHRoZSBTUUwg cGFuZWwsIGFuZCBpcyBpdCB2aXNpYmxlIChvcGVuZWQpPwotICAgICAgLy8gSWYgdGhhdCBpcyB0 aGUgY2FzZSAtIHdlIG5lZWQgdG8gbGlzdGVuIHRoZSBicm93c2VyIHRyZWUgc2VsZWN0aW9uCi0g ICAgICAvLyBldmVudHMuCi0gICAgICBpZiAoc3FsUGFuZWxzLmxlbmd0aCA9PSAwKSB7Ci0gICAg ICAgIHBnQnJvd3Nlci5FdmVudHMub24oCi0gICAgICAgICAgJ3BnYWRtaW4tYnJvd3NlcjpwYW5l bC1zcWw6JyArIHdjRG9ja2VyLkVWRU5ULklOSVQsCi0gICAgICAgICAgZnVuY3Rpb24oKSB7Ci0g ICAgICAgICAgICBpZiAoKHNxbFBhbmVsc1swXS5pc1Zpc2libGUoKSkgfHwgc3FsUGFuZWxzLmxl bmd0aCAhPSAxKSB7Ci0gICAgICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMub24oCi0gICAgICAg ICAgICAgICAgJ3BnYWRtaW4tYnJvd3Nlcjp0cmVlOnNlbGVjdGVkJywgdGhpcy5zaG93U1FMCi0g ICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMub24oCi0gICAg ICAgICAgICAgICAgJ3BnYWRtaW4tYnJvd3Nlcjp0cmVlOnJlYWN0U2VsZWN0ZWQnLCB0aGlzLnJl YWN0U2hvd1NRTAotICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICBwZ0Jyb3dzZXIuRXZl bnRzLm9uKAotICAgICAgICAgICAgICAgICdwZ2FkbWluLWJyb3dzZXI6dHJlZTpyZWZyZXNoaW5n JywgdGhpcy5yZWZyZXNoU1FMLCB0aGlzCi0gICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9 Ci0gICAgICAgICAgfS5iaW5kKHRoaXMpCi0gICAgICAgICk7Ci0gICAgICB9IGVsc2UgewotICAg ICAgICBpZiAoKHNxbFBhbmVsc1swXS5pc1Zpc2libGUoKSkgfHwgc3FsUGFuZWxzLmxlbmd0aCAh PSAxKSB7Ci0gICAgICAgICAgcGdCcm93c2VyLkV2ZW50cy5vbigncGdhZG1pbi1icm93c2VyOnRy ZWU6c2VsZWN0ZWQnLCB0aGlzLnNob3dTUUwpOwotICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMu b24oJ3BnYWRtaW4tYnJvd3Nlcjp0cmVlOnJlYWN0U2VsZWN0ZWQnLCB0aGlzLnJlYWN0U2hvd1NR TCk7Ci0gICAgICAgICAgcGdCcm93c2VyLkV2ZW50cy5vbigKLSAgICAgICAgICAgICdwZ2FkbWlu LWJyb3dzZXI6dHJlZTpyZWZyZXNoaW5nJywgdGhpcy5yZWZyZXNoU1FMLCB0aGlzCi0gICAgICAg ICAgKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0sCi0gICAgcmVmcmVzaFNRTDogZnVuY3Rp b24oaXRlbSwgZGF0YSwgbm9kZSkgewotICAgICAgdmFyIHRoYXQgPSB0aGlzLAotICAgICAgICBj YWNoZV9mbGFnID0gewotICAgICAgICAgIG5vZGVfdHlwZTogZGF0YS5fdHlwZSwKLSAgICAgICAg ICB1cmw6IG5vZGUuZ2VuZXJhdGVfdXJsKGl0ZW0sICdzcWwnLCBkYXRhLCB0cnVlKSwKLSAgICAg ICAgfTsKLQotICAgICAgaWYgKF8uaXNFcXVhbCgkKHRoYXQuc3FsUGFuZWxzWzBdKS5kYXRhKCdu b2RlLXByb3AnKSwgY2FjaGVfZmxhZykpIHsKLSAgICAgICAgLy8gUmVzZXQgdGhlIGN1cnJlbnQg aXRlbSBzZWxlY3Rpb24KLSAgICAgICAgJCh0aGF0LnNxbFBhbmVsc1swXSkuZGF0YSgnbm9kZS1w cm9wJywgJycpOwotICAgICAgICB0aGF0LnNob3dTUUwoaXRlbSwgZGF0YSwgbm9kZSk7Ci0gICAg ICB9Ci0gICAgfSwKLSAgICBzaG93U1FMOiBmdW5jdGlvbihpdGVtLCBkYXRhLCBub2RlKSB7Ci0g ICAgICAvKioKLSAgICAgICAqIFdlIGNhbid0IHN0YXJ0IGZldGNoaW5nIHRoZSBTUUwgaW1tZWRp YXRlbHksIGl0IGlzIHBvc3NpYmxlIC0gdGhlIHVzZXIKLSAgICAgICAqIGlzIGp1c3QgdXNpbmcg a2V5Ym9hcmRzIHRvIHNlbGVjdCB0aGUgbm9kZSwgYW5kIGp1c3QgdHJhdmVyc2luZwotICAgICAg ICogdGhyb3VnaC4gV2Ugd2lsbCB3YWl0IGZvciBzb21lIHRpbWUgYmVmb3JlIGZldGNoaW5nIHRo ZSBSZXZlcnNlZAotICAgICAgICogRW5naW5lZXJpbmcgU1FMLgotICAgICAgICoqLwotCi0gICAg ICB0aGlzLnRpbWVvdXQgJiYgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7Ci0KLSAgICAgIHZh ciB0aGF0ID0gdGhpczsKLSAgICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQoCi0gICAgICAg IGZ1bmN0aW9uKCkgewotICAgICAgICAgIHZhciBzcWwgPSAnLS0gJyArIGdldHRleHQoJ1BsZWFz ZSBzZWxlY3QgYW4gb2JqZWN0IGluIHRoZSB0cmVlIHZpZXcuJyk7Ci0gICAgICAgICAgaWYgKG5v ZGUpIHsKLSAgICAgICAgICAgIHNxbCA9ICctLSAnICsgZ2V0dGV4dCgnTm8gU1FMIGNvdWxkIGJl IGdlbmVyYXRlZCBmb3IgdGhlIHNlbGVjdGVkIG9iamVjdC4nKTsKLSAgICAgICAgICAgIHZhciBu X3R5cGUgPSBkYXRhLl90eXBlLAotICAgICAgICAgICAgICB1cmwgPSBub2RlLmdlbmVyYXRlX3Vy bChpdGVtLCAnc3FsJywgZGF0YSwgdHJ1ZSksCi0gICAgICAgICAgICAgIHRyZWVIaWVyYXJjaHkg PSBwZ0Jyb3dzZXIudHJlZS5nZXRUcmVlTm9kZUhpZXJhcmNoeShpdGVtKSwKLSAgICAgICAgICAg ICAgY2FjaGVfZmxhZyA9IHsKLSAgICAgICAgICAgICAgICBub2RlX3R5cGU6IG5fdHlwZSwKLSAg ICAgICAgICAgICAgICB1cmw6IHVybCwKLSAgICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAg Ly8gQXZvaWQgdW5uZWNlc3NhcnkgcmVsb2FkcwotICAgICAgICAgICAgaWYgKF8uaXNFcXVhbCgk KHRoYXQuc3FsUGFuZWxzWzBdKS5kYXRhKCdub2RlLXByb3AnKSwgY2FjaGVfZmxhZykpIHsKLSAg ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gQ2FjaGUg dGhlIGN1cnJlbnQgSURzIGZvciBuZXh0IHRpbWUKLSAgICAgICAgICAgICQodGhhdC5zcWxQYW5l bHNbMF0pLmRhdGEoJ25vZGUtcHJvcCcsIGNhY2hlX2ZsYWcpOwotCi0gICAgICAgICAgICBpZiAo bm9kZS5oYXNTUUwpIHsKLQotICAgICAgICAgICAgICBzcWwgPSAnJzsKLSAgICAgICAgICAgICAg dmFyIHRpbWVyOwotICAgICAgICAgICAgICB2YXIgYWpheEhvb2sgPSBmdW5jdGlvbigpIHsKLSAg ICAgICAgICAgICAgICAkLmFqYXgoewotICAgICAgICAgICAgICAgICAgdXJsOiB1cmwsCi0gICAg ICAgICAgICAgICAgICB0eXBlOiAnR0VUJywKLSAgICAgICAgICAgICAgICAgIGJlZm9yZVNlbmQ6 IGZ1bmN0aW9uKHhocikgewotICAgICAgICAgICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRl cigKLSAgICAgICAgICAgICAgICAgICAgICBwZ0FkbWluLmNzcmZfdG9rZW5faGVhZGVyLCBwZ0Fk bWluLmNzcmZfdG9rZW4KLSAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAg ICAgLy8gR2VuZXJhdGUgYSB0aW1lciBmb3IgdGhlIHJlcXVlc3QKLSAgICAgICAgICAgICAgICAg ICAgdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAg IC8vIE5vdGlmeSB1c2VyIGlmIHJlcXVlc3QgaXMgdGFraW5nIGxvbmdlciB0aGFuIDEgc2Vjb25k Ci0gICAgICAgICAgICAgICAgICAgICAgcGdBZG1pbi5Ccm93c2VyLmVkaXRvci5zZXRWYWx1ZSgK LSAgICAgICAgICAgICAgICAgICAgICAgIGdldHRleHQoJ1JldHJpZXZpbmcgZGF0YSBmcm9tIHRo ZSBzZXJ2ZXIuLi4nKQotICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAg ICAgIH0sIDEwMDApOwotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9KS5k b25lKGZ1bmN0aW9uKHJlcykgewotICAgICAgICAgICAgICAgICAgaWYgKHBnQWRtaW4uQnJvd3Nl ci5lZGl0b3IuZ2V0VmFsdWUoKSAhPSByZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgcGdBZG1p bi5Ccm93c2VyLmVkaXRvci5zZXRWYWx1ZShyZXMpOwotICAgICAgICAgICAgICAgICAgfQotICAg ICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTsKLSAgICAgICAgICAgICAgICB9KS5m YWlsKGZ1bmN0aW9uKHhociwgZXJyb3IsIG1lc3NhZ2UpIHsKLSAgICAgICAgICAgICAgICAgIHZh ciBfbGFiZWwgPSB0cmVlSGllcmFyY2h5W25fdHlwZV0ubGFiZWw7Ci0gICAgICAgICAgICAgICAg ICBwZ0Jyb3dzZXIuRXZlbnRzLnRyaWdnZXIoCi0gICAgICAgICAgICAgICAgICAgICdwZ2FkbWlu Om5vZGU6cmV0cmlldmFsOmVycm9yJywgJ3NxbCcsIHhociwgZXJyb3IsIG1lc3NhZ2UsIGl0ZW0K LSAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgICBpZiAoIUFsZXJ0aWZ5LnBn SGFuZGxlSXRlbUVycm9yKHhociwgZXJyb3IsIG1lc3NhZ2UsIHsKLSAgICAgICAgICAgICAgICAg ICAgaXRlbTogaXRlbSwKLSAgICAgICAgICAgICAgICAgICAgaW5mbzogdHJlZUhpZXJhcmNoeSwK LSAgICAgICAgICAgICAgICAgIH0pKSB7Ci0gICAgICAgICAgICAgICAgICAgIE5vdGlmeS5wZ05v dGlmaWVyKAotICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCB4aHIsCi0gICAgICAgICAgICAg ICAgICAgICAgZ2V0dGV4dCgnRXJyb3IgcmV0cmlldmluZyB0aGUgaW5mb3JtYXRpb24gLSAlcycs IG1lc3NhZ2UgfHwgX2xhYmVsKSwKLSAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihtc2cp IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1zZyA9PT0gJ0NSWVBUS0VZX1NFVCcpIHsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgYWpheEhvb2soKTsKLSAgICAgICAgICAgICAgICAg ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybihh cmd1bWVudHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAg ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgYWpheEhvb2so KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBpZiAoc3FsICE9ICcn KSB7Ci0gICAgICAgICAgICBwZ0FkbWluLkJyb3dzZXIuZWRpdG9yLnNldFZhbHVlKHNxbCk7Ci0g ICAgICAgICAgfQotICAgICAgICB9LCA0MDApOwotICAgIH0sCi0gICAgc3FsUGFuZWxWaXNpYmls aXR5Q2hhbmdlZDogZnVuY3Rpb24ocGFuZWwpIHsKLSAgICAgIGlmIChwYW5lbC5pc1Zpc2libGUo KSkgewotICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLAotICAgICAgICAgIGkgPSB0LnNl bGVjdGVkKCksCi0gICAgICAgICAgZCA9IGkgJiYgdC5pdGVtRGF0YShpKSwKLSAgICAgICAgICBu ID0gaSAmJiBkICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXTsKLQotICAgICAgICBwZ0Jyb3dz ZXIuU2hvd05vZGVTUUwuc2hvd1NRTC5hcHBseShwZ0Jyb3dzZXIuU2hvd05vZGVTUUwsIFtpLCBk LCBuXSk7Ci0KLSAgICAgICAgLy8gV2Ugd2lsbCBzdGFydCBsaXN0ZW5pbmcgdGhlIHRyZWUgc2Vs ZWN0aW9uIGV2ZW50LgotICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLm9uKCdwZ2FkbWluLWJyb3dz ZXI6dHJlZTpzZWxlY3RlZCcsIHBnQnJvd3Nlci5TaG93Tm9kZVNRTC5zaG93U1FMKTsKLSAgICAg ICAgcGdCcm93c2VyLkV2ZW50cy5vbigKLSAgICAgICAgICAncGdhZG1pbi1icm93c2VyOnRyZWU6 cmVmcmVzaGluZycsIHBnQnJvd3Nlci5TaG93Tm9kZVNRTC5yZWZyZXNoU1FMLCB0aGlzCi0gICAg ICAgICk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGxpc3Rl biB0aGUgdHJlZSBpdGVtIHNlbGVjdGlvbiBldmVudC4KLSAgICAgICAgcGdCcm93c2VyLkV2ZW50 cy5vZmYoJ3BnYWRtaW4tYnJvd3Nlcjp0cmVlOnNlbGVjdGVkJywgcGdCcm93c2VyLlNob3dOb2Rl U1FMLnNob3dTUUwpOwotICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLm9mZigKLSAgICAgICAgICAn cGdhZG1pbi1icm93c2VyOnRyZWU6cmVmcmVzaGluZycsIHBnQnJvd3Nlci5TaG93Tm9kZVNRTC5y ZWZyZXNoU1FMLCB0aGlzCi0gICAgICAgICk7Ci0gICAgICB9Ci0gICAgfSwKLSAgfSk7Ci0KLSAg cmV0dXJuIHBnQnJvd3Nlci5TaG93Tm9kZVNRTDsKLX0pOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vbWlzYy9zdGF0aXN0aWNzL3N0YXRpYy9qcy9TdGF0aXN0aWNzLmpzeCBiL3dlYi9wZ2FkbWlu L21pc2Mvc3RhdGlzdGljcy9zdGF0aWMvanMvU3RhdGlzdGljcy5qc3gKaW5kZXggMGQyNTliNmQ3 Li5lZWIxOTA4NTkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL21pc2Mvc3RhdGlzdGljcy9zdGF0 aWMvanMvU3RhdGlzdGljcy5qc3gKKysrIGIvd2ViL3BnYWRtaW4vbWlzYy9zdGF0aXN0aWNzL3N0 YXRpYy9qcy9TdGF0aXN0aWNzLmpzeApAQCAtNTgsNyArNTgsNyBAQCBmdW5jdGlvbiBnZXRDb2x1 bW4oZGF0YSwgc2luZ2xlTGluZVN0YXRpc3RpY3MpIHsKICAgICAgICAgICBhY2Nlc3Nvcjogcm93 Lm5hbWUsCiAgICAgICAgICAgc29ydGJsZTogdHJ1ZSwKICAgICAgICAgICByZXNpemFibGU6IGZh bHNlLAotICAgICAgICAgIGRpc2FibGVHbG9iYWxGaWx0ZXI6IHRydWUsCisgICAgICAgICAgZGlz YWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCiAgICAgICAgIH07CiAgICAgICAgIGNvbHVtbnMucHVz aChjb2x1bW4pOwogICAgICAgfSk7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMv Y29tcG9uZW50cy9QZ1RhYmxlLmpzeCBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9jb21wb25lbnRz L1BnVGFibGUuanN4CmluZGV4IGYxNzAxOGExYy4uZTcwMTVhNDMwIDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi9zdGF0aWMvanMvY29tcG9uZW50cy9QZ1RhYmxlLmpzeAorKysgYi93ZWIvcGdhZG1p bi9zdGF0aWMvanMvY29tcG9uZW50cy9QZ1RhYmxlLmpzeApAQCAtOCwxMyArOCwyNSBAQAogLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8KIAogaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JzsKLWltcG9ydCB7IHVzZVRhYmxlLCB1c2VS b3dTZWxlY3QsIHVzZVNvcnRCeSwgdXNlUmVzaXplQ29sdW1ucywgdXNlRmxleExheW91dCwgdXNl R2xvYmFsRmlsdGVyIH0gZnJvbSAncmVhY3QtdGFibGUnOworaW1wb3J0IHsKKyAgdXNlVGFibGUs CisgIHVzZVJvd1NlbGVjdCwKKyAgdXNlU29ydEJ5LAorICB1c2VSZXNpemVDb2x1bW5zLAorICB1 c2VGbGV4TGF5b3V0LAorICB1c2VHbG9iYWxGaWx0ZXIsCisgIHVzZUV4cGFuZGVkLAorfSBmcm9t ICdyZWFjdC10YWJsZSc7CiBpbXBvcnQgeyBGaXhlZFNpemVMaXN0IH0gZnJvbSAncmVhY3Qtd2lu ZG93JzsKIGltcG9ydCB7IG1ha2VTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHls ZXMnOwogaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7CiBpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3By b3AtdHlwZXMnOwogaW1wb3J0IEF1dG9TaXplciBmcm9tICdyZWFjdC12aXJ0dWFsaXplZC1hdXRv LXNpemVyJzsKIGltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUnOwor aW1wb3J0IHsgSW5wdXRUZXh0IH0gZnJvbSAnLi9Gb3JtQ29tcG9uZW50cyc7CitpbXBvcnQgRm9y bVZpZXcgZnJvbSAnc291cmNlcy9TY2hlbWFWaWV3JzsKK2ltcG9ydCB7IEJveCB9IGZyb20gJ0Bt YXRlcmlhbC11aS9jb3JlJzsKKwogLyogZXNsaW50LWRpc2FibGUgcmVhY3QvZGlzcGxheS1uYW1l ICovCiBjb25zdCB1c2VTdHlsZXMgPSBtYWtlU3R5bGVzKCh0aGVtZSkgPT4gKHsKICAgcm9vdDog ewpAQCAtMjgsMjMgKzQwLDU2IEBAIGNvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXMoKHRoZW1l KSA9PiAoewogICAgIGhlaWdodDogJzEwMCUgIWltcG9ydGFudCcsCiAgICAgd2lkdGg6ICcxMDAl ICFpbXBvcnRhbnQnLAogICB9LAorICB0cjp7CisgICAgcG9zaXRpb246ICd1bnNldCAhaW1wb3J0 YW50JworICB9LAogICBmaXhlZFNpemVMaXN0OiB7CiAgICAgLy8gcG9zaXRpb246ICdyZWxhdGl2 ZScsCiAgICAgZGlyZWN0aW9uOiAnbHRyJywKICAgICBvdmVyZmxvd1g6ICdoaWRkZW4gIWltcG9y dGFudCcsCi0gICAgb3ZlcmZsb3c6ICdvdmVybGF5ICFpbXBvcnRhbnQnCisgICAgb3ZlcmZsb3c6 ICdvdmVybGF5ICFpbXBvcnRhbnQnLAorICB9LAorCisgIHNlYXJjaEJveDogeworICAgIG1hcmdp bkJvdHRvbTogJzFlbScsCisgICAgZGlzcGxheTogJ2ZsZXgnLAorICAgIC8vIG92ZXJmbG93OiAn aGlkZGVuICFpbXBvcnRhbnQnLAorICB9LAorICB0YWJsZUNvbnRlbnRXaWR0aDogeworICAgIHdp ZHRoOiAnY2FsYygxMDAlIC0gM3B4KScsCisgICAgcG9zaXRpb246ICdyZWxhdGl2ZScKKworICB9 LAorICBzZWFyY2hQYWRkaW5nOiB7CisgICAgZmxleDogMi41CisgIH0sCisgIHNlYXJjaElucHV0 OiB7CisgICAgZmxleDogMSwKKyAgICBtYXJnaW5Ub3A6IDIsCisgICAgYm9yZGVyTGVmdDogJ25v bmUnLAorICAgIHBhZGRpbmdMZWZ0OiA1CiAgIH0sCiAgIHRhYmxlOiB7Ci0gICAgZmxleEdyb3c6 MSwKLSAgICBtaW5IZWlnaHQ6MCwKKyAgICBmbGV4R3JvdzogMSwKKyAgICBtaW5IZWlnaHQ6IDAs CiAgICAgYm9yZGVyU3BhY2luZzogMCwKICAgICB3aWR0aDogJzEwMCUnLAogICAgIG92ZXJmbG93 OiAnaGlkZGVuJywKICAgICBib3JkZXJSYWRpdXM6IHRoZW1lLnNoYXBlLmJvcmRlclJhZGl1cywK ICAgfSwKLSAgZXh0cmFUYWJsZTp7Ci0gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRl LmdyZXlbNDAwXSwKLSAgICBmbGV4R3JvdzoxLAorICBleHRyYVRhYmxlOiB7CisgICAgZGlzcGxh eTogJ2ZsZXgnLAorICAgIGZsZXhHcm93OiAxLAorICAgIG92ZXJmbG93OiAnaGlkZGVuICFpbXBv cnRhbnQnLAorICAgIC8vIHBvc2l0aW9uOiAncmVsYXRpdmUnLAorICAgIGhlaWdodDogJzEwMCUg IWltcG9ydGFudCcsCisgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsCisgIH0sCisKKyAgZXhw YW5kZWRGb3JtOiB7CisgICAgYm9yZGVyVG9wV2lkdGg6IHRoZW1lLnNwYWNpbmcoMC41KSwKKyAg ICBib3JkZXJTdHlsZTogJ3NvbGlkICcsCisgICAgYm9yZGVyQ29sb3I6IHRoZW1lLnBhbGV0dGUu Z3JleVs0MDBdLAogICB9LAogCiAgIHRhYmxlQ2VsbDogewpAQCAtNTksMTAgKzEwNCw5IEBAIGNv bnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXMoKHRoZW1lKSA9PiAoewogICAgIGJhY2tncm91bmRD b2xvcjogdGhlbWUub3RoZXJWYXJzLnRhYmxlQmcsCiAgICAgLy8gLi4udGhlbWUubWl4aW5zLnBh bmVsQm9yZGVyLnRvcCwKICAgICAuLi50aGVtZS5taXhpbnMucGFuZWxCb3JkZXIubGVmdCwKLQog ICB9LAogICBzZWxlY3RDZWxsOiB7Ci0gICAgdGV4dEFsaWduOiAnY2VudGVyJworICAgIHRleHRB bGlnbjogJ2NlbnRlcicsCiAgIH0sCiAgIHRhYmxlQ2VsbEhlYWRlcjogewogICAgIGZvbnRXZWln aHQ6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFdlaWdodEJvbGQsCkBAIC05MywxMyArMTM3LDEzIEBA IGNvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXMoKHRoZW1lKSA9PiAoewogICAgIHBhZGRpbmdU b3A6ICcwLjM1ZW0nLAogICAgIGhlaWdodDogMzUsCiAgICAgYmFja2dyb3VuZFBvc2l0aW9uOiAn MSUnLAotICB9Ci19KSwKLSk7CisgIH0sCit9KSk7CiAKIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9u IFBnVGFibGUoeyBjb2x1bW5zLCBkYXRhLCBpc1NlbGVjdFJvdywgLi4ucHJvcHMgfSkgewogICAv LyBVc2UgdGhlIHN0YXRlIGFuZCBmdW5jdGlvbnMgcmV0dXJuZWQgZnJvbSB1c2VUYWJsZSB0byBi dWlsZCB5b3VyIFVJCiAgIGNvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXMoKTsKKyAgY29uc3QgW3Nl YXJjaFZhbCwgc2V0U2VhcmNoVmFsXSA9IFJlYWN0LnVzZVN0YXRlKCcnKTsKICAgY29uc3QgZGVm YXVsdENvbHVtbiA9IFJlYWN0LnVzZU1lbW8oCiAgICAgKCkgPT4gKHsKICAgICAgIG1pbldpZHRo OiAxNTAsCkBAIC0xNTMsMTEgKzE5NywxMiBAQCBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQZ1Rh YmxlKHsgY29sdW1ucywgZGF0YSwgaXNTZWxlY3RSb3csIC4uLnByb3BzIH0pIHsKICAgICB9LAog ICAgIHVzZUdsb2JhbEZpbHRlciwKICAgICB1c2VTb3J0QnksCisgICAgdXNlRXhwYW5kZWQsCiAg ICAgdXNlUm93U2VsZWN0LAogICAgIHVzZVJlc2l6ZUNvbHVtbnMsCiAgICAgdXNlRmxleExheW91 dCwKLSAgICBob29rcyA9PiB7Ci0gICAgICBob29rcy52aXNpYmxlQ29sdW1ucy5wdXNoKENMT1VN TlMgPT4geworICAgIChob29rcykgPT4geworICAgICAgaG9va3MudmlzaWJsZUNvbHVtbnMucHVz aCgoQ0xPVU1OUykgPT4gewogICAgICAgICBpZiAoaXNTZWxlY3RSb3cpIHsKICAgICAgICAgICBy ZXR1cm4gWwogICAgICAgICAgICAgLy8gTGV0J3MgbWFrZSBhIGNvbHVtbiBmb3Igc2VsZWN0aW9u CkBAIC0yMjIsMjggKzI2Nyw0NyBAQCBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQZ1RhYmxlKHsg Y29sdW1ucywgZGF0YSwgaXNTZWxlY3RSb3csIC4uLnByb3BzIH0pIHsKICAgfSwgW3NlbGVjdGVk Um93SWRzXSk7CiAKICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsKLSAgICBzZXRHbG9iYWxGaWx0 ZXIocHJvcHMuc2VhcmNoVGV4dCB8fCB1bmRlZmluZWQpOwotICB9LCBbcHJvcHMuc2VhcmNoVGV4 dF0pOwotCisgICAgc2V0R2xvYmFsRmlsdGVyKHNlYXJjaFZhbCB8fCB1bmRlZmluZWQpOworICB9 LCBbc2VhcmNoVmFsXSk7CiAKICAgY29uc3QgUmVuZGVyUm93ID0gUmVhY3QudXNlQ2FsbGJhY2so CiAgICAgKHsgaW5kZXgsIHN0eWxlIH0pID0+IHsKICAgICAgIGNvbnN0IHJvdyA9IHJvd3NbaW5k ZXhdOworCisKICAgICAgIHByZXBhcmVSb3cocm93KTsKICAgICAgIHJldHVybiAoCi0gICAgICAg IDxkaXYKLSAgICAgICAgICB7Li4ucm93LmdldFJvd1Byb3BzKHsKLSAgICAgICAgICAgIHN0eWxl LAotICAgICAgICAgIH0pfQotICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy50cn0KLSAgICAg ICAgPgotICAgICAgICAgIHtyb3cuY2VsbHMubWFwKChjZWxsKSA9PiB7Ci0gICAgICAgICAgICBy ZXR1cm4gKAotICAgICAgICAgICAgICA8ZGl2IGtleT17Y2VsbC5jb2x1bW4uaWR9IHsuLi5jZWxs LmdldENlbGxQcm9wcygpfSBjbGFzc05hbWU9e2Nsc3goY2xhc3Nlcy50YWJsZUNlbGwsIHJvdy5v cmlnaW5hbC5pY29uICYmIHJvdy5vcmlnaW5hbC5pY29uW2NlbGwuY29sdW1uLmlkXSwgcm93Lm9y aWdpbmFsLmljb25bY2VsbC5jb2x1bW4uaWRdICYmIGNsYXNzZXMuY2VsbEljb24pfSB0aXRsZT17 Y2VsbC52YWx1ZX0+Ci0gICAgICAgICAgICAgICAge2NlbGwucmVuZGVyKCdDZWxsJyl9Ci0gICAg ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgKTsKLSAgICAgICAgICB9KX0KKworICAgICAg ICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy50YWJsZUNvbnRlbnRXaWR0aH0+CisgICAgICAgICAg PGRpdgorICAgICAgICAgICAgey4uLnJvdy5nZXRSb3dQcm9wcyh7CisgICAgICAgICAgICAgIHN0 eWxlLAorICAgICAgICAgICAgfSl9CisgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMudHJ9 CisgICAgICAgICAgPgorICAgICAgICAgICAge3Jvdy5jZWxscy5tYXAoKGNlbGwpID0+IHsKKyAg ICAgICAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgICAgICA8ZGl2IGtleT17Y2VsbC5jb2x1 bW4uaWR9IHsuLi5jZWxsLmdldENlbGxQcm9wcygpfSBjbGFzc05hbWU9e2Nsc3goY2xhc3Nlcy50 YWJsZUNlbGwsIHJvdy5vcmlnaW5hbC5pY29uICYmIHJvdy5vcmlnaW5hbC5pY29uW2NlbGwuY29s dW1uLmlkXSwgcm93Lm9yaWdpbmFsLmljb25bY2VsbC5jb2x1bW4uaWRdICYmIGNsYXNzZXMuY2Vs bEljb24pfSB0aXRsZT17Y2VsbC52YWx1ZX0+CisgICAgICAgICAgICAgICAgICB7Y2VsbC5yZW5k ZXIoJ0NlbGwnKX0KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgKTsKKyAg ICAgICAgICAgIH0pfQorICAgICAgICAgIDwvZGl2PgorCisgICAgICAgICAgeyFfLmlzVW5kZWZp bmVkKHJvdykgJiYgcm93LmlzRXhwYW5kZWQgJiYgKAorICAgICAgICAgICAgPEJveCBjbGFzc05h bWU9e2NsYXNzZXMuZXhwYW5kZWRGb3JtfT4KKyAgICAgICAgICAgICAgPEZvcm1WaWV3CisgICAg ICAgICAgICAgICAgZ2V0SW5pdERhdGE9eygpID0+IHsKKyAgICAgICAgICAgICAgICAgIC8qVGhp cyBpcyBpbnRlbnRpb25hbCAoU29uYXJRdWJlKSovCisgICAgICAgICAgICAgICAgfX0KKyAgICAg ICAgICAgICAgICB2aWV3SGVscGVyUHJvcHM9e3sgbW9kZTogJ3Byb3BlcnRpZXMnIH19CisgICAg ICAgICAgICAgICAgc2NoZW1hPXtwcm9wcy5zY2hlbWF9CisgICAgICAgICAgICAgICAgc2hvd0Zv b3Rlcj17ZmFsc2V9CisgICAgICAgICAgICAgICAgb25EYXRhQ2hhbmdlPXsoKSA9PiB7IH19Cisg ICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmF1dG9SZXNpemVyfQorICAgICAgICAg ICAgICAvPgorICAgICAgICAgICAgPC9Cb3g+CisgICAgICAgICAgKX0KICAgICAgICAgPC9kaXY+ CiAgICAgICApOwogICAgIH0sCkBAIC0yNTEsNjIgKzMxNSw3MyBAQCBleHBvcnQgZGVmYXVsdCBm dW5jdGlvbiBQZ1RhYmxlKHsgY29sdW1ucywgZGF0YSwgaXNTZWxlY3RSb3csIC4uLnByb3BzIH0p IHsKICAgKTsKICAgLy8gUmVuZGVyIHRoZSBVSSBmb3IgeW91ciB0YWJsZQogICByZXR1cm4gKAot ICAgIDxBdXRvU2l6ZXIgY2xhc3NOYW1lPXsocHJvcHMudHlwZSA9PT0ncGFuZWwnID8gcHJvcHMu Y2xhc3NOYW1lOiBjbGFzc2VzLmF1dG9SZXNpemVyKX0+Ci0gICAgICB7KHsgaGVpZ2h0fSkgPT4g KAotICAgICAgICA8ZGl2IHsuLi5nZXRUYWJsZVByb3BzKCl9IGNsYXNzTmFtZT17Y2xhc3Nlcy50 YWJsZX0+Ci0gICAgICAgICAgPGRpdj4KLSAgICAgICAgICAgIHtoZWFkZXJHcm91cHMubWFwKCho ZWFkZXJHcm91cCkgPT4gKAotICAgICAgICAgICAgICA8ZGl2IGtleT17Jyd9IHsuLi5oZWFkZXJH cm91cC5nZXRIZWFkZXJHcm91cFByb3BzKCl9PgotICAgICAgICAgICAgICAgIHtoZWFkZXJHcm91 cC5oZWFkZXJzLm1hcCgoY29sdW1uKSA9PiAoCi0gICAgICAgICAgICAgICAgICA8ZGl2Ci0gICAg ICAgICAgICAgICAgICAgIGtleT17Y29sdW1uLmlkfQotICAgICAgICAgICAgICAgICAgICB7Li4u Y29sdW1uLmdldEhlYWRlclByb3BzKCl9Ci0gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17 Y2xzeCgKLSAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzLnRhYmxlQ2VsbEhlYWRlciwKLSAg ICAgICAgICAgICAgICAgICAgICBjb2x1bW4uY2xhc3NOYW1lCi0gICAgICAgICAgICAgICAgICAg ICl9Ci0gICAgICAgICAgICAgICAgICA+CisgICAgPEJveCBjbGFzc05hbWU9e2NsYXNzZXMuZXh0 cmFUYWJsZX0+CisgICAgICA8Qm94IGNsYXNzTmFtZT17Y2xhc3Nlcy5zZWFyY2hCb3h9PgorICAg ICAgICA8Qm94IGNsYXNzTmFtZT17Y2xhc3Nlcy5zZWFyY2hQYWRkaW5nfT48L0JveD4KKyAgICAg ICAgPElucHV0VGV4dAorICAgICAgICAgIHBsYWNlaG9sZGVyPXsnU2VhcmNoJ30KKyAgICAgICAg ICBjbGFzc05hbWU9e2NsYXNzZXMuc2VhcmNoSW5wdXR9CisgICAgICAgICAgdmFsdWU9e3NlYXJj aFZhbH0KKyAgICAgICAgICBvbkNoYW5nZT17KHZhbCkgPT4geworICAgICAgICAgICAgc2V0U2Vh cmNoVmFsKHZhbCk7CisgICAgICAgICAgfX0KKyAgICAgICAgLz4KKyAgICAgIDwvQm94PgorICAg ICAgPEF1dG9TaXplcgorICAgICAgICBjbGFzc05hbWU9e3Byb3BzLnR5cGUgPT09ICdwYW5lbCcg PyBwcm9wcy5jbGFzc05hbWUgOiBjbGFzc2VzLmF1dG9SZXNpemVyfQorICAgICAgPgorICAgICAg ICB7KHsgaGVpZ2h0IH0pID0+ICgKKyAgICAgICAgICA8ZGl2IHsuLi5nZXRUYWJsZVByb3BzKCl9 IGNsYXNzTmFtZT17Y2xhc3Nlcy50YWJsZX0+CisgICAgICAgICAgICA8ZGl2PgorICAgICAgICAg ICAgICB7aGVhZGVyR3JvdXBzLm1hcCgoaGVhZGVyR3JvdXApID0+ICgKKyAgICAgICAgICAgICAg ICA8ZGl2IGtleT17Jyd9IHsuLi5oZWFkZXJHcm91cC5nZXRIZWFkZXJHcm91cFByb3BzKCl9Pgor ICAgICAgICAgICAgICAgICAge2hlYWRlckdyb3VwLmhlYWRlcnMubWFwKChjb2x1bW4pID0+ICgK ICAgICAgICAgICAgICAgICAgICAgPGRpdgotICAgICAgICAgICAgICAgICAgICAgIHsuLi4oY29s dW1uLnNvcnRibGUKLSAgICAgICAgICAgICAgICAgICAgICAgID8gY29sdW1uLmdldFNvcnRCeVRv Z2dsZVByb3BzKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIDoge30pfQorICAgICAgICAgICAg ICAgICAgICAgIGtleT17Y29sdW1uLmlkfQorICAgICAgICAgICAgICAgICAgICAgIHsuLi5jb2x1 bW4uZ2V0SGVhZGVyUHJvcHMoKX0KKyAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ns c3goY2xhc3Nlcy50YWJsZUNlbGxIZWFkZXIsIGNvbHVtbi5jbGFzc05hbWUpfQogICAgICAgICAg ICAgICAgICAgICA+Ci0gICAgICAgICAgICAgICAgICAgICAge2NvbHVtbi5yZW5kZXIoJ0hlYWRl cicpfQotICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPgotICAgICAgICAgICAgICAgICAgICAg ICAge2NvbHVtbi5pc1NvcnRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNvbHVtbi5p c1NvcnRlZERlc2MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcg8J+UvScKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICA6ICcg8J+UvCcKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgOiAnJ30KLSAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+Ci0gICAgICAgICAgICAgICAg ICAgICAge2NvbHVtbi5yZXNpemFibGUgJiYgKAotICAgICAgICAgICAgICAgICAgICAgICAgPGRp dgotICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uY29sdW1uLmdldFJlc2l6ZXJQcm9wcygp fQotICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucmVzaXplcn0K LSAgICAgICAgICAgICAgICAgICAgICAgIC8+Ci0gICAgICAgICAgICAgICAgICAgICAgKX0KKyAg ICAgICAgICAgICAgICAgICAgICA8ZGl2CisgICAgICAgICAgICAgICAgICAgICAgICB7Li4uKGNv bHVtbi5zb3J0YmxlID8gY29sdW1uLmdldFNvcnRCeVRvZ2dsZVByb3BzKCkgOiB7fSl9CisgICAg ICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAge2NvbHVtbi5yZW5k ZXIoJ0hlYWRlcicpfQorICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+CisgICAgICAgICAg ICAgICAgICAgICAgICAgIHtjb2x1bW4uaXNTb3J0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICA/IGNvbHVtbi5pc1NvcnRlZERlc2MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ID8gJyDwn5S9JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnIPCflLwnCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ30KKyAgICAgICAgICAgICAgICAgICAgICAgIDwv c3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICAgIHtjb2x1bW4ucmVzaXphYmxlICYmICgKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdgorICAgICAgICAgICAgICAgICAgICAgICAgICAg IHsuLi5jb2x1bW4uZ2V0UmVzaXplclByb3BzKCl9CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2xhc3NOYW1lPXtjbGFzc2VzLnJlc2l6ZXJ9CisgICAgICAgICAgICAgICAgICAgICAgICAg IC8+CisgICAgICAgICAgICAgICAgICAgICAgICApfQorICAgICAgICAgICAgICAgICAgICAgIDwv ZGl2PgogICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAgIDwvZGl2 PgotICAgICAgICAgICAgICAgICkpfQotICAgICAgICAgICAgICAgIHsvKiA8c3BhbiBjbGFzc05h bWU9e2NsYXNzZXMuZXh0cmFUYWJsZX0+PC9zcGFuPiAqL30KLSAgICAgICAgICAgICAgPC9kaXY+ Ci0gICAgICAgICAgICApKX0KLSAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICkp fQorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICApKX0KKyAgICAgICAgICAg IDwvZGl2PgorCisgICAgICAgICAgICA8ZGl2IHsuLi5nZXRUYWJsZUJvZHlQcm9wcygpfSBjbGFz c05hbWU9e2NsYXNzZXN9PgorICAgICAgICAgICAgICA8Rml4ZWRTaXplTGlzdAorICAgICAgICAg ICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5maXhlZFNpemVMaXN0fQorICAgICAgICAgICAgICAg IGhlaWdodD17aGVpZ2h0IC0gNzV9CisgICAgICAgICAgICAgICAgaXRlbUNvdW50PXtyb3dzLmxl bmd0aH0KKyAgICAgICAgICAgICAgICBpdGVtU2l6ZT17MzV9CisgICAgICAgICAgICAgICAgc29y dGVkPXtwcm9wcz8uc29ydE9wdGlvbnN9CisgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAg ICB7UmVuZGVyUm93fQorCisgICAgICAgICAgICAgIDwvRml4ZWRTaXplTGlzdD4KIAotICAgICAg ICAgIDxkaXYgey4uLmdldFRhYmxlQm9keVByb3BzKCl9IGNsYXNzTmFtZT17Y2xhc3Nlc30+Ci0g ICAgICAgICAgICA8Rml4ZWRTaXplTGlzdAotICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNz ZXMuZml4ZWRTaXplTGlzdH0KLSAgICAgICAgICAgICAgaGVpZ2h0PXtoZWlnaHQgLSA3NX0KLSAg ICAgICAgICAgICAgaXRlbUNvdW50PXtyb3dzLmxlbmd0aH0KLSAgICAgICAgICAgICAgaXRlbVNp emU9ezM1fQotICAgICAgICAgICAgICBzb3J0ZWQ9e3Byb3BzPy5zb3J0T3B0aW9uc30KLSAgICAg ICAgICAgID4KLSAgICAgICAgICAgICAge1JlbmRlclJvd30KLSAgICAgICAgICAgIDwvRml4ZWRT aXplTGlzdD4KKyAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgIDwvZGl2PgotICAgICAgICA8 L2Rpdj4KLSAgICAgICl9Ci0gICAgPC9BdXRvU2l6ZXI+CisgICAgICAgICl9CisgICAgICA8L0F1 dG9TaXplcj4KKyAgICA8L0JveD4KICAgKTsKIH0KIApAQCAtMzE0LDcgKzM4OSwxMCBAQCBQZ1Rh YmxlLnByb3BUeXBlcyA9IHsKICAgc3RlcElkOiBQcm9wVHlwZXMubnVtYmVyLAogICBoZWlnaHQ6 IFByb3BUeXBlcy5udW1iZXIsCiAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJv cFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm9iamVjdF0pLAotICBjaGlsZHJlbjogUHJvcFR5cGVz Lm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm5vZGUpLCBQcm9wVHlwZXMu bm9kZV0pLAorICBjaGlsZHJlbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbCisgICAgUHJvcFR5cGVz LmFycmF5T2YoUHJvcFR5cGVzLm5vZGUpLAorICAgIFByb3BUeXBlcy5ub2RlLAorICBdKSwKICAg Z2V0VG9nZ2xlQWxsUm93c1NlbGVjdGVkUHJvcHM6IFByb3BUeXBlcy5mdW5jLAogICBjb2x1bW5z OiBQcm9wVHlwZXMuYXJyYXksCiAgIGRhdGE6IFByb3BUeXBlcy5hcnJheSwKQEAgLTMyNCw4ICs0 MDIsNiBAQCBQZ1RhYmxlLnByb3BUeXBlcyA9IHsKICAgZ2V0U2VsZWN0ZWRSb3dzOiBQcm9wVHlw ZXMuZnVuYywKICAgc2VhcmNoVGV4dDogUHJvcFR5cGVzLnN0cmluZywKICAgdHlwZTogUHJvcFR5 cGVzLnN0cmluZywKLSAgc29ydE9wdGlvbnM6ICBQcm9wVHlwZXMuYXJyYXksCi0KKyAgc29ydE9w dGlvbnM6IFByb3BUeXBlcy5hcnJheSwKKyAgc2NoZW1hOiBQcm9wVHlwZXMub2JqZWN0CiB9Owot Ci0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2dyYW50X3dpemFyZC9zdGF0aWMvanMv R3JhbnRXaXphcmQuanN4IGIvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJkL3N0YXRpYy9q cy9HcmFudFdpemFyZC5qc3gKaW5kZXggYTBmMzhlYTJmLi4wMTVjMzkzOWQgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL3Rvb2xzL2dyYW50X3dpemFyZC9zdGF0aWMvanMvR3JhbnRXaXphcmQuanN4 CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2dyYW50X3dpemFyZC9zdGF0aWMvanMvR3JhbnRXaXph cmQuanN4CkBAIC0xNyw3ICsxNyw3IEBAIGltcG9ydCBXaXphcmQgZnJvbSAnLi4vLi4vLi4vLi4v c3RhdGljL2pzL2hlbHBlcnMvd2l6YXJkL1dpemFyZCc7CiBpbXBvcnQgV2l6YXJkU3RlcCBmcm9t ICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvaGVscGVycy93aXphcmQvV2l6YXJkU3RlcCc7CiBpbXBv cnQgUGdUYWJsZSBmcm9tICdzb3VyY2VzL2NvbXBvbmVudHMvUGdUYWJsZSc7CiBpbXBvcnQgeyBn ZXROb2RlUHJpdmlsZWdlUm9sZVNjaGVtYSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvc3RhdGljL2pzL3ByaXZpbGVnZS51aS5qcyc7 Ci1pbXBvcnQgeyBJbnB1dFNRTCwgSW5wdXRUZXh0LCBGb3JtRm9vdGVyTWVzc2FnZSwgTUVTU0FH RV9UWVBFIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2NvbXBvbmVudHMvRm9ybUNvbXBv bmVudHMnOworaW1wb3J0IHsgSW5wdXRTUUwsIEZvcm1Gb290ZXJNZXNzYWdlLCBNRVNTQUdFX1RZ UEUgfSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvY29tcG9uZW50cy9Gb3JtQ29tcG9uZW50 cyc7CiBpbXBvcnQgZ2V0QXBpSW5zdGFuY2UgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2Fw aV9pbnN0YW5jZSc7CiBpbXBvcnQgU2NoZW1hVmlldyBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMv anMvU2NoZW1hVmlldyc7CiBpbXBvcnQgY2xzeCBmcm9tICdjbHN4JzsKQEAgLTExNyw3ICsxMTcs NiBAQCBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHcmFudFdpemFyZCh7IHNpZCwgZGlkLCBub2Rl SW5mbywgbm9kZURhdGEgfSkgewogICBjb25zdCBbc2VsZWN0ZWRPYmplY3QsIHNldFNlbGVjdGVk T2JqZWN0XSA9IFJlYWN0LnVzZVN0YXRlKFtdKTsKICAgY29uc3QgW3NlbGVjdGVkQWNsLCBzZXRT ZWxlY3RlZEFjbF0gPSBSZWFjdC51c2VTdGF0ZSh7fSk7CiAgIGNvbnN0IFttc3FsRGF0YSwgc2V0 U1FMXSA9IFJlYWN0LnVzZVN0YXRlKCcnKTsKLSAgY29uc3QgW3NlYXJjaFZhbCwgc2V0U2VhcmNo VmFsXSA9IFJlYWN0LnVzZVN0YXRlKCcnKTsKICAgY29uc3QgW2xvYWRlclRleHQsIHNldExvYWRl clRleHRdID0gUmVhY3QudXNlU3RhdGUoJycpOwogICBjb25zdCBbdGFibGViRGF0YSwgc2V0VGFi bGVEYXRhXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTsKICAgY29uc3QgW3ByaXZPcHRpb25zLCBzZXRQ cml2T3B0aW9uc10gPSBSZWFjdC51c2VTdGF0ZSh7fSk7CkBAIC0zMTQsMTcgKzMxMyw2IEBAIGV4 cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEdyYW50V2l6YXJkKHsgc2lkLCBkaWQsIG5vZGVJbmZvLCBu b2RlRGF0YSB9KSB7CiAgICAgICBsb2FkZXJUZXh0PXtsb2FkZXJUZXh0fQogICAgID4KICAgICAg IDxXaXphcmRTdGVwIHN0ZXBJZD17MH0+Ci0gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtjbGFzc2Vz LnNlYXJjaEJveH0+Ci0gICAgICAgICAgPEJveCBjbGFzc05hbWU9e2NsYXNzZXMuc2VhcmNoUGFk ZGluZ30+PC9Cb3g+Ci0gICAgICAgICAgPElucHV0VGV4dAotICAgICAgICAgICAgcGxhY2Vob2xk ZXI9eydTZWFyY2gnfQotICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnNlYXJjaElucHV0 fQotICAgICAgICAgICAgdmFsdWU9e3NlYXJjaFZhbH0KLSAgICAgICAgICAgIG9uQ2hhbmdlPXso dmFsKSA9PiB7Ci0gICAgICAgICAgICAgIHNldFNlYXJjaFZhbCh2YWwpO30KLSAgICAgICAgICAg IH0+Ci0gICAgICAgICAgPC9JbnB1dFRleHQ+Ci0gICAgICAgIDwvQm94PgogICAgICAgICA8Qm94 IGNsYXNzTmFtZT17Y2xhc3Nlcy5wYW5lbENvbnRlbnR9PgogICAgICAgICAgIDxQZ1RhYmxlCiAg ICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMudGFibGV9CkBAIC0zMzIsNyArMzIwLDYgQEAg ZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gR3JhbnRXaXphcmQoeyBzaWQsIGRpZCwgbm9kZUluZm8s IG5vZGVEYXRhIH0pIHsKICAgICAgICAgICAgIGNvbHVtbnM9e2NvbHVtbnN9CiAgICAgICAgICAg ICBkYXRhPXt0YWJsZWJEYXRhfQogICAgICAgICAgICAgaXNTZWxlY3RSb3c9e3RydWV9Ci0gICAg ICAgICAgICBzZWFyY2hUZXh0PXtzZWFyY2hWYWx9CiAgICAgICAgICAgICBnZXRTZWxlY3RlZFJv d3M9e2dldFRhYmxlU2VsZWN0ZWRSb3dzfT4KICAgICAgICAgICA8L1BnVGFibGU+CiAgICAgICAg IDwvQm94PgpkaWZmIC0tZ2l0IGEvd2ViL3dlYnBhY2suY29uZmlnLmpzIGIvd2ViL3dlYnBhY2su Y29uZmlnLmpzCmluZGV4IDNmOWM1ZjhmNC4uZWQ5YWQ0NDcyIDEwMDY0NAotLS0gYS93ZWIvd2Vi cGFjay5jb25maWcuanMKKysrIGIvd2ViL3dlYnBhY2suY29uZmlnLmpzCkBAIC00NjksMTAgKzQ2 OSw4IEBAIG1vZHVsZS5leHBvcnRzID0gW3sKICAgICAgICAgb3B0aW9uczogewogICAgICAgICAg IHR5cGU6ICdjb21tb25qcycsCiAgICAgICAgICAgaW1wb3J0czogWwotICAgICAgICAgICAgJ3B1 cmV8cGdhZG1pbi5kYXNoYm9hcmQnLAogICAgICAgICAgICAgJ3B1cmV8cGdhZG1pbi5icm93c2Vy LnF1aWNrX3NlYXJjaCcsCiAgICAgICAgICAgICAncHVyZXxwZ2FkbWluLnRvb2xzLnVzZXJfbWFu YWdlbWVudCcsCi0gICAgICAgICAgICAncHVyZXxwZ2FkbWluLmJyb3dzZXIub2JqZWN0X3NxbCcs CiAgICAgICAgICAgICAncHVyZXxwZ2FkbWluLmJyb3dzZXIuYmdwcm9jZXNzJywKICAgICAgICAg ICAgICdwdXJlfHBnYWRtaW4ubm9kZS5zZXJ2ZXJfZ3JvdXAnLAogICAgICAgICAgICAgJ3B1cmV8 cGdhZG1pbi5ub2RlLnNlcnZlcicsCmRpZmYgLS1naXQgYS93ZWIvd2VicGFjay5zaGltLmpzIGIv d2ViL3dlYnBhY2suc2hpbS5qcwppbmRleCBmNDVlZmRlODguLmU1YzNlOTQ0ZCAxMDA2NDQKLS0t IGEvd2ViL3dlYnBhY2suc2hpbS5qcworKysgYi93ZWIvd2VicGFjay5zaGltLmpzCkBAIC0yMDgs MTQgKzIwOCwxMiBAQCB2YXIgd2VicGFja1NoaW1Db25maWcgPSB7CiAgICAgJ3BnYWRtaW4uYnJv d3Nlci5kaWFsb2cnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3Rh dGljL2pzL2RpYWxvZycpLAogICAgICdwZ2FkbWluLmJyb3dzZXIubm9kZSc6IHBhdGguam9pbihf X2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvbm9kZScpLAogICAgICdwZ2Fk bWluLmJyb3dzZXIubm9kZS51aSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJv d3Nlci9zdGF0aWMvanMvbm9kZS51aScpLAotICAgICdwZ2FkbWluLmJyb3dzZXIub2JqZWN0X3Nx bCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vbWlzYy9zcWwvc3RhdGljL2pzL3Nx bCcpLAogICAgICdwZ2FkbWluLmJyb3dzZXIucGFuZWwnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAn Li9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL3BhbmVsJyksCiAgICAgJ3BnYWRtaW4uYnJvd3Nl ci50b29sYmFyJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3N0YXRp Yy9qcy90b29sYmFyJyksCiAgICAgJ3BnYWRtaW4uYnJvd3Nlci5zZXJ2ZXIucHJpdmlsZWdlJzog cGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9zdGF0aWMvanMvcHJpdmlsZWdlJyksCiAgICAgJ3BnYWRtaW4uYnJvd3Nlci5zZXJ2ZXIu dmFyaWFibGUnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3N0YXRpYy9qcy92YXJpYWJsZScpLAogICAgICdwZ2FkbWluLmJyb3dz ZXIudXRpbHMnOiAnL2Jyb3dzZXIvanMvdXRpbHMnLAogICAgICdwZ2FkbWluLmJyb3dzZXIud2l6 YXJkJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy93 aXphcmQnKSwKLSAgICAncGdhZG1pbi5kYXNoYm9hcmQnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAn Li9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0aWMvanMvZGFzaGJvYXJkJyksCiAgICAgJ3BnYWRtaW4u ZGF0YWdyaWQnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlk L3N0YXRpYy9qcy9kYXRhZ3JpZCcpLAogICAgICdwZ2FkbWluLmZpbGVfbWFuYWdlcic6IHBhdGgu am9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vbWlzYy9maWxlX21hbmFnZXIvc3RhdGljL2pzL2Zp bGVfbWFuYWdlcicpLAogICAgICdwZ2FkbWluLmZpbGVfdXRpbGl0eSc6IHBhdGguam9pbihfX2Rp cm5hbWUsICcuL3BnYWRtaW4vbWlzYy9maWxlX21hbmFnZXIvc3RhdGljL2pzL3V0aWxpdHknKSwK --000000000000768ac105da2dec10--