From 4ac4e19d0f909ddbc5b25ebca9102ac0bdc1b091 Mon Sep 17 00:00:00 2001 From: Thomas Peterson Date: Mon, 20 Jan 2025 22:48:46 +0100 Subject: [PATCH] Fixes --- src/new/assets/tailwind/css/backend.css | 8 +- .../views/backend/list/index.html.twig | 51 ++++++---- .../templates/tailwind_pagination.html.twig | 40 ++++++++ src/new/templates/tailwind_sortable.html.twig | 20 ++++ src/new/web/build/backend/dashboard.js | 2 +- src/new/web/build/backend/login.css | 37 ++++++- src/new/web/build/backend/tailwind.css | 96 +++++++++++++++++-- ...bpack_loader_js_assets_controllers_json.js | 2 +- 8 files changed, 222 insertions(+), 34 deletions(-) create mode 100644 src/new/templates/tailwind_pagination.html.twig create mode 100644 src/new/templates/tailwind_sortable.html.twig diff --git a/src/new/assets/tailwind/css/backend.css b/src/new/assets/tailwind/css/backend.css index b72bddff2..3ae3d88c8 100644 --- a/src/new/assets/tailwind/css/backend.css +++ b/src/new/assets/tailwind/css/backend.css @@ -28,8 +28,12 @@ } .badge-yes { - @apply inline-flex rounded bg-lime-500 px-2 py-1 text-sm font-medium text-white hover:bg-opacity-90; + @apply inline-flex rounded-sm bg-lime-500 px-2 py-1 text-sm font-medium text-white hover:bg-opacity-90 min-w-20 justify-center shadow-xl; } .badge-no { - @apply inline-flex rounded bg-orange-500 px-2 py-1 text-sm font-medium text-white hover:bg-opacity-90; + @apply inline-flex rounded-sm bg-orange-500 px-2 py-1 text-sm font-medium text-white hover:bg-opacity-90 min-w-20 justify-center shadow-xl; +} + +.table-icon, .button-icon { + @apply w-6; } diff --git a/src/new/src/PSC/Shop/NewsBundle/Resources/views/backend/list/index.html.twig b/src/new/src/PSC/Shop/NewsBundle/Resources/views/backend/list/index.html.twig index cad784ffc..4458ea869 100755 --- a/src/new/src/PSC/Shop/NewsBundle/Resources/views/backend/list/index.html.twig +++ b/src/new/src/PSC/Shop/NewsBundle/Resources/views/backend/list/index.html.twig @@ -1,4 +1,5 @@ {% extends 'backend_tailwind_base.html.twig' %} +{% do pagination.setSortableTemplate('tailwind_sortable.html.twig') %} {% trans_default_domain 'core_news_list' %} {% block header %}
@@ -9,44 +10,56 @@ {{ 'News'|trans }} {{ 'List'|trans }}
- {{ 'Addnews'|trans }} + + + + + + {{ 'Addnews'|trans }}
{% endblock %} {% block body %}
-
-
-
-
-
-
-
-
{{ knp_pagination_sortable(pagination, 'active'|trans, 'news.enable') }}
-
{{ knp_pagination_sortable(pagination, 'Name'|trans, 'news.title') }}
- - +
+ {{ knp_pagination_sortable(pagination, 'active'|trans, 'news.enable') }} +
+
+ {{ knp_pagination_sortable(pagination, 'Name'|trans, 'news.title') }} +
+ +
{% for news in pagination %}
-
{% if news.enable %}{{'yes'|trans}}{% else %}{{'no'|trans}}{% endif %}
+
{% if news.enable %}
{{'yes'|trans}}
{% else %}
{{'no'|trans}}
{% endif %}
{{ news.title }}
- {% endfor %} diff --git a/src/new/templates/tailwind_pagination.html.twig b/src/new/templates/tailwind_pagination.html.twig new file mode 100644 index 000000000..28998143f --- /dev/null +++ b/src/new/templates/tailwind_pagination.html.twig @@ -0,0 +1,40 @@ +{# tailwindcss Sliding pagination control implementation #} +{% if pageCount > 1 %} +
+
+ {% if first is defined and current != first %} + + << + + {% endif %} + + {% if previous is defined %} + + + + {% endif %} + + {% for page in pagesInRange %} + {% if page != current %} + + {{ page }} + + {% else %} + {{ page }} + {% endif %} + {% endfor %} + + {% if next is defined %} + + + + {% endif %} + + {% if last is defined and current != last %} + + >> + + {% endif %} +
+
+{% endif %} diff --git a/src/new/templates/tailwind_sortable.html.twig b/src/new/templates/tailwind_sortable.html.twig new file mode 100644 index 000000000..94158c85b --- /dev/null +++ b/src/new/templates/tailwind_sortable.html.twig @@ -0,0 +1,20 @@ + + + {% if sorted %} + {% if direction != 'desc' %} + + + + {% else %} + + + + {% endif %} + {% else %} + + + + {% endif %} + {{ title }} + + diff --git a/src/new/web/build/backend/dashboard.js b/src/new/web/build/backend/dashboard.js index 0f1c2f49a..36c3e5e01 100644 --- a/src/new/web/build/backend/dashboard.js +++ b/src/new/web/build/backend/dashboard.js @@ -3529,4 +3529,4 @@ __webpack_require__.r(__webpack_exports__); /******/ var __webpack_exports__ = __webpack_require__.O(); /******/ } ]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUMsR0FBQzhDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxLQUFLLEtBQUdULENBQUMsQ0FBQzdVLEdBQUcsS0FBR3dTLENBQUMsSUFBRWdDLENBQUMsRUFBQ0ssQ0FBQyxDQUFDN1UsR0FBRyxHQUFDLFFBQVEsQ0FBQyxFQUFDd1MsQ0FBQyxHQUFDTSxDQUFDLEdBQUN3QyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsUUFBUSxLQUFHVCxDQUFDLENBQUM3VSxHQUFHLEtBQUd3UyxDQUFDLElBQUVnQyxDQUFDLEVBQUNLLENBQUMsQ0FBQzdVLEdBQUcsR0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLFVBQVUsS0FBR29VLENBQUMsS0FBRyxLQUFLLEtBQUdTLENBQUMsQ0FBQzdVLEdBQUcsS0FBRyxRQUFRLEtBQUdxVixDQUFDLENBQUNyVixHQUFHLElBQUV3UyxDQUFDLEdBQUM4QyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUU5QyxDQUFDLElBQUVnQyxDQUFDLEVBQUNLLENBQUMsQ0FBQzdVLEdBQUcsR0FBQyxRQUFRLEVBQUN3UyxDQUFDLElBQUVNLENBQUMsRUFBQ3VDLENBQUMsQ0FBQ3JWLEdBQUcsR0FBQyxLQUFLLElBQUUsS0FBSyxLQUFHcVYsQ0FBQyxDQUFDclYsR0FBRyxJQUFFd1MsQ0FBQyxHQUFDTSxDQUFDLEdBQUN3QyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUU5QyxDQUFDLElBQUVNLENBQUMsR0FBQzBCLENBQUMsQ0FBQyxJQUFFYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUc5QyxDQUFDLElBQUVNLENBQUMsR0FBQzBCLENBQUMsRUFBQ0ssQ0FBQyxDQUFDN1UsR0FBRyxHQUFDLFFBQVEsRUFBQ3FWLENBQUMsQ0FBQ3JWLEdBQUcsR0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFDLFFBQVEsS0FBRzZVLENBQUMsQ0FBQzdVLEdBQUcsS0FBRyxLQUFLLEtBQUdxVixDQUFDLENBQUNyVixHQUFHLElBQUV3UyxDQUFDLEdBQUNNLENBQUMsR0FBQ3dDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRTlDLENBQUMsSUFBRWdDLENBQUMsRUFBQ0ssQ0FBQyxDQUFDN1UsR0FBRyxHQUFDLEtBQUssRUFBQ3dTLENBQUMsSUFBRU0sQ0FBQyxFQUFDdUMsQ0FBQyxDQUFDclYsR0FBRyxHQUFDLFFBQVEsSUFBRSxRQUFRLEtBQUdxVixDQUFDLENBQUNyVixHQUFHLElBQUV3UyxDQUFDLEdBQUM4QyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUU5QyxDQUFDLElBQUUsQ0FBQyxHQUFDTSxDQUFDLEdBQUMwQixDQUFDLENBQUMsSUFBRWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHOUMsQ0FBQyxJQUFFTSxDQUFDLEdBQUMwQixDQUFDLEVBQUNLLENBQUMsQ0FBQzdVLEdBQUcsR0FBQyxLQUFLLEVBQUNxVixDQUFDLENBQUNyVixHQUFHLEdBQUMsS0FBSyxDQUFDLENBQUMsRUFBQyxRQUFRLEtBQUc2VSxDQUFDLENBQUM3VSxHQUFHLEtBQUd3UyxDQUFDLEdBQUNNLENBQUMsR0FBQ3dDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxLQUFLLEtBQUdELENBQUMsQ0FBQ3JWLEdBQUcsSUFBRXdTLENBQUMsSUFBRU0sQ0FBQyxFQUFDdUMsQ0FBQyxDQUFDclYsR0FBRyxHQUFDLFFBQVEsSUFBRXdTLENBQUMsR0FBQzhDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxRQUFRLEtBQUdELENBQUMsQ0FBQ3JWLEdBQUcsS0FBR3dTLENBQUMsSUFBRU0sQ0FBQyxFQUFDdUMsQ0FBQyxDQUFDclYsR0FBRyxHQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFFBQVEsS0FBR3NULENBQUMsSUFBRSxNQUFNLEtBQUdBLENBQUMsTUFBSTFSLENBQUMsR0FBQzBULENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxNQUFNLEtBQUdULENBQUMsQ0FBQ2xqQixJQUFJLEtBQUdpUSxDQUFDLElBQUU2UyxDQUFDLEVBQUNJLENBQUMsQ0FBQ2xqQixJQUFJLEdBQUMsT0FBTyxDQUFDLEVBQUNpUSxDQUFDLEdBQUNzUixDQUFDLEdB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UUFFM0Q7UUFDQTF2QixNQUFNLENBQUN1d0IsS0FBSyxFQUFFO01BQ2xCO0lBQ0osQ0FBQztJQUdEO0lBQ0FHLFdBQVcsdUJBQUN6cEIsU0FBUyxFQUFFO01BQ25CLElBQUltcUIsT0FBTyxHQUFHLElBQUlsTCxNQUFNLENBQUMsaUJBQWlCLEdBQUdqZixTQUFTLEdBQUcsVUFBVSxFQUFFLEdBQUcsQ0FBQztRQUNyRTBQLEtBQUssR0FBRzNXLE1BQU0sQ0FBQ3F4QixRQUFRLENBQUM5dEIsTUFBTSxDQUFDb1QsS0FBSyxDQUFDeWEsT0FBTyxDQUFDO01BRWpELE9BQVF6YSxLQUFLLElBQUlBLEtBQUssQ0FBQy9TLE1BQU0sR0FBRyxDQUFDLEdBQUkrUyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRTtJQUN0RDtFQUVKLENBQUM7QUFDTCxDQUFDO0FBQUEsa0dBQUM7Ozs7Ozs7Ozs7OztBQ3pNRjs7Ozs7Ozs7Ozs7OztBQ0FBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2JhY2tlbmQvZGFzaGJvYXJkL2Rhc2hib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYmFja2VuZC9kYXNoYm9hcmQvanMvYXBwLmpzIiwid2VicGFjazovLy8uL2Fzc2V0cy9iYWNrZW5kL2Rhc2hib2FyZC9qcy9kcm9wem9uZS5qcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYmFja2VuZC9kYXNoYm9hcmQvanMvb3JkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2JhY2tlbmQvZGFzaGJvYXJkL2pzL3Byb2R1Y3QuanMiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2JhY2tlbmQvZGFzaGJvYXJkL2pzL3Byb2R1Y3Qvc2V0LmpzIiwid2VicGFjazovLy8uL2Fzc2V0cy9iYWNrZW5kL2Rhc2hib2FyZC9qcy9zdW1tZXJub3RlL21lZGlhYnVuZGxlLnBsdWdpbi5qcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYmFja2VuZC9kYXNoYm9hcmQvanMvdGV0aGVyLm1pbi5qcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYmFja2VuZC9kYXNoYm9hcmQvanMvdG9vbHMvYWpheE1vZGFsLmpzIiwid2VicGFjazovLy8uL2Fzc2V0cy9iYWNrZW5kL2Rhc2hib2FyZC9qcy90b29scy9jYXJnb2JheS5nZW5lcmFsLm1pbi5qcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYmFja2VuZC9kYXNoYm9hcmQvanMvdG9vbHMvY2FyZ29iYXkudG9vZ2xlLm1pbi5qcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYmFja2VuZC9kYXNoYm9hcmQvanMvdG9vbHMvbWVkaWFDaG9vc2VyLmpzIiwid2VicGFjazovLy8uL2Fzc2V0cy9iYWNrZW5kL2Rhc2hib2FyZC9jc3MvdG9vbHMvY2FyZ29iYXkudG9vZ2xlLm1pbi5jc3M/ODU2YSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYmFja2VuZC9kYXNoYm9hcmQvbGVzcy9iYXNlLmxlc3M/ZWE0NCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnM1VXRpbHMgZnJvbSBcImJzNS11dGlsc1wiO1xuaW1wb3J0IHsgc3RhcnRTdGltdWx1c0FwcCB9IGZyb20gJ0BzeW1mb255L3N0aW11bHVzLWJyaWRnZSc7XG5jb25zdCBhcHAgPSBzdGFydFN0aW11bHVzQXBwKCk7XG5nbG9iYWwuJCA9IGdsb2JhbC5qUXVlcnkgPSB3aW5kb3cualF1ZXJ5ID0gcmVxdWlyZSgnanF1ZXJ5Jyk7XG5yZXF1aXJlKCdAcG9wcGVyanMvY29yZS9kaXN0L2Nqcy9wb3BwZXInKTtcbmdsb2JhbC5ib290c3RyYXAgPSByZXF1aXJlKCdib290c3RyYXAvZGlzdC9qcy9ib290c3RyYXAnKTtcbmdsb2JhbC5iczVVdGlscyA9IG5ldyBCczVVdGlscygpO1xucmVxdWlyZSgnLi9qcy90ZXRoZXIubWluJyk7XG5yZXF1aXJlKCcuL2pzL2Ryb3B6b25lJyk7XG5nbG9iYWwuUmFwaGFlbCA9IHJlcXVpcmUoJ3JhcGhhZWwvcmFwaGFlbC5taW4nKTtcbnJlcXVpcmUoJ21vcnJpcy5qcy9tb3JyaXMubWluJyk7XG5yZXF1aXJlKCdzdW1tZXJub3RlL2Rpc3Qvc3VtbWVybm90ZS1saXRlJyk7XG5yZXF1aXJlKCcuL2pzL3N1bW1lcm5vdGUvbWVkaWFidW5kbGUucGx1Z2luJyk7XG5yZXF1aXJlKCdtdWx0aXNlbGVjdC10d28tc2lkZXMvZGlzdC9qcy9tdWx0aXNlbGVjdCcpO1xucmVxdWlyZSgnYm9vdHN0cmFwLXRvZ2dsZS9qcy9ib290c3RyYXAtdG9nZ2xlLm1pbicpO1xuaW1wb3J0IGFjZSBmcm9tICdicmFjZSdcbmltcG9ydCAnYnJhY2UvbW9kZS9odG1sJ1xuaW1wb3J0ICdicmFjZS9tb2RlL3BocCdcbmltcG9ydCAnYnJhY2UvbW9kZS94bWwnXG5pbXBvcnQgJ2JyYWNlL3RoZW1lL21vbm9rYWknXG5pbXBvcnQgJ2JyYWNlL2V4dC9zZWFyY2hib3gnXG5cbmdsb2JhbC5Ecm9wem9uZSA9IHJlcXVpcmUoJy4vanMvZHJvcHpvbmUnKTtcblxuZ2xvYmFsLmNhcmdvYmF5ID0ge307XG5nbG9iYWwuY2FyZ29iYXkuZ2VuZXJhbCA9IHJlcXVpcmUoJy4vanMvdG9vbHMvY2FyZ29iYXkuZ2VuZXJhbC5taW4nKTtcbmdsb2JhbC5jYXJnb2JheS50b2dnbGUgPSAgcmVxdWlyZSgnLi9qcy90b29scy9jYXJnb2JheS50b29nbGUubWluJyk7XG5cbmdsb2JhbC5wc2MgPSB7fTtcbmdsb2JhbC5wc2MuYWpheE1vZGFsID0gcmVxdWlyZSgnLi9qcy90b29scy9hamF4TW9kYWwnKTtcbmdsb2JhbC5wc2MubWVkaWFDaG9vc2VyID0gcmVxdWlyZSgnLi9qcy90b29scy9tZWRpYUNob29zZXInKTtcbmdsb2JhbC5wc2MuYXBwID0gcmVxdWlyZSgnLi9qcy9hcHAnKTtcbmdsb2JhbC5wc2Mub3JkZXIgPSByZXF1aXJlKCcuL2pzL29yZGVyLmpzJyk7XG5nbG9iYWwucHNjLnByb2R1Y3QgPSByZXF1aXJlKCcuL2pzL3Byb2R1Y3QuanMnKTtcblxuZ2xvYmFsLnBzYy5hcHAuaW5pdCgpO1xuXG5pbXBvcnQgJy4vanMvdG9vbHMvbWVkaWFDaG9vc2VyJztcbmltcG9ydCAnYm9vdHN0cmFwL3Njc3MvYm9vdHN0cmFwLnNjc3MnO1xuaW1wb3J0ICcuL2Nzcy90b29scy9jYXJnb2JheS50b29nbGUubWluLmNzcyc7XG5pbXBvcnQgJy4vbGVzcy9iYXNlLmxlc3MnO1xuaW1wb3J0ICdzdW1tZXJub3RlL2Rpc3Qvc3VtbWVybm90ZS1saXRlLm1pbi5jc3MnO1xuLy9pbXBvcnQgJ211bHRpc2VsZWN0L2Nzcy9tdWx0aS1zZWxlY3QuY3NzJztcbmltcG9ydCAnYm9vdHN0cmFwLXRvZ2dsZS9jc3MvYm9vdHN0cmFwLXRvZ2dsZS5taW4uY3NzJztcbiIsIlxuXG5kZWZpbmUoZnVuY3Rpb24oKSB7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICAvLyBHZW5lcmFsIEFwcCBpbml0XG4gICAgICAgIGluaXQoKSB7XG5cbiAgICAgICAgICAgIHBzYy5hamF4TW9kYWwuaW5pdCgpO1xuICAgICAgICAgICAgcHNjLm1lZGlhQ2hvb3Nlci5pbml0KCk7XG4gICAgICAgICAgICBwc2Mub3JkZXIuaW5pdCgpO1xuICAgICAgICAgICAgcHNjLnByb2R1Y3QuaW5pdCgpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBib290c3RyYXBBcHAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBib290c3RyYXBBcHAoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn0pO1xuXG5cblxuJChmdW5jdGlvbigpIHtcblxuICAgICQoJ1tkYXRhLWJzLXRvZ2dsZT1cInRvb2x0aXBcIl0nKS5jbGljayhmdW5jdGlvbihlbCkge1xuICAgICAgICBiczVVdGlscy5Ub2FzdC5zaG93KHtcbiAgICAgICAgICAgIHR5cGU6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgIGljb246ICc8aSBjbGFzcz1cImZhciBmYS1jaGVjay1jaXJjbGUgZmEtbGcgbWUtMlwiPjwvaT4nLFxuICAgICAgICAgICAgdGl0bGU6ICQodGhpcykuaHRtbCgpLFxuICAgICAgICAgICAgY29udGVudDogJCh0aGlzKS5kYXRhKCdicy1odG1sJyksXG4gICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnQ29weSB0byBjbGlwYm9hcmQnLFxuICAgICAgICAgICAgICAgICAgICBjbGFzczogJ2J0biBidG4tc20gYnRuLXdhcm5pbmcnLFxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCgkKHRoaXMpLmRhdGEoJ2JzLWh0bWwnKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZGVsYXk6IDAsXG4gICAgICAgICAgICBkaXNtaXNzaWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc29sZS5sb2codGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG5cbiAgICAkKCdhW2RhdGEtYnMtdG9nZ2xlPVwidGFiXCJdJykub24oJ3Nob3duLmJzLnRhYicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmKCQoZS50YXJnZXQpLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpLmF0dHIoJ2lkJykgJiYgJChlLnRhcmdldCkucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkuYXR0cignaWQnKSA9PSAnZG9jJykge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xhc3RUYWJEb2MnLCAkKHRoaXMpLmF0dHIoJ2hyZWYnKSk7XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xhc3RUYWInLCAkKHRoaXMpLmF0dHIoJ2hyZWYnKSk7XG4gICAgICAgIH07XG5cbiAgICB9KTtcblxuICAgIC8vIGdvIHRvIHRoZSBsYXRlc3QgdGFiLCBpZiBpdCBleGlzdHM6XG4gICAgdmFyIGxhc3RUYWIgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFzdFRhYicpO1xuICAgIGlmIChsYXN0VGFiKSB7XG4gICAgICAgICQoJ1tocmVmPVwiJyArIGxhc3RUYWIgKyAnXCJdJykudGFiKCdzaG93Jyk7XG4gICAgfVxuXG4gICAgdmFyIGxhc3RUYWJEb2MgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFzdFRhYkRvYycpO1xuICAgIGlmIChsYXN0VGFiRG9jKSB7XG4gICAgICAgICQoJ1tocmVmPVwiJyArIGxhc3RUYWJEb2MgKyAnXCJdJykudGFiKCdzaG93Jyk7XG4gICAgfVxuXG4gICAgJCgnLm5hdiBsaSB1bCcpLnBhcmVudCgpLmZpbmQoJ2EnKS5jbGljayhmdW5jdGlvbigpIHtcbiAgICAgICAgJCh0aGlzKS5wYXJlbnQoKS5maW5kKFwidWxcIikudG9nZ2xlKCk7XG4gICAgfSk7XG5cbiAgICAkKCdpbnB1dFtkYXRhLWJzLXRvZ2dsZT1cInRvZ2dsZVwiXSwgaW5wdXQuYWpheFRvb2dsZScpLmNoYW5nZShmdW5jdGlvbigpIHtcbiAgICAgICAgJC5nZXRKU09OKCQodGhpcykuZGF0YSgndXJsJykpO1xuICAgIH0pO1xuXG4gICAgJCgnc2VsZWN0Lm11bHRpcGxlJykubXVsdGlzZWxlY3Qoe1xuICAgICAgICBzdWJtaXRBbGxMZWZ0OiBmYWxzZSxcbiAgICAgICAgc3VibWl0QWxsUmlnaHQ6IHRydWUsXG4gICAgICAgIHNlYXJjaDoge1xuICAgICAgICAgICAgbGVmdDogJzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJxXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiIC8+JyxcbiAgICAgICAgICAgIHJpZ2h0OiAnPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInFcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCIgLz4nLFxuICAgICAgICB9LFxuICAgICAgICBmaXJlU2VhcmNoOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA+IDE7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgICQoJy5zdW1tZXJub3RlJykuc3VtbWVybm90ZSh7XG4gICAgICAgIGhlaWdodDogNDAwLFxuICAgICAgICB0b29sYmFyOiBbXG4gICAgICAgICAgICAgICAgWydzdHlsZScsIFsnc3R5bGUnXV0sXG4gICAgICAgICAgICAgICAgWydmb250JywgWydib2xkJywgJ2l0YWxpYycsICd1bmRlcmxpbmUnLCAnY2xlYXInXV0sXG4gICAgICAgICAgICAgICAgWydmb250c2l6ZScsIFsnZm9udHNpemUnXV0sXG4gICAgICAgICAgICAgICAgWydjb2xvcicsIFsnY29sb3InXV0sXG4gICAgICAgICAgICAgICAgWydwYXJhJywgWyd1bCcsICdvbCcsICdwYXJhZ3JhcGgnXV0sXG4gICAgICAgICAgICAgICAgWydoZWlnaHQnLCBbJ2hlaWdodCddXSxcbiAgICAgICAgICAgICAgICBbJ3RhYmxlJywgWyd0YWJsZSddXSxcbiAgICAgICAgICAgICAgICBbJ2luc2VydCcsIFsnbGluaycsICdociddXSxcbiAgICAgICAgICAgICAgICBbJ3ZpZXcnLCBbJ2Z1bGxzY3JlZW4nLCAnY29kZXZpZXcnXV0sXG4gICAgICAgICAgICAgICAgWydoZWxwJywgWydoZWxwJ11dLFxuICAgICAgICAgICAgICAgIFsnbWVkaWEnLCBbJ21lZGlhJ11dXG4gICAgICAgIF1cbiAgICB9KTtcbn0pO1xuIiwiXG4vKlxuICpcbiAqIE1vcmUgaW5mbyBhdCBbd3d3LmRyb3B6b25lanMuY29tXShodHRwOi8vd3d3LmRyb3B6b25lanMuY29tKVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMiwgTWF0aWFzIE1lbm9cbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuICogVEhFIFNPRlRXQVJFLlxuICpcbiAqL1xuXG4oZnVuY3Rpb24oKSB7XG4gIHZhciBEcm9wem9uZSwgRW1pdHRlciwgY2FtZWxpemUsIGNvbnRlbnRMb2FkZWQsIGRldGVjdFZlcnRpY2FsU3F1YXNoLCBkcmF3SW1hZ2VJT1NGaXgsIG5vb3AsIHdpdGhvdXQsXG4gICAgX19zbGljZSA9IFtdLnNsaWNlLFxuICAgIF9faGFzUHJvcCA9IHt9Lmhhc093blByb3BlcnR5LFxuICAgIF9fZXh0ZW5kcyA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsgZm9yICh2YXIga2V5IGluIHBhcmVudCkgeyBpZiAoX19oYXNQcm9wLmNhbGwocGFyZW50LCBrZXkpKSBjaGlsZFtrZXldID0gcGFyZW50W2tleV07IH0gZnVuY3Rpb24gY3RvcigpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGNoaWxkOyB9IGN0b3IucHJvdG90eXBlID0gcGFyZW50LnByb3RvdHlwZTsgY2hpbGQucHJvdG90eXBlID0gbmV3IGN0b3IoKTsgY2hpbGQuX19zdXBlcl9fID0gcGFyZW50LnByb3RvdHlwZTsgcmV0dXJuIGNoaWxkOyB9O1xuXG4gIG5vb3AgPSBmdW5jdGlvbigpIHt9O1xuXG4gIEVtaXR0ZXIgPSAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gRW1pdHRlcigpIHt9XG5cbiAgICBFbWl0dGVyLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyID0gRW1pdHRlci5wcm90b3R5cGUub247XG5cbiAgICBFbWl0dGVyLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uKGV2ZW50LCBmbikge1xuICAgICAgdGhpcy5fY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzIHx8IHt9O1xuICAgICAgaWYgKCF0aGlzLl9jYWxsYmFja3NbZXZlbnRdKSB7XG4gICAgICAgIHRoaXMuX2NhbGxiYWNrc1tldmVudF0gPSBbXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2NhbGxiYWNrc1tldmVudF0ucHVzaChmbik7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG4gICAgRW1pdHRlci5wcm90b3R5cGUuZW1pdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGFyZ3MsIGNhbGxiYWNrLCBjYWxsYmFja3MsIGV2ZW50LCBfaSwgX2xlbjtcbiAgICAgIGV2ZW50ID0gYXJndW1lbnRzWzBdLCBhcmdzID0gMiA8PSBhcmd1bWVudHMubGVuZ3RoID8gX19zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkgOiBbXTtcbiAgICAgIHRoaXMuX2NhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrcyB8fCB7fTtcbiAgICAgIGNhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrc1tldmVudF07XG4gICAgICBpZiAoY2FsbGJhY2tzKSB7XG4gICAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gY2FsbGJhY2tzLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgICAgY2FsbGJhY2sgPSBjYWxsYmFja3NbX2ldO1xuICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG4gICAgRW1pdHRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIgPSBFbWl0dGVyLnByb3RvdHlwZS5vZmY7XG5cbiAgICBFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBFbWl0dGVyLnByb3RvdHlwZS5vZmY7XG5cbiAgICBFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyID0gRW1pdHRlci5wcm90b3R5cGUub2ZmO1xuXG4gICAgRW1pdHRlci5wcm90b3R5cGUub2ZmID0gZnVuY3Rpb24oZXZlbnQsIGZuKSB7XG4gICAgICB2YXIgY2FsbGJhY2ssIGNhbGxiYWNrcywgaSwgX2ksIF9sZW47XG4gICAgICBpZiAoIXRoaXMuX2NhbGxiYWNrcyB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuX2NhbGxiYWNrcyA9IHt9O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrc1tldmVudF07XG4gICAgICBpZiAoIWNhbGxiYWNrcykge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLl9jYWxsYmFja3NbZXZlbnRdO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICAgIGZvciAoaSA9IF9pID0gMCwgX2xlbiA9IGNhbGxiYWNrcy5sZW5ndGg7IF9pIDwgX2xlbjsgaSA9ICsrX2kpIHtcbiAgICAgICAgY2FsbGJhY2sgPSBjYWxsYmFja3NbaV07XG4gICAgICAgIGlmIChjYWxsYmFjayA9PT0gZm4pIHtcbiAgICAgICAgICBjYWxsYmFja3Muc3BsaWNlKGksIDEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG4gICAgcmV0dXJuIEVtaXR0ZXI7XG5cbiAgfSkoKTtcblxuICBEcm9wem9uZSA9IChmdW5jdGlvbihfc3VwZXIpIHtcbiAgICB2YXIgZXh0ZW5kLCByZXNvbHZlT3B0aW9uO1xuXG4gICAgX19leHRlbmRzKERyb3B6b25lLCBfc3VwZXIpO1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLkVtaXR0ZXIgPSBFbWl0dGVyO1xuXG5cbiAgICAvKlxuICAgIFRoaXMgaXMgYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgZXZlbnRzIHlvdSBjYW4gcmVnaXN0ZXIgb24gYSBkcm9wem9uZSBvYmplY3QuXG4gICAgXG4gICAgWW91IGNhbiByZWdpc3RlciBhbiBldmVudCBoYW5kbGVyIGxpa2UgdGhpczpcbiAgICBcbiAgICAgICAgZHJvcHpvbmUub24oXCJkcmFnRW50ZXJcIiwgZnVuY3Rpb24oKSB7IH0pO1xuICAgICAqL1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLmV2ZW50cyA9IFtcImRyb3BcIiwgXCJkcmFnc3RhcnRcIiwgXCJkcmFnZW5kXCIsIFwiZHJhZ2VudGVyXCIsIFwiZHJhZ292ZXJcIiwgXCJkcmFnbGVhdmVcIiwgXCJhZGRlZGZpbGVcIiwgXCJhZGRlZGZpbGVzXCIsIFwicmVtb3ZlZGZpbGVcIiwgXCJ0aHVtYm5haWxcIiwgXCJlcnJvclwiLCBcImVycm9ybXVsdGlwbGVcIiwgXCJwcm9jZXNzaW5nXCIsIFwicHJvY2Vzc2luZ211bHRpcGxlXCIsIFwidXBsb2FkcHJvZ3Jlc3NcIiwgXCJ0b3RhbHVwbG9hZHByb2dyZXNzXCIsIFwic2VuZGluZ1wiLCBcInNlbmRpbmdtdWx0aXBsZVwiLCBcInN1Y2Nlc3NcIiwgXCJzdWNjZXNzbXVsdGlwbGVcIiwgXCJjYW5jZWxlZFwiLCBcImNhbmNlbGVkbXVsdGlwbGVcIiwgXCJjb21wbGV0ZVwiLCBcImNvbXBsZXRlbXVsdGlwbGVcIiwgXCJyZXNldFwiLCBcIm1heGZpbGVzZXhjZWVkZWRcIiwgXCJtYXhmaWxlc3JlYWNoZWRcIiwgXCJxdWV1ZWNvbXBsZXRlXCJdO1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLmRlZmF1bHRPcHRpb25zID0ge1xuICAgICAgdXJsOiBudWxsLFxuICAgICAgbWV0aG9kOiBcInBvc3RcIixcbiAgICAgIHdpdGhDcmVkZW50aWFsczogZmFsc2UsXG4gICAgICBwYXJhbGxlbFVwbG9hZHM6IDIsXG4gICAgICB1cGxvYWRNdWx0aXBsZTogZmFsc2UsXG4gICAgICBtYXhGaWxlc2l6ZTogMjU2LFxuICAgICAgcGFyYW1OYW1lOiBcImZpbGVcIixcbiAgICAgIGNyZWF0ZUltYWdlVGh1bWJuYWlsczogdHJ1ZSxcbiAgICAgIG1heFRodW1ibmFpbEZpbGVzaXplOiAxMCxcbiAgICAgIHRodW1ibmFpbFdpZHRoOiAxMjAsXG4gICAgICB0aHVtYm5haWxIZWlnaHQ6IDEyMCxcbiAgICAgIGZpbGVzaXplQmFzZTogMTAwMCxcbiAgICAgIG1heEZpbGVzOiBudWxsLFxuICAgICAgcGFyYW1zOiB7fSxcbiAgICAgIGNsaWNrYWJsZTogdHJ1ZSxcbiAgICAgIGlnbm9yZUhpZGRlbkZpbGVzOiB0cnVlLFxuICAgICAgYWNjZXB0ZWRGaWxlczogbnVsbCxcbiAgICAgIGFjY2VwdGVkTWltZVR5cGVzOiBudWxsLFxuICAgICAgYXV0b1Byb2Nlc3NRdWV1ZTogdHJ1ZSxcbiAgICAgIGF1dG9RdWV1ZTogdHJ1ZSxcbiAgICAgIGFkZFJlbW92ZUxpbmtzOiBmYWxzZSxcbiAgICAgIHByZXZpZXdzQ29udGFpbmVyOiBudWxsLFxuICAgICAgaGlkZGVuSW5wdXRDb250YWluZXI6IFwiYm9keVwiLFxuICAgICAgY2FwdHVyZTogbnVsbCxcbiAgICAgIGRpY3REZWZhdWx0TWVzc2FnZTogXCJEcm9wIGZpbGVzIGhlcmUgdG8gdXBsb2FkXCIsXG4gICAgICBkaWN0RmFsbGJhY2tNZXNzYWdlOiBcIllvdXIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGRyYWcnbidkcm9wIGZpbGUgdXBsb2Fkcy5cIixcbiAgICAgIGRpY3RGYWxsYmFja1RleHQ6IFwiUGxlYXNlIHVzZSB0aGUgZmFsbGJhY2sgZm9ybSBiZWxvdyB0byB1cGxvYWQgeW91ciBmaWxlcyBsaWtlIGluIHRoZSBvbGRlbiBkYXlzLlwiLFxuICAgICAgZGljdEZpbGVUb29CaWc6IFwiRmlsZSBpcyB0b28gYmlnICh7e2ZpbGVzaXplfX1NaUIpLiBNYXggZmlsZXNpemU6IHt7bWF4RmlsZXNpemV9fU1pQi5cIixcbiAgICAgIGRpY3RJbnZhbGlkRmlsZVR5cGU6IFwiWW91IGNhbid0IHVwbG9hZCBmaWxlcyBvZiB0aGlzIHR5cGUuXCIsXG4gICAgICBkaWN0UmVzcG9uc2VFcnJvcjogXCJTZXJ2ZXIgcmVzcG9uZGVkIHdpdGgge3tzdGF0dXNDb2RlfX0gY29kZS5cIixcbiAgICAgIGRpY3RDYW5jZWxVcGxvYWQ6IFwiQ2FuY2VsIHVwbG9hZFwiLFxuICAgICAgZGljdENhbmNlbFVwbG9hZENvbmZpcm1hdGlvbjogXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2FuY2VsIHRoaXMgdXBsb2FkP1wiLFxuICAgICAgZGljdFJlbW92ZUZpbGU6IFwiUmVtb3ZlIGZpbGVcIixcbiAgICAgIGRpY3RSZW1vdmVGaWxlQ29uZmlybWF0aW9uOiBudWxsLFxuICAgICAgZGljdE1heEZpbGVzRXhjZWVkZWQ6IFwiWW91IGNhbiBub3QgdXBsb2FkIGFueSBtb3JlIGZpbGVzLlwiLFxuICAgICAgYWNjZXB0OiBmdW5jdGlvbihmaWxlLCBkb25lKSB7XG4gICAgICAgIHJldHVybiBkb25lKCk7XG4gICAgICB9LFxuICAgICAgaW5pdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBub29wO1xuICAgICAgfSxcbiAgICAgIGZvcmNlRmFsbGJhY2s6IGZhbHNlLFxuICAgICAgZmFsbGJhY2s6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgY2hpbGQsIG1lc3NhZ2VFbGVtZW50LCBzcGFuLCBfaSwgX2xlbiwgX3JlZjtcbiAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9IFwiXCIgKyB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lICsgXCIgZHotYnJvd3Nlci1ub3Qtc3VwcG9ydGVkXCI7XG4gICAgICAgIF9yZWYgPSB0aGlzLmVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJkaXZcIik7XG4gICAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gX3JlZi5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICAgIGNoaWxkID0gX3JlZltfaV07XG4gICAgICAgICAgaWYgKC8oXnwgKWR6LW1lc3NhZ2UoJHwgKS8udGVzdChjaGlsZC5jbGFzc05hbWUpKSB7XG4gICAgICAgICAgICBtZXNzYWdlRWxlbWVudCA9IGNoaWxkO1xuICAgICAgICAgICAgY2hpbGQuY2xhc3NOYW1lID0gXCJkei1tZXNzYWdlXCI7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtZXNzYWdlRWxlbWVudCkge1xuICAgICAgICAgIG1lc3NhZ2VFbGVtZW50ID0gRHJvcHpvbmUuY3JlYXRlRWxlbWVudChcIjxkaXYgY2xhc3M9XFxcImR6LW1lc3NhZ2VcXFwiPjxzcGFuPjwvc3Bhbj48L2Rpdj5cIik7XG4gICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKG1lc3NhZ2VFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBzcGFuID0gbWVzc2FnZUVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzcGFuXCIpWzBdO1xuICAgICAgICBpZiAoc3Bhbikge1xuICAgICAgICAgIGlmIChzcGFuLnRleHRDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNwYW4udGV4dENvbnRlbnQgPSB0aGlzLm9wdGlvbnMuZGljdEZhbGxiYWNrTWVzc2FnZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHNwYW4uaW5uZXJUZXh0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNwYW4uaW5uZXJUZXh0ID0gdGhpcy5vcHRpb25zLmRpY3RGYWxsYmFja01lc3NhZ2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5nZXRGYWxsYmFja0Zvcm0oKSk7XG4gICAgICB9LFxuICAgICAgcmVzaXplOiBmdW5jdGlvbihmaWxlKSB7XG4gICAgICAgIHZhciBpbmZvLCBzcmNSYXRpbywgdHJnUmF0aW87XG4gICAgICAgIGluZm8gPSB7XG4gICAgICAgICAgc3JjWDogMCxcbiAgICAgICAgICBzcmNZOiAwLFxuICAgICAgICAgIHNyY1dpZHRoOiBmaWxlLndpZHRoLFxuICAgICAgICAgIHNyY0hlaWdodDogZmlsZS5oZWlnaHRcbiAgICAgICAgfTtcbiAgICAgICAgc3JjUmF0aW8gPSBmaWxlLndpZHRoIC8gZmlsZS5oZWlnaHQ7XG4gICAgICAgIGluZm8ub3B0V2lkdGggPSB0aGlzLm9wdGlvbnMudGh1bWJuYWlsV2lkdGg7XG4gICAgICAgIGluZm8ub3B0SGVpZ2h0ID0gdGhpcy5vcHRpb25zLnRodW1ibmFpbEhlaWdodDtcbiAgICAgICAgaWYgKChpbmZvLm9wdFdpZHRoID09IG51bGwpICYmIChpbmZvLm9wdEhlaWdodCA9PSBudWxsKSkge1xuICAgICAgICAgIGluZm8ub3B0V2lkdGggPSBpbmZvLnNyY1dpZHRoO1xuICAgICAgICAgIGluZm8ub3B0SGVpZ2h0ID0gaW5mby5zcmNIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5mby5vcHRXaWR0aCA9PSBudWxsKSB7XG4gICAgICAgICAgaW5mby5vcHRXaWR0aCA9IHNyY1JhdGlvICogaW5mby5vcHRIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5mby5vcHRIZWlnaHQgPT0gbnVsbCkge1xuICAgICAgICAgIGluZm8ub3B0SGVpZ2h0ID0gKDEgLyBzcmNSYXRpbykgKiBpbmZvLm9wdFdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIHRyZ1JhdGlvID0gaW5mby5vcHRXaWR0aCAvIGluZm8ub3B0SGVpZ2h0O1xuICAgICAgICBpZiAoZmlsZS5oZWlnaHQgPCBpbmZvLm9wdEhlaWdodCB8fCBmaWxlLndpZHRoIDwgaW5mby5vcHRXaWR0aCkge1xuICAgICAgICAgIGluZm8udHJnSGVpZ2h0ID0gaW5mby5zcmNIZWlnaHQ7XG4gICAgICAgICAgaW5mby50cmdXaWR0aCA9IGluZm8uc3JjV2lkdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHNyY1JhdGlvID4gdHJnUmF0aW8pIHtcbiAgICAgICAgICAgIGluZm8uc3JjSGVpZ2h0ID0gZmlsZS5oZWlnaHQ7XG4gICAgICAgICAgICBpbmZvLnNyY1dpZHRoID0gaW5mby5zcmNIZWlnaHQgKiB0cmdSYXRpbztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5mby5zcmNXaWR0aCA9IGZpbGUud2lkdGg7XG4gICAgICAgICAgICBpbmZvLnNyY0hlaWdodCA9IGluZm8uc3JjV2lkdGggLyB0cmdSYXRpbztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaW5mby5zcmNYID0gKGZpbGUud2lkdGggLSBpbmZvLnNyY1dpZHRoKSAvIDI7XG4gICAgICAgIGluZm8uc3JjWSA9IChmaWxlLmhlaWdodCAtIGluZm8uc3JjSGVpZ2h0KSAvIDI7XG4gICAgICAgIHJldHVybiBpbmZvO1xuICAgICAgfSxcblxuICAgICAgLypcbiAgICAgIFRob3NlIGZ1bmN0aW9ucyByZWdpc3RlciB0aGVtc2VsdmVzIHRvIHRoZSBldmVudHMgb24gaW5pdCBhbmQgaGFuZGxlIGFsbFxuICAgICAgdGhlIHVzZXIgaW50ZXJmYWNlIHNwZWNpZmljIHN0dWZmLiBPdmVyd3JpdGluZyB0aGVtIHdvbid0IGJyZWFrIHRoZSB1cGxvYWRcbiAgICAgIGJ1dCBjYW4gYnJlYWsgdGhlIHdheSBpdCdzIGRpc3BsYXllZC5cbiAgICAgIFlvdSBjYW4gb3ZlcndyaXRlIHRoZW0gaWYgeW91IGRvbid0IGxpa2UgdGhlIGRlZmF1bHQgYmVoYXZpb3IuIElmIHlvdSBqdXN0XG4gICAgICB3YW50IHRvIGFkZCBhbiBhZGRpdGlvbmFsIGV2ZW50IGhhbmRsZXIsIHJlZ2lzdGVyIGl0IG9uIHRoZSBkcm9wem9uZSBvYmplY3RcbiAgICAgIGFuZCBkb24ndCBvdmVyd3JpdGUgdGhvc2Ugb3B0aW9ucy5cbiAgICAgICAqL1xuICAgICAgZHJvcDogZnVuY3Rpb24oZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJkei1kcmFnLWhvdmVyXCIpO1xuICAgICAgfSxcbiAgICAgIGRyYWdzdGFydDogbm9vcCxcbiAgICAgIGRyYWdlbmQ6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwiZHotZHJhZy1ob3ZlclwiKTtcbiAgICAgIH0sXG4gICAgICBkcmFnZW50ZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiZHotZHJhZy1ob3ZlclwiKTtcbiAgICAgIH0sXG4gICAgICBkcmFnb3ZlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJkei1kcmFnLWhvdmVyXCIpO1xuICAgICAgfSxcbiAgICAgIGRyYWdsZWF2ZTogZnVuY3Rpb24oZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJkei1kcmFnLWhvdmVyXCIpO1xuICAgICAgfSxcbiAgICAgIHBhc3RlOiBub29wLFxuICAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJkei1zdGFydGVkXCIpO1xuICAgICAgfSxcbiAgICAgIGFkZGVkZmlsZTogZnVuY3Rpb24oZmlsZSkge1xuICAgICAgICB2YXIgbm9kZSwgcmVtb3ZlRmlsZUV2ZW50LCByZW1vdmVMaW5rLCBfaSwgX2osIF9rLCBfbGVuLCBfbGVuMSwgX2xlbjIsIF9yZWYsIF9yZWYxLCBfcmVmMiwgX3Jlc3VsdHM7XG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnQgPT09IHRoaXMucHJldmlld3NDb250YWluZXIpIHtcbiAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImR6LXN0YXJ0ZWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJldmlld3NDb250YWluZXIpIHtcbiAgICAgICAgICBmaWxlLnByZXZpZXdFbGVtZW50ID0gRHJvcHpvbmUuY3JlYXRlRWxlbWVudCh0aGlzLm9wdGlvbnMucHJldmlld1RlbXBsYXRlLnRyaW0oKSk7XG4gICAgICAgICAgZmlsZS5wcmV2aWV3VGVtcGxhdGUgPSBmaWxlLnByZXZpZXdFbGVtZW50O1xuICAgICAgICAgIHRoaXMucHJldmlld3NDb250YWluZXIuYXBwZW5kQ2hpbGQoZmlsZS5wcmV2aWV3RWxlbWVudCk7XG4gICAgICAgICAgX3JlZiA9IGZpbGUucHJldmlld0VsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLWR6LW5hbWVdXCIpO1xuICAgICAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gX3JlZi5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICAgICAgbm9kZSA9IF9yZWZbX2ldO1xuICAgICAgICAgICAgbm9kZS50ZXh0Q29udGVudCA9IGZpbGUubmFtZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgX3JlZjEgPSBmaWxlLnByZXZpZXdFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1kei1zaXplXVwiKTtcbiAgICAgICAgICBmb3IgKF9qID0gMCwgX2xlbjEgPSBfcmVmMS5sZW5ndGg7IF9qIDwgX2xlbjE7IF9qKyspIHtcbiAgICAgICAgICAgIG5vZGUgPSBfcmVmMVtfal07XG4gICAgICAgICAgICBub2RlLmlubmVySFRNTCA9IHRoaXMuZmlsZXNpemUoZmlsZS5zaXplKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5hZGRSZW1vdmVMaW5rcykge1xuICAgICAgICAgICAgZmlsZS5fcmVtb3ZlTGluayA9IERyb3B6b25lLmNyZWF0ZUVsZW1lbnQoXCI8YSBjbGFzcz1cXFwiZHotcmVtb3ZlXFxcIiBocmVmPVxcXCJqYXZhc2NyaXB0OnVuZGVmaW5lZDtcXFwiIGRhdGEtZHotcmVtb3ZlPlwiICsgdGhpcy5vcHRpb25zLmRpY3RSZW1vdmVGaWxlICsgXCI8L2E+XCIpO1xuICAgICAgICAgICAgZmlsZS5wcmV2aWV3RWxlbWVudC5hcHBlbmRDaGlsZChmaWxlLl9yZW1vdmVMaW5rKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVtb3ZlRmlsZUV2ZW50ID0gKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgIGlmIChmaWxlLnN0YXR1cyA9PT0gRHJvcHpvbmUuVVBMT0FESU5HKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIERyb3B6b25lLmNvbmZpcm0oX3RoaXMub3B0aW9ucy5kaWN0Q2FuY2VsVXBsb2FkQ29uZmlybWF0aW9uLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5yZW1vdmVGaWxlKGZpbGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChfdGhpcy5vcHRpb25zLmRpY3RSZW1vdmVGaWxlQ29uZmlybWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gRHJvcHpvbmUuY29uZmlybShfdGhpcy5vcHRpb25zLmRpY3RSZW1vdmVGaWxlQ29uZmlybWF0aW9uLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLnJlbW92ZUZpbGUoZmlsZSk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLnJlbW92ZUZpbGUoZmlsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pKHRoaXMpO1xuICAgICAgICAgIF9yZWYyID0gZmlsZS5wcmV2aWV3RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtZHotcmVtb3ZlXVwiKTtcbiAgICAgICAgICBfcmVzdWx0cyA9IFtdO1xuICAgICAgICAgIGZvciAoX2sgPSAwLCBfbGVuMiA9IF9yZWYyLmxlbmd0aDsgX2sgPCBfbGVuMjsgX2srKykge1xuICAgICAgICAgICAgcmVtb3ZlTGluayA9IF9yZWYyW19rXTtcbiAgICAgICAgICAgIF9yZXN1bHRzLnB1c2gocmVtb3ZlTGluay5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgcmVtb3ZlRmlsZUV2ZW50KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBfcmVzdWx0cztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlbW92ZWRmaWxlOiBmdW5jdGlvbihmaWxlKSB7XG4gICAgICAgIHZhciBfcmVmO1xuICAgICAgICBpZiAoZmlsZS5wcmV2aWV3RWxlbWVudCkge1xuICAgICAgICAgIGlmICgoX3JlZiA9IGZpbGUucHJldmlld0VsZW1lbnQpICE9IG51bGwpIHtcbiAgICAgICAgICAgIF9yZWYucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmaWxlLnByZXZpZXdFbGVtZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZU1heEZpbGVzUmVhY2hlZENsYXNzKCk7XG4gICAgICB9LFxuICAgICAgdGh1bWJuYWlsOiBmdW5jdGlvbihmaWxlLCBkYXRhVXJsKSB7XG4gICAgICAgIHZhciB0aHVtYm5haWxFbGVtZW50LCBfaSwgX2xlbiwgX3JlZjtcbiAgICAgICAgaWYgKGZpbGUucHJldmlld0VsZW1lbnQpIHtcbiAgICAgICAgICBmaWxlLnByZXZpZXdFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJkei1maWxlLXByZXZpZXdcIik7XG4gICAgICAgICAgX3JlZiA9IGZpbGUucHJldmlld0VsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLWR6LXRodW1ibmFpbF1cIik7XG4gICAgICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgICAgICB0aHVtYm5haWxFbGVtZW50ID0gX3JlZltfaV07XG4gICAgICAgICAgICB0aHVtYm5haWxFbGVtZW50LmFsdCA9IGZpbGUubmFtZTtcbiAgICAgICAgICAgIHRodW1ibmFpbEVsZW1lbnQuc3JjID0gZGF0YVVybDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoKChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICByZXR1cm4gZmlsZS5wcmV2aWV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiZHotaW1hZ2UtcHJldmlld1wiKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSkodGhpcykpLCAxKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiBmdW5jdGlvbihmaWxlLCBtZXNzYWdlKSB7XG4gICAgICAgIHZhciBub2RlLCBfaSwgX2xlbiwgX3JlZiwgX3Jlc3VsdHM7XG4gICAgICAgIGlmIChmaWxlLnByZXZpZXdFbGVtZW50KSB7XG4gICAgICAgICAgZmlsZS5wcmV2aWV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiZHotZXJyb3JcIik7XG4gICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlICE9PSBcIlN0cmluZ1wiICYmIG1lc3NhZ2UuZXJyb3IpIHtcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLmVycm9yO1xuICAgICAgICAgIH1cbiAgICAgICAgICBfcmVmID0gZmlsZS5wcmV2aWV3RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtZHotZXJyb3JtZXNzYWdlXVwiKTtcbiAgICAgICAgICBfcmVzdWx0cyA9IFtdO1xuICAgICAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gX3JlZi5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICAgICAgbm9kZSA9IF9yZWZbX2ldO1xuICAgICAgICAgICAgX3Jlc3VsdHMucHVzaChub2RlLnRleHRDb250ZW50ID0gbWVzc2FnZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBfcmVzdWx0cztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9ybXVsdGlwbGU6IG5vb3AsXG4gICAgICBwcm9jZXNzaW5nOiBmdW5jdGlvbihmaWxlKSB7XG4gICAgICAgIGlmIChmaWxlLnByZXZpZXdFbGVtZW50KSB7XG4gICAgICAgICAgZmlsZS5wcmV2aWV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiZHotcHJvY2Vzc2luZ1wiKTtcbiAgICAgICAgICBpZiAoZmlsZS5fcmVtb3ZlTGluaykge1xuICAgICAgICAgICAgcmV0dXJuIGZpbGUuX3JlbW92ZUxpbmsudGV4dENvbnRlbnQgPSB0aGlzLm9wdGlvbnMuZGljdENhbmNlbFVwbG9hZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBwcm9jZXNzaW5nbXVsdGlwbGU6IG5vb3AsXG4gICAgICB1cGxvYWRwcm9ncmVzczogZnVuY3Rpb24oZmlsZSwgcHJvZ3Jlc3MsIGJ5dGVzU2VudCkge1xuICAgICAgICB2YXIgbm9kZSwgX2ksIF9sZW4sIF9yZWYsIF9yZXN1bHRzO1xuICAgICAgICBpZiAoZmlsZS5wcmV2aWV3RWxlbWVudCkge1xuICAgICAgICAgIF9yZWYgPSBmaWxlLnByZXZpZXdFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1kei11cGxvYWRwcm9ncmVzc11cIik7XG4gICAgICAgICAgX3Jlc3VsdHMgPSBbXTtcbiAgICAgICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IF9yZWYubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgICAgIG5vZGUgPSBfcmVmW19pXTtcbiAgICAgICAgICAgIGlmIChub2RlLm5vZGVOYW1lID09PSAnUFJPR1JFU1MnKSB7XG4gICAgICAgICAgICAgIF9yZXN1bHRzLnB1c2gobm9kZS52YWx1ZSA9IHByb2dyZXNzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIF9yZXN1bHRzLnB1c2gobm9kZS5zdHlsZS53aWR0aCA9IFwiXCIgKyBwcm9ncmVzcyArIFwiJVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIF9yZXN1bHRzO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdG90YWx1cGxvYWRwcm9ncmVzczogbm9vcCxcbiAgICAgIHNlbmRpbmc6IG5vb3AsXG4gICAgICBzZW5kaW5nbXVsdGlwbGU6IG5vb3AsXG4gICAgICBzdWNjZXNzOiBmdW5jdGlvbihmaWxlKSB7XG4gICAgICAgIGlmIChmaWxlLnByZXZpZXdFbGVtZW50KSB7XG4gICAgICAgICAgcmV0dXJuIGZpbGUucHJldmlld0VsZW1lbnQuY2xhc3NMaXN0LmFkZChcImR6LXN1Y2Nlc3NcIik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzdWNjZXNzbXVsdGlwbGU6IG5vb3AsXG4gICAgICBjYW5jZWxlZDogZnVuY3Rpb24oZmlsZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbWl0KFwiZXJyb3JcIiwgZmlsZSwgXCJVcGxvYWQgY2FuY2VsZWQuXCIpO1xuICAgICAgfSxcbiAgICAgIGNhbmNlbGVkbXVsdGlwbGU6IG5vb3AsXG4gICAgICBjb21wbGV0ZTogZnVuY3Rpb24oZmlsZSkge1xuICAgICAgICBpZiAoZmlsZS5fcmVtb3ZlTGluaykge1xuICAgICAgICAgIGZpbGUuX3JlbW92ZUxpbmsudGV4dENvbnRlbnQgPSB0aGlzLm9wdGlvbnMuZGljdFJlbW92ZUZpbGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbGUucHJldmlld0VsZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4gZmlsZS5wcmV2aWV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiZHotY29tcGxldGVcIik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjb21wbGV0ZW11bHRpcGxlOiBub29wLFxuICAgICAgbWF4ZmlsZXNleGNlZWRlZDogbm9vcCxcbiAgICAgIG1heGZpbGVzcmVhY2hlZDogbm9vcCxcbiAgICAgIHF1ZXVlY29tcGxldGU6IG5vb3AsXG4gICAgICBhZGRlZGZpbGVzOiBub29wLFxuICAgICAgcHJldmlld1RlbXBsYXRlOiBcIjxkaXYgY2xhc3M9XFxcImR6LXByZXZpZXcgZHotZmlsZS1wcmV2aWV3XFxcIj5cXG4gIDxkaXYgY2xhc3M9XFxcImR6LWltYWdlXFxcIj48aW1nIGRhdGEtZHotdGh1bWJuYWlsIC8+PC9kaXY+XFxuICA8ZGl2IGNsYXNzPVxcXCJkei1kZXRhaWxzXFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZHotc2l6ZVxcXCI+PHNwYW4gZGF0YS1kei1zaXplPjwvc3Bhbj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZHotZmlsZW5hbWVcXFwiPjxzcGFuIGRhdGEtZHotbmFtZT48L3NwYW4+PC9kaXY+XFxuICA8L2Rpdj5cXG4gIDxkaXYgY2xhc3M9XFxcImR6LXByb2dyZXNzXFxcIj48c3BhbiBjbGFzcz1cXFwiZHotdXBsb2FkXFxcIiBkYXRhLWR6LXVwbG9hZHByb2dyZXNzPjwvc3Bhbj48L2Rpdj5cXG4gIDxkaXYgY2xhc3M9XFxcImR6LWVycm9yLW1lc3NhZ2VcXFwiPjxzcGFuIGRhdGEtZHotZXJyb3JtZXNzYWdlPjwvc3Bhbj48L2Rpdj5cXG4gIDxkaXYgY2xhc3M9XFxcImR6LXN1Y2Nlc3MtbWFya1xcXCI+XFxuICAgIDxzdmcgd2lkdGg9XFxcIjU0cHhcXFwiIGhlaWdodD1cXFwiNTRweFxcXCIgdmlld0JveD1cXFwiMCAwIDU0IDU0XFxcIiB2ZXJzaW9uPVxcXCIxLjFcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgeG1sbnM6eGxpbms9XFxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcXFwiIHhtbG5zOnNrZXRjaD1cXFwiaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoL25zXFxcIj5cXG4gICAgICA8dGl0bGU+Q2hlY2s8L3RpdGxlPlxcbiAgICAgIDxkZWZzPjwvZGVmcz5cXG4gICAgICA8ZyBpZD1cXFwiUGFnZS0xXFxcIiBzdHJva2U9XFxcIm5vbmVcXFwiIHN0cm9rZS13aWR0aD1cXFwiMVxcXCIgZmlsbD1cXFwibm9uZVxcXCIgZmlsbC1ydWxlPVxcXCJldmVub2RkXFxcIiBza2V0Y2g6dHlwZT1cXFwiTVNQYWdlXFxcIj5cXG4gICAgICAgIDxwYXRoIGQ9XFxcIk0yMy41LDMxLjg0MzE0NTggTDE3LjU4NTI0MTksMjUuOTI4Mzg3NyBDMTYuMDI0ODI1MywyNC4zNjc5NzExIDEzLjQ5MTAyOTQsMjQuMzY2ODM1IDExLjkyODkzMjIsMjUuOTI4OTMyMiBDMTAuMzcwMDEzNiwyNy40ODc4NTA4IDEwLjM2NjU5MTIsMzAuMDIzNDQ1NSAxMS45MjgzODc3LDMxLjU4NTI0MTkgTDIwLjQxNDc1ODEsNDAuMDcxNjEyMyBDMjAuNTEzMzk5OSw0MC4xNzAyNTQxIDIwLjYxNTkzMTUsNDAuMjYyNjY0OSAyMC43MjE4NjE1LDQwLjM0ODg0MzUgQzIyLjI4MzU2NjksNDEuODcyNTY1MSAyNC43OTQyMzQsNDEuODYyNjIwMiAyNi4zNDYxNTY0LDQwLjMxMDY5NzggTDQzLjMxMDY5NzgsMjMuMzQ2MTU2NCBDNDQuODc3MTAyMSwyMS43Nzk3NTIxIDQ0Ljg3NTgwNTcsMTkuMjQ4Mzg4NyA0My4zMTM3MDg1LDE3LjY4NjI5MTUgQzQxLjc1NDc4OTksMTYuMTI3MzcyOSAzOS4yMTc2MDM1LDE2LjEyNTU0MjIgMzcuNjUzODQzNiwxNy42ODkzMDIyIEwyMy41LDMxLjg0MzE0NTggWiBNMjcsNTMgQzQxLjM1OTQwMzUsNTMgNTMsNDEuMzU5NDAzNSA1MywyNyBDNTMsMTIuNjQwNTk2NSA0MS4zNTk0MDM1LDEgMjcsMSBDMTIuNjQwNTk2NSwxIDEsMTIuNjQwNTk2NSAxLDI3IEMxLDQxLjM1OTQwMzUgMTIuNjQwNTk2NSw1MyAyNyw1MyBaXFxcIiBpZD1cXFwiT3ZhbC0yXFxcIiBzdHJva2Utb3BhY2l0eT1cXFwiMC4xOTg3OTQxNThcXFwiIHN0cm9rZT1cXFwiIzc0NzQ3NFxcXCIgZmlsbC1vcGFjaXR5PVxcXCIwLjgxNjUxOTQ3NVxcXCIgZmlsbD1cXFwiI0ZGRkZGRlxcXCIgc2tldGNoOnR5cGU9XFxcIk1TU2hhcGVHcm91cFxcXCI+PC9wYXRoPlxcbiAgICAgIDwvZz5cXG4gICAgPC9zdmc+XFxuICA8L2Rpdj5cXG4gIDxkaXYgY2xhc3M9XFxcImR6LWVycm9yLW1hcmtcXFwiPlxcbiAgICA8c3ZnIHdpZHRoPVxcXCI1NHB4XFxcIiBoZWlnaHQ9XFxcIjU0cHhcXFwiIHZpZXdCb3g9XFxcIjAgMCA1NCA1NFxcXCIgdmVyc2lvbj1cXFwiMS4xXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHhtbG5zOnhsaW5rPVxcXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXFxcIiB4bWxuczpza2V0Y2g9XFxcImh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaC9uc1xcXCI+XFxuICAgICAgPHRpdGxlPkVycm9yPC90aXRsZT5cXG4gICAgICA8ZGVmcz48L2RlZnM+XFxuICAgICAgPGcgaWQ9XFxcIlBhZ2UtMVxcXCIgc3Ryb2tlPVxcXCJub25lXFxcIiBzdHJva2Utd2lkdGg9XFxcIjFcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIGZpbGwtcnVsZT1cXFwiZXZlbm9kZFxcXCIgc2tldGNoOnR5cGU9XFxcIk1TUGFnZVxcXCI+XFxuICAgICAgICA8ZyBpZD1cXFwiQ2hlY2stKy1PdmFsLTJcXFwiIHNrZXRjaDp0eXBlPVxcXCJNU0xheWVyR3JvdXBcXFwiIHN0cm9rZT1cXFwiIzc0NzQ3NFxcXCIgc3Ryb2tlLW9wYWNpdHk9XFxcIjAuMTk4Nzk0MTU4XFxcIiBmaWxsPVxcXCIjRkZGRkZGXFxcIiBmaWxsLW9wYWNpdHk9XFxcIjAuODE2NTE5NDc1XFxcIj5cXG4gICAgICAgICAgPHBhdGggZD1cXFwiTTMyLjY1Njg1NDIsMjkgTDM4LjMxMDY5NzgsMjMuMzQ2MTU2NCBDMzkuODc3MTAyMSwyMS43Nzk3NTIxIDM5Ljg3NTgwNTcsMTkuMjQ4Mzg4NyAzOC4zMTM3MDg1LDE3LjY4NjI5MTUgQzM2Ljc1NDc4OTksMTYuMTI3MzcyOSAzNC4yMTc2MDM1LDE2LjEyNTU0MjIgMzIuNjUzODQzNiwxNy42ODkzMDIyIEwyNywyMy4zNDMxNDU4IEwyMS4zNDYxNTY0LDE3LjY4OTMwMjIgQzE5Ljc4MjM5NjUsMTYuMTI1NTQyMiAxNy4yNDUyMTAxLDE2LjEyNzM3MjkgMTUuNjg2MjkxNSwxNy42ODYyOTE1IEMxNC4xMjQxOTQzLDE5LjI0ODM4ODcgMTQuMTIyODk3OSwyMS43Nzk3NTIxIDE1LjY4OTMwMjIsMjMuMzQ2MTU2NCBMMjEuMzQzMTQ1OCwyOSBMMTUuNjg5MzAyMiwzNC42NTM4NDM2IEMxNC4xMjI4OTc5LDM2LjIyMDI0NzkgMTQuMTI0MTk0MywzOC43NTE2MTEzIDE1LjY4NjI5MTUsNDAuMzEzNzA4NSBDMTcuMjQ1MjEwMSw0MS44NzI2MjcxIDE5Ljc4MjM5NjUsNDEuODc0NDU3OCAyMS4zNDYxNTY0LDQwLjMxMDY5NzggTDI3LDM0LjY1Njg1NDIgTDMyLjY1Mzg0MzYsNDAuMzEwNjk3OCBDMzQuMjE3NjAzNSw0MS44NzQ0NTc4IDM2Ljc1NDc4OTksNDEuODcyNjI3MSAzOC4zMTM3MDg1LDQwLjMxMzcwODUgQzM5Ljg3NTgwNTcsMzguNzUxNjExMyAzOS44NzcxMDIxLDM2LjIyMDI0NzkgMzguMzEwNjk3OCwzNC42NTM4NDM2IEwzMi42NTY4NTQyLDI5IFogTTI3LDUzIEM0MS4zNTk0MDM1LDUzIDUzLDQxLjM1OTQwMzUgNTMsMjcgQzUzLDEyLjY0MDU5NjUgNDEuMzU5NDAzNSwxIDI3LDEgQzEyLjY0MDU5NjUsMSAxLDEyLjY0MDU5NjUgMSwyNyBDMSw0MS4zNTk0MDM1IDEyLjY0MDU5NjUsNTMgMjcsNTMgWlxcXCIgaWQ9XFxcIk92YWwtMlxcXCIgc2tldGNoOnR5cGU9XFxcIk1TU2hhcGVHcm91cFxcXCI+PC9wYXRoPlxcbiAgICAgICAgPC9nPlxcbiAgICAgIDwvZz5cXG4gICAgPC9zdmc+XFxuICA8L2Rpdj5cXG48L2Rpdj5cIlxuICAgIH07XG5cbiAgICBleHRlbmQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBrZXksIG9iamVjdCwgb2JqZWN0cywgdGFyZ2V0LCB2YWwsIF9pLCBfbGVuO1xuICAgICAgdGFyZ2V0ID0gYXJndW1lbnRzWzBdLCBvYmplY3RzID0gMiA8PSBhcmd1bWVudHMubGVuZ3RoID8gX19zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkgOiBbXTtcbiAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gb2JqZWN0cy5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICBvYmplY3QgPSBvYmplY3RzW19pXTtcbiAgICAgICAgZm9yIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgdmFsID0gb2JqZWN0W2tleV07XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIERyb3B6b25lKGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBlbGVtZW50T3B0aW9ucywgZmFsbGJhY2ssIF9yZWY7XG4gICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgdGhpcy52ZXJzaW9uID0gRHJvcHpvbmUudmVyc2lvbjtcbiAgICAgIHRoaXMuZGVmYXVsdE9wdGlvbnMucHJldmlld1RlbXBsYXRlID0gdGhpcy5kZWZhdWx0T3B0aW9ucy5wcmV2aWV3VGVtcGxhdGUucmVwbGFjZSgvXFxuKi9nLCBcIlwiKTtcbiAgICAgIHRoaXMuY2xpY2thYmxlRWxlbWVudHMgPSBbXTtcbiAgICAgIHRoaXMubGlzdGVuZXJzID0gW107XG4gICAgICB0aGlzLmZpbGVzID0gW107XG4gICAgICBpZiAodHlwZW9mIHRoaXMuZWxlbWVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuZWxlbWVudCk7XG4gICAgICB9XG4gICAgICBpZiAoISh0aGlzLmVsZW1lbnQgJiYgKHRoaXMuZWxlbWVudC5ub2RlVHlwZSAhPSBudWxsKSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBkcm9wem9uZSBlbGVtZW50LlwiKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmVsZW1lbnQuZHJvcHpvbmUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRHJvcHpvbmUgYWxyZWFkeSBhdHRhY2hlZC5cIik7XG4gICAgICB9XG4gICAgICBEcm9wem9uZS5pbnN0YW5jZXMucHVzaCh0aGlzKTtcbiAgICAgIHRoaXMuZWxlbWVudC5kcm9wem9uZSA9IHRoaXM7XG4gICAgICBlbGVtZW50T3B0aW9ucyA9IChfcmVmID0gRHJvcHpvbmUub3B0aW9uc0ZvckVsZW1lbnQodGhpcy5lbGVtZW50KSkgIT0gbnVsbCA/IF9yZWYgOiB7fTtcbiAgICAgIHRoaXMub3B0aW9ucyA9IGV4dGVuZCh7fSwgdGhpcy5kZWZhdWx0T3B0aW9ucywgZWxlbWVudE9wdGlvbnMsIG9wdGlvbnMgIT0gbnVsbCA/IG9wdGlvbnMgOiB7fSk7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmZvcmNlRmFsbGJhY2sgfHwgIURyb3B6b25lLmlzQnJvd3NlclN1cHBvcnRlZCgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmFsbGJhY2suY2FsbCh0aGlzKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudXJsID09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnVybCA9IHRoaXMuZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJhY3Rpb25cIik7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy51cmwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gVVJMIHByb3ZpZGVkLlwiKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuYWNjZXB0ZWRGaWxlcyAmJiB0aGlzLm9wdGlvbnMuYWNjZXB0ZWRNaW1lVHlwZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWW91IGNhbid0IHByb3ZpZGUgYm90aCAnYWNjZXB0ZWRGaWxlcycgYW5kICdhY2NlcHRlZE1pbWVUeXBlcycuICdhY2NlcHRlZE1pbWVUeXBlcycgaXMgZGVwcmVjYXRlZC5cIik7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmFjY2VwdGVkTWltZVR5cGVzKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5hY2NlcHRlZEZpbGVzID0gdGhpcy5vcHRpb25zLmFjY2VwdGVkTWltZVR5cGVzO1xuICAgICAgICBkZWxldGUgdGhpcy5vcHRpb25zLmFjY2VwdGVkTWltZVR5cGVzO1xuICAgICAgfVxuICAgICAgdGhpcy5vcHRpb25zLm1ldGhvZCA9IHRoaXMub3B0aW9ucy5tZXRob2QudG9VcHBlckNhc2UoKTtcbiAgICAgIGlmICgoZmFsbGJhY2sgPSB0aGlzLmdldEV4aXN0aW5nRmFsbGJhY2soKSkgJiYgZmFsbGJhY2sucGFyZW50Tm9kZSkge1xuICAgICAgICBmYWxsYmFjay5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGZhbGxiYWNrKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucHJldmlld3NDb250YWluZXIgIT09IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucHJldmlld3NDb250YWluZXIpIHtcbiAgICAgICAgICB0aGlzLnByZXZpZXdzQ29udGFpbmVyID0gRHJvcHpvbmUuZ2V0RWxlbWVudCh0aGlzLm9wdGlvbnMucHJldmlld3NDb250YWluZXIsIFwicHJldmlld3NDb250YWluZXJcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5wcmV2aWV3c0NvbnRhaW5lciA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5jbGlja2FibGUpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jbGlja2FibGUgPT09IHRydWUpIHtcbiAgICAgICAgICB0aGlzLmNsaWNrYWJsZUVsZW1lbnRzID0gW3RoaXMuZWxlbWVudF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jbGlja2FibGVFbGVtZW50cyA9IERyb3B6b25lLmdldEVsZW1lbnRzKHRoaXMub3B0aW9ucy5jbGlja2FibGUsIFwiY2xpY2thYmxlXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmluaXQoKTtcbiAgICB9XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuZ2V0QWNjZXB0ZWRGaWxlcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGZpbGUsIF9pLCBfbGVuLCBfcmVmLCBfcmVzdWx0cztcbiAgICAgIF9yZWYgPSB0aGlzLmZpbGVzO1xuICAgICAgX3Jlc3VsdHMgPSBbXTtcbiAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gX3JlZi5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICBmaWxlID0gX3JlZltfaV07XG4gICAgICAgIGlmIChmaWxlLmFjY2VwdGVkKSB7XG4gICAgICAgICAgX3Jlc3VsdHMucHVzaChmaWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIF9yZXN1bHRzO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuZ2V0UmVqZWN0ZWRGaWxlcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGZpbGUsIF9pLCBfbGVuLCBfcmVmLCBfcmVzdWx0cztcbiAgICAgIF9yZWYgPSB0aGlzLmZpbGVzO1xuICAgICAgX3Jlc3VsdHMgPSBbXTtcbiAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gX3JlZi5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICBmaWxlID0gX3JlZltfaV07XG4gICAgICAgIGlmICghZmlsZS5hY2NlcHRlZCkge1xuICAgICAgICAgIF9yZXN1bHRzLnB1c2goZmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBfcmVzdWx0cztcbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLmdldEZpbGVzV2l0aFN0YXR1cyA9IGZ1bmN0aW9uKHN0YXR1cykge1xuICAgICAgdmFyIGZpbGUsIF9pLCBfbGVuLCBfcmVmLCBfcmVzdWx0cztcbiAgICAgIF9yZWYgPSB0aGlzLmZpbGVzO1xuICAgICAgX3Jlc3VsdHMgPSBbXTtcbiAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gX3JlZi5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICBmaWxlID0gX3JlZltfaV07XG4gICAgICAgIGlmIChmaWxlLnN0YXR1cyA9PT0gc3RhdHVzKSB7XG4gICAgICAgICAgX3Jlc3VsdHMucHVzaChmaWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIF9yZXN1bHRzO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuZ2V0UXVldWVkRmlsZXMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZpbGVzV2l0aFN0YXR1cyhEcm9wem9uZS5RVUVVRUQpO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuZ2V0VXBsb2FkaW5nRmlsZXMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZpbGVzV2l0aFN0YXR1cyhEcm9wem9uZS5VUExPQURJTkcpO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuZ2V0QWRkZWRGaWxlcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0RmlsZXNXaXRoU3RhdHVzKERyb3B6b25lLkFEREVEKTtcbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLmdldEFjdGl2ZUZpbGVzID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZmlsZSwgX2ksIF9sZW4sIF9yZWYsIF9yZXN1bHRzO1xuICAgICAgX3JlZiA9IHRoaXMuZmlsZXM7XG4gICAgICBfcmVzdWx0cyA9IFtdO1xuICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgIGZpbGUgPSBfcmVmW19pXTtcbiAgICAgICAgaWYgKGZpbGUuc3RhdHVzID09PSBEcm9wem9uZS5VUExPQURJTkcgfHwgZmlsZS5zdGF0dXMgPT09IERyb3B6b25lLlFVRVVFRCkge1xuICAgICAgICAgIF9yZXN1bHRzLnB1c2goZmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBfcmVzdWx0cztcbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBldmVudE5hbWUsIG5vUHJvcGFnYXRpb24sIHNldHVwSGlkZGVuRmlsZUlucHV0LCBfaSwgX2xlbiwgX3JlZiwgX3JlZjE7XG4gICAgICBpZiAodGhpcy5lbGVtZW50LnRhZ05hbWUgPT09IFwiZm9ybVwiKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJlbmN0eXBlXCIsIFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiZHJvcHpvbmVcIikgJiYgIXRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLmR6LW1lc3NhZ2VcIikpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKERyb3B6b25lLmNyZWF0ZUVsZW1lbnQoXCI8ZGl2IGNsYXNzPVxcXCJkei1kZWZhdWx0IGR6LW1lc3NhZ2VcXFwiPjxzcGFuPlwiICsgdGhpcy5vcHRpb25zLmRpY3REZWZhdWx0TWVzc2FnZSArIFwiPC9zcGFuPjwvZGl2PlwiKSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jbGlja2FibGVFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgc2V0dXBIaWRkZW5GaWxlSW5wdXQgPSAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpZiAoX3RoaXMuaGlkZGVuRmlsZUlucHV0KSB7XG4gICAgICAgICAgICAgIF90aGlzLmhpZGRlbkZpbGVJbnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKF90aGlzLmhpZGRlbkZpbGVJbnB1dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfdGhpcy5oaWRkZW5GaWxlSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG4gICAgICAgICAgICBfdGhpcy5oaWRkZW5GaWxlSW5wdXQuc2V0QXR0cmlidXRlKFwidHlwZVwiLCBcImZpbGVcIik7XG4gICAgICAgICAgICBpZiAoKF90aGlzLm9wdGlvbnMubWF4RmlsZXMgPT0gbnVsbCkgfHwgX3RoaXMub3B0aW9ucy5tYXhGaWxlcyA+IDEpIHtcbiAgICAgICAgICAgICAgX3RoaXMuaGlkZGVuRmlsZUlucHV0LnNldEF0dHJpYnV0ZShcIm11bHRpcGxlXCIsIFwibXVsdGlwbGVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfdGhpcy5oaWRkZW5GaWxlSW5wdXQuY2xhc3NOYW1lID0gXCJkei1oaWRkZW4taW5wdXRcIjtcbiAgICAgICAgICAgIGlmIChfdGhpcy5vcHRpb25zLmFjY2VwdGVkRmlsZXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgICBfdGhpcy5oaWRkZW5GaWxlSW5wdXQuc2V0QXR0cmlidXRlKFwiYWNjZXB0XCIsIF90aGlzLm9wdGlvbnMuYWNjZXB0ZWRGaWxlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoX3RoaXMub3B0aW9ucy5jYXB0dXJlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgX3RoaXMuaGlkZGVuRmlsZUlucHV0LnNldEF0dHJpYnV0ZShcImNhcHR1cmVcIiwgX3RoaXMub3B0aW9ucy5jYXB0dXJlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF90aGlzLmhpZGRlbkZpbGVJbnB1dC5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcbiAgICAgICAgICAgIF90aGlzLmhpZGRlbkZpbGVJbnB1dC5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcbiAgICAgICAgICAgIF90aGlzLmhpZGRlbkZpbGVJbnB1dC5zdHlsZS50b3AgPSBcIjBcIjtcbiAgICAgICAgICAgICAgX3RoaXMuaGlkZGVuRmlsZUlucHV0LmlkID0gXCJ1cGxvYWRcIjtcbiAgICAgICAgICAgICAgX3RoaXMuaGlkZGVuRmlsZUlucHV0LnN0eWxlLmxlZnQgPSBcIjBcIjtcbiAgICAgICAgICAgIF90aGlzLmhpZGRlbkZpbGVJbnB1dC5zdHlsZS5oZWlnaHQgPSBcIjBcIjtcbiAgICAgICAgICAgIF90aGlzLmhpZGRlbkZpbGVJbnB1dC5zdHlsZS53aWR0aCA9IFwiMFwiO1xuICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihfdGhpcy5vcHRpb25zLmhpZGRlbklucHV0Q29udGFpbmVyKS5hcHBlbmRDaGlsZChfdGhpcy5oaWRkZW5GaWxlSW5wdXQpO1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzLmhpZGRlbkZpbGVJbnB1dC5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICB2YXIgZmlsZSwgZmlsZXMsIF9pLCBfbGVuO1xuICAgICAgICAgICAgICBmaWxlcyA9IF90aGlzLmhpZGRlbkZpbGVJbnB1dC5maWxlcztcbiAgICAgICAgICAgICAgaWYgKGZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gZmlsZXMubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgICAgICAgICAgIGZpbGUgPSBmaWxlc1tfaV07XG4gICAgICAgICAgICAgICAgICBfdGhpcy5hZGRGaWxlKGZpbGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBfdGhpcy5lbWl0KFwiYWRkZWRmaWxlc1wiLCBmaWxlcyk7XG4gICAgICAgICAgICAgIHJldHVybiBzZXR1cEhpZGRlbkZpbGVJbnB1dCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSkodGhpcyk7XG4gICAgICAgIHNldHVwSGlkZGVuRmlsZUlucHV0KCk7XG4gICAgICB9XG4gICAgICB0aGlzLlVSTCA9IChfcmVmID0gd2luZG93LlVSTCkgIT0gbnVsbCA/IF9yZWYgOiB3aW5kb3cud2Via2l0VVJMO1xuICAgICAgX3JlZjEgPSB0aGlzLmV2ZW50cztcbiAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gX3JlZjEubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgZXZlbnROYW1lID0gX3JlZjFbX2ldO1xuICAgICAgICB0aGlzLm9uKGV2ZW50TmFtZSwgdGhpcy5vcHRpb25zW2V2ZW50TmFtZV0pO1xuICAgICAgfVxuICAgICAgdGhpcy5vbihcInVwbG9hZHByb2dyZXNzXCIsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLnVwZGF0ZVRvdGFsVXBsb2FkUHJvZ3Jlc3MoKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHRoaXMub24oXCJyZW1vdmVkZmlsZVwiLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy51cGRhdGVUb3RhbFVwbG9hZFByb2dyZXNzKCk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICB0aGlzLm9uKFwiY2FuY2VsZWRcIiwgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihmaWxlKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLmVtaXQoXCJjb21wbGV0ZVwiLCBmaWxlKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHRoaXMub24oXCJjb21wbGV0ZVwiLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGZpbGUpIHtcbiAgICAgICAgICBpZiAoX3RoaXMuZ2V0QWRkZWRGaWxlcygpLmxlbmd0aCA9PT0gMCAmJiBfdGhpcy5nZXRVcGxvYWRpbmdGaWxlcygpLmxlbmd0aCA9PT0gMCAmJiBfdGhpcy5nZXRRdWV1ZWRGaWxlcygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuZW1pdChcInF1ZXVlY29tcGxldGVcIik7XG4gICAgICAgICAgICB9KSwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgbm9Qcm9wYWdhdGlvbiA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKGUucHJldmVudERlZmF1bHQpIHtcbiAgICAgICAgICByZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBlLnJldHVyblZhbHVlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB0aGlzLmxpc3RlbmVycyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGVsZW1lbnQ6IHRoaXMuZWxlbWVudCxcbiAgICAgICAgICBldmVudHM6IHtcbiAgICAgICAgICAgIFwiZHJhZ3N0YXJ0XCI6IChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5lbWl0KFwiZHJhZ3N0YXJ0XCIsIGUpO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSkodGhpcyksXG4gICAgICAgICAgICBcImRyYWdlbnRlclwiOiAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICBub1Byb3BhZ2F0aW9uKGUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5lbWl0KFwiZHJhZ2VudGVyXCIsIGUpO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSkodGhpcyksXG4gICAgICAgICAgICBcImRyYWdvdmVyXCI6IChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIHZhciBlZmN0O1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICBlZmN0ID0gZS5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZDtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChfZXJyb3IpIHt9XG4gICAgICAgICAgICAgICAgZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdtb3ZlJyA9PT0gZWZjdCB8fCAnbGlua01vdmUnID09PSBlZmN0ID8gJ21vdmUnIDogJ2NvcHknO1xuICAgICAgICAgICAgICAgIG5vUHJvcGFnYXRpb24oZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmVtaXQoXCJkcmFnb3ZlclwiLCBlKTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pKHRoaXMpLFxuICAgICAgICAgICAgXCJkcmFnbGVhdmVcIjogKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmVtaXQoXCJkcmFnbGVhdmVcIiwgZSk7XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSh0aGlzKSxcbiAgICAgICAgICAgIFwiZHJvcFwiOiAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICBub1Byb3BhZ2F0aW9uKGUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5kcm9wKGUpO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSkodGhpcyksXG4gICAgICAgICAgICBcImRyYWdlbmRcIjogKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmVtaXQoXCJkcmFnZW5kXCIsIGUpO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSkodGhpcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgICB0aGlzLmNsaWNrYWJsZUVsZW1lbnRzLmZvckVhY2goKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihjbGlja2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLmxpc3RlbmVycy5wdXNoKHtcbiAgICAgICAgICAgIGVsZW1lbnQ6IGNsaWNrYWJsZUVsZW1lbnQsXG4gICAgICAgICAgICBldmVudHM6IHtcbiAgICAgICAgICAgICAgXCJjbGlja1wiOiBmdW5jdGlvbihldnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoKGNsaWNrYWJsZUVsZW1lbnQgIT09IF90aGlzLmVsZW1lbnQpIHx8IChldnQudGFyZ2V0ID09PSBfdGhpcy5lbGVtZW50IHx8IERyb3B6b25lLmVsZW1lbnRJbnNpZGUoZXZ0LnRhcmdldCwgX3RoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLmR6LW1lc3NhZ2VcIikpKSkge1xuICAgICAgICAgICAgICAgICAgX3RoaXMuaGlkZGVuRmlsZUlucHV0LmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICB0aGlzLmVuYWJsZSgpO1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pbml0LmNhbGwodGhpcyk7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgX3JlZjtcbiAgICAgIHRoaXMuZGlzYWJsZSgpO1xuICAgICAgdGhpcy5yZW1vdmVBbGxGaWxlcyh0cnVlKTtcbiAgICAgIGlmICgoX3JlZiA9IHRoaXMuaGlkZGVuRmlsZUlucHV0KSAhPSBudWxsID8gX3JlZi5wYXJlbnROb2RlIDogdm9pZCAwKSB7XG4gICAgICAgIHRoaXMuaGlkZGVuRmlsZUlucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5oaWRkZW5GaWxlSW5wdXQpO1xuICAgICAgICB0aGlzLmhpZGRlbkZpbGVJbnB1dCA9IG51bGw7XG4gICAgICB9XG4gICAgICBkZWxldGUgdGhpcy5lbGVtZW50LmRyb3B6b25lO1xuICAgICAgcmV0dXJuIERyb3B6b25lLmluc3RhbmNlcy5zcGxpY2UoRHJvcHpvbmUuaW5zdGFuY2VzLmluZGV4T2YodGhpcyksIDEpO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUudXBkYXRlVG90YWxVcGxvYWRQcm9ncmVzcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGFjdGl2ZUZpbGVzLCBmaWxlLCB0b3RhbEJ5dGVzLCB0b3RhbEJ5dGVzU2VudCwgdG90YWxVcGxvYWRQcm9ncmVzcywgX2ksIF9sZW4sIF9yZWY7XG4gICAgICB0b3RhbEJ5dGVzU2VudCA9IDA7XG4gICAgICB0b3RhbEJ5dGVzID0gMDtcbiAgICAgIGFjdGl2ZUZpbGVzID0gdGhpcy5nZXRBY3RpdmVGaWxlcygpO1xuICAgICAgaWYgKGFjdGl2ZUZpbGVzLmxlbmd0aCkge1xuICAgICAgICBfcmVmID0gdGhpcy5nZXRBY3RpdmVGaWxlcygpO1xuICAgICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IF9yZWYubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgICBmaWxlID0gX3JlZltfaV07XG4gICAgICAgICAgdG90YWxCeXRlc1NlbnQgKz0gZmlsZS51cGxvYWQuYnl0ZXNTZW50O1xuICAgICAgICAgIHRvdGFsQnl0ZXMgKz0gZmlsZS51cGxvYWQudG90YWw7XG4gICAgICAgIH1cbiAgICAgICAgdG90YWxVcGxvYWRQcm9ncmVzcyA9IDEwMCAqIHRvdGFsQnl0ZXNTZW50IC8gdG90YWxCeXRlcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRvdGFsVXBsb2FkUHJvZ3Jlc3MgPSAxMDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5lbWl0KFwidG90YWx1cGxvYWRwcm9ncmVzc1wiLCB0b3RhbFVwbG9hZFByb2dyZXNzLCB0b3RhbEJ5dGVzLCB0b3RhbEJ5dGVzU2VudCk7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5fZ2V0UGFyYW1OYW1lID0gZnVuY3Rpb24obikge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMucGFyYW1OYW1lID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5wYXJhbU5hbWUobik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gXCJcIiArIHRoaXMub3B0aW9ucy5wYXJhbU5hbWUgKyAodGhpcy5vcHRpb25zLnVwbG9hZE11bHRpcGxlID8gXCJbXCIgKyBuICsgXCJdXCIgOiBcIlwiKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLmdldEZhbGxiYWNrRm9ybSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGV4aXN0aW5nRmFsbGJhY2ssIGZpZWxkcywgZmllbGRzU3RyaW5nLCBmb3JtO1xuICAgICAgaWYgKGV4aXN0aW5nRmFsbGJhY2sgPSB0aGlzLmdldEV4aXN0aW5nRmFsbGJhY2soKSkge1xuICAgICAgICByZXR1cm4gZXhpc3RpbmdGYWxsYmFjaztcbiAgICAgIH1cbiAgICAgIGZpZWxkc1N0cmluZyA9IFwiPGRpdiBjbGFzcz1cXFwiZHotZmFsbGJhY2tcXFwiPlwiO1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5kaWN0RmFsbGJhY2tUZXh0KSB7XG4gICAgICAgIGZpZWxkc1N0cmluZyArPSBcIjxwPlwiICsgdGhpcy5vcHRpb25zLmRpY3RGYWxsYmFja1RleHQgKyBcIjwvcD5cIjtcbiAgICAgIH1cbiAgICAgIGZpZWxkc1N0cmluZyArPSBcIjxpbnB1dCB0eXBlPVxcXCJmaWxlXFxcIiBuYW1lPVxcXCJcIiArICh0aGlzLl9nZXRQYXJhbU5hbWUoMCkpICsgXCJcXFwiIFwiICsgKHRoaXMub3B0aW9ucy51cGxvYWRNdWx0aXBsZSA/ICdtdWx0aXBsZT1cIm11bHRpcGxlXCInIDogdm9pZCAwKSArIFwiIC8+PGlucHV0IHR5cGU9XFxcInN1Ym1pdFxcXCIgdmFsdWU9XFxcIlVwbG9hZCFcXFwiPjwvZGl2PlwiO1xuICAgICAgZmllbGRzID0gRHJvcHpvbmUuY3JlYXRlRWxlbWVudChmaWVsZHNTdHJpbmcpO1xuICAgICAgaWYgKHRoaXMuZWxlbWVudC50YWdOYW1lICE9PSBcIkZPUk1cIikge1xuICAgICAgICBmb3JtID0gRHJvcHpvbmUuY3JlYXRlRWxlbWVudChcIjxmb3JtIGFjdGlvbj1cXFwiXCIgKyB0aGlzLm9wdGlvbnMudXJsICsgXCJcXFwiIGVuY3R5cGU9XFxcIm11bHRpcGFydC9mb3JtLWRhdGFcXFwiIG1ldGhvZD1cXFwiXCIgKyB0aGlzLm9wdGlvbnMubWV0aG9kICsgXCJcXFwiPjwvZm9ybT5cIik7XG4gICAgICAgIGZvcm0uYXBwZW5kQ2hpbGQoZmllbGRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJlbmN0eXBlXCIsIFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiKTtcbiAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZShcIm1ldGhvZFwiLCB0aGlzLm9wdGlvbnMubWV0aG9kKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3JtICE9IG51bGwgPyBmb3JtIDogZmllbGRzO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuZ2V0RXhpc3RpbmdGYWxsYmFjayA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGZhbGxiYWNrLCBnZXRGYWxsYmFjaywgdGFnTmFtZSwgX2ksIF9sZW4sIF9yZWY7XG4gICAgICBnZXRGYWxsYmFjayA9IGZ1bmN0aW9uKGVsZW1lbnRzKSB7XG4gICAgICAgIHZhciBlbCwgX2ksIF9sZW47XG4gICAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gZWxlbWVudHMubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgICBlbCA9IGVsZW1lbnRzW19pXTtcbiAgICAgICAgICBpZiAoLyhefCApZmFsbGJhY2soJHwgKS8udGVzdChlbC5jbGFzc05hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZWw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgX3JlZiA9IFtcImRpdlwiLCBcImZvcm1cIl07XG4gICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IF9yZWYubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgdGFnTmFtZSA9IF9yZWZbX2ldO1xuICAgICAgICBpZiAoZmFsbGJhY2sgPSBnZXRGYWxsYmFjayh0aGlzLmVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnTmFtZSkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbGxiYWNrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5zZXR1cEV2ZW50TGlzdGVuZXJzID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZWxlbWVudExpc3RlbmVycywgZXZlbnQsIGxpc3RlbmVyLCBfaSwgX2xlbiwgX3JlZiwgX3Jlc3VsdHM7XG4gICAgICBfcmVmID0gdGhpcy5saXN0ZW5lcnM7XG4gICAgICBfcmVzdWx0cyA9IFtdO1xuICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgIGVsZW1lbnRMaXN0ZW5lcnMgPSBfcmVmW19pXTtcbiAgICAgICAgX3Jlc3VsdHMucHVzaCgoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIF9yZWYxLCBfcmVzdWx0czE7XG4gICAgICAgICAgX3JlZjEgPSBlbGVtZW50TGlzdGVuZXJzLmV2ZW50cztcbiAgICAgICAgICBfcmVzdWx0czEgPSBbXTtcbiAgICAgICAgICBmb3IgKGV2ZW50IGluIF9yZWYxKSB7XG4gICAgICAgICAgICBsaXN0ZW5lciA9IF9yZWYxW2V2ZW50XTtcbiAgICAgICAgICAgIF9yZXN1bHRzMS5wdXNoKGVsZW1lbnRMaXN0ZW5lcnMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBsaXN0ZW5lciwgZmFsc2UpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIF9yZXN1bHRzMTtcbiAgICAgICAgfSkoKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gX3Jlc3VsdHM7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVycyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGVsZW1lbnRMaXN0ZW5lcnMsIGV2ZW50LCBsaXN0ZW5lciwgX2ksIF9sZW4sIF9yZWYsIF9yZXN1bHRzO1xuICAgICAgX3JlZiA9IHRoaXMubGlzdGVuZXJzO1xuICAgICAgX3Jlc3VsdHMgPSBbXTtcbiAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gX3JlZi5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICBlbGVtZW50TGlzdGVuZXJzID0gX3JlZltfaV07XG4gICAgICAgIF9yZXN1bHRzLnB1c2goKGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciBfcmVmMSwgX3Jlc3VsdHMxO1xuICAgICAgICAgIF9yZWYxID0gZWxlbWVudExpc3RlbmVycy5ldmVudHM7XG4gICAgICAgICAgX3Jlc3VsdHMxID0gW107XG4gICAgICAgICAgZm9yIChldmVudCBpbiBfcmVmMSkge1xuICAgICAgICAgICAgbGlzdGVuZXIgPSBfcmVmMVtldmVudF07XG4gICAgICAgICAgICBfcmVzdWx0czEucHVzaChlbGVtZW50TGlzdGVuZXJzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgbGlzdGVuZXIsIGZhbHNlKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBfcmVzdWx0czE7XG4gICAgICAgIH0pKCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIF9yZXN1bHRzO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuZGlzYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGZpbGUsIF9pLCBfbGVuLCBfcmVmLCBfcmVzdWx0cztcbiAgICAgIHRoaXMuY2xpY2thYmxlRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJkei1jbGlja2FibGVcIik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICAgIF9yZWYgPSB0aGlzLmZpbGVzO1xuICAgICAgX3Jlc3VsdHMgPSBbXTtcbiAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gX3JlZi5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICBmaWxlID0gX3JlZltfaV07XG4gICAgICAgIF9yZXN1bHRzLnB1c2godGhpcy5jYW5jZWxVcGxvYWQoZmlsZSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIF9yZXN1bHRzO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmNsaWNrYWJsZUVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiZHotY2xpY2thYmxlXCIpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gdGhpcy5zZXR1cEV2ZW50TGlzdGVuZXJzKCk7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5maWxlc2l6ZSA9IGZ1bmN0aW9uKHNpemUpIHtcbiAgICAgIHZhciBjdXRvZmYsIGksIHNlbGVjdGVkU2l6ZSwgc2VsZWN0ZWRVbml0LCB1bml0LCB1bml0cywgX2ksIF9sZW47XG4gICAgICBzZWxlY3RlZFNpemUgPSAwO1xuICAgICAgc2VsZWN0ZWRVbml0ID0gXCJiXCI7XG4gICAgICBpZiAoc2l6ZSA+IDApIHtcbiAgICAgICAgdW5pdHMgPSBbJ1RCJywgJ0dCJywgJ01CJywgJ0tCJywgJ2InXTtcbiAgICAgICAgZm9yIChpID0gX2kgPSAwLCBfbGVuID0gdW5pdHMubGVuZ3RoOyBfaSA8IF9sZW47IGkgPSArK19pKSB7XG4gICAgICAgICAgdW5pdCA9IHVuaXRzW2ldO1xuICAgICAgICAgIGN1dG9mZiA9IE1hdGgucG93KHRoaXMub3B0aW9ucy5maWxlc2l6ZUJhc2UsIDQgLSBpKSAvIDEwO1xuICAgICAgICAgIGlmIChzaXplID49IGN1dG9mZikge1xuICAgICAgICAgICAgc2VsZWN0ZWRTaXplID0gc2l6ZSAvIE1hdGgucG93KHRoaXMub3B0aW9ucy5maWxlc2l6ZUJhc2UsIDQgLSBpKTtcbiAgICAgICAgICAgIHNlbGVjdGVkVW5pdCA9IHVuaXQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2VsZWN0ZWRTaXplID0gTWF0aC5yb3VuZCgxMCAqIHNlbGVjdGVkU2l6ZSkgLyAxMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBcIjxzdHJvbmc+XCIgKyBzZWxlY3RlZFNpemUgKyBcIjwvc3Ryb25nPiBcIiArIHNlbGVjdGVkVW5pdDtcbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLl91cGRhdGVNYXhGaWxlc1JlYWNoZWRDbGFzcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCh0aGlzLm9wdGlvbnMubWF4RmlsZXMgIT0gbnVsbCkgJiYgdGhpcy5nZXRBY2NlcHRlZEZpbGVzKCkubGVuZ3RoID49IHRoaXMub3B0aW9ucy5tYXhGaWxlcykge1xuICAgICAgICBpZiAodGhpcy5nZXRBY2NlcHRlZEZpbGVzKCkubGVuZ3RoID09PSB0aGlzLm9wdGlvbnMubWF4RmlsZXMpIHtcbiAgICAgICAgICB0aGlzLmVtaXQoJ21heGZpbGVzcmVhY2hlZCcsIHRoaXMuZmlsZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImR6LW1heC1maWxlcy1yZWFjaGVkXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwiZHotbWF4LWZpbGVzLXJlYWNoZWRcIik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5kcm9wID0gZnVuY3Rpb24oZSkge1xuICAgICAgdmFyIGZpbGVzLCBpdGVtcztcbiAgICAgIGlmICghZS5kYXRhVHJhbnNmZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5lbWl0KFwiZHJvcFwiLCBlKTtcbiAgICAgIGZpbGVzID0gZS5kYXRhVHJhbnNmZXIuZmlsZXM7XG4gICAgICB0aGlzLmVtaXQoXCJhZGRlZGZpbGVzXCIsIGZpbGVzKTtcbiAgICAgIGlmIChmaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgaXRlbXMgPSBlLmRhdGFUcmFuc2Zlci5pdGVtcztcbiAgICAgICAgaWYgKGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCAmJiAoaXRlbXNbMF0ud2Via2l0R2V0QXNFbnRyeSAhPSBudWxsKSkge1xuICAgICAgICAgIHRoaXMuX2FkZEZpbGVzRnJvbUl0ZW1zKGl0ZW1zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUZpbGVzKGZpbGVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUucGFzdGUgPSBmdW5jdGlvbihlKSB7XG4gICAgICB2YXIgaXRlbXMsIF9yZWY7XG4gICAgICBpZiAoKGUgIT0gbnVsbCA/IChfcmVmID0gZS5jbGlwYm9hcmREYXRhKSAhPSBudWxsID8gX3JlZi5pdGVtcyA6IHZvaWQgMCA6IHZvaWQgMCkgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmVtaXQoXCJwYXN0ZVwiLCBlKTtcbiAgICAgIGl0ZW1zID0gZS5jbGlwYm9hcmREYXRhLml0ZW1zO1xuICAgICAgaWYgKGl0ZW1zLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkRmlsZXNGcm9tSXRlbXMoaXRlbXMpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuaGFuZGxlRmlsZXMgPSBmdW5jdGlvbihmaWxlcykge1xuICAgICAgdmFyIGZpbGUsIF9pLCBfbGVuLCBfcmVzdWx0cztcbiAgICAgIF9yZXN1bHRzID0gW107XG4gICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IGZpbGVzLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgIGZpbGUgPSBmaWxlc1tfaV07XG4gICAgICAgIF9yZXN1bHRzLnB1c2godGhpcy5hZGRGaWxlKGZpbGUpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBfcmVzdWx0cztcbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLl9hZGRGaWxlc0Zyb21JdGVtcyA9IGZ1bmN0aW9uKGl0ZW1zKSB7XG4gICAgICB2YXIgZW50cnksIGl0ZW0sIF9pLCBfbGVuLCBfcmVzdWx0cztcbiAgICAgIF9yZXN1bHRzID0gW107XG4gICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IGl0ZW1zLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgIGl0ZW0gPSBpdGVtc1tfaV07XG4gICAgICAgIGlmICgoaXRlbS53ZWJraXRHZXRBc0VudHJ5ICE9IG51bGwpICYmIChlbnRyeSA9IGl0ZW0ud2Via2l0R2V0QXNFbnRyeSgpKSkge1xuICAgICAgICAgIGlmIChlbnRyeS5pc0ZpbGUpIHtcbiAgICAgICAgICAgIF9yZXN1bHRzLnB1c2godGhpcy5hZGRGaWxlKGl0ZW0uZ2V0QXNGaWxlKCkpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGVudHJ5LmlzRGlyZWN0b3J5KSB7XG4gICAgICAgICAgICBfcmVzdWx0cy5wdXNoKHRoaXMuX2FkZEZpbGVzRnJvbURpcmVjdG9yeShlbnRyeSwgZW50cnkubmFtZSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfcmVzdWx0cy5wdXNoKHZvaWQgMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uZ2V0QXNGaWxlICE9IG51bGwpIHtcbiAgICAgICAgICBpZiAoKGl0ZW0ua2luZCA9PSBudWxsKSB8fCBpdGVtLmtpbmQgPT09IFwiZmlsZVwiKSB7XG4gICAgICAgICAgICBfcmVzdWx0cy5wdXNoKHRoaXMuYWRkRmlsZShpdGVtLmdldEFzRmlsZSgpKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF9yZXN1bHRzLnB1c2godm9pZCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3Jlc3VsdHMucHVzaCh2b2lkIDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gX3Jlc3VsdHM7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5fYWRkRmlsZXNGcm9tRGlyZWN0b3J5ID0gZnVuY3Rpb24oZGlyZWN0b3J5LCBwYXRoKSB7XG4gICAgICB2YXIgZGlyUmVhZGVyLCBlbnRyaWVzUmVhZGVyO1xuICAgICAgZGlyUmVhZGVyID0gZGlyZWN0b3J5LmNyZWF0ZVJlYWRlcigpO1xuICAgICAgZW50cmllc1JlYWRlciA9IChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZW50cmllcykge1xuICAgICAgICAgIHZhciBlbnRyeSwgX2ksIF9sZW47XG4gICAgICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBlbnRyaWVzLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgICAgICBlbnRyeSA9IGVudHJpZXNbX2ldO1xuICAgICAgICAgICAgaWYgKGVudHJ5LmlzRmlsZSkge1xuICAgICAgICAgICAgICBlbnRyeS5maWxlKGZ1bmN0aW9uKGZpbGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMub3B0aW9ucy5pZ25vcmVIaWRkZW5GaWxlcyAmJiBmaWxlLm5hbWUuc3Vic3RyaW5nKDAsIDEpID09PSAnLicpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmlsZS5mdWxsUGF0aCA9IFwiXCIgKyBwYXRoICsgXCIvXCIgKyBmaWxlLm5hbWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmFkZEZpbGUoZmlsZSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlbnRyeS5pc0RpcmVjdG9yeSkge1xuICAgICAgICAgICAgICBfdGhpcy5fYWRkRmlsZXNGcm9tRGlyZWN0b3J5KGVudHJ5LCBcIlwiICsgcGF0aCArIFwiL1wiICsgZW50cnkubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSkodGhpcyk7XG4gICAgICByZXR1cm4gZGlyUmVhZGVyLnJlYWRFbnRyaWVzKGVudHJpZXNSZWFkZXIsIGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBjb25zb2xlICE9PSBudWxsID8gdHlwZW9mIGNvbnNvbGUubG9nID09PSBcImZ1bmN0aW9uXCIgPyBjb25zb2xlLmxvZyhlcnJvcikgOiB2b2lkIDAgOiB2b2lkIDA7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uKGZpbGUsIGRvbmUpIHtcbiAgICAgIGlmIChmaWxlLnNpemUgPiB0aGlzLm9wdGlvbnMubWF4RmlsZXNpemUgKiAxMDI0ICogMTAyNCkge1xuICAgICAgICByZXR1cm4gZG9uZSh0aGlzLm9wdGlvbnMuZGljdEZpbGVUb29CaWcucmVwbGFjZShcInt7ZmlsZXNpemV9fVwiLCBNYXRoLnJvdW5kKGZpbGUuc2l6ZSAvIDEwMjQgLyAxMC4yNCkgLyAxMDApLnJlcGxhY2UoXCJ7e21heEZpbGVzaXplfX1cIiwgdGhpcy5vcHRpb25zLm1heEZpbGVzaXplKSk7XG4gICAgICB9IGVsc2UgaWYgKCFEcm9wem9uZS5pc1ZhbGlkRmlsZShmaWxlLCB0aGlzLm9wdGlvbnMuYWNjZXB0ZWRGaWxlcykpIHtcbiAgICAgICAgcmV0dXJuIGRvbmUodGhpcy5vcHRpb25zLmRpY3RJbnZhbGlkRmlsZVR5cGUpO1xuICAgICAgfSBlbHNlIGlmICgodGhpcy5vcHRpb25zLm1heEZpbGVzICE9IG51bGwpICYmIHRoaXMuZ2V0QWNjZXB0ZWRGaWxlcygpLmxlbmd0aCA+PSB0aGlzLm9wdGlvbnMubWF4RmlsZXMpIHtcbiAgICAgICAgZG9uZSh0aGlzLm9wdGlvbnMuZGljdE1heEZpbGVzRXhjZWVkZWQucmVwbGFjZShcInt7bWF4RmlsZXN9fVwiLCB0aGlzLm9wdGlvbnMubWF4RmlsZXMpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1pdChcIm1heGZpbGVzZXhjZWVkZWRcIiwgZmlsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmFjY2VwdC5jYWxsKHRoaXMsIGZpbGUsIGRvbmUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuYWRkRmlsZSA9IGZ1bmN0aW9uKGZpbGUpIHtcbiAgICAgIGZpbGUudXBsb2FkID0ge1xuICAgICAgICBwcm9ncmVzczogMCxcbiAgICAgICAgdG90YWw6IGZpbGUuc2l6ZSxcbiAgICAgICAgYnl0ZXNTZW50OiAwXG4gICAgICB9O1xuICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGUpO1xuICAgICAgZmlsZS5zdGF0dXMgPSBEcm9wem9uZS5BRERFRDtcbiAgICAgIHRoaXMuZW1pdChcImFkZGVkZmlsZVwiLCBmaWxlKTtcbiAgICAgIHRoaXMuX2VucXVldWVUaHVtYm5haWwoZmlsZSk7XG4gICAgICByZXR1cm4gdGhpcy5hY2NlcHQoZmlsZSwgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihlcnJvcikge1xuICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgZmlsZS5hY2NlcHRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgX3RoaXMuX2Vycm9yUHJvY2Vzc2luZyhbZmlsZV0sIGVycm9yKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmlsZS5hY2NlcHRlZCA9IHRydWU7XG4gICAgICAgICAgICBpZiAoX3RoaXMub3B0aW9ucy5hdXRvUXVldWUpIHtcbiAgICAgICAgICAgICAgX3RoaXMuZW5xdWV1ZUZpbGUoZmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBfdGhpcy5fdXBkYXRlTWF4RmlsZXNSZWFjaGVkQ2xhc3MoKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLmVucXVldWVGaWxlcyA9IGZ1bmN0aW9uKGZpbGVzKSB7XG4gICAgICB2YXIgZmlsZSwgX2ksIF9sZW47XG4gICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IGZpbGVzLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgIGZpbGUgPSBmaWxlc1tfaV07XG4gICAgICAgIHRoaXMuZW5xdWV1ZUZpbGUoZmlsZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLmVucXVldWVGaWxlID0gZnVuY3Rpb24oZmlsZSkge1xuICAgICAgaWYgKGZpbGUuc3RhdHVzID09PSBEcm9wem9uZS5BRERFRCAmJiBmaWxlLmFjY2VwdGVkID09PSB0cnVlKSB7XG4gICAgICAgIGZpbGUuc3RhdHVzID0gRHJvcHpvbmUuUVVFVUVEO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmF1dG9Qcm9jZXNzUXVldWUpIHtcbiAgICAgICAgICByZXR1cm4gc2V0VGltZW91dCgoKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIHJldHVybiBfdGhpcy5wcm9jZXNzUXVldWUoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSkodGhpcykpLCAwKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBmaWxlIGNhbid0IGJlIHF1ZXVlZCBiZWNhdXNlIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIG9yIHdhcyByZWplY3RlZC5cIik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5fdGh1bWJuYWlsUXVldWUgPSBbXTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5fcHJvY2Vzc2luZ1RodW1ibmFpbCA9IGZhbHNlO1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLl9lbnF1ZXVlVGh1bWJuYWlsID0gZnVuY3Rpb24oZmlsZSkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5jcmVhdGVJbWFnZVRodW1ibmFpbHMgJiYgZmlsZS50eXBlLm1hdGNoKC9pbWFnZS4qLykgJiYgZmlsZS5zaXplIDw9IHRoaXMub3B0aW9ucy5tYXhUaHVtYm5haWxGaWxlc2l6ZSAqIDEwMjQgKiAxMDI0KSB7XG4gICAgICAgIHRoaXMuX3RodW1ibmFpbFF1ZXVlLnB1c2goZmlsZSk7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KCgoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuX3Byb2Nlc3NUaHVtYm5haWxRdWV1ZSgpO1xuICAgICAgICAgIH07XG4gICAgICAgIH0pKHRoaXMpKSwgMCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5fcHJvY2Vzc1RodW1ibmFpbFF1ZXVlID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodGhpcy5fcHJvY2Vzc2luZ1RodW1ibmFpbCB8fCB0aGlzLl90aHVtYm5haWxRdWV1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5fcHJvY2Vzc2luZ1RodW1ibmFpbCA9IHRydWU7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVUaHVtYm5haWwodGhpcy5fdGh1bWJuYWlsUXVldWUuc2hpZnQoKSwgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBfdGhpcy5fcHJvY2Vzc2luZ1RodW1ibmFpbCA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBfdGhpcy5fcHJvY2Vzc1RodW1ibmFpbFF1ZXVlKCk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5yZW1vdmVGaWxlID0gZnVuY3Rpb24oZmlsZSkge1xuICAgICAgaWYgKGZpbGUuc3RhdHVzID09PSBEcm9wem9uZS5VUExPQURJTkcpIHtcbiAgICAgICAgdGhpcy5jYW5jZWxVcGxvYWQoZmlsZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmZpbGVzID0gd2l0aG91dCh0aGlzLmZpbGVzLCBmaWxlKTtcbiAgICAgIHRoaXMuZW1pdChcInJlbW92ZWRmaWxlXCIsIGZpbGUpO1xuICAgICAgaWYgKHRoaXMuZmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVtaXQoXCJyZXNldFwiKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLnJlbW92ZUFsbEZpbGVzID0gZnVuY3Rpb24oY2FuY2VsSWZOZWNlc3NhcnkpIHtcbiAgICAgIHZhciBmaWxlLCBfaSwgX2xlbiwgX3JlZjtcbiAgICAgIGlmIChjYW5jZWxJZk5lY2Vzc2FyeSA9PSBudWxsKSB7XG4gICAgICAgIGNhbmNlbElmTmVjZXNzYXJ5ID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBfcmVmID0gdGhpcy5maWxlcy5zbGljZSgpO1xuICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgIGZpbGUgPSBfcmVmW19pXTtcbiAgICAgICAgaWYgKGZpbGUuc3RhdHVzICE9PSBEcm9wem9uZS5VUExPQURJTkcgfHwgY2FuY2VsSWZOZWNlc3NhcnkpIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUZpbGUoZmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuY3JlYXRlVGh1bWJuYWlsID0gZnVuY3Rpb24oZmlsZSwgY2FsbGJhY2spIHtcbiAgICAgIHZhciBmaWxlUmVhZGVyO1xuICAgICAgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyO1xuICAgICAgZmlsZVJlYWRlci5vbmxvYWQgPSAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGlmIChmaWxlLnR5cGUgPT09IFwiaW1hZ2Uvc3ZnK3htbFwiKSB7XG4gICAgICAgICAgICBfdGhpcy5lbWl0KFwidGh1bWJuYWlsXCIsIGZpbGUsIGZpbGVSZWFkZXIucmVzdWx0KTtcbiAgICAgICAgICAgIGlmIChjYWxsYmFjayAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBfdGhpcy5jcmVhdGVUaHVtYm5haWxGcm9tVXJsKGZpbGUsIGZpbGVSZWFkZXIucmVzdWx0LCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKTtcbiAgICAgIHJldHVybiBmaWxlUmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5jcmVhdGVUaHVtYm5haWxGcm9tVXJsID0gZnVuY3Rpb24oZmlsZSwgaW1hZ2VVcmwsIGNhbGxiYWNrLCBjcm9zc09yaWdpbikge1xuICAgICAgdmFyIGltZztcbiAgICAgIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7XG4gICAgICBpZiAoY3Jvc3NPcmlnaW4pIHtcbiAgICAgICAgaW1nLmNyb3NzT3JpZ2luID0gY3Jvc3NPcmlnaW47XG4gICAgICB9XG4gICAgICBpbWcub25sb2FkID0gKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgY2FudmFzLCBjdHgsIHJlc2l6ZUluZm8sIHRodW1ibmFpbCwgX3JlZiwgX3JlZjEsIF9yZWYyLCBfcmVmMztcbiAgICAgICAgICBmaWxlLndpZHRoID0gaW1nLndpZHRoO1xuICAgICAgICAgIGZpbGUuaGVpZ2h0ID0gaW1nLmhlaWdodDtcbiAgICAgICAgICByZXNpemVJbmZvID0gX3RoaXMub3B0aW9ucy5yZXNpemUuY2FsbChfdGhpcywgZmlsZSk7XG4gICAgICAgICAgaWYgKHJlc2l6ZUluZm8udHJnV2lkdGggPT0gbnVsbCkge1xuICAgICAgICAgICAgcmVzaXplSW5mby50cmdXaWR0aCA9IHJlc2l6ZUluZm8ub3B0V2lkdGg7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXNpemVJbmZvLnRyZ0hlaWdodCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXNpemVJbmZvLnRyZ0hlaWdodCA9IHJlc2l6ZUluZm8ub3B0SGVpZ2h0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICAgICAgICAgIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICAgICAgY2FudmFzLndpZHRoID0gcmVzaXplSW5mby50cmdXaWR0aDtcbiAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gcmVzaXplSW5mby50cmdIZWlnaHQ7XG4gICAgICAgICAgZHJhd0ltYWdlSU9TRml4KGN0eCwgaW1nLCAoX3JlZiA9IHJlc2l6ZUluZm8uc3JjWCkgIT0gbnVsbCA/IF9yZWYgOiAwLCAoX3JlZjEgPSByZXNpemVJbmZvLnNyY1kpICE9IG51bGwgPyBfcmVmMSA6IDAsIHJlc2l6ZUluZm8uc3JjV2lkdGgsIHJlc2l6ZUluZm8uc3JjSGVpZ2h0LCAoX3JlZjIgPSByZXNpemVJbmZvLnRyZ1gpICE9IG51bGwgPyBfcmVmMiA6IDAsIChfcmVmMyA9IHJlc2l6ZUluZm8udHJnWSkgIT0gbnVsbCA/IF9yZWYzIDogMCwgcmVzaXplSW5mby50cmdXaWR0aCwgcmVzaXplSW5mby50cmdIZWlnaHQpO1xuICAgICAgICAgIHRodW1ibmFpbCA9IGNhbnZhcy50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIik7XG4gICAgICAgICAgX3RoaXMuZW1pdChcInRodW1ibmFpbFwiLCBmaWxlLCB0aHVtYm5haWwpO1xuICAgICAgICAgIGlmIChjYWxsYmFjayAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKTtcbiAgICAgIGlmIChjYWxsYmFjayAhPSBudWxsKSB7XG4gICAgICAgIGltZy5vbmVycm9yID0gY2FsbGJhY2s7XG4gICAgICB9XG4gICAgICByZXR1cm4gaW1nLnNyYyA9IGltYWdlVXJsO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUucHJvY2Vzc1F1ZXVlID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgaSwgcGFyYWxsZWxVcGxvYWRzLCBwcm9jZXNzaW5nTGVuZ3RoLCBxdWV1ZWRGaWxlcztcbiAgICAgIHBhcmFsbGVsVXBsb2FkcyA9IHRoaXMub3B0aW9ucy5wYXJhbGxlbFVwbG9hZHM7XG4gICAgICBwcm9jZXNzaW5nTGVuZ3RoID0gdGhpcy5nZXRVcGxvYWRpbmdGaWxlcygpLmxlbmd0aDtcbiAgICAgIGkgPSBwcm9jZXNzaW5nTGVuZ3RoO1xuICAgICAgaWYgKHByb2Nlc3NpbmdMZW5ndGggPj0gcGFyYWxsZWxVcGxvYWRzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHF1ZXVlZEZpbGVzID0gdGhpcy5nZXRRdWV1ZWRGaWxlcygpO1xuICAgICAgaWYgKCEocXVldWVkRmlsZXMubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0aW9ucy51cGxvYWRNdWx0aXBsZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzRmlsZXMocXVldWVkRmlsZXMuc2xpY2UoMCwgcGFyYWxsZWxVcGxvYWRzIC0gcHJvY2Vzc2luZ0xlbmd0aCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2hpbGUgKGkgPCBwYXJhbGxlbFVwbG9hZHMpIHtcbiAgICAgICAgICBpZiAoIXF1ZXVlZEZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnByb2Nlc3NGaWxlKHF1ZXVlZEZpbGVzLnNoaWZ0KCkpO1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUucHJvY2Vzc0ZpbGUgPSBmdW5jdGlvbihmaWxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9jZXNzRmlsZXMoW2ZpbGVdKTtcbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLnByb2Nlc3NGaWxlcyA9IGZ1bmN0aW9uKGZpbGVzKSB7XG4gICAgICB2YXIgZmlsZSwgX2ksIF9sZW47XG4gICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IGZpbGVzLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgIGZpbGUgPSBmaWxlc1tfaV07XG4gICAgICAgIGZpbGUucHJvY2Vzc2luZyA9IHRydWU7XG4gICAgICAgIGZpbGUuc3RhdHVzID0gRHJvcHpvbmUuVVBMT0FESU5HO1xuICAgICAgICB0aGlzLmVtaXQoXCJwcm9jZXNzaW5nXCIsIGZpbGUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0aW9ucy51cGxvYWRNdWx0aXBsZSkge1xuICAgICAgICB0aGlzLmVtaXQoXCJwcm9jZXNzaW5nbXVsdGlwbGVcIiwgZmlsZXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMudXBsb2FkRmlsZXMoZmlsZXMpO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuX2dldEZpbGVzV2l0aFhociA9IGZ1bmN0aW9uKHhocikge1xuICAgICAgdmFyIGZpbGUsIGZpbGVzO1xuICAgICAgcmV0dXJuIGZpbGVzID0gKGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgX2ksIF9sZW4sIF9yZWYsIF9yZXN1bHRzO1xuICAgICAgICBfcmVmID0gdGhpcy5maWxlcztcbiAgICAgICAgX3Jlc3VsdHMgPSBbXTtcbiAgICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgICAgZmlsZSA9IF9yZWZbX2ldO1xuICAgICAgICAgIGlmIChmaWxlLnhociA9PT0geGhyKSB7XG4gICAgICAgICAgICBfcmVzdWx0cy5wdXNoKGZpbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX3Jlc3VsdHM7XG4gICAgICB9KS5jYWxsKHRoaXMpO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuY2FuY2VsVXBsb2FkID0gZnVuY3Rpb24oZmlsZSkge1xuICAgICAgdmFyIGdyb3VwZWRGaWxlLCBncm91cGVkRmlsZXMsIF9pLCBfaiwgX2xlbiwgX2xlbjEsIF9yZWY7XG4gICAgICBpZiAoZmlsZS5zdGF0dXMgPT09IERyb3B6b25lLlVQTE9BRElORykge1xuICAgICAgICBncm91cGVkRmlsZXMgPSB0aGlzLl9nZXRGaWxlc1dpdGhYaHIoZmlsZS54aHIpO1xuICAgICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IGdyb3VwZWRGaWxlcy5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICAgIGdyb3VwZWRGaWxlID0gZ3JvdXBlZEZpbGVzW19pXTtcbiAgICAgICAgICBncm91cGVkRmlsZS5zdGF0dXMgPSBEcm9wem9uZS5DQU5DRUxFRDtcbiAgICAgICAgfVxuICAgICAgICBmaWxlLnhoci5hYm9ydCgpO1xuICAgICAgICBmb3IgKF9qID0gMCwgX2xlbjEgPSBncm91cGVkRmlsZXMubGVuZ3RoOyBfaiA8IF9sZW4xOyBfaisrKSB7XG4gICAgICAgICAgZ3JvdXBlZEZpbGUgPSBncm91cGVkRmlsZXNbX2pdO1xuICAgICAgICAgIHRoaXMuZW1pdChcImNhbmNlbGVkXCIsIGdyb3VwZWRGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnVwbG9hZE11bHRpcGxlKSB7XG4gICAgICAgICAgdGhpcy5lbWl0KFwiY2FuY2VsZWRtdWx0aXBsZVwiLCBncm91cGVkRmlsZXMpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKChfcmVmID0gZmlsZS5zdGF0dXMpID09PSBEcm9wem9uZS5BRERFRCB8fCBfcmVmID09PSBEcm9wem9uZS5RVUVVRUQpIHtcbiAgICAgICAgZmlsZS5zdGF0dXMgPSBEcm9wem9uZS5DQU5DRUxFRDtcbiAgICAgICAgdGhpcy5lbWl0KFwiY2FuY2VsZWRcIiwgZmlsZSk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMudXBsb2FkTXVsdGlwbGUpIHtcbiAgICAgICAgICB0aGlzLmVtaXQoXCJjYW5jZWxlZG11bHRpcGxlXCIsIFtmaWxlXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXV0b1Byb2Nlc3NRdWV1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzUXVldWUoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmVzb2x2ZU9wdGlvbiA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGFyZ3MsIG9wdGlvbjtcbiAgICAgIG9wdGlvbiA9IGFyZ3VtZW50c1swXSwgYXJncyA9IDIgPD0gYXJndW1lbnRzLmxlbmd0aCA/IF9fc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpIDogW107XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gb3B0aW9uLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLnVwbG9hZEZpbGUgPSBmdW5jdGlvbihmaWxlKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGxvYWRGaWxlcyhbZmlsZV0pO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUudXBsb2FkRmlsZXMgPSBmdW5jdGlvbihmaWxlcykge1xuICAgICAgdmFyIGZpbGUsIGZvcm1EYXRhLCBoYW5kbGVFcnJvciwgaGVhZGVyTmFtZSwgaGVhZGVyVmFsdWUsIGhlYWRlcnMsIGksIGlucHV0LCBpbnB1dE5hbWUsIGlucHV0VHlwZSwga2V5LCBtZXRob2QsIG9wdGlvbiwgcHJvZ3Jlc3NPYmosIHJlc3BvbnNlLCB1cGRhdGVQcm9ncmVzcywgdXJsLCB2YWx1ZSwgeGhyLCBfaSwgX2osIF9rLCBfbCwgX2xlbiwgX2xlbjEsIF9sZW4yLCBfbGVuMywgX20sIF9yZWYsIF9yZWYxLCBfcmVmMiwgX3JlZjMsIF9yZWY0LCBfcmVmNTtcbiAgICAgIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBmaWxlcy5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICBmaWxlID0gZmlsZXNbX2ldO1xuICAgICAgICBmaWxlLnhociA9IHhocjtcbiAgICAgIH1cbiAgICAgIG1ldGhvZCA9IHJlc29sdmVPcHRpb24odGhpcy5vcHRpb25zLm1ldGhvZCwgZmlsZXMpO1xuICAgICAgdXJsID0gcmVzb2x2ZU9wdGlvbih0aGlzLm9wdGlvbnMudXJsLCBmaWxlcyk7XG4gICAgICB4aHIub3BlbihtZXRob2QsIHVybCwgdHJ1ZSk7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gISF0aGlzLm9wdGlvbnMud2l0aENyZWRlbnRpYWxzO1xuICAgICAgcmVzcG9uc2UgPSBudWxsO1xuICAgICAgaGFuZGxlRXJyb3IgPSAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciBfaiwgX2xlbjEsIF9yZXN1bHRzO1xuICAgICAgICAgIF9yZXN1bHRzID0gW107XG4gICAgICAgICAgZm9yIChfaiA9IDAsIF9sZW4xID0gZmlsZXMubGVuZ3RoOyBfaiA8IF9sZW4xOyBfaisrKSB7XG4gICAgICAgICAgICBmaWxlID0gZmlsZXNbX2pdO1xuICAgICAgICAgICAgX3Jlc3VsdHMucHVzaChfdGhpcy5fZXJyb3JQcm9jZXNzaW5nKGZpbGVzLCByZXNwb25zZSB8fCBfdGhpcy5vcHRpb25zLmRpY3RSZXNwb25zZUVycm9yLnJlcGxhY2UoXCJ7e3N0YXR1c0NvZGV9fVwiLCB4aHIuc3RhdHVzKSwgeGhyKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBfcmVzdWx0cztcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpO1xuICAgICAgdXBkYXRlUHJvZ3Jlc3MgPSAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICB2YXIgYWxsRmlsZXNGaW5pc2hlZCwgcHJvZ3Jlc3MsIF9qLCBfaywgX2wsIF9sZW4xLCBfbGVuMiwgX2xlbjMsIF9yZXN1bHRzO1xuICAgICAgICAgIGlmIChlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHByb2dyZXNzID0gMTAwICogZS5sb2FkZWQgLyBlLnRvdGFsO1xuICAgICAgICAgICAgZm9yIChfaiA9IDAsIF9sZW4xID0gZmlsZXMubGVuZ3RoOyBfaiA8IF9sZW4xOyBfaisrKSB7XG4gICAgICAgICAgICAgIGZpbGUgPSBmaWxlc1tfal07XG4gICAgICAgICAgICAgIGZpbGUudXBsb2FkID0ge1xuICAgICAgICAgICAgICAgIHByb2dyZXNzOiBwcm9ncmVzcyxcbiAgICAgICAgICAgICAgICB0b3RhbDogZS50b3RhbCxcbiAgICAgICAgICAgICAgICBieXRlc1NlbnQ6IGUubG9hZGVkXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFsbEZpbGVzRmluaXNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgcHJvZ3Jlc3MgPSAxMDA7XG4gICAgICAgICAgICBmb3IgKF9rID0gMCwgX2xlbjIgPSBmaWxlcy5sZW5ndGg7IF9rIDwgX2xlbjI7IF9rKyspIHtcbiAgICAgICAgICAgICAgZmlsZSA9IGZpbGVzW19rXTtcbiAgICAgICAgICAgICAgaWYgKCEoZmlsZS51cGxvYWQucHJvZ3Jlc3MgPT09IDEwMCAmJiBmaWxlLnVwbG9hZC5ieXRlc1NlbnQgPT09IGZpbGUudXBsb2FkLnRvdGFsKSkge1xuICAgICAgICAgICAgICAgIGFsbEZpbGVzRmluaXNoZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBmaWxlLnVwbG9hZC5wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgICAgICAgICAgICBmaWxlLnVwbG9hZC5ieXRlc1NlbnQgPSBmaWxlLnVwbG9hZC50b3RhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhbGxGaWxlc0ZpbmlzaGVkKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgX3Jlc3VsdHMgPSBbXTtcbiAgICAgICAgICBmb3IgKF9sID0gMCwgX2xlbjMgPSBmaWxlcy5sZW5ndGg7IF9sIDwgX2xlbjM7IF9sKyspIHtcbiAgICAgICAgICAgIGZpbGUgPSBmaWxlc1tfbF07XG4gICAgICAgICAgICBfcmVzdWx0cy5wdXNoKF90aGlzLmVtaXQoXCJ1cGxvYWRwcm9ncmVzc1wiLCBmaWxlLCBwcm9ncmVzcywgZmlsZS51cGxvYWQuYnl0ZXNTZW50KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBfcmVzdWx0cztcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpO1xuICAgICAgeGhyLm9ubG9hZCA9IChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkge1xuICAgICAgICAgIHZhciBfcmVmO1xuICAgICAgICAgIGlmIChmaWxlc1swXS5zdGF0dXMgPT09IERyb3B6b25lLkNBTkNFTEVEKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSAhPT0gNCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXNwb25zZSA9IHhoci5yZXNwb25zZVRleHQ7XG4gICAgICAgICAgaWYgKHhoci5nZXRSZXNwb25zZUhlYWRlcihcImNvbnRlbnQtdHlwZVwiKSAmJiB+eGhyLmdldFJlc3BvbnNlSGVhZGVyKFwiY29udGVudC10eXBlXCIpLmluZGV4T2YoXCJhcHBsaWNhdGlvbi9qc29uXCIpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZXNwb25zZSA9IEpTT04ucGFyc2UocmVzcG9uc2UpO1xuICAgICAgICAgICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICAgICAgICAgIGUgPSBfZXJyb3I7XG4gICAgICAgICAgICAgIHJlc3BvbnNlID0gXCJJbnZhbGlkIEpTT04gcmVzcG9uc2UgZnJvbSBzZXJ2ZXIuXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHVwZGF0ZVByb2dyZXNzKCk7XG4gICAgICAgICAgaWYgKCEoKDIwMCA8PSAoX3JlZiA9IHhoci5zdGF0dXMpICYmIF9yZWYgPCAzMDApKSkge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUVycm9yKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5fZmluaXNoZWQoZmlsZXMsIHJlc3BvbnNlLCBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKTtcbiAgICAgIHhoci5vbmVycm9yID0gKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBpZiAoZmlsZXNbMF0uc3RhdHVzID09PSBEcm9wem9uZS5DQU5DRUxFRCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gaGFuZGxlRXJyb3IoKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpO1xuICAgICAgcHJvZ3Jlc3NPYmogPSAoX3JlZiA9IHhoci51cGxvYWQpICE9IG51bGwgPyBfcmVmIDogeGhyO1xuICAgICAgcHJvZ3Jlc3NPYmoub25wcm9ncmVzcyA9IHVwZGF0ZVByb2dyZXNzO1xuICAgICAgaGVhZGVycyA9IHtcbiAgICAgICAgXCJBY2NlcHRcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgIFwiQ2FjaGUtQ29udHJvbFwiOiBcIm5vLWNhY2hlXCIsXG4gICAgICAgIFwiWC1SZXF1ZXN0ZWQtV2l0aFwiOiBcIlhNTEh0dHBSZXF1ZXN0XCJcbiAgICAgIH07XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmhlYWRlcnMpIHtcbiAgICAgICAgZXh0ZW5kKGhlYWRlcnMsIHRoaXMub3B0aW9ucy5oZWFkZXJzKTtcbiAgICAgIH1cbiAgICAgIGZvciAoaGVhZGVyTmFtZSBpbiBoZWFkZXJzKSB7XG4gICAgICAgIGhlYWRlclZhbHVlID0gaGVhZGVyc1toZWFkZXJOYW1lXTtcbiAgICAgICAgaWYgKGhlYWRlclZhbHVlKSB7XG4gICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoaGVhZGVyTmFtZSwgaGVhZGVyVmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5wYXJhbXMpIHtcbiAgICAgICAgX3JlZjEgPSB0aGlzLm9wdGlvbnMucGFyYW1zO1xuICAgICAgICBmb3IgKGtleSBpbiBfcmVmMSkge1xuICAgICAgICAgIHZhbHVlID0gX3JlZjFba2V5XTtcbiAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoX2ogPSAwLCBfbGVuMSA9IGZpbGVzLmxlbmd0aDsgX2ogPCBfbGVuMTsgX2orKykge1xuICAgICAgICBmaWxlID0gZmlsZXNbX2pdO1xuICAgICAgICB0aGlzLmVtaXQoXCJzZW5kaW5nXCIsIGZpbGUsIHhociwgZm9ybURhdGEpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0aW9ucy51cGxvYWRNdWx0aXBsZSkge1xuICAgICAgICB0aGlzLmVtaXQoXCJzZW5kaW5nbXVsdGlwbGVcIiwgZmlsZXMsIHhociwgZm9ybURhdGEpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZWxlbWVudC50YWdOYW1lID09PSBcIkZPUk1cIikge1xuICAgICAgICBfcmVmMiA9IHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIGJ1dHRvblwiKTtcbiAgICAgICAgZm9yIChfayA9IDAsIF9sZW4yID0gX3JlZjIubGVuZ3RoOyBfayA8IF9sZW4yOyBfaysrKSB7XG4gICAgICAgICAgaW5wdXQgPSBfcmVmMltfa107XG4gICAgICAgICAgaW5wdXROYW1lID0gaW5wdXQuZ2V0QXR0cmlidXRlKFwibmFtZVwiKTtcbiAgICAgICAgICBpbnB1dFR5cGUgPSBpbnB1dC5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpO1xuICAgICAgICAgIGlmIChpbnB1dC50YWdOYW1lID09PSBcIlNFTEVDVFwiICYmIGlucHV0Lmhhc0F0dHJpYnV0ZShcIm11bHRpcGxlXCIpKSB7XG4gICAgICAgICAgICBfcmVmMyA9IGlucHV0Lm9wdGlvbnM7XG4gICAgICAgICAgICBmb3IgKF9sID0gMCwgX2xlbjMgPSBfcmVmMy5sZW5ndGg7IF9sIDwgX2xlbjM7IF9sKyspIHtcbiAgICAgICAgICAgICAgb3B0aW9uID0gX3JlZjNbX2xdO1xuICAgICAgICAgICAgICBpZiAob3B0aW9uLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGlucHV0TmFtZSwgb3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoIWlucHV0VHlwZSB8fCAoKF9yZWY0ID0gaW5wdXRUeXBlLnRvTG93ZXJDYXNlKCkpICE9PSBcImNoZWNrYm94XCIgJiYgX3JlZjQgIT09IFwicmFkaW9cIikgfHwgaW5wdXQuY2hlY2tlZCkge1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGlucHV0TmFtZSwgaW5wdXQudmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yIChpID0gX20gPSAwLCBfcmVmNSA9IGZpbGVzLmxlbmd0aCAtIDE7IDAgPD0gX3JlZjUgPyBfbSA8PSBfcmVmNSA6IF9tID49IF9yZWY1OyBpID0gMCA8PSBfcmVmNSA/ICsrX20gOiAtLV9tKSB7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCh0aGlzLl9nZXRQYXJhbU5hbWUoaSksIGZpbGVzW2ldLCBmaWxlc1tpXS5uYW1lKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnN1Ym1pdFJlcXVlc3QoeGhyLCBmb3JtRGF0YSwgZmlsZXMpO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuc3VibWl0UmVxdWVzdCA9IGZ1bmN0aW9uKHhociwgZm9ybURhdGEsIGZpbGVzKSB7XG4gICAgICByZXR1cm4geGhyLnNlbmQoZm9ybURhdGEpO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuX2ZpbmlzaGVkID0gZnVuY3Rpb24oZmlsZXMsIHJlc3BvbnNlVGV4dCwgZSkge1xuICAgICAgdmFyIGZpbGUsIF9pLCBfbGVuO1xuICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBmaWxlcy5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICBmaWxlID0gZmlsZXNbX2ldO1xuICAgICAgICBmaWxlLnN0YXR1cyA9IERyb3B6b25lLlNVQ0NFU1M7XG4gICAgICAgIHRoaXMuZW1pdChcInN1Y2Nlc3NcIiwgZmlsZSwgcmVzcG9uc2VUZXh0LCBlKTtcbiAgICAgICAgdGhpcy5lbWl0KFwiY29tcGxldGVcIiwgZmlsZSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zLnVwbG9hZE11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuZW1pdChcInN1Y2Nlc3NtdWx0aXBsZVwiLCBmaWxlcywgcmVzcG9uc2VUZXh0LCBlKTtcbiAgICAgICAgdGhpcy5lbWl0KFwiY29tcGxldGVtdWx0aXBsZVwiLCBmaWxlcyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmF1dG9Qcm9jZXNzUXVldWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1F1ZXVlKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5fZXJyb3JQcm9jZXNzaW5nID0gZnVuY3Rpb24oZmlsZXMsIG1lc3NhZ2UsIHhocikge1xuICAgICAgdmFyIGZpbGUsIF9pLCBfbGVuO1xuICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBmaWxlcy5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICBmaWxlID0gZmlsZXNbX2ldO1xuICAgICAgICBmaWxlLnN0YXR1cyA9IERyb3B6b25lLkVSUk9SO1xuICAgICAgICB0aGlzLmVtaXQoXCJlcnJvclwiLCBmaWxlLCBtZXNzYWdlLCB4aHIpO1xuICAgICAgICB0aGlzLmVtaXQoXCJjb21wbGV0ZVwiLCBmaWxlKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudXBsb2FkTXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5lbWl0KFwiZXJyb3JtdWx0aXBsZVwiLCBmaWxlcywgbWVzc2FnZSwgeGhyKTtcbiAgICAgICAgdGhpcy5lbWl0KFwiY29tcGxldGVtdWx0aXBsZVwiLCBmaWxlcyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmF1dG9Qcm9jZXNzUXVldWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1F1ZXVlKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBEcm9wem9uZTtcblxuICB9KShFbWl0dGVyKTtcblxuICBEcm9wem9uZS52ZXJzaW9uID0gXCI0LjIuMFwiO1xuXG4gIERyb3B6b25lLm9wdGlvbnMgPSB7fTtcblxuICBEcm9wem9uZS5vcHRpb25zRm9yRWxlbWVudCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICBpZiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJpZFwiKSkge1xuICAgICAgcmV0dXJuIERyb3B6b25lLm9wdGlvbnNbY2FtZWxpemUoZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJpZFwiKSldO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgfTtcblxuICBEcm9wem9uZS5pbnN0YW5jZXMgPSBbXTtcblxuICBEcm9wem9uZS5mb3JFbGVtZW50ID0gZnVuY3Rpb24oZWxlbWVudCkge1xuICAgIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZWxlbWVudCk7XG4gICAgfVxuICAgIGlmICgoZWxlbWVudCAhPSBudWxsID8gZWxlbWVudC5kcm9wem9uZSA6IHZvaWQgMCkgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gRHJvcHpvbmUgZm91bmQgZm9yIGdpdmVuIGVsZW1lbnQuIFRoaXMgaXMgcHJvYmFibHkgYmVjYXVzZSB5b3UncmUgdHJ5aW5nIHRvIGFjY2VzcyBpdCBiZWZvcmUgRHJvcHpvbmUgaGFkIHRoZSB0aW1lIHRvIGluaXRpYWxpemUuIFVzZSB0aGUgYGluaXRgIG9wdGlvbiB0byBzZXR1cCBhbnkgYWRkaXRpb25hbCBvYnNlcnZlcnMgb24geW91ciBEcm9wem9uZS5cIik7XG4gICAgfVxuICAgIHJldHVybiBlbGVtZW50LmRyb3B6b25lO1xuICB9O1xuXG4gIERyb3B6b25lLmF1dG9EaXNjb3ZlciA9IHRydWU7XG5cbiAgRHJvcHpvbmUuZGlzY292ZXIgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgY2hlY2tFbGVtZW50cywgZHJvcHpvbmUsIGRyb3B6b25lcywgX2ksIF9sZW4sIF9yZXN1bHRzO1xuICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKSB7XG4gICAgICBkcm9wem9uZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmRyb3B6b25lXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkcm9wem9uZXMgPSBbXTtcbiAgICAgIGNoZWNrRWxlbWVudHMgPSBmdW5jdGlvbihlbGVtZW50cykge1xuICAgICAgICB2YXIgZWwsIF9pLCBfbGVuLCBfcmVzdWx0cztcbiAgICAgICAgX3Jlc3VsdHMgPSBbXTtcbiAgICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBlbGVtZW50cy5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICAgIGVsID0gZWxlbWVudHNbX2ldO1xuICAgICAgICAgIGlmICgvKF58IClkcm9wem9uZSgkfCApLy50ZXN0KGVsLmNsYXNzTmFtZSkpIHtcbiAgICAgICAgICAgIF9yZXN1bHRzLnB1c2goZHJvcHpvbmVzLnB1c2goZWwpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgX3Jlc3VsdHMucHVzaCh2b2lkIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX3Jlc3VsdHM7XG4gICAgICB9O1xuICAgICAgY2hlY2tFbGVtZW50cyhkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImRpdlwiKSk7XG4gICAgICBjaGVja0VsZW1lbnRzKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiZm9ybVwiKSk7XG4gICAgfVxuICAgIF9yZXN1bHRzID0gW107XG4gICAgZm9yIChfaSA9IDAsIF9sZW4gPSBkcm9wem9uZXMubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgIGRyb3B6b25lID0gZHJvcHpvbmVzW19pXTtcbiAgICAgIGlmIChEcm9wem9uZS5vcHRpb25zRm9yRWxlbWVudChkcm9wem9uZSkgIT09IGZhbHNlKSB7XG4gICAgICAgIF9yZXN1bHRzLnB1c2gobmV3IERyb3B6b25lKGRyb3B6b25lKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfcmVzdWx0cy5wdXNoKHZvaWQgMCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBfcmVzdWx0cztcbiAgfTtcblxuICBEcm9wem9uZS5ibGFja2xpc3RlZEJyb3dzZXJzID0gWy9vcGVyYS4qTWFjaW50b3NoLip2ZXJzaW9uXFwvMTIvaV07XG5cbiAgRHJvcHpvbmUuaXNCcm93c2VyU3VwcG9ydGVkID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGNhcGFibGVCcm93c2VyLCByZWdleCwgX2ksIF9sZW4sIF9yZWY7XG4gICAgY2FwYWJsZUJyb3dzZXIgPSB0cnVlO1xuICAgIGlmICh3aW5kb3cuRmlsZSAmJiB3aW5kb3cuRmlsZVJlYWRlciAmJiB3aW5kb3cuRmlsZUxpc3QgJiYgd2luZG93LkJsb2IgJiYgd2luZG93LkZvcm1EYXRhICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IpIHtcbiAgICAgIGlmICghKFwiY2xhc3NMaXN0XCIgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIikpKSB7XG4gICAgICAgIGNhcGFibGVCcm93c2VyID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfcmVmID0gRHJvcHpvbmUuYmxhY2tsaXN0ZWRCcm93c2VycztcbiAgICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgICAgcmVnZXggPSBfcmVmW19pXTtcbiAgICAgICAgICBpZiAocmVnZXgudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSkge1xuICAgICAgICAgICAgY2FwYWJsZUJyb3dzZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjYXBhYmxlQnJvd3NlciA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gY2FwYWJsZUJyb3dzZXI7XG4gIH07XG5cbiAgd2l0aG91dCA9IGZ1bmN0aW9uKGxpc3QsIHJlamVjdGVkSXRlbSkge1xuICAgIHZhciBpdGVtLCBfaSwgX2xlbiwgX3Jlc3VsdHM7XG4gICAgX3Jlc3VsdHMgPSBbXTtcbiAgICBmb3IgKF9pID0gMCwgX2xlbiA9IGxpc3QubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgIGl0ZW0gPSBsaXN0W19pXTtcbiAgICAgIGlmIChpdGVtICE9PSByZWplY3RlZEl0ZW0pIHtcbiAgICAgICAgX3Jlc3VsdHMucHVzaChpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIF9yZXN1bHRzO1xuICB9O1xuXG4gIGNhbWVsaXplID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXFwtX10oXFx3KS9nLCBmdW5jdGlvbihtYXRjaCkge1xuICAgICAgcmV0dXJuIG1hdGNoLmNoYXJBdCgxKS50b1VwcGVyQ2FzZSgpO1xuICAgIH0pO1xuICB9O1xuXG4gIERyb3B6b25lLmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICB2YXIgZGl2O1xuICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgZGl2LmlubmVySFRNTCA9IHN0cmluZztcbiAgICByZXR1cm4gZGl2LmNoaWxkTm9kZXNbMF07XG4gIH07XG5cbiAgRHJvcHpvbmUuZWxlbWVudEluc2lkZSA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRhaW5lcikge1xuICAgIGlmIChlbGVtZW50ID09PSBjb250YWluZXIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB3aGlsZSAoZWxlbWVudCA9IGVsZW1lbnQucGFyZW50Tm9kZSkge1xuICAgICAgaWYgKGVsZW1lbnQgPT09IGNvbnRhaW5lcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIERyb3B6b25lLmdldEVsZW1lbnQgPSBmdW5jdGlvbihlbCwgbmFtZSkge1xuICAgIHZhciBlbGVtZW50O1xuICAgIGlmICh0eXBlb2YgZWwgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGVsKTtcbiAgICB9IGVsc2UgaWYgKGVsLm5vZGVUeXBlICE9IG51bGwpIHtcbiAgICAgIGVsZW1lbnQgPSBlbDtcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBgXCIgKyBuYW1lICsgXCJgIG9wdGlvbiBwcm92aWRlZC4gUGxlYXNlIHByb3ZpZGUgYSBDU1Mgc2VsZWN0b3Igb3IgYSBwbGFpbiBIVE1MIGVsZW1lbnQuXCIpO1xuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfTtcblxuICBEcm9wem9uZS5nZXRFbGVtZW50cyA9IGZ1bmN0aW9uKGVscywgbmFtZSkge1xuICAgIHZhciBlLCBlbCwgZWxlbWVudHMsIF9pLCBfaiwgX2xlbiwgX2xlbjEsIF9yZWY7XG4gICAgaWYgKGVscyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBlbGVtZW50cyA9IFtdO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBlbHMubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgICBlbCA9IGVsc1tfaV07XG4gICAgICAgICAgZWxlbWVudHMucHVzaCh0aGlzLmdldEVsZW1lbnQoZWwsIG5hbWUpKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICAgIGUgPSBfZXJyb3I7XG4gICAgICAgIGVsZW1lbnRzID0gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbHMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGVsZW1lbnRzID0gW107XG4gICAgICBfcmVmID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChlbHMpO1xuICAgICAgZm9yIChfaiA9IDAsIF9sZW4xID0gX3JlZi5sZW5ndGg7IF9qIDwgX2xlbjE7IF9qKyspIHtcbiAgICAgICAgZWwgPSBfcmVmW19qXTtcbiAgICAgICAgZWxlbWVudHMucHVzaChlbCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbHMubm9kZVR5cGUgIT0gbnVsbCkge1xuICAgICAgZWxlbWVudHMgPSBbZWxzXTtcbiAgICB9XG4gICAgaWYgKCEoKGVsZW1lbnRzICE9IG51bGwpICYmIGVsZW1lbnRzLmxlbmd0aCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYFwiICsgbmFtZSArIFwiYCBvcHRpb24gcHJvdmlkZWQuIFBsZWFzZSBwcm92aWRlIGEgQ1NTIHNlbGVjdG9yLCBhIHBsYWluIEhUTUwgZWxlbWVudCBvciBhIGxpc3Qgb2YgdGhvc2UuXCIpO1xuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudHM7XG4gIH07XG5cbiAgRHJvcHpvbmUuY29uZmlybSA9IGZ1bmN0aW9uKHF1ZXN0aW9uLCBhY2NlcHRlZCwgcmVqZWN0ZWQpIHtcbiAgICBpZiAod2luZG93LmNvbmZpcm0ocXVlc3Rpb24pKSB7XG4gICAgICByZXR1cm4gYWNjZXB0ZWQoKTtcbiAgICB9IGVsc2UgaWYgKHJlamVjdGVkICE9IG51bGwpIHtcbiAgICAgIHJldHVybiByZWplY3RlZCgpO1xuICAgIH1cbiAgfTtcblxuICBEcm9wem9uZS5pc1ZhbGlkRmlsZSA9IGZ1bmN0aW9uKGZpbGUsIGFjY2VwdGVkRmlsZXMpIHtcbiAgICB2YXIgYmFzZU1pbWVUeXBlLCBtaW1lVHlwZSwgdmFsaWRUeXBlLCBfaSwgX2xlbjtcbiAgICBpZiAoIWFjY2VwdGVkRmlsZXMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBhY2NlcHRlZEZpbGVzID0gYWNjZXB0ZWRGaWxlcy5zcGxpdChcIixcIik7XG4gICAgbWltZVR5cGUgPSBmaWxlLnR5cGU7XG4gICAgYmFzZU1pbWVUeXBlID0gbWltZVR5cGUucmVwbGFjZSgvXFwvLiokLywgXCJcIik7XG4gICAgZm9yIChfaSA9IDAsIF9sZW4gPSBhY2NlcHRlZEZpbGVzLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICB2YWxpZFR5cGUgPSBhY2NlcHRlZEZpbGVzW19pXTtcbiAgICAgIHZhbGlkVHlwZSA9IHZhbGlkVHlwZS50cmltKCk7XG4gICAgICBpZiAodmFsaWRUeXBlLmNoYXJBdCgwKSA9PT0gXCIuXCIpIHtcbiAgICAgICAgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodmFsaWRUeXBlLnRvTG93ZXJDYXNlKCksIGZpbGUubmFtZS5sZW5ndGggLSB2YWxpZFR5cGUubGVuZ3RoKSAhPT0gLTEpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICgvXFwvXFwqJC8udGVzdCh2YWxpZFR5cGUpKSB7XG4gICAgICAgIGlmIChiYXNlTWltZVR5cGUgPT09IHZhbGlkVHlwZS5yZXBsYWNlKC9cXC8uKiQvLCBcIlwiKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobWltZVR5cGUgPT09IHZhbGlkVHlwZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBpZiAodHlwZW9mIGpRdWVyeSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBqUXVlcnkgIT09IG51bGwpIHtcbiAgICBqUXVlcnkuZm4uZHJvcHpvbmUgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbmV3IERyb3B6b25lKHRoaXMsIG9wdGlvbnMpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgbW9kdWxlICE9PSBcInVuZGVmaW5lZFwiICYmIG1vZHVsZSAhPT0gbnVsbCkge1xuICAgIG1vZHVsZS5leHBvcnRzID0gRHJvcHpvbmU7XG4gIH0gZWxzZSB7XG4gICAgd2luZG93LkRyb3B6b25lID0gRHJvcHpvbmU7XG4gIH1cblxuICBEcm9wem9uZS5BRERFRCA9IFwiYWRkZWRcIjtcblxuICBEcm9wem9uZS5RVUVVRUQgPSBcInF1ZXVlZFwiO1xuXG4gIERyb3B6b25lLkFDQ0VQVEVEID0gRHJvcHpvbmUuUVVFVUVEO1xuXG4gIERyb3B6b25lLlVQTE9BRElORyA9IFwidXBsb2FkaW5nXCI7XG5cbiAgRHJvcHpvbmUuUFJPQ0VTU0lORyA9IERyb3B6b25lLlVQTE9BRElORztcblxuICBEcm9wem9uZS5DQU5DRUxFRCA9IFwiY2FuY2VsZWRcIjtcblxuICBEcm9wem9uZS5FUlJPUiA9IFwiZXJyb3JcIjtcblxuICBEcm9wem9uZS5TVUNDRVNTID0gXCJzdWNjZXNzXCI7XG5cblxuICAvKlxuICBcbiAgQnVnZml4IGZvciBpT1MgNiBhbmQgN1xuICBTb3VyY2U6IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTE5MjkwOTkvaHRtbDUtY2FudmFzLWRyYXdpbWFnZS1yYXRpby1idWctaW9zXG4gIGJhc2VkIG9uIHRoZSB3b3JrIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9taXRhL2lvcy1pbWFnZWZpbGUtbWVnYXBpeGVsXG4gICAqL1xuXG4gIGRldGVjdFZlcnRpY2FsU3F1YXNoID0gZnVuY3Rpb24oaW1nKSB7XG4gICAgdmFyIGFscGhhLCBjYW52YXMsIGN0eCwgZGF0YSwgZXksIGloLCBpdywgcHksIHJhdGlvLCBzeTtcbiAgICBpdyA9IGltZy5uYXR1cmFsV2lkdGg7XG4gICAgaWggPSBpbWcubmF0dXJhbEhlaWdodDtcbiAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICAgIGNhbnZhcy53aWR0aCA9IDE7XG4gICAgY2FudmFzLmhlaWdodCA9IGloO1xuICAgIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDApO1xuICAgIGRhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIGloKS5kYXRhO1xuICAgIHN5ID0gMDtcbiAgICBleSA9IGloO1xuICAgIHB5ID0gaWg7XG4gICAgd2hpbGUgKHB5ID4gc3kpIHtcbiAgICAgIGFscGhhID0gZGF0YVsocHkgLSAxKSAqIDQgKyAzXTtcbiAgICAgIGlmIChhbHBoYSA9PT0gMCkge1xuICAgICAgICBleSA9IHB5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3kgPSBweTtcbiAgICAgIH1cbiAgICAgIHB5ID0gKGV5ICsgc3kpID4+IDE7XG4gICAgfVxuICAgIHJhdGlvID0gcHkgLyBpaDtcbiAgICBpZiAocmF0aW8gPT09IDApIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmF0aW87XG4gICAgfVxuICB9O1xuXG4gIGRyYXdJbWFnZUlPU0ZpeCA9IGZ1bmN0aW9uKGN0eCwgaW1nLCBzeCwgc3ksIHN3LCBzaCwgZHgsIGR5LCBkdywgZGgpIHtcbiAgICB2YXIgdmVydFNxdWFzaFJhdGlvO1xuICAgIHZlcnRTcXVhc2hSYXRpbyA9IGRldGVjdFZlcnRpY2FsU3F1YXNoKGltZyk7XG4gICAgcmV0dXJuIGN0eC5kcmF3SW1hZ2UoaW1nLCBzeCwgc3ksIHN3LCBzaCwgZHgsIGR5LCBkdywgZGggLyB2ZXJ0U3F1YXNoUmF0aW8pO1xuICB9O1xuXG5cbiAgLypcbiAgICogY29udGVudGxvYWRlZC5qc1xuICAgKlxuICAgKiBBdXRob3I6IERpZWdvIFBlcmluaSAoZGllZ28ucGVyaW5pIGF0IGdtYWlsLmNvbSlcbiAgICogU3VtbWFyeTogY3Jvc3MtYnJvd3NlciB3cmFwcGVyIGZvciBET01Db250ZW50TG9hZGVkXG4gICAqIFVwZGF0ZWQ6IDIwMTAxMDIwXG4gICAqIExpY2Vuc2U6IE1JVFxuICAgKiBWZXJzaW9uOiAxLjJcbiAgICpcbiAgICogVVJMOlxuICAgKiBodHRwOi8vamF2YXNjcmlwdC5ud2JveC5jb20vQ29udGVudExvYWRlZC9cbiAgICogaHR0cDovL2phdmFzY3JpcHQubndib3guY29tL0NvbnRlbnRMb2FkZWQvTUlULUxJQ0VOU0VcbiAgICovXG5cbiAgY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKHdpbiwgZm4pIHtcbiAgICB2YXIgYWRkLCBkb2MsIGRvbmUsIGluaXQsIHBvbGwsIHByZSwgcmVtLCByb290LCB0b3A7XG4gICAgZG9uZSA9IGZhbHNlO1xuICAgIHRvcCA9IHRydWU7XG4gICAgZG9jID0gd2luLmRvY3VtZW50O1xuICAgIHJvb3QgPSBkb2MuZG9jdW1lbnRFbGVtZW50O1xuICAgIGFkZCA9IChkb2MuYWRkRXZlbnRMaXN0ZW5lciA/IFwiYWRkRXZlbnRMaXN0ZW5lclwiIDogXCJhdHRhY2hFdmVudFwiKTtcbiAgICByZW0gPSAoZG9jLmFkZEV2ZW50TGlzdGVuZXIgPyBcInJlbW92ZUV2ZW50TGlzdGVuZXJcIiA6IFwiZGV0YWNoRXZlbnRcIik7XG4gICAgcHJlID0gKGRvYy5hZGRFdmVudExpc3RlbmVyID8gXCJcIiA6IFwib25cIik7XG4gICAgaW5pdCA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIGlmIChlLnR5cGUgPT09IFwicmVhZHlzdGF0ZWNoYW5nZVwiICYmIGRvYy5yZWFkeVN0YXRlICE9PSBcImNvbXBsZXRlXCIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgKGUudHlwZSA9PT0gXCJsb2FkXCIgPyB3aW4gOiBkb2MpW3JlbV0ocHJlICsgZS50eXBlLCBpbml0LCBmYWxzZSk7XG4gICAgICBpZiAoIWRvbmUgJiYgKGRvbmUgPSB0cnVlKSkge1xuICAgICAgICByZXR1cm4gZm4uY2FsbCh3aW4sIGUudHlwZSB8fCBlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHBvbGwgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcm9vdC5kb1Njcm9sbChcImxlZnRcIik7XG4gICAgICB9IGNhdGNoIChfZXJyb3IpIHtcbiAgICAgICAgZSA9IF9lcnJvcjtcbiAgICAgICAgc2V0VGltZW91dChwb2xsLCA1MCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbml0KFwicG9sbFwiKTtcbiAgICB9O1xuICAgIGlmIChkb2MucmVhZHlTdGF0ZSAhPT0gXCJjb21wbGV0ZVwiKSB7XG4gICAgICBpZiAoZG9jLmNyZWF0ZUV2ZW50T2JqZWN0ICYmIHJvb3QuZG9TY3JvbGwpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0b3AgPSAhd2luLmZyYW1lRWxlbWVudDtcbiAgICAgICAgfSBjYXRjaCAoX2Vycm9yKSB7fVxuICAgICAgICBpZiAodG9wKSB7XG4gICAgICAgICAgcG9sbCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkb2NbYWRkXShwcmUgKyBcIkRPTUNvbnRlbnRMb2FkZWRcIiwgaW5pdCwgZmFsc2UpO1xuICAgICAgZG9jW2FkZF0ocHJlICsgXCJyZWFkeXN0YXRlY2hhbmdlXCIsIGluaXQsIGZhbHNlKTtcbiAgICAgIHJldHVybiB3aW5bYWRkXShwcmUgKyBcImxvYWRcIiwgaW5pdCwgZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICBEcm9wem9uZS5fYXV0b0Rpc2NvdmVyRnVuY3Rpb24gPSBmdW5jdGlvbigpIHtcbiAgICBpZiAoRHJvcHpvbmUuYXV0b0Rpc2NvdmVyKSB7XG4gICAgICByZXR1cm4gRHJvcHpvbmUuZGlzY292ZXIoKTtcbiAgICB9XG4gIH07XG5cbiAgY29udGVudExvYWRlZCh3aW5kb3csIERyb3B6b25lLl9hdXRvRGlzY292ZXJGdW5jdGlvbik7XG5cbn0pLmNhbGwodGhpcyk7XG4iLCJkZWZpbmUoZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgT3JkZXJfTGlzdF9EZXRhaWwgPSAoeyB1dWlkLCBiYXNrZXRGaWVsZDEsIGN1c3RvbWVySW5mbywgYmFza2V0RmllbGQyLCBwb3MsIHByaWNlLCBwcm9kdWN0LCBzdGF0dXMsIGFsbE5ldCwgcmVPcmRlciwgcmVPcmRlck9yZGVyLCByZU9yZGVyUG9zIH0sIG9yZGVyVXVpZCkgPT4gYFxuICAgICAgICA8ZGl2IHN0eWxlPVwiJHtwc2Mub3JkZXIuZ2V0X3Bvc19iZ19jb2xvcihzdGF0dXMpfVwiIGNsYXNzPVwicm93ICR7cHNjLm9yZGVyLmdldF9wb3NfYmdfY29sb3JfY2xhc3Moc3RhdHVzKX1cIiBpZD1cInJvdy0ke3V1aWR9XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEgcC0xXCI+JHtwb3N9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgcC0xXCI+XG4gICAgICAgICAgICAke1xuICAgICAgICAgICAgICAgIChwcm9kdWN0ID0+IHByb2R1Y3Qub3JpZ2luYWxQcm9kdWN0ID8gYDxhIGhyZWY9XCIvYXBwcy9iYWNrZW5kL3Byb2R1Y3QvZWRpdC9pbmRleC8ke3Byb2R1Y3Qub3JpZ2luYWxQcm9kdWN0LnV1aWR9XCI+JHtwcm9kdWN0Lm9yaWdpbmFsUHJvZHVjdC50aXRsZX08L2E+YCA6IGA8YSBocmVmPVwiL2FwcHMvYmFja2VuZC9wcm9kdWN0L2VkaXQvaW5kZXgvJHtwcm9kdWN0LnV1aWR9XCI+JHtwcm9kdWN0LnRpdGxlfTwvYT5gICkocHJvZHVjdCkgLy9jYWxsIHRoZSBhbm9ueW1vdXMgaW5saW5lIHdpdGggdGhlIGRhdGEgd2UgY2FyZSBhYm91dFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGJyLz5BcnROciBpbnRlcm46ICR7cHJvZHVjdC5uckludGVybn08YnIvPlxuICAgICAgICAgICAgJHtwc2Mub3JkZXIuZ2V0X3NwZWNpYWxfcHJvZHVjdF9vcHRpb25zKHByb2R1Y3Quc3BlY2lhbFByb2R1Y3RUeXBlT2JqZWN0KX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMSBwLTFcIj5BdWZsYWdlOiAke3ByaWNlLmNvdW50fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xIHAtMVwiPkt1bmRlbiBJbmZvOiAke2N1c3RvbWVySW5mb30keyhyZU9yZGVyPyBgPGJyLz48c3Ryb25nPklzdCBlaW5lIE5hY2hiZXN0ZWxsdW5nPC9zdHJvbmc+YDpgYCl9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEgcC0xXCI+JHtiYXNrZXRGaWVsZDF9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEgcC0xXCI+JHtiYXNrZXRGaWVsZDJ9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEgcC0xIHRleHQtZW5kXCI+JHtuZXcgSW50bC5OdW1iZXJGb3JtYXQoJ2RlLURFJywgeyBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdFVVInIH0pLmZvcm1hdChwcmljZS5hbGxOZXQvMTAwKX0gPHN0cm9uZz4oJHtuZXcgSW50bC5OdW1iZXJGb3JtYXQoJ2RlLURFJywgeyBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdFVVInIH0pLmZvcm1hdChwcmljZS5hbGxHcm9zcy8xMDApfSk8L3N0cm9uZz48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMiBwLTIgdGV4dC1lbmRcIj48ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGJ0bi1ncm91cC1zbSB3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBkcm9wZG93bi10b2dnbGVcIiBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgJHtwc2Mub3JkZXIuZ2V0X3Bvc19zdGF0dXMoc3RhdHVzKS5pbnRlcm5hbE5hbWV9XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgJHtwc2Mub3JkZXIuZ2V0X3Bvc19zdGF0dXNfbG9vcChvcmRlclV1aWQsIHV1aWQpfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMSBwLTFcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYDtcblxuICAgIGNvbnN0IE9yZGVyX0xpc3RfRGV0YWlsX1NpbXBsZSA9ICh7IHV1aWQsIGJhc2tldEZpZWxkMSwgY3VzdG9tZXJJbmZvLCBiYXNrZXRGaWVsZDIsIHBvcywgcHJpY2UsIHByb2R1Y3QsIHN0YXR1cywgYWxsTmV0IH0sIG9yZGVyVXVpZCkgPT4gYFxuICAgICAgICA8dHIgc3R5bGU9XCIke3BzYy5vcmRlci5nZXRfcG9zX2JnX2NvbG9yKHN0YXR1cyl9XCIgY2xhc3M9XCIke3BzYy5vcmRlci5nZXRfcG9zX2JnX2NvbG9yX2NsYXNzKHN0YXR1cyl9XCI+XG4gICAgICAgIDx0ZD4tPC90ZD5cbiAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgIDx0ZD4ke3Bvc308L3RkPlxuICAgICAgICA8dGQgY29sc3Bhbj1cIjRcIj4ke1xuICAgICAgICAocHJvZHVjdCA9PiBwcm9kdWN0Lm9yaWdpbmFsUHJvZHVjdCA/IGA8YSBocmVmPVwiL2FwcHMvYmFja2VuZC9wcm9kdWN0L2VkaXQvaW5kZXgvJHtwcm9kdWN0Lm9yaWdpbmFsUHJvZHVjdC51dWlkfVwiPiR7cHJvZHVjdC5vcmlnaW5hbFByb2R1Y3QudGl0bGV9PC9hPmAgOiBgPGEgaHJlZj1cIi9hcHBzL2JhY2tlbmQvcHJvZHVjdC9lZGl0L2luZGV4LyR7cHJvZHVjdC51dWlkfVwiPiR7cHJvZHVjdC50aXRsZX08L2E+YCApKHByb2R1Y3QpIC8vY2FsbCB0aGUgYW5vbnltb3VzIGlubGluZSB3aXRoIHRoZSBkYXRhIHdlIGNhcmUgYWJvdXRcbiAgICB9PGJyLz5BcnROciBpbnRlcm46ICR7cHJvZHVjdC5uckludGVybn08YnIvPlxuICAgICAgICAke3BzYy5vcmRlci5nZXRfc3BlY2lhbF9wcm9kdWN0X29wdGlvbnMocHJvZHVjdC5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QpfTwvdGQ+XG4gICAgICAgIDx0ZD5BdWZsYWdlOiAke3ByaWNlLmNvdW50fTwvdGQ+XG4gICAgICAgIDx0ZD5LdW5kZW4gSW5mbzogJHtjdXN0b21lckluZm99PC90ZD5cbiAgICAgICAgPHRkPiR7YmFza2V0RmllbGQxfTwvdGQ+XG4gICAgICAgIDx0ZD4ke2Jhc2tldEZpZWxkMn08L3RkPlxuICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj4ke25ldyBJbnRsLk51bWJlckZvcm1hdCgnZGUtREUnLCB7IHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ0VVUicgfSkuZm9ybWF0KHByaWNlLmFsbE5ldC8xMDApfSA8c3Ryb25nPigke25ldyBJbnRsLk51bWJlckZvcm1hdCgnZGUtREUnLCB7IHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ0VVUicgfSkuZm9ybWF0KHByaWNlLmFsbEdyb3NzLzEwMCl9KTwvc3Ryb25nPjwvdGQ+XG4gICAgICAgIDx0ZD4ke3BzYy5vcmRlci5nZXRfcG9zX3N0YXR1cyhzdGF0dXMpLmludGVybmFsTmFtZX08L3RkPlxuICAgICAgICA8dGQ+PC90ZD5cbiAgICA8L3RyPlxuICAgIGA7XG5cbiAgICBjb25zdCBPcmRlcl9MaXN0X1Bvc19TdGF0dXMgPSAoc3RhdHVzLCBvcmRlclV1aWQsIHBvc1V1aWQpID0+IGBcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtIHN3aXRjaF9wb3NcIiBkYXRhLW9yZGVyLXV1aWQ9XCIke29yZGVyVXVpZH1cIiBkYXRhLXBvcy11dWlkPVwiJHtwb3NVdWlkfVwiIGRhdGEtc3RhdHVzPVwiJHtzdGF0dXMuY29kZX1cIj4ke3N0YXR1cy5pbnRlcm5hbE5hbWV9PC9idXR0b24+XG4gICAgYDtcblxuICAgIGNvbnN0IE9yZGVyX0xpc3RfUG9zX0NhbGNfT3B0aW9uID0gKGVsbSkgPT4gYFxuICAgICAgICA8dHI+PHRkPiR7ZWxtLm5hbWV9PC90ZD48dGQ+JHtlbG0udmFsdWV9PC90ZD48L3RyPlxuICAgIGA7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgICAgXG4gICAgICAgIGluaXQoKSB7XG5cbiAgICAgICAgICAgIHRoaXMubG9hZF9zdGF0dXMoKTtcbiAgICAgICAgICAgIHRoaXMuYmluZF9idXR0b25zKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0X3NwZWNpYWxfcHJvZHVjdF9vcHRpb25zKHNwZWNpYWxQcm9kdWN0VHlwZU9iamVjdCkge1xuICAgICAgICAgICAgaWYoc3BlY2lhbFByb2R1Y3RUeXBlT2JqZWN0LnR5cCAhPSA2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gJzx0YWJsZT4nICsgc3BlY2lhbFByb2R1Y3RUeXBlT2JqZWN0Lm9wdGlvbnMubWFwKGVsbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYoZWxtLnR5cGUgIT0gJ2hpZGRlbicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9yZGVyX0xpc3RfUG9zX0NhbGNfT3B0aW9uKGVsbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkuam9pbignJykgKyAnPC90YWJsZT4nO1xuICAgICAgICB9LFxuXG4gICAgICAgIGxvYWRfc3RhdHVzKCkge1xuICAgICAgICAgICAgaWYoand0X3Rva2VuICE9IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAkLmFqYXgoe1xuICAgICAgICAgICAgICAgICAgICB1cmw6IFwiL2FwcHMvYXBpL3N5c3RlbS9zdGF0dXNcIixcbiAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIkF1dGhvcml6YXRpb25cIjogXCJCZWFyZXIgXCIgKyBqd3RfdG9rZW5cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHNjLm9yZGVyLnN0YXR1c19vcmRlciA9IHJlc3VsdC5vcmRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBzYy5vcmRlci5zdGF0dXNfcG9zID0gcmVzdWx0LnBvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgYmluZF9idXR0b25zKCkge1xuICAgICAgICAgICAgJCgnLnRvb2dsZV9saXN0X2RldGFpbF92aWV3Jykub2ZmKCk7XG4gICAgICAgICAgICAkKCcudG9vZ2xlX2xpc3RfZGV0YWlsX3ZpZXcnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdXVpZCA9ICQodGhpcykuZGF0YSgpLnV1aWQ7IFxuICAgICAgICAgICAgICAgIGlmKCQoJyNyb3dzLScgKyB1dWlkICsgJyA+IGRpdicpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgJCgnI3Jvd3MtJyArIHV1aWQpLmh0bWwoJycpO1xuICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICBwc2Mub3JkZXIubG9hZF9kZXRhaWwodXVpZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICQoJy50b29nbGVfbGlzdF9zaW1wbGVfZGV0YWlsX3ZpZXcnKS5vZmYoKTtcbiAgICAgICAgICAgICQoJy50b29nbGVfbGlzdF9zaW1wbGVfZGV0YWlsX3ZpZXcnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdXVpZCA9ICQodGhpcykuZGF0YSgpLnV1aWQ7IFxuICAgICAgICAgICAgICAgIGlmKCQoJyNyb3dzLScgKyB1dWlkICsgJyA+IHRyJykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAkKCcjcm93cy0nICsgdXVpZCkuaHRtbCgnJyk7XG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgIHBzYy5vcmRlci5sb2FkX2RldGFpbCh1dWlkLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgXG4gICAgICAgIH0sXG5cbiAgICAgICAgbG9hZF9kZXRhaWwob3JkZXJVdWlkLCBzaW1wbGUgPSBmYWxzZSkge1xuICAgICAgICAgICAgJC5hamF4KHtcbiAgICAgICAgICAgICAgICB1cmw6IFwiL2FwcHMvYXBpL29yZGVyL2dldG9uZWJ5dXVpZFwiLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiQXV0aG9yaXphdGlvblwiOiBcIkJlYXJlciBcIiArIGp3dF90b2tlblxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICB1dWlkOiBvcmRlclV1aWRcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcHNjLm9yZGVyLmJ1aWxkX2RldGFpbHMob3JkZXJVdWlkLCByZXN1bHQsIHNpbXBsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcblxuICAgICAgICBidWlsZF9kZXRhaWxzKG9yZGVyVXVpZCwgcmVzdWx0LCBzaW1wbGUgPSBmYWxzZSkge1xuICAgICAgICAgICAgaWYoc2ltcGxlKSB7XG4gICAgICAgICAgICAgICAgJCgnI3Jvd3MtJyArIHJlc3VsdC51dWlkKS5odG1sKHJlc3VsdC5wb3NpdGlvbnMubWFwKHggPT4gT3JkZXJfTGlzdF9EZXRhaWxfU2ltcGxlKHgsIG9yZGVyVXVpZCkpLmpvaW4oJycpKTtcbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICQoJyNyb3dzLScgKyByZXN1bHQudXVpZCkuaHRtbChyZXN1bHQucG9zaXRpb25zLm1hcCh4ID0+IE9yZGVyX0xpc3RfRGV0YWlsKHgsIG9yZGVyVXVpZCkpLmpvaW4oJycpKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucG9zaXRpb25zLm1hcCh4ID0+IHRoaXMubG9hZFBsdWdpbkRldGFpbHMoeCkpO1xuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMuYmluZF9zdGF0dXNfYnV0dG9ucygpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGxvYWRQbHVnaW5EZXRhaWxzKHBvcykge1xuICAgICAgICAgICAgJC5hamF4KHtcbiAgICAgICAgICAgICAgICB1cmw6IFwiL2FwcHMvYXBpL3Bvc2l0aW9uL2dldHBsdWdpbmxpc3RkZXRhaWxzL1wiICsgcG9zLnV1aWQsXG4gICAgICAgICAgICAgICAgY29udGVudFR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJBdXRob3JpemF0aW9uXCI6IFwiQmVhcmVyIFwiICsgand0X3Rva2VuXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAkKCcjcm93LScgKyBwb3MudXVpZCkuYXBwZW5kKHJlc3VsdC5odG1sKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9LFxuXG4gICAgICAgIGJpbmRfc3RhdHVzX2J1dHRvbnMoKSB7XG4gICAgICAgICAgICAkKCcuc3dpdGNoX3BvcycpLm9mZigpO1xuICAgICAgICAgICAgJCgnLnN3aXRjaF9wb3MnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHZhciBvcmRlclV1aWQgPSAkKHRoaXMpLmRhdGEoKS5vcmRlclV1aWQ7XG4gICAgICAgICAgICAgICAgdmFyIHBvc1V1aWQgPSAkKHRoaXMpLmRhdGEoKS5wb3NVdWlkO1xuICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSAkKHRoaXMpLmRhdGEoKS5zdGF0dXM7XG5cbiAgICAgICAgICAgICAgICAkLmFqYXgoe1xuICAgICAgICAgICAgICAgICAgICB1cmw6IFwiL2FwcHMvYXBpL3Bvc2l0aW9uL3N0YXR1cy9jaGFuZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIkF1dGhvcml6YXRpb25cIjogXCJCZWFyZXIgXCIgKyBqd3RfdG9rZW5cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHBvc1V1aWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNyb3dzLScgKyBvcmRlclV1aWQpLmh0bWwoJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHNjLm9yZGVyLmxvYWRfZGV0YWlsKG9yZGVyVXVpZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGdldF9wb3NfYmdfY29sb3Ioc3RhdHVzKSB7XG5cbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICB7JSBpZiBvcmRlclN0YXR1c2UuZ2V0UG9zU3RhdHVzQ29sb3IocG9zLnN0YXR1cykgIT0gJycgJX1iYWNrZ3JvdW5kLWNvbG9yOiB7eyBvcmRlclN0YXR1c2UuZ2V0UG9zU3RhdHVzQ29sb3IocG9zLnN0YXR1cykgfX17JSBlbmRpZiAlfVwiXG4gICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29uc3QgZm91bmQgPSBwc2Mub3JkZXIuc3RhdHVzX3Bvcy5maW5kKHN0YXQgPT4gc3RhdC5jb2RlID09IHN0YXR1cyk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmKGZvdW5kICYmIGZvdW5kLmNvbG9yICE9IFwiXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2JhY2tncm91bmQtY29sb3I6ICcgKyBmb3VuZC5jb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICB9LFxuXG4gICAgICAgIGdldF9wb3Nfc3RhdHVzKHN0YXR1cykge1xuXG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgeyUgaWYgb3JkZXJTdGF0dXNlLmdldFBvc1N0YXR1c0NvbG9yKHBvcy5zdGF0dXMpICE9ICcnICV9YmFja2dyb3VuZC1jb2xvcjoge3sgb3JkZXJTdGF0dXNlLmdldFBvc1N0YXR1c0NvbG9yKHBvcy5zdGF0dXMpIH19eyUgZW5kaWYgJX1cIlxuICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gcHNjLm9yZGVyLnN0YXR1c19wb3MuZmluZChzdGF0ID0+IHN0YXQuY29kZSA9PSBzdGF0dXMpO1xuICAgICAgICAgICAgaWYoZm91bmQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7aW50ZXJuYWxOYW1lOiAnbm90Rm91bmQnfTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIGdldF9wb3NfYmdfY29sb3JfY2xhc3Moc3RhdHVzKSB7XG5cbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICBjbGFzcz1cInslIGlmIHBvcy5zdGF0dXMgPT0gMTcwICV9YmctbGlnaHRkYXJreyUgZWxzZWlmIHBvcy5zdGF0dXMgPT0gMjAwIG9yIHBvcy5zdGF0dXMgPT0gMjEwICV9YmctbGlnaHRzdWNjZXNzeyUgZWxzZSAlfWJnLWxpZ2h0ZGFuZ2VyeyUgZW5kaWYgJX1cbiAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgIGlmKHN0YXR1cyA9PSAxNzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2JnLWxpZ2h0ZGFyayc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZihzdGF0dXMgPT0gMjAwIHx8IHN0YXR1cyA9PSAyMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2JnLWxpZ2h0c3VjY2Vzcyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiAnYmctbGlnaHRkYW5nZXInO1xuICAgICAgICB9LFxuXG4gICAgICAgIGdldF9wb3Nfc3RhdHVzX2xvb3Aob3JkZXJVdWlkLCBwb3NVdWlkKSB7XG4gICAgICAgICAgICByZXR1cm4gcHNjLm9yZGVyLnN0YXR1c19wb3MubWFwKHggPT4gT3JkZXJfTGlzdF9Qb3NfU3RhdHVzKHgsIG9yZGVyVXVpZCwgcG9zVXVpZCkpLmpvaW4oJycpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgIH1cbn0pO1xuIiwiZGVmaW5lKGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB7XG5cbiAgICAgICAgaW5pdCgpIHtcbiAgICAgICAgICAgIHNldCA9IHJlcXVpcmUoJy4vcHJvZHVjdC9zZXQnKTtcbiAgICAgICAgICAgIHNldC5pbml0KCk7XG4gICAgICAgIH1cbiAgICB9XG59KTsiLCJkZWZpbmUoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gYnVpbGRUYWJsZShyZXN1bHQpIHtcbiAgICAgICAgJCgnLnByb2R1Y3Rfc2V0X3RhYmxlID4gdGJvZHknKS5lbXB0eSgpO1xuXG4gICAgICAgICQuZWFjaChyZXN1bHQucHJvZHVjdHMsIGZ1bmN0aW9uKGluZGV4LCBpdGVtKSB7XG4gICAgICAgICAgICAkKCcucHJvZHVjdF9zZXRfdGFibGUgPiB0Ym9keScpLmFwcGVuZCgnPHRyPjx0ZD4nICsgaXRlbS50aXRsZSArICc8L3RkPjx0ZD48YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLXV1aWQ9JyArIGl0ZW0udXVpZCArICcgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBidG4tc20gcHJvZHVjdF9zZXRfZGVsZXRlX2J1dHRvblwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtdHJhc2hcIj48L3NwYW4+PC9idXR0b24+PC90ZD48L3RyPicpO1xuICAgICAgICB9KVxuXG4gICAgICAgIGJpbmREZWxldGVCdXR0b25zKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYmluZERlbGV0ZUJ1dHRvbnMoKSB7XG4gICAgICAgICQoJy5wcm9kdWN0X3NldF9kZWxldGVfYnV0dG9uJykuY2xpY2soZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAkKCcjb3ZlcmxheV9sb2FkaW5nJykuZmFkZUluKCk7XG4gICAgICAgICAgICAkLmFqYXgoe1xuICAgICAgICAgICAgICAgIHVybDogXCIvYXBwcy9hcGkvcHJvZHVjdC9cIiArIHByb2R1Y3RVdWlkICsgXCIvc2V0XCIsXG4gICAgICAgICAgICAgICAgY29udGVudFR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJBdXRob3JpemF0aW9uXCI6IFwiQmVhcmVyIFwiICsgand0X3Rva2VuXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXVpZDogJCh0aGlzKS5kYXRhKCd1dWlkJylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVpbGRUYWJsZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICAkKCcjb3ZlcmxheV9sb2FkaW5nJykuZmFkZU91dCgpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuXG4gICAgICAgIGluaXQoKSB7XG4gICAgICAgICAgICBpZigkKCcucHJvZHVjdF9zZXRfYWRkX2J1dHRvbicpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRBZGRCdXR0b24oKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRUYWJsZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5pdEFkZEJ1dHRvbigpIHtcbiAgICAgICAgICAgICQoJy5wcm9kdWN0X3NldF9hZGRfYnV0dG9uJykuY2xpY2soZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgJCgnI292ZXJsYXlfbG9hZGluZycpLmZhZGVJbigpO1xuICAgICAgICAgICAgICAgICQuYWpheCh7XG4gICAgICAgICAgICAgICAgICAgIHVybDogXCIvYXBwcy9hcGkvcHJvZHVjdC9cIiArIHByb2R1Y3RVdWlkICsgXCIvc2V0XCIsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJBdXRob3JpemF0aW9uXCI6IFwiQmVhcmVyIFwiICsgand0X3Rva2VuXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BVVCcsXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dWlkOiAkKHRoaXMpLmRhdGEoJ3V1aWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRUYWJsZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICB9LFxuXG4gICAgICAgIGxvYWRUYWJsZSgpIHtcbiAgICAgICAgICAgICQoJyNvdmVybGF5X2xvYWRpbmcnKS5mYWRlSW4oKTtcbiAgICAgICAgICAgICQuYWpheCh7XG4gICAgICAgICAgICAgICAgdXJsOiBcIi9hcHBzL2FwaS9wcm9kdWN0L1wiICsgcHJvZHVjdFV1aWQgKyBcIi9zZXRcIixcbiAgICAgICAgICAgICAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICBcIkF1dGhvcml6YXRpb25cIjogXCJCZWFyZXIgXCIgKyBqd3RfdG9rZW5cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICBidWlsZFRhYmxlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cblxuICAgIH1cbn0pOyIsIihmdW5jdGlvbiAoZmFjdG9yeSkge1xuICAgIC8qIGdsb2JhbCBkZWZpbmUgKi9cbiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgICAgIC8vIEFNRC4gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIG1vZHVsZS5cbiAgICAgICAgZGVmaW5lKFsnanF1ZXJ5J10sIGZhY3RvcnkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEJyb3dzZXIgZ2xvYmFsczogalF1ZXJ5XG4gICAgICAgIGZhY3Rvcnkod2luZG93LmpRdWVyeSk7XG4gICAgfVxufShmdW5jdGlvbiAoJCl7XG4gICAgJC5leHRlbmQoJC5zdW1tZXJub3RlLnBsdWdpbnMsIHtcbiAgICAgICAgJ21lZGlhJzogZnVuY3Rpb24oY29udGV4dCkge1xuICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgICAgICAgICAvLyB1aSBoYXMgcmVuZGVycyB0byBidWlsZCB1aSBlbGVtZW50cy5cbiAgICAgICAgICAgIC8vICAtIHlvdSBjYW4gY3JlYXRlIGEgYnV0dG9uIHdpdGggYHVpLmJ1dHRvbmBcbiAgICAgICAgICAgIHZhciB1aSA9ICQuc3VtbWVybm90ZS51aTtcblxuICAgICAgICAgICAgLy8gYWRkIGhlbGxvIGJ1dHRvblxuICAgICAgICAgICAgY29udGV4dC5tZW1vKCdidXR0b24ubWVkaWEnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAvLyBjcmVhdGUgYnV0dG9uXG4gICAgICAgICAgICAgICAgdmFyIGJ1dHRvbiA9IHVpLmJ1dHRvbih7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzOiAnPGkgY2xhc3M9XCJmYSBmYS1pbWFnZXNcIi8+IE1lZGlhJyxcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcDogJ01lZGlhJyxcbiAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFCdW5kbGVCcm93c2VyKGNvbnRleHQuJG5vdGUuYXR0cignaWQnKSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvLyBjcmVhdGUgalF1ZXJ5IG9iamVjdCBmcm9tIGJ1dHRvbiBpbnN0YW5jZS5cbiAgICAgICAgICAgICAgICB2YXIgJG1lZGlhID0gYnV0dG9uLnJlbmRlcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiAkbWVkaWE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG59KSk7IiwiIWZ1bmN0aW9uKHQsZSl7XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShlKTpcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1lKHJlcXVpcmUsZXhwb3J0cyxtb2R1bGUpOnQuVGV0aGVyPWUoKX0odGhpcyxmdW5jdGlvbih0LGUsbyl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gaSh0KXt2YXIgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89e307Zm9yKHZhciBuIGluIGUpb1tuXT1lW25dO2lmKHQub3duZXJEb2N1bWVudCE9PWRvY3VtZW50KXt2YXIgcj10Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50O2lmKHIpe3ZhciBzPWkocik7by50b3ArPXMudG9wLG8uYm90dG9tKz1zLnRvcCxvLmxlZnQrPXMubGVmdCxvLnJpZ2h0Kz1zLmxlZnR9fXJldHVybiBvfWZ1bmN0aW9uIHIodCl7dmFyIGU9Z2V0Q29tcHV0ZWRTdHlsZSh0KXx8e30sbz1lLnBvc2l0aW9uLG49W107aWYoXCJmaXhlZFwiPT09bylyZXR1cm5bdF07Zm9yKHZhciBpPXQ7KGk9aS5wYXJlbnROb2RlKSYmaSYmMT09PWkubm9kZVR5cGU7KXt2YXIgcj12b2lkIDA7dHJ5e3I9Z2V0Q29tcHV0ZWRTdHlsZShpKX1jYXRjaChzKXt9aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIHJ8fG51bGw9PT1yKXJldHVybiBuLnB1c2goaSksbjt2YXIgYT1yLGY9YS5vdmVyZmxvdyxsPWEub3ZlcmZsb3dYLGg9YS5vdmVyZmxvd1k7LyhhdXRvfHNjcm9sbCkvLnRlc3QoZitoK2wpJiYoXCJhYnNvbHV0ZVwiIT09b3x8W1wicmVsYXRpdmVcIixcImFic29sdXRlXCIsXCJmaXhlZFwiXS5pbmRleE9mKHIucG9zaXRpb24pPj0wKSYmbi5wdXNoKGkpfXJldHVybiBuLnB1c2godC5vd25lckRvY3VtZW50LmJvZHkpLHQub3duZXJEb2N1bWVudCE9PWRvY3VtZW50JiZuLnB1c2godC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSxufWZ1bmN0aW9uIHMoKXtBJiZkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKEEpLEE9bnVsbH1mdW5jdGlvbiBhKHQpe3ZhciBlPXZvaWQgMDt0PT09ZG9jdW1lbnQ/KGU9ZG9jdW1lbnQsdD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOmU9dC5vd25lckRvY3VtZW50O3ZhciBvPWUuZG9jdW1lbnRFbGVtZW50LG49aSh0KSxyPVAoKTtyZXR1cm4gbi50b3AtPXIudG9wLG4ubGVmdC09ci5sZWZ0LFwidW5kZWZpbmVkXCI9PXR5cGVvZiBuLndpZHRoJiYobi53aWR0aD1kb2N1bWVudC5ib2R5LnNjcm9sbFdpZHRoLW4ubGVmdC1uLnJpZ2h0KSxcInVuZGVmaW5lZFwiPT10eXBlb2Ygbi5oZWlnaHQmJihuLmhlaWdodD1kb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodC1uLnRvcC1uLmJvdHRvbSksbi50b3A9bi50b3Atby5jbGllbnRUb3Asbi5sZWZ0PW4ubGVmdC1vLmNsaWVudExlZnQsbi5yaWdodD1lLmJvZHkuY2xpZW50V2lkdGgtbi53aWR0aC1uLmxlZnQsbi5ib3R0b209ZS5ib2R5LmNsaWVudEhlaWdodC1uLmhlaWdodC1uLnRvcCxufWZ1bmN0aW9uIGYodCl7cmV0dXJuIHQub2Zmc2V0UGFyZW50fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR9ZnVuY3Rpb24gbCgpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7dC5zdHlsZS53aWR0aD1cIjEwMCVcIix0LnN0eWxlLmhlaWdodD1cIjIwMHB4XCI7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtoKGUuc3R5bGUse3Bvc2l0aW9uOlwiYWJzb2x1dGVcIix0b3A6MCxsZWZ0OjAscG9pbnRlckV2ZW50czpcIm5vbmVcIix2aXNpYmlsaXR5OlwiaGlkZGVuXCIsd2lkdGg6XCIyMDBweFwiLGhlaWdodDpcIjE1MHB4XCIsb3ZlcmZsb3c6XCJoaWRkZW5cIn0pLGUuYXBwZW5kQ2hpbGQodCksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlKTt2YXIgbz10Lm9mZnNldFdpZHRoO2Uuc3R5bGUub3ZlcmZsb3c9XCJzY3JvbGxcIjt2YXIgbj10Lm9mZnNldFdpZHRoO289PT1uJiYobj1lLmNsaWVudFdpZHRoKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGUpO3ZhciBpPW8tbjtyZXR1cm57d2lkdGg6aSxoZWlnaHQ6aX19ZnVuY3Rpb24gaCgpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg8PTB8fHZvaWQgMD09PWFyZ3VtZW50c1swXT97fTphcmd1bWVudHNbMF0sZT1bXTtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZSxhcmd1bWVudHMpLGUuc2xpY2UoMSkuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlKWZvcih2YXIgbyBpbiBlKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChlLG8pJiYodFtvXT1lW29dKX0pLHR9ZnVuY3Rpb24gdSh0LGUpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiB0LmNsYXNzTGlzdCllLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UudHJpbSgpJiZ0LmNsYXNzTGlzdC5yZW1vdmUoZSl9KTtlbHNle3ZhciBvPW5ldyBSZWdFeHAoXCIoXnwgKVwiK2Uuc3BsaXQoXCIgXCIpLmpvaW4oXCJ8XCIpK1wiKCB8JClcIixcImdpXCIpLG49Yyh0KS5yZXBsYWNlKG8sXCIgXCIpO2codCxuKX19ZnVuY3Rpb24gZCh0LGUpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiB0LmNsYXNzTGlzdCllLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UudHJpbSgpJiZ0LmNsYXNzTGlzdC5hZGQoZSl9KTtlbHNle3UodCxlKTt2YXIgbz1jKHQpKyhcIiBcIitlKTtnKHQsbyl9fWZ1bmN0aW9uIHAodCxlKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgdC5jbGFzc0xpc3QpcmV0dXJuIHQuY2xhc3NMaXN0LmNvbnRhaW5zKGUpO3ZhciBvPWModCk7cmV0dXJuIG5ldyBSZWdFeHAoXCIoXnwgKVwiK2UrXCIoIHwkKVwiLFwiZ2lcIikudGVzdChvKX1mdW5jdGlvbiBjKHQpe3JldHVybiB0LmNsYXNzTmFtZSBpbnN0YW5jZW9mIHQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5TVkdBbmltYXRlZFN0cmluZz90LmNsYXNzTmFtZS5iYXNlVmFsOnQuY2xhc3NOYW1lfWZ1bmN0aW9uIGcodCxlKXt0LnNldEF0dHJpYnV0ZShcImNsYXNzXCIsZSl9ZnVuY3Rpb24gbSh0LGUsbyl7by5mb3JFYWNoKGZ1bmN0aW9uKG8pey0xPT09ZS5pbmRleE9mKG8pJiZwKHQsbykmJnUodCxvKX0pLGUuZm9yRWFjaChmdW5jdGlvbihlKXtwKHQsZSl8fGQodCxlKX0pfWZ1bmN0aW9uIG4odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIHYodCxlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2YgZSk7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxlKTp0Ll9fcHJvdG9fXz1lKX1mdW5jdGlvbiB5KHQsZSl7dmFyIG89YXJndW1lbnRzLmxlbmd0aDw9Mnx8dm9pZCAwPT09YXJndW1lbnRzWzJdPzE6YXJndW1lbnRzWzJdO3JldHVybiB0K28+PWUmJmU+PXQtb31mdW5jdGlvbiBiKCl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHBlcmZvcm1hbmNlJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlLm5vdygpOituZXcgRGF0ZX1mdW5jdGlvbiB3KCl7Zm9yKHZhciB0PXt0b3A6MCxsZWZ0OjB9LGU9YXJndW1lbnRzLmxlbmd0aCxvPUFycmF5KGUpLG49MDtlPm47bisrKW9bbl09YXJndW1lbnRzW25dO3JldHVybiBvLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIG89ZS50b3Asbj1lLmxlZnQ7XCJzdHJpbmdcIj09dHlwZW9mIG8mJihvPXBhcnNlRmxvYXQobywxMCkpLFwic3RyaW5nXCI9PXR5cGVvZiBuJiYobj1wYXJzZUZsb2F0KG4sMTApKSx0LnRvcCs9byx0LmxlZnQrPW59KSx0fWZ1bmN0aW9uIEModCxlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdC5sZWZ0JiYtMSE9PXQubGVmdC5pbmRleE9mKFwiJVwiKSYmKHQubGVmdD1wYXJzZUZsb2F0KHQubGVmdCwxMCkvMTAwKmUud2lkdGgpLFwic3RyaW5nXCI9PXR5cGVvZiB0LnRvcCYmLTEhPT10LnRvcC5pbmRleE9mKFwiJVwiKSYmKHQudG9wPXBhcnNlRmxvYXQodC50b3AsMTApLzEwMCplLmhlaWdodCksdH1mdW5jdGlvbiBPKHQsZSl7cmV0dXJuXCJzY3JvbGxQYXJlbnRcIj09PWU/ZT10LnNjcm9sbFBhcmVudHNbMF06XCJ3aW5kb3dcIj09PWUmJihlPVtwYWdlWE9mZnNldCxwYWdlWU9mZnNldCxpbm5lcldpZHRoK3BhZ2VYT2Zmc2V0LGlubmVySGVpZ2h0K3BhZ2VZT2Zmc2V0XSksZT09PWRvY3VtZW50JiYoZT1lLmRvY3VtZW50RWxlbWVudCksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGUubm9kZVR5cGUmJiFmdW5jdGlvbigpe3ZhciB0PWUsbz1hKGUpLG49byxpPWdldENvbXB1dGVkU3R5bGUoZSk7aWYoZT1bbi5sZWZ0LG4udG9wLG8ud2lkdGgrbi5sZWZ0LG8uaGVpZ2h0K24udG9wXSx0Lm93bmVyRG9jdW1lbnQhPT1kb2N1bWVudCl7dmFyIHI9dC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O2VbMF0rPXIucGFnZVhPZmZzZXQsZVsxXSs9ci5wYWdlWU9mZnNldCxlWzJdKz1yLnBhZ2VYT2Zmc2V0LGVbM10rPXIucGFnZVlPZmZzZXR9JC5mb3JFYWNoKGZ1bmN0aW9uKHQsbyl7dD10WzBdLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHIoMSksXCJUb3BcIj09PXR8fFwiTGVmdFwiPT09dD9lW29dKz1wYXJzZUZsb2F0KGlbXCJib3JkZXJcIit0K1wiV2lkdGhcIl0pOmVbb10tPXBhcnNlRmxvYXQoaVtcImJvcmRlclwiK3QrXCJXaWR0aFwiXSl9KX0oKSxlfXZhciBFPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe2Zvcih2YXIgbz0wO288ZS5sZW5ndGg7bysrKXt2YXIgbj1lW29dO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLmtleSxuKX19cmV0dXJuIGZ1bmN0aW9uKGUsbyxuKXtyZXR1cm4gbyYmdChlLnByb3RvdHlwZSxvKSxuJiZ0KGUsbiksZX19KCkseD12b2lkIDA7XCJ1bmRlZmluZWRcIj09dHlwZW9mIHgmJih4PXttb2R1bGVzOltdfSk7dmFyIEE9bnVsbCxUPWZ1bmN0aW9uKCl7dmFyIHQ9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4rK3R9fSgpLFM9e30sUD1mdW5jdGlvbigpe3ZhciB0PUE7dHx8KHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSx0LnNldEF0dHJpYnV0ZShcImRhdGEtdGV0aGVyLWlkXCIsVCgpKSxoKHQuc3R5bGUse3RvcDowLGxlZnQ6MCxwb3NpdGlvbjpcImFic29sdXRlXCJ9KSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpLEE9dCk7dmFyIGU9dC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXRldGhlci1pZFwiKTtyZXR1cm5cInVuZGVmaW5lZFwiPT10eXBlb2YgU1tlXSYmKFNbZV09aSh0KSxNKGZ1bmN0aW9uKCl7ZGVsZXRlIFNbZV19KSksU1tlXX0sVz1bXSxNPWZ1bmN0aW9uKHQpe1cucHVzaCh0KX0sXz1mdW5jdGlvbigpe2Zvcih2YXIgdD12b2lkIDA7dD1XLnBvcCgpOyl0KCl9LGs9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7bih0aGlzLHQpfXJldHVybiBFKHQsW3trZXk6XCJvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxvKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPD0zfHx2b2lkIDA9PT1hcmd1bWVudHNbM10/ITE6YXJndW1lbnRzWzNdO1widW5kZWZpbmVkXCI9PXR5cGVvZiB0aGlzLmJpbmRpbmdzJiYodGhpcy5iaW5kaW5ncz17fSksXCJ1bmRlZmluZWRcIj09dHlwZW9mIHRoaXMuYmluZGluZ3NbdF0mJih0aGlzLmJpbmRpbmdzW3RdPVtdKSx0aGlzLmJpbmRpbmdzW3RdLnB1c2goe2hhbmRsZXI6ZSxjdHg6byxvbmNlOm59KX19LHtrZXk6XCJvbmNlXCIsdmFsdWU6ZnVuY3Rpb24odCxlLG8pe3RoaXMub24odCxlLG8sITApfX0se2tleTpcIm9mZlwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHRoaXMuYmluZGluZ3MmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiB0aGlzLmJpbmRpbmdzW3RdKWlmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBlKWRlbGV0ZSB0aGlzLmJpbmRpbmdzW3RdO2Vsc2UgZm9yKHZhciBvPTA7bzx0aGlzLmJpbmRpbmdzW3RdLmxlbmd0aDspdGhpcy5iaW5kaW5nc1t0XVtvXS5oYW5kbGVyPT09ZT90aGlzLmJpbmRpbmdzW3RdLnNwbGljZShvLDEpOisrb319LHtrZXk6XCJ0cmlnZ2VyXCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHRoaXMuYmluZGluZ3MmJnRoaXMuYmluZGluZ3NbdF0pe2Zvcih2YXIgZT0wLG89YXJndW1lbnRzLmxlbmd0aCxuPUFycmF5KG8+MT9vLTE6MCksaT0xO28+aTtpKyspbltpLTFdPWFyZ3VtZW50c1tpXTtmb3IoO2U8dGhpcy5iaW5kaW5nc1t0XS5sZW5ndGg7KXt2YXIgcj10aGlzLmJpbmRpbmdzW3RdW2VdLHM9ci5oYW5kbGVyLGE9ci5jdHgsZj1yLm9uY2UsbD1hO1widW5kZWZpbmVkXCI9PXR5cGVvZiBsJiYobD10aGlzKSxzLmFwcGx5KGwsbiksZj90aGlzLmJpbmRpbmdzW3RdLnNwbGljZShlLDEpOisrZX19fX1dKSx0fSgpO3guVXRpbHM9e2dldEFjdHVhbEJvdW5kaW5nQ2xpZW50UmVjdDppLGdldFNjcm9sbFBhcmVudHM6cixnZXRCb3VuZHM6YSxnZXRPZmZzZXRQYXJlbnQ6ZixleHRlbmQ6aCxhZGRDbGFzczpkLHJlbW92ZUNsYXNzOnUsaGFzQ2xhc3M6cCx1cGRhdGVDbGFzc2VzOm0sZGVmZXI6TSxmbHVzaDpfLHVuaXF1ZUlkOlQsRXZlbnRlZDprLGdldFNjcm9sbEJhclNpemU6bCxyZW1vdmVVdGlsRWxlbWVudHM6c307dmFyIEI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dmFyIG89W10sbj0hMCxpPSExLHI9dm9pZCAwO3RyeXtmb3IodmFyIHMsYT10W1N5bWJvbC5pdGVyYXRvcl0oKTshKG49KHM9YS5uZXh0KCkpLmRvbmUpJiYoby5wdXNoKHMudmFsdWUpLCFlfHxvLmxlbmd0aCE9PWUpO249ITApO31jYXRjaChmKXtpPSEwLHI9Zn1maW5hbGx5e3RyeXshbiYmYVtcInJldHVyblwiXSYmYVtcInJldHVyblwiXSgpfWZpbmFsbHl7aWYoaSl0aHJvdyByfX1yZXR1cm4gb31yZXR1cm4gZnVuY3Rpb24oZSxvKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlO2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpcmV0dXJuIHQoZSxvKTt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX19KCksRT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXtmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKyl7dmFyIG49ZVtvXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbi5rZXksbil9fXJldHVybiBmdW5jdGlvbihlLG8sbil7cmV0dXJuIG8mJnQoZS5wcm90b3R5cGUsbyksbiYmdChlLG4pLGV9fSgpLHo9ZnVuY3Rpb24odCxlLG8pe2Zvcih2YXIgbj0hMDtuOyl7dmFyIGk9dCxyPWUscz1vO249ITEsbnVsbD09PWkmJihpPUZ1bmN0aW9uLnByb3RvdHlwZSk7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLHIpO2lmKHZvaWQgMCE9PWEpe2lmKFwidmFsdWVcImluIGEpcmV0dXJuIGEudmFsdWU7dmFyIGY9YS5nZXQ7aWYodm9pZCAwPT09ZilyZXR1cm47cmV0dXJuIGYuY2FsbChzKX12YXIgbD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoaSk7aWYobnVsbD09PWwpcmV0dXJuO3Q9bCxlPXIsbz1zLG49ITAsYT1sPXZvaWQgMH19O2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiB4KXRocm93IG5ldyBFcnJvcihcIllvdSBtdXN0IGluY2x1ZGUgdGhlIHV0aWxzLmpzIGZpbGUgYmVmb3JlIHRldGhlci5qc1wiKTt2YXIgaj14LlV0aWxzLHI9ai5nZXRTY3JvbGxQYXJlbnRzLGE9ai5nZXRCb3VuZHMsZj1qLmdldE9mZnNldFBhcmVudCxoPWouZXh0ZW5kLGQ9ai5hZGRDbGFzcyx1PWoucmVtb3ZlQ2xhc3MsbT1qLnVwZGF0ZUNsYXNzZXMsTT1qLmRlZmVyLF89ai5mbHVzaCxsPWouZ2V0U2Nyb2xsQmFyU2l6ZSxzPWoucmVtb3ZlVXRpbEVsZW1lbnRzLFk9ZnVuY3Rpb24oKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgZG9jdW1lbnQpcmV0dXJuXCJcIjtmb3IodmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlPVtcInRyYW5zZm9ybVwiLFwiV2Via2l0VHJhbnNmb3JtXCIsXCJPVHJhbnNmb3JtXCIsXCJNb3pUcmFuc2Zvcm1cIixcIm1zVHJhbnNmb3JtXCJdLG89MDtvPGUubGVuZ3RoOysrbyl7dmFyIG49ZVtvXTtpZih2b2lkIDAhPT10LnN0eWxlW25dKXJldHVybiBufX0oKSxMPVtdLEQ9ZnVuY3Rpb24oKXtMLmZvckVhY2goZnVuY3Rpb24odCl7dC5wb3NpdGlvbighMSl9KSxfKCl9OyFmdW5jdGlvbigpe3ZhciB0PW51bGwsZT1udWxsLG89bnVsbCxuPWZ1bmN0aW9uIGkoKXtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgZSYmZT4xNj8oZT1NYXRoLm1pbihlLTE2LDI1MCksdm9pZChvPXNldFRpbWVvdXQoaSwyNTApKSk6dm9pZChcInVuZGVmaW5lZFwiIT10eXBlb2YgdCYmYigpLXQ8MTB8fChudWxsIT1vJiYoY2xlYXJUaW1lb3V0KG8pLG89bnVsbCksdD1iKCksRCgpLGU9YigpLXQpKX07XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyJiZbXCJyZXNpemVcIixcInNjcm9sbFwiLFwidG91Y2htb3ZlXCJdLmZvckVhY2goZnVuY3Rpb24odCl7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIodCxuKX0pfSgpO3ZhciBYPXtjZW50ZXI6XCJjZW50ZXJcIixsZWZ0OlwicmlnaHRcIixyaWdodDpcImxlZnRcIn0sRj17bWlkZGxlOlwibWlkZGxlXCIsdG9wOlwiYm90dG9tXCIsYm90dG9tOlwidG9wXCJ9LEg9e3RvcDowLGxlZnQ6MCxtaWRkbGU6XCI1MCVcIixjZW50ZXI6XCI1MCVcIixib3R0b206XCIxMDAlXCIscmlnaHQ6XCIxMDAlXCJ9LE49ZnVuY3Rpb24odCxlKXt2YXIgbz10LmxlZnQsbj10LnRvcDtyZXR1cm5cImF1dG9cIj09PW8mJihvPVhbZS5sZWZ0XSksXCJhdXRvXCI9PT1uJiYobj1GW2UudG9wXSkse2xlZnQ6byx0b3A6bn19LFU9ZnVuY3Rpb24odCl7dmFyIGU9dC5sZWZ0LG89dC50b3A7cmV0dXJuXCJ1bmRlZmluZWRcIiE9dHlwZW9mIEhbdC5sZWZ0XSYmKGU9SFt0LmxlZnRdKSxcInVuZGVmaW5lZFwiIT10eXBlb2YgSFt0LnRvcF0mJihvPUhbdC50b3BdKSx7bGVmdDplLHRvcDpvfX0sVj1mdW5jdGlvbih0KXt2YXIgZT10LnNwbGl0KFwiIFwiKSxvPUIoZSwyKSxuPW9bMF0saT1vWzFdO3JldHVybnt0b3A6bixsZWZ0Oml9fSxSPVYscT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe3ZhciBvPXRoaXM7bih0aGlzLGUpLHooT2JqZWN0LmdldFByb3RvdHlwZU9mKGUucHJvdG90eXBlKSxcImNvbnN0cnVjdG9yXCIsdGhpcykuY2FsbCh0aGlzKSx0aGlzLnBvc2l0aW9uPXRoaXMucG9zaXRpb24uYmluZCh0aGlzKSxMLnB1c2godGhpcyksdGhpcy5oaXN0b3J5PVtdLHRoaXMuc2V0T3B0aW9ucyh0LCExKSx4Lm1vZHVsZXMuZm9yRWFjaChmdW5jdGlvbih0KXtcInVuZGVmaW5lZFwiIT10eXBlb2YgdC5pbml0aWFsaXplJiZ0LmluaXRpYWxpemUuY2FsbChvKX0pLHRoaXMucG9zaXRpb24oKX1yZXR1cm4gdihlLHQpLEUoZSxbe2tleTpcImdldENsYXNzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPD0wfHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/XCJcIjphcmd1bWVudHNbMF0sZT10aGlzLm9wdGlvbnMuY2xhc3NlcztyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgZSYmZVt0XT90aGlzLm9wdGlvbnMuY2xhc3Nlc1t0XTp0aGlzLm9wdGlvbnMuY2xhc3NQcmVmaXg/dGhpcy5vcHRpb25zLmNsYXNzUHJlZml4K1wiLVwiK3Q6dH19LHtrZXk6XCJzZXRPcHRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxvPWFyZ3VtZW50cy5sZW5ndGg8PTF8fHZvaWQgMD09PWFyZ3VtZW50c1sxXT8hMDphcmd1bWVudHNbMV0sbj17b2Zmc2V0OlwiMCAwXCIsdGFyZ2V0T2Zmc2V0OlwiMCAwXCIsdGFyZ2V0QXR0YWNobWVudDpcImF1dG8gYXV0b1wiLGNsYXNzUHJlZml4OlwidGV0aGVyXCJ9O3RoaXMub3B0aW9ucz1oKG4sdCk7dmFyIGk9dGhpcy5vcHRpb25zLHM9aS5lbGVtZW50LGE9aS50YXJnZXQsZj1pLnRhcmdldE1vZGlmaWVyO2lmKHRoaXMuZWxlbWVudD1zLHRoaXMudGFyZ2V0PWEsdGhpcy50YXJnZXRNb2RpZmllcj1mLFwidmlld3BvcnRcIj09PXRoaXMudGFyZ2V0Pyh0aGlzLnRhcmdldD1kb2N1bWVudC5ib2R5LHRoaXMudGFyZ2V0TW9kaWZpZXI9XCJ2aXNpYmxlXCIpOlwic2Nyb2xsLWhhbmRsZVwiPT09dGhpcy50YXJnZXQmJih0aGlzLnRhcmdldD1kb2N1bWVudC5ib2R5LHRoaXMudGFyZ2V0TW9kaWZpZXI9XCJzY3JvbGwtaGFuZGxlXCIpLFtcImVsZW1lbnRcIixcInRhcmdldFwiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBlW3RdKXRocm93IG5ldyBFcnJvcihcIlRldGhlciBFcnJvcjogQm90aCBlbGVtZW50IGFuZCB0YXJnZXQgbXVzdCBiZSBkZWZpbmVkXCIpO1widW5kZWZpbmVkXCIhPXR5cGVvZiBlW3RdLmpxdWVyeT9lW3RdPWVbdF1bMF06XCJzdHJpbmdcIj09dHlwZW9mIGVbdF0mJihlW3RdPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZVt0XSkpfSksZCh0aGlzLmVsZW1lbnQsdGhpcy5nZXRDbGFzcyhcImVsZW1lbnRcIikpLHRoaXMub3B0aW9ucy5hZGRUYXJnZXRDbGFzc2VzIT09ITEmJmQodGhpcy50YXJnZXQsdGhpcy5nZXRDbGFzcyhcInRhcmdldFwiKSksIXRoaXMub3B0aW9ucy5hdHRhY2htZW50KXRocm93IG5ldyBFcnJvcihcIlRldGhlciBFcnJvcjogWW91IG11c3QgcHJvdmlkZSBhbiBhdHRhY2htZW50XCIpO3RoaXMudGFyZ2V0QXR0YWNobWVudD1SKHRoaXMub3B0aW9ucy50YXJnZXRBdHRhY2htZW50KSx0aGlzLmF0dGFjaG1lbnQ9Uih0aGlzLm9wdGlvbnMuYXR0YWNobWVudCksdGhpcy5vZmZzZXQ9Vih0aGlzLm9wdGlvbnMub2Zmc2V0KSx0aGlzLnRhcmdldE9mZnNldD1WKHRoaXMub3B0aW9ucy50YXJnZXRPZmZzZXQpLFwidW5kZWZpbmVkXCIhPXR5cGVvZiB0aGlzLnNjcm9sbFBhcmVudHMmJnRoaXMuZGlzYWJsZSgpLFwic2Nyb2xsLWhhbmRsZVwiPT09dGhpcy50YXJnZXRNb2RpZmllcj90aGlzLnNjcm9sbFBhcmVudHM9W3RoaXMudGFyZ2V0XTp0aGlzLnNjcm9sbFBhcmVudHM9cih0aGlzLnRhcmdldCksdGhpcy5vcHRpb25zLmVuYWJsZWQhPT0hMSYmdGhpcy5lbmFibGUobyl9fSx7a2V5OlwiZ2V0VGFyZ2V0Qm91bmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgdGhpcy50YXJnZXRNb2RpZmllcilyZXR1cm4gYSh0aGlzLnRhcmdldCk7aWYoXCJ2aXNpYmxlXCI9PT10aGlzLnRhcmdldE1vZGlmaWVyKXtpZih0aGlzLnRhcmdldD09PWRvY3VtZW50LmJvZHkpcmV0dXJue3RvcDpwYWdlWU9mZnNldCxsZWZ0OnBhZ2VYT2Zmc2V0LGhlaWdodDppbm5lckhlaWdodCx3aWR0aDppbm5lcldpZHRofTt2YXIgdD1hKHRoaXMudGFyZ2V0KSxlPXtoZWlnaHQ6dC5oZWlnaHQsd2lkdGg6dC53aWR0aCx0b3A6dC50b3AsbGVmdDp0LmxlZnR9O3JldHVybiBlLmhlaWdodD1NYXRoLm1pbihlLmhlaWdodCx0LmhlaWdodC0ocGFnZVlPZmZzZXQtdC50b3ApKSxlLmhlaWdodD1NYXRoLm1pbihlLmhlaWdodCx0LmhlaWdodC0odC50b3ArdC5oZWlnaHQtKHBhZ2VZT2Zmc2V0K2lubmVySGVpZ2h0KSkpLGUuaGVpZ2h0PU1hdGgubWluKGlubmVySGVpZ2h0LGUuaGVpZ2h0KSxlLmhlaWdodC09MixlLndpZHRoPU1hdGgubWluKGUud2lkdGgsdC53aWR0aC0ocGFnZVhPZmZzZXQtdC5sZWZ0KSksZS53aWR0aD1NYXRoLm1pbihlLndpZHRoLHQud2lkdGgtKHQubGVmdCt0LndpZHRoLShwYWdlWE9mZnNldCtpbm5lcldpZHRoKSkpLGUud2lkdGg9TWF0aC5taW4oaW5uZXJXaWR0aCxlLndpZHRoKSxlLndpZHRoLT0yLGUudG9wPHBhZ2VZT2Zmc2V0JiYoZS50b3A9cGFnZVlPZmZzZXQpLGUubGVmdDxwYWdlWE9mZnNldCYmKGUubGVmdD1wYWdlWE9mZnNldCksZX1pZihcInNjcm9sbC1oYW5kbGVcIj09PXRoaXMudGFyZ2V0TW9kaWZpZXIpe3ZhciB0PXZvaWQgMCxvPXRoaXMudGFyZ2V0O289PT1kb2N1bWVudC5ib2R5PyhvPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx0PXtsZWZ0OnBhZ2VYT2Zmc2V0LHRvcDpwYWdlWU9mZnNldCxoZWlnaHQ6aW5uZXJIZWlnaHQsd2lkdGg6aW5uZXJXaWR0aH0pOnQ9YShvKTt2YXIgbj1nZXRDb21wdXRlZFN0eWxlKG8pLGk9by5zY3JvbGxXaWR0aD5vLmNsaWVudFdpZHRofHxbbi5vdmVyZmxvdyxuLm92ZXJmbG93WF0uaW5kZXhPZihcInNjcm9sbFwiKT49MHx8dGhpcy50YXJnZXQhPT1kb2N1bWVudC5ib2R5LHI9MDtpJiYocj0xNSk7dmFyIHM9dC5oZWlnaHQtcGFyc2VGbG9hdChuLmJvcmRlclRvcFdpZHRoKS1wYXJzZUZsb2F0KG4uYm9yZGVyQm90dG9tV2lkdGgpLXIsZT17d2lkdGg6MTUsaGVpZ2h0Oi45NzUqcyoocy9vLnNjcm9sbEhlaWdodCksbGVmdDp0LmxlZnQrdC53aWR0aC1wYXJzZUZsb2F0KG4uYm9yZGVyTGVmdFdpZHRoKS0xNX0sZj0wOzQwOD5zJiZ0aGlzLnRhcmdldD09PWRvY3VtZW50LmJvZHkmJihmPS0xMWUtNSpNYXRoLnBvdyhzLDIpLS4wMDcyNypzKzIyLjU4KSx0aGlzLnRhcmdldCE9PWRvY3VtZW50LmJvZHkmJihlLmhlaWdodD1NYXRoLm1heChlLmhlaWdodCwyNCkpO3ZhciBsPXRoaXMudGFyZ2V0LnNjcm9sbFRvcC8oby5zY3JvbGxIZWlnaHQtcyk7cmV0dXJuIGUudG9wPWwqKHMtZS5oZWlnaHQtZikrdC50b3ArcGFyc2VGbG9hdChuLmJvcmRlclRvcFdpZHRoKSx0aGlzLnRhcmdldD09PWRvY3VtZW50LmJvZHkmJihlLmhlaWdodD1NYXRoLm1heChlLmhlaWdodCwyNCkpLGV9fX0se2tleTpcImNsZWFyQ2FjaGVcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2NhY2hlPXt9fX0se2tleTpcImNhY2hlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm5cInVuZGVmaW5lZFwiPT10eXBlb2YgdGhpcy5fY2FjaGUmJih0aGlzLl9jYWNoZT17fSksXCJ1bmRlZmluZWRcIj09dHlwZW9mIHRoaXMuX2NhY2hlW3RdJiYodGhpcy5fY2FjaGVbdF09ZS5jYWxsKHRoaXMpKSx0aGlzLl9jYWNoZVt0XX19LHtrZXk6XCJlbmFibGVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1hcmd1bWVudHMubGVuZ3RoPD0wfHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/ITA6YXJndW1lbnRzWzBdO3RoaXMub3B0aW9ucy5hZGRUYXJnZXRDbGFzc2VzIT09ITEmJmQodGhpcy50YXJnZXQsdGhpcy5nZXRDbGFzcyhcImVuYWJsZWRcIikpLGQodGhpcy5lbGVtZW50LHRoaXMuZ2V0Q2xhc3MoXCJlbmFibGVkXCIpKSx0aGlzLmVuYWJsZWQ9ITAsdGhpcy5zY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24oZSl7ZSE9PXQudGFyZ2V0Lm93bmVyRG9jdW1lbnQmJmUuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLHQucG9zaXRpb24pfSksZSYmdGhpcy5wb3NpdGlvbigpfX0se2tleTpcImRpc2FibGVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dSh0aGlzLnRhcmdldCx0aGlzLmdldENsYXNzKFwiZW5hYmxlZFwiKSksdSh0aGlzLmVsZW1lbnQsdGhpcy5nZXRDbGFzcyhcImVuYWJsZWRcIikpLHRoaXMuZW5hYmxlZD0hMSxcInVuZGVmaW5lZFwiIT10eXBlb2YgdGhpcy5zY3JvbGxQYXJlbnRzJiZ0aGlzLnNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbihlKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIix0LnBvc2l0aW9uKX0pfX0se2tleTpcImRlc3Ryb3lcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5kaXNhYmxlKCksTC5mb3JFYWNoKGZ1bmN0aW9uKGUsbyl7ZT09PXQmJkwuc3BsaWNlKG8sMSl9KSwwPT09TC5sZW5ndGgmJnMoKX19LHtrZXk6XCJ1cGRhdGVBdHRhY2hDbGFzc2VzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgbz10aGlzO3Q9dHx8dGhpcy5hdHRhY2htZW50LGU9ZXx8dGhpcy50YXJnZXRBdHRhY2htZW50O3ZhciBuPVtcImxlZnRcIixcInRvcFwiLFwiYm90dG9tXCIsXCJyaWdodFwiLFwibWlkZGxlXCIsXCJjZW50ZXJcIl07XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHRoaXMuX2FkZEF0dGFjaENsYXNzZXMmJnRoaXMuX2FkZEF0dGFjaENsYXNzZXMubGVuZ3RoJiZ0aGlzLl9hZGRBdHRhY2hDbGFzc2VzLnNwbGljZSgwLHRoaXMuX2FkZEF0dGFjaENsYXNzZXMubGVuZ3RoKSxcInVuZGVmaW5lZFwiPT10eXBlb2YgdGhpcy5fYWRkQXR0YWNoQ2xhc3NlcyYmKHRoaXMuX2FkZEF0dGFjaENsYXNzZXM9W10pO3ZhciBpPXRoaXMuX2FkZEF0dGFjaENsYXNzZXM7dC50b3AmJmkucHVzaCh0aGlzLmdldENsYXNzKFwiZWxlbWVudC1hdHRhY2hlZFwiKStcIi1cIit0LnRvcCksdC5sZWZ0JiZpLnB1c2godGhpcy5nZXRDbGFzcyhcImVsZW1lbnQtYXR0YWNoZWRcIikrXCItXCIrdC5sZWZ0KSxlLnRvcCYmaS5wdXNoKHRoaXMuZ2V0Q2xhc3MoXCJ0YXJnZXQtYXR0YWNoZWRcIikrXCItXCIrZS50b3ApLGUubGVmdCYmaS5wdXNoKHRoaXMuZ2V0Q2xhc3MoXCJ0YXJnZXQtYXR0YWNoZWRcIikrXCItXCIrZS5sZWZ0KTt2YXIgcj1bXTtuLmZvckVhY2goZnVuY3Rpb24odCl7ci5wdXNoKG8uZ2V0Q2xhc3MoXCJlbGVtZW50LWF0dGFjaGVkXCIpK1wiLVwiK3QpLHIucHVzaChvLmdldENsYXNzKFwidGFyZ2V0LWF0dGFjaGVkXCIpK1wiLVwiK3QpfSksTShmdW5jdGlvbigpe1widW5kZWZpbmVkXCIhPXR5cGVvZiBvLl9hZGRBdHRhY2hDbGFzc2VzJiYobShvLmVsZW1lbnQsby5fYWRkQXR0YWNoQ2xhc3NlcyxyKSxvLm9wdGlvbnMuYWRkVGFyZ2V0Q2xhc3NlcyE9PSExJiZtKG8udGFyZ2V0LG8uX2FkZEF0dGFjaENsYXNzZXMsciksZGVsZXRlIG8uX2FkZEF0dGFjaENsYXNzZXMpfSl9fSx7a2V5OlwicG9zaXRpb25cIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1hcmd1bWVudHMubGVuZ3RoPD0wfHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/ITA6YXJndW1lbnRzWzBdO2lmKHRoaXMuZW5hYmxlZCl7dGhpcy5jbGVhckNhY2hlKCk7dmFyIG89Tih0aGlzLnRhcmdldEF0dGFjaG1lbnQsdGhpcy5hdHRhY2htZW50KTt0aGlzLnVwZGF0ZUF0dGFjaENsYXNzZXModGhpcy5hdHRhY2htZW50LG8pO3ZhciBuPXRoaXMuY2FjaGUoXCJlbGVtZW50LWJvdW5kc1wiLGZ1bmN0aW9uKCl7cmV0dXJuIGEodC5lbGVtZW50KX0pLGk9bi53aWR0aCxyPW4uaGVpZ2h0O2lmKDA9PT1pJiYwPT09ciYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHRoaXMubGFzdFNpemUpe3ZhciBzPXRoaXMubGFzdFNpemU7aT1zLndpZHRoLHI9cy5oZWlnaHR9ZWxzZSB0aGlzLmxhc3RTaXplPXt3aWR0aDppLGhlaWdodDpyfTt2YXIgaD10aGlzLmNhY2hlKFwidGFyZ2V0LWJvdW5kc1wiLGZ1bmN0aW9uKCl7cmV0dXJuIHQuZ2V0VGFyZ2V0Qm91bmRzKCl9KSx1PWgsZD1DKFUodGhpcy5hdHRhY2htZW50KSx7d2lkdGg6aSxoZWlnaHQ6cn0pLHA9QyhVKG8pLHUpLGM9Qyh0aGlzLm9mZnNldCx7d2lkdGg6aSxoZWlnaHQ6cn0pLGc9Qyh0aGlzLnRhcmdldE9mZnNldCx1KTtkPXcoZCxjKSxwPXcocCxnKTtmb3IodmFyIG09aC5sZWZ0K3AubGVmdC1kLmxlZnQsdj1oLnRvcCtwLnRvcC1kLnRvcCx5PTA7eTx4Lm1vZHVsZXMubGVuZ3RoOysreSl7dmFyIGI9eC5tb2R1bGVzW3ldLE89Yi5wb3NpdGlvbi5jYWxsKHRoaXMse2xlZnQ6bSx0b3A6dix0YXJnZXRBdHRhY2htZW50Om8sdGFyZ2V0UG9zOmgsZWxlbWVudFBvczpuLG9mZnNldDpkLHRhcmdldE9mZnNldDpwLG1hbnVhbE9mZnNldDpjLG1hbnVhbFRhcmdldE9mZnNldDpnLHNjcm9sbGJhclNpemU6UyxhdHRhY2htZW50OnRoaXMuYXR0YWNobWVudH0pO2lmKE89PT0hMSlyZXR1cm4hMTtcInVuZGVmaW5lZFwiIT10eXBlb2YgTyYmXCJvYmplY3RcIj09dHlwZW9mIE8mJih2PU8udG9wLG09Ty5sZWZ0KX12YXIgRT17cGFnZTp7dG9wOnYsbGVmdDptfSx2aWV3cG9ydDp7dG9wOnYtcGFnZVlPZmZzZXQsYm90dG9tOnBhZ2VZT2Zmc2V0LXYtcitpbm5lckhlaWdodCxsZWZ0Om0tcGFnZVhPZmZzZXQscmlnaHQ6cGFnZVhPZmZzZXQtbS1pK2lubmVyV2lkdGh9fSxBPXRoaXMudGFyZ2V0Lm93bmVyRG9jdW1lbnQsVD1BLmRlZmF1bHRWaWV3LFM9dm9pZCAwO3JldHVybiBBLmJvZHkuc2Nyb2xsV2lkdGg+VC5pbm5lcldpZHRoJiYoUz10aGlzLmNhY2hlKFwic2Nyb2xsYmFyLXNpemVcIixsKSxFLnZpZXdwb3J0LmJvdHRvbS09Uy5oZWlnaHQpLEEuYm9keS5zY3JvbGxIZWlnaHQ+VC5pbm5lckhlaWdodCYmKFM9dGhpcy5jYWNoZShcInNjcm9sbGJhci1zaXplXCIsbCksRS52aWV3cG9ydC5yaWdodC09Uy53aWR0aCksKC0xPT09W1wiXCIsXCJzdGF0aWNcIl0uaW5kZXhPZihBLmJvZHkuc3R5bGUucG9zaXRpb24pfHwtMT09PVtcIlwiLFwic3RhdGljXCJdLmluZGV4T2YoQS5ib2R5LnBhcmVudEVsZW1lbnQuc3R5bGUucG9zaXRpb24pKSYmKEUucGFnZS5ib3R0b209QS5ib2R5LnNjcm9sbEhlaWdodC12LXIsRS5wYWdlLnJpZ2h0PUEuYm9keS5zY3JvbGxXaWR0aC1tLWkpLFwidW5kZWZpbmVkXCIhPXR5cGVvZiB0aGlzLm9wdGlvbnMub3B0aW1pemF0aW9ucyYmdGhpcy5vcHRpb25zLm9wdGltaXphdGlvbnMubW92ZUVsZW1lbnQhPT0hMSYmXCJ1bmRlZmluZWRcIj09dHlwZW9mIHRoaXMudGFyZ2V0TW9kaWZpZXImJiFmdW5jdGlvbigpe3ZhciBlPXQuY2FjaGUoXCJ0YXJnZXQtb2Zmc2V0cGFyZW50XCIsZnVuY3Rpb24oKXtyZXR1cm4gZih0LnRhcmdldCl9KSxvPXQuY2FjaGUoXCJ0YXJnZXQtb2Zmc2V0cGFyZW50LWJvdW5kc1wiLGZ1bmN0aW9uKCl7cmV0dXJuIGEoZSl9KSxuPWdldENvbXB1dGVkU3R5bGUoZSksaT1vLHI9e307aWYoW1wiVG9wXCIsXCJMZWZ0XCIsXCJCb3R0b21cIixcIlJpZ2h0XCJdLmZvckVhY2goZnVuY3Rpb24odCl7clt0LnRvTG93ZXJDYXNlKCldPXBhcnNlRmxvYXQobltcImJvcmRlclwiK3QrXCJXaWR0aFwiXSl9KSxvLnJpZ2h0PUEuYm9keS5zY3JvbGxXaWR0aC1vLmxlZnQtaS53aWR0aCtyLnJpZ2h0LG8uYm90dG9tPUEuYm9keS5zY3JvbGxIZWlnaHQtby50b3AtaS5oZWlnaHQrci5ib3R0b20sRS5wYWdlLnRvcD49by50b3Arci50b3AmJkUucGFnZS5ib3R0b20+PW8uYm90dG9tJiZFLnBhZ2UubGVmdD49by5sZWZ0K3IubGVmdCYmRS5wYWdlLnJpZ2h0Pj1vLnJpZ2h0KXt2YXIgcz1lLnNjcm9sbFRvcCxsPWUuc2Nyb2xsTGVmdDtFLm9mZnNldD17dG9wOkUucGFnZS50b3Atby50b3Arcy1yLnRvcCxsZWZ0OkUucGFnZS5sZWZ0LW8ubGVmdCtsLXIubGVmdH19fSgpLHRoaXMubW92ZShFKSx0aGlzLmhpc3RvcnkudW5zaGlmdChFKSx0aGlzLmhpc3RvcnkubGVuZ3RoPjMmJnRoaXMuaGlzdG9yeS5wb3AoKSxlJiZfKCksITB9fX0se2tleTpcIm1vdmVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiB0aGlzLmVsZW1lbnQucGFyZW50Tm9kZSl7dmFyIG89e307Zm9yKHZhciBuIGluIHQpe29bbl09e307Zm9yKHZhciBpIGluIHRbbl0pe2Zvcih2YXIgcj0hMSxzPTA7czx0aGlzLmhpc3RvcnkubGVuZ3RoOysrcyl7dmFyIGE9dGhpcy5oaXN0b3J5W3NdO2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBhW25dJiYheShhW25dW2ldLHRbbl1baV0pKXtyPSEwO2JyZWFrfX1yfHwob1tuXVtpXT0hMCl9fXZhciBsPXt0b3A6XCJcIixsZWZ0OlwiXCIscmlnaHQ6XCJcIixib3R0b206XCJcIn0sdT1mdW5jdGlvbih0LG8pe3ZhciBuPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBlLm9wdGlvbnMub3B0aW1pemF0aW9ucyxpPW4/ZS5vcHRpb25zLm9wdGltaXphdGlvbnMuZ3B1Om51bGw7aWYoaSE9PSExKXt2YXIgcj12b2lkIDAscz12b2lkIDA7dC50b3A/KGwudG9wPTAscj1vLnRvcCk6KGwuYm90dG9tPTAscj0tby5ib3R0b20pLHQubGVmdD8obC5sZWZ0PTAscz1vLmxlZnQpOihsLnJpZ2h0PTAscz0tby5yaWdodCksbFtZXT1cInRyYW5zbGF0ZVgoXCIrTWF0aC5yb3VuZChzKStcInB4KSB0cmFuc2xhdGVZKFwiK01hdGgucm91bmQocikrXCJweClcIixcIm1zVHJhbnNmb3JtXCIhPT1ZJiYobFtZXSs9XCIgdHJhbnNsYXRlWigwKVwiKX1lbHNlIHQudG9wP2wudG9wPW8udG9wK1wicHhcIjpsLmJvdHRvbT1vLmJvdHRvbStcInB4XCIsdC5sZWZ0P2wubGVmdD1vLmxlZnQrXCJweFwiOmwucmlnaHQ9by5yaWdodCtcInB4XCJ9LGQ9ITE7aWYoKG8ucGFnZS50b3B8fG8ucGFnZS5ib3R0b20pJiYoby5wYWdlLmxlZnR8fG8ucGFnZS5yaWdodCk/KGwucG9zaXRpb249XCJhYnNvbHV0ZVwiLHUoby5wYWdlLHQucGFnZSkpOihvLnZpZXdwb3J0LnRvcHx8by52aWV3cG9ydC5ib3R0b20pJiYoby52aWV3cG9ydC5sZWZ0fHxvLnZpZXdwb3J0LnJpZ2h0KT8obC5wb3NpdGlvbj1cImZpeGVkXCIsdShvLnZpZXdwb3J0LHQudmlld3BvcnQpKTpcInVuZGVmaW5lZFwiIT10eXBlb2Ygby5vZmZzZXQmJm8ub2Zmc2V0LnRvcCYmby5vZmZzZXQubGVmdD8hZnVuY3Rpb24oKXtsLnBvc2l0aW9uPVwiYWJzb2x1dGVcIjt2YXIgbj1lLmNhY2hlKFwidGFyZ2V0LW9mZnNldHBhcmVudFwiLGZ1bmN0aW9uKCl7cmV0dXJuIGYoZS50YXJnZXQpfSk7ZihlLmVsZW1lbnQpIT09biYmTShmdW5jdGlvbigpe2UuZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUuZWxlbWVudCksbi5hcHBlbmRDaGlsZChlLmVsZW1lbnQpfSksdShvLm9mZnNldCx0Lm9mZnNldCksZD0hMH0oKToobC5wb3NpdGlvbj1cImFic29sdXRlXCIsdSh7dG9wOiEwLGxlZnQ6ITB9LHQucGFnZSkpLCFkKXtmb3IodmFyIHA9ITAsYz10aGlzLmVsZW1lbnQucGFyZW50Tm9kZTtjJiYxPT09Yy5ub2RlVHlwZSYmXCJCT0RZXCIhPT1jLnRhZ05hbWU7KXtpZihcInN0YXRpY1wiIT09Z2V0Q29tcHV0ZWRTdHlsZShjKS5wb3NpdGlvbil7cD0hMTticmVha31jPWMucGFyZW50Tm9kZX1wfHwodGhpcy5lbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KSx0aGlzLmVsZW1lbnQub3duZXJEb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCkpfXZhciBnPXt9LG09ITE7Zm9yKHZhciBpIGluIGwpe3ZhciB2PWxbaV0sYj10aGlzLmVsZW1lbnQuc3R5bGVbaV07YiE9PXYmJihtPSEwLGdbaV09dil9bSYmTShmdW5jdGlvbigpe2goZS5lbGVtZW50LnN0eWxlLGcpfSl9fX1dKSxlfShrKTtxLm1vZHVsZXM9W10seC5wb3NpdGlvbj1EO3ZhciBJPWgocSx4KSxCPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3ZhciBvPVtdLG49ITAsaT0hMSxyPXZvaWQgMDt0cnl7Zm9yKHZhciBzLGE9dFtTeW1ib2wuaXRlcmF0b3JdKCk7IShuPShzPWEubmV4dCgpKS5kb25lKSYmKG8ucHVzaChzLnZhbHVlKSwhZXx8by5sZW5ndGghPT1lKTtuPSEwKTt9Y2F0Y2goZil7aT0hMCxyPWZ9ZmluYWxseXt0cnl7IW4mJmFbXCJyZXR1cm5cIl0mJmFbXCJyZXR1cm5cIl0oKX1maW5hbGx5e2lmKGkpdGhyb3cgcn19cmV0dXJuIG99cmV0dXJuIGZ1bmN0aW9uKGUsbyl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZTtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKXJldHVybiB0KGUsbyk7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIil9fSgpLGo9eC5VdGlscyxhPWouZ2V0Qm91bmRzLGg9ai5leHRlbmQsbT1qLnVwZGF0ZUNsYXNzZXMsTT1qLmRlZmVyLCQ9W1wibGVmdFwiLFwidG9wXCIsXCJyaWdodFwiLFwiYm90dG9tXCJdO3gubW9kdWxlcy5wdXNoKHtwb3NpdGlvbjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG89dC50b3Asbj10LmxlZnQsaT10LnRhcmdldEF0dGFjaG1lbnQ7aWYoIXRoaXMub3B0aW9ucy5jb25zdHJhaW50cylyZXR1cm4hMDt2YXIgcj10aGlzLmNhY2hlKFwiZWxlbWVudC1ib3VuZHNcIixmdW5jdGlvbigpe3JldHVybiBhKGUuZWxlbWVudCl9KSxzPXIuaGVpZ2h0LGY9ci53aWR0aDtpZigwPT09ZiYmMD09PXMmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiB0aGlzLmxhc3RTaXplKXt2YXIgbD10aGlzLmxhc3RTaXplO2Y9bC53aWR0aCxzPWwuaGVpZ2h0fXZhciB1PXRoaXMuY2FjaGUoXCJ0YXJnZXQtYm91bmRzXCIsZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXRUYXJnZXRCb3VuZHMoKX0pLGQ9dS5oZWlnaHQscD11LndpZHRoLGM9W3RoaXMuZ2V0Q2xhc3MoXCJwaW5uZWRcIiksdGhpcy5nZXRDbGFzcyhcIm91dC1vZi1ib3VuZHNcIildO3RoaXMub3B0aW9ucy5jb25zdHJhaW50cy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXQub3V0T2ZCb3VuZHNDbGFzcyxvPXQucGlubmVkQ2xhc3M7ZSYmYy5wdXNoKGUpLG8mJmMucHVzaChvKX0pLGMuZm9yRWFjaChmdW5jdGlvbih0KXtbXCJsZWZ0XCIsXCJ0b3BcIixcInJpZ2h0XCIsXCJib3R0b21cIl0uZm9yRWFjaChmdW5jdGlvbihlKXtjLnB1c2godCtcIi1cIitlKX0pfSk7dmFyIGc9W10sdj1oKHt9LGkpLHk9aCh7fSx0aGlzLmF0dGFjaG1lbnQpO3JldHVybiB0aGlzLm9wdGlvbnMuY29uc3RyYWludHMuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcj10LnRvLGE9dC5hdHRhY2htZW50LGw9dC5waW47XCJ1bmRlZmluZWRcIj09dHlwZW9mIGEmJihhPVwiXCIpO3ZhciBoPXZvaWQgMCx1PXZvaWQgMDtpZihhLmluZGV4T2YoXCIgXCIpPj0wKXt2YXIgYz1hLnNwbGl0KFwiIFwiKSxtPUIoYywyKTt1PW1bMF0saD1tWzFdfWVsc2UgaD11PWE7dmFyIGI9TyhlLHIpOyhcInRhcmdldFwiPT09dXx8XCJib3RoXCI9PT11KSYmKG88YlsxXSYmXCJ0b3BcIj09PXYudG9wJiYobys9ZCx2LnRvcD1cImJvdHRvbVwiKSxvK3M+YlszXSYmXCJib3R0b21cIj09PXYudG9wJiYoby09ZCx2LnRvcD1cInRvcFwiKSksXCJ0b2dldGhlclwiPT09dSYmKFwidG9wXCI9PT12LnRvcCYmKFwiYm90dG9tXCI9PT15LnRvcCYmbzxiWzFdPyhvKz1kLHYudG9wPVwiYm90dG9tXCIsbys9cyx5LnRvcD1cInRvcFwiKTpcInRvcFwiPT09eS50b3AmJm8rcz5iWzNdJiZvLShzLWQpPj1iWzFdJiYoby09cy1kLHYudG9wPVwiYm90dG9tXCIseS50b3A9XCJib3R0b21cIikpLFwiYm90dG9tXCI9PT12LnRvcCYmKFwidG9wXCI9PT15LnRvcCYmbytzPmJbM10/KG8tPWQsdi50b3A9XCJ0b3BcIixvLT1zLHkudG9wPVwiYm90dG9tXCIpOlwiYm90dG9tXCI9PT15LnRvcCYmbzxiWzFdJiZvKygyKnMtZCk8PWJbM10mJihvKz1zLWQsdi50b3A9XCJ0b3BcIix5LnRvcD1cInRvcFwiKSksXCJtaWRkbGVcIj09PXYudG9wJiYobytzPmJbM10mJlwidG9wXCI9PT15LnRvcD8oby09cyx5LnRvcD1cImJvdHRvbVwiKTpvPGJbMV0mJlwiYm90dG9tXCI9PT15LnRvcCYmKG8rPXMseS50b3A9XCJ0b3BcIikpKSwoXCJ0YXJnZXRcIj09PWh8fFwiYm90aFwiPT09aCkmJihuPGJbMF0mJlwibGVmdFwiPT09di5sZWZ0JiYobis9cCx2LmxlZnQ9XCJyaWdodFwiKSxuK2Y+YlsyXSYmXCJyaWdodFwiPT09di5sZWZ0JiYobi09cCx2LmxlZnQ9XCJsZWZ0XCIpKSxcInRvZ2V0aGVyXCI9PT1oJiYobjxiWzBdJiZcImxlZnRcIj09PXYubGVmdD9cInJpZ2h0XCI9PT15LmxlZnQ/KG4rPXAsdi5sZWZ0PVwicmlnaHRcIixuKz1mLHkubGVmdD1cImxlZnRcIik6XCJsZWZ0XCI9PT15LmxlZnQmJihuKz1wLHYubGVmdD1cInJpZ2h0XCIsbi09Zix5LmxlZnQ9XCJyaWdodFwiKTpuK2Y+YlsyXSYmXCJyaWdodFwiPT09di5sZWZ0P1wibGVmdFwiPT09eS5sZWZ0PyhuLT1wLHYubGVmdD1cImxlZnRcIixuLT1mLHkubGVmdD1cInJpZ2h0XCIpOlwicmlnaHRcIj09PXkubGVmdCYmKG4tPXAsdi5sZWZ0PVwibGVmdFwiLG4rPWYseS5sZWZ0PVwibGVmdFwiKTpcImNlbnRlclwiPT09di5sZWZ0JiYobitmPmJbMl0mJlwibGVmdFwiPT09eS5sZWZ0PyhuLT1mLHkubGVmdD1cInJpZ2h0XCIpOm48YlswXSYmXCJyaWdodFwiPT09eS5sZWZ0JiYobis9Zix5LmxlZnQ9XCJsZWZ0XCIpKSksKFwiZWxlbWVudFwiPT09dXx8XCJib3RoXCI9PT11KSYmKG88YlsxXSYmXCJib3R0b21cIj09PXkudG9wJiYobys9cyx5LnRvcD1cInRvcFwiKSxvK3M+YlszXSYmXCJ0b3BcIj09PXkudG9wJiYoby09cyx5LnRvcD1cImJvdHRvbVwiKSksKFwiZWxlbWVudFwiPT09aHx8XCJib3RoXCI9PT1oKSYmKG48YlswXSYmKFwicmlnaHRcIj09PXkubGVmdD8obis9Zix5LmxlZnQ9XCJsZWZ0XCIpOlwiY2VudGVyXCI9PT15LmxlZnQmJihuKz1mLzIseS5sZWZ0PVwibGVmdFwiKSksbitmPmJbMl0mJihcImxlZnRcIj09PXkubGVmdD8obi09Zix5LmxlZnQ9XCJyaWdodFwiKTpcImNlbnRlclwiPT09eS5sZWZ0JiYobi09Zi8yLHkubGVmdD1cInJpZ2h0XCIpKSksXCJzdHJpbmdcIj09dHlwZW9mIGw/bD1sLnNwbGl0KFwiLFwiKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQudHJpbSgpfSk6bD09PSEwJiYobD1bXCJ0b3BcIixcImxlZnRcIixcInJpZ2h0XCIsXCJib3R0b21cIl0pLGw9bHx8W107dmFyIHc9W10sQz1bXTtvPGJbMV0mJihsLmluZGV4T2YoXCJ0b3BcIik+PTA/KG89YlsxXSx3LnB1c2goXCJ0b3BcIikpOkMucHVzaChcInRvcFwiKSksbytzPmJbM10mJihsLmluZGV4T2YoXCJib3R0b21cIik+PTA/KG89YlszXS1zLHcucHVzaChcImJvdHRvbVwiKSk6Qy5wdXNoKFwiYm90dG9tXCIpKSxuPGJbMF0mJihsLmluZGV4T2YoXCJsZWZ0XCIpPj0wPyhuPWJbMF0sdy5wdXNoKFwibGVmdFwiKSk6Qy5wdXNoKFwibGVmdFwiKSksbitmPmJbMl0mJihsLmluZGV4T2YoXCJyaWdodFwiKT49MD8obj1iWzJdLWYsdy5wdXNoKFwicmlnaHRcIikpOkMucHVzaChcInJpZ2h0XCIpKSx3Lmxlbmd0aCYmIWZ1bmN0aW9uKCl7dmFyIHQ9dm9pZCAwO3Q9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGUub3B0aW9ucy5waW5uZWRDbGFzcz9lLm9wdGlvbnMucGlubmVkQ2xhc3M6ZS5nZXRDbGFzcyhcInBpbm5lZFwiKSxnLnB1c2godCksdy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2cucHVzaCh0K1wiLVwiK2UpfSl9KCksQy5sZW5ndGgmJiFmdW5jdGlvbigpe3ZhciB0PXZvaWQgMDt0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiBlLm9wdGlvbnMub3V0T2ZCb3VuZHNDbGFzcz9lLm9wdGlvbnMub3V0T2ZCb3VuZHNDbGFzczplLmdldENsYXNzKFwib3V0LW9mLWJvdW5kc1wiKSxnLnB1c2godCksQy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2cucHVzaCh0K1wiLVwiK2UpfSl9KCksKHcuaW5kZXhPZihcImxlZnRcIik+PTB8fHcuaW5kZXhPZihcInJpZ2h0XCIpPj0wKSYmKHkubGVmdD12LmxlZnQ9ITEpLCh3LmluZGV4T2YoXCJ0b3BcIik+PTB8fHcuaW5kZXhPZihcImJvdHRvbVwiKT49MCkmJih5LnRvcD12LnRvcD0hMSksKHYudG9wIT09aS50b3B8fHYubGVmdCE9PWkubGVmdHx8eS50b3AhPT1lLmF0dGFjaG1lbnQudG9wfHx5LmxlZnQhPT1lLmF0dGFjaG1lbnQubGVmdCkmJihlLnVwZGF0ZUF0dGFjaENsYXNzZXMoeSx2KSxlLnRyaWdnZXIoXCJ1cGRhdGVcIix7YXR0YWNobWVudDp5LHRhcmdldEF0dGFjaG1lbnQ6dn0pKX0pLE0oZnVuY3Rpb24oKXtlLm9wdGlvbnMuYWRkVGFyZ2V0Q2xhc3NlcyE9PSExJiZtKGUudGFyZ2V0LGcsYyksbShlLmVsZW1lbnQsZyxjKX0pLHt0b3A6byxsZWZ0Om59fX0pO3ZhciBqPXguVXRpbHMsYT1qLmdldEJvdW5kcyxtPWoudXBkYXRlQ2xhc3NlcyxNPWouZGVmZXI7eC5tb2R1bGVzLnB1c2goe3Bvc2l0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbz10LnRvcCxuPXQubGVmdCxpPXRoaXMuY2FjaGUoXCJlbGVtZW50LWJvdW5kc1wiLGZ1bmN0aW9uKCl7cmV0dXJuIGEoZS5lbGVtZW50KX0pLHI9aS5oZWlnaHQscz1pLndpZHRoLGY9dGhpcy5nZXRUYXJnZXRCb3VuZHMoKSxsPW8rcixoPW4rcyx1PVtdO288PWYuYm90dG9tJiZsPj1mLnRvcCYmW1wibGVmdFwiLFwicmlnaHRcIl0uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1mW3RdOyhlPT09bnx8ZT09PWgpJiZ1LnB1c2godCl9KSxuPD1mLnJpZ2h0JiZoPj1mLmxlZnQmJltcInRvcFwiLFwiYm90dG9tXCJdLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9Zlt0XTsoZT09PW98fGU9PT1sKSYmdS5wdXNoKHQpfSk7dmFyIGQ9W10scD1bXSxjPVtcImxlZnRcIixcInRvcFwiLFwicmlnaHRcIixcImJvdHRvbVwiXTtyZXR1cm4gZC5wdXNoKHRoaXMuZ2V0Q2xhc3MoXCJhYnV0dGVkXCIpKSxjLmZvckVhY2goZnVuY3Rpb24odCl7ZC5wdXNoKGUuZ2V0Q2xhc3MoXCJhYnV0dGVkXCIpK1wiLVwiK3QpfSksdS5sZW5ndGgmJnAucHVzaCh0aGlzLmdldENsYXNzKFwiYWJ1dHRlZFwiKSksdS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3AucHVzaChlLmdldENsYXNzKFwiYWJ1dHRlZFwiKStcIi1cIit0KX0pLE0oZnVuY3Rpb24oKXtlLm9wdGlvbnMuYWRkVGFyZ2V0Q2xhc3NlcyE9PSExJiZtKGUudGFyZ2V0LHAsZCksbShlLmVsZW1lbnQscCxkKX0pLCEwfX0pO3ZhciBCPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3ZhciBvPVtdLG49ITAsaT0hMSxyPXZvaWQgMDt0cnl7Zm9yKHZhciBzLGE9dFtTeW1ib2wuaXRlcmF0b3JdKCk7IShuPShzPWEubmV4dCgpKS5kb25lKSYmKG8ucHVzaChzLnZhbHVlKSwhZXx8by5sZW5ndGghPT1lKTtuPSEwKTt9Y2F0Y2goZil7aT0hMCxyPWZ9ZmluYWxseXt0cnl7IW4mJmFbXCJyZXR1cm5cIl0mJmFbXCJyZXR1cm5cIl0oKX1maW5hbGx5e2lmKGkpdGhyb3cgcn19cmV0dXJuIG99cmV0dXJuIGZ1bmN0aW9uKGUsbyl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZTtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKXJldHVybiB0KGUsbyk7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIil9fSgpO3JldHVybiB4Lm1vZHVsZXMucHVzaCh7cG9zaXRpb246ZnVuY3Rpb24odCl7dmFyIGU9dC50b3Asbz10LmxlZnQ7aWYodGhpcy5vcHRpb25zLnNoaWZ0KXt2YXIgbj10aGlzLm9wdGlvbnMuc2hpZnQ7XCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcy5vcHRpb25zLnNoaWZ0JiYobj10aGlzLm9wdGlvbnMuc2hpZnQuY2FsbCh0aGlzLHt0b3A6ZSxsZWZ0Om99KSk7dmFyIGk9dm9pZCAwLHI9dm9pZCAwO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBuKXtuPW4uc3BsaXQoXCIgXCIpLG5bMV09blsxXXx8blswXTt2YXIgcz1uLGE9QihzLDIpO2k9YVswXSxyPWFbMV0saT1wYXJzZUZsb2F0KGksMTApLHI9cGFyc2VGbG9hdChyLDEwKX1lbHNlIGk9bi50b3Ascj1uLmxlZnQ7cmV0dXJuIGUrPWksbys9cix7dG9wOmUsbGVmdDpvfX19fSksSX0pOyIsImRlZmluZShmdW5jdGlvbigpIHtcblxuICAgIHJldHVybiB7XG5cbiAgICAgICAgaW5pdCgpIHtcbiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdzaG93LmJzLm1vZGFsJywgJy5qcy1hamF4LW1vZGFsJywgdGhpcy5pbml0TW9kYWxzKTtcbiAgICAgICAgfSxcblxuXG4gICAgICAgIGluaXRNb2RhbHMoZSkge1xuICAgICAgICAgICAgdmFyICRtb2RhbCA9ICQodGhpcyk7XG5cblxuICAgICAgICAgICAgaWYgKCEkbW9kYWwuZGF0YSgnbG9hZGVkJykpIHtcbiAgICAgICAgICAgICAgICB2YXIgJGJ0biA9ICQoZS5yZWxhdGVkVGFyZ2V0KSxcbiAgICAgICAgICAgICAgICAgICAgbGluayA9ICRidG4uZGF0YSgnbGluaycpO1xuXG4gICAgICAgICAgICAgICAgJG1vZGFsLmRhdGEoJ2xvYWRlZCcsIHRydWUpO1xuICAgICAgICAgICAgICAgICRtb2RhbC5maW5kKCcuanMtYWpheC1tb2RhbC1ib2R5JykuYXBwZW5kKCc8aWZyYW1lIGNsYXNzPVwiYWpheC1tb2RhbF9fYm9keV9faWZyYW1lXCIgZnJhbWVib3JkZXI9XCIwXCIgc3JjPVwiJyArIGxpbmsgKyAnXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIHNjcm9sbGluZz1cImF1dG9cIj48L2lmcmFtZT4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuXG4gICAgICAgIHJlc2V0QWpheE1vZGFscygpIHtcbiAgICAgICAgICAgICQoJy5qcy1hamF4LW1vZGFsJykub2ZmKCdzaG93LmJzLm1vZGFsJywgdGhpcy5pbml0TW9kYWxzKTtcbiAgICAgICAgICAgICQoJy5qcy1hamF4LW1vZGFsJykub24oJ3Nob3cuYnMubW9kYWwnLCB0aGlzLmluaXRNb2RhbHMpO1xuICAgICAgICB9LFxuICAgIH1cbn0pO1xuIiwiZGVmaW5lKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgdmFyIGEgPSB0aGlzLmdlbmVyYWw7XG4gICAgICAgIGEuZGVib3VuY2UgPSBmdW5jdGlvbiAobiwgYSwgZSkge1xuICAgICAgICAgICAgdmFyIHQ7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciByID0gdGhpcywgdSA9IGFyZ3VtZW50cywgaSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdCA9IG51bGwsIGUgfHwgbi5hcHBseShyLCB1KVxuICAgICAgICAgICAgICAgIH0sIG8gPSBlICYmICF0O1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0KSwgdCA9IHNldFRpbWVvdXQoaSwgYSksIG8gJiYgbi5hcHBseShyLCB1KVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCBhLmVhc2VJbk91dFF1YWQgPSBmdW5jdGlvbiAobiwgYSwgZSwgdCkge1xuICAgICAgICAgICAgcmV0dXJuIG4gLz0gdCAvIDIsIDEgPiBuID8gZSAvIDIgKiBuICogbiArIGEgOiAobi0tLCAtZSAvIDIgKiAobiAqIChuIC0gMikgLSAxKSArIGEpXG4gICAgICAgIH0sIGEuYW5pbWF0ZSA9IGZ1bmN0aW9uIChuLCBhLCBlLCB0LCByLCB1KSB7XG4gICAgICAgICAgICBuICYmICh3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBuLnN0eWxlW2FdID0gclxuICAgICAgICAgICAgfSwgdSksIG4uc3R5bGVbYV0gPSB0KVxuICAgICAgICB9XG4gICAgfVxufSk7IiwiZGVmaW5lKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgdmFyIGEsIG8sIG4sIGMsIGksIGwsIHIgPSAxNTAsIHUgPSAwLCBzID0gXCJqcy10b2dnbGUtYnRuXCIsIGcgPSBcInRvZ2dsZS1idG4tLWFjdGl2ZVwiLCBkID0gXCJ0b2dnbGUtaXRlbS0tYWN0aXZlXCIsXG4gICAgICAgICAgICBmID0gXCJ0b2dnbGUtaXRlbV9fY29udGVudFwiO1xuICAgICAgICBvID0gZnVuY3Rpb24gKHQsIGUsIGEpIHtcbiAgICAgICAgICAgIGZvciAodmFyIG8gPSBlLnNwbGl0KFwiIFwiKSwgbiA9IDAsIGMgPSBvLmxlbmd0aDsgYyA+IG47IG4rKykgdC5hZGRFdmVudExpc3RlbmVyKG9bbl0sIGEsICExKVxuICAgICAgICB9LCBuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgW10uZm9yRWFjaC5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuXCIgKyBzKSwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICBvKHQsIFwiY2xpY2sgdG91Y2hzdGFydCBtb3VzZWRvd25cIiwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgfSksIG8odCwgXCJ0b3VjaGVuZCBtb3VzZXVwXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh0LmdldEF0dHJpYnV0ZShcImRhdGEtdGFyZ2V0XCIpKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBhLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuXCIgKyBmKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBvLm9mZnNldEhlaWdodCwgdiA9IGEuY2xhc3NMaXN0LmNvbnRhaW5zKGQpLCBiID0gdC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWhpZGUtb3RoZXJzXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodSA9IG51bGwgIT09IHQuZ2V0QXR0cmlidXRlKFwiZGF0YS1kdXJhdGlvblwiKSA/IHQuZ2V0QXR0cmlidXRlKFwiZGF0YS1kdXJhdGlvblwiKSA6IHIsIHYpIGkodCwgYSk7IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IHQuZ2V0QXR0cmlidXRlKFwiZGF0YS10YXJnZXRcIiksIG0gPSB0LmdldEF0dHJpYnV0ZShcImRhdGEtbGV2ZWxcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW10uZm9yRWFjaC5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuXCIgKyBzICsgJ1tkYXRhLWxldmVsPVwiJyArIG0gKyAnXCJdJyksIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXRhcmdldFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCAhPT0gZSAmJiB0LmNsYXNzTGlzdC5jb250YWlucyhnKSAmJiBsKHQsIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZSlbMF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGModCwgYSwgbywgbilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICB9LCBjID0gZnVuY3Rpb24gKHQsIGUsIGEsIG8pIHtcbiAgICAgICAgICAgIGNhcmdvYmF5LmdlbmVyYWwuYW5pbWF0ZShlLCBcImhlaWdodFwiLCBcInB4XCIsIG8sIFwiYXV0b1wiLCB1KSwgdC5jbGFzc0xpc3QuYWRkKGcpLCBlLmNsYXNzTGlzdC5hZGQoZClcbiAgICAgICAgfSwgaSA9IGZ1bmN0aW9uICh0LCBlLCBhLCBvKSB7XG4gICAgICAgICAgICBjYXJnb2JheS5nZW5lcmFsLmFuaW1hdGUoZSwgXCJoZWlnaHRcIiwgXCJweFwiLCAwLCBvLCB1KSwgdC5jbGFzc0xpc3QucmVtb3ZlKGcpLCBlLmNsYXNzTGlzdC5yZW1vdmUoZClcbiAgICAgICAgfSwgbCA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICB0LmNsYXNzTGlzdC5yZW1vdmUoZyksIGUuc3R5bGUuaGVpZ2h0ID0gMCwgZS5jbGFzc0xpc3QucmVtb3ZlKGQpXG4gICAgICAgIH0sIGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBuKClcbiAgICAgICAgfSgpXG4gICAgfVxufSk7IiwiZGVmaW5lKGZ1bmN0aW9uKCkge1xuXG4gICAgcmV0dXJuIHtcblxuICAgICAgICBpbml0KCkge1xuICAgICAgICAgICAgdGhpcy51cmxDaG9vc2VyKCk7XG4gICAgICAgICAgICB0aGlzLmluaXREZWxCdG4oKTtcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBEZWwgYnRuXG4gICAgICAgIGluaXREZWxCdG4oKSB7XG4gICAgICAgICAgICAkKCdib2R5Jykub24oJ2NsaWNrJywgJy5qcy1tZWRpYS1jaG9vc2VyLWRlbC1wcmV2aWV3LWJ0bicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua2VkSUQgPSAkdGhpcy5kYXRhKCdsaW5rZWQtaWQnKSxcbiAgICAgICAgICAgICAgICAgICAgJHdpZGdldCA9ICQoJyMnICsgbGlua2VkSUQgKyAnLXdpZGdldCcpLFxuICAgICAgICAgICAgICAgICAgICAkaW5wdXQgPSAkKCcjJyArIGxpbmtlZElEKTtcblxuICAgICAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLmZpbmQoJy5tZWRpYS1jaG9vc2VyX19wcmV2aWV3JykucmVtb3ZlKCk7XG5cbiAgICAgICAgICAgICAgICAkKFwiLm1lZGlhLXRodW1ibmFpbF9faWNvblwiKS5yZW1vdmUoKTtcblxuICAgICAgICAgICAgICAgICR3aWRnZXQucmVtb3ZlQ2xhc3MoJ21lZGlhLWNob29zZXItLWNob29zZW4nKTtcbiAgICAgICAgICAgICAgICAkaW5wdXQudmFsKCcnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vIFVSTC1DaG9vc2VyXG4gICAgICAgIHVybENob29zZXIoKSB7XG5cbiAgICAgICAgICAgIC8vIExpbmsgQ2hvb3NlciBzZWxlY3RcbiAgICAgICAgICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnLmpzLXVybC1jaG9vc2VyLWxpbmstc2VsZWN0JywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpLFxuICAgICAgICAgICAgICAgICAgICBzbHVnID0gJHRoaXMuZGF0YSgnc2x1ZycpLFxuICAgICAgICAgICAgICAgICAgICBpZCA9ICR0aGlzLmRhdGEoJ2lkJyksXG4gICAgICAgICAgICAgICAgICAgIHJlcGxhY2VVcmwgPSAkdGhpcy5jbG9zZXN0KCduYXYnKS5kYXRhKCdyZXBsYWNlLXVybCcpO1xuXG4gICAgICAgICAgICAgICAgLy8gU3RvcmUgdmFsdWVzXG4gICAgICAgICAgICAgICAgaXRlbVVybCA9IChzbHVnID8gc2x1ZyA6ICcnKTtcbiAgICAgICAgICAgICAgICBpdGVtSWQgPSBpZDtcblxuICAgICAgICAgICAgICAgIC8vIFJlcGxhY2UgVVJMXG4gICAgICAgICAgICAgICAgJC5hamF4KHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiByZXBsYWNlVXJsLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnR0VUJyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogeyd0ZXh0JzogaXRlbVVybH0sXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWRVcmwgPSByZXNwb25zZS50ZXh0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgcHJldmlld1xuICAgICAgICAgICAgICAgICAgICAgICAgJCgnI3VybC1jaG9vc2VyX19zZWxlY3Rpb24tcHJldmlldycpLnRleHQoJ1NlbGVjdGlvbjogJyArIHJlcGxhY2VkVXJsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIE1lZGlhIENob29zZXIgc2VsZWN0XG4gICAgICAgICAgICAkKCdib2R5Jykub24oJ2NsaWNrJywgJy5qcy11cmwtY2hvb3Nlci1tZWRpYS1zZWxlY3QnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyksXG4gICAgICAgICAgICAgICAgICAgIHBhdGggPSAkdGhpcy5kYXRhKCdwYXRoJyksXG4gICAgICAgICAgICAgICAgICAgIHRodW1iUGF0aCA9ICR0aGlzLmRhdGEoJ3RodW1iLXBhdGgnKSxcbiAgICAgICAgICAgICAgICAgICAgaWQgPSAkdGhpcy5kYXRhKCdpZCcpLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZSA9ICR0aGlzLmRhdGEoJ3RpdGxlJyksXG4gICAgICAgICAgICAgICAgICAgIGNrZSA9ICR0aGlzLmRhdGEoJ2NrZScpLFxuICAgICAgICAgICAgICAgICAgICByZXBsYWNlVXJsID0gJHRoaXMuY2xvc2VzdCgnLnRodW1ibmFpbC13cmFwcGVyJykuZGF0YSgncmVwbGFjZS11cmwnKTtcblxuICAgICAgICAgICAgICAgIC8vIFN0b3JlIHZhbHVlc1xuICAgICAgICAgICAgICAgIGl0ZW1VcmwgPSBwYXRoO1xuICAgICAgICAgICAgICAgIGl0ZW1JZCA9IGlkO1xuICAgICAgICAgICAgICAgIGl0ZW1UaXRsZSA9IHRpdGxlO1xuICAgICAgICAgICAgICAgIGl0ZW1UaHVtYlBhdGggPSB0aHVtYlBhdGg7XG5cbiAgICAgICAgICAgICAgICAvLyBTYXZlXG4gICAgICAgICAgICAgICAgaWYgKCFja2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlzTWVkaWFDaG9vc2VyID0gJCh3aW5kb3cuZnJhbWVFbGVtZW50KS5jbG9zZXN0KCcuanMtYWpheC1tb2RhbCcpLmRhdGEoJ21lZGlhLWNob29zZXInKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNNZWRpYUNob29zZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBzYy5tZWRpYUNob29zZXIuc2F2ZU1lZGlhQ2hvb3Nlck1vZGFsKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlcGxhY2UgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAkLmFqYXgoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogcmVwbGFjZVVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnR0VUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7J3RleHQnOiBpdGVtVXJsfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWRVcmwgPSByZXNwb25zZS50ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLmRvbmUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzYy5tZWRpYUNob29zZXIuc2F2ZVVybENob29zZXJNb2RhbChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcHNjLm1lZGlhQ2hvb3Nlci5zYXZlTWVkaWFDaG9vc2VyTW9kYWwodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cblxuICAgICAgICAgICAgLy8gQ2FuY2VsXG4gICAgICAgICAgICAkKCcjY2FuY2VsLXVybC1jaG9vc2VyLW1vZGFsJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBja2UgPSAkKHRoaXMpLmRhdGEoJ2NrZScpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFja2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRwYXJlbnRNb2RhbCA9ICQod2luZG93LmZyYW1lRWxlbWVudCkuY2xvc2VzdCgnLmpzLWFqYXgtbW9kYWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudE1vZGFsSWQgPSAkcGFyZW50TW9kYWwuYXR0cignaWQnKTtcblxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQuJCgnIycgKyBwYXJlbnRNb2RhbElkKS5tb2RhbCgnaGlkZScpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cblxuICAgICAgICAgICAgLy8gT0tcbiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcjc2F2ZS11cmwtY2hvb3Nlci1tb2RhbCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2tlID0gJCh0aGlzKS5kYXRhKCdja2UnKTtcblxuICAgICAgICAgICAgICAgIHBzYy5tZWRpYUNob29zZXIuc2F2ZVVybENob29zZXJNb2RhbChja2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gU2F2ZSBmb3IgVVJMLWNob29zZXJcbiAgICAgICAgc2F2ZVVybENob29zZXJNb2RhbChja2UpIHtcbiAgICAgICAgICAgIGlmICghY2tlKSB7XG4gICAgICAgICAgICAgICAgdmFyICRwYXJlbnRNb2RhbCA9ICQod2luZG93LmZyYW1lRWxlbWVudCkuY2xvc2VzdCgnLmpzLWFqYXgtbW9kYWwnKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua2VkSW5wdXRJZCA9ICRwYXJlbnRNb2RhbC5kYXRhKCdsaW5rZWQtaW5wdXQtaWQnKSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50TW9kYWxJZCA9ICRwYXJlbnRNb2RhbC5hdHRyKCdpZCcpO1xuXG4gICAgICAgICAgICAgICAgLy8gU2V0IHZhbFxuICAgICAgICAgICAgICAgIHBhcmVudC4kKCcjJyArIGxpbmtlZElucHV0SWQpLnZhbChpdGVtVXJsKS5jaGFuZ2UoKTtcblxuICAgICAgICAgICAgICAgIC8vIFNldCBwcm9wZXIgVVJMXG4gICAgICAgICAgICAgICAgcGFyZW50LiQoJyMnICsgbGlua2VkSW5wdXRJZCkucGFyZW50KCkuZmluZCgnLmpzLXVybGNob29zZXItdmFsdWUnKS52YWwocmVwbGFjZWRVcmwpO1xuXG4gICAgICAgICAgICAgICAgLy8gQ2xvc2UgbW9kYWxcbiAgICAgICAgICAgICAgICBwYXJlbnQuJCgnIycgKyBwYXJlbnRNb2RhbElkKS5tb2RhbCgnaGlkZScpO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBmdW5jTnVtID0gZ2V0VXJsUGFyYW0oJ0NLRWRpdG9yRnVuY051bScpO1xuXG4gICAgICAgICAgICAgICAgLy8gU2V0IHZhbFxuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuZXIuQ0tFRElUT1IudG9vbHMuY2FsbEZ1bmN0aW9uKGZ1bmNOdW0sIGl0ZW1VcmwpO1xuXG4gICAgICAgICAgICAgICAgLy8gQ2xvc2Ugd2luZG93XG4gICAgICAgICAgICAgICAgd2luZG93LmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cblxuICAgICAgICAvLyBTYXZlIGZvciBNZWRpYS1jaG9vc2VyXG4gICAgICAgIHNhdmVNZWRpYUNob29zZXJNb2RhbChja2UpIHtcbiAgICAgICAgICAgIGlmICghY2tlKSB7XG4gICAgICAgICAgICAgICAgdmFyICRwYXJlbnRNb2RhbCA9ICQod2luZG93LmZyYW1lRWxlbWVudCkuY2xvc2VzdCgnLmpzLWFqYXgtbW9kYWwnKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua2VkSW5wdXRJZCA9ICRwYXJlbnRNb2RhbC5kYXRhKCdsaW5rZWQtaW5wdXQtaWQnKSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50TW9kYWxJZCA9ICRwYXJlbnRNb2RhbC5hdHRyKCdpZCcpO1xuXG4gICAgICAgICAgICAgICAgLy8gU2V0IHZhbFxuICAgICAgICAgICAgICAgIHBhcmVudC4kKCcjJyArIGxpbmtlZElucHV0SWQpLnZhbChpdGVtSWQpLmNoYW5nZSgpO1xuXG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIHByZXZpZXdcbiAgICAgICAgICAgICAgICB2YXIgJG1lZGlhQ2hvb3NlciA9IHBhcmVudC4kKCcjJyArIGxpbmtlZElucHV0SWQgKyAnLXdpZGdldCcpLFxuICAgICAgICAgICAgICAgICAgICAkcHJldmlld0ltZyA9IHBhcmVudC4kKCcjJyArIGxpbmtlZElucHV0SWQgKyAnX19wcmV2aWV3X19pbWcnKSxcbiAgICAgICAgICAgICAgICAgICAgJHByZXZpZXdUaXRsZSA9IHBhcmVudC4kKCcjJyArIGxpbmtlZElucHV0SWQgKyAnX19wcmV2aWV3X190aXRsZScpO1xuXG4gICAgICAgICAgICAgICAgJG1lZGlhQ2hvb3Nlci5hZGRDbGFzcygnbWVkaWEtY2hvb3Nlci0tY2hvb3NlbicpO1xuICAgICAgICAgICAgICAgICRwcmV2aWV3VGl0bGUuaHRtbChpdGVtVGl0bGUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1UaHVtYlBhdGggPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRwYXJlbnQgPSAkcHJldmlld1RpdGxlLnBhcmVudCgpO1xuICAgICAgICAgICAgICAgICAgICAkcGFyZW50LnByZXBlbmQoJzxpIGNsYXNzPVwiZmEgZmEtZmlsZS1vIG1lZGlhLXRodW1ibmFpbF9faWNvblwiPjwvaT4nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAkcHJldmlld0ltZy5hdHRyKCdzcmMnLCBpdGVtVGh1bWJQYXRoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBDbG9zZSBtb2RhbFxuICAgICAgICAgICAgICAgIHBhcmVudC4kKCcjJyArIHBhcmVudE1vZGFsSWQpLm1vZGFsKCdoaWRlJyk7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIGZ1bmNOdW0gPSBnZXRVcmxQYXJhbSgnQ0tFZGl0b3JGdW5jTnVtJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBTZXQgdmFsXG4gICAgICAgICAgICAgICAgd2luZG93Lm9wZW5lci5DS0VESVRPUi50b29scy5jYWxsRnVuY3Rpb24oZnVuY051bSwgaXRlbVVybCk7XG5cbiAgICAgICAgICAgICAgICAvLyBDbG9zZSB3aW5kb3dcbiAgICAgICAgICAgICAgICB3aW5kb3cuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuXG4gICAgICAgIC8vIEdldCBVcmwgUGFyYW1ldGVyc1xuICAgICAgICBnZXRVcmxQYXJhbShwYXJhbU5hbWUpIHtcbiAgICAgICAgICAgIHZhciByZVBhcmFtID0gbmV3IFJlZ0V4cCgnKD86W1xcPyZdfCZhbXA7KScgKyBwYXJhbU5hbWUgKyAnPShbXiZdKyknLCAnaScpLFxuICAgICAgICAgICAgICAgIG1hdGNoID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5tYXRjaChyZVBhcmFtKTtcblxuICAgICAgICAgICAgcmV0dXJuIChtYXRjaCAmJiBtYXRjaC5sZW5ndGggPiAxKSA/IG1hdGNoWzFdIDogJyc7XG4gICAgICAgIH1cblxuICAgIH1cbn0pO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQge307IiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQge307Il0sIm5hbWVzIjpbIkJzNVV0aWxzIiwic3RhcnRTdGltdWx1c0FwcCIsImFwcCIsImdsb2JhbCIsIiQiLCJqUXVlcnkiLCJ3aW5kb3ciLCJyZXF1aXJlIiwiYm9vdHN0cmFwIiwiYnM1VXRpbHMiLCJSYXBoYWVsIiwiYWNlIiwiRHJvcHpvbmUiLCJjYXJnb2JheSIsImdlbmVyYWwiLCJ0b2dnbGUiLCJwc2MiLCJhamF4TW9kYWwiLCJtZWRpYUNob29zZXIiLCJvcmRlciIsInByb2R1Y3QiLCJpbml0IiwiZGVmaW5lIiwiYm9vdHN0cmFwQXBwIiwiY2xpY2siLCJlbCIsIlRvYXN0Iiwic2hvdyIsInR5cGUiLCJpY29uIiwidGl0bGUiLCJodG1sIiwiY29udGVudCIsImRhdGEiLCJidXR0b25zIiwidGV4dCIsImhhbmRsZXIiLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJkZWxheSIsImRpc21pc3NpYmxlIiwiY29uc29sZSIsImxvZyIsIm9uIiwiZSIsInRhcmdldCIsInBhcmVudCIsImF0dHIiLCJsb2NhbFN0b3JhZ2UiLCJzZXRJdGVtIiwibGFzdFRhYiIsImdldEl0ZW0iLCJ0YWIiLCJsYXN0VGFiRG9jIiwiZmluZCIsImNoYW5nZSIsImdldEpTT04iLCJtdWx0aXNlbGVjdCIsInN1Ym1pdEFsbExlZnQiLCJzdWJtaXRBbGxSaWdodCIsInNlYXJjaCIsImxlZnQiLCJyaWdodCIsImZpcmVTZWFyY2giLCJ2YWx1ZSIsImxlbmd0aCIsInN1bW1lcm5vdGUiLCJoZWlnaHQiLCJ0b29sYmFyIiwiRW1pdHRlciIsImNhbWVsaXplIiwiY29udGVudExvYWRlZCIsImRldGVjdFZlcnRpY2FsU3F1YXNoIiwiZHJhd0ltYWdlSU9TRml4Iiwibm9vcCIsIndpdGhvdXQiLCJfX3NsaWNlIiwic2xpY2UiLCJfX2hhc1Byb3AiLCJoYXNPd25Qcm9wZXJ0eSIsIl9fZXh0ZW5kcyIsImNoaWxkIiwia2V5IiwiY2FsbCIsImN0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9fc3VwZXJfXyIsImFkZEV2ZW50TGlzdGVuZXIiLCJldmVudCIsImZuIiwiX2NhbGxiYWNrcyIsInB1c2giLCJlbWl0IiwiYXJncyIsImNhbGxiYWNrIiwiY2FsbGJhY2tzIiwiX2kiLCJfbGVuIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJyZW1vdmVMaXN0ZW5lciIsIm9mZiIsInJlbW92ZUFsbExpc3RlbmVycyIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJpIiwic3BsaWNlIiwiX3N1cGVyIiwiZXh0ZW5kIiwicmVzb2x2ZU9wdGlvbiIsImV2ZW50cyIsImRlZmF1bHRPcHRpb25zIiwidXJsIiwibWV0aG9kIiwid2l0aENyZWRlbnRpYWxzIiwicGFyYWxsZWxVcGxvYWRzIiwidXBsb2FkTXVsdGlwbGUiLCJtYXhGaWxlc2l6ZSIsInBhcmFtTmFtZSIsImNyZWF0ZUltYWdlVGh1bWJuYWlscyIsIm1heFRodW1ibmFpbEZpbGVzaXplIiwidGh1bWJuYWlsV2lkdGgiLCJ0aHVtYm5haWxIZWlnaHQiLCJmaWxlc2l6ZUJhc2UiLCJtYXhGaWxlcyIsInBhcmFtcyIsImNsaWNrYWJsZSIsImlnbm9yZUhpZGRlbkZpbGVzIiwiYWNjZXB0ZWRGaWxlcyIsImFjY2VwdGVkTWltZVR5cGVzIiwiYXV0b1Byb2Nlc3NRdWV1ZSIsImF1dG9RdWV1ZSIsImFkZFJlbW92ZUxpbmtzIiwicHJldmlld3NDb250YWluZXIiLCJoaWRkZW5JbnB1dENvbnRhaW5lciIsImNhcHR1cmUiLCJkaWN0RGVmYXVsdE1lc3NhZ2UiLCJkaWN0RmFsbGJhY2tNZXNzYWdlIiwiZGljdEZhbGxiYWNrVGV4dCIsImRpY3RGaWxlVG9vQmlnIiwiZGljdEludmFsaWRGaWxlVHlwZSIsImRpY3RSZXNwb25zZUVycm9yIiwiZGljdENhbmNlbFVwbG9hZCIsImRpY3RDYW5jZWxVcGxvYWRDb25maXJtYXRpb24iLCJkaWN0UmVtb3ZlRmlsZSIsImRpY3RSZW1vdmVGaWxlQ29uZmlybWF0aW9uIiwiZGljdE1heEZpbGVzRXhjZWVkZWQiLCJhY2NlcHQiLCJmaWxlIiwiZG9uZSIsImZvcmNlRmFsbGJhY2siLCJmYWxsYmFjayIsIm1lc3NhZ2VFbGVtZW50Iiwic3BhbiIsIl9yZWYiLCJlbGVtZW50IiwiY2xhc3NOYW1lIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJ0ZXN0IiwiY3JlYXRlRWxlbWVudCIsImFwcGVuZENoaWxkIiwidGV4dENvbnRlbnQiLCJvcHRpb25zIiwiaW5uZXJUZXh0IiwiZ2V0RmFsbGJhY2tGb3JtIiwicmVzaXplIiwiaW5mbyIsInNyY1JhdGlvIiwidHJnUmF0aW8iLCJzcmNYIiwic3JjWSIsInNyY1dpZHRoIiwid2lkdGgiLCJzcmNIZWlnaHQiLCJvcHRXaWR0aCIsIm9wdEhlaWdodCIsInRyZ0hlaWdodCIsInRyZ1dpZHRoIiwiZHJvcCIsImNsYXNzTGlzdCIsInJlbW92ZSIsImRyYWdzdGFydCIsImRyYWdlbmQiLCJkcmFnZW50ZXIiLCJhZGQiLCJkcmFnb3ZlciIsImRyYWdsZWF2ZSIsInBhc3RlIiwicmVzZXQiLCJhZGRlZGZpbGUiLCJub2RlIiwicmVtb3ZlRmlsZUV2ZW50IiwicmVtb3ZlTGluayIsIl9qIiwiX2siLCJfbGVuMSIsIl9sZW4yIiwiX3JlZjEiLCJfcmVmMiIsIl9yZXN1bHRzIiwicHJldmlld0VsZW1lbnQiLCJwcmV2aWV3VGVtcGxhdGUiLCJ0cmltIiwicXVlcnlTZWxlY3RvckFsbCIsIm5hbWUiLCJpbm5lckhUTUwiLCJmaWxlc2l6ZSIsInNpemUiLCJfcmVtb3ZlTGluayIsIl90aGlzIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJzdGF0dXMiLCJVUExPQURJTkciLCJjb25maXJtIiwicmVtb3ZlRmlsZSIsInJlbW92ZWRmaWxlIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwiX3VwZGF0ZU1heEZpbGVzUmVhY2hlZENsYXNzIiwidGh1bWJuYWlsIiwiZGF0YVVybCIsInRodW1ibmFpbEVsZW1lbnQiLCJhbHQiLCJzcmMiLCJzZXRUaW1lb3V0IiwiZXJyb3IiLCJtZXNzYWdlIiwiZXJyb3JtdWx0aXBsZSIsInByb2Nlc3NpbmciLCJwcm9jZXNzaW5nbXVsdGlwbGUiLCJ1cGxvYWRwcm9ncmVzcyIsInByb2dyZXNzIiwiYnl0ZXNTZW50Iiwibm9kZU5hbWUiLCJzdHlsZSIsInRvdGFsdXBsb2FkcHJvZ3Jlc3MiLCJzZW5kaW5nIiwic2VuZGluZ211bHRpcGxlIiwic3VjY2VzcyIsInN1Y2Nlc3NtdWx0aXBsZSIsImNhbmNlbGVkIiwiY2FuY2VsZWRtdWx0aXBsZSIsImNvbXBsZXRlIiwiY29tcGxldGVtdWx0aXBsZSIsIm1heGZpbGVzZXhjZWVkZWQiLCJtYXhmaWxlc3JlYWNoZWQiLCJxdWV1ZWNvbXBsZXRlIiwiYWRkZWRmaWxlcyIsIm9iamVjdCIsIm9iamVjdHMiLCJ2YWwiLCJlbGVtZW50T3B0aW9ucyIsInZlcnNpb24iLCJyZXBsYWNlIiwiY2xpY2thYmxlRWxlbWVudHMiLCJsaXN0ZW5lcnMiLCJmaWxlcyIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsIm5vZGVUeXBlIiwiRXJyb3IiLCJkcm9wem9uZSIsImluc3RhbmNlcyIsIm9wdGlvbnNGb3JFbGVtZW50IiwiaXNCcm93c2VyU3VwcG9ydGVkIiwiZ2V0QXR0cmlidXRlIiwidG9VcHBlckNhc2UiLCJnZXRFeGlzdGluZ0ZhbGxiYWNrIiwiZ2V0RWxlbWVudCIsImdldEVsZW1lbnRzIiwiZ2V0QWNjZXB0ZWRGaWxlcyIsImFjY2VwdGVkIiwiZ2V0UmVqZWN0ZWRGaWxlcyIsImdldEZpbGVzV2l0aFN0YXR1cyIsImdldFF1ZXVlZEZpbGVzIiwiUVVFVUVEIiwiZ2V0VXBsb2FkaW5nRmlsZXMiLCJnZXRBZGRlZEZpbGVzIiwiQURERUQiLCJnZXRBY3RpdmVGaWxlcyIsImV2ZW50TmFtZSIsIm5vUHJvcGFnYXRpb24iLCJzZXR1cEhpZGRlbkZpbGVJbnB1dCIsInRhZ05hbWUiLCJzZXRBdHRyaWJ1dGUiLCJjb250YWlucyIsImhpZGRlbkZpbGVJbnB1dCIsInZpc2liaWxpdHkiLCJwb3NpdGlvbiIsInRvcCIsImlkIiwiYWRkRmlsZSIsIlVSTCIsIndlYmtpdFVSTCIsInVwZGF0ZVRvdGFsVXBsb2FkUHJvZ3Jlc3MiLCJyZXR1cm5WYWx1ZSIsImVmY3QiLCJkYXRhVHJhbnNmZXIiLCJlZmZlY3RBbGxvd2VkIiwiX2Vycm9yIiwiZHJvcEVmZmVjdCIsImZvckVhY2giLCJjbGlja2FibGVFbGVtZW50IiwiZXZ0IiwiZWxlbWVudEluc2lkZSIsImVuYWJsZSIsImRlc3Ryb3kiLCJkaXNhYmxlIiwicmVtb3ZlQWxsRmlsZXMiLCJpbmRleE9mIiwiYWN0aXZlRmlsZXMiLCJ0b3RhbEJ5dGVzIiwidG90YWxCeXRlc1NlbnQiLCJ0b3RhbFVwbG9hZFByb2dyZXNzIiwidXBsb2FkIiwidG90YWwiLCJfZ2V0UGFyYW1OYW1lIiwibiIsImV4aXN0aW5nRmFsbGJhY2siLCJmaWVsZHMiLCJmaWVsZHNTdHJpbmciLCJmb3JtIiwiZ2V0RmFsbGJhY2siLCJlbGVtZW50cyIsInNldHVwRXZlbnRMaXN0ZW5lcnMiLCJlbGVtZW50TGlzdGVuZXJzIiwibGlzdGVuZXIiLCJfcmVzdWx0czEiLCJyZW1vdmVFdmVudExpc3RlbmVycyIsImNhbmNlbFVwbG9hZCIsImN1dG9mZiIsInNlbGVjdGVkU2l6ZSIsInNlbGVjdGVkVW5pdCIsInVuaXQiLCJ1bml0cyIsIk1hdGgiLCJwb3ciLCJyb3VuZCIsIml0ZW1zIiwid2Via2l0R2V0QXNFbnRyeSIsIl9hZGRGaWxlc0Zyb21JdGVtcyIsImhhbmRsZUZpbGVzIiwiY2xpcGJvYXJkRGF0YSIsImVudHJ5IiwiaXRlbSIsImlzRmlsZSIsImdldEFzRmlsZSIsImlzRGlyZWN0b3J5IiwiX2FkZEZpbGVzRnJvbURpcmVjdG9yeSIsImtpbmQiLCJkaXJlY3RvcnkiLCJwYXRoIiwiZGlyUmVhZGVyIiwiZW50cmllc1JlYWRlciIsImNyZWF0ZVJlYWRlciIsImVudHJpZXMiLCJzdWJzdHJpbmciLCJmdWxsUGF0aCIsInJlYWRFbnRyaWVzIiwiaXNWYWxpZEZpbGUiLCJfZW5xdWV1ZVRodW1ibmFpbCIsIl9lcnJvclByb2Nlc3NpbmciLCJlbnF1ZXVlRmlsZSIsImVucXVldWVGaWxlcyIsInByb2Nlc3NRdWV1ZSIsIl90aHVtYm5haWxRdWV1ZSIsIl9wcm9jZXNzaW5nVGh1bWJuYWlsIiwibWF0Y2giLCJfcHJvY2Vzc1RodW1ibmFpbFF1ZXVlIiwiY3JlYXRlVGh1bWJuYWlsIiwic2hpZnQiLCJjYW5jZWxJZk5lY2Vzc2FyeSIsImZpbGVSZWFkZXIiLCJGaWxlUmVhZGVyIiwib25sb2FkIiwicmVzdWx0IiwiY3JlYXRlVGh1bWJuYWlsRnJvbVVybCIsInJlYWRBc0RhdGFVUkwiLCJpbWFnZVVybCIsImNyb3NzT3JpZ2luIiwiaW1nIiwiY2FudmFzIiwiY3R4IiwicmVzaXplSW5mbyIsIl9yZWYzIiwiZ2V0Q29udGV4dCIsInRyZ1giLCJ0cmdZIiwidG9EYXRhVVJMIiwib25lcnJvciIsInByb2Nlc3NpbmdMZW5ndGgiLCJxdWV1ZWRGaWxlcyIsInByb2Nlc3NGaWxlcyIsInByb2Nlc3NGaWxlIiwidXBsb2FkRmlsZXMiLCJfZ2V0RmlsZXNXaXRoWGhyIiwieGhyIiwiZ3JvdXBlZEZpbGUiLCJncm91cGVkRmlsZXMiLCJDQU5DRUxFRCIsImFib3J0Iiwib3B0aW9uIiwidXBsb2FkRmlsZSIsImZvcm1EYXRhIiwiaGFuZGxlRXJyb3IiLCJoZWFkZXJOYW1lIiwiaGVhZGVyVmFsdWUiLCJoZWFkZXJzIiwiaW5wdXQiLCJpbnB1dE5hbWUiLCJpbnB1dFR5cGUiLCJwcm9ncmVzc09iaiIsInJlc3BvbnNlIiwidXBkYXRlUHJvZ3Jlc3MiLCJfbCIsIl9sZW4zIiwiX20iLCJfcmVmNCIsIl9yZWY1IiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwiYWxsRmlsZXNGaW5pc2hlZCIsImxvYWRlZCIsInJlYWR5U3RhdGUiLCJyZXNwb25zZVRleHQiLCJnZXRSZXNwb25zZUhlYWRlciIsIkpTT04iLCJwYXJzZSIsIl9maW5pc2hlZCIsIm9ucHJvZ3Jlc3MiLCJzZXRSZXF1ZXN0SGVhZGVyIiwiRm9ybURhdGEiLCJhcHBlbmQiLCJoYXNBdHRyaWJ1dGUiLCJzZWxlY3RlZCIsInRvTG93ZXJDYXNlIiwiY2hlY2tlZCIsInN1Ym1pdFJlcXVlc3QiLCJzZW5kIiwiU1VDQ0VTUyIsIkVSUk9SIiwiZm9yRWxlbWVudCIsImF1dG9EaXNjb3ZlciIsImRpc2NvdmVyIiwiY2hlY2tFbGVtZW50cyIsImRyb3B6b25lcyIsImJsYWNrbGlzdGVkQnJvd3NlcnMiLCJjYXBhYmxlQnJvd3NlciIsInJlZ2V4IiwiRmlsZSIsIkZpbGVMaXN0IiwiQmxvYiIsInVzZXJBZ2VudCIsImxpc3QiLCJyZWplY3RlZEl0ZW0iLCJzdHIiLCJjaGFyQXQiLCJzdHJpbmciLCJkaXYiLCJjaGlsZE5vZGVzIiwiY29udGFpbmVyIiwiZWxzIiwiQXJyYXkiLCJxdWVzdGlvbiIsInJlamVjdGVkIiwiYmFzZU1pbWVUeXBlIiwibWltZVR5cGUiLCJ2YWxpZFR5cGUiLCJzcGxpdCIsImVhY2giLCJtb2R1bGUiLCJleHBvcnRzIiwiQUNDRVBURUQiLCJQUk9DRVNTSU5HIiwiYWxwaGEiLCJleSIsImloIiwiaXciLCJweSIsInJhdGlvIiwic3kiLCJuYXR1cmFsV2lkdGgiLCJuYXR1cmFsSGVpZ2h0IiwiZHJhd0ltYWdlIiwiZ2V0SW1hZ2VEYXRhIiwic3giLCJzdyIsInNoIiwiZHgiLCJkeSIsImR3IiwiZGgiLCJ2ZXJ0U3F1YXNoUmF0aW8iLCJ3aW4iLCJkb2MiLCJwb2xsIiwicHJlIiwicmVtIiwicm9vdCIsImRvY3VtZW50RWxlbWVudCIsImRvU2Nyb2xsIiwiY3JlYXRlRXZlbnRPYmplY3QiLCJmcmFtZUVsZW1lbnQiLCJfYXV0b0Rpc2NvdmVyRnVuY3Rpb24iLCJPcmRlcl9MaXN0X0RldGFpbCIsIm9yZGVyVXVpZCIsInV1aWQiLCJiYXNrZXRGaWVsZDEiLCJjdXN0b21lckluZm8iLCJiYXNrZXRGaWVsZDIiLCJwb3MiLCJwcmljZSIsImFsbE5ldCIsInJlT3JkZXIiLCJyZU9yZGVyT3JkZXIiLCJyZU9yZGVyUG9zIiwiZ2V0X3Bvc19iZ19jb2xvciIsImdldF9wb3NfYmdfY29sb3JfY2xhc3MiLCJvcmlnaW5hbFByb2R1Y3QiLCJuckludGVybiIsImdldF9zcGVjaWFsX3Byb2R1Y3Rfb3B0aW9ucyIsInNwZWNpYWxQcm9kdWN0VHlwZU9iamVjdCIsImNvdW50IiwiSW50bCIsIk51bWJlckZvcm1hdCIsImN1cnJlbmN5IiwiZm9ybWF0IiwiYWxsR3Jvc3MiLCJnZXRfcG9zX3N0YXR1cyIsImludGVybmFsTmFtZSIsImdldF9wb3Nfc3RhdHVzX2xvb3AiLCJPcmRlcl9MaXN0X0RldGFpbF9TaW1wbGUiLCJPcmRlcl9MaXN0X1Bvc19TdGF0dXMiLCJwb3NVdWlkIiwiY29kZSIsIk9yZGVyX0xpc3RfUG9zX0NhbGNfT3B0aW9uIiwiZWxtIiwibG9hZF9zdGF0dXMiLCJiaW5kX2J1dHRvbnMiLCJ0eXAiLCJtYXAiLCJqb2luIiwiand0X3Rva2VuIiwiYWpheCIsImNvbnRlbnRUeXBlIiwic3RhdHVzX29yZGVyIiwic3RhdHVzX3BvcyIsImxvYWRfZGV0YWlsIiwic2ltcGxlIiwic3RyaW5naWZ5IiwiYnVpbGRfZGV0YWlscyIsInBvc2l0aW9ucyIsIngiLCJsb2FkUGx1Z2luRGV0YWlscyIsImJpbmRfc3RhdHVzX2J1dHRvbnMiLCJmb3VuZCIsInN0YXQiLCJjb2xvciIsInNldCIsImJ1aWxkVGFibGUiLCJlbXB0eSIsInByb2R1Y3RzIiwiaW5kZXgiLCJiaW5kRGVsZXRlQnV0dG9ucyIsImZhZGVJbiIsInByb2R1Y3RVdWlkIiwiZmFkZU91dCIsImluaXRBZGRCdXR0b24iLCJsb2FkVGFibGUiLCJmYWN0b3J5IiwiYW1kIiwicGx1Z2lucyIsImNvbnRleHQiLCJzZWxmIiwidWkiLCJtZW1vIiwiYnV0dG9uIiwiY29udGVudHMiLCJ0b29sdGlwIiwibWVkaWFCdW5kbGVCcm93c2VyIiwiJG5vdGUiLCIkbWVkaWEiLCJyZW5kZXIiLCJ0IiwiVGV0aGVyIiwibyIsIlR5cGVFcnJvciIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIm93bmVyRG9jdW1lbnQiLCJyIiwiZGVmYXVsdFZpZXciLCJzIiwiYm90dG9tIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImEiLCJmIiwib3ZlcmZsb3ciLCJsIiwib3ZlcmZsb3dYIiwiaCIsIm92ZXJmbG93WSIsImJvZHkiLCJBIiwiUCIsInNjcm9sbFdpZHRoIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50VG9wIiwiY2xpZW50TGVmdCIsImNsaWVudFdpZHRoIiwiY2xpZW50SGVpZ2h0Iiwib2Zmc2V0UGFyZW50IiwicG9pbnRlckV2ZW50cyIsIm9mZnNldFdpZHRoIiwidSIsIlJlZ0V4cCIsImMiLCJnIiwiZCIsInAiLCJTVkdBbmltYXRlZFN0cmluZyIsImJhc2VWYWwiLCJtIiwidiIsIk9iamVjdCIsImNyZWF0ZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwieSIsImIiLCJwZXJmb3JtYW5jZSIsIm5vdyIsIkRhdGUiLCJ3IiwicGFyc2VGbG9hdCIsIkMiLCJPIiwic2Nyb2xsUGFyZW50cyIsInBhZ2VYT2Zmc2V0IiwicGFnZVlPZmZzZXQiLCJpbm5lcldpZHRoIiwiaW5uZXJIZWlnaHQiLCJzdWJzdHIiLCJFIiwiZGVmaW5lUHJvcGVydHkiLCJtb2R1bGVzIiwiVCIsIlMiLCJNIiwiVyIsIl8iLCJwb3AiLCJrIiwiYmluZGluZ3MiLCJvbmNlIiwiVXRpbHMiLCJnZXRBY3R1YWxCb3VuZGluZ0NsaWVudFJlY3QiLCJnZXRTY3JvbGxQYXJlbnRzIiwiZ2V0Qm91bmRzIiwiZ2V0T2Zmc2V0UGFyZW50IiwiYWRkQ2xhc3MiLCJyZW1vdmVDbGFzcyIsImhhc0NsYXNzIiwidXBkYXRlQ2xhc3NlcyIsImRlZmVyIiwiZmx1c2giLCJ1bmlxdWVJZCIsIkV2ZW50ZWQiLCJnZXRTY3JvbGxCYXJTaXplIiwicmVtb3ZlVXRpbEVsZW1lbnRzIiwiQiIsIlN5bWJvbCIsIml0ZXJhdG9yIiwibmV4dCIsImlzQXJyYXkiLCJ6IiwiRnVuY3Rpb24iLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXQiLCJnZXRQcm90b3R5cGVPZiIsImoiLCJZIiwiTCIsIkQiLCJtaW4iLCJjbGVhclRpbWVvdXQiLCJYIiwiY2VudGVyIiwiRiIsIm1pZGRsZSIsIkgiLCJOIiwiVSIsIlYiLCJSIiwicSIsImJpbmQiLCJoaXN0b3J5Iiwic2V0T3B0aW9ucyIsImluaXRpYWxpemUiLCJjbGFzc2VzIiwiY2xhc3NQcmVmaXgiLCJvZmZzZXQiLCJ0YXJnZXRPZmZzZXQiLCJ0YXJnZXRBdHRhY2htZW50IiwidGFyZ2V0TW9kaWZpZXIiLCJqcXVlcnkiLCJnZXRDbGFzcyIsImFkZFRhcmdldENsYXNzZXMiLCJhdHRhY2htZW50IiwiZW5hYmxlZCIsImJvcmRlclRvcFdpZHRoIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJib3JkZXJMZWZ0V2lkdGgiLCJtYXgiLCJzY3JvbGxUb3AiLCJfY2FjaGUiLCJfYWRkQXR0YWNoQ2xhc3NlcyIsImNsZWFyQ2FjaGUiLCJ1cGRhdGVBdHRhY2hDbGFzc2VzIiwiY2FjaGUiLCJsYXN0U2l6ZSIsImdldFRhcmdldEJvdW5kcyIsInRhcmdldFBvcyIsImVsZW1lbnRQb3MiLCJtYW51YWxPZmZzZXQiLCJtYW51YWxUYXJnZXRPZmZzZXQiLCJzY3JvbGxiYXJTaXplIiwicGFnZSIsInZpZXdwb3J0IiwicGFyZW50RWxlbWVudCIsIm9wdGltaXphdGlvbnMiLCJtb3ZlRWxlbWVudCIsInNjcm9sbExlZnQiLCJtb3ZlIiwidW5zaGlmdCIsImdwdSIsIkkiLCJjb25zdHJhaW50cyIsIm91dE9mQm91bmRzQ2xhc3MiLCJwaW5uZWRDbGFzcyIsInRvIiwicGluIiwidHJpZ2dlciIsImluaXRNb2RhbHMiLCIkbW9kYWwiLCIkYnRuIiwicmVsYXRlZFRhcmdldCIsImxpbmsiLCJyZXNldEFqYXhNb2RhbHMiLCJkZWJvdW5jZSIsImVhc2VJbk91dFF1YWQiLCJhbmltYXRlIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwib2Zmc2V0SGVpZ2h0IiwidXJsQ2hvb3NlciIsImluaXREZWxCdG4iLCIkdGhpcyIsImxpbmtlZElEIiwiJHdpZGdldCIsIiRpbnB1dCIsInNsdWciLCJyZXBsYWNlVXJsIiwiY2xvc2VzdCIsIml0ZW1VcmwiLCJpdGVtSWQiLCJyZXBsYWNlZFVybCIsInRodW1iUGF0aCIsImNrZSIsIml0ZW1UaXRsZSIsIml0ZW1UaHVtYlBhdGgiLCJpc01lZGlhQ2hvb3NlciIsInNhdmVNZWRpYUNob29zZXJNb2RhbCIsInNhdmVVcmxDaG9vc2VyTW9kYWwiLCIkcGFyZW50TW9kYWwiLCJwYXJlbnRNb2RhbElkIiwibW9kYWwiLCJjbG9zZSIsImxpbmtlZElucHV0SWQiLCJmdW5jTnVtIiwiZ2V0VXJsUGFyYW0iLCJvcGVuZXIiLCJDS0VESVRPUiIsInRvb2xzIiwiY2FsbEZ1bmN0aW9uIiwiJG1lZGlhQ2hvb3NlciIsIiRwcmV2aWV3SW1nIiwiJHByZXZpZXdUaXRsZSIsIiRwYXJlbnQiLCJwcmVwZW5kIiwicmVQYXJhbSIsImxvY2F0aW9uIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LFdBQVcsV0FBQUEsWUFBQzVwQixTQUFTLEVBQUU7TUFDbkIsSUFBSXNxQixPQUFPLEdBQUcsSUFBSWxMLE1BQU0sQ0FBQyxpQkFBaUIsR0FBR3BmLFNBQVMsR0FBRyxVQUFVLEVBQUUsR0FBRyxDQUFDO1FBQ3JFeVAsS0FBSyxHQUFHM1csTUFBTSxDQUFDeXhCLFFBQVEsQ0FBQ2p1QixNQUFNLENBQUNtVCxLQUFLLENBQUM2YSxPQUFPLENBQUM7TUFFakQsT0FBUTdhLEtBQUssSUFBSUEsS0FBSyxDQUFDOVMsTUFBTSxHQUFHLENBQUMsR0FBSThTLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFO0lBQ3REO0VBRUosQ0FBQztBQUNMLENBQUM7QUFBQSxrR0FBQzs7Ozs7Ozs7Ozs7O0FDek1GOzs7Ozs7Ozs7Ozs7O0FDQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvYmFja2VuZC9kYXNoYm9hcmQvZGFzaGJvYXJkLmpzIiwid2VicGFjazovLy8uL2Fzc2V0cy9iYWNrZW5kL2Rhc2hib2FyZC9qcy9hcHAuanMiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2JhY2tlbmQvZGFzaGJvYXJkL2pzL2Ryb3B6b25lLmpzIiwid2VicGFjazovLy8uL2Fzc2V0cy9iYWNrZW5kL2Rhc2hib2FyZC9qcy9vcmRlci5qcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYmFja2VuZC9kYXNoYm9hcmQvanMvcHJvZHVjdC5qcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYmFja2VuZC9kYXNoYm9hcmQvanMvcHJvZHVjdC9zZXQuanMiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2JhY2tlbmQvZGFzaGJvYXJkL2pzL3N1bW1lcm5vdGUvbWVkaWFidW5kbGUucGx1Z2luLmpzIiwid2VicGFjazovLy8uL2Fzc2V0cy9iYWNrZW5kL2Rhc2hib2FyZC9qcy90ZXRoZXIubWluLmpzIiwid2VicGFjazovLy8uL2Fzc2V0cy9iYWNrZW5kL2Rhc2hib2FyZC9qcy90b29scy9hamF4TW9kYWwuanMiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2JhY2tlbmQvZGFzaGJvYXJkL2pzL3Rvb2xzL2NhcmdvYmF5LmdlbmVyYWwubWluLmpzIiwid2VicGFjazovLy8uL2Fzc2V0cy9iYWNrZW5kL2Rhc2hib2FyZC9qcy90b29scy9jYXJnb2JheS50b29nbGUubWluLmpzIiwid2VicGFjazovLy8uL2Fzc2V0cy9iYWNrZW5kL2Rhc2hib2FyZC9qcy90b29scy9tZWRpYUNob29zZXIuanMiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2JhY2tlbmQvZGFzaGJvYXJkL2Nzcy90b29scy9jYXJnb2JheS50b29nbGUubWluLmNzcz84NTZhIiwid2VicGFjazovLy8uL2Fzc2V0cy9iYWNrZW5kL2Rhc2hib2FyZC9sZXNzL2Jhc2UubGVzcz9lYTQ0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCczVVdGlscyBmcm9tIFwiYnM1LXV0aWxzXCI7XG5pbXBvcnQgeyBzdGFydFN0aW11bHVzQXBwIH0gZnJvbSAnQHN5bWZvbnkvc3RpbXVsdXMtYnJpZGdlJztcbmNvbnN0IGFwcCA9IHN0YXJ0U3RpbXVsdXNBcHAoKTtcbmdsb2JhbC4kID0gZ2xvYmFsLmpRdWVyeSA9IHdpbmRvdy5qUXVlcnkgPSByZXF1aXJlKCdqcXVlcnknKTtcbnJlcXVpcmUoJ0Bwb3BwZXJqcy9jb3JlL2Rpc3QvY2pzL3BvcHBlcicpO1xuZ2xvYmFsLmJvb3RzdHJhcCA9IHJlcXVpcmUoJ2Jvb3RzdHJhcC9kaXN0L2pzL2Jvb3RzdHJhcCcpO1xuZ2xvYmFsLmJzNVV0aWxzID0gbmV3IEJzNVV0aWxzKCk7XG5yZXF1aXJlKCcuL2pzL3RldGhlci5taW4nKTtcbnJlcXVpcmUoJy4vanMvZHJvcHpvbmUnKTtcbmdsb2JhbC5SYXBoYWVsID0gcmVxdWlyZSgncmFwaGFlbC9yYXBoYWVsLm1pbicpO1xucmVxdWlyZSgnbW9ycmlzLmpzL21vcnJpcy5taW4nKTtcbnJlcXVpcmUoJ3N1bW1lcm5vdGUvZGlzdC9zdW1tZXJub3RlLWxpdGUnKTtcbnJlcXVpcmUoJy4vanMvc3VtbWVybm90ZS9tZWRpYWJ1bmRsZS5wbHVnaW4nKTtcbnJlcXVpcmUoJ211bHRpc2VsZWN0LXR3by1zaWRlcy9kaXN0L2pzL211bHRpc2VsZWN0Jyk7XG5yZXF1aXJlKCdib290c3RyYXAtdG9nZ2xlL2pzL2Jvb3RzdHJhcC10b2dnbGUubWluJyk7XG5pbXBvcnQgYWNlIGZyb20gJ2JyYWNlJ1xuaW1wb3J0ICdicmFjZS9tb2RlL2h0bWwnXG5pbXBvcnQgJ2JyYWNlL21vZGUvcGhwJ1xuaW1wb3J0ICdicmFjZS9tb2RlL3htbCdcbmltcG9ydCAnYnJhY2UvdGhlbWUvbW9ub2thaSdcbmltcG9ydCAnYnJhY2UvZXh0L3NlYXJjaGJveCdcblxuZ2xvYmFsLkRyb3B6b25lID0gcmVxdWlyZSgnLi9qcy9kcm9wem9uZScpO1xuXG5nbG9iYWwuY2FyZ29iYXkgPSB7fTtcbmdsb2JhbC5jYXJnb2JheS5nZW5lcmFsID0gcmVxdWlyZSgnLi9qcy90b29scy9jYXJnb2JheS5nZW5lcmFsLm1pbicpO1xuZ2xvYmFsLmNhcmdvYmF5LnRvZ2dsZSA9ICByZXF1aXJlKCcuL2pzL3Rvb2xzL2NhcmdvYmF5LnRvb2dsZS5taW4nKTtcblxuZ2xvYmFsLnBzYyA9IHt9O1xuZ2xvYmFsLnBzYy5hamF4TW9kYWwgPSByZXF1aXJlKCcuL2pzL3Rvb2xzL2FqYXhNb2RhbCcpO1xuZ2xvYmFsLnBzYy5tZWRpYUNob29zZXIgPSByZXF1aXJlKCcuL2pzL3Rvb2xzL21lZGlhQ2hvb3NlcicpO1xuZ2xvYmFsLnBzYy5hcHAgPSByZXF1aXJlKCcuL2pzL2FwcCcpO1xuZ2xvYmFsLnBzYy5vcmRlciA9IHJlcXVpcmUoJy4vanMvb3JkZXIuanMnKTtcbmdsb2JhbC5wc2MucHJvZHVjdCA9IHJlcXVpcmUoJy4vanMvcHJvZHVjdC5qcycpO1xuXG5nbG9iYWwucHNjLmFwcC5pbml0KCk7XG5cbmltcG9ydCAnLi9qcy90b29scy9tZWRpYUNob29zZXInO1xuaW1wb3J0ICdib290c3RyYXAvc2Nzcy9ib290c3RyYXAuc2Nzcyc7XG5pbXBvcnQgJy4vY3NzL3Rvb2xzL2NhcmdvYmF5LnRvb2dsZS5taW4uY3NzJztcbmltcG9ydCAnLi9sZXNzL2Jhc2UubGVzcyc7XG5pbXBvcnQgJ3N1bW1lcm5vdGUvZGlzdC9zdW1tZXJub3RlLWxpdGUubWluLmNzcyc7XG4vL2ltcG9ydCAnbXVsdGlzZWxlY3QvY3NzL211bHRpLXNlbGVjdC5jc3MnO1xuaW1wb3J0ICdib290c3RyYXAtdG9nZ2xlL2Nzcy9ib290c3RyYXAtdG9nZ2xlLm1pbi5jc3MnO1xuIiwiXG5cbmRlZmluZShmdW5jdGlvbigpIHtcblxuICAgIHJldHVybiB7XG4gICAgICAgIC8vIEdlbmVyYWwgQXBwIGluaXRcbiAgICAgICAgaW5pdCgpIHtcblxuICAgICAgICAgICAgcHNjLmFqYXhNb2RhbC5pbml0KCk7XG4gICAgICAgICAgICBwc2MubWVkaWFDaG9vc2VyLmluaXQoKTtcbiAgICAgICAgICAgIHBzYy5vcmRlci5pbml0KCk7XG4gICAgICAgICAgICBwc2MucHJvZHVjdC5pbml0KCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGJvb3RzdHJhcEFwcCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGJvb3RzdHJhcEFwcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufSk7XG5cblxuXG4kKGZ1bmN0aW9uKCkge1xuXG4gICAgJCgnW2RhdGEtYnMtdG9nZ2xlPVwidG9vbHRpcFwiXScpLmNsaWNrKGZ1bmN0aW9uKGVsKSB7XG4gICAgICAgIGJzNVV0aWxzLlRvYXN0LnNob3coe1xuICAgICAgICAgICAgdHlwZTogJ3ByaW1hcnknLFxuICAgICAgICAgICAgaWNvbjogJzxpIGNsYXNzPVwiZmFyIGZhLWNoZWNrLWNpcmNsZSBmYS1sZyBtZS0yXCI+PC9pPicsXG4gICAgICAgICAgICB0aXRsZTogJCh0aGlzKS5odG1sKCksXG4gICAgICAgICAgICBjb250ZW50OiAkKHRoaXMpLmRhdGEoJ2JzLWh0bWwnKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6ICdDb3B5IHRvIGNsaXBib2FyZCcsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnYnRuIGJ0bi1zbSBidG4td2FybmluZycsXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KCQodGhpcykuZGF0YSgnYnMtaHRtbCcpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBkZWxheTogMCxcbiAgICAgICAgICAgIGRpc21pc3NpYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zb2xlLmxvZyh0aGlzKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcblxuICAgICQoJ2FbZGF0YS1icy10b2dnbGU9XCJ0YWJcIl0nKS5vbignc2hvd24uYnMudGFiJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgaWYoJChlLnRhcmdldCkucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkuYXR0cignaWQnKSAmJiAkKGUudGFyZ2V0KS5wYXJlbnQoKS5wYXJlbnQoKS5wYXJlbnQoKS5hdHRyKCdpZCcpID09ICdkb2MnKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbGFzdFRhYkRvYycsICQodGhpcykuYXR0cignaHJlZicpKTtcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbGFzdFRhYicsICQodGhpcykuYXR0cignaHJlZicpKTtcbiAgICAgICAgfTtcblxuICAgIH0pO1xuXG4gICAgLy8gZ28gdG8gdGhlIGxhdGVzdCB0YWIsIGlmIGl0IGV4aXN0czpcbiAgICB2YXIgbGFzdFRhYiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYXN0VGFiJyk7XG4gICAgaWYgKGxhc3RUYWIpIHtcbiAgICAgICAgJCgnW2hyZWY9XCInICsgbGFzdFRhYiArICdcIl0nKS50YWIoJ3Nob3cnKTtcbiAgICB9XG5cbiAgICB2YXIgbGFzdFRhYkRvYyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYXN0VGFiRG9jJyk7XG4gICAgaWYgKGxhc3RUYWJEb2MpIHtcbiAgICAgICAgJCgnW2hyZWY9XCInICsgbGFzdFRhYkRvYyArICdcIl0nKS50YWIoJ3Nob3cnKTtcbiAgICB9XG5cbiAgICAkKCcubmF2IGxpIHVsJykucGFyZW50KCkuZmluZCgnYScpLmNsaWNrKGZ1bmN0aW9uKCkge1xuICAgICAgICAkKHRoaXMpLnBhcmVudCgpLmZpbmQoXCJ1bFwiKS50b2dnbGUoKTtcbiAgICB9KTtcblxuICAgICQoJ2lucHV0W2RhdGEtYnMtdG9nZ2xlPVwidG9nZ2xlXCJdLCBpbnB1dC5hamF4VG9vZ2xlJykuY2hhbmdlKGZ1bmN0aW9uKCkge1xuICAgICAgICAkLmdldEpTT04oJCh0aGlzKS5kYXRhKCd1cmwnKSk7XG4gICAgfSk7XG5cbiAgICAkKCdzZWxlY3QubXVsdGlwbGUnKS5tdWx0aXNlbGVjdCh7XG4gICAgICAgIHN1Ym1pdEFsbExlZnQ6IGZhbHNlLFxuICAgICAgICBzdWJtaXRBbGxSaWdodDogdHJ1ZSxcbiAgICAgICAgc2VhcmNoOiB7XG4gICAgICAgICAgICBsZWZ0OiAnPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInFcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCIgLz4nLFxuICAgICAgICAgICAgcmlnaHQ6ICc8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwicVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiAvPicsXG4gICAgICAgIH0sXG4gICAgICAgIGZpcmVTZWFyY2g6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUubGVuZ3RoID4gMTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgJCgnLnN1bW1lcm5vdGUnKS5zdW1tZXJub3RlKHtcbiAgICAgICAgaGVpZ2h0OiA0MDAsXG4gICAgICAgIHRvb2xiYXI6IFtcbiAgICAgICAgICAgICAgICBbJ3N0eWxlJywgWydzdHlsZSddXSxcbiAgICAgICAgICAgICAgICBbJ2ZvbnQnLCBbJ2JvbGQnLCAnaXRhbGljJywgJ3VuZGVybGluZScsICdjbGVhciddXSxcbiAgICAgICAgICAgICAgICBbJ2ZvbnRzaXplJywgWydmb250c2l6ZSddXSxcbiAgICAgICAgICAgICAgICBbJ2NvbG9yJywgWydjb2xvciddXSxcbiAgICAgICAgICAgICAgICBbJ3BhcmEnLCBbJ3VsJywgJ29sJywgJ3BhcmFncmFwaCddXSxcbiAgICAgICAgICAgICAgICBbJ2hlaWdodCcsIFsnaGVpZ2h0J11dLFxuICAgICAgICAgICAgICAgIFsndGFibGUnLCBbJ3RhYmxlJ11dLFxuICAgICAgICAgICAgICAgIFsnaW5zZXJ0JywgWydsaW5rJywgJ2hyJ11dLFxuICAgICAgICAgICAgICAgIFsndmlldycsIFsnZnVsbHNjcmVlbicsICdjb2RldmlldyddXSxcbiAgICAgICAgICAgICAgICBbJ2hlbHAnLCBbJ2hlbHAnXV0sXG4gICAgICAgICAgICAgICAgWydtZWRpYScsIFsnbWVkaWEnXV1cbiAgICAgICAgXVxuICAgIH0pO1xufSk7XG4iLCJcbi8qXG4gKlxuICogTW9yZSBpbmZvIGF0IFt3d3cuZHJvcHpvbmVqcy5jb21dKGh0dHA6Ly93d3cuZHJvcHpvbmVqcy5jb20pXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEyLCBNYXRpYXMgTWVub1xuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gKiBUSEUgU09GVFdBUkUuXG4gKlxuICovXG5cbihmdW5jdGlvbigpIHtcbiAgdmFyIERyb3B6b25lLCBFbWl0dGVyLCBjYW1lbGl6ZSwgY29udGVudExvYWRlZCwgZGV0ZWN0VmVydGljYWxTcXVhc2gsIGRyYXdJbWFnZUlPU0ZpeCwgbm9vcCwgd2l0aG91dCxcbiAgICBfX3NsaWNlID0gW10uc2xpY2UsXG4gICAgX19oYXNQcm9wID0ge30uaGFzT3duUHJvcGVydHksXG4gICAgX19leHRlbmRzID0gZnVuY3Rpb24oY2hpbGQsIHBhcmVudCkgeyBmb3IgKHZhciBrZXkgaW4gcGFyZW50KSB7IGlmIChfX2hhc1Byb3AuY2FsbChwYXJlbnQsIGtleSkpIGNoaWxkW2tleV0gPSBwYXJlbnRba2V5XTsgfSBmdW5jdGlvbiBjdG9yKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gY2hpbGQ7IH0gY3Rvci5wcm90b3R5cGUgPSBwYXJlbnQucHJvdG90eXBlOyBjaGlsZC5wcm90b3R5cGUgPSBuZXcgY3RvcigpOyBjaGlsZC5fX3N1cGVyX18gPSBwYXJlbnQucHJvdG90eXBlOyByZXR1cm4gY2hpbGQ7IH07XG5cbiAgbm9vcCA9IGZ1bmN0aW9uKCkge307XG5cbiAgRW1pdHRlciA9IChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBFbWl0dGVyKCkge31cblxuICAgIEVtaXR0ZXIucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIgPSBFbWl0dGVyLnByb3RvdHlwZS5vbjtcblxuICAgIEVtaXR0ZXIucHJvdG90eXBlLm9uID0gZnVuY3Rpb24oZXZlbnQsIGZuKSB7XG4gICAgICB0aGlzLl9jYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3MgfHwge307XG4gICAgICBpZiAoIXRoaXMuX2NhbGxiYWNrc1tldmVudF0pIHtcbiAgICAgICAgdGhpcy5fY2FsbGJhY2tzW2V2ZW50XSA9IFtdO1xuICAgICAgfVxuICAgICAgdGhpcy5fY2FsbGJhY2tzW2V2ZW50XS5wdXNoKGZuKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbiAgICBFbWl0dGVyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgYXJncywgY2FsbGJhY2ssIGNhbGxiYWNrcywgZXZlbnQsIF9pLCBfbGVuO1xuICAgICAgZXZlbnQgPSBhcmd1bWVudHNbMF0sIGFyZ3MgPSAyIDw9IGFyZ3VtZW50cy5sZW5ndGggPyBfX3NsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSA6IFtdO1xuICAgICAgdGhpcy5fY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzIHx8IHt9O1xuICAgICAgY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzW2V2ZW50XTtcbiAgICAgIGlmIChjYWxsYmFja3MpIHtcbiAgICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBjYWxsYmFja3MubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrc1tfaV07XG4gICAgICAgICAgY2FsbGJhY2suYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbiAgICBFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lciA9IEVtaXR0ZXIucHJvdG90eXBlLm9mZjtcblxuICAgIEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycyA9IEVtaXR0ZXIucHJvdG90eXBlLm9mZjtcblxuICAgIEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgPSBFbWl0dGVyLnByb3RvdHlwZS5vZmY7XG5cbiAgICBFbWl0dGVyLnByb3RvdHlwZS5vZmYgPSBmdW5jdGlvbihldmVudCwgZm4pIHtcbiAgICAgIHZhciBjYWxsYmFjaywgY2FsbGJhY2tzLCBpLCBfaSwgX2xlbjtcbiAgICAgIGlmICghdGhpcy5fY2FsbGJhY2tzIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5fY2FsbGJhY2tzID0ge307XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzW2V2ZW50XTtcbiAgICAgIGlmICghY2FsbGJhY2tzKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMuX2NhbGxiYWNrc1tldmVudF07XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgZm9yIChpID0gX2kgPSAwLCBfbGVuID0gY2FsbGJhY2tzLmxlbmd0aDsgX2kgPCBfbGVuOyBpID0gKytfaSkge1xuICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrc1tpXTtcbiAgICAgICAgaWYgKGNhbGxiYWNrID09PSBmbikge1xuICAgICAgICAgIGNhbGxiYWNrcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbiAgICByZXR1cm4gRW1pdHRlcjtcblxuICB9KSgpO1xuXG4gIERyb3B6b25lID0gKGZ1bmN0aW9uKF9zdXBlcikge1xuICAgIHZhciBleHRlbmQsIHJlc29sdmVPcHRpb247XG5cbiAgICBfX2V4dGVuZHMoRHJvcHpvbmUsIF9zdXBlcik7XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuRW1pdHRlciA9IEVtaXR0ZXI7XG5cblxuICAgIC8qXG4gICAgVGhpcyBpcyBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBldmVudHMgeW91IGNhbiByZWdpc3RlciBvbiBhIGRyb3B6b25lIG9iamVjdC5cbiAgICBcbiAgICBZb3UgY2FuIHJlZ2lzdGVyIGFuIGV2ZW50IGhhbmRsZXIgbGlrZSB0aGlzOlxuICAgIFxuICAgICAgICBkcm9wem9uZS5vbihcImRyYWdFbnRlclwiLCBmdW5jdGlvbigpIHsgfSk7XG4gICAgICovXG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuZXZlbnRzID0gW1wiZHJvcFwiLCBcImRyYWdzdGFydFwiLCBcImRyYWdlbmRcIiwgXCJkcmFnZW50ZXJcIiwgXCJkcmFnb3ZlclwiLCBcImRyYWdsZWF2ZVwiLCBcImFkZGVkZmlsZVwiLCBcImFkZGVkZmlsZXNcIiwgXCJyZW1vdmVkZmlsZVwiLCBcInRodW1ibmFpbFwiLCBcImVycm9yXCIsIFwiZXJyb3JtdWx0aXBsZVwiLCBcInByb2Nlc3NpbmdcIiwgXCJwcm9jZXNzaW5nbXVsdGlwbGVcIiwgXCJ1cGxvYWRwcm9ncmVzc1wiLCBcInRvdGFsdXBsb2FkcHJvZ3Jlc3NcIiwgXCJzZW5kaW5nXCIsIFwic2VuZGluZ211bHRpcGxlXCIsIFwic3VjY2Vzc1wiLCBcInN1Y2Nlc3NtdWx0aXBsZVwiLCBcImNhbmNlbGVkXCIsIFwiY2FuY2VsZWRtdWx0aXBsZVwiLCBcImNvbXBsZXRlXCIsIFwiY29tcGxldGVtdWx0aXBsZVwiLCBcInJlc2V0XCIsIFwibWF4ZmlsZXNleGNlZWRlZFwiLCBcIm1heGZpbGVzcmVhY2hlZFwiLCBcInF1ZXVlY29tcGxldGVcIl07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgICB1cmw6IG51bGwsXG4gICAgICBtZXRob2Q6IFwicG9zdFwiLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiBmYWxzZSxcbiAgICAgIHBhcmFsbGVsVXBsb2FkczogMixcbiAgICAgIHVwbG9hZE11bHRpcGxlOiBmYWxzZSxcbiAgICAgIG1heEZpbGVzaXplOiAyNTYsXG4gICAgICBwYXJhbU5hbWU6IFwiZmlsZVwiLFxuICAgICAgY3JlYXRlSW1hZ2VUaHVtYm5haWxzOiB0cnVlLFxuICAgICAgbWF4VGh1bWJuYWlsRmlsZXNpemU6IDEwLFxuICAgICAgdGh1bWJuYWlsV2lkdGg6IDEyMCxcbiAgICAgIHRodW1ibmFpbEhlaWdodDogMTIwLFxuICAgICAgZmlsZXNpemVCYXNlOiAxMDAwLFxuICAgICAgbWF4RmlsZXM6IG51bGwsXG4gICAgICBwYXJhbXM6IHt9LFxuICAgICAgY2xpY2thYmxlOiB0cnVlLFxuICAgICAgaWdub3JlSGlkZGVuRmlsZXM6IHRydWUsXG4gICAgICBhY2NlcHRlZEZpbGVzOiBudWxsLFxuICAgICAgYWNjZXB0ZWRNaW1lVHlwZXM6IG51bGwsXG4gICAgICBhdXRvUHJvY2Vzc1F1ZXVlOiB0cnVlLFxuICAgICAgYXV0b1F1ZXVlOiB0cnVlLFxuICAgICAgYWRkUmVtb3ZlTGlua3M6IGZhbHNlLFxuICAgICAgcHJldmlld3NDb250YWluZXI6IG51bGwsXG4gICAgICBoaWRkZW5JbnB1dENvbnRhaW5lcjogXCJib2R5XCIsXG4gICAgICBjYXB0dXJlOiBudWxsLFxuICAgICAgZGljdERlZmF1bHRNZXNzYWdlOiBcIkRyb3AgZmlsZXMgaGVyZSB0byB1cGxvYWRcIixcbiAgICAgIGRpY3RGYWxsYmFja01lc3NhZ2U6IFwiWW91ciBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgZHJhZyduJ2Ryb3AgZmlsZSB1cGxvYWRzLlwiLFxuICAgICAgZGljdEZhbGxiYWNrVGV4dDogXCJQbGVhc2UgdXNlIHRoZSBmYWxsYmFjayBmb3JtIGJlbG93IHRvIHVwbG9hZCB5b3VyIGZpbGVzIGxpa2UgaW4gdGhlIG9sZGVuIGRheXMuXCIsXG4gICAgICBkaWN0RmlsZVRvb0JpZzogXCJGaWxlIGlzIHRvbyBiaWcgKHt7ZmlsZXNpemV9fU1pQikuIE1heCBmaWxlc2l6ZToge3ttYXhGaWxlc2l6ZX19TWlCLlwiLFxuICAgICAgZGljdEludmFsaWRGaWxlVHlwZTogXCJZb3UgY2FuJ3QgdXBsb2FkIGZpbGVzIG9mIHRoaXMgdHlwZS5cIixcbiAgICAgIGRpY3RSZXNwb25zZUVycm9yOiBcIlNlcnZlciByZXNwb25kZWQgd2l0aCB7e3N0YXR1c0NvZGV9fSBjb2RlLlwiLFxuICAgICAgZGljdENhbmNlbFVwbG9hZDogXCJDYW5jZWwgdXBsb2FkXCIsXG4gICAgICBkaWN0Q2FuY2VsVXBsb2FkQ29uZmlybWF0aW9uOiBcIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWwgdGhpcyB1cGxvYWQ/XCIsXG4gICAgICBkaWN0UmVtb3ZlRmlsZTogXCJSZW1vdmUgZmlsZVwiLFxuICAgICAgZGljdFJlbW92ZUZpbGVDb25maXJtYXRpb246IG51bGwsXG4gICAgICBkaWN0TWF4RmlsZXNFeGNlZWRlZDogXCJZb3UgY2FuIG5vdCB1cGxvYWQgYW55IG1vcmUgZmlsZXMuXCIsXG4gICAgICBhY2NlcHQ6IGZ1bmN0aW9uKGZpbGUsIGRvbmUpIHtcbiAgICAgICAgcmV0dXJuIGRvbmUoKTtcbiAgICAgIH0sXG4gICAgICBpbml0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG5vb3A7XG4gICAgICB9LFxuICAgICAgZm9yY2VGYWxsYmFjazogZmFsc2UsXG4gICAgICBmYWxsYmFjazogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBjaGlsZCwgbWVzc2FnZUVsZW1lbnQsIHNwYW4sIF9pLCBfbGVuLCBfcmVmO1xuICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gXCJcIiArIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgKyBcIiBkei1icm93c2VyLW5vdC1zdXBwb3J0ZWRcIjtcbiAgICAgICAgX3JlZiA9IHRoaXMuZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImRpdlwiKTtcbiAgICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgICAgY2hpbGQgPSBfcmVmW19pXTtcbiAgICAgICAgICBpZiAoLyhefCApZHotbWVzc2FnZSgkfCApLy50ZXN0KGNoaWxkLmNsYXNzTmFtZSkpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VFbGVtZW50ID0gY2hpbGQ7XG4gICAgICAgICAgICBjaGlsZC5jbGFzc05hbWUgPSBcImR6LW1lc3NhZ2VcIjtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1lc3NhZ2VFbGVtZW50KSB7XG4gICAgICAgICAgbWVzc2FnZUVsZW1lbnQgPSBEcm9wem9uZS5jcmVhdGVFbGVtZW50KFwiPGRpdiBjbGFzcz1cXFwiZHotbWVzc2FnZVxcXCI+PHNwYW4+PC9zcGFuPjwvZGl2PlwiKTtcbiAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQobWVzc2FnZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHNwYW4gPSBtZXNzYWdlRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNwYW5cIilbMF07XG4gICAgICAgIGlmIChzcGFuKSB7XG4gICAgICAgICAgaWYgKHNwYW4udGV4dENvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IHRoaXMub3B0aW9ucy5kaWN0RmFsbGJhY2tNZXNzYWdlO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3Bhbi5pbm5lclRleHQgIT0gbnVsbCkge1xuICAgICAgICAgICAgc3Bhbi5pbm5lclRleHQgPSB0aGlzLm9wdGlvbnMuZGljdEZhbGxiYWNrTWVzc2FnZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmdldEZhbGxiYWNrRm9ybSgpKTtcbiAgICAgIH0sXG4gICAgICByZXNpemU6IGZ1bmN0aW9uKGZpbGUpIHtcbiAgICAgICAgdmFyIGluZm8sIHNyY1JhdGlvLCB0cmdSYXRpbztcbiAgICAgICAgaW5mbyA9IHtcbiAgICAgICAgICBzcmNYOiAwLFxuICAgICAgICAgIHNyY1k6IDAsXG4gICAgICAgICAgc3JjV2lkdGg6IGZpbGUud2lkdGgsXG4gICAgICAgICAgc3JjSGVpZ2h0OiBmaWxlLmhlaWdodFxuICAgICAgICB9O1xuICAgICAgICBzcmNSYXRpbyA9IGZpbGUud2lkdGggLyBmaWxlLmhlaWdodDtcbiAgICAgICAgaW5mby5vcHRXaWR0aCA9IHRoaXMub3B0aW9ucy50aHVtYm5haWxXaWR0aDtcbiAgICAgICAgaW5mby5vcHRIZWlnaHQgPSB0aGlzLm9wdGlvbnMudGh1bWJuYWlsSGVpZ2h0O1xuICAgICAgICBpZiAoKGluZm8ub3B0V2lkdGggPT0gbnVsbCkgJiYgKGluZm8ub3B0SGVpZ2h0ID09IG51bGwpKSB7XG4gICAgICAgICAgaW5mby5vcHRXaWR0aCA9IGluZm8uc3JjV2lkdGg7XG4gICAgICAgICAgaW5mby5vcHRIZWlnaHQgPSBpbmZvLnNyY0hlaWdodDtcbiAgICAgICAgfSBlbHNlIGlmIChpbmZvLm9wdFdpZHRoID09IG51bGwpIHtcbiAgICAgICAgICBpbmZvLm9wdFdpZHRoID0gc3JjUmF0aW8gKiBpbmZvLm9wdEhlaWdodDtcbiAgICAgICAgfSBlbHNlIGlmIChpbmZvLm9wdEhlaWdodCA9PSBudWxsKSB7XG4gICAgICAgICAgaW5mby5vcHRIZWlnaHQgPSAoMSAvIHNyY1JhdGlvKSAqIGluZm8ub3B0V2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgdHJnUmF0aW8gPSBpbmZvLm9wdFdpZHRoIC8gaW5mby5vcHRIZWlnaHQ7XG4gICAgICAgIGlmIChmaWxlLmhlaWdodCA8IGluZm8ub3B0SGVpZ2h0IHx8IGZpbGUud2lkdGggPCBpbmZvLm9wdFdpZHRoKSB7XG4gICAgICAgICAgaW5mby50cmdIZWlnaHQgPSBpbmZvLnNyY0hlaWdodDtcbiAgICAgICAgICBpbmZvLnRyZ1dpZHRoID0gaW5mby5zcmNXaWR0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoc3JjUmF0aW8gPiB0cmdSYXRpbykge1xuICAgICAgICAgICAgaW5mby5zcmNIZWlnaHQgPSBmaWxlLmhlaWdodDtcbiAgICAgICAgICAgIGluZm8uc3JjV2lkdGggPSBpbmZvLnNyY0hlaWdodCAqIHRyZ1JhdGlvO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbmZvLnNyY1dpZHRoID0gZmlsZS53aWR0aDtcbiAgICAgICAgICAgIGluZm8uc3JjSGVpZ2h0ID0gaW5mby5zcmNXaWR0aCAvIHRyZ1JhdGlvO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbmZvLnNyY1ggPSAoZmlsZS53aWR0aCAtIGluZm8uc3JjV2lkdGgpIC8gMjtcbiAgICAgICAgaW5mby5zcmNZID0gKGZpbGUuaGVpZ2h0IC0gaW5mby5zcmNIZWlnaHQpIC8gMjtcbiAgICAgICAgcmV0dXJuIGluZm87XG4gICAgICB9LFxuXG4gICAgICAvKlxuICAgICAgVGhvc2UgZnVuY3Rpb25zIHJlZ2lzdGVyIHRoZW1zZWx2ZXMgdG8gdGhlIGV2ZW50cyBvbiBpbml0IGFuZCBoYW5kbGUgYWxsXG4gICAgICB0aGUgdXNlciBpbnRlcmZhY2Ugc3BlY2lmaWMgc3R1ZmYuIE92ZXJ3cml0aW5nIHRoZW0gd29uJ3QgYnJlYWsgdGhlIHVwbG9hZFxuICAgICAgYnV0IGNhbiBicmVhayB0aGUgd2F5IGl0J3MgZGlzcGxheWVkLlxuICAgICAgWW91IGNhbiBvdmVyd3JpdGUgdGhlbSBpZiB5b3UgZG9uJ3QgbGlrZSB0aGUgZGVmYXVsdCBiZWhhdmlvci4gSWYgeW91IGp1c3RcbiAgICAgIHdhbnQgdG8gYWRkIGFuIGFkZGl0aW9uYWwgZXZlbnQgaGFuZGxlciwgcmVnaXN0ZXIgaXQgb24gdGhlIGRyb3B6b25lIG9iamVjdFxuICAgICAgYW5kIGRvbid0IG92ZXJ3cml0ZSB0aG9zZSBvcHRpb25zLlxuICAgICAgICovXG4gICAgICBkcm9wOiBmdW5jdGlvbihlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcImR6LWRyYWctaG92ZXJcIik7XG4gICAgICB9LFxuICAgICAgZHJhZ3N0YXJ0OiBub29wLFxuICAgICAgZHJhZ2VuZDogZnVuY3Rpb24oZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJkei1kcmFnLWhvdmVyXCIpO1xuICAgICAgfSxcbiAgICAgIGRyYWdlbnRlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJkei1kcmFnLWhvdmVyXCIpO1xuICAgICAgfSxcbiAgICAgIGRyYWdvdmVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImR6LWRyYWctaG92ZXJcIik7XG4gICAgICB9LFxuICAgICAgZHJhZ2xlYXZlOiBmdW5jdGlvbihlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcImR6LWRyYWctaG92ZXJcIik7XG4gICAgICB9LFxuICAgICAgcGFzdGU6IG5vb3AsXG4gICAgICByZXNldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcImR6LXN0YXJ0ZWRcIik7XG4gICAgICB9LFxuICAgICAgYWRkZWRmaWxlOiBmdW5jdGlvbihmaWxlKSB7XG4gICAgICAgIHZhciBub2RlLCByZW1vdmVGaWxlRXZlbnQsIHJlbW92ZUxpbmssIF9pLCBfaiwgX2ssIF9sZW4sIF9sZW4xLCBfbGVuMiwgX3JlZiwgX3JlZjEsIF9yZWYyLCBfcmVzdWx0cztcbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudCA9PT0gdGhpcy5wcmV2aWV3c0NvbnRhaW5lcikge1xuICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiZHotc3RhcnRlZFwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wcmV2aWV3c0NvbnRhaW5lcikge1xuICAgICAgICAgIGZpbGUucHJldmlld0VsZW1lbnQgPSBEcm9wem9uZS5jcmVhdGVFbGVtZW50KHRoaXMub3B0aW9ucy5wcmV2aWV3VGVtcGxhdGUudHJpbSgpKTtcbiAgICAgICAgICBmaWxlLnByZXZpZXdUZW1wbGF0ZSA9IGZpbGUucHJldmlld0VsZW1lbnQ7XG4gICAgICAgICAgdGhpcy5wcmV2aWV3c0NvbnRhaW5lci5hcHBlbmRDaGlsZChmaWxlLnByZXZpZXdFbGVtZW50KTtcbiAgICAgICAgICBfcmVmID0gZmlsZS5wcmV2aWV3RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtZHotbmFtZV1cIik7XG4gICAgICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgICAgICBub2RlID0gX3JlZltfaV07XG4gICAgICAgICAgICBub2RlLnRleHRDb250ZW50ID0gZmlsZS5uYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgICBfcmVmMSA9IGZpbGUucHJldmlld0VsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLWR6LXNpemVdXCIpO1xuICAgICAgICAgIGZvciAoX2ogPSAwLCBfbGVuMSA9IF9yZWYxLmxlbmd0aDsgX2ogPCBfbGVuMTsgX2orKykge1xuICAgICAgICAgICAgbm9kZSA9IF9yZWYxW19qXTtcbiAgICAgICAgICAgIG5vZGUuaW5uZXJIVE1MID0gdGhpcy5maWxlc2l6ZShmaWxlLnNpemUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmFkZFJlbW92ZUxpbmtzKSB7XG4gICAgICAgICAgICBmaWxlLl9yZW1vdmVMaW5rID0gRHJvcHpvbmUuY3JlYXRlRWxlbWVudChcIjxhIGNsYXNzPVxcXCJkei1yZW1vdmVcXFwiIGhyZWY9XFxcImphdmFzY3JpcHQ6dW5kZWZpbmVkO1xcXCIgZGF0YS1kei1yZW1vdmU+XCIgKyB0aGlzLm9wdGlvbnMuZGljdFJlbW92ZUZpbGUgKyBcIjwvYT5cIik7XG4gICAgICAgICAgICBmaWxlLnByZXZpZXdFbGVtZW50LmFwcGVuZENoaWxkKGZpbGUuX3JlbW92ZUxpbmspO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZW1vdmVGaWxlRXZlbnQgPSAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgaWYgKGZpbGUuc3RhdHVzID09PSBEcm9wem9uZS5VUExPQURJTkcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gRHJvcHpvbmUuY29uZmlybShfdGhpcy5vcHRpb25zLmRpY3RDYW5jZWxVcGxvYWRDb25maXJtYXRpb24sIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLnJlbW92ZUZpbGUoZmlsZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKF90aGlzLm9wdGlvbnMuZGljdFJlbW92ZUZpbGVDb25maXJtYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBEcm9wem9uZS5jb25maXJtKF90aGlzLm9wdGlvbnMuZGljdFJlbW92ZUZpbGVDb25maXJtYXRpb24sIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMucmVtb3ZlRmlsZShmaWxlKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMucmVtb3ZlRmlsZShmaWxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSkodGhpcyk7XG4gICAgICAgICAgX3JlZjIgPSBmaWxlLnByZXZpZXdFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1kei1yZW1vdmVdXCIpO1xuICAgICAgICAgIF9yZXN1bHRzID0gW107XG4gICAgICAgICAgZm9yIChfayA9IDAsIF9sZW4yID0gX3JlZjIubGVuZ3RoOyBfayA8IF9sZW4yOyBfaysrKSB7XG4gICAgICAgICAgICByZW1vdmVMaW5rID0gX3JlZjJbX2tdO1xuICAgICAgICAgICAgX3Jlc3VsdHMucHVzaChyZW1vdmVMaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCByZW1vdmVGaWxlRXZlbnQpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIF9yZXN1bHRzO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmVtb3ZlZGZpbGU6IGZ1bmN0aW9uKGZpbGUpIHtcbiAgICAgICAgdmFyIF9yZWY7XG4gICAgICAgIGlmIChmaWxlLnByZXZpZXdFbGVtZW50KSB7XG4gICAgICAgICAgaWYgKChfcmVmID0gZmlsZS5wcmV2aWV3RWxlbWVudCkgIT0gbnVsbCkge1xuICAgICAgICAgICAgX3JlZi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGZpbGUucHJldmlld0VsZW1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fdXBkYXRlTWF4RmlsZXNSZWFjaGVkQ2xhc3MoKTtcbiAgICAgIH0sXG4gICAgICB0aHVtYm5haWw6IGZ1bmN0aW9uKGZpbGUsIGRhdGFVcmwpIHtcbiAgICAgICAgdmFyIHRodW1ibmFpbEVsZW1lbnQsIF9pLCBfbGVuLCBfcmVmO1xuICAgICAgICBpZiAoZmlsZS5wcmV2aWV3RWxlbWVudCkge1xuICAgICAgICAgIGZpbGUucHJldmlld0VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcImR6LWZpbGUtcHJldmlld1wiKTtcbiAgICAgICAgICBfcmVmID0gZmlsZS5wcmV2aWV3RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtZHotdGh1bWJuYWlsXVwiKTtcbiAgICAgICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IF9yZWYubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgICAgIHRodW1ibmFpbEVsZW1lbnQgPSBfcmVmW19pXTtcbiAgICAgICAgICAgIHRodW1ibmFpbEVsZW1lbnQuYWx0ID0gZmlsZS5uYW1lO1xuICAgICAgICAgICAgdGh1bWJuYWlsRWxlbWVudC5zcmMgPSBkYXRhVXJsO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gc2V0VGltZW91dCgoKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmaWxlLnByZXZpZXdFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJkei1pbWFnZS1wcmV2aWV3XCIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSh0aGlzKSksIDEpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGZ1bmN0aW9uKGZpbGUsIG1lc3NhZ2UpIHtcbiAgICAgICAgdmFyIG5vZGUsIF9pLCBfbGVuLCBfcmVmLCBfcmVzdWx0cztcbiAgICAgICAgaWYgKGZpbGUucHJldmlld0VsZW1lbnQpIHtcbiAgICAgICAgICBmaWxlLnByZXZpZXdFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJkei1lcnJvclwiKTtcbiAgICAgICAgICBpZiAodHlwZW9mIG1lc3NhZ2UgIT09IFwiU3RyaW5nXCIgJiYgbWVzc2FnZS5lcnJvcikge1xuICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UuZXJyb3I7XG4gICAgICAgICAgfVxuICAgICAgICAgIF9yZWYgPSBmaWxlLnByZXZpZXdFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1kei1lcnJvcm1lc3NhZ2VdXCIpO1xuICAgICAgICAgIF9yZXN1bHRzID0gW107XG4gICAgICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgICAgICBub2RlID0gX3JlZltfaV07XG4gICAgICAgICAgICBfcmVzdWx0cy5wdXNoKG5vZGUudGV4dENvbnRlbnQgPSBtZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIF9yZXN1bHRzO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3JtdWx0aXBsZTogbm9vcCxcbiAgICAgIHByb2Nlc3Npbmc6IGZ1bmN0aW9uKGZpbGUpIHtcbiAgICAgICAgaWYgKGZpbGUucHJldmlld0VsZW1lbnQpIHtcbiAgICAgICAgICBmaWxlLnByZXZpZXdFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJkei1wcm9jZXNzaW5nXCIpO1xuICAgICAgICAgIGlmIChmaWxlLl9yZW1vdmVMaW5rKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsZS5fcmVtb3ZlTGluay50ZXh0Q29udGVudCA9IHRoaXMub3B0aW9ucy5kaWN0Q2FuY2VsVXBsb2FkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHByb2Nlc3NpbmdtdWx0aXBsZTogbm9vcCxcbiAgICAgIHVwbG9hZHByb2dyZXNzOiBmdW5jdGlvbihmaWxlLCBwcm9ncmVzcywgYnl0ZXNTZW50KSB7XG4gICAgICAgIHZhciBub2RlLCBfaSwgX2xlbiwgX3JlZiwgX3Jlc3VsdHM7XG4gICAgICAgIGlmIChmaWxlLnByZXZpZXdFbGVtZW50KSB7XG4gICAgICAgICAgX3JlZiA9IGZpbGUucHJldmlld0VsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLWR6LXVwbG9hZHByb2dyZXNzXVwiKTtcbiAgICAgICAgICBfcmVzdWx0cyA9IFtdO1xuICAgICAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gX3JlZi5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICAgICAgbm9kZSA9IF9yZWZbX2ldO1xuICAgICAgICAgICAgaWYgKG5vZGUubm9kZU5hbWUgPT09ICdQUk9HUkVTUycpIHtcbiAgICAgICAgICAgICAgX3Jlc3VsdHMucHVzaChub2RlLnZhbHVlID0gcHJvZ3Jlc3MpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgX3Jlc3VsdHMucHVzaChub2RlLnN0eWxlLndpZHRoID0gXCJcIiArIHByb2dyZXNzICsgXCIlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gX3Jlc3VsdHM7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0b3RhbHVwbG9hZHByb2dyZXNzOiBub29wLFxuICAgICAgc2VuZGluZzogbm9vcCxcbiAgICAgIHNlbmRpbmdtdWx0aXBsZTogbm9vcCxcbiAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGZpbGUpIHtcbiAgICAgICAgaWYgKGZpbGUucHJldmlld0VsZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4gZmlsZS5wcmV2aWV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiZHotc3VjY2Vzc1wiKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHN1Y2Nlc3NtdWx0aXBsZTogbm9vcCxcbiAgICAgIGNhbmNlbGVkOiBmdW5jdGlvbihmaWxlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVtaXQoXCJlcnJvclwiLCBmaWxlLCBcIlVwbG9hZCBjYW5jZWxlZC5cIik7XG4gICAgICB9LFxuICAgICAgY2FuY2VsZWRtdWx0aXBsZTogbm9vcCxcbiAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbihmaWxlKSB7XG4gICAgICAgIGlmIChmaWxlLl9yZW1vdmVMaW5rKSB7XG4gICAgICAgICAgZmlsZS5fcmVtb3ZlTGluay50ZXh0Q29udGVudCA9IHRoaXMub3B0aW9ucy5kaWN0UmVtb3ZlRmlsZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsZS5wcmV2aWV3RWxlbWVudCkge1xuICAgICAgICAgIHJldHVybiBmaWxlLnByZXZpZXdFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJkei1jb21wbGV0ZVwiKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGNvbXBsZXRlbXVsdGlwbGU6IG5vb3AsXG4gICAgICBtYXhmaWxlc2V4Y2VlZGVkOiBub29wLFxuICAgICAgbWF4ZmlsZXNyZWFjaGVkOiBub29wLFxuICAgICAgcXVldWVjb21wbGV0ZTogbm9vcCxcbiAgICAgIGFkZGVkZmlsZXM6IG5vb3AsXG4gICAgICBwcmV2aWV3VGVtcGxhdGU6IFwiPGRpdiBjbGFzcz1cXFwiZHotcHJldmlldyBkei1maWxlLXByZXZpZXdcXFwiPlxcbiAgPGRpdiBjbGFzcz1cXFwiZHotaW1hZ2VcXFwiPjxpbWcgZGF0YS1kei10aHVtYm5haWwgLz48L2Rpdj5cXG4gIDxkaXYgY2xhc3M9XFxcImR6LWRldGFpbHNcXFwiPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJkei1zaXplXFxcIj48c3BhbiBkYXRhLWR6LXNpemU+PC9zcGFuPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJkei1maWxlbmFtZVxcXCI+PHNwYW4gZGF0YS1kei1uYW1lPjwvc3Bhbj48L2Rpdj5cXG4gIDwvZGl2PlxcbiAgPGRpdiBjbGFzcz1cXFwiZHotcHJvZ3Jlc3NcXFwiPjxzcGFuIGNsYXNzPVxcXCJkei11cGxvYWRcXFwiIGRhdGEtZHotdXBsb2FkcHJvZ3Jlc3M+PC9zcGFuPjwvZGl2PlxcbiAgPGRpdiBjbGFzcz1cXFwiZHotZXJyb3ItbWVzc2FnZVxcXCI+PHNwYW4gZGF0YS1kei1lcnJvcm1lc3NhZ2U+PC9zcGFuPjwvZGl2PlxcbiAgPGRpdiBjbGFzcz1cXFwiZHotc3VjY2Vzcy1tYXJrXFxcIj5cXG4gICAgPHN2ZyB3aWR0aD1cXFwiNTRweFxcXCIgaGVpZ2h0PVxcXCI1NHB4XFxcIiB2aWV3Qm94PVxcXCIwIDAgNTQgNTRcXFwiIHZlcnNpb249XFxcIjEuMVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB4bWxuczp4bGluaz1cXFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1xcXCIgeG1sbnM6c2tldGNoPVxcXCJodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2gvbnNcXFwiPlxcbiAgICAgIDx0aXRsZT5DaGVjazwvdGl0bGU+XFxuICAgICAgPGRlZnM+PC9kZWZzPlxcbiAgICAgIDxnIGlkPVxcXCJQYWdlLTFcXFwiIHN0cm9rZT1cXFwibm9uZVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxXFxcIiBmaWxsPVxcXCJub25lXFxcIiBmaWxsLXJ1bGU9XFxcImV2ZW5vZGRcXFwiIHNrZXRjaDp0eXBlPVxcXCJNU1BhZ2VcXFwiPlxcbiAgICAgICAgPHBhdGggZD1cXFwiTTIzLjUsMzEuODQzMTQ1OCBMMTcuNTg1MjQxOSwyNS45MjgzODc3IEMxNi4wMjQ4MjUzLDI0LjM2Nzk3MTEgMTMuNDkxMDI5NCwyNC4zNjY4MzUgMTEuOTI4OTMyMiwyNS45Mjg5MzIyIEMxMC4zNzAwMTM2LDI3LjQ4Nzg1MDggMTAuMzY2NTkxMiwzMC4wMjM0NDU1IDExLjkyODM4NzcsMzEuNTg1MjQxOSBMMjAuNDE0NzU4MSw0MC4wNzE2MTIzIEMyMC41MTMzOTk5LDQwLjE3MDI1NDEgMjAuNjE1OTMxNSw0MC4yNjI2NjQ5IDIwLjcyMTg2MTUsNDAuMzQ4ODQzNSBDMjIuMjgzNTY2OSw0MS44NzI1NjUxIDI0Ljc5NDIzNCw0MS44NjI2MjAyIDI2LjM0NjE1NjQsNDAuMzEwNjk3OCBMNDMuMzEwNjk3OCwyMy4zNDYxNTY0IEM0NC44NzcxMDIxLDIxLjc3OTc1MjEgNDQuODc1ODA1NywxOS4yNDgzODg3IDQzLjMxMzcwODUsMTcuNjg2MjkxNSBDNDEuNzU0Nzg5OSwxNi4xMjczNzI5IDM5LjIxNzYwMzUsMTYuMTI1NTQyMiAzNy42NTM4NDM2LDE3LjY4OTMwMjIgTDIzLjUsMzEuODQzMTQ1OCBaIE0yNyw1MyBDNDEuMzU5NDAzNSw1MyA1Myw0MS4zNTk0MDM1IDUzLDI3IEM1MywxMi42NDA1OTY1IDQxLjM1OTQwMzUsMSAyNywxIEMxMi42NDA1OTY1LDEgMSwxMi42NDA1OTY1IDEsMjcgQzEsNDEuMzU5NDAzNSAxMi42NDA1OTY1LDUzIDI3LDUzIFpcXFwiIGlkPVxcXCJPdmFsLTJcXFwiIHN0cm9rZS1vcGFjaXR5PVxcXCIwLjE5ODc5NDE1OFxcXCIgc3Ryb2tlPVxcXCIjNzQ3NDc0XFxcIiBmaWxsLW9wYWNpdHk9XFxcIjAuODE2NTE5NDc1XFxcIiBmaWxsPVxcXCIjRkZGRkZGXFxcIiBza2V0Y2g6dHlwZT1cXFwiTVNTaGFwZUdyb3VwXFxcIj48L3BhdGg+XFxuICAgICAgPC9nPlxcbiAgICA8L3N2Zz5cXG4gIDwvZGl2PlxcbiAgPGRpdiBjbGFzcz1cXFwiZHotZXJyb3ItbWFya1xcXCI+XFxuICAgIDxzdmcgd2lkdGg9XFxcIjU0cHhcXFwiIGhlaWdodD1cXFwiNTRweFxcXCIgdmlld0JveD1cXFwiMCAwIDU0IDU0XFxcIiB2ZXJzaW9uPVxcXCIxLjFcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgeG1sbnM6eGxpbms9XFxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcXFwiIHhtbG5zOnNrZXRjaD1cXFwiaHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoL25zXFxcIj5cXG4gICAgICA8dGl0bGU+RXJyb3I8L3RpdGxlPlxcbiAgICAgIDxkZWZzPjwvZGVmcz5cXG4gICAgICA8ZyBpZD1cXFwiUGFnZS0xXFxcIiBzdHJva2U9XFxcIm5vbmVcXFwiIHN0cm9rZS13aWR0aD1cXFwiMVxcXCIgZmlsbD1cXFwibm9uZVxcXCIgZmlsbC1ydWxlPVxcXCJldmVub2RkXFxcIiBza2V0Y2g6dHlwZT1cXFwiTVNQYWdlXFxcIj5cXG4gICAgICAgIDxnIGlkPVxcXCJDaGVjay0rLU92YWwtMlxcXCIgc2tldGNoOnR5cGU9XFxcIk1TTGF5ZXJHcm91cFxcXCIgc3Ryb2tlPVxcXCIjNzQ3NDc0XFxcIiBzdHJva2Utb3BhY2l0eT1cXFwiMC4xOTg3OTQxNThcXFwiIGZpbGw9XFxcIiNGRkZGRkZcXFwiIGZpbGwtb3BhY2l0eT1cXFwiMC44MTY1MTk0NzVcXFwiPlxcbiAgICAgICAgICA8cGF0aCBkPVxcXCJNMzIuNjU2ODU0MiwyOSBMMzguMzEwNjk3OCwyMy4zNDYxNTY0IEMzOS44NzcxMDIxLDIxLjc3OTc1MjEgMzkuODc1ODA1NywxOS4yNDgzODg3IDM4LjMxMzcwODUsMTcuNjg2MjkxNSBDMzYuNzU0Nzg5OSwxNi4xMjczNzI5IDM0LjIxNzYwMzUsMTYuMTI1NTQyMiAzMi42NTM4NDM2LDE3LjY4OTMwMjIgTDI3LDIzLjM0MzE0NTggTDIxLjM0NjE1NjQsMTcuNjg5MzAyMiBDMTkuNzgyMzk2NSwxNi4xMjU1NDIyIDE3LjI0NTIxMDEsMTYuMTI3MzcyOSAxNS42ODYyOTE1LDE3LjY4NjI5MTUgQzE0LjEyNDE5NDMsMTkuMjQ4Mzg4NyAxNC4xMjI4OTc5LDIxLjc3OTc1MjEgMTUuNjg5MzAyMiwyMy4zNDYxNTY0IEwyMS4zNDMxNDU4LDI5IEwxNS42ODkzMDIyLDM0LjY1Mzg0MzYgQzE0LjEyMjg5NzksMzYuMjIwMjQ3OSAxNC4xMjQxOTQzLDM4Ljc1MTYxMTMgMTUuNjg2MjkxNSw0MC4zMTM3MDg1IEMxNy4yNDUyMTAxLDQxLjg3MjYyNzEgMTkuNzgyMzk2NSw0MS44NzQ0NTc4IDIxLjM0NjE1NjQsNDAuMzEwNjk3OCBMMjcsMzQuNjU2ODU0MiBMMzIuNjUzODQzNiw0MC4zMTA2OTc4IEMzNC4yMTc2MDM1LDQxLjg3NDQ1NzggMzYuNzU0Nzg5OSw0MS44NzI2MjcxIDM4LjMxMzcwODUsNDAuMzEzNzA4NSBDMzkuODc1ODA1NywzOC43NTE2MTEzIDM5Ljg3NzEwMjEsMzYuMjIwMjQ3OSAzOC4zMTA2OTc4LDM0LjY1Mzg0MzYgTDMyLjY1Njg1NDIsMjkgWiBNMjcsNTMgQzQxLjM1OTQwMzUsNTMgNTMsNDEuMzU5NDAzNSA1MywyNyBDNTMsMTIuNjQwNTk2NSA0MS4zNTk0MDM1LDEgMjcsMSBDMTIuNjQwNTk2NSwxIDEsMTIuNjQwNTk2NSAxLDI3IEMxLDQxLjM1OTQwMzUgMTIuNjQwNTk2NSw1MyAyNyw1MyBaXFxcIiBpZD1cXFwiT3ZhbC0yXFxcIiBza2V0Y2g6dHlwZT1cXFwiTVNTaGFwZUdyb3VwXFxcIj48L3BhdGg+XFxuICAgICAgICA8L2c+XFxuICAgICAgPC9nPlxcbiAgICA8L3N2Zz5cXG4gIDwvZGl2PlxcbjwvZGl2PlwiXG4gICAgfTtcblxuICAgIGV4dGVuZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGtleSwgb2JqZWN0LCBvYmplY3RzLCB0YXJnZXQsIHZhbCwgX2ksIF9sZW47XG4gICAgICB0YXJnZXQgPSBhcmd1bWVudHNbMF0sIG9iamVjdHMgPSAyIDw9IGFyZ3VtZW50cy5sZW5ndGggPyBfX3NsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSA6IFtdO1xuICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBvYmplY3RzLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgIG9iamVjdCA9IG9iamVjdHNbX2ldO1xuICAgICAgICBmb3IgKGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgICB2YWwgPSBvYmplY3Rba2V5XTtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gRHJvcHpvbmUoZWxlbWVudCwgb3B0aW9ucykge1xuICAgICAgdmFyIGVsZW1lbnRPcHRpb25zLCBmYWxsYmFjaywgX3JlZjtcbiAgICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICB0aGlzLnZlcnNpb24gPSBEcm9wem9uZS52ZXJzaW9uO1xuICAgICAgdGhpcy5kZWZhdWx0T3B0aW9ucy5wcmV2aWV3VGVtcGxhdGUgPSB0aGlzLmRlZmF1bHRPcHRpb25zLnByZXZpZXdUZW1wbGF0ZS5yZXBsYWNlKC9cXG4qL2csIFwiXCIpO1xuICAgICAgdGhpcy5jbGlja2FibGVFbGVtZW50cyA9IFtdO1xuICAgICAgdGhpcy5saXN0ZW5lcnMgPSBbXTtcbiAgICAgIHRoaXMuZmlsZXMgPSBbXTtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5lbGVtZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5lbGVtZW50KTtcbiAgICAgIH1cbiAgICAgIGlmICghKHRoaXMuZWxlbWVudCAmJiAodGhpcy5lbGVtZW50Lm5vZGVUeXBlICE9IG51bGwpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGRyb3B6b25lIGVsZW1lbnQuXCIpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZWxlbWVudC5kcm9wem9uZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEcm9wem9uZSBhbHJlYWR5IGF0dGFjaGVkLlwiKTtcbiAgICAgIH1cbiAgICAgIERyb3B6b25lLmluc3RhbmNlcy5wdXNoKHRoaXMpO1xuICAgICAgdGhpcy5lbGVtZW50LmRyb3B6b25lID0gdGhpcztcbiAgICAgIGVsZW1lbnRPcHRpb25zID0gKF9yZWYgPSBEcm9wem9uZS5vcHRpb25zRm9yRWxlbWVudCh0aGlzLmVsZW1lbnQpKSAhPSBudWxsID8gX3JlZiA6IHt9O1xuICAgICAgdGhpcy5vcHRpb25zID0gZXh0ZW5kKHt9LCB0aGlzLmRlZmF1bHRPcHRpb25zLCBlbGVtZW50T3B0aW9ucywgb3B0aW9ucyAhPSBudWxsID8gb3B0aW9ucyA6IHt9KTtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZm9yY2VGYWxsYmFjayB8fCAhRHJvcHpvbmUuaXNCcm93c2VyU3VwcG9ydGVkKCkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5mYWxsYmFjay5jYWxsKHRoaXMpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0aW9ucy51cmwgPT0gbnVsbCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMudXJsID0gdGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZShcImFjdGlvblwiKTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5vcHRpb25zLnVybCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBVUkwgcHJvdmlkZWQuXCIpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5hY2NlcHRlZEZpbGVzICYmIHRoaXMub3B0aW9ucy5hY2NlcHRlZE1pbWVUeXBlcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJZb3UgY2FuJ3QgcHJvdmlkZSBib3RoICdhY2NlcHRlZEZpbGVzJyBhbmQgJ2FjY2VwdGVkTWltZVR5cGVzJy4gJ2FjY2VwdGVkTWltZVR5cGVzJyBpcyBkZXByZWNhdGVkLlwiKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuYWNjZXB0ZWRNaW1lVHlwZXMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmFjY2VwdGVkRmlsZXMgPSB0aGlzLm9wdGlvbnMuYWNjZXB0ZWRNaW1lVHlwZXM7XG4gICAgICAgIGRlbGV0ZSB0aGlzLm9wdGlvbnMuYWNjZXB0ZWRNaW1lVHlwZXM7XG4gICAgICB9XG4gICAgICB0aGlzLm9wdGlvbnMubWV0aG9kID0gdGhpcy5vcHRpb25zLm1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuICAgICAgaWYgKChmYWxsYmFjayA9IHRoaXMuZ2V0RXhpc3RpbmdGYWxsYmFjaygpKSAmJiBmYWxsYmFjay5wYXJlbnROb2RlKSB7XG4gICAgICAgIGZhbGxiYWNrLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZmFsbGJhY2spO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5wcmV2aWV3c0NvbnRhaW5lciAhPT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5wcmV2aWV3c0NvbnRhaW5lcikge1xuICAgICAgICAgIHRoaXMucHJldmlld3NDb250YWluZXIgPSBEcm9wem9uZS5nZXRFbGVtZW50KHRoaXMub3B0aW9ucy5wcmV2aWV3c0NvbnRhaW5lciwgXCJwcmV2aWV3c0NvbnRhaW5lclwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnByZXZpZXdzQ29udGFpbmVyID0gdGhpcy5lbGVtZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmNsaWNrYWJsZSkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmNsaWNrYWJsZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHRoaXMuY2xpY2thYmxlRWxlbWVudHMgPSBbdGhpcy5lbGVtZW50XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNsaWNrYWJsZUVsZW1lbnRzID0gRHJvcHpvbmUuZ2V0RWxlbWVudHModGhpcy5vcHRpb25zLmNsaWNrYWJsZSwgXCJjbGlja2FibGVcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5nZXRBY2NlcHRlZEZpbGVzID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZmlsZSwgX2ksIF9sZW4sIF9yZWYsIF9yZXN1bHRzO1xuICAgICAgX3JlZiA9IHRoaXMuZmlsZXM7XG4gICAgICBfcmVzdWx0cyA9IFtdO1xuICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgIGZpbGUgPSBfcmVmW19pXTtcbiAgICAgICAgaWYgKGZpbGUuYWNjZXB0ZWQpIHtcbiAgICAgICAgICBfcmVzdWx0cy5wdXNoKGZpbGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gX3Jlc3VsdHM7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5nZXRSZWplY3RlZEZpbGVzID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZmlsZSwgX2ksIF9sZW4sIF9yZWYsIF9yZXN1bHRzO1xuICAgICAgX3JlZiA9IHRoaXMuZmlsZXM7XG4gICAgICBfcmVzdWx0cyA9IFtdO1xuICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgIGZpbGUgPSBfcmVmW19pXTtcbiAgICAgICAgaWYgKCFmaWxlLmFjY2VwdGVkKSB7XG4gICAgICAgICAgX3Jlc3VsdHMucHVzaChmaWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIF9yZXN1bHRzO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuZ2V0RmlsZXNXaXRoU3RhdHVzID0gZnVuY3Rpb24oc3RhdHVzKSB7XG4gICAgICB2YXIgZmlsZSwgX2ksIF9sZW4sIF9yZWYsIF9yZXN1bHRzO1xuICAgICAgX3JlZiA9IHRoaXMuZmlsZXM7XG4gICAgICBfcmVzdWx0cyA9IFtdO1xuICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgIGZpbGUgPSBfcmVmW19pXTtcbiAgICAgICAgaWYgKGZpbGUuc3RhdHVzID09PSBzdGF0dXMpIHtcbiAgICAgICAgICBfcmVzdWx0cy5wdXNoKGZpbGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gX3Jlc3VsdHM7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5nZXRRdWV1ZWRGaWxlcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0RmlsZXNXaXRoU3RhdHVzKERyb3B6b25lLlFVRVVFRCk7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5nZXRVcGxvYWRpbmdGaWxlcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0RmlsZXNXaXRoU3RhdHVzKERyb3B6b25lLlVQTE9BRElORyk7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5nZXRBZGRlZEZpbGVzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRGaWxlc1dpdGhTdGF0dXMoRHJvcHpvbmUuQURERUQpO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuZ2V0QWN0aXZlRmlsZXMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBmaWxlLCBfaSwgX2xlbiwgX3JlZiwgX3Jlc3VsdHM7XG4gICAgICBfcmVmID0gdGhpcy5maWxlcztcbiAgICAgIF9yZXN1bHRzID0gW107XG4gICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IF9yZWYubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgZmlsZSA9IF9yZWZbX2ldO1xuICAgICAgICBpZiAoZmlsZS5zdGF0dXMgPT09IERyb3B6b25lLlVQTE9BRElORyB8fCBmaWxlLnN0YXR1cyA9PT0gRHJvcHpvbmUuUVVFVUVEKSB7XG4gICAgICAgICAgX3Jlc3VsdHMucHVzaChmaWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIF9yZXN1bHRzO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGV2ZW50TmFtZSwgbm9Qcm9wYWdhdGlvbiwgc2V0dXBIaWRkZW5GaWxlSW5wdXQsIF9pLCBfbGVuLCBfcmVmLCBfcmVmMTtcbiAgICAgIGlmICh0aGlzLmVsZW1lbnQudGFnTmFtZSA9PT0gXCJmb3JtXCIpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZShcImVuY3R5cGVcIiwgXCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoXCJkcm9wem9uZVwiKSAmJiAhdGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZHotbWVzc2FnZVwiKSkge1xuICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoRHJvcHpvbmUuY3JlYXRlRWxlbWVudChcIjxkaXYgY2xhc3M9XFxcImR6LWRlZmF1bHQgZHotbWVzc2FnZVxcXCI+PHNwYW4+XCIgKyB0aGlzLm9wdGlvbnMuZGljdERlZmF1bHRNZXNzYWdlICsgXCI8L3NwYW4+PC9kaXY+XCIpKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNsaWNrYWJsZUVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBzZXR1cEhpZGRlbkZpbGVJbnB1dCA9IChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlmIChfdGhpcy5oaWRkZW5GaWxlSW5wdXQpIHtcbiAgICAgICAgICAgICAgX3RoaXMuaGlkZGVuRmlsZUlucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoX3RoaXMuaGlkZGVuRmlsZUlucHV0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF90aGlzLmhpZGRlbkZpbGVJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcbiAgICAgICAgICAgIF90aGlzLmhpZGRlbkZpbGVJbnB1dC5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsIFwiZmlsZVwiKTtcbiAgICAgICAgICAgIGlmICgoX3RoaXMub3B0aW9ucy5tYXhGaWxlcyA9PSBudWxsKSB8fCBfdGhpcy5vcHRpb25zLm1heEZpbGVzID4gMSkge1xuICAgICAgICAgICAgICBfdGhpcy5oaWRkZW5GaWxlSW5wdXQuc2V0QXR0cmlidXRlKFwibXVsdGlwbGVcIiwgXCJtdWx0aXBsZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF90aGlzLmhpZGRlbkZpbGVJbnB1dC5jbGFzc05hbWUgPSBcImR6LWhpZGRlbi1pbnB1dFwiO1xuICAgICAgICAgICAgaWYgKF90aGlzLm9wdGlvbnMuYWNjZXB0ZWRGaWxlcyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIF90aGlzLmhpZGRlbkZpbGVJbnB1dC5zZXRBdHRyaWJ1dGUoXCJhY2NlcHRcIiwgX3RoaXMub3B0aW9ucy5hY2NlcHRlZEZpbGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChfdGhpcy5vcHRpb25zLmNhcHR1cmUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICBfdGhpcy5oaWRkZW5GaWxlSW5wdXQuc2V0QXR0cmlidXRlKFwiY2FwdHVyZVwiLCBfdGhpcy5vcHRpb25zLmNhcHR1cmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX3RoaXMuaGlkZGVuRmlsZUlucHV0LnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuICAgICAgICAgICAgX3RoaXMuaGlkZGVuRmlsZUlucHV0LnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuICAgICAgICAgICAgX3RoaXMuaGlkZGVuRmlsZUlucHV0LnN0eWxlLnRvcCA9IFwiMFwiO1xuICAgICAgICAgICAgICBfdGhpcy5oaWRkZW5GaWxlSW5wdXQuaWQgPSBcInVwbG9hZFwiO1xuICAgICAgICAgICAgICBfdGhpcy5oaWRkZW5GaWxlSW5wdXQuc3R5bGUubGVmdCA9IFwiMFwiO1xuICAgICAgICAgICAgX3RoaXMuaGlkZGVuRmlsZUlucHV0LnN0eWxlLmhlaWdodCA9IFwiMFwiO1xuICAgICAgICAgICAgX3RoaXMuaGlkZGVuRmlsZUlucHV0LnN0eWxlLndpZHRoID0gXCIwXCI7XG4gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKF90aGlzLm9wdGlvbnMuaGlkZGVuSW5wdXRDb250YWluZXIpLmFwcGVuZENoaWxkKF90aGlzLmhpZGRlbkZpbGVJbnB1dCk7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuaGlkZGVuRmlsZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIHZhciBmaWxlLCBmaWxlcywgX2ksIF9sZW47XG4gICAgICAgICAgICAgIGZpbGVzID0gX3RoaXMuaGlkZGVuRmlsZUlucHV0LmZpbGVzO1xuICAgICAgICAgICAgICBpZiAoZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBmaWxlcy5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICAgICAgICAgICAgZmlsZSA9IGZpbGVzW19pXTtcbiAgICAgICAgICAgICAgICAgIF90aGlzLmFkZEZpbGUoZmlsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF90aGlzLmVtaXQoXCJhZGRlZGZpbGVzXCIsIGZpbGVzKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHNldHVwSGlkZGVuRmlsZUlucHV0KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9O1xuICAgICAgICB9KSh0aGlzKTtcbiAgICAgICAgc2V0dXBIaWRkZW5GaWxlSW5wdXQoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuVVJMID0gKF9yZWYgPSB3aW5kb3cuVVJMKSAhPSBudWxsID8gX3JlZiA6IHdpbmRvdy53ZWJraXRVUkw7XG4gICAgICBfcmVmMSA9IHRoaXMuZXZlbnRzO1xuICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmMS5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICBldmVudE5hbWUgPSBfcmVmMVtfaV07XG4gICAgICAgIHRoaXMub24oZXZlbnROYW1lLCB0aGlzLm9wdGlvbnNbZXZlbnROYW1lXSk7XG4gICAgICB9XG4gICAgICB0aGlzLm9uKFwidXBsb2FkcHJvZ3Jlc3NcIiwgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMudXBkYXRlVG90YWxVcGxvYWRQcm9ncmVzcygpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgdGhpcy5vbihcInJlbW92ZWRmaWxlXCIsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLnVwZGF0ZVRvdGFsVXBsb2FkUHJvZ3Jlc3MoKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHRoaXMub24oXCJjYW5jZWxlZFwiLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGZpbGUpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuZW1pdChcImNvbXBsZXRlXCIsIGZpbGUpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgdGhpcy5vbihcImNvbXBsZXRlXCIsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZmlsZSkge1xuICAgICAgICAgIGlmIChfdGhpcy5nZXRBZGRlZEZpbGVzKCkubGVuZ3RoID09PSAwICYmIF90aGlzLmdldFVwbG9hZGluZ0ZpbGVzKCkubGVuZ3RoID09PSAwICYmIF90aGlzLmdldFF1ZXVlZEZpbGVzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIHJldHVybiBfdGhpcy5lbWl0KFwicXVldWVjb21wbGV0ZVwiKTtcbiAgICAgICAgICAgIH0pLCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICBub1Byb3BhZ2F0aW9uID0gZnVuY3Rpb24oZSkge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoZS5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgICAgIHJldHVybiBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGUucmV0dXJuVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMubGlzdGVuZXJzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgZWxlbWVudDogdGhpcy5lbGVtZW50LFxuICAgICAgICAgIGV2ZW50czoge1xuICAgICAgICAgICAgXCJkcmFnc3RhcnRcIjogKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmVtaXQoXCJkcmFnc3RhcnRcIiwgZSk7XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSh0aGlzKSxcbiAgICAgICAgICAgIFwiZHJhZ2VudGVyXCI6IChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIG5vUHJvcGFnYXRpb24oZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmVtaXQoXCJkcmFnZW50ZXJcIiwgZSk7XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSh0aGlzKSxcbiAgICAgICAgICAgIFwiZHJhZ292ZXJcIjogKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVmY3Q7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGVmY3QgPSBlLmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKF9lcnJvcikge31cbiAgICAgICAgICAgICAgICBlLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ21vdmUnID09PSBlZmN0IHx8ICdsaW5rTW92ZScgPT09IGVmY3QgPyAnbW92ZScgOiAnY29weSc7XG4gICAgICAgICAgICAgICAgbm9Qcm9wYWdhdGlvbihlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuZW1pdChcImRyYWdvdmVyXCIsIGUpO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSkodGhpcyksXG4gICAgICAgICAgICBcImRyYWdsZWF2ZVwiOiAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuZW1pdChcImRyYWdsZWF2ZVwiLCBlKTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pKHRoaXMpLFxuICAgICAgICAgICAgXCJkcm9wXCI6IChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIG5vUHJvcGFnYXRpb24oZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmRyb3AoZSk7XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSh0aGlzKSxcbiAgICAgICAgICAgIFwiZHJhZ2VuZFwiOiAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuZW1pdChcImRyYWdlbmRcIiwgZSk7XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSh0aGlzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXTtcbiAgICAgIHRoaXMuY2xpY2thYmxlRWxlbWVudHMuZm9yRWFjaCgoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGNsaWNrYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMubGlzdGVuZXJzLnB1c2goe1xuICAgICAgICAgICAgZWxlbWVudDogY2xpY2thYmxlRWxlbWVudCxcbiAgICAgICAgICAgIGV2ZW50czoge1xuICAgICAgICAgICAgICBcImNsaWNrXCI6IGZ1bmN0aW9uKGV2dCkge1xuICAgICAgICAgICAgICAgIGlmICgoY2xpY2thYmxlRWxlbWVudCAhPT0gX3RoaXMuZWxlbWVudCkgfHwgKGV2dC50YXJnZXQgPT09IF90aGlzLmVsZW1lbnQgfHwgRHJvcHpvbmUuZWxlbWVudEluc2lkZShldnQudGFyZ2V0LCBfdGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZHotbWVzc2FnZVwiKSkpKSB7XG4gICAgICAgICAgICAgICAgICBfdGhpcy5oaWRkZW5GaWxlSW5wdXQuY2xpY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmluaXQuY2FsbCh0aGlzKTtcbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBfcmVmO1xuICAgICAgdGhpcy5kaXNhYmxlKCk7XG4gICAgICB0aGlzLnJlbW92ZUFsbEZpbGVzKHRydWUpO1xuICAgICAgaWYgKChfcmVmID0gdGhpcy5oaWRkZW5GaWxlSW5wdXQpICE9IG51bGwgPyBfcmVmLnBhcmVudE5vZGUgOiB2b2lkIDApIHtcbiAgICAgICAgdGhpcy5oaWRkZW5GaWxlSW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmhpZGRlbkZpbGVJbnB1dCk7XG4gICAgICAgIHRoaXMuaGlkZGVuRmlsZUlucHV0ID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGRlbGV0ZSB0aGlzLmVsZW1lbnQuZHJvcHpvbmU7XG4gICAgICByZXR1cm4gRHJvcHpvbmUuaW5zdGFuY2VzLnNwbGljZShEcm9wem9uZS5pbnN0YW5jZXMuaW5kZXhPZih0aGlzKSwgMSk7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS51cGRhdGVUb3RhbFVwbG9hZFByb2dyZXNzID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgYWN0aXZlRmlsZXMsIGZpbGUsIHRvdGFsQnl0ZXMsIHRvdGFsQnl0ZXNTZW50LCB0b3RhbFVwbG9hZFByb2dyZXNzLCBfaSwgX2xlbiwgX3JlZjtcbiAgICAgIHRvdGFsQnl0ZXNTZW50ID0gMDtcbiAgICAgIHRvdGFsQnl0ZXMgPSAwO1xuICAgICAgYWN0aXZlRmlsZXMgPSB0aGlzLmdldEFjdGl2ZUZpbGVzKCk7XG4gICAgICBpZiAoYWN0aXZlRmlsZXMubGVuZ3RoKSB7XG4gICAgICAgIF9yZWYgPSB0aGlzLmdldEFjdGl2ZUZpbGVzKCk7XG4gICAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gX3JlZi5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICAgIGZpbGUgPSBfcmVmW19pXTtcbiAgICAgICAgICB0b3RhbEJ5dGVzU2VudCArPSBmaWxlLnVwbG9hZC5ieXRlc1NlbnQ7XG4gICAgICAgICAgdG90YWxCeXRlcyArPSBmaWxlLnVwbG9hZC50b3RhbDtcbiAgICAgICAgfVxuICAgICAgICB0b3RhbFVwbG9hZFByb2dyZXNzID0gMTAwICogdG90YWxCeXRlc1NlbnQgLyB0b3RhbEJ5dGVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG90YWxVcGxvYWRQcm9ncmVzcyA9IDEwMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmVtaXQoXCJ0b3RhbHVwbG9hZHByb2dyZXNzXCIsIHRvdGFsVXBsb2FkUHJvZ3Jlc3MsIHRvdGFsQnl0ZXMsIHRvdGFsQnl0ZXNTZW50KTtcbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLl9nZXRQYXJhbU5hbWUgPSBmdW5jdGlvbihuKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5wYXJhbU5hbWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnBhcmFtTmFtZShuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBcIlwiICsgdGhpcy5vcHRpb25zLnBhcmFtTmFtZSArICh0aGlzLm9wdGlvbnMudXBsb2FkTXVsdGlwbGUgPyBcIltcIiArIG4gKyBcIl1cIiA6IFwiXCIpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuZ2V0RmFsbGJhY2tGb3JtID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZXhpc3RpbmdGYWxsYmFjaywgZmllbGRzLCBmaWVsZHNTdHJpbmcsIGZvcm07XG4gICAgICBpZiAoZXhpc3RpbmdGYWxsYmFjayA9IHRoaXMuZ2V0RXhpc3RpbmdGYWxsYmFjaygpKSB7XG4gICAgICAgIHJldHVybiBleGlzdGluZ0ZhbGxiYWNrO1xuICAgICAgfVxuICAgICAgZmllbGRzU3RyaW5nID0gXCI8ZGl2IGNsYXNzPVxcXCJkei1mYWxsYmFja1xcXCI+XCI7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmRpY3RGYWxsYmFja1RleHQpIHtcbiAgICAgICAgZmllbGRzU3RyaW5nICs9IFwiPHA+XCIgKyB0aGlzLm9wdGlvbnMuZGljdEZhbGxiYWNrVGV4dCArIFwiPC9wPlwiO1xuICAgICAgfVxuICAgICAgZmllbGRzU3RyaW5nICs9IFwiPGlucHV0IHR5cGU9XFxcImZpbGVcXFwiIG5hbWU9XFxcIlwiICsgKHRoaXMuX2dldFBhcmFtTmFtZSgwKSkgKyBcIlxcXCIgXCIgKyAodGhpcy5vcHRpb25zLnVwbG9hZE11bHRpcGxlID8gJ211bHRpcGxlPVwibXVsdGlwbGVcIicgOiB2b2lkIDApICsgXCIgLz48aW5wdXQgdHlwZT1cXFwic3VibWl0XFxcIiB2YWx1ZT1cXFwiVXBsb2FkIVxcXCI+PC9kaXY+XCI7XG4gICAgICBmaWVsZHMgPSBEcm9wem9uZS5jcmVhdGVFbGVtZW50KGZpZWxkc1N0cmluZyk7XG4gICAgICBpZiAodGhpcy5lbGVtZW50LnRhZ05hbWUgIT09IFwiRk9STVwiKSB7XG4gICAgICAgIGZvcm0gPSBEcm9wem9uZS5jcmVhdGVFbGVtZW50KFwiPGZvcm0gYWN0aW9uPVxcXCJcIiArIHRoaXMub3B0aW9ucy51cmwgKyBcIlxcXCIgZW5jdHlwZT1cXFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVxcXCIgbWV0aG9kPVxcXCJcIiArIHRoaXMub3B0aW9ucy5tZXRob2QgKyBcIlxcXCI+PC9mb3JtPlwiKTtcbiAgICAgICAgZm9ybS5hcHBlbmRDaGlsZChmaWVsZHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZShcImVuY3R5cGVcIiwgXCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIpO1xuICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKFwibWV0aG9kXCIsIHRoaXMub3B0aW9ucy5tZXRob2QpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm0gIT0gbnVsbCA/IGZvcm0gOiBmaWVsZHM7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5nZXRFeGlzdGluZ0ZhbGxiYWNrID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZmFsbGJhY2ssIGdldEZhbGxiYWNrLCB0YWdOYW1lLCBfaSwgX2xlbiwgX3JlZjtcbiAgICAgIGdldEZhbGxiYWNrID0gZnVuY3Rpb24oZWxlbWVudHMpIHtcbiAgICAgICAgdmFyIGVsLCBfaSwgX2xlbjtcbiAgICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBlbGVtZW50cy5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICAgIGVsID0gZWxlbWVudHNbX2ldO1xuICAgICAgICAgIGlmICgvKF58IClmYWxsYmFjaygkfCApLy50ZXN0KGVsLmNsYXNzTmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBlbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBfcmVmID0gW1wiZGl2XCIsIFwiZm9ybVwiXTtcbiAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gX3JlZi5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICB0YWdOYW1lID0gX3JlZltfaV07XG4gICAgICAgIGlmIChmYWxsYmFjayA9IGdldEZhbGxiYWNrKHRoaXMuZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWdOYW1lKSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLnNldHVwRXZlbnRMaXN0ZW5lcnMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBlbGVtZW50TGlzdGVuZXJzLCBldmVudCwgbGlzdGVuZXIsIF9pLCBfbGVuLCBfcmVmLCBfcmVzdWx0cztcbiAgICAgIF9yZWYgPSB0aGlzLmxpc3RlbmVycztcbiAgICAgIF9yZXN1bHRzID0gW107XG4gICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IF9yZWYubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgZWxlbWVudExpc3RlbmVycyA9IF9yZWZbX2ldO1xuICAgICAgICBfcmVzdWx0cy5wdXNoKChmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgX3JlZjEsIF9yZXN1bHRzMTtcbiAgICAgICAgICBfcmVmMSA9IGVsZW1lbnRMaXN0ZW5lcnMuZXZlbnRzO1xuICAgICAgICAgIF9yZXN1bHRzMSA9IFtdO1xuICAgICAgICAgIGZvciAoZXZlbnQgaW4gX3JlZjEpIHtcbiAgICAgICAgICAgIGxpc3RlbmVyID0gX3JlZjFbZXZlbnRdO1xuICAgICAgICAgICAgX3Jlc3VsdHMxLnB1c2goZWxlbWVudExpc3RlbmVycy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGxpc3RlbmVyLCBmYWxzZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gX3Jlc3VsdHMxO1xuICAgICAgICB9KSgpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBfcmVzdWx0cztcbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXJzID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZWxlbWVudExpc3RlbmVycywgZXZlbnQsIGxpc3RlbmVyLCBfaSwgX2xlbiwgX3JlZiwgX3Jlc3VsdHM7XG4gICAgICBfcmVmID0gdGhpcy5saXN0ZW5lcnM7XG4gICAgICBfcmVzdWx0cyA9IFtdO1xuICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgIGVsZW1lbnRMaXN0ZW5lcnMgPSBfcmVmW19pXTtcbiAgICAgICAgX3Jlc3VsdHMucHVzaCgoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIF9yZWYxLCBfcmVzdWx0czE7XG4gICAgICAgICAgX3JlZjEgPSBlbGVtZW50TGlzdGVuZXJzLmV2ZW50cztcbiAgICAgICAgICBfcmVzdWx0czEgPSBbXTtcbiAgICAgICAgICBmb3IgKGV2ZW50IGluIF9yZWYxKSB7XG4gICAgICAgICAgICBsaXN0ZW5lciA9IF9yZWYxW2V2ZW50XTtcbiAgICAgICAgICAgIF9yZXN1bHRzMS5wdXNoKGVsZW1lbnRMaXN0ZW5lcnMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBsaXN0ZW5lciwgZmFsc2UpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIF9yZXN1bHRzMTtcbiAgICAgICAgfSkoKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gX3Jlc3VsdHM7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5kaXNhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZmlsZSwgX2ksIF9sZW4sIF9yZWYsIF9yZXN1bHRzO1xuICAgICAgdGhpcy5jbGlja2FibGVFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcImR6LWNsaWNrYWJsZVwiKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVycygpO1xuICAgICAgX3JlZiA9IHRoaXMuZmlsZXM7XG4gICAgICBfcmVzdWx0cyA9IFtdO1xuICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgIGZpbGUgPSBfcmVmW19pXTtcbiAgICAgICAgX3Jlc3VsdHMucHVzaCh0aGlzLmNhbmNlbFVwbG9hZChmaWxlKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gX3Jlc3VsdHM7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5lbmFibGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuY2xpY2thYmxlRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJkei1jbGlja2FibGVcIik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0aGlzLnNldHVwRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLmZpbGVzaXplID0gZnVuY3Rpb24oc2l6ZSkge1xuICAgICAgdmFyIGN1dG9mZiwgaSwgc2VsZWN0ZWRTaXplLCBzZWxlY3RlZFVuaXQsIHVuaXQsIHVuaXRzLCBfaSwgX2xlbjtcbiAgICAgIHNlbGVjdGVkU2l6ZSA9IDA7XG4gICAgICBzZWxlY3RlZFVuaXQgPSBcImJcIjtcbiAgICAgIGlmIChzaXplID4gMCkge1xuICAgICAgICB1bml0cyA9IFsnVEInLCAnR0InLCAnTUInLCAnS0InLCAnYiddO1xuICAgICAgICBmb3IgKGkgPSBfaSA9IDAsIF9sZW4gPSB1bml0cy5sZW5ndGg7IF9pIDwgX2xlbjsgaSA9ICsrX2kpIHtcbiAgICAgICAgICB1bml0ID0gdW5pdHNbaV07XG4gICAgICAgICAgY3V0b2ZmID0gTWF0aC5wb3codGhpcy5vcHRpb25zLmZpbGVzaXplQmFzZSwgNCAtIGkpIC8gMTA7XG4gICAgICAgICAgaWYgKHNpemUgPj0gY3V0b2ZmKSB7XG4gICAgICAgICAgICBzZWxlY3RlZFNpemUgPSBzaXplIC8gTWF0aC5wb3codGhpcy5vcHRpb25zLmZpbGVzaXplQmFzZSwgNCAtIGkpO1xuICAgICAgICAgICAgc2VsZWN0ZWRVbml0ID0gdW5pdDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzZWxlY3RlZFNpemUgPSBNYXRoLnJvdW5kKDEwICogc2VsZWN0ZWRTaXplKSAvIDEwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFwiPHN0cm9uZz5cIiArIHNlbGVjdGVkU2l6ZSArIFwiPC9zdHJvbmc+IFwiICsgc2VsZWN0ZWRVbml0O1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuX3VwZGF0ZU1heEZpbGVzUmVhY2hlZENsYXNzID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoKHRoaXMub3B0aW9ucy5tYXhGaWxlcyAhPSBudWxsKSAmJiB0aGlzLmdldEFjY2VwdGVkRmlsZXMoKS5sZW5ndGggPj0gdGhpcy5vcHRpb25zLm1heEZpbGVzKSB7XG4gICAgICAgIGlmICh0aGlzLmdldEFjY2VwdGVkRmlsZXMoKS5sZW5ndGggPT09IHRoaXMub3B0aW9ucy5tYXhGaWxlcykge1xuICAgICAgICAgIHRoaXMuZW1pdCgnbWF4ZmlsZXNyZWFjaGVkJywgdGhpcy5maWxlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiZHotbWF4LWZpbGVzLXJlYWNoZWRcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJkei1tYXgtZmlsZXMtcmVhY2hlZFwiKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLmRyb3AgPSBmdW5jdGlvbihlKSB7XG4gICAgICB2YXIgZmlsZXMsIGl0ZW1zO1xuICAgICAgaWYgKCFlLmRhdGFUcmFuc2Zlcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmVtaXQoXCJkcm9wXCIsIGUpO1xuICAgICAgZmlsZXMgPSBlLmRhdGFUcmFuc2Zlci5maWxlcztcbiAgICAgIHRoaXMuZW1pdChcImFkZGVkZmlsZXNcIiwgZmlsZXMpO1xuICAgICAgaWYgKGZpbGVzLmxlbmd0aCkge1xuICAgICAgICBpdGVtcyA9IGUuZGF0YVRyYW5zZmVyLml0ZW1zO1xuICAgICAgICBpZiAoaXRlbXMgJiYgaXRlbXMubGVuZ3RoICYmIChpdGVtc1swXS53ZWJraXRHZXRBc0VudHJ5ICE9IG51bGwpKSB7XG4gICAgICAgICAgdGhpcy5fYWRkRmlsZXNGcm9tSXRlbXMoaXRlbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaGFuZGxlRmlsZXMoZmlsZXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5wYXN0ZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHZhciBpdGVtcywgX3JlZjtcbiAgICAgIGlmICgoZSAhPSBudWxsID8gKF9yZWYgPSBlLmNsaXBib2FyZERhdGEpICE9IG51bGwgPyBfcmVmLml0ZW1zIDogdm9pZCAwIDogdm9pZCAwKSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZW1pdChcInBhc3RlXCIsIGUpO1xuICAgICAgaXRlbXMgPSBlLmNsaXBib2FyZERhdGEuaXRlbXM7XG4gICAgICBpZiAoaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRGaWxlc0Zyb21JdGVtcyhpdGVtcyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5oYW5kbGVGaWxlcyA9IGZ1bmN0aW9uKGZpbGVzKSB7XG4gICAgICB2YXIgZmlsZSwgX2ksIF9sZW4sIF9yZXN1bHRzO1xuICAgICAgX3Jlc3VsdHMgPSBbXTtcbiAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gZmlsZXMubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgZmlsZSA9IGZpbGVzW19pXTtcbiAgICAgICAgX3Jlc3VsdHMucHVzaCh0aGlzLmFkZEZpbGUoZmlsZSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIF9yZXN1bHRzO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuX2FkZEZpbGVzRnJvbUl0ZW1zID0gZnVuY3Rpb24oaXRlbXMpIHtcbiAgICAgIHZhciBlbnRyeSwgaXRlbSwgX2ksIF9sZW4sIF9yZXN1bHRzO1xuICAgICAgX3Jlc3VsdHMgPSBbXTtcbiAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gaXRlbXMubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgaXRlbSA9IGl0ZW1zW19pXTtcbiAgICAgICAgaWYgKChpdGVtLndlYmtpdEdldEFzRW50cnkgIT0gbnVsbCkgJiYgKGVudHJ5ID0gaXRlbS53ZWJraXRHZXRBc0VudHJ5KCkpKSB7XG4gICAgICAgICAgaWYgKGVudHJ5LmlzRmlsZSkge1xuICAgICAgICAgICAgX3Jlc3VsdHMucHVzaCh0aGlzLmFkZEZpbGUoaXRlbS5nZXRBc0ZpbGUoKSkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZW50cnkuaXNEaXJlY3RvcnkpIHtcbiAgICAgICAgICAgIF9yZXN1bHRzLnB1c2godGhpcy5fYWRkRmlsZXNGcm9tRGlyZWN0b3J5KGVudHJ5LCBlbnRyeS5uYW1lKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF9yZXN1bHRzLnB1c2godm9pZCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5nZXRBc0ZpbGUgIT0gbnVsbCkge1xuICAgICAgICAgIGlmICgoaXRlbS5raW5kID09IG51bGwpIHx8IGl0ZW0ua2luZCA9PT0gXCJmaWxlXCIpIHtcbiAgICAgICAgICAgIF9yZXN1bHRzLnB1c2godGhpcy5hZGRGaWxlKGl0ZW0uZ2V0QXNGaWxlKCkpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgX3Jlc3VsdHMucHVzaCh2b2lkIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfcmVzdWx0cy5wdXNoKHZvaWQgMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBfcmVzdWx0cztcbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLl9hZGRGaWxlc0Zyb21EaXJlY3RvcnkgPSBmdW5jdGlvbihkaXJlY3RvcnksIHBhdGgpIHtcbiAgICAgIHZhciBkaXJSZWFkZXIsIGVudHJpZXNSZWFkZXI7XG4gICAgICBkaXJSZWFkZXIgPSBkaXJlY3RvcnkuY3JlYXRlUmVhZGVyKCk7XG4gICAgICBlbnRyaWVzUmVhZGVyID0gKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihlbnRyaWVzKSB7XG4gICAgICAgICAgdmFyIGVudHJ5LCBfaSwgX2xlbjtcbiAgICAgICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IGVudHJpZXMubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgICAgIGVudHJ5ID0gZW50cmllc1tfaV07XG4gICAgICAgICAgICBpZiAoZW50cnkuaXNGaWxlKSB7XG4gICAgICAgICAgICAgIGVudHJ5LmZpbGUoZnVuY3Rpb24oZmlsZSkge1xuICAgICAgICAgICAgICAgIGlmIChfdGhpcy5vcHRpb25zLmlnbm9yZUhpZGRlbkZpbGVzICYmIGZpbGUubmFtZS5zdWJzdHJpbmcoMCwgMSkgPT09ICcuJykge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaWxlLmZ1bGxQYXRoID0gXCJcIiArIHBhdGggKyBcIi9cIiArIGZpbGUubmFtZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuYWRkRmlsZShmaWxlKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVudHJ5LmlzRGlyZWN0b3J5KSB7XG4gICAgICAgICAgICAgIF90aGlzLl9hZGRGaWxlc0Zyb21EaXJlY3RvcnkoZW50cnksIFwiXCIgKyBwYXRoICsgXCIvXCIgKyBlbnRyeS5uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKTtcbiAgICAgIHJldHVybiBkaXJSZWFkZXIucmVhZEVudHJpZXMoZW50cmllc1JlYWRlciwgZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUgIT09IG51bGwgPyB0eXBlb2YgY29uc29sZS5sb2cgPT09IFwiZnVuY3Rpb25cIiA/IGNvbnNvbGUubG9nKGVycm9yKSA6IHZvaWQgMCA6IHZvaWQgMDtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuYWNjZXB0ID0gZnVuY3Rpb24oZmlsZSwgZG9uZSkge1xuICAgICAgaWYgKGZpbGUuc2l6ZSA+IHRoaXMub3B0aW9ucy5tYXhGaWxlc2l6ZSAqIDEwMjQgKiAxMDI0KSB7XG4gICAgICAgIHJldHVybiBkb25lKHRoaXMub3B0aW9ucy5kaWN0RmlsZVRvb0JpZy5yZXBsYWNlKFwie3tmaWxlc2l6ZX19XCIsIE1hdGgucm91bmQoZmlsZS5zaXplIC8gMTAyNCAvIDEwLjI0KSAvIDEwMCkucmVwbGFjZShcInt7bWF4RmlsZXNpemV9fVwiLCB0aGlzLm9wdGlvbnMubWF4RmlsZXNpemUpKTtcbiAgICAgIH0gZWxzZSBpZiAoIURyb3B6b25lLmlzVmFsaWRGaWxlKGZpbGUsIHRoaXMub3B0aW9ucy5hY2NlcHRlZEZpbGVzKSkge1xuICAgICAgICByZXR1cm4gZG9uZSh0aGlzLm9wdGlvbnMuZGljdEludmFsaWRGaWxlVHlwZSk7XG4gICAgICB9IGVsc2UgaWYgKCh0aGlzLm9wdGlvbnMubWF4RmlsZXMgIT0gbnVsbCkgJiYgdGhpcy5nZXRBY2NlcHRlZEZpbGVzKCkubGVuZ3RoID49IHRoaXMub3B0aW9ucy5tYXhGaWxlcykge1xuICAgICAgICBkb25lKHRoaXMub3B0aW9ucy5kaWN0TWF4RmlsZXNFeGNlZWRlZC5yZXBsYWNlKFwie3ttYXhGaWxlc319XCIsIHRoaXMub3B0aW9ucy5tYXhGaWxlcykpO1xuICAgICAgICByZXR1cm4gdGhpcy5lbWl0KFwibWF4ZmlsZXNleGNlZWRlZFwiLCBmaWxlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYWNjZXB0LmNhbGwodGhpcywgZmlsZSwgZG9uZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5hZGRGaWxlID0gZnVuY3Rpb24oZmlsZSkge1xuICAgICAgZmlsZS51cGxvYWQgPSB7XG4gICAgICAgIHByb2dyZXNzOiAwLFxuICAgICAgICB0b3RhbDogZmlsZS5zaXplLFxuICAgICAgICBieXRlc1NlbnQ6IDBcbiAgICAgIH07XG4gICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZSk7XG4gICAgICBmaWxlLnN0YXR1cyA9IERyb3B6b25lLkFEREVEO1xuICAgICAgdGhpcy5lbWl0KFwiYWRkZWRmaWxlXCIsIGZpbGUpO1xuICAgICAgdGhpcy5fZW5xdWV1ZVRodW1ibmFpbChmaWxlKTtcbiAgICAgIHJldHVybiB0aGlzLmFjY2VwdChmaWxlLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICBmaWxlLmFjY2VwdGVkID0gZmFsc2U7XG4gICAgICAgICAgICBfdGhpcy5fZXJyb3JQcm9jZXNzaW5nKFtmaWxlXSwgZXJyb3IpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWxlLmFjY2VwdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChfdGhpcy5vcHRpb25zLmF1dG9RdWV1ZSkge1xuICAgICAgICAgICAgICBfdGhpcy5lbnF1ZXVlRmlsZShmaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIF90aGlzLl91cGRhdGVNYXhGaWxlc1JlYWNoZWRDbGFzcygpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuZW5xdWV1ZUZpbGVzID0gZnVuY3Rpb24oZmlsZXMpIHtcbiAgICAgIHZhciBmaWxlLCBfaSwgX2xlbjtcbiAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gZmlsZXMubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgZmlsZSA9IGZpbGVzW19pXTtcbiAgICAgICAgdGhpcy5lbnF1ZXVlRmlsZShmaWxlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuZW5xdWV1ZUZpbGUgPSBmdW5jdGlvbihmaWxlKSB7XG4gICAgICBpZiAoZmlsZS5zdGF0dXMgPT09IERyb3B6b25lLkFEREVEICYmIGZpbGUuYWNjZXB0ZWQgPT09IHRydWUpIHtcbiAgICAgICAgZmlsZS5zdGF0dXMgPSBEcm9wem9uZS5RVUVVRUQ7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXV0b1Byb2Nlc3NRdWV1ZSkge1xuICAgICAgICAgIHJldHVybiBzZXRUaW1lb3V0KCgoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLnByb2Nlc3NRdWV1ZSgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSh0aGlzKSksIDApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIGZpbGUgY2FuJ3QgYmUgcXVldWVkIGJlY2F1c2UgaXQgaGFzIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQgb3Igd2FzIHJlamVjdGVkLlwiKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLl90aHVtYm5haWxRdWV1ZSA9IFtdO1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLl9wcm9jZXNzaW5nVGh1bWJuYWlsID0gZmFsc2U7XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUuX2VucXVldWVUaHVtYm5haWwgPSBmdW5jdGlvbihmaWxlKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmNyZWF0ZUltYWdlVGh1bWJuYWlscyAmJiBmaWxlLnR5cGUubWF0Y2goL2ltYWdlLiovKSAmJiBmaWxlLnNpemUgPD0gdGhpcy5vcHRpb25zLm1heFRodW1ibmFpbEZpbGVzaXplICogMTAyNCAqIDEwMjQpIHtcbiAgICAgICAgdGhpcy5fdGh1bWJuYWlsUXVldWUucHVzaChmaWxlKTtcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoKChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5fcHJvY2Vzc1RodW1ibmFpbFF1ZXVlKCk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSkodGhpcykpLCAwKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLl9wcm9jZXNzVGh1bWJuYWlsUXVldWUgPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmICh0aGlzLl9wcm9jZXNzaW5nVGh1bWJuYWlsIHx8IHRoaXMuX3RodW1ibmFpbFF1ZXVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLl9wcm9jZXNzaW5nVGh1bWJuYWlsID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRodW1ibmFpbCh0aGlzLl90aHVtYm5haWxRdWV1ZS5zaGlmdCgpLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIF90aGlzLl9wcm9jZXNzaW5nVGh1bWJuYWlsID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLl9wcm9jZXNzVGh1bWJuYWlsUXVldWUoKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLnJlbW92ZUZpbGUgPSBmdW5jdGlvbihmaWxlKSB7XG4gICAgICBpZiAoZmlsZS5zdGF0dXMgPT09IERyb3B6b25lLlVQTE9BRElORykge1xuICAgICAgICB0aGlzLmNhbmNlbFVwbG9hZChmaWxlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZmlsZXMgPSB3aXRob3V0KHRoaXMuZmlsZXMsIGZpbGUpO1xuICAgICAgdGhpcy5lbWl0KFwicmVtb3ZlZGZpbGVcIiwgZmlsZSk7XG4gICAgICBpZiAodGhpcy5maWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1pdChcInJlc2V0XCIpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUucmVtb3ZlQWxsRmlsZXMgPSBmdW5jdGlvbihjYW5jZWxJZk5lY2Vzc2FyeSkge1xuICAgICAgdmFyIGZpbGUsIF9pLCBfbGVuLCBfcmVmO1xuICAgICAgaWYgKGNhbmNlbElmTmVjZXNzYXJ5ID09IG51bGwpIHtcbiAgICAgICAgY2FuY2VsSWZOZWNlc3NhcnkgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIF9yZWYgPSB0aGlzLmZpbGVzLnNsaWNlKCk7XG4gICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IF9yZWYubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgZmlsZSA9IF9yZWZbX2ldO1xuICAgICAgICBpZiAoZmlsZS5zdGF0dXMgIT09IERyb3B6b25lLlVQTE9BRElORyB8fCBjYW5jZWxJZk5lY2Vzc2FyeSkge1xuICAgICAgICAgIHRoaXMucmVtb3ZlRmlsZShmaWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5jcmVhdGVUaHVtYm5haWwgPSBmdW5jdGlvbihmaWxlLCBjYWxsYmFjaykge1xuICAgICAgdmFyIGZpbGVSZWFkZXI7XG4gICAgICBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXI7XG4gICAgICBmaWxlUmVhZGVyLm9ubG9hZCA9IChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKGZpbGUudHlwZSA9PT0gXCJpbWFnZS9zdmcreG1sXCIpIHtcbiAgICAgICAgICAgIF90aGlzLmVtaXQoXCJ0aHVtYm5haWxcIiwgZmlsZSwgZmlsZVJlYWRlci5yZXN1bHQpO1xuICAgICAgICAgICAgaWYgKGNhbGxiYWNrICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIF90aGlzLmNyZWF0ZVRodW1ibmFpbEZyb21VcmwoZmlsZSwgZmlsZVJlYWRlci5yZXN1bHQsIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpO1xuICAgICAgcmV0dXJuIGZpbGVSZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLmNyZWF0ZVRodW1ibmFpbEZyb21VcmwgPSBmdW5jdGlvbihmaWxlLCBpbWFnZVVybCwgY2FsbGJhY2ssIGNyb3NzT3JpZ2luKSB7XG4gICAgICB2YXIgaW1nO1xuICAgICAgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImltZ1wiKTtcbiAgICAgIGlmIChjcm9zc09yaWdpbikge1xuICAgICAgICBpbWcuY3Jvc3NPcmlnaW4gPSBjcm9zc09yaWdpbjtcbiAgICAgIH1cbiAgICAgIGltZy5vbmxvYWQgPSAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciBjYW52YXMsIGN0eCwgcmVzaXplSW5mbywgdGh1bWJuYWlsLCBfcmVmLCBfcmVmMSwgX3JlZjIsIF9yZWYzO1xuICAgICAgICAgIGZpbGUud2lkdGggPSBpbWcud2lkdGg7XG4gICAgICAgICAgZmlsZS5oZWlnaHQgPSBpbWcuaGVpZ2h0O1xuICAgICAgICAgIHJlc2l6ZUluZm8gPSBfdGhpcy5vcHRpb25zLnJlc2l6ZS5jYWxsKF90aGlzLCBmaWxlKTtcbiAgICAgICAgICBpZiAocmVzaXplSW5mby50cmdXaWR0aCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXNpemVJbmZvLnRyZ1dpZHRoID0gcmVzaXplSW5mby5vcHRXaWR0aDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJlc2l6ZUluZm8udHJnSGVpZ2h0ID09IG51bGwpIHtcbiAgICAgICAgICAgIHJlc2l6ZUluZm8udHJnSGVpZ2h0ID0gcmVzaXplSW5mby5vcHRIZWlnaHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgICAgICAgY3R4ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICAgICAgICBjYW52YXMud2lkdGggPSByZXNpemVJbmZvLnRyZ1dpZHRoO1xuICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSByZXNpemVJbmZvLnRyZ0hlaWdodDtcbiAgICAgICAgICBkcmF3SW1hZ2VJT1NGaXgoY3R4LCBpbWcsIChfcmVmID0gcmVzaXplSW5mby5zcmNYKSAhPSBudWxsID8gX3JlZiA6IDAsIChfcmVmMSA9IHJlc2l6ZUluZm8uc3JjWSkgIT0gbnVsbCA/IF9yZWYxIDogMCwgcmVzaXplSW5mby5zcmNXaWR0aCwgcmVzaXplSW5mby5zcmNIZWlnaHQsIChfcmVmMiA9IHJlc2l6ZUluZm8udHJnWCkgIT0gbnVsbCA/IF9yZWYyIDogMCwgKF9yZWYzID0gcmVzaXplSW5mby50cmdZKSAhPSBudWxsID8gX3JlZjMgOiAwLCByZXNpemVJbmZvLnRyZ1dpZHRoLCByZXNpemVJbmZvLnRyZ0hlaWdodCk7XG4gICAgICAgICAgdGh1bWJuYWlsID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcbiAgICAgICAgICBfdGhpcy5lbWl0KFwidGh1bWJuYWlsXCIsIGZpbGUsIHRodW1ibmFpbCk7XG4gICAgICAgICAgaWYgKGNhbGxiYWNrICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpO1xuICAgICAgaWYgKGNhbGxiYWNrICE9IG51bGwpIHtcbiAgICAgICAgaW1nLm9uZXJyb3IgPSBjYWxsYmFjaztcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbWcuc3JjID0gaW1hZ2VVcmw7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5wcm9jZXNzUXVldWUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBpLCBwYXJhbGxlbFVwbG9hZHMsIHByb2Nlc3NpbmdMZW5ndGgsIHF1ZXVlZEZpbGVzO1xuICAgICAgcGFyYWxsZWxVcGxvYWRzID0gdGhpcy5vcHRpb25zLnBhcmFsbGVsVXBsb2FkcztcbiAgICAgIHByb2Nlc3NpbmdMZW5ndGggPSB0aGlzLmdldFVwbG9hZGluZ0ZpbGVzKCkubGVuZ3RoO1xuICAgICAgaSA9IHByb2Nlc3NpbmdMZW5ndGg7XG4gICAgICBpZiAocHJvY2Vzc2luZ0xlbmd0aCA+PSBwYXJhbGxlbFVwbG9hZHMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcXVldWVkRmlsZXMgPSB0aGlzLmdldFF1ZXVlZEZpbGVzKCk7XG4gICAgICBpZiAoIShxdWV1ZWRGaWxlcy5sZW5ndGggPiAwKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zLnVwbG9hZE11bHRpcGxlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NGaWxlcyhxdWV1ZWRGaWxlcy5zbGljZSgwLCBwYXJhbGxlbFVwbG9hZHMgLSBwcm9jZXNzaW5nTGVuZ3RoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aGlsZSAoaSA8IHBhcmFsbGVsVXBsb2Fkcykge1xuICAgICAgICAgIGlmICghcXVldWVkRmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucHJvY2Vzc0ZpbGUocXVldWVkRmlsZXMuc2hpZnQoKSk7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5wcm9jZXNzRmlsZSA9IGZ1bmN0aW9uKGZpbGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NGaWxlcyhbZmlsZV0pO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUucHJvY2Vzc0ZpbGVzID0gZnVuY3Rpb24oZmlsZXMpIHtcbiAgICAgIHZhciBmaWxlLCBfaSwgX2xlbjtcbiAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gZmlsZXMubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgZmlsZSA9IGZpbGVzW19pXTtcbiAgICAgICAgZmlsZS5wcm9jZXNzaW5nID0gdHJ1ZTtcbiAgICAgICAgZmlsZS5zdGF0dXMgPSBEcm9wem9uZS5VUExPQURJTkc7XG4gICAgICAgIHRoaXMuZW1pdChcInByb2Nlc3NpbmdcIiwgZmlsZSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zLnVwbG9hZE11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuZW1pdChcInByb2Nlc3NpbmdtdWx0aXBsZVwiLCBmaWxlcyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy51cGxvYWRGaWxlcyhmaWxlcyk7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5fZ2V0RmlsZXNXaXRoWGhyID0gZnVuY3Rpb24oeGhyKSB7XG4gICAgICB2YXIgZmlsZSwgZmlsZXM7XG4gICAgICByZXR1cm4gZmlsZXMgPSAoZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBfaSwgX2xlbiwgX3JlZiwgX3Jlc3VsdHM7XG4gICAgICAgIF9yZWYgPSB0aGlzLmZpbGVzO1xuICAgICAgICBfcmVzdWx0cyA9IFtdO1xuICAgICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IF9yZWYubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgICBmaWxlID0gX3JlZltfaV07XG4gICAgICAgICAgaWYgKGZpbGUueGhyID09PSB4aHIpIHtcbiAgICAgICAgICAgIF9yZXN1bHRzLnB1c2goZmlsZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfcmVzdWx0cztcbiAgICAgIH0pLmNhbGwodGhpcyk7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5jYW5jZWxVcGxvYWQgPSBmdW5jdGlvbihmaWxlKSB7XG4gICAgICB2YXIgZ3JvdXBlZEZpbGUsIGdyb3VwZWRGaWxlcywgX2ksIF9qLCBfbGVuLCBfbGVuMSwgX3JlZjtcbiAgICAgIGlmIChmaWxlLnN0YXR1cyA9PT0gRHJvcHpvbmUuVVBMT0FESU5HKSB7XG4gICAgICAgIGdyb3VwZWRGaWxlcyA9IHRoaXMuX2dldEZpbGVzV2l0aFhocihmaWxlLnhocik7XG4gICAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gZ3JvdXBlZEZpbGVzLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgICAgZ3JvdXBlZEZpbGUgPSBncm91cGVkRmlsZXNbX2ldO1xuICAgICAgICAgIGdyb3VwZWRGaWxlLnN0YXR1cyA9IERyb3B6b25lLkNBTkNFTEVEO1xuICAgICAgICB9XG4gICAgICAgIGZpbGUueGhyLmFib3J0KCk7XG4gICAgICAgIGZvciAoX2ogPSAwLCBfbGVuMSA9IGdyb3VwZWRGaWxlcy5sZW5ndGg7IF9qIDwgX2xlbjE7IF9qKyspIHtcbiAgICAgICAgICBncm91cGVkRmlsZSA9IGdyb3VwZWRGaWxlc1tfal07XG4gICAgICAgICAgdGhpcy5lbWl0KFwiY2FuY2VsZWRcIiwgZ3JvdXBlZEZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMudXBsb2FkTXVsdGlwbGUpIHtcbiAgICAgICAgICB0aGlzLmVtaXQoXCJjYW5jZWxlZG11bHRpcGxlXCIsIGdyb3VwZWRGaWxlcyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoKF9yZWYgPSBmaWxlLnN0YXR1cykgPT09IERyb3B6b25lLkFEREVEIHx8IF9yZWYgPT09IERyb3B6b25lLlFVRVVFRCkge1xuICAgICAgICBmaWxlLnN0YXR1cyA9IERyb3B6b25lLkNBTkNFTEVEO1xuICAgICAgICB0aGlzLmVtaXQoXCJjYW5jZWxlZFwiLCBmaWxlKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy51cGxvYWRNdWx0aXBsZSkge1xuICAgICAgICAgIHRoaXMuZW1pdChcImNhbmNlbGVkbXVsdGlwbGVcIiwgW2ZpbGVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5hdXRvUHJvY2Vzc1F1ZXVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NRdWV1ZSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXNvbHZlT3B0aW9uID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgYXJncywgb3B0aW9uO1xuICAgICAgb3B0aW9uID0gYXJndW1lbnRzWzBdLCBhcmdzID0gMiA8PSBhcmd1bWVudHMubGVuZ3RoID8gX19zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkgOiBbXTtcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3B0aW9uO1xuICAgIH07XG5cbiAgICBEcm9wem9uZS5wcm90b3R5cGUudXBsb2FkRmlsZSA9IGZ1bmN0aW9uKGZpbGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnVwbG9hZEZpbGVzKFtmaWxlXSk7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS51cGxvYWRGaWxlcyA9IGZ1bmN0aW9uKGZpbGVzKSB7XG4gICAgICB2YXIgZmlsZSwgZm9ybURhdGEsIGhhbmRsZUVycm9yLCBoZWFkZXJOYW1lLCBoZWFkZXJWYWx1ZSwgaGVhZGVycywgaSwgaW5wdXQsIGlucHV0TmFtZSwgaW5wdXRUeXBlLCBrZXksIG1ldGhvZCwgb3B0aW9uLCBwcm9ncmVzc09iaiwgcmVzcG9uc2UsIHVwZGF0ZVByb2dyZXNzLCB1cmwsIHZhbHVlLCB4aHIsIF9pLCBfaiwgX2ssIF9sLCBfbGVuLCBfbGVuMSwgX2xlbjIsIF9sZW4zLCBfbSwgX3JlZiwgX3JlZjEsIF9yZWYyLCBfcmVmMywgX3JlZjQsIF9yZWY1O1xuICAgICAgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IGZpbGVzLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgIGZpbGUgPSBmaWxlc1tfaV07XG4gICAgICAgIGZpbGUueGhyID0geGhyO1xuICAgICAgfVxuICAgICAgbWV0aG9kID0gcmVzb2x2ZU9wdGlvbih0aGlzLm9wdGlvbnMubWV0aG9kLCBmaWxlcyk7XG4gICAgICB1cmwgPSByZXNvbHZlT3B0aW9uKHRoaXMub3B0aW9ucy51cmwsIGZpbGVzKTtcbiAgICAgIHhoci5vcGVuKG1ldGhvZCwgdXJsLCB0cnVlKTtcbiAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSAhIXRoaXMub3B0aW9ucy53aXRoQ3JlZGVudGlhbHM7XG4gICAgICByZXNwb25zZSA9IG51bGw7XG4gICAgICBoYW5kbGVFcnJvciA9IChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIF9qLCBfbGVuMSwgX3Jlc3VsdHM7XG4gICAgICAgICAgX3Jlc3VsdHMgPSBbXTtcbiAgICAgICAgICBmb3IgKF9qID0gMCwgX2xlbjEgPSBmaWxlcy5sZW5ndGg7IF9qIDwgX2xlbjE7IF9qKyspIHtcbiAgICAgICAgICAgIGZpbGUgPSBmaWxlc1tfal07XG4gICAgICAgICAgICBfcmVzdWx0cy5wdXNoKF90aGlzLl9lcnJvclByb2Nlc3NpbmcoZmlsZXMsIHJlc3BvbnNlIHx8IF90aGlzLm9wdGlvbnMuZGljdFJlc3BvbnNlRXJyb3IucmVwbGFjZShcInt7c3RhdHVzQ29kZX19XCIsIHhoci5zdGF0dXMpLCB4aHIpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIF9yZXN1bHRzO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcyk7XG4gICAgICB1cGRhdGVQcm9ncmVzcyA9IChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkge1xuICAgICAgICAgIHZhciBhbGxGaWxlc0ZpbmlzaGVkLCBwcm9ncmVzcywgX2osIF9rLCBfbCwgX2xlbjEsIF9sZW4yLCBfbGVuMywgX3Jlc3VsdHM7XG4gICAgICAgICAgaWYgKGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgcHJvZ3Jlc3MgPSAxMDAgKiBlLmxvYWRlZCAvIGUudG90YWw7XG4gICAgICAgICAgICBmb3IgKF9qID0gMCwgX2xlbjEgPSBmaWxlcy5sZW5ndGg7IF9qIDwgX2xlbjE7IF9qKyspIHtcbiAgICAgICAgICAgICAgZmlsZSA9IGZpbGVzW19qXTtcbiAgICAgICAgICAgICAgZmlsZS51cGxvYWQgPSB7XG4gICAgICAgICAgICAgICAgcHJvZ3Jlc3M6IHByb2dyZXNzLFxuICAgICAgICAgICAgICAgIHRvdGFsOiBlLnRvdGFsLFxuICAgICAgICAgICAgICAgIGJ5dGVzU2VudDogZS5sb2FkZWRcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWxsRmlsZXNGaW5pc2hlZCA9IHRydWU7XG4gICAgICAgICAgICBwcm9ncmVzcyA9IDEwMDtcbiAgICAgICAgICAgIGZvciAoX2sgPSAwLCBfbGVuMiA9IGZpbGVzLmxlbmd0aDsgX2sgPCBfbGVuMjsgX2srKykge1xuICAgICAgICAgICAgICBmaWxlID0gZmlsZXNbX2tdO1xuICAgICAgICAgICAgICBpZiAoIShmaWxlLnVwbG9hZC5wcm9ncmVzcyA9PT0gMTAwICYmIGZpbGUudXBsb2FkLmJ5dGVzU2VudCA9PT0gZmlsZS51cGxvYWQudG90YWwpKSB7XG4gICAgICAgICAgICAgICAgYWxsRmlsZXNGaW5pc2hlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGZpbGUudXBsb2FkLnByb2dyZXNzID0gcHJvZ3Jlc3M7XG4gICAgICAgICAgICAgIGZpbGUudXBsb2FkLmJ5dGVzU2VudCA9IGZpbGUudXBsb2FkLnRvdGFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGFsbEZpbGVzRmluaXNoZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBfcmVzdWx0cyA9IFtdO1xuICAgICAgICAgIGZvciAoX2wgPSAwLCBfbGVuMyA9IGZpbGVzLmxlbmd0aDsgX2wgPCBfbGVuMzsgX2wrKykge1xuICAgICAgICAgICAgZmlsZSA9IGZpbGVzW19sXTtcbiAgICAgICAgICAgIF9yZXN1bHRzLnB1c2goX3RoaXMuZW1pdChcInVwbG9hZHByb2dyZXNzXCIsIGZpbGUsIHByb2dyZXNzLCBmaWxlLnVwbG9hZC5ieXRlc1NlbnQpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIF9yZXN1bHRzO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcyk7XG4gICAgICB4aHIub25sb2FkID0gKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgdmFyIF9yZWY7XG4gICAgICAgICAgaWYgKGZpbGVzWzBdLnN0YXR1cyA9PT0gRHJvcHpvbmUuQ0FOQ0VMRUQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlICE9PSA0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3BvbnNlID0geGhyLnJlc3BvbnNlVGV4dDtcbiAgICAgICAgICBpZiAoeGhyLmdldFJlc3BvbnNlSGVhZGVyKFwiY29udGVudC10eXBlXCIpICYmIH54aHIuZ2V0UmVzcG9uc2VIZWFkZXIoXCJjb250ZW50LXR5cGVcIikuaW5kZXhPZihcImFwcGxpY2F0aW9uL2pzb25cIikpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJlc3BvbnNlID0gSlNPTi5wYXJzZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9IGNhdGNoIChfZXJyb3IpIHtcbiAgICAgICAgICAgICAgZSA9IF9lcnJvcjtcbiAgICAgICAgICAgICAgcmVzcG9uc2UgPSBcIkludmFsaWQgSlNPTiByZXNwb25zZSBmcm9tIHNlcnZlci5cIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdXBkYXRlUHJvZ3Jlc3MoKTtcbiAgICAgICAgICBpZiAoISgoMjAwIDw9IChfcmVmID0geGhyLnN0YXR1cykgJiYgX3JlZiA8IDMwMCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlRXJyb3IoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzLl9maW5pc2hlZChmaWxlcywgcmVzcG9uc2UsIGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpO1xuICAgICAgeGhyLm9uZXJyb3IgPSAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGlmIChmaWxlc1swXS5zdGF0dXMgPT09IERyb3B6b25lLkNBTkNFTEVEKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBoYW5kbGVFcnJvcigpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcyk7XG4gICAgICBwcm9ncmVzc09iaiA9IChfcmVmID0geGhyLnVwbG9hZCkgIT0gbnVsbCA/IF9yZWYgOiB4aHI7XG4gICAgICBwcm9ncmVzc09iai5vbnByb2dyZXNzID0gdXBkYXRlUHJvZ3Jlc3M7XG4gICAgICBoZWFkZXJzID0ge1xuICAgICAgICBcIkFjY2VwdFwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgXCJDYWNoZS1Db250cm9sXCI6IFwibm8tY2FjaGVcIixcbiAgICAgICAgXCJYLVJlcXVlc3RlZC1XaXRoXCI6IFwiWE1MSHR0cFJlcXVlc3RcIlxuICAgICAgfTtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGVhZGVycykge1xuICAgICAgICBleHRlbmQoaGVhZGVycywgdGhpcy5vcHRpb25zLmhlYWRlcnMpO1xuICAgICAgfVxuICAgICAgZm9yIChoZWFkZXJOYW1lIGluIGhlYWRlcnMpIHtcbiAgICAgICAgaGVhZGVyVmFsdWUgPSBoZWFkZXJzW2hlYWRlck5hbWVdO1xuICAgICAgICBpZiAoaGVhZGVyVmFsdWUpIHtcbiAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihoZWFkZXJOYW1lLCBoZWFkZXJWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBhcmFtcykge1xuICAgICAgICBfcmVmMSA9IHRoaXMub3B0aW9ucy5wYXJhbXM7XG4gICAgICAgIGZvciAoa2V5IGluIF9yZWYxKSB7XG4gICAgICAgICAgdmFsdWUgPSBfcmVmMVtrZXldO1xuICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yIChfaiA9IDAsIF9sZW4xID0gZmlsZXMubGVuZ3RoOyBfaiA8IF9sZW4xOyBfaisrKSB7XG4gICAgICAgIGZpbGUgPSBmaWxlc1tfal07XG4gICAgICAgIHRoaXMuZW1pdChcInNlbmRpbmdcIiwgZmlsZSwgeGhyLCBmb3JtRGF0YSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zLnVwbG9hZE11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuZW1pdChcInNlbmRpbmdtdWx0aXBsZVwiLCBmaWxlcywgeGhyLCBmb3JtRGF0YSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5lbGVtZW50LnRhZ05hbWUgPT09IFwiRk9STVwiKSB7XG4gICAgICAgIF9yZWYyID0gdGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgYnV0dG9uXCIpO1xuICAgICAgICBmb3IgKF9rID0gMCwgX2xlbjIgPSBfcmVmMi5sZW5ndGg7IF9rIDwgX2xlbjI7IF9rKyspIHtcbiAgICAgICAgICBpbnB1dCA9IF9yZWYyW19rXTtcbiAgICAgICAgICBpbnB1dE5hbWUgPSBpbnB1dC5nZXRBdHRyaWJ1dGUoXCJuYW1lXCIpO1xuICAgICAgICAgIGlucHV0VHlwZSA9IGlucHV0LmdldEF0dHJpYnV0ZShcInR5cGVcIik7XG4gICAgICAgICAgaWYgKGlucHV0LnRhZ05hbWUgPT09IFwiU0VMRUNUXCIgJiYgaW5wdXQuaGFzQXR0cmlidXRlKFwibXVsdGlwbGVcIikpIHtcbiAgICAgICAgICAgIF9yZWYzID0gaW5wdXQub3B0aW9ucztcbiAgICAgICAgICAgIGZvciAoX2wgPSAwLCBfbGVuMyA9IF9yZWYzLmxlbmd0aDsgX2wgPCBfbGVuMzsgX2wrKykge1xuICAgICAgICAgICAgICBvcHRpb24gPSBfcmVmM1tfbF07XG4gICAgICAgICAgICAgIGlmIChvcHRpb24uc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoaW5wdXROYW1lLCBvcHRpb24udmFsdWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICghaW5wdXRUeXBlIHx8ICgoX3JlZjQgPSBpbnB1dFR5cGUudG9Mb3dlckNhc2UoKSkgIT09IFwiY2hlY2tib3hcIiAmJiBfcmVmNCAhPT0gXCJyYWRpb1wiKSB8fCBpbnB1dC5jaGVja2VkKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoaW5wdXROYW1lLCBpbnB1dC52YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGkgPSBfbSA9IDAsIF9yZWY1ID0gZmlsZXMubGVuZ3RoIC0gMTsgMCA8PSBfcmVmNSA/IF9tIDw9IF9yZWY1IDogX20gPj0gX3JlZjU7IGkgPSAwIDw9IF9yZWY1ID8gKytfbSA6IC0tX20pIHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKHRoaXMuX2dldFBhcmFtTmFtZShpKSwgZmlsZXNbaV0sIGZpbGVzW2ldLm5hbWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuc3VibWl0UmVxdWVzdCh4aHIsIGZvcm1EYXRhLCBmaWxlcyk7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5zdWJtaXRSZXF1ZXN0ID0gZnVuY3Rpb24oeGhyLCBmb3JtRGF0YSwgZmlsZXMpIHtcbiAgICAgIHJldHVybiB4aHIuc2VuZChmb3JtRGF0YSk7XG4gICAgfTtcblxuICAgIERyb3B6b25lLnByb3RvdHlwZS5fZmluaXNoZWQgPSBmdW5jdGlvbihmaWxlcywgcmVzcG9uc2VUZXh0LCBlKSB7XG4gICAgICB2YXIgZmlsZSwgX2ksIF9sZW47XG4gICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IGZpbGVzLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgIGZpbGUgPSBmaWxlc1tfaV07XG4gICAgICAgIGZpbGUuc3RhdHVzID0gRHJvcHpvbmUuU1VDQ0VTUztcbiAgICAgICAgdGhpcy5lbWl0KFwic3VjY2Vzc1wiLCBmaWxlLCByZXNwb25zZVRleHQsIGUpO1xuICAgICAgICB0aGlzLmVtaXQoXCJjb21wbGV0ZVwiLCBmaWxlKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudXBsb2FkTXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5lbWl0KFwic3VjY2Vzc211bHRpcGxlXCIsIGZpbGVzLCByZXNwb25zZVRleHQsIGUpO1xuICAgICAgICB0aGlzLmVtaXQoXCJjb21wbGV0ZW11bHRpcGxlXCIsIGZpbGVzKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXV0b1Byb2Nlc3NRdWV1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzUXVldWUoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgRHJvcHpvbmUucHJvdG90eXBlLl9lcnJvclByb2Nlc3NpbmcgPSBmdW5jdGlvbihmaWxlcywgbWVzc2FnZSwgeGhyKSB7XG4gICAgICB2YXIgZmlsZSwgX2ksIF9sZW47XG4gICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IGZpbGVzLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgIGZpbGUgPSBmaWxlc1tfaV07XG4gICAgICAgIGZpbGUuc3RhdHVzID0gRHJvcHpvbmUuRVJST1I7XG4gICAgICAgIHRoaXMuZW1pdChcImVycm9yXCIsIGZpbGUsIG1lc3NhZ2UsIHhocik7XG4gICAgICAgIHRoaXMuZW1pdChcImNvbXBsZXRlXCIsIGZpbGUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0aW9ucy51cGxvYWRNdWx0aXBsZSkge1xuICAgICAgICB0aGlzLmVtaXQoXCJlcnJvcm11bHRpcGxlXCIsIGZpbGVzLCBtZXNzYWdlLCB4aHIpO1xuICAgICAgICB0aGlzLmVtaXQoXCJjb21wbGV0ZW11bHRpcGxlXCIsIGZpbGVzKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXV0b1Byb2Nlc3NRdWV1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzUXVldWUoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIERyb3B6b25lO1xuXG4gIH0pKEVtaXR0ZXIpO1xuXG4gIERyb3B6b25lLnZlcnNpb24gPSBcIjQuMi4wXCI7XG5cbiAgRHJvcHpvbmUub3B0aW9ucyA9IHt9O1xuXG4gIERyb3B6b25lLm9wdGlvbnNGb3JFbGVtZW50ID0gZnVuY3Rpb24oZWxlbWVudCkge1xuICAgIGlmIChlbGVtZW50LmdldEF0dHJpYnV0ZShcImlkXCIpKSB7XG4gICAgICByZXR1cm4gRHJvcHpvbmUub3B0aW9uc1tjYW1lbGl6ZShlbGVtZW50LmdldEF0dHJpYnV0ZShcImlkXCIpKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuICB9O1xuXG4gIERyb3B6b25lLmluc3RhbmNlcyA9IFtdO1xuXG4gIERyb3B6b25lLmZvckVsZW1lbnQgPSBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgaWYgKHR5cGVvZiBlbGVtZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlbGVtZW50KTtcbiAgICB9XG4gICAgaWYgKChlbGVtZW50ICE9IG51bGwgPyBlbGVtZW50LmRyb3B6b25lIDogdm9pZCAwKSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBEcm9wem9uZSBmb3VuZCBmb3IgZ2l2ZW4gZWxlbWVudC4gVGhpcyBpcyBwcm9iYWJseSBiZWNhdXNlIHlvdSdyZSB0cnlpbmcgdG8gYWNjZXNzIGl0IGJlZm9yZSBEcm9wem9uZSBoYWQgdGhlIHRpbWUgdG8gaW5pdGlhbGl6ZS4gVXNlIHRoZSBgaW5pdGAgb3B0aW9uIHRvIHNldHVwIGFueSBhZGRpdGlvbmFsIG9ic2VydmVycyBvbiB5b3VyIERyb3B6b25lLlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGVsZW1lbnQuZHJvcHpvbmU7XG4gIH07XG5cbiAgRHJvcHpvbmUuYXV0b0Rpc2NvdmVyID0gdHJ1ZTtcblxuICBEcm9wem9uZS5kaXNjb3ZlciA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBjaGVja0VsZW1lbnRzLCBkcm9wem9uZSwgZHJvcHpvbmVzLCBfaSwgX2xlbiwgX3Jlc3VsdHM7XG4gICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICAgIGRyb3B6b25lcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuZHJvcHpvbmVcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRyb3B6b25lcyA9IFtdO1xuICAgICAgY2hlY2tFbGVtZW50cyA9IGZ1bmN0aW9uKGVsZW1lbnRzKSB7XG4gICAgICAgIHZhciBlbCwgX2ksIF9sZW4sIF9yZXN1bHRzO1xuICAgICAgICBfcmVzdWx0cyA9IFtdO1xuICAgICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IGVsZW1lbnRzLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgICAgZWwgPSBlbGVtZW50c1tfaV07XG4gICAgICAgICAgaWYgKC8oXnwgKWRyb3B6b25lKCR8ICkvLnRlc3QoZWwuY2xhc3NOYW1lKSkge1xuICAgICAgICAgICAgX3Jlc3VsdHMucHVzaChkcm9wem9uZXMucHVzaChlbCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfcmVzdWx0cy5wdXNoKHZvaWQgMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfcmVzdWx0cztcbiAgICAgIH07XG4gICAgICBjaGVja0VsZW1lbnRzKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiZGl2XCIpKTtcbiAgICAgIGNoZWNrRWxlbWVudHMoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJmb3JtXCIpKTtcbiAgICB9XG4gICAgX3Jlc3VsdHMgPSBbXTtcbiAgICBmb3IgKF9pID0gMCwgX2xlbiA9IGRyb3B6b25lcy5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgZHJvcHpvbmUgPSBkcm9wem9uZXNbX2ldO1xuICAgICAgaWYgKERyb3B6b25lLm9wdGlvbnNGb3JFbGVtZW50KGRyb3B6b25lKSAhPT0gZmFsc2UpIHtcbiAgICAgICAgX3Jlc3VsdHMucHVzaChuZXcgRHJvcHpvbmUoZHJvcHpvbmUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF9yZXN1bHRzLnB1c2godm9pZCAwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIF9yZXN1bHRzO1xuICB9O1xuXG4gIERyb3B6b25lLmJsYWNrbGlzdGVkQnJvd3NlcnMgPSBbL29wZXJhLipNYWNpbnRvc2guKnZlcnNpb25cXC8xMi9pXTtcblxuICBEcm9wem9uZS5pc0Jyb3dzZXJTdXBwb3J0ZWQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgY2FwYWJsZUJyb3dzZXIsIHJlZ2V4LCBfaSwgX2xlbiwgX3JlZjtcbiAgICBjYXBhYmxlQnJvd3NlciA9IHRydWU7XG4gICAgaWYgKHdpbmRvdy5GaWxlICYmIHdpbmRvdy5GaWxlUmVhZGVyICYmIHdpbmRvdy5GaWxlTGlzdCAmJiB3aW5kb3cuQmxvYiAmJiB3aW5kb3cuRm9ybURhdGEgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcikge1xuICAgICAgaWYgKCEoXCJjbGFzc0xpc3RcIiBpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKSkpIHtcbiAgICAgICAgY2FwYWJsZUJyb3dzZXIgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF9yZWYgPSBEcm9wem9uZS5ibGFja2xpc3RlZEJyb3dzZXJzO1xuICAgICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IF9yZWYubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgICByZWdleCA9IF9yZWZbX2ldO1xuICAgICAgICAgIGlmIChyZWdleC50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKSB7XG4gICAgICAgICAgICBjYXBhYmxlQnJvd3NlciA9IGZhbHNlO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcGFibGVCcm93c2VyID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBjYXBhYmxlQnJvd3NlcjtcbiAgfTtcblxuICB3aXRob3V0ID0gZnVuY3Rpb24obGlzdCwgcmVqZWN0ZWRJdGVtKSB7XG4gICAgdmFyIGl0ZW0sIF9pLCBfbGVuLCBfcmVzdWx0cztcbiAgICBfcmVzdWx0cyA9IFtdO1xuICAgIGZvciAoX2kgPSAwLCBfbGVuID0gbGlzdC5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgaXRlbSA9IGxpc3RbX2ldO1xuICAgICAgaWYgKGl0ZW0gIT09IHJlamVjdGVkSXRlbSkge1xuICAgICAgICBfcmVzdWx0cy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gX3Jlc3VsdHM7XG4gIH07XG5cbiAgY2FtZWxpemUgPSBmdW5jdGlvbihzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1tcXC1fXShcXHcpL2csIGZ1bmN0aW9uKG1hdGNoKSB7XG4gICAgICByZXR1cm4gbWF0Y2guY2hhckF0KDEpLnRvVXBwZXJDYXNlKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgRHJvcHpvbmUuY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHZhciBkaXY7XG4gICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICBkaXYuaW5uZXJIVE1MID0gc3RyaW5nO1xuICAgIHJldHVybiBkaXYuY2hpbGROb2Rlc1swXTtcbiAgfTtcblxuICBEcm9wem9uZS5lbGVtZW50SW5zaWRlID0gZnVuY3Rpb24oZWxlbWVudCwgY29udGFpbmVyKSB7XG4gICAgaWYgKGVsZW1lbnQgPT09IGNvbnRhaW5lcikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHdoaWxlIChlbGVtZW50ID0gZWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgICBpZiAoZWxlbWVudCA9PT0gY29udGFpbmVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgRHJvcHpvbmUuZ2V0RWxlbWVudCA9IGZ1bmN0aW9uKGVsLCBuYW1lKSB7XG4gICAgdmFyIGVsZW1lbnQ7XG4gICAgaWYgKHR5cGVvZiBlbCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZWwpO1xuICAgIH0gZWxzZSBpZiAoZWwubm9kZVR5cGUgIT0gbnVsbCkge1xuICAgICAgZWxlbWVudCA9IGVsO1xuICAgIH1cbiAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGBcIiArIG5hbWUgKyBcImAgb3B0aW9uIHByb3ZpZGVkLiBQbGVhc2UgcHJvdmlkZSBhIENTUyBzZWxlY3RvciBvciBhIHBsYWluIEhUTUwgZWxlbWVudC5cIik7XG4gICAgfVxuICAgIHJldHVybiBlbGVtZW50O1xuICB9O1xuXG4gIERyb3B6b25lLmdldEVsZW1lbnRzID0gZnVuY3Rpb24oZWxzLCBuYW1lKSB7XG4gICAgdmFyIGUsIGVsLCBlbGVtZW50cywgX2ksIF9qLCBfbGVuLCBfbGVuMSwgX3JlZjtcbiAgICBpZiAoZWxzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGVsZW1lbnRzID0gW107XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IGVscy5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICAgIGVsID0gZWxzW19pXTtcbiAgICAgICAgICBlbGVtZW50cy5wdXNoKHRoaXMuZ2V0RWxlbWVudChlbCwgbmFtZSkpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChfZXJyb3IpIHtcbiAgICAgICAgZSA9IF9lcnJvcjtcbiAgICAgICAgZWxlbWVudHMgPSBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVscyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgZWxlbWVudHMgPSBbXTtcbiAgICAgIF9yZWYgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGVscyk7XG4gICAgICBmb3IgKF9qID0gMCwgX2xlbjEgPSBfcmVmLmxlbmd0aDsgX2ogPCBfbGVuMTsgX2orKykge1xuICAgICAgICBlbCA9IF9yZWZbX2pdO1xuICAgICAgICBlbGVtZW50cy5wdXNoKGVsKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVscy5ub2RlVHlwZSAhPSBudWxsKSB7XG4gICAgICBlbGVtZW50cyA9IFtlbHNdO1xuICAgIH1cbiAgICBpZiAoISgoZWxlbWVudHMgIT0gbnVsbCkgJiYgZWxlbWVudHMubGVuZ3RoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBgXCIgKyBuYW1lICsgXCJgIG9wdGlvbiBwcm92aWRlZC4gUGxlYXNlIHByb3ZpZGUgYSBDU1Mgc2VsZWN0b3IsIGEgcGxhaW4gSFRNTCBlbGVtZW50IG9yIGEgbGlzdCBvZiB0aG9zZS5cIik7XG4gICAgfVxuICAgIHJldHVybiBlbGVtZW50cztcbiAgfTtcblxuICBEcm9wem9uZS5jb25maXJtID0gZnVuY3Rpb24ocXVlc3Rpb24sIGFjY2VwdGVkLCByZWplY3RlZCkge1xuICAgIGlmICh3aW5kb3cuY29uZmlybShxdWVzdGlvbikpIHtcbiAgICAgIHJldHVybiBhY2NlcHRlZCgpO1xuICAgIH0gZWxzZSBpZiAocmVqZWN0ZWQgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHJlamVjdGVkKCk7XG4gICAgfVxuICB9O1xuXG4gIERyb3B6b25lLmlzVmFsaWRGaWxlID0gZnVuY3Rpb24oZmlsZSwgYWNjZXB0ZWRGaWxlcykge1xuICAgIHZhciBiYXNlTWltZVR5cGUsIG1pbWVUeXBlLCB2YWxpZFR5cGUsIF9pLCBfbGVuO1xuICAgIGlmICghYWNjZXB0ZWRGaWxlcykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGFjY2VwdGVkRmlsZXMgPSBhY2NlcHRlZEZpbGVzLnNwbGl0KFwiLFwiKTtcbiAgICBtaW1lVHlwZSA9IGZpbGUudHlwZTtcbiAgICBiYXNlTWltZVR5cGUgPSBtaW1lVHlwZS5yZXBsYWNlKC9cXC8uKiQvLCBcIlwiKTtcbiAgICBmb3IgKF9pID0gMCwgX2xlbiA9IGFjY2VwdGVkRmlsZXMubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgIHZhbGlkVHlwZSA9IGFjY2VwdGVkRmlsZXNbX2ldO1xuICAgICAgdmFsaWRUeXBlID0gdmFsaWRUeXBlLnRyaW0oKTtcbiAgICAgIGlmICh2YWxpZFR5cGUuY2hhckF0KDApID09PSBcIi5cIikge1xuICAgICAgICBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih2YWxpZFR5cGUudG9Mb3dlckNhc2UoKSwgZmlsZS5uYW1lLmxlbmd0aCAtIHZhbGlkVHlwZS5sZW5ndGgpICE9PSAtMSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKC9cXC9cXCokLy50ZXN0KHZhbGlkVHlwZSkpIHtcbiAgICAgICAgaWYgKGJhc2VNaW1lVHlwZSA9PT0gdmFsaWRUeXBlLnJlcGxhY2UoL1xcLy4qJC8sIFwiXCIpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChtaW1lVHlwZSA9PT0gdmFsaWRUeXBlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIGlmICh0eXBlb2YgalF1ZXJ5ICE9PSBcInVuZGVmaW5lZFwiICYmIGpRdWVyeSAhPT0gbnVsbCkge1xuICAgIGpRdWVyeS5mbi5kcm9wem9uZSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBuZXcgRHJvcHpvbmUodGhpcywgb3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBtb2R1bGUgIT09IFwidW5kZWZpbmVkXCIgJiYgbW9kdWxlICE9PSBudWxsKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBEcm9wem9uZTtcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cuRHJvcHpvbmUgPSBEcm9wem9uZTtcbiAgfVxuXG4gIERyb3B6b25lLkFEREVEID0gXCJhZGRlZFwiO1xuXG4gIERyb3B6b25lLlFVRVVFRCA9IFwicXVldWVkXCI7XG5cbiAgRHJvcHpvbmUuQUNDRVBURUQgPSBEcm9wem9uZS5RVUVVRUQ7XG5cbiAgRHJvcHpvbmUuVVBMT0FESU5HID0gXCJ1cGxvYWRpbmdcIjtcblxuICBEcm9wem9uZS5QUk9DRVNTSU5HID0gRHJvcHpvbmUuVVBMT0FESU5HO1xuXG4gIERyb3B6b25lLkNBTkNFTEVEID0gXCJjYW5jZWxlZFwiO1xuXG4gIERyb3B6b25lLkVSUk9SID0gXCJlcnJvclwiO1xuXG4gIERyb3B6b25lLlNVQ0NFU1MgPSBcInN1Y2Nlc3NcIjtcblxuXG4gIC8qXG4gIFxuICBCdWdmaXggZm9yIGlPUyA2IGFuZCA3XG4gIFNvdXJjZTogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMTkyOTA5OS9odG1sNS1jYW52YXMtZHJhd2ltYWdlLXJhdGlvLWJ1Zy1pb3NcbiAgYmFzZWQgb24gdGhlIHdvcmsgb2YgaHR0cHM6Ly9naXRodWIuY29tL3N0b21pdGEvaW9zLWltYWdlZmlsZS1tZWdhcGl4ZWxcbiAgICovXG5cbiAgZGV0ZWN0VmVydGljYWxTcXVhc2ggPSBmdW5jdGlvbihpbWcpIHtcbiAgICB2YXIgYWxwaGEsIGNhbnZhcywgY3R4LCBkYXRhLCBleSwgaWgsIGl3LCBweSwgcmF0aW8sIHN5O1xuICAgIGl3ID0gaW1nLm5hdHVyYWxXaWR0aDtcbiAgICBpaCA9IGltZy5uYXR1cmFsSGVpZ2h0O1xuICAgIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgY2FudmFzLndpZHRoID0gMTtcbiAgICBjYW52YXMuaGVpZ2h0ID0gaWg7XG4gICAgY3R4ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICBjdHguZHJhd0ltYWdlKGltZywgMCwgMCk7XG4gICAgZGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMSwgaWgpLmRhdGE7XG4gICAgc3kgPSAwO1xuICAgIGV5ID0gaWg7XG4gICAgcHkgPSBpaDtcbiAgICB3aGlsZSAocHkgPiBzeSkge1xuICAgICAgYWxwaGEgPSBkYXRhWyhweSAtIDEpICogNCArIDNdO1xuICAgICAgaWYgKGFscGhhID09PSAwKSB7XG4gICAgICAgIGV5ID0gcHk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzeSA9IHB5O1xuICAgICAgfVxuICAgICAgcHkgPSAoZXkgKyBzeSkgPj4gMTtcbiAgICB9XG4gICAgcmF0aW8gPSBweSAvIGloO1xuICAgIGlmIChyYXRpbyA9PT0gMCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByYXRpbztcbiAgICB9XG4gIH07XG5cbiAgZHJhd0ltYWdlSU9TRml4ID0gZnVuY3Rpb24oY3R4LCBpbWcsIHN4LCBzeSwgc3csIHNoLCBkeCwgZHksIGR3LCBkaCkge1xuICAgIHZhciB2ZXJ0U3F1YXNoUmF0aW87XG4gICAgdmVydFNxdWFzaFJhdGlvID0gZGV0ZWN0VmVydGljYWxTcXVhc2goaW1nKTtcbiAgICByZXR1cm4gY3R4LmRyYXdJbWFnZShpbWcsIHN4LCBzeSwgc3csIHNoLCBkeCwgZHksIGR3LCBkaCAvIHZlcnRTcXVhc2hSYXRpbyk7XG4gIH07XG5cblxuICAvKlxuICAgKiBjb250ZW50bG9hZGVkLmpzXG4gICAqXG4gICAqIEF1dGhvcjogRGllZ28gUGVyaW5pIChkaWVnby5wZXJpbmkgYXQgZ21haWwuY29tKVxuICAgKiBTdW1tYXJ5OiBjcm9zcy1icm93c2VyIHdyYXBwZXIgZm9yIERPTUNvbnRlbnRMb2FkZWRcbiAgICogVXBkYXRlZDogMjAxMDEwMjBcbiAgICogTGljZW5zZTogTUlUXG4gICAqIFZlcnNpb246IDEuMlxuICAgKlxuICAgKiBVUkw6XG4gICAqIGh0dHA6Ly9qYXZhc2NyaXB0Lm53Ym94LmNvbS9Db250ZW50TG9hZGVkL1xuICAgKiBodHRwOi8vamF2YXNjcmlwdC5ud2JveC5jb20vQ29udGVudExvYWRlZC9NSVQtTElDRU5TRVxuICAgKi9cblxuICBjb250ZW50TG9hZGVkID0gZnVuY3Rpb24od2luLCBmbikge1xuICAgIHZhciBhZGQsIGRvYywgZG9uZSwgaW5pdCwgcG9sbCwgcHJlLCByZW0sIHJvb3QsIHRvcDtcbiAgICBkb25lID0gZmFsc2U7XG4gICAgdG9wID0gdHJ1ZTtcbiAgICBkb2MgPSB3aW4uZG9jdW1lbnQ7XG4gICAgcm9vdCA9IGRvYy5kb2N1bWVudEVsZW1lbnQ7XG4gICAgYWRkID0gKGRvYy5hZGRFdmVudExpc3RlbmVyID8gXCJhZGRFdmVudExpc3RlbmVyXCIgOiBcImF0dGFjaEV2ZW50XCIpO1xuICAgIHJlbSA9IChkb2MuYWRkRXZlbnRMaXN0ZW5lciA/IFwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiIDogXCJkZXRhY2hFdmVudFwiKTtcbiAgICBwcmUgPSAoZG9jLmFkZEV2ZW50TGlzdGVuZXIgPyBcIlwiIDogXCJvblwiKTtcbiAgICBpbml0ID0gZnVuY3Rpb24oZSkge1xuICAgICAgaWYgKGUudHlwZSA9PT0gXCJyZWFkeXN0YXRlY2hhbmdlXCIgJiYgZG9jLnJlYWR5U3RhdGUgIT09IFwiY29tcGxldGVcIikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAoZS50eXBlID09PSBcImxvYWRcIiA/IHdpbiA6IGRvYylbcmVtXShwcmUgKyBlLnR5cGUsIGluaXQsIGZhbHNlKTtcbiAgICAgIGlmICghZG9uZSAmJiAoZG9uZSA9IHRydWUpKSB7XG4gICAgICAgIHJldHVybiBmbi5jYWxsKHdpbiwgZS50eXBlIHx8IGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgcG9sbCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGU7XG4gICAgICB0cnkge1xuICAgICAgICByb290LmRvU2Nyb2xsKFwibGVmdFwiKTtcbiAgICAgIH0gY2F0Y2ggKF9lcnJvcikge1xuICAgICAgICBlID0gX2Vycm9yO1xuICAgICAgICBzZXRUaW1lb3V0KHBvbGwsIDUwKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGluaXQoXCJwb2xsXCIpO1xuICAgIH07XG4gICAgaWYgKGRvYy5yZWFkeVN0YXRlICE9PSBcImNvbXBsZXRlXCIpIHtcbiAgICAgIGlmIChkb2MuY3JlYXRlRXZlbnRPYmplY3QgJiYgcm9vdC5kb1Njcm9sbCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRvcCA9ICF3aW4uZnJhbWVFbGVtZW50O1xuICAgICAgICB9IGNhdGNoIChfZXJyb3IpIHt9XG4gICAgICAgIGlmICh0b3ApIHtcbiAgICAgICAgICBwb2xsKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRvY1thZGRdKHByZSArIFwiRE9NQ29udGVudExvYWRlZFwiLCBpbml0LCBmYWxzZSk7XG4gICAgICBkb2NbYWRkXShwcmUgKyBcInJlYWR5c3RhdGVjaGFuZ2VcIiwgaW5pdCwgZmFsc2UpO1xuICAgICAgcmV0dXJuIHdpblthZGRdKHByZSArIFwibG9hZFwiLCBpbml0LCBmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIERyb3B6b25lLl9hdXRvRGlzY292ZXJGdW5jdGlvbiA9IGZ1bmN0aW9uKCkge1xuICAgIGlmIChEcm9wem9uZS5hdXRvRGlzY292ZXIpIHtcbiAgICAgIHJldHVybiBEcm9wem9uZS5kaXNjb3ZlcigpO1xuICAgIH1cbiAgfTtcblxuICBjb250ZW50TG9hZGVkKHdpbmRvdywgRHJvcHpvbmUuX2F1dG9EaXNjb3ZlckZ1bmN0aW9uKTtcblxufSkuY2FsbCh0aGlzKTtcbiIsImRlZmluZShmdW5jdGlvbigpIHtcbiAgICBjb25zdCBPcmRlcl9MaXN0X0RldGFpbCA9ICh7IHV1aWQsIGJhc2tldEZpZWxkMSwgY3VzdG9tZXJJbmZvLCBiYXNrZXRGaWVsZDIsIHBvcywgcHJpY2UsIHByb2R1Y3QsIHN0YXR1cywgYWxsTmV0LCByZU9yZGVyLCByZU9yZGVyT3JkZXIsIHJlT3JkZXJQb3MgfSwgb3JkZXJVdWlkKSA9PiBgXG4gICAgICAgIDxkaXYgc3R5bGU9XCIke3BzYy5vcmRlci5nZXRfcG9zX2JnX2NvbG9yKHN0YXR1cyl9XCIgY2xhc3M9XCJyb3cgJHtwc2Mub3JkZXIuZ2V0X3Bvc19iZ19jb2xvcl9jbGFzcyhzdGF0dXMpfVwiIGlkPVwicm93LSR7dXVpZH1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMSBwLTFcIj4ke3Bvc308L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBwLTFcIj5cbiAgICAgICAgICAgICR7XG4gICAgICAgICAgICAgICAgKHByb2R1Y3QgPT4gcHJvZHVjdC5vcmlnaW5hbFByb2R1Y3QgPyBgPGEgaHJlZj1cIi9hcHBzL2JhY2tlbmQvcHJvZHVjdC9lZGl0L2luZGV4LyR7cHJvZHVjdC5vcmlnaW5hbFByb2R1Y3QudXVpZH1cIj4ke3Byb2R1Y3Qub3JpZ2luYWxQcm9kdWN0LnRpdGxlfTwvYT5gIDogYDxhIGhyZWY9XCIvYXBwcy9iYWNrZW5kL3Byb2R1Y3QvZWRpdC9pbmRleC8ke3Byb2R1Y3QudXVpZH1cIj4ke3Byb2R1Y3QudGl0bGV9PC9hPmAgKShwcm9kdWN0KSAvL2NhbGwgdGhlIGFub255bW91cyBpbmxpbmUgd2l0aCB0aGUgZGF0YSB3ZSBjYXJlIGFib3V0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8YnIvPkFydE5yIGludGVybjogJHtwcm9kdWN0Lm5ySW50ZXJufTxici8+XG4gICAgICAgICAgICAke3BzYy5vcmRlci5nZXRfc3BlY2lhbF9wcm9kdWN0X29wdGlvbnMocHJvZHVjdC5zcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QpfTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xIHAtMVwiPkF1ZmxhZ2U6ICR7cHJpY2UuY291bnR9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEgcC0xXCI+S3VuZGVuIEluZm86ICR7Y3VzdG9tZXJJbmZvfSR7KHJlT3JkZXI/IGA8YnIvPjxzdHJvbmc+SXN0IGVpbmUgTmFjaGJlc3RlbGx1bmc8L3N0cm9uZz5gOmBgKX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMSBwLTFcIj4ke2Jhc2tldEZpZWxkMX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMSBwLTFcIj4ke2Jhc2tldEZpZWxkMn08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMSBwLTEgdGV4dC1lbmRcIj4ke25ldyBJbnRsLk51bWJlckZvcm1hdCgnZGUtREUnLCB7IHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ0VVUicgfSkuZm9ybWF0KHByaWNlLmFsbE5ldC8xMDApfSA8c3Ryb25nPigke25ldyBJbnRsLk51bWJlckZvcm1hdCgnZGUtREUnLCB7IHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ0VVUicgfSkuZm9ybWF0KHByaWNlLmFsbEdyb3NzLzEwMCl9KTwvc3Ryb25nPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yIHAtMiB0ZXh0LWVuZFwiPjxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgYnRuLWdyb3VwLXNtIHctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGRyb3Bkb3duLXRvZ2dsZVwiIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAke3BzYy5vcmRlci5nZXRfcG9zX3N0YXR1cyhzdGF0dXMpLmludGVybmFsTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAke3BzYy5vcmRlci5nZXRfcG9zX3N0YXR1c19sb29wKG9yZGVyVXVpZCwgdXVpZCl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xIHAtMVwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgO1xuXG4gICAgY29uc3QgT3JkZXJfTGlzdF9EZXRhaWxfU2ltcGxlID0gKHsgdXVpZCwgYmFza2V0RmllbGQxLCBjdXN0b21lckluZm8sIGJhc2tldEZpZWxkMiwgcG9zLCBwcmljZSwgcHJvZHVjdCwgc3RhdHVzLCBhbGxOZXQgfSwgb3JkZXJVdWlkKSA9PiBgXG4gICAgICAgIDx0ciBzdHlsZT1cIiR7cHNjLm9yZGVyLmdldF9wb3NfYmdfY29sb3Ioc3RhdHVzKX1cIiBjbGFzcz1cIiR7cHNjLm9yZGVyLmdldF9wb3NfYmdfY29sb3JfY2xhc3Moc3RhdHVzKX1cIj5cbiAgICAgICAgPHRkPi08L3RkPlxuICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgPHRkPiR7cG9zfTwvdGQ+XG4gICAgICAgIDx0ZCBjb2xzcGFuPVwiNFwiPiR7XG4gICAgICAgIChwcm9kdWN0ID0+IHByb2R1Y3Qub3JpZ2luYWxQcm9kdWN0ID8gYDxhIGhyZWY9XCIvYXBwcy9iYWNrZW5kL3Byb2R1Y3QvZWRpdC9pbmRleC8ke3Byb2R1Y3Qub3JpZ2luYWxQcm9kdWN0LnV1aWR9XCI+JHtwcm9kdWN0Lm9yaWdpbmFsUHJvZHVjdC50aXRsZX08L2E+YCA6IGA8YSBocmVmPVwiL2FwcHMvYmFja2VuZC9wcm9kdWN0L2VkaXQvaW5kZXgvJHtwcm9kdWN0LnV1aWR9XCI+JHtwcm9kdWN0LnRpdGxlfTwvYT5gICkocHJvZHVjdCkgLy9jYWxsIHRoZSBhbm9ueW1vdXMgaW5saW5lIHdpdGggdGhlIGRhdGEgd2UgY2FyZSBhYm91dFxuICAgIH08YnIvPkFydE5yIGludGVybjogJHtwcm9kdWN0Lm5ySW50ZXJufTxici8+XG4gICAgICAgICR7cHNjLm9yZGVyLmdldF9zcGVjaWFsX3Byb2R1Y3Rfb3B0aW9ucyhwcm9kdWN0LnNwZWNpYWxQcm9kdWN0VHlwZU9iamVjdCl9PC90ZD5cbiAgICAgICAgPHRkPkF1ZmxhZ2U6ICR7cHJpY2UuY291bnR9PC90ZD5cbiAgICAgICAgPHRkPkt1bmRlbiBJbmZvOiAke2N1c3RvbWVySW5mb308L3RkPlxuICAgICAgICA8dGQ+JHtiYXNrZXRGaWVsZDF9PC90ZD5cbiAgICAgICAgPHRkPiR7YmFza2V0RmllbGQyfTwvdGQ+XG4gICAgICAgIDx0ZD48L3RkPlxuICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPiR7bmV3IEludGwuTnVtYmVyRm9ybWF0KCdkZS1ERScsIHsgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnRVVSJyB9KS5mb3JtYXQocHJpY2UuYWxsTmV0LzEwMCl9IDxzdHJvbmc+KCR7bmV3IEludGwuTnVtYmVyRm9ybWF0KCdkZS1ERScsIHsgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiAnRVVSJyB9KS5mb3JtYXQocHJpY2UuYWxsR3Jvc3MvMTAwKX0pPC9zdHJvbmc+PC90ZD5cbiAgICAgICAgPHRkPiR7cHNjLm9yZGVyLmdldF9wb3Nfc3RhdHVzKHN0YXR1cykuaW50ZXJuYWxOYW1lfTwvdGQ+XG4gICAgICAgIDx0ZD48L3RkPlxuICAgIDwvdHI+XG4gICAgYDtcblxuICAgIGNvbnN0IE9yZGVyX0xpc3RfUG9zX1N0YXR1cyA9IChzdGF0dXMsIG9yZGVyVXVpZCwgcG9zVXVpZCkgPT4gYFxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gc3dpdGNoX3Bvc1wiIGRhdGEtb3JkZXItdXVpZD1cIiR7b3JkZXJVdWlkfVwiIGRhdGEtcG9zLXV1aWQ9XCIke3Bvc1V1aWR9XCIgZGF0YS1zdGF0dXM9XCIke3N0YXR1cy5jb2RlfVwiPiR7c3RhdHVzLmludGVybmFsTmFtZX08L2J1dHRvbj5cbiAgICBgO1xuXG4gICAgY29uc3QgT3JkZXJfTGlzdF9Qb3NfQ2FsY19PcHRpb24gPSAoZWxtKSA9PiBgXG4gICAgICAgIDx0cj48dGQ+JHtlbG0ubmFtZX08L3RkPjx0ZD4ke2VsbS52YWx1ZX08L3RkPjwvdHI+XG4gICAgYDtcbiAgICBcbiAgICByZXR1cm4ge1xuICAgICAgICBcbiAgICAgICAgaW5pdCgpIHtcblxuICAgICAgICAgICAgdGhpcy5sb2FkX3N0YXR1cygpO1xuICAgICAgICAgICAgdGhpcy5iaW5kX2J1dHRvbnMoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRfc3BlY2lhbF9wcm9kdWN0X29wdGlvbnMoc3BlY2lhbFByb2R1Y3RUeXBlT2JqZWN0KSB7XG4gICAgICAgICAgICBpZihzcGVjaWFsUHJvZHVjdFR5cGVPYmplY3QudHlwICE9IDYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiAnPHRhYmxlPicgKyBzcGVjaWFsUHJvZHVjdFR5cGVPYmplY3Qub3B0aW9ucy5tYXAoZWxtID0+IHtcbiAgICAgICAgICAgICAgICBpZihlbG0udHlwZSAhPSAnaGlkZGVuJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3JkZXJfTGlzdF9Qb3NfQ2FsY19PcHRpb24oZWxtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KS5qb2luKCcnKSArICc8L3RhYmxlPic7XG4gICAgICAgIH0sXG5cbiAgICAgICAgbG9hZF9zdGF0dXMoKSB7XG4gICAgICAgICAgICBpZihqd3RfdG9rZW4gIT0gXCJcIikge1xuICAgICAgICAgICAgICAgICQuYWpheCh7XG4gICAgICAgICAgICAgICAgICAgIHVybDogXCIvYXBwcy9hcGkvc3lzdGVtL3N0YXR1c1wiLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiQXV0aG9yaXphdGlvblwiOiBcIkJlYXJlciBcIiArIGp3dF90b2tlblxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwc2Mub3JkZXIuc3RhdHVzX29yZGVyID0gcmVzdWx0Lm9yZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHNjLm9yZGVyLnN0YXR1c19wb3MgPSByZXN1bHQucG9zaXRpb247XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBiaW5kX2J1dHRvbnMoKSB7XG4gICAgICAgICAgICAkKCcudG9vZ2xlX2xpc3RfZGV0YWlsX3ZpZXcnKS5vZmYoKTtcbiAgICAgICAgICAgICQoJy50b29nbGVfbGlzdF9kZXRhaWxfdmlldycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB1dWlkID0gJCh0aGlzKS5kYXRhKCkudXVpZDsgXG4gICAgICAgICAgICAgICAgaWYoJCgnI3Jvd3MtJyArIHV1aWQgKyAnID4gZGl2JykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAkKCcjcm93cy0nICsgdXVpZCkuaHRtbCgnJyk7XG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgIHBzYy5vcmRlci5sb2FkX2RldGFpbCh1dWlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgJCgnLnRvb2dsZV9saXN0X3NpbXBsZV9kZXRhaWxfdmlldycpLm9mZigpO1xuICAgICAgICAgICAgJCgnLnRvb2dsZV9saXN0X3NpbXBsZV9kZXRhaWxfdmlldycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB1dWlkID0gJCh0aGlzKS5kYXRhKCkudXVpZDsgXG4gICAgICAgICAgICAgICAgaWYoJCgnI3Jvd3MtJyArIHV1aWQgKyAnID4gdHInKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICQoJyNyb3dzLScgKyB1dWlkKS5odG1sKCcnKTtcbiAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgcHNjLm9yZGVyLmxvYWRfZGV0YWlsKHV1aWQsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBcbiAgICAgICAgfSxcblxuICAgICAgICBsb2FkX2RldGFpbChvcmRlclV1aWQsIHNpbXBsZSA9IGZhbHNlKSB7XG4gICAgICAgICAgICAkLmFqYXgoe1xuICAgICAgICAgICAgICAgIHVybDogXCIvYXBwcy9hcGkvb3JkZXIvZ2V0b25lYnl1dWlkXCIsXG4gICAgICAgICAgICAgICAgY29udGVudFR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJBdXRob3JpemF0aW9uXCI6IFwiQmVhcmVyIFwiICsgand0X3Rva2VuXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgIHV1aWQ6IG9yZGVyVXVpZFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICBwc2Mub3JkZXIuYnVpbGRfZGV0YWlscyhvcmRlclV1aWQsIHJlc3VsdCwgc2ltcGxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9LFxuXG4gICAgICAgIGJ1aWxkX2RldGFpbHMob3JkZXJVdWlkLCByZXN1bHQsIHNpbXBsZSA9IGZhbHNlKSB7XG4gICAgICAgICAgICBpZihzaW1wbGUpIHtcbiAgICAgICAgICAgICAgICAkKCcjcm93cy0nICsgcmVzdWx0LnV1aWQpLmh0bWwocmVzdWx0LnBvc2l0aW9ucy5tYXAoeCA9PiBPcmRlcl9MaXN0X0RldGFpbF9TaW1wbGUoeCwgb3JkZXJVdWlkKSkuam9pbignJykpO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgJCgnI3Jvd3MtJyArIHJlc3VsdC51dWlkKS5odG1sKHJlc3VsdC5wb3NpdGlvbnMubWFwKHggPT4gT3JkZXJfTGlzdF9EZXRhaWwoeCwgb3JkZXJVdWlkKSkuam9pbignJykpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wb3NpdGlvbnMubWFwKHggPT4gdGhpcy5sb2FkUGx1Z2luRGV0YWlscyh4KSk7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdGhpcy5iaW5kX3N0YXR1c19idXR0b25zKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgbG9hZFBsdWdpbkRldGFpbHMocG9zKSB7XG4gICAgICAgICAgICAkLmFqYXgoe1xuICAgICAgICAgICAgICAgIHVybDogXCIvYXBwcy9hcGkvcG9zaXRpb24vZ2V0cGx1Z2lubGlzdGRldGFpbHMvXCIgKyBwb3MudXVpZCxcbiAgICAgICAgICAgICAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICBcIkF1dGhvcml6YXRpb25cIjogXCJCZWFyZXIgXCIgKyBqd3RfdG9rZW5cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICQoJyNyb3ctJyArIHBvcy51dWlkKS5hcHBlbmQocmVzdWx0Lmh0bWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG5cbiAgICAgICAgYmluZF9zdGF0dXNfYnV0dG9ucygpIHtcbiAgICAgICAgICAgICQoJy5zd2l0Y2hfcG9zJykub2ZmKCk7XG4gICAgICAgICAgICAkKCcuc3dpdGNoX3BvcycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIG9yZGVyVXVpZCA9ICQodGhpcykuZGF0YSgpLm9yZGVyVXVpZDtcbiAgICAgICAgICAgICAgICB2YXIgcG9zVXVpZCA9ICQodGhpcykuZGF0YSgpLnBvc1V1aWQ7XG4gICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9ICQodGhpcykuZGF0YSgpLnN0YXR1cztcblxuICAgICAgICAgICAgICAgICQuYWpheCh7XG4gICAgICAgICAgICAgICAgICAgIHVybDogXCIvYXBwcy9hcGkvcG9zaXRpb24vc3RhdHVzL2NoYW5nZVwiLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiQXV0aG9yaXphdGlvblwiOiBcIkJlYXJlciBcIiArIGp3dF90b2tlblxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcG9zVXVpZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCgnI3Jvd3MtJyArIG9yZGVyVXVpZCkuaHRtbCgnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwc2Mub3JkZXIubG9hZF9kZXRhaWwob3JkZXJVdWlkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0X3Bvc19iZ19jb2xvcihzdGF0dXMpIHtcblxuICAgICAgICAgICAgLypcbiAgICAgICAgICAgIHslIGlmIG9yZGVyU3RhdHVzZS5nZXRQb3NTdGF0dXNDb2xvcihwb3Muc3RhdHVzKSAhPSAnJyAlfWJhY2tncm91bmQtY29sb3I6IHt7IG9yZGVyU3RhdHVzZS5nZXRQb3NTdGF0dXNDb2xvcihwb3Muc3RhdHVzKSB9fXslIGVuZGlmICV9XCJcbiAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IHBzYy5vcmRlci5zdGF0dXNfcG9zLmZpbmQoc3RhdCA9PiBzdGF0LmNvZGUgPT0gc3RhdHVzKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYoZm91bmQgJiYgZm91bmQuY29sb3IgIT0gXCJcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnYmFja2dyb3VuZC1jb2xvcjogJyArIGZvdW5kLmNvbG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0X3Bvc19zdGF0dXMoc3RhdHVzKSB7XG5cbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICB7JSBpZiBvcmRlclN0YXR1c2UuZ2V0UG9zU3RhdHVzQ29sb3IocG9zLnN0YXR1cykgIT0gJycgJX1iYWNrZ3JvdW5kLWNvbG9yOiB7eyBvcmRlclN0YXR1c2UuZ2V0UG9zU3RhdHVzQ29sb3IocG9zLnN0YXR1cykgfX17JSBlbmRpZiAlfVwiXG4gICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29uc3QgZm91bmQgPSBwc2Mub3JkZXIuc3RhdHVzX3Bvcy5maW5kKHN0YXQgPT4gc3RhdC5jb2RlID09IHN0YXR1cyk7XG4gICAgICAgICAgICBpZihmb3VuZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtpbnRlcm5hbE5hbWU6ICdub3RGb3VuZCd9O1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0X3Bvc19iZ19jb2xvcl9jbGFzcyhzdGF0dXMpIHtcblxuICAgICAgICAgICAgLypcbiAgICAgICAgICAgIGNsYXNzPVwieyUgaWYgcG9zLnN0YXR1cyA9PSAxNzAgJX1iZy1saWdodGRhcmt7JSBlbHNlaWYgcG9zLnN0YXR1cyA9PSAyMDAgb3IgcG9zLnN0YXR1cyA9PSAyMTAgJX1iZy1saWdodHN1Y2Nlc3N7JSBlbHNlICV9YmctbGlnaHRkYW5nZXJ7JSBlbmRpZiAlfVxuICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgaWYoc3RhdHVzID09IDE3MCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnYmctbGlnaHRkYXJrJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKHN0YXR1cyA9PSAyMDAgfHwgc3RhdHVzID09IDIxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnYmctbGlnaHRzdWNjZXNzJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuICdiZy1saWdodGRhbmdlcic7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0X3Bvc19zdGF0dXNfbG9vcChvcmRlclV1aWQsIHBvc1V1aWQpIHtcbiAgICAgICAgICAgIHJldHVybiBwc2Mub3JkZXIuc3RhdHVzX3Bvcy5tYXAoeCA9PiBPcmRlcl9MaXN0X1Bvc19TdGF0dXMoeCwgb3JkZXJVdWlkLCBwb3NVdWlkKSkuam9pbignJyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgfVxufSk7XG4iLCJkZWZpbmUoZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHtcblxuICAgICAgICBpbml0KCkge1xuICAgICAgICAgICAgc2V0ID0gcmVxdWlyZSgnLi9wcm9kdWN0L3NldCcpO1xuICAgICAgICAgICAgc2V0LmluaXQoKTtcbiAgICAgICAgfVxuICAgIH1cbn0pOyIsImRlZmluZShmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBidWlsZFRhYmxlKHJlc3VsdCkge1xuICAgICAgICAkKCcucHJvZHVjdF9zZXRfdGFibGUgPiB0Ym9keScpLmVtcHR5KCk7XG5cbiAgICAgICAgJC5lYWNoKHJlc3VsdC5wcm9kdWN0cywgZnVuY3Rpb24oaW5kZXgsIGl0ZW0pIHtcbiAgICAgICAgICAgICQoJy5wcm9kdWN0X3NldF90YWJsZSA+IHRib2R5JykuYXBwZW5kKCc8dHI+PHRkPicgKyBpdGVtLnRpdGxlICsgJzwvdGQ+PHRkPjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtdXVpZD0nICsgaXRlbS51dWlkICsgJyBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIGJ0bi1zbSBwcm9kdWN0X3NldF9kZWxldGVfYnV0dG9uXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS10cmFzaFwiPjwvc3Bhbj48L2J1dHRvbj48L3RkPjwvdHI+Jyk7XG4gICAgICAgIH0pXG5cbiAgICAgICAgYmluZERlbGV0ZUJ1dHRvbnMoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBiaW5kRGVsZXRlQnV0dG9ucygpIHtcbiAgICAgICAgJCgnLnByb2R1Y3Rfc2V0X2RlbGV0ZV9idXR0b24nKS5jbGljayhmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICQoJyNvdmVybGF5X2xvYWRpbmcnKS5mYWRlSW4oKTtcbiAgICAgICAgICAgICQuYWpheCh7XG4gICAgICAgICAgICAgICAgdXJsOiBcIi9hcHBzL2FwaS9wcm9kdWN0L1wiICsgcHJvZHVjdFV1aWQgKyBcIi9zZXRcIixcbiAgICAgICAgICAgICAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICBcIkF1dGhvcml6YXRpb25cIjogXCJCZWFyZXIgXCIgKyBqd3RfdG9rZW5cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICBwcm9kdWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1dWlkOiAkKHRoaXMpLmRhdGEoJ3V1aWQnKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICBidWlsZFRhYmxlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgICQoJyNvdmVybGF5X2xvYWRpbmcnKS5mYWRlT3V0KCk7XG4gICAgfVxuICAgIHJldHVybiB7XG5cbiAgICAgICAgaW5pdCgpIHtcbiAgICAgICAgICAgIGlmKCQoJy5wcm9kdWN0X3NldF9hZGRfYnV0dG9uJykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdEFkZEJ1dHRvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZFRhYmxlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBpbml0QWRkQnV0dG9uKCkge1xuICAgICAgICAgICAgJCgnLnByb2R1Y3Rfc2V0X2FkZF9idXR0b24nKS5jbGljayhmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAkKCcjb3ZlcmxheV9sb2FkaW5nJykuZmFkZUluKCk7XG4gICAgICAgICAgICAgICAgJC5hamF4KHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBcIi9hcHBzL2FwaS9wcm9kdWN0L1wiICsgcHJvZHVjdFV1aWQgKyBcIi9zZXRcIixcbiAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIkF1dGhvcml6YXRpb25cIjogXCJCZWFyZXIgXCIgKyBqd3RfdG9rZW5cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUFVUJyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV1aWQ6ICQodGhpcykuZGF0YSgndXVpZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZFRhYmxlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG5cbiAgICAgICAgbG9hZFRhYmxlKCkge1xuICAgICAgICAgICAgJCgnI292ZXJsYXlfbG9hZGluZycpLmZhZGVJbigpO1xuICAgICAgICAgICAgJC5hamF4KHtcbiAgICAgICAgICAgICAgICB1cmw6IFwiL2FwcHMvYXBpL3Byb2R1Y3QvXCIgKyBwcm9kdWN0VXVpZCArIFwiL3NldFwiLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiQXV0aG9yaXphdGlvblwiOiBcIkJlYXJlciBcIiArIGp3dF90b2tlblxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1aWxkVGFibGUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuXG4gICAgfVxufSk7IiwiKGZ1bmN0aW9uIChmYWN0b3J5KSB7XG4gICAgLyogZ2xvYmFsIGRlZmluZSAqL1xuICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcbiAgICAgICAgLy8gQU1ELiBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgbW9kdWxlLlxuICAgICAgICBkZWZpbmUoWydqcXVlcnknXSwgZmFjdG9yeSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQnJvd3NlciBnbG9iYWxzOiBqUXVlcnlcbiAgICAgICAgZmFjdG9yeSh3aW5kb3cualF1ZXJ5KTtcbiAgICB9XG59KGZ1bmN0aW9uICgkKXtcbiAgICAkLmV4dGVuZCgkLnN1bW1lcm5vdGUucGx1Z2lucywge1xuICAgICAgICAnbWVkaWEnOiBmdW5jdGlvbihjb250ZXh0KSB7XG4gICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgICAgIC8vIHVpIGhhcyByZW5kZXJzIHRvIGJ1aWxkIHVpIGVsZW1lbnRzLlxuICAgICAgICAgICAgLy8gIC0geW91IGNhbiBjcmVhdGUgYSBidXR0b24gd2l0aCBgdWkuYnV0dG9uYFxuICAgICAgICAgICAgdmFyIHVpID0gJC5zdW1tZXJub3RlLnVpO1xuXG4gICAgICAgICAgICAvLyBhZGQgaGVsbG8gYnV0dG9uXG4gICAgICAgICAgICBjb250ZXh0Lm1lbW8oJ2J1dHRvbi5tZWRpYScsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBidXR0b25cbiAgICAgICAgICAgICAgICB2YXIgYnV0dG9uID0gdWkuYnV0dG9uKHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudHM6ICc8aSBjbGFzcz1cImZhIGZhLWltYWdlc1wiLz4gTWVkaWEnLFxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiAnTWVkaWEnLFxuICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZWRpYUJ1bmRsZUJyb3dzZXIoY29udGV4dC4kbm90ZS5hdHRyKCdpZCcpKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBqUXVlcnkgb2JqZWN0IGZyb20gYnV0dG9uIGluc3RhbmNlLlxuICAgICAgICAgICAgICAgIHZhciAkbWVkaWEgPSBidXR0b24ucmVuZGVyKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICRtZWRpYTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbn0pKTsiLCIhZnVuY3Rpb24odCxlKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKGUpOlwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSxleHBvcnRzLG1vZHVsZSk6dC5UZXRoZXI9ZSgpfSh0aGlzLGZ1bmN0aW9uKHQsZSxvKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX1mdW5jdGlvbiBpKHQpe3ZhciBlPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz17fTtmb3IodmFyIG4gaW4gZSlvW25dPWVbbl07aWYodC5vd25lckRvY3VtZW50IT09ZG9jdW1lbnQpe3ZhciByPXQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5mcmFtZUVsZW1lbnQ7aWYocil7dmFyIHM9aShyKTtvLnRvcCs9cy50b3Asby5ib3R0b20rPXMudG9wLG8ubGVmdCs9cy5sZWZ0LG8ucmlnaHQrPXMubGVmdH19cmV0dXJuIG99ZnVuY3Rpb24gcih0KXt2YXIgZT1nZXRDb21wdXRlZFN0eWxlKHQpfHx7fSxvPWUucG9zaXRpb24sbj1bXTtpZihcImZpeGVkXCI9PT1vKXJldHVyblt0XTtmb3IodmFyIGk9dDsoaT1pLnBhcmVudE5vZGUpJiZpJiYxPT09aS5ub2RlVHlwZTspe3ZhciByPXZvaWQgMDt0cnl7cj1nZXRDb21wdXRlZFN0eWxlKGkpfWNhdGNoKHMpe31pZihcInVuZGVmaW5lZFwiPT10eXBlb2Ygcnx8bnVsbD09PXIpcmV0dXJuIG4ucHVzaChpKSxuO3ZhciBhPXIsZj1hLm92ZXJmbG93LGw9YS5vdmVyZmxvd1gsaD1hLm92ZXJmbG93WTsvKGF1dG98c2Nyb2xsKS8udGVzdChmK2grbCkmJihcImFic29sdXRlXCIhPT1vfHxbXCJyZWxhdGl2ZVwiLFwiYWJzb2x1dGVcIixcImZpeGVkXCJdLmluZGV4T2Yoci5wb3NpdGlvbik+PTApJiZuLnB1c2goaSl9cmV0dXJuIG4ucHVzaCh0Lm93bmVyRG9jdW1lbnQuYm9keSksdC5vd25lckRvY3VtZW50IT09ZG9jdW1lbnQmJm4ucHVzaCh0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpLG59ZnVuY3Rpb24gcygpe0EmJmRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoQSksQT1udWxsfWZ1bmN0aW9uIGEodCl7dmFyIGU9dm9pZCAwO3Q9PT1kb2N1bWVudD8oZT1kb2N1bWVudCx0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk6ZT10Lm93bmVyRG9jdW1lbnQ7dmFyIG89ZS5kb2N1bWVudEVsZW1lbnQsbj1pKHQpLHI9UCgpO3JldHVybiBuLnRvcC09ci50b3Asbi5sZWZ0LT1yLmxlZnQsXCJ1bmRlZmluZWRcIj09dHlwZW9mIG4ud2lkdGgmJihuLndpZHRoPWRvY3VtZW50LmJvZHkuc2Nyb2xsV2lkdGgtbi5sZWZ0LW4ucmlnaHQpLFwidW5kZWZpbmVkXCI9PXR5cGVvZiBuLmhlaWdodCYmKG4uaGVpZ2h0PWRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0LW4udG9wLW4uYm90dG9tKSxuLnRvcD1uLnRvcC1vLmNsaWVudFRvcCxuLmxlZnQ9bi5sZWZ0LW8uY2xpZW50TGVmdCxuLnJpZ2h0PWUuYm9keS5jbGllbnRXaWR0aC1uLndpZHRoLW4ubGVmdCxuLmJvdHRvbT1lLmJvZHkuY2xpZW50SGVpZ2h0LW4uaGVpZ2h0LW4udG9wLG59ZnVuY3Rpb24gZih0KXtyZXR1cm4gdC5vZmZzZXRQYXJlbnR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudH1mdW5jdGlvbiBsKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTt0LnN0eWxlLndpZHRoPVwiMTAwJVwiLHQuc3R5bGUuaGVpZ2h0PVwiMjAwcHhcIjt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2goZS5zdHlsZSx7cG9zaXRpb246XCJhYnNvbHV0ZVwiLHRvcDowLGxlZnQ6MCxwb2ludGVyRXZlbnRzOlwibm9uZVwiLHZpc2liaWxpdHk6XCJoaWRkZW5cIix3aWR0aDpcIjIwMHB4XCIsaGVpZ2h0OlwiMTUwcHhcIixvdmVyZmxvdzpcImhpZGRlblwifSksZS5hcHBlbmRDaGlsZCh0KSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGUpO3ZhciBvPXQub2Zmc2V0V2lkdGg7ZS5zdHlsZS5vdmVyZmxvdz1cInNjcm9sbFwiO3ZhciBuPXQub2Zmc2V0V2lkdGg7bz09PW4mJihuPWUuY2xpZW50V2lkdGgpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZSk7dmFyIGk9by1uO3JldHVybnt3aWR0aDppLGhlaWdodDppfX1mdW5jdGlvbiBoKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aDw9MHx8dm9pZCAwPT09YXJndW1lbnRzWzBdP3t9OmFyZ3VtZW50c1swXSxlPVtdO3JldHVybiBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShlLGFyZ3VtZW50cyksZS5zbGljZSgxKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUpZm9yKHZhciBvIGluIGUpKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbykmJih0W29dPWVbb10pfSksdH1mdW5jdGlvbiB1KHQsZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHQuY2xhc3NMaXN0KWUuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oZSl7ZS50cmltKCkmJnQuY2xhc3NMaXN0LnJlbW92ZShlKX0pO2Vsc2V7dmFyIG89bmV3IFJlZ0V4cChcIihefCApXCIrZS5zcGxpdChcIiBcIikuam9pbihcInxcIikrXCIoIHwkKVwiLFwiZ2lcIiksbj1jKHQpLnJlcGxhY2UobyxcIiBcIik7Zyh0LG4pfX1mdW5jdGlvbiBkKHQsZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHQuY2xhc3NMaXN0KWUuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oZSl7ZS50cmltKCkmJnQuY2xhc3NMaXN0LmFkZChlKX0pO2Vsc2V7dSh0LGUpO3ZhciBvPWModCkrKFwiIFwiK2UpO2codCxvKX19ZnVuY3Rpb24gcCh0LGUpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiB0LmNsYXNzTGlzdClyZXR1cm4gdC5jbGFzc0xpc3QuY29udGFpbnMoZSk7dmFyIG89Yyh0KTtyZXR1cm4gbmV3IFJlZ0V4cChcIihefCApXCIrZStcIiggfCQpXCIsXCJnaVwiKS50ZXN0KG8pfWZ1bmN0aW9uIGModCl7cmV0dXJuIHQuY2xhc3NOYW1lIGluc3RhbmNlb2YgdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LlNWR0FuaW1hdGVkU3RyaW5nP3QuY2xhc3NOYW1lLmJhc2VWYWw6dC5jbGFzc05hbWV9ZnVuY3Rpb24gZyh0LGUpe3Quc2V0QXR0cmlidXRlKFwiY2xhc3NcIixlKX1mdW5jdGlvbiBtKHQsZSxvKXtvLmZvckVhY2goZnVuY3Rpb24obyl7LTE9PT1lLmluZGV4T2YobykmJnAodCxvKSYmdSh0LG8pfSksZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3AodCxlKXx8ZCh0LGUpfSl9ZnVuY3Rpb24gbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gdih0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiBlKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUpfWZ1bmN0aW9uIHkodCxlKXt2YXIgbz1hcmd1bWVudHMubGVuZ3RoPD0yfHx2b2lkIDA9PT1hcmd1bWVudHNbMl0/MTphcmd1bWVudHNbMl07cmV0dXJuIHQrbz49ZSYmZT49dC1vfWZ1bmN0aW9uIGIoKXtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgcGVyZm9ybWFuY2UmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2Uubm93KCk6K25ldyBEYXRlfWZ1bmN0aW9uIHcoKXtmb3IodmFyIHQ9e3RvcDowLGxlZnQ6MH0sZT1hcmd1bWVudHMubGVuZ3RoLG89QXJyYXkoZSksbj0wO2U+bjtuKyspb1tuXT1hcmd1bWVudHNbbl07cmV0dXJuIG8uZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgbz1lLnRvcCxuPWUubGVmdDtcInN0cmluZ1wiPT10eXBlb2YgbyYmKG89cGFyc2VGbG9hdChvLDEwKSksXCJzdHJpbmdcIj09dHlwZW9mIG4mJihuPXBhcnNlRmxvYXQobiwxMCkpLHQudG9wKz1vLHQubGVmdCs9bn0pLHR9ZnVuY3Rpb24gQyh0LGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0LmxlZnQmJi0xIT09dC5sZWZ0LmluZGV4T2YoXCIlXCIpJiYodC5sZWZ0PXBhcnNlRmxvYXQodC5sZWZ0LDEwKS8xMDAqZS53aWR0aCksXCJzdHJpbmdcIj09dHlwZW9mIHQudG9wJiYtMSE9PXQudG9wLmluZGV4T2YoXCIlXCIpJiYodC50b3A9cGFyc2VGbG9hdCh0LnRvcCwxMCkvMTAwKmUuaGVpZ2h0KSx0fWZ1bmN0aW9uIE8odCxlKXtyZXR1cm5cInNjcm9sbFBhcmVudFwiPT09ZT9lPXQuc2Nyb2xsUGFyZW50c1swXTpcIndpbmRvd1wiPT09ZSYmKGU9W3BhZ2VYT2Zmc2V0LHBhZ2VZT2Zmc2V0LGlubmVyV2lkdGgrcGFnZVhPZmZzZXQsaW5uZXJIZWlnaHQrcGFnZVlPZmZzZXRdKSxlPT09ZG9jdW1lbnQmJihlPWUuZG9jdW1lbnRFbGVtZW50KSxcInVuZGVmaW5lZFwiIT10eXBlb2YgZS5ub2RlVHlwZSYmIWZ1bmN0aW9uKCl7dmFyIHQ9ZSxvPWEoZSksbj1vLGk9Z2V0Q29tcHV0ZWRTdHlsZShlKTtpZihlPVtuLmxlZnQsbi50b3Asby53aWR0aCtuLmxlZnQsby5oZWlnaHQrbi50b3BdLHQub3duZXJEb2N1bWVudCE9PWRvY3VtZW50KXt2YXIgcj10Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7ZVswXSs9ci5wYWdlWE9mZnNldCxlWzFdKz1yLnBhZ2VZT2Zmc2V0LGVbMl0rPXIucGFnZVhPZmZzZXQsZVszXSs9ci5wYWdlWU9mZnNldH0kLmZvckVhY2goZnVuY3Rpb24odCxvKXt0PXRbMF0udG9VcHBlckNhc2UoKSt0LnN1YnN0cigxKSxcIlRvcFwiPT09dHx8XCJMZWZ0XCI9PT10P2Vbb10rPXBhcnNlRmxvYXQoaVtcImJvcmRlclwiK3QrXCJXaWR0aFwiXSk6ZVtvXS09cGFyc2VGbG9hdChpW1wiYm9yZGVyXCIrdCtcIldpZHRoXCJdKX0pfSgpLGV9dmFyIEU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7Zm9yKHZhciBvPTA7bzxlLmxlbmd0aDtvKyspe3ZhciBuPWVbb107bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4ua2V5LG4pfX1yZXR1cm4gZnVuY3Rpb24oZSxvLG4pe3JldHVybiBvJiZ0KGUucHJvdG90eXBlLG8pLG4mJnQoZSxuKSxlfX0oKSx4PXZvaWQgMDtcInVuZGVmaW5lZFwiPT10eXBlb2YgeCYmKHg9e21vZHVsZXM6W119KTt2YXIgQT1udWxsLFQ9ZnVuY3Rpb24oKXt2YXIgdD0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybisrdH19KCksUz17fSxQPWZ1bmN0aW9uKCl7dmFyIHQ9QTt0fHwodD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHQuc2V0QXR0cmlidXRlKFwiZGF0YS10ZXRoZXItaWRcIixUKCkpLGgodC5zdHlsZSx7dG9wOjAsbGVmdDowLHBvc2l0aW9uOlwiYWJzb2x1dGVcIn0pLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCksQT10KTt2YXIgZT10LmdldEF0dHJpYnV0ZShcImRhdGEtdGV0aGVyLWlkXCIpO3JldHVyblwidW5kZWZpbmVkXCI9PXR5cGVvZiBTW2VdJiYoU1tlXT1pKHQpLE0oZnVuY3Rpb24oKXtkZWxldGUgU1tlXX0pKSxTW2VdfSxXPVtdLE09ZnVuY3Rpb24odCl7Vy5wdXNoKHQpfSxfPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXZvaWQgMDt0PVcucG9wKCk7KXQoKX0saz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtuKHRoaXMsdCl9cmV0dXJuIEUodCxbe2tleTpcIm9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlLG8pe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg8PTN8fHZvaWQgMD09PWFyZ3VtZW50c1szXT8hMTphcmd1bWVudHNbM107XCJ1bmRlZmluZWRcIj09dHlwZW9mIHRoaXMuYmluZGluZ3MmJih0aGlzLmJpbmRpbmdzPXt9KSxcInVuZGVmaW5lZFwiPT10eXBlb2YgdGhpcy5iaW5kaW5nc1t0XSYmKHRoaXMuYmluZGluZ3NbdF09W10pLHRoaXMuYmluZGluZ3NbdF0ucHVzaCh7aGFuZGxlcjplLGN0eDpvLG9uY2U6bn0pfX0se2tleTpcIm9uY2VcIix2YWx1ZTpmdW5jdGlvbih0LGUsbyl7dGhpcy5vbih0LGUsbywhMCl9fSx7a2V5Olwib2ZmXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgdGhpcy5iaW5kaW5ncyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHRoaXMuYmluZGluZ3NbdF0paWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIGUpZGVsZXRlIHRoaXMuYmluZGluZ3NbdF07ZWxzZSBmb3IodmFyIG89MDtvPHRoaXMuYmluZGluZ3NbdF0ubGVuZ3RoOyl0aGlzLmJpbmRpbmdzW3RdW29dLmhhbmRsZXI9PT1lP3RoaXMuYmluZGluZ3NbdF0uc3BsaWNlKG8sMSk6KytvfX0se2tleTpcInRyaWdnZXJcIix2YWx1ZTpmdW5jdGlvbih0KXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgdGhpcy5iaW5kaW5ncyYmdGhpcy5iaW5kaW5nc1t0XSl7Zm9yKHZhciBlPTAsbz1hcmd1bWVudHMubGVuZ3RoLG49QXJyYXkobz4xP28tMTowKSxpPTE7bz5pO2krKyluW2ktMV09YXJndW1lbnRzW2ldO2Zvcig7ZTx0aGlzLmJpbmRpbmdzW3RdLmxlbmd0aDspe3ZhciByPXRoaXMuYmluZGluZ3NbdF1bZV0scz1yLmhhbmRsZXIsYT1yLmN0eCxmPXIub25jZSxsPWE7XCJ1bmRlZmluZWRcIj09dHlwZW9mIGwmJihsPXRoaXMpLHMuYXBwbHkobCxuKSxmP3RoaXMuYmluZGluZ3NbdF0uc3BsaWNlKGUsMSk6KytlfX19fV0pLHR9KCk7eC5VdGlscz17Z2V0QWN0dWFsQm91bmRpbmdDbGllbnRSZWN0OmksZ2V0U2Nyb2xsUGFyZW50czpyLGdldEJvdW5kczphLGdldE9mZnNldFBhcmVudDpmLGV4dGVuZDpoLGFkZENsYXNzOmQscmVtb3ZlQ2xhc3M6dSxoYXNDbGFzczpwLHVwZGF0ZUNsYXNzZXM6bSxkZWZlcjpNLGZsdXNoOl8sdW5pcXVlSWQ6VCxFdmVudGVkOmssZ2V0U2Nyb2xsQmFyU2l6ZTpsLHJlbW92ZVV0aWxFbGVtZW50czpzfTt2YXIgQj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt2YXIgbz1bXSxuPSEwLGk9ITEscj12b2lkIDA7dHJ5e2Zvcih2YXIgcyxhPXRbU3ltYm9sLml0ZXJhdG9yXSgpOyEobj0ocz1hLm5leHQoKSkuZG9uZSkmJihvLnB1c2gocy52YWx1ZSksIWV8fG8ubGVuZ3RoIT09ZSk7bj0hMCk7fWNhdGNoKGYpe2k9ITAscj1mfWZpbmFsbHl7dHJ5eyFuJiZhW1wicmV0dXJuXCJdJiZhW1wicmV0dXJuXCJdKCl9ZmluYWxseXtpZihpKXRocm93IHJ9fXJldHVybiBvfXJldHVybiBmdW5jdGlvbihlLG8pe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGU7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSlyZXR1cm4gdChlLG8pO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpfX0oKSxFPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe2Zvcih2YXIgbz0wO288ZS5sZW5ndGg7bysrKXt2YXIgbj1lW29dO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLmtleSxuKX19cmV0dXJuIGZ1bmN0aW9uKGUsbyxuKXtyZXR1cm4gbyYmdChlLnByb3RvdHlwZSxvKSxuJiZ0KGUsbiksZX19KCksej1mdW5jdGlvbih0LGUsbyl7Zm9yKHZhciBuPSEwO247KXt2YXIgaT10LHI9ZSxzPW87bj0hMSxudWxsPT09aSYmKGk9RnVuY3Rpb24ucHJvdG90eXBlKTt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGkscik7aWYodm9pZCAwIT09YSl7aWYoXCJ2YWx1ZVwiaW4gYSlyZXR1cm4gYS52YWx1ZTt2YXIgZj1hLmdldDtpZih2b2lkIDA9PT1mKXJldHVybjtyZXR1cm4gZi5jYWxsKHMpfXZhciBsPU9iamVjdC5nZXRQcm90b3R5cGVPZihpKTtpZihudWxsPT09bClyZXR1cm47dD1sLGU9cixvPXMsbj0hMCxhPWw9dm9pZCAwfX07aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIHgpdGhyb3cgbmV3IEVycm9yKFwiWW91IG11c3QgaW5jbHVkZSB0aGUgdXRpbHMuanMgZmlsZSBiZWZvcmUgdGV0aGVyLmpzXCIpO3ZhciBqPXguVXRpbHMscj1qLmdldFNjcm9sbFBhcmVudHMsYT1qLmdldEJvdW5kcyxmPWouZ2V0T2Zmc2V0UGFyZW50LGg9ai5leHRlbmQsZD1qLmFkZENsYXNzLHU9ai5yZW1vdmVDbGFzcyxtPWoudXBkYXRlQ2xhc3NlcyxNPWouZGVmZXIsXz1qLmZsdXNoLGw9ai5nZXRTY3JvbGxCYXJTaXplLHM9ai5yZW1vdmVVdGlsRWxlbWVudHMsWT1mdW5jdGlvbigpe2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBkb2N1bWVudClyZXR1cm5cIlwiO2Zvcih2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGU9W1widHJhbnNmb3JtXCIsXCJXZWJraXRUcmFuc2Zvcm1cIixcIk9UcmFuc2Zvcm1cIixcIk1velRyYW5zZm9ybVwiLFwibXNUcmFuc2Zvcm1cIl0sbz0wO288ZS5sZW5ndGg7KytvKXt2YXIgbj1lW29dO2lmKHZvaWQgMCE9PXQuc3R5bGVbbl0pcmV0dXJuIG59fSgpLEw9W10sRD1mdW5jdGlvbigpe0wuZm9yRWFjaChmdW5jdGlvbih0KXt0LnBvc2l0aW9uKCExKX0pLF8oKX07IWZ1bmN0aW9uKCl7dmFyIHQ9bnVsbCxlPW51bGwsbz1udWxsLG49ZnVuY3Rpb24gaSgpe3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiBlJiZlPjE2PyhlPU1hdGgubWluKGUtMTYsMjUwKSx2b2lkKG89c2V0VGltZW91dChpLDI1MCkpKTp2b2lkKFwidW5kZWZpbmVkXCIhPXR5cGVvZiB0JiZiKCktdDwxMHx8KG51bGwhPW8mJihjbGVhclRpbWVvdXQobyksbz1udWxsKSx0PWIoKSxEKCksZT1iKCktdCkpfTtcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93LmFkZEV2ZW50TGlzdGVuZXImJltcInJlc2l6ZVwiLFwic2Nyb2xsXCIsXCJ0b3VjaG1vdmVcIl0uZm9yRWFjaChmdW5jdGlvbih0KXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcih0LG4pfSl9KCk7dmFyIFg9e2NlbnRlcjpcImNlbnRlclwiLGxlZnQ6XCJyaWdodFwiLHJpZ2h0OlwibGVmdFwifSxGPXttaWRkbGU6XCJtaWRkbGVcIix0b3A6XCJib3R0b21cIixib3R0b206XCJ0b3BcIn0sSD17dG9wOjAsbGVmdDowLG1pZGRsZTpcIjUwJVwiLGNlbnRlcjpcIjUwJVwiLGJvdHRvbTpcIjEwMCVcIixyaWdodDpcIjEwMCVcIn0sTj1mdW5jdGlvbih0LGUpe3ZhciBvPXQubGVmdCxuPXQudG9wO3JldHVyblwiYXV0b1wiPT09byYmKG89WFtlLmxlZnRdKSxcImF1dG9cIj09PW4mJihuPUZbZS50b3BdKSx7bGVmdDpvLHRvcDpufX0sVT1mdW5jdGlvbih0KXt2YXIgZT10LmxlZnQsbz10LnRvcDtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgSFt0LmxlZnRdJiYoZT1IW3QubGVmdF0pLFwidW5kZWZpbmVkXCIhPXR5cGVvZiBIW3QudG9wXSYmKG89SFt0LnRvcF0pLHtsZWZ0OmUsdG9wOm99fSxWPWZ1bmN0aW9uKHQpe3ZhciBlPXQuc3BsaXQoXCIgXCIpLG89QihlLDIpLG49b1swXSxpPW9bMV07cmV0dXJue3RvcDpuLGxlZnQ6aX19LFI9VixxPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7dmFyIG89dGhpcztuKHRoaXMsZSkseihPYmplY3QuZ2V0UHJvdG90eXBlT2YoZS5wcm90b3R5cGUpLFwiY29uc3RydWN0b3JcIix0aGlzKS5jYWxsKHRoaXMpLHRoaXMucG9zaXRpb249dGhpcy5wb3NpdGlvbi5iaW5kKHRoaXMpLEwucHVzaCh0aGlzKSx0aGlzLmhpc3Rvcnk9W10sdGhpcy5zZXRPcHRpb25zKHQsITEpLHgubW9kdWxlcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe1widW5kZWZpbmVkXCIhPXR5cGVvZiB0LmluaXRpYWxpemUmJnQuaW5pdGlhbGl6ZS5jYWxsKG8pfSksdGhpcy5wb3NpdGlvbigpfXJldHVybiB2KGUsdCksRShlLFt7a2V5OlwiZ2V0Q2xhc3NcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg8PTB8fHZvaWQgMD09PWFyZ3VtZW50c1swXT9cIlwiOmFyZ3VtZW50c1swXSxlPXRoaXMub3B0aW9ucy5jbGFzc2VzO3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiBlJiZlW3RdP3RoaXMub3B0aW9ucy5jbGFzc2VzW3RdOnRoaXMub3B0aW9ucy5jbGFzc1ByZWZpeD90aGlzLm9wdGlvbnMuY2xhc3NQcmVmaXgrXCItXCIrdDp0fX0se2tleTpcInNldE9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG89YXJndW1lbnRzLmxlbmd0aDw9MXx8dm9pZCAwPT09YXJndW1lbnRzWzFdPyEwOmFyZ3VtZW50c1sxXSxuPXtvZmZzZXQ6XCIwIDBcIix0YXJnZXRPZmZzZXQ6XCIwIDBcIix0YXJnZXRBdHRhY2htZW50OlwiYXV0byBhdXRvXCIsY2xhc3NQcmVmaXg6XCJ0ZXRoZXJcIn07dGhpcy5vcHRpb25zPWgobix0KTt2YXIgaT10aGlzLm9wdGlvbnMscz1pLmVsZW1lbnQsYT1pLnRhcmdldCxmPWkudGFyZ2V0TW9kaWZpZXI7aWYodGhpcy5lbGVtZW50PXMsdGhpcy50YXJnZXQ9YSx0aGlzLnRhcmdldE1vZGlmaWVyPWYsXCJ2aWV3cG9ydFwiPT09dGhpcy50YXJnZXQ/KHRoaXMudGFyZ2V0PWRvY3VtZW50LmJvZHksdGhpcy50YXJnZXRNb2RpZmllcj1cInZpc2libGVcIik6XCJzY3JvbGwtaGFuZGxlXCI9PT10aGlzLnRhcmdldCYmKHRoaXMudGFyZ2V0PWRvY3VtZW50LmJvZHksdGhpcy50YXJnZXRNb2RpZmllcj1cInNjcm9sbC1oYW5kbGVcIiksW1wiZWxlbWVudFwiLFwidGFyZ2V0XCJdLmZvckVhY2goZnVuY3Rpb24odCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIGVbdF0pdGhyb3cgbmV3IEVycm9yKFwiVGV0aGVyIEVycm9yOiBCb3RoIGVsZW1lbnQgYW5kIHRhcmdldCBtdXN0IGJlIGRlZmluZWRcIik7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGVbdF0uanF1ZXJ5P2VbdF09ZVt0XVswXTpcInN0cmluZ1wiPT10eXBlb2YgZVt0XSYmKGVbdF09ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlW3RdKSl9KSxkKHRoaXMuZWxlbWVudCx0aGlzLmdldENsYXNzKFwiZWxlbWVudFwiKSksdGhpcy5vcHRpb25zLmFkZFRhcmdldENsYXNzZXMhPT0hMSYmZCh0aGlzLnRhcmdldCx0aGlzLmdldENsYXNzKFwidGFyZ2V0XCIpKSwhdGhpcy5vcHRpb25zLmF0dGFjaG1lbnQpdGhyb3cgbmV3IEVycm9yKFwiVGV0aGVyIEVycm9yOiBZb3UgbXVzdCBwcm92aWRlIGFuIGF0dGFjaG1lbnRcIik7dGhpcy50YXJnZXRBdHRhY2htZW50PVIodGhpcy5vcHRpb25zLnRhcmdldEF0dGFjaG1lbnQpLHRoaXMuYXR0YWNobWVudD1SKHRoaXMub3B0aW9ucy5hdHRhY2htZW50KSx0aGlzLm9mZnNldD1WKHRoaXMub3B0aW9ucy5vZmZzZXQpLHRoaXMudGFyZ2V0T2Zmc2V0PVYodGhpcy5vcHRpb25zLnRhcmdldE9mZnNldCksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHRoaXMuc2Nyb2xsUGFyZW50cyYmdGhpcy5kaXNhYmxlKCksXCJzY3JvbGwtaGFuZGxlXCI9PT10aGlzLnRhcmdldE1vZGlmaWVyP3RoaXMuc2Nyb2xsUGFyZW50cz1bdGhpcy50YXJnZXRdOnRoaXMuc2Nyb2xsUGFyZW50cz1yKHRoaXMudGFyZ2V0KSx0aGlzLm9wdGlvbnMuZW5hYmxlZCE9PSExJiZ0aGlzLmVuYWJsZShvKX19LHtrZXk6XCJnZXRUYXJnZXRCb3VuZHNcIix2YWx1ZTpmdW5jdGlvbigpe2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiB0aGlzLnRhcmdldE1vZGlmaWVyKXJldHVybiBhKHRoaXMudGFyZ2V0KTtpZihcInZpc2libGVcIj09PXRoaXMudGFyZ2V0TW9kaWZpZXIpe2lmKHRoaXMudGFyZ2V0PT09ZG9jdW1lbnQuYm9keSlyZXR1cm57dG9wOnBhZ2VZT2Zmc2V0LGxlZnQ6cGFnZVhPZmZzZXQsaGVpZ2h0OmlubmVySGVpZ2h0LHdpZHRoOmlubmVyV2lkdGh9O3ZhciB0PWEodGhpcy50YXJnZXQpLGU9e2hlaWdodDp0LmhlaWdodCx3aWR0aDp0LndpZHRoLHRvcDp0LnRvcCxsZWZ0OnQubGVmdH07cmV0dXJuIGUuaGVpZ2h0PU1hdGgubWluKGUuaGVpZ2h0LHQuaGVpZ2h0LShwYWdlWU9mZnNldC10LnRvcCkpLGUuaGVpZ2h0PU1hdGgubWluKGUuaGVpZ2h0LHQuaGVpZ2h0LSh0LnRvcCt0LmhlaWdodC0ocGFnZVlPZmZzZXQraW5uZXJIZWlnaHQpKSksZS5oZWlnaHQ9TWF0aC5taW4oaW5uZXJIZWlnaHQsZS5oZWlnaHQpLGUuaGVpZ2h0LT0yLGUud2lkdGg9TWF0aC5taW4oZS53aWR0aCx0LndpZHRoLShwYWdlWE9mZnNldC10LmxlZnQpKSxlLndpZHRoPU1hdGgubWluKGUud2lkdGgsdC53aWR0aC0odC5sZWZ0K3Qud2lkdGgtKHBhZ2VYT2Zmc2V0K2lubmVyV2lkdGgpKSksZS53aWR0aD1NYXRoLm1pbihpbm5lcldpZHRoLGUud2lkdGgpLGUud2lkdGgtPTIsZS50b3A8cGFnZVlPZmZzZXQmJihlLnRvcD1wYWdlWU9mZnNldCksZS5sZWZ0PHBhZ2VYT2Zmc2V0JiYoZS5sZWZ0PXBhZ2VYT2Zmc2V0KSxlfWlmKFwic2Nyb2xsLWhhbmRsZVwiPT09dGhpcy50YXJnZXRNb2RpZmllcil7dmFyIHQ9dm9pZCAwLG89dGhpcy50YXJnZXQ7bz09PWRvY3VtZW50LmJvZHk/KG89ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHQ9e2xlZnQ6cGFnZVhPZmZzZXQsdG9wOnBhZ2VZT2Zmc2V0LGhlaWdodDppbm5lckhlaWdodCx3aWR0aDppbm5lcldpZHRofSk6dD1hKG8pO3ZhciBuPWdldENvbXB1dGVkU3R5bGUobyksaT1vLnNjcm9sbFdpZHRoPm8uY2xpZW50V2lkdGh8fFtuLm92ZXJmbG93LG4ub3ZlcmZsb3dYXS5pbmRleE9mKFwic2Nyb2xsXCIpPj0wfHx0aGlzLnRhcmdldCE9PWRvY3VtZW50LmJvZHkscj0wO2kmJihyPTE1KTt2YXIgcz10LmhlaWdodC1wYXJzZUZsb2F0KG4uYm9yZGVyVG9wV2lkdGgpLXBhcnNlRmxvYXQobi5ib3JkZXJCb3R0b21XaWR0aCktcixlPXt3aWR0aDoxNSxoZWlnaHQ6Ljk3NSpzKihzL28uc2Nyb2xsSGVpZ2h0KSxsZWZ0OnQubGVmdCt0LndpZHRoLXBhcnNlRmxvYXQobi5ib3JkZXJMZWZ0V2lkdGgpLTE1fSxmPTA7NDA4PnMmJnRoaXMudGFyZ2V0PT09ZG9jdW1lbnQuYm9keSYmKGY9LTExZS01Kk1hdGgucG93KHMsMiktLjAwNzI3KnMrMjIuNTgpLHRoaXMudGFyZ2V0IT09ZG9jdW1lbnQuYm9keSYmKGUuaGVpZ2h0PU1hdGgubWF4KGUuaGVpZ2h0LDI0KSk7dmFyIGw9dGhpcy50YXJnZXQuc2Nyb2xsVG9wLyhvLnNjcm9sbEhlaWdodC1zKTtyZXR1cm4gZS50b3A9bCoocy1lLmhlaWdodC1mKSt0LnRvcCtwYXJzZUZsb2F0KG4uYm9yZGVyVG9wV2lkdGgpLHRoaXMudGFyZ2V0PT09ZG9jdW1lbnQuYm9keSYmKGUuaGVpZ2h0PU1hdGgubWF4KGUuaGVpZ2h0LDI0KSksZX19fSx7a2V5OlwiY2xlYXJDYWNoZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fY2FjaGU9e319fSx7a2V5OlwiY2FjaGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVyblwidW5kZWZpbmVkXCI9PXR5cGVvZiB0aGlzLl9jYWNoZSYmKHRoaXMuX2NhY2hlPXt9KSxcInVuZGVmaW5lZFwiPT10eXBlb2YgdGhpcy5fY2FjaGVbdF0mJih0aGlzLl9jYWNoZVt0XT1lLmNhbGwodGhpcykpLHRoaXMuX2NhY2hlW3RdfX0se2tleTpcImVuYWJsZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPWFyZ3VtZW50cy5sZW5ndGg8PTB8fHZvaWQgMD09PWFyZ3VtZW50c1swXT8hMDphcmd1bWVudHNbMF07dGhpcy5vcHRpb25zLmFkZFRhcmdldENsYXNzZXMhPT0hMSYmZCh0aGlzLnRhcmdldCx0aGlzLmdldENsYXNzKFwiZW5hYmxlZFwiKSksZCh0aGlzLmVsZW1lbnQsdGhpcy5nZXRDbGFzcyhcImVuYWJsZWRcIikpLHRoaXMuZW5hYmxlZD0hMCx0aGlzLnNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbihlKXtlIT09dC50YXJnZXQub3duZXJEb2N1bWVudCYmZS5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsdC5wb3NpdGlvbil9KSxlJiZ0aGlzLnBvc2l0aW9uKCl9fSx7a2V5OlwiZGlzYWJsZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt1KHRoaXMudGFyZ2V0LHRoaXMuZ2V0Q2xhc3MoXCJlbmFibGVkXCIpKSx1KHRoaXMuZWxlbWVudCx0aGlzLmdldENsYXNzKFwiZW5hYmxlZFwiKSksdGhpcy5lbmFibGVkPSExLFwidW5kZWZpbmVkXCIhPXR5cGVvZiB0aGlzLnNjcm9sbFBhcmVudHMmJnRoaXMuc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLHQucG9zaXRpb24pfSl9fSx7a2V5OlwiZGVzdHJveVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmRpc2FibGUoKSxMLmZvckVhY2goZnVuY3Rpb24oZSxvKXtlPT09dCYmTC5zcGxpY2UobywxKX0pLDA9PT1MLmxlbmd0aCYmcygpfX0se2tleTpcInVwZGF0ZUF0dGFjaENsYXNzZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBvPXRoaXM7dD10fHx0aGlzLmF0dGFjaG1lbnQsZT1lfHx0aGlzLnRhcmdldEF0dGFjaG1lbnQ7dmFyIG49W1wibGVmdFwiLFwidG9wXCIsXCJib3R0b21cIixcInJpZ2h0XCIsXCJtaWRkbGVcIixcImNlbnRlclwiXTtcInVuZGVmaW5lZFwiIT10eXBlb2YgdGhpcy5fYWRkQXR0YWNoQ2xhc3NlcyYmdGhpcy5fYWRkQXR0YWNoQ2xhc3Nlcy5sZW5ndGgmJnRoaXMuX2FkZEF0dGFjaENsYXNzZXMuc3BsaWNlKDAsdGhpcy5fYWRkQXR0YWNoQ2xhc3Nlcy5sZW5ndGgpLFwidW5kZWZpbmVkXCI9PXR5cGVvZiB0aGlzLl9hZGRBdHRhY2hDbGFzc2VzJiYodGhpcy5fYWRkQXR0YWNoQ2xhc3Nlcz1bXSk7dmFyIGk9dGhpcy5fYWRkQXR0YWNoQ2xhc3Nlczt0LnRvcCYmaS5wdXNoKHRoaXMuZ2V0Q2xhc3MoXCJlbGVtZW50LWF0dGFjaGVkXCIpK1wiLVwiK3QudG9wKSx0LmxlZnQmJmkucHVzaCh0aGlzLmdldENsYXNzKFwiZWxlbWVudC1hdHRhY2hlZFwiKStcIi1cIit0LmxlZnQpLGUudG9wJiZpLnB1c2godGhpcy5nZXRDbGFzcyhcInRhcmdldC1hdHRhY2hlZFwiKStcIi1cIitlLnRvcCksZS5sZWZ0JiZpLnB1c2godGhpcy5nZXRDbGFzcyhcInRhcmdldC1hdHRhY2hlZFwiKStcIi1cIitlLmxlZnQpO3ZhciByPVtdO24uZm9yRWFjaChmdW5jdGlvbih0KXtyLnB1c2goby5nZXRDbGFzcyhcImVsZW1lbnQtYXR0YWNoZWRcIikrXCItXCIrdCksci5wdXNoKG8uZ2V0Q2xhc3MoXCJ0YXJnZXQtYXR0YWNoZWRcIikrXCItXCIrdCl9KSxNKGZ1bmN0aW9uKCl7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIG8uX2FkZEF0dGFjaENsYXNzZXMmJihtKG8uZWxlbWVudCxvLl9hZGRBdHRhY2hDbGFzc2VzLHIpLG8ub3B0aW9ucy5hZGRUYXJnZXRDbGFzc2VzIT09ITEmJm0oby50YXJnZXQsby5fYWRkQXR0YWNoQ2xhc3NlcyxyKSxkZWxldGUgby5fYWRkQXR0YWNoQ2xhc3Nlcyl9KX19LHtrZXk6XCJwb3NpdGlvblwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPWFyZ3VtZW50cy5sZW5ndGg8PTB8fHZvaWQgMD09PWFyZ3VtZW50c1swXT8hMDphcmd1bWVudHNbMF07aWYodGhpcy5lbmFibGVkKXt0aGlzLmNsZWFyQ2FjaGUoKTt2YXIgbz1OKHRoaXMudGFyZ2V0QXR0YWNobWVudCx0aGlzLmF0dGFjaG1lbnQpO3RoaXMudXBkYXRlQXR0YWNoQ2xhc3Nlcyh0aGlzLmF0dGFjaG1lbnQsbyk7dmFyIG49dGhpcy5jYWNoZShcImVsZW1lbnQtYm91bmRzXCIsZnVuY3Rpb24oKXtyZXR1cm4gYSh0LmVsZW1lbnQpfSksaT1uLndpZHRoLHI9bi5oZWlnaHQ7aWYoMD09PWkmJjA9PT1yJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgdGhpcy5sYXN0U2l6ZSl7dmFyIHM9dGhpcy5sYXN0U2l6ZTtpPXMud2lkdGgscj1zLmhlaWdodH1lbHNlIHRoaXMubGFzdFNpemU9e3dpZHRoOmksaGVpZ2h0OnJ9O3ZhciBoPXRoaXMuY2FjaGUoXCJ0YXJnZXQtYm91bmRzXCIsZnVuY3Rpb24oKXtyZXR1cm4gdC5nZXRUYXJnZXRCb3VuZHMoKX0pLHU9aCxkPUMoVSh0aGlzLmF0dGFjaG1lbnQpLHt3aWR0aDppLGhlaWdodDpyfSkscD1DKFUobyksdSksYz1DKHRoaXMub2Zmc2V0LHt3aWR0aDppLGhlaWdodDpyfSksZz1DKHRoaXMudGFyZ2V0T2Zmc2V0LHUpO2Q9dyhkLGMpLHA9dyhwLGcpO2Zvcih2YXIgbT1oLmxlZnQrcC5sZWZ0LWQubGVmdCx2PWgudG9wK3AudG9wLWQudG9wLHk9MDt5PHgubW9kdWxlcy5sZW5ndGg7Kyt5KXt2YXIgYj14Lm1vZHVsZXNbeV0sTz1iLnBvc2l0aW9uLmNhbGwodGhpcyx7bGVmdDptLHRvcDp2LHRhcmdldEF0dGFjaG1lbnQ6byx0YXJnZXRQb3M6aCxlbGVtZW50UG9zOm4sb2Zmc2V0OmQsdGFyZ2V0T2Zmc2V0OnAsbWFudWFsT2Zmc2V0OmMsbWFudWFsVGFyZ2V0T2Zmc2V0Omcsc2Nyb2xsYmFyU2l6ZTpTLGF0dGFjaG1lbnQ6dGhpcy5hdHRhY2htZW50fSk7aWYoTz09PSExKXJldHVybiExO1widW5kZWZpbmVkXCIhPXR5cGVvZiBPJiZcIm9iamVjdFwiPT10eXBlb2YgTyYmKHY9Ty50b3AsbT1PLmxlZnQpfXZhciBFPXtwYWdlOnt0b3A6dixsZWZ0Om19LHZpZXdwb3J0Ont0b3A6di1wYWdlWU9mZnNldCxib3R0b206cGFnZVlPZmZzZXQtdi1yK2lubmVySGVpZ2h0LGxlZnQ6bS1wYWdlWE9mZnNldCxyaWdodDpwYWdlWE9mZnNldC1tLWkraW5uZXJXaWR0aH19LEE9dGhpcy50YXJnZXQub3duZXJEb2N1bWVudCxUPUEuZGVmYXVsdFZpZXcsUz12b2lkIDA7cmV0dXJuIEEuYm9keS5zY3JvbGxXaWR0aD5ULmlubmVyV2lkdGgmJihTPXRoaXMuY2FjaGUoXCJzY3JvbGxiYXItc2l6ZVwiLGwpLEUudmlld3BvcnQuYm90dG9tLT1TLmhlaWdodCksQS5ib2R5LnNjcm9sbEhlaWdodD5ULmlubmVySGVpZ2h0JiYoUz10aGlzLmNhY2hlKFwic2Nyb2xsYmFyLXNpemVcIixsKSxFLnZpZXdwb3J0LnJpZ2h0LT1TLndpZHRoKSwoLTE9PT1bXCJcIixcInN0YXRpY1wiXS5pbmRleE9mKEEuYm9keS5zdHlsZS5wb3NpdGlvbil8fC0xPT09W1wiXCIsXCJzdGF0aWNcIl0uaW5kZXhPZihBLmJvZHkucGFyZW50RWxlbWVudC5zdHlsZS5wb3NpdGlvbikpJiYoRS5wYWdlLmJvdHRvbT1BLmJvZHkuc2Nyb2xsSGVpZ2h0LXYtcixFLnBhZ2UucmlnaHQ9QS5ib2R5LnNjcm9sbFdpZHRoLW0taSksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHRoaXMub3B0aW9ucy5vcHRpbWl6YXRpb25zJiZ0aGlzLm9wdGlvbnMub3B0aW1pemF0aW9ucy5tb3ZlRWxlbWVudCE9PSExJiZcInVuZGVmaW5lZFwiPT10eXBlb2YgdGhpcy50YXJnZXRNb2RpZmllciYmIWZ1bmN0aW9uKCl7dmFyIGU9dC5jYWNoZShcInRhcmdldC1vZmZzZXRwYXJlbnRcIixmdW5jdGlvbigpe3JldHVybiBmKHQudGFyZ2V0KX0pLG89dC5jYWNoZShcInRhcmdldC1vZmZzZXRwYXJlbnQtYm91bmRzXCIsZnVuY3Rpb24oKXtyZXR1cm4gYShlKX0pLG49Z2V0Q29tcHV0ZWRTdHlsZShlKSxpPW8scj17fTtpZihbXCJUb3BcIixcIkxlZnRcIixcIkJvdHRvbVwiLFwiUmlnaHRcIl0uZm9yRWFjaChmdW5jdGlvbih0KXtyW3QudG9Mb3dlckNhc2UoKV09cGFyc2VGbG9hdChuW1wiYm9yZGVyXCIrdCtcIldpZHRoXCJdKX0pLG8ucmlnaHQ9QS5ib2R5LnNjcm9sbFdpZHRoLW8ubGVmdC1pLndpZHRoK3IucmlnaHQsby5ib3R0b209QS5ib2R5LnNjcm9sbEhlaWdodC1vLnRvcC1pLmhlaWdodCtyLmJvdHRvbSxFLnBhZ2UudG9wPj1vLnRvcCtyLnRvcCYmRS5wYWdlLmJvdHRvbT49by5ib3R0b20mJkUucGFnZS5sZWZ0Pj1vLmxlZnQrci5sZWZ0JiZFLnBhZ2UucmlnaHQ+PW8ucmlnaHQpe3ZhciBzPWUuc2Nyb2xsVG9wLGw9ZS5zY3JvbGxMZWZ0O0Uub2Zmc2V0PXt0b3A6RS5wYWdlLnRvcC1vLnRvcCtzLXIudG9wLGxlZnQ6RS5wYWdlLmxlZnQtby5sZWZ0K2wtci5sZWZ0fX19KCksdGhpcy5tb3ZlKEUpLHRoaXMuaGlzdG9yeS51bnNoaWZ0KEUpLHRoaXMuaGlzdG9yeS5sZW5ndGg+MyYmdGhpcy5oaXN0b3J5LnBvcCgpLGUmJl8oKSwhMH19fSx7a2V5OlwibW92ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHRoaXMuZWxlbWVudC5wYXJlbnROb2RlKXt2YXIgbz17fTtmb3IodmFyIG4gaW4gdCl7b1tuXT17fTtmb3IodmFyIGkgaW4gdFtuXSl7Zm9yKHZhciByPSExLHM9MDtzPHRoaXMuaGlzdG9yeS5sZW5ndGg7KytzKXt2YXIgYT10aGlzLmhpc3Rvcnlbc107aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGFbbl0mJiF5KGFbbl1baV0sdFtuXVtpXSkpe3I9ITA7YnJlYWt9fXJ8fChvW25dW2ldPSEwKX19dmFyIGw9e3RvcDpcIlwiLGxlZnQ6XCJcIixyaWdodDpcIlwiLGJvdHRvbTpcIlwifSx1PWZ1bmN0aW9uKHQsbyl7dmFyIG49XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGUub3B0aW9ucy5vcHRpbWl6YXRpb25zLGk9bj9lLm9wdGlvbnMub3B0aW1pemF0aW9ucy5ncHU6bnVsbDtpZihpIT09ITEpe3ZhciByPXZvaWQgMCxzPXZvaWQgMDt0LnRvcD8obC50b3A9MCxyPW8udG9wKToobC5ib3R0b209MCxyPS1vLmJvdHRvbSksdC5sZWZ0PyhsLmxlZnQ9MCxzPW8ubGVmdCk6KGwucmlnaHQ9MCxzPS1vLnJpZ2h0KSxsW1ldPVwidHJhbnNsYXRlWChcIitNYXRoLnJvdW5kKHMpK1wicHgpIHRyYW5zbGF0ZVkoXCIrTWF0aC5yb3VuZChyKStcInB4KVwiLFwibXNUcmFuc2Zvcm1cIiE9PVkmJihsW1ldKz1cIiB0cmFuc2xhdGVaKDApXCIpfWVsc2UgdC50b3A/bC50b3A9by50b3ArXCJweFwiOmwuYm90dG9tPW8uYm90dG9tK1wicHhcIix0LmxlZnQ/bC5sZWZ0PW8ubGVmdCtcInB4XCI6bC5yaWdodD1vLnJpZ2h0K1wicHhcIn0sZD0hMTtpZigoby5wYWdlLnRvcHx8by5wYWdlLmJvdHRvbSkmJihvLnBhZ2UubGVmdHx8by5wYWdlLnJpZ2h0KT8obC5wb3NpdGlvbj1cImFic29sdXRlXCIsdShvLnBhZ2UsdC5wYWdlKSk6KG8udmlld3BvcnQudG9wfHxvLnZpZXdwb3J0LmJvdHRvbSkmJihvLnZpZXdwb3J0LmxlZnR8fG8udmlld3BvcnQucmlnaHQpPyhsLnBvc2l0aW9uPVwiZml4ZWRcIix1KG8udmlld3BvcnQsdC52aWV3cG9ydCkpOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBvLm9mZnNldCYmby5vZmZzZXQudG9wJiZvLm9mZnNldC5sZWZ0PyFmdW5jdGlvbigpe2wucG9zaXRpb249XCJhYnNvbHV0ZVwiO3ZhciBuPWUuY2FjaGUoXCJ0YXJnZXQtb2Zmc2V0cGFyZW50XCIsZnVuY3Rpb24oKXtyZXR1cm4gZihlLnRhcmdldCl9KTtmKGUuZWxlbWVudCkhPT1uJiZNKGZ1bmN0aW9uKCl7ZS5lbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZS5lbGVtZW50KSxuLmFwcGVuZENoaWxkKGUuZWxlbWVudCl9KSx1KG8ub2Zmc2V0LHQub2Zmc2V0KSxkPSEwfSgpOihsLnBvc2l0aW9uPVwiYWJzb2x1dGVcIix1KHt0b3A6ITAsbGVmdDohMH0sdC5wYWdlKSksIWQpe2Zvcih2YXIgcD0hMCxjPXRoaXMuZWxlbWVudC5wYXJlbnROb2RlO2MmJjE9PT1jLm5vZGVUeXBlJiZcIkJPRFlcIiE9PWMudGFnTmFtZTspe2lmKFwic3RhdGljXCIhPT1nZXRDb21wdXRlZFN0eWxlKGMpLnBvc2l0aW9uKXtwPSExO2JyZWFrfWM9Yy5wYXJlbnROb2RlfXB8fCh0aGlzLmVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQpLHRoaXMuZWxlbWVudC5vd25lckRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KSl9dmFyIGc9e30sbT0hMTtmb3IodmFyIGkgaW4gbCl7dmFyIHY9bFtpXSxiPXRoaXMuZWxlbWVudC5zdHlsZVtpXTtiIT09diYmKG09ITAsZ1tpXT12KX1tJiZNKGZ1bmN0aW9uKCl7aChlLmVsZW1lbnQuc3R5bGUsZyl9KX19fV0pLGV9KGspO3EubW9kdWxlcz1bXSx4LnBvc2l0aW9uPUQ7dmFyIEk9aChxLHgpLEI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dmFyIG89W10sbj0hMCxpPSExLHI9dm9pZCAwO3RyeXtmb3IodmFyIHMsYT10W1N5bWJvbC5pdGVyYXRvcl0oKTshKG49KHM9YS5uZXh0KCkpLmRvbmUpJiYoby5wdXNoKHMudmFsdWUpLCFlfHxvLmxlbmd0aCE9PWUpO249ITApO31jYXRjaChmKXtpPSEwLHI9Zn1maW5hbGx5e3RyeXshbiYmYVtcInJldHVyblwiXSYmYVtcInJldHVyblwiXSgpfWZpbmFsbHl7aWYoaSl0aHJvdyByfX1yZXR1cm4gb31yZXR1cm4gZnVuY3Rpb24oZSxvKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlO2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpcmV0dXJuIHQoZSxvKTt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX19KCksaj14LlV0aWxzLGE9ai5nZXRCb3VuZHMsaD1qLmV4dGVuZCxtPWoudXBkYXRlQ2xhc3NlcyxNPWouZGVmZXIsJD1bXCJsZWZ0XCIsXCJ0b3BcIixcInJpZ2h0XCIsXCJib3R0b21cIl07eC5tb2R1bGVzLnB1c2goe3Bvc2l0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbz10LnRvcCxuPXQubGVmdCxpPXQudGFyZ2V0QXR0YWNobWVudDtpZighdGhpcy5vcHRpb25zLmNvbnN0cmFpbnRzKXJldHVybiEwO3ZhciByPXRoaXMuY2FjaGUoXCJlbGVtZW50LWJvdW5kc1wiLGZ1bmN0aW9uKCl7cmV0dXJuIGEoZS5lbGVtZW50KX0pLHM9ci5oZWlnaHQsZj1yLndpZHRoO2lmKDA9PT1mJiYwPT09cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHRoaXMubGFzdFNpemUpe3ZhciBsPXRoaXMubGFzdFNpemU7Zj1sLndpZHRoLHM9bC5oZWlnaHR9dmFyIHU9dGhpcy5jYWNoZShcInRhcmdldC1ib3VuZHNcIixmdW5jdGlvbigpe3JldHVybiBlLmdldFRhcmdldEJvdW5kcygpfSksZD11LmhlaWdodCxwPXUud2lkdGgsYz1bdGhpcy5nZXRDbGFzcyhcInBpbm5lZFwiKSx0aGlzLmdldENsYXNzKFwib3V0LW9mLWJvdW5kc1wiKV07dGhpcy5vcHRpb25zLmNvbnN0cmFpbnRzLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9dC5vdXRPZkJvdW5kc0NsYXNzLG89dC5waW5uZWRDbGFzcztlJiZjLnB1c2goZSksbyYmYy5wdXNoKG8pfSksYy5mb3JFYWNoKGZ1bmN0aW9uKHQpe1tcImxlZnRcIixcInRvcFwiLFwicmlnaHRcIixcImJvdHRvbVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2MucHVzaCh0K1wiLVwiK2UpfSl9KTt2YXIgZz1bXSx2PWgoe30saSkseT1oKHt9LHRoaXMuYXR0YWNobWVudCk7cmV0dXJuIHRoaXMub3B0aW9ucy5jb25zdHJhaW50cy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByPXQudG8sYT10LmF0dGFjaG1lbnQsbD10LnBpbjtcInVuZGVmaW5lZFwiPT10eXBlb2YgYSYmKGE9XCJcIik7dmFyIGg9dm9pZCAwLHU9dm9pZCAwO2lmKGEuaW5kZXhPZihcIiBcIik+PTApe3ZhciBjPWEuc3BsaXQoXCIgXCIpLG09QihjLDIpO3U9bVswXSxoPW1bMV19ZWxzZSBoPXU9YTt2YXIgYj1PKGUscik7KFwidGFyZ2V0XCI9PT11fHxcImJvdGhcIj09PXUpJiYobzxiWzFdJiZcInRvcFwiPT09di50b3AmJihvKz1kLHYudG9wPVwiYm90dG9tXCIpLG8rcz5iWzNdJiZcImJvdHRvbVwiPT09di50b3AmJihvLT1kLHYudG9wPVwidG9wXCIpKSxcInRvZ2V0aGVyXCI9PT11JiYoXCJ0b3BcIj09PXYudG9wJiYoXCJib3R0b21cIj09PXkudG9wJiZvPGJbMV0/KG8rPWQsdi50b3A9XCJib3R0b21cIixvKz1zLHkudG9wPVwidG9wXCIpOlwidG9wXCI9PT15LnRvcCYmbytzPmJbM10mJm8tKHMtZCk+PWJbMV0mJihvLT1zLWQsdi50b3A9XCJib3R0b21cIix5LnRvcD1cImJvdHRvbVwiKSksXCJib3R0b21cIj09PXYudG9wJiYoXCJ0b3BcIj09PXkudG9wJiZvK3M+YlszXT8oby09ZCx2LnRvcD1cInRvcFwiLG8tPXMseS50b3A9XCJib3R0b21cIik6XCJib3R0b21cIj09PXkudG9wJiZvPGJbMV0mJm8rKDIqcy1kKTw9YlszXSYmKG8rPXMtZCx2LnRvcD1cInRvcFwiLHkudG9wPVwidG9wXCIpKSxcIm1pZGRsZVwiPT09di50b3AmJihvK3M+YlszXSYmXCJ0b3BcIj09PXkudG9wPyhvLT1zLHkudG9wPVwiYm90dG9tXCIpOm88YlsxXSYmXCJib3R0b21cIj09PXkudG9wJiYobys9cyx5LnRvcD1cInRvcFwiKSkpLChcInRhcmdldFwiPT09aHx8XCJib3RoXCI9PT1oKSYmKG48YlswXSYmXCJsZWZ0XCI9PT12LmxlZnQmJihuKz1wLHYubGVmdD1cInJpZ2h0XCIpLG4rZj5iWzJdJiZcInJpZ2h0XCI9PT12LmxlZnQmJihuLT1wLHYubGVmdD1cImxlZnRcIikpLFwidG9nZXRoZXJcIj09PWgmJihuPGJbMF0mJlwibGVmdFwiPT09di5sZWZ0P1wicmlnaHRcIj09PXkubGVmdD8obis9cCx2LmxlZnQ9XCJyaWdodFwiLG4rPWYseS5sZWZ0PVwibGVmdFwiKTpcImxlZnRcIj09PXkubGVmdCYmKG4rPXAsdi5sZWZ0PVwicmlnaHRcIixuLT1mLHkubGVmdD1cInJpZ2h0XCIpOm4rZj5iWzJdJiZcInJpZ2h0XCI9PT12LmxlZnQ/XCJsZWZ0XCI9PT15LmxlZnQ/KG4tPXAsdi5sZWZ0PVwibGVmdFwiLG4tPWYseS5sZWZ0PVwicmlnaHRcIik6XCJyaWdodFwiPT09eS5sZWZ0JiYobi09cCx2LmxlZnQ9XCJsZWZ0XCIsbis9Zix5LmxlZnQ9XCJsZWZ0XCIpOlwiY2VudGVyXCI9PT12LmxlZnQmJihuK2Y+YlsyXSYmXCJsZWZ0XCI9PT15LmxlZnQ/KG4tPWYseS5sZWZ0PVwicmlnaHRcIik6bjxiWzBdJiZcInJpZ2h0XCI9PT15LmxlZnQmJihuKz1mLHkubGVmdD1cImxlZnRcIikpKSwoXCJlbGVtZW50XCI9PT11fHxcImJvdGhcIj09PXUpJiYobzxiWzFdJiZcImJvdHRvbVwiPT09eS50b3AmJihvKz1zLHkudG9wPVwidG9wXCIpLG8rcz5iWzNdJiZcInRvcFwiPT09eS50b3AmJihvLT1zLHkudG9wPVwiYm90dG9tXCIpKSwoXCJlbGVtZW50XCI9PT1ofHxcImJvdGhcIj09PWgpJiYobjxiWzBdJiYoXCJyaWdodFwiPT09eS5sZWZ0PyhuKz1mLHkubGVmdD1cImxlZnRcIik6XCJjZW50ZXJcIj09PXkubGVmdCYmKG4rPWYvMix5LmxlZnQ9XCJsZWZ0XCIpKSxuK2Y+YlsyXSYmKFwibGVmdFwiPT09eS5sZWZ0PyhuLT1mLHkubGVmdD1cInJpZ2h0XCIpOlwiY2VudGVyXCI9PT15LmxlZnQmJihuLT1mLzIseS5sZWZ0PVwicmlnaHRcIikpKSxcInN0cmluZ1wiPT10eXBlb2YgbD9sPWwuc3BsaXQoXCIsXCIpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC50cmltKCl9KTpsPT09ITAmJihsPVtcInRvcFwiLFwibGVmdFwiLFwicmlnaHRcIixcImJvdHRvbVwiXSksbD1sfHxbXTt2YXIgdz1bXSxDPVtdO288YlsxXSYmKGwuaW5kZXhPZihcInRvcFwiKT49MD8obz1iWzFdLHcucHVzaChcInRvcFwiKSk6Qy5wdXNoKFwidG9wXCIpKSxvK3M+YlszXSYmKGwuaW5kZXhPZihcImJvdHRvbVwiKT49MD8obz1iWzNdLXMsdy5wdXNoKFwiYm90dG9tXCIpKTpDLnB1c2goXCJib3R0b21cIikpLG48YlswXSYmKGwuaW5kZXhPZihcImxlZnRcIik+PTA/KG49YlswXSx3LnB1c2goXCJsZWZ0XCIpKTpDLnB1c2goXCJsZWZ0XCIpKSxuK2Y+YlsyXSYmKGwuaW5kZXhPZihcInJpZ2h0XCIpPj0wPyhuPWJbMl0tZix3LnB1c2goXCJyaWdodFwiKSk6Qy5wdXNoKFwicmlnaHRcIikpLHcubGVuZ3RoJiYhZnVuY3Rpb24oKXt2YXIgdD12b2lkIDA7dD1cInVuZGVmaW5lZFwiIT10eXBlb2YgZS5vcHRpb25zLnBpbm5lZENsYXNzP2Uub3B0aW9ucy5waW5uZWRDbGFzczplLmdldENsYXNzKFwicGlubmVkXCIpLGcucHVzaCh0KSx3LmZvckVhY2goZnVuY3Rpb24oZSl7Zy5wdXNoKHQrXCItXCIrZSl9KX0oKSxDLmxlbmd0aCYmIWZ1bmN0aW9uKCl7dmFyIHQ9dm9pZCAwO3Q9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGUub3B0aW9ucy5vdXRPZkJvdW5kc0NsYXNzP2Uub3B0aW9ucy5vdXRPZkJvdW5kc0NsYXNzOmUuZ2V0Q2xhc3MoXCJvdXQtb2YtYm91bmRzXCIpLGcucHVzaCh0KSxDLmZvckVhY2goZnVuY3Rpb24oZSl7Zy5wdXNoKHQrXCItXCIrZSl9KX0oKSwody5pbmRleE9mKFwibGVmdFwiKT49MHx8dy5pbmRleE9mKFwicmlnaHRcIik+PTApJiYoeS5sZWZ0PXYubGVmdD0hMSksKHcuaW5kZXhPZihcInRvcFwiKT49MHx8dy5pbmRleE9mKFwiYm90dG9tXCIpPj0wKSYmKHkudG9wPXYudG9wPSExKSwodi50b3AhPT1pLnRvcHx8di5sZWZ0IT09aS5sZWZ0fHx5LnRvcCE9PWUuYXR0YWNobWVudC50b3B8fHkubGVmdCE9PWUuYXR0YWNobWVudC5sZWZ0KSYmKGUudXBkYXRlQXR0YWNoQ2xhc3Nlcyh5LHYpLGUudHJpZ2dlcihcInVwZGF0ZVwiLHthdHRhY2htZW50OnksdGFyZ2V0QXR0YWNobWVudDp2fSkpfSksTShmdW5jdGlvbigpe2Uub3B0aW9ucy5hZGRUYXJnZXRDbGFzc2VzIT09ITEmJm0oZS50YXJnZXQsZyxjKSxtKGUuZWxlbWVudCxnLGMpfSkse3RvcDpvLGxlZnQ6bn19fSk7dmFyIGo9eC5VdGlscyxhPWouZ2V0Qm91bmRzLG09ai51cGRhdGVDbGFzc2VzLE09ai5kZWZlcjt4Lm1vZHVsZXMucHVzaCh7cG9zaXRpb246ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxvPXQudG9wLG49dC5sZWZ0LGk9dGhpcy5jYWNoZShcImVsZW1lbnQtYm91bmRzXCIsZnVuY3Rpb24oKXtyZXR1cm4gYShlLmVsZW1lbnQpfSkscj1pLmhlaWdodCxzPWkud2lkdGgsZj10aGlzLmdldFRhcmdldEJvdW5kcygpLGw9bytyLGg9bitzLHU9W107bzw9Zi5ib3R0b20mJmw+PWYudG9wJiZbXCJsZWZ0XCIsXCJyaWdodFwiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPWZbdF07KGU9PT1ufHxlPT09aCkmJnUucHVzaCh0KX0pLG48PWYucmlnaHQmJmg+PWYubGVmdCYmW1widG9wXCIsXCJib3R0b21cIl0uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1mW3RdOyhlPT09b3x8ZT09PWwpJiZ1LnB1c2godCl9KTt2YXIgZD1bXSxwPVtdLGM9W1wibGVmdFwiLFwidG9wXCIsXCJyaWdodFwiLFwiYm90dG9tXCJdO3JldHVybiBkLnB1c2godGhpcy5nZXRDbGFzcyhcImFidXR0ZWRcIikpLGMuZm9yRWFjaChmdW5jdGlvbih0KXtkLnB1c2goZS5nZXRDbGFzcyhcImFidXR0ZWRcIikrXCItXCIrdCl9KSx1Lmxlbmd0aCYmcC5wdXNoKHRoaXMuZ2V0Q2xhc3MoXCJhYnV0dGVkXCIpKSx1LmZvckVhY2goZnVuY3Rpb24odCl7cC5wdXNoKGUuZ2V0Q2xhc3MoXCJhYnV0dGVkXCIpK1wiLVwiK3QpfSksTShmdW5jdGlvbigpe2Uub3B0aW9ucy5hZGRUYXJnZXRDbGFzc2VzIT09ITEmJm0oZS50YXJnZXQscCxkKSxtKGUuZWxlbWVudCxwLGQpfSksITB9fSk7dmFyIEI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dmFyIG89W10sbj0hMCxpPSExLHI9dm9pZCAwO3RyeXtmb3IodmFyIHMsYT10W1N5bWJvbC5pdGVyYXRvcl0oKTshKG49KHM9YS5uZXh0KCkpLmRvbmUpJiYoby5wdXNoKHMudmFsdWUpLCFlfHxvLmxlbmd0aCE9PWUpO249ITApO31jYXRjaChmKXtpPSEwLHI9Zn1maW5hbGx5e3RyeXshbiYmYVtcInJldHVyblwiXSYmYVtcInJldHVyblwiXSgpfWZpbmFsbHl7aWYoaSl0aHJvdyByfX1yZXR1cm4gb31yZXR1cm4gZnVuY3Rpb24oZSxvKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlO2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpcmV0dXJuIHQoZSxvKTt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX19KCk7cmV0dXJuIHgubW9kdWxlcy5wdXNoKHtwb3NpdGlvbjpmdW5jdGlvbih0KXt2YXIgZT10LnRvcCxvPXQubGVmdDtpZih0aGlzLm9wdGlvbnMuc2hpZnQpe3ZhciBuPXRoaXMub3B0aW9ucy5zaGlmdDtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuc2hpZnQmJihuPXRoaXMub3B0aW9ucy5zaGlmdC5jYWxsKHRoaXMse3RvcDplLGxlZnQ6b30pKTt2YXIgaT12b2lkIDAscj12b2lkIDA7aWYoXCJzdHJpbmdcIj09dHlwZW9mIG4pe249bi5zcGxpdChcIiBcIiksblsxXT1uWzFdfHxuWzBdO3ZhciBzPW4sYT1CKHMsMik7aT1hWzBdLHI9YVsxXSxpPXBhcnNlRmxvYXQoaSwxMCkscj1wYXJzZUZsb2F0KHIsMTApfWVsc2UgaT1uLnRvcCxyPW4ubGVmdDtyZXR1cm4gZSs9aSxvKz1yLHt0b3A6ZSxsZWZ0Om99fX19KSxJfSk7IiwiZGVmaW5lKGZ1bmN0aW9uKCkge1xuXG4gICAgcmV0dXJuIHtcblxuICAgICAgICBpbml0KCkge1xuICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ3Nob3cuYnMubW9kYWwnLCAnLmpzLWFqYXgtbW9kYWwnLCB0aGlzLmluaXRNb2RhbHMpO1xuICAgICAgICB9LFxuXG5cbiAgICAgICAgaW5pdE1vZGFscyhlKSB7XG4gICAgICAgICAgICB2YXIgJG1vZGFsID0gJCh0aGlzKTtcblxuXG4gICAgICAgICAgICBpZiAoISRtb2RhbC5kYXRhKCdsb2FkZWQnKSkge1xuICAgICAgICAgICAgICAgIHZhciAkYnRuID0gJChlLnJlbGF0ZWRUYXJnZXQpLFxuICAgICAgICAgICAgICAgICAgICBsaW5rID0gJGJ0bi5kYXRhKCdsaW5rJyk7XG5cbiAgICAgICAgICAgICAgICAkbW9kYWwuZGF0YSgnbG9hZGVkJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgJG1vZGFsLmZpbmQoJy5qcy1hamF4LW1vZGFsLWJvZHknKS5hcHBlbmQoJzxpZnJhbWUgY2xhc3M9XCJhamF4LW1vZGFsX19ib2R5X19pZnJhbWVcIiBmcmFtZWJvcmRlcj1cIjBcIiBzcmM9XCInICsgbGluayArICdcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgc2Nyb2xsaW5nPVwiYXV0b1wiPjwvaWZyYW1lPicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG5cbiAgICAgICAgcmVzZXRBamF4TW9kYWxzKCkge1xuICAgICAgICAgICAgJCgnLmpzLWFqYXgtbW9kYWwnKS5vZmYoJ3Nob3cuYnMubW9kYWwnLCB0aGlzLmluaXRNb2RhbHMpO1xuICAgICAgICAgICAgJCgnLmpzLWFqYXgtbW9kYWwnKS5vbignc2hvdy5icy5tb2RhbCcsIHRoaXMuaW5pdE1vZGFscyk7XG4gICAgICAgIH0sXG4gICAgfVxufSk7XG4iLCJkZWZpbmUoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAobikge1xuICAgICAgICB2YXIgYSA9IHRoaXMuZ2VuZXJhbDtcbiAgICAgICAgYS5kZWJvdW5jZSA9IGZ1bmN0aW9uIChuLCBhLCBlKSB7XG4gICAgICAgICAgICB2YXIgdDtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLCB1ID0gYXJndW1lbnRzLCBpID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0ID0gbnVsbCwgZSB8fCBuLmFwcGx5KHIsIHUpXG4gICAgICAgICAgICAgICAgfSwgbyA9IGUgJiYgIXQ7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHQpLCB0ID0gc2V0VGltZW91dChpLCBhKSwgbyAmJiBuLmFwcGx5KHIsIHUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGEuZWFzZUluT3V0UXVhZCA9IGZ1bmN0aW9uIChuLCBhLCBlLCB0KSB7XG4gICAgICAgICAgICByZXR1cm4gbiAvPSB0IC8gMiwgMSA+IG4gPyBlIC8gMiAqIG4gKiBuICsgYSA6IChuLS0sIC1lIC8gMiAqIChuICogKG4gLSAyKSAtIDEpICsgYSlcbiAgICAgICAgfSwgYS5hbmltYXRlID0gZnVuY3Rpb24gKG4sIGEsIGUsIHQsIHIsIHUpIHtcbiAgICAgICAgICAgIG4gJiYgKHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIG4uc3R5bGVbYV0gPSByXG4gICAgICAgICAgICB9LCB1KSwgbi5zdHlsZVthXSA9IHQpXG4gICAgICAgIH1cbiAgICB9XG59KTsiLCJkZWZpbmUoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICB2YXIgYSwgbywgbiwgYywgaSwgbCwgciA9IDE1MCwgdSA9IDAsIHMgPSBcImpzLXRvZ2dsZS1idG5cIiwgZyA9IFwidG9nZ2xlLWJ0bi0tYWN0aXZlXCIsIGQgPSBcInRvZ2dsZS1pdGVtLS1hY3RpdmVcIixcbiAgICAgICAgICAgIGYgPSBcInRvZ2dsZS1pdGVtX19jb250ZW50XCI7XG4gICAgICAgIG8gPSBmdW5jdGlvbiAodCwgZSwgYSkge1xuICAgICAgICAgICAgZm9yICh2YXIgbyA9IGUuc3BsaXQoXCIgXCIpLCBuID0gMCwgYyA9IG8ubGVuZ3RoOyBjID4gbjsgbisrKSB0LmFkZEV2ZW50TGlzdGVuZXIob1tuXSwgYSwgITEpXG4gICAgICAgIH0sIG4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBbXS5mb3JFYWNoLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5cIiArIHMpLCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIG8odCwgXCJjbGljayB0b3VjaHN0YXJ0IG1vdXNlZG93blwiLCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgICAgICB0LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICB9KSwgbyh0LCBcInRvdWNoZW5kIG1vdXNldXBcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHQuZ2V0QXR0cmlidXRlKFwiZGF0YS10YXJnZXRcIikpWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGEucXVlcnlTZWxlY3RvckFsbChcIi5cIiArIGYpWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG8ub2Zmc2V0SGVpZ2h0LCB2ID0gYS5jbGFzc0xpc3QuY29udGFpbnMoZCksIGIgPSB0LmdldEF0dHJpYnV0ZShcImRhdGEtaGlkZS1vdGhlcnNcIik7XG4gICAgICAgICAgICAgICAgICAgIGlmICh1ID0gbnVsbCAhPT0gdC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWR1cmF0aW9uXCIpID8gdC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWR1cmF0aW9uXCIpIDogciwgdikgaSh0LCBhKTsgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gdC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXRhcmdldFwiKSwgbSA9IHQuZ2V0QXR0cmlidXRlKFwiZGF0YS1sZXZlbFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXS5mb3JFYWNoLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5cIiArIHMgKyAnW2RhdGEtbGV2ZWw9XCInICsgbSArICdcIl0nKSwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmdldEF0dHJpYnV0ZShcImRhdGEtdGFyZ2V0XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoICE9PSBlICYmIHQuY2xhc3NMaXN0LmNvbnRhaW5zKGcpICYmIGwodCwgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChlKVswXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYyh0LCBhLCBvLCBuKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sIGMgPSBmdW5jdGlvbiAodCwgZSwgYSwgbykge1xuICAgICAgICAgICAgY2FyZ29iYXkuZ2VuZXJhbC5hbmltYXRlKGUsIFwiaGVpZ2h0XCIsIFwicHhcIiwgbywgXCJhdXRvXCIsIHUpLCB0LmNsYXNzTGlzdC5hZGQoZyksIGUuY2xhc3NMaXN0LmFkZChkKVxuICAgICAgICB9LCBpID0gZnVuY3Rpb24gKHQsIGUsIGEsIG8pIHtcbiAgICAgICAgICAgIGNhcmdvYmF5LmdlbmVyYWwuYW5pbWF0ZShlLCBcImhlaWdodFwiLCBcInB4XCIsIDAsIG8sIHUpLCB0LmNsYXNzTGlzdC5yZW1vdmUoZyksIGUuY2xhc3NMaXN0LnJlbW92ZShkKVxuICAgICAgICB9LCBsID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgIHQuY2xhc3NMaXN0LnJlbW92ZShnKSwgZS5zdHlsZS5oZWlnaHQgPSAwLCBlLmNsYXNzTGlzdC5yZW1vdmUoZClcbiAgICAgICAgfSwgYSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIG4oKVxuICAgICAgICB9KClcbiAgICB9XG59KTsiLCJkZWZpbmUoZnVuY3Rpb24oKSB7XG5cbiAgICByZXR1cm4ge1xuXG4gICAgICAgIGluaXQoKSB7XG4gICAgICAgICAgICB0aGlzLnVybENob29zZXIoKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdERlbEJ0bigpO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vIERlbCBidG5cbiAgICAgICAgaW5pdERlbEJ0bigpIHtcbiAgICAgICAgICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnLmpzLW1lZGlhLWNob29zZXItZGVsLXByZXZpZXctYnRuJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpLFxuICAgICAgICAgICAgICAgICAgICBsaW5rZWRJRCA9ICR0aGlzLmRhdGEoJ2xpbmtlZC1pZCcpLFxuICAgICAgICAgICAgICAgICAgICAkd2lkZ2V0ID0gJCgnIycgKyBsaW5rZWRJRCArICctd2lkZ2V0JyksXG4gICAgICAgICAgICAgICAgICAgICRpbnB1dCA9ICQoJyMnICsgbGlua2VkSUQpO1xuXG4gICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkuZmluZCgnLm1lZGlhLWNob29zZXJfX3ByZXZpZXcnKS5yZW1vdmUoKTtcblxuICAgICAgICAgICAgICAgICQoXCIubWVkaWEtdGh1bWJuYWlsX19pY29uXCIpLnJlbW92ZSgpO1xuXG4gICAgICAgICAgICAgICAgJHdpZGdldC5yZW1vdmVDbGFzcygnbWVkaWEtY2hvb3Nlci0tY2hvb3NlbicpO1xuICAgICAgICAgICAgICAgICRpbnB1dC52YWwoJycpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gVVJMLUNob29zZXJcbiAgICAgICAgdXJsQ2hvb3NlcigpIHtcblxuICAgICAgICAgICAgLy8gTGluayBDaG9vc2VyIHNlbGVjdFxuICAgICAgICAgICAgJCgnYm9keScpLm9uKCdjbGljaycsICcuanMtdXJsLWNob29zZXItbGluay1zZWxlY3QnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyksXG4gICAgICAgICAgICAgICAgICAgIHNsdWcgPSAkdGhpcy5kYXRhKCdzbHVnJyksXG4gICAgICAgICAgICAgICAgICAgIGlkID0gJHRoaXMuZGF0YSgnaWQnKSxcbiAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVVybCA9ICR0aGlzLmNsb3Nlc3QoJ25hdicpLmRhdGEoJ3JlcGxhY2UtdXJsJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBTdG9yZSB2YWx1ZXNcbiAgICAgICAgICAgICAgICBpdGVtVXJsID0gKHNsdWcgPyBzbHVnIDogJycpO1xuICAgICAgICAgICAgICAgIGl0ZW1JZCA9IGlkO1xuXG4gICAgICAgICAgICAgICAgLy8gUmVwbGFjZSBVUkxcbiAgICAgICAgICAgICAgICAkLmFqYXgoe1xuICAgICAgICAgICAgICAgICAgICB1cmw6IHJlcGxhY2VVcmwsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdHRVQnLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7J3RleHQnOiBpdGVtVXJsfSxcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlZFVybCA9IHJlc3BvbnNlLnRleHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBwcmV2aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICAkKCcjdXJsLWNob29zZXJfX3NlbGVjdGlvbi1wcmV2aWV3JykudGV4dCgnU2VsZWN0aW9uOiAnICsgcmVwbGFjZWRVcmwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gTWVkaWEgQ2hvb3NlciBzZWxlY3RcbiAgICAgICAgICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnLmpzLXVybC1jaG9vc2VyLW1lZGlhLXNlbGVjdCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aCA9ICR0aGlzLmRhdGEoJ3BhdGgnKSxcbiAgICAgICAgICAgICAgICAgICAgdGh1bWJQYXRoID0gJHRoaXMuZGF0YSgndGh1bWItcGF0aCcpLFxuICAgICAgICAgICAgICAgICAgICBpZCA9ICR0aGlzLmRhdGEoJ2lkJyksXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlID0gJHRoaXMuZGF0YSgndGl0bGUnKSxcbiAgICAgICAgICAgICAgICAgICAgY2tlID0gJHRoaXMuZGF0YSgnY2tlJyksXG4gICAgICAgICAgICAgICAgICAgIHJlcGxhY2VVcmwgPSAkdGhpcy5jbG9zZXN0KCcudGh1bWJuYWlsLXdyYXBwZXInKS5kYXRhKCdyZXBsYWNlLXVybCcpO1xuXG4gICAgICAgICAgICAgICAgLy8gU3RvcmUgdmFsdWVzXG4gICAgICAgICAgICAgICAgaXRlbVVybCA9IHBhdGg7XG4gICAgICAgICAgICAgICAgaXRlbUlkID0gaWQ7XG4gICAgICAgICAgICAgICAgaXRlbVRpdGxlID0gdGl0bGU7XG4gICAgICAgICAgICAgICAgaXRlbVRodW1iUGF0aCA9IHRodW1iUGF0aDtcblxuICAgICAgICAgICAgICAgIC8vIFNhdmVcbiAgICAgICAgICAgICAgICBpZiAoIWNrZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaXNNZWRpYUNob29zZXIgPSAkKHdpbmRvdy5mcmFtZUVsZW1lbnQpLmNsb3Nlc3QoJy5qcy1hamF4LW1vZGFsJykuZGF0YSgnbWVkaWEtY2hvb3NlcicpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01lZGlhQ2hvb3Nlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHNjLm1lZGlhQ2hvb3Nlci5zYXZlTWVkaWFDaG9vc2VyTW9kYWwoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICQuYWpheCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiByZXBsYWNlVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdHRVQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsndGV4dCc6IGl0ZW1Vcmx9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlZFVybCA9IHJlc3BvbnNlLnRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkuZG9uZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHNjLm1lZGlhQ2hvb3Nlci5zYXZlVXJsQ2hvb3Nlck1vZGFsKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwc2MubWVkaWFDaG9vc2VyLnNhdmVNZWRpYUNob29zZXJNb2RhbCh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuXG4gICAgICAgICAgICAvLyBDYW5jZWxcbiAgICAgICAgICAgICQoJyNjYW5jZWwtdXJsLWNob29zZXItbW9kYWwnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNrZSA9ICQodGhpcykuZGF0YSgnY2tlJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWNrZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJHBhcmVudE1vZGFsID0gJCh3aW5kb3cuZnJhbWVFbGVtZW50KS5jbG9zZXN0KCcuanMtYWpheC1tb2RhbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50TW9kYWxJZCA9ICRwYXJlbnRNb2RhbC5hdHRyKCdpZCcpO1xuXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudC4kKCcjJyArIHBhcmVudE1vZGFsSWQpLm1vZGFsKCdoaWRlJyk7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuXG4gICAgICAgICAgICAvLyBPS1xuICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJyNzYXZlLXVybC1jaG9vc2VyLW1vZGFsJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBja2UgPSAkKHRoaXMpLmRhdGEoJ2NrZScpO1xuXG4gICAgICAgICAgICAgICAgcHNjLm1lZGlhQ2hvb3Nlci5zYXZlVXJsQ2hvb3Nlck1vZGFsKGNrZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBTYXZlIGZvciBVUkwtY2hvb3NlclxuICAgICAgICBzYXZlVXJsQ2hvb3Nlck1vZGFsKGNrZSkge1xuICAgICAgICAgICAgaWYgKCFja2UpIHtcbiAgICAgICAgICAgICAgICB2YXIgJHBhcmVudE1vZGFsID0gJCh3aW5kb3cuZnJhbWVFbGVtZW50KS5jbG9zZXN0KCcuanMtYWpheC1tb2RhbCcpLFxuICAgICAgICAgICAgICAgICAgICBsaW5rZWRJbnB1dElkID0gJHBhcmVudE1vZGFsLmRhdGEoJ2xpbmtlZC1pbnB1dC1pZCcpLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRNb2RhbElkID0gJHBhcmVudE1vZGFsLmF0dHIoJ2lkJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBTZXQgdmFsXG4gICAgICAgICAgICAgICAgcGFyZW50LiQoJyMnICsgbGlua2VkSW5wdXRJZCkudmFsKGl0ZW1VcmwpLmNoYW5nZSgpO1xuXG4gICAgICAgICAgICAgICAgLy8gU2V0IHByb3BlciBVUkxcbiAgICAgICAgICAgICAgICBwYXJlbnQuJCgnIycgKyBsaW5rZWRJbnB1dElkKS5wYXJlbnQoKS5maW5kKCcuanMtdXJsY2hvb3Nlci12YWx1ZScpLnZhbChyZXBsYWNlZFVybCk7XG5cbiAgICAgICAgICAgICAgICAvLyBDbG9zZSBtb2RhbFxuICAgICAgICAgICAgICAgIHBhcmVudC4kKCcjJyArIHBhcmVudE1vZGFsSWQpLm1vZGFsKCdoaWRlJyk7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIGZ1bmNOdW0gPSBnZXRVcmxQYXJhbSgnQ0tFZGl0b3JGdW5jTnVtJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBTZXQgdmFsXG4gICAgICAgICAgICAgICAgd2luZG93Lm9wZW5lci5DS0VESVRPUi50b29scy5jYWxsRnVuY3Rpb24oZnVuY051bSwgaXRlbVVybCk7XG5cbiAgICAgICAgICAgICAgICAvLyBDbG9zZSB3aW5kb3dcbiAgICAgICAgICAgICAgICB3aW5kb3cuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuXG4gICAgICAgIC8vIFNhdmUgZm9yIE1lZGlhLWNob29zZXJcbiAgICAgICAgc2F2ZU1lZGlhQ2hvb3Nlck1vZGFsKGNrZSkge1xuICAgICAgICAgICAgaWYgKCFja2UpIHtcbiAgICAgICAgICAgICAgICB2YXIgJHBhcmVudE1vZGFsID0gJCh3aW5kb3cuZnJhbWVFbGVtZW50KS5jbG9zZXN0KCcuanMtYWpheC1tb2RhbCcpLFxuICAgICAgICAgICAgICAgICAgICBsaW5rZWRJbnB1dElkID0gJHBhcmVudE1vZGFsLmRhdGEoJ2xpbmtlZC1pbnB1dC1pZCcpLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRNb2RhbElkID0gJHBhcmVudE1vZGFsLmF0dHIoJ2lkJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBTZXQgdmFsXG4gICAgICAgICAgICAgICAgcGFyZW50LiQoJyMnICsgbGlua2VkSW5wdXRJZCkudmFsKGl0ZW1JZCkuY2hhbmdlKCk7XG5cbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgcHJldmlld1xuICAgICAgICAgICAgICAgIHZhciAkbWVkaWFDaG9vc2VyID0gcGFyZW50LiQoJyMnICsgbGlua2VkSW5wdXRJZCArICctd2lkZ2V0JyksXG4gICAgICAgICAgICAgICAgICAgICRwcmV2aWV3SW1nID0gcGFyZW50LiQoJyMnICsgbGlua2VkSW5wdXRJZCArICdfX3ByZXZpZXdfX2ltZycpLFxuICAgICAgICAgICAgICAgICAgICAkcHJldmlld1RpdGxlID0gcGFyZW50LiQoJyMnICsgbGlua2VkSW5wdXRJZCArICdfX3ByZXZpZXdfX3RpdGxlJyk7XG5cbiAgICAgICAgICAgICAgICAkbWVkaWFDaG9vc2VyLmFkZENsYXNzKCdtZWRpYS1jaG9vc2VyLS1jaG9vc2VuJyk7XG4gICAgICAgICAgICAgICAgJHByZXZpZXdUaXRsZS5odG1sKGl0ZW1UaXRsZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXRlbVRodW1iUGF0aCA9PT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJHBhcmVudCA9ICRwcmV2aWV3VGl0bGUucGFyZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICRwYXJlbnQucHJlcGVuZCgnPGkgY2xhc3M9XCJmYSBmYS1maWxlLW8gbWVkaWEtdGh1bWJuYWlsX19pY29uXCI+PC9pPicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICRwcmV2aWV3SW1nLmF0dHIoJ3NyYycsIGl0ZW1UaHVtYlBhdGgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIENsb3NlIG1vZGFsXG4gICAgICAgICAgICAgICAgcGFyZW50LiQoJyMnICsgcGFyZW50TW9kYWxJZCkubW9kYWwoJ2hpZGUnKTtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgZnVuY051bSA9IGdldFVybFBhcmFtKCdDS0VkaXRvckZ1bmNOdW0nKTtcblxuICAgICAgICAgICAgICAgIC8vIFNldCB2YWxcbiAgICAgICAgICAgICAgICB3aW5kb3cub3BlbmVyLkNLRURJVE9SLnRvb2xzLmNhbGxGdW5jdGlvbihmdW5jTnVtLCBpdGVtVXJsKTtcblxuICAgICAgICAgICAgICAgIC8vIENsb3NlIHdpbmRvd1xuICAgICAgICAgICAgICAgIHdpbmRvdy5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG5cbiAgICAgICAgLy8gR2V0IFVybCBQYXJhbWV0ZXJzXG4gICAgICAgIGdldFVybFBhcmFtKHBhcmFtTmFtZSkge1xuICAgICAgICAgICAgdmFyIHJlUGFyYW0gPSBuZXcgUmVnRXhwKCcoPzpbXFw/Jl18JmFtcDspJyArIHBhcmFtTmFtZSArICc9KFteJl0rKScsICdpJyksXG4gICAgICAgICAgICAgICAgbWF0Y2ggPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLm1hdGNoKHJlUGFyYW0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKG1hdGNoICYmIG1hdGNoLmxlbmd0aCA+IDEpID8gbWF0Y2hbMV0gOiAnJztcbiAgICAgICAgfVxuXG4gICAgfVxufSk7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCB7fTsiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCB7fTsiXSwibmFtZXMiOlsiQnM1VXRpbHMiLCJzdGFydFN0aW11bHVzQXBwIiwiYXBwIiwiZ2xvYmFsIiwiJCIsImpRdWVyeSIsIndpbmRvdyIsInJlcXVpcmUiLCJib290c3RyYXAiLCJiczVVdGlscyIsIlJhcGhhZWwiLCJhY2UiLCJEcm9wem9uZSIsImNhcmdvYmF5IiwiZ2VuZXJhbCIsInRvZ2dsZSIsInBzYyIsImFqYXhNb2RhbCIsIm1lZGlhQ2hvb3NlciIsIm9yZGVyIiwicHJvZHVjdCIsImluaXQiLCJkZWZpbmUiLCJib290c3RyYXBBcHAiLCJjbGljayIsImVsIiwiX3RoaXMiLCJUb2FzdCIsInNob3ciLCJ0eXBlIiwiaWNvbiIsInRpdGxlIiwiaHRtbCIsImNvbnRlbnQiLCJkYXRhIiwiYnV0dG9ucyIsInRleHQiLCJoYW5kbGVyIiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0IiwiZGVsYXkiLCJkaXNtaXNzaWJsZSIsImNvbnNvbGUiLCJsb2ciLCJvbiIsImUiLCJ0YXJnZXQiLCJwYXJlbnQiLCJhdHRyIiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImxhc3RUYWIiLCJnZXRJdGVtIiwidGFiIiwibGFzdFRhYkRvYyIsImZpbmQiLCJjaGFuZ2UiLCJnZXRKU09OIiwibXVsdGlzZWxlY3QiLCJzdWJtaXRBbGxMZWZ0Iiwic3VibWl0QWxsUmlnaHQiLCJzZWFyY2giLCJsZWZ0IiwicmlnaHQiLCJmaXJlU2VhcmNoIiwidmFsdWUiLCJsZW5ndGgiLCJzdW1tZXJub3RlIiwiaGVpZ2h0IiwidG9vbGJhciIsIkVtaXR0ZXIiLCJjYW1lbGl6ZSIsImNvbnRlbnRMb2FkZWQiLCJkZXRlY3RWZXJ0aWNhbFNxdWFzaCIsImRyYXdJbWFnZUlPU0ZpeCIsIm5vb3AiLCJ3aXRob3V0IiwiX19zbGljZSIsInNsaWNlIiwiX19oYXNQcm9wIiwiaGFzT3duUHJvcGVydHkiLCJfX2V4dGVuZHMiLCJjaGlsZCIsImtleSIsImNhbGwiLCJjdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfX3N1cGVyX18iLCJhZGRFdmVudExpc3RlbmVyIiwiZXZlbnQiLCJmbiIsIl9jYWxsYmFja3MiLCJwdXNoIiwiZW1pdCIsImFyZ3MiLCJjYWxsYmFjayIsImNhbGxiYWNrcyIsIl9pIiwiX2xlbiIsImFyZ3VtZW50cyIsImFwcGx5IiwicmVtb3ZlTGlzdGVuZXIiLCJvZmYiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaSIsInNwbGljZSIsIl9zdXBlciIsImV4dGVuZCIsInJlc29sdmVPcHRpb24iLCJldmVudHMiLCJkZWZhdWx0T3B0aW9ucyIsInVybCIsIm1ldGhvZCIsIndpdGhDcmVkZW50aWFscyIsInBhcmFsbGVsVXBsb2FkcyIsInVwbG9hZE11bHRpcGxlIiwibWF4RmlsZXNpemUiLCJwYXJhbU5hbWUiLCJjcmVhdGVJbWFnZVRodW1ibmFpbHMiLCJtYXhUaHVtYm5haWxGaWxlc2l6ZSIsInRodW1ibmFpbFdpZHRoIiwidGh1bWJuYWlsSGVpZ2h0IiwiZmlsZXNpemVCYXNlIiwibWF4RmlsZXMiLCJwYXJhbXMiLCJjbGlja2FibGUiLCJpZ25vcmVIaWRkZW5GaWxlcyIsImFjY2VwdGVkRmlsZXMiLCJhY2NlcHRlZE1pbWVUeXBlcyIsImF1dG9Qcm9jZXNzUXVldWUiLCJhdXRvUXVldWUiLCJhZGRSZW1vdmVMaW5rcyIsInByZXZpZXdzQ29udGFpbmVyIiwiaGlkZGVuSW5wdXRDb250YWluZXIiLCJjYXB0dXJlIiwiZGljdERlZmF1bHRNZXNzYWdlIiwiZGljdEZhbGxiYWNrTWVzc2FnZSIsImRpY3RGYWxsYmFja1RleHQiLCJkaWN0RmlsZVRvb0JpZyIsImRpY3RJbnZhbGlkRmlsZVR5cGUiLCJkaWN0UmVzcG9uc2VFcnJvciIsImRpY3RDYW5jZWxVcGxvYWQiLCJkaWN0Q2FuY2VsVXBsb2FkQ29uZmlybWF0aW9uIiwiZGljdFJlbW92ZUZpbGUiLCJkaWN0UmVtb3ZlRmlsZUNvbmZpcm1hdGlvbiIsImRpY3RNYXhGaWxlc0V4Y2VlZGVkIiwiYWNjZXB0IiwiZmlsZSIsImRvbmUiLCJmb3JjZUZhbGxiYWNrIiwiZmFsbGJhY2siLCJtZXNzYWdlRWxlbWVudCIsInNwYW4iLCJfcmVmIiwiZWxlbWVudCIsImNsYXNzTmFtZSIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwidGVzdCIsImNyZWF0ZUVsZW1lbnQiLCJhcHBlbmRDaGlsZCIsInRleHRDb250ZW50Iiwib3B0aW9ucyIsImlubmVyVGV4dCIsImdldEZhbGxiYWNrRm9ybSIsInJlc2l6ZSIsImluZm8iLCJzcmNSYXRpbyIsInRyZ1JhdGlvIiwic3JjWCIsInNyY1kiLCJzcmNXaWR0aCIsIndpZHRoIiwic3JjSGVpZ2h0Iiwib3B0V2lkdGgiLCJvcHRIZWlnaHQiLCJ0cmdIZWlnaHQiLCJ0cmdXaWR0aCIsImRyb3AiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJkcmFnc3RhcnQiLCJkcmFnZW5kIiwiZHJhZ2VudGVyIiwiYWRkIiwiZHJhZ292ZXIiLCJkcmFnbGVhdmUiLCJwYXN0ZSIsInJlc2V0IiwiYWRkZWRmaWxlIiwibm9kZSIsInJlbW92ZUZpbGVFdmVudCIsInJlbW92ZUxpbmsiLCJfaiIsIl9rIiwiX2xlbjEiLCJfbGVuMiIsIl9yZWYxIiwiX3JlZjIiLCJfcmVzdWx0cyIsInByZXZpZXdFbGVtZW50IiwicHJldmlld1RlbXBsYXRlIiwidHJpbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJuYW1lIiwiaW5uZXJIVE1MIiwiZmlsZXNpemUiLCJzaXplIiwiX3JlbW92ZUxpbmsiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsInN0YXR1cyIsIlVQTE9BRElORyIsImNvbmZpcm0iLCJyZW1vdmVGaWxlIiwicmVtb3ZlZGZpbGUiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJfdXBkYXRlTWF4RmlsZXNSZWFjaGVkQ2xhc3MiLCJ0aHVtYm5haWwiLCJkYXRhVXJsIiwidGh1bWJuYWlsRWxlbWVudCIsImFsdCIsInNyYyIsInNldFRpbWVvdXQiLCJlcnJvciIsIm1lc3NhZ2UiLCJlcnJvcm11bHRpcGxlIiwicHJvY2Vzc2luZyIsInByb2Nlc3NpbmdtdWx0aXBsZSIsInVwbG9hZHByb2dyZXNzIiwicHJvZ3Jlc3MiLCJieXRlc1NlbnQiLCJub2RlTmFtZSIsInN0eWxlIiwidG90YWx1cGxvYWRwcm9ncmVzcyIsInNlbmRpbmciLCJzZW5kaW5nbXVsdGlwbGUiLCJzdWNjZXNzIiwic3VjY2Vzc211bHRpcGxlIiwiY2FuY2VsZWQiLCJjYW5jZWxlZG11bHRpcGxlIiwiY29tcGxldGUiLCJjb21wbGV0ZW11bHRpcGxlIiwibWF4ZmlsZXNleGNlZWRlZCIsIm1heGZpbGVzcmVhY2hlZCIsInF1ZXVlY29tcGxldGUiLCJhZGRlZGZpbGVzIiwib2JqZWN0Iiwib2JqZWN0cyIsInZhbCIsImVsZW1lbnRPcHRpb25zIiwidmVyc2lvbiIsInJlcGxhY2UiLCJjbGlja2FibGVFbGVtZW50cyIsImxpc3RlbmVycyIsImZpbGVzIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwibm9kZVR5cGUiLCJFcnJvciIsImRyb3B6b25lIiwiaW5zdGFuY2VzIiwib3B0aW9uc0ZvckVsZW1lbnQiLCJpc0Jyb3dzZXJTdXBwb3J0ZWQiLCJnZXRBdHRyaWJ1dGUiLCJ0b1VwcGVyQ2FzZSIsImdldEV4aXN0aW5nRmFsbGJhY2siLCJnZXRFbGVtZW50IiwiZ2V0RWxlbWVudHMiLCJnZXRBY2NlcHRlZEZpbGVzIiwiYWNjZXB0ZWQiLCJnZXRSZWplY3RlZEZpbGVzIiwiZ2V0RmlsZXNXaXRoU3RhdHVzIiwiZ2V0UXVldWVkRmlsZXMiLCJRVUVVRUQiLCJnZXRVcGxvYWRpbmdGaWxlcyIsImdldEFkZGVkRmlsZXMiLCJBRERFRCIsImdldEFjdGl2ZUZpbGVzIiwiZXZlbnROYW1lIiwibm9Qcm9wYWdhdGlvbiIsInNldHVwSGlkZGVuRmlsZUlucHV0IiwidGFnTmFtZSIsInNldEF0dHJpYnV0ZSIsImNvbnRhaW5zIiwiaGlkZGVuRmlsZUlucHV0IiwidmlzaWJpbGl0eSIsInBvc2l0aW9uIiwidG9wIiwiaWQiLCJhZGRGaWxlIiwiVVJMIiwid2Via2l0VVJMIiwidXBkYXRlVG90YWxVcGxvYWRQcm9ncmVzcyIsInJldHVyblZhbHVlIiwiZWZjdCIsImRhdGFUcmFuc2ZlciIsImVmZmVjdEFsbG93ZWQiLCJfZXJyb3IiLCJkcm9wRWZmZWN0IiwiZm9yRWFjaCIsImNsaWNrYWJsZUVsZW1lbnQiLCJldnQiLCJlbGVtZW50SW5zaWRlIiwiZW5hYmxlIiwiZGVzdHJveSIsImRpc2FibGUiLCJyZW1vdmVBbGxGaWxlcyIsImluZGV4T2YiLCJhY3RpdmVGaWxlcyIsInRvdGFsQnl0ZXMiLCJ0b3RhbEJ5dGVzU2VudCIsInRvdGFsVXBsb2FkUHJvZ3Jlc3MiLCJ1cGxvYWQiLCJ0b3RhbCIsIl9nZXRQYXJhbU5hbWUiLCJuIiwiZXhpc3RpbmdGYWxsYmFjayIsImZpZWxkcyIsImZpZWxkc1N0cmluZyIsImZvcm0iLCJnZXRGYWxsYmFjayIsImVsZW1lbnRzIiwic2V0dXBFdmVudExpc3RlbmVycyIsImVsZW1lbnRMaXN0ZW5lcnMiLCJsaXN0ZW5lciIsIl9yZXN1bHRzMSIsInJlbW92ZUV2ZW50TGlzdGVuZXJzIiwiY2FuY2VsVXBsb2FkIiwiY3V0b2ZmIiwic2VsZWN0ZWRTaXplIiwic2VsZWN0ZWRVbml0IiwidW5pdCIsInVuaXRzIiwiTWF0aCIsInBvdyIsInJvdW5kIiwiaXRlbXMiLCJ3ZWJraXRHZXRBc0VudHJ5IiwiX2FkZEZpbGVzRnJvbUl0ZW1zIiwiaGFuZGxlRmlsZXMiLCJjbGlwYm9hcmREYXRhIiwiZW50cnkiLCJpdGVtIiwiaXNGaWxlIiwiZ2V0QXNGaWxlIiwiaXNEaXJlY3RvcnkiLCJfYWRkRmlsZXNGcm9tRGlyZWN0b3J5Iiwia2luZCIsImRpcmVjdG9yeSIsInBhdGgiLCJkaXJSZWFkZXIiLCJlbnRyaWVzUmVhZGVyIiwiY3JlYXRlUmVhZGVyIiwiZW50cmllcyIsInN1YnN0cmluZyIsImZ1bGxQYXRoIiwicmVhZEVudHJpZXMiLCJpc1ZhbGlkRmlsZSIsIl9lbnF1ZXVlVGh1bWJuYWlsIiwiX2Vycm9yUHJvY2Vzc2luZyIsImVucXVldWVGaWxlIiwiZW5xdWV1ZUZpbGVzIiwicHJvY2Vzc1F1ZXVlIiwiX3RodW1ibmFpbFF1ZXVlIiwiX3Byb2Nlc3NpbmdUaHVtYm5haWwiLCJtYXRjaCIsIl9wcm9jZXNzVGh1bWJuYWlsUXVldWUiLCJjcmVhdGVUaHVtYm5haWwiLCJzaGlmdCIsImNhbmNlbElmTmVjZXNzYXJ5IiwiZmlsZVJlYWRlciIsIkZpbGVSZWFkZXIiLCJvbmxvYWQiLCJyZXN1bHQiLCJjcmVhdGVUaHVtYm5haWxGcm9tVXJsIiwicmVhZEFzRGF0YVVSTCIsImltYWdlVXJsIiwiY3Jvc3NPcmlnaW4iLCJpbWciLCJjYW52YXMiLCJjdHgiLCJyZXNpemVJbmZvIiwiX3JlZjMiLCJnZXRDb250ZXh0IiwidHJnWCIsInRyZ1kiLCJ0b0RhdGFVUkwiLCJvbmVycm9yIiwicHJvY2Vzc2luZ0xlbmd0aCIsInF1ZXVlZEZpbGVzIiwicHJvY2Vzc0ZpbGVzIiwicHJvY2Vzc0ZpbGUiLCJ1cGxvYWRGaWxlcyIsIl9nZXRGaWxlc1dpdGhYaHIiLCJ4aHIiLCJncm91cGVkRmlsZSIsImdyb3VwZWRGaWxlcyIsIkNBTkNFTEVEIiwiYWJvcnQiLCJvcHRpb24iLCJ1cGxvYWRGaWxlIiwiZm9ybURhdGEiLCJoYW5kbGVFcnJvciIsImhlYWRlck5hbWUiLCJoZWFkZXJWYWx1ZSIsImhlYWRlcnMiLCJpbnB1dCIsImlucHV0TmFtZSIsImlucHV0VHlwZSIsInByb2dyZXNzT2JqIiwicmVzcG9uc2UiLCJ1cGRhdGVQcm9ncmVzcyIsIl9sIiwiX2xlbjMiLCJfbSIsIl9yZWY0IiwiX3JlZjUiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJhbGxGaWxlc0ZpbmlzaGVkIiwibG9hZGVkIiwicmVhZHlTdGF0ZSIsInJlc3BvbnNlVGV4dCIsImdldFJlc3BvbnNlSGVhZGVyIiwiSlNPTiIsInBhcnNlIiwiX2ZpbmlzaGVkIiwib25wcm9ncmVzcyIsInNldFJlcXVlc3RIZWFkZXIiLCJGb3JtRGF0YSIsImFwcGVuZCIsImhhc0F0dHJpYnV0ZSIsInNlbGVjdGVkIiwidG9Mb3dlckNhc2UiLCJjaGVja2VkIiwic3VibWl0UmVxdWVzdCIsInNlbmQiLCJTVUNDRVNTIiwiRVJST1IiLCJmb3JFbGVtZW50IiwiYXV0b0Rpc2NvdmVyIiwiZGlzY292ZXIiLCJjaGVja0VsZW1lbnRzIiwiZHJvcHpvbmVzIiwiYmxhY2tsaXN0ZWRCcm93c2VycyIsImNhcGFibGVCcm93c2VyIiwicmVnZXgiLCJGaWxlIiwiRmlsZUxpc3QiLCJCbG9iIiwidXNlckFnZW50IiwibGlzdCIsInJlamVjdGVkSXRlbSIsInN0ciIsImNoYXJBdCIsInN0cmluZyIsImRpdiIsImNoaWxkTm9kZXMiLCJjb250YWluZXIiLCJlbHMiLCJBcnJheSIsInF1ZXN0aW9uIiwicmVqZWN0ZWQiLCJiYXNlTWltZVR5cGUiLCJtaW1lVHlwZSIsInZhbGlkVHlwZSIsInNwbGl0IiwiZWFjaCIsIm1vZHVsZSIsImV4cG9ydHMiLCJBQ0NFUFRFRCIsIlBST0NFU1NJTkciLCJhbHBoYSIsImV5IiwiaWgiLCJpdyIsInB5IiwicmF0aW8iLCJzeSIsIm5hdHVyYWxXaWR0aCIsIm5hdHVyYWxIZWlnaHQiLCJkcmF3SW1hZ2UiLCJnZXRJbWFnZURhdGEiLCJzeCIsInN3Iiwic2giLCJkeCIsImR5IiwiZHciLCJkaCIsInZlcnRTcXVhc2hSYXRpbyIsIndpbiIsImRvYyIsInBvbGwiLCJwcmUiLCJyZW0iLCJyb290IiwiZG9jdW1lbnRFbGVtZW50IiwiZG9TY3JvbGwiLCJjcmVhdGVFdmVudE9iamVjdCIsImZyYW1lRWxlbWVudCIsIl9hdXRvRGlzY292ZXJGdW5jdGlvbiIsIk9yZGVyX0xpc3RfRGV0YWlsIiwib3JkZXJVdWlkIiwidXVpZCIsImJhc2tldEZpZWxkMSIsImN1c3RvbWVySW5mbyIsImJhc2tldEZpZWxkMiIsInBvcyIsInByaWNlIiwiYWxsTmV0IiwicmVPcmRlciIsInJlT3JkZXJPcmRlciIsInJlT3JkZXJQb3MiLCJjb25jYXQiLCJnZXRfcG9zX2JnX2NvbG9yIiwiZ2V0X3Bvc19iZ19jb2xvcl9jbGFzcyIsIm9yaWdpbmFsUHJvZHVjdCIsIm5ySW50ZXJuIiwiZ2V0X3NwZWNpYWxfcHJvZHVjdF9vcHRpb25zIiwic3BlY2lhbFByb2R1Y3RUeXBlT2JqZWN0IiwiY291bnQiLCJJbnRsIiwiTnVtYmVyRm9ybWF0IiwiY3VycmVuY3kiLCJmb3JtYXQiLCJhbGxHcm9zcyIsImdldF9wb3Nfc3RhdHVzIiwiaW50ZXJuYWxOYW1lIiwiZ2V0X3Bvc19zdGF0dXNfbG9vcCIsIk9yZGVyX0xpc3RfRGV0YWlsX1NpbXBsZSIsIk9yZGVyX0xpc3RfUG9zX1N0YXR1cyIsInBvc1V1aWQiLCJjb2RlIiwiT3JkZXJfTGlzdF9Qb3NfQ2FsY19PcHRpb24iLCJlbG0iLCJsb2FkX3N0YXR1cyIsImJpbmRfYnV0dG9ucyIsInR5cCIsIm1hcCIsImpvaW4iLCJqd3RfdG9rZW4iLCJhamF4IiwiY29udGVudFR5cGUiLCJzdGF0dXNfb3JkZXIiLCJzdGF0dXNfcG9zIiwibG9hZF9kZXRhaWwiLCJzaW1wbGUiLCJ1bmRlZmluZWQiLCJzdHJpbmdpZnkiLCJidWlsZF9kZXRhaWxzIiwicG9zaXRpb25zIiwieCIsImxvYWRQbHVnaW5EZXRhaWxzIiwiYmluZF9zdGF0dXNfYnV0dG9ucyIsImZvdW5kIiwic3RhdCIsImNvbG9yIiwic2V0IiwiYnVpbGRUYWJsZSIsImVtcHR5IiwicHJvZHVjdHMiLCJpbmRleCIsImJpbmREZWxldGVCdXR0b25zIiwiZmFkZUluIiwicHJvZHVjdFV1aWQiLCJmYWRlT3V0IiwiaW5pdEFkZEJ1dHRvbiIsImxvYWRUYWJsZSIsImZhY3RvcnkiLCJhbWQiLCJwbHVnaW5zIiwibWVkaWEiLCJjb250ZXh0Iiwic2VsZiIsInVpIiwibWVtbyIsImJ1dHRvbiIsImNvbnRlbnRzIiwidG9vbHRpcCIsIm1lZGlhQnVuZGxlQnJvd3NlciIsIiRub3RlIiwiJG1lZGlhIiwicmVuZGVyIiwidCIsIl90eXBlb2YiLCJUZXRoZXIiLCJvIiwiVHlwZUVycm9yIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwib3duZXJEb2N1bWVudCIsInIiLCJkZWZhdWx0VmlldyIsInMiLCJib3R0b20iLCJnZXRDb21wdXRlZFN0eWxlIiwiYSIsImYiLCJvdmVyZmxvdyIsImwiLCJvdmVyZmxvd1giLCJoIiwib3ZlcmZsb3dZIiwiYm9keSIsIkEiLCJQIiwic2Nyb2xsV2lkdGgiLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRUb3AiLCJjbGllbnRMZWZ0IiwiY2xpZW50V2lkdGgiLCJjbGllbnRIZWlnaHQiLCJvZmZzZXRQYXJlbnQiLCJwb2ludGVyRXZlbnRzIiwib2Zmc2V0V2lkdGgiLCJ1IiwiUmVnRXhwIiwiYyIsImciLCJkIiwicCIsIlNWR0FuaW1hdGVkU3RyaW5nIiwiYmFzZVZhbCIsIm0iLCJ2IiwiT2JqZWN0IiwiY3JlYXRlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiY29uZmlndXJhYmxlIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJ5IiwiYiIsInBlcmZvcm1hbmNlIiwibm93IiwiRGF0ZSIsInciLCJwYXJzZUZsb2F0IiwiQyIsIk8iLCJzY3JvbGxQYXJlbnRzIiwicGFnZVhPZmZzZXQiLCJwYWdlWU9mZnNldCIsImlubmVyV2lkdGgiLCJpbm5lckhlaWdodCIsInN1YnN0ciIsIkUiLCJkZWZpbmVQcm9wZXJ0eSIsIm1vZHVsZXMiLCJUIiwiUyIsIk0iLCJXIiwiXyIsInBvcCIsImsiLCJiaW5kaW5ncyIsIm9uY2UiLCJVdGlscyIsImdldEFjdHVhbEJvdW5kaW5nQ2xpZW50UmVjdCIsImdldFNjcm9sbFBhcmVudHMiLCJnZXRCb3VuZHMiLCJnZXRPZmZzZXRQYXJlbnQiLCJhZGRDbGFzcyIsInJlbW92ZUNsYXNzIiwiaGFzQ2xhc3MiLCJ1cGRhdGVDbGFzc2VzIiwiZGVmZXIiLCJmbHVzaCIsInVuaXF1ZUlkIiwiRXZlbnRlZCIsImdldFNjcm9sbEJhclNpemUiLCJyZW1vdmVVdGlsRWxlbWVudHMiLCJCIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJuZXh0IiwiaXNBcnJheSIsInoiLCJGdW5jdGlvbiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldCIsImdldFByb3RvdHlwZU9mIiwiaiIsIlkiLCJMIiwiRCIsIm1pbiIsImNsZWFyVGltZW91dCIsIlgiLCJjZW50ZXIiLCJGIiwibWlkZGxlIiwiSCIsIk4iLCJVIiwiViIsIlIiLCJxIiwiYmluZCIsImhpc3RvcnkiLCJzZXRPcHRpb25zIiwiaW5pdGlhbGl6ZSIsImNsYXNzZXMiLCJjbGFzc1ByZWZpeCIsIm9mZnNldCIsInRhcmdldE9mZnNldCIsInRhcmdldEF0dGFjaG1lbnQiLCJ0YXJnZXRNb2RpZmllciIsImpxdWVyeSIsImdldENsYXNzIiwiYWRkVGFyZ2V0Q2xhc3NlcyIsImF0dGFjaG1lbnQiLCJlbmFibGVkIiwiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJCb3R0b21XaWR0aCIsImJvcmRlckxlZnRXaWR0aCIsIm1heCIsInNjcm9sbFRvcCIsIl9jYWNoZSIsIl9hZGRBdHRhY2hDbGFzc2VzIiwiY2xlYXJDYWNoZSIsInVwZGF0ZUF0dGFjaENsYXNzZXMiLCJjYWNoZSIsImxhc3RTaXplIiwiZ2V0VGFyZ2V0Qm91bmRzIiwidGFyZ2V0UG9zIiwiZWxlbWVudFBvcyIsIm1hbnVhbE9mZnNldCIsIm1hbnVhbFRhcmdldE9mZnNldCIsInNjcm9sbGJhclNpemUiLCJwYWdlIiwidmlld3BvcnQiLCJwYXJlbnRFbGVtZW50Iiwib3B0aW1pemF0aW9ucyIsIm1vdmVFbGVtZW50Iiwic2Nyb2xsTGVmdCIsIm1vdmUiLCJ1bnNoaWZ0IiwiZ3B1IiwiSSIsImNvbnN0cmFpbnRzIiwib3V0T2ZCb3VuZHNDbGFzcyIsInBpbm5lZENsYXNzIiwidG8iLCJwaW4iLCJ0cmlnZ2VyIiwiaW5pdE1vZGFscyIsIiRtb2RhbCIsIiRidG4iLCJyZWxhdGVkVGFyZ2V0IiwibGluayIsInJlc2V0QWpheE1vZGFscyIsImRlYm91bmNlIiwiZWFzZUluT3V0UXVhZCIsImFuaW1hdGUiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJvZmZzZXRIZWlnaHQiLCJ1cmxDaG9vc2VyIiwiaW5pdERlbEJ0biIsIiR0aGlzIiwibGlua2VkSUQiLCIkd2lkZ2V0IiwiJGlucHV0Iiwic2x1ZyIsInJlcGxhY2VVcmwiLCJjbG9zZXN0IiwiaXRlbVVybCIsIml0ZW1JZCIsInJlcGxhY2VkVXJsIiwidGh1bWJQYXRoIiwiY2tlIiwiaXRlbVRpdGxlIiwiaXRlbVRodW1iUGF0aCIsImlzTWVkaWFDaG9vc2VyIiwic2F2ZU1lZGlhQ2hvb3Nlck1vZGFsIiwic2F2ZVVybENob29zZXJNb2RhbCIsIiRwYXJlbnRNb2RhbCIsInBhcmVudE1vZGFsSWQiLCJtb2RhbCIsImNsb3NlIiwibGlua2VkSW5wdXRJZCIsImZ1bmNOdW0iLCJnZXRVcmxQYXJhbSIsIm9wZW5lciIsIkNLRURJVE9SIiwidG9vbHMiLCJjYWxsRnVuY3Rpb24iLCIkbWVkaWFDaG9vc2VyIiwiJHByZXZpZXdJbWciLCIkcHJldmlld1RpdGxlIiwiJHBhcmVudCIsInByZXBlbmQiLCJyZVBhcmFtIiwibG9jYXRpb24iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/src/new/web/build/backend/login.css b/src/new/web/build/backend/login.css index 1a280345b..15f76ff1d 100644 --- a/src/new/web/build/backend/login.css +++ b/src/new/web/build/backend/login.css @@ -964,6 +964,10 @@ select { .hidden { display: none; } +.size-6 { + width: 1.5rem; + height: 1.5rem; +} .h-10 { height: 2.5rem; } @@ -1027,6 +1031,9 @@ select { .w-screen { width: 100vw; } +.w-auto { + width: auto; +} .max-w-7xl { max-width: 80rem; } @@ -1083,12 +1090,21 @@ select { .flex-wrap { flex-wrap: wrap; } +.content-end { + align-content: flex-end; +} .items-start { align-items: flex-start; } +.items-end { + align-items: flex-end; +} .items-center { align-items: center; } +.items-baseline { + align-items: baseline; +} .justify-start { justify-content: flex-start; } @@ -1201,6 +1217,9 @@ select { .border-t { border-top-width: 1px; } +.border-r { + border-right-width: 1px; +} .border-gray-200 { --tw-border-opacity: 1; border-color: rgb(229 231 235 / var(--tw-border-opacity)); @@ -1209,6 +1228,10 @@ select { --tw-border-opacity: 1; border-color: rgb(209 213 219 / var(--tw-border-opacity)); } +.border-gray-400 { + --tw-border-opacity: 1; + border-color: rgb(156 163 175 / var(--tw-border-opacity)); +} .bg-gray-100 { --tw-bg-opacity: 1; background-color: rgb(243 244 246 / var(--tw-bg-opacity)); @@ -1251,6 +1274,10 @@ select { --tw-bg-opacity: 1; background-color: rgb(234 179 8 / var(--tw-bg-opacity)); } +.bg-blue-600 { + --tw-bg-opacity: 1; + background-color: rgb(37 99 235 / var(--tw-bg-opacity)); +} .bg-cover { background-size: cover; } @@ -1362,6 +1389,10 @@ select { font-size: 0.75rem; line-height: 1rem; } +.text-lg { + font-size: 1.125rem; + line-height: 1.75rem; +} .font-bold { font-weight: 700; } @@ -1423,6 +1454,10 @@ select { --tw-text-opacity: 1; color: rgb(133 77 14 / var(--tw-text-opacity)); } +.text-blue-600 { + --tw-text-opacity: 1; + color: rgb(37 99 235 / var(--tw-text-opacity)); +} .underline { text-decoration-line: underline; } @@ -1874,4 +1909,4 @@ select { } -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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bUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsdUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEscUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLHVCQUFtQjtFQUFuQiwrREFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSx1QkFBbUI7RUFBbkIsOERBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsdUJBQW1CO0VBQW5CLCtEQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHVCQUFtQjtFQUFuQiw0REFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSx3QkFBbUI7RUFBbkIsa0VBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxnQkFBbUI7RUFBbkIsdUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxzQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxxQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxxQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxxQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxpQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxtQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxxQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxpQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxtQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsaUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsbUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLG1DQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSwwRUFBbUI7RUFBbkIsOEZBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsZ0RBQW1CO0VBQW5CLDZEQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLCtFQUFtQjtFQUFuQixtR0FBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSwwQ0FBbUI7RUFBbkIsdURBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsOEJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsMkdBQW1CO0VBQW5CLHlHQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEseUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSw4QkFBbUI7RUFBbkIsK1FBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsZ0tBQW1CO0VBQW5CLHdKQUFtQjtFQUFuQixpTEFBbUI7RUFBbkIsd0RBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsd0JBQW1CO0VBQW5CLHdEQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLCtGQUFtQjtFQUFuQix3REFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1COztBQUZuQjtFQUFBLGtCQXFCQTtFQXJCQTtBQXFCQTs7QUFyQkE7RUFBQTtBQXFCQTs7QUFyQkE7RUFBQSxrQkFxQkE7RUFyQkE7QUFxQkE7O0FBckJBO0VBQUE7QUFxQkE7O0FBckJBO0VBQUEsa0JBcUJBO0VBckJBO0FBcUJBOztBQXJCQTtFQUFBLG9CQXFCQTtFQXJCQTtBQXFCQTs7QUFyQkE7RUFBQSwyR0FxQkE7RUFyQkEseUdBcUJBO0VBckJBO0FBcUJBOztBQXJCQTtFQUFBLG9CQXFCQTtFQXJCQTtBQXFCQTs7QUFyQkE7RUFBQTtBQXFCQTs7QUFyQkE7RUFBQSxzQkFxQkE7RUFyQkE7QUFxQkE7O0FBckJBO0VBQUEsa0JBcUJBO0VBckJBO0FBcUJBOztBQXJCQTtFQUFBLG9CQXFCQTtFQXJCQTtBQXFCQTs7QUFyQkE7RUFBQSw4QkFxQkE7RUFyQkE7QUFxQkE7O0FBckJBO0VBQUEsMkdBcUJBO0VBckJBLHlHQXFCQTtFQXJCQTtBQXFCQTs7QUFyQkE7RUFBQSwyR0FxQkE7RUFyQkEseUdBcUJBO0VBckJBO0FBcUJBOztBQXJCQTtFQUFBLDJHQXFCQTtFQXJCQSx5R0FxQkE7RUFyQkE7QUFxQkE7O0FBckJBO0VBQUE7QUFxQkE7O0FBckJBO0VBQUEsb0JBcUJBO0VBckJBO0FBcUJBOztBQXJCQTtFQUFBLG9CQXFCQTtFQXJCQTtBQXFCQTs7QUFyQkE7RUFBQTtBQXFCQTs7QUFyQkE7RUFBQTtBQXFCQTs7QUFyQkE7RUFBQSxvQkFxQkE7RUFyQkE7QUFxQkE7O0FBckJBO0VBQUEsb0JBcUJBO0VBckJBO0FBcUJBOztBQXJCQTtFQUFBLHNCQXFCQTtFQXJCQTtBQXFCQTs7QUFyQkE7RUFBQSxzQkFxQkE7RUFyQkE7QUFxQkE7O0FBckJBO0VBQUEsa0JBcUJBO0VBckJBO0FBcUJBOztBQXJCQTtFQUFBLGtCQXFCQTtFQXJCQTtBQXFCQTs7QUFyQkE7RUFBQSxvQkFxQkE7RUFyQkE7QUFxQkE7O0FBckJBO0VBQUEsb0JBcUJBO0VBckJBO0FBcUJBOztBQXJCQTtFQUFBO0FBcUJBOztBQXJCQTtFQUFBLG9CQXFCQTtFQXJCQTtBQXFCQTs7QUFyQkE7O0VBQUE7SUFBQTtFQXFCQTs7RUFyQkE7SUFBQTtFQXFCQTs7RUFyQkE7SUFBQTtFQXFCQTs7RUFyQkE7SUFBQSx1QkFxQkE7SUFyQkEsb0RBcUJBO0lBckJBO0VBcUJBOztFQXJCQTtJQUFBLHVCQXFCQTtJQXJCQSwyREFxQkE7SUFyQkE7RUFxQkE7O0VBckJBO0lBQUEsa0JBcUJBO0lBckJBO0VBcUJBO0FBQUE7O0FBckJBOztFQUFBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUEsb0JBcUJBO0lBckJBO0VBcUJBO0FBQUE7O0FBckJBOztFQUFBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUEscUJBcUJBO0lBckJBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBOztFQXJCQTtJQUFBLGtCQXFCQTtJQXJCQTtFQXFCQTs7RUFyQkE7SUFBQSxvQkFxQkE7SUFyQkE7RUFxQkE7O0VBckJBO0lBQUEsa0JBcUJBO0lBckJBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBOztFQXJCQTtJQUFBLGdEQXFCQTtJQXJCQSw2REFxQkE7SUFyQkE7RUFxQkE7O0VBckJBO0lBQUEsZ0tBcUJBO0lBckJBLHdKQXFCQTtJQXJCQSxpTEFxQkE7SUFyQkEsd0RBcUJBO0lBckJBO0VBcUJBO0FBQUE7O0FBckJBO0VBQUE7QUFxQkE7O0FBckJBO0VBQUE7QUFxQkE7O0FBckJBO0VBQUE7QUFxQkE7O0FBckJBO0VBQUE7QUFxQkE7O0FBckJBO0VBQUE7QUFxQkE7O0FBckJBO0VBQUE7QUFxQkE7O0FBckJBO0VBQUE7QUFxQkE7O0FBckJBO0VBQUEsc0JBcUJBO0VBckJBO0FBcUJBOztBQXJCQTs7RUFBQTtJQUFBO0VBcUJBO0FBQUE7O0FBckJBOztFQUFBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUEsc0JBcUJBO0lBckJBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBO0FBQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvYmFja2VuZC9sb2dpbi9jc3MvbG9naW4uY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkB0YWlsd2luZCBiYXNlO1xuQHRhaWx3aW5kIGNvbXBvbmVudHM7XG5AdGFpbHdpbmQgdXRpbGl0aWVzO1xuXG5AbGF5ZXIgY29tcG9uZW50cyB7XG4gICAgLnBzYy1sb2dpbi1wYWdlIHtcbiAgICAgICAgQGFwcGx5IHJlbGF0aXZlIGJnLW5vLXJlcGVhdDtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KFxuICAgICAgICAgICAgICAgIGNpcmNsZSBhdCB0b3AsXG4gICAgICAgICAgICAgICAgdGhlbWUoJ2NvbG9ycy5wc2MuNTAnKSxcbiAgICAgICAgICAgICAgICB0aGVtZSgnY29sb3JzLndoaXRlJykgNTAlXG4gICAgICAgICk7XG4gICAgfVxuICAgIC5wc2MtbG9naW4tcGFnZSBmb3JtOjpiZWZvcmUge1xuICAgICAgICBAYXBwbHkgYWJzb2x1dGUgaW5zZXQteC0wIG14LWF1dG8gaC1weCB3LTIvMyBiZy1ncmFkaWVudC10by1yIGZyb20tZ3JheS0yMDAgdmlhLXBzYy0zMDAgdG8tZ3JheS0yMDA7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICB0b3A6IC0xcHg7XG4gICAgfVxuXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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bUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxhQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLHVCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHFCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSx1QkFBbUI7RUFBbkIsK0RBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsdUJBQW1CO0VBQW5CLDhEQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHVCQUFtQjtFQUFuQiwrREFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSx1QkFBbUI7RUFBbkIsNERBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsd0JBQW1CO0VBQW5CLGtFQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHNCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsZ0JBQW1CO0VBQW5CLHVCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxzQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxxQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxxQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxxQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxpQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxtQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxxQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxpQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxtQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsaUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsbUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsbUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLG1DQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSwwRUFBbUI7RUFBbkIsOEZBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsZ0RBQW1CO0VBQW5CLDZEQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLCtFQUFtQjtFQUFuQixtR0FBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSwwQ0FBbUI7RUFBbkIsdURBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsOEJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsMkdBQW1CO0VBQW5CLHlHQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEseUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSw4QkFBbUI7RUFBbkIsK1FBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsZ0tBQW1CO0VBQW5CLHdKQUFtQjtFQUFuQixpTEFBbUI7RUFBbkIsd0RBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsd0JBQW1CO0VBQW5CLHdEQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLCtGQUFtQjtFQUFuQix3REFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1COztBQUZuQjtFQUFBLGtCQXFCQTtFQXJCQTtBQXFCQTs7QUFyQkE7RUFBQTtBQXFCQTs7QUFyQkE7RUFBQSxrQkFxQkE7RUFyQkE7QUFxQkE7O0FBckJBO0VBQUE7QUFxQkE7O0FBckJBO0VBQUEsa0JBcUJBO0VBckJBO0FBcUJBOztBQXJCQTtFQUFBLG9CQXFCQTtFQXJCQTtBQXFCQTs7QUFyQkE7RUFBQSwyR0FxQkE7RUFyQkEseUdBcUJBO0VBckJBO0FBcUJBOztBQXJCQTtFQUFBLG9CQXFCQTtFQXJCQTtBQXFCQTs7QUFyQkE7RUFBQTtBQXFCQTs7QUFyQkE7RUFBQSxzQkFxQkE7RUFyQkE7QUFxQkE7O0FBckJBO0VBQUEsa0JBcUJBO0VBckJBO0FBcUJBOztBQXJCQTtFQUFBLG9CQXFCQTtFQXJCQTtBQXFCQTs7QUFyQkE7RUFBQSw4QkFxQkE7RUFyQkE7QUFxQkE7O0FBckJBO0VBQUEsMkdBcUJBO0VBckJBLHlHQXFCQTtFQXJCQTtBQXFCQTs7QUFyQkE7RUFBQSwyR0FxQkE7RUFyQkEseUdBcUJBO0VBckJBO0FBcUJBOztBQXJCQTtFQUFBLDJHQXFCQTtFQXJCQSx5R0FxQkE7RUFyQkE7QUFxQkE7O0FBckJBO0VBQUE7QUFxQkE7O0FBckJBO0VBQUEsb0JBcUJBO0VBckJBO0FBcUJBOztBQXJCQTtFQUFBLG9CQXFCQTtFQXJCQTtBQXFCQTs7QUFyQkE7RUFBQTtBQXFCQTs7QUFyQkE7RUFBQTtBQXFCQTs7QUFyQkE7RUFBQSxvQkFxQkE7RUFyQkE7QUFxQkE7O0FBckJBO0VBQUEsb0JBcUJBO0VBckJBO0FBcUJBOztBQXJCQTtFQUFBLHNCQXFCQTtFQXJCQTtBQXFCQTs7QUFyQkE7RUFBQSxzQkFxQkE7RUFyQkE7QUFxQkE7O0FBckJBO0VBQUEsa0JBcUJBO0VBckJBO0FBcUJBOztBQXJCQTtFQUFBLGtCQXFCQTtFQXJCQTtBQXFCQTs7QUFyQkE7RUFBQSxvQkFxQkE7RUFyQkE7QUFxQkE7O0FBckJBO0VBQUEsb0JBcUJBO0VBckJBO0FBcUJBOztBQXJCQTtFQUFBO0FBcUJBOztBQXJCQTtFQUFBLG9CQXFCQTtFQXJCQTtBQXFCQTs7QUFyQkE7O0VBQUE7SUFBQTtFQXFCQTs7RUFyQkE7SUFBQTtFQXFCQTs7RUFyQkE7SUFBQTtFQXFCQTs7RUFyQkE7SUFBQSx1QkFxQkE7SUFyQkEsb0RBcUJBO0lBckJBO0VBcUJBOztFQXJCQTtJQUFBLHVCQXFCQTtJQXJCQSwyREFxQkE7SUFyQkE7RUFxQkE7O0VBckJBO0lBQUEsa0JBcUJBO0lBckJBO0VBcUJBO0FBQUE7O0FBckJBOztFQUFBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUEsb0JBcUJBO0lBckJBO0VBcUJBO0FBQUE7O0FBckJBOztFQUFBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUEscUJBcUJBO0lBckJBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBOztFQXJCQTtJQUFBLGtCQXFCQTtJQXJCQTtFQXFCQTs7RUFyQkE7SUFBQSxvQkFxQkE7SUFyQkE7RUFxQkE7O0VBckJBO0lBQUEsa0JBcUJBO0lBckJBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBOztFQXJCQTtJQUFBLGdEQXFCQTtJQXJCQSw2REFxQkE7SUFyQkE7RUFxQkE7O0VBckJBO0lBQUEsZ0tBcUJBO0lBckJBLHdKQXFCQTtJQXJCQSxpTEFxQkE7SUFyQkEsd0RBcUJBO0lBckJBO0VBcUJBO0FBQUE7O0FBckJBO0VBQUE7QUFxQkE7O0FBckJBO0VBQUE7QUFxQkE7O0FBckJBO0VBQUE7QUFxQkE7O0FBckJBO0VBQUE7QUFxQkE7O0FBckJBO0VBQUE7QUFxQkE7O0FBckJBO0VBQUE7QUFxQkE7O0FBckJBO0VBQUE7QUFxQkE7O0FBckJBO0VBQUEsc0JBcUJBO0VBckJBO0FBcUJBOztBQXJCQTs7RUFBQTtJQUFBO0VBcUJBO0FBQUE7O0FBckJBOztFQUFBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUE7RUFxQkE7O0VBckJBO0lBQUEsc0JBcUJBO0lBckJBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBOztFQXJCQTtJQUFBO0VBcUJBO0FBQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvYmFja2VuZC9sb2dpbi9jc3MvbG9naW4uY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkB0YWlsd2luZCBiYXNlO1xuQHRhaWx3aW5kIGNvbXBvbmVudHM7XG5AdGFpbHdpbmQgdXRpbGl0aWVzO1xuXG5AbGF5ZXIgY29tcG9uZW50cyB7XG4gICAgLnBzYy1sb2dpbi1wYWdlIHtcbiAgICAgICAgQGFwcGx5IHJlbGF0aXZlIGJnLW5vLXJlcGVhdDtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KFxuICAgICAgICAgICAgICAgIGNpcmNsZSBhdCB0b3AsXG4gICAgICAgICAgICAgICAgdGhlbWUoJ2NvbG9ycy5wc2MuNTAnKSxcbiAgICAgICAgICAgICAgICB0aGVtZSgnY29sb3JzLndoaXRlJykgNTAlXG4gICAgICAgICk7XG4gICAgfVxuICAgIC5wc2MtbG9naW4tcGFnZSBmb3JtOjpiZWZvcmUge1xuICAgICAgICBAYXBwbHkgYWJzb2x1dGUgaW5zZXQteC0wIG14LWF1dG8gaC1weCB3LTIvMyBiZy1ncmFkaWVudC10by1yIGZyb20tZ3JheS0yMDAgdmlhLXBzYy0zMDAgdG8tZ3JheS0yMDA7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICB0b3A6IC0xcHg7XG4gICAgfVxuXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/src/new/web/build/backend/tailwind.css b/src/new/web/build/backend/tailwind.css index b65521068..ff520e1b5 100644 --- a/src/new/web/build/backend/tailwind.css +++ b/src/new/web/build/backend/tailwind.css @@ -956,9 +956,6 @@ html { .h-10{ height: 2.5rem; } -.h-14{ - height: 3.5rem; -} .h-16{ height: 4rem; } @@ -1010,6 +1007,9 @@ html { .w-\[var\(--sidebar-width\)\]{ width: var(--sidebar-width); } +.w-auto{ + width: auto; +} .w-full{ width: 100%; } @@ -1078,6 +1078,9 @@ html { .items-center{ align-items: center; } +.items-baseline{ + align-items: baseline; +} .justify-start{ justify-content: flex-start; } @@ -1187,6 +1190,9 @@ html { .border-b{ border-bottom-width: 1px; } +.border-r{ + border-right-width: 1px; +} .border-t{ border-top-width: 1px; } @@ -1198,6 +1204,14 @@ html { --tw-border-opacity: 1; border-color: rgb(209 213 219 / var(--tw-border-opacity)); } +.border-gray-400{ + --tw-border-opacity: 1; + border-color: rgb(156 163 175 / var(--tw-border-opacity)); +} +.bg-blue-600{ + --tw-bg-opacity: 1; + background-color: rgb(37 99 235 / var(--tw-bg-opacity)); +} .bg-gray-100{ --tw-bg-opacity: 1; background-color: rgb(243 244 246 / var(--tw-bg-opacity)); @@ -1339,6 +1353,10 @@ html { font-size: 1.5rem; line-height: 2rem; } +.text-lg{ + font-size: 1.125rem; + line-height: 1.75rem; +} .text-sm{ font-size: 0.875rem; line-height: 1.25rem; @@ -1372,6 +1390,10 @@ html { .tracking-wider{ letter-spacing: 0.05em; } +.text-blue-600{ + --tw-text-opacity: 1; + color: rgb(37 99 235 / var(--tw-text-opacity)); +} .text-gray-500{ --tw-text-opacity: 1; color: rgb(107 114 128 / var(--tw-text-opacity)); @@ -1512,7 +1534,9 @@ html { .badge-yes{ display: inline-flex; - border-radius: 0.25rem; + min-width: 5rem; + justify-content: center; + border-radius: 0.125rem; --tw-bg-opacity: 1; background-color: rgb(132 204 22 / var(--tw-bg-opacity)); padding-left: 0.5rem; @@ -1524,6 +1548,9 @@ html { font-weight: 500; --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity)); + --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .badge-yes:hover{ @@ -1531,7 +1558,9 @@ html { } .badge-no{ display: inline-flex; - border-radius: 0.25rem; + min-width: 5rem; + justify-content: center; + border-radius: 0.125rem; --tw-bg-opacity: 1; background-color: rgb(249 115 22 / var(--tw-bg-opacity)); padding-left: 0.5rem; @@ -1543,131 +1572,170 @@ html { font-weight: 500; --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity)); + --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .badge-no:hover{ --tw-bg-opacity: 0.9; } + +.table-icon, .button-icon{ + width: 1.5rem; +} + .hover\:bg-gray-200:hover{ --tw-bg-opacity: 1; background-color: rgb(229 231 235 / var(--tw-bg-opacity)); } + .hover\:bg-gray-500\/5:hover{ background-color: rgb(107 114 128 / 0.05); } + .hover\:bg-psc-500:hover{ --tw-bg-opacity: 1; background-color: rgb(234 100 27 / var(--tw-bg-opacity)); } + .hover\:bg-psc-500\/5:hover{ background-color: rgb(234 100 27 / 0.05); } + .hover\:bg-psc-600:hover{ --tw-bg-opacity: 1; background-color: rgb(172 48 37 / var(--tw-bg-opacity)); } + .hover\:text-white:hover{ --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity)); } + .hover\:ring-2:hover{ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } + .hover\:ring-psc-500:hover{ --tw-ring-opacity: 1; --tw-ring-color: rgb(234 100 27 / var(--tw-ring-opacity)); } + .hover\:ring-offset-2:hover{ --tw-ring-offset-width: 2px; } + .focus\:border-psc-500:focus{ --tw-border-opacity: 1; border-color: rgb(234 100 27 / var(--tw-border-opacity)); } + .focus\:bg-psc-500:focus{ --tw-bg-opacity: 1; background-color: rgb(234 100 27 / var(--tw-bg-opacity)); } + .focus\:text-white:focus{ --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity)); } + .focus\:outline-none:focus{ outline: 2px solid transparent; outline-offset: 2px; } + .focus\:ring:focus{ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } + .focus\:ring-1:focus{ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } + .focus\:ring-4:focus{ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } + .focus\:ring-inset:focus{ --tw-ring-inset: inset; } + .focus\:ring-gray-100:focus{ --tw-ring-opacity: 1; --tw-ring-color: rgb(243 244 246 / var(--tw-ring-opacity)); } + .focus\:ring-psc-500:focus{ --tw-ring-opacity: 1; --tw-ring-color: rgb(234 100 27 / var(--tw-ring-opacity)); } + .focus\:ring-opacity-50:focus{ --tw-ring-opacity: 0.5; } + .disabled\:opacity-70:disabled{ opacity: 0.7; } + .group:hover .group-hover\:text-white{ --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity)); } + .group:focus .group-focus\:text-white{ --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity)); } + .dark\:divide-gray-700:is(.dark *) > :not([hidden]) ~ :not([hidden]){ --tw-divide-opacity: 1; border-color: rgb(55 65 81 / var(--tw-divide-opacity)); } + .dark\:border-gray-700:is(.dark *){ --tw-border-opacity: 1; border-color: rgb(55 65 81 / var(--tw-border-opacity)); } + .dark\:bg-gray-800:is(.dark *){ --tw-bg-opacity: 1; background-color: rgb(31 41 55 / var(--tw-bg-opacity)); } + .dark\:bg-gray-900:is(.dark *){ --tw-bg-opacity: 1; background-color: rgb(17 24 39 / var(--tw-bg-opacity)); } + .dark\:text-gray-100:is(.dark *){ --tw-text-opacity: 1; color: rgb(243 244 246 / var(--tw-text-opacity)); } + .dark\:text-gray-300:is(.dark *){ --tw-text-opacity: 1; color: rgb(209 213 219 / var(--tw-text-opacity)); } + .dark\:ring-white\/10:is(.dark *){ --tw-ring-color: rgb(255 255 255 / 0.1); } + .dark\:focus\:ring-gray-500:focus:is(.dark *){ --tw-ring-opacity: 1; --tw-ring-color: rgb(107 114 128 / var(--tw-ring-opacity)); } + @media (min-width: 640px){ .sm\:col-span-2{ @@ -1699,6 +1767,7 @@ html { padding-right: 1rem; } } + @media (min-width: 768px){ .md\:block{ @@ -1709,10 +1778,6 @@ html { display: inline; } - .md\:max-w-md{ - max-width: 28rem; - } - .md\:flex-row{ flex-direction: row; } @@ -1722,6 +1787,7 @@ html { padding-right: 1.5rem; } } + @media (min-width: 1024px){ .lg\:z-0{ @@ -1802,37 +1868,47 @@ html { transition-duration: 150ms; } } + .rtl\:left-auto:where([dir="rtl"], [dir="rtl"] *){ left: auto; } + .rtl\:right-0:where([dir="rtl"], [dir="rtl"] *){ right: 0px; } + .rtl\:ml-0:where([dir="rtl"], [dir="rtl"] *){ margin-left: 0px; } + .rtl\:ml-2:where([dir="rtl"], [dir="rtl"] *){ margin-left: 0.5rem; } + .rtl\:mr-0:where([dir="rtl"], [dir="rtl"] *){ margin-right: 0px; } + .rtl\:mr-4:where([dir="rtl"], [dir="rtl"] *){ margin-right: 1rem; } + .rtl\:mr-auto:where([dir="rtl"], [dir="rtl"] *){ margin-right: auto; } + .rtl\:translate-x-full:where([dir="rtl"], [dir="rtl"] *){ --tw-translate-x: 100%; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } + @media (min-width: 640px){ .sm\:rtl\:space-x-reverse:where([dir="rtl"], [dir="rtl"] *) > :not([hidden]) ~ :not([hidden]){ --tw-space-x-reverse: 1; } } + @media (min-width: 1024px){ .rtl\:lg\:ml-4:where([dir="rtl"], [dir="rtl"] *){ @@ -1874,4 +1950,4 @@ html { \*********************************************************************************************************************************************************************************************************************************/ [data-loading=""],[data-loading=show],[data-loading=delay\|show]{display:none} -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLHVCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHFCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSx1QkFBbUI7RUFBbkIsK0RBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsdUJBQW1CO0VBQW5CLDhEQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHVCQUFtQjtFQUFuQiwrREFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSx1QkFBbUI7RUFBbkIsNERBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsd0JBQW1CO0VBQW5CLGtFQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHNCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsZ0JBQW1CO0VBQW5CLHVCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLHNCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHNCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEscUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEscUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEscUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsaUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsbUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEscUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsaUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsbUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLGlCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG1CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxtQ0FBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsMEVBQW1CO0VBQW5CLDhGQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGdEQUFtQjtFQUFuQiw2REFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSwrRUFBbUI7RUFBbkIsbUdBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsMENBQW1CO0VBQW5CLHVEQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLDhCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLDJHQUFtQjtFQUFuQix5R0FBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHlCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsOEJBQW1CO0VBQW5CLCtRQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGdLQUFtQjtFQUFuQix3SkFBbUI7RUFBbkIsaUxBQW1CO0VBQW5CLHdEQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHdCQUFtQjtFQUFuQix3REFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSwrRkFBbUI7RUFBbkIsd0RBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjs7QUFZbkI7SUFDSSxzQkFBc0I7SUFDdEIsaUNBQWlDO0FBQ3JDOztBQUVBO0lBQ0ksb0NBQW9DO0FBQ3hDOztBQUVBO0lBQ0ksY0FBYztBQUNsQjs7QUFHSTtFQUFBLG9CQUFtRztFQUFuRyxzQkFBbUc7RUFBbkcsa0JBQW1HO0VBQW5HLHdEQUFtRztFQUFuRyxvQkFBbUc7RUFBbkcscUJBQW1HO0VBQW5HLG9CQUFtRztFQUFuRyx1QkFBbUc7RUFBbkcsbUJBQW1HO0VBQW5HLG9CQUFtRztFQUFuRyxnQkFBbUc7RUFBbkcsb0JBQW1HO0VBQW5HO0FBQW1HOztBQUFuRztFQUFBO0FBQW1HO0FBR25HO0VBQUEsb0JBQXFHO0VBQXJHLHNCQUFxRztFQUFyRyxrQkFBcUc7RUFBckcsd0RBQXFHO0VBQXJHLG9CQUFxRztFQUFyRyxxQkFBcUc7RUFBckcsb0JBQXFHO0VBQXJHLHVCQUFxRztFQUFyRyxtQkFBcUc7RUFBckcsb0JBQXFHO0VBQXJHLGdCQUFxRztFQUFyRyxvQkFBcUc7RUFBckc7QUFBcUc7QUFBckc7RUFBQTtBQUFxRztBQWpDekc7RUFBQSxrQkFtQ0E7RUFuQ0E7QUFtQ0E7QUFuQ0E7RUFBQTtBQW1DQTtBQW5DQTtFQUFBLGtCQW1DQTtFQW5DQTtBQW1DQTtBQW5DQTtFQUFBO0FBbUNBO0FBbkNBO0VBQUEsa0JBbUNBO0VBbkNBO0FBbUNBO0FBbkNBO0VBQUEsb0JBbUNBO0VBbkNBO0FBbUNBO0FBbkNBO0VBQUEsMkdBbUNBO0VBbkNBLHlHQW1DQTtFQW5DQTtBQW1DQTtBQW5DQTtFQUFBLG9CQW1DQTtFQW5DQTtBQW1DQTtBQW5DQTtFQUFBO0FBbUNBO0FBbkNBO0VBQUEsc0JBbUNBO0VBbkNBO0FBbUNBO0FBbkNBO0VBQUEsa0JBbUNBO0VBbkNBO0FBbUNBO0FBbkNBO0VBQUEsb0JBbUNBO0VBbkNBO0FBbUNBO0FBbkNBO0VBQUEsOEJBbUNBO0VBbkNBO0FBbUNBO0FBbkNBO0VBQUEsMkdBbUNBO0VBbkNBLHlHQW1DQTtFQW5DQTtBQW1DQTtBQW5DQTtFQUFBLDJHQW1DQTtFQW5DQSx5R0FtQ0E7RUFuQ0E7QUFtQ0E7QUFuQ0E7RUFBQSwyR0FtQ0E7RUFuQ0EseUdBbUNBO0VBbkNBO0FBbUNBO0FBbkNBO0VBQUE7QUFtQ0E7QUFuQ0E7RUFBQSxvQkFtQ0E7RUFuQ0E7QUFtQ0E7QUFuQ0E7RUFBQSxvQkFtQ0E7RUFuQ0E7QUFtQ0E7QUFuQ0E7RUFBQTtBQW1DQTtBQW5DQTtFQUFBO0FBbUNBO0FBbkNBO0VBQUEsb0JBbUNBO0VBbkNBO0FBbUNBO0FBbkNBO0VBQUEsb0JBbUNBO0VBbkNBO0FBbUNBO0FBbkNBO0VBQUEsc0JBbUNBO0VBbkNBO0FBbUNBO0FBbkNBO0VBQUEsc0JBbUNBO0VBbkNBO0FBbUNBO0FBbkNBO0VBQUEsa0JBbUNBO0VBbkNBO0FBbUNBO0FBbkNBO0VBQUEsa0JBbUNBO0VBbkNBO0FBbUNBO0FBbkNBO0VBQUEsb0JBbUNBO0VBbkNBO0FBbUNBO0FBbkNBO0VBQUEsb0JBbUNBO0VBbkNBO0FBbUNBO0FBbkNBO0VBQUE7QUFtQ0E7QUFuQ0E7RUFBQSxvQkFtQ0E7RUFuQ0E7QUFtQ0E7QUFuQ0E7O0VBQUE7SUFBQTtFQW1DQTs7RUFuQ0E7SUFBQTtFQW1DQTs7RUFuQ0E7SUFBQTtFQW1DQTs7RUFuQ0E7SUFBQSx1QkFtQ0E7SUFuQ0Esb0RBbUNBO0lBbkNBO0VBbUNBOztFQW5DQTtJQUFBLHVCQW1DQTtJQW5DQSwyREFtQ0E7SUFuQ0E7RUFtQ0E7O0VBbkNBO0lBQUEsa0JBbUNBO0lBbkNBO0VBbUNBO0FBQUE7QUFuQ0E7O0VBQUE7SUFBQTtFQW1DQTs7RUFuQ0E7SUFBQTtFQW1DQTs7RUFuQ0E7SUFBQTtFQW1DQTs7RUFuQ0E7SUFBQTtFQW1DQTs7RUFuQ0E7SUFBQSxvQkFtQ0E7SUFuQ0E7RUFtQ0E7QUFBQTtBQW5DQTs7RUFBQTtJQUFBO0VBbUNBOztFQW5DQTtJQUFBO0VBbUNBOztFQW5DQTtJQUFBO0VBbUNBOztFQW5DQTtJQUFBO0VBbUNBOztFQW5DQTtJQUFBO0VBbUNBOztFQW5DQTtJQUFBO0VBbUNBOztFQW5DQTtJQUFBLHFCQW1DQTtJQW5DQTtFQW1DQTs7RUFuQ0E7SUFBQTtFQW1DQTs7RUFuQ0E7SUFBQTtFQW1DQTs7RUFuQ0E7SUFBQTtFQW1DQTs7RUFuQ0E7SUFBQSxrQkFtQ0E7SUFuQ0E7RUFtQ0E7O0VBbkNBO0lBQUEsb0JBbUNBO0lBbkNBO0VBbUNBOztFQW5DQTtJQUFBLGtCQW1DQTtJQW5DQTtFQW1DQTs7RUFuQ0E7SUFBQTtFQW1DQTs7RUFuQ0E7SUFBQTtFQW1DQTs7RUFuQ0E7SUFBQSxnREFtQ0E7SUFuQ0EsNkRBbUNBO0lBbkNBO0VBbUNBOztFQW5DQTtJQUFBLGdLQW1DQTtJQW5DQSx3SkFtQ0E7SUFuQ0EsaUxBbUNBO0lBbkNBLHdEQW1DQTtJQW5DQTtFQW1DQTtBQUFBO0FBbkNBO0VBQUE7QUFtQ0E7QUFuQ0E7RUFBQTtBQW1DQTtBQW5DQTtFQUFBO0FBbUNBO0FBbkNBO0VBQUE7QUFtQ0E7QUFuQ0E7RUFBQTtBQW1DQTtBQW5DQTtFQUFBO0FBbUNBO0FBbkNBO0VBQUE7QUFtQ0E7QUFuQ0E7RUFBQSxzQkFtQ0E7RUFuQ0E7QUFtQ0E7QUFuQ0E7O0VBQUE7SUFBQTtFQW1DQTtBQUFBO0FBbkNBOztFQUFBO0lBQUE7RUFtQ0E7O0VBbkNBO0lBQUE7RUFtQ0E7O0VBbkNBO0lBQUEsc0JBbUNBO0lBbkNBO0VBbUNBOztFQW5DQTtJQUFBO0VBbUNBOztFQW5DQTtJQUFBO0VBbUNBOztFQW5DQTtJQUFBO0VBbUNBOztFQW5DQTtJQUFBO0VBbUNBOztFQW5DQTtJQUFBO0VBbUNBO0FBQUE7Ozs7O0FDbkNBLGlFQUFpRSxZQUFZLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvdGFpbHdpbmQvY3NzL2JhY2tlbmQuY3NzIiwid2VicGFjazovLy8uL3ZlbmRvci9zeW1mb255L3V4LWxpdmUtY29tcG9uZW50L2Fzc2V0cy9kaXN0L2xpdmUubWluLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjppdGFsLG9wc3osd2dodEAwLDE0Li4zMiwxMDAuLjkwMDsxLDE0Li4zMiwxMDAuLjkwMCZkaXNwbGF5PXN3YXAnKTtcblxuQHRhaWx3aW5kIGJhc2U7XG5AdGFpbHdpbmQgY29tcG9uZW50cztcbkB0YWlsd2luZCB1dGlsaXRpZXM7XG5cbkBsYXllciBiYXNlIHtcbiAgICBodG1sIHtcbiAgICAgICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAgICAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IG5vcm1hbDtcbiAgICAgICAgZm9udC1mYW1pbHk6IFwiSW50ZXJcIiwgc2VyaWY7XG4gICAgICAgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiBub3JtYWw7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgfVxufVxuXG46cm9vdCB7XG4gICAgLS1zaWRlYmFyLXdpZHRoOiAyMHJlbTtcbiAgICAtLWNvbGxhcHNlZC1zaWRlYmFyLXdpZHRoOiA1LjRyZW07XG59XG5cbi5ub3RlLXRvb2xiYXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDtcbn1cblxuLmRyb3Bkb3duOmhvdmVyIC5kcm9wZG93bi1tZW51IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmJhZGdlLXllcyB7XG4gICAgQGFwcGx5IGlubGluZS1mbGV4IHJvdW5kZWQgYmctbGltZS01MDAgcHgtMiBweS0xIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC13aGl0ZSBob3ZlcjpiZy1vcGFjaXR5LTkwO1xufVxuLmJhZGdlLW5vIHtcbiAgICBAYXBwbHkgaW5saW5lLWZsZXggcm91bmRlZCBiZy1vcmFuZ2UtNTAwIHB4LTIgcHktMSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtd2hpdGUgaG92ZXI6Ymctb3BhY2l0eS05MDtcbn1cbiIsIltkYXRhLWxvYWRpbmc9XCJcIl0sW2RhdGEtbG9hZGluZz1zaG93XSxbZGF0YS1sb2FkaW5nPWRlbGF5XFx8c2hvd117ZGlzcGxheTpub25lfSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLHVCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHFCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLHVCQUFtQjtFQUFuQiwrREFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSx1QkFBbUI7RUFBbkIsOERBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsdUJBQW1CO0VBQW5CLCtEQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHVCQUFtQjtFQUFuQiw0REFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSx3QkFBbUI7RUFBbkIsa0VBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxnQkFBbUI7RUFBbkIsdUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxzQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxzQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxzQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHNCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHFCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHFCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHFCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGlCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG1CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHFCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGlCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG1CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxpQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxtQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxtQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsbUNBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLDBFQUFtQjtFQUFuQiw4RkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxnREFBbUI7RUFBbkIsNkRBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsK0VBQW1CO0VBQW5CLG1HQUFtQjtFQUFuQjtBQUFtQjtB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O0FBdkNBO0VBQUEsa0JBdUNBO0VBdkNBO0FBdUNBOztBQXZDQTtFQUFBLGtCQXVDQTtFQXZDQTtBQXVDQTs7QUF2Q0E7RUFBQSxvQkF1Q0E7RUF2Q0E7QUF1Q0E7O0FBdkNBO0VBQUEsb0JBdUNBO0VBdkNBO0FBdUNBOztBQXZDQTtFQUFBO0FBdUNBOztBQXZDQTtFQUFBLG9CQXVDQTtFQXZDQTtBQXVDQTs7QUF2Q0E7O0VBQUE7SUFBQTtFQXVDQTs7RUF2Q0E7SUFBQTtFQXVDQTs7RUF2Q0E7SUFBQTtFQXVDQTs7RUF2Q0E7SUFBQSx1QkF1Q0E7SUF2Q0Esb0RBdUNBO0lBdkNBO0VBdUNBOztFQXZDQTtJQUFBLHVCQXVDQTtJQXZDQSwyREF1Q0E7SUF2Q0E7RUF1Q0E7O0VBdkNBO0lBQUEsa0JBdUNBO0lBdkNBO0VBdUNBO0FBQUE7O0FBdkNBOztFQUFBO0lBQUE7RUF1Q0E7O0VBdkNBO0lBQUE7RUF1Q0E7O0VBdkNBO0lBQUE7RUF1Q0E7O0VBdkNBO0lBQUEsb0JBdUNBO0lBdkNBO0VBdUNBO0FBQUE7O0FBdkNBOztFQUFBO0lBQUE7RUF1Q0E7O0VBdkNBO0lBQUE7RUF1Q0E7O0VBdkNBO0lBQUE7RUF1Q0E7O0VBdkNBO0lBQUE7RUF1Q0E7O0VBdkNBO0lBQUE7RUF1Q0E7O0VBdkNBO0lBQUE7RUF1Q0E7O0VBdkNBO0lBQUEscUJBdUNBO0lBdkNBO0VBdUNBOztFQXZDQTtJQUFBO0VBdUNBOztFQXZDQTtJQUFBO0VBdUNBOztFQXZDQTtJQUFBO0VBdUNBOztFQXZDQTtJQUFBLGtCQXVDQTtJQXZDQTtFQXVDQTs7RUF2Q0E7SUFBQSxvQkF1Q0E7SUF2Q0E7RUF1Q0E7O0VBdkNBO0lBQUEsa0JBdUNBO0lBdkNBO0VBdUNBOztFQXZDQTtJQUFBO0VBdUNBOztFQXZDQTtJQUFBO0VBdUNBOztFQXZDQTtJQUFBLGdEQXVDQTtJQXZDQSw2REF1Q0E7SUF2Q0E7RUF1Q0E7O0VBdkNBO0lBQUEsZ0tBdUNBO0lBdkNBLHdKQXVDQTtJQXZDQSxpTEF1Q0E7SUF2Q0Esd0RBdUNBO0lBdkNBO0VBdUNBO0FBQUE7O0FBdkNBO0VBQUE7QUF1Q0E7O0FBdkNBO0VBQUE7QUF1Q0E7O0FBdkNBO0VBQUE7QUF1Q0E7O0FBdkNBO0VBQUE7QUF1Q0E7O0FBdkNBO0VBQUE7QUF1Q0E7O0FBdkNBO0VBQUE7QUF1Q0E7O0FBdkNBO0VBQUE7QUF1Q0E7O0FBdkNBO0VBQUEsc0JBdUNBO0VBdkNBO0FBdUNBOztBQXZDQTs7RUFBQTtJQUFBO0VBdUNBO0FBQUE7O0FBdkNBOztFQUFBO0lBQUE7RUF1Q0E7O0VBdkNBO0lBQUE7RUF1Q0E7O0VBdkNBO0lBQUEsc0JBdUNBO0lBdkNBO0VBdUNBOztFQXZDQTtJQUFBO0VBdUNBOztFQXZDQTtJQUFBO0VBdUNBOztFQXZDQTtJQUFBO0VBdUNBOztFQXZDQTtJQUFBO0VBdUNBOztFQXZDQTtJQUFBO0VBdUNBO0FBQUE7Ozs7O0FDdkNBLGlFQUFpRSxZQUFZLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvdGFpbHdpbmQvY3NzL2JhY2tlbmQuY3NzIiwid2VicGFjazovLy8uL3ZlbmRvci9zeW1mb255L3V4LWxpdmUtY29tcG9uZW50L2Fzc2V0cy9kaXN0L2xpdmUubWluLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjppdGFsLG9wc3osd2dodEAwLDE0Li4zMiwxMDAuLjkwMDsxLDE0Li4zMiwxMDAuLjkwMCZkaXNwbGF5PXN3YXAnKTtcblxuQHRhaWx3aW5kIGJhc2U7XG5AdGFpbHdpbmQgY29tcG9uZW50cztcbkB0YWlsd2luZCB1dGlsaXRpZXM7XG5cbkBsYXllciBiYXNlIHtcbiAgICBodG1sIHtcbiAgICAgICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAgICAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IG5vcm1hbDtcbiAgICAgICAgZm9udC1mYW1pbHk6IFwiSW50ZXJcIiwgc2VyaWY7XG4gICAgICAgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiBub3JtYWw7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgfVxufVxuXG46cm9vdCB7XG4gICAgLS1zaWRlYmFyLXdpZHRoOiAyMHJlbTtcbiAgICAtLWNvbGxhcHNlZC1zaWRlYmFyLXdpZHRoOiA1LjRyZW07XG59XG5cbi5ub3RlLXRvb2xiYXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDtcbn1cblxuLmRyb3Bkb3duOmhvdmVyIC5kcm9wZG93bi1tZW51IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmJhZGdlLXllcyB7XG4gICAgQGFwcGx5IGlubGluZS1mbGV4IHJvdW5kZWQtc20gYmctbGltZS01MDAgcHgtMiBweS0xIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC13aGl0ZSBob3ZlcjpiZy1vcGFjaXR5LTkwIG1pbi13LTIwIGp1c3RpZnktY2VudGVyIHNoYWRvdy14bDtcbn1cbi5iYWRnZS1ubyB7XG4gICAgQGFwcGx5IGlubGluZS1mbGV4IHJvdW5kZWQtc20gYmctb3JhbmdlLTUwMCBweC0yIHB5LTEgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LXdoaXRlIGhvdmVyOmJnLW9wYWNpdHktOTAgbWluLXctMjAganVzdGlmeS1jZW50ZXIgc2hhZG93LXhsO1xufVxuXG4udGFibGUtaWNvbiwgLmJ1dHRvbi1pY29uIHtcbiAgICBAYXBwbHkgdy02O1xufVxuIiwiW2RhdGEtbG9hZGluZz1cIlwiXSxbZGF0YS1sb2FkaW5nPXNob3ddLFtkYXRhLWxvYWRpbmc9ZGVsYXlcXHxzaG93XXtkaXNwbGF5Om5vbmV9Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/src/new/web/build/node_modules_symfony_stimulus-bridge_dist_webpack_loader_js_assets_controllers_json.js b/src/new/web/build/node_modules_symfony_stimulus-bridge_dist_webpack_loader_js_assets_controllers_json.js index 354bfbfb8..6772d4269 100644 --- a/src/new/web/build/node_modules_symfony_stimulus-bridge_dist_webpack_loader_js_assets_controllers_json.js +++ b/src/new/web/build/node_modules_symfony_stimulus-bridge_dist_webpack_loader_js_assets_controllers_json.js @@ -4890,4 +4890,4 @@ default_1.values = { /***/ }) }]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZV9tb2R1bGVzX3N5bWZvbnlfc3RpbXVsdXMtYnJpZGdlX2Rpc3Rfd2VicGFja19sb2FkZXJfanNfYXNzZXRzX2NvbnRyb2xsZXJzX2pzb24uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXVFO0FBQ2hCO0FBQ1c7QUFDWTtBQUN4QjtBQUN0RCxpRUFBZTtBQUNmLDRDQUE0QyxtRkFBWTtBQUN4RCxnQ0FBZ0MsOEVBQVk7QUFDNUMsVUFBVSwwRkFBWTtBQUN0QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDVCtDO0FBQ2I7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQSxTQUFTRSxzQkFBc0JBLENBQUNDLFFBQVEsRUFBRUMsS0FBSyxFQUFFQyxJQUFJLEVBQUVDLENBQUMsRUFBRTtFQUN0RCxJQUFJRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUNDLENBQUMsRUFBRSxNQUFNLElBQUlDLFNBQVMsQ0FBQywrQ0FBK0MsQ0FBQztFQUM1RixJQUFJLE9BQU9ILEtBQUssS0FBSyxVQUFVLEdBQUdELFFBQVEsS0FBS0MsS0FBSyxJQUFJLENBQUNFLENBQUMsR0FBRyxDQUFDRixLQUFLLENBQUNJLEdBQUcsQ0FBQ0wsUUFBUSxDQUFDLEVBQUUsTUFBTSxJQUFJSSxTQUFTLENBQUMsMEVBQTBFLENBQUM7RUFDbEwsT0FBT0YsSUFBSSxLQUFLLEdBQUcsR0FBR0MsQ0FBQyxHQUFHRCxJQUFJLEtBQUssR0FBRyxHQUFHQyxDQUFDLENBQUNHLElBQUksQ0FBQ04sUUFBUSxDQUFDLEdBQUdHLENBQUMs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LENBQUN3aUMsS0FBSyxDQUFDL25DLE9BQU8sQ0FBQ29vQyxVQUFVLEVBQUU7VUFDaEQsSUFBTUMsYUFBYSxHQUFHOWlDLGFBQWEsQ0FBQ3FZLEtBQUssQ0FBQzBxQixLQUFLO1VBQy9DL2lDLGFBQWEsQ0FBQ3FZLEtBQUssQ0FBQzBxQixLQUFLLGFBQU0vaUMsYUFBYSxDQUFDZ2pDLFdBQVcsR0FBRyxDQUFDLE9BQUk7VUFDaEVwUCxVQUFVLENBQUMsWUFBTTtZQUNiNXpCLGFBQWEsQ0FBQ3FZLEtBQUssQ0FBQzBxQixLQUFLLEdBQUdELGFBQWE7VUFDN0MsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNUO01BQ0o7SUFDSjtFQUFDO0lBQUE7SUFBQSxPQUNELHVCQUFjcnJDLElBQUksRUFBRThELE9BQU8sRUFBRTtNQUN6QixJQUFJLENBQUNDLFFBQVEsQ0FBQy9ELElBQUksRUFBRTtRQUFFZ0UsTUFBTSxFQUFFRixPQUFPO1FBQUVHLE1BQU0sRUFBRTtNQUFVLENBQUMsQ0FBQztJQUMvRDtFQUFDO0VBQUE7QUFBQSxFQXBEbUJuRiwyREFBVTtBQXNEbEMyQixTQUFTLENBQUNtTSxNQUFNLEdBQUc7RUFDZjQrQixJQUFJLEVBQUUvaEM7QUFDVixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2NvbnRyb2xsZXJzLmpzb24iLCJ3ZWJwYWNrOi8vLy4vdmVuZG9yL3N5bWZvbnkvdXgtYXV0b2NvbXBsZXRlL2Fzc2V0cy9kaXN0L2NvbnRyb2xsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vdmVuZG9yL3N5bWZvbnkvdXgtbGl2ZS1jb21wb25lbnQvYXNzZXRzL2Rpc3QvbGl2ZV9jb250cm9sbGVyLmpzIiwid2VicGFjazovLy8uL3ZlbmRvci9zeW1mb255L3V4LWxpdmUtY29tcG9uZW50L2Fzc2V0cy9kaXN0L2xpdmUubWluLmNzcz9kZTlhIiwid2VicGFjazovLy8uL3ZlbmRvci9zeW1mb255L3V4LWNoYXJ0anMvYXNzZXRzL2Rpc3QvY29udHJvbGxlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29udHJvbGxlcl8wIGZyb20gJ0BzeW1mb255L3V4LWF1dG9jb21wbGV0ZS9kaXN0L2NvbnRyb2xsZXIuanMnO1xuaW1wb3J0ICd0b20tc2VsZWN0L2Rpc3QvY3NzL3RvbS1zZWxlY3QuYm9vdHN0cmFwNS5jc3MnO1xuaW1wb3J0IGNvbnRyb2xsZXJfMSBmcm9tICdAc3ltZm9ueS91eC1jaGFydGpzL2Rpc3QvY29udHJvbGxlci5qcyc7XG5pbXBvcnQgY29udHJvbGxlcl8yIGZyb20gJ0BzeW1mb255L3V4LWxpdmUtY29tcG9uZW50L2Rpc3QvbGl2ZV9jb250cm9sbGVyLmpzJztcbmltcG9ydCAnQHN5bWZvbnkvdXgtbGl2ZS1jb21wb25lbnQvZGlzdC9saXZlLm1pbi5jc3MnO1xuZXhwb3J0IGRlZmF1bHQge1xuICAnc3ltZm9ueS0tdXgtYXV0b2NvbXBsZXRlLS1hdXRvY29tcGxldGUnOiBjb250cm9sbGVyXzAsXG4gICdzeW1mb255LS11eC1jaGFydGpzLS1jaGFydCc6IGNvbnRyb2xsZXJfMSxcbiAgJ2xpdmUnOiBjb250cm9sbGVyXzIsXG59OyIsImltcG9ydCB7IENvbnRyb2xsZXIgfSBmcm9tICdAaG90d2lyZWQvc3RpbXVsdXMnO1xuaW1wb3J0IFRvbVNlbGVjdCBmcm9tICd0b20tc2VsZWN0JztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlLCBTdXBwcmVzc2VkRXJyb3IsIFN5bWJvbCAqL1xyXG5cclxuXHJcbmZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHN0YXRlLCBraW5kLCBmKSB7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XHJcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiBraW5kID09PSBcIm1cIiA/IGYgOiBraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlcikgOiBmID8gZi52YWx1ZSA6IHN0YXRlLmdldChyZWNlaXZlcik7XHJcbn1cclxuXHJcbnR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xyXG4gICAgdmFyIGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xyXG59O1xuXG52YXIgX2RlZmF1bHRfMV9pbnN0YW5jZXMsIF9kZWZhdWx0XzFfZ2V0Q29tbW9uQ29uZmlnLCBfZGVmYXVsdF8xX2NyZWF0ZUF1dG9jb21wbGV0ZSwgX2RlZmF1bHRfMV9jcmVhdGVBdXRvY29tcGxldGVXaXRoSHRtbENvbnRlbnRzLCBfZGVmYXVsdF8xX2NyZWF0ZUF1dG9jb21wbGV0ZVdpdGhSZW1vdGVEYXRhLCBfZGVmYXVsdF8xX3N0cmlwVGFncywgX2RlZmF1bHRfMV9tZXJnZU9iamVjdHMsIF9kZWZhdWx0XzFfY3JlYXRlVG9tU2VsZWN0O1xuY2xhc3MgZGVmYXVsdF8xIGV4dGVuZHMgQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIF9kZWZhdWx0XzFfaW5zdGFuY2VzLmFkZCh0aGlzKTtcbiAgICAgICAgdGhpcy5pc09ic2VydmluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmhhc0xvYWRlZENob2ljZXNQcmV2aW91c2x5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gW107XG4gICAgfVxuICAgIGluaXRpYWxpemUoKSB7XG4gICAgICAgIGlmICghdGhpcy5tdXRhdGlvbk9ic2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk11dGF0aW9ucyhtdXRhdGlvbnMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29ubmVjdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0RWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmNyZWF0ZU9wdGlvbnNEYXRhU3RydWN0dXJlKHRoaXMuc2VsZWN0RWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0aWFsaXplVG9tU2VsZWN0KCk7XG4gICAgfVxuICAgIGluaXRpYWxpemVUb21TZWxlY3QoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2tpcC1tb3JwaCcsICcnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy51cmxWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy50b21TZWxlY3QgPSBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9kZWZhdWx0XzFfaW5zdGFuY2VzLCBcIm1cIiwgX2RlZmF1bHRfMV9jcmVhdGVBdXRvY29tcGxldGVXaXRoUmVtb3RlRGF0YSkuY2FsbCh0aGlzLCB0aGlzLnVybFZhbHVlLCB0aGlzLmhhc01pbkNoYXJhY3RlcnNWYWx1ZSA/IHRoaXMubWluQ2hhcmFjdGVyc1ZhbHVlIDogbnVsbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9uc0FzSHRtbFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnRvbVNlbGVjdCA9IF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2RlZmF1bHRfMV9pbnN0YW5jZXMsIFwibVwiLCBfZGVmYXVsdF8xX2NyZWF0ZUF1dG9jb21wbGV0ZVdpdGhIdG1sQ29udGVudHMpLmNhbGwodGhpcyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50b21TZWxlY3QgPSBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9kZWZhdWx0XzFfaW5zdGFuY2VzLCBcIm1cIiwgX2RlZmF1bHRfMV9jcmVhdGVBdXRvY29tcGxldGUpLmNhbGwodGhpcyk7XG4gICAgICAgIHRoaXMuc3RhcnRNdXRhdGlvbk9ic2VydmVyKCk7XG4gICAgfVxuICAgIGRpc2Nvbm5lY3QoKSB7XG4gICAgICAgIHRoaXMuc3RvcE11dGF0aW9uT2JzZXJ2ZXIoKTtcbiAgICAgICAgbGV0IGN1cnJlbnRTZWxlY3RlZFZhbHVlcyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RFbGVtZW50Lm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkVmFsdWVzID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdEVsZW1lbnQub3B0aW9ucylcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24uc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZFZhbHVlcyA9IFt0aGlzLnNlbGVjdEVsZW1lbnQudmFsdWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudG9tU2VsZWN0LmRlc3Ryb3koKTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0RWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0RWxlbWVudC5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIEFycmF5LmZyb20odGhpcy5zZWxlY3RFbGVtZW50Lm9wdGlvbnMpLmZvckVhY2goKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSBjdXJyZW50U2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RWxlbWVudC52YWx1ZSA9IGN1cnJlbnRTZWxlY3RlZFZhbHVlc1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXRNYXhPcHRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RFbGVtZW50ID8gdGhpcy5zZWxlY3RFbGVtZW50Lm9wdGlvbnMubGVuZ3RoIDogNTA7XG4gICAgfVxuICAgIGdldCBzZWxlY3RFbGVtZW50KCkge1xuICAgICAgICBpZiAoISh0aGlzLmVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MU2VsZWN0RWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQ7XG4gICAgfVxuICAgIGdldCBmb3JtRWxlbWVudCgpIHtcbiAgICAgICAgaWYgKCEodGhpcy5lbGVtZW50IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkgJiYgISh0aGlzLmVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MU2VsZWN0RWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXV0b2NvbXBsZXRlIFN0aW11bHVzIGNvbnRyb2xsZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBhbiA8aW5wdXQ+IG9yIDxzZWxlY3Q+LicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQ7XG4gICAgfVxuICAgIGRpc3BhdGNoRXZlbnQobmFtZSwgcGF5bG9hZCkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKG5hbWUsIHsgZGV0YWlsOiBwYXlsb2FkLCBwcmVmaXg6ICdhdXRvY29tcGxldGUnIH0pO1xuICAgIH1cbiAgICBnZXQgcHJlbG9hZCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc1ByZWxvYWRWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuICdmb2N1cyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJlbG9hZFZhbHVlID09PSAnZmFsc2UnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJlbG9hZFZhbHVlID09PSAndHJ1ZScpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnByZWxvYWRWYWx1ZTtcbiAgICB9XG4gICAgcmVzZXRUb21TZWxlY3QoKSB7XG4gICAgICAgIGlmICh0aGlzLnRvbVNlbGVjdCkge1xuICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KCdiZWZvcmUtcmVzZXQnLCB7IHRvbVNlbGVjdDogdGhpcy50b21TZWxlY3QgfSk7XG4gICAgICAgICAgICB0aGlzLnN0b3BNdXRhdGlvbk9ic2VydmVyKCk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SHRtbCA9IHRoaXMuZWxlbWVudC5pbm5lckhUTUw7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnRvbVNlbGVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgdGhpcy50b21TZWxlY3QuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50LmlubmVySFRNTCA9IGN1cnJlbnRIdG1sO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplVG9tU2VsZWN0KCk7XG4gICAgICAgICAgICB0aGlzLnRvbVNlbGVjdC5zZXRWYWx1ZShjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5zdGFydE11dGF0aW9uT2JzZXJ2ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjaGFuZ2VUb21TZWxlY3REaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5zdG9wTXV0YXRpb25PYnNlcnZlcigpO1xuICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy50b21TZWxlY3QuZGlzYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50b21TZWxlY3QuZW5hYmxlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGFydE11dGF0aW9uT2JzZXJ2ZXIoKTtcbiAgICB9XG4gICAgc3RhcnRNdXRhdGlvbk9ic2VydmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNPYnNlcnZpbmcgJiYgdGhpcy5tdXRhdGlvbk9ic2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNoYXJhY3RlckRhdGE6IHRydWUsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlT2xkVmFsdWU6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuaXNPYnNlcnZpbmcgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN0b3BNdXRhdGlvbk9ic2VydmVyKCkge1xuICAgICAgICBpZiAodGhpcy5pc09ic2VydmluZyAmJiB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICB0aGlzLmlzT2JzZXJ2aW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25NdXRhdGlvbnMobXV0YXRpb25zKSB7XG4gICAgICAgIGxldCBjaGFuZ2VEaXNhYmxlZFN0YXRlID0gZmFsc2U7XG4gICAgICAgIGxldCByZXF1aXJlUmVzZXQgPSBmYWxzZTtcbiAgICAgICAgbXV0YXRpb25zLmZvckVhY2goKG11dGF0aW9uKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKG11dGF0aW9uLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdhdHRyaWJ1dGVzJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKG11dGF0aW9uLnRhcmdldCA9PT0gdGhpcy5lbGVtZW50ICYmIG11dGF0aW9uLmF0dHJpYnV0ZU5hbWUgPT09ICdkaXNhYmxlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZURpc2FibGVkU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG11dGF0aW9uLnRhcmdldCA9PT0gdGhpcy5lbGVtZW50ICYmIG11dGF0aW9uLmF0dHJpYnV0ZU5hbWUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTm93TXVsdGlwbGUgPSB0aGlzLmVsZW1lbnQuaGFzQXR0cmlidXRlKCdtdWx0aXBsZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2FzTXVsdGlwbGUgPSBtdXRhdGlvbi5vbGRWYWx1ZSA9PT0gJ211bHRpcGxlJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc05vd011bHRpcGxlICE9PSB3YXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVSZXNldCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IG5ld09wdGlvbnMgPSB0aGlzLnNlbGVjdEVsZW1lbnQgPyB0aGlzLmNyZWF0ZU9wdGlvbnNEYXRhU3RydWN0dXJlKHRoaXMuc2VsZWN0RWxlbWVudCkgOiBbXTtcbiAgICAgICAgY29uc3QgYXJlT3B0aW9uc0VxdWl2YWxlbnQgPSB0aGlzLmFyZU9wdGlvbnNFcXVpdmFsZW50KG5ld09wdGlvbnMpO1xuICAgICAgICBpZiAoIWFyZU9wdGlvbnNFcXVpdmFsZW50IHx8IHJlcXVpcmVSZXNldCkge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSBuZXdPcHRpb25zO1xuICAgICAgICAgICAgdGhpcy5yZXNldFRvbVNlbGVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VEaXNhYmxlZFN0YXRlKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVRvbVNlbGVjdERpc2FibGVkU3RhdGUodGhpcy5mb3JtRWxlbWVudC5kaXNhYmxlZCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY3JlYXRlT3B0aW9uc0RhdGFTdHJ1Y3R1cmUoc2VsZWN0RWxlbWVudCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShzZWxlY3RFbGVtZW50Lm9wdGlvbnMpLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgICAgICAgICAgICAgdGV4dDogb3B0aW9uLnRleHQsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXJlT3B0aW9uc0VxdWl2YWxlbnQobmV3T3B0aW9ucykge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZE9yaWdpbmFsT3B0aW9ucyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgIT09ICcnKTtcbiAgICAgICAgY29uc3QgZmlsdGVyZWROZXdPcHRpb25zID0gbmV3T3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlICE9PSAnJyk7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsUGxhY2Vob2xkZXJPcHRpb24gPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gJycpO1xuICAgICAgICBjb25zdCBuZXdQbGFjZWhvbGRlck9wdGlvbiA9IG5ld09wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09ICcnKTtcbiAgICAgICAgaWYgKG9yaWdpbmFsUGxhY2Vob2xkZXJPcHRpb24gJiZcbiAgICAgICAgICAgIG5ld1BsYWNlaG9sZGVyT3B0aW9uICYmXG4gICAgICAgICAgICBvcmlnaW5hbFBsYWNlaG9sZGVyT3B0aW9uLnRleHQgIT09IG5ld1BsYWNlaG9sZGVyT3B0aW9uLnRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVyZWRPcmlnaW5hbE9wdGlvbnMubGVuZ3RoICE9PSBmaWx0ZXJlZE5ld09wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgbm9ybWFsaXplT3B0aW9uID0gKG9wdGlvbikgPT4gYCR7b3B0aW9uLnZhbHVlfS0ke29wdGlvbi50ZXh0fWA7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsT3B0aW9uc1NldCA9IG5ldyBTZXQoZmlsdGVyZWRPcmlnaW5hbE9wdGlvbnMubWFwKG5vcm1hbGl6ZU9wdGlvbikpO1xuICAgICAgICBjb25zdCBuZXdPcHRpb25zU2V0ID0gbmV3IFNldChmaWx0ZXJlZE5ld09wdGlvbnMubWFwKG5vcm1hbGl6ZU9wdGlvbikpO1xuICAgICAgICByZXR1cm4gKG9yaWdpbmFsT3B0aW9uc1NldC5zaXplID09PSBuZXdPcHRpb25zU2V0LnNpemUgJiZcbiAgICAgICAgICAgIFsuLi5vcmlnaW5hbE9wdGlvbnNTZXRdLmV2ZXJ5KChvcHRpb24pID0+IG5ld09wdGlvbnNTZXQuaGFzKG9wdGlvbikpKTtcbiAgICB9XG59XG5fZGVmYXVsdF8xX2luc3RhbmNlcyA9IG5ldyBXZWFrU2V0KCksIF9kZWZhdWx0XzFfZ2V0Q29tbW9uQ29uZmlnID0gZnVuY3Rpb24gX2RlZmF1bHRfMV9nZXRDb21tb25Db25maWcoKSB7XG4gICAgY29uc3QgcGx1Z2lucyA9IHt9O1xuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSAhdGhpcy5zZWxlY3RFbGVtZW50IHx8IHRoaXMuc2VsZWN0RWxlbWVudC5tdWx0aXBsZTtcbiAgICBpZiAoIXRoaXMuZm9ybUVsZW1lbnQuZGlzYWJsZWQgJiYgIWlzTXVsdGlwbGUpIHtcbiAgICAgICAgcGx1Z2lucy5jbGVhcl9idXR0b24gPSB7IHRpdGxlOiAnJyB9O1xuICAgIH1cbiAgICBpZiAoaXNNdWx0aXBsZSkge1xuICAgICAgICBwbHVnaW5zLnJlbW92ZV9idXR0b24gPSB7IHRpdGxlOiAnJyB9O1xuICAgIH1cbiAgICBpZiAodGhpcy51cmxWYWx1ZSkge1xuICAgICAgICBwbHVnaW5zLnZpcnR1YWxfc2Nyb2xsID0ge307XG4gICAgfVxuICAgIGNvbnN0IHJlbmRlciA9IHtcbiAgICAgICAgbm9fcmVzdWx0czogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwibm8tcmVzdWx0c1wiPiR7dGhpcy5ub1Jlc3VsdHNGb3VuZFRleHRWYWx1ZX08L2Rpdj5gO1xuICAgICAgICB9LFxuICAgICAgICBvcHRpb25fY3JlYXRlOiAoZGF0YSwgZXNjYXBlRGF0YSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwiY3JlYXRlXCI+JHt0aGlzLmNyZWF0ZU9wdGlvblRleHRWYWx1ZS5yZXBsYWNlKCclcGxhY2Vob2xkZXIlJywgYDxzdHJvbmc+JHtlc2NhcGVEYXRhKGRhdGEuaW5wdXQpfTwvc3Ryb25nPmApfTwvZGl2PmA7XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICAgIHJlbmRlcixcbiAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgb25JdGVtQWRkOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvbVNlbGVjdC5zZXRUZXh0Ym94VmFsdWUoJycpO1xuICAgICAgICB9LFxuICAgICAgICBjbG9zZUFmdGVyU2VsZWN0OiB0cnVlLFxuICAgICAgICBvbk9wdGlvbkFkZDogKHZhbHVlLCBkYXRhKSA9PiB7XG4gICAgICAgICAgICBsZXQgcGFyZW50RWxlbWVudCA9IHRoaXMudG9tU2VsZWN0LmlucHV0O1xuICAgICAgICAgICAgbGV0IG9wdGdyb3VwRGF0YSA9IG51bGw7XG4gICAgICAgICAgICBjb25zdCBvcHRncm91cCA9IGRhdGFbdGhpcy50b21TZWxlY3Quc2V0dGluZ3Mub3B0Z3JvdXBGaWVsZF07XG4gICAgICAgICAgICBpZiAob3B0Z3JvdXAgJiYgdGhpcy50b21TZWxlY3Qub3B0Z3JvdXBzKSB7XG4gICAgICAgICAgICAgICAgb3B0Z3JvdXBEYXRhID0gdGhpcy50b21TZWxlY3Qub3B0Z3JvdXBzW29wdGdyb3VwXTtcbiAgICAgICAgICAgICAgICBpZiAob3B0Z3JvdXBEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGdyb3VwRWxlbWVudCA9IHBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3Rvcihgb3B0Z3JvdXBbbGFiZWw9XCIke29wdGdyb3VwRGF0YS5sYWJlbH1cIl1gKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGdyb3VwRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50RWxlbWVudCA9IG9wdGdyb3VwRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTtcbiAgICAgICAgICAgIG9wdGlvbkVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIG9wdGlvbkVsZW1lbnQudGV4dCA9IGRhdGFbdGhpcy50b21TZWxlY3Quc2V0dGluZ3MubGFiZWxGaWVsZF07XG4gICAgICAgICAgICBjb25zdCBvcHRpb25PcmRlciA9IGRhdGEuJG9yZGVyO1xuICAgICAgICAgICAgbGV0IG9yZGVyZWRPcHRpb24gPSBudWxsO1xuICAgICAgICAgICAgZm9yIChjb25zdCBbLCB0b21TZWxlY3RPcHRpb25dIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMudG9tU2VsZWN0Lm9wdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRvbVNlbGVjdE9wdGlvbi4kb3JkZXIgPT09IG9wdGlvbk9yZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIG9yZGVyZWRPcHRpb24gPSBwYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYDpzY29wZSA+IG9wdGlvblt2YWx1ZT1cIiR7dG9tU2VsZWN0T3B0aW9uW3RoaXMudG9tU2VsZWN0LnNldHRpbmdzLnZhbHVlRmllbGRdfVwiXWApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3JkZXJlZE9wdGlvbikge1xuICAgICAgICAgICAgICAgIG9yZGVyZWRPcHRpb24uaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCdhZnRlcmVuZCcsIG9wdGlvbkVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAob3B0aW9uT3JkZXIgPj0gMCkge1xuICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuYXBwZW5kKG9wdGlvbkVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyZW50RWxlbWVudC5wcmVwZW5kKG9wdGlvbkVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH07XG4gICAgaWYgKCF0aGlzLnNlbGVjdEVsZW1lbnQgJiYgIXRoaXMudXJsVmFsdWUpIHtcbiAgICAgICAgY29uZmlnLnNob3VsZExvYWQgPSAoKSA9PiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2RlZmF1bHRfMV9pbnN0YW5jZXMsIFwibVwiLCBfZGVmYXVsdF8xX21lcmdlT2JqZWN0cykuY2FsbCh0aGlzLCBjb25maWcsIHRoaXMudG9tU2VsZWN0T3B0aW9uc1ZhbHVlKTtcbn0sIF9kZWZhdWx0XzFfY3JlYXRlQXV0b2NvbXBsZXRlID0gZnVuY3Rpb24gX2RlZmF1bHRfMV9jcmVhdGVBdXRvY29tcGxldGUoKSB7XG4gICAgY29uc3QgY29uZmlnID0gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZGVmYXVsdF8xX2luc3RhbmNlcywgXCJtXCIsIF9kZWZhdWx0XzFfbWVyZ2VPYmplY3RzKS5jYWxsKHRoaXMsIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2RlZmF1bHRfMV9pbnN0YW5jZXMsIFwibVwiLCBfZGVmYXVsdF8xX2dldENvbW1vbkNvbmZpZykuY2FsbCh0aGlzKSwge1xuICAgICAgICBtYXhPcHRpb25zOiB0aGlzLmdldE1heE9wdGlvbnMoKSxcbiAgICB9KTtcbiAgICByZXR1cm4gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZGVmYXVsdF8xX2luc3RhbmNlcywgXCJtXCIsIF9kZWZhdWx0XzFfY3JlYXRlVG9tU2VsZWN0KS5jYWxsKHRoaXMsIGNvbmZpZyk7XG59LCBfZGVmYXVsdF8xX2NyZWF0ZUF1dG9jb21wbGV0ZVdpdGhIdG1sQ29udGVudHMgPSBmdW5jdGlvbiBfZGVmYXVsdF8xX2NyZWF0ZUF1dG9jb21wbGV0ZVdpdGhIdG1sQ29udGVudHMoKSB7XG4gICAgY29uc3QgY29tbW9uQ29uZmlnID0gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZGVmYXVsdF8xX2luc3RhbmNlcywgXCJtXCIsIF9kZWZhdWx0XzFfZ2V0Q29tbW9uQ29uZmlnKS5jYWxsKHRoaXMpO1xuICAgIGNvbnN0IGxhYmVsRmllbGQgPSBjb21tb25Db25maWcubGFiZWxGaWVsZCA/PyAndGV4dCc7XG4gICAgY29uc3QgY29uZmlnID0gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZGVmYXVsdF8xX2luc3RhbmNlcywgXCJtXCIsIF9kZWZhdWx0XzFfbWVyZ2VPYmplY3RzKS5jYWxsKHRoaXMsIGNvbW1vbkNvbmZpZywge1xuICAgICAgICBtYXhPcHRpb25zOiB0aGlzLmdldE1heE9wdGlvbnMoKSxcbiAgICAgICAgc2NvcmU6IChzZWFyY2gpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNjb3JpbmdGdW5jdGlvbiA9IHRoaXMudG9tU2VsZWN0LmdldFNjb3JlRnVuY3Rpb24oc2VhcmNoKTtcbiAgICAgICAgICAgIHJldHVybiAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzY29yaW5nRnVuY3Rpb24oeyAuLi5pdGVtLCB0ZXh0OiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9kZWZhdWx0XzFfaW5zdGFuY2VzLCBcIm1cIiwgX2RlZmF1bHRfMV9zdHJpcFRhZ3MpLmNhbGwodGhpcywgaXRlbVtsYWJlbEZpZWxkXSkgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICByZW5kZXI6IHtcbiAgICAgICAgICAgIGl0ZW06IChpdGVtKSA9PiBgPGRpdj4ke2l0ZW1bbGFiZWxGaWVsZF19PC9kaXY+YCxcbiAgICAgICAgICAgIG9wdGlvbjogKGl0ZW0pID0+IGA8ZGl2PiR7aXRlbVtsYWJlbEZpZWxkXX08L2Rpdj5gLFxuICAgICAgICB9LFxuICAgIH0pO1xuICAgIHJldHVybiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9kZWZhdWx0XzFfaW5zdGFuY2VzLCBcIm1cIiwgX2RlZmF1bHRfMV9jcmVhdGVUb21TZWxlY3QpLmNhbGwodGhpcywgY29uZmlnKTtcbn0sIF9kZWZhdWx0XzFfY3JlYXRlQXV0b2NvbXBsZXRlV2l0aFJlbW90ZURhdGEgPSBmdW5jdGlvbiBfZGVmYXVsdF8xX2NyZWF0ZUF1dG9jb21wbGV0ZVdpdGhSZW1vdGVEYXRhKGF1dG9jb21wbGV0ZUVuZHBvaW50VXJsLCBtaW5DaGFyYWN0ZXJMZW5ndGgpIHtcbiAgICBjb25zdCBjb21tb25Db25maWcgPSBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9kZWZhdWx0XzFfaW5zdGFuY2VzLCBcIm1cIiwgX2RlZmF1bHRfMV9nZXRDb21tb25Db25maWcpLmNhbGwodGhpcyk7XG4gICAgY29uc3QgbGFiZWxGaWVsZCA9IGNvbW1vbkNvbmZpZy5sYWJlbEZpZWxkID8/ICd0ZXh0JztcbiAgICBjb25zdCBjb25maWcgPSBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9kZWZhdWx0XzFfaW5zdGFuY2VzLCBcIm1cIiwgX2RlZmF1bHRfMV9tZXJnZU9iamVjdHMpLmNhbGwodGhpcywgY29tbW9uQ29uZmlnLCB7XG4gICAgICAgIGZpcnN0VXJsOiAocXVlcnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IGF1dG9jb21wbGV0ZUVuZHBvaW50VXJsLmluY2x1ZGVzKCc/JykgPyAnJicgOiAnPyc7XG4gICAgICAgICAgICByZXR1cm4gYCR7YXV0b2NvbXBsZXRlRW5kcG9pbnRVcmx9JHtzZXBhcmF0b3J9cXVlcnk9JHtlbmNvZGVVUklDb21wb25lbnQocXVlcnkpfWA7XG4gICAgICAgIH0sXG4gICAgICAgIGxvYWQ6IGZ1bmN0aW9uIChxdWVyeSwgY2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0VXJsKHF1ZXJ5KTtcbiAgICAgICAgICAgIGZldGNoKHVybClcbiAgICAgICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgICAgICAgICAgICAudGhlbigoanNvbikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0TmV4dFVybChxdWVyeSwganNvbi5uZXh0X3BhZ2UpO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGpzb24ucmVzdWx0cy5vcHRpb25zIHx8IGpzb24ucmVzdWx0cywganNvbi5yZXN1bHRzLm9wdGdyb3VwcyB8fCBbXSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiBjYWxsYmFjayhbXSwgW10pKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2hvdWxkTG9hZDogKHF1ZXJ5KSA9PiB7XG4gICAgICAgICAgICBpZiAobnVsbCAhPT0gbWluQ2hhcmFjdGVyTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5Lmxlbmd0aCA+PSBtaW5DaGFyYWN0ZXJMZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5oYXNMb2FkZWRDaG9pY2VzUHJldmlvdXNseSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHF1ZXJ5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhc0xvYWRlZENob2ljZXNQcmV2aW91c2x5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBxdWVyeS5sZW5ndGggPj0gMztcbiAgICAgICAgfSxcbiAgICAgICAgb3B0Z3JvdXBGaWVsZDogJ2dyb3VwX2J5JyxcbiAgICAgICAgc2NvcmU6IChzZWFyY2gpID0+IChpdGVtKSA9PiAxLFxuICAgICAgICByZW5kZXI6IHtcbiAgICAgICAgICAgIG9wdGlvbjogKGl0ZW0pID0+IGA8ZGl2PiR7aXRlbVtsYWJlbEZpZWxkXX08L2Rpdj5gLFxuICAgICAgICAgICAgaXRlbTogKGl0ZW0pID0+IGA8ZGl2PiR7aXRlbVtsYWJlbEZpZWxkXX08L2Rpdj5gLFxuICAgICAgICAgICAgbG9hZGluZ19tb3JlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwibG9hZGluZy1tb3JlLXJlc3VsdHNcIj4ke3RoaXMubG9hZGluZ01vcmVUZXh0VmFsdWV9PC9kaXY+YDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBub19tb3JlX3Jlc3VsdHM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJuby1tb3JlLXJlc3VsdHNcIj4ke3RoaXMubm9Nb3JlUmVzdWx0c1RleHRWYWx1ZX08L2Rpdj5gO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5vX3Jlc3VsdHM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJuby1yZXN1bHRzXCI+JHt0aGlzLm5vUmVzdWx0c0ZvdW5kVGV4dFZhbHVlfTwvZGl2PmA7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3B0aW9uX2NyZWF0ZTogKGRhdGEsIGVzY2FwZURhdGEpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJjcmVhdGVcIj4ke3RoaXMuY3JlYXRlT3B0aW9uVGV4dFZhbHVlLnJlcGxhY2UoJyVwbGFjZWhvbGRlciUnLCBgPHN0cm9uZz4ke2VzY2FwZURhdGEoZGF0YS5pbnB1dCl9PC9zdHJvbmc+YCl9PC9kaXY+YDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHByZWxvYWQ6IHRoaXMucHJlbG9hZCxcbiAgICB9KTtcbiAgICByZXR1cm4gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZGVmYXVsdF8xX2luc3RhbmNlcywgXCJtXCIsIF9kZWZhdWx0XzFfY3JlYXRlVG9tU2VsZWN0KS5jYWxsKHRoaXMsIGNvbmZpZyk7XG59LCBfZGVmYXVsdF8xX3N0cmlwVGFncyA9IGZ1bmN0aW9uIF9kZWZhdWx0XzFfc3RyaXBUYWdzKHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvKDwoW14+XSspPikvZ2ksICcnKTtcbn0sIF9kZWZhdWx0XzFfbWVyZ2VPYmplY3RzID0gZnVuY3Rpb24gX2RlZmF1bHRfMV9tZXJnZU9iamVjdHMob2JqZWN0MSwgb2JqZWN0Mikge1xuICAgIHJldHVybiB7IC4uLm9iamVjdDEsIC4uLm9iamVjdDIgfTtcbn0sIF9kZWZhdWx0XzFfY3JlYXRlVG9tU2VsZWN0ID0gZnVuY3Rpb24gX2RlZmF1bHRfMV9jcmVhdGVUb21TZWxlY3Qob3B0aW9ucykge1xuICAgIGNvbnN0IHByZUNvbm5lY3RQYXlsb2FkID0geyBvcHRpb25zIH07XG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KCdwcmUtY29ubmVjdCcsIHByZUNvbm5lY3RQYXlsb2FkKTtcbiAgICBjb25zdCB0b21TZWxlY3QgPSBuZXcgVG9tU2VsZWN0KHRoaXMuZm9ybUVsZW1lbnQsIG9wdGlvbnMpO1xuICAgIGNvbnN0IGNvbm5lY3RQYXlsb2FkID0geyB0b21TZWxlY3QsIG9wdGlvbnMgfTtcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQoJ2Nvbm5lY3QnLCBjb25uZWN0UGF5bG9hZCk7XG4gICAgcmV0dXJuIHRvbVNlbGVjdDtcbn07XG5kZWZhdWx0XzEudmFsdWVzID0ge1xuICAgIHVybDogU3RyaW5nLFxuICAgIG9wdGlvbnNBc0h0bWw6IEJvb2xlYW4sXG4gICAgbG9hZGluZ01vcmVUZXh0OiBTdHJpbmcsXG4gICAgbm9SZXN1bHRzRm91bmRUZXh0OiBTdHJpbmcsXG4gICAgbm9Nb3JlUmVzdWx0c1RleHQ6IFN0cmluZyxcbiAgICBjcmVhdGVPcHRpb25UZXh0OiBTdHJpbmcsXG4gICAgbWluQ2hhcmFjdGVyczogTnVtYmVyLFxuICAgIHRvbVNlbGVjdE9wdGlvbnM6IE9iamVjdCxcbiAgICBwcmVsb2FkOiBTdHJpbmcsXG59O1xuXG5leHBvcnQgeyBkZWZhdWx0XzEgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IHsgQ29udHJvbGxlciB9IGZyb20gJ0Bob3R3aXJlZC9zdGltdWx1cyc7XG5cbmNsYXNzIEJhY2tlbmRSZXF1ZXN0IHtcbiAgICBjb25zdHJ1Y3Rvcihwcm9taXNlLCBhY3Rpb25zLCB1cGRhdGVNb2RlbHMpIHtcbiAgICAgICAgdGhpcy5pc1Jlc29sdmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gICAgICAgIHRoaXMucHJvbWlzZS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc1Jlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnM7XG4gICAgICAgIHRoaXMudXBkYXRlZE1vZGVscyA9IHVwZGF0ZU1vZGVscztcbiAgICB9XG4gICAgY29udGFpbnNPbmVPZkFjdGlvbnModGFyZ2V0ZWRBY3Rpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+IHRhcmdldGVkQWN0aW9ucy5pbmNsdWRlcyhhY3Rpb24pKS5sZW5ndGggPiAwO1xuICAgIH1cbiAgICBhcmVBbnlNb2RlbHNVcGRhdGVkKHRhcmdldGVkTW9kZWxzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZWRNb2RlbHMuZmlsdGVyKChtb2RlbCkgPT4gdGFyZ2V0ZWRNb2RlbHMuaW5jbHVkZXMobW9kZWwpKS5sZW5ndGggPiAwO1xuICAgIH1cbn1cblxuY2xhc3MgUmVxdWVzdEJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKHVybCwgbWV0aG9kID0gJ3Bvc3QnKSB7XG4gICAgICAgIHRoaXMudXJsID0gdXJsO1xuICAgICAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZDtcbiAgICB9XG4gICAgYnVpbGRSZXF1ZXN0KHByb3BzLCBhY3Rpb25zLCB1cGRhdGVkLCBjaGlsZHJlbiwgdXBkYXRlZFByb3BzRnJvbVBhcmVudCwgZmlsZXMpIHtcbiAgICAgICAgY29uc3Qgc3BsaXRVcmwgPSB0aGlzLnVybC5zcGxpdCgnPycpO1xuICAgICAgICBsZXQgW3VybF0gPSBzcGxpdFVybDtcbiAgICAgICAgY29uc3QgWywgcXVlcnlTdHJpbmddID0gc3BsaXRVcmw7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcgfHwgJycpO1xuICAgICAgICBjb25zdCBmZXRjaE9wdGlvbnMgPSB7fTtcbiAgICAgICAgZmV0Y2hPcHRpb25zLmhlYWRlcnMgPSB7XG4gICAgICAgICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi92bmQubGl2ZS1jb21wb25lbnQraHRtbCcsXG4gICAgICAgICAgICAnWC1SZXF1ZXN0ZWQtV2l0aCc6ICdYTUxIdHRwUmVxdWVzdCcsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHRvdGFsRmlsZXMgPSBPYmplY3QuZW50cmllcyhmaWxlcykucmVkdWNlKCh0b3RhbCwgY3VycmVudCkgPT4gdG90YWwgKyBjdXJyZW50Lmxlbmd0aCwgMCk7XG4gICAgICAgIGNvbnN0IGhhc0ZpbmdlcnByaW50cyA9IE9iamVjdC5rZXlzKGNoaWxkcmVuKS5sZW5ndGggPiAwO1xuICAgICAgICBpZiAoYWN0aW9ucy5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIHRvdGFsRmlsZXMgPT09IDAgJiZcbiAgICAgICAgICAgIHRoaXMubWV0aG9kID09PSAnZ2V0JyAmJlxuICAgICAgICAgICAgdGhpcy53aWxsRGF0YUZpdEluVXJsKEpTT04uc3RyaW5naWZ5KHByb3BzKSwgSlNPTi5zdHJpbmdpZnkodXBkYXRlZCksIHBhcmFtcywgSlNPTi5zdHJpbmdpZnkoY2hpbGRyZW4pLCBKU09OLnN0cmluZ2lmeSh1cGRhdGVkUHJvcHNGcm9tUGFyZW50KSkpIHtcbiAgICAgICAgICAgIHBhcmFtcy5zZXQoJ3Byb3BzJywgSlNPTi5zdHJpbmdpZnkocHJvcHMpKTtcbiAgICAgICAgICAgIHBhcmFtcy5zZXQoJ3VwZGF0ZWQnLCBKU09OLnN0cmluZ2lmeSh1cGRhdGVkKSk7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LmtleXModXBkYXRlZFByb3BzRnJvbVBhcmVudCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5zZXQoJ3Byb3BzRnJvbVBhcmVudCcsIEpTT04uc3RyaW5naWZ5KHVwZGF0ZWRQcm9wc0Zyb21QYXJlbnQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChoYXNGaW5nZXJwcmludHMpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuc2V0KCdjaGlsZHJlbicsIEpTT04uc3RyaW5naWZ5KGNoaWxkcmVuKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmZXRjaE9wdGlvbnMubWV0aG9kID0gJ0dFVCc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmZXRjaE9wdGlvbnMubWV0aG9kID0gJ1BPU1QnO1xuICAgICAgICAgICAgY29uc3QgcmVxdWVzdERhdGEgPSB7IHByb3BzLCB1cGRhdGVkIH07XG4gICAgICAgICAgICBpZiAoT2JqZWN0LmtleXModXBkYXRlZFByb3BzRnJvbVBhcmVudCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJlcXVlc3REYXRhLnByb3BzRnJvbVBhcmVudCA9IHVwZGF0ZWRQcm9wc0Zyb21QYXJlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaGFzRmluZ2VycHJpbnRzKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdERhdGEuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aW9ucy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdERhdGEuYXJncyA9IGFjdGlvbnNbMF0uYXJncztcbiAgICAgICAgICAgICAgICAgICAgdXJsICs9IGAvJHtlbmNvZGVVUklDb21wb25lbnQoYWN0aW9uc1swXS5uYW1lKX1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsICs9ICcvX2JhdGNoJztcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdERhdGEuYWN0aW9ucyA9IGFjdGlvbnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZGF0YScsIEpTT04uc3RyaW5naWZ5KHJlcXVlc3REYXRhKSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhmaWxlcykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5LCB2YWx1ZVtpXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmV0Y2hPcHRpb25zLmJvZHkgPSBmb3JtRGF0YTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJhbXNTdHJpbmcgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHVybDogYCR7dXJsfSR7cGFyYW1zU3RyaW5nLmxlbmd0aCA+IDAgPyBgPyR7cGFyYW1zU3RyaW5nfWAgOiAnJ31gLFxuICAgICAgICAgICAgZmV0Y2hPcHRpb25zLFxuICAgICAgICB9O1xuICAgIH1cbiAgICB3aWxsRGF0YUZpdEluVXJsKHByb3BzSnNvbiwgdXBkYXRlZEpzb24sIHBhcmFtcywgY2hpbGRyZW5Kc29uLCBwcm9wc0Zyb21QYXJlbnRKc29uKSB7XG4gICAgICAgIGNvbnN0IHVybEVuY29kZWRKc29uRGF0YSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocHJvcHNKc29uICsgdXBkYXRlZEpzb24gKyBjaGlsZHJlbkpzb24gKyBwcm9wc0Zyb21QYXJlbnRKc29uKS50b1N0cmluZygpO1xuICAgICAgICByZXR1cm4gKHVybEVuY29kZWRKc29uRGF0YSArIHBhcmFtcy50b1N0cmluZygpKS5sZW5ndGggPCAxNTAwO1xuICAgIH1cbn1cblxuY2xhc3MgQmFja2VuZCB7XG4gICAgY29uc3RydWN0b3IodXJsLCBtZXRob2QgPSAncG9zdCcpIHtcbiAgICAgICAgdGhpcy5yZXF1ZXN0QnVpbGRlciA9IG5ldyBSZXF1ZXN0QnVpbGRlcih1cmwsIG1ldGhvZCk7XG4gICAgfVxuICAgIG1ha2VSZXF1ZXN0KHByb3BzLCBhY3Rpb25zLCB1cGRhdGVkLCBjaGlsZHJlbiwgdXBkYXRlZFByb3BzRnJvbVBhcmVudCwgZmlsZXMpIHtcbiAgICAgICAgY29uc3QgeyB1cmwsIGZldGNoT3B0aW9ucyB9ID0gdGhpcy5yZXF1ZXN0QnVpbGRlci5idWlsZFJlcXVlc3QocHJvcHMsIGFjdGlvbnMsIHVwZGF0ZWQsIGNoaWxkcmVuLCB1cGRhdGVkUHJvcHNGcm9tUGFyZW50LCBmaWxlcyk7XG4gICAgICAgIHJldHVybiBuZXcgQmFja2VuZFJlcXVlc3QoZmV0Y2godXJsLCBmZXRjaE9wdGlvbnMpLCBhY3Rpb25zLm1hcCgoYmFja2VuZEFjdGlvbikgPT4gYmFja2VuZEFjdGlvbi5uYW1lKSwgT2JqZWN0LmtleXModXBkYXRlZCkpO1xuICAgIH1cbn1cblxuY2xhc3MgQmFja2VuZFJlc3BvbnNlIHtcbiAgICBjb25zdHJ1Y3RvcihyZXNwb25zZSkge1xuICAgICAgICB0aGlzLnJlc3BvbnNlID0gcmVzcG9uc2U7XG4gICAgfVxuICAgIGFzeW5jIGdldEJvZHkoKSB7XG4gICAgICAgIGlmICghdGhpcy5ib2R5KSB7XG4gICAgICAgICAgICB0aGlzLmJvZHkgPSBhd2FpdCB0aGlzLnJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ib2R5O1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0RWxlbWVudEFzVGFnVGV4dChlbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuaW5uZXJIVE1MXG4gICAgICAgID8gZWxlbWVudC5vdXRlckhUTUwuc2xpY2UoMCwgZWxlbWVudC5vdXRlckhUTUwuaW5kZXhPZihlbGVtZW50LmlubmVySFRNTCkpXG4gICAgICAgIDogZWxlbWVudC5vdXRlckhUTUw7XG59XG5cbmxldCBjb21wb25lbnRNYXBCeUVsZW1lbnQgPSBuZXcgV2Vha01hcCgpO1xubGV0IGNvbXBvbmVudE1hcEJ5Q29tcG9uZW50ID0gbmV3IE1hcCgpO1xuY29uc3QgcmVnaXN0ZXJDb21wb25lbnQgPSAoY29tcG9uZW50KSA9PiB7XG4gICAgY29tcG9uZW50TWFwQnlFbGVtZW50LnNldChjb21wb25lbnQuZWxlbWVudCwgY29tcG9uZW50KTtcbiAgICBjb21wb25lbnRNYXBCeUNvbXBvbmVudC5zZXQoY29tcG9uZW50LCBjb21wb25lbnQubmFtZSk7XG59O1xuY29uc3QgdW5yZWdpc3RlckNvbXBvbmVudCA9IChjb21wb25lbnQpID0+IHtcbiAgICBjb21wb25lbnRNYXBCeUVsZW1lbnQuZGVsZXRlKGNvbXBvbmVudC5lbGVtZW50KTtcbiAgICBjb21wb25lbnRNYXBCeUNvbXBvbmVudC5kZWxldGUoY29tcG9uZW50KTtcbn07XG5jb25zdCBnZXRDb21wb25lbnQgPSAoZWxlbWVudCkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgY29uc3QgbWF4Q291bnQgPSAxMDtcbiAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gY29tcG9uZW50TWFwQnlFbGVtZW50LmdldChlbGVtZW50KTtcbiAgICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgICAgICAgICByZXNvbHZlKGNvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgY291bnQrKztcbiAgICAgICAgaWYgKGNvdW50ID4gbWF4Q291bnQpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgQ29tcG9uZW50IG5vdCBmb3VuZCBmb3IgZWxlbWVudCAke2dldEVsZW1lbnRBc1RhZ1RleHQoZWxlbWVudCl9YCkpO1xuICAgICAgICB9XG4gICAgfSwgNSk7XG59KTtcbmNvbnN0IGZpbmRDb21wb25lbnRzID0gKGN1cnJlbnRDb21wb25lbnQsIG9ubHlQYXJlbnRzLCBvbmx5TWF0Y2hOYW1lKSA9PiB7XG4gICAgY29uc3QgY29tcG9uZW50cyA9IFtdO1xuICAgIGNvbXBvbmVudE1hcEJ5Q29tcG9uZW50LmZvckVhY2goKGNvbXBvbmVudE5hbWUsIGNvbXBvbmVudCkgPT4ge1xuICAgICAgICBpZiAob25seVBhcmVudHMgJiYgKGN1cnJlbnRDb21wb25lbnQgPT09IGNvbXBvbmVudCB8fCAhY29tcG9uZW50LmVsZW1lbnQuY29udGFpbnMoY3VycmVudENvbXBvbmVudC5lbGVtZW50KSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAob25seU1hdGNoTmFtZSAmJiBjb21wb25lbnROYW1lICE9PSBvbmx5TWF0Y2hOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbXBvbmVudHM7XG59O1xuY29uc3QgZmluZENoaWxkcmVuID0gKGN1cnJlbnRDb21wb25lbnQpID0+IHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IFtdO1xuICAgIGNvbXBvbmVudE1hcEJ5Q29tcG9uZW50LmZvckVhY2goKGNvbXBvbmVudE5hbWUsIGNvbXBvbmVudCkgPT4ge1xuICAgICAgICBpZiAoY3VycmVudENvbXBvbmVudCA9PT0gY29tcG9uZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjdXJyZW50Q29tcG9uZW50LmVsZW1lbnQuY29udGFpbnMoY29tcG9uZW50LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGZvdW5kQ2hpbGRDb21wb25lbnQgPSBmYWxzZTtcbiAgICAgICAgY29tcG9uZW50TWFwQnlDb21wb25lbnQuZm9yRWFjaCgoY2hpbGRDb21wb25lbnROYW1lLCBjaGlsZENvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGZvdW5kQ2hpbGRDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hpbGRDb21wb25lbnQgPT09IGNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaGlsZENvbXBvbmVudC5lbGVtZW50LmNvbnRhaW5zKGNvbXBvbmVudC5lbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGZvdW5kQ2hpbGRDb21wb25lbnQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChjb21wb25lbnQpO1xuICAgIH0pO1xuICAgIHJldHVybiBjaGlsZHJlbjtcbn07XG5jb25zdCBmaW5kUGFyZW50ID0gKGN1cnJlbnRDb21wb25lbnQpID0+IHtcbiAgICBsZXQgcGFyZW50RWxlbWVudCA9IGN1cnJlbnRDb21wb25lbnQuZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIHdoaWxlIChwYXJlbnRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGNvbXBvbmVudE1hcEJ5RWxlbWVudC5nZXQocGFyZW50RWxlbWVudCk7XG4gICAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBjb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcGFyZW50RWxlbWVudCA9IHBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG5jbGFzcyBIb29rTWFuYWdlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuaG9va3MgPSBuZXcgTWFwKCk7XG4gICAgfVxuICAgIHJlZ2lzdGVyKGhvb2tOYW1lLCBjYWxsYmFjaykge1xuICAgICAgICBjb25zdCBob29rcyA9IHRoaXMuaG9va3MuZ2V0KGhvb2tOYW1lKSB8fCBbXTtcbiAgICAgICAgaG9va3MucHVzaChjYWxsYmFjayk7XG4gICAgICAgIHRoaXMuaG9va3Muc2V0KGhvb2tOYW1lLCBob29rcyk7XG4gICAgfVxuICAgIHVucmVnaXN0ZXIoaG9va05hbWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIGNvbnN0IGhvb2tzID0gdGhpcy5ob29rcy5nZXQoaG9va05hbWUpIHx8IFtdO1xuICAgICAgICBjb25zdCBpbmRleCA9IGhvb2tzLmluZGV4T2YoY2FsbGJhY2spO1xuICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaG9va3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5ob29rcy5zZXQoaG9va05hbWUsIGhvb2tzKTtcbiAgICB9XG4gICAgdHJpZ2dlckhvb2soaG9va05hbWUsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgaG9va3MgPSB0aGlzLmhvb2tzLmdldChob29rTmFtZSkgfHwgW107XG4gICAgICAgIGhvb2tzLmZvckVhY2goKGNhbGxiYWNrKSA9PiBjYWxsYmFjayguLi5hcmdzKSk7XG4gICAgfVxufVxuXG5jbGFzcyBDaGFuZ2luZ0l0ZW1zVHJhY2tlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlZEl0ZW1zID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLnJlbW92ZWRJdGVtcyA9IG5ldyBNYXAoKTtcbiAgICB9XG4gICAgc2V0SXRlbShpdGVtTmFtZSwgbmV3VmFsdWUsIHByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMucmVtb3ZlZEl0ZW1zLmhhcyhpdGVtTmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbW92ZWRSZWNvcmQgPSB0aGlzLnJlbW92ZWRJdGVtcy5nZXQoaXRlbU5hbWUpO1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVkSXRlbXMuZGVsZXRlKGl0ZW1OYW1lKTtcbiAgICAgICAgICAgIGlmIChyZW1vdmVkUmVjb3JkLm9yaWdpbmFsID09PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jaGFuZ2VkSXRlbXMuaGFzKGl0ZW1OYW1lKSkge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxSZWNvcmQgPSB0aGlzLmNoYW5nZWRJdGVtcy5nZXQoaXRlbU5hbWUpO1xuICAgICAgICAgICAgaWYgKG9yaWdpbmFsUmVjb3JkLm9yaWdpbmFsID09PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZEl0ZW1zLmRlbGV0ZShpdGVtTmFtZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkSXRlbXMuc2V0KGl0ZW1OYW1lLCB7IG9yaWdpbmFsOiBvcmlnaW5hbFJlY29yZC5vcmlnaW5hbCwgbmV3OiBuZXdWYWx1ZSB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoYW5nZWRJdGVtcy5zZXQoaXRlbU5hbWUsIHsgb3JpZ2luYWw6IHByZXZpb3VzVmFsdWUsIG5ldzogbmV3VmFsdWUgfSk7XG4gICAgfVxuICAgIHJlbW92ZUl0ZW0oaXRlbU5hbWUsIGN1cnJlbnRWYWx1ZSkge1xuICAgICAgICBsZXQgdHJ1ZU9yaWdpbmFsVmFsdWUgPSBjdXJyZW50VmFsdWU7XG4gICAgICAgIGlmICh0aGlzLmNoYW5nZWRJdGVtcy5oYXMoaXRlbU5hbWUpKSB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbFJlY29yZCA9IHRoaXMuY2hhbmdlZEl0ZW1zLmdldChpdGVtTmFtZSk7XG4gICAgICAgICAgICB0cnVlT3JpZ2luYWxWYWx1ZSA9IG9yaWdpbmFsUmVjb3JkLm9yaWdpbmFsO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkSXRlbXMuZGVsZXRlKGl0ZW1OYW1lKTtcbiAgICAgICAgICAgIGlmICh0cnVlT3JpZ2luYWxWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMucmVtb3ZlZEl0ZW1zLmhhcyhpdGVtTmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlZEl0ZW1zLnNldChpdGVtTmFtZSwgeyBvcmlnaW5hbDogdHJ1ZU9yaWdpbmFsVmFsdWUgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0Q2hhbmdlZEl0ZW1zKCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmNoYW5nZWRJdGVtcywgKFtuYW1lLCB7IG5ldzogdmFsdWUgfV0pID0+ICh7IG5hbWUsIHZhbHVlIH0pKTtcbiAgICB9XG4gICAgZ2V0UmVtb3ZlZEl0ZW1zKCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnJlbW92ZWRJdGVtcy5rZXlzKCkpO1xuICAgIH1cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGFuZ2VkSXRlbXMuc2l6ZSA9PT0gMCAmJiB0aGlzLnJlbW92ZWRJdGVtcy5zaXplID09PSAwO1xuICAgIH1cbn1cblxuY2xhc3MgRWxlbWVudENoYW5nZXMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmFkZGVkQ2xhc3NlcyA9IG5ldyBTZXQoKTtcbiAgICAgICAgdGhpcy5yZW1vdmVkQ2xhc3NlcyA9IG5ldyBTZXQoKTtcbiAgICAgICAgdGhpcy5zdHlsZUNoYW5nZXMgPSBuZXcgQ2hhbmdpbmdJdGVtc1RyYWNrZXIoKTtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVDaGFuZ2VzID0gbmV3IENoYW5naW5nSXRlbXNUcmFja2VyKCk7XG4gICAgfVxuICAgIGFkZENsYXNzKGNsYXNzTmFtZSkge1xuICAgICAgICBpZiAoIXRoaXMucmVtb3ZlZENsYXNzZXMuZGVsZXRlKGNsYXNzTmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkZWRDbGFzc2VzLmFkZChjbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJlbW92ZUNsYXNzKGNsYXNzTmFtZSkge1xuICAgICAgICBpZiAoIXRoaXMuYWRkZWRDbGFzc2VzLmRlbGV0ZShjbGFzc05hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZWRDbGFzc2VzLmFkZChjbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFkZFN0eWxlKHN0eWxlTmFtZSwgbmV3VmFsdWUsIG9yaWdpbmFsVmFsdWUpIHtcbiAgICAgICAgdGhpcy5zdHlsZUNoYW5nZXMuc2V0SXRlbShzdHlsZU5hbWUsIG5ld1ZhbHVlLCBvcmlnaW5hbFZhbHVlKTtcbiAgICB9XG4gICAgcmVtb3ZlU3R5bGUoc3R5bGVOYW1lLCBvcmlnaW5hbFZhbHVlKSB7XG4gICAgICAgIHRoaXMuc3R5bGVDaGFuZ2VzLnJlbW92ZUl0ZW0oc3R5bGVOYW1lLCBvcmlnaW5hbFZhbHVlKTtcbiAgICB9XG4gICAgYWRkQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG5ld1ZhbHVlLCBvcmlnaW5hbFZhbHVlKSB7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlQ2hhbmdlcy5zZXRJdGVtKGF0dHJpYnV0ZU5hbWUsIG5ld1ZhbHVlLCBvcmlnaW5hbFZhbHVlKTtcbiAgICB9XG4gICAgcmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG9yaWdpbmFsVmFsdWUpIHtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVDaGFuZ2VzLnJlbW92ZUl0ZW0oYXR0cmlidXRlTmFtZSwgb3JpZ2luYWxWYWx1ZSk7XG4gICAgfVxuICAgIGdldEFkZGVkQ2xhc3NlcygpIHtcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzLmFkZGVkQ2xhc3Nlc107XG4gICAgfVxuICAgIGdldFJlbW92ZWRDbGFzc2VzKCkge1xuICAgICAgICByZXR1cm4gWy4uLnRoaXMucmVtb3ZlZENsYXNzZXNdO1xuICAgIH1cbiAgICBnZXRDaGFuZ2VkU3R5bGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdHlsZUNoYW5nZXMuZ2V0Q2hhbmdlZEl0ZW1zKCk7XG4gICAgfVxuICAgIGdldFJlbW92ZWRTdHlsZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0eWxlQ2hhbmdlcy5nZXRSZW1vdmVkSXRlbXMoKTtcbiAgICB9XG4gICAgZ2V0Q2hhbmdlZEF0dHJpYnV0ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZUNoYW5nZXMuZ2V0Q2hhbmdlZEl0ZW1zKCk7XG4gICAgfVxuICAgIGdldFJlbW92ZWRBdHRyaWJ1dGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVDaGFuZ2VzLmdldFJlbW92ZWRJdGVtcygpO1xuICAgIH1cbiAgICBhcHBseVRvRWxlbWVudChlbGVtZW50KSB7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCguLi50aGlzLmFkZGVkQ2xhc3Nlcyk7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSguLi50aGlzLnJlbW92ZWRDbGFzc2VzKTtcbiAgICAgICAgdGhpcy5zdHlsZUNoYW5nZXMuZ2V0Q2hhbmdlZEl0ZW1zKCkuZm9yRWFjaCgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGNoYW5nZS5uYW1lLCBjaGFuZ2UudmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdHlsZUNoYW5nZXMuZ2V0UmVtb3ZlZEl0ZW1zKCkuZm9yRWFjaCgoc3R5bGVOYW1lKSA9PiB7XG4gICAgICAgICAgICBlbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KHN0eWxlTmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZUNoYW5nZXMuZ2V0Q2hhbmdlZEl0ZW1zKCkuZm9yRWFjaCgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShjaGFuZ2UubmFtZSwgY2hhbmdlLnZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlQ2hhbmdlcy5nZXRSZW1vdmVkSXRlbXMoKS5mb3JFYWNoKChhdHRyaWJ1dGVOYW1lKSA9PiB7XG4gICAgICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlzRW1wdHkoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5hZGRlZENsYXNzZXMuc2l6ZSA9PT0gMCAmJlxuICAgICAgICAgICAgdGhpcy5yZW1vdmVkQ2xhc3Nlcy5zaXplID09PSAwICYmXG4gICAgICAgICAgICB0aGlzLnN0eWxlQ2hhbmdlcy5pc0VtcHR5KCkgJiZcbiAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlQ2hhbmdlcy5pc0VtcHR5KCkpO1xuICAgIH1cbn1cblxuY2xhc3MgRXh0ZXJuYWxNdXRhdGlvblRyYWNrZXIge1xuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIHNob3VsZFRyYWNrQ2hhbmdlQ2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VkRWxlbWVudHMgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICB0aGlzLmNoYW5nZWRFbGVtZW50c0NvdW50ID0gMDtcbiAgICAgICAgdGhpcy5hZGRlZEVsZW1lbnRzID0gW107XG4gICAgICAgIHRoaXMucmVtb3ZlZEVsZW1lbnRzID0gW107XG4gICAgICAgIHRoaXMuaXNTdGFydGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIHRoaXMuc2hvdWxkVHJhY2tDaGFuZ2VDYWxsYmFjayA9IHNob3VsZFRyYWNrQ2hhbmdlQ2FsbGJhY2s7XG4gICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHRoaXMub25NdXRhdGlvbnMuYmluZCh0aGlzKSk7XG4gICAgfVxuICAgIHN0YXJ0KCkge1xuICAgICAgICBpZiAodGhpcy5pc1N0YXJ0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsZW1lbnQsIHtcbiAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgICAgICAgYXR0cmlidXRlT2xkVmFsdWU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmlzU3RhcnRlZCA9IHRydWU7XG4gICAgfVxuICAgIHN0b3AoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RhcnRlZCkge1xuICAgICAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgIHRoaXMuaXNTdGFydGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0Q2hhbmdlZEVsZW1lbnQoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGFuZ2VkRWxlbWVudHMuaGFzKGVsZW1lbnQpID8gdGhpcy5jaGFuZ2VkRWxlbWVudHMuZ2V0KGVsZW1lbnQpIDogbnVsbDtcbiAgICB9XG4gICAgZ2V0QWRkZWRFbGVtZW50cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkZWRFbGVtZW50cztcbiAgICB9XG4gICAgd2FzRWxlbWVudEFkZGVkKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkZWRFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KTtcbiAgICB9XG4gICAgaGFuZGxlUGVuZGluZ0NoYW5nZXMoKSB7XG4gICAgICAgIHRoaXMub25NdXRhdGlvbnModGhpcy5tdXRhdGlvbk9ic2VydmVyLnRha2VSZWNvcmRzKCkpO1xuICAgIH1cbiAgICBvbk11dGF0aW9ucyhtdXRhdGlvbnMpIHtcbiAgICAgICAgY29uc3QgaGFuZGxlZEF0dHJpYnV0ZU11dGF0aW9ucyA9IG5ldyBXZWFrTWFwKCk7XG4gICAgICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gbXV0YXRpb24udGFyZ2V0O1xuICAgICAgICAgICAgaWYgKCF0aGlzLnNob3VsZFRyYWNrQ2hhbmdlQ2FsbGJhY2soZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmlzRWxlbWVudEFkZGVkQnlUcmFuc2xhdGlvbihlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGlzQ2hhbmdlSW5BZGRlZEVsZW1lbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgYWRkZWRFbGVtZW50IG9mIHRoaXMuYWRkZWRFbGVtZW50cykge1xuICAgICAgICAgICAgICAgIGlmIChhZGRlZEVsZW1lbnQuY29udGFpbnMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNDaGFuZ2VJbkFkZGVkRWxlbWVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0NoYW5nZUluQWRkZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzd2l0Y2ggKG11dGF0aW9uLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjaGlsZExpc3QnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUNoaWxkTGlzdE11dGF0aW9uKG11dGF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnYXR0cmlidXRlcyc6XG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFuZGxlZEF0dHJpYnV0ZU11dGF0aW9ucy5oYXMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZWRBdHRyaWJ1dGVNdXRhdGlvbnMuc2V0KGVsZW1lbnQsIFtdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhbmRsZWRBdHRyaWJ1dGVNdXRhdGlvbnMuZ2V0KGVsZW1lbnQpLmluY2x1ZGVzKG11dGF0aW9uLmF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUF0dHJpYnV0ZU11dGF0aW9uKG11dGF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZWRBdHRyaWJ1dGVNdXRhdGlvbnMuc2V0KGVsZW1lbnQsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5oYW5kbGVkQXR0cmlidXRlTXV0YXRpb25zLmdldChlbGVtZW50KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaGFuZGxlQ2hpbGRMaXN0TXV0YXRpb24obXV0YXRpb24pIHtcbiAgICAgICAgbXV0YXRpb24uYWRkZWROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIShub2RlIGluc3RhbmNlb2YgRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5yZW1vdmVkRWxlbWVudHMuaW5jbHVkZXMobm9kZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZWRFbGVtZW50cy5zcGxpY2UodGhpcy5yZW1vdmVkRWxlbWVudHMuaW5kZXhPZihub2RlKSwgMSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNFbGVtZW50QWRkZWRCeVRyYW5zbGF0aW9uKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hZGRlZEVsZW1lbnRzLnB1c2gobm9kZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBtdXRhdGlvbi5yZW1vdmVkTm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCEobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuYWRkZWRFbGVtZW50cy5pbmNsdWRlcyhub2RlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkZWRFbGVtZW50cy5zcGxpY2UodGhpcy5hZGRlZEVsZW1lbnRzLmluZGV4T2Yobm9kZSksIDEpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucmVtb3ZlZEVsZW1lbnRzLnB1c2gobm9kZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBoYW5kbGVBdHRyaWJ1dGVNdXRhdGlvbihtdXRhdGlvbikge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gbXV0YXRpb24udGFyZ2V0O1xuICAgICAgICBpZiAoIXRoaXMuY2hhbmdlZEVsZW1lbnRzLmhhcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkRWxlbWVudHMuc2V0KGVsZW1lbnQsIG5ldyBFbGVtZW50Q2hhbmdlcygpKTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZEVsZW1lbnRzQ291bnQrKztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaGFuZ2VkRWxlbWVudCA9IHRoaXMuY2hhbmdlZEVsZW1lbnRzLmdldChlbGVtZW50KTtcbiAgICAgICAgc3dpdGNoIChtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lKSB7XG4gICAgICAgICAgICBjYXNlICdjbGFzcyc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVDbGFzc0F0dHJpYnV0ZU11dGF0aW9uKG11dGF0aW9uLCBjaGFuZ2VkRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdHlsZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTdHlsZUF0dHJpYnV0ZU11dGF0aW9uKG11dGF0aW9uLCBjaGFuZ2VkRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlR2VuZXJpY0F0dHJpYnV0ZU11dGF0aW9uKG11dGF0aW9uLCBjaGFuZ2VkRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZWRFbGVtZW50LmlzRW1wdHkoKSkge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkRWxlbWVudHMuZGVsZXRlKGVsZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkRWxlbWVudHNDb3VudC0tO1xuICAgICAgICB9XG4gICAgfVxuICAgIGhhbmRsZUNsYXNzQXR0cmlidXRlTXV0YXRpb24obXV0YXRpb24sIGVsZW1lbnRDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBtdXRhdGlvbi50YXJnZXQ7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBtdXRhdGlvbi5vbGRWYWx1ZSB8fCAnJztcbiAgICAgICAgY29uc3QgcHJldmlvdXNWYWx1ZXMgPSBwcmV2aW91c1ZhbHVlLm1hdGNoKC8oXFxTKykvZ3UpIHx8IFtdO1xuICAgICAgICBjb25zdCBuZXdWYWx1ZXMgPSBbXS5zbGljZS5jYWxsKGVsZW1lbnQuY2xhc3NMaXN0KTtcbiAgICAgICAgY29uc3QgYWRkZWRWYWx1ZXMgPSBuZXdWYWx1ZXMuZmlsdGVyKCh2YWx1ZSkgPT4gIXByZXZpb3VzVmFsdWVzLmluY2x1ZGVzKHZhbHVlKSk7XG4gICAgICAgIGNvbnN0IHJlbW92ZWRWYWx1ZXMgPSBwcmV2aW91c1ZhbHVlcy5maWx0ZXIoKHZhbHVlKSA9PiAhbmV3VmFsdWVzLmluY2x1ZGVzKHZhbHVlKSk7XG4gICAgICAgIGFkZGVkVmFsdWVzLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBlbGVtZW50Q2hhbmdlcy5hZGRDbGFzcyh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZW1vdmVkVmFsdWVzLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBlbGVtZW50Q2hhbmdlcy5yZW1vdmVDbGFzcyh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBoYW5kbGVTdHlsZUF0dHJpYnV0ZU11dGF0aW9uKG11dGF0aW9uLCBlbGVtZW50Q2hhbmdlcykge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gbXV0YXRpb24udGFyZ2V0O1xuICAgICAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gbXV0YXRpb24ub2xkVmFsdWUgfHwgJyc7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzU3R5bGVzID0gdGhpcy5leHRyYWN0U3R5bGVzKHByZXZpb3VzVmFsdWUpO1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdzdHlsZScpIHx8ICcnO1xuICAgICAgICBjb25zdCBuZXdTdHlsZXMgPSB0aGlzLmV4dHJhY3RTdHlsZXMobmV3VmFsdWUpO1xuICAgICAgICBjb25zdCBhZGRlZE9yQ2hhbmdlZFN0eWxlcyA9IE9iamVjdC5rZXlzKG5ld1N0eWxlcykuZmlsdGVyKChrZXkpID0+IHByZXZpb3VzU3R5bGVzW2tleV0gPT09IHVuZGVmaW5lZCB8fCBwcmV2aW91c1N0eWxlc1trZXldICE9PSBuZXdTdHlsZXNba2V5XSk7XG4gICAgICAgIGNvbnN0IHJlbW92ZWRTdHlsZXMgPSBPYmplY3Qua2V5cyhwcmV2aW91c1N0eWxlcykuZmlsdGVyKChrZXkpID0+ICFuZXdTdHlsZXNba2V5XSk7XG4gICAgICAgIGFkZGVkT3JDaGFuZ2VkU3R5bGVzLmZvckVhY2goKHN0eWxlKSA9PiB7XG4gICAgICAgICAgICBlbGVtZW50Q2hhbmdlcy5hZGRTdHlsZShzdHlsZSwgbmV3U3R5bGVzW3N0eWxlXSwgcHJldmlvdXNTdHlsZXNbc3R5bGVdID09PSB1bmRlZmluZWQgPyBudWxsIDogcHJldmlvdXNTdHlsZXNbc3R5bGVdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJlbW92ZWRTdHlsZXMuZm9yRWFjaCgoc3R5bGUpID0+IHtcbiAgICAgICAgICAgIGVsZW1lbnRDaGFuZ2VzLnJlbW92ZVN0eWxlKHN0eWxlLCBwcmV2aW91c1N0eWxlc1tzdHlsZV0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaGFuZGxlR2VuZXJpY0F0dHJpYnV0ZU11dGF0aW9uKG11dGF0aW9uLCBlbGVtZW50Q2hhbmdlcykge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVOYW1lID0gbXV0YXRpb24uYXR0cmlidXRlTmFtZTtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IG11dGF0aW9uLnRhcmdldDtcbiAgICAgICAgbGV0IG9sZFZhbHVlID0gbXV0YXRpb24ub2xkVmFsdWU7XG4gICAgICAgIGxldCBuZXdWYWx1ZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICBpZiAob2xkVmFsdWUgPT09IGF0dHJpYnV0ZU5hbWUpIHtcbiAgICAgICAgICAgIG9sZFZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5ld1ZhbHVlID09PSBhdHRyaWJ1dGVOYW1lKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgICAgIGlmIChvbGRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsZW1lbnRDaGFuZ2VzLnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBtdXRhdGlvbi5vbGRWYWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5ld1ZhbHVlID09PSBvbGRWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGVsZW1lbnRDaGFuZ2VzLmFkZEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBlbGVtZW50LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSwgbXV0YXRpb24ub2xkVmFsdWUpO1xuICAgIH1cbiAgICBleHRyYWN0U3R5bGVzKHN0eWxlcykge1xuICAgICAgICBjb25zdCBzdHlsZU9iamVjdCA9IHt9O1xuICAgICAgICBzdHlsZXMuc3BsaXQoJzsnKS5mb3JFYWNoKChzdHlsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBzdHlsZS5zcGxpdCgnOicpO1xuICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5ID0gcGFydHNbMF0udHJpbSgpO1xuICAgICAgICAgICAgc3R5bGVPYmplY3RbcHJvcGVydHldID0gcGFydHMuc2xpY2UoMSkuam9pbignOicpLnRyaW0oKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzdHlsZU9iamVjdDtcbiAgICB9XG4gICAgaXNFbGVtZW50QWRkZWRCeVRyYW5zbGF0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQudGFnTmFtZSA9PT0gJ0ZPTlQnICYmIGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdzdHlsZScpID09PSAndmVydGljYWwtYWxpZ246IGluaGVyaXQ7JztcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlRGlyZWN0aXZlcyhjb250ZW50KSB7XG4gICAgY29uc3QgZGlyZWN0aXZlcyA9IFtdO1xuICAgIGlmICghY29udGVudCkge1xuICAgICAgICByZXR1cm4gZGlyZWN0aXZlcztcbiAgICB9XG4gICAgbGV0IGN1cnJlbnRBY3Rpb25OYW1lID0gJyc7XG4gICAgbGV0IGN1cnJlbnRBcmd1bWVudFZhbHVlID0gJyc7XG4gICAgbGV0IGN1cnJlbnRBcmd1bWVudHMgPSBbXTtcbiAgICBsZXQgY3VycmVudE1vZGlmaWVycyA9IFtdO1xuICAgIGxldCBzdGF0ZSA9ICdhY3Rpb24nO1xuICAgIGNvbnN0IGdldExhc3RBY3Rpb25OYW1lID0gKCkgPT4ge1xuICAgICAgICBpZiAoY3VycmVudEFjdGlvbk5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50QWN0aW9uTmFtZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlyZWN0aXZlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmQgYW55IGRpcmVjdGl2ZXMnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlyZWN0aXZlc1tkaXJlY3RpdmVzLmxlbmd0aCAtIDFdLmFjdGlvbjtcbiAgICB9O1xuICAgIGNvbnN0IHB1c2hJbnN0cnVjdGlvbiA9ICgpID0+IHtcbiAgICAgICAgZGlyZWN0aXZlcy5wdXNoKHtcbiAgICAgICAgICAgIGFjdGlvbjogY3VycmVudEFjdGlvbk5hbWUsXG4gICAgICAgICAgICBhcmdzOiBjdXJyZW50QXJndW1lbnRzLFxuICAgICAgICAgICAgbW9kaWZpZXJzOiBjdXJyZW50TW9kaWZpZXJzLFxuICAgICAgICAgICAgZ2V0U3RyaW5nOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgY3VycmVudEFjdGlvbk5hbWUgPSAnJztcbiAgICAgICAgY3VycmVudEFyZ3VtZW50VmFsdWUgPSAnJztcbiAgICAgICAgY3VycmVudEFyZ3VtZW50cyA9IFtdO1xuICAgICAgICBjdXJyZW50TW9kaWZpZXJzID0gW107XG4gICAgICAgIHN0YXRlID0gJ2FjdGlvbic7XG4gICAgfTtcbiAgICBjb25zdCBwdXNoQXJndW1lbnQgPSAoKSA9PiB7XG4gICAgICAgIGN1cnJlbnRBcmd1bWVudHMucHVzaChjdXJyZW50QXJndW1lbnRWYWx1ZS50cmltKCkpO1xuICAgICAgICBjdXJyZW50QXJndW1lbnRWYWx1ZSA9ICcnO1xuICAgIH07XG4gICAgY29uc3QgcHVzaE1vZGlmaWVyID0gKCkgPT4ge1xuICAgICAgICBpZiAoY3VycmVudEFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBtb2RpZmllciBcIiR7Y3VycmVudEFjdGlvbk5hbWV9KClcIiBkb2VzIG5vdCBzdXBwb3J0IG11bHRpcGxlIGFyZ3VtZW50cy5gKTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50TW9kaWZpZXJzLnB1c2goe1xuICAgICAgICAgICAgbmFtZTogY3VycmVudEFjdGlvbk5hbWUsXG4gICAgICAgICAgICB2YWx1ZTogY3VycmVudEFyZ3VtZW50cy5sZW5ndGggPiAwID8gY3VycmVudEFyZ3VtZW50c1swXSA6IG51bGwsXG4gICAgICAgIH0pO1xuICAgICAgICBjdXJyZW50QWN0aW9uTmFtZSA9ICcnO1xuICAgICAgICBjdXJyZW50QXJndW1lbnRzID0gW107XG4gICAgICAgIHN0YXRlID0gJ2FjdGlvbic7XG4gICAgfTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRlbnQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgY2hhciA9IGNvbnRlbnRbaV07XG4gICAgICAgIHN3aXRjaCAoc3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2FjdGlvbic6XG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09ICcoJykge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9ICdhcmd1bWVudHMnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09ICcgJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEFjdGlvbk5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hJbnN0cnVjdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2hhciA9PT0gJ3wnKSB7XG4gICAgICAgICAgICAgICAgICAgIHB1c2hNb2RpZmllcigpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudEFjdGlvbk5hbWUgKz0gY2hhcjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2FyZ3VtZW50cyc6XG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09ICcpJykge1xuICAgICAgICAgICAgICAgICAgICBwdXNoQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAnYWZ0ZXJfYXJndW1lbnRzJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjaGFyID09PSAnLCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVzaEFyZ3VtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjdXJyZW50QXJndW1lbnRWYWx1ZSArPSBjaGFyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYWZ0ZXJfYXJndW1lbnRzJzpcbiAgICAgICAgICAgICAgICBpZiAoY2hhciA9PT0gJ3wnKSB7XG4gICAgICAgICAgICAgICAgICAgIHB1c2hNb2RpZmllcigpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgIT09ICcgJykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3Npbmcgc3BhY2UgYWZ0ZXIgJHtnZXRMYXN0QWN0aW9uTmFtZSgpfSgpYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHB1c2hJbnN0cnVjdGlvbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN3aXRjaCAoc3RhdGUpIHtcbiAgICAgICAgY2FzZSAnYWN0aW9uJzpcbiAgICAgICAgY2FzZSAnYWZ0ZXJfYXJndW1lbnRzJzpcbiAgICAgICAgICAgIGlmIChjdXJyZW50QWN0aW9uTmFtZSkge1xuICAgICAgICAgICAgICAgIHB1c2hJbnN0cnVjdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERpZCB5b3UgZm9yZ2V0IHRvIGFkZCBhIGNsb3NpbmcgXCIpXCIgYWZ0ZXIgXCIke2N1cnJlbnRBY3Rpb25OYW1lfVwiP2ApO1xuICAgIH1cbiAgICByZXR1cm4gZGlyZWN0aXZlcztcbn1cblxuZnVuY3Rpb24gY29tYmluZVNwYWNlZEFycmF5KHBhcnRzKSB7XG4gICAgY29uc3QgZmluYWxQYXJ0cyA9IFtdO1xuICAgIHBhcnRzLmZvckVhY2goKHBhcnQpID0+IHtcbiAgICAgICAgZmluYWxQYXJ0cy5wdXNoKC4uLnRyaW1BbGwocGFydCkuc3BsaXQoJyAnKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGZpbmFsUGFydHM7XG59XG5mdW5jdGlvbiB0cmltQWxsKHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1xcc10rL2csICcgJykudHJpbSgpO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplTW9kZWxOYW1lKG1vZGVsKSB7XG4gICAgcmV0dXJuIChtb2RlbFxuICAgICAgICAucmVwbGFjZSgvXFxbXSQvLCAnJylcbiAgICAgICAgLnNwbGl0KCdbJylcbiAgICAgICAgLm1hcCgocykgPT4gcy5yZXBsYWNlKCddJywgJycpKVxuICAgICAgICAuam9pbignLicpKTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWVGcm9tRWxlbWVudChlbGVtZW50LCB2YWx1ZVN0b3JlKSB7XG4gICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgICAgIGNvbnN0IG1vZGVsTmFtZURhdGEgPSBnZXRNb2RlbERpcmVjdGl2ZUZyb21FbGVtZW50KGVsZW1lbnQsIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChtb2RlbE5hbWVEYXRhICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbW9kZWxWYWx1ZSA9IHZhbHVlU3RvcmUuZ2V0KG1vZGVsTmFtZURhdGEuYWN0aW9uKTtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtb2RlbFZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0TXVsdGlwbGVDaGVja2JveFZhbHVlKGVsZW1lbnQsIG1vZGVsVmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0KG1vZGVsVmFsdWUpID09PSBtb2RlbFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRNdWx0aXBsZUNoZWNrYm94VmFsdWUoZWxlbWVudCwgT2JqZWN0LnZhbHVlcyhtb2RlbFZhbHVlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlKCd2YWx1ZScpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuY2hlY2tlZCA/IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd2YWx1ZScpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmNoZWNrZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlucHV0VmFsdWUoZWxlbWVudCk7XG4gICAgfVxuICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTFNlbGVjdEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKGVsZW1lbnQubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKGVsZW1lbnQuc2VsZWN0ZWRPcHRpb25zKS5tYXAoKGVsKSA9PiBlbC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVsZW1lbnQudmFsdWU7XG4gICAgfVxuICAgIGlmIChlbGVtZW50LmRhdGFzZXQudmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuZGF0YXNldC52YWx1ZTtcbiAgICB9XG4gICAgaWYgKCd2YWx1ZScgaW4gZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC52YWx1ZTtcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlKCd2YWx1ZScpKSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZSgndmFsdWUnKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiBzZXRWYWx1ZU9uRWxlbWVudChlbGVtZW50LCB2YWx1ZSkge1xuICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkge1xuICAgICAgICBpZiAoZWxlbWVudC50eXBlID09PSAnZmlsZScpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudC50eXBlID09PSAncmFkaW8nKSB7XG4gICAgICAgICAgICBlbGVtZW50LmNoZWNrZWQgPSBlbGVtZW50LnZhbHVlID09IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuY2hlY2tlZCA9IHZhbHVlLnNvbWUoKHZhbCkgPT4gdmFsID09IGVsZW1lbnQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3ZhbHVlJykpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LmNoZWNrZWQgPSBlbGVtZW50LnZhbHVlID09IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5jaGVja2VkID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MU2VsZWN0RWxlbWVudCkge1xuICAgICAgICBjb25zdCBhcnJheVdyYXBwZWRWYWx1ZSA9IFtdLmNvbmNhdCh2YWx1ZSkubWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGAke3ZhbHVlfWA7XG4gICAgICAgIH0pO1xuICAgICAgICBBcnJheS5mcm9tKGVsZW1lbnQub3B0aW9ucykuZm9yRWFjaCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSBhcnJheVdyYXBwZWRWYWx1ZS5pbmNsdWRlcyhvcHRpb24udmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YWx1ZSA9IHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlO1xuICAgIGVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGdldEFsbE1vZGVsRGlyZWN0aXZlRnJvbUVsZW1lbnRzKGVsZW1lbnQpIHtcbiAgICBpZiAoIWVsZW1lbnQuZGF0YXNldC5tb2RlbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSBwYXJzZURpcmVjdGl2ZXMoZWxlbWVudC5kYXRhc2V0Lm1vZGVsKTtcbiAgICBkaXJlY3RpdmVzLmZvckVhY2goKGRpcmVjdGl2ZSkgPT4ge1xuICAgICAgICBpZiAoZGlyZWN0aXZlLmFyZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZGF0YS1tb2RlbD1cIiR7ZWxlbWVudC5kYXRhc2V0Lm1vZGVsfVwiIGZvcm1hdCBpcyBpbnZhbGlkOiBpdCBkb2VzIG5vdCBzdXBwb3J0IHBhc3NpbmcgYXJndW1lbnRzIHRvIHRoZSBtb2RlbC5gKTtcbiAgICAgICAgfVxuICAgICAgICBkaXJlY3RpdmUuYWN0aW9uID0gbm9ybWFsaXplTW9kZWxOYW1lKGRpcmVjdGl2ZS5hY3Rpb24pO1xuICAgIH0pO1xuICAgIHJldHVybiBkaXJlY3RpdmVzO1xufVxuZnVuY3Rpb24gZ2V0TW9kZWxEaXJlY3RpdmVGcm9tRWxlbWVudChlbGVtZW50LCB0aHJvd09uTWlzc2luZyA9IHRydWUpIHtcbiAgICBjb25zdCBkYXRhTW9kZWxEaXJlY3RpdmVzID0gZ2V0QWxsTW9kZWxEaXJlY3RpdmVGcm9tRWxlbWVudHMoZWxlbWVudCk7XG4gICAgaWYgKGRhdGFNb2RlbERpcmVjdGl2ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZGF0YU1vZGVsRGlyZWN0aXZlc1swXTtcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQuZ2V0QXR0cmlidXRlKCduYW1lJykpIHtcbiAgICAgICAgY29uc3QgZm9ybUVsZW1lbnQgPSBlbGVtZW50LmNsb3Nlc3QoJ2Zvcm0nKTtcbiAgICAgICAgaWYgKGZvcm1FbGVtZW50ICYmICdtb2RlbCcgaW4gZm9ybUVsZW1lbnQuZGF0YXNldCkge1xuICAgICAgICAgICAgY29uc3QgZGlyZWN0aXZlcyA9IHBhcnNlRGlyZWN0aXZlcyhmb3JtRWxlbWVudC5kYXRhc2V0Lm1vZGVsIHx8ICcqJyk7XG4gICAgICAgICAgICBjb25zdCBkaXJlY3RpdmUgPSBkaXJlY3RpdmVzWzBdO1xuICAgICAgICAgICAgaWYgKGRpcmVjdGl2ZS5hcmdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBkYXRhLW1vZGVsPVwiJHtmb3JtRWxlbWVudC5kYXRhc2V0Lm1vZGVsfVwiIGZvcm1hdCBpcyBpbnZhbGlkOiBpdCBkb2VzIG5vdCBzdXBwb3J0IHBhc3NpbmcgYXJndW1lbnRzIHRvIHRoZSBtb2RlbC5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpcmVjdGl2ZS5hY3Rpb24gPSBub3JtYWxpemVNb2RlbE5hbWUoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ25hbWUnKSk7XG4gICAgICAgICAgICByZXR1cm4gZGlyZWN0aXZlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICghdGhyb3dPbk1pc3NpbmcpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGRldGVybWluZSB0aGUgbW9kZWwgbmFtZSBmb3IgXCIke2dldEVsZW1lbnRBc1RhZ1RleHQoZWxlbWVudCl9XCI6IHRoZSBlbGVtZW50IG11c3QgZWl0aGVyIGhhdmUgYSBcImRhdGEtbW9kZWxcIiAob3IgXCJuYW1lXCIgYXR0cmlidXRlIGxpdmluZyBpbnNpZGUgYSA8Zm9ybSBkYXRhLW1vZGVsPVwiKlwiPikuYCk7XG59XG5mdW5jdGlvbiBlbGVtZW50QmVsb25nc1RvVGhpc0NvbXBvbmVudChlbGVtZW50LCBjb21wb25lbnQpIHtcbiAgICBpZiAoY29tcG9uZW50LmVsZW1lbnQgPT09IGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICghY29tcG9uZW50LmVsZW1lbnQuY29udGFpbnMoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjbG9zZXN0TGl2ZUNvbXBvbmVudCA9IGVsZW1lbnQuY2xvc2VzdCgnW2RhdGEtY29udHJvbGxlcn49XCJsaXZlXCJdJyk7XG4gICAgcmV0dXJuIGNsb3Nlc3RMaXZlQ29tcG9uZW50ID09PSBjb21wb25lbnQuZWxlbWVudDtcbn1cbmZ1bmN0aW9uIGNsb25lSFRNTEVsZW1lbnQoZWxlbWVudCkge1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBlbGVtZW50LmNsb25lTm9kZSh0cnVlKTtcbiAgICBpZiAoIShuZXdFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGNsb25lIGVsZW1lbnQnKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld0VsZW1lbnQ7XG59XG5mdW5jdGlvbiBodG1sVG9FbGVtZW50KGh0bWwpIHtcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJyk7XG4gICAgaHRtbCA9IGh0bWwudHJpbSgpO1xuICAgIHRlbXBsYXRlLmlubmVySFRNTCA9IGh0bWw7XG4gICAgaWYgKHRlbXBsYXRlLmNvbnRlbnQuY2hpbGRFbGVtZW50Q291bnQgPiAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IEhUTUwgY29udGFpbnMgJHt0ZW1wbGF0ZS5jb250ZW50LmNoaWxkRWxlbWVudENvdW50fSBlbGVtZW50cywgYnV0IG9ubHkgMSByb290IGVsZW1lbnQgaXMgYWxsb3dlZC5gKTtcbiAgICB9XG4gICAgY29uc3QgY2hpbGQgPSB0ZW1wbGF0ZS5jb250ZW50LmZpcnN0RWxlbWVudENoaWxkO1xuICAgIGlmICghY2hpbGQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDaGlsZCBub3QgZm91bmQnKTtcbiAgICB9XG4gICAgaWYgKCEoY2hpbGQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDcmVhdGVkIGVsZW1lbnQgaXMgbm90IGFuIEhUTUxFbGVtZW50OiAke2h0bWwudHJpbSgpfWApO1xuICAgIH1cbiAgICByZXR1cm4gY2hpbGQ7XG59XG5jb25zdCBnZXRNdWx0aXBsZUNoZWNrYm94VmFsdWUgPSAoZWxlbWVudCwgY3VycmVudFZhbHVlcykgPT4ge1xuICAgIGNvbnN0IGZpbmFsVmFsdWVzID0gWy4uLmN1cnJlbnRWYWx1ZXNdO1xuICAgIGNvbnN0IHZhbHVlID0gaW5wdXRWYWx1ZShlbGVtZW50KTtcbiAgICBjb25zdCBpbmRleCA9IGN1cnJlbnRWYWx1ZXMuaW5kZXhPZih2YWx1ZSk7XG4gICAgaWYgKGVsZW1lbnQuY2hlY2tlZCkge1xuICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICBmaW5hbFZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmluYWxWYWx1ZXM7XG4gICAgfVxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIGZpbmFsVmFsdWVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICAgIHJldHVybiBmaW5hbFZhbHVlcztcbn07XG5jb25zdCBpbnB1dFZhbHVlID0gKGVsZW1lbnQpID0+IGVsZW1lbnQuZGF0YXNldC52YWx1ZSA/IGVsZW1lbnQuZGF0YXNldC52YWx1ZSA6IGVsZW1lbnQudmFsdWU7XG5cbi8vIGJhc2UgSUlGRSB0byBkZWZpbmUgaWRpb21vcnBoXG52YXIgSWRpb21vcnBoID0gKGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIC8vIEFORCBOT1cgSVQgQkVHSU5TLi4uXG4gICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgbGV0IEVNUFRZX1NFVCA9IG5ldyBTZXQoKTtcblxuICAgICAgICAvLyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gdmFsdWVzLCB1cGRhdGFibGUgYnkgdXNlcnMgbm93XG4gICAgICAgIGxldCBkZWZhdWx0cyA9IHtcbiAgICAgICAgICAgIG1vcnBoU3R5bGU6IFwib3V0ZXJIVE1MXCIsXG4gICAgICAgICAgICBjYWxsYmFja3MgOiB7XG4gICAgICAgICAgICAgICAgYmVmb3JlTm9kZUFkZGVkOiBub09wLFxuICAgICAgICAgICAgICAgIGFmdGVyTm9kZUFkZGVkOiBub09wLFxuICAgICAgICAgICAgICAgIGJlZm9yZU5vZGVNb3JwaGVkOiBub09wLFxuICAgICAgICAgICAgICAgIGFmdGVyTm9kZU1vcnBoZWQ6IG5vT3AsXG4gICAgICAgICAgICAgICAgYmVmb3JlTm9kZVJlbW92ZWQ6IG5vT3AsXG4gICAgICAgICAgICAgICAgYWZ0ZXJOb2RlUmVtb3ZlZDogbm9PcCxcbiAgICAgICAgICAgICAgICBiZWZvcmVBdHRyaWJ1dGVVcGRhdGVkOiBub09wLFxuXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGVhZDoge1xuICAgICAgICAgICAgICAgIHN0eWxlOiAnbWVyZ2UnLFxuICAgICAgICAgICAgICAgIHNob3VsZFByZXNlcnZlOiBmdW5jdGlvbiAoZWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbHQuZ2V0QXR0cmlidXRlKFwiaW0tcHJlc2VydmVcIikgPT09IFwidHJ1ZVwiO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2hvdWxkUmVBcHBlbmQ6IGZ1bmN0aW9uIChlbHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsdC5nZXRBdHRyaWJ1dGUoXCJpbS1yZS1hcHBlbmRcIikgPT09IFwidHJ1ZVwiO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2hvdWxkUmVtb3ZlOiBub09wLFxuICAgICAgICAgICAgICAgIGFmdGVySGVhZE1vcnBoZWQ6IG5vT3AsXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAvLyBDb3JlIE1vcnBoaW5nIEFsZ29yaXRobSAtIG1vcnBoLCBtb3JwaE5vcm1hbGl6ZWRDb250ZW50LCBtb3JwaE9sZE5vZGVUbywgbW9ycGhDaGlsZHJlblxuICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIGZ1bmN0aW9uIG1vcnBoKG9sZE5vZGUsIG5ld0NvbnRlbnQsIGNvbmZpZyA9IHt9KSB7XG5cbiAgICAgICAgICAgIGlmIChvbGROb2RlIGluc3RhbmNlb2YgRG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICBvbGROb2RlID0gb2xkTm9kZS5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBuZXdDb250ZW50ID0gcGFyc2VDb250ZW50KG5ld0NvbnRlbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgbm9ybWFsaXplZENvbnRlbnQgPSBub3JtYWxpemVDb250ZW50KG5ld0NvbnRlbnQpO1xuXG4gICAgICAgICAgICBsZXQgY3R4ID0gY3JlYXRlTW9ycGhDb250ZXh0KG9sZE5vZGUsIG5vcm1hbGl6ZWRDb250ZW50LCBjb25maWcpO1xuXG4gICAgICAgICAgICByZXR1cm4gbW9ycGhOb3JtYWxpemVkQ29udGVudChvbGROb2RlLCBub3JtYWxpemVkQ29udGVudCwgY3R4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG1vcnBoTm9ybWFsaXplZENvbnRlbnQob2xkTm9kZSwgbm9ybWFsaXplZE5ld0NvbnRlbnQsIGN0eCkge1xuICAgICAgICAgICAgaWYgKGN0eC5oZWFkLmJsb2NrKSB7XG4gICAgICAgICAgICAgICAgbGV0IG9sZEhlYWQgPSBvbGROb2RlLnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICBsZXQgbmV3SGVhZCA9IG5vcm1hbGl6ZWROZXdDb250ZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICBpZiAob2xkSGVhZCAmJiBuZXdIZWFkKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9taXNlcyA9IGhhbmRsZUhlYWRFbGVtZW50KG5ld0hlYWQsIG9sZEhlYWQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gaGVhZCBwcm9taXNlcyByZXNvbHZlLCBjYWxsIG1vcnBoIGFnYWluLCBpZ25vcmluZyB0aGUgaGVhZCB0YWdcbiAgICAgICAgICAgICAgICAgICAgUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9ycGhOb3JtYWxpemVkQ29udGVudChvbGROb2RlLCBub3JtYWxpemVkTmV3Q29udGVudCwgT2JqZWN0LmFzc2lnbihjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGN0eC5tb3JwaFN0eWxlID09PSBcImlubmVySFRNTFwiKSB7XG5cbiAgICAgICAgICAgICAgICAvLyBpbm5lckhUTUwsIHNvIHdlIGFyZSBvbmx5IHVwZGF0aW5nIHRoZSBjaGlsZHJlblxuICAgICAgICAgICAgICAgIG1vcnBoQ2hpbGRyZW4obm9ybWFsaXplZE5ld0NvbnRlbnQsIG9sZE5vZGUsIGN0eCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9sZE5vZGUuY2hpbGRyZW47XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3R4Lm1vcnBoU3R5bGUgPT09IFwib3V0ZXJIVE1MXCIgfHwgY3R4Lm1vcnBoU3R5bGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBmaW5kIHRoZSBiZXN0IGVsZW1lbnQgbWF0Y2ggaW4gdGhlIG5ldyBjb250ZW50LCBtb3JwaCB0aGF0LCBhbmQgbWVyZ2UgaXRzIHNpYmxpbmdzXG4gICAgICAgICAgICAgICAgLy8gaW50byBlaXRoZXIgc2lkZSBvZiB0aGUgYmVzdCBtYXRjaFxuICAgICAgICAgICAgICAgIGxldCBiZXN0TWF0Y2ggPSBmaW5kQmVzdE5vZGVNYXRjaChub3JtYWxpemVkTmV3Q29udGVudCwgb2xkTm9kZSwgY3R4KTtcblxuICAgICAgICAgICAgICAgIC8vIHN0YXNoIHRoZSBzaWJsaW5ncyB0aGF0IHdpbGwgbmVlZCB0byBiZSBpbnNlcnRlZCBvbiBlaXRoZXIgc2lkZSBvZiB0aGUgYmVzdCBtYXRjaFxuICAgICAgICAgICAgICAgIGxldCBwcmV2aW91c1NpYmxpbmcgPSBiZXN0TWF0Y2g/LnByZXZpb3VzU2libGluZztcbiAgICAgICAgICAgICAgICBsZXQgbmV4dFNpYmxpbmcgPSBiZXN0TWF0Y2g/Lm5leHRTaWJsaW5nO1xuXG4gICAgICAgICAgICAgICAgLy8gbW9ycGggaXRcbiAgICAgICAgICAgICAgICBsZXQgbW9ycGhlZE5vZGUgPSBtb3JwaE9sZE5vZGVUbyhvbGROb2RlLCBiZXN0TWF0Y2gsIGN0eCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoYmVzdE1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIHdhcyBhIGJlc3QgbWF0Y2gsIG1lcmdlIHRoZSBzaWJsaW5ncyBpbiB0b28gYW5kIHJldHVybiB0aGVcbiAgICAgICAgICAgICAgICAgICAgLy8gd2hvbGUgYnVuY2hcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluc2VydFNpYmxpbmdzKHByZXZpb3VzU2libGluZywgbW9ycGhlZE5vZGUsIG5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2Ugbm90aGluZyB3YXMgYWRkZWQgdG8gdGhlIERPTVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IFwiRG8gbm90IHVuZGVyc3RhbmQgaG93IHRvIG1vcnBoIHN0eWxlIFwiICsgY3R4Lm1vcnBoU3R5bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAcGFyYW0gcG9zc2libGVBY3RpdmVFbGVtZW50XG4gICAgICAgICAqIEBwYXJhbSBjdHhcbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBpZ25vcmVWYWx1ZU9mQWN0aXZlRWxlbWVudChwb3NzaWJsZUFjdGl2ZUVsZW1lbnQsIGN0eCkge1xuICAgICAgICAgICAgcmV0dXJuIGN0eC5pZ25vcmVBY3RpdmVWYWx1ZSAmJiBwb3NzaWJsZUFjdGl2ZUVsZW1lbnQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogQHBhcmFtIG9sZE5vZGUgcm9vdCBub2RlIHRvIG1lcmdlIGNvbnRlbnQgaW50b1xuICAgICAgICAgKiBAcGFyYW0gbmV3Q29udGVudCBuZXcgY29udGVudCB0byBtZXJnZVxuICAgICAgICAgKiBAcGFyYW0gY3R4IHRoZSBtZXJnZSBjb250ZXh0XG4gICAgICAgICAqIEByZXR1cm5zIHtFbGVtZW50fSB0aGUgZWxlbWVudCB0aGF0IGVuZGVkIHVwIGluIHRoZSBET01cbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIG1vcnBoT2xkTm9kZVRvKG9sZE5vZGUsIG5ld0NvbnRlbnQsIGN0eCkge1xuICAgICAgICAgICAgaWYgKGN0eC5pZ25vcmVBY3RpdmUgJiYgb2xkTm9kZSA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkgOyBlbHNlIGlmIChuZXdDb250ZW50ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3R4LmNhbGxiYWNrcy5iZWZvcmVOb2RlUmVtb3ZlZChvbGROb2RlKSA9PT0gZmFsc2UpIHJldHVybiBvbGROb2RlO1xuXG4gICAgICAgICAgICAgICAgb2xkTm9kZS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICBjdHguY2FsbGJhY2tzLmFmdGVyTm9kZVJlbW92ZWQob2xkTm9kZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFpc1NvZnRNYXRjaChvbGROb2RlLCBuZXdDb250ZW50KSkge1xuICAgICAgICAgICAgICAgIGlmIChjdHguY2FsbGJhY2tzLmJlZm9yZU5vZGVSZW1vdmVkKG9sZE5vZGUpID09PSBmYWxzZSkgcmV0dXJuIG9sZE5vZGU7XG4gICAgICAgICAgICAgICAgaWYgKGN0eC5jYWxsYmFja3MuYmVmb3JlTm9kZUFkZGVkKG5ld0NvbnRlbnQpID09PSBmYWxzZSkgcmV0dXJuIG9sZE5vZGU7XG5cbiAgICAgICAgICAgICAgICBvbGROb2RlLnBhcmVudEVsZW1lbnQucmVwbGFjZUNoaWxkKG5ld0NvbnRlbnQsIG9sZE5vZGUpO1xuICAgICAgICAgICAgICAgIGN0eC5jYWxsYmFja3MuYWZ0ZXJOb2RlQWRkZWQobmV3Q29udGVudCk7XG4gICAgICAgICAgICAgICAgY3R4LmNhbGxiYWNrcy5hZnRlck5vZGVSZW1vdmVkKG9sZE5vZGUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdDb250ZW50O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoY3R4LmNhbGxiYWNrcy5iZWZvcmVOb2RlTW9ycGhlZChvbGROb2RlLCBuZXdDb250ZW50KSA9PT0gZmFsc2UpIHJldHVybiBvbGROb2RlO1xuXG4gICAgICAgICAgICAgICAgaWYgKG9sZE5vZGUgaW5zdGFuY2VvZiBIVE1MSGVhZEVsZW1lbnQgJiYgY3R4LmhlYWQuaWdub3JlKSA7IGVsc2UgaWYgKG9sZE5vZGUgaW5zdGFuY2VvZiBIVE1MSGVhZEVsZW1lbnQgJiYgY3R4LmhlYWQuc3R5bGUgIT09IFwibW9ycGhcIikge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVIZWFkRWxlbWVudChuZXdDb250ZW50LCBvbGROb2RlLCBjdHgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN5bmNOb2RlRnJvbShuZXdDb250ZW50LCBvbGROb2RlLCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlnbm9yZVZhbHVlT2ZBY3RpdmVFbGVtZW50KG9sZE5vZGUsIGN0eCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcnBoQ2hpbGRyZW4obmV3Q29udGVudCwgb2xkTm9kZSwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjdHguY2FsbGJhY2tzLmFmdGVyTm9kZU1vcnBoZWQob2xkTm9kZSwgbmV3Q29udGVudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9sZE5vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogVGhpcyBpcyB0aGUgY29yZSBhbGdvcml0aG0gZm9yIG1hdGNoaW5nIHVwIGNoaWxkcmVuLiAgVGhlIGlkZWEgaXMgdG8gdXNlIGlkIHNldHMgdG8gdHJ5IHRvIG1hdGNoIHVwXG4gICAgICAgICAqIG5vZGVzIGFzIGZhaXRoZnVsbHkgYXMgcG9zc2libGUuICBXZSBncmVlZGlseSBtYXRjaCwgd2hpY2ggYWxsb3dzIHVzIHRvIGtlZXAgdGhlIGFsZ29yaXRobSBmYXN0LCBidXRcbiAgICAgICAgICogYnkgdXNpbmcgaWQgc2V0cywgd2UgYXJlIGFibGUgdG8gYmV0dGVyIG1hdGNoIHVwIHdpdGggY29udGVudCBkZWVwZXIgaW4gdGhlIERPTS5cbiAgICAgICAgICpcbiAgICAgICAgICogQmFzaWMgYWxnb3JpdGhtIGlzLCBmb3IgZWFjaCBub2RlIGluIHRoZSBuZXcgY29udGVudDpcbiAgICAgICAgICpcbiAgICAgICAgICogLSBpZiB3ZSBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgb2xkIHBhcmVudCwgYXBwZW5kIHRoZSBuZXcgY29udGVudFxuICAgICAgICAgKiAtIGlmIHRoZSBuZXcgY29udGVudCBoYXMgYW4gaWQgc2V0IG1hdGNoIHdpdGggdGhlIGN1cnJlbnQgaW5zZXJ0aW9uIHBvaW50LCBtb3JwaFxuICAgICAgICAgKiAtIHNlYXJjaCBmb3IgYW4gaWQgc2V0IG1hdGNoXG4gICAgICAgICAqIC0gaWYgaWQgc2V0IG1hdGNoIGZvdW5kLCBtb3JwaFxuICAgICAgICAgKiAtIG90aGVyd2lzZSBzZWFyY2ggZm9yIGEgXCJzb2Z0XCIgbWF0Y2hcbiAgICAgICAgICogLSBpZiBhIHNvZnQgbWF0Y2ggaXMgZm91bmQsIG1vcnBoXG4gICAgICAgICAqIC0gb3RoZXJ3aXNlLCBwcmVwZW5kIHRoZSBuZXcgbm9kZSBiZWZvcmUgdGhlIGN1cnJlbnQgaW5zZXJ0aW9uIHBvaW50XG4gICAgICAgICAqXG4gICAgICAgICAqIFRoZSB0d28gc2VhcmNoIGFsZ29yaXRobXMgdGVybWluYXRlIGlmIGNvbXBldGluZyBub2RlIG1hdGNoZXMgYXBwZWFyIHRvIG91dHdlaWdoIHdoYXQgY2FuIGJlIGFjaGlldmVkXG4gICAgICAgICAqIHdpdGggdGhlIGN1cnJlbnQgbm9kZS4gIFNlZSBmaW5kSWRTZXRNYXRjaCgpIGFuZCBmaW5kU29mdE1hdGNoKCkgZm9yIGRldGFpbHMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSB7RWxlbWVudH0gbmV3UGFyZW50IHRoZSBwYXJlbnQgZWxlbWVudCBvZiB0aGUgbmV3IGNvbnRlbnRcbiAgICAgICAgICogQHBhcmFtIHtFbGVtZW50IH0gb2xkUGFyZW50IHRoZSBvbGQgY29udGVudCB0aGF0IHdlIGFyZSBtZXJnaW5nIHRoZSBuZXcgY29udGVudCBpbnRvXG4gICAgICAgICAqIEBwYXJhbSBjdHggdGhlIG1lcmdlIGNvbnRleHRcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIG1vcnBoQ2hpbGRyZW4obmV3UGFyZW50LCBvbGRQYXJlbnQsIGN0eCkge1xuXG4gICAgICAgICAgICBsZXQgbmV4dE5ld0NoaWxkID0gbmV3UGFyZW50LmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgICBsZXQgaW5zZXJ0aW9uUG9pbnQgPSBvbGRQYXJlbnQuZmlyc3RDaGlsZDtcbiAgICAgICAgICAgIGxldCBuZXdDaGlsZDtcblxuICAgICAgICAgICAgLy8gcnVuIHRocm91Z2ggYWxsIHRoZSBuZXcgY29udGVudFxuICAgICAgICAgICAgd2hpbGUgKG5leHROZXdDaGlsZCkge1xuXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGQgPSBuZXh0TmV3Q2hpbGQ7XG4gICAgICAgICAgICAgICAgbmV4dE5ld0NoaWxkID0gbmV3Q2hpbGQubmV4dFNpYmxpbmc7XG5cbiAgICAgICAgICAgICAgICAvLyBpZiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgZXhpdGluZyBwYXJlbnQncyBjaGlsZHJlbiwganVzdCBhcHBlbmRcbiAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3R4LmNhbGxiYWNrcy5iZWZvcmVOb2RlQWRkZWQobmV3Q2hpbGQpID09PSBmYWxzZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgICAgIG9sZFBhcmVudC5hcHBlbmRDaGlsZChuZXdDaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIGN0eC5jYWxsYmFja3MuYWZ0ZXJOb2RlQWRkZWQobmV3Q2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVJZHNGcm9tQ29uc2lkZXJhdGlvbihjdHgsIG5ld0NoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gaWYgdGhlIGN1cnJlbnQgbm9kZSBoYXMgYW4gaWQgc2V0IG1hdGNoIHRoZW4gbW9ycGhcbiAgICAgICAgICAgICAgICBpZiAoaXNJZFNldE1hdGNoKG5ld0NoaWxkLCBpbnNlcnRpb25Qb2ludCwgY3R4KSkge1xuICAgICAgICAgICAgICAgICAgICBtb3JwaE9sZE5vZGVUbyhpbnNlcnRpb25Qb2ludCwgbmV3Q2hpbGQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0aW9uUG9pbnQubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUlkc0Zyb21Db25zaWRlcmF0aW9uKGN0eCwgbmV3Q2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2Ugc2VhcmNoIGZvcndhcmQgaW4gdGhlIGV4aXN0aW5nIG9sZCBjaGlsZHJlbiBmb3IgYW4gaWQgc2V0IG1hdGNoXG4gICAgICAgICAgICAgICAgbGV0IGlkU2V0TWF0Y2ggPSBmaW5kSWRTZXRNYXRjaChuZXdQYXJlbnQsIG9sZFBhcmVudCwgbmV3Q2hpbGQsIGluc2VydGlvblBvaW50LCBjdHgpO1xuXG4gICAgICAgICAgICAgICAgLy8gaWYgd2UgZm91bmQgYSBwb3RlbnRpYWwgbWF0Y2gsIHJlbW92ZSB0aGUgbm9kZXMgdW50aWwgdGhhdCBwb2ludCBhbmQgbW9ycGhcbiAgICAgICAgICAgICAgICBpZiAoaWRTZXRNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9IHJlbW92ZU5vZGVzQmV0d2VlbihpbnNlcnRpb25Qb2ludCwgaWRTZXRNYXRjaCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgbW9ycGhPbGROb2RlVG8oaWRTZXRNYXRjaCwgbmV3Q2hpbGQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUlkc0Zyb21Db25zaWRlcmF0aW9uKGN0eCwgbmV3Q2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBubyBpZCBzZXQgbWF0Y2ggZm91bmQsIHNvIHNjYW4gZm9yd2FyZCBmb3IgYSBzb2Z0IG1hdGNoIGZvciB0aGUgY3VycmVudCBub2RlXG4gICAgICAgICAgICAgICAgbGV0IHNvZnRNYXRjaCA9IGZpbmRTb2Z0TWF0Y2gobmV3UGFyZW50LCBvbGRQYXJlbnQsIG5ld0NoaWxkLCBpbnNlcnRpb25Qb2ludCwgY3R4KTtcblxuICAgICAgICAgICAgICAgIC8vIGlmIHdlIGZvdW5kIGEgc29mdCBtYXRjaCBmb3IgdGhlIGN1cnJlbnQgbm9kZSwgbW9ycGhcbiAgICAgICAgICAgICAgICBpZiAoc29mdE1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gcmVtb3ZlTm9kZXNCZXR3ZWVuKGluc2VydGlvblBvaW50LCBzb2Z0TWF0Y2gsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIG1vcnBoT2xkTm9kZVRvKHNvZnRNYXRjaCwgbmV3Q2hpbGQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUlkc0Zyb21Db25zaWRlcmF0aW9uKGN0eCwgbmV3Q2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBhYmFuZG9uIGFsbCBob3BlIG9mIG1vcnBoaW5nLCBqdXN0IGluc2VydCB0aGUgbmV3IGNoaWxkIGJlZm9yZSB0aGUgaW5zZXJ0aW9uIHBvaW50XG4gICAgICAgICAgICAgICAgLy8gYW5kIG1vdmUgb25cbiAgICAgICAgICAgICAgICBpZiAoY3R4LmNhbGxiYWNrcy5iZWZvcmVOb2RlQWRkZWQobmV3Q2hpbGQpID09PSBmYWxzZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgb2xkUGFyZW50Lmluc2VydEJlZm9yZShuZXdDaGlsZCwgaW5zZXJ0aW9uUG9pbnQpO1xuICAgICAgICAgICAgICAgIGN0eC5jYWxsYmFja3MuYWZ0ZXJOb2RlQWRkZWQobmV3Q2hpbGQpO1xuICAgICAgICAgICAgICAgIHJlbW92ZUlkc0Zyb21Db25zaWRlcmF0aW9uKGN0eCwgbmV3Q2hpbGQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyByZW1vdmUgYW55IHJlbWFpbmluZyBvbGQgbm9kZXMgdGhhdCBkaWRuJ3QgbWF0Y2ggdXAgd2l0aCBuZXcgY29udGVudFxuICAgICAgICAgICAgd2hpbGUgKGluc2VydGlvblBvaW50ICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgICAgICBsZXQgdGVtcE5vZGUgPSBpbnNlcnRpb25Qb2ludDtcbiAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9IGluc2VydGlvblBvaW50Lm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgIHJlbW92ZU5vZGUodGVtcE5vZGUsIGN0eCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIC8vIEF0dHJpYnV0ZSBTeW5jaW5nIENvZGVcbiAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAcGFyYW0gYXR0ciB7U3RyaW5nfSB0aGUgYXR0cmlidXRlIHRvIGJlIG11dGF0ZWRcbiAgICAgICAgICogQHBhcmFtIHRvIHtFbGVtZW50fSB0aGUgZWxlbWVudCB0aGF0IGlzIGdvaW5nIHRvIGJlIHVwZGF0ZWRcbiAgICAgICAgICogQHBhcmFtIHVwZGF0ZVR5cGUgeyhcInVwZGF0ZVwifFwicmVtb3ZlXCIpfVxuICAgICAgICAgKiBAcGFyYW0gY3R4IHRoZSBtZXJnZSBjb250ZXh0XG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSBhdHRyaWJ1dGUgc2hvdWxkIGJlIGlnbm9yZWQsIGZhbHNlIG90aGVyd2lzZVxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gaWdub3JlQXR0cmlidXRlKGF0dHIsIHRvLCB1cGRhdGVUeXBlLCBjdHgpIHtcbiAgICAgICAgICAgIGlmKGF0dHIgPT09ICd2YWx1ZScgJiYgY3R4Lmlnbm9yZUFjdGl2ZVZhbHVlICYmIHRvID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KXtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjdHguY2FsbGJhY2tzLmJlZm9yZUF0dHJpYnV0ZVVwZGF0ZWQoYXR0ciwgdG8sIHVwZGF0ZVR5cGUpID09PSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBzeW5jcyBhIGdpdmVuIG5vZGUgd2l0aCBhbm90aGVyIG5vZGUsIGNvcHlpbmcgb3ZlciBhbGwgYXR0cmlidXRlcyBhbmRcbiAgICAgICAgICogaW5uZXIgZWxlbWVudCBzdGF0ZSBmcm9tIHRoZSAnZnJvbScgbm9kZSB0byB0aGUgJ3RvJyBub2RlXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZnJvbSB0aGUgZWxlbWVudCB0byBjb3B5IGF0dHJpYnV0ZXMgJiBzdGF0ZSBmcm9tXG4gICAgICAgICAqIEBwYXJhbSB7RWxlbWVudH0gdG8gdGhlIGVsZW1lbnQgdG8gY29weSBhdHRyaWJ1dGVzICYgc3RhdGUgdG9cbiAgICAgICAgICogQHBhcmFtIGN0eCB0aGUgbWVyZ2UgY29udGV4dFxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gc3luY05vZGVGcm9tKGZyb20sIHRvLCBjdHgpIHtcbiAgICAgICAgICAgIGxldCB0eXBlID0gZnJvbS5ub2RlVHlwZTtcblxuICAgICAgICAgICAgLy8gaWYgaXMgYW4gZWxlbWVudCB0eXBlLCBzeW5jIHRoZSBhdHRyaWJ1dGVzIGZyb20gdGhlXG4gICAgICAgICAgICAvLyBuZXcgbm9kZSBpbnRvIHRoZSBuZXcgbm9kZVxuICAgICAgICAgICAgaWYgKHR5cGUgPT09IDEgLyogZWxlbWVudCB0eXBlICovKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZnJvbUF0dHJpYnV0ZXMgPSBmcm9tLmF0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgY29uc3QgdG9BdHRyaWJ1dGVzID0gdG8uYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZyb21BdHRyaWJ1dGUgb2YgZnJvbUF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlnbm9yZUF0dHJpYnV0ZShmcm9tQXR0cmlidXRlLm5hbWUsIHRvLCAndXBkYXRlJywgY3R4KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvLmdldEF0dHJpYnV0ZShmcm9tQXR0cmlidXRlLm5hbWUpICE9PSBmcm9tQXR0cmlidXRlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0by5zZXRBdHRyaWJ1dGUoZnJvbUF0dHJpYnV0ZS5uYW1lLCBmcm9tQXR0cmlidXRlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBpdGVyYXRlIGJhY2t3YXJkcyB0byBhdm9pZCBza2lwcGluZyBvdmVyIGl0ZW1zIHdoZW4gYSBkZWxldGUgb2NjdXJzXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IHRvQXR0cmlidXRlcy5sZW5ndGggLSAxOyAwIDw9IGk7IGktLSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b0F0dHJpYnV0ZSA9IHRvQXR0cmlidXRlc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlnbm9yZUF0dHJpYnV0ZSh0b0F0dHJpYnV0ZS5uYW1lLCB0bywgJ3JlbW92ZScsIGN0eCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghZnJvbS5oYXNBdHRyaWJ1dGUodG9BdHRyaWJ1dGUubmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvLnJlbW92ZUF0dHJpYnV0ZSh0b0F0dHJpYnV0ZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gc3luYyB0ZXh0IG5vZGVzXG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gOCAvKiBjb21tZW50ICovIHx8IHR5cGUgPT09IDMgLyogdGV4dCAqLykge1xuICAgICAgICAgICAgICAgIGlmICh0by5ub2RlVmFsdWUgIT09IGZyb20ubm9kZVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvLm5vZGVWYWx1ZSA9IGZyb20ubm9kZVZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpZ25vcmVWYWx1ZU9mQWN0aXZlRWxlbWVudCh0bywgY3R4KSkge1xuICAgICAgICAgICAgICAgIC8vIHN5bmMgaW5wdXQgdmFsdWVzXG4gICAgICAgICAgICAgICAgc3luY0lucHV0VmFsdWUoZnJvbSwgdG8sIGN0eCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogQHBhcmFtIGZyb20ge0VsZW1lbnR9IGVsZW1lbnQgdG8gc3luYyB0aGUgdmFsdWUgZnJvbVxuICAgICAgICAgKiBAcGFyYW0gdG8ge0VsZW1lbnR9IGVsZW1lbnQgdG8gc3luYyB0aGUgdmFsdWUgdG9cbiAgICAgICAgICogQHBhcmFtIGF0dHJpYnV0ZU5hbWUge1N0cmluZ30gdGhlIGF0dHJpYnV0ZSBuYW1lXG4gICAgICAgICAqIEBwYXJhbSBjdHggdGhlIG1lcmdlIGNvbnRleHRcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHN5bmNCb29sZWFuQXR0cmlidXRlKGZyb20sIHRvLCBhdHRyaWJ1dGVOYW1lLCBjdHgpIHtcbiAgICAgICAgICAgIGlmIChmcm9tW2F0dHJpYnV0ZU5hbWVdICE9PSB0b1thdHRyaWJ1dGVOYW1lXSkge1xuICAgICAgICAgICAgICAgIGxldCBpZ25vcmVVcGRhdGUgPSBpZ25vcmVBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgdG8sICd1cGRhdGUnLCBjdHgpO1xuICAgICAgICAgICAgICAgIGlmICghaWdub3JlVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvW2F0dHJpYnV0ZU5hbWVdID0gZnJvbVthdHRyaWJ1dGVOYW1lXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZyb21bYXR0cmlidXRlTmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpZ25vcmVVcGRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBmcm9tW2F0dHJpYnV0ZU5hbWVdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaWdub3JlQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIHRvLCAncmVtb3ZlJywgY3R4KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG8ucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIE5COiBtYW55IGJvdGhhbnMgZGllZCB0byBicmluZyB1cyBpbmZvcm1hdGlvbjpcbiAgICAgICAgICpcbiAgICAgICAgICogIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXRyaWNrLXN0ZWVsZS1pZGVtL21vcnBoZG9tL2Jsb2IvbWFzdGVyL3NyYy9zcGVjaWFsRWxIYW5kbGVycy5qc1xuICAgICAgICAgKiAgaHR0cHM6Ly9naXRodWIuY29tL2Nob29qcy9uYW5vbW9ycGgvYmxvYi9tYXN0ZXIvbGliL21vcnBoLmpzTDExM1xuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gZnJvbSB7RWxlbWVudH0gdGhlIGVsZW1lbnQgdG8gc3luYyB0aGUgaW5wdXQgdmFsdWUgZnJvbVxuICAgICAgICAgKiBAcGFyYW0gdG8ge0VsZW1lbnR9IHRoZSBlbGVtZW50IHRvIHN5bmMgdGhlIGlucHV0IHZhbHVlIHRvXG4gICAgICAgICAqIEBwYXJhbSBjdHggdGhlIG1lcmdlIGNvbnRleHRcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHN5bmNJbnB1dFZhbHVlKGZyb20sIHRvLCBjdHgpIHtcbiAgICAgICAgICAgIGlmIChmcm9tIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJlxuICAgICAgICAgICAgICAgIHRvIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJlxuICAgICAgICAgICAgICAgIGZyb20udHlwZSAhPT0gJ2ZpbGUnKSB7XG5cbiAgICAgICAgICAgICAgICBsZXQgZnJvbVZhbHVlID0gZnJvbS52YWx1ZTtcbiAgICAgICAgICAgICAgICBsZXQgdG9WYWx1ZSA9IHRvLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgLy8gc3luYyBib29sZWFuIGF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICBzeW5jQm9vbGVhbkF0dHJpYnV0ZShmcm9tLCB0bywgJ2NoZWNrZWQnLCBjdHgpO1xuICAgICAgICAgICAgICAgIHN5bmNCb29sZWFuQXR0cmlidXRlKGZyb20sIHRvLCAnZGlzYWJsZWQnLCBjdHgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFmcm9tLmhhc0F0dHJpYnV0ZSgndmFsdWUnKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlnbm9yZUF0dHJpYnV0ZSgndmFsdWUnLCB0bywgJ3JlbW92ZScsIGN0eCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvLnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB0by5yZW1vdmVBdHRyaWJ1dGUoJ3ZhbHVlJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZyb21WYWx1ZSAhPT0gdG9WYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlnbm9yZUF0dHJpYnV0ZSgndmFsdWUnLCB0bywgJ3VwZGF0ZScsIGN0eCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBmcm9tVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdG8udmFsdWUgPSBmcm9tVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZyb20gaW5zdGFuY2VvZiBIVE1MT3B0aW9uRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHN5bmNCb29sZWFuQXR0cmlidXRlKGZyb20sIHRvLCAnc2VsZWN0ZWQnLCBjdHgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmcm9tIGluc3RhbmNlb2YgSFRNTFRleHRBcmVhRWxlbWVudCAmJiB0byBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBsZXQgZnJvbVZhbHVlID0gZnJvbS52YWx1ZTtcbiAgICAgICAgICAgICAgICBsZXQgdG9WYWx1ZSA9IHRvLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmIChpZ25vcmVBdHRyaWJ1dGUoJ3ZhbHVlJywgdG8sICd1cGRhdGUnLCBjdHgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZyb21WYWx1ZSAhPT0gdG9WYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0by52YWx1ZSA9IGZyb21WYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRvLmZpcnN0Q2hpbGQgJiYgdG8uZmlyc3RDaGlsZC5ub2RlVmFsdWUgIT09IGZyb21WYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0by5maXJzdENoaWxkLm5vZGVWYWx1ZSA9IGZyb21WYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIC8vIHRoZSBIRUFEIHRhZyBjYW4gYmUgaGFuZGxlZCBzcGVjaWFsbHksIGVpdGhlciB3LyBhICdtZXJnZScgb3IgJ2FwcGVuZCcgc3R5bGVcbiAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICBmdW5jdGlvbiBoYW5kbGVIZWFkRWxlbWVudChuZXdIZWFkVGFnLCBjdXJyZW50SGVhZCwgY3R4KSB7XG5cbiAgICAgICAgICAgIGxldCBhZGRlZCA9IFtdO1xuICAgICAgICAgICAgbGV0IHJlbW92ZWQgPSBbXTtcbiAgICAgICAgICAgIGxldCBwcmVzZXJ2ZWQgPSBbXTtcbiAgICAgICAgICAgIGxldCBub2Rlc1RvQXBwZW5kID0gW107XG5cbiAgICAgICAgICAgIGxldCBoZWFkTWVyZ2VTdHlsZSA9IGN0eC5oZWFkLnN0eWxlO1xuXG4gICAgICAgICAgICAvLyBwdXQgYWxsIG5ldyBoZWFkIGVsZW1lbnRzIGludG8gYSBNYXAsIGJ5IHRoZWlyIG91dGVySFRNTFxuICAgICAgICAgICAgbGV0IHNyY1RvTmV3SGVhZE5vZGVzID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBuZXdIZWFkQ2hpbGQgb2YgbmV3SGVhZFRhZy5jaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIHNyY1RvTmV3SGVhZE5vZGVzLnNldChuZXdIZWFkQ2hpbGQub3V0ZXJIVE1MLCBuZXdIZWFkQ2hpbGQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBmb3IgZWFjaCBlbHQgaW4gdGhlIGN1cnJlbnQgaGVhZFxuICAgICAgICAgICAgZm9yIChjb25zdCBjdXJyZW50SGVhZEVsdCBvZiBjdXJyZW50SGVhZC5jaGlsZHJlbikge1xuXG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgaGVhZCBlbGVtZW50IGlzIGluIHRoZSBtYXBcbiAgICAgICAgICAgICAgICBsZXQgaW5OZXdDb250ZW50ID0gc3JjVG9OZXdIZWFkTm9kZXMuaGFzKGN1cnJlbnRIZWFkRWx0Lm91dGVySFRNTCk7XG4gICAgICAgICAgICAgICAgbGV0IGlzUmVBcHBlbmRlZCA9IGN0eC5oZWFkLnNob3VsZFJlQXBwZW5kKGN1cnJlbnRIZWFkRWx0KTtcbiAgICAgICAgICAgICAgICBsZXQgaXNQcmVzZXJ2ZWQgPSBjdHguaGVhZC5zaG91bGRQcmVzZXJ2ZShjdXJyZW50SGVhZEVsdCk7XG4gICAgICAgICAgICAgICAgaWYgKGluTmV3Q29udGVudCB8fCBpc1ByZXNlcnZlZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNSZUFwcGVuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgdGhlIGN1cnJlbnQgdmVyc2lvbiBhbmQgbGV0IHRoZSBuZXcgdmVyc2lvbiByZXBsYWNlIGl0IGFuZCByZS1leGVjdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVkLnB1c2goY3VycmVudEhlYWRFbHQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBlbGVtZW50IGFscmVhZHkgZXhpc3RzIGFuZCBzaG91bGQgbm90IGJlIHJlLWFwcGVuZGVkLCBzbyByZW1vdmUgaXQgZnJvbVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG5ldyBjb250ZW50IG1hcCwgcHJlc2VydmluZyBpdCBpbiB0aGUgRE9NXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmNUb05ld0hlYWROb2Rlcy5kZWxldGUoY3VycmVudEhlYWRFbHQub3V0ZXJIVE1MKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlcnZlZC5wdXNoKGN1cnJlbnRIZWFkRWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoZWFkTWVyZ2VTdHlsZSA9PT0gXCJhcHBlbmRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgYXJlIGFwcGVuZGluZyBhbmQgdGhpcyBleGlzdGluZyBlbGVtZW50IGlzIG5vdCBuZXcgY29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc28gaWYgYW5kIG9ubHkgaWYgaXQgaXMgbWFya2VkIGZvciByZS1hcHBlbmQgZG8gd2UgZG8gYW55dGhpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1JlQXBwZW5kZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVkLnB1c2goY3VycmVudEhlYWRFbHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzVG9BcHBlbmQucHVzaChjdXJyZW50SGVhZEVsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGlzIGlzIGEgbWVyZ2UsIHdlIHJlbW92ZSB0aGlzIGNvbnRlbnQgc2luY2UgaXQgaXMgbm90IGluIHRoZSBuZXcgaGVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN0eC5oZWFkLnNob3VsZFJlbW92ZShjdXJyZW50SGVhZEVsdCkgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZC5wdXNoKGN1cnJlbnRIZWFkRWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUHVzaCB0aGUgcmVtYWluaW5nIG5ldyBoZWFkIGVsZW1lbnRzIGluIHRoZSBNYXAgaW50byB0aGVcbiAgICAgICAgICAgIC8vIG5vZGVzIHRvIGFwcGVuZCB0byB0aGUgaGVhZCB0YWdcbiAgICAgICAgICAgIG5vZGVzVG9BcHBlbmQucHVzaCguLi5zcmNUb05ld0hlYWROb2Rlcy52YWx1ZXMoKSk7XG5cbiAgICAgICAgICAgIGxldCBwcm9taXNlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBuZXdOb2RlIG9mIG5vZGVzVG9BcHBlbmQpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3RWx0ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQobmV3Tm9kZS5vdXRlckhUTUwpLmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgICAgICAgaWYgKGN0eC5jYWxsYmFja3MuYmVmb3JlTm9kZUFkZGVkKG5ld0VsdCkgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdFbHQuaHJlZiB8fCBuZXdFbHQuc3JjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzb2x2ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChfcmVzb2x2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUgPSBfcmVzb2x2ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3RWx0LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRIZWFkLmFwcGVuZENoaWxkKG5ld0VsdCk7XG4gICAgICAgICAgICAgICAgICAgIGN0eC5jYWxsYmFja3MuYWZ0ZXJOb2RlQWRkZWQobmV3RWx0KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkZWQucHVzaChuZXdFbHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gcmVtb3ZlIGFsbCByZW1vdmVkIGVsZW1lbnRzLCBhZnRlciB3ZSBoYXZlIGFwcGVuZGVkIHRoZSBuZXcgZWxlbWVudHMgdG8gYXZvaWRcbiAgICAgICAgICAgIC8vIGFkZGl0aW9uYWwgbmV0d29yayByZXF1ZXN0cyBmb3IgdGhpbmdzIGxpa2Ugc3R5bGUgc2hlZXRzXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlbW92ZWRFbGVtZW50IG9mIHJlbW92ZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3R4LmNhbGxiYWNrcy5iZWZvcmVOb2RlUmVtb3ZlZChyZW1vdmVkRWxlbWVudCkgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRIZWFkLnJlbW92ZUNoaWxkKHJlbW92ZWRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgY3R4LmNhbGxiYWNrcy5hZnRlck5vZGVSZW1vdmVkKHJlbW92ZWRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGN0eC5oZWFkLmFmdGVySGVhZE1vcnBoZWQoY3VycmVudEhlYWQsIHthZGRlZDogYWRkZWQsIGtlcHQ6IHByZXNlcnZlZCwgcmVtb3ZlZDogcmVtb3ZlZH0pO1xuICAgICAgICAgICAgcmV0dXJuIHByb21pc2VzO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbm9PcCgpIHtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qXG4gICAgICAgICAgRGVlcCBtZXJnZXMgdGhlIGNvbmZpZyBvYmplY3QgYW5kIHRoZSBJZGlvbW9yb3BoLmRlZmF1bHRzIG9iamVjdCB0b1xuICAgICAgICAgIHByb2R1Y2UgYSBmaW5hbCBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gbWVyZ2VEZWZhdWx0cyhjb25maWcpIHtcbiAgICAgICAgICAgIGxldCBmaW5hbENvbmZpZyA9IHt9O1xuICAgICAgICAgICAgLy8gY29weSB0b3AgbGV2ZWwgc3R1ZmYgaW50byBmaW5hbCBjb25maWdcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZmluYWxDb25maWcsIGRlZmF1bHRzKTtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZmluYWxDb25maWcsIGNvbmZpZyk7XG5cbiAgICAgICAgICAgIC8vIGNvcHkgY2FsbGJhY2tzIGludG8gZmluYWwgY29uZmlnIChkbyB0aGlzIHRvIGRlZXAgbWVyZ2UgdGhlIGNhbGxiYWNrcylcbiAgICAgICAgICAgIGZpbmFsQ29uZmlnLmNhbGxiYWNrcyA9IHt9O1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihmaW5hbENvbmZpZy5jYWxsYmFja3MsIGRlZmF1bHRzLmNhbGxiYWNrcyk7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGZpbmFsQ29uZmlnLmNhbGxiYWNrcywgY29uZmlnLmNhbGxiYWNrcyk7XG5cbiAgICAgICAgICAgIC8vIGNvcHkgaGVhZCBjb25maWcgaW50byBmaW5hbCBjb25maWcgIChkbyB0aGlzIHRvIGRlZXAgbWVyZ2UgdGhlIGhlYWQpXG4gICAgICAgICAgICBmaW5hbENvbmZpZy5oZWFkID0ge307XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGZpbmFsQ29uZmlnLmhlYWQsIGRlZmF1bHRzLmhlYWQpO1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihmaW5hbENvbmZpZy5oZWFkLCBjb25maWcuaGVhZCk7XG4gICAgICAgICAgICByZXR1cm4gZmluYWxDb25maWc7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBjcmVhdGVNb3JwaENvbnRleHQob2xkTm9kZSwgbmV3Q29udGVudCwgY29uZmlnKSB7XG4gICAgICAgICAgICBjb25maWcgPSBtZXJnZURlZmF1bHRzKGNvbmZpZyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRhcmdldDogb2xkTm9kZSxcbiAgICAgICAgICAgICAgICBuZXdDb250ZW50OiBuZXdDb250ZW50LFxuICAgICAgICAgICAgICAgIGNvbmZpZzogY29uZmlnLFxuICAgICAgICAgICAgICAgIG1vcnBoU3R5bGU6IGNvbmZpZy5tb3JwaFN0eWxlLFxuICAgICAgICAgICAgICAgIGlnbm9yZUFjdGl2ZTogY29uZmlnLmlnbm9yZUFjdGl2ZSxcbiAgICAgICAgICAgICAgICBpZ25vcmVBY3RpdmVWYWx1ZTogY29uZmlnLmlnbm9yZUFjdGl2ZVZhbHVlLFxuICAgICAgICAgICAgICAgIGlkTWFwOiBjcmVhdGVJZE1hcChvbGROb2RlLCBuZXdDb250ZW50KSxcbiAgICAgICAgICAgICAgICBkZWFkSWRzOiBuZXcgU2V0KCksXG4gICAgICAgICAgICAgICAgY2FsbGJhY2tzOiBjb25maWcuY2FsbGJhY2tzLFxuICAgICAgICAgICAgICAgIGhlYWQ6IGNvbmZpZy5oZWFkXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBpc0lkU2V0TWF0Y2gobm9kZTEsIG5vZGUyLCBjdHgpIHtcbiAgICAgICAgICAgIGlmIChub2RlMSA9PSBudWxsIHx8IG5vZGUyID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm9kZTEubm9kZVR5cGUgPT09IG5vZGUyLm5vZGVUeXBlICYmIG5vZGUxLnRhZ05hbWUgPT09IG5vZGUyLnRhZ05hbWUpIHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZTEuaWQgIT09IFwiXCIgJiYgbm9kZTEuaWQgPT09IG5vZGUyLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRJZEludGVyc2VjdGlvbkNvdW50KGN0eCwgbm9kZTEsIG5vZGUyKSA+IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gaXNTb2Z0TWF0Y2gobm9kZTEsIG5vZGUyKSB7XG4gICAgICAgICAgICBpZiAobm9kZTEgPT0gbnVsbCB8fCBub2RlMiA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5vZGUxLm5vZGVUeXBlID09PSBub2RlMi5ub2RlVHlwZSAmJiBub2RlMS50YWdOYW1lID09PSBub2RlMi50YWdOYW1lXG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiByZW1vdmVOb2Rlc0JldHdlZW4oc3RhcnRJbmNsdXNpdmUsIGVuZEV4Y2x1c2l2ZSwgY3R4KSB7XG4gICAgICAgICAgICB3aGlsZSAoc3RhcnRJbmNsdXNpdmUgIT09IGVuZEV4Y2x1c2l2ZSkge1xuICAgICAgICAgICAgICAgIGxldCB0ZW1wTm9kZSA9IHN0YXJ0SW5jbHVzaXZlO1xuICAgICAgICAgICAgICAgIHN0YXJ0SW5jbHVzaXZlID0gc3RhcnRJbmNsdXNpdmUubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgcmVtb3ZlTm9kZSh0ZW1wTm9kZSwgY3R4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlbW92ZUlkc0Zyb21Db25zaWRlcmF0aW9uKGN0eCwgZW5kRXhjbHVzaXZlKTtcbiAgICAgICAgICAgIHJldHVybiBlbmRFeGNsdXNpdmUubmV4dFNpYmxpbmc7XG4gICAgICAgIH1cblxuICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIC8vIFNjYW5zIGZvcndhcmQgZnJvbSB0aGUgaW5zZXJ0aW9uUG9pbnQgaW4gdGhlIG9sZCBwYXJlbnQgbG9va2luZyBmb3IgYSBwb3RlbnRpYWwgaWQgbWF0Y2hcbiAgICAgICAgLy8gZm9yIHRoZSBuZXdDaGlsZC4gIFdlIHN0b3AgaWYgd2UgZmluZCBhIHBvdGVudGlhbCBpZCBtYXRjaCBmb3IgdGhlIG5ldyBjaGlsZCBPUlxuICAgICAgICAvLyBpZiB0aGUgbnVtYmVyIG9mIHBvdGVudGlhbCBpZCBtYXRjaGVzIHdlIGFyZSBkaXNjYXJkaW5nIGlzIGdyZWF0ZXIgdGhhbiB0aGVcbiAgICAgICAgLy8gcG90ZW50aWFsIGlkIG1hdGNoZXMgZm9yIHRoZSBuZXcgY2hpbGRcbiAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICBmdW5jdGlvbiBmaW5kSWRTZXRNYXRjaChuZXdDb250ZW50LCBvbGRQYXJlbnQsIG5ld0NoaWxkLCBpbnNlcnRpb25Qb2ludCwgY3R4KSB7XG5cbiAgICAgICAgICAgIC8vIG1heCBpZCBtYXRjaGVzIHdlIGFyZSB3aWxsaW5nIHRvIGRpc2NhcmQgaW4gb3VyIHNlYXJjaFxuICAgICAgICAgICAgbGV0IG5ld0NoaWxkUG90ZW50aWFsSWRDb3VudCA9IGdldElkSW50ZXJzZWN0aW9uQ291bnQoY3R4LCBuZXdDaGlsZCwgb2xkUGFyZW50KTtcblxuICAgICAgICAgICAgbGV0IHBvdGVudGlhbE1hdGNoID0gbnVsbDtcblxuICAgICAgICAgICAgLy8gb25seSBzZWFyY2ggZm9yd2FyZCBpZiB0aGVyZSBpcyBhIHBvc3NpYmlsaXR5IG9mIGFuIGlkIG1hdGNoXG4gICAgICAgICAgICBpZiAobmV3Q2hpbGRQb3RlbnRpYWxJZENvdW50ID4gMCkge1xuICAgICAgICAgICAgICAgIGxldCBwb3RlbnRpYWxNYXRjaCA9IGluc2VydGlvblBvaW50O1xuICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgcG9zc2liaWxpdHkgb2YgYW4gaWQgbWF0Y2gsIHNjYW4gZm9yd2FyZFxuICAgICAgICAgICAgICAgIC8vIGtlZXAgdHJhY2sgb2YgdGhlIHBvdGVudGlhbCBpZCBtYXRjaCBjb3VudCB3ZSBhcmUgZGlzY2FyZGluZyAodGhlXG4gICAgICAgICAgICAgICAgLy8gbmV3Q2hpbGRQb3RlbnRpYWxJZENvdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoaXMgdG8gbWFrZSBpdCBsaWtlbHlcbiAgICAgICAgICAgICAgICAvLyB3b3J0aCBpdClcbiAgICAgICAgICAgICAgICBsZXQgb3RoZXJNYXRjaENvdW50ID0gMDtcbiAgICAgICAgICAgICAgICB3aGlsZSAocG90ZW50aWFsTWF0Y2ggIT0gbnVsbCkge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYW4gaWQgbWF0Y2gsIHJldHVybiB0aGUgY3VycmVudCBwb3RlbnRpYWwgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzSWRTZXRNYXRjaChuZXdDaGlsZCwgcG90ZW50aWFsTWF0Y2gsIGN0eCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwb3RlbnRpYWxNYXRjaDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbXB1dGVyIHRoZSBvdGhlciBwb3RlbnRpYWwgbWF0Y2hlcyBvZiB0aGlzIG5ldyBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIG90aGVyTWF0Y2hDb3VudCArPSBnZXRJZEludGVyc2VjdGlvbkNvdW50KGN0eCwgcG90ZW50aWFsTWF0Y2gsIG5ld0NvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJNYXRjaENvdW50ID4gbmV3Q2hpbGRQb3RlbnRpYWxJZENvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB3ZSBoYXZlIG1vcmUgcG90ZW50aWFsIGlkIG1hdGNoZXMgaW4gX290aGVyXyBjb250ZW50LCB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG8gbm90IGhhdmUgYSBnb29kIGNhbmRpZGF0ZSBmb3IgYW4gaWQgbWF0Y2gsIHNvIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIGFkdmFuY2VkIHRvIHRoZSBuZXh0IG9sZCBjb250ZW50IGNoaWxkXG4gICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbE1hdGNoID0gcG90ZW50aWFsTWF0Y2gubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBvdGVudGlhbE1hdGNoO1xuICAgICAgICB9XG5cbiAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAvLyBTY2FucyBmb3J3YXJkIGZyb20gdGhlIGluc2VydGlvblBvaW50IGluIHRoZSBvbGQgcGFyZW50IGxvb2tpbmcgZm9yIGEgcG90ZW50aWFsIHNvZnQgbWF0Y2hcbiAgICAgICAgLy8gZm9yIHRoZSBuZXdDaGlsZC4gIFdlIHN0b3AgaWYgd2UgZmluZCBhIHBvdGVudGlhbCBzb2Z0IG1hdGNoIGZvciB0aGUgbmV3IGNoaWxkIE9SXG4gICAgICAgIC8vIGlmIHdlIGZpbmQgYSBwb3RlbnRpYWwgaWQgbWF0Y2ggaW4gdGhlIG9sZCBwYXJlbnRzIGNoaWxkcmVuIE9SIGlmIHdlIGZpbmQgdHdvXG4gICAgICAgIC8vIHBvdGVudGlhbCBzb2Z0IG1hdGNoZXMgZm9yIHRoZSBuZXh0IHR3byBwaWVjZXMgb2YgbmV3IGNvbnRlbnRcbiAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICBmdW5jdGlvbiBmaW5kU29mdE1hdGNoKG5ld0NvbnRlbnQsIG9sZFBhcmVudCwgbmV3Q2hpbGQsIGluc2VydGlvblBvaW50LCBjdHgpIHtcblxuICAgICAgICAgICAgbGV0IHBvdGVudGlhbFNvZnRNYXRjaCA9IGluc2VydGlvblBvaW50O1xuICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gbmV3Q2hpbGQubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICBsZXQgc2libGluZ1NvZnRNYXRjaENvdW50ID0gMDtcblxuICAgICAgICAgICAgd2hpbGUgKHBvdGVudGlhbFNvZnRNYXRjaCAhPSBudWxsKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoZ2V0SWRJbnRlcnNlY3Rpb25Db3VudChjdHgsIHBvdGVudGlhbFNvZnRNYXRjaCwgbmV3Q29udGVudCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjdXJyZW50IHBvdGVudGlhbCBzb2Z0IG1hdGNoIGhhcyBhIHBvdGVudGlhbCBpZCBzZXQgbWF0Y2ggd2l0aCB0aGUgcmVtYWluaW5nIG5ld1xuICAgICAgICAgICAgICAgICAgICAvLyBjb250ZW50IHNvIGJhaWwgb3V0IG9mIGxvb2tpbmdcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gaWYgd2UgaGF2ZSBhIHNvZnQgbWF0Y2ggd2l0aCB0aGUgY3VycmVudCBub2RlLCByZXR1cm4gaXRcbiAgICAgICAgICAgICAgICBpZiAoaXNTb2Z0TWF0Y2gobmV3Q2hpbGQsIHBvdGVudGlhbFNvZnRNYXRjaCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvdGVudGlhbFNvZnRNYXRjaDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNTb2Z0TWF0Y2gobmV4dFNpYmxpbmcsIHBvdGVudGlhbFNvZnRNYXRjaCkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG5leHQgbmV3IG5vZGUgaGFzIGEgc29mdCBtYXRjaCB3aXRoIHRoaXMgbm9kZSwgc29cbiAgICAgICAgICAgICAgICAgICAgLy8gaW5jcmVtZW50IHRoZSBjb3VudCBvZiBmdXR1cmUgc29mdCBtYXRjaGVzXG4gICAgICAgICAgICAgICAgICAgIHNpYmxpbmdTb2Z0TWF0Y2hDb3VudCsrO1xuICAgICAgICAgICAgICAgICAgICBuZXh0U2libGluZyA9IG5leHRTaWJsaW5nLm5leHRTaWJsaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSB0d28gZnV0dXJlIHNvZnQgbWF0Y2hlcywgYmFpbCB0byBhbGxvdyB0aGUgc2libGluZ3MgdG8gc29mdCBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAvLyBzbyB0aGF0IHdlIGRvbid0IGNvbnN1bWUgZnV0dXJlIHNvZnQgbWF0Y2hlcyBmb3IgdGhlIHNha2Ugb2YgdGhlIGN1cnJlbnQgbm9kZVxuICAgICAgICAgICAgICAgICAgICBpZiAoc2libGluZ1NvZnRNYXRjaENvdW50ID49IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gYWR2YW5jZWQgdG8gdGhlIG5leHQgb2xkIGNvbnRlbnQgY2hpbGRcbiAgICAgICAgICAgICAgICBwb3RlbnRpYWxTb2Z0TWF0Y2ggPSBwb3RlbnRpYWxTb2Z0TWF0Y2gubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBwb3RlbnRpYWxTb2Z0TWF0Y2g7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBwYXJzZUNvbnRlbnQobmV3Q29udGVudCkge1xuICAgICAgICAgICAgbGV0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcblxuICAgICAgICAgICAgLy8gcmVtb3ZlIHN2Z3MgdG8gYXZvaWQgZmFsc2UtcG9zaXRpdmUgbWF0Y2hlcyBvbiBoZWFkLCBldGMuXG4gICAgICAgICAgICBsZXQgY29udGVudFdpdGhTdmdzUmVtb3ZlZCA9IG5ld0NvbnRlbnQucmVwbGFjZSgvPHN2ZyhcXHNbXj5dKj58PikoW1xcc1xcU10qPyk8XFwvc3ZnPi9naW0sICcnKTtcblxuICAgICAgICAgICAgLy8gaWYgdGhlIG5ld0NvbnRlbnQgY29udGFpbnMgYSBodG1sLCBoZWFkIG9yIGJvZHkgdGFnLCB3ZSBjYW4gc2ltcGx5IHBhcnNlIGl0IHcvbyB3cmFwcGluZ1xuICAgICAgICAgICAgaWYgKGNvbnRlbnRXaXRoU3Znc1JlbW92ZWQubWF0Y2goLzxcXC9odG1sPi8pIHx8IGNvbnRlbnRXaXRoU3Znc1JlbW92ZWQubWF0Y2goLzxcXC9oZWFkPi8pIHx8IGNvbnRlbnRXaXRoU3Znc1JlbW92ZWQubWF0Y2goLzxcXC9ib2R5Pi8pKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKG5ld0NvbnRlbnQsIFwidGV4dC9odG1sXCIpO1xuICAgICAgICAgICAgICAgIC8vIGlmIGl0IGlzIGEgZnVsbCBIVE1MIGRvY3VtZW50LCByZXR1cm4gdGhlIGRvY3VtZW50IGl0c2VsZiBhcyB0aGUgcGFyZW50IGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGlmIChjb250ZW50V2l0aFN2Z3NSZW1vdmVkLm1hdGNoKC88XFwvaHRtbD4vKSkge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50LmdlbmVyYXRlZEJ5SWRpb21vcnBoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHJldHVybiB0aGUgaHRtbCBlbGVtZW50IGFzIHRoZSBwYXJlbnQgY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIGxldCBodG1sRWxlbWVudCA9IGNvbnRlbnQuZmlyc3RDaGlsZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGh0bWxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sRWxlbWVudC5nZW5lcmF0ZWRCeUlkaW9tb3JwaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaHRtbEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgaXQgaXMgcGFydGlhbCBIVE1MLCB3cmFwIGl0IGluIGEgdGVtcGxhdGUgdGFnIHRvIHByb3ZpZGUgYSBwYXJlbnQgZWxlbWVudCBhbmQgYWxzbyB0byBoZWxwXG4gICAgICAgICAgICAgICAgLy8gZGVhbCB3aXRoIHRvdWNoeSB0YWdzIGxpa2UgdHIsIHRib2R5LCBldGMuXG4gICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlRG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhcIjxib2R5Pjx0ZW1wbGF0ZT5cIiArIG5ld0NvbnRlbnQgKyBcIjwvdGVtcGxhdGU+PC9ib2R5PlwiLCBcInRleHQvaHRtbFwiKTtcbiAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9IHJlc3BvbnNlRG9jLmJvZHkucXVlcnlTZWxlY3RvcigndGVtcGxhdGUnKS5jb250ZW50O1xuICAgICAgICAgICAgICAgIGNvbnRlbnQuZ2VuZXJhdGVkQnlJZGlvbW9ycGggPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBub3JtYWxpemVDb250ZW50KG5ld0NvbnRlbnQpIHtcbiAgICAgICAgICAgIGlmIChuZXdDb250ZW50ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyBub2luc3BlY3Rpb24gVW5uZWNlc3NhcnlMb2NhbFZhcmlhYmxlSlNcbiAgICAgICAgICAgICAgICBjb25zdCBkdW1teVBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkdW1teVBhcmVudDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobmV3Q29udGVudC5nZW5lcmF0ZWRCeUlkaW9tb3JwaCkge1xuICAgICAgICAgICAgICAgIC8vIHRoZSB0ZW1wbGF0ZSB0YWcgY3JlYXRlZCBieSBpZGlvbW9ycGggcGFyc2luZyBjYW4gc2VydmUgYXMgYSBkdW1teSBwYXJlbnRcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3Q29udGVudDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobmV3Q29udGVudCBpbnN0YW5jZW9mIE5vZGUpIHtcbiAgICAgICAgICAgICAgICAvLyBhIHNpbmdsZSBub2RlIGlzIGFkZGVkIGFzIGEgY2hpbGQgdG8gYSBkdW1teSBwYXJlbnRcbiAgICAgICAgICAgICAgICBjb25zdCBkdW1teVBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgICAgIGR1bW15UGFyZW50LmFwcGVuZChuZXdDb250ZW50KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZHVtbXlQYXJlbnQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGFsbCBub2RlcyBpbiB0aGUgYXJyYXkgb3IgSFRNTEVsZW1lbnQgY29sbGVjdGlvbiBhcmUgY29uc29saWRhdGVkIHVuZGVyXG4gICAgICAgICAgICAgICAgLy8gYSBzaW5nbGUgZHVtbXkgcGFyZW50IGVsZW1lbnRcbiAgICAgICAgICAgICAgICBjb25zdCBkdW1teVBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZWx0IG9mIFsuLi5uZXdDb250ZW50XSkge1xuICAgICAgICAgICAgICAgICAgICBkdW1teVBhcmVudC5hcHBlbmQoZWx0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGR1bW15UGFyZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gaW5zZXJ0U2libGluZ3MocHJldmlvdXNTaWJsaW5nLCBtb3JwaGVkTm9kZSwgbmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgIGxldCBzdGFjayA9IFtdO1xuICAgICAgICAgICAgbGV0IGFkZGVkID0gW107XG4gICAgICAgICAgICB3aGlsZSAocHJldmlvdXNTaWJsaW5nICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzdGFjay5wdXNoKHByZXZpb3VzU2libGluZyk7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nID0gcHJldmlvdXNTaWJsaW5nLnByZXZpb3VzU2libGluZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5vZGUgPSBzdGFjay5wb3AoKTtcbiAgICAgICAgICAgICAgICBhZGRlZC5wdXNoKG5vZGUpOyAvLyBwdXNoIGFkZGVkIHByZWNlZGluZyBzaWJsaW5ncyBvbiBpbiBvcmRlciBhbmQgaW5zZXJ0XG4gICAgICAgICAgICAgICAgbW9ycGhlZE5vZGUucGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUobm9kZSwgbW9ycGhlZE5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWRkZWQucHVzaChtb3JwaGVkTm9kZSk7XG4gICAgICAgICAgICB3aGlsZSAobmV4dFNpYmxpbmcgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHN0YWNrLnB1c2gobmV4dFNpYmxpbmcpO1xuICAgICAgICAgICAgICAgIGFkZGVkLnB1c2gobmV4dFNpYmxpbmcpOyAvLyBoZXJlIHdlIGFyZSBnb2luZyBpbiBvcmRlciwgc28gcHVzaCBvbiBhcyB3ZSBzY2FuLCByYXRoZXIgdGhhbiBhZGRcbiAgICAgICAgICAgICAgICBuZXh0U2libGluZyA9IG5leHRTaWJsaW5nLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBtb3JwaGVkTm9kZS5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShzdGFjay5wb3AoKSwgbW9ycGhlZE5vZGUubmV4dFNpYmxpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFkZGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZmluZEJlc3ROb2RlTWF0Y2gobmV3Q29udGVudCwgb2xkTm9kZSwgY3R4KSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudEVsZW1lbnQ7XG4gICAgICAgICAgICBjdXJyZW50RWxlbWVudCA9IG5ld0NvbnRlbnQuZmlyc3RDaGlsZDtcbiAgICAgICAgICAgIGxldCBiZXN0RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHNjb3JlID0gMDtcbiAgICAgICAgICAgIHdoaWxlIChjdXJyZW50RWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGxldCBuZXdTY29yZSA9IHNjb3JlRWxlbWVudChjdXJyZW50RWxlbWVudCwgb2xkTm9kZSwgY3R4KTtcbiAgICAgICAgICAgICAgICBpZiAobmV3U2NvcmUgPiBzY29yZSkge1xuICAgICAgICAgICAgICAgICAgICBiZXN0RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBzY29yZSA9IG5ld1Njb3JlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50Lm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGJlc3RFbGVtZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gc2NvcmVFbGVtZW50KG5vZGUxLCBub2RlMiwgY3R4KSB7XG4gICAgICAgICAgICBpZiAoaXNTb2Z0TWF0Y2gobm9kZTEsIG5vZGUyKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAuNSArIGdldElkSW50ZXJzZWN0aW9uQ291bnQoY3R4LCBub2RlMSwgbm9kZTIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiByZW1vdmVOb2RlKHRlbXBOb2RlLCBjdHgpIHtcbiAgICAgICAgICAgIHJlbW92ZUlkc0Zyb21Db25zaWRlcmF0aW9uKGN0eCwgdGVtcE5vZGUpO1xuICAgICAgICAgICAgaWYgKGN0eC5jYWxsYmFja3MuYmVmb3JlTm9kZVJlbW92ZWQodGVtcE5vZGUpID09PSBmYWxzZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICB0ZW1wTm9kZS5yZW1vdmUoKTtcbiAgICAgICAgICAgIGN0eC5jYWxsYmFja3MuYWZ0ZXJOb2RlUmVtb3ZlZCh0ZW1wTm9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIC8vIElEIFNldCBGdW5jdGlvbnNcbiAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgICAgIGZ1bmN0aW9uIGlzSWRJbkNvbnNpZGVyYXRpb24oY3R4LCBpZCkge1xuICAgICAgICAgICAgcmV0dXJuICFjdHguZGVhZElkcy5oYXMoaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gaWRJc1dpdGhpbk5vZGUoY3R4LCBpZCwgdGFyZ2V0Tm9kZSkge1xuICAgICAgICAgICAgbGV0IGlkU2V0ID0gY3R4LmlkTWFwLmdldCh0YXJnZXROb2RlKSB8fCBFTVBUWV9TRVQ7XG4gICAgICAgICAgICByZXR1cm4gaWRTZXQuaGFzKGlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlbW92ZUlkc0Zyb21Db25zaWRlcmF0aW9uKGN0eCwgbm9kZSkge1xuICAgICAgICAgICAgbGV0IGlkU2V0ID0gY3R4LmlkTWFwLmdldChub2RlKSB8fCBFTVBUWV9TRVQ7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGlkIG9mIGlkU2V0KSB7XG4gICAgICAgICAgICAgICAgY3R4LmRlYWRJZHMuYWRkKGlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldElkSW50ZXJzZWN0aW9uQ291bnQoY3R4LCBub2RlMSwgbm9kZTIpIHtcbiAgICAgICAgICAgIGxldCBzb3VyY2VTZXQgPSBjdHguaWRNYXAuZ2V0KG5vZGUxKSB8fCBFTVBUWV9TRVQ7XG4gICAgICAgICAgICBsZXQgbWF0Y2hDb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGlkIG9mIHNvdXJjZVNldCkge1xuICAgICAgICAgICAgICAgIC8vIGEgcG90ZW50aWFsIG1hdGNoIGlzIGFuIGlkIGluIHRoZSBzb3VyY2UgYW5kIHBvdGVudGlhbElkc1NldCwgYnV0XG4gICAgICAgICAgICAgICAgLy8gdGhhdCBoYXMgbm90IGFscmVhZHkgYmVlbiBtZXJnZWQgaW50byB0aGUgRE9NXG4gICAgICAgICAgICAgICAgaWYgKGlzSWRJbkNvbnNpZGVyYXRpb24oY3R4LCBpZCkgJiYgaWRJc1dpdGhpbk5vZGUoY3R4LCBpZCwgbm9kZTIpKSB7XG4gICAgICAgICAgICAgICAgICAgICsrbWF0Y2hDb3VudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hDb3VudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIGJvdHRvbSB1cCBhbGdvcml0aG0gdGhhdCBmaW5kcyBhbGwgZWxlbWVudHMgd2l0aCBpZHMgaW5zaWRlIG9mIHRoZSBub2RlXG4gICAgICAgICAqIGFyZ3VtZW50IGFuZCBwb3B1bGF0ZXMgaWQgc2V0cyBmb3IgdGhvc2Ugbm9kZXMgYW5kIGFsbCB0aGVpciBwYXJlbnRzLCBnZW5lcmF0aW5nXG4gICAgICAgICAqIGEgc2V0IG9mIGlkcyBjb250YWluZWQgd2l0aGluIGFsbCBub2RlcyBmb3IgdGhlIGVudGlyZSBoaWVyYXJjaHkgaW4gdGhlIERPTVxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gbm9kZSB7RWxlbWVudH1cbiAgICAgICAgICogQHBhcmFtIHtNYXA8Tm9kZSwgU2V0PFN0cmluZz4+fSBpZE1hcFxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gcG9wdWxhdGVJZE1hcEZvck5vZGUobm9kZSwgaWRNYXApIHtcbiAgICAgICAgICAgIGxldCBub2RlUGFyZW50ID0gbm9kZS5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgLy8gZmluZCBhbGwgZWxlbWVudHMgd2l0aCBhbiBpZCBwcm9wZXJ0eVxuICAgICAgICAgICAgbGV0IGlkRWxlbWVudHMgPSBub2RlLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZF0nKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZWx0IG9mIGlkRWxlbWVudHMpIHtcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudCA9IGVsdDtcbiAgICAgICAgICAgICAgICAvLyB3YWxrIHVwIHRoZSBwYXJlbnQgaGllcmFyY2h5IG9mIHRoYXQgZWxlbWVudCwgYWRkaW5nIHRoZSBpZFxuICAgICAgICAgICAgICAgIC8vIG9mIGVsZW1lbnQgdG8gdGhlIHBhcmVudCdzIGlkIHNldFxuICAgICAgICAgICAgICAgIHdoaWxlIChjdXJyZW50ICE9PSBub2RlUGFyZW50ICYmIGN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgaWRTZXQgPSBpZE1hcC5nZXQoY3VycmVudCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBpZCBzZXQgZG9lc24ndCBleGlzdCwgY3JlYXRlIGl0IGFuZCBpbnNlcnQgaXQgaW4gdGhlICBtYXBcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlkU2V0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkU2V0ID0gbmV3IFNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWRNYXAuc2V0KGN1cnJlbnQsIGlkU2V0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZFNldC5hZGQoZWx0LmlkKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogVGhpcyBmdW5jdGlvbiBjb21wdXRlcyBhIG1hcCBvZiBub2RlcyB0byBhbGwgaWRzIGNvbnRhaW5lZCB3aXRoaW4gdGhhdCBub2RlIChpbmNsdXNpdmUgb2YgdGhlXG4gICAgICAgICAqIG5vZGUpLiAgVGhpcyBtYXAgY2FuIGJlIHVzZWQgdG8gYXNrIGlmIHR3byBub2RlcyBoYXZlIGludGVyc2VjdGluZyBzZXRzIG9mIGlkcywgd2hpY2ggYWxsb3dzXG4gICAgICAgICAqIGZvciBhIGxvb3NlciBkZWZpbml0aW9uIG9mIFwibWF0Y2hpbmdcIiB0aGFuIHRyYWRpdGlvbiBpZCBtYXRjaGluZywgYW5kIGFsbG93cyBjaGlsZCBub2Rlc1xuICAgICAgICAgKiB0byBjb250cmlidXRlIHRvIGEgcGFyZW50IG5vZGVzIG1hdGNoaW5nLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IG9sZENvbnRlbnQgIHRoZSBvbGQgY29udGVudCB0aGF0IHdpbGwgYmUgbW9ycGhlZFxuICAgICAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IG5ld0NvbnRlbnQgIHRoZSBuZXcgY29udGVudCB0byBtb3JwaCB0b1xuICAgICAgICAgKiBAcmV0dXJucyB7TWFwPE5vZGUsIFNldDxTdHJpbmc+Pn0gYSBtYXAgb2Ygbm9kZXMgdG8gaWQgc2V0cyBmb3IgdGhlXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBjcmVhdGVJZE1hcChvbGRDb250ZW50LCBuZXdDb250ZW50KSB7XG4gICAgICAgICAgICBsZXQgaWRNYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICBwb3B1bGF0ZUlkTWFwRm9yTm9kZShvbGRDb250ZW50LCBpZE1hcCk7XG4gICAgICAgICAgICBwb3B1bGF0ZUlkTWFwRm9yTm9kZShuZXdDb250ZW50LCBpZE1hcCk7XG4gICAgICAgICAgICByZXR1cm4gaWRNYXA7XG4gICAgICAgIH1cblxuICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIC8vIFRoaXMgaXMgd2hhdCBlbmRzIHVwIGJlY29taW5nIHRoZSBJZGlvbW9ycGggZ2xvYmFsIG9iamVjdFxuICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtb3JwaCxcbiAgICAgICAgICAgIGRlZmF1bHRzXG4gICAgICAgIH1cbiAgICB9KSgpO1xuXG5mdW5jdGlvbiBub3JtYWxpemVBdHRyaWJ1dGVzRm9yQ29tcGFyaXNvbihlbGVtZW50KSB7XG4gICAgY29uc3QgaXNGaWxlSW5wdXQgPSBlbGVtZW50IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJiBlbGVtZW50LnR5cGUgPT09ICdmaWxlJztcbiAgICBpZiAoIWlzRmlsZUlucHV0KSB7XG4gICAgICAgIGlmICgndmFsdWUnIGluIGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGVsZW1lbnQudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlKCd2YWx1ZScpKSB7XG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgndmFsdWUnLCAnJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQXJyYXkuZnJvbShlbGVtZW50LmNoaWxkcmVuKS5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICBub3JtYWxpemVBdHRyaWJ1dGVzRm9yQ29tcGFyaXNvbihjaGlsZCk7XG4gICAgfSk7XG59XG5cbmNvbnN0IHN5bmNBdHRyaWJ1dGVzID0gKGZyb21FbCwgdG9FbCkgPT4ge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJvbUVsLmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYXR0ciA9IGZyb21FbC5hdHRyaWJ1dGVzW2ldO1xuICAgICAgICB0b0VsLnNldEF0dHJpYnV0ZShhdHRyLm5hbWUsIGF0dHIudmFsdWUpO1xuICAgIH1cbn07XG5mdW5jdGlvbiBleGVjdXRlTW9ycGhkb20ocm9vdEZyb21FbGVtZW50LCByb290VG9FbGVtZW50LCBtb2RpZmllZEZpZWxkRWxlbWVudHMsIGdldEVsZW1lbnRWYWx1ZSwgZXh0ZXJuYWxNdXRhdGlvblRyYWNrZXIpIHtcbiAgICBjb25zdCBvcmlnaW5hbEVsZW1lbnRJZHNUb1N3YXBBZnRlciA9IFtdO1xuICAgIGNvbnN0IG9yaWdpbmFsRWxlbWVudHNUb1ByZXNlcnZlID0gbmV3IE1hcCgpO1xuICAgIGNvbnN0IG1hcmtFbGVtZW50QXNOZWVkaW5nUG9zdE1vcnBoU3dhcCA9IChpZCwgcmVwbGFjZVdpdGhDbG9uZSkgPT4ge1xuICAgICAgICBjb25zdCBvbGRFbGVtZW50ID0gb3JpZ2luYWxFbGVtZW50c1RvUHJlc2VydmUuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCEob2xkRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPcmlnaW5hbCBlbGVtZW50IHdpdGggaWQgJHtpZH0gbm90IGZvdW5kYCk7XG4gICAgICAgIH1cbiAgICAgICAgb3JpZ2luYWxFbGVtZW50SWRzVG9Td2FwQWZ0ZXIucHVzaChpZCk7XG4gICAgICAgIGlmICghcmVwbGFjZVdpdGhDbG9uZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2xvbmVkT2xkRWxlbWVudCA9IGNsb25lSFRNTEVsZW1lbnQob2xkRWxlbWVudCk7XG4gICAgICAgIG9sZEVsZW1lbnQucmVwbGFjZVdpdGgoY2xvbmVkT2xkRWxlbWVudCk7XG4gICAgICAgIHJldHVybiBjbG9uZWRPbGRFbGVtZW50O1xuICAgIH07XG4gICAgcm9vdFRvRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1saXZlLXByZXNlcnZlXScpLmZvckVhY2goKG5ld0VsZW1lbnQpID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBuZXdFbGVtZW50LmlkO1xuICAgICAgICBpZiAoIWlkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkYXRhLWxpdmUtcHJlc2VydmUgYXR0cmlidXRlIHJlcXVpcmVzIGFuIGlkIGF0dHJpYnV0ZSB0byBiZSBzZXQgb24gdGhlIGVsZW1lbnQnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvbGRFbGVtZW50ID0gcm9vdEZyb21FbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke2lkfWApO1xuICAgICAgICBpZiAoIShvbGRFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBlbGVtZW50IHdpdGggaWQgXCIke2lkfVwiIHdhcyBub3QgZm91bmQgaW4gdGhlIG9yaWdpbmFsIEhUTUxgKTtcbiAgICAgICAgfVxuICAgICAgICBuZXdFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1saXZlLXByZXNlcnZlJyk7XG4gICAgICAgIG9yaWdpbmFsRWxlbWVudHNUb1ByZXNlcnZlLnNldChpZCwgb2xkRWxlbWVudCk7XG4gICAgICAgIHN5bmNBdHRyaWJ1dGVzKG5ld0VsZW1lbnQsIG9sZEVsZW1lbnQpO1xuICAgIH0pO1xuICAgIElkaW9tb3JwaC5tb3JwaChyb290RnJvbUVsZW1lbnQsIHJvb3RUb0VsZW1lbnQsIHtcbiAgICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgICAgICBiZWZvcmVOb2RlTW9ycGhlZDogKGZyb21FbCwgdG9FbCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghKGZyb21FbCBpbnN0YW5jZW9mIEVsZW1lbnQpIHx8ICEodG9FbCBpbnN0YW5jZW9mIEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZnJvbUVsID09PSByb290RnJvbUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChmcm9tRWwuaWQgJiYgb3JpZ2luYWxFbGVtZW50c1RvUHJlc2VydmUuaGFzKGZyb21FbC5pZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZyb21FbC5pZCA9PT0gdG9FbC5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb25lZEZyb21FbCA9IG1hcmtFbGVtZW50QXNOZWVkaW5nUG9zdE1vcnBoU3dhcChmcm9tRWwuaWQsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNsb25lZEZyb21FbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGNsb25lJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgSWRpb21vcnBoLm1vcnBoKGNsb25lZEZyb21FbCwgdG9FbCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZyb21FbCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIHRvRWwgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZyb21FbC5fX3ggIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXdpbmRvdy5BbHBpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBhY2Nlc3MgQWxwaW5lLmpzIHRob3VnaCB0aGUgZ2xvYmFsIHdpbmRvdy5BbHBpbmUgdmFyaWFibGUuIFBsZWFzZSBtYWtlIHN1cmUgQWxwaW5lLmpzIGlzIGxvYWRlZCBiZWZvcmUgU3ltZm9ueSBVWCBMaXZlQ29tcG9uZW50LicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cuQWxwaW5lLm1vcnBoICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gYWNjZXNzIEFscGluZS5qcyBtb3JwaCBmdW5jdGlvbi4gUGxlYXNlIG1ha2Ugc3VyZSB0aGUgQWxwaW5lLmpzIE1vcnBoIHBsdWdpbiBpcyBpbnN0YWxsZWQgYW5kIGxvYWRlZCwgc2VlIGh0dHBzOi8vYWxwaW5lanMuZGV2L3BsdWdpbnMvbW9ycGggZm9yIG1vcmUgaW5mb3JtYXRpb24uJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuQWxwaW5lLm1vcnBoKGZyb21FbC5fX3gsIHRvRWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChleHRlcm5hbE11dGF0aW9uVHJhY2tlci53YXNFbGVtZW50QWRkZWQoZnJvbUVsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnJvbUVsLmluc2VydEFkamFjZW50RWxlbWVudCgnYWZ0ZXJlbmQnLCB0b0VsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAobW9kaWZpZWRGaWVsZEVsZW1lbnRzLmluY2x1ZGVzKGZyb21FbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFZhbHVlT25FbGVtZW50KHRvRWwsIGdldEVsZW1lbnRWYWx1ZShmcm9tRWwpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZnJvbUVsID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBmcm9tRWwgIT09IGRvY3VtZW50LmJvZHkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT09IGdldE1vZGVsRGlyZWN0aXZlRnJvbUVsZW1lbnQoZnJvbUVsLCBmYWxzZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFZhbHVlT25FbGVtZW50KHRvRWwsIGdldEVsZW1lbnRWYWx1ZShmcm9tRWwpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50Q2hhbmdlcyA9IGV4dGVybmFsTXV0YXRpb25UcmFja2VyLmdldENoYW5nZWRFbGVtZW50KGZyb21FbCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudENoYW5nZXMuYXBwbHlUb0VsZW1lbnQodG9FbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZyb21FbC5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpICE9PSAnT1BUSU9OJyAmJiBmcm9tRWwuaXNFcXVhbE5vZGUodG9FbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRGcm9tRWwgPSBjbG9uZUhUTUxFbGVtZW50KGZyb21FbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVBdHRyaWJ1dGVzRm9yQ29tcGFyaXNvbihub3JtYWxpemVkRnJvbUVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRUb0VsID0gY2xvbmVIVE1MRWxlbWVudCh0b0VsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUF0dHJpYnV0ZXNGb3JDb21wYXJpc29uKG5vcm1hbGl6ZWRUb0VsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkRnJvbUVsLmlzRXF1YWxOb2RlKG5vcm1hbGl6ZWRUb0VsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZnJvbUVsLmhhc0F0dHJpYnV0ZSgnZGF0YS1za2lwLW1vcnBoJykgfHwgKGZyb21FbC5pZCAmJiBmcm9tRWwuaWQgIT09IHRvRWwuaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZyb21FbC5pbm5lckhUTUwgPSB0b0VsLmlubmVySFRNTDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChmcm9tRWwucGFyZW50RWxlbWVudD8uaGFzQXR0cmlidXRlKCdkYXRhLXNraXAtbW9ycGgnKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAhZnJvbUVsLmhhc0F0dHJpYnV0ZSgnZGF0YS1saXZlLWlnbm9yZScpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJlZm9yZU5vZGVSZW1vdmVkKG5vZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIShub2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobm9kZS5pZCAmJiBvcmlnaW5hbEVsZW1lbnRzVG9QcmVzZXJ2ZS5oYXMobm9kZS5pZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFya0VsZW1lbnRBc05lZWRpbmdQb3N0TW9ycGhTd2FwKG5vZGUuaWQsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChleHRlcm5hbE11dGF0aW9uVHJhY2tlci53YXNFbGVtZW50QWRkZWQobm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gIW5vZGUuaGFzQXR0cmlidXRlKCdkYXRhLWxpdmUtaWdub3JlJyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH0pO1xuICAgIG9yaWdpbmFsRWxlbWVudElkc1RvU3dhcEFmdGVyLmZvckVhY2goKGlkKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnQgPSByb290RnJvbUVsZW1lbnQucXVlcnlTZWxlY3RvcihgIyR7aWR9YCk7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsRWxlbWVudCA9IG9yaWdpbmFsRWxlbWVudHNUb1ByZXNlcnZlLmdldChpZCk7XG4gICAgICAgIGlmICghKG5ld0VsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkgfHwgIShvcmlnaW5hbEVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBlbGVtZW50cy4nKTtcbiAgICAgICAgfVxuICAgICAgICBuZXdFbGVtZW50LnJlcGxhY2VXaXRoKG9yaWdpbmFsRWxlbWVudCk7XG4gICAgfSk7XG59XG5cbmNsYXNzIFVuc3luY2VkSW5wdXRzVHJhY2tlciB7XG4gICAgY29uc3RydWN0b3IoY29tcG9uZW50LCBtb2RlbEVsZW1lbnRSZXNvbHZlcikge1xuICAgICAgICB0aGlzLmVsZW1lbnRFdmVudExpc3RlbmVycyA9IFtcbiAgICAgICAgICAgIHsgZXZlbnQ6ICdpbnB1dCcsIGNhbGxiYWNrOiAoZXZlbnQpID0+IHRoaXMuaGFuZGxlSW5wdXRFdmVudChldmVudCkgfSxcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHRoaXMubW9kZWxFbGVtZW50UmVzb2x2ZXIgPSBtb2RlbEVsZW1lbnRSZXNvbHZlcjtcbiAgICAgICAgdGhpcy51bnN5bmNlZElucHV0cyA9IG5ldyBVbnN5bmNlZElucHV0Q29udGFpbmVyKCk7XG4gICAgfVxuICAgIGFjdGl2YXRlKCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRFdmVudExpc3RlbmVycy5mb3JFYWNoKCh7IGV2ZW50LCBjYWxsYmFjayB9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudC5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGNhbGxiYWNrKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGRlYWN0aXZhdGUoKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudEV2ZW50TGlzdGVuZXJzLmZvckVhY2goKHsgZXZlbnQsIGNhbGxiYWNrIH0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgY2FsbGJhY2spO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgbWFya01vZGVsQXNTeW5jZWQobW9kZWxOYW1lKSB7XG4gICAgICAgIHRoaXMudW5zeW5jZWRJbnB1dHMubWFya01vZGVsQXNTeW5jZWQobW9kZWxOYW1lKTtcbiAgICB9XG4gICAgaGFuZGxlSW5wdXRFdmVudChldmVudCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVNb2RlbEZyb21FbGVtZW50KHRhcmdldCk7XG4gICAgfVxuICAgIHVwZGF0ZU1vZGVsRnJvbUVsZW1lbnQoZWxlbWVudCkge1xuICAgICAgICBpZiAoIWVsZW1lbnRCZWxvbmdzVG9UaGlzQ29tcG9uZW50KGVsZW1lbnQsIHRoaXMuY29tcG9uZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHVwZGF0ZSBtb2RlbCBmb3Igbm9uIEhUTUxFbGVtZW50Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbW9kZWxOYW1lID0gdGhpcy5tb2RlbEVsZW1lbnRSZXNvbHZlci5nZXRNb2RlbE5hbWUoZWxlbWVudCk7XG4gICAgICAgIHRoaXMudW5zeW5jZWRJbnB1dHMuYWRkKGVsZW1lbnQsIG1vZGVsTmFtZSk7XG4gICAgfVxuICAgIGdldFVuc3luY2VkSW5wdXRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bnN5bmNlZElucHV0cy5hbGxVbnN5bmNlZElucHV0cygpO1xuICAgIH1cbiAgICBnZXRVbnN5bmNlZE1vZGVscygpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy51bnN5bmNlZElucHV0cy5nZXRVbnN5bmNlZE1vZGVsTmFtZXMoKSk7XG4gICAgfVxuICAgIHJlc2V0VW5zeW5jZWRGaWVsZHMoKSB7XG4gICAgICAgIHRoaXMudW5zeW5jZWRJbnB1dHMucmVzZXRVbnN5bmNlZEZpZWxkcygpO1xuICAgIH1cbn1cbmNsYXNzIFVuc3luY2VkSW5wdXRDb250YWluZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnVuc3luY2VkTm9uTW9kZWxGaWVsZHMgPSBbXTtcbiAgICAgICAgdGhpcy51bnN5bmNlZE1vZGVsTmFtZXMgPSBbXTtcbiAgICAgICAgdGhpcy51bnN5bmNlZE1vZGVsRmllbGRzID0gbmV3IE1hcCgpO1xuICAgIH1cbiAgICBhZGQoZWxlbWVudCwgbW9kZWxOYW1lID0gbnVsbCkge1xuICAgICAgICBpZiAobW9kZWxOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLnVuc3luY2VkTW9kZWxGaWVsZHMuc2V0KG1vZGVsTmFtZSwgZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMudW5zeW5jZWRNb2RlbE5hbWVzLmluY2x1ZGVzKG1vZGVsTmFtZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVuc3luY2VkTW9kZWxOYW1lcy5wdXNoKG1vZGVsTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51bnN5bmNlZE5vbk1vZGVsRmllbGRzLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICAgIHJlc2V0VW5zeW5jZWRGaWVsZHMoKSB7XG4gICAgICAgIHRoaXMudW5zeW5jZWRNb2RlbEZpZWxkcy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMudW5zeW5jZWRNb2RlbE5hbWVzLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVuc3luY2VkTW9kZWxGaWVsZHMuZGVsZXRlKGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhbGxVbnN5bmNlZElucHV0cygpIHtcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzLnVuc3luY2VkTm9uTW9kZWxGaWVsZHMsIC4uLnRoaXMudW5zeW5jZWRNb2RlbEZpZWxkcy52YWx1ZXMoKV07XG4gICAgfVxuICAgIG1hcmtNb2RlbEFzU3luY2VkKG1vZGVsTmFtZSkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMudW5zeW5jZWRNb2RlbE5hbWVzLmluZGV4T2YobW9kZWxOYW1lKTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy51bnN5bmNlZE1vZGVsTmFtZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXRVbnN5bmNlZE1vZGVsTmFtZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuc3luY2VkTW9kZWxOYW1lcztcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldERlZXBEYXRhKGRhdGEsIHByb3BlcnR5UGF0aCkge1xuICAgIGNvbnN0IHsgY3VycmVudExldmVsRGF0YSwgZmluYWxLZXkgfSA9IHBhcnNlRGVlcERhdGEoZGF0YSwgcHJvcGVydHlQYXRoKTtcbiAgICBpZiAoY3VycmVudExldmVsRGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50TGV2ZWxEYXRhW2ZpbmFsS2V5XTtcbn1cbmNvbnN0IHBhcnNlRGVlcERhdGEgPSAoZGF0YSwgcHJvcGVydHlQYXRoKSA9PiB7XG4gICAgY29uc3QgZmluYWxEYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgbGV0IGN1cnJlbnRMZXZlbERhdGEgPSBmaW5hbERhdGE7XG4gICAgY29uc3QgcGFydHMgPSBwcm9wZXJ0eVBhdGguc3BsaXQoJy4nKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICBjdXJyZW50TGV2ZWxEYXRhID0gY3VycmVudExldmVsRGF0YVtwYXJ0c1tpXV07XG4gICAgfVxuICAgIGNvbnN0IGZpbmFsS2V5ID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY3VycmVudExldmVsRGF0YSxcbiAgICAgICAgZmluYWxEYXRhLFxuICAgICAgICBmaW5hbEtleSxcbiAgICAgICAgcGFydHMsXG4gICAgfTtcbn07XG5cbmNsYXNzIFZhbHVlU3RvcmUge1xuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHRoaXMucHJvcHMgPSB7fTtcbiAgICAgICAgdGhpcy5kaXJ0eVByb3BzID0ge307XG4gICAgICAgIHRoaXMucGVuZGluZ1Byb3BzID0ge307XG4gICAgICAgIHRoaXMudXBkYXRlZFByb3BzRnJvbVBhcmVudCA9IHt9O1xuICAgICAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWROYW1lID0gbm9ybWFsaXplTW9kZWxOYW1lKG5hbWUpO1xuICAgICAgICBpZiAodGhpcy5kaXJ0eVByb3BzW25vcm1hbGl6ZWROYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kaXJ0eVByb3BzW25vcm1hbGl6ZWROYW1lXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wZW5kaW5nUHJvcHNbbm9ybWFsaXplZE5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdQcm9wc1tub3JtYWxpemVkTmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJvcHNbbm9ybWFsaXplZE5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3BzW25vcm1hbGl6ZWROYW1lXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0RGVlcERhdGEodGhpcy5wcm9wcywgbm9ybWFsaXplZE5hbWUpO1xuICAgIH1cbiAgICBoYXMobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQobmFtZSkgIT09IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgc2V0KG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWROYW1lID0gbm9ybWFsaXplTW9kZWxOYW1lKG5hbWUpO1xuICAgICAgICBpZiAodGhpcy5nZXQobm9ybWFsaXplZE5hbWUpID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGlydHlQcm9wc1tub3JtYWxpemVkTmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGdldE9yaWdpbmFsUHJvcHMoKSB7XG4gICAgICAgIHJldHVybiB7IC4uLnRoaXMucHJvcHMgfTtcbiAgICB9XG4gICAgZ2V0RGlydHlQcm9wcygpIHtcbiAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5kaXJ0eVByb3BzIH07XG4gICAgfVxuICAgIGdldFVwZGF0ZWRQcm9wc0Zyb21QYXJlbnQoKSB7XG4gICAgICAgIHJldHVybiB7IC4uLnRoaXMudXBkYXRlZFByb3BzRnJvbVBhcmVudCB9O1xuICAgIH1cbiAgICBmbHVzaERpcnR5UHJvcHNUb1BlbmRpbmcoKSB7XG4gICAgICAgIHRoaXMucGVuZGluZ1Byb3BzID0geyAuLi50aGlzLmRpcnR5UHJvcHMgfTtcbiAgICAgICAgdGhpcy5kaXJ0eVByb3BzID0ge307XG4gICAgfVxuICAgIHJlaW5pdGlhbGl6ZUFsbFByb3BzKHByb3BzKSB7XG4gICAgICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICAgICAgdGhpcy51cGRhdGVkUHJvcHNGcm9tUGFyZW50ID0ge307XG4gICAgICAgIHRoaXMucGVuZGluZ1Byb3BzID0ge307XG4gICAgfVxuICAgIHB1c2hQZW5kaW5nUHJvcHNCYWNrVG9EaXJ0eSgpIHtcbiAgICAgICAgdGhpcy5kaXJ0eVByb3BzID0geyAuLi50aGlzLnBlbmRpbmdQcm9wcywgLi4udGhpcy5kaXJ0eVByb3BzIH07XG4gICAgICAgIHRoaXMucGVuZGluZ1Byb3BzID0ge307XG4gICAgfVxuICAgIHN0b3JlTmV3UHJvcHNGcm9tUGFyZW50KHByb3BzKSB7XG4gICAgICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BzKSkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5nZXQoa2V5KTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50VmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlZFByb3BzRnJvbVBhcmVudCA9IHByb3BzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaGFuZ2VkO1xuICAgIH1cbn1cblxuY2xhc3MgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCBuYW1lLCBwcm9wcywgbGlzdGVuZXJzLCBpZCwgYmFja2VuZCwgZWxlbWVudERyaXZlcikge1xuICAgICAgICB0aGlzLmZpbmdlcnByaW50ID0gJyc7XG4gICAgICAgIHRoaXMuZGVmYXVsdERlYm91bmNlID0gMTUwO1xuICAgICAgICB0aGlzLmJhY2tlbmRSZXF1ZXN0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5wZW5kaW5nQWN0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlcyA9IHt9O1xuICAgICAgICB0aGlzLmlzUmVxdWVzdFBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXF1ZXN0RGVib3VuY2VUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5iYWNrZW5kID0gYmFja2VuZDtcbiAgICAgICAgdGhpcy5lbGVtZW50RHJpdmVyID0gZWxlbWVudERyaXZlcjtcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xuICAgICAgICB0aGlzLmxpc3RlbmVycyA9IG5ldyBNYXAoKTtcbiAgICAgICAgbGlzdGVuZXJzLmZvckVhY2goKGxpc3RlbmVyKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubGlzdGVuZXJzLmhhcyhsaXN0ZW5lci5ldmVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbmVycy5zZXQobGlzdGVuZXIuZXZlbnQsIFtdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzLmdldChsaXN0ZW5lci5ldmVudCk/LnB1c2gobGlzdGVuZXIuYWN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudmFsdWVTdG9yZSA9IG5ldyBWYWx1ZVN0b3JlKHByb3BzKTtcbiAgICAgICAgdGhpcy51bnN5bmNlZElucHV0c1RyYWNrZXIgPSBuZXcgVW5zeW5jZWRJbnB1dHNUcmFja2VyKHRoaXMsIGVsZW1lbnREcml2ZXIpO1xuICAgICAgICB0aGlzLmhvb2tzID0gbmV3IEhvb2tNYW5hZ2VyKCk7XG4gICAgICAgIHRoaXMucmVzZXRQcm9taXNlKCk7XG4gICAgICAgIHRoaXMuZXh0ZXJuYWxNdXRhdGlvblRyYWNrZXIgPSBuZXcgRXh0ZXJuYWxNdXRhdGlvblRyYWNrZXIodGhpcy5lbGVtZW50LCAoZWxlbWVudCkgPT4gZWxlbWVudEJlbG9uZ3NUb1RoaXNDb21wb25lbnQoZWxlbWVudCwgdGhpcykpO1xuICAgICAgICB0aGlzLmV4dGVybmFsTXV0YXRpb25UcmFja2VyLnN0YXJ0KCk7XG4gICAgfVxuICAgIGFkZFBsdWdpbihwbHVnaW4pIHtcbiAgICAgICAgcGx1Z2luLmF0dGFjaFRvQ29tcG9uZW50KHRoaXMpO1xuICAgIH1cbiAgICBjb25uZWN0KCkge1xuICAgICAgICByZWdpc3RlckNvbXBvbmVudCh0aGlzKTtcbiAgICAgICAgdGhpcy5ob29rcy50cmlnZ2VySG9vaygnY29ubmVjdCcsIHRoaXMpO1xuICAgICAgICB0aGlzLnVuc3luY2VkSW5wdXRzVHJhY2tlci5hY3RpdmF0ZSgpO1xuICAgICAgICB0aGlzLmV4dGVybmFsTXV0YXRpb25UcmFja2VyLnN0YXJ0KCk7XG4gICAgfVxuICAgIGRpc2Nvbm5lY3QoKSB7XG4gICAgICAgIHVucmVnaXN0ZXJDb21wb25lbnQodGhpcyk7XG4gICAgICAgIHRoaXMuaG9va3MudHJpZ2dlckhvb2soJ2Rpc2Nvbm5lY3QnLCB0aGlzKTtcbiAgICAgICAgdGhpcy5jbGVhclJlcXVlc3REZWJvdW5jZVRpbWVvdXQoKTtcbiAgICAgICAgdGhpcy51bnN5bmNlZElucHV0c1RyYWNrZXIuZGVhY3RpdmF0ZSgpO1xuICAgICAgICB0aGlzLmV4dGVybmFsTXV0YXRpb25UcmFja2VyLnN0b3AoKTtcbiAgICB9XG4gICAgb24oaG9va05hbWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuaG9va3MucmVnaXN0ZXIoaG9va05hbWUsIGNhbGxiYWNrKTtcbiAgICB9XG4gICAgb2ZmKGhvb2tOYW1lLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLmhvb2tzLnVucmVnaXN0ZXIoaG9va05hbWUsIGNhbGxiYWNrKTtcbiAgICB9XG4gICAgc2V0KG1vZGVsLCB2YWx1ZSwgcmVSZW5kZXIgPSBmYWxzZSwgZGVib3VuY2UgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5uZXh0UmVxdWVzdFByb21pc2U7XG4gICAgICAgIGNvbnN0IG1vZGVsTmFtZSA9IG5vcm1hbGl6ZU1vZGVsTmFtZShtb2RlbCk7XG4gICAgICAgIGlmICghdGhpcy52YWx1ZVN0b3JlLmhhcyhtb2RlbE5hbWUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbW9kZWwgbmFtZSBcIiR7bW9kZWx9XCIuYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNDaGFuZ2VkID0gdGhpcy52YWx1ZVN0b3JlLnNldChtb2RlbE5hbWUsIHZhbHVlKTtcbiAgICAgICAgdGhpcy5ob29rcy50cmlnZ2VySG9vaygnbW9kZWw6c2V0JywgbW9kZWwsIHZhbHVlLCB0aGlzKTtcbiAgICAgICAgdGhpcy51bnN5bmNlZElucHV0c1RyYWNrZXIubWFya01vZGVsQXNTeW5jZWQobW9kZWxOYW1lKTtcbiAgICAgICAgaWYgKHJlUmVuZGVyICYmIGlzQ2hhbmdlZCkge1xuICAgICAgICAgICAgdGhpcy5kZWJvdW5jZWRTdGFydFJlcXVlc3QoZGVib3VuY2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cbiAgICBnZXREYXRhKG1vZGVsKSB7XG4gICAgICAgIGNvbnN0IG1vZGVsTmFtZSA9IG5vcm1hbGl6ZU1vZGVsTmFtZShtb2RlbCk7XG4gICAgICAgIGlmICghdGhpcy52YWx1ZVN0b3JlLmhhcyhtb2RlbE5hbWUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbW9kZWwgXCIke21vZGVsfVwiLmApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlU3RvcmUuZ2V0KG1vZGVsTmFtZSk7XG4gICAgfVxuICAgIGFjdGlvbihuYW1lLCBhcmdzID0ge30sIGRlYm91bmNlID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMubmV4dFJlcXVlc3RQcm9taXNlO1xuICAgICAgICB0aGlzLnBlbmRpbmdBY3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGFyZ3MsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRlYm91bmNlZFN0YXJ0UmVxdWVzdChkZWJvdW5jZSk7XG4gICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cbiAgICBmaWxlcyhrZXksIGlucHV0KSB7XG4gICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzW2tleV0gPSBpbnB1dDtcbiAgICB9XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5uZXh0UmVxdWVzdFByb21pc2U7XG4gICAgICAgIHRoaXMudHJ5U3RhcnRpbmdSZXF1ZXN0KCk7XG4gICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cbiAgICBnZXRVbnN5bmNlZE1vZGVscygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5zeW5jZWRJbnB1dHNUcmFja2VyLmdldFVuc3luY2VkTW9kZWxzKCk7XG4gICAgfVxuICAgIGVtaXQobmFtZSwgZGF0YSwgb25seU1hdGNoaW5nQ29tcG9uZW50c05hbWVkID0gbnVsbCkge1xuICAgICAgICB0aGlzLnBlcmZvcm1FbWl0KG5hbWUsIGRhdGEsIGZhbHNlLCBvbmx5TWF0Y2hpbmdDb21wb25lbnRzTmFtZWQpO1xuICAgIH1cbiAgICBlbWl0VXAobmFtZSwgZGF0YSwgb25seU1hdGNoaW5nQ29tcG9uZW50c05hbWVkID0gbnVsbCkge1xuICAgICAgICB0aGlzLnBlcmZvcm1FbWl0KG5hbWUsIGRhdGEsIHRydWUsIG9ubHlNYXRjaGluZ0NvbXBvbmVudHNOYW1lZCk7XG4gICAgfVxuICAgIGVtaXRTZWxmKG5hbWUsIGRhdGEpIHtcbiAgICAgICAgdGhpcy5kb0VtaXQobmFtZSwgZGF0YSk7XG4gICAgfVxuICAgIHBlcmZvcm1FbWl0KG5hbWUsIGRhdGEsIGVtaXRVcCwgbWF0Y2hpbmdOYW1lKSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSBmaW5kQ29tcG9uZW50cyh0aGlzLCBlbWl0VXAsIG1hdGNoaW5nTmFtZSk7XG4gICAgICAgIGNvbXBvbmVudHMuZm9yRWFjaCgoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICBjb21wb25lbnQuZG9FbWl0KG5hbWUsIGRhdGEpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZG9FbWl0KG5hbWUsIGRhdGEpIHtcbiAgICAgICAgaWYgKCF0aGlzLmxpc3RlbmVycy5oYXMobmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3Rpb25zID0gdGhpcy5saXN0ZW5lcnMuZ2V0KG5hbWUpIHx8IFtdO1xuICAgICAgICBhY3Rpb25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5hY3Rpb24oYWN0aW9uLCBkYXRhLCAxKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlzVHVyYm9FbmFibGVkKCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIFR1cmJvICE9PSAndW5kZWZpbmVkJyAmJiAhdGhpcy5lbGVtZW50LmNsb3Nlc3QoJ1tkYXRhLXR1cmJvPVwiZmFsc2VcIl0nKTtcbiAgICB9XG4gICAgdHJ5U3RhcnRpbmdSZXF1ZXN0KCkge1xuICAgICAgICBpZiAoIXRoaXMuYmFja2VuZFJlcXVlc3QpIHtcbiAgICAgICAgICAgIHRoaXMucGVyZm9ybVJlcXVlc3QoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzUmVxdWVzdFBlbmRpbmcgPSB0cnVlO1xuICAgIH1cbiAgICBwZXJmb3JtUmVxdWVzdCgpIHtcbiAgICAgICAgY29uc3QgdGhpc1Byb21pc2VSZXNvbHZlID0gdGhpcy5uZXh0UmVxdWVzdFByb21pc2VSZXNvbHZlO1xuICAgICAgICB0aGlzLnJlc2V0UHJvbWlzZSgpO1xuICAgICAgICB0aGlzLnVuc3luY2VkSW5wdXRzVHJhY2tlci5yZXNldFVuc3luY2VkRmllbGRzKCk7XG4gICAgICAgIGNvbnN0IGZpbGVzVG9TZW5kID0ge307XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucGVuZGluZ0ZpbGVzKSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlLmZpbGVzKSB7XG4gICAgICAgICAgICAgICAgZmlsZXNUb1NlbmRba2V5XSA9IHZhbHVlLmZpbGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlcXVlc3RDb25maWcgPSB7XG4gICAgICAgICAgICBwcm9wczogdGhpcy52YWx1ZVN0b3JlLmdldE9yaWdpbmFsUHJvcHMoKSxcbiAgICAgICAgICAgIGFjdGlvbnM6IHRoaXMucGVuZGluZ0FjdGlvbnMsXG4gICAgICAgICAgICB1cGRhdGVkOiB0aGlzLnZhbHVlU3RvcmUuZ2V0RGlydHlQcm9wcygpLFxuICAgICAgICAgICAgY2hpbGRyZW46IHt9LFxuICAgICAgICAgICAgdXBkYXRlZFByb3BzRnJvbVBhcmVudDogdGhpcy52YWx1ZVN0b3JlLmdldFVwZGF0ZWRQcm9wc0Zyb21QYXJlbnQoKSxcbiAgICAgICAgICAgIGZpbGVzOiBmaWxlc1RvU2VuZCxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5ob29rcy50cmlnZ2VySG9vaygncmVxdWVzdDpzdGFydGVkJywgcmVxdWVzdENvbmZpZyk7XG4gICAgICAgIHRoaXMuYmFja2VuZFJlcXVlc3QgPSB0aGlzLmJhY2tlbmQubWFrZVJlcXVlc3QocmVxdWVzdENvbmZpZy5wcm9wcywgcmVxdWVzdENvbmZpZy5hY3Rpb25zLCByZXF1ZXN0Q29uZmlnLnVwZGF0ZWQsIHJlcXVlc3RDb25maWcuY2hpbGRyZW4sIHJlcXVlc3RDb25maWcudXBkYXRlZFByb3BzRnJvbVBhcmVudCwgcmVxdWVzdENvbmZpZy5maWxlcyk7XG4gICAgICAgIHRoaXMuaG9va3MudHJpZ2dlckhvb2soJ2xvYWRpbmcuc3RhdGU6c3RhcnRlZCcsIHRoaXMuZWxlbWVudCwgdGhpcy5iYWNrZW5kUmVxdWVzdCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0FjdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy52YWx1ZVN0b3JlLmZsdXNoRGlydHlQcm9wc1RvUGVuZGluZygpO1xuICAgICAgICB0aGlzLmlzUmVxdWVzdFBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5iYWNrZW5kUmVxdWVzdC5wcm9taXNlLnRoZW4oYXN5bmMgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBiYWNrZW5kUmVzcG9uc2UgPSBuZXcgQmFja2VuZFJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIGNvbnN0IGh0bWwgPSBhd2FpdCBiYWNrZW5kUmVzcG9uc2UuZ2V0Qm9keSgpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBpbnB1dCBvZiBPYmplY3QudmFsdWVzKHRoaXMucGVuZGluZ0ZpbGVzKSkge1xuICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBoZWFkZXJzID0gYmFja2VuZFJlc3BvbnNlLnJlc3BvbnNlLmhlYWRlcnM7XG4gICAgICAgICAgICBpZiAoIWhlYWRlcnMuZ2V0KCdDb250ZW50LVR5cGUnKT8uaW5jbHVkZXMoJ2FwcGxpY2F0aW9uL3ZuZC5saXZlLWNvbXBvbmVudCtodG1sJykgJiZcbiAgICAgICAgICAgICAgICAhaGVhZGVycy5nZXQoJ1gtTGl2ZS1SZWRpcmVjdCcpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udHJvbHMgPSB7IGRpc3BsYXlFcnJvcjogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVTdG9yZS5wdXNoUGVuZGluZ1Byb3BzQmFja1RvRGlydHkoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhvb2tzLnRyaWdnZXJIb29rKCdyZXNwb25zZTplcnJvcicsIGJhY2tlbmRSZXNwb25zZSwgY29udHJvbHMpO1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9scy5kaXNwbGF5RXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJFcnJvcihodG1sKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5iYWNrZW5kUmVxdWVzdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpc1Byb21pc2VSZXNvbHZlKGJhY2tlbmRSZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wcm9jZXNzUmVyZW5kZXIoaHRtbCwgYmFja2VuZFJlc3BvbnNlKTtcbiAgICAgICAgICAgIHRoaXMuYmFja2VuZFJlcXVlc3QgPSBudWxsO1xuICAgICAgICAgICAgdGhpc1Byb21pc2VSZXNvbHZlKGJhY2tlbmRSZXNwb25zZSk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1JlcXVlc3RQZW5kaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1JlcXVlc3RQZW5kaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5wZXJmb3JtUmVxdWVzdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJvY2Vzc1JlcmVuZGVyKGh0bWwsIGJhY2tlbmRSZXNwb25zZSkge1xuICAgICAgICBjb25zdCBjb250cm9scyA9IHsgc2hvdWxkUmVuZGVyOiB0cnVlIH07XG4gICAgICAgIHRoaXMuaG9va3MudHJpZ2dlckhvb2soJ3JlbmRlcjpzdGFydGVkJywgaHRtbCwgYmFja2VuZFJlc3BvbnNlLCBjb250cm9scyk7XG4gICAgICAgIGlmICghY29udHJvbHMuc2hvdWxkUmVuZGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJhY2tlbmRSZXNwb25zZS5yZXNwb25zZS5oZWFkZXJzLmdldCgnTG9jYXRpb24nKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNUdXJib0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgICAgIFR1cmJvLnZpc2l0KGJhY2tlbmRSZXNwb25zZS5yZXNwb25zZS5oZWFkZXJzLmdldCgnTG9jYXRpb24nKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGJhY2tlbmRSZXNwb25zZS5yZXNwb25zZS5oZWFkZXJzLmdldCgnTG9jYXRpb24nKSB8fCAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhvb2tzLnRyaWdnZXJIb29rKCdsb2FkaW5nLnN0YXRlOmZpbmlzaGVkJywgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgY29uc3QgbW9kaWZpZWRNb2RlbFZhbHVlcyA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnZhbHVlU3RvcmUuZ2V0RGlydHlQcm9wcygpKS5mb3JFYWNoKChtb2RlbE5hbWUpID0+IHtcbiAgICAgICAgICAgIG1vZGlmaWVkTW9kZWxWYWx1ZXNbbW9kZWxOYW1lXSA9IHRoaXMudmFsdWVTdG9yZS5nZXQobW9kZWxOYW1lKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGxldCBuZXdFbGVtZW50O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbmV3RWxlbWVudCA9IGh0bWxUb0VsZW1lbnQoaHRtbCk7XG4gICAgICAgICAgICBpZiAoIW5ld0VsZW1lbnQubWF0Y2hlcygnW2RhdGEtY29udHJvbGxlcn49bGl2ZV0nKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQSBsaXZlIGNvbXBvbmVudCB0ZW1wbGF0ZSBtdXN0IGNvbnRhaW4gYSBzaW5nbGUgcm9vdCBjb250cm9sbGVyIGVsZW1lbnQuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBUaGVyZSB3YXMgYSBwcm9ibGVtIHdpdGggdGhlICcke3RoaXMubmFtZX0nIGNvbXBvbmVudCBIVE1MIHJldHVybmVkOmAsIHtcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5leHRlcm5hbE11dGF0aW9uVHJhY2tlci5oYW5kbGVQZW5kaW5nQ2hhbmdlcygpO1xuICAgICAgICB0aGlzLmV4dGVybmFsTXV0YXRpb25UcmFja2VyLnN0b3AoKTtcbiAgICAgICAgZXhlY3V0ZU1vcnBoZG9tKHRoaXMuZWxlbWVudCwgbmV3RWxlbWVudCwgdGhpcy51bnN5bmNlZElucHV0c1RyYWNrZXIuZ2V0VW5zeW5jZWRJbnB1dHMoKSwgKGVsZW1lbnQpID0+IGdldFZhbHVlRnJvbUVsZW1lbnQoZWxlbWVudCwgdGhpcy52YWx1ZVN0b3JlKSwgdGhpcy5leHRlcm5hbE11dGF0aW9uVHJhY2tlcik7XG4gICAgICAgIHRoaXMuZXh0ZXJuYWxNdXRhdGlvblRyYWNrZXIuc3RhcnQoKTtcbiAgICAgICAgY29uc3QgbmV3UHJvcHMgPSB0aGlzLmVsZW1lbnREcml2ZXIuZ2V0Q29tcG9uZW50UHJvcHMoKTtcbiAgICAgICAgdGhpcy52YWx1ZVN0b3JlLnJlaW5pdGlhbGl6ZUFsbFByb3BzKG5ld1Byb3BzKTtcbiAgICAgICAgY29uc3QgZXZlbnRzVG9FbWl0ID0gdGhpcy5lbGVtZW50RHJpdmVyLmdldEV2ZW50c1RvRW1pdCgpO1xuICAgICAgICBjb25zdCBicm93c2VyRXZlbnRzVG9EaXNwYXRjaCA9IHRoaXMuZWxlbWVudERyaXZlci5nZXRCcm93c2VyRXZlbnRzVG9EaXNwYXRjaCgpO1xuICAgICAgICBPYmplY3Qua2V5cyhtb2RpZmllZE1vZGVsVmFsdWVzKS5mb3JFYWNoKChtb2RlbE5hbWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVTdG9yZS5zZXQobW9kZWxOYW1lLCBtb2RpZmllZE1vZGVsVmFsdWVzW21vZGVsTmFtZV0pO1xuICAgICAgICB9KTtcbiAgICAgICAgZXZlbnRzVG9FbWl0LmZvckVhY2goKHsgZXZlbnQsIGRhdGEsIHRhcmdldCwgY29tcG9uZW50TmFtZSB9KSA9PiB7XG4gICAgICAgICAgICBpZiAodGFyZ2V0ID09PSAndXAnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0VXAoZXZlbnQsIGRhdGEsIGNvbXBvbmVudE5hbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0YXJnZXQgPT09ICdzZWxmJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdFNlbGYoZXZlbnQsIGRhdGEpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZW1pdChldmVudCwgZGF0YSwgY29tcG9uZW50TmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBicm93c2VyRXZlbnRzVG9EaXNwYXRjaC5mb3JFYWNoKCh7IGV2ZW50LCBwYXlsb2FkIH0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChldmVudCwge1xuICAgICAgICAgICAgICAgIGRldGFpbDogcGF5bG9hZCxcbiAgICAgICAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5ob29rcy50cmlnZ2VySG9vaygncmVuZGVyOmZpbmlzaGVkJywgdGhpcyk7XG4gICAgfVxuICAgIGNhbGN1bGF0ZURlYm91bmNlKGRlYm91bmNlKSB7XG4gICAgICAgIGlmIChkZWJvdW5jZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdERlYm91bmNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWJvdW5jZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWJvdW5jZTtcbiAgICB9XG4gICAgY2xlYXJSZXF1ZXN0RGVib3VuY2VUaW1lb3V0KCkge1xuICAgICAgICBpZiAodGhpcy5yZXF1ZXN0RGVib3VuY2VUaW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXF1ZXN0RGVib3VuY2VUaW1lb3V0KTtcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdERlYm91bmNlVGltZW91dCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGVib3VuY2VkU3RhcnRSZXF1ZXN0KGRlYm91bmNlKSB7XG4gICAgICAgIHRoaXMuY2xlYXJSZXF1ZXN0RGVib3VuY2VUaW1lb3V0KCk7XG4gICAgICAgIHRoaXMucmVxdWVzdERlYm91bmNlVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgIH0sIHRoaXMuY2FsY3VsYXRlRGVib3VuY2UoZGVib3VuY2UpKTtcbiAgICB9XG4gICAgcmVuZGVyRXJyb3IoaHRtbCkge1xuICAgICAgICBsZXQgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGl2ZS1jb21wb25lbnQtZXJyb3InKTtcbiAgICAgICAgaWYgKG1vZGFsKSB7XG4gICAgICAgICAgICBtb2RhbC5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG1vZGFsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICBtb2RhbC5pZCA9ICdsaXZlLWNvbXBvbmVudC1lcnJvcic7XG4gICAgICAgICAgICBtb2RhbC5zdHlsZS5wYWRkaW5nID0gJzUwcHgnO1xuICAgICAgICAgICAgbW9kYWwuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3JnYmEoMCwgMCwgMCwgLjUpJztcbiAgICAgICAgICAgIG1vZGFsLnN0eWxlLnpJbmRleCA9ICcxMDAwMDAnO1xuICAgICAgICAgICAgbW9kYWwuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuICAgICAgICAgICAgbW9kYWwuc3R5bGUudG9wID0gJzBweCc7XG4gICAgICAgICAgICBtb2RhbC5zdHlsZS5ib3R0b20gPSAnMHB4JztcbiAgICAgICAgICAgIG1vZGFsLnN0eWxlLmxlZnQgPSAnMHB4JztcbiAgICAgICAgICAgIG1vZGFsLnN0eWxlLnJpZ2h0ID0gJzBweCc7XG4gICAgICAgICAgICBtb2RhbC5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgICAgICAgICAgbW9kYWwuc3R5bGUuZmxleERpcmVjdGlvbiA9ICdjb2x1bW4nO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgICAgICBpZnJhbWUuc3R5bGUuYm9yZGVyUmFkaXVzID0gJzVweCc7XG4gICAgICAgIGlmcmFtZS5zdHlsZS5mbGV4R3JvdyA9ICcxJztcbiAgICAgICAgbW9kYWwuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5wcmVwZW5kKG1vZGFsKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICBpZiAoaWZyYW1lLmNvbnRlbnRXaW5kb3cpIHtcbiAgICAgICAgICAgIGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50Lm9wZW4oKTtcbiAgICAgICAgICAgIGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50LndyaXRlKGh0bWwpO1xuICAgICAgICAgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjbG9zZU1vZGFsID0gKG1vZGFsKSA9PiB7XG4gICAgICAgICAgICBpZiAobW9kYWwpIHtcbiAgICAgICAgICAgICAgICBtb2RhbC5vdXRlckhUTUwgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAndmlzaWJsZSc7XG4gICAgICAgIH07XG4gICAgICAgIG1vZGFsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gY2xvc2VNb2RhbChtb2RhbCkpO1xuICAgICAgICBtb2RhbC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTtcbiAgICAgICAgbW9kYWwuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICAgICAgY2xvc2VNb2RhbChtb2RhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBtb2RhbC5mb2N1cygpO1xuICAgIH1cbiAgICByZXNldFByb21pc2UoKSB7XG4gICAgICAgIHRoaXMubmV4dFJlcXVlc3RQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIHRoaXMubmV4dFJlcXVlc3RQcm9taXNlUmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfdXBkYXRlRnJvbVBhcmVudFByb3BzKHByb3BzKSB7XG4gICAgICAgIGNvbnN0IGlzQ2hhbmdlZCA9IHRoaXMudmFsdWVTdG9yZS5zdG9yZU5ld1Byb3BzRnJvbVBhcmVudChwcm9wcyk7XG4gICAgICAgIGlmIChpc0NoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBwcm94aWZ5Q29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgUHJveHkoY29tcG9uZW50LCB7XG4gICAgICAgIGdldChjb21wb25lbnQsIHByb3ApIHtcbiAgICAgICAgICAgIGlmIChwcm9wIGluIGNvbXBvbmVudCB8fCB0eXBlb2YgcHJvcCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbXBvbmVudFtwcm9wXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWxsYWJsZSA9IGNvbXBvbmVudFtwcm9wXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGFibGUuYXBwbHkoY29tcG9uZW50LCBhcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KGNvbXBvbmVudCwgcHJvcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29tcG9uZW50LnZhbHVlU3RvcmUuaGFzKHByb3ApKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5nZXREYXRhKHByb3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChhcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5hY3Rpb24uYXBwbHkoY29tcG9uZW50LCBbcHJvcCwgYXJnc10pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0KHRhcmdldCwgcHJvcGVydHksIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAocHJvcGVydHkgaW4gdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFyZ2V0LnNldChwcm9wZXJ0eSwgdmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG5cbmNsYXNzIFN0aW11bHVzRWxlbWVudERyaXZlciB7XG4gICAgY29uc3RydWN0b3IoY29udHJvbGxlcikge1xuICAgICAgICB0aGlzLmNvbnRyb2xsZXIgPSBjb250cm9sbGVyO1xuICAgIH1cbiAgICBnZXRNb2RlbE5hbWUoZWxlbWVudCkge1xuICAgICAgICBjb25zdCBtb2RlbERpcmVjdGl2ZSA9IGdldE1vZGVsRGlyZWN0aXZlRnJvbUVsZW1lbnQoZWxlbWVudCwgZmFsc2UpO1xuICAgICAgICBpZiAoIW1vZGVsRGlyZWN0aXZlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW9kZWxEaXJlY3RpdmUuYWN0aW9uO1xuICAgIH1cbiAgICBnZXRDb21wb25lbnRQcm9wcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5wcm9wc1ZhbHVlO1xuICAgIH1cbiAgICBnZXRFdmVudHNUb0VtaXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuZXZlbnRzVG9FbWl0VmFsdWU7XG4gICAgfVxuICAgIGdldEJyb3dzZXJFdmVudHNUb0Rpc3BhdGNoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmV2ZW50c1RvRGlzcGF0Y2hWYWx1ZTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldE1vZGVsQmluZGluZyAobW9kZWxEaXJlY3RpdmUpIHtcbiAgICBsZXQgc2hvdWxkUmVuZGVyID0gdHJ1ZTtcbiAgICBsZXQgdGFyZ2V0RXZlbnROYW1lID0gbnVsbDtcbiAgICBsZXQgZGVib3VuY2UgPSBmYWxzZTtcbiAgICBtb2RlbERpcmVjdGl2ZS5tb2RpZmllcnMuZm9yRWFjaCgobW9kaWZpZXIpID0+IHtcbiAgICAgICAgc3dpdGNoIChtb2RpZmllci5uYW1lKSB7XG4gICAgICAgICAgICBjYXNlICdvbic6XG4gICAgICAgICAgICAgICAgaWYgKCFtb2RpZmllci52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBcIm9uXCIgbW9kaWZpZXIgaW4gJHttb2RlbERpcmVjdGl2ZS5nZXRTdHJpbmcoKX0gcmVxdWlyZXMgYSB2YWx1ZSAtIGUuZy4gb24oY2hhbmdlKS5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFbJ2lucHV0JywgJ2NoYW5nZSddLmluY2x1ZGVzKG1vZGlmaWVyLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBcIm9uXCIgbW9kaWZpZXIgaW4gJHttb2RlbERpcmVjdGl2ZS5nZXRTdHJpbmcoKX0gb25seSBhY2NlcHRzIHRoZSBhcmd1bWVudHMgXCJpbnB1dFwiIG9yIFwiY2hhbmdlXCIuYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRhcmdldEV2ZW50TmFtZSA9IG1vZGlmaWVyLnZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbm9yZW5kZXInOlxuICAgICAgICAgICAgICAgIHNob3VsZFJlbmRlciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGVib3VuY2UnOlxuICAgICAgICAgICAgICAgIGRlYm91bmNlID0gbW9kaWZpZXIudmFsdWUgPyBOdW1iZXIucGFyc2VJbnQobW9kaWZpZXIudmFsdWUpIDogdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIG1vZGlmaWVyIFwiJHttb2RpZmllci5uYW1lfVwiIGluIGRhdGEtbW9kZWw9XCIke21vZGVsRGlyZWN0aXZlLmdldFN0cmluZygpfVwiLmApO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgW21vZGVsTmFtZSwgaW5uZXJNb2RlbE5hbWVdID0gbW9kZWxEaXJlY3RpdmUuYWN0aW9uLnNwbGl0KCc6Jyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbW9kZWxOYW1lLFxuICAgICAgICBpbm5lck1vZGVsTmFtZTogaW5uZXJNb2RlbE5hbWUgfHwgbnVsbCxcbiAgICAgICAgc2hvdWxkUmVuZGVyLFxuICAgICAgICBkZWJvdW5jZSxcbiAgICAgICAgdGFyZ2V0RXZlbnROYW1lLFxuICAgIH07XG59XG5cbmNsYXNzIENoaWxkQ29tcG9uZW50UGx1Z2luIHtcbiAgICBjb25zdHJ1Y3Rvcihjb21wb25lbnQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnRNb2RlbEJpbmRpbmdzID0gW107XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICBjb25zdCBtb2RlbERpcmVjdGl2ZXMgPSBnZXRBbGxNb2RlbERpcmVjdGl2ZUZyb21FbGVtZW50cyh0aGlzLmNvbXBvbmVudC5lbGVtZW50KTtcbiAgICAgICAgdGhpcy5wYXJlbnRNb2RlbEJpbmRpbmdzID0gbW9kZWxEaXJlY3RpdmVzLm1hcChnZXRNb2RlbEJpbmRpbmcpO1xuICAgIH1cbiAgICBhdHRhY2hUb0NvbXBvbmVudChjb21wb25lbnQpIHtcbiAgICAgICAgY29tcG9uZW50Lm9uKCdyZXF1ZXN0OnN0YXJ0ZWQnLCAocmVxdWVzdERhdGEpID0+IHtcbiAgICAgICAgICAgIHJlcXVlc3REYXRhLmNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbkZpbmdlcnByaW50cygpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29tcG9uZW50Lm9uKCdtb2RlbDpzZXQnLCAobW9kZWwsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmeVBhcmVudE1vZGVsQ2hhbmdlKG1vZGVsLCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXRDaGlsZHJlbkZpbmdlcnByaW50cygpIHtcbiAgICAgICAgY29uc3QgZmluZ2VycHJpbnRzID0ge307XG4gICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW4oKS5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFjaGlsZC5pZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBpZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluZ2VycHJpbnRzW2NoaWxkLmlkXSA9IHtcbiAgICAgICAgICAgICAgICBmaW5nZXJwcmludDogY2hpbGQuZmluZ2VycHJpbnQsXG4gICAgICAgICAgICAgICAgdGFnOiBjaGlsZC5lbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmluZ2VycHJpbnRzO1xuICAgIH1cbiAgICBub3RpZnlQYXJlbnRNb2RlbENoYW5nZShtb2RlbE5hbWUsIHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudENvbXBvbmVudCA9IGZpbmRQYXJlbnQodGhpcy5jb21wb25lbnQpO1xuICAgICAgICBpZiAoIXBhcmVudENvbXBvbmVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFyZW50TW9kZWxCaW5kaW5ncy5mb3JFYWNoKChtb2RlbEJpbmRpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkTW9kZWxOYW1lID0gbW9kZWxCaW5kaW5nLmlubmVyTW9kZWxOYW1lIHx8ICd2YWx1ZSc7XG4gICAgICAgICAgICBpZiAoY2hpbGRNb2RlbE5hbWUgIT09IG1vZGVsTmFtZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmVudENvbXBvbmVudC5zZXQobW9kZWxCaW5kaW5nLm1vZGVsTmFtZSwgdmFsdWUsIG1vZGVsQmluZGluZy5zaG91bGRSZW5kZXIsIG1vZGVsQmluZGluZy5kZWJvdW5jZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXRDaGlsZHJlbigpIHtcbiAgICAgICAgcmV0dXJuIGZpbmRDaGlsZHJlbih0aGlzLmNvbXBvbmVudCk7XG4gICAgfVxufVxuXG5jbGFzcyBMYXp5UGx1Z2luIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlciA9IG51bGw7XG4gICAgfVxuICAgIGF0dGFjaFRvQ29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgICAgICBpZiAoJ2xhenknICE9PSBjb21wb25lbnQuZWxlbWVudC5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgnbG9hZGluZycpPy52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbXBvbmVudC5vbignY29ubmVjdCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0T2JzZXJ2ZXIoKS5vYnNlcnZlKGNvbXBvbmVudC5lbGVtZW50KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbXBvbmVudC5vbignZGlzY29ubmVjdCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXI/LnVub2JzZXJ2ZShjb21wb25lbnQuZWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXRPYnNlcnZlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzLCBvYnNlcnZlcikgPT4ge1xuICAgICAgICAgICAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS50YXJnZXQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2xpdmU6YXBwZWFyJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIudW5vYnNlcnZlKGVudHJ5LnRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyO1xuICAgIH1cbn1cblxuY2xhc3MgTG9hZGluZ1BsdWdpbiB7XG4gICAgYXR0YWNoVG9Db21wb25lbnQoY29tcG9uZW50KSB7XG4gICAgICAgIGNvbXBvbmVudC5vbignbG9hZGluZy5zdGF0ZTpzdGFydGVkJywgKGVsZW1lbnQsIHJlcXVlc3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRMb2FkaW5nKGNvbXBvbmVudCwgZWxlbWVudCwgcmVxdWVzdCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb21wb25lbnQub24oJ2xvYWRpbmcuc3RhdGU6ZmluaXNoZWQnLCAoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5maW5pc2hMb2FkaW5nKGNvbXBvbmVudCwgZWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZpbmlzaExvYWRpbmcoY29tcG9uZW50LCBjb21wb25lbnQuZWxlbWVudCk7XG4gICAgfVxuICAgIHN0YXJ0TG9hZGluZyhjb21wb25lbnQsIHRhcmdldEVsZW1lbnQsIGJhY2tlbmRSZXF1ZXN0KSB7XG4gICAgICAgIHRoaXMuaGFuZGxlTG9hZGluZ1RvZ2dsZShjb21wb25lbnQsIHRydWUsIHRhcmdldEVsZW1lbnQsIGJhY2tlbmRSZXF1ZXN0KTtcbiAgICB9XG4gICAgZmluaXNoTG9hZGluZyhjb21wb25lbnQsIHRhcmdldEVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVMb2FkaW5nVG9nZ2xlKGNvbXBvbmVudCwgZmFsc2UsIHRhcmdldEVsZW1lbnQsIG51bGwpO1xuICAgIH1cbiAgICBoYW5kbGVMb2FkaW5nVG9nZ2xlKGNvbXBvbmVudCwgaXNMb2FkaW5nLCB0YXJnZXRFbGVtZW50LCBiYWNrZW5kUmVxdWVzdCkge1xuICAgICAgICBpZiAoaXNMb2FkaW5nKSB7XG4gICAgICAgICAgICB0aGlzLmFkZEF0dHJpYnV0ZXModGFyZ2V0RWxlbWVudCwgWydidXN5J10pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGVzKHRhcmdldEVsZW1lbnQsIFsnYnVzeSddKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdldExvYWRpbmdEaXJlY3RpdmVzKGNvbXBvbmVudCwgdGFyZ2V0RWxlbWVudCkuZm9yRWFjaCgoeyBlbGVtZW50LCBkaXJlY3RpdmVzIH0pID0+IHtcbiAgICAgICAgICAgIGlmIChpc0xvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEF0dHJpYnV0ZXMoZWxlbWVudCwgWydkYXRhLWxpdmUtaXMtbG9hZGluZyddKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlcyhlbGVtZW50LCBbJ2RhdGEtbGl2ZS1pcy1sb2FkaW5nJ10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlyZWN0aXZlcy5mb3JFYWNoKChkaXJlY3RpdmUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUxvYWRpbmdEaXJlY3RpdmUoZWxlbWVudCwgaXNMb2FkaW5nLCBkaXJlY3RpdmUsIGJhY2tlbmRSZXF1ZXN0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaGFuZGxlTG9hZGluZ0RpcmVjdGl2ZShlbGVtZW50LCBpc0xvYWRpbmcsIGRpcmVjdGl2ZSwgYmFja2VuZFJlcXVlc3QpIHtcbiAgICAgICAgY29uc3QgZmluYWxBY3Rpb24gPSBwYXJzZUxvYWRpbmdBY3Rpb24oZGlyZWN0aXZlLmFjdGlvbiwgaXNMb2FkaW5nKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ZWRBY3Rpb25zID0gW107XG4gICAgICAgIGNvbnN0IHRhcmdldGVkTW9kZWxzID0gW107XG4gICAgICAgIGxldCBkZWxheSA9IDA7XG4gICAgICAgIGNvbnN0IHZhbGlkTW9kaWZpZXJzID0gbmV3IE1hcCgpO1xuICAgICAgICB2YWxpZE1vZGlmaWVycy5zZXQoJ2RlbGF5JywgKG1vZGlmaWVyKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzTG9hZGluZykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlbGF5ID0gbW9kaWZpZXIudmFsdWUgPyBOdW1iZXIucGFyc2VJbnQobW9kaWZpZXIudmFsdWUpIDogMjAwO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFsaWRNb2RpZmllcnMuc2V0KCdhY3Rpb24nLCAobW9kaWZpZXIpID0+IHtcbiAgICAgICAgICAgIGlmICghbW9kaWZpZXIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBcImFjdGlvblwiIGluIGRhdGEtbG9hZGluZyBtdXN0IGhhdmUgYW4gYWN0aW9uIG5hbWUgLSBlLmcuIGFjdGlvbihmb28pLiBJdCdzIG1pc3NpbmcgZm9yIFwiJHtkaXJlY3RpdmUuZ2V0U3RyaW5nKCl9XCJgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhcmdldGVkQWN0aW9ucy5wdXNoKG1vZGlmaWVyLnZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhbGlkTW9kaWZpZXJzLnNldCgnbW9kZWwnLCAobW9kaWZpZXIpID0+IHtcbiAgICAgICAgICAgIGlmICghbW9kaWZpZXIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBcIm1vZGVsXCIgaW4gZGF0YS1sb2FkaW5nIG11c3QgaGF2ZSBhbiBhY3Rpb24gbmFtZSAtIGUuZy4gbW9kZWwoZm9vKS4gSXQncyBtaXNzaW5nIGZvciBcIiR7ZGlyZWN0aXZlLmdldFN0cmluZygpfVwiYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXRlZE1vZGVscy5wdXNoKG1vZGlmaWVyLnZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRpcmVjdGl2ZS5tb2RpZmllcnMuZm9yRWFjaCgobW9kaWZpZXIpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWxpZE1vZGlmaWVycy5oYXMobW9kaWZpZXIubmFtZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYWxsYWJsZSA9IHZhbGlkTW9kaWZpZXJzLmdldChtb2RpZmllci5uYW1lKSA/PyAoKCkgPT4geyB9KTtcbiAgICAgICAgICAgICAgICBjYWxsYWJsZShtb2RpZmllcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIG1vZGlmaWVyIFwiJHttb2RpZmllci5uYW1lfVwiIHVzZWQgaW4gZGF0YS1sb2FkaW5nPVwiJHtkaXJlY3RpdmUuZ2V0U3RyaW5nKCl9XCIuIEF2YWlsYWJsZSBtb2RpZmllcnMgYXJlOiAke0FycmF5LmZyb20odmFsaWRNb2RpZmllcnMua2V5cygpKS5qb2luKCcsICcpfS5gKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc0xvYWRpbmcgJiZcbiAgICAgICAgICAgIHRhcmdldGVkQWN0aW9ucy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICBiYWNrZW5kUmVxdWVzdCAmJlxuICAgICAgICAgICAgIWJhY2tlbmRSZXF1ZXN0LmNvbnRhaW5zT25lT2ZBY3Rpb25zKHRhcmdldGVkQWN0aW9ucykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNMb2FkaW5nICYmXG4gICAgICAgICAgICB0YXJnZXRlZE1vZGVscy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICBiYWNrZW5kUmVxdWVzdCAmJlxuICAgICAgICAgICAgIWJhY2tlbmRSZXF1ZXN0LmFyZUFueU1vZGVsc1VwZGF0ZWQodGFyZ2V0ZWRNb2RlbHMpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGxvYWRpbmdEaXJlY3RpdmU7XG4gICAgICAgIHN3aXRjaCAoZmluYWxBY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ3Nob3cnOlxuICAgICAgICAgICAgICAgIGxvYWRpbmdEaXJlY3RpdmUgPSAoKSA9PiB0aGlzLnNob3dFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaGlkZSc6XG4gICAgICAgICAgICAgICAgbG9hZGluZ0RpcmVjdGl2ZSA9ICgpID0+IHRoaXMuaGlkZUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdhZGRDbGFzcyc6XG4gICAgICAgICAgICAgICAgbG9hZGluZ0RpcmVjdGl2ZSA9ICgpID0+IHRoaXMuYWRkQ2xhc3MoZWxlbWVudCwgZGlyZWN0aXZlLmFyZ3MpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncmVtb3ZlQ2xhc3MnOlxuICAgICAgICAgICAgICAgIGxvYWRpbmdEaXJlY3RpdmUgPSAoKSA9PiB0aGlzLnJlbW92ZUNsYXNzKGVsZW1lbnQsIGRpcmVjdGl2ZS5hcmdzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2FkZEF0dHJpYnV0ZSc6XG4gICAgICAgICAgICAgICAgbG9hZGluZ0RpcmVjdGl2ZSA9ICgpID0+IHRoaXMuYWRkQXR0cmlidXRlcyhlbGVtZW50LCBkaXJlY3RpdmUuYXJncyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyZW1vdmVBdHRyaWJ1dGUnOlxuICAgICAgICAgICAgICAgIGxvYWRpbmdEaXJlY3RpdmUgPSAoKSA9PiB0aGlzLnJlbW92ZUF0dHJpYnV0ZXMoZWxlbWVudCwgZGlyZWN0aXZlLmFyZ3MpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZGF0YS1sb2FkaW5nIGFjdGlvbiBcIiR7ZmluYWxBY3Rpb259XCJgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVsYXkpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYmFja2VuZFJlcXVlc3QgJiYgIWJhY2tlbmRSZXF1ZXN0LmlzUmVzb2x2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZ0RpcmVjdGl2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIGRlbGF5KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsb2FkaW5nRGlyZWN0aXZlKCk7XG4gICAgfVxuICAgIGdldExvYWRpbmdEaXJlY3RpdmVzKGNvbXBvbmVudCwgZWxlbWVudCkge1xuICAgICAgICBjb25zdCBsb2FkaW5nRGlyZWN0aXZlcyA9IFtdO1xuICAgICAgICBsZXQgbWF0Y2hpbmdFbGVtZW50cyA9IFsuLi5BcnJheS5mcm9tKGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtbG9hZGluZ10nKSldO1xuICAgICAgICBtYXRjaGluZ0VsZW1lbnRzID0gbWF0Y2hpbmdFbGVtZW50cy5maWx0ZXIoKGVsdCkgPT4gZWxlbWVudEJlbG9uZ3NUb1RoaXNDb21wb25lbnQoZWx0LCBjb21wb25lbnQpKTtcbiAgICAgICAgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlKCdkYXRhLWxvYWRpbmcnKSkge1xuICAgICAgICAgICAgbWF0Y2hpbmdFbGVtZW50cyA9IFtlbGVtZW50LCAuLi5tYXRjaGluZ0VsZW1lbnRzXTtcbiAgICAgICAgfVxuICAgICAgICBtYXRjaGluZ0VsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGlmICghKGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkgJiYgIShlbGVtZW50IGluc3RhbmNlb2YgU1ZHRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgRWxlbWVudCBUeXBlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBkaXJlY3RpdmVzID0gcGFyc2VEaXJlY3RpdmVzKGVsZW1lbnQuZGF0YXNldC5sb2FkaW5nIHx8ICdzaG93Jyk7XG4gICAgICAgICAgICBsb2FkaW5nRGlyZWN0aXZlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBsb2FkaW5nRGlyZWN0aXZlcztcbiAgICB9XG4gICAgc2hvd0VsZW1lbnQoZWxlbWVudCkge1xuICAgICAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAncmV2ZXJ0JztcbiAgICB9XG4gICAgaGlkZUVsZW1lbnQoZWxlbWVudCkge1xuICAgICAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgfVxuICAgIGFkZENsYXNzKGVsZW1lbnQsIGNsYXNzZXMpIHtcbiAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKC4uLmNvbWJpbmVTcGFjZWRBcnJheShjbGFzc2VzKSk7XG4gICAgfVxuICAgIHJlbW92ZUNsYXNzKGVsZW1lbnQsIGNsYXNzZXMpIHtcbiAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKC4uLmNvbWJpbmVTcGFjZWRBcnJheShjbGFzc2VzKSk7XG4gICAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdjbGFzcycpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFkZEF0dHJpYnV0ZXMoZWxlbWVudCwgYXR0cmlidXRlcykge1xuICAgICAgICBhdHRyaWJ1dGVzLmZvckVhY2goKGF0dHJpYnV0ZSkgPT4ge1xuICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCAnJyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZW1vdmVBdHRyaWJ1dGVzKGVsZW1lbnQsIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgYXR0cmlidXRlcy5mb3JFYWNoKChhdHRyaWJ1dGUpID0+IHtcbiAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmNvbnN0IHBhcnNlTG9hZGluZ0FjdGlvbiA9IChhY3Rpb24sIGlzTG9hZGluZykgPT4ge1xuICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ3Nob3cnOlxuICAgICAgICAgICAgcmV0dXJuIGlzTG9hZGluZyA/ICdzaG93JyA6ICdoaWRlJztcbiAgICAgICAgY2FzZSAnaGlkZSc6XG4gICAgICAgICAgICByZXR1cm4gaXNMb2FkaW5nID8gJ2hpZGUnIDogJ3Nob3cnO1xuICAgICAgICBjYXNlICdhZGRDbGFzcyc6XG4gICAgICAgICAgICByZXR1cm4gaXNMb2FkaW5nID8gJ2FkZENsYXNzJyA6ICdyZW1vdmVDbGFzcyc7XG4gICAgICAgIGNhc2UgJ3JlbW92ZUNsYXNzJzpcbiAgICAgICAgICAgIHJldHVybiBpc0xvYWRpbmcgPyAncmVtb3ZlQ2xhc3MnIDogJ2FkZENsYXNzJztcbiAgICAgICAgY2FzZSAnYWRkQXR0cmlidXRlJzpcbiAgICAgICAgICAgIHJldHVybiBpc0xvYWRpbmcgPyAnYWRkQXR0cmlidXRlJyA6ICdyZW1vdmVBdHRyaWJ1dGUnO1xuICAgICAgICBjYXNlICdyZW1vdmVBdHRyaWJ1dGUnOlxuICAgICAgICAgICAgcmV0dXJuIGlzTG9hZGluZyA/ICdyZW1vdmVBdHRyaWJ1dGUnIDogJ2FkZEF0dHJpYnV0ZSc7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBkYXRhLWxvYWRpbmcgYWN0aW9uIFwiJHthY3Rpb259XCJgKTtcbn07XG5cbmNsYXNzIFBhZ2VVbmxvYWRpbmdQbHVnaW4ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmlzQ29ubmVjdGVkID0gZmFsc2U7XG4gICAgfVxuICAgIGF0dGFjaFRvQ29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgICAgICBjb21wb25lbnQub24oJ3JlbmRlcjpzdGFydGVkJywgKGh0bWwsIHJlc3BvbnNlLCBjb250cm9scykgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQ29ubmVjdGVkKSB7XG4gICAgICAgICAgICAgICAgY29udHJvbHMuc2hvdWxkUmVuZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb21wb25lbnQub24oJ2Nvbm5lY3QnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzQ29ubmVjdGVkID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbXBvbmVudC5vbignZGlzY29ubmVjdCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNDb25uZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5jbGFzcyBQb2xsaW5nRGlyZWN0b3Ige1xuICAgIGNvbnN0cnVjdG9yKGNvbXBvbmVudCkge1xuICAgICAgICB0aGlzLmlzUG9sbGluZ0FjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMucG9sbGluZ0ludGVydmFscyA9IFtdO1xuICAgICAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICB9XG4gICAgYWRkUG9sbChhY3Rpb25OYW1lLCBkdXJhdGlvbikge1xuICAgICAgICB0aGlzLnBvbGxzLnB1c2goeyBhY3Rpb25OYW1lLCBkdXJhdGlvbiB9KTtcbiAgICAgICAgaWYgKHRoaXMuaXNQb2xsaW5nQWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYXRlUG9sbChhY3Rpb25OYW1lLCBkdXJhdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3RhcnRBbGxQb2xsaW5nKCkge1xuICAgICAgICBpZiAodGhpcy5pc1BvbGxpbmdBY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzUG9sbGluZ0FjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMucG9sbHMuZm9yRWFjaCgoeyBhY3Rpb25OYW1lLCBkdXJhdGlvbiB9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYXRlUG9sbChhY3Rpb25OYW1lLCBkdXJhdGlvbik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzdG9wQWxsUG9sbGluZygpIHtcbiAgICAgICAgdGhpcy5pc1BvbGxpbmdBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5wb2xsaW5nSW50ZXJ2YWxzLmZvckVhY2goKGludGVydmFsKSA9PiB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNsZWFyUG9sbGluZygpIHtcbiAgICAgICAgdGhpcy5zdG9wQWxsUG9sbGluZygpO1xuICAgICAgICB0aGlzLnBvbGxzID0gW107XG4gICAgICAgIHRoaXMuc3RhcnRBbGxQb2xsaW5nKCk7XG4gICAgfVxuICAgIGluaXRpYXRlUG9sbChhY3Rpb25OYW1lLCBkdXJhdGlvbikge1xuICAgICAgICBsZXQgY2FsbGJhY2s7XG4gICAgICAgIGlmIChhY3Rpb25OYW1lID09PSAnJHJlbmRlcicpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50LnJlbmRlcigpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50LmFjdGlvbihhY3Rpb25OYW1lLCB7fSwgMCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRpbWVyID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIH0sIGR1cmF0aW9uKTtcbiAgICAgICAgdGhpcy5wb2xsaW5nSW50ZXJ2YWxzLnB1c2godGltZXIpO1xuICAgIH1cbn1cblxuY2xhc3MgUG9sbGluZ1BsdWdpbiB7XG4gICAgYXR0YWNoVG9Db21wb25lbnQoY29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuZWxlbWVudCA9IGNvbXBvbmVudC5lbGVtZW50O1xuICAgICAgICB0aGlzLnBvbGxpbmdEaXJlY3RvciA9IG5ldyBQb2xsaW5nRGlyZWN0b3IoY29tcG9uZW50KTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplUG9sbGluZygpO1xuICAgICAgICBjb21wb25lbnQub24oJ2Nvbm5lY3QnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBvbGxpbmdEaXJlY3Rvci5zdGFydEFsbFBvbGxpbmcoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbXBvbmVudC5vbignZGlzY29ubmVjdCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucG9sbGluZ0RpcmVjdG9yLnN0b3BBbGxQb2xsaW5nKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb21wb25lbnQub24oJ3JlbmRlcjpmaW5pc2hlZCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVBvbGxpbmcoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFkZFBvbGwoYWN0aW9uTmFtZSwgZHVyYXRpb24pIHtcbiAgICAgICAgdGhpcy5wb2xsaW5nRGlyZWN0b3IuYWRkUG9sbChhY3Rpb25OYW1lLCBkdXJhdGlvbik7XG4gICAgfVxuICAgIGNsZWFyUG9sbGluZygpIHtcbiAgICAgICAgdGhpcy5wb2xsaW5nRGlyZWN0b3IuY2xlYXJQb2xsaW5nKCk7XG4gICAgfVxuICAgIGluaXRpYWxpemVQb2xsaW5nKCkge1xuICAgICAgICB0aGlzLmNsZWFyUG9sbGluZygpO1xuICAgICAgICBpZiAodGhpcy5lbGVtZW50LmRhdGFzZXQucG9sbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmF3UG9sbENvbmZpZyA9IHRoaXMuZWxlbWVudC5kYXRhc2V0LnBvbGw7XG4gICAgICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSBwYXJzZURpcmVjdGl2ZXMocmF3UG9sbENvbmZpZyB8fCAnJHJlbmRlcicpO1xuICAgICAgICBkaXJlY3RpdmVzLmZvckVhY2goKGRpcmVjdGl2ZSkgPT4ge1xuICAgICAgICAgICAgbGV0IGR1cmF0aW9uID0gMjAwMDtcbiAgICAgICAgICAgIGRpcmVjdGl2ZS5tb2RpZmllcnMuZm9yRWFjaCgobW9kaWZpZXIpID0+IHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKG1vZGlmaWVyLm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZGVsYXknOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGlmaWVyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb24gPSBOdW1iZXIucGFyc2VJbnQobW9kaWZpZXIudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFVua25vd24gbW9kaWZpZXIgXCIke21vZGlmaWVyLm5hbWV9XCIgaW4gZGF0YS1wb2xsIFwiJHtyYXdQb2xsQ29uZmlnfVwiLmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5hZGRQb2xsKGRpcmVjdGl2ZS5hY3Rpb24sIGR1cmF0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc1ZhbHVlRW1wdHkodmFsdWUpIHtcbiAgICBpZiAobnVsbCA9PT0gdmFsdWUgfHwgdmFsdWUgPT09ICcnIHx8IHVuZGVmaW5lZCA9PT0gdmFsdWUgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModmFsdWUpKSB7XG4gICAgICAgIGlmICghaXNWYWx1ZUVtcHR5KHZhbHVlW2tleV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiB0b1F1ZXJ5U3RyaW5nKGRhdGEpIHtcbiAgICBjb25zdCBidWlsZFF1ZXJ5U3RyaW5nRW50cmllcyA9IChkYXRhLCBlbnRyaWVzID0ge30sIGJhc2VLZXkgPSAnJykgPT4ge1xuICAgICAgICBPYmplY3QuZW50cmllcyhkYXRhKS5mb3JFYWNoKChbaUtleSwgaVZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gYmFzZUtleSA9PT0gJycgPyBpS2V5IDogYCR7YmFzZUtleX1bJHtpS2V5fV1gO1xuICAgICAgICAgICAgaWYgKCcnID09PSBiYXNlS2V5ICYmIGlzVmFsdWVFbXB0eShpVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZW50cmllc1trZXldID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChudWxsICE9PSBpVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGlWYWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgZW50cmllcyA9IHsgLi4uZW50cmllcywgLi4uYnVpbGRRdWVyeVN0cmluZ0VudHJpZXMoaVZhbHVlLCBlbnRyaWVzLCBrZXkpIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlbnRyaWVzW2tleV0gPSBlbmNvZGVVUklDb21wb25lbnQoaVZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyUyMC9nLCAnKycpXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvJTJDL2csICcsJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGVudHJpZXM7XG4gICAgfTtcbiAgICBjb25zdCBlbnRyaWVzID0gYnVpbGRRdWVyeVN0cmluZ0VudHJpZXMoZGF0YSk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGVudHJpZXMpXG4gICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke3ZhbHVlfWApXG4gICAgICAgIC5qb2luKCcmJyk7XG59XG5mdW5jdGlvbiBmcm9tUXVlcnlTdHJpbmcoc2VhcmNoKSB7XG4gICAgc2VhcmNoID0gc2VhcmNoLnJlcGxhY2UoJz8nLCAnJyk7XG4gICAgaWYgKHNlYXJjaCA9PT0gJycpXG4gICAgICAgIHJldHVybiB7fTtcbiAgICBjb25zdCBpbnNlcnREb3ROb3RhdGVkVmFsdWVJbnRvRGF0YSA9IChrZXksIHZhbHVlLCBkYXRhKSA9PiB7XG4gICAgICAgIGNvbnN0IFtmaXJzdCwgc2Vjb25kLCAuLi5yZXN0XSA9IGtleS5zcGxpdCgnLicpO1xuICAgICAgICBpZiAoIXNlY29uZCkge1xuICAgICAgICAgICAgZGF0YVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGFbZmlyc3RdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGRhdGFbZmlyc3RdID0gTnVtYmVyLmlzTmFOKE51bWJlci5wYXJzZUludChzZWNvbmQpKSA/IHt9IDogW107XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0RG90Tm90YXRlZFZhbHVlSW50b0RhdGEoW3NlY29uZCwgLi4ucmVzdF0uam9pbignLicpLCB2YWx1ZSwgZGF0YVtmaXJzdF0pO1xuICAgIH07XG4gICAgY29uc3QgZW50cmllcyA9IHNlYXJjaC5zcGxpdCgnJicpLm1hcCgoaSkgPT4gaS5zcGxpdCgnPScpKTtcbiAgICBjb25zdCBkYXRhID0ge307XG4gICAgZW50cmllcy5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgdmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQodmFsdWUucmVwbGFjZSgvXFwrL2csICclMjAnKSk7XG4gICAgICAgIGlmICgha2V5LmluY2x1ZGVzKCdbJykpIHtcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKCcnID09PSB2YWx1ZSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBkb3ROb3RhdGVkS2V5ID0ga2V5LnJlcGxhY2UoL1xcWy9nLCAnLicpLnJlcGxhY2UoL10vZywgJycpO1xuICAgICAgICAgICAgaW5zZXJ0RG90Tm90YXRlZFZhbHVlSW50b0RhdGEoZG90Tm90YXRlZEtleSwgdmFsdWUsIGRhdGEpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG59XG5jbGFzcyBVcmxVdGlscyBleHRlbmRzIFVSTCB7XG4gICAgaGFzKGtleSkge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXREYXRhKCk7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhkYXRhKS5pbmNsdWRlcyhrZXkpO1xuICAgIH1cbiAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXREYXRhKCk7XG4gICAgICAgIGRhdGFba2V5XSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNldERhdGEoZGF0YSk7XG4gICAgfVxuICAgIGdldChrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YSgpW2tleV07XG4gICAgfVxuICAgIHJlbW92ZShrZXkpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0RGF0YSgpO1xuICAgICAgICBkZWxldGUgZGF0YVtrZXldO1xuICAgICAgICB0aGlzLnNldERhdGEoZGF0YSk7XG4gICAgfVxuICAgIGdldERhdGEoKSB7XG4gICAgICAgIGlmICghdGhpcy5zZWFyY2gpIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnJvbVF1ZXJ5U3RyaW5nKHRoaXMuc2VhcmNoKTtcbiAgICB9XG4gICAgc2V0RGF0YShkYXRhKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoID0gdG9RdWVyeVN0cmluZyhkYXRhKTtcbiAgICB9XG59XG5jbGFzcyBIaXN0b3J5U3RyYXRlZ3kge1xuICAgIHN0YXRpYyByZXBsYWNlKHVybCkge1xuICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShoaXN0b3J5LnN0YXRlLCAnJywgdXJsKTtcbiAgICB9XG59XG5cbmNsYXNzIFF1ZXJ5U3RyaW5nUGx1Z2luIHtcbiAgICBjb25zdHJ1Y3RvcihtYXBwaW5nKSB7XG4gICAgICAgIHRoaXMubWFwcGluZyA9IG1hcHBpbmc7XG4gICAgfVxuICAgIGF0dGFjaFRvQ29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgICAgICBjb21wb25lbnQub24oJ3JlbmRlcjpmaW5pc2hlZCcsIChjb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVybFV0aWxzID0gbmV3IFVybFV0aWxzKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRVcmwgPSB1cmxVdGlscy50b1N0cmluZygpO1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXModGhpcy5tYXBwaW5nKS5mb3JFYWNoKChbcHJvcCwgbWFwcGluZ10pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbXBvbmVudC52YWx1ZVN0b3JlLmdldChwcm9wKTtcbiAgICAgICAgICAgICAgICB1cmxVdGlscy5zZXQobWFwcGluZy5uYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50VXJsICE9PSB1cmxVdGlscy50b1N0cmluZygpKSB7XG4gICAgICAgICAgICAgICAgSGlzdG9yeVN0cmF0ZWd5LnJlcGxhY2UodXJsVXRpbHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmNsYXNzIFNldFZhbHVlT250b01vZGVsRmllbGRzUGx1Z2luIHtcbiAgICBhdHRhY2hUb0NvbXBvbmVudChjb21wb25lbnQpIHtcbiAgICAgICAgdGhpcy5zeW5jaHJvbml6ZVZhbHVlT2ZNb2RlbEZpZWxkcyhjb21wb25lbnQpO1xuICAgICAgICBjb21wb25lbnQub24oJ3JlbmRlcjpmaW5pc2hlZCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemVWYWx1ZU9mTW9kZWxGaWVsZHMoY29tcG9uZW50KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHN5bmNocm9uaXplVmFsdWVPZk1vZGVsRmllbGRzKGNvbXBvbmVudCkge1xuICAgICAgICBjb21wb25lbnQuZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1tb2RlbF0nKS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoIShlbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVsZW1lbnQgdXNpbmcgZGF0YS1tb2RlbC4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTEZvcm1FbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFlbGVtZW50QmVsb25nc1RvVGhpc0NvbXBvbmVudChlbGVtZW50LCBjb21wb25lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbW9kZWxEaXJlY3RpdmUgPSBnZXRNb2RlbERpcmVjdGl2ZUZyb21FbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKCFtb2RlbERpcmVjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1vZGVsTmFtZSA9IG1vZGVsRGlyZWN0aXZlLmFjdGlvbjtcbiAgICAgICAgICAgIGlmIChjb21wb25lbnQuZ2V0VW5zeW5jZWRNb2RlbHMoKS5pbmNsdWRlcyhtb2RlbE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudC52YWx1ZVN0b3JlLmhhcyhtb2RlbE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWVPbkVsZW1lbnQoZWxlbWVudCwgY29tcG9uZW50LnZhbHVlU3RvcmUuZ2V0KG1vZGVsTmFtZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MU2VsZWN0RWxlbWVudCAmJiAhZWxlbWVudC5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudC52YWx1ZVN0b3JlLnNldChtb2RlbE5hbWUsIGdldFZhbHVlRnJvbUVsZW1lbnQoZWxlbWVudCwgY29tcG9uZW50LnZhbHVlU3RvcmUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5jbGFzcyBWYWxpZGF0ZWRGaWVsZHNQbHVnaW4ge1xuICAgIGF0dGFjaFRvQ29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgICAgICBjb21wb25lbnQub24oJ21vZGVsOnNldCcsIChtb2RlbE5hbWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlTW9kZWxTZXQobW9kZWxOYW1lLCBjb21wb25lbnQudmFsdWVTdG9yZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBoYW5kbGVNb2RlbFNldChtb2RlbE5hbWUsIHZhbHVlU3RvcmUpIHtcbiAgICAgICAgaWYgKHZhbHVlU3RvcmUuaGFzKCd2YWxpZGF0ZWRGaWVsZHMnKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVkRmllbGRzID0gWy4uLnZhbHVlU3RvcmUuZ2V0KCd2YWxpZGF0ZWRGaWVsZHMnKV07XG4gICAgICAgICAgICBpZiAoIXZhbGlkYXRlZEZpZWxkcy5pbmNsdWRlcyhtb2RlbE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdGVkRmllbGRzLnB1c2gobW9kZWxOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhbHVlU3RvcmUuc2V0KCd2YWxpZGF0ZWRGaWVsZHMnLCB2YWxpZGF0ZWRGaWVsZHMpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5jbGFzcyBMaXZlQ29udHJvbGxlckRlZmF1bHQgZXh0ZW5kcyBDb250cm9sbGVyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nQWN0aW9uVHJpZ2dlck1vZGVsRWxlbWVudCA9IG51bGw7XG4gICAgICAgIHRoaXMuZWxlbWVudEV2ZW50TGlzdGVuZXJzID0gW1xuICAgICAgICAgICAgeyBldmVudDogJ2lucHV0JywgY2FsbGJhY2s6IChldmVudCkgPT4gdGhpcy5oYW5kbGVJbnB1dEV2ZW50KGV2ZW50KSB9LFxuICAgICAgICAgICAgeyBldmVudDogJ2NoYW5nZScsIGNhbGxiYWNrOiAoZXZlbnQpID0+IHRoaXMuaGFuZGxlQ2hhbmdlRXZlbnQoZXZlbnQpIH0sXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzID0ge307XG4gICAgfVxuICAgIGluaXRpYWxpemUoKSB7XG4gICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHRoaXMub25NdXRhdGlvbnMuYmluZCh0aGlzKSk7XG4gICAgICAgIHRoaXMuY3JlYXRlQ29tcG9uZW50KCk7XG4gICAgfVxuICAgIGNvbm5lY3QoKSB7XG4gICAgICAgIHRoaXMuY29ubmVjdENvbXBvbmVudCgpO1xuICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsZW1lbnQsIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBkaXNjb25uZWN0KCkge1xuICAgICAgICB0aGlzLmRpc2Nvbm5lY3RDb21wb25lbnQoKTtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gICAgdXBkYXRlKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC50eXBlID09PSAnaW5wdXQnIHx8IGV2ZW50LnR5cGUgPT09ICdjaGFuZ2UnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNpbmNlIExpdmVDb21wb25lbnRzIDIuMywgeW91IG5vIGxvbmdlciBuZWVkIGRhdGEtYWN0aW9uPVwibGl2ZSN1cGRhdGVcIiBvbiBmb3JtIGVsZW1lbnRzLiBGb3VuZCBvbiBlbGVtZW50OiAke2dldEVsZW1lbnRBc1RhZ1RleHQoZXZlbnQuY3VycmVudFRhcmdldCl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVNb2RlbEZyb21FbGVtZW50RXZlbnQoZXZlbnQuY3VycmVudFRhcmdldCwgbnVsbCk7XG4gICAgfVxuICAgIGFjdGlvbihldmVudCkge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBldmVudC5wYXJhbXM7XG4gICAgICAgIGlmICghcGFyYW1zLmFjdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBhY3Rpb24gbmFtZSBwcm92aWRlZCBvbiBlbGVtZW50OiAke2dldEVsZW1lbnRBc1RhZ1RleHQoZXZlbnQuY3VycmVudFRhcmdldCl9LiBEaWQgeW91IGZvcmdldCB0byBhZGQgdGhlIFwiZGF0YS1saXZlLWFjdGlvbi1wYXJhbVwiIGF0dHJpYnV0ZT9gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByYXdBY3Rpb24gPSBwYXJhbXMuYWN0aW9uO1xuICAgICAgICBjb25zdCBhY3Rpb25BcmdzID0geyAuLi5wYXJhbXMgfTtcbiAgICAgICAgZGVsZXRlIGFjdGlvbkFyZ3MuYWN0aW9uO1xuICAgICAgICBjb25zdCBkaXJlY3RpdmVzID0gcGFyc2VEaXJlY3RpdmVzKHJhd0FjdGlvbik7XG4gICAgICAgIGxldCBkZWJvdW5jZSA9IGZhbHNlO1xuICAgICAgICBkaXJlY3RpdmVzLmZvckVhY2goKGRpcmVjdGl2ZSkgPT4ge1xuICAgICAgICAgICAgbGV0IHBlbmRpbmdGaWxlcyA9IHt9O1xuICAgICAgICAgICAgY29uc3QgdmFsaWRNb2RpZmllcnMgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICB2YWxpZE1vZGlmaWVycy5zZXQoJ3N0b3AnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhbGlkTW9kaWZpZXJzLnNldCgnc2VsZicsICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSBldmVudC5jdXJyZW50VGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhbGlkTW9kaWZpZXJzLnNldCgnZGVib3VuY2UnLCAobW9kaWZpZXIpID0+IHtcbiAgICAgICAgICAgICAgICBkZWJvdW5jZSA9IG1vZGlmaWVyLnZhbHVlID8gTnVtYmVyLnBhcnNlSW50KG1vZGlmaWVyLnZhbHVlKSA6IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhbGlkTW9kaWZpZXJzLnNldCgnZmlsZXMnLCAobW9kaWZpZXIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW1vZGlmaWVyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdGaWxlcyA9IHRoaXMucGVuZGluZ0ZpbGVzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLnBlbmRpbmdGaWxlc1ttb2RpZmllci52YWx1ZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0ZpbGVzW21vZGlmaWVyLnZhbHVlXSA9IHRoaXMucGVuZGluZ0ZpbGVzW21vZGlmaWVyLnZhbHVlXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRpcmVjdGl2ZS5tb2RpZmllcnMuZm9yRWFjaCgobW9kaWZpZXIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodmFsaWRNb2RpZmllcnMuaGFzKG1vZGlmaWVyLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbGxhYmxlID0gdmFsaWRNb2RpZmllcnMuZ2V0KG1vZGlmaWVyLm5hbWUpID8/ICgoKSA9PiB7IH0pO1xuICAgICAgICAgICAgICAgICAgICBjYWxsYWJsZShtb2RpZmllcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBVbmtub3duIG1vZGlmaWVyICR7bW9kaWZpZXIubmFtZX0gaW4gYWN0aW9uIFwiJHtyYXdBY3Rpb259XCIuIEF2YWlsYWJsZSBtb2RpZmllcnMgYXJlOiAke0FycmF5LmZyb20odmFsaWRNb2RpZmllcnMua2V5cygpKS5qb2luKCcsICcpfS5gKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCBpbnB1dF0gb2YgT2JqZWN0LmVudHJpZXMocGVuZGluZ0ZpbGVzKSkge1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5maWxlcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudC5maWxlcyhrZXksIGlucHV0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMucGVuZGluZ0ZpbGVzW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudC5hY3Rpb24oZGlyZWN0aXZlLmFjdGlvbiwgYWN0aW9uQXJncywgZGVib3VuY2UpO1xuICAgICAgICAgICAgaWYgKGdldE1vZGVsRGlyZWN0aXZlRnJvbUVsZW1lbnQoZXZlbnQuY3VycmVudFRhcmdldCwgZmFsc2UpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nQWN0aW9uVHJpZ2dlck1vZGVsRWxlbWVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAkcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wb25lbnQucmVuZGVyKCk7XG4gICAgfVxuICAgIGVtaXQoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5nZXRFbWl0RGlyZWN0aXZlcyhldmVudCkuZm9yRWFjaCgoeyBuYW1lLCBkYXRhLCBuYW1lTWF0Y2ggfSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnQuZW1pdChuYW1lLCBkYXRhLCBuYW1lTWF0Y2gpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZW1pdFVwKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZ2V0RW1pdERpcmVjdGl2ZXMoZXZlbnQpLmZvckVhY2goKHsgbmFtZSwgZGF0YSwgbmFtZU1hdGNoIH0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50LmVtaXRVcChuYW1lLCBkYXRhLCBuYW1lTWF0Y2gpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZW1pdFNlbGYoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5nZXRFbWl0RGlyZWN0aXZlcyhldmVudCkuZm9yRWFjaCgoeyBuYW1lLCBkYXRhIH0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50LmVtaXRTZWxmKG5hbWUsIGRhdGEpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgJHVwZGF0ZU1vZGVsKG1vZGVsLCB2YWx1ZSwgc2hvdWxkUmVuZGVyID0gdHJ1ZSwgZGVib3VuY2UgPSB0cnVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudC5zZXQobW9kZWwsIHZhbHVlLCBzaG91bGRSZW5kZXIsIGRlYm91bmNlKTtcbiAgICB9XG4gICAgcHJvcHNVcGRhdGVkRnJvbVBhcmVudFZhbHVlQ2hhbmdlZCgpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnQuX3VwZGF0ZUZyb21QYXJlbnRQcm9wcyh0aGlzLnByb3BzVXBkYXRlZEZyb21QYXJlbnRWYWx1ZSk7XG4gICAgfVxuICAgIGZpbmdlcnByaW50VmFsdWVDaGFuZ2VkKCkge1xuICAgICAgICB0aGlzLmNvbXBvbmVudC5maW5nZXJwcmludCA9IHRoaXMuZmluZ2VycHJpbnRWYWx1ZTtcbiAgICB9XG4gICAgZ2V0RW1pdERpcmVjdGl2ZXMoZXZlbnQpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gZXZlbnQucGFyYW1zO1xuICAgICAgICBpZiAoIXBhcmFtcy5ldmVudCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBldmVudCBuYW1lIHByb3ZpZGVkIG9uIGVsZW1lbnQ6ICR7Z2V0RWxlbWVudEFzVGFnVGV4dChldmVudC5jdXJyZW50VGFyZ2V0KX0uIERpZCB5b3UgZm9yZ2V0IHRvIGFkZCB0aGUgXCJkYXRhLWxpdmUtZXZlbnQtcGFyYW1cIiBhdHRyaWJ1dGU/YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXZlbnRJbmZvID0gcGFyYW1zLmV2ZW50O1xuICAgICAgICBjb25zdCBldmVudEFyZ3MgPSB7IC4uLnBhcmFtcyB9O1xuICAgICAgICBkZWxldGUgZXZlbnRBcmdzLmV2ZW50O1xuICAgICAgICBjb25zdCBkaXJlY3RpdmVzID0gcGFyc2VEaXJlY3RpdmVzKGV2ZW50SW5mbyk7XG4gICAgICAgIGNvbnN0IGVtaXRzID0gW107XG4gICAgICAgIGRpcmVjdGl2ZXMuZm9yRWFjaCgoZGlyZWN0aXZlKSA9PiB7XG4gICAgICAgICAgICBsZXQgbmFtZU1hdGNoID0gbnVsbDtcbiAgICAgICAgICAgIGRpcmVjdGl2ZS5tb2RpZmllcnMuZm9yRWFjaCgobW9kaWZpZXIpID0+IHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKG1vZGlmaWVyLm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmFtZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lTWF0Y2ggPSBtb2RpZmllci52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIG1vZGlmaWVyICR7bW9kaWZpZXIubmFtZX0gaW4gZXZlbnQgXCIke2V2ZW50SW5mb31cIi5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGVtaXRzLnB1c2goe1xuICAgICAgICAgICAgICAgIG5hbWU6IGRpcmVjdGl2ZS5hY3Rpb24sXG4gICAgICAgICAgICAgICAgZGF0YTogZXZlbnRBcmdzLFxuICAgICAgICAgICAgICAgIG5hbWVNYXRjaCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGVtaXRzO1xuICAgIH1cbiAgICBjcmVhdGVDb21wb25lbnQoKSB7XG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5lbGVtZW50LmlkIHx8IG51bGw7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gbmV3IENvbXBvbmVudCh0aGlzLmVsZW1lbnQsIHRoaXMubmFtZVZhbHVlLCB0aGlzLnByb3BzVmFsdWUsIHRoaXMubGlzdGVuZXJzVmFsdWUsIGlkLCBMaXZlQ29udHJvbGxlckRlZmF1bHQuYmFja2VuZEZhY3RvcnkodGhpcyksIG5ldyBTdGltdWx1c0VsZW1lbnREcml2ZXIodGhpcykpO1xuICAgICAgICB0aGlzLnByb3hpZWRDb21wb25lbnQgPSBwcm94aWZ5Q29tcG9uZW50KHRoaXMuY29tcG9uZW50KTtcbiAgICAgICAgdGhpcy5lbGVtZW50Ll9fY29tcG9uZW50ID0gdGhpcy5wcm94aWVkQ29tcG9uZW50O1xuICAgICAgICBpZiAodGhpcy5oYXNEZWJvdW5jZVZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudC5kZWZhdWx0RGVib3VuY2UgPSB0aGlzLmRlYm91bmNlVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGx1Z2lucyA9IFtcbiAgICAgICAgICAgIG5ldyBMb2FkaW5nUGx1Z2luKCksXG4gICAgICAgICAgICBuZXcgTGF6eVBsdWdpbigpLFxuICAgICAgICAgICAgbmV3IFZhbGlkYXRlZEZpZWxkc1BsdWdpbigpLFxuICAgICAgICAgICAgbmV3IFBhZ2VVbmxvYWRpbmdQbHVnaW4oKSxcbiAgICAgICAgICAgIG5ldyBQb2xsaW5nUGx1Z2luKCksXG4gICAgICAgICAgICBuZXcgU2V0VmFsdWVPbnRvTW9kZWxGaWVsZHNQbHVnaW4oKSxcbiAgICAgICAgICAgIG5ldyBRdWVyeVN0cmluZ1BsdWdpbih0aGlzLnF1ZXJ5TWFwcGluZ1ZhbHVlKSxcbiAgICAgICAgICAgIG5ldyBDaGlsZENvbXBvbmVudFBsdWdpbih0aGlzLmNvbXBvbmVudCksXG4gICAgICAgIF07XG4gICAgICAgIHBsdWdpbnMuZm9yRWFjaCgocGx1Z2luKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudC5hZGRQbHVnaW4ocGx1Z2luKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbm5lY3RDb21wb25lbnQoKSB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50LmNvbm5lY3QoKTtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50LCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lbGVtZW50RXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgoeyBldmVudCwgY2FsbGJhY2sgfSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnQuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBjYWxsYmFjayk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoJ2Nvbm5lY3QnKTtcbiAgICB9XG4gICAgZGlzY29ubmVjdENvbXBvbmVudCgpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnQuZGlzY29ubmVjdCgpO1xuICAgICAgICB0aGlzLmVsZW1lbnRFdmVudExpc3RlbmVycy5mb3JFYWNoKCh7IGV2ZW50LCBjYWxsYmFjayB9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudC5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGNhbGxiYWNrKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudCgnZGlzY29ubmVjdCcpO1xuICAgIH1cbiAgICBoYW5kbGVJbnB1dEV2ZW50KGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsRnJvbUVsZW1lbnRFdmVudCh0YXJnZXQsICdpbnB1dCcpO1xuICAgIH1cbiAgICBoYW5kbGVDaGFuZ2VFdmVudChldmVudCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVNb2RlbEZyb21FbGVtZW50RXZlbnQodGFyZ2V0LCAnY2hhbmdlJyk7XG4gICAgfVxuICAgIHVwZGF0ZU1vZGVsRnJvbUVsZW1lbnRFdmVudChlbGVtZW50LCBldmVudE5hbWUpIHtcbiAgICAgICAgaWYgKCFlbGVtZW50QmVsb25nc1RvVGhpc0NvbXBvbmVudChlbGVtZW50LCB0aGlzLmNvbXBvbmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIShlbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCB1cGRhdGUgbW9kZWwgZm9yIG5vbiBIVE1MRWxlbWVudCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJiBlbGVtZW50LnR5cGUgPT09ICdmaWxlJykge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gZWxlbWVudC5uYW1lO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQuZmlsZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzW2tleV0gPSBlbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5wZW5kaW5nRmlsZXNba2V5XSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnBlbmRpbmdGaWxlc1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vZGVsRGlyZWN0aXZlID0gZ2V0TW9kZWxEaXJlY3RpdmVGcm9tRWxlbWVudChlbGVtZW50LCBmYWxzZSk7XG4gICAgICAgIGlmICghbW9kZWxEaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtb2RlbEJpbmRpbmcgPSBnZXRNb2RlbEJpbmRpbmcobW9kZWxEaXJlY3RpdmUpO1xuICAgICAgICBpZiAoIW1vZGVsQmluZGluZy50YXJnZXRFdmVudE5hbWUpIHtcbiAgICAgICAgICAgIG1vZGVsQmluZGluZy50YXJnZXRFdmVudE5hbWUgPSAnaW5wdXQnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBlbmRpbmdBY3Rpb25UcmlnZ2VyTW9kZWxFbGVtZW50ID09PSBlbGVtZW50KSB7XG4gICAgICAgICAgICBtb2RlbEJpbmRpbmcuc2hvdWxkUmVuZGVyID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50TmFtZSA9PT0gJ2NoYW5nZScgJiYgbW9kZWxCaW5kaW5nLnRhcmdldEV2ZW50TmFtZSA9PT0gJ2lucHV0Jykge1xuICAgICAgICAgICAgbW9kZWxCaW5kaW5nLnRhcmdldEV2ZW50TmFtZSA9ICdjaGFuZ2UnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudE5hbWUgJiYgbW9kZWxCaW5kaW5nLnRhcmdldEV2ZW50TmFtZSAhPT0gZXZlbnROYW1lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZhbHNlID09PSBtb2RlbEJpbmRpbmcuZGVib3VuY2UpIHtcbiAgICAgICAgICAgIGlmIChtb2RlbEJpbmRpbmcudGFyZ2V0RXZlbnROYW1lID09PSAnaW5wdXQnKSB7XG4gICAgICAgICAgICAgICAgbW9kZWxCaW5kaW5nLmRlYm91bmNlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG1vZGVsQmluZGluZy5kZWJvdW5jZSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmluYWxWYWx1ZSA9IGdldFZhbHVlRnJvbUVsZW1lbnQoZWxlbWVudCwgdGhpcy5jb21wb25lbnQudmFsdWVTdG9yZSk7XG4gICAgICAgIHRoaXMuY29tcG9uZW50LnNldChtb2RlbEJpbmRpbmcubW9kZWxOYW1lLCBmaW5hbFZhbHVlLCBtb2RlbEJpbmRpbmcuc2hvdWxkUmVuZGVyLCBtb2RlbEJpbmRpbmcuZGVib3VuY2UpO1xuICAgIH1cbiAgICBkaXNwYXRjaEV2ZW50KG5hbWUsIGRldGFpbCA9IHt9LCBjYW5CdWJibGUgPSB0cnVlLCBjYW5jZWxhYmxlID0gZmFsc2UpIHtcbiAgICAgICAgZGV0YWlsLmNvbnRyb2xsZXIgPSB0aGlzO1xuICAgICAgICBkZXRhaWwuY29tcG9uZW50ID0gdGhpcy5wcm94aWVkQ29tcG9uZW50O1xuICAgICAgICB0aGlzLmRpc3BhdGNoKG5hbWUsIHsgZGV0YWlsLCBwcmVmaXg6ICdsaXZlJywgY2FuY2VsYWJsZSwgYnViYmxlczogY2FuQnViYmxlIH0pO1xuICAgIH1cbiAgICBvbk11dGF0aW9ucyhtdXRhdGlvbnMpIHtcbiAgICAgICAgbXV0YXRpb25zLmZvckVhY2goKG11dGF0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAobXV0YXRpb24udHlwZSA9PT0gJ2F0dHJpYnV0ZXMnICYmXG4gICAgICAgICAgICAgICAgbXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gJ2lkJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5pZCAhPT0gdGhpcy5jb21wb25lbnQuaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc2Nvbm5lY3RDb21wb25lbnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUNvbXBvbmVudCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdENvbXBvbmVudCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5MaXZlQ29udHJvbGxlckRlZmF1bHQudmFsdWVzID0ge1xuICAgIG5hbWU6IFN0cmluZyxcbiAgICB1cmw6IFN0cmluZyxcbiAgICBwcm9wczogeyB0eXBlOiBPYmplY3QsIGRlZmF1bHQ6IHt9IH0sXG4gICAgcHJvcHNVcGRhdGVkRnJvbVBhcmVudDogeyB0eXBlOiBPYmplY3QsIGRlZmF1bHQ6IHt9IH0sXG4gICAgbGlzdGVuZXJzOiB7IHR5cGU6IEFycmF5LCBkZWZhdWx0OiBbXSB9LFxuICAgIGV2ZW50c1RvRW1pdDogeyB0eXBlOiBBcnJheSwgZGVmYXVsdDogW10gfSxcbiAgICBldmVudHNUb0Rpc3BhdGNoOiB7IHR5cGU6IEFycmF5LCBkZWZhdWx0OiBbXSB9LFxuICAgIGRlYm91bmNlOiB7IHR5cGU6IE51bWJlciwgZGVmYXVsdDogMTUwIH0sXG4gICAgZmluZ2VycHJpbnQ6IHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiAnJyB9LFxuICAgIHJlcXVlc3RNZXRob2Q6IHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiAncG9zdCcgfSxcbiAgICBxdWVyeU1hcHBpbmc6IHsgdHlwZTogT2JqZWN0LCBkZWZhdWx0OiB7fSB9LFxufTtcbkxpdmVDb250cm9sbGVyRGVmYXVsdC5iYWNrZW5kRmFjdG9yeSA9IChjb250cm9sbGVyKSA9PiBuZXcgQmFja2VuZChjb250cm9sbGVyLnVybFZhbHVlLCBjb250cm9sbGVyLnJlcXVlc3RNZXRob2RWYWx1ZSk7XG5cbmV4cG9ydCB7IENvbXBvbmVudCwgTGl2ZUNvbnRyb2xsZXJEZWZhdWx0IGFzIGRlZmF1bHQsIGdldENvbXBvbmVudCB9O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQge307IiwiaW1wb3J0IHsgQ29udHJvbGxlciB9IGZyb20gJ0Bob3R3aXJlZC9zdGltdWx1cyc7XG5pbXBvcnQgeyByZWdpc3RlcmFibGVzLCBDaGFydCB9IGZyb20gJ2NoYXJ0LmpzJztcblxuaWYgKHJlZ2lzdGVyYWJsZXMpIHtcbiAgICBDaGFydC5yZWdpc3RlciguLi5yZWdpc3RlcmFibGVzKTtcbn1cbmxldCBpc0NoYXJ0SW5pdGlhbGl6ZWQgPSBmYWxzZTtcbmNsYXNzIGRlZmF1bHRfMSBleHRlbmRzIENvbnRyb2xsZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLmNoYXJ0ID0gbnVsbDtcbiAgICB9XG4gICAgY29ubmVjdCgpIHtcbiAgICAgICAgaWYgKCFpc0NoYXJ0SW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGlzQ2hhcnRJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoJ2luaXQnLCB7XG4gICAgICAgICAgICAgICAgQ2hhcnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISh0aGlzLmVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBlbGVtZW50Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHRoaXMudmlld1ZhbHVlO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkLm9wdGlvbnMpICYmIDAgPT09IHBheWxvYWQub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHBheWxvYWQub3B0aW9ucyA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudCgncHJlLWNvbm5lY3QnLCB7XG4gICAgICAgICAgICBvcHRpb25zOiBwYXlsb2FkLm9wdGlvbnMsXG4gICAgICAgICAgICBjb25maWc6IHBheWxvYWQsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBjYW52YXNDb250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIGlmICghY2FudmFzQ29udGV4dCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZ2V0Q29udGV4dCgpIGZyb20gRWxlbWVudCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnQoY2FudmFzQ29udGV4dCwgcGF5bG9hZCk7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudCgnY29ubmVjdCcsIHsgY2hhcnQ6IHRoaXMuY2hhcnQgfSk7XG4gICAgfVxuICAgIHZpZXdWYWx1ZUNoYW5nZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLmNoYXJ0KSB7XG4gICAgICAgICAgICBjb25zdCB2aWV3VmFsdWUgPSB7IGRhdGE6IHRoaXMudmlld1ZhbHVlLmRhdGEsIG9wdGlvbnM6IHRoaXMudmlld1ZhbHVlLm9wdGlvbnMgfTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZpZXdWYWx1ZS5vcHRpb25zKSAmJiAwID09PSB2aWV3VmFsdWUub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB2aWV3VmFsdWUub3B0aW9ucyA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KCd2aWV3LXZhbHVlLWNoYW5nZScsIHZpZXdWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0LmRhdGEgPSB2aWV3VmFsdWUuZGF0YTtcbiAgICAgICAgICAgIHRoaXMuY2hhcnQub3B0aW9ucyA9IHZpZXdWYWx1ZS5vcHRpb25zO1xuICAgICAgICAgICAgdGhpcy5jaGFydC51cGRhdGUoKTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSB0aGlzLmVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgIGlmIChwYXJlbnRFbGVtZW50ICYmIHRoaXMuY2hhcnQub3B0aW9ucy5yZXNwb25zaXZlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxXaWR0aCA9IHBhcmVudEVsZW1lbnQuc3R5bGUud2lkdGg7XG4gICAgICAgICAgICAgICAgcGFyZW50RWxlbWVudC5zdHlsZS53aWR0aCA9IGAke3BhcmVudEVsZW1lbnQub2Zmc2V0V2lkdGggKyAxfXB4YDtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50RWxlbWVudC5zdHlsZS53aWR0aCA9IG9yaWdpbmFsV2lkdGg7XG4gICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGlzcGF0Y2hFdmVudChuYW1lLCBwYXlsb2FkKSB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2gobmFtZSwgeyBkZXRhaWw6IHBheWxvYWQsIHByZWZpeDogJ2NoYXJ0anMnIH0pO1xuICAgIH1cbn1cbmRlZmF1bHRfMS52YWx1ZXMgPSB7XG4gICAgdmlldzogT2JqZWN0LFxufTtcblxuZXhwb3J0IHsgZGVmYXVsdF8xIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6WyJDb250cm9sbGVyIiwiVG9tU2VsZWN0IiwiX19jbGFzc1ByaXZhdGVGaWVsZEdldCIsInJlY2VpdmVyIiwic3RhdGUiLCJraW5kIiwiZiIsIlR5cGVFcnJvciIsImhhcyIsImNhbGwiLCJ2YWx1ZSIsImdldCIsIlN1cHByZXNzZWRFcnJvciIsImVycm9yIiwic3VwcHJlc3NlZCIsIm1lc3NhZ2UiLCJlIiwiRXJyb3IiLCJuYW1lIiwiX2RlZmF1bHRfMV9pbnN0YW5jZXMiLCJfZGVmYXVsdF8xX2dldENvbW1vbkNvbmZpZyIsIl9kZWZhdWx0XzFfY3JlYXRlQXV0b2NvbXBsZXRlIiwiX2RlZmF1bHRfMV9jcmVhdGVBdXRvY29tcGxldGVXaXRoSHRtbENvbnRlbnRzIiwiX2RlZmF1bHRfMV9jcmVhdGVBdXRvY29tcGxldGVXaXRoUmVtb3RlRGF0YSIsIl9kZWZhdWx0XzFfc3RyaXBUYWdzIiwiX2RlZmF1bHRfMV9tZXJnZU9iamVjdHMiLCJfZGVmYXVsdF8xX2NyZWF0ZVRvbVNlbGVjdCIsImRlZmF1bHRfMSIsIl9Db250cm9sbGVyIiwiX2luaGVyaXRzIiwiX3N1cGVyIiwiX2NyZWF0ZVN1cGVyIiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2siLCJhcHBseSIsImFyZ3VtZW50cyIsImFkZCIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJpc09ic2VydmluZyIsImhhc0xvYWRlZENob2ljZXNQcmV2aW91c2x5Iiwib3JpZ2luYWxPcHRpb25zIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwiaW5pdGlhbGl6ZSIsIl90aGlzMiIsIm11dGF0aW9uT2JzZXJ2ZXIiLCJNdXRhdGlvbk9ic2VydmVyIiwibXV0YXRpb25zIiwib25NdXRhdGlvbnMiLCJjb25uZWN0Iiwic2VsZWN0RWxlbWVudCIsImNyZWF0ZU9wdGlvbnNEYXRhU3RydWN0dXJlIiwiaW5pdGlhbGl6ZVRvbVNlbGVjdCIsInNldEF0dHJpYnV0ZSIsInVybFZhbHVlIiwidG9tU2VsZWN0IiwiaGFzTWluQ2hhcmFjdGVyc1ZhbHVlIiwibWluQ2hhcmFjdGVyc1ZhbHVlIiwib3B0aW9uc0FzSHRtbFZhbHVlIiwic3RhcnRNdXRhdGlvbk9ic2VydmVyIiwiZGlzY29ubmVjdCIsInN0b3BNdXRhdGlvbk9ic2VydmVyIiwiY3VycmVudFNlbGVjdGVkVmFsdWVzIiwibXVsdGlwbGUiLCJBcnJheSIsImZyb20iLCJvcHRpb25zIiwiZmlsdGVyIiwib3B0aW9uIiwic2VsZWN0ZWQiLCJtYXAiLCJkZXN0cm95IiwiZm9yRWFjaCIsImluY2x1ZGVzIiwiZ2V0TWF4T3B0aW9ucyIsImxlbmd0aCIsImVsZW1lbnQiLCJIVE1MU2VsZWN0RWxlbWVudCIsIkhUTUxJbnB1dEVsZW1lbnQiLCJkaXNwYXRjaEV2ZW50IiwicGF5bG9hZCIsImRpc3BhdGNoIiwiZGV0YWlsIiwicHJlZml4IiwiaGFzUHJlbG9hZFZhbHVlIiwicHJlbG9hZFZhbHVlIiwicmVzZXRUb21TZWxlY3QiLCJjdXJyZW50SHRtbCIsImlubmVySFRNTCIsImN1cnJlbnRWYWx1ZSIsImdldFZhbHVlIiwic2V0VmFsdWUiLCJjaGFuZ2VUb21TZWxlY3REaXNhYmxlZFN0YXRlIiwiaXNEaXNhYmxlZCIsImRpc2FibGUiLCJlbmFibGUiLCJvYnNlcnZlIiwiY2hpbGRMaXN0Iiwic3VidHJlZSIsImF0dHJpYnV0ZXMiLCJjaGFyYWN0ZXJEYXRhIiwiYXR0cmlidXRlT2xkVmFsdWUiLCJfdGhpczMiLCJjaGFuZ2VEaXNhYmxlZFN0YXRlIiwicmVxdWlyZVJlc2V0IiwibXV0YXRpb24iLCJ0eXBlIiwidGFyZ2V0IiwiYXR0cmlidXRlTmFtZSIsImlzTm93TXVsdGlwbGUiLCJoYXNBdHRyaWJ1dGUiLCJ3YXNNdWx0aXBsZSIsIm9sZFZhbHVlIiwibmV3T3B0aW9ucyIsImFyZU9wdGlvbnNFcXVpdmFsZW50IiwiZm9ybUVsZW1lbnQiLCJkaXNhYmxlZCIsInRleHQiLCJmaWx0ZXJlZE9yaWdpbmFsT3B0aW9ucyIsImZpbHRlcmVkTmV3T3B0aW9ucyIsIm9yaWdpbmFsUGxhY2Vob2xkZXJPcHRpb24iLCJmaW5kIiwibmV3UGxhY2Vob2xkZXJPcHRpb24iLCJub3JtYWxpemVPcHRpb24iLCJjb25jYXQiLCJvcmlnaW5hbE9wdGlvbnNTZXQiLCJTZXQiLCJuZXdPcHRpb25zU2V0Iiwic2l6ZSIsIl90b0NvbnN1bWFibGVBcnJheSIsImV2ZXJ5IiwiV2Vha1NldCIsIl90aGlzNCIsInBsdWdpbnMiLCJpc011bHRpcGxlIiwiY2xlYXJfYnV0dG9uIiwidGl0bGUiLCJyZW1vdmVfYnV0dG9uIiwidmlydHVhbF9zY3JvbGwiLCJyZW5kZXIiLCJub19yZXN1bHRzIiwibm9SZXN1bHRzRm91bmRUZXh0VmFsdWUiLCJvcHRpb25fY3JlYXRlIiwiZGF0YSIsImVzY2FwZURhdGEiLCJjcmVhdGVPcHRpb25UZXh0VmFsdWUiLCJyZXBsYWNlIiwiaW5wdXQiLCJjb25maWciLCJvbkl0ZW1BZGQiLCJzZXRUZXh0Ym94VmFsdWUiLCJjbG9zZUFmdGVyU2VsZWN0Iiwib25PcHRpb25BZGQiLCJwYXJlbnRFbGVtZW50Iiwib3B0Z3JvdXBEYXRhIiwib3B0Z3JvdXAiLCJzZXR0aW5ncyIsIm9wdGdyb3VwRmllbGQiLCJvcHRncm91cHMiLCJvcHRncm91cEVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwibGFiZWwiLCJvcHRpb25FbGVtZW50IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwibGFiZWxGaWVsZCIsIm9wdGlvbk9yZGVyIiwiJG9yZGVyIiwib3JkZXJlZE9wdGlvbiIsIl9pIiwiX09iamVjdCRlbnRyaWVzIiwiT2JqZWN0IiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsIl9zbGljZWRUb0FycmF5IiwidG9tU2VsZWN0T3B0aW9uIiwidmFsdWVGaWVsZCIsImluc2VydEFkamFjZW50RWxlbWVudCIsImFwcGVuZCIsInByZXBlbmQiLCJzaG91bGRMb2FkIiwidG9tU2VsZWN0T3B0aW9uc1ZhbHVlIiwibWF4T3B0aW9ucyIsIl9jb21tb25Db25maWckbGFiZWxGaSIsIl90aGlzNSIsImNvbW1vbkNvbmZpZyIsInNjb3JlIiwic2VhcmNoIiwic2NvcmluZ0Z1bmN0aW9uIiwiZ2V0U2NvcmVGdW5jdGlvbiIsIml0ZW0iLCJfb2JqZWN0U3ByZWFkIiwiYXV0b2NvbXBsZXRlRW5kcG9pbnRVcmwiLCJtaW5DaGFyYWN0ZXJMZW5ndGgiLCJfY29tbW9uQ29uZmlnJGxhYmVsRmkyIiwiX3RoaXM3IiwiZmlyc3RVcmwiLCJxdWVyeSIsInNlcGFyYXRvciIsImVuY29kZVVSSUNvbXBvbmVudCIsImxvYWQiLCJjYWxsYmFjayIsIl90aGlzNiIsInVybCIsImdldFVybCIsImZldGNoIiwidGhlbiIsInJlc3BvbnNlIiwianNvbiIsInNldE5leHRVcmwiLCJuZXh0X3BhZ2UiLCJyZXN1bHRzIiwibG9hZGluZ19tb3JlIiwibG9hZGluZ01vcmVUZXh0VmFsdWUiLCJub19tb3JlX3Jlc3VsdHMiLCJub01vcmVSZXN1bHRzVGV4dFZhbHVlIiwicHJlbG9hZCIsInN0cmluZyIsIm9iamVjdDEiLCJvYmplY3QyIiwicHJlQ29ubmVjdFBheWxvYWQiLCJjb25uZWN0UGF5bG9hZCIsInZhbHVlcyIsIlN0cmluZyIsIm9wdGlvbnNBc0h0bWwiLCJCb29sZWFuIiwibG9hZGluZ01vcmVUZXh0Iiwibm9SZXN1bHRzRm91bmRUZXh0Iiwibm9Nb3JlUmVzdWx0c1RleHQiLCJjcmVhdGVPcHRpb25UZXh0IiwibWluQ2hhcmFjdGVycyIsIk51bWJlciIsInRvbVNlbGVjdE9wdGlvbnMiLCJkZWZhdWx0IiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsImV4cG9ydHMiLCJPcCIsInByb3RvdHlwZSIsImhhc093biIsImhhc093blByb3BlcnR5IiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJkZXNjIiwiJFN5bWJvbCIsIlN5bWJvbCIsIml0ZXJhdG9yU3ltYm9sIiwiaXRlcmF0b3IiLCJhc3luY0l0ZXJhdG9yU3ltYm9sIiwiYXN5bmNJdGVyYXRvciIsInRvU3RyaW5nVGFnU3ltYm9sIiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJlcnIiLCJ3cmFwIiwiaW5uZXJGbiIsIm91dGVyRm4iLCJzZWxmIiwidHJ5TG9jc0xpc3QiLCJwcm90b0dlbmVyYXRvciIsIkdlbmVyYXRvciIsImdlbmVyYXRvciIsImNyZWF0ZSIsImNvbnRleHQiLCJDb250ZXh0IiwibWFrZUludm9rZU1ldGhvZCIsInRyeUNhdGNoIiwiZm4iLCJhcmciLCJDb250aW51ZVNlbnRpbmVsIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsIkl0ZXJhdG9yUHJvdG90eXBlIiwiZ2V0UHJvdG8iLCJnZXRQcm90b3R5cGVPZiIsIk5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlIiwiR3AiLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJtZXRob2QiLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsIlByb21pc2VJbXBsIiwiaW52b2tlIiwicmVzb2x2ZSIsInJlamVjdCIsInJlY29yZCIsInJlc3VsdCIsIl90eXBlb2YiLCJfX2F3YWl0IiwidW53cmFwcGVkIiwicHJldmlvdXNQcm9taXNlIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJkb25lUmVzdWx0IiwiZGVsZWdhdGUiLCJkZWxlZ2F0ZVJlc3VsdCIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsImRvbmUiLCJtZXRob2ROYW1lIiwidW5kZWZpbmVkIiwiaW5mbyIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsImxvY3MiLCJlbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXRlcmFibGUiLCJpdGVyYXRvck1ldGhvZCIsImlzTmFOIiwiaSIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImdlbkZ1biIsImN0b3IiLCJjb25zdHJ1Y3RvciIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwiaXRlciIsImtleXMiLCJ2YWwiLCJvYmplY3QiLCJyZXZlcnNlIiwicG9wIiwic2tpcFRlbXBSZXNldCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJyb290UmVjb3JkIiwicnZhbCIsImV4Y2VwdGlvbiIsImhhbmRsZSIsImxvYyIsImNhdWdodCIsImhhc0NhdGNoIiwiaGFzRmluYWxseSIsImZpbmFsbHlFbnRyeSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwidGhyb3duIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsIl9uZXh0IiwiX3Rocm93IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcmdzIiwiYXJyIiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIm8iLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJ0b1N0cmluZyIsInRlc3QiLCJsZW4iLCJhcnIyIiwiX3MiLCJfZSIsIl94IiwiX3IiLCJfYXJyIiwiX24iLCJfZCIsImlzQXJyYXkiLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJfdG9Qcm9wZXJ0eUtleSIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl90b1ByaW1pdGl2ZSIsImhpbnQiLCJwcmltIiwidG9QcmltaXRpdmUiLCJyZXMiLCJCYWNrZW5kUmVxdWVzdCIsInByb21pc2UiLCJhY3Rpb25zIiwidXBkYXRlTW9kZWxzIiwiaXNSZXNvbHZlZCIsInVwZGF0ZWRNb2RlbHMiLCJjb250YWluc09uZU9mQWN0aW9ucyIsInRhcmdldGVkQWN0aW9ucyIsImFjdGlvbiIsImFyZUFueU1vZGVsc1VwZGF0ZWQiLCJ0YXJnZXRlZE1vZGVscyIsIm1vZGVsIiwiUmVxdWVzdEJ1aWxkZXIiLCJidWlsZFJlcXVlc3QiLCJ1cGRhdGVkIiwiY2hpbGRyZW4iLCJ1cGRhdGVkUHJvcHNGcm9tUGFyZW50IiwiZmlsZXMiLCJzcGxpdFVybCIsInNwbGl0IiwiX3NwbGl0VXJsIiwiX3NwbGl0VXJsMiIsInF1ZXJ5U3RyaW5nIiwicGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwiZmV0Y2hPcHRpb25zIiwiaGVhZGVycyIsIkFjY2VwdCIsInRvdGFsRmlsZXMiLCJyZWR1Y2UiLCJ0b3RhbCIsImN1cnJlbnQiLCJoYXNGaW5nZXJwcmludHMiLCJ3aWxsRGF0YUZpdEluVXJsIiwiSlNPTiIsInN0cmluZ2lmeSIsInNldCIsInJlcXVlc3REYXRhIiwicHJvcHNGcm9tUGFyZW50IiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsIl9pMiIsImJvZHkiLCJwYXJhbXNTdHJpbmciLCJwcm9wc0pzb24iLCJ1cGRhdGVkSnNvbiIsImNoaWxkcmVuSnNvbiIsInByb3BzRnJvbVBhcmVudEpzb24iLCJ1cmxFbmNvZGVkSnNvbkRhdGEiLCJCYWNrZW5kIiwicmVxdWVzdEJ1aWxkZXIiLCJtYWtlUmVxdWVzdCIsIl90aGlzJHJlcXVlc3RCdWlsZGVyJCIsImJhY2tlbmRBY3Rpb24iLCJCYWNrZW5kUmVzcG9uc2UiLCJfZ2V0Qm9keSIsIl9jYWxsZWUiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwiZ2V0Qm9keSIsImdldEVsZW1lbnRBc1RhZ1RleHQiLCJvdXRlckhUTUwiLCJpbmRleE9mIiwiY29tcG9uZW50TWFwQnlFbGVtZW50IiwiV2Vha01hcCIsImNvbXBvbmVudE1hcEJ5Q29tcG9uZW50IiwiTWFwIiwicmVnaXN0ZXJDb21wb25lbnQiLCJjb21wb25lbnQiLCJ1bnJlZ2lzdGVyQ29tcG9uZW50IiwiZ2V0Q29tcG9uZW50IiwiY291bnQiLCJtYXhDb3VudCIsImludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIiwiZmluZENvbXBvbmVudHMiLCJjdXJyZW50Q29tcG9uZW50Iiwib25seVBhcmVudHMiLCJvbmx5TWF0Y2hOYW1lIiwiY29tcG9uZW50cyIsImNvbXBvbmVudE5hbWUiLCJjb250YWlucyIsImZpbmRDaGlsZHJlbiIsImZvdW5kQ2hpbGRDb21wb25lbnQiLCJjaGlsZENvbXBvbmVudE5hbWUiLCJjaGlsZENvbXBvbmVudCIsImZpbmRQYXJlbnQiLCJIb29rTWFuYWdlciIsImhvb2tzIiwicmVnaXN0ZXIiLCJob29rTmFtZSIsInVucmVnaXN0ZXIiLCJpbmRleCIsInNwbGljZSIsInRyaWdnZXJIb29rIiwiX2xlbiIsIl9rZXkiLCJDaGFuZ2luZ0l0ZW1zVHJhY2tlciIsImNoYW5nZWRJdGVtcyIsInJlbW92ZWRJdGVtcyIsInNldEl0ZW0iLCJpdGVtTmFtZSIsIm5ld1ZhbHVlIiwicHJldmlvdXNWYWx1ZSIsInJlbW92ZWRSZWNvcmQiLCJvcmlnaW5hbCIsIm9yaWdpbmFsUmVjb3JkIiwicmVtb3ZlSXRlbSIsInRydWVPcmlnaW5hbFZhbHVlIiwiZ2V0Q2hhbmdlZEl0ZW1zIiwiX3JlZiIsIl9yZWYyIiwiZ2V0UmVtb3ZlZEl0ZW1zIiwiaXNFbXB0eSIsIkVsZW1lbnRDaGFuZ2VzIiwiYWRkZWRDbGFzc2VzIiwicmVtb3ZlZENsYXNzZXMiLCJzdHlsZUNoYW5nZXMiLCJhdHRyaWJ1dGVDaGFuZ2VzIiwiYWRkQ2xhc3MiLCJjbGFzc05hbWUiLCJyZW1vdmVDbGFzcyIsImFkZFN0eWxlIiwic3R5bGVOYW1lIiwib3JpZ2luYWxWYWx1ZSIsInJlbW92ZVN0eWxlIiwiYWRkQXR0cmlidXRlIiwicmVtb3ZlQXR0cmlidXRlIiwiZ2V0QWRkZWRDbGFzc2VzIiwiZ2V0UmVtb3ZlZENsYXNzZXMiLCJnZXRDaGFuZ2VkU3R5bGVzIiwiZ2V0UmVtb3ZlZFN0eWxlcyIsImdldENoYW5nZWRBdHRyaWJ1dGVzIiwiZ2V0UmVtb3ZlZEF0dHJpYnV0ZXMiLCJhcHBseVRvRWxlbWVudCIsIl9lbGVtZW50JGNsYXNzTGlzdCIsIl9lbGVtZW50JGNsYXNzTGlzdDIiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJjaGFuZ2UiLCJzdHlsZSIsInNldFByb3BlcnR5IiwicmVtb3ZlUHJvcGVydHkiLCJFeHRlcm5hbE11dGF0aW9uVHJhY2tlciIsInNob3VsZFRyYWNrQ2hhbmdlQ2FsbGJhY2siLCJjaGFuZ2VkRWxlbWVudHMiLCJjaGFuZ2VkRWxlbWVudHNDb3VudCIsImFkZGVkRWxlbWVudHMiLCJyZW1vdmVkRWxlbWVudHMiLCJpc1N0YXJ0ZWQiLCJiaW5kIiwic3RhcnQiLCJnZXRDaGFuZ2VkRWxlbWVudCIsImdldEFkZGVkRWxlbWVudHMiLCJ3YXNFbGVtZW50QWRkZWQiLCJoYW5kbGVQZW5kaW5nQ2hhbmdlcyIsInRha2VSZWNvcmRzIiwiaGFuZGxlZEF0dHJpYnV0ZU11dGF0aW9ucyIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwiaXNFbGVtZW50QWRkZWRCeVRyYW5zbGF0aW9uIiwiaXNDaGFuZ2VJbkFkZGVkRWxlbWVudCIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJhZGRlZEVsZW1lbnQiLCJoYW5kbGVDaGlsZExpc3RNdXRhdGlvbiIsImhhbmRsZUF0dHJpYnV0ZU11dGF0aW9uIiwiYWRkZWROb2RlcyIsIm5vZGUiLCJFbGVtZW50IiwicmVtb3ZlZE5vZGVzIiwiY2hhbmdlZEVsZW1lbnQiLCJoYW5kbGVDbGFzc0F0dHJpYnV0ZU11dGF0aW9uIiwiaGFuZGxlU3R5bGVBdHRyaWJ1dGVNdXRhdGlvbiIsImhhbmRsZUdlbmVyaWNBdHRyaWJ1dGVNdXRhdGlvbiIsImVsZW1lbnRDaGFuZ2VzIiwicHJldmlvdXNWYWx1ZXMiLCJtYXRjaCIsIm5ld1ZhbHVlcyIsImFkZGVkVmFsdWVzIiwicmVtb3ZlZFZhbHVlcyIsInByZXZpb3VzU3R5bGVzIiwiZXh0cmFjdFN0eWxlcyIsImdldEF0dHJpYnV0ZSIsIm5ld1N0eWxlcyIsImFkZGVkT3JDaGFuZ2VkU3R5bGVzIiwicmVtb3ZlZFN0eWxlcyIsInN0eWxlcyIsInN0eWxlT2JqZWN0IiwicGFydHMiLCJwcm9wZXJ0eSIsInRyaW0iLCJqb2luIiwidGFnTmFtZSIsInBhcnNlRGlyZWN0aXZlcyIsImNvbnRlbnQiLCJkaXJlY3RpdmVzIiwiY3VycmVudEFjdGlvbk5hbWUiLCJjdXJyZW50QXJndW1lbnRWYWx1ZSIsImN1cnJlbnRBcmd1bWVudHMiLCJjdXJyZW50TW9kaWZpZXJzIiwiZ2V0TGFzdEFjdGlvbk5hbWUiLCJwdXNoSW5zdHJ1Y3Rpb24iLCJtb2RpZmllcnMiLCJnZXRTdHJpbmciLCJwdXNoQXJndW1lbnQiLCJwdXNoTW9kaWZpZXIiLCJjaGFyIiwiY29tYmluZVNwYWNlZEFycmF5IiwiZmluYWxQYXJ0cyIsInBhcnQiLCJ0cmltQWxsIiwic3RyIiwibm9ybWFsaXplTW9kZWxOYW1lIiwiZ2V0VmFsdWVGcm9tRWxlbWVudCIsInZhbHVlU3RvcmUiLCJtb2RlbE5hbWVEYXRhIiwiZ2V0TW9kZWxEaXJlY3RpdmVGcm9tRWxlbWVudCIsIm1vZGVsVmFsdWUiLCJnZXRNdWx0aXBsZUNoZWNrYm94VmFsdWUiLCJjaGVja2VkIiwiaW5wdXRWYWx1ZSIsInNlbGVjdGVkT3B0aW9ucyIsImVsIiwiZGF0YXNldCIsInNldFZhbHVlT25FbGVtZW50Iiwic29tZSIsImFycmF5V3JhcHBlZFZhbHVlIiwiZ2V0QWxsTW9kZWxEaXJlY3RpdmVGcm9tRWxlbWVudHMiLCJkaXJlY3RpdmUiLCJ0aHJvd09uTWlzc2luZyIsImRhdGFNb2RlbERpcmVjdGl2ZXMiLCJjbG9zZXN0IiwiZWxlbWVudEJlbG9uZ3NUb1RoaXNDb21wb25lbnQiLCJjbG9zZXN0TGl2ZUNvbXBvbmVudCIsImNsb25lSFRNTEVsZW1lbnQiLCJuZXdFbGVtZW50IiwiY2xvbmVOb2RlIiwiSFRNTEVsZW1lbnQiLCJodG1sVG9FbGVtZW50IiwiaHRtbCIsInRlbXBsYXRlIiwiY2hpbGRFbGVtZW50Q291bnQiLCJjaGlsZCIsImZpcnN0RWxlbWVudENoaWxkIiwiY3VycmVudFZhbHVlcyIsImZpbmFsVmFsdWVzIiwiSWRpb21vcnBoIiwiRU1QVFlfU0VUIiwiZGVmYXVsdHMiLCJtb3JwaFN0eWxlIiwiY2FsbGJhY2tzIiwiYmVmb3JlTm9kZUFkZGVkIiwibm9PcCIsImFmdGVyTm9kZUFkZGVkIiwiYmVmb3JlTm9kZU1vcnBoZWQiLCJhZnRlck5vZGVNb3JwaGVkIiwiYmVmb3JlTm9kZVJlbW92ZWQiLCJhZnRlck5vZGVSZW1vdmVkIiwiYmVmb3JlQXR0cmlidXRlVXBkYXRlZCIsImhlYWQiLCJzaG91bGRQcmVzZXJ2ZSIsImVsdCIsInNob3VsZFJlQXBwZW5kIiwic2hvdWxkUmVtb3ZlIiwiYWZ0ZXJIZWFkTW9ycGhlZCIsIm1vcnBoIiwib2xkTm9kZSIsIm5ld0NvbnRlbnQiLCJEb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsInBhcnNlQ29udGVudCIsIm5vcm1hbGl6ZWRDb250ZW50Iiwibm9ybWFsaXplQ29udGVudCIsImN0eCIsImNyZWF0ZU1vcnBoQ29udGV4dCIsIm1vcnBoTm9ybWFsaXplZENvbnRlbnQiLCJub3JtYWxpemVkTmV3Q29udGVudCIsImJsb2NrIiwib2xkSGVhZCIsIm5ld0hlYWQiLCJwcm9taXNlcyIsImhhbmRsZUhlYWRFbGVtZW50IiwiYWxsIiwiYXNzaWduIiwiaWdub3JlIiwibW9ycGhDaGlsZHJlbiIsImJlc3RNYXRjaCIsImZpbmRCZXN0Tm9kZU1hdGNoIiwicHJldmlvdXNTaWJsaW5nIiwibmV4dFNpYmxpbmciLCJtb3JwaGVkTm9kZSIsIm1vcnBoT2xkTm9kZVRvIiwiaW5zZXJ0U2libGluZ3MiLCJpZ25vcmVWYWx1ZU9mQWN0aXZlRWxlbWVudCIsInBvc3NpYmxlQWN0aXZlRWxlbWVudCIsImlnbm9yZUFjdGl2ZVZhbHVlIiwiYWN0aXZlRWxlbWVudCIsImlnbm9yZUFjdGl2ZSIsImlzU29mdE1hdGNoIiwicmVwbGFjZUNoaWxkIiwiSFRNTEhlYWRFbGVtZW50Iiwic3luY05vZGVGcm9tIiwibmV3UGFyZW50Iiwib2xkUGFyZW50IiwibmV4dE5ld0NoaWxkIiwiZmlyc3RDaGlsZCIsImluc2VydGlvblBvaW50IiwibmV3Q2hpbGQiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUlkc0Zyb21Db25zaWRlcmF0aW9uIiwiaXNJZFNldE1hdGNoIiwiaWRTZXRNYXRjaCIsImZpbmRJZFNldE1hdGNoIiwicmVtb3ZlTm9kZXNCZXR3ZWVuIiwic29mdE1hdGNoIiwiZmluZFNvZnRNYXRjaCIsImluc2VydEJlZm9yZSIsInRlbXBOb2RlIiwicmVtb3ZlTm9kZSIsImlnbm9yZUF0dHJpYnV0ZSIsImF0dHIiLCJ0byIsInVwZGF0ZVR5cGUiLCJub2RlVHlwZSIsImZyb21BdHRyaWJ1dGVzIiwidG9BdHRyaWJ1dGVzIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsImZyb21BdHRyaWJ1dGUiLCJ0b0F0dHJpYnV0ZSIsIm5vZGVWYWx1ZSIsInN5bmNJbnB1dFZhbHVlIiwic3luY0Jvb2xlYW5BdHRyaWJ1dGUiLCJpZ25vcmVVcGRhdGUiLCJmcm9tVmFsdWUiLCJ0b1ZhbHVlIiwiSFRNTE9wdGlvbkVsZW1lbnQiLCJIVE1MVGV4dEFyZWFFbGVtZW50IiwibmV3SGVhZFRhZyIsImN1cnJlbnRIZWFkIiwiYWRkZWQiLCJyZW1vdmVkIiwicHJlc2VydmVkIiwibm9kZXNUb0FwcGVuZCIsImhlYWRNZXJnZVN0eWxlIiwic3JjVG9OZXdIZWFkTm9kZXMiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0IiwibmV3SGVhZENoaWxkIiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsImN1cnJlbnRIZWFkRWx0IiwiaW5OZXdDb250ZW50IiwiaXNSZUFwcGVuZGVkIiwiaXNQcmVzZXJ2ZWQiLCJfbG9vcCIsIm5ld05vZGUiLCJfbm9kZXNUb0FwcGVuZCIsIl9pMyIsIm5ld0VsdCIsImNyZWF0ZVJhbmdlIiwiY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50IiwiaHJlZiIsInNyYyIsIl9yZXNvbHZlIiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9pNCIsIl9yZW1vdmVkIiwicmVtb3ZlZEVsZW1lbnQiLCJyZW1vdmVDaGlsZCIsImtlcHQiLCJtZXJnZURlZmF1bHRzIiwiZmluYWxDb25maWciLCJpZE1hcCIsImNyZWF0ZUlkTWFwIiwiZGVhZElkcyIsIm5vZGUxIiwibm9kZTIiLCJpZCIsImdldElkSW50ZXJzZWN0aW9uQ291bnQiLCJzdGFydEluY2x1c2l2ZSIsImVuZEV4Y2x1c2l2ZSIsIm5ld0NoaWxkUG90ZW50aWFsSWRDb3VudCIsInBvdGVudGlhbE1hdGNoIiwib3RoZXJNYXRjaENvdW50IiwicG90ZW50aWFsU29mdE1hdGNoIiwic2libGluZ1NvZnRNYXRjaENvdW50IiwicGFyc2VyIiwiRE9NUGFyc2VyIiwiY29udGVudFdpdGhTdmdzUmVtb3ZlZCIsInBhcnNlRnJvbVN0cmluZyIsImdlbmVyYXRlZEJ5SWRpb21vcnBoIiwiaHRtbEVsZW1lbnQiLCJyZXNwb25zZURvYyIsImR1bW15UGFyZW50IiwiTm9kZSIsIl9pNSIsIl9hcnIyIiwic3RhY2siLCJjdXJyZW50RWxlbWVudCIsImJlc3RFbGVtZW50IiwibmV3U2NvcmUiLCJzY29yZUVsZW1lbnQiLCJpc0lkSW5Db25zaWRlcmF0aW9uIiwiaWRJc1dpdGhpbk5vZGUiLCJ0YXJnZXROb2RlIiwiaWRTZXQiLCJfaXRlcmF0b3I2IiwiX3N0ZXA2Iiwic291cmNlU2V0IiwibWF0Y2hDb3VudCIsIl9pdGVyYXRvcjciLCJfc3RlcDciLCJwb3B1bGF0ZUlkTWFwRm9yTm9kZSIsIm5vZGVQYXJlbnQiLCJpZEVsZW1lbnRzIiwicXVlcnlTZWxlY3RvckFsbCIsIl9pdGVyYXRvcjgiLCJfc3RlcDgiLCJvbGRDb250ZW50Iiwibm9ybWFsaXplQXR0cmlidXRlc0ZvckNvbXBhcmlzb24iLCJpc0ZpbGVJbnB1dCIsInN5bmNBdHRyaWJ1dGVzIiwiZnJvbUVsIiwidG9FbCIsImV4ZWN1dGVNb3JwaGRvbSIsInJvb3RGcm9tRWxlbWVudCIsInJvb3RUb0VsZW1lbnQiLCJtb2RpZmllZEZpZWxkRWxlbWVudHMiLCJnZXRFbGVtZW50VmFsdWUiLCJleHRlcm5hbE11dGF0aW9uVHJhY2tlciIsIm9yaWdpbmFsRWxlbWVudElkc1RvU3dhcEFmdGVyIiwib3JpZ2luYWxFbGVtZW50c1RvUHJlc2VydmUiLCJtYXJrRWxlbWVudEFzTmVlZGluZ1Bvc3RNb3JwaFN3YXAiLCJyZXBsYWNlV2l0aENsb25lIiwib2xkRWxlbWVudCIsImNsb25lZE9sZEVsZW1lbnQiLCJyZXBsYWNlV2l0aCIsIl9mcm9tRWwkcGFyZW50RWxlbWVudCIsImNsb25lZEZyb21FbCIsIl9feCIsIndpbmRvdyIsIkFscGluZSIsIm5vZGVOYW1lIiwidG9VcHBlckNhc2UiLCJpc0VxdWFsTm9kZSIsIm5vcm1hbGl6ZWRGcm9tRWwiLCJub3JtYWxpemVkVG9FbCIsIm9yaWdpbmFsRWxlbWVudCIsIlVuc3luY2VkSW5wdXRzVHJhY2tlciIsIm1vZGVsRWxlbWVudFJlc29sdmVyIiwiZWxlbWVudEV2ZW50TGlzdGVuZXJzIiwiZXZlbnQiLCJoYW5kbGVJbnB1dEV2ZW50IiwidW5zeW5jZWRJbnB1dHMiLCJVbnN5bmNlZElucHV0Q29udGFpbmVyIiwiYWN0aXZhdGUiLCJfcmVmMyIsImRlYWN0aXZhdGUiLCJfcmVmNCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJtYXJrTW9kZWxBc1N5bmNlZCIsIm1vZGVsTmFtZSIsInVwZGF0ZU1vZGVsRnJvbUVsZW1lbnQiLCJnZXRNb2RlbE5hbWUiLCJnZXRVbnN5bmNlZElucHV0cyIsImFsbFVuc3luY2VkSW5wdXRzIiwiZ2V0VW5zeW5jZWRNb2RlbHMiLCJnZXRVbnN5bmNlZE1vZGVsTmFtZXMiLCJyZXNldFVuc3luY2VkRmllbGRzIiwidW5zeW5jZWROb25Nb2RlbEZpZWxkcyIsInVuc3luY2VkTW9kZWxOYW1lcyIsInVuc3luY2VkTW9kZWxGaWVsZHMiLCJnZXREZWVwRGF0YSIsInByb3BlcnR5UGF0aCIsIl9wYXJzZURlZXBEYXRhIiwicGFyc2VEZWVwRGF0YSIsImN1cnJlbnRMZXZlbERhdGEiLCJmaW5hbEtleSIsImZpbmFsRGF0YSIsInBhcnNlIiwiVmFsdWVTdG9yZSIsImRpcnR5UHJvcHMiLCJwZW5kaW5nUHJvcHMiLCJub3JtYWxpemVkTmFtZSIsImdldE9yaWdpbmFsUHJvcHMiLCJnZXREaXJ0eVByb3BzIiwiZ2V0VXBkYXRlZFByb3BzRnJvbVBhcmVudCIsImZsdXNoRGlydHlQcm9wc1RvUGVuZGluZyIsInJlaW5pdGlhbGl6ZUFsbFByb3BzIiwicHVzaFBlbmRpbmdQcm9wc0JhY2tUb0RpcnR5Iiwic3RvcmVOZXdQcm9wc0Zyb21QYXJlbnQiLCJjaGFuZ2VkIiwiX2k2IiwiX09iamVjdCRlbnRyaWVzMiIsIl9PYmplY3QkZW50cmllczIkX2kiLCJDb21wb25lbnQiLCJsaXN0ZW5lcnMiLCJiYWNrZW5kIiwiZWxlbWVudERyaXZlciIsImZpbmdlcnByaW50IiwiZGVmYXVsdERlYm91bmNlIiwiYmFja2VuZFJlcXVlc3QiLCJwZW5kaW5nQWN0aW9ucyIsInBlbmRpbmdGaWxlcyIsImlzUmVxdWVzdFBlbmRpbmciLCJyZXF1ZXN0RGVib3VuY2VUaW1lb3V0IiwibGlzdGVuZXIiLCJfdGhpczckbGlzdGVuZXJzJGdldCIsInVuc3luY2VkSW5wdXRzVHJhY2tlciIsInJlc2V0UHJvbWlzZSIsImFkZFBsdWdpbiIsInBsdWdpbiIsImF0dGFjaFRvQ29tcG9uZW50IiwiY2xlYXJSZXF1ZXN0RGVib3VuY2VUaW1lb3V0Iiwib24iLCJvZmYiLCJyZVJlbmRlciIsImRlYm91bmNlIiwibmV4dFJlcXVlc3RQcm9taXNlIiwiaXNDaGFuZ2VkIiwiZGVib3VuY2VkU3RhcnRSZXF1ZXN0IiwiZ2V0RGF0YSIsInRyeVN0YXJ0aW5nUmVxdWVzdCIsImVtaXQiLCJvbmx5TWF0Y2hpbmdDb21wb25lbnRzTmFtZWQiLCJwZXJmb3JtRW1pdCIsImVtaXRVcCIsImVtaXRTZWxmIiwiZG9FbWl0IiwibWF0Y2hpbmdOYW1lIiwiX3RoaXM4IiwiaXNUdXJib0VuYWJsZWQiLCJUdXJibyIsInBlcmZvcm1SZXF1ZXN0IiwiX3RoaXM5IiwidGhpc1Byb21pc2VSZXNvbHZlIiwibmV4dFJlcXVlc3RQcm9taXNlUmVzb2x2ZSIsImZpbGVzVG9TZW5kIiwiX2k3IiwiX09iamVjdCRlbnRyaWVzMyIsIl9PYmplY3QkZW50cmllczMkX2kiLCJyZXF1ZXN0Q29uZmlnIiwiX3JlZjUiLCJfY2FsbGVlMiIsIl9oZWFkZXJzJGdldCIsImJhY2tlbmRSZXNwb25zZSIsIl9pOCIsIl9PYmplY3QkdmFsdWVzIiwiY29udHJvbHMiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJkaXNwbGF5RXJyb3IiLCJyZW5kZXJFcnJvciIsInByb2Nlc3NSZXJlbmRlciIsIl94MiIsIl90aGlzMTAiLCJzaG91bGRSZW5kZXIiLCJ2aXNpdCIsImxvY2F0aW9uIiwibW9kaWZpZWRNb2RlbFZhbHVlcyIsIm1hdGNoZXMiLCJjb25zb2xlIiwibmV3UHJvcHMiLCJnZXRDb21wb25lbnRQcm9wcyIsImV2ZW50c1RvRW1pdCIsImdldEV2ZW50c1RvRW1pdCIsImJyb3dzZXJFdmVudHNUb0Rpc3BhdGNoIiwiZ2V0QnJvd3NlckV2ZW50c1RvRGlzcGF0Y2giLCJfcmVmNiIsIl9yZWY3IiwiQ3VzdG9tRXZlbnQiLCJidWJibGVzIiwiY2FsY3VsYXRlRGVib3VuY2UiLCJjbGVhclRpbWVvdXQiLCJfdGhpczExIiwic2V0VGltZW91dCIsIm1vZGFsIiwiZ2V0RWxlbWVudEJ5SWQiLCJwYWRkaW5nIiwiYmFja2dyb3VuZENvbG9yIiwiekluZGV4IiwicG9zaXRpb24iLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImlmcmFtZSIsImJvcmRlclJhZGl1cyIsImZsZXhHcm93Iiwib3ZlcmZsb3ciLCJjb250ZW50V2luZG93Iiwib3BlbiIsIndyaXRlIiwiY2xvc2UiLCJjbG9zZU1vZGFsIiwiZm9jdXMiLCJfdGhpczEyIiwiX3VwZGF0ZUZyb21QYXJlbnRQcm9wcyIsInByb3hpZnlDb21wb25lbnQiLCJQcm94eSIsInByb3AiLCJjYWxsYWJsZSIsIl9sZW4yIiwiX2tleTIiLCJSZWZsZWN0IiwiU3RpbXVsdXNFbGVtZW50RHJpdmVyIiwiY29udHJvbGxlciIsIm1vZGVsRGlyZWN0aXZlIiwicHJvcHNWYWx1ZSIsImV2ZW50c1RvRW1pdFZhbHVlIiwiZXZlbnRzVG9EaXNwYXRjaFZhbHVlIiwiZ2V0TW9kZWxCaW5kaW5nIiwidGFyZ2V0RXZlbnROYW1lIiwibW9kaWZpZXIiLCJwYXJzZUludCIsIl9tb2RlbERpcmVjdGl2ZSRhY3RpbyIsIl9tb2RlbERpcmVjdGl2ZSRhY3RpbzIiLCJpbm5lck1vZGVsTmFtZSIsIkNoaWxkQ29tcG9uZW50UGx1Z2luIiwicGFyZW50TW9kZWxCaW5kaW5ncyIsIm1vZGVsRGlyZWN0aXZlcyIsIl90aGlzMTMiLCJnZXRDaGlsZHJlbkZpbmdlcnByaW50cyIsIm5vdGlmeVBhcmVudE1vZGVsQ2hhbmdlIiwiZmluZ2VycHJpbnRzIiwiZ2V0Q2hpbGRyZW4iLCJ0YWciLCJ0b0xvd2VyQ2FzZSIsInBhcmVudENvbXBvbmVudCIsIm1vZGVsQmluZGluZyIsImNoaWxkTW9kZWxOYW1lIiwiTGF6eVBsdWdpbiIsImludGVyc2VjdGlvbk9ic2VydmVyIiwiX2NvbXBvbmVudCRlbGVtZW50JGF0IiwiX3RoaXMxNCIsImdldE5hbWVkSXRlbSIsImdldE9ic2VydmVyIiwiX3RoaXMxNCRpbnRlcnNlY3Rpb25PIiwidW5vYnNlcnZlIiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJvYnNlcnZlciIsImlzSW50ZXJzZWN0aW5nIiwiTG9hZGluZ1BsdWdpbiIsIl90aGlzMTUiLCJyZXF1ZXN0Iiwic3RhcnRMb2FkaW5nIiwiZmluaXNoTG9hZGluZyIsInRhcmdldEVsZW1lbnQiLCJoYW5kbGVMb2FkaW5nVG9nZ2xlIiwiaXNMb2FkaW5nIiwiX3RoaXMxNiIsImFkZEF0dHJpYnV0ZXMiLCJyZW1vdmVBdHRyaWJ1dGVzIiwiZ2V0TG9hZGluZ0RpcmVjdGl2ZXMiLCJfcmVmOCIsImhhbmRsZUxvYWRpbmdEaXJlY3RpdmUiLCJfdGhpczE3IiwiZmluYWxBY3Rpb24iLCJwYXJzZUxvYWRpbmdBY3Rpb24iLCJkZWxheSIsInZhbGlkTW9kaWZpZXJzIiwiX3ZhbGlkTW9kaWZpZXJzJGdldCIsImxvYWRpbmdEaXJlY3RpdmUiLCJzaG93RWxlbWVudCIsImhpZGVFbGVtZW50IiwibG9hZGluZ0RpcmVjdGl2ZXMiLCJtYXRjaGluZ0VsZW1lbnRzIiwiU1ZHRWxlbWVudCIsImxvYWRpbmciLCJjbGFzc2VzIiwiX2VsZW1lbnQkY2xhc3NMaXN0MyIsIl9lbGVtZW50JGNsYXNzTGlzdDQiLCJhdHRyaWJ1dGUiLCJQYWdlVW5sb2FkaW5nUGx1Z2luIiwiaXNDb25uZWN0ZWQiLCJfdGhpczE4IiwiUG9sbGluZ0RpcmVjdG9yIiwiaXNQb2xsaW5nQWN0aXZlIiwicG9sbGluZ0ludGVydmFscyIsImFkZFBvbGwiLCJhY3Rpb25OYW1lIiwiZHVyYXRpb24iLCJwb2xscyIsImluaXRpYXRlUG9sbCIsInN0YXJ0QWxsUG9sbGluZyIsIl90aGlzMTkiLCJfcmVmOSIsInN0b3BBbGxQb2xsaW5nIiwiY2xlYXJQb2xsaW5nIiwiX3RoaXMyMCIsInRpbWVyIiwiUG9sbGluZ1BsdWdpbiIsIl90aGlzMjEiLCJwb2xsaW5nRGlyZWN0b3IiLCJpbml0aWFsaXplUG9sbGluZyIsIl90aGlzMjIiLCJwb2xsIiwicmF3UG9sbENvbmZpZyIsIndhcm4iLCJpc1ZhbHVlRW1wdHkiLCJfaTkiLCJfT2JqZWN0JGtleXMiLCJ0b1F1ZXJ5U3RyaW5nIiwiYnVpbGRRdWVyeVN0cmluZ0VudHJpZXMiLCJiYXNlS2V5IiwiX3JlZjEwIiwiX3JlZjExIiwiaUtleSIsImlWYWx1ZSIsIl9yZWYxMiIsIl9yZWYxMyIsImZyb21RdWVyeVN0cmluZyIsImluc2VydERvdE5vdGF0ZWRWYWx1ZUludG9EYXRhIiwiX2tleSRzcGxpdCIsIl9rZXkkc3BsaXQyIiwiX3RvQXJyYXkiLCJmaXJzdCIsInNlY29uZCIsInJlc3QiLCJfcmVmMTQiLCJfcmVmMTUiLCJkZWNvZGVVUklDb21wb25lbnQiLCJkb3ROb3RhdGVkS2V5IiwiVXJsVXRpbHMiLCJfVVJMIiwic2V0RGF0YSIsIl93cmFwTmF0aXZlU3VwZXIiLCJVUkwiLCJIaXN0b3J5U3RyYXRlZ3kiLCJoaXN0b3J5IiwicmVwbGFjZVN0YXRlIiwiUXVlcnlTdHJpbmdQbHVnaW4iLCJtYXBwaW5nIiwiX3RoaXMyMyIsInVybFV0aWxzIiwiY3VycmVudFVybCIsIl9yZWYxNiIsIl9yZWYxNyIsIlNldFZhbHVlT250b01vZGVsRmllbGRzUGx1Z2luIiwiX3RoaXMyNCIsInN5bmNocm9uaXplVmFsdWVPZk1vZGVsRmllbGRzIiwiSFRNTEZvcm1FbGVtZW50IiwiVmFsaWRhdGVkRmllbGRzUGx1Z2luIiwiX3RoaXMyNSIsImhhbmRsZU1vZGVsU2V0IiwidmFsaWRhdGVkRmllbGRzIiwiTGl2ZUNvbnRyb2xsZXJEZWZhdWx0IiwiX3N1cGVyMiIsIl90aGlzMjYiLCJwZW5kaW5nQWN0aW9uVHJpZ2dlck1vZGVsRWxlbWVudCIsImhhbmRsZUNoYW5nZUV2ZW50IiwiY3JlYXRlQ29tcG9uZW50IiwiY29ubmVjdENvbXBvbmVudCIsImRpc2Nvbm5lY3RDb21wb25lbnQiLCJ1cGRhdGUiLCJjdXJyZW50VGFyZ2V0IiwidXBkYXRlTW9kZWxGcm9tRWxlbWVudEV2ZW50IiwiX3RoaXMyNyIsInJhd0FjdGlvbiIsImFjdGlvbkFyZ3MiLCJzdG9wUHJvcGFnYXRpb24iLCJfdmFsaWRNb2RpZmllcnMkZ2V0MiIsIl9pMTAiLCJfT2JqZWN0JGVudHJpZXM0IiwiX09iamVjdCRlbnRyaWVzNCRfaSIsIiRyZW5kZXIiLCJfdGhpczI4IiwiZ2V0RW1pdERpcmVjdGl2ZXMiLCJfcmVmMTgiLCJuYW1lTWF0Y2giLCJfdGhpczI5IiwiX3JlZjE5IiwiX3RoaXMzMCIsIl9yZWYyMCIsIiR1cGRhdGVNb2RlbCIsInByb3BzVXBkYXRlZEZyb21QYXJlbnRWYWx1ZUNoYW5nZWQiLCJwcm9wc1VwZGF0ZWRGcm9tUGFyZW50VmFsdWUiLCJmaW5nZXJwcmludFZhbHVlQ2hhbmdlZCIsImZpbmdlcnByaW50VmFsdWUiLCJldmVudEluZm8iLCJldmVudEFyZ3MiLCJlbWl0cyIsIl90aGlzMzEiLCJuYW1lVmFsdWUiLCJsaXN0ZW5lcnNWYWx1ZSIsImJhY2tlbmRGYWN0b3J5IiwicHJveGllZENvbXBvbmVudCIsIl9fY29tcG9uZW50IiwiaGFzRGVib3VuY2VWYWx1ZSIsImRlYm91bmNlVmFsdWUiLCJxdWVyeU1hcHBpbmdWYWx1ZSIsIl90aGlzMzIiLCJfcmVmMjEiLCJfdGhpczMzIiwiX3JlZjIyIiwiZXZlbnROYW1lIiwiX2VsZW1lbnQkZmlsZXMiLCJmaW5hbFZhbHVlIiwiY2FuQnViYmxlIiwiY2FuY2VsYWJsZSIsIl90aGlzMzQiLCJwcm9wc1VwZGF0ZWRGcm9tUGFyZW50IiwiZXZlbnRzVG9EaXNwYXRjaCIsInJlcXVlc3RNZXRob2QiLCJxdWVyeU1hcHBpbmciLCJyZXF1ZXN0TWV0aG9kVmFsdWUiLCJyZWdpc3RlcmFibGVzIiwiQ2hhcnQiLCJpc0NoYXJ0SW5pdGlhbGl6ZWQiLCJjaGFydCIsIkhUTUxDYW52YXNFbGVtZW50Iiwidmlld1ZhbHVlIiwiY2FudmFzQ29udGV4dCIsImdldENvbnRleHQiLCJyZXNwb25zaXZlIiwib3JpZ2luYWxXaWR0aCIsIndpZHRoIiwib2Zmc2V0V2lkdGgiLCJ2aWV3Il0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZV9tb2R1bGVzX3N5bWZvbnlfc3RpbXVsdXMtYnJpZGdlX2Rpc3Rfd2VicGFja19sb2FkZXJfanNfYXNzZXRzX2NvbnRyb2xsZXJzX2pzb24uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXVFO0FBQ2hCO0FBQ1c7QUFDWTtBQUN4QjtBQUN0RCxpRUFBZTtBQUNmLDRDQUE0QyxtRkFBWTtBQUN4RCxnQ0FBZ0MsOEVBQVk7QUFDNUMsVUFBVSwwRkFBWTtBQUN0QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDVCtDO0FBQ2I7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQSxTQUFTRSxzQkFBc0JBLENBQUNDLFFBQVEsRUFBRUMsS0FBSyxFQUFFQyxJQUFJLEVBQUVDLENBQUMsRUFBRTtFQUN0RCxJQUFJRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUNDLENBQUMsRUFBRSxNQUFNLElBQUlDLFNBQVMsQ0FBQywrQ0FBK0MsQ0FBQztFQUM1RixJQUFJLE9BQU9ILEtBQUssS0FBSyxVQUFVLEdBQUdELFFBQVEsS0FBS0MsS0FBSyxJQUFJLENBQUNFLENBQUMsR0FBRyxDQUFDRixLQUFLLENBQUNJLEdBQUcsQ0FBQ0wsUUFBUSxDQUFDLEVBQUUsTUFBTSxJQUFJSSxTQUFTLENBQUMsMEVBQTBFLENBQUM7RUFDbEwsT0FBT0YsSUFBSSxLQUFLLEdBQUcsR0FBR0MsQ0FBQyxHQUFHRCxJQUFJLEtBQUssR0FBRyxHQUFHQyxDQUFDLENBQUNHLElBQUksQ0FBQ04sUUFBUSxDQUFDLEdBQUdHLENBQUMs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QUNsRCxJQUFJLENBQUNGLEtBQUssQ0FBQ2xqQyxJQUFJLEdBQUdvakMsU0FBUyxDQUFDcGpDLElBQUk7UUFDaEMsSUFBSSxDQUFDa2pDLEtBQUssQ0FBQy9uQyxPQUFPLEdBQUdpb0MsU0FBUyxDQUFDam9DLE9BQU87UUFDdEMsSUFBSSxDQUFDK25DLEtBQUssQ0FBQ3ZELE1BQU0sQ0FBQyxDQUFDO1FBQ25CLElBQU1qL0IsYUFBYSxHQUFHLElBQUksQ0FBQzdFLE9BQU8sQ0FBQzZFLGFBQWE7UUFDaEQsSUFBSUEsYUFBYSxJQUFJLElBQUksQ0FBQ3dpQyxLQUFLLENBQUMvbkMsT0FBTyxDQUFDcW9DLFVBQVUsRUFBRTtVQUNoRCxJQUFNQyxhQUFhLEdBQUcvaUMsYUFBYSxDQUFDcVksS0FBSyxDQUFDMnFCLEtBQUs7VUFDL0NoakMsYUFBYSxDQUFDcVksS0FBSyxDQUFDMnFCLEtBQUssTUFBQTdrQyxNQUFBLENBQU02QixhQUFhLENBQUNpakMsV0FBVyxHQUFHLENBQUMsT0FBSTtVQUNoRXJQLFVBQVUsQ0FBQyxZQUFNO1lBQ2I1ekIsYUFBYSxDQUFDcVksS0FBSyxDQUFDMnFCLEtBQUssR0FBR0QsYUFBYTtVQUM3QyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ1Q7TUFDSjtJQUNKO0VBQUM7SUFBQTlwQyxHQUFBO0lBQUFoQyxLQUFBLEVBQ0QsU0FBQXFFLGNBQWM3RCxJQUFJLEVBQUU4RCxPQUFPLEVBQUU7TUFDekIsSUFBSSxDQUFDQyxRQUFRLENBQUMvRCxJQUFJLEVBQUU7UUFBRWdFLE1BQU0sRUFBRUYsT0FBTztRQUFFRyxNQUFNLEVBQUU7TUFBVSxDQUFDLENBQUM7SUFDL0Q7RUFBQztFQUFBLE9BQUF4RCxTQUFBO0FBQUEsRUFwRG1CM0IsMkRBQVU7QUFzRGxDMkIsU0FBUyxDQUFDbU0sTUFBTSxHQUFHO0VBQ2Y2K0IsSUFBSSxFQUFFaGlDO0FBQ1YsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9jb250cm9sbGVycy5qc29uIiwid2VicGFjazovLy8uL3ZlbmRvci9zeW1mb255L3V4LWF1dG9jb21wbGV0ZS9hc3NldHMvZGlzdC9jb250cm9sbGVyLmpzIiwid2VicGFjazovLy8uL3ZlbmRvci9zeW1mb255L3V4LWxpdmUtY29tcG9uZW50L2Fzc2V0cy9kaXN0L2xpdmVfY29udHJvbGxlci5qcyIsIndlYnBhY2s6Ly8vLi92ZW5kb3Ivc3ltZm9ueS91eC1saXZlLWNvbXBvbmVudC9hc3NldHMvZGlzdC9saXZlLm1pbi5jc3M/ZGU5YSIsIndlYnBhY2s6Ly8vLi92ZW5kb3Ivc3ltZm9ueS91eC1jaGFydGpzL2Fzc2V0cy9kaXN0L2NvbnRyb2xsZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbnRyb2xsZXJfMCBmcm9tICdAc3ltZm9ueS91eC1hdXRvY29tcGxldGUvZGlzdC9jb250cm9sbGVyLmpzJztcbmltcG9ydCAndG9tLXNlbGVjdC9kaXN0L2Nzcy90b20tc2VsZWN0LmJvb3RzdHJhcDUuY3NzJztcbmltcG9ydCBjb250cm9sbGVyXzEgZnJvbSAnQHN5bWZvbnkvdXgtY2hhcnRqcy9kaXN0L2NvbnRyb2xsZXIuanMnO1xuaW1wb3J0IGNvbnRyb2xsZXJfMiBmcm9tICdAc3ltZm9ueS91eC1saXZlLWNvbXBvbmVudC9kaXN0L2xpdmVfY29udHJvbGxlci5qcyc7XG5pbXBvcnQgJ0BzeW1mb255L3V4LWxpdmUtY29tcG9uZW50L2Rpc3QvbGl2ZS5taW4uY3NzJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgJ3N5bWZvbnktLXV4LWF1dG9jb21wbGV0ZS0tYXV0b2NvbXBsZXRlJzogY29udHJvbGxlcl8wLFxuICAnc3ltZm9ueS0tdXgtY2hhcnRqcy0tY2hhcnQnOiBjb250cm9sbGVyXzEsXG4gICdsaXZlJzogY29udHJvbGxlcl8yLFxufTsiLCJpbXBvcnQgeyBDb250cm9sbGVyIH0gZnJvbSAnQGhvdHdpcmVkL3N0aW11bHVzJztcbmltcG9ydCBUb21TZWxlY3QgZnJvbSAndG9tLXNlbGVjdCc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wgKi9cclxuXHJcblxyXG5mdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBzdGF0ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgZ2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgcmVhZCBwcml2YXRlIG1lbWJlciBmcm9tIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XHJcbiAgICByZXR1cm4ga2luZCA9PT0gXCJtXCIgPyBmIDoga2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIpIDogZiA/IGYudmFsdWUgOiBzdGF0ZS5nZXQocmVjZWl2ZXIpO1xyXG59XHJcblxyXG50eXBlb2YgU3VwcHJlc3NlZEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyBTdXBwcmVzc2VkRXJyb3IgOiBmdW5jdGlvbiAoZXJyb3IsIHN1cHByZXNzZWQsIG1lc3NhZ2UpIHtcclxuICAgIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcclxufTtcblxudmFyIF9kZWZhdWx0XzFfaW5zdGFuY2VzLCBfZGVmYXVsdF8xX2dldENvbW1vbkNvbmZpZywgX2RlZmF1bHRfMV9jcmVhdGVBdXRvY29tcGxldGUsIF9kZWZhdWx0XzFfY3JlYXRlQXV0b2NvbXBsZXRlV2l0aEh0bWxDb250ZW50cywgX2RlZmF1bHRfMV9jcmVhdGVBdXRvY29tcGxldGVXaXRoUmVtb3RlRGF0YSwgX2RlZmF1bHRfMV9zdHJpcFRhZ3MsIF9kZWZhdWx0XzFfbWVyZ2VPYmplY3RzLCBfZGVmYXVsdF8xX2NyZWF0ZVRvbVNlbGVjdDtcbmNsYXNzIGRlZmF1bHRfMSBleHRlbmRzIENvbnRyb2xsZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICBfZGVmYXVsdF8xX2luc3RhbmNlcy5hZGQodGhpcyk7XG4gICAgICAgIHRoaXMuaXNPYnNlcnZpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5oYXNMb2FkZWRDaG9pY2VzUHJldmlvdXNseSA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IFtdO1xuICAgIH1cbiAgICBpbml0aWFsaXplKCkge1xuICAgICAgICBpZiAoIXRoaXMubXV0YXRpb25PYnNlcnZlcikge1xuICAgICAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25NdXRhdGlvbnMobXV0YXRpb25zKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbm5lY3QoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5jcmVhdGVPcHRpb25zRGF0YVN0cnVjdHVyZSh0aGlzLnNlbGVjdEVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRvbVNlbGVjdCgpO1xuICAgIH1cbiAgICBpbml0aWFsaXplVG9tU2VsZWN0KCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXNraXAtbW9ycGgnLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudXJsVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudG9tU2VsZWN0ID0gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZGVmYXVsdF8xX2luc3RhbmNlcywgXCJtXCIsIF9kZWZhdWx0XzFfY3JlYXRlQXV0b2NvbXBsZXRlV2l0aFJlbW90ZURhdGEpLmNhbGwodGhpcywgdGhpcy51cmxWYWx1ZSwgdGhpcy5oYXNNaW5DaGFyYWN0ZXJzVmFsdWUgPyB0aGlzLm1pbkNoYXJhY3RlcnNWYWx1ZSA6IG51bGwpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnNBc0h0bWxWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy50b21TZWxlY3QgPSBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9kZWZhdWx0XzFfaW5zdGFuY2VzLCBcIm1cIiwgX2RlZmF1bHRfMV9jcmVhdGVBdXRvY29tcGxldGVXaXRoSHRtbENvbnRlbnRzKS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG9tU2VsZWN0ID0gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZGVmYXVsdF8xX2luc3RhbmNlcywgXCJtXCIsIF9kZWZhdWx0XzFfY3JlYXRlQXV0b2NvbXBsZXRlKS5jYWxsKHRoaXMpO1xuICAgICAgICB0aGlzLnN0YXJ0TXV0YXRpb25PYnNlcnZlcigpO1xuICAgIH1cbiAgICBkaXNjb25uZWN0KCkge1xuICAgICAgICB0aGlzLnN0b3BNdXRhdGlvbk9ic2VydmVyKCk7XG4gICAgICAgIGxldCBjdXJyZW50U2VsZWN0ZWRWYWx1ZXMgPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0RWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0RWxlbWVudC5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZFZhbHVlcyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3RFbGVtZW50Lm9wdGlvbnMpXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKG9wdGlvbikgPT4gb3B0aW9uLnNlbGVjdGVkKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRWYWx1ZXMgPSBbdGhpcy5zZWxlY3RFbGVtZW50LnZhbHVlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRvbVNlbGVjdC5kZXN0cm95KCk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdEVsZW1lbnQubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICBBcnJheS5mcm9tKHRoaXMuc2VsZWN0RWxlbWVudC5vcHRpb25zKS5mb3JFYWNoKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gY3VycmVudFNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEVsZW1lbnQudmFsdWUgPSBjdXJyZW50U2VsZWN0ZWRWYWx1ZXNbMF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0TWF4T3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0RWxlbWVudCA/IHRoaXMuc2VsZWN0RWxlbWVudC5vcHRpb25zLmxlbmd0aCA6IDUwO1xuICAgIH1cbiAgICBnZXQgc2VsZWN0RWxlbWVudCgpIHtcbiAgICAgICAgaWYgKCEodGhpcy5lbGVtZW50IGluc3RhbmNlb2YgSFRNTFNlbGVjdEVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50O1xuICAgIH1cbiAgICBnZXQgZm9ybUVsZW1lbnQoKSB7XG4gICAgICAgIGlmICghKHRoaXMuZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpICYmICEodGhpcy5lbGVtZW50IGluc3RhbmNlb2YgSFRNTFNlbGVjdEVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F1dG9jb21wbGV0ZSBTdGltdWx1cyBjb250cm9sbGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gYW4gPGlucHV0PiBvciA8c2VsZWN0Pi4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50O1xuICAgIH1cbiAgICBkaXNwYXRjaEV2ZW50KG5hbWUsIHBheWxvYWQpIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaChuYW1lLCB7IGRldGFpbDogcGF5bG9hZCwgcHJlZml4OiAnYXV0b2NvbXBsZXRlJyB9KTtcbiAgICB9XG4gICAgZ2V0IHByZWxvYWQoKSB7XG4gICAgICAgIGlmICghdGhpcy5oYXNQcmVsb2FkVmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiAnZm9jdXMnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnByZWxvYWRWYWx1ZSA9PT0gJ2ZhbHNlJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnByZWxvYWRWYWx1ZSA9PT0gJ3RydWUnKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wcmVsb2FkVmFsdWU7XG4gICAgfVxuICAgIHJlc2V0VG9tU2VsZWN0KCkge1xuICAgICAgICBpZiAodGhpcy50b21TZWxlY3QpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudCgnYmVmb3JlLXJlc2V0JywgeyB0b21TZWxlY3Q6IHRoaXMudG9tU2VsZWN0IH0pO1xuICAgICAgICAgICAgdGhpcy5zdG9wTXV0YXRpb25PYnNlcnZlcigpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEh0bWwgPSB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy50b21TZWxlY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIHRoaXMudG9tU2VsZWN0LmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgPSBjdXJyZW50SHRtbDtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRvbVNlbGVjdCgpO1xuICAgICAgICAgICAgdGhpcy50b21TZWxlY3Quc2V0VmFsdWUoY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRNdXRhdGlvbk9ic2VydmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2hhbmdlVG9tU2VsZWN0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuc3RvcE11dGF0aW9uT2JzZXJ2ZXIoKTtcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMudG9tU2VsZWN0LmRpc2FibGUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9tU2VsZWN0LmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhcnRNdXRhdGlvbk9ic2VydmVyKCk7XG4gICAgfVxuICAgIHN0YXJ0TXV0YXRpb25PYnNlcnZlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT2JzZXJ2aW5nICYmIHRoaXMubXV0YXRpb25PYnNlcnZlcikge1xuICAgICAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmlzT2JzZXJ2aW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdG9wTXV0YXRpb25PYnNlcnZlcigpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPYnNlcnZpbmcgJiYgdGhpcy5tdXRhdGlvbk9ic2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgdGhpcy5pc09ic2VydmluZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uTXV0YXRpb25zKG11dGF0aW9ucykge1xuICAgICAgICBsZXQgY2hhbmdlRGlzYWJsZWRTdGF0ZSA9IGZhbHNlO1xuICAgICAgICBsZXQgcmVxdWlyZVJlc2V0ID0gZmFsc2U7XG4gICAgICAgIG11dGF0aW9ucy5mb3JFYWNoKChtdXRhdGlvbikgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChtdXRhdGlvbi50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnYXR0cmlidXRlcyc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChtdXRhdGlvbi50YXJnZXQgPT09IHRoaXMuZWxlbWVudCAmJiBtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lID09PSAnZGlzYWJsZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VEaXNhYmxlZFN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChtdXRhdGlvbi50YXJnZXQgPT09IHRoaXMuZWxlbWVudCAmJiBtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc05vd011bHRpcGxlID0gdGhpcy5lbGVtZW50Lmhhc0F0dHJpYnV0ZSgnbXVsdGlwbGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdhc011bHRpcGxlID0gbXV0YXRpb24ub2xkVmFsdWUgPT09ICdtdWx0aXBsZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNOb3dNdWx0aXBsZSAhPT0gd2FzTXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlUmVzZXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBuZXdPcHRpb25zID0gdGhpcy5zZWxlY3RFbGVtZW50ID8gdGhpcy5jcmVhdGVPcHRpb25zRGF0YVN0cnVjdHVyZSh0aGlzLnNlbGVjdEVsZW1lbnQpIDogW107XG4gICAgICAgIGNvbnN0IGFyZU9wdGlvbnNFcXVpdmFsZW50ID0gdGhpcy5hcmVPcHRpb25zRXF1aXZhbGVudChuZXdPcHRpb25zKTtcbiAgICAgICAgaWYgKCFhcmVPcHRpb25zRXF1aXZhbGVudCB8fCByZXF1aXJlUmVzZXQpIHtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gbmV3T3B0aW9ucztcbiAgICAgICAgICAgIHRoaXMucmVzZXRUb21TZWxlY3QoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlRGlzYWJsZWRTdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VUb21TZWxlY3REaXNhYmxlZFN0YXRlKHRoaXMuZm9ybUVsZW1lbnQuZGlzYWJsZWQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNyZWF0ZU9wdGlvbnNEYXRhU3RydWN0dXJlKHNlbGVjdEVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oc2VsZWN0RWxlbWVudC5vcHRpb25zKS5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxuICAgICAgICAgICAgICAgIHRleHQ6IG9wdGlvbi50ZXh0LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFyZU9wdGlvbnNFcXVpdmFsZW50KG5ld09wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRPcmlnaW5hbE9wdGlvbnMgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlICE9PSAnJyk7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkTmV3T3B0aW9ucyA9IG5ld09wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSAhPT0gJycpO1xuICAgICAgICBjb25zdCBvcmlnaW5hbFBsYWNlaG9sZGVyT3B0aW9uID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09ICcnKTtcbiAgICAgICAgY29uc3QgbmV3UGxhY2Vob2xkZXJPcHRpb24gPSBuZXdPcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSAnJyk7XG4gICAgICAgIGlmIChvcmlnaW5hbFBsYWNlaG9sZGVyT3B0aW9uICYmXG4gICAgICAgICAgICBuZXdQbGFjZWhvbGRlck9wdGlvbiAmJlxuICAgICAgICAgICAgb3JpZ2luYWxQbGFjZWhvbGRlck9wdGlvbi50ZXh0ICE9PSBuZXdQbGFjZWhvbGRlck9wdGlvbi50ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcmVkT3JpZ2luYWxPcHRpb25zLmxlbmd0aCAhPT0gZmlsdGVyZWROZXdPcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZU9wdGlvbiA9IChvcHRpb24pID0+IGAke29wdGlvbi52YWx1ZX0tJHtvcHRpb24udGV4dH1gO1xuICAgICAgICBjb25zdCBvcmlnaW5hbE9wdGlvbnNTZXQgPSBuZXcgU2V0KGZpbHRlcmVkT3JpZ2luYWxPcHRpb25zLm1hcChub3JtYWxpemVPcHRpb24pKTtcbiAgICAgICAgY29uc3QgbmV3T3B0aW9uc1NldCA9IG5ldyBTZXQoZmlsdGVyZWROZXdPcHRpb25zLm1hcChub3JtYWxpemVPcHRpb24pKTtcbiAgICAgICAgcmV0dXJuIChvcmlnaW5hbE9wdGlvbnNTZXQuc2l6ZSA9PT0gbmV3T3B0aW9uc1NldC5zaXplICYmXG4gICAgICAgICAgICBbLi4ub3JpZ2luYWxPcHRpb25zU2V0XS5ldmVyeSgob3B0aW9uKSA9PiBuZXdPcHRpb25zU2V0LmhhcyhvcHRpb24pKSk7XG4gICAgfVxufVxuX2RlZmF1bHRfMV9pbnN0YW5jZXMgPSBuZXcgV2Vha1NldCgpLCBfZGVmYXVsdF8xX2dldENvbW1vbkNvbmZpZyA9IGZ1bmN0aW9uIF9kZWZhdWx0XzFfZ2V0Q29tbW9uQ29uZmlnKCkge1xuICAgIGNvbnN0IHBsdWdpbnMgPSB7fTtcbiAgICBjb25zdCBpc011bHRpcGxlID0gIXRoaXMuc2VsZWN0RWxlbWVudCB8fCB0aGlzLnNlbGVjdEVsZW1lbnQubXVsdGlwbGU7XG4gICAgaWYgKCF0aGlzLmZvcm1FbGVtZW50LmRpc2FibGVkICYmICFpc011bHRpcGxlKSB7XG4gICAgICAgIHBsdWdpbnMuY2xlYXJfYnV0dG9uID0geyB0aXRsZTogJycgfTtcbiAgICB9XG4gICAgaWYgKGlzTXVsdGlwbGUpIHtcbiAgICAgICAgcGx1Z2lucy5yZW1vdmVfYnV0dG9uID0geyB0aXRsZTogJycgfTtcbiAgICB9XG4gICAgaWYgKHRoaXMudXJsVmFsdWUpIHtcbiAgICAgICAgcGx1Z2lucy52aXJ0dWFsX3Njcm9sbCA9IHt9O1xuICAgIH1cbiAgICBjb25zdCByZW5kZXIgPSB7XG4gICAgICAgIG5vX3Jlc3VsdHM6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz1cIm5vLXJlc3VsdHNcIj4ke3RoaXMubm9SZXN1bHRzRm91bmRUZXh0VmFsdWV9PC9kaXY+YDtcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9uX2NyZWF0ZTogKGRhdGEsIGVzY2FwZURhdGEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz1cImNyZWF0ZVwiPiR7dGhpcy5jcmVhdGVPcHRpb25UZXh0VmFsdWUucmVwbGFjZSgnJXBsYWNlaG9sZGVyJScsIGA8c3Ryb25nPiR7ZXNjYXBlRGF0YShkYXRhLmlucHV0KX08L3N0cm9uZz5gKX08L2Rpdj5gO1xuICAgICAgICB9LFxuICAgIH07XG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgICByZW5kZXIsXG4gICAgICAgIHBsdWdpbnMsXG4gICAgICAgIG9uSXRlbUFkZDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50b21TZWxlY3Quc2V0VGV4dGJveFZhbHVlKCcnKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xvc2VBZnRlclNlbGVjdDogdHJ1ZSxcbiAgICAgICAgb25PcHRpb25BZGQ6ICh2YWx1ZSwgZGF0YSkgPT4ge1xuICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSB0aGlzLnRvbVNlbGVjdC5pbnB1dDtcbiAgICAgICAgICAgIGxldCBvcHRncm91cERhdGEgPSBudWxsO1xuICAgICAgICAgICAgY29uc3Qgb3B0Z3JvdXAgPSBkYXRhW3RoaXMudG9tU2VsZWN0LnNldHRpbmdzLm9wdGdyb3VwRmllbGRdO1xuICAgICAgICAgICAgaWYgKG9wdGdyb3VwICYmIHRoaXMudG9tU2VsZWN0Lm9wdGdyb3Vwcykge1xuICAgICAgICAgICAgICAgIG9wdGdyb3VwRGF0YSA9IHRoaXMudG9tU2VsZWN0Lm9wdGdyb3Vwc1tvcHRncm91cF07XG4gICAgICAgICAgICAgICAgaWYgKG9wdGdyb3VwRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRncm91cEVsZW1lbnQgPSBwYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYG9wdGdyb3VwW2xhYmVsPVwiJHtvcHRncm91cERhdGEubGFiZWx9XCJdYCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRncm91cEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQgPSBvcHRncm91cEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBvcHRpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7XG4gICAgICAgICAgICBvcHRpb25FbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICBvcHRpb25FbGVtZW50LnRleHQgPSBkYXRhW3RoaXMudG9tU2VsZWN0LnNldHRpbmdzLmxhYmVsRmllbGRdO1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uT3JkZXIgPSBkYXRhLiRvcmRlcjtcbiAgICAgICAgICAgIGxldCBvcmRlcmVkT3B0aW9uID0gbnVsbDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgWywgdG9tU2VsZWN0T3B0aW9uXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnRvbVNlbGVjdC5vcHRpb25zKSkge1xuICAgICAgICAgICAgICAgIGlmICh0b21TZWxlY3RPcHRpb24uJG9yZGVyID09PSBvcHRpb25PcmRlcikge1xuICAgICAgICAgICAgICAgICAgICBvcmRlcmVkT3B0aW9uID0gcGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKGA6c2NvcGUgPiBvcHRpb25bdmFsdWU9XCIke3RvbVNlbGVjdE9wdGlvblt0aGlzLnRvbVNlbGVjdC5zZXR0aW5ncy52YWx1ZUZpZWxkXX1cIl1gKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9yZGVyZWRPcHRpb24pIHtcbiAgICAgICAgICAgICAgICBvcmRlcmVkT3B0aW9uLmluc2VydEFkamFjZW50RWxlbWVudCgnYWZ0ZXJlbmQnLCBvcHRpb25FbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG9wdGlvbk9yZGVyID49IDApIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LmFwcGVuZChvcHRpb25FbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQucHJlcGVuZChvcHRpb25FbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9O1xuICAgIGlmICghdGhpcy5zZWxlY3RFbGVtZW50ICYmICF0aGlzLnVybFZhbHVlKSB7XG4gICAgICAgIGNvbmZpZy5zaG91bGRMb2FkID0gKCkgPT4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9kZWZhdWx0XzFfaW5zdGFuY2VzLCBcIm1cIiwgX2RlZmF1bHRfMV9tZXJnZU9iamVjdHMpLmNhbGwodGhpcywgY29uZmlnLCB0aGlzLnRvbVNlbGVjdE9wdGlvbnNWYWx1ZSk7XG59LCBfZGVmYXVsdF8xX2NyZWF0ZUF1dG9jb21wbGV0ZSA9IGZ1bmN0aW9uIF9kZWZhdWx0XzFfY3JlYXRlQXV0b2NvbXBsZXRlKCkge1xuICAgIGNvbnN0IGNvbmZpZyA9IF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2RlZmF1bHRfMV9pbnN0YW5jZXMsIFwibVwiLCBfZGVmYXVsdF8xX21lcmdlT2JqZWN0cykuY2FsbCh0aGlzLCBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9kZWZhdWx0XzFfaW5zdGFuY2VzLCBcIm1cIiwgX2RlZmF1bHRfMV9nZXRDb21tb25Db25maWcpLmNhbGwodGhpcyksIHtcbiAgICAgICAgbWF4T3B0aW9uczogdGhpcy5nZXRNYXhPcHRpb25zKCksXG4gICAgfSk7XG4gICAgcmV0dXJuIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2RlZmF1bHRfMV9pbnN0YW5jZXMsIFwibVwiLCBfZGVmYXVsdF8xX2NyZWF0ZVRvbVNlbGVjdCkuY2FsbCh0aGlzLCBjb25maWcpO1xufSwgX2RlZmF1bHRfMV9jcmVhdGVBdXRvY29tcGxldGVXaXRoSHRtbENvbnRlbnRzID0gZnVuY3Rpb24gX2RlZmF1bHRfMV9jcmVhdGVBdXRvY29tcGxldGVXaXRoSHRtbENvbnRlbnRzKCkge1xuICAgIGNvbnN0IGNvbW1vbkNvbmZpZyA9IF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2RlZmF1bHRfMV9pbnN0YW5jZXMsIFwibVwiLCBfZGVmYXVsdF8xX2dldENvbW1vbkNvbmZpZykuY2FsbCh0aGlzKTtcbiAgICBjb25zdCBsYWJlbEZpZWxkID0gY29tbW9uQ29uZmlnLmxhYmVsRmllbGQgPz8gJ3RleHQnO1xuICAgIGNvbnN0IGNvbmZpZyA9IF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2RlZmF1bHRfMV9pbnN0YW5jZXMsIFwibVwiLCBfZGVmYXVsdF8xX21lcmdlT2JqZWN0cykuY2FsbCh0aGlzLCBjb21tb25Db25maWcsIHtcbiAgICAgICAgbWF4T3B0aW9uczogdGhpcy5nZXRNYXhPcHRpb25zKCksXG4gICAgICAgIHNjb3JlOiAoc2VhcmNoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzY29yaW5nRnVuY3Rpb24gPSB0aGlzLnRvbVNlbGVjdC5nZXRTY29yZUZ1bmN0aW9uKHNlYXJjaCk7XG4gICAgICAgICAgICByZXR1cm4gKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NvcmluZ0Z1bmN0aW9uKHsgLi4uaXRlbSwgdGV4dDogX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZGVmYXVsdF8xX2luc3RhbmNlcywgXCJtXCIsIF9kZWZhdWx0XzFfc3RyaXBUYWdzKS5jYWxsKHRoaXMsIGl0ZW1bbGFiZWxGaWVsZF0pIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVuZGVyOiB7XG4gICAgICAgICAgICBpdGVtOiAoaXRlbSkgPT4gYDxkaXY+JHtpdGVtW2xhYmVsRmllbGRdfTwvZGl2PmAsXG4gICAgICAgICAgICBvcHRpb246IChpdGVtKSA9PiBgPGRpdj4ke2l0ZW1bbGFiZWxGaWVsZF19PC9kaXY+YCxcbiAgICAgICAgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZGVmYXVsdF8xX2luc3RhbmNlcywgXCJtXCIsIF9kZWZhdWx0XzFfY3JlYXRlVG9tU2VsZWN0KS5jYWxsKHRoaXMsIGNvbmZpZyk7XG59LCBfZGVmYXVsdF8xX2NyZWF0ZUF1dG9jb21wbGV0ZVdpdGhSZW1vdGVEYXRhID0gZnVuY3Rpb24gX2RlZmF1bHRfMV9jcmVhdGVBdXRvY29tcGxldGVXaXRoUmVtb3RlRGF0YShhdXRvY29tcGxldGVFbmRwb2ludFVybCwgbWluQ2hhcmFjdGVyTGVuZ3RoKSB7XG4gICAgY29uc3QgY29tbW9uQ29uZmlnID0gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZGVmYXVsdF8xX2luc3RhbmNlcywgXCJtXCIsIF9kZWZhdWx0XzFfZ2V0Q29tbW9uQ29uZmlnKS5jYWxsKHRoaXMpO1xuICAgIGNvbnN0IGxhYmVsRmllbGQgPSBjb21tb25Db25maWcubGFiZWxGaWVsZCA/PyAndGV4dCc7XG4gICAgY29uc3QgY29uZmlnID0gX19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZGVmYXVsdF8xX2luc3RhbmNlcywgXCJtXCIsIF9kZWZhdWx0XzFfbWVyZ2VPYmplY3RzKS5jYWxsKHRoaXMsIGNvbW1vbkNvbmZpZywge1xuICAgICAgICBmaXJzdFVybDogKHF1ZXJ5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSBhdXRvY29tcGxldGVFbmRwb2ludFVybC5pbmNsdWRlcygnPycpID8gJyYnIDogJz8nO1xuICAgICAgICAgICAgcmV0dXJuIGAke2F1dG9jb21wbGV0ZUVuZHBvaW50VXJsfSR7c2VwYXJhdG9yfXF1ZXJ5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXJ5KX1gO1xuICAgICAgICB9LFxuICAgICAgICBsb2FkOiBmdW5jdGlvbiAocXVlcnksIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmdldFVybChxdWVyeSk7XG4gICAgICAgICAgICBmZXRjaCh1cmwpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5qc29uKCkpXG4gICAgICAgICAgICAgICAgLnRoZW4oKGpzb24pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldE5leHRVcmwocXVlcnksIGpzb24ubmV4dF9wYWdlKTtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhqc29uLnJlc3VsdHMub3B0aW9ucyB8fCBqc29uLnJlc3VsdHMsIGpzb24ucmVzdWx0cy5vcHRncm91cHMgfHwgW10pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKCkgPT4gY2FsbGJhY2soW10sIFtdKSk7XG4gICAgICAgIH0sXG4gICAgICAgIHNob3VsZExvYWQ6IChxdWVyeSkgPT4ge1xuICAgICAgICAgICAgaWYgKG51bGwgIT09IG1pbkNoYXJhY3Rlckxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeS5sZW5ndGggPj0gbWluQ2hhcmFjdGVyTGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaGFzTG9hZGVkQ2hvaWNlc1ByZXZpb3VzbHkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChxdWVyeS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNMb2FkZWRDaG9pY2VzUHJldmlvdXNseSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcXVlcnkubGVuZ3RoID49IDM7XG4gICAgICAgIH0sXG4gICAgICAgIG9wdGdyb3VwRmllbGQ6ICdncm91cF9ieScsXG4gICAgICAgIHNjb3JlOiAoc2VhcmNoKSA9PiAoaXRlbSkgPT4gMSxcbiAgICAgICAgcmVuZGVyOiB7XG4gICAgICAgICAgICBvcHRpb246IChpdGVtKSA9PiBgPGRpdj4ke2l0ZW1bbGFiZWxGaWVsZF19PC9kaXY+YCxcbiAgICAgICAgICAgIGl0ZW06IChpdGVtKSA9PiBgPGRpdj4ke2l0ZW1bbGFiZWxGaWVsZF19PC9kaXY+YCxcbiAgICAgICAgICAgIGxvYWRpbmdfbW9yZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz1cImxvYWRpbmctbW9yZS1yZXN1bHRzXCI+JHt0aGlzLmxvYWRpbmdNb3JlVGV4dFZhbHVlfTwvZGl2PmA7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbm9fbW9yZV9yZXN1bHRzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwibm8tbW9yZS1yZXN1bHRzXCI+JHt0aGlzLm5vTW9yZVJlc3VsdHNUZXh0VmFsdWV9PC9kaXY+YDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBub19yZXN1bHRzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwibm8tcmVzdWx0c1wiPiR7dGhpcy5ub1Jlc3VsdHNGb3VuZFRleHRWYWx1ZX08L2Rpdj5gO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9wdGlvbl9jcmVhdGU6IChkYXRhLCBlc2NhcGVEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwiY3JlYXRlXCI+JHt0aGlzLmNyZWF0ZU9wdGlvblRleHRWYWx1ZS5yZXBsYWNlKCclcGxhY2Vob2xkZXIlJywgYDxzdHJvbmc+JHtlc2NhcGVEYXRhKGRhdGEuaW5wdXQpfTwvc3Ryb25nPmApfTwvZGl2PmA7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBwcmVsb2FkOiB0aGlzLnByZWxvYWQsXG4gICAgfSk7XG4gICAgcmV0dXJuIF9fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2RlZmF1bHRfMV9pbnN0YW5jZXMsIFwibVwiLCBfZGVmYXVsdF8xX2NyZWF0ZVRvbVNlbGVjdCkuY2FsbCh0aGlzLCBjb25maWcpO1xufSwgX2RlZmF1bHRfMV9zdHJpcFRhZ3MgPSBmdW5jdGlvbiBfZGVmYXVsdF8xX3N0cmlwVGFncyhzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLyg8KFtePl0rKT4pL2dpLCAnJyk7XG59LCBfZGVmYXVsdF8xX21lcmdlT2JqZWN0cyA9IGZ1bmN0aW9uIF9kZWZhdWx0XzFfbWVyZ2VPYmplY3RzKG9iamVjdDEsIG9iamVjdDIpIHtcbiAgICByZXR1cm4geyAuLi5vYmplY3QxLCAuLi5vYmplY3QyIH07XG59LCBfZGVmYXVsdF8xX2NyZWF0ZVRvbVNlbGVjdCA9IGZ1bmN0aW9uIF9kZWZhdWx0XzFfY3JlYXRlVG9tU2VsZWN0KG9wdGlvbnMpIHtcbiAgICBjb25zdCBwcmVDb25uZWN0UGF5bG9hZCA9IHsgb3B0aW9ucyB9O1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudCgncHJlLWNvbm5lY3QnLCBwcmVDb25uZWN0UGF5bG9hZCk7XG4gICAgY29uc3QgdG9tU2VsZWN0ID0gbmV3IFRvbVNlbGVjdCh0aGlzLmZvcm1FbGVtZW50LCBvcHRpb25zKTtcbiAgICBjb25zdCBjb25uZWN0UGF5bG9hZCA9IHsgdG9tU2VsZWN0LCBvcHRpb25zIH07XG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KCdjb25uZWN0JywgY29ubmVjdFBheWxvYWQpO1xuICAgIHJldHVybiB0b21TZWxlY3Q7XG59O1xuZGVmYXVsdF8xLnZhbHVlcyA9IHtcbiAgICB1cmw6IFN0cmluZyxcbiAgICBvcHRpb25zQXNIdG1sOiBCb29sZWFuLFxuICAgIGxvYWRpbmdNb3JlVGV4dDogU3RyaW5nLFxuICAgIG5vUmVzdWx0c0ZvdW5kVGV4dDogU3RyaW5nLFxuICAgIG5vTW9yZVJlc3VsdHNUZXh0OiBTdHJpbmcsXG4gICAgY3JlYXRlT3B0aW9uVGV4dDogU3RyaW5nLFxuICAgIG1pbkNoYXJhY3RlcnM6IE51bWJlcixcbiAgICB0b21TZWxlY3RPcHRpb25zOiBPYmplY3QsXG4gICAgcHJlbG9hZDogU3RyaW5nLFxufTtcblxuZXhwb3J0IHsgZGVmYXVsdF8xIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCB7IENvbnRyb2xsZXIgfSBmcm9tICdAaG90d2lyZWQvc3RpbXVsdXMnO1xuXG5jbGFzcyBCYWNrZW5kUmVxdWVzdCB7XG4gICAgY29uc3RydWN0b3IocHJvbWlzZSwgYWN0aW9ucywgdXBkYXRlTW9kZWxzKSB7XG4gICAgICAgIHRoaXMuaXNSZXNvbHZlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICAgICAgICB0aGlzLnByb21pc2UudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNSZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFjdGlvbnMgPSBhY3Rpb25zO1xuICAgICAgICB0aGlzLnVwZGF0ZWRNb2RlbHMgPSB1cGRhdGVNb2RlbHM7XG4gICAgfVxuICAgIGNvbnRhaW5zT25lT2ZBY3Rpb25zKHRhcmdldGVkQWN0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiB0YXJnZXRlZEFjdGlvbnMuaW5jbHVkZXMoYWN0aW9uKSkubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgYXJlQW55TW9kZWxzVXBkYXRlZCh0YXJnZXRlZE1vZGVscykge1xuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVkTW9kZWxzLmZpbHRlcigobW9kZWwpID0+IHRhcmdldGVkTW9kZWxzLmluY2x1ZGVzKG1vZGVsKSkubGVuZ3RoID4gMDtcbiAgICB9XG59XG5cbmNsYXNzIFJlcXVlc3RCdWlsZGVyIHtcbiAgICBjb25zdHJ1Y3Rvcih1cmwsIG1ldGhvZCA9ICdwb3N0Jykge1xuICAgICAgICB0aGlzLnVybCA9IHVybDtcbiAgICAgICAgdGhpcy5tZXRob2QgPSBtZXRob2Q7XG4gICAgfVxuICAgIGJ1aWxkUmVxdWVzdChwcm9wcywgYWN0aW9ucywgdXBkYXRlZCwgY2hpbGRyZW4sIHVwZGF0ZWRQcm9wc0Zyb21QYXJlbnQsIGZpbGVzKSB7XG4gICAgICAgIGNvbnN0IHNwbGl0VXJsID0gdGhpcy51cmwuc3BsaXQoJz8nKTtcbiAgICAgICAgbGV0IFt1cmxdID0gc3BsaXRVcmw7XG4gICAgICAgIGNvbnN0IFssIHF1ZXJ5U3RyaW5nXSA9IHNwbGl0VXJsO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nIHx8ICcnKTtcbiAgICAgICAgY29uc3QgZmV0Y2hPcHRpb25zID0ge307XG4gICAgICAgIGZldGNoT3B0aW9ucy5oZWFkZXJzID0ge1xuICAgICAgICAgICAgQWNjZXB0OiAnYXBwbGljYXRpb24vdm5kLmxpdmUtY29tcG9uZW50K2h0bWwnLFxuICAgICAgICAgICAgJ1gtUmVxdWVzdGVkLVdpdGgnOiAnWE1MSHR0cFJlcXVlc3QnLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB0b3RhbEZpbGVzID0gT2JqZWN0LmVudHJpZXMoZmlsZXMpLnJlZHVjZSgodG90YWwsIGN1cnJlbnQpID0+IHRvdGFsICsgY3VycmVudC5sZW5ndGgsIDApO1xuICAgICAgICBjb25zdCBoYXNGaW5nZXJwcmludHMgPSBPYmplY3Qua2V5cyhjaGlsZHJlbikubGVuZ3RoID4gMDtcbiAgICAgICAgaWYgKGFjdGlvbnMubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICB0b3RhbEZpbGVzID09PSAwICYmXG4gICAgICAgICAgICB0aGlzLm1ldGhvZCA9PT0gJ2dldCcgJiZcbiAgICAgICAgICAgIHRoaXMud2lsbERhdGFGaXRJblVybChKU09OLnN0cmluZ2lmeShwcm9wcyksIEpTT04uc3RyaW5naWZ5KHVwZGF0ZWQpLCBwYXJhbXMsIEpTT04uc3RyaW5naWZ5KGNoaWxkcmVuKSwgSlNPTi5zdHJpbmdpZnkodXBkYXRlZFByb3BzRnJvbVBhcmVudCkpKSB7XG4gICAgICAgICAgICBwYXJhbXMuc2V0KCdwcm9wcycsIEpTT04uc3RyaW5naWZ5KHByb3BzKSk7XG4gICAgICAgICAgICBwYXJhbXMuc2V0KCd1cGRhdGVkJywgSlNPTi5zdHJpbmdpZnkodXBkYXRlZCkpO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHVwZGF0ZWRQcm9wc0Zyb21QYXJlbnQpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuc2V0KCdwcm9wc0Zyb21QYXJlbnQnLCBKU09OLnN0cmluZ2lmeSh1cGRhdGVkUHJvcHNGcm9tUGFyZW50KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaGFzRmluZ2VycHJpbnRzKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLnNldCgnY2hpbGRyZW4nLCBKU09OLnN0cmluZ2lmeShjaGlsZHJlbikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmV0Y2hPcHRpb25zLm1ldGhvZCA9ICdHRVQnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZmV0Y2hPcHRpb25zLm1ldGhvZCA9ICdQT1NUJztcbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3REYXRhID0geyBwcm9wcywgdXBkYXRlZCB9O1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHVwZGF0ZWRQcm9wc0Zyb21QYXJlbnQpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0RGF0YS5wcm9wc0Zyb21QYXJlbnQgPSB1cGRhdGVkUHJvcHNGcm9tUGFyZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhhc0ZpbmdlcnByaW50cykge1xuICAgICAgICAgICAgICAgIHJlcXVlc3REYXRhLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3REYXRhLmFyZ3MgPSBhY3Rpb25zWzBdLmFyZ3M7XG4gICAgICAgICAgICAgICAgICAgIHVybCArPSBgLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGFjdGlvbnNbMF0ubmFtZSl9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHVybCArPSAnL19iYXRjaCc7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3REYXRhLmFjdGlvbnMgPSBhY3Rpb25zO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2RhdGEnLCBKU09OLnN0cmluZ2lmeShyZXF1ZXN0RGF0YSkpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZmlsZXMpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSwgdmFsdWVbaV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZldGNoT3B0aW9ucy5ib2R5ID0gZm9ybURhdGE7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyYW1zU3RyaW5nID0gcGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB1cmw6IGAke3VybH0ke3BhcmFtc1N0cmluZy5sZW5ndGggPiAwID8gYD8ke3BhcmFtc1N0cmluZ31gIDogJyd9YCxcbiAgICAgICAgICAgIGZldGNoT3B0aW9ucyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgd2lsbERhdGFGaXRJblVybChwcm9wc0pzb24sIHVwZGF0ZWRKc29uLCBwYXJhbXMsIGNoaWxkcmVuSnNvbiwgcHJvcHNGcm9tUGFyZW50SnNvbikge1xuICAgICAgICBjb25zdCB1cmxFbmNvZGVkSnNvbkRhdGEgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHByb3BzSnNvbiArIHVwZGF0ZWRKc29uICsgY2hpbGRyZW5Kc29uICsgcHJvcHNGcm9tUGFyZW50SnNvbikudG9TdHJpbmcoKTtcbiAgICAgICAgcmV0dXJuICh1cmxFbmNvZGVkSnNvbkRhdGEgKyBwYXJhbXMudG9TdHJpbmcoKSkubGVuZ3RoIDwgMTUwMDtcbiAgICB9XG59XG5cbmNsYXNzIEJhY2tlbmQge1xuICAgIGNvbnN0cnVjdG9yKHVybCwgbWV0aG9kID0gJ3Bvc3QnKSB7XG4gICAgICAgIHRoaXMucmVxdWVzdEJ1aWxkZXIgPSBuZXcgUmVxdWVzdEJ1aWxkZXIodXJsLCBtZXRob2QpO1xuICAgIH1cbiAgICBtYWtlUmVxdWVzdChwcm9wcywgYWN0aW9ucywgdXBkYXRlZCwgY2hpbGRyZW4sIHVwZGF0ZWRQcm9wc0Zyb21QYXJlbnQsIGZpbGVzKSB7XG4gICAgICAgIGNvbnN0IHsgdXJsLCBmZXRjaE9wdGlvbnMgfSA9IHRoaXMucmVxdWVzdEJ1aWxkZXIuYnVpbGRSZXF1ZXN0KHByb3BzLCBhY3Rpb25zLCB1cGRhdGVkLCBjaGlsZHJlbiwgdXBkYXRlZFByb3BzRnJvbVBhcmVudCwgZmlsZXMpO1xuICAgICAgICByZXR1cm4gbmV3IEJhY2tlbmRSZXF1ZXN0KGZldGNoKHVybCwgZmV0Y2hPcHRpb25zKSwgYWN0aW9ucy5tYXAoKGJhY2tlbmRBY3Rpb24pID0+IGJhY2tlbmRBY3Rpb24ubmFtZSksIE9iamVjdC5rZXlzKHVwZGF0ZWQpKTtcbiAgICB9XG59XG5cbmNsYXNzIEJhY2tlbmRSZXNwb25zZSB7XG4gICAgY29uc3RydWN0b3IocmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy5yZXNwb25zZSA9IHJlc3BvbnNlO1xuICAgIH1cbiAgICBhc3luYyBnZXRCb2R5KCkge1xuICAgICAgICBpZiAoIXRoaXMuYm9keSkge1xuICAgICAgICAgICAgdGhpcy5ib2R5ID0gYXdhaXQgdGhpcy5yZXNwb25zZS50ZXh0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuYm9keTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldEVsZW1lbnRBc1RhZ1RleHQoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50LmlubmVySFRNTFxuICAgICAgICA/IGVsZW1lbnQub3V0ZXJIVE1MLnNsaWNlKDAsIGVsZW1lbnQub3V0ZXJIVE1MLmluZGV4T2YoZWxlbWVudC5pbm5lckhUTUwpKVxuICAgICAgICA6IGVsZW1lbnQub3V0ZXJIVE1MO1xufVxuXG5sZXQgY29tcG9uZW50TWFwQnlFbGVtZW50ID0gbmV3IFdlYWtNYXAoKTtcbmxldCBjb21wb25lbnRNYXBCeUNvbXBvbmVudCA9IG5ldyBNYXAoKTtcbmNvbnN0IHJlZ2lzdGVyQ29tcG9uZW50ID0gKGNvbXBvbmVudCkgPT4ge1xuICAgIGNvbXBvbmVudE1hcEJ5RWxlbWVudC5zZXQoY29tcG9uZW50LmVsZW1lbnQsIGNvbXBvbmVudCk7XG4gICAgY29tcG9uZW50TWFwQnlDb21wb25lbnQuc2V0KGNvbXBvbmVudCwgY29tcG9uZW50Lm5hbWUpO1xufTtcbmNvbnN0IHVucmVnaXN0ZXJDb21wb25lbnQgPSAoY29tcG9uZW50KSA9PiB7XG4gICAgY29tcG9uZW50TWFwQnlFbGVtZW50LmRlbGV0ZShjb21wb25lbnQuZWxlbWVudCk7XG4gICAgY29tcG9uZW50TWFwQnlDb21wb25lbnQuZGVsZXRlKGNvbXBvbmVudCk7XG59O1xuY29uc3QgZ2V0Q29tcG9uZW50ID0gKGVsZW1lbnQpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGNvbnN0IG1heENvdW50ID0gMTA7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGNvbXBvbmVudE1hcEJ5RWxlbWVudC5nZXQoZWxlbWVudCk7XG4gICAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgICAgICAgcmVzb2x2ZShjb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGNvdW50Kys7XG4gICAgICAgIGlmIChjb3VudCA+IG1heENvdW50KSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYENvbXBvbmVudCBub3QgZm91bmQgZm9yIGVsZW1lbnQgJHtnZXRFbGVtZW50QXNUYWdUZXh0KGVsZW1lbnQpfWApKTtcbiAgICAgICAgfVxuICAgIH0sIDUpO1xufSk7XG5jb25zdCBmaW5kQ29tcG9uZW50cyA9IChjdXJyZW50Q29tcG9uZW50LCBvbmx5UGFyZW50cywgb25seU1hdGNoTmFtZSkgPT4ge1xuICAgIGNvbnN0IGNvbXBvbmVudHMgPSBbXTtcbiAgICBjb21wb25lbnRNYXBCeUNvbXBvbmVudC5mb3JFYWNoKChjb21wb25lbnROYW1lLCBjb21wb25lbnQpID0+IHtcbiAgICAgICAgaWYgKG9ubHlQYXJlbnRzICYmIChjdXJyZW50Q29tcG9uZW50ID09PSBjb21wb25lbnQgfHwgIWNvbXBvbmVudC5lbGVtZW50LmNvbnRhaW5zKGN1cnJlbnRDb21wb25lbnQuZWxlbWVudCkpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9ubHlNYXRjaE5hbWUgJiYgY29tcG9uZW50TmFtZSAhPT0gb25seU1hdGNoTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgIH0pO1xuICAgIHJldHVybiBjb21wb25lbnRzO1xufTtcbmNvbnN0IGZpbmRDaGlsZHJlbiA9IChjdXJyZW50Q29tcG9uZW50KSA9PiB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBbXTtcbiAgICBjb21wb25lbnRNYXBCeUNvbXBvbmVudC5mb3JFYWNoKChjb21wb25lbnROYW1lLCBjb21wb25lbnQpID0+IHtcbiAgICAgICAgaWYgKGN1cnJlbnRDb21wb25lbnQgPT09IGNvbXBvbmVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3VycmVudENvbXBvbmVudC5lbGVtZW50LmNvbnRhaW5zKGNvbXBvbmVudC5lbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmb3VuZENoaWxkQ29tcG9uZW50ID0gZmFsc2U7XG4gICAgICAgIGNvbXBvbmVudE1hcEJ5Q29tcG9uZW50LmZvckVhY2goKGNoaWxkQ29tcG9uZW50TmFtZSwgY2hpbGRDb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChmb3VuZENoaWxkQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNoaWxkQ29tcG9uZW50ID09PSBjb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hpbGRDb21wb25lbnQuZWxlbWVudC5jb250YWlucyhjb21wb25lbnQuZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBmb3VuZENoaWxkQ29tcG9uZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNoaWxkcmVuLnB1c2goY29tcG9uZW50KTtcbiAgICB9KTtcbiAgICByZXR1cm4gY2hpbGRyZW47XG59O1xuY29uc3QgZmluZFBhcmVudCA9IChjdXJyZW50Q29tcG9uZW50KSA9PiB7XG4gICAgbGV0IHBhcmVudEVsZW1lbnQgPSBjdXJyZW50Q29tcG9uZW50LmVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICB3aGlsZSAocGFyZW50RWxlbWVudCkge1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSBjb21wb25lbnRNYXBCeUVsZW1lbnQuZ2V0KHBhcmVudEVsZW1lbnQpO1xuICAgICAgICBpZiAoY29tcG9uZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gY29tcG9uZW50O1xuICAgICAgICB9XG4gICAgICAgIHBhcmVudEVsZW1lbnQgPSBwYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuY2xhc3MgSG9va01hbmFnZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmhvb2tzID0gbmV3IE1hcCgpO1xuICAgIH1cbiAgICByZWdpc3Rlcihob29rTmFtZSwgY2FsbGJhY2spIHtcbiAgICAgICAgY29uc3QgaG9va3MgPSB0aGlzLmhvb2tzLmdldChob29rTmFtZSkgfHwgW107XG4gICAgICAgIGhvb2tzLnB1c2goY2FsbGJhY2spO1xuICAgICAgICB0aGlzLmhvb2tzLnNldChob29rTmFtZSwgaG9va3MpO1xuICAgIH1cbiAgICB1bnJlZ2lzdGVyKGhvb2tOYW1lLCBjYWxsYmFjaykge1xuICAgICAgICBjb25zdCBob29rcyA9IHRoaXMuaG9va3MuZ2V0KGhvb2tOYW1lKSB8fCBbXTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBob29rcy5pbmRleE9mKGNhbGxiYWNrKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGhvb2tzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIHRoaXMuaG9va3Muc2V0KGhvb2tOYW1lLCBob29rcyk7XG4gICAgfVxuICAgIHRyaWdnZXJIb29rKGhvb2tOYW1lLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IGhvb2tzID0gdGhpcy5ob29rcy5nZXQoaG9va05hbWUpIHx8IFtdO1xuICAgICAgICBob29rcy5mb3JFYWNoKChjYWxsYmFjaykgPT4gY2FsbGJhY2soLi4uYXJncykpO1xuICAgIH1cbn1cblxuY2xhc3MgQ2hhbmdpbmdJdGVtc1RyYWNrZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmNoYW5nZWRJdGVtcyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5yZW1vdmVkSXRlbXMgPSBuZXcgTWFwKCk7XG4gICAgfVxuICAgIHNldEl0ZW0oaXRlbU5hbWUsIG5ld1ZhbHVlLCBwcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLnJlbW92ZWRJdGVtcy5oYXMoaXRlbU5hbWUpKSB7XG4gICAgICAgICAgICBjb25zdCByZW1vdmVkUmVjb3JkID0gdGhpcy5yZW1vdmVkSXRlbXMuZ2V0KGl0ZW1OYW1lKTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlZEl0ZW1zLmRlbGV0ZShpdGVtTmFtZSk7XG4gICAgICAgICAgICBpZiAocmVtb3ZlZFJlY29yZC5vcmlnaW5hbCA9PT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY2hhbmdlZEl0ZW1zLmhhcyhpdGVtTmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsUmVjb3JkID0gdGhpcy5jaGFuZ2VkSXRlbXMuZ2V0KGl0ZW1OYW1lKTtcbiAgICAgICAgICAgIGlmIChvcmlnaW5hbFJlY29yZC5vcmlnaW5hbCA9PT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRJdGVtcy5kZWxldGUoaXRlbU5hbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZEl0ZW1zLnNldChpdGVtTmFtZSwgeyBvcmlnaW5hbDogb3JpZ2luYWxSZWNvcmQub3JpZ2luYWwsIG5ldzogbmV3VmFsdWUgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFuZ2VkSXRlbXMuc2V0KGl0ZW1OYW1lLCB7IG9yaWdpbmFsOiBwcmV2aW91c1ZhbHVlLCBuZXc6IG5ld1ZhbHVlIH0pO1xuICAgIH1cbiAgICByZW1vdmVJdGVtKGl0ZW1OYW1lLCBjdXJyZW50VmFsdWUpIHtcbiAgICAgICAgbGV0IHRydWVPcmlnaW5hbFZhbHVlID0gY3VycmVudFZhbHVlO1xuICAgICAgICBpZiAodGhpcy5jaGFuZ2VkSXRlbXMuaGFzKGl0ZW1OYW1lKSkge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxSZWNvcmQgPSB0aGlzLmNoYW5nZWRJdGVtcy5nZXQoaXRlbU5hbWUpO1xuICAgICAgICAgICAgdHJ1ZU9yaWdpbmFsVmFsdWUgPSBvcmlnaW5hbFJlY29yZC5vcmlnaW5hbDtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZEl0ZW1zLmRlbGV0ZShpdGVtTmFtZSk7XG4gICAgICAgICAgICBpZiAodHJ1ZU9yaWdpbmFsVmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnJlbW92ZWRJdGVtcy5oYXMoaXRlbU5hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZWRJdGVtcy5zZXQoaXRlbU5hbWUsIHsgb3JpZ2luYWw6IHRydWVPcmlnaW5hbFZhbHVlIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldENoYW5nZWRJdGVtcygpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5jaGFuZ2VkSXRlbXMsIChbbmFtZSwgeyBuZXc6IHZhbHVlIH1dKSA9PiAoeyBuYW1lLCB2YWx1ZSB9KSk7XG4gICAgfVxuICAgIGdldFJlbW92ZWRJdGVtcygpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5yZW1vdmVkSXRlbXMua2V5cygpKTtcbiAgICB9XG4gICAgaXNFbXB0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbmdlZEl0ZW1zLnNpemUgPT09IDAgJiYgdGhpcy5yZW1vdmVkSXRlbXMuc2l6ZSA9PT0gMDtcbiAgICB9XG59XG5cbmNsYXNzIEVsZW1lbnRDaGFuZ2VzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5hZGRlZENsYXNzZXMgPSBuZXcgU2V0KCk7XG4gICAgICAgIHRoaXMucmVtb3ZlZENsYXNzZXMgPSBuZXcgU2V0KCk7XG4gICAgICAgIHRoaXMuc3R5bGVDaGFuZ2VzID0gbmV3IENoYW5naW5nSXRlbXNUcmFja2VyKCk7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlQ2hhbmdlcyA9IG5ldyBDaGFuZ2luZ0l0ZW1zVHJhY2tlcigpO1xuICAgIH1cbiAgICBhZGRDbGFzcyhjbGFzc05hbWUpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJlbW92ZWRDbGFzc2VzLmRlbGV0ZShjbGFzc05hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLmFkZGVkQ2xhc3Nlcy5hZGQoY2xhc3NOYW1lKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZW1vdmVDbGFzcyhjbGFzc05hbWUpIHtcbiAgICAgICAgaWYgKCF0aGlzLmFkZGVkQ2xhc3Nlcy5kZWxldGUoY2xhc3NOYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVkQ2xhc3Nlcy5hZGQoY2xhc3NOYW1lKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGRTdHlsZShzdHlsZU5hbWUsIG5ld1ZhbHVlLCBvcmlnaW5hbFZhbHVlKSB7XG4gICAgICAgIHRoaXMuc3R5bGVDaGFuZ2VzLnNldEl0ZW0oc3R5bGVOYW1lLCBuZXdWYWx1ZSwgb3JpZ2luYWxWYWx1ZSk7XG4gICAgfVxuICAgIHJlbW92ZVN0eWxlKHN0eWxlTmFtZSwgb3JpZ2luYWxWYWx1ZSkge1xuICAgICAgICB0aGlzLnN0eWxlQ2hhbmdlcy5yZW1vdmVJdGVtKHN0eWxlTmFtZSwgb3JpZ2luYWxWYWx1ZSk7XG4gICAgfVxuICAgIGFkZEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBuZXdWYWx1ZSwgb3JpZ2luYWxWYWx1ZSkge1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZUNoYW5nZXMuc2V0SXRlbShhdHRyaWJ1dGVOYW1lLCBuZXdWYWx1ZSwgb3JpZ2luYWxWYWx1ZSk7XG4gICAgfVxuICAgIHJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBvcmlnaW5hbFZhbHVlKSB7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlQ2hhbmdlcy5yZW1vdmVJdGVtKGF0dHJpYnV0ZU5hbWUsIG9yaWdpbmFsVmFsdWUpO1xuICAgIH1cbiAgICBnZXRBZGRlZENsYXNzZXMoKSB7XG4gICAgICAgIHJldHVybiBbLi4udGhpcy5hZGRlZENsYXNzZXNdO1xuICAgIH1cbiAgICBnZXRSZW1vdmVkQ2xhc3NlcygpIHtcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzLnJlbW92ZWRDbGFzc2VzXTtcbiAgICB9XG4gICAgZ2V0Q2hhbmdlZFN0eWxlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3R5bGVDaGFuZ2VzLmdldENoYW5nZWRJdGVtcygpO1xuICAgIH1cbiAgICBnZXRSZW1vdmVkU3R5bGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdHlsZUNoYW5nZXMuZ2V0UmVtb3ZlZEl0ZW1zKCk7XG4gICAgfVxuICAgIGdldENoYW5nZWRBdHRyaWJ1dGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVDaGFuZ2VzLmdldENoYW5nZWRJdGVtcygpO1xuICAgIH1cbiAgICBnZXRSZW1vdmVkQXR0cmlidXRlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlQ2hhbmdlcy5nZXRSZW1vdmVkSXRlbXMoKTtcbiAgICB9XG4gICAgYXBwbHlUb0VsZW1lbnQoZWxlbWVudCkge1xuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoLi4udGhpcy5hZGRlZENsYXNzZXMpO1xuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoLi4udGhpcy5yZW1vdmVkQ2xhc3Nlcyk7XG4gICAgICAgIHRoaXMuc3R5bGVDaGFuZ2VzLmdldENoYW5nZWRJdGVtcygpLmZvckVhY2goKGNoYW5nZSkgPT4ge1xuICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShjaGFuZ2UubmFtZSwgY2hhbmdlLnZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3R5bGVDaGFuZ2VzLmdldFJlbW92ZWRJdGVtcygpLmZvckVhY2goKHN0eWxlTmFtZSkgPT4ge1xuICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShzdHlsZU5hbWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVDaGFuZ2VzLmdldENoYW5nZWRJdGVtcygpLmZvckVhY2goKGNoYW5nZSkgPT4ge1xuICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoY2hhbmdlLm5hbWUsIGNoYW5nZS52YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZUNoYW5nZXMuZ2V0UmVtb3ZlZEl0ZW1zKCkuZm9yRWFjaCgoYXR0cmlidXRlTmFtZSkgPT4ge1xuICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gKHRoaXMuYWRkZWRDbGFzc2VzLnNpemUgPT09IDAgJiZcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlZENsYXNzZXMuc2l6ZSA9PT0gMCAmJlxuICAgICAgICAgICAgdGhpcy5zdHlsZUNoYW5nZXMuaXNFbXB0eSgpICYmXG4gICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZUNoYW5nZXMuaXNFbXB0eSgpKTtcbiAgICB9XG59XG5cbmNsYXNzIEV4dGVybmFsTXV0YXRpb25UcmFja2VyIHtcbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCBzaG91bGRUcmFja0NoYW5nZUNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlZEVsZW1lbnRzID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VkRWxlbWVudHNDb3VudCA9IDA7XG4gICAgICAgIHRoaXMuYWRkZWRFbGVtZW50cyA9IFtdO1xuICAgICAgICB0aGlzLnJlbW92ZWRFbGVtZW50cyA9IFtdO1xuICAgICAgICB0aGlzLmlzU3RhcnRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB0aGlzLnNob3VsZFRyYWNrQ2hhbmdlQ2FsbGJhY2sgPSBzaG91bGRUcmFja0NoYW5nZUNhbGxiYWNrO1xuICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcih0aGlzLm9uTXV0YXRpb25zLmJpbmQodGhpcykpO1xuICAgIH1cbiAgICBzdGFydCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTdGFydGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50LCB7XG4gICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pc1N0YXJ0ZWQgPSB0cnVlO1xuICAgIH1cbiAgICBzdG9wKCkge1xuICAgICAgICBpZiAodGhpcy5pc1N0YXJ0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICB0aGlzLmlzU3RhcnRlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldENoYW5nZWRFbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbmdlZEVsZW1lbnRzLmhhcyhlbGVtZW50KSA/IHRoaXMuY2hhbmdlZEVsZW1lbnRzLmdldChlbGVtZW50KSA6IG51bGw7XG4gICAgfVxuICAgIGdldEFkZGVkRWxlbWVudHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZGVkRWxlbWVudHM7XG4gICAgfVxuICAgIHdhc0VsZW1lbnRBZGRlZChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZGVkRWxlbWVudHMuaW5jbHVkZXMoZWxlbWVudCk7XG4gICAgfVxuICAgIGhhbmRsZVBlbmRpbmdDaGFuZ2VzKCkge1xuICAgICAgICB0aGlzLm9uTXV0YXRpb25zKHRoaXMubXV0YXRpb25PYnNlcnZlci50YWtlUmVjb3JkcygpKTtcbiAgICB9XG4gICAgb25NdXRhdGlvbnMobXV0YXRpb25zKSB7XG4gICAgICAgIGNvbnN0IGhhbmRsZWRBdHRyaWJ1dGVNdXRhdGlvbnMgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IG11dGF0aW9uLnRhcmdldDtcbiAgICAgICAgICAgIGlmICghdGhpcy5zaG91bGRUcmFja0NoYW5nZUNhbGxiYWNrKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5pc0VsZW1lbnRBZGRlZEJ5VHJhbnNsYXRpb24oZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBpc0NoYW5nZUluQWRkZWRFbGVtZW50ID0gZmFsc2U7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFkZGVkRWxlbWVudCBvZiB0aGlzLmFkZGVkRWxlbWVudHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWRkZWRFbGVtZW50LmNvbnRhaW5zKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzQ2hhbmdlSW5BZGRlZEVsZW1lbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNDaGFuZ2VJbkFkZGVkRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3dpdGNoIChtdXRhdGlvbi50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnY2hpbGRMaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGlsZExpc3RNdXRhdGlvbihtdXRhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2F0dHJpYnV0ZXMnOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhbmRsZWRBdHRyaWJ1dGVNdXRhdGlvbnMuaGFzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkQXR0cmlidXRlTXV0YXRpb25zLnNldChlbGVtZW50LCBbXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYW5kbGVkQXR0cmlidXRlTXV0YXRpb25zLmdldChlbGVtZW50KS5pbmNsdWRlcyhtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBdHRyaWJ1dGVNdXRhdGlvbihtdXRhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkQXR0cmlidXRlTXV0YXRpb25zLnNldChlbGVtZW50LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaGFuZGxlZEF0dHJpYnV0ZU11dGF0aW9ucy5nZXQoZWxlbWVudCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRpb24uYXR0cmlidXRlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGhhbmRsZUNoaWxkTGlzdE11dGF0aW9uKG11dGF0aW9uKSB7XG4gICAgICAgIG11dGF0aW9uLmFkZGVkTm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCEobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMucmVtb3ZlZEVsZW1lbnRzLmluY2x1ZGVzKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVkRWxlbWVudHMuc3BsaWNlKHRoaXMucmVtb3ZlZEVsZW1lbnRzLmluZGV4T2Yobm9kZSksIDEpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmlzRWxlbWVudEFkZGVkQnlUcmFuc2xhdGlvbihub2RlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYWRkZWRFbGVtZW50cy5wdXNoKG5vZGUpO1xuICAgICAgICB9KTtcbiAgICAgICAgbXV0YXRpb24ucmVtb3ZlZE5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgIGlmICghKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmFkZGVkRWxlbWVudHMuaW5jbHVkZXMobm9kZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZGVkRWxlbWVudHMuc3BsaWNlKHRoaXMuYWRkZWRFbGVtZW50cy5pbmRleE9mKG5vZGUpLCAxKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJlbW92ZWRFbGVtZW50cy5wdXNoKG5vZGUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaGFuZGxlQXR0cmlidXRlTXV0YXRpb24obXV0YXRpb24pIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IG11dGF0aW9uLnRhcmdldDtcbiAgICAgICAgaWYgKCF0aGlzLmNoYW5nZWRFbGVtZW50cy5oYXMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZEVsZW1lbnRzLnNldChlbGVtZW50LCBuZXcgRWxlbWVudENoYW5nZXMoKSk7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRFbGVtZW50c0NvdW50Kys7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2hhbmdlZEVsZW1lbnQgPSB0aGlzLmNoYW5nZWRFbGVtZW50cy5nZXQoZWxlbWVudCk7XG4gICAgICAgIHN3aXRjaCAobXV0YXRpb24uYXR0cmlidXRlTmFtZSkge1xuICAgICAgICAgICAgY2FzZSAnY2xhc3MnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2xhc3NBdHRyaWJ1dGVNdXRhdGlvbihtdXRhdGlvbiwgY2hhbmdlZEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3R5bGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU3R5bGVBdHRyaWJ1dGVNdXRhdGlvbihtdXRhdGlvbiwgY2hhbmdlZEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUdlbmVyaWNBdHRyaWJ1dGVNdXRhdGlvbihtdXRhdGlvbiwgY2hhbmdlZEVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VkRWxlbWVudC5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZEVsZW1lbnRzLmRlbGV0ZShlbGVtZW50KTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZEVsZW1lbnRzQ291bnQtLTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBoYW5kbGVDbGFzc0F0dHJpYnV0ZU11dGF0aW9uKG11dGF0aW9uLCBlbGVtZW50Q2hhbmdlcykge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gbXV0YXRpb24udGFyZ2V0O1xuICAgICAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gbXV0YXRpb24ub2xkVmFsdWUgfHwgJyc7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzVmFsdWVzID0gcHJldmlvdXNWYWx1ZS5tYXRjaCgvKFxcUyspL2d1KSB8fCBbXTtcbiAgICAgICAgY29uc3QgbmV3VmFsdWVzID0gW10uc2xpY2UuY2FsbChlbGVtZW50LmNsYXNzTGlzdCk7XG4gICAgICAgIGNvbnN0IGFkZGVkVmFsdWVzID0gbmV3VmFsdWVzLmZpbHRlcigodmFsdWUpID0+ICFwcmV2aW91c1ZhbHVlcy5pbmNsdWRlcyh2YWx1ZSkpO1xuICAgICAgICBjb25zdCByZW1vdmVkVmFsdWVzID0gcHJldmlvdXNWYWx1ZXMuZmlsdGVyKCh2YWx1ZSkgPT4gIW5ld1ZhbHVlcy5pbmNsdWRlcyh2YWx1ZSkpO1xuICAgICAgICBhZGRlZFZhbHVlcy5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgZWxlbWVudENoYW5nZXMuYWRkQ2xhc3ModmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVtb3ZlZFZhbHVlcy5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgZWxlbWVudENoYW5nZXMucmVtb3ZlQ2xhc3ModmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaGFuZGxlU3R5bGVBdHRyaWJ1dGVNdXRhdGlvbihtdXRhdGlvbiwgZWxlbWVudENoYW5nZXMpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IG11dGF0aW9uLnRhcmdldDtcbiAgICAgICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IG11dGF0aW9uLm9sZFZhbHVlIHx8ICcnO1xuICAgICAgICBjb25zdCBwcmV2aW91c1N0eWxlcyA9IHRoaXMuZXh0cmFjdFN0eWxlcyhwcmV2aW91c1ZhbHVlKTtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnc3R5bGUnKSB8fCAnJztcbiAgICAgICAgY29uc3QgbmV3U3R5bGVzID0gdGhpcy5leHRyYWN0U3R5bGVzKG5ld1ZhbHVlKTtcbiAgICAgICAgY29uc3QgYWRkZWRPckNoYW5nZWRTdHlsZXMgPSBPYmplY3Qua2V5cyhuZXdTdHlsZXMpLmZpbHRlcigoa2V5KSA9PiBwcmV2aW91c1N0eWxlc1trZXldID09PSB1bmRlZmluZWQgfHwgcHJldmlvdXNTdHlsZXNba2V5XSAhPT0gbmV3U3R5bGVzW2tleV0pO1xuICAgICAgICBjb25zdCByZW1vdmVkU3R5bGVzID0gT2JqZWN0LmtleXMocHJldmlvdXNTdHlsZXMpLmZpbHRlcigoa2V5KSA9PiAhbmV3U3R5bGVzW2tleV0pO1xuICAgICAgICBhZGRlZE9yQ2hhbmdlZFN0eWxlcy5mb3JFYWNoKChzdHlsZSkgPT4ge1xuICAgICAgICAgICAgZWxlbWVudENoYW5nZXMuYWRkU3R5bGUoc3R5bGUsIG5ld1N0eWxlc1tzdHlsZV0sIHByZXZpb3VzU3R5bGVzW3N0eWxlXSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHByZXZpb3VzU3R5bGVzW3N0eWxlXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZW1vdmVkU3R5bGVzLmZvckVhY2goKHN0eWxlKSA9PiB7XG4gICAgICAgICAgICBlbGVtZW50Q2hhbmdlcy5yZW1vdmVTdHlsZShzdHlsZSwgcHJldmlvdXNTdHlsZXNbc3R5bGVdKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGhhbmRsZUdlbmVyaWNBdHRyaWJ1dGVNdXRhdGlvbihtdXRhdGlvbiwgZWxlbWVudENoYW5nZXMpIHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlTmFtZSA9IG11dGF0aW9uLmF0dHJpYnV0ZU5hbWU7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBtdXRhdGlvbi50YXJnZXQ7XG4gICAgICAgIGxldCBvbGRWYWx1ZSA9IG11dGF0aW9uLm9sZFZhbHVlO1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTtcbiAgICAgICAgaWYgKG9sZFZhbHVlID09PSBhdHRyaWJ1dGVOYW1lKSB7XG4gICAgICAgICAgICBvbGRWYWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gYXR0cmlidXRlTmFtZSkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgICAgICAgICBpZiAob2xkVmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbGVtZW50Q2hhbmdlcy5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgbXV0YXRpb24ub2xkVmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gb2xkVmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBlbGVtZW50Q2hhbmdlcy5hZGRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSksIG11dGF0aW9uLm9sZFZhbHVlKTtcbiAgICB9XG4gICAgZXh0cmFjdFN0eWxlcyhzdHlsZXMpIHtcbiAgICAgICAgY29uc3Qgc3R5bGVPYmplY3QgPSB7fTtcbiAgICAgICAgc3R5bGVzLnNwbGl0KCc7JykuZm9yRWFjaCgoc3R5bGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gc3R5bGUuc3BsaXQoJzonKTtcbiAgICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IHBhcnRzWzBdLnRyaW0oKTtcbiAgICAgICAgICAgIHN0eWxlT2JqZWN0W3Byb3BlcnR5XSA9IHBhcnRzLnNsaWNlKDEpLmpvaW4oJzonKS50cmltKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc3R5bGVPYmplY3Q7XG4gICAgfVxuICAgIGlzRWxlbWVudEFkZGVkQnlUcmFuc2xhdGlvbihlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LnRhZ05hbWUgPT09ICdGT05UJyAmJiBlbGVtZW50LmdldEF0dHJpYnV0ZSgnc3R5bGUnKSA9PT0gJ3ZlcnRpY2FsLWFsaWduOiBpbmhlcml0Oyc7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZURpcmVjdGl2ZXMoY29udGVudCkge1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSBbXTtcbiAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIGRpcmVjdGl2ZXM7XG4gICAgfVxuICAgIGxldCBjdXJyZW50QWN0aW9uTmFtZSA9ICcnO1xuICAgIGxldCBjdXJyZW50QXJndW1lbnRWYWx1ZSA9ICcnO1xuICAgIGxldCBjdXJyZW50QXJndW1lbnRzID0gW107XG4gICAgbGV0IGN1cnJlbnRNb2RpZmllcnMgPSBbXTtcbiAgICBsZXQgc3RhdGUgPSAnYWN0aW9uJztcbiAgICBjb25zdCBnZXRMYXN0QWN0aW9uTmFtZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKGN1cnJlbnRBY3Rpb25OYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudEFjdGlvbk5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRpcmVjdGl2ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGFueSBkaXJlY3RpdmVzJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpcmVjdGl2ZXNbZGlyZWN0aXZlcy5sZW5ndGggLSAxXS5hY3Rpb247XG4gICAgfTtcbiAgICBjb25zdCBwdXNoSW5zdHJ1Y3Rpb24gPSAoKSA9PiB7XG4gICAgICAgIGRpcmVjdGl2ZXMucHVzaCh7XG4gICAgICAgICAgICBhY3Rpb246IGN1cnJlbnRBY3Rpb25OYW1lLFxuICAgICAgICAgICAgYXJnczogY3VycmVudEFyZ3VtZW50cyxcbiAgICAgICAgICAgIG1vZGlmaWVyczogY3VycmVudE1vZGlmaWVycyxcbiAgICAgICAgICAgIGdldFN0cmluZzogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGN1cnJlbnRBY3Rpb25OYW1lID0gJyc7XG4gICAgICAgIGN1cnJlbnRBcmd1bWVudFZhbHVlID0gJyc7XG4gICAgICAgIGN1cnJlbnRBcmd1bWVudHMgPSBbXTtcbiAgICAgICAgY3VycmVudE1vZGlmaWVycyA9IFtdO1xuICAgICAgICBzdGF0ZSA9ICdhY3Rpb24nO1xuICAgIH07XG4gICAgY29uc3QgcHVzaEFyZ3VtZW50ID0gKCkgPT4ge1xuICAgICAgICBjdXJyZW50QXJndW1lbnRzLnB1c2goY3VycmVudEFyZ3VtZW50VmFsdWUudHJpbSgpKTtcbiAgICAgICAgY3VycmVudEFyZ3VtZW50VmFsdWUgPSAnJztcbiAgICB9O1xuICAgIGNvbnN0IHB1c2hNb2RpZmllciA9ICgpID0+IHtcbiAgICAgICAgaWYgKGN1cnJlbnRBcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgbW9kaWZpZXIgXCIke2N1cnJlbnRBY3Rpb25OYW1lfSgpXCIgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXBsZSBhcmd1bWVudHMuYCk7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudE1vZGlmaWVycy5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IGN1cnJlbnRBY3Rpb25OYW1lLFxuICAgICAgICAgICAgdmFsdWU6IGN1cnJlbnRBcmd1bWVudHMubGVuZ3RoID4gMCA/IGN1cnJlbnRBcmd1bWVudHNbMF0gOiBudWxsLFxuICAgICAgICB9KTtcbiAgICAgICAgY3VycmVudEFjdGlvbk5hbWUgPSAnJztcbiAgICAgICAgY3VycmVudEFyZ3VtZW50cyA9IFtdO1xuICAgICAgICBzdGF0ZSA9ICdhY3Rpb24nO1xuICAgIH07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb250ZW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNoYXIgPSBjb250ZW50W2ldO1xuICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICdhY3Rpb24nOlxuICAgICAgICAgICAgICAgIGlmIChjaGFyID09PSAnKCcpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAnYXJndW1lbnRzJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjaGFyID09PSAnICcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRBY3Rpb25OYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwdXNoSW5zdHJ1Y3Rpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09ICd8Jykge1xuICAgICAgICAgICAgICAgICAgICBwdXNoTW9kaWZpZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGN1cnJlbnRBY3Rpb25OYW1lICs9IGNoYXI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdhcmd1bWVudHMnOlxuICAgICAgICAgICAgICAgIGlmIChjaGFyID09PSAnKScpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVzaEFyZ3VtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gJ2FmdGVyX2FyZ3VtZW50cyc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2hhciA9PT0gJywnKSB7XG4gICAgICAgICAgICAgICAgICAgIHB1c2hBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudEFyZ3VtZW50VmFsdWUgKz0gY2hhcjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2FmdGVyX2FyZ3VtZW50cyc6XG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09ICd8Jykge1xuICAgICAgICAgICAgICAgICAgICBwdXNoTW9kaWZpZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjaGFyICE9PSAnICcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHNwYWNlIGFmdGVyICR7Z2V0TGFzdEFjdGlvbk5hbWUoKX0oKWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwdXNoSW5zdHJ1Y3Rpb24oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICAgIGNhc2UgJ2FjdGlvbic6XG4gICAgICAgIGNhc2UgJ2FmdGVyX2FyZ3VtZW50cyc6XG4gICAgICAgICAgICBpZiAoY3VycmVudEFjdGlvbk5hbWUpIHtcbiAgICAgICAgICAgICAgICBwdXNoSW5zdHJ1Y3Rpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaWQgeW91IGZvcmdldCB0byBhZGQgYSBjbG9zaW5nIFwiKVwiIGFmdGVyIFwiJHtjdXJyZW50QWN0aW9uTmFtZX1cIj9gKTtcbiAgICB9XG4gICAgcmV0dXJuIGRpcmVjdGl2ZXM7XG59XG5cbmZ1bmN0aW9uIGNvbWJpbmVTcGFjZWRBcnJheShwYXJ0cykge1xuICAgIGNvbnN0IGZpbmFsUGFydHMgPSBbXTtcbiAgICBwYXJ0cy5mb3JFYWNoKChwYXJ0KSA9PiB7XG4gICAgICAgIGZpbmFsUGFydHMucHVzaCguLi50cmltQWxsKHBhcnQpLnNwbGl0KCcgJykpO1xuICAgIH0pO1xuICAgIHJldHVybiBmaW5hbFBhcnRzO1xufVxuZnVuY3Rpb24gdHJpbUFsbChzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1tcXHNdKy9nLCAnICcpLnRyaW0oKTtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZU1vZGVsTmFtZShtb2RlbCkge1xuICAgIHJldHVybiAobW9kZWxcbiAgICAgICAgLnJlcGxhY2UoL1xcW10kLywgJycpXG4gICAgICAgIC5zcGxpdCgnWycpXG4gICAgICAgIC5tYXAoKHMpID0+IHMucmVwbGFjZSgnXScsICcnKSlcbiAgICAgICAgLmpvaW4oJy4nKSk7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlRnJvbUVsZW1lbnQoZWxlbWVudCwgdmFsdWVTdG9yZSkge1xuICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkge1xuICAgICAgICBpZiAoZWxlbWVudC50eXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgICAgICAgICBjb25zdCBtb2RlbE5hbWVEYXRhID0gZ2V0TW9kZWxEaXJlY3RpdmVGcm9tRWxlbWVudChlbGVtZW50LCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAobW9kZWxOYW1lRGF0YSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsVmFsdWUgPSB2YWx1ZVN0b3JlLmdldChtb2RlbE5hbWVEYXRhLmFjdGlvbik7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobW9kZWxWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldE11bHRpcGxlQ2hlY2tib3hWYWx1ZShlbGVtZW50LCBtb2RlbFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdChtb2RlbFZhbHVlKSA9PT0gbW9kZWxWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0TXVsdGlwbGVDaGVja2JveFZhbHVlKGVsZW1lbnQsIE9iamVjdC52YWx1ZXMobW9kZWxWYWx1ZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgndmFsdWUnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmNoZWNrZWQgPyBlbGVtZW50LmdldEF0dHJpYnV0ZSgndmFsdWUnKSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5jaGVja2VkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbnB1dFZhbHVlKGVsZW1lbnQpO1xuICAgIH1cbiAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50KSB7XG4gICAgICAgIGlmIChlbGVtZW50Lm11bHRpcGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50LnNlbGVjdGVkT3B0aW9ucykubWFwKChlbCkgPT4gZWwudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbGVtZW50LnZhbHVlO1xuICAgIH1cbiAgICBpZiAoZWxlbWVudC5kYXRhc2V0LnZhbHVlKSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LmRhdGFzZXQudmFsdWU7XG4gICAgfVxuICAgIGlmICgndmFsdWUnIGluIGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQudmFsdWU7XG4gICAgfVxuICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgndmFsdWUnKSkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJyk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gc2V0VmFsdWVPbkVsZW1lbnQoZWxlbWVudCwgdmFsdWUpIHtcbiAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ3JhZGlvJykge1xuICAgICAgICAgICAgZWxlbWVudC5jaGVja2VkID0gZWxlbWVudC52YWx1ZSA9PSB2YWx1ZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudC50eXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LmNoZWNrZWQgPSB2YWx1ZS5zb21lKCh2YWwpID0+IHZhbCA9PSBlbGVtZW50LnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlKCd2YWx1ZScpKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5jaGVja2VkID0gZWxlbWVudC52YWx1ZSA9PSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuY2hlY2tlZCA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTFNlbGVjdEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgYXJyYXlXcmFwcGVkVmFsdWUgPSBbXS5jb25jYXQodmFsdWUpLm1hcCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBgJHt2YWx1ZX1gO1xuICAgICAgICB9KTtcbiAgICAgICAgQXJyYXkuZnJvbShlbGVtZW50Lm9wdGlvbnMpLmZvckVhY2goKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gYXJyYXlXcmFwcGVkVmFsdWUuaW5jbHVkZXMob3B0aW9uLnZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFsdWUgPSB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gJycgOiB2YWx1ZTtcbiAgICBlbGVtZW50LnZhbHVlID0gdmFsdWU7XG59XG5mdW5jdGlvbiBnZXRBbGxNb2RlbERpcmVjdGl2ZUZyb21FbGVtZW50cyhlbGVtZW50KSB7XG4gICAgaWYgKCFlbGVtZW50LmRhdGFzZXQubW9kZWwpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBkaXJlY3RpdmVzID0gcGFyc2VEaXJlY3RpdmVzKGVsZW1lbnQuZGF0YXNldC5tb2RlbCk7XG4gICAgZGlyZWN0aXZlcy5mb3JFYWNoKChkaXJlY3RpdmUpID0+IHtcbiAgICAgICAgaWYgKGRpcmVjdGl2ZS5hcmdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGRhdGEtbW9kZWw9XCIke2VsZW1lbnQuZGF0YXNldC5tb2RlbH1cIiBmb3JtYXQgaXMgaW52YWxpZDogaXQgZG9lcyBub3Qgc3VwcG9ydCBwYXNzaW5nIGFyZ3VtZW50cyB0byB0aGUgbW9kZWwuYCk7XG4gICAgICAgIH1cbiAgICAgICAgZGlyZWN0aXZlLmFjdGlvbiA9IG5vcm1hbGl6ZU1vZGVsTmFtZShkaXJlY3RpdmUuYWN0aW9uKTtcbiAgICB9KTtcbiAgICByZXR1cm4gZGlyZWN0aXZlcztcbn1cbmZ1bmN0aW9uIGdldE1vZGVsRGlyZWN0aXZlRnJvbUVsZW1lbnQoZWxlbWVudCwgdGhyb3dPbk1pc3NpbmcgPSB0cnVlKSB7XG4gICAgY29uc3QgZGF0YU1vZGVsRGlyZWN0aXZlcyA9IGdldEFsbE1vZGVsRGlyZWN0aXZlRnJvbUVsZW1lbnRzKGVsZW1lbnQpO1xuICAgIGlmIChkYXRhTW9kZWxEaXJlY3RpdmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIGRhdGFNb2RlbERpcmVjdGl2ZXNbMF07XG4gICAgfVxuICAgIGlmIChlbGVtZW50LmdldEF0dHJpYnV0ZSgnbmFtZScpKSB7XG4gICAgICAgIGNvbnN0IGZvcm1FbGVtZW50ID0gZWxlbWVudC5jbG9zZXN0KCdmb3JtJyk7XG4gICAgICAgIGlmIChmb3JtRWxlbWVudCAmJiAnbW9kZWwnIGluIGZvcm1FbGVtZW50LmRhdGFzZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSBwYXJzZURpcmVjdGl2ZXMoZm9ybUVsZW1lbnQuZGF0YXNldC5tb2RlbCB8fCAnKicpO1xuICAgICAgICAgICAgY29uc3QgZGlyZWN0aXZlID0gZGlyZWN0aXZlc1swXTtcbiAgICAgICAgICAgIGlmIChkaXJlY3RpdmUuYXJncy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZGF0YS1tb2RlbD1cIiR7Zm9ybUVsZW1lbnQuZGF0YXNldC5tb2RlbH1cIiBmb3JtYXQgaXMgaW52YWxpZDogaXQgZG9lcyBub3Qgc3VwcG9ydCBwYXNzaW5nIGFyZ3VtZW50cyB0byB0aGUgbW9kZWwuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkaXJlY3RpdmUuYWN0aW9uID0gbm9ybWFsaXplTW9kZWxOYW1lKGVsZW1lbnQuZ2V0QXR0cmlidXRlKCduYW1lJykpO1xuICAgICAgICAgICAgcmV0dXJuIGRpcmVjdGl2ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXRocm93T25NaXNzaW5nKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBkZXRlcm1pbmUgdGhlIG1vZGVsIG5hbWUgZm9yIFwiJHtnZXRFbGVtZW50QXNUYWdUZXh0KGVsZW1lbnQpfVwiOiB0aGUgZWxlbWVudCBtdXN0IGVpdGhlciBoYXZlIGEgXCJkYXRhLW1vZGVsXCIgKG9yIFwibmFtZVwiIGF0dHJpYnV0ZSBsaXZpbmcgaW5zaWRlIGEgPGZvcm0gZGF0YS1tb2RlbD1cIipcIj4pLmApO1xufVxuZnVuY3Rpb24gZWxlbWVudEJlbG9uZ3NUb1RoaXNDb21wb25lbnQoZWxlbWVudCwgY29tcG9uZW50KSB7XG4gICAgaWYgKGNvbXBvbmVudC5lbGVtZW50ID09PSBlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoIWNvbXBvbmVudC5lbGVtZW50LmNvbnRhaW5zKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgY2xvc2VzdExpdmVDb21wb25lbnQgPSBlbGVtZW50LmNsb3Nlc3QoJ1tkYXRhLWNvbnRyb2xsZXJ+PVwibGl2ZVwiXScpO1xuICAgIHJldHVybiBjbG9zZXN0TGl2ZUNvbXBvbmVudCA9PT0gY29tcG9uZW50LmVsZW1lbnQ7XG59XG5mdW5jdGlvbiBjbG9uZUhUTUxFbGVtZW50KGVsZW1lbnQpIHtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0gZWxlbWVudC5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgaWYgKCEobmV3RWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjbG9uZSBlbGVtZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiBuZXdFbGVtZW50O1xufVxuZnVuY3Rpb24gaHRtbFRvRWxlbWVudChodG1sKSB7XG4gICAgY29uc3QgdGVtcGxhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpO1xuICAgIGh0bWwgPSBodG1sLnRyaW0oKTtcbiAgICB0ZW1wbGF0ZS5pbm5lckhUTUwgPSBodG1sO1xuICAgIGlmICh0ZW1wbGF0ZS5jb250ZW50LmNoaWxkRWxlbWVudENvdW50ID4gMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCBIVE1MIGNvbnRhaW5zICR7dGVtcGxhdGUuY29udGVudC5jaGlsZEVsZW1lbnRDb3VudH0gZWxlbWVudHMsIGJ1dCBvbmx5IDEgcm9vdCBlbGVtZW50IGlzIGFsbG93ZWQuYCk7XG4gICAgfVxuICAgIGNvbnN0IGNoaWxkID0gdGVtcGxhdGUuY29udGVudC5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICBpZiAoIWNoaWxkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2hpbGQgbm90IGZvdW5kJyk7XG4gICAgfVxuICAgIGlmICghKGNoaWxkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ3JlYXRlZCBlbGVtZW50IGlzIG5vdCBhbiBIVE1MRWxlbWVudDogJHtodG1sLnRyaW0oKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkO1xufVxuY29uc3QgZ2V0TXVsdGlwbGVDaGVja2JveFZhbHVlID0gKGVsZW1lbnQsIGN1cnJlbnRWYWx1ZXMpID0+IHtcbiAgICBjb25zdCBmaW5hbFZhbHVlcyA9IFsuLi5jdXJyZW50VmFsdWVzXTtcbiAgICBjb25zdCB2YWx1ZSA9IGlucHV0VmFsdWUoZWxlbWVudCk7XG4gICAgY29uc3QgaW5kZXggPSBjdXJyZW50VmFsdWVzLmluZGV4T2YodmFsdWUpO1xuICAgIGlmIChlbGVtZW50LmNoZWNrZWQpIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgZmluYWxWYWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbmFsVmFsdWVzO1xuICAgIH1cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICBmaW5hbFZhbHVlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICByZXR1cm4gZmluYWxWYWx1ZXM7XG59O1xuY29uc3QgaW5wdXRWYWx1ZSA9IChlbGVtZW50KSA9PiBlbGVtZW50LmRhdGFzZXQudmFsdWUgPyBlbGVtZW50LmRhdGFzZXQudmFsdWUgOiBlbGVtZW50LnZhbHVlO1xuXG4vLyBiYXNlIElJRkUgdG8gZGVmaW5lIGlkaW9tb3JwaFxudmFyIElkaW9tb3JwaCA9IChmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAvLyBBTkQgTk9XIElUIEJFR0lOUy4uLlxuICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIGxldCBFTVBUWV9TRVQgPSBuZXcgU2V0KCk7XG5cbiAgICAgICAgLy8gZGVmYXVsdCBjb25maWd1cmF0aW9uIHZhbHVlcywgdXBkYXRhYmxlIGJ5IHVzZXJzIG5vd1xuICAgICAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICAgICAgICBtb3JwaFN0eWxlOiBcIm91dGVySFRNTFwiLFxuICAgICAgICAgICAgY2FsbGJhY2tzIDoge1xuICAgICAgICAgICAgICAgIGJlZm9yZU5vZGVBZGRlZDogbm9PcCxcbiAgICAgICAgICAgICAgICBhZnRlck5vZGVBZGRlZDogbm9PcCxcbiAgICAgICAgICAgICAgICBiZWZvcmVOb2RlTW9ycGhlZDogbm9PcCxcbiAgICAgICAgICAgICAgICBhZnRlck5vZGVNb3JwaGVkOiBub09wLFxuICAgICAgICAgICAgICAgIGJlZm9yZU5vZGVSZW1vdmVkOiBub09wLFxuICAgICAgICAgICAgICAgIGFmdGVyTm9kZVJlbW92ZWQ6IG5vT3AsXG4gICAgICAgICAgICAgICAgYmVmb3JlQXR0cmlidXRlVXBkYXRlZDogbm9PcCxcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhlYWQ6IHtcbiAgICAgICAgICAgICAgICBzdHlsZTogJ21lcmdlJyxcbiAgICAgICAgICAgICAgICBzaG91bGRQcmVzZXJ2ZTogZnVuY3Rpb24gKGVsdCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWx0LmdldEF0dHJpYnV0ZShcImltLXByZXNlcnZlXCIpID09PSBcInRydWVcIjtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNob3VsZFJlQXBwZW5kOiBmdW5jdGlvbiAoZWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbHQuZ2V0QXR0cmlidXRlKFwiaW0tcmUtYXBwZW5kXCIpID09PSBcInRydWVcIjtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNob3VsZFJlbW92ZTogbm9PcCxcbiAgICAgICAgICAgICAgICBhZnRlckhlYWRNb3JwaGVkOiBub09wLFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgLy8gQ29yZSBNb3JwaGluZyBBbGdvcml0aG0gLSBtb3JwaCwgbW9ycGhOb3JtYWxpemVkQ29udGVudCwgbW9ycGhPbGROb2RlVG8sIG1vcnBoQ2hpbGRyZW5cbiAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICBmdW5jdGlvbiBtb3JwaChvbGROb2RlLCBuZXdDb250ZW50LCBjb25maWcgPSB7fSkge1xuXG4gICAgICAgICAgICBpZiAob2xkTm9kZSBpbnN0YW5jZW9mIERvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgb2xkTm9kZSA9IG9sZE5vZGUuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgbmV3Q29udGVudCA9IHBhcnNlQ29udGVudChuZXdDb250ZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWRDb250ZW50ID0gbm9ybWFsaXplQ29udGVudChuZXdDb250ZW50KTtcblxuICAgICAgICAgICAgbGV0IGN0eCA9IGNyZWF0ZU1vcnBoQ29udGV4dChvbGROb2RlLCBub3JtYWxpemVkQ29udGVudCwgY29uZmlnKTtcblxuICAgICAgICAgICAgcmV0dXJuIG1vcnBoTm9ybWFsaXplZENvbnRlbnQob2xkTm9kZSwgbm9ybWFsaXplZENvbnRlbnQsIGN0eCk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBtb3JwaE5vcm1hbGl6ZWRDb250ZW50KG9sZE5vZGUsIG5vcm1hbGl6ZWROZXdDb250ZW50LCBjdHgpIHtcbiAgICAgICAgICAgIGlmIChjdHguaGVhZC5ibG9jaykge1xuICAgICAgICAgICAgICAgIGxldCBvbGRIZWFkID0gb2xkTm9kZS5xdWVyeVNlbGVjdG9yKCdoZWFkJyk7XG4gICAgICAgICAgICAgICAgbGV0IG5ld0hlYWQgPSBub3JtYWxpemVkTmV3Q29udGVudC5xdWVyeVNlbGVjdG9yKCdoZWFkJyk7XG4gICAgICAgICAgICAgICAgaWYgKG9sZEhlYWQgJiYgbmV3SGVhZCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvbWlzZXMgPSBoYW5kbGVIZWFkRWxlbWVudChuZXdIZWFkLCBvbGRIZWFkLCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIGhlYWQgcHJvbWlzZXMgcmVzb2x2ZSwgY2FsbCBtb3JwaCBhZ2FpbiwgaWdub3JpbmcgdGhlIGhlYWQgdGFnXG4gICAgICAgICAgICAgICAgICAgIFByb21pc2UuYWxsKHByb21pc2VzKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcnBoTm9ybWFsaXplZENvbnRlbnQob2xkTm9kZSwgbm9ybWFsaXplZE5ld0NvbnRlbnQsIE9iamVjdC5hc3NpZ24oY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jazogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjdHgubW9ycGhTdHlsZSA9PT0gXCJpbm5lckhUTUxcIikge1xuXG4gICAgICAgICAgICAgICAgLy8gaW5uZXJIVE1MLCBzbyB3ZSBhcmUgb25seSB1cGRhdGluZyB0aGUgY2hpbGRyZW5cbiAgICAgICAgICAgICAgICBtb3JwaENoaWxkcmVuKG5vcm1hbGl6ZWROZXdDb250ZW50LCBvbGROb2RlLCBjdHgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBvbGROb2RlLmNoaWxkcmVuO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGN0eC5tb3JwaFN0eWxlID09PSBcIm91dGVySFRNTFwiIHx8IGN0eC5tb3JwaFN0eWxlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UgZmluZCB0aGUgYmVzdCBlbGVtZW50IG1hdGNoIGluIHRoZSBuZXcgY29udGVudCwgbW9ycGggdGhhdCwgYW5kIG1lcmdlIGl0cyBzaWJsaW5nc1xuICAgICAgICAgICAgICAgIC8vIGludG8gZWl0aGVyIHNpZGUgb2YgdGhlIGJlc3QgbWF0Y2hcbiAgICAgICAgICAgICAgICBsZXQgYmVzdE1hdGNoID0gZmluZEJlc3ROb2RlTWF0Y2gobm9ybWFsaXplZE5ld0NvbnRlbnQsIG9sZE5vZGUsIGN0eCk7XG5cbiAgICAgICAgICAgICAgICAvLyBzdGFzaCB0aGUgc2libGluZ3MgdGhhdCB3aWxsIG5lZWQgdG8gYmUgaW5zZXJ0ZWQgb24gZWl0aGVyIHNpZGUgb2YgdGhlIGJlc3QgbWF0Y2hcbiAgICAgICAgICAgICAgICBsZXQgcHJldmlvdXNTaWJsaW5nID0gYmVzdE1hdGNoPy5wcmV2aW91c1NpYmxpbmc7XG4gICAgICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gYmVzdE1hdGNoPy5uZXh0U2libGluZztcblxuICAgICAgICAgICAgICAgIC8vIG1vcnBoIGl0XG4gICAgICAgICAgICAgICAgbGV0IG1vcnBoZWROb2RlID0gbW9ycGhPbGROb2RlVG8ob2xkTm9kZSwgYmVzdE1hdGNoLCBjdHgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGJlc3RNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSB3YXMgYSBiZXN0IG1hdGNoLCBtZXJnZSB0aGUgc2libGluZ3MgaW4gdG9vIGFuZCByZXR1cm4gdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIHdob2xlIGJ1bmNoXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnNlcnRTaWJsaW5ncyhwcmV2aW91c1NpYmxpbmcsIG1vcnBoZWROb2RlLCBuZXh0U2libGluZyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIG5vdGhpbmcgd2FzIGFkZGVkIHRvIHRoZSBET01cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBcIkRvIG5vdCB1bmRlcnN0YW5kIGhvdyB0byBtb3JwaCBzdHlsZSBcIiArIGN0eC5tb3JwaFN0eWxlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cblxuICAgICAgICAvKipcbiAgICAgICAgICogQHBhcmFtIHBvc3NpYmxlQWN0aXZlRWxlbWVudFxuICAgICAgICAgKiBAcGFyYW0gY3R4XG4gICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gaWdub3JlVmFsdWVPZkFjdGl2ZUVsZW1lbnQocG9zc2libGVBY3RpdmVFbGVtZW50LCBjdHgpIHtcbiAgICAgICAgICAgIHJldHVybiBjdHguaWdub3JlQWN0aXZlVmFsdWUgJiYgcG9zc2libGVBY3RpdmVFbGVtZW50ID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBwYXJhbSBvbGROb2RlIHJvb3Qgbm9kZSB0byBtZXJnZSBjb250ZW50IGludG9cbiAgICAgICAgICogQHBhcmFtIG5ld0NvbnRlbnQgbmV3IGNvbnRlbnQgdG8gbWVyZ2VcbiAgICAgICAgICogQHBhcmFtIGN0eCB0aGUgbWVyZ2UgY29udGV4dFxuICAgICAgICAgKiBAcmV0dXJucyB7RWxlbWVudH0gdGhlIGVsZW1lbnQgdGhhdCBlbmRlZCB1cCBpbiB0aGUgRE9NXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBtb3JwaE9sZE5vZGVUbyhvbGROb2RlLCBuZXdDb250ZW50LCBjdHgpIHtcbiAgICAgICAgICAgIGlmIChjdHguaWdub3JlQWN0aXZlICYmIG9sZE5vZGUgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIDsgZWxzZSBpZiAobmV3Q29udGVudCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGN0eC5jYWxsYmFja3MuYmVmb3JlTm9kZVJlbW92ZWQob2xkTm9kZSkgPT09IGZhbHNlKSByZXR1cm4gb2xkTm9kZTtcblxuICAgICAgICAgICAgICAgIG9sZE5vZGUucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgY3R4LmNhbGxiYWNrcy5hZnRlck5vZGVSZW1vdmVkKG9sZE5vZGUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghaXNTb2Z0TWF0Y2gob2xkTm9kZSwgbmV3Q29udGVudCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3R4LmNhbGxiYWNrcy5iZWZvcmVOb2RlUmVtb3ZlZChvbGROb2RlKSA9PT0gZmFsc2UpIHJldHVybiBvbGROb2RlO1xuICAgICAgICAgICAgICAgIGlmIChjdHguY2FsbGJhY2tzLmJlZm9yZU5vZGVBZGRlZChuZXdDb250ZW50KSA9PT0gZmFsc2UpIHJldHVybiBvbGROb2RlO1xuXG4gICAgICAgICAgICAgICAgb2xkTm9kZS5wYXJlbnRFbGVtZW50LnJlcGxhY2VDaGlsZChuZXdDb250ZW50LCBvbGROb2RlKTtcbiAgICAgICAgICAgICAgICBjdHguY2FsbGJhY2tzLmFmdGVyTm9kZUFkZGVkKG5ld0NvbnRlbnQpO1xuICAgICAgICAgICAgICAgIGN0eC5jYWxsYmFja3MuYWZ0ZXJOb2RlUmVtb3ZlZChvbGROb2RlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3Q29udGVudDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGN0eC5jYWxsYmFja3MuYmVmb3JlTm9kZU1vcnBoZWQob2xkTm9kZSwgbmV3Q29udGVudCkgPT09IGZhbHNlKSByZXR1cm4gb2xkTm9kZTtcblxuICAgICAgICAgICAgICAgIGlmIChvbGROb2RlIGluc3RhbmNlb2YgSFRNTEhlYWRFbGVtZW50ICYmIGN0eC5oZWFkLmlnbm9yZSkgOyBlbHNlIGlmIChvbGROb2RlIGluc3RhbmNlb2YgSFRNTEhlYWRFbGVtZW50ICYmIGN0eC5oZWFkLnN0eWxlICE9PSBcIm1vcnBoXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlSGVhZEVsZW1lbnQobmV3Q29udGVudCwgb2xkTm9kZSwgY3R4KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzeW5jTm9kZUZyb20obmV3Q29udGVudCwgb2xkTm9kZSwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpZ25vcmVWYWx1ZU9mQWN0aXZlRWxlbWVudChvbGROb2RlLCBjdHgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb3JwaENoaWxkcmVuKG5ld0NvbnRlbnQsIG9sZE5vZGUsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3R4LmNhbGxiYWNrcy5hZnRlck5vZGVNb3JwaGVkKG9sZE5vZGUsIG5ld0NvbnRlbnQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBvbGROb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoaXMgaXMgdGhlIGNvcmUgYWxnb3JpdGhtIGZvciBtYXRjaGluZyB1cCBjaGlsZHJlbi4gIFRoZSBpZGVhIGlzIHRvIHVzZSBpZCBzZXRzIHRvIHRyeSB0byBtYXRjaCB1cFxuICAgICAgICAgKiBub2RlcyBhcyBmYWl0aGZ1bGx5IGFzIHBvc3NpYmxlLiAgV2UgZ3JlZWRpbHkgbWF0Y2gsIHdoaWNoIGFsbG93cyB1cyB0byBrZWVwIHRoZSBhbGdvcml0aG0gZmFzdCwgYnV0XG4gICAgICAgICAqIGJ5IHVzaW5nIGlkIHNldHMsIHdlIGFyZSBhYmxlIHRvIGJldHRlciBtYXRjaCB1cCB3aXRoIGNvbnRlbnQgZGVlcGVyIGluIHRoZSBET00uXG4gICAgICAgICAqXG4gICAgICAgICAqIEJhc2ljIGFsZ29yaXRobSBpcywgZm9yIGVhY2ggbm9kZSBpbiB0aGUgbmV3IGNvbnRlbnQ6XG4gICAgICAgICAqXG4gICAgICAgICAqIC0gaWYgd2UgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIG9sZCBwYXJlbnQsIGFwcGVuZCB0aGUgbmV3IGNvbnRlbnRcbiAgICAgICAgICogLSBpZiB0aGUgbmV3IGNvbnRlbnQgaGFzIGFuIGlkIHNldCBtYXRjaCB3aXRoIHRoZSBjdXJyZW50IGluc2VydGlvbiBwb2ludCwgbW9ycGhcbiAgICAgICAgICogLSBzZWFyY2ggZm9yIGFuIGlkIHNldCBtYXRjaFxuICAgICAgICAgKiAtIGlmIGlkIHNldCBtYXRjaCBmb3VuZCwgbW9ycGhcbiAgICAgICAgICogLSBvdGhlcndpc2Ugc2VhcmNoIGZvciBhIFwic29mdFwiIG1hdGNoXG4gICAgICAgICAqIC0gaWYgYSBzb2Z0IG1hdGNoIGlzIGZvdW5kLCBtb3JwaFxuICAgICAgICAgKiAtIG90aGVyd2lzZSwgcHJlcGVuZCB0aGUgbmV3IG5vZGUgYmVmb3JlIHRoZSBjdXJyZW50IGluc2VydGlvbiBwb2ludFxuICAgICAgICAgKlxuICAgICAgICAgKiBUaGUgdHdvIHNlYXJjaCBhbGdvcml0aG1zIHRlcm1pbmF0ZSBpZiBjb21wZXRpbmcgbm9kZSBtYXRjaGVzIGFwcGVhciB0byBvdXR3ZWlnaCB3aGF0IGNhbiBiZSBhY2hpZXZlZFxuICAgICAgICAgKiB3aXRoIHRoZSBjdXJyZW50IG5vZGUuICBTZWUgZmluZElkU2V0TWF0Y2goKSBhbmQgZmluZFNvZnRNYXRjaCgpIGZvciBkZXRhaWxzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IG5ld1BhcmVudCB0aGUgcGFyZW50IGVsZW1lbnQgb2YgdGhlIG5ldyBjb250ZW50XG4gICAgICAgICAqIEBwYXJhbSB7RWxlbWVudCB9IG9sZFBhcmVudCB0aGUgb2xkIGNvbnRlbnQgdGhhdCB3ZSBhcmUgbWVyZ2luZyB0aGUgbmV3IGNvbnRlbnQgaW50b1xuICAgICAgICAgKiBAcGFyYW0gY3R4IHRoZSBtZXJnZSBjb250ZXh0XG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBtb3JwaENoaWxkcmVuKG5ld1BhcmVudCwgb2xkUGFyZW50LCBjdHgpIHtcblxuICAgICAgICAgICAgbGV0IG5leHROZXdDaGlsZCA9IG5ld1BhcmVudC5maXJzdENoaWxkO1xuICAgICAgICAgICAgbGV0IGluc2VydGlvblBvaW50ID0gb2xkUGFyZW50LmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgICBsZXQgbmV3Q2hpbGQ7XG5cbiAgICAgICAgICAgIC8vIHJ1biB0aHJvdWdoIGFsbCB0aGUgbmV3IGNvbnRlbnRcbiAgICAgICAgICAgIHdoaWxlIChuZXh0TmV3Q2hpbGQpIHtcblxuICAgICAgICAgICAgICAgIG5ld0NoaWxkID0gbmV4dE5ld0NoaWxkO1xuICAgICAgICAgICAgICAgIG5leHROZXdDaGlsZCA9IG5ld0NoaWxkLm5leHRTaWJsaW5nO1xuXG4gICAgICAgICAgICAgICAgLy8gaWYgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGV4aXRpbmcgcGFyZW50J3MgY2hpbGRyZW4sIGp1c3QgYXBwZW5kXG4gICAgICAgICAgICAgICAgaWYgKGluc2VydGlvblBvaW50ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN0eC5jYWxsYmFja3MuYmVmb3JlTm9kZUFkZGVkKG5ld0NoaWxkKSA9PT0gZmFsc2UpIHJldHVybjtcblxuICAgICAgICAgICAgICAgICAgICBvbGRQYXJlbnQuYXBwZW5kQ2hpbGQobmV3Q2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICBjdHguY2FsbGJhY2tzLmFmdGVyTm9kZUFkZGVkKG5ld0NoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlSWRzRnJvbUNvbnNpZGVyYXRpb24oY3R4LCBuZXdDaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBjdXJyZW50IG5vZGUgaGFzIGFuIGlkIHNldCBtYXRjaCB0aGVuIG1vcnBoXG4gICAgICAgICAgICAgICAgaWYgKGlzSWRTZXRNYXRjaChuZXdDaGlsZCwgaW5zZXJ0aW9uUG9pbnQsIGN0eCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbW9ycGhPbGROb2RlVG8oaW5zZXJ0aW9uUG9pbnQsIG5ld0NoaWxkLCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9IGluc2VydGlvblBvaW50Lm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVJZHNGcm9tQ29uc2lkZXJhdGlvbihjdHgsIG5ld0NoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHNlYXJjaCBmb3J3YXJkIGluIHRoZSBleGlzdGluZyBvbGQgY2hpbGRyZW4gZm9yIGFuIGlkIHNldCBtYXRjaFxuICAgICAgICAgICAgICAgIGxldCBpZFNldE1hdGNoID0gZmluZElkU2V0TWF0Y2gobmV3UGFyZW50LCBvbGRQYXJlbnQsIG5ld0NoaWxkLCBpbnNlcnRpb25Qb2ludCwgY3R4KTtcblxuICAgICAgICAgICAgICAgIC8vIGlmIHdlIGZvdW5kIGEgcG90ZW50aWFsIG1hdGNoLCByZW1vdmUgdGhlIG5vZGVzIHVudGlsIHRoYXQgcG9pbnQgYW5kIG1vcnBoXG4gICAgICAgICAgICAgICAgaWYgKGlkU2V0TWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSByZW1vdmVOb2Rlc0JldHdlZW4oaW5zZXJ0aW9uUG9pbnQsIGlkU2V0TWF0Y2gsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIG1vcnBoT2xkTm9kZVRvKGlkU2V0TWF0Y2gsIG5ld0NoaWxkLCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVJZHNGcm9tQ29uc2lkZXJhdGlvbihjdHgsIG5ld0NoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gbm8gaWQgc2V0IG1hdGNoIGZvdW5kLCBzbyBzY2FuIGZvcndhcmQgZm9yIGEgc29mdCBtYXRjaCBmb3IgdGhlIGN1cnJlbnQgbm9kZVxuICAgICAgICAgICAgICAgIGxldCBzb2Z0TWF0Y2ggPSBmaW5kU29mdE1hdGNoKG5ld1BhcmVudCwgb2xkUGFyZW50LCBuZXdDaGlsZCwgaW5zZXJ0aW9uUG9pbnQsIGN0eCk7XG5cbiAgICAgICAgICAgICAgICAvLyBpZiB3ZSBmb3VuZCBhIHNvZnQgbWF0Y2ggZm9yIHRoZSBjdXJyZW50IG5vZGUsIG1vcnBoXG4gICAgICAgICAgICAgICAgaWYgKHNvZnRNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9IHJlbW92ZU5vZGVzQmV0d2VlbihpbnNlcnRpb25Qb2ludCwgc29mdE1hdGNoLCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBtb3JwaE9sZE5vZGVUbyhzb2Z0TWF0Y2gsIG5ld0NoaWxkLCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVJZHNGcm9tQ29uc2lkZXJhdGlvbihjdHgsIG5ld0NoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gYWJhbmRvbiBhbGwgaG9wZSBvZiBtb3JwaGluZywganVzdCBpbnNlcnQgdGhlIG5ldyBjaGlsZCBiZWZvcmUgdGhlIGluc2VydGlvbiBwb2ludFxuICAgICAgICAgICAgICAgIC8vIGFuZCBtb3ZlIG9uXG4gICAgICAgICAgICAgICAgaWYgKGN0eC5jYWxsYmFja3MuYmVmb3JlTm9kZUFkZGVkKG5ld0NoaWxkKSA9PT0gZmFsc2UpIHJldHVybjtcblxuICAgICAgICAgICAgICAgIG9sZFBhcmVudC5pbnNlcnRCZWZvcmUobmV3Q2hpbGQsIGluc2VydGlvblBvaW50KTtcbiAgICAgICAgICAgICAgICBjdHguY2FsbGJhY2tzLmFmdGVyTm9kZUFkZGVkKG5ld0NoaWxkKTtcbiAgICAgICAgICAgICAgICByZW1vdmVJZHNGcm9tQ29uc2lkZXJhdGlvbihjdHgsIG5ld0NoaWxkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gcmVtb3ZlIGFueSByZW1haW5pbmcgb2xkIG5vZGVzIHRoYXQgZGlkbid0IG1hdGNoIHVwIHdpdGggbmV3IGNvbnRlbnRcbiAgICAgICAgICAgIHdoaWxlIChpbnNlcnRpb25Qb2ludCAhPT0gbnVsbCkge1xuXG4gICAgICAgICAgICAgICAgbGV0IHRlbXBOb2RlID0gaW5zZXJ0aW9uUG9pbnQ7XG4gICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNlcnRpb25Qb2ludC5uZXh0U2libGluZztcbiAgICAgICAgICAgICAgICByZW1vdmVOb2RlKHRlbXBOb2RlLCBjdHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAvLyBBdHRyaWJ1dGUgU3luY2luZyBDb2RlXG4gICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgICAgICAvKipcbiAgICAgICAgICogQHBhcmFtIGF0dHIge1N0cmluZ30gdGhlIGF0dHJpYnV0ZSB0byBiZSBtdXRhdGVkXG4gICAgICAgICAqIEBwYXJhbSB0byB7RWxlbWVudH0gdGhlIGVsZW1lbnQgdGhhdCBpcyBnb2luZyB0byBiZSB1cGRhdGVkXG4gICAgICAgICAqIEBwYXJhbSB1cGRhdGVUeXBlIHsoXCJ1cGRhdGVcInxcInJlbW92ZVwiKX1cbiAgICAgICAgICogQHBhcmFtIGN0eCB0aGUgbWVyZ2UgY29udGV4dFxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgYXR0cmlidXRlIHNob3VsZCBiZSBpZ25vcmVkLCBmYWxzZSBvdGhlcndpc2VcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGlnbm9yZUF0dHJpYnV0ZShhdHRyLCB0bywgdXBkYXRlVHlwZSwgY3R4KSB7XG4gICAgICAgICAgICBpZihhdHRyID09PSAndmFsdWUnICYmIGN0eC5pZ25vcmVBY3RpdmVWYWx1ZSAmJiB0byA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY3R4LmNhbGxiYWNrcy5iZWZvcmVBdHRyaWJ1dGVVcGRhdGVkKGF0dHIsIHRvLCB1cGRhdGVUeXBlKSA9PT0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogc3luY3MgYSBnaXZlbiBub2RlIHdpdGggYW5vdGhlciBub2RlLCBjb3B5aW5nIG92ZXIgYWxsIGF0dHJpYnV0ZXMgYW5kXG4gICAgICAgICAqIGlubmVyIGVsZW1lbnQgc3RhdGUgZnJvbSB0aGUgJ2Zyb20nIG5vZGUgdG8gdGhlICd0bycgbm9kZVxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGZyb20gdGhlIGVsZW1lbnQgdG8gY29weSBhdHRyaWJ1dGVzICYgc3RhdGUgZnJvbVxuICAgICAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IHRvIHRoZSBlbGVtZW50IHRvIGNvcHkgYXR0cmlidXRlcyAmIHN0YXRlIHRvXG4gICAgICAgICAqIEBwYXJhbSBjdHggdGhlIG1lcmdlIGNvbnRleHRcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHN5bmNOb2RlRnJvbShmcm9tLCB0bywgY3R4KSB7XG4gICAgICAgICAgICBsZXQgdHlwZSA9IGZyb20ubm9kZVR5cGU7XG5cbiAgICAgICAgICAgIC8vIGlmIGlzIGFuIGVsZW1lbnQgdHlwZSwgc3luYyB0aGUgYXR0cmlidXRlcyBmcm9tIHRoZVxuICAgICAgICAgICAgLy8gbmV3IG5vZGUgaW50byB0aGUgbmV3IG5vZGVcbiAgICAgICAgICAgIGlmICh0eXBlID09PSAxIC8qIGVsZW1lbnQgdHlwZSAqLykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZyb21BdHRyaWJ1dGVzID0gZnJvbS5hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvQXR0cmlidXRlcyA9IHRvLmF0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBmcm9tQXR0cmlidXRlIG9mIGZyb21BdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpZ25vcmVBdHRyaWJ1dGUoZnJvbUF0dHJpYnV0ZS5uYW1lLCB0bywgJ3VwZGF0ZScsIGN0eCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0by5nZXRBdHRyaWJ1dGUoZnJvbUF0dHJpYnV0ZS5uYW1lKSAhPT0gZnJvbUF0dHJpYnV0ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG8uc2V0QXR0cmlidXRlKGZyb21BdHRyaWJ1dGUubmFtZSwgZnJvbUF0dHJpYnV0ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gaXRlcmF0ZSBiYWNrd2FyZHMgdG8gYXZvaWQgc2tpcHBpbmcgb3ZlciBpdGVtcyB3aGVuIGEgZGVsZXRlIG9jY3Vyc1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSB0b0F0dHJpYnV0ZXMubGVuZ3RoIC0gMTsgMCA8PSBpOyBpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9BdHRyaWJ1dGUgPSB0b0F0dHJpYnV0ZXNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChpZ25vcmVBdHRyaWJ1dGUodG9BdHRyaWJ1dGUubmFtZSwgdG8sICdyZW1vdmUnLCBjdHgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIWZyb20uaGFzQXR0cmlidXRlKHRvQXR0cmlidXRlLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0by5yZW1vdmVBdHRyaWJ1dGUodG9BdHRyaWJ1dGUubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHN5bmMgdGV4dCBub2Rlc1xuICAgICAgICAgICAgaWYgKHR5cGUgPT09IDggLyogY29tbWVudCAqLyB8fCB0eXBlID09PSAzIC8qIHRleHQgKi8pIHtcbiAgICAgICAgICAgICAgICBpZiAodG8ubm9kZVZhbHVlICE9PSBmcm9tLm5vZGVWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0by5ub2RlVmFsdWUgPSBmcm9tLm5vZGVWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaWdub3JlVmFsdWVPZkFjdGl2ZUVsZW1lbnQodG8sIGN0eCkpIHtcbiAgICAgICAgICAgICAgICAvLyBzeW5jIGlucHV0IHZhbHVlc1xuICAgICAgICAgICAgICAgIHN5bmNJbnB1dFZhbHVlKGZyb20sIHRvLCBjdHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBwYXJhbSBmcm9tIHtFbGVtZW50fSBlbGVtZW50IHRvIHN5bmMgdGhlIHZhbHVlIGZyb21cbiAgICAgICAgICogQHBhcmFtIHRvIHtFbGVtZW50fSBlbGVtZW50IHRvIHN5bmMgdGhlIHZhbHVlIHRvXG4gICAgICAgICAqIEBwYXJhbSBhdHRyaWJ1dGVOYW1lIHtTdHJpbmd9IHRoZSBhdHRyaWJ1dGUgbmFtZVxuICAgICAgICAgKiBAcGFyYW0gY3R4IHRoZSBtZXJnZSBjb250ZXh0XG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBzeW5jQm9vbGVhbkF0dHJpYnV0ZShmcm9tLCB0bywgYXR0cmlidXRlTmFtZSwgY3R4KSB7XG4gICAgICAgICAgICBpZiAoZnJvbVthdHRyaWJ1dGVOYW1lXSAhPT0gdG9bYXR0cmlidXRlTmFtZV0pIHtcbiAgICAgICAgICAgICAgICBsZXQgaWdub3JlVXBkYXRlID0gaWdub3JlQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIHRvLCAndXBkYXRlJywgY3R4KTtcbiAgICAgICAgICAgICAgICBpZiAoIWlnbm9yZVVwZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICB0b1thdHRyaWJ1dGVOYW1lXSA9IGZyb21bYXR0cmlidXRlTmFtZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChmcm9tW2F0dHJpYnV0ZU5hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaWdub3JlVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0by5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgZnJvbVthdHRyaWJ1dGVOYW1lXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlnbm9yZUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCB0bywgJ3JlbW92ZScsIGN0eCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvLnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBOQjogbWFueSBib3RoYW5zIGRpZWQgdG8gYnJpbmcgdXMgaW5mb3JtYXRpb246XG4gICAgICAgICAqXG4gICAgICAgICAqICBodHRwczovL2dpdGh1Yi5jb20vcGF0cmljay1zdGVlbGUtaWRlbS9tb3JwaGRvbS9ibG9iL21hc3Rlci9zcmMvc3BlY2lhbEVsSGFuZGxlcnMuanNcbiAgICAgICAgICogIGh0dHBzOi8vZ2l0aHViLmNvbS9jaG9vanMvbmFub21vcnBoL2Jsb2IvbWFzdGVyL2xpYi9tb3JwaC5qc0wxMTNcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIGZyb20ge0VsZW1lbnR9IHRoZSBlbGVtZW50IHRvIHN5bmMgdGhlIGlucHV0IHZhbHVlIGZyb21cbiAgICAgICAgICogQHBhcmFtIHRvIHtFbGVtZW50fSB0aGUgZWxlbWVudCB0byBzeW5jIHRoZSBpbnB1dCB2YWx1ZSB0b1xuICAgICAgICAgKiBAcGFyYW0gY3R4IHRoZSBtZXJnZSBjb250ZXh0XG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBzeW5jSW5wdXRWYWx1ZShmcm9tLCB0bywgY3R4KSB7XG4gICAgICAgICAgICBpZiAoZnJvbSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgJiZcbiAgICAgICAgICAgICAgICB0byBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgJiZcbiAgICAgICAgICAgICAgICBmcm9tLnR5cGUgIT09ICdmaWxlJykge1xuXG4gICAgICAgICAgICAgICAgbGV0IGZyb21WYWx1ZSA9IGZyb20udmFsdWU7XG4gICAgICAgICAgICAgICAgbGV0IHRvVmFsdWUgPSB0by52YWx1ZTtcblxuICAgICAgICAgICAgICAgIC8vIHN5bmMgYm9vbGVhbiBhdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgc3luY0Jvb2xlYW5BdHRyaWJ1dGUoZnJvbSwgdG8sICdjaGVja2VkJywgY3R4KTtcbiAgICAgICAgICAgICAgICBzeW5jQm9vbGVhbkF0dHJpYnV0ZShmcm9tLCB0bywgJ2Rpc2FibGVkJywgY3R4KTtcblxuICAgICAgICAgICAgICAgIGlmICghZnJvbS5oYXNBdHRyaWJ1dGUoJ3ZhbHVlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpZ25vcmVBdHRyaWJ1dGUoJ3ZhbHVlJywgdG8sICdyZW1vdmUnLCBjdHgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0by52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgdG8ucmVtb3ZlQXR0cmlidXRlKCd2YWx1ZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmcm9tVmFsdWUgIT09IHRvVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpZ25vcmVBdHRyaWJ1dGUoJ3ZhbHVlJywgdG8sICd1cGRhdGUnLCBjdHgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0by5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgZnJvbVZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvLnZhbHVlID0gZnJvbVZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChmcm9tIGluc3RhbmNlb2YgSFRNTE9wdGlvbkVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBzeW5jQm9vbGVhbkF0dHJpYnV0ZShmcm9tLCB0bywgJ3NlbGVjdGVkJywgY3R4KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZnJvbSBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQgJiYgdG8gaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgbGV0IGZyb21WYWx1ZSA9IGZyb20udmFsdWU7XG4gICAgICAgICAgICAgICAgbGV0IHRvVmFsdWUgPSB0by52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAoaWdub3JlQXR0cmlidXRlKCd2YWx1ZScsIHRvLCAndXBkYXRlJywgY3R4KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChmcm9tVmFsdWUgIT09IHRvVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdG8udmFsdWUgPSBmcm9tVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0by5maXJzdENoaWxkICYmIHRvLmZpcnN0Q2hpbGQubm9kZVZhbHVlICE9PSBmcm9tVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdG8uZmlyc3RDaGlsZC5ub2RlVmFsdWUgPSBmcm9tVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAvLyB0aGUgSEVBRCB0YWcgY2FuIGJlIGhhbmRsZWQgc3BlY2lhbGx5LCBlaXRoZXIgdy8gYSAnbWVyZ2UnIG9yICdhcHBlbmQnIHN0eWxlXG4gICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlSGVhZEVsZW1lbnQobmV3SGVhZFRhZywgY3VycmVudEhlYWQsIGN0eCkge1xuXG4gICAgICAgICAgICBsZXQgYWRkZWQgPSBbXTtcbiAgICAgICAgICAgIGxldCByZW1vdmVkID0gW107XG4gICAgICAgICAgICBsZXQgcHJlc2VydmVkID0gW107XG4gICAgICAgICAgICBsZXQgbm9kZXNUb0FwcGVuZCA9IFtdO1xuXG4gICAgICAgICAgICBsZXQgaGVhZE1lcmdlU3R5bGUgPSBjdHguaGVhZC5zdHlsZTtcblxuICAgICAgICAgICAgLy8gcHV0IGFsbCBuZXcgaGVhZCBlbGVtZW50cyBpbnRvIGEgTWFwLCBieSB0aGVpciBvdXRlckhUTUxcbiAgICAgICAgICAgIGxldCBzcmNUb05ld0hlYWROb2RlcyA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbmV3SGVhZENoaWxkIG9mIG5ld0hlYWRUYWcuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBzcmNUb05ld0hlYWROb2Rlcy5zZXQobmV3SGVhZENoaWxkLm91dGVySFRNTCwgbmV3SGVhZENoaWxkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZm9yIGVhY2ggZWx0IGluIHRoZSBjdXJyZW50IGhlYWRcbiAgICAgICAgICAgIGZvciAoY29uc3QgY3VycmVudEhlYWRFbHQgb2YgY3VycmVudEhlYWQuY2hpbGRyZW4pIHtcblxuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGhlYWQgZWxlbWVudCBpcyBpbiB0aGUgbWFwXG4gICAgICAgICAgICAgICAgbGV0IGluTmV3Q29udGVudCA9IHNyY1RvTmV3SGVhZE5vZGVzLmhhcyhjdXJyZW50SGVhZEVsdC5vdXRlckhUTUwpO1xuICAgICAgICAgICAgICAgIGxldCBpc1JlQXBwZW5kZWQgPSBjdHguaGVhZC5zaG91bGRSZUFwcGVuZChjdXJyZW50SGVhZEVsdCk7XG4gICAgICAgICAgICAgICAgbGV0IGlzUHJlc2VydmVkID0gY3R4LmhlYWQuc2hvdWxkUHJlc2VydmUoY3VycmVudEhlYWRFbHQpO1xuICAgICAgICAgICAgICAgIGlmIChpbk5ld0NvbnRlbnQgfHwgaXNQcmVzZXJ2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUmVBcHBlbmRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHRoZSBjdXJyZW50IHZlcnNpb24gYW5kIGxldCB0aGUgbmV3IHZlcnNpb24gcmVwbGFjZSBpdCBhbmQgcmUtZXhlY3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZC5wdXNoKGN1cnJlbnRIZWFkRWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZWxlbWVudCBhbHJlYWR5IGV4aXN0cyBhbmQgc2hvdWxkIG5vdCBiZSByZS1hcHBlbmRlZCwgc28gcmVtb3ZlIGl0IGZyb21cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBuZXcgY29udGVudCBtYXAsIHByZXNlcnZpbmcgaXQgaW4gdGhlIERPTVxuICAgICAgICAgICAgICAgICAgICAgICAgc3JjVG9OZXdIZWFkTm9kZXMuZGVsZXRlKGN1cnJlbnRIZWFkRWx0Lm91dGVySFRNTCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZWQucHVzaChjdXJyZW50SGVhZEVsdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGVhZE1lcmdlU3R5bGUgPT09IFwiYXBwZW5kXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGFyZSBhcHBlbmRpbmcgYW5kIHRoaXMgZXhpc3RpbmcgZWxlbWVudCBpcyBub3QgbmV3IGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIGlmIGFuZCBvbmx5IGlmIGl0IGlzIG1hcmtlZCBmb3IgcmUtYXBwZW5kIGRvIHdlIGRvIGFueXRoaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNSZUFwcGVuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZC5wdXNoKGN1cnJlbnRIZWFkRWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rlc1RvQXBwZW5kLnB1c2goY3VycmVudEhlYWRFbHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBhIG1lcmdlLCB3ZSByZW1vdmUgdGhpcyBjb250ZW50IHNpbmNlIGl0IGlzIG5vdCBpbiB0aGUgbmV3IGhlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdHguaGVhZC5zaG91bGRSZW1vdmUoY3VycmVudEhlYWRFbHQpICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQucHVzaChjdXJyZW50SGVhZEVsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFB1c2ggdGhlIHJlbWFpbmluZyBuZXcgaGVhZCBlbGVtZW50cyBpbiB0aGUgTWFwIGludG8gdGhlXG4gICAgICAgICAgICAvLyBub2RlcyB0byBhcHBlbmQgdG8gdGhlIGhlYWQgdGFnXG4gICAgICAgICAgICBub2Rlc1RvQXBwZW5kLnB1c2goLi4uc3JjVG9OZXdIZWFkTm9kZXMudmFsdWVzKCkpO1xuXG4gICAgICAgICAgICBsZXQgcHJvbWlzZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbmV3Tm9kZSBvZiBub2Rlc1RvQXBwZW5kKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld0VsdCA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCkuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KG5ld05vZGUub3V0ZXJIVE1MKS5maXJzdENoaWxkO1xuICAgICAgICAgICAgICAgIGlmIChjdHguY2FsbGJhY2tzLmJlZm9yZU5vZGVBZGRlZChuZXdFbHQpICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3RWx0LmhyZWYgfHwgbmV3RWx0LnNyYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc29sdmUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAoX3Jlc29sdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlID0gX3Jlc29sdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0VsdC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50SGVhZC5hcHBlbmRDaGlsZChuZXdFbHQpO1xuICAgICAgICAgICAgICAgICAgICBjdHguY2FsbGJhY2tzLmFmdGVyTm9kZUFkZGVkKG5ld0VsdCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZGVkLnB1c2gobmV3RWx0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHJlbW92ZSBhbGwgcmVtb3ZlZCBlbGVtZW50cywgYWZ0ZXIgd2UgaGF2ZSBhcHBlbmRlZCB0aGUgbmV3IGVsZW1lbnRzIHRvIGF2b2lkXG4gICAgICAgICAgICAvLyBhZGRpdGlvbmFsIG5ldHdvcmsgcmVxdWVzdHMgZm9yIHRoaW5ncyBsaWtlIHN0eWxlIHNoZWV0c1xuICAgICAgICAgICAgZm9yIChjb25zdCByZW1vdmVkRWxlbWVudCBvZiByZW1vdmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGN0eC5jYWxsYmFja3MuYmVmb3JlTm9kZVJlbW92ZWQocmVtb3ZlZEVsZW1lbnQpICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50SGVhZC5yZW1vdmVDaGlsZChyZW1vdmVkRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGN0eC5jYWxsYmFja3MuYWZ0ZXJOb2RlUmVtb3ZlZChyZW1vdmVkRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjdHguaGVhZC5hZnRlckhlYWRNb3JwaGVkKGN1cnJlbnRIZWFkLCB7YWRkZWQ6IGFkZGVkLCBrZXB0OiBwcmVzZXJ2ZWQsIHJlbW92ZWQ6IHJlbW92ZWR9KTtcbiAgICAgICAgICAgIHJldHVybiBwcm9taXNlcztcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG5vT3AoKSB7XG4gICAgICAgIH1cblxuICAgICAgICAvKlxuICAgICAgICAgIERlZXAgbWVyZ2VzIHRoZSBjb25maWcgb2JqZWN0IGFuZCB0aGUgSWRpb21vcm9waC5kZWZhdWx0cyBvYmplY3QgdG9cbiAgICAgICAgICBwcm9kdWNlIGEgZmluYWwgY29uZmlndXJhdGlvbiBvYmplY3RcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIG1lcmdlRGVmYXVsdHMoY29uZmlnKSB7XG4gICAgICAgICAgICBsZXQgZmluYWxDb25maWcgPSB7fTtcbiAgICAgICAgICAgIC8vIGNvcHkgdG9wIGxldmVsIHN0dWZmIGludG8gZmluYWwgY29uZmlnXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGZpbmFsQ29uZmlnLCBkZWZhdWx0cyk7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGZpbmFsQ29uZmlnLCBjb25maWcpO1xuXG4gICAgICAgICAgICAvLyBjb3B5IGNhbGxiYWNrcyBpbnRvIGZpbmFsIGNvbmZpZyAoZG8gdGhpcyB0byBkZWVwIG1lcmdlIHRoZSBjYWxsYmFja3MpXG4gICAgICAgICAgICBmaW5hbENvbmZpZy5jYWxsYmFja3MgPSB7fTtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZmluYWxDb25maWcuY2FsbGJhY2tzLCBkZWZhdWx0cy5jYWxsYmFja3MpO1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihmaW5hbENvbmZpZy5jYWxsYmFja3MsIGNvbmZpZy5jYWxsYmFja3MpO1xuXG4gICAgICAgICAgICAvLyBjb3B5IGhlYWQgY29uZmlnIGludG8gZmluYWwgY29uZmlnICAoZG8gdGhpcyB0byBkZWVwIG1lcmdlIHRoZSBoZWFkKVxuICAgICAgICAgICAgZmluYWxDb25maWcuaGVhZCA9IHt9O1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihmaW5hbENvbmZpZy5oZWFkLCBkZWZhdWx0cy5oZWFkKTtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZmluYWxDb25maWcuaGVhZCwgY29uZmlnLmhlYWQpO1xuICAgICAgICAgICAgcmV0dXJuIGZpbmFsQ29uZmlnO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gY3JlYXRlTW9ycGhDb250ZXh0KG9sZE5vZGUsIG5ld0NvbnRlbnQsIGNvbmZpZykge1xuICAgICAgICAgICAgY29uZmlnID0gbWVyZ2VEZWZhdWx0cyhjb25maWcpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IG9sZE5vZGUsXG4gICAgICAgICAgICAgICAgbmV3Q29udGVudDogbmV3Q29udGVudCxcbiAgICAgICAgICAgICAgICBjb25maWc6IGNvbmZpZyxcbiAgICAgICAgICAgICAgICBtb3JwaFN0eWxlOiBjb25maWcubW9ycGhTdHlsZSxcbiAgICAgICAgICAgICAgICBpZ25vcmVBY3RpdmU6IGNvbmZpZy5pZ25vcmVBY3RpdmUsXG4gICAgICAgICAgICAgICAgaWdub3JlQWN0aXZlVmFsdWU6IGNvbmZpZy5pZ25vcmVBY3RpdmVWYWx1ZSxcbiAgICAgICAgICAgICAgICBpZE1hcDogY3JlYXRlSWRNYXAob2xkTm9kZSwgbmV3Q29udGVudCksXG4gICAgICAgICAgICAgICAgZGVhZElkczogbmV3IFNldCgpLFxuICAgICAgICAgICAgICAgIGNhbGxiYWNrczogY29uZmlnLmNhbGxiYWNrcyxcbiAgICAgICAgICAgICAgICBoZWFkOiBjb25maWcuaGVhZFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gaXNJZFNldE1hdGNoKG5vZGUxLCBub2RlMiwgY3R4KSB7XG4gICAgICAgICAgICBpZiAobm9kZTEgPT0gbnVsbCB8fCBub2RlMiA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5vZGUxLm5vZGVUeXBlID09PSBub2RlMi5ub2RlVHlwZSAmJiBub2RlMS50YWdOYW1lID09PSBub2RlMi50YWdOYW1lKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUxLmlkICE9PSBcIlwiICYmIG5vZGUxLmlkID09PSBub2RlMi5pZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SWRJbnRlcnNlY3Rpb25Db3VudChjdHgsIG5vZGUxLCBub2RlMikgPiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGlzU29mdE1hdGNoKG5vZGUxLCBub2RlMikge1xuICAgICAgICAgICAgaWYgKG5vZGUxID09IG51bGwgfHwgbm9kZTIgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBub2RlMS5ub2RlVHlwZSA9PT0gbm9kZTIubm9kZVR5cGUgJiYgbm9kZTEudGFnTmFtZSA9PT0gbm9kZTIudGFnTmFtZVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcmVtb3ZlTm9kZXNCZXR3ZWVuKHN0YXJ0SW5jbHVzaXZlLCBlbmRFeGNsdXNpdmUsIGN0eCkge1xuICAgICAgICAgICAgd2hpbGUgKHN0YXJ0SW5jbHVzaXZlICE9PSBlbmRFeGNsdXNpdmUpIHtcbiAgICAgICAgICAgICAgICBsZXQgdGVtcE5vZGUgPSBzdGFydEluY2x1c2l2ZTtcbiAgICAgICAgICAgICAgICBzdGFydEluY2x1c2l2ZSA9IHN0YXJ0SW5jbHVzaXZlLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgIHJlbW92ZU5vZGUodGVtcE5vZGUsIGN0eCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZW1vdmVJZHNGcm9tQ29uc2lkZXJhdGlvbihjdHgsIGVuZEV4Y2x1c2l2ZSk7XG4gICAgICAgICAgICByZXR1cm4gZW5kRXhjbHVzaXZlLm5leHRTaWJsaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAvLyBTY2FucyBmb3J3YXJkIGZyb20gdGhlIGluc2VydGlvblBvaW50IGluIHRoZSBvbGQgcGFyZW50IGxvb2tpbmcgZm9yIGEgcG90ZW50aWFsIGlkIG1hdGNoXG4gICAgICAgIC8vIGZvciB0aGUgbmV3Q2hpbGQuICBXZSBzdG9wIGlmIHdlIGZpbmQgYSBwb3RlbnRpYWwgaWQgbWF0Y2ggZm9yIHRoZSBuZXcgY2hpbGQgT1JcbiAgICAgICAgLy8gaWYgdGhlIG51bWJlciBvZiBwb3RlbnRpYWwgaWQgbWF0Y2hlcyB3ZSBhcmUgZGlzY2FyZGluZyBpcyBncmVhdGVyIHRoYW4gdGhlXG4gICAgICAgIC8vIHBvdGVudGlhbCBpZCBtYXRjaGVzIGZvciB0aGUgbmV3IGNoaWxkXG4gICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgZnVuY3Rpb24gZmluZElkU2V0TWF0Y2gobmV3Q29udGVudCwgb2xkUGFyZW50LCBuZXdDaGlsZCwgaW5zZXJ0aW9uUG9pbnQsIGN0eCkge1xuXG4gICAgICAgICAgICAvLyBtYXggaWQgbWF0Y2hlcyB3ZSBhcmUgd2lsbGluZyB0byBkaXNjYXJkIGluIG91ciBzZWFyY2hcbiAgICAgICAgICAgIGxldCBuZXdDaGlsZFBvdGVudGlhbElkQ291bnQgPSBnZXRJZEludGVyc2VjdGlvbkNvdW50KGN0eCwgbmV3Q2hpbGQsIG9sZFBhcmVudCk7XG5cbiAgICAgICAgICAgIGxldCBwb3RlbnRpYWxNYXRjaCA9IG51bGw7XG5cbiAgICAgICAgICAgIC8vIG9ubHkgc2VhcmNoIGZvcndhcmQgaWYgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSBvZiBhbiBpZCBtYXRjaFxuICAgICAgICAgICAgaWYgKG5ld0NoaWxkUG90ZW50aWFsSWRDb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgcG90ZW50aWFsTWF0Y2ggPSBpbnNlcnRpb25Qb2ludDtcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBhIHBvc3NpYmlsaXR5IG9mIGFuIGlkIG1hdGNoLCBzY2FuIGZvcndhcmRcbiAgICAgICAgICAgICAgICAvLyBrZWVwIHRyYWNrIG9mIHRoZSBwb3RlbnRpYWwgaWQgbWF0Y2ggY291bnQgd2UgYXJlIGRpc2NhcmRpbmcgKHRoZVxuICAgICAgICAgICAgICAgIC8vIG5ld0NoaWxkUG90ZW50aWFsSWRDb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGlzIHRvIG1ha2UgaXQgbGlrZWx5XG4gICAgICAgICAgICAgICAgLy8gd29ydGggaXQpXG4gICAgICAgICAgICAgICAgbGV0IG90aGVyTWF0Y2hDb3VudCA9IDA7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHBvdGVudGlhbE1hdGNoICE9IG51bGwpIHtcblxuICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGFuIGlkIG1hdGNoLCByZXR1cm4gdGhlIGN1cnJlbnQgcG90ZW50aWFsIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0lkU2V0TWF0Y2gobmV3Q2hpbGQsIHBvdGVudGlhbE1hdGNoLCBjdHgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcG90ZW50aWFsTWF0Y2g7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBjb21wdXRlciB0aGUgb3RoZXIgcG90ZW50aWFsIG1hdGNoZXMgb2YgdGhpcyBuZXcgY29udGVudFxuICAgICAgICAgICAgICAgICAgICBvdGhlck1hdGNoQ291bnQgKz0gZ2V0SWRJbnRlcnNlY3Rpb25Db3VudChjdHgsIHBvdGVudGlhbE1hdGNoLCBuZXdDb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG90aGVyTWF0Y2hDb3VudCA+IG5ld0NoaWxkUG90ZW50aWFsSWRDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UgaGF2ZSBtb3JlIHBvdGVudGlhbCBpZCBtYXRjaGVzIGluIF9vdGhlcl8gY29udGVudCwgd2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBoYXZlIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGFuIGlkIG1hdGNoLCBzbyByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBhZHZhbmNlZCB0byB0aGUgbmV4dCBvbGQgY29udGVudCBjaGlsZFxuICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWxNYXRjaCA9IHBvdGVudGlhbE1hdGNoLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwb3RlbnRpYWxNYXRjaDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgLy8gU2NhbnMgZm9yd2FyZCBmcm9tIHRoZSBpbnNlcnRpb25Qb2ludCBpbiB0aGUgb2xkIHBhcmVudCBsb29raW5nIGZvciBhIHBvdGVudGlhbCBzb2Z0IG1hdGNoXG4gICAgICAgIC8vIGZvciB0aGUgbmV3Q2hpbGQuICBXZSBzdG9wIGlmIHdlIGZpbmQgYSBwb3RlbnRpYWwgc29mdCBtYXRjaCBmb3IgdGhlIG5ldyBjaGlsZCBPUlxuICAgICAgICAvLyBpZiB3ZSBmaW5kIGEgcG90ZW50aWFsIGlkIG1hdGNoIGluIHRoZSBvbGQgcGFyZW50cyBjaGlsZHJlbiBPUiBpZiB3ZSBmaW5kIHR3b1xuICAgICAgICAvLyBwb3RlbnRpYWwgc29mdCBtYXRjaGVzIGZvciB0aGUgbmV4dCB0d28gcGllY2VzIG9mIG5ldyBjb250ZW50XG4gICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgZnVuY3Rpb24gZmluZFNvZnRNYXRjaChuZXdDb250ZW50LCBvbGRQYXJlbnQsIG5ld0NoaWxkLCBpbnNlcnRpb25Qb2ludCwgY3R4KSB7XG5cbiAgICAgICAgICAgIGxldCBwb3RlbnRpYWxTb2Z0TWF0Y2ggPSBpbnNlcnRpb25Qb2ludDtcbiAgICAgICAgICAgIGxldCBuZXh0U2libGluZyA9IG5ld0NoaWxkLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgbGV0IHNpYmxpbmdTb2Z0TWF0Y2hDb3VudCA9IDA7XG5cbiAgICAgICAgICAgIHdoaWxlIChwb3RlbnRpYWxTb2Z0TWF0Y2ggIT0gbnVsbCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKGdldElkSW50ZXJzZWN0aW9uQ291bnQoY3R4LCBwb3RlbnRpYWxTb2Z0TWF0Y2gsIG5ld0NvbnRlbnQpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgY3VycmVudCBwb3RlbnRpYWwgc29mdCBtYXRjaCBoYXMgYSBwb3RlbnRpYWwgaWQgc2V0IG1hdGNoIHdpdGggdGhlIHJlbWFpbmluZyBuZXdcbiAgICAgICAgICAgICAgICAgICAgLy8gY29udGVudCBzbyBiYWlsIG91dCBvZiBsb29raW5nXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGlmIHdlIGhhdmUgYSBzb2Z0IG1hdGNoIHdpdGggdGhlIGN1cnJlbnQgbm9kZSwgcmV0dXJuIGl0XG4gICAgICAgICAgICAgICAgaWYgKGlzU29mdE1hdGNoKG5ld0NoaWxkLCBwb3RlbnRpYWxTb2Z0TWF0Y2gpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwb3RlbnRpYWxTb2Z0TWF0Y2g7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzU29mdE1hdGNoKG5leHRTaWJsaW5nLCBwb3RlbnRpYWxTb2Z0TWF0Y2gpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBuZXh0IG5ldyBub2RlIGhhcyBhIHNvZnQgbWF0Y2ggd2l0aCB0aGlzIG5vZGUsIHNvXG4gICAgICAgICAgICAgICAgICAgIC8vIGluY3JlbWVudCB0aGUgY291bnQgb2YgZnV0dXJlIHNvZnQgbWF0Y2hlc1xuICAgICAgICAgICAgICAgICAgICBzaWJsaW5nU29mdE1hdGNoQ291bnQrKztcbiAgICAgICAgICAgICAgICAgICAgbmV4dFNpYmxpbmcgPSBuZXh0U2libGluZy5uZXh0U2libGluZztcblxuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgdHdvIGZ1dHVyZSBzb2Z0IG1hdGNoZXMsIGJhaWwgdG8gYWxsb3cgdGhlIHNpYmxpbmdzIHRvIHNvZnQgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgLy8gc28gdGhhdCB3ZSBkb24ndCBjb25zdW1lIGZ1dHVyZSBzb2Z0IG1hdGNoZXMgZm9yIHRoZSBzYWtlIG9mIHRoZSBjdXJyZW50IG5vZGVcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmdTb2Z0TWF0Y2hDb3VudCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGFkdmFuY2VkIHRvIHRoZSBuZXh0IG9sZCBjb250ZW50IGNoaWxkXG4gICAgICAgICAgICAgICAgcG90ZW50aWFsU29mdE1hdGNoID0gcG90ZW50aWFsU29mdE1hdGNoLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcG90ZW50aWFsU29mdE1hdGNoO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcGFyc2VDb250ZW50KG5ld0NvbnRlbnQpIHtcbiAgICAgICAgICAgIGxldCBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG5cbiAgICAgICAgICAgIC8vIHJlbW92ZSBzdmdzIHRvIGF2b2lkIGZhbHNlLXBvc2l0aXZlIG1hdGNoZXMgb24gaGVhZCwgZXRjLlxuICAgICAgICAgICAgbGV0IGNvbnRlbnRXaXRoU3Znc1JlbW92ZWQgPSBuZXdDb250ZW50LnJlcGxhY2UoLzxzdmcoXFxzW14+XSo+fD4pKFtcXHNcXFNdKj8pPFxcL3N2Zz4vZ2ltLCAnJyk7XG5cbiAgICAgICAgICAgIC8vIGlmIHRoZSBuZXdDb250ZW50IGNvbnRhaW5zIGEgaHRtbCwgaGVhZCBvciBib2R5IHRhZywgd2UgY2FuIHNpbXBseSBwYXJzZSBpdCB3L28gd3JhcHBpbmdcbiAgICAgICAgICAgIGlmIChjb250ZW50V2l0aFN2Z3NSZW1vdmVkLm1hdGNoKC88XFwvaHRtbD4vKSB8fCBjb250ZW50V2l0aFN2Z3NSZW1vdmVkLm1hdGNoKC88XFwvaGVhZD4vKSB8fCBjb250ZW50V2l0aFN2Z3NSZW1vdmVkLm1hdGNoKC88XFwvYm9keT4vKSkge1xuICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhuZXdDb250ZW50LCBcInRleHQvaHRtbFwiKTtcbiAgICAgICAgICAgICAgICAvLyBpZiBpdCBpcyBhIGZ1bGwgSFRNTCBkb2N1bWVudCwgcmV0dXJuIHRoZSBkb2N1bWVudCBpdHNlbGYgYXMgdGhlIHBhcmVudCBjb250YWluZXJcbiAgICAgICAgICAgICAgICBpZiAoY29udGVudFdpdGhTdmdzUmVtb3ZlZC5tYXRjaCgvPFxcL2h0bWw+LykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudC5nZW5lcmF0ZWRCeUlkaW9tb3JwaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSByZXR1cm4gdGhlIGh0bWwgZWxlbWVudCBhcyB0aGUgcGFyZW50IGNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbEVsZW1lbnQgPSBjb250ZW50LmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChodG1sRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbEVsZW1lbnQuZ2VuZXJhdGVkQnlJZGlvbW9ycGggPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGh0bWxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGlmIGl0IGlzIHBhcnRpYWwgSFRNTCwgd3JhcCBpdCBpbiBhIHRlbXBsYXRlIHRhZyB0byBwcm92aWRlIGEgcGFyZW50IGVsZW1lbnQgYW5kIGFsc28gdG8gaGVscFxuICAgICAgICAgICAgICAgIC8vIGRlYWwgd2l0aCB0b3VjaHkgdGFncyBsaWtlIHRyLCB0Ym9keSwgZXRjLlxuICAgICAgICAgICAgICAgIGxldCByZXNwb25zZURvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoXCI8Ym9keT48dGVtcGxhdGU+XCIgKyBuZXdDb250ZW50ICsgXCI8L3RlbXBsYXRlPjwvYm9keT5cIiwgXCJ0ZXh0L2h0bWxcIik7XG4gICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSByZXNwb25zZURvYy5ib2R5LnF1ZXJ5U2VsZWN0b3IoJ3RlbXBsYXRlJykuY29udGVudDtcbiAgICAgICAgICAgICAgICBjb250ZW50LmdlbmVyYXRlZEJ5SWRpb21vcnBoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbm9ybWFsaXplQ29udGVudChuZXdDb250ZW50KSB7XG4gICAgICAgICAgICBpZiAobmV3Q29udGVudCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gbm9pbnNwZWN0aW9uIFVubmVjZXNzYXJ5TG9jYWxWYXJpYWJsZUpTXG4gICAgICAgICAgICAgICAgY29uc3QgZHVtbXlQYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZHVtbXlQYXJlbnQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5ld0NvbnRlbnQuZ2VuZXJhdGVkQnlJZGlvbW9ycGgpIHtcbiAgICAgICAgICAgICAgICAvLyB0aGUgdGVtcGxhdGUgdGFnIGNyZWF0ZWQgYnkgaWRpb21vcnBoIHBhcnNpbmcgY2FuIHNlcnZlIGFzIGEgZHVtbXkgcGFyZW50XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld0NvbnRlbnQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5ld0NvbnRlbnQgaW5zdGFuY2VvZiBOb2RlKSB7XG4gICAgICAgICAgICAgICAgLy8gYSBzaW5nbGUgbm9kZSBpcyBhZGRlZCBhcyBhIGNoaWxkIHRvIGEgZHVtbXkgcGFyZW50XG4gICAgICAgICAgICAgICAgY29uc3QgZHVtbXlQYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICBkdW1teVBhcmVudC5hcHBlbmQobmV3Q29udGVudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGR1bW15UGFyZW50O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBhbGwgbm9kZXMgaW4gdGhlIGFycmF5IG9yIEhUTUxFbGVtZW50IGNvbGxlY3Rpb24gYXJlIGNvbnNvbGlkYXRlZCB1bmRlclxuICAgICAgICAgICAgICAgIC8vIGEgc2luZ2xlIGR1bW15IHBhcmVudCBlbGVtZW50XG4gICAgICAgICAgICAgICAgY29uc3QgZHVtbXlQYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGVsdCBvZiBbLi4ubmV3Q29udGVudF0pIHtcbiAgICAgICAgICAgICAgICAgICAgZHVtbXlQYXJlbnQuYXBwZW5kKGVsdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBkdW1teVBhcmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGluc2VydFNpYmxpbmdzKHByZXZpb3VzU2libGluZywgbW9ycGhlZE5vZGUsIG5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICBsZXQgc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIGxldCBhZGRlZCA9IFtdO1xuICAgICAgICAgICAgd2hpbGUgKHByZXZpb3VzU2libGluZyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc3RhY2sucHVzaChwcmV2aW91c1NpYmxpbmcpO1xuICAgICAgICAgICAgICAgIHByZXZpb3VzU2libGluZyA9IHByZXZpb3VzU2libGluZy5wcmV2aW91c1NpYmxpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxldCBub2RlID0gc3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgICAgYWRkZWQucHVzaChub2RlKTsgLy8gcHVzaCBhZGRlZCBwcmVjZWRpbmcgc2libGluZ3Mgb24gaW4gb3JkZXIgYW5kIGluc2VydFxuICAgICAgICAgICAgICAgIG1vcnBoZWROb2RlLnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIG1vcnBoZWROb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZGVkLnB1c2gobW9ycGhlZE5vZGUpO1xuICAgICAgICAgICAgd2hpbGUgKG5leHRTaWJsaW5nICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzdGFjay5wdXNoKG5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgICAgICBhZGRlZC5wdXNoKG5leHRTaWJsaW5nKTsgLy8gaGVyZSB3ZSBhcmUgZ29pbmcgaW4gb3JkZXIsIHNvIHB1c2ggb24gYXMgd2Ugc2NhbiwgcmF0aGVyIHRoYW4gYWRkXG4gICAgICAgICAgICAgICAgbmV4dFNpYmxpbmcgPSBuZXh0U2libGluZy5uZXh0U2libGluZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbW9ycGhlZE5vZGUucGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUoc3RhY2sucG9wKCksIG1vcnBoZWROb2RlLm5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhZGRlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGZpbmRCZXN0Tm9kZU1hdGNoKG5ld0NvbnRlbnQsIG9sZE5vZGUsIGN0eCkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRFbGVtZW50O1xuICAgICAgICAgICAgY3VycmVudEVsZW1lbnQgPSBuZXdDb250ZW50LmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgICBsZXQgYmVzdEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudDtcbiAgICAgICAgICAgIGxldCBzY29yZSA9IDA7XG4gICAgICAgICAgICB3aGlsZSAoY3VycmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3U2NvcmUgPSBzY29yZUVsZW1lbnQoY3VycmVudEVsZW1lbnQsIG9sZE5vZGUsIGN0eCk7XG4gICAgICAgICAgICAgICAgaWYgKG5ld1Njb3JlID4gc2NvcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgYmVzdEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgc2NvcmUgPSBuZXdTY29yZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5uZXh0U2libGluZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBiZXN0RWxlbWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHNjb3JlRWxlbWVudChub2RlMSwgbm9kZTIsIGN0eCkge1xuICAgICAgICAgICAgaWYgKGlzU29mdE1hdGNoKG5vZGUxLCBub2RlMikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gLjUgKyBnZXRJZEludGVyc2VjdGlvbkNvdW50KGN0eCwgbm9kZTEsIG5vZGUyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcmVtb3ZlTm9kZSh0ZW1wTm9kZSwgY3R4KSB7XG4gICAgICAgICAgICByZW1vdmVJZHNGcm9tQ29uc2lkZXJhdGlvbihjdHgsIHRlbXBOb2RlKTtcbiAgICAgICAgICAgIGlmIChjdHguY2FsbGJhY2tzLmJlZm9yZU5vZGVSZW1vdmVkKHRlbXBOb2RlKSA9PT0gZmFsc2UpIHJldHVybjtcblxuICAgICAgICAgICAgdGVtcE5vZGUucmVtb3ZlKCk7XG4gICAgICAgICAgICBjdHguY2FsbGJhY2tzLmFmdGVyTm9kZVJlbW92ZWQodGVtcE5vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAvLyBJRCBTZXQgRnVuY3Rpb25zXG4gICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgICAgICBmdW5jdGlvbiBpc0lkSW5Db25zaWRlcmF0aW9uKGN0eCwgaWQpIHtcbiAgICAgICAgICAgIHJldHVybiAhY3R4LmRlYWRJZHMuaGFzKGlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGlkSXNXaXRoaW5Ob2RlKGN0eCwgaWQsIHRhcmdldE5vZGUpIHtcbiAgICAgICAgICAgIGxldCBpZFNldCA9IGN0eC5pZE1hcC5nZXQodGFyZ2V0Tm9kZSkgfHwgRU1QVFlfU0VUO1xuICAgICAgICAgICAgcmV0dXJuIGlkU2V0LmhhcyhpZCk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiByZW1vdmVJZHNGcm9tQ29uc2lkZXJhdGlvbihjdHgsIG5vZGUpIHtcbiAgICAgICAgICAgIGxldCBpZFNldCA9IGN0eC5pZE1hcC5nZXQobm9kZSkgfHwgRU1QVFlfU0VUO1xuICAgICAgICAgICAgZm9yIChjb25zdCBpZCBvZiBpZFNldCkge1xuICAgICAgICAgICAgICAgIGN0eC5kZWFkSWRzLmFkZChpZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRJZEludGVyc2VjdGlvbkNvdW50KGN0eCwgbm9kZTEsIG5vZGUyKSB7XG4gICAgICAgICAgICBsZXQgc291cmNlU2V0ID0gY3R4LmlkTWFwLmdldChub2RlMSkgfHwgRU1QVFlfU0VUO1xuICAgICAgICAgICAgbGV0IG1hdGNoQ291bnQgPSAwO1xuICAgICAgICAgICAgZm9yIChjb25zdCBpZCBvZiBzb3VyY2VTZXQpIHtcbiAgICAgICAgICAgICAgICAvLyBhIHBvdGVudGlhbCBtYXRjaCBpcyBhbiBpZCBpbiB0aGUgc291cmNlIGFuZCBwb3RlbnRpYWxJZHNTZXQsIGJ1dFxuICAgICAgICAgICAgICAgIC8vIHRoYXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gbWVyZ2VkIGludG8gdGhlIERPTVxuICAgICAgICAgICAgICAgIGlmIChpc0lkSW5Db25zaWRlcmF0aW9uKGN0eCwgaWQpICYmIGlkSXNXaXRoaW5Ob2RlKGN0eCwgaWQsIG5vZGUyKSkge1xuICAgICAgICAgICAgICAgICAgICArK21hdGNoQ291bnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoQ291bnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogQSBib3R0b20gdXAgYWxnb3JpdGhtIHRoYXQgZmluZHMgYWxsIGVsZW1lbnRzIHdpdGggaWRzIGluc2lkZSBvZiB0aGUgbm9kZVxuICAgICAgICAgKiBhcmd1bWVudCBhbmQgcG9wdWxhdGVzIGlkIHNldHMgZm9yIHRob3NlIG5vZGVzIGFuZCBhbGwgdGhlaXIgcGFyZW50cywgZ2VuZXJhdGluZ1xuICAgICAgICAgKiBhIHNldCBvZiBpZHMgY29udGFpbmVkIHdpdGhpbiBhbGwgbm9kZXMgZm9yIHRoZSBlbnRpcmUgaGllcmFyY2h5IGluIHRoZSBET01cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIG5vZGUge0VsZW1lbnR9XG4gICAgICAgICAqIEBwYXJhbSB7TWFwPE5vZGUsIFNldDxTdHJpbmc+Pn0gaWRNYXBcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHBvcHVsYXRlSWRNYXBGb3JOb2RlKG5vZGUsIGlkTWFwKSB7XG4gICAgICAgICAgICBsZXQgbm9kZVBhcmVudCA9IG5vZGUucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgIC8vIGZpbmQgYWxsIGVsZW1lbnRzIHdpdGggYW4gaWQgcHJvcGVydHlcbiAgICAgICAgICAgIGxldCBpZEVsZW1lbnRzID0gbm9kZS5xdWVyeVNlbGVjdG9yQWxsKCdbaWRdJyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVsdCBvZiBpZEVsZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnQgPSBlbHQ7XG4gICAgICAgICAgICAgICAgLy8gd2FsayB1cCB0aGUgcGFyZW50IGhpZXJhcmNoeSBvZiB0aGF0IGVsZW1lbnQsIGFkZGluZyB0aGUgaWRcbiAgICAgICAgICAgICAgICAvLyBvZiBlbGVtZW50IHRvIHRoZSBwYXJlbnQncyBpZCBzZXRcbiAgICAgICAgICAgICAgICB3aGlsZSAoY3VycmVudCAhPT0gbm9kZVBhcmVudCAmJiBjdXJyZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGlkU2V0ID0gaWRNYXAuZ2V0KGN1cnJlbnQpO1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgaWQgc2V0IGRvZXNuJ3QgZXhpc3QsIGNyZWF0ZSBpdCBhbmQgaW5zZXJ0IGl0IGluIHRoZSAgbWFwXG4gICAgICAgICAgICAgICAgICAgIGlmIChpZFNldCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZFNldCA9IG5ldyBTZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkTWFwLnNldChjdXJyZW50LCBpZFNldCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWRTZXQuYWRkKGVsdC5pZCk7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoaXMgZnVuY3Rpb24gY29tcHV0ZXMgYSBtYXAgb2Ygbm9kZXMgdG8gYWxsIGlkcyBjb250YWluZWQgd2l0aGluIHRoYXQgbm9kZSAoaW5jbHVzaXZlIG9mIHRoZVxuICAgICAgICAgKiBub2RlKS4gIFRoaXMgbWFwIGNhbiBiZSB1c2VkIHRvIGFzayBpZiB0d28gbm9kZXMgaGF2ZSBpbnRlcnNlY3Rpbmcgc2V0cyBvZiBpZHMsIHdoaWNoIGFsbG93c1xuICAgICAgICAgKiBmb3IgYSBsb29zZXIgZGVmaW5pdGlvbiBvZiBcIm1hdGNoaW5nXCIgdGhhbiB0cmFkaXRpb24gaWQgbWF0Y2hpbmcsIGFuZCBhbGxvd3MgY2hpbGQgbm9kZXNcbiAgICAgICAgICogdG8gY29udHJpYnV0ZSB0byBhIHBhcmVudCBub2RlcyBtYXRjaGluZy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHtFbGVtZW50fSBvbGRDb250ZW50ICB0aGUgb2xkIGNvbnRlbnQgdGhhdCB3aWxsIGJlIG1vcnBoZWRcbiAgICAgICAgICogQHBhcmFtIHtFbGVtZW50fSBuZXdDb250ZW50ICB0aGUgbmV3IGNvbnRlbnQgdG8gbW9ycGggdG9cbiAgICAgICAgICogQHJldHVybnMge01hcDxOb2RlLCBTZXQ8U3RyaW5nPj59IGEgbWFwIG9mIG5vZGVzIHRvIGlkIHNldHMgZm9yIHRoZVxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gY3JlYXRlSWRNYXAob2xkQ29udGVudCwgbmV3Q29udGVudCkge1xuICAgICAgICAgICAgbGV0IGlkTWFwID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgcG9wdWxhdGVJZE1hcEZvck5vZGUob2xkQ29udGVudCwgaWRNYXApO1xuICAgICAgICAgICAgcG9wdWxhdGVJZE1hcEZvck5vZGUobmV3Q29udGVudCwgaWRNYXApO1xuICAgICAgICAgICAgcmV0dXJuIGlkTWFwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAvLyBUaGlzIGlzIHdoYXQgZW5kcyB1cCBiZWNvbWluZyB0aGUgSWRpb21vcnBoIGdsb2JhbCBvYmplY3RcbiAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbW9ycGgsXG4gICAgICAgICAgICBkZWZhdWx0c1xuICAgICAgICB9XG4gICAgfSkoKTtcblxuZnVuY3Rpb24gbm9ybWFsaXplQXR0cmlidXRlc0ZvckNvbXBhcmlzb24oZWxlbWVudCkge1xuICAgIGNvbnN0IGlzRmlsZUlucHV0ID0gZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZSc7XG4gICAgaWYgKCFpc0ZpbGVJbnB1dCkge1xuICAgICAgICBpZiAoJ3ZhbHVlJyBpbiBlbGVtZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgndmFsdWUnLCBlbGVtZW50LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgndmFsdWUnKSkge1xuICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJycpO1xuICAgICAgICB9XG4gICAgfVxuICAgIEFycmF5LmZyb20oZWxlbWVudC5jaGlsZHJlbikuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgbm9ybWFsaXplQXR0cmlidXRlc0ZvckNvbXBhcmlzb24oY2hpbGQpO1xuICAgIH0pO1xufVxuXG5jb25zdCBzeW5jQXR0cmlidXRlcyA9IChmcm9tRWwsIHRvRWwpID0+IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZyb21FbC5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGF0dHIgPSBmcm9tRWwuYXR0cmlidXRlc1tpXTtcbiAgICAgICAgdG9FbC5zZXRBdHRyaWJ1dGUoYXR0ci5uYW1lLCBhdHRyLnZhbHVlKTtcbiAgICB9XG59O1xuZnVuY3Rpb24gZXhlY3V0ZU1vcnBoZG9tKHJvb3RGcm9tRWxlbWVudCwgcm9vdFRvRWxlbWVudCwgbW9kaWZpZWRGaWVsZEVsZW1lbnRzLCBnZXRFbGVtZW50VmFsdWUsIGV4dGVybmFsTXV0YXRpb25UcmFja2VyKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxFbGVtZW50SWRzVG9Td2FwQWZ0ZXIgPSBbXTtcbiAgICBjb25zdCBvcmlnaW5hbEVsZW1lbnRzVG9QcmVzZXJ2ZSA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCBtYXJrRWxlbWVudEFzTmVlZGluZ1Bvc3RNb3JwaFN3YXAgPSAoaWQsIHJlcGxhY2VXaXRoQ2xvbmUpID0+IHtcbiAgICAgICAgY29uc3Qgb2xkRWxlbWVudCA9IG9yaWdpbmFsRWxlbWVudHNUb1ByZXNlcnZlLmdldChpZCk7XG4gICAgICAgIGlmICghKG9sZEVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgT3JpZ2luYWwgZWxlbWVudCB3aXRoIGlkICR7aWR9IG5vdCBmb3VuZGApO1xuICAgICAgICB9XG4gICAgICAgIG9yaWdpbmFsRWxlbWVudElkc1RvU3dhcEFmdGVyLnB1c2goaWQpO1xuICAgICAgICBpZiAoIXJlcGxhY2VXaXRoQ2xvbmUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsb25lZE9sZEVsZW1lbnQgPSBjbG9uZUhUTUxFbGVtZW50KG9sZEVsZW1lbnQpO1xuICAgICAgICBvbGRFbGVtZW50LnJlcGxhY2VXaXRoKGNsb25lZE9sZEVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gY2xvbmVkT2xkRWxlbWVudDtcbiAgICB9O1xuICAgIHJvb3RUb0VsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtbGl2ZS1wcmVzZXJ2ZV0nKS5mb3JFYWNoKChuZXdFbGVtZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gbmV3RWxlbWVudC5pZDtcbiAgICAgICAgaWYgKCFpZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZGF0YS1saXZlLXByZXNlcnZlIGF0dHJpYnV0ZSByZXF1aXJlcyBhbiBpZCBhdHRyaWJ1dGUgdG8gYmUgc2V0IG9uIHRoZSBlbGVtZW50Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb2xkRWxlbWVudCA9IHJvb3RGcm9tRWxlbWVudC5xdWVyeVNlbGVjdG9yKGAjJHtpZH1gKTtcbiAgICAgICAgaWYgKCEob2xkRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZWxlbWVudCB3aXRoIGlkIFwiJHtpZH1cIiB3YXMgbm90IGZvdW5kIGluIHRoZSBvcmlnaW5hbCBIVE1MYCk7XG4gICAgICAgIH1cbiAgICAgICAgbmV3RWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtbGl2ZS1wcmVzZXJ2ZScpO1xuICAgICAgICBvcmlnaW5hbEVsZW1lbnRzVG9QcmVzZXJ2ZS5zZXQoaWQsIG9sZEVsZW1lbnQpO1xuICAgICAgICBzeW5jQXR0cmlidXRlcyhuZXdFbGVtZW50LCBvbGRFbGVtZW50KTtcbiAgICB9KTtcbiAgICBJZGlvbW9ycGgubW9ycGgocm9vdEZyb21FbGVtZW50LCByb290VG9FbGVtZW50LCB7XG4gICAgICAgIGNhbGxiYWNrczoge1xuICAgICAgICAgICAgYmVmb3JlTm9kZU1vcnBoZWQ6IChmcm9tRWwsIHRvRWwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIShmcm9tRWwgaW5zdGFuY2VvZiBFbGVtZW50KSB8fCAhKHRvRWwgaW5zdGFuY2VvZiBFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZyb21FbCA9PT0gcm9vdEZyb21FbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZnJvbUVsLmlkICYmIG9yaWdpbmFsRWxlbWVudHNUb1ByZXNlcnZlLmhhcyhmcm9tRWwuaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmcm9tRWwuaWQgPT09IHRvRWwuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjbG9uZWRGcm9tRWwgPSBtYXJrRWxlbWVudEFzTmVlZGluZ1Bvc3RNb3JwaFN3YXAoZnJvbUVsLmlkLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjbG9uZWRGcm9tRWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBjbG9uZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIElkaW9tb3JwaC5tb3JwaChjbG9uZWRGcm9tRWwsIHRvRWwpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChmcm9tRWwgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiB0b0VsIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmcm9tRWwuX194ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF3aW5kb3cuQWxwaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gYWNjZXNzIEFscGluZS5qcyB0aG91Z2ggdGhlIGdsb2JhbCB3aW5kb3cuQWxwaW5lIHZhcmlhYmxlLiBQbGVhc2UgbWFrZSBzdXJlIEFscGluZS5qcyBpcyBsb2FkZWQgYmVmb3JlIFN5bWZvbnkgVVggTGl2ZUNvbXBvbmVudC4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93LkFscGluZS5tb3JwaCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGFjY2VzcyBBbHBpbmUuanMgbW9ycGggZnVuY3Rpb24uIFBsZWFzZSBtYWtlIHN1cmUgdGhlIEFscGluZS5qcyBNb3JwaCBwbHVnaW4gaXMgaW5zdGFsbGVkIGFuZCBsb2FkZWQsIHNlZSBodHRwczovL2FscGluZWpzLmRldi9wbHVnaW5zL21vcnBoIGZvciBtb3JlIGluZm9ybWF0aW9uLicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LkFscGluZS5tb3JwaChmcm9tRWwuX194LCB0b0VsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZXh0ZXJuYWxNdXRhdGlvblRyYWNrZXIud2FzRWxlbWVudEFkZGVkKGZyb21FbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb21FbC5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2FmdGVyZW5kJywgdG9FbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGlmaWVkRmllbGRFbGVtZW50cy5pbmNsdWRlcyhmcm9tRWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZU9uRWxlbWVudCh0b0VsLCBnZXRFbGVtZW50VmFsdWUoZnJvbUVsKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZyb21FbCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZnJvbUVsICE9PSBkb2N1bWVudC5ib2R5ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9PSBnZXRNb2RlbERpcmVjdGl2ZUZyb21FbGVtZW50KGZyb21FbCwgZmFsc2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZU9uRWxlbWVudCh0b0VsLCBnZXRFbGVtZW50VmFsdWUoZnJvbUVsKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudENoYW5nZXMgPSBleHRlcm5hbE11dGF0aW9uVHJhY2tlci5nZXRDaGFuZ2VkRWxlbWVudChmcm9tRWwpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRDaGFuZ2VzLmFwcGx5VG9FbGVtZW50KHRvRWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmcm9tRWwubm9kZU5hbWUudG9VcHBlckNhc2UoKSAhPT0gJ09QVElPTicgJiYgZnJvbUVsLmlzRXF1YWxOb2RlKHRvRWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkRnJvbUVsID0gY2xvbmVIVE1MRWxlbWVudChmcm9tRWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplQXR0cmlidXRlc0ZvckNvbXBhcmlzb24obm9ybWFsaXplZEZyb21FbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkVG9FbCA9IGNsb25lSFRNTEVsZW1lbnQodG9FbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVBdHRyaWJ1dGVzRm9yQ29tcGFyaXNvbihub3JtYWxpemVkVG9FbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9ybWFsaXplZEZyb21FbC5pc0VxdWFsTm9kZShub3JtYWxpemVkVG9FbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZyb21FbC5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2tpcC1tb3JwaCcpIHx8IChmcm9tRWwuaWQgJiYgZnJvbUVsLmlkICE9PSB0b0VsLmlkKSkge1xuICAgICAgICAgICAgICAgICAgICBmcm9tRWwuaW5uZXJIVE1MID0gdG9FbC5pbm5lckhUTUw7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZnJvbUVsLnBhcmVudEVsZW1lbnQ/Lmhhc0F0dHJpYnV0ZSgnZGF0YS1za2lwLW1vcnBoJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gIWZyb21FbC5oYXNBdHRyaWJ1dGUoJ2RhdGEtbGl2ZS1pZ25vcmUnKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBiZWZvcmVOb2RlUmVtb3ZlZChub2RlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCEobm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUuaWQgJiYgb3JpZ2luYWxFbGVtZW50c1RvUHJlc2VydmUuaGFzKG5vZGUuaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmtFbGVtZW50QXNOZWVkaW5nUG9zdE1vcnBoU3dhcChub2RlLmlkLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXh0ZXJuYWxNdXRhdGlvblRyYWNrZXIud2FzRWxlbWVudEFkZGVkKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuICFub2RlLmhhc0F0dHJpYnV0ZSgnZGF0YS1saXZlLWlnbm9yZScpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9KTtcbiAgICBvcmlnaW5hbEVsZW1lbnRJZHNUb1N3YXBBZnRlci5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdFbGVtZW50ID0gcm9vdEZyb21FbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke2lkfWApO1xuICAgICAgICBjb25zdCBvcmlnaW5hbEVsZW1lbnQgPSBvcmlnaW5hbEVsZW1lbnRzVG9QcmVzZXJ2ZS5nZXQoaWQpO1xuICAgICAgICBpZiAoIShuZXdFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHx8ICEob3JpZ2luYWxFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgZWxlbWVudHMuJyk7XG4gICAgICAgIH1cbiAgICAgICAgbmV3RWxlbWVudC5yZXBsYWNlV2l0aChvcmlnaW5hbEVsZW1lbnQpO1xuICAgIH0pO1xufVxuXG5jbGFzcyBVbnN5bmNlZElucHV0c1RyYWNrZXIge1xuICAgIGNvbnN0cnVjdG9yKGNvbXBvbmVudCwgbW9kZWxFbGVtZW50UmVzb2x2ZXIpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50RXZlbnRMaXN0ZW5lcnMgPSBbXG4gICAgICAgICAgICB7IGV2ZW50OiAnaW5wdXQnLCBjYWxsYmFjazogKGV2ZW50KSA9PiB0aGlzLmhhbmRsZUlucHV0RXZlbnQoZXZlbnQpIH0sXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLm1vZGVsRWxlbWVudFJlc29sdmVyID0gbW9kZWxFbGVtZW50UmVzb2x2ZXI7XG4gICAgICAgIHRoaXMudW5zeW5jZWRJbnB1dHMgPSBuZXcgVW5zeW5jZWRJbnB1dENvbnRhaW5lcigpO1xuICAgIH1cbiAgICBhY3RpdmF0ZSgpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50RXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgoeyBldmVudCwgY2FsbGJhY2sgfSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnQuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBjYWxsYmFjayk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBkZWFjdGl2YXRlKCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRFdmVudExpc3RlbmVycy5mb3JFYWNoKCh7IGV2ZW50LCBjYWxsYmFjayB9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudC5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGNhbGxiYWNrKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG1hcmtNb2RlbEFzU3luY2VkKG1vZGVsTmFtZSkge1xuICAgICAgICB0aGlzLnVuc3luY2VkSW5wdXRzLm1hcmtNb2RlbEFzU3luY2VkKG1vZGVsTmFtZSk7XG4gICAgfVxuICAgIGhhbmRsZUlucHV0RXZlbnQoZXZlbnQpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlTW9kZWxGcm9tRWxlbWVudCh0YXJnZXQpO1xuICAgIH1cbiAgICB1cGRhdGVNb2RlbEZyb21FbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgaWYgKCFlbGVtZW50QmVsb25nc1RvVGhpc0NvbXBvbmVudChlbGVtZW50LCB0aGlzLmNvbXBvbmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIShlbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCB1cGRhdGUgbW9kZWwgZm9yIG5vbiBIVE1MRWxlbWVudCcpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRoaXMubW9kZWxFbGVtZW50UmVzb2x2ZXIuZ2V0TW9kZWxOYW1lKGVsZW1lbnQpO1xuICAgICAgICB0aGlzLnVuc3luY2VkSW5wdXRzLmFkZChlbGVtZW50LCBtb2RlbE5hbWUpO1xuICAgIH1cbiAgICBnZXRVbnN5bmNlZElucHV0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5zeW5jZWRJbnB1dHMuYWxsVW5zeW5jZWRJbnB1dHMoKTtcbiAgICB9XG4gICAgZ2V0VW5zeW5jZWRNb2RlbHMoKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMudW5zeW5jZWRJbnB1dHMuZ2V0VW5zeW5jZWRNb2RlbE5hbWVzKCkpO1xuICAgIH1cbiAgICByZXNldFVuc3luY2VkRmllbGRzKCkge1xuICAgICAgICB0aGlzLnVuc3luY2VkSW5wdXRzLnJlc2V0VW5zeW5jZWRGaWVsZHMoKTtcbiAgICB9XG59XG5jbGFzcyBVbnN5bmNlZElucHV0Q29udGFpbmVyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy51bnN5bmNlZE5vbk1vZGVsRmllbGRzID0gW107XG4gICAgICAgIHRoaXMudW5zeW5jZWRNb2RlbE5hbWVzID0gW107XG4gICAgICAgIHRoaXMudW5zeW5jZWRNb2RlbEZpZWxkcyA9IG5ldyBNYXAoKTtcbiAgICB9XG4gICAgYWRkKGVsZW1lbnQsIG1vZGVsTmFtZSA9IG51bGwpIHtcbiAgICAgICAgaWYgKG1vZGVsTmFtZSkge1xuICAgICAgICAgICAgdGhpcy51bnN5bmNlZE1vZGVsRmllbGRzLnNldChtb2RlbE5hbWUsIGVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnVuc3luY2VkTW9kZWxOYW1lcy5pbmNsdWRlcyhtb2RlbE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51bnN5bmNlZE1vZGVsTmFtZXMucHVzaChtb2RlbE5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudW5zeW5jZWROb25Nb2RlbEZpZWxkcy5wdXNoKGVsZW1lbnQpO1xuICAgIH1cbiAgICByZXNldFVuc3luY2VkRmllbGRzKCkge1xuICAgICAgICB0aGlzLnVuc3luY2VkTW9kZWxGaWVsZHMuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnVuc3luY2VkTW9kZWxOYW1lcy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51bnN5bmNlZE1vZGVsRmllbGRzLmRlbGV0ZShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYWxsVW5zeW5jZWRJbnB1dHMoKSB7XG4gICAgICAgIHJldHVybiBbLi4udGhpcy51bnN5bmNlZE5vbk1vZGVsRmllbGRzLCAuLi50aGlzLnVuc3luY2VkTW9kZWxGaWVsZHMudmFsdWVzKCldO1xuICAgIH1cbiAgICBtYXJrTW9kZWxBc1N5bmNlZChtb2RlbE5hbWUpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnVuc3luY2VkTW9kZWxOYW1lcy5pbmRleE9mKG1vZGVsTmFtZSk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMudW5zeW5jZWRNb2RlbE5hbWVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0VW5zeW5jZWRNb2RlbE5hbWVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bnN5bmNlZE1vZGVsTmFtZXM7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBnZXREZWVwRGF0YShkYXRhLCBwcm9wZXJ0eVBhdGgpIHtcbiAgICBjb25zdCB7IGN1cnJlbnRMZXZlbERhdGEsIGZpbmFsS2V5IH0gPSBwYXJzZURlZXBEYXRhKGRhdGEsIHByb3BlcnR5UGF0aCk7XG4gICAgaWYgKGN1cnJlbnRMZXZlbERhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gY3VycmVudExldmVsRGF0YVtmaW5hbEtleV07XG59XG5jb25zdCBwYXJzZURlZXBEYXRhID0gKGRhdGEsIHByb3BlcnR5UGF0aCkgPT4ge1xuICAgIGNvbnN0IGZpbmFsRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgIGxldCBjdXJyZW50TGV2ZWxEYXRhID0gZmluYWxEYXRhO1xuICAgIGNvbnN0IHBhcnRzID0gcHJvcGVydHlQYXRoLnNwbGl0KCcuJyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgY3VycmVudExldmVsRGF0YSA9IGN1cnJlbnRMZXZlbERhdGFbcGFydHNbaV1dO1xuICAgIH1cbiAgICBjb25zdCBmaW5hbEtleSA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xuICAgIHJldHVybiB7XG4gICAgICAgIGN1cnJlbnRMZXZlbERhdGEsXG4gICAgICAgIGZpbmFsRGF0YSxcbiAgICAgICAgZmluYWxLZXksXG4gICAgICAgIHBhcnRzLFxuICAgIH07XG59O1xuXG5jbGFzcyBWYWx1ZVN0b3JlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICB0aGlzLnByb3BzID0ge307XG4gICAgICAgIHRoaXMuZGlydHlQcm9wcyA9IHt9O1xuICAgICAgICB0aGlzLnBlbmRpbmdQcm9wcyA9IHt9O1xuICAgICAgICB0aGlzLnVwZGF0ZWRQcm9wc0Zyb21QYXJlbnQgPSB7fTtcbiAgICAgICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZU1vZGVsTmFtZShuYW1lKTtcbiAgICAgICAgaWYgKHRoaXMuZGlydHlQcm9wc1tub3JtYWxpemVkTmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlydHlQcm9wc1tub3JtYWxpemVkTmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ1Byb3BzW25vcm1hbGl6ZWROYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nUHJvcHNbbm9ybWFsaXplZE5hbWVdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnByb3BzW25vcm1hbGl6ZWROYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9wc1tub3JtYWxpemVkTmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldERlZXBEYXRhKHRoaXMucHJvcHMsIG5vcm1hbGl6ZWROYW1lKTtcbiAgICB9XG4gICAgaGFzKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KG5hbWUpICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHNldChuYW1lLCB2YWx1ZSkge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZU1vZGVsTmFtZShuYW1lKTtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KG5vcm1hbGl6ZWROYW1lKSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpcnR5UHJvcHNbbm9ybWFsaXplZE5hbWVdID0gdmFsdWU7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBnZXRPcmlnaW5hbFByb3BzKCkge1xuICAgICAgICByZXR1cm4geyAuLi50aGlzLnByb3BzIH07XG4gICAgfVxuICAgIGdldERpcnR5UHJvcHMoKSB7XG4gICAgICAgIHJldHVybiB7IC4uLnRoaXMuZGlydHlQcm9wcyB9O1xuICAgIH1cbiAgICBnZXRVcGRhdGVkUHJvcHNGcm9tUGFyZW50KCkge1xuICAgICAgICByZXR1cm4geyAuLi50aGlzLnVwZGF0ZWRQcm9wc0Zyb21QYXJlbnQgfTtcbiAgICB9XG4gICAgZmx1c2hEaXJ0eVByb3BzVG9QZW5kaW5nKCkge1xuICAgICAgICB0aGlzLnBlbmRpbmdQcm9wcyA9IHsgLi4udGhpcy5kaXJ0eVByb3BzIH07XG4gICAgICAgIHRoaXMuZGlydHlQcm9wcyA9IHt9O1xuICAgIH1cbiAgICByZWluaXRpYWxpemVBbGxQcm9wcyhwcm9wcykge1xuICAgICAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgICAgIHRoaXMudXBkYXRlZFByb3BzRnJvbVBhcmVudCA9IHt9O1xuICAgICAgICB0aGlzLnBlbmRpbmdQcm9wcyA9IHt9O1xuICAgIH1cbiAgICBwdXNoUGVuZGluZ1Byb3BzQmFja1RvRGlydHkoKSB7XG4gICAgICAgIHRoaXMuZGlydHlQcm9wcyA9IHsgLi4udGhpcy5wZW5kaW5nUHJvcHMsIC4uLnRoaXMuZGlydHlQcm9wcyB9O1xuICAgICAgICB0aGlzLnBlbmRpbmdQcm9wcyA9IHt9O1xuICAgIH1cbiAgICBzdG9yZU5ld1Byb3BzRnJvbVBhcmVudChwcm9wcykge1xuICAgICAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9wcykpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuZ2V0KGtleSk7XG4gICAgICAgICAgICBpZiAoY3VycmVudFZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZWRQcm9wc0Zyb21QYXJlbnQgPSBwcm9wcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2hhbmdlZDtcbiAgICB9XG59XG5cbmNsYXNzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoZWxlbWVudCwgbmFtZSwgcHJvcHMsIGxpc3RlbmVycywgaWQsIGJhY2tlbmQsIGVsZW1lbnREcml2ZXIpIHtcbiAgICAgICAgdGhpcy5maW5nZXJwcmludCA9ICcnO1xuICAgICAgICB0aGlzLmRlZmF1bHREZWJvdW5jZSA9IDE1MDtcbiAgICAgICAgdGhpcy5iYWNrZW5kUmVxdWVzdCA9IG51bGw7XG4gICAgICAgIHRoaXMucGVuZGluZ0FjdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5wZW5kaW5nRmlsZXMgPSB7fTtcbiAgICAgICAgdGhpcy5pc1JlcXVlc3RQZW5kaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVxdWVzdERlYm91bmNlVGltZW91dCA9IG51bGw7XG4gICAgICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuYmFja2VuZCA9IGJhY2tlbmQ7XG4gICAgICAgIHRoaXMuZWxlbWVudERyaXZlciA9IGVsZW1lbnREcml2ZXI7XG4gICAgICAgIHRoaXMuaWQgPSBpZDtcbiAgICAgICAgdGhpcy5saXN0ZW5lcnMgPSBuZXcgTWFwKCk7XG4gICAgICAgIGxpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmxpc3RlbmVycy5oYXMobGlzdGVuZXIuZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMuc2V0KGxpc3RlbmVyLmV2ZW50LCBbXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxpc3RlbmVycy5nZXQobGlzdGVuZXIuZXZlbnQpPy5wdXNoKGxpc3RlbmVyLmFjdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnZhbHVlU3RvcmUgPSBuZXcgVmFsdWVTdG9yZShwcm9wcyk7XG4gICAgICAgIHRoaXMudW5zeW5jZWRJbnB1dHNUcmFja2VyID0gbmV3IFVuc3luY2VkSW5wdXRzVHJhY2tlcih0aGlzLCBlbGVtZW50RHJpdmVyKTtcbiAgICAgICAgdGhpcy5ob29rcyA9IG5ldyBIb29rTWFuYWdlcigpO1xuICAgICAgICB0aGlzLnJlc2V0UHJvbWlzZSgpO1xuICAgICAgICB0aGlzLmV4dGVybmFsTXV0YXRpb25UcmFja2VyID0gbmV3IEV4dGVybmFsTXV0YXRpb25UcmFja2VyKHRoaXMuZWxlbWVudCwgKGVsZW1lbnQpID0+IGVsZW1lbnRCZWxvbmdzVG9UaGlzQ29tcG9uZW50KGVsZW1lbnQsIHRoaXMpKTtcbiAgICAgICAgdGhpcy5leHRlcm5hbE11dGF0aW9uVHJhY2tlci5zdGFydCgpO1xuICAgIH1cbiAgICBhZGRQbHVnaW4ocGx1Z2luKSB7XG4gICAgICAgIHBsdWdpbi5hdHRhY2hUb0NvbXBvbmVudCh0aGlzKTtcbiAgICB9XG4gICAgY29ubmVjdCgpIHtcbiAgICAgICAgcmVnaXN0ZXJDb21wb25lbnQodGhpcyk7XG4gICAgICAgIHRoaXMuaG9va3MudHJpZ2dlckhvb2soJ2Nvbm5lY3QnLCB0aGlzKTtcbiAgICAgICAgdGhpcy51bnN5bmNlZElucHV0c1RyYWNrZXIuYWN0aXZhdGUoKTtcbiAgICAgICAgdGhpcy5leHRlcm5hbE11dGF0aW9uVHJhY2tlci5zdGFydCgpO1xuICAgIH1cbiAgICBkaXNjb25uZWN0KCkge1xuICAgICAgICB1bnJlZ2lzdGVyQ29tcG9uZW50KHRoaXMpO1xuICAgICAgICB0aGlzLmhvb2tzLnRyaWdnZXJIb29rKCdkaXNjb25uZWN0JywgdGhpcyk7XG4gICAgICAgIHRoaXMuY2xlYXJSZXF1ZXN0RGVib3VuY2VUaW1lb3V0KCk7XG4gICAgICAgIHRoaXMudW5zeW5jZWRJbnB1dHNUcmFja2VyLmRlYWN0aXZhdGUoKTtcbiAgICAgICAgdGhpcy5leHRlcm5hbE11dGF0aW9uVHJhY2tlci5zdG9wKCk7XG4gICAgfVxuICAgIG9uKGhvb2tOYW1lLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLmhvb2tzLnJlZ2lzdGVyKGhvb2tOYW1lLCBjYWxsYmFjayk7XG4gICAgfVxuICAgIG9mZihob29rTmFtZSwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5ob29rcy51bnJlZ2lzdGVyKGhvb2tOYW1lLCBjYWxsYmFjayk7XG4gICAgfVxuICAgIHNldChtb2RlbCwgdmFsdWUsIHJlUmVuZGVyID0gZmFsc2UsIGRlYm91bmNlID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMubmV4dFJlcXVlc3RQcm9taXNlO1xuICAgICAgICBjb25zdCBtb2RlbE5hbWUgPSBub3JtYWxpemVNb2RlbE5hbWUobW9kZWwpO1xuICAgICAgICBpZiAoIXRoaXMudmFsdWVTdG9yZS5oYXMobW9kZWxOYW1lKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG1vZGVsIG5hbWUgXCIke21vZGVsfVwiLmApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzQ2hhbmdlZCA9IHRoaXMudmFsdWVTdG9yZS5zZXQobW9kZWxOYW1lLCB2YWx1ZSk7XG4gICAgICAgIHRoaXMuaG9va3MudHJpZ2dlckhvb2soJ21vZGVsOnNldCcsIG1vZGVsLCB2YWx1ZSwgdGhpcyk7XG4gICAgICAgIHRoaXMudW5zeW5jZWRJbnB1dHNUcmFja2VyLm1hcmtNb2RlbEFzU3luY2VkKG1vZGVsTmFtZSk7XG4gICAgICAgIGlmIChyZVJlbmRlciAmJiBpc0NoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZGVib3VuY2VkU3RhcnRSZXF1ZXN0KGRlYm91bmNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG4gICAgZ2V0RGF0YShtb2RlbCkge1xuICAgICAgICBjb25zdCBtb2RlbE5hbWUgPSBub3JtYWxpemVNb2RlbE5hbWUobW9kZWwpO1xuICAgICAgICBpZiAoIXRoaXMudmFsdWVTdG9yZS5oYXMobW9kZWxOYW1lKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG1vZGVsIFwiJHttb2RlbH1cIi5gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZVN0b3JlLmdldChtb2RlbE5hbWUpO1xuICAgIH1cbiAgICBhY3Rpb24obmFtZSwgYXJncyA9IHt9LCBkZWJvdW5jZSA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLm5leHRSZXF1ZXN0UHJvbWlzZTtcbiAgICAgICAgdGhpcy5wZW5kaW5nQWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBhcmdzLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kZWJvdW5jZWRTdGFydFJlcXVlc3QoZGVib3VuY2UpO1xuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG4gICAgZmlsZXMoa2V5LCBpbnB1dCkge1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc1trZXldID0gaW5wdXQ7XG4gICAgfVxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMubmV4dFJlcXVlc3RQcm9taXNlO1xuICAgICAgICB0aGlzLnRyeVN0YXJ0aW5nUmVxdWVzdCgpO1xuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG4gICAgZ2V0VW5zeW5jZWRNb2RlbHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuc3luY2VkSW5wdXRzVHJhY2tlci5nZXRVbnN5bmNlZE1vZGVscygpO1xuICAgIH1cbiAgICBlbWl0KG5hbWUsIGRhdGEsIG9ubHlNYXRjaGluZ0NvbXBvbmVudHNOYW1lZCA9IG51bGwpIHtcbiAgICAgICAgdGhpcy5wZXJmb3JtRW1pdChuYW1lLCBkYXRhLCBmYWxzZSwgb25seU1hdGNoaW5nQ29tcG9uZW50c05hbWVkKTtcbiAgICB9XG4gICAgZW1pdFVwKG5hbWUsIGRhdGEsIG9ubHlNYXRjaGluZ0NvbXBvbmVudHNOYW1lZCA9IG51bGwpIHtcbiAgICAgICAgdGhpcy5wZXJmb3JtRW1pdChuYW1lLCBkYXRhLCB0cnVlLCBvbmx5TWF0Y2hpbmdDb21wb25lbnRzTmFtZWQpO1xuICAgIH1cbiAgICBlbWl0U2VsZihuYW1lLCBkYXRhKSB7XG4gICAgICAgIHRoaXMuZG9FbWl0KG5hbWUsIGRhdGEpO1xuICAgIH1cbiAgICBwZXJmb3JtRW1pdChuYW1lLCBkYXRhLCBlbWl0VXAsIG1hdGNoaW5nTmFtZSkge1xuICAgICAgICBjb25zdCBjb21wb25lbnRzID0gZmluZENvbXBvbmVudHModGhpcywgZW1pdFVwLCBtYXRjaGluZ05hbWUpO1xuICAgICAgICBjb21wb25lbnRzLmZvckVhY2goKGNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgY29tcG9uZW50LmRvRW1pdChuYW1lLCBkYXRhKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGRvRW1pdChuYW1lLCBkYXRhKSB7XG4gICAgICAgIGlmICghdGhpcy5saXN0ZW5lcnMuaGFzKG5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0aW9ucyA9IHRoaXMubGlzdGVuZXJzLmdldChuYW1lKSB8fCBbXTtcbiAgICAgICAgYWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWN0aW9uKGFjdGlvbiwgZGF0YSwgMSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpc1R1cmJvRW5hYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBUdXJibyAhPT0gJ3VuZGVmaW5lZCcgJiYgIXRoaXMuZWxlbWVudC5jbG9zZXN0KCdbZGF0YS10dXJibz1cImZhbHNlXCJdJyk7XG4gICAgfVxuICAgIHRyeVN0YXJ0aW5nUmVxdWVzdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmJhY2tlbmRSZXF1ZXN0KSB7XG4gICAgICAgICAgICB0aGlzLnBlcmZvcm1SZXF1ZXN0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc1JlcXVlc3RQZW5kaW5nID0gdHJ1ZTtcbiAgICB9XG4gICAgcGVyZm9ybVJlcXVlc3QoKSB7XG4gICAgICAgIGNvbnN0IHRoaXNQcm9taXNlUmVzb2x2ZSA9IHRoaXMubmV4dFJlcXVlc3RQcm9taXNlUmVzb2x2ZTtcbiAgICAgICAgdGhpcy5yZXNldFByb21pc2UoKTtcbiAgICAgICAgdGhpcy51bnN5bmNlZElucHV0c1RyYWNrZXIucmVzZXRVbnN5bmNlZEZpZWxkcygpO1xuICAgICAgICBjb25zdCBmaWxlc1RvU2VuZCA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnBlbmRpbmdGaWxlcykpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5maWxlcykge1xuICAgICAgICAgICAgICAgIGZpbGVzVG9TZW5kW2tleV0gPSB2YWx1ZS5maWxlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXF1ZXN0Q29uZmlnID0ge1xuICAgICAgICAgICAgcHJvcHM6IHRoaXMudmFsdWVTdG9yZS5nZXRPcmlnaW5hbFByb3BzKCksXG4gICAgICAgICAgICBhY3Rpb25zOiB0aGlzLnBlbmRpbmdBY3Rpb25zLFxuICAgICAgICAgICAgdXBkYXRlZDogdGhpcy52YWx1ZVN0b3JlLmdldERpcnR5UHJvcHMoKSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiB7fSxcbiAgICAgICAgICAgIHVwZGF0ZWRQcm9wc0Zyb21QYXJlbnQ6IHRoaXMudmFsdWVTdG9yZS5nZXRVcGRhdGVkUHJvcHNGcm9tUGFyZW50KCksXG4gICAgICAgICAgICBmaWxlczogZmlsZXNUb1NlbmQsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaG9va3MudHJpZ2dlckhvb2soJ3JlcXVlc3Q6c3RhcnRlZCcsIHJlcXVlc3RDb25maWcpO1xuICAgICAgICB0aGlzLmJhY2tlbmRSZXF1ZXN0ID0gdGhpcy5iYWNrZW5kLm1ha2VSZXF1ZXN0KHJlcXVlc3RDb25maWcucHJvcHMsIHJlcXVlc3RDb25maWcuYWN0aW9ucywgcmVxdWVzdENvbmZpZy51cGRhdGVkLCByZXF1ZXN0Q29uZmlnLmNoaWxkcmVuLCByZXF1ZXN0Q29uZmlnLnVwZGF0ZWRQcm9wc0Zyb21QYXJlbnQsIHJlcXVlc3RDb25maWcuZmlsZXMpO1xuICAgICAgICB0aGlzLmhvb2tzLnRyaWdnZXJIb29rKCdsb2FkaW5nLnN0YXRlOnN0YXJ0ZWQnLCB0aGlzLmVsZW1lbnQsIHRoaXMuYmFja2VuZFJlcXVlc3QpO1xuICAgICAgICB0aGlzLnBlbmRpbmdBY3Rpb25zID0gW107XG4gICAgICAgIHRoaXMudmFsdWVTdG9yZS5mbHVzaERpcnR5UHJvcHNUb1BlbmRpbmcoKTtcbiAgICAgICAgdGhpcy5pc1JlcXVlc3RQZW5kaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYmFja2VuZFJlcXVlc3QucHJvbWlzZS50aGVuKGFzeW5jIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmFja2VuZFJlc3BvbnNlID0gbmV3IEJhY2tlbmRSZXNwb25zZShyZXNwb25zZSk7XG4gICAgICAgICAgICBjb25zdCBodG1sID0gYXdhaXQgYmFja2VuZFJlc3BvbnNlLmdldEJvZHkoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaW5wdXQgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLnBlbmRpbmdGaWxlcykpIHtcbiAgICAgICAgICAgICAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaGVhZGVycyA9IGJhY2tlbmRSZXNwb25zZS5yZXNwb25zZS5oZWFkZXJzO1xuICAgICAgICAgICAgaWYgKCFoZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJyk/LmluY2x1ZGVzKCdhcHBsaWNhdGlvbi92bmQubGl2ZS1jb21wb25lbnQraHRtbCcpICYmXG4gICAgICAgICAgICAgICAgIWhlYWRlcnMuZ2V0KCdYLUxpdmUtUmVkaXJlY3QnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xzID0geyBkaXNwbGF5RXJyb3I6IHRydWUgfTtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlU3RvcmUucHVzaFBlbmRpbmdQcm9wc0JhY2tUb0RpcnR5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ob29rcy50cmlnZ2VySG9vaygncmVzcG9uc2U6ZXJyb3InLCBiYWNrZW5kUmVzcG9uc2UsIGNvbnRyb2xzKTtcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbHMuZGlzcGxheUVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyRXJyb3IoaHRtbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuYmFja2VuZFJlcXVlc3QgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXNQcm9taXNlUmVzb2x2ZShiYWNrZW5kUmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc1JlcmVuZGVyKGh0bWwsIGJhY2tlbmRSZXNwb25zZSk7XG4gICAgICAgICAgICB0aGlzLmJhY2tlbmRSZXF1ZXN0ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXNQcm9taXNlUmVzb2x2ZShiYWNrZW5kUmVzcG9uc2UpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNSZXF1ZXN0UGVuZGluZykge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNSZXF1ZXN0UGVuZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMucGVyZm9ybVJlcXVlc3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByb2Nlc3NSZXJlbmRlcihodG1sLCBiYWNrZW5kUmVzcG9uc2UpIHtcbiAgICAgICAgY29uc3QgY29udHJvbHMgPSB7IHNob3VsZFJlbmRlcjogdHJ1ZSB9O1xuICAgICAgICB0aGlzLmhvb2tzLnRyaWdnZXJIb29rKCdyZW5kZXI6c3RhcnRlZCcsIGh0bWwsIGJhY2tlbmRSZXNwb25zZSwgY29udHJvbHMpO1xuICAgICAgICBpZiAoIWNvbnRyb2xzLnNob3VsZFJlbmRlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiYWNrZW5kUmVzcG9uc2UucmVzcG9uc2UuaGVhZGVycy5nZXQoJ0xvY2F0aW9uJykpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVHVyYm9FbmFibGVkKCkpIHtcbiAgICAgICAgICAgICAgICBUdXJiby52aXNpdChiYWNrZW5kUmVzcG9uc2UucmVzcG9uc2UuaGVhZGVycy5nZXQoJ0xvY2F0aW9uJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBiYWNrZW5kUmVzcG9uc2UucmVzcG9uc2UuaGVhZGVycy5nZXQoJ0xvY2F0aW9uJykgfHwgJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ob29rcy50cmlnZ2VySG9vaygnbG9hZGluZy5zdGF0ZTpmaW5pc2hlZCcsIHRoaXMuZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IG1vZGlmaWVkTW9kZWxWYWx1ZXMgPSB7fTtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy52YWx1ZVN0b3JlLmdldERpcnR5UHJvcHMoKSkuZm9yRWFjaCgobW9kZWxOYW1lKSA9PiB7XG4gICAgICAgICAgICBtb2RpZmllZE1vZGVsVmFsdWVzW21vZGVsTmFtZV0gPSB0aGlzLnZhbHVlU3RvcmUuZ2V0KG1vZGVsTmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgbmV3RWxlbWVudDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG5ld0VsZW1lbnQgPSBodG1sVG9FbGVtZW50KGh0bWwpO1xuICAgICAgICAgICAgaWYgKCFuZXdFbGVtZW50Lm1hdGNoZXMoJ1tkYXRhLWNvbnRyb2xsZXJ+PWxpdmVdJykpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0EgbGl2ZSBjb21wb25lbnQgdGVtcGxhdGUgbXVzdCBjb250YWluIGEgc2luZ2xlIHJvb3QgY29udHJvbGxlciBlbGVtZW50LicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVGhlcmUgd2FzIGEgcHJvYmxlbSB3aXRoIHRoZSAnJHt0aGlzLm5hbWV9JyBjb21wb25lbnQgSFRNTCByZXR1cm5lZDpgLCB7XG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXh0ZXJuYWxNdXRhdGlvblRyYWNrZXIuaGFuZGxlUGVuZGluZ0NoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5leHRlcm5hbE11dGF0aW9uVHJhY2tlci5zdG9wKCk7XG4gICAgICAgIGV4ZWN1dGVNb3JwaGRvbSh0aGlzLmVsZW1lbnQsIG5ld0VsZW1lbnQsIHRoaXMudW5zeW5jZWRJbnB1dHNUcmFja2VyLmdldFVuc3luY2VkSW5wdXRzKCksIChlbGVtZW50KSA9PiBnZXRWYWx1ZUZyb21FbGVtZW50KGVsZW1lbnQsIHRoaXMudmFsdWVTdG9yZSksIHRoaXMuZXh0ZXJuYWxNdXRhdGlvblRyYWNrZXIpO1xuICAgICAgICB0aGlzLmV4dGVybmFsTXV0YXRpb25UcmFja2VyLnN0YXJ0KCk7XG4gICAgICAgIGNvbnN0IG5ld1Byb3BzID0gdGhpcy5lbGVtZW50RHJpdmVyLmdldENvbXBvbmVudFByb3BzKCk7XG4gICAgICAgIHRoaXMudmFsdWVTdG9yZS5yZWluaXRpYWxpemVBbGxQcm9wcyhuZXdQcm9wcyk7XG4gICAgICAgIGNvbnN0IGV2ZW50c1RvRW1pdCA9IHRoaXMuZWxlbWVudERyaXZlci5nZXRFdmVudHNUb0VtaXQoKTtcbiAgICAgICAgY29uc3QgYnJvd3NlckV2ZW50c1RvRGlzcGF0Y2ggPSB0aGlzLmVsZW1lbnREcml2ZXIuZ2V0QnJvd3NlckV2ZW50c1RvRGlzcGF0Y2goKTtcbiAgICAgICAgT2JqZWN0LmtleXMobW9kaWZpZWRNb2RlbFZhbHVlcykuZm9yRWFjaCgobW9kZWxOYW1lKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlU3RvcmUuc2V0KG1vZGVsTmFtZSwgbW9kaWZpZWRNb2RlbFZhbHVlc1ttb2RlbE5hbWVdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGV2ZW50c1RvRW1pdC5mb3JFYWNoKCh7IGV2ZW50LCBkYXRhLCB0YXJnZXQsIGNvbXBvbmVudE5hbWUgfSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRhcmdldCA9PT0gJ3VwJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdFVwKGV2ZW50LCBkYXRhLCBjb21wb25lbnROYW1lKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGFyZ2V0ID09PSAnc2VsZicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRTZWxmKGV2ZW50LCBkYXRhKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmVtaXQoZXZlbnQsIGRhdGEsIGNvbXBvbmVudE5hbWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJvd3NlckV2ZW50c1RvRGlzcGF0Y2guZm9yRWFjaCgoeyBldmVudCwgcGF5bG9hZCB9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoZXZlbnQsIHtcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHBheWxvYWQsXG4gICAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaG9va3MudHJpZ2dlckhvb2soJ3JlbmRlcjpmaW5pc2hlZCcsIHRoaXMpO1xuICAgIH1cbiAgICBjYWxjdWxhdGVEZWJvdW5jZShkZWJvdW5jZSkge1xuICAgICAgICBpZiAoZGVib3VuY2UgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHREZWJvdW5jZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVib3VuY2UgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVib3VuY2U7XG4gICAgfVxuICAgIGNsZWFyUmVxdWVzdERlYm91bmNlVGltZW91dCgpIHtcbiAgICAgICAgaWYgKHRoaXMucmVxdWVzdERlYm91bmNlVGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVxdWVzdERlYm91bmNlVGltZW91dCk7XG4gICAgICAgICAgICB0aGlzLnJlcXVlc3REZWJvdW5jZVRpbWVvdXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGRlYm91bmNlZFN0YXJ0UmVxdWVzdChkZWJvdW5jZSkge1xuICAgICAgICB0aGlzLmNsZWFyUmVxdWVzdERlYm91bmNlVGltZW91dCgpO1xuICAgICAgICB0aGlzLnJlcXVlc3REZWJvdW5jZVRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9LCB0aGlzLmNhbGN1bGF0ZURlYm91bmNlKGRlYm91bmNlKSk7XG4gICAgfVxuICAgIHJlbmRlckVycm9yKGh0bWwpIHtcbiAgICAgICAgbGV0IG1vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpdmUtY29tcG9uZW50LWVycm9yJyk7XG4gICAgICAgIGlmIChtb2RhbCkge1xuICAgICAgICAgICAgbW9kYWwuaW5uZXJIVE1MID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBtb2RhbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgbW9kYWwuaWQgPSAnbGl2ZS1jb21wb25lbnQtZXJyb3InO1xuICAgICAgICAgICAgbW9kYWwuc3R5bGUucGFkZGluZyA9ICc1MHB4JztcbiAgICAgICAgICAgIG1vZGFsLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdyZ2JhKDAsIDAsIDAsIC41KSc7XG4gICAgICAgICAgICBtb2RhbC5zdHlsZS56SW5kZXggPSAnMTAwMDAwJztcbiAgICAgICAgICAgIG1vZGFsLnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJztcbiAgICAgICAgICAgIG1vZGFsLnN0eWxlLnRvcCA9ICcwcHgnO1xuICAgICAgICAgICAgbW9kYWwuc3R5bGUuYm90dG9tID0gJzBweCc7XG4gICAgICAgICAgICBtb2RhbC5zdHlsZS5sZWZ0ID0gJzBweCc7XG4gICAgICAgICAgICBtb2RhbC5zdHlsZS5yaWdodCA9ICcwcHgnO1xuICAgICAgICAgICAgbW9kYWwuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICAgICAgICAgIG1vZGFsLnN0eWxlLmZsZXhEaXJlY3Rpb24gPSAnY29sdW1uJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgICAgICAgaWZyYW1lLnN0eWxlLmJvcmRlclJhZGl1cyA9ICc1cHgnO1xuICAgICAgICBpZnJhbWUuc3R5bGUuZmxleEdyb3cgPSAnMSc7XG4gICAgICAgIG1vZGFsLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucHJlcGVuZChtb2RhbCk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgaWYgKGlmcmFtZS5jb250ZW50V2luZG93KSB7XG4gICAgICAgICAgICBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudC5vcGVuKCk7XG4gICAgICAgICAgICBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudC53cml0ZShodG1sKTtcbiAgICAgICAgICAgIGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2xvc2VNb2RhbCA9IChtb2RhbCkgPT4ge1xuICAgICAgICAgICAgaWYgKG1vZGFsKSB7XG4gICAgICAgICAgICAgICAgbW9kYWwub3V0ZXJIVE1MID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ3Zpc2libGUnO1xuICAgICAgICB9O1xuICAgICAgICBtb2RhbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IGNsb3NlTW9kYWwobW9kYWwpKTtcbiAgICAgICAgbW9kYWwuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG4gICAgICAgIG1vZGFsLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICAgICAgICAgIGNsb3NlTW9kYWwobW9kYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgbW9kYWwuZm9jdXMoKTtcbiAgICB9XG4gICAgcmVzZXRQcm9taXNlKCkge1xuICAgICAgICB0aGlzLm5leHRSZXF1ZXN0UHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5leHRSZXF1ZXN0UHJvbWlzZVJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX3VwZGF0ZUZyb21QYXJlbnRQcm9wcyhwcm9wcykge1xuICAgICAgICBjb25zdCBpc0NoYW5nZWQgPSB0aGlzLnZhbHVlU3RvcmUuc3RvcmVOZXdQcm9wc0Zyb21QYXJlbnQocHJvcHMpO1xuICAgICAgICBpZiAoaXNDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gcHJveGlmeUNvbXBvbmVudChjb21wb25lbnQpIHtcbiAgICByZXR1cm4gbmV3IFByb3h5KGNvbXBvbmVudCwge1xuICAgICAgICBnZXQoY29tcG9uZW50LCBwcm9wKSB7XG4gICAgICAgICAgICBpZiAocHJvcCBpbiBjb21wb25lbnQgfHwgdHlwZW9mIHByb3AgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb21wb25lbnRbcHJvcF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FsbGFibGUgPSBjb21wb25lbnRbcHJvcF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxhYmxlLmFwcGx5KGNvbXBvbmVudCwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldChjb21wb25lbnQsIHByb3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudC52YWx1ZVN0b3JlLmhhcyhwcm9wKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnQuZ2V0RGF0YShwcm9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnQuYWN0aW9uLmFwcGx5KGNvbXBvbmVudCwgW3Byb3AsIGFyZ3NdKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIHNldCh0YXJnZXQsIHByb3BlcnR5LCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHByb3BlcnR5IGluIHRhcmdldCkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhcmdldC5zZXQocHJvcGVydHksIHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuXG5jbGFzcyBTdGltdWx1c0VsZW1lbnREcml2ZXIge1xuICAgIGNvbnN0cnVjdG9yKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgdGhpcy5jb250cm9sbGVyID0gY29udHJvbGxlcjtcbiAgICB9XG4gICAgZ2V0TW9kZWxOYW1lKGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgbW9kZWxEaXJlY3RpdmUgPSBnZXRNb2RlbERpcmVjdGl2ZUZyb21FbGVtZW50KGVsZW1lbnQsIGZhbHNlKTtcbiAgICAgICAgaWYgKCFtb2RlbERpcmVjdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1vZGVsRGlyZWN0aXZlLmFjdGlvbjtcbiAgICB9XG4gICAgZ2V0Q29tcG9uZW50UHJvcHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIucHJvcHNWYWx1ZTtcbiAgICB9XG4gICAgZ2V0RXZlbnRzVG9FbWl0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmV2ZW50c1RvRW1pdFZhbHVlO1xuICAgIH1cbiAgICBnZXRCcm93c2VyRXZlbnRzVG9EaXNwYXRjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5ldmVudHNUb0Rpc3BhdGNoVmFsdWU7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBnZXRNb2RlbEJpbmRpbmcgKG1vZGVsRGlyZWN0aXZlKSB7XG4gICAgbGV0IHNob3VsZFJlbmRlciA9IHRydWU7XG4gICAgbGV0IHRhcmdldEV2ZW50TmFtZSA9IG51bGw7XG4gICAgbGV0IGRlYm91bmNlID0gZmFsc2U7XG4gICAgbW9kZWxEaXJlY3RpdmUubW9kaWZpZXJzLmZvckVhY2goKG1vZGlmaWVyKSA9PiB7XG4gICAgICAgIHN3aXRjaCAobW9kaWZpZXIubmFtZSkge1xuICAgICAgICAgICAgY2FzZSAnb24nOlxuICAgICAgICAgICAgICAgIGlmICghbW9kaWZpZXIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgXCJvblwiIG1vZGlmaWVyIGluICR7bW9kZWxEaXJlY3RpdmUuZ2V0U3RyaW5nKCl9IHJlcXVpcmVzIGEgdmFsdWUgLSBlLmcuIG9uKGNoYW5nZSkuYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghWydpbnB1dCcsICdjaGFuZ2UnXS5pbmNsdWRlcyhtb2RpZmllci52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgXCJvblwiIG1vZGlmaWVyIGluICR7bW9kZWxEaXJlY3RpdmUuZ2V0U3RyaW5nKCl9IG9ubHkgYWNjZXB0cyB0aGUgYXJndW1lbnRzIFwiaW5wdXRcIiBvciBcImNoYW5nZVwiLmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0YXJnZXRFdmVudE5hbWUgPSBtb2RpZmllci52YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ25vcmVuZGVyJzpcbiAgICAgICAgICAgICAgICBzaG91bGRSZW5kZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RlYm91bmNlJzpcbiAgICAgICAgICAgICAgICBkZWJvdW5jZSA9IG1vZGlmaWVyLnZhbHVlID8gTnVtYmVyLnBhcnNlSW50KG1vZGlmaWVyLnZhbHVlKSA6IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBtb2RpZmllciBcIiR7bW9kaWZpZXIubmFtZX1cIiBpbiBkYXRhLW1vZGVsPVwiJHttb2RlbERpcmVjdGl2ZS5nZXRTdHJpbmcoKX1cIi5gKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IFttb2RlbE5hbWUsIGlubmVyTW9kZWxOYW1lXSA9IG1vZGVsRGlyZWN0aXZlLmFjdGlvbi5zcGxpdCgnOicpO1xuICAgIHJldHVybiB7XG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgaW5uZXJNb2RlbE5hbWU6IGlubmVyTW9kZWxOYW1lIHx8IG51bGwsXG4gICAgICAgIHNob3VsZFJlbmRlcixcbiAgICAgICAgZGVib3VuY2UsXG4gICAgICAgIHRhcmdldEV2ZW50TmFtZSxcbiAgICB9O1xufVxuXG5jbGFzcyBDaGlsZENvbXBvbmVudFBsdWdpbiB7XG4gICAgY29uc3RydWN0b3IoY29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMucGFyZW50TW9kZWxCaW5kaW5ncyA9IFtdO1xuICAgICAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICAgICAgY29uc3QgbW9kZWxEaXJlY3RpdmVzID0gZ2V0QWxsTW9kZWxEaXJlY3RpdmVGcm9tRWxlbWVudHModGhpcy5jb21wb25lbnQuZWxlbWVudCk7XG4gICAgICAgIHRoaXMucGFyZW50TW9kZWxCaW5kaW5ncyA9IG1vZGVsRGlyZWN0aXZlcy5tYXAoZ2V0TW9kZWxCaW5kaW5nKTtcbiAgICB9XG4gICAgYXR0YWNoVG9Db21wb25lbnQoY29tcG9uZW50KSB7XG4gICAgICAgIGNvbXBvbmVudC5vbigncmVxdWVzdDpzdGFydGVkJywgKHJlcXVlc3REYXRhKSA9PiB7XG4gICAgICAgICAgICByZXF1ZXN0RGF0YS5jaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW5GaW5nZXJwcmludHMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbXBvbmVudC5vbignbW9kZWw6c2V0JywgKG1vZGVsLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlQYXJlbnRNb2RlbENoYW5nZShtb2RlbCwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0Q2hpbGRyZW5GaW5nZXJwcmludHMoKSB7XG4gICAgICAgIGNvbnN0IGZpbmdlcnByaW50cyA9IHt9O1xuICAgICAgICB0aGlzLmdldENoaWxkcmVuKCkuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgIGlmICghY2hpbGQuaWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgaWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmdlcnByaW50c1tjaGlsZC5pZF0gPSB7XG4gICAgICAgICAgICAgICAgZmluZ2VycHJpbnQ6IGNoaWxkLmZpbmdlcnByaW50LFxuICAgICAgICAgICAgICAgIHRhZzogY2hpbGQuZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZpbmdlcnByaW50cztcbiAgICB9XG4gICAgbm90aWZ5UGFyZW50TW9kZWxDaGFuZ2UobW9kZWxOYW1lLCB2YWx1ZSkge1xuICAgICAgICBjb25zdCBwYXJlbnRDb21wb25lbnQgPSBmaW5kUGFyZW50KHRoaXMuY29tcG9uZW50KTtcbiAgICAgICAgaWYgKCFwYXJlbnRDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhcmVudE1vZGVsQmluZGluZ3MuZm9yRWFjaCgobW9kZWxCaW5kaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZE1vZGVsTmFtZSA9IG1vZGVsQmluZGluZy5pbm5lck1vZGVsTmFtZSB8fCAndmFsdWUnO1xuICAgICAgICAgICAgaWYgKGNoaWxkTW9kZWxOYW1lICE9PSBtb2RlbE5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJlbnRDb21wb25lbnQuc2V0KG1vZGVsQmluZGluZy5tb2RlbE5hbWUsIHZhbHVlLCBtb2RlbEJpbmRpbmcuc2hvdWxkUmVuZGVyLCBtb2RlbEJpbmRpbmcuZGVib3VuY2UpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0Q2hpbGRyZW4oKSB7XG4gICAgICAgIHJldHVybiBmaW5kQ2hpbGRyZW4odGhpcy5jb21wb25lbnQpO1xuICAgIH1cbn1cblxuY2xhc3MgTGF6eVBsdWdpbiB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBudWxsO1xuICAgIH1cbiAgICBhdHRhY2hUb0NvbXBvbmVudChjb21wb25lbnQpIHtcbiAgICAgICAgaWYgKCdsYXp5JyAhPT0gY29tcG9uZW50LmVsZW1lbnQuYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oJ2xvYWRpbmcnKT8udmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb21wb25lbnQub24oJ2Nvbm5lY3QnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdldE9ic2VydmVyKCkub2JzZXJ2ZShjb21wb25lbnQuZWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb21wb25lbnQub24oJ2Rpc2Nvbm5lY3QnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyPy51bm9ic2VydmUoY29tcG9uZW50LmVsZW1lbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0T2JzZXJ2ZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcikge1xuICAgICAgICAgICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcywgb2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgICAgICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkudGFyZ2V0LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsaXZlOmFwcGVhcicpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZShlbnRyeS50YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcjtcbiAgICB9XG59XG5cbmNsYXNzIExvYWRpbmdQbHVnaW4ge1xuICAgIGF0dGFjaFRvQ29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgICAgICBjb21wb25lbnQub24oJ2xvYWRpbmcuc3RhdGU6c3RhcnRlZCcsIChlbGVtZW50LCByZXF1ZXN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0TG9hZGluZyhjb21wb25lbnQsIGVsZW1lbnQsIHJlcXVlc3QpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29tcG9uZW50Lm9uKCdsb2FkaW5nLnN0YXRlOmZpbmlzaGVkJywgKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmluaXNoTG9hZGluZyhjb21wb25lbnQsIGVsZW1lbnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5maW5pc2hMb2FkaW5nKGNvbXBvbmVudCwgY29tcG9uZW50LmVsZW1lbnQpO1xuICAgIH1cbiAgICBzdGFydExvYWRpbmcoY29tcG9uZW50LCB0YXJnZXRFbGVtZW50LCBiYWNrZW5kUmVxdWVzdCkge1xuICAgICAgICB0aGlzLmhhbmRsZUxvYWRpbmdUb2dnbGUoY29tcG9uZW50LCB0cnVlLCB0YXJnZXRFbGVtZW50LCBiYWNrZW5kUmVxdWVzdCk7XG4gICAgfVxuICAgIGZpbmlzaExvYWRpbmcoY29tcG9uZW50LCB0YXJnZXRFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuaGFuZGxlTG9hZGluZ1RvZ2dsZShjb21wb25lbnQsIGZhbHNlLCB0YXJnZXRFbGVtZW50LCBudWxsKTtcbiAgICB9XG4gICAgaGFuZGxlTG9hZGluZ1RvZ2dsZShjb21wb25lbnQsIGlzTG9hZGluZywgdGFyZ2V0RWxlbWVudCwgYmFja2VuZFJlcXVlc3QpIHtcbiAgICAgICAgaWYgKGlzTG9hZGluZykge1xuICAgICAgICAgICAgdGhpcy5hZGRBdHRyaWJ1dGVzKHRhcmdldEVsZW1lbnQsIFsnYnVzeSddKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlcyh0YXJnZXRFbGVtZW50LCBbJ2J1c3knXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZXRMb2FkaW5nRGlyZWN0aXZlcyhjb21wb25lbnQsIHRhcmdldEVsZW1lbnQpLmZvckVhY2goKHsgZWxlbWVudCwgZGlyZWN0aXZlcyB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBdHRyaWJ1dGVzKGVsZW1lbnQsIFsnZGF0YS1saXZlLWlzLWxvYWRpbmcnXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZXMoZWxlbWVudCwgWydkYXRhLWxpdmUtaXMtbG9hZGluZyddKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpcmVjdGl2ZXMuZm9yRWFjaCgoZGlyZWN0aXZlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVMb2FkaW5nRGlyZWN0aXZlKGVsZW1lbnQsIGlzTG9hZGluZywgZGlyZWN0aXZlLCBiYWNrZW5kUmVxdWVzdCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGhhbmRsZUxvYWRpbmdEaXJlY3RpdmUoZWxlbWVudCwgaXNMb2FkaW5nLCBkaXJlY3RpdmUsIGJhY2tlbmRSZXF1ZXN0KSB7XG4gICAgICAgIGNvbnN0IGZpbmFsQWN0aW9uID0gcGFyc2VMb2FkaW5nQWN0aW9uKGRpcmVjdGl2ZS5hY3Rpb24sIGlzTG9hZGluZyk7XG4gICAgICAgIGNvbnN0IHRhcmdldGVkQWN0aW9ucyA9IFtdO1xuICAgICAgICBjb25zdCB0YXJnZXRlZE1vZGVscyA9IFtdO1xuICAgICAgICBsZXQgZGVsYXkgPSAwO1xuICAgICAgICBjb25zdCB2YWxpZE1vZGlmaWVycyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdmFsaWRNb2RpZmllcnMuc2V0KCdkZWxheScsIChtb2RpZmllcikgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc0xvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWxheSA9IG1vZGlmaWVyLnZhbHVlID8gTnVtYmVyLnBhcnNlSW50KG1vZGlmaWVyLnZhbHVlKSA6IDIwMDtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhbGlkTW9kaWZpZXJzLnNldCgnYWN0aW9uJywgKG1vZGlmaWVyKSA9PiB7XG4gICAgICAgICAgICBpZiAoIW1vZGlmaWVyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgXCJhY3Rpb25cIiBpbiBkYXRhLWxvYWRpbmcgbXVzdCBoYXZlIGFuIGFjdGlvbiBuYW1lIC0gZS5nLiBhY3Rpb24oZm9vKS4gSXQncyBtaXNzaW5nIGZvciBcIiR7ZGlyZWN0aXZlLmdldFN0cmluZygpfVwiYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXRlZEFjdGlvbnMucHVzaChtb2RpZmllci52YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YWxpZE1vZGlmaWVycy5zZXQoJ21vZGVsJywgKG1vZGlmaWVyKSA9PiB7XG4gICAgICAgICAgICBpZiAoIW1vZGlmaWVyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgXCJtb2RlbFwiIGluIGRhdGEtbG9hZGluZyBtdXN0IGhhdmUgYW4gYWN0aW9uIG5hbWUgLSBlLmcuIG1vZGVsKGZvbykuIEl0J3MgbWlzc2luZyBmb3IgXCIke2RpcmVjdGl2ZS5nZXRTdHJpbmcoKX1cImApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFyZ2V0ZWRNb2RlbHMucHVzaChtb2RpZmllci52YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBkaXJlY3RpdmUubW9kaWZpZXJzLmZvckVhY2goKG1vZGlmaWVyKSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsaWRNb2RpZmllcnMuaGFzKG1vZGlmaWVyLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FsbGFibGUgPSB2YWxpZE1vZGlmaWVycy5nZXQobW9kaWZpZXIubmFtZSkgPz8gKCgpID0+IHsgfSk7XG4gICAgICAgICAgICAgICAgY2FsbGFibGUobW9kaWZpZXIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBtb2RpZmllciBcIiR7bW9kaWZpZXIubmFtZX1cIiB1c2VkIGluIGRhdGEtbG9hZGluZz1cIiR7ZGlyZWN0aXZlLmdldFN0cmluZygpfVwiLiBBdmFpbGFibGUgbW9kaWZpZXJzIGFyZTogJHtBcnJheS5mcm9tKHZhbGlkTW9kaWZpZXJzLmtleXMoKSkuam9pbignLCAnKX0uYCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaXNMb2FkaW5nICYmXG4gICAgICAgICAgICB0YXJnZXRlZEFjdGlvbnMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgYmFja2VuZFJlcXVlc3QgJiZcbiAgICAgICAgICAgICFiYWNrZW5kUmVxdWVzdC5jb250YWluc09uZU9mQWN0aW9ucyh0YXJnZXRlZEFjdGlvbnMpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTG9hZGluZyAmJlxuICAgICAgICAgICAgdGFyZ2V0ZWRNb2RlbHMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgYmFja2VuZFJlcXVlc3QgJiZcbiAgICAgICAgICAgICFiYWNrZW5kUmVxdWVzdC5hcmVBbnlNb2RlbHNVcGRhdGVkKHRhcmdldGVkTW9kZWxzKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsb2FkaW5nRGlyZWN0aXZlO1xuICAgICAgICBzd2l0Y2ggKGZpbmFsQWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICdzaG93JzpcbiAgICAgICAgICAgICAgICBsb2FkaW5nRGlyZWN0aXZlID0gKCkgPT4gdGhpcy5zaG93RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2hpZGUnOlxuICAgICAgICAgICAgICAgIGxvYWRpbmdEaXJlY3RpdmUgPSAoKSA9PiB0aGlzLmhpZGVFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYWRkQ2xhc3MnOlxuICAgICAgICAgICAgICAgIGxvYWRpbmdEaXJlY3RpdmUgPSAoKSA9PiB0aGlzLmFkZENsYXNzKGVsZW1lbnQsIGRpcmVjdGl2ZS5hcmdzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3JlbW92ZUNsYXNzJzpcbiAgICAgICAgICAgICAgICBsb2FkaW5nRGlyZWN0aXZlID0gKCkgPT4gdGhpcy5yZW1vdmVDbGFzcyhlbGVtZW50LCBkaXJlY3RpdmUuYXJncyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdhZGRBdHRyaWJ1dGUnOlxuICAgICAgICAgICAgICAgIGxvYWRpbmdEaXJlY3RpdmUgPSAoKSA9PiB0aGlzLmFkZEF0dHJpYnV0ZXMoZWxlbWVudCwgZGlyZWN0aXZlLmFyZ3MpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncmVtb3ZlQXR0cmlidXRlJzpcbiAgICAgICAgICAgICAgICBsb2FkaW5nRGlyZWN0aXZlID0gKCkgPT4gdGhpcy5yZW1vdmVBdHRyaWJ1dGVzKGVsZW1lbnQsIGRpcmVjdGl2ZS5hcmdzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGRhdGEtbG9hZGluZyBhY3Rpb24gXCIke2ZpbmFsQWN0aW9ufVwiYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlbGF5KSB7XG4gICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGJhY2tlbmRSZXF1ZXN0ICYmICFiYWNrZW5kUmVxdWVzdC5pc1Jlc29sdmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmdEaXJlY3RpdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBkZWxheSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbG9hZGluZ0RpcmVjdGl2ZSgpO1xuICAgIH1cbiAgICBnZXRMb2FkaW5nRGlyZWN0aXZlcyhjb21wb25lbnQsIGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgbG9hZGluZ0RpcmVjdGl2ZXMgPSBbXTtcbiAgICAgICAgbGV0IG1hdGNoaW5nRWxlbWVudHMgPSBbLi4uQXJyYXkuZnJvbShlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWxvYWRpbmddJykpXTtcbiAgICAgICAgbWF0Y2hpbmdFbGVtZW50cyA9IG1hdGNoaW5nRWxlbWVudHMuZmlsdGVyKChlbHQpID0+IGVsZW1lbnRCZWxvbmdzVG9UaGlzQ29tcG9uZW50KGVsdCwgY29tcG9uZW50KSk7XG4gICAgICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGF0YS1sb2FkaW5nJykpIHtcbiAgICAgICAgICAgIG1hdGNoaW5nRWxlbWVudHMgPSBbZWxlbWVudCwgLi4ubWF0Y2hpbmdFbGVtZW50c107XG4gICAgICAgIH1cbiAgICAgICAgbWF0Y2hpbmdFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoIShlbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpICYmICEoZWxlbWVudCBpbnN0YW5jZW9mIFNWR0VsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEVsZW1lbnQgVHlwZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aXZlcyA9IHBhcnNlRGlyZWN0aXZlcyhlbGVtZW50LmRhdGFzZXQubG9hZGluZyB8fCAnc2hvdycpO1xuICAgICAgICAgICAgbG9hZGluZ0RpcmVjdGl2ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbG9hZGluZ0RpcmVjdGl2ZXM7XG4gICAgfVxuICAgIHNob3dFbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ3JldmVydCc7XG4gICAgfVxuICAgIGhpZGVFbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIH1cbiAgICBhZGRDbGFzcyhlbGVtZW50LCBjbGFzc2VzKSB7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCguLi5jb21iaW5lU3BhY2VkQXJyYXkoY2xhc3NlcykpO1xuICAgIH1cbiAgICByZW1vdmVDbGFzcyhlbGVtZW50LCBjbGFzc2VzKSB7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSguLi5jb21iaW5lU3BhY2VkQXJyYXkoY2xhc3NlcykpO1xuICAgICAgICBpZiAoZWxlbWVudC5jbGFzc0xpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnY2xhc3MnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGRBdHRyaWJ1dGVzKGVsZW1lbnQsIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgYXR0cmlidXRlcy5mb3JFYWNoKChhdHRyaWJ1dGUpID0+IHtcbiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgJycpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVtb3ZlQXR0cmlidXRlcyhlbGVtZW50LCBhdHRyaWJ1dGVzKSB7XG4gICAgICAgIGF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0cmlidXRlKSA9PiB7XG4gICAgICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5jb25zdCBwYXJzZUxvYWRpbmdBY3Rpb24gPSAoYWN0aW9uLCBpc0xvYWRpbmcpID0+IHtcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgICBjYXNlICdzaG93JzpcbiAgICAgICAgICAgIHJldHVybiBpc0xvYWRpbmcgPyAnc2hvdycgOiAnaGlkZSc7XG4gICAgICAgIGNhc2UgJ2hpZGUnOlxuICAgICAgICAgICAgcmV0dXJuIGlzTG9hZGluZyA/ICdoaWRlJyA6ICdzaG93JztcbiAgICAgICAgY2FzZSAnYWRkQ2xhc3MnOlxuICAgICAgICAgICAgcmV0dXJuIGlzTG9hZGluZyA/ICdhZGRDbGFzcycgOiAncmVtb3ZlQ2xhc3MnO1xuICAgICAgICBjYXNlICdyZW1vdmVDbGFzcyc6XG4gICAgICAgICAgICByZXR1cm4gaXNMb2FkaW5nID8gJ3JlbW92ZUNsYXNzJyA6ICdhZGRDbGFzcyc7XG4gICAgICAgIGNhc2UgJ2FkZEF0dHJpYnV0ZSc6XG4gICAgICAgICAgICByZXR1cm4gaXNMb2FkaW5nID8gJ2FkZEF0dHJpYnV0ZScgOiAncmVtb3ZlQXR0cmlidXRlJztcbiAgICAgICAgY2FzZSAncmVtb3ZlQXR0cmlidXRlJzpcbiAgICAgICAgICAgIHJldHVybiBpc0xvYWRpbmcgPyAncmVtb3ZlQXR0cmlidXRlJyA6ICdhZGRBdHRyaWJ1dGUnO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZGF0YS1sb2FkaW5nIGFjdGlvbiBcIiR7YWN0aW9ufVwiYCk7XG59O1xuXG5jbGFzcyBQYWdlVW5sb2FkaW5nUGx1Z2luIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5pc0Nvbm5lY3RlZCA9IGZhbHNlO1xuICAgIH1cbiAgICBhdHRhY2hUb0NvbXBvbmVudChjb21wb25lbnQpIHtcbiAgICAgICAgY29tcG9uZW50Lm9uKCdyZW5kZXI6c3RhcnRlZCcsIChodG1sLCByZXNwb25zZSwgY29udHJvbHMpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0Nvbm5lY3RlZCkge1xuICAgICAgICAgICAgICAgIGNvbnRyb2xzLnNob3VsZFJlbmRlciA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29tcG9uZW50Lm9uKCdjb25uZWN0JywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0Nvbm5lY3RlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICBjb21wb25lbnQub24oJ2Rpc2Nvbm5lY3QnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzQ29ubmVjdGVkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuY2xhc3MgUG9sbGluZ0RpcmVjdG9yIHtcbiAgICBjb25zdHJ1Y3Rvcihjb21wb25lbnQpIHtcbiAgICAgICAgdGhpcy5pc1BvbGxpbmdBY3RpdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLnBvbGxpbmdJbnRlcnZhbHMgPSBbXTtcbiAgICAgICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgfVxuICAgIGFkZFBvbGwoYWN0aW9uTmFtZSwgZHVyYXRpb24pIHtcbiAgICAgICAgdGhpcy5wb2xscy5wdXNoKHsgYWN0aW9uTmFtZSwgZHVyYXRpb24gfSk7XG4gICAgICAgIGlmICh0aGlzLmlzUG9sbGluZ0FjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWF0ZVBvbGwoYWN0aW9uTmFtZSwgZHVyYXRpb24pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXJ0QWxsUG9sbGluZygpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNQb2xsaW5nQWN0aXZlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc1BvbGxpbmdBY3RpdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLnBvbGxzLmZvckVhY2goKHsgYWN0aW9uTmFtZSwgZHVyYXRpb24gfSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbml0aWF0ZVBvbGwoYWN0aW9uTmFtZSwgZHVyYXRpb24pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3RvcEFsbFBvbGxpbmcoKSB7XG4gICAgICAgIHRoaXMuaXNQb2xsaW5nQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMucG9sbGluZ0ludGVydmFscy5mb3JFYWNoKChpbnRlcnZhbCkgPT4ge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjbGVhclBvbGxpbmcoKSB7XG4gICAgICAgIHRoaXMuc3RvcEFsbFBvbGxpbmcoKTtcbiAgICAgICAgdGhpcy5wb2xscyA9IFtdO1xuICAgICAgICB0aGlzLnN0YXJ0QWxsUG9sbGluZygpO1xuICAgIH1cbiAgICBpbml0aWF0ZVBvbGwoYWN0aW9uTmFtZSwgZHVyYXRpb24pIHtcbiAgICAgICAgbGV0IGNhbGxiYWNrO1xuICAgICAgICBpZiAoYWN0aW9uTmFtZSA9PT0gJyRyZW5kZXInKSB7XG4gICAgICAgICAgICBjYWxsYmFjayA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudC5yZW5kZXIoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjYWxsYmFjayA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudC5hY3Rpb24oYWN0aW9uTmFtZSwge30sIDApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0aW1lciA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9LCBkdXJhdGlvbik7XG4gICAgICAgIHRoaXMucG9sbGluZ0ludGVydmFscy5wdXNoKHRpbWVyKTtcbiAgICB9XG59XG5cbmNsYXNzIFBvbGxpbmdQbHVnaW4ge1xuICAgIGF0dGFjaFRvQ29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSBjb21wb25lbnQuZWxlbWVudDtcbiAgICAgICAgdGhpcy5wb2xsaW5nRGlyZWN0b3IgPSBuZXcgUG9sbGluZ0RpcmVjdG9yKGNvbXBvbmVudCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVBvbGxpbmcoKTtcbiAgICAgICAgY29tcG9uZW50Lm9uKCdjb25uZWN0JywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wb2xsaW5nRGlyZWN0b3Iuc3RhcnRBbGxQb2xsaW5nKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb21wb25lbnQub24oJ2Rpc2Nvbm5lY3QnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBvbGxpbmdEaXJlY3Rvci5zdG9wQWxsUG9sbGluZygpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29tcG9uZW50Lm9uKCdyZW5kZXI6ZmluaXNoZWQnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVQb2xsaW5nKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhZGRQb2xsKGFjdGlvbk5hbWUsIGR1cmF0aW9uKSB7XG4gICAgICAgIHRoaXMucG9sbGluZ0RpcmVjdG9yLmFkZFBvbGwoYWN0aW9uTmFtZSwgZHVyYXRpb24pO1xuICAgIH1cbiAgICBjbGVhclBvbGxpbmcoKSB7XG4gICAgICAgIHRoaXMucG9sbGluZ0RpcmVjdG9yLmNsZWFyUG9sbGluZygpO1xuICAgIH1cbiAgICBpbml0aWFsaXplUG9sbGluZygpIHtcbiAgICAgICAgdGhpcy5jbGVhclBvbGxpbmcoKTtcbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5kYXRhc2V0LnBvbGwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJhd1BvbGxDb25maWcgPSB0aGlzLmVsZW1lbnQuZGF0YXNldC5wb2xsO1xuICAgICAgICBjb25zdCBkaXJlY3RpdmVzID0gcGFyc2VEaXJlY3RpdmVzKHJhd1BvbGxDb25maWcgfHwgJyRyZW5kZXInKTtcbiAgICAgICAgZGlyZWN0aXZlcy5mb3JFYWNoKChkaXJlY3RpdmUpID0+IHtcbiAgICAgICAgICAgIGxldCBkdXJhdGlvbiA9IDIwMDA7XG4gICAgICAgICAgICBkaXJlY3RpdmUubW9kaWZpZXJzLmZvckVhY2goKG1vZGlmaWVyKSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChtb2RpZmllci5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2RlbGF5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2RpZmllci52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uID0gTnVtYmVyLnBhcnNlSW50KG1vZGlmaWVyLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBVbmtub3duIG1vZGlmaWVyIFwiJHttb2RpZmllci5uYW1lfVwiIGluIGRhdGEtcG9sbCBcIiR7cmF3UG9sbENvbmZpZ31cIi5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuYWRkUG9sbChkaXJlY3RpdmUuYWN0aW9uLCBkdXJhdGlvbik7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gaXNWYWx1ZUVtcHR5KHZhbHVlKSB7XG4gICAgaWYgKG51bGwgPT09IHZhbHVlIHx8IHZhbHVlID09PSAnJyB8fCB1bmRlZmluZWQgPT09IHZhbHVlIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHZhbHVlKSkge1xuICAgICAgICBpZiAoIWlzVmFsdWVFbXB0eSh2YWx1ZVtrZXldKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gdG9RdWVyeVN0cmluZyhkYXRhKSB7XG4gICAgY29uc3QgYnVpbGRRdWVyeVN0cmluZ0VudHJpZXMgPSAoZGF0YSwgZW50cmllcyA9IHt9LCBiYXNlS2V5ID0gJycpID0+IHtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoZGF0YSkuZm9yRWFjaCgoW2lLZXksIGlWYWx1ZV0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGJhc2VLZXkgPT09ICcnID8gaUtleSA6IGAke2Jhc2VLZXl9WyR7aUtleX1dYDtcbiAgICAgICAgICAgIGlmICgnJyA9PT0gYmFzZUtleSAmJiBpc1ZhbHVlRW1wdHkoaVZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGVudHJpZXNba2V5XSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAobnVsbCAhPT0gaVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpVmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIGVudHJpZXMgPSB7IC4uLmVudHJpZXMsIC4uLmJ1aWxkUXVlcnlTdHJpbmdFbnRyaWVzKGlWYWx1ZSwgZW50cmllcywga2V5KSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZW50cmllc1trZXldID0gZW5jb2RlVVJJQ29tcG9uZW50KGlWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8lMjAvZywgJysnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyUyQy9nLCAnLCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBlbnRyaWVzO1xuICAgIH07XG4gICAgY29uc3QgZW50cmllcyA9IGJ1aWxkUXVlcnlTdHJpbmdFbnRyaWVzKGRhdGEpO1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhlbnRyaWVzKVxuICAgICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAke2tleX09JHt2YWx1ZX1gKVxuICAgICAgICAuam9pbignJicpO1xufVxuZnVuY3Rpb24gZnJvbVF1ZXJ5U3RyaW5nKHNlYXJjaCkge1xuICAgIHNlYXJjaCA9IHNlYXJjaC5yZXBsYWNlKCc/JywgJycpO1xuICAgIGlmIChzZWFyY2ggPT09ICcnKVxuICAgICAgICByZXR1cm4ge307XG4gICAgY29uc3QgaW5zZXJ0RG90Tm90YXRlZFZhbHVlSW50b0RhdGEgPSAoa2V5LCB2YWx1ZSwgZGF0YSkgPT4ge1xuICAgICAgICBjb25zdCBbZmlyc3QsIHNlY29uZCwgLi4ucmVzdF0gPSBrZXkuc3BsaXQoJy4nKTtcbiAgICAgICAgaWYgKCFzZWNvbmQpIHtcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhW2ZpcnN0XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkYXRhW2ZpcnN0XSA9IE51bWJlci5pc05hTihOdW1iZXIucGFyc2VJbnQoc2Vjb25kKSkgPyB7fSA6IFtdO1xuICAgICAgICB9XG4gICAgICAgIGluc2VydERvdE5vdGF0ZWRWYWx1ZUludG9EYXRhKFtzZWNvbmQsIC4uLnJlc3RdLmpvaW4oJy4nKSwgdmFsdWUsIGRhdGFbZmlyc3RdKTtcbiAgICB9O1xuICAgIGNvbnN0IGVudHJpZXMgPSBzZWFyY2guc3BsaXQoJyYnKS5tYXAoKGkpID0+IGkuc3BsaXQoJz0nKSk7XG4gICAgY29uc3QgZGF0YSA9IHt9O1xuICAgIGVudHJpZXMuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIHZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlLnJlcGxhY2UoL1xcKy9nLCAnJTIwJykpO1xuICAgICAgICBpZiAoIWtleS5pbmNsdWRlcygnWycpKSB7XG4gICAgICAgICAgICBkYXRhW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICgnJyA9PT0gdmFsdWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgZG90Tm90YXRlZEtleSA9IGtleS5yZXBsYWNlKC9cXFsvZywgJy4nKS5yZXBsYWNlKC9dL2csICcnKTtcbiAgICAgICAgICAgIGluc2VydERvdE5vdGF0ZWRWYWx1ZUludG9EYXRhKGRvdE5vdGF0ZWRLZXksIHZhbHVlLCBkYXRhKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xufVxuY2xhc3MgVXJsVXRpbHMgZXh0ZW5kcyBVUkwge1xuICAgIGhhcyhrZXkpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0RGF0YSgpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZGF0YSkuaW5jbHVkZXMoa2V5KTtcbiAgICB9XG4gICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0RGF0YSgpO1xuICAgICAgICBkYXRhW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXREYXRhKGRhdGEpO1xuICAgIH1cbiAgICBnZXQoa2V5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldERhdGEoKVtrZXldO1xuICAgIH1cbiAgICByZW1vdmUoa2V5KSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldERhdGEoKTtcbiAgICAgICAgZGVsZXRlIGRhdGFba2V5XTtcbiAgICAgICAgdGhpcy5zZXREYXRhKGRhdGEpO1xuICAgIH1cbiAgICBnZXREYXRhKCkge1xuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoKSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZyb21RdWVyeVN0cmluZyh0aGlzLnNlYXJjaCk7XG4gICAgfVxuICAgIHNldERhdGEoZGF0YSkge1xuICAgICAgICB0aGlzLnNlYXJjaCA9IHRvUXVlcnlTdHJpbmcoZGF0YSk7XG4gICAgfVxufVxuY2xhc3MgSGlzdG9yeVN0cmF0ZWd5IHtcbiAgICBzdGF0aWMgcmVwbGFjZSh1cmwpIHtcbiAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUoaGlzdG9yeS5zdGF0ZSwgJycsIHVybCk7XG4gICAgfVxufVxuXG5jbGFzcyBRdWVyeVN0cmluZ1BsdWdpbiB7XG4gICAgY29uc3RydWN0b3IobWFwcGluZykge1xuICAgICAgICB0aGlzLm1hcHBpbmcgPSBtYXBwaW5nO1xuICAgIH1cbiAgICBhdHRhY2hUb0NvbXBvbmVudChjb21wb25lbnQpIHtcbiAgICAgICAgY29tcG9uZW50Lm9uKCdyZW5kZXI6ZmluaXNoZWQnLCAoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1cmxVdGlscyA9IG5ldyBVcmxVdGlscyh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VXJsID0gdXJsVXRpbHMudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMubWFwcGluZykuZm9yRWFjaCgoW3Byb3AsIG1hcHBpbmddKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjb21wb25lbnQudmFsdWVTdG9yZS5nZXQocHJvcCk7XG4gICAgICAgICAgICAgICAgdXJsVXRpbHMuc2V0KG1hcHBpbmcubmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoY3VycmVudFVybCAhPT0gdXJsVXRpbHMudG9TdHJpbmcoKSkge1xuICAgICAgICAgICAgICAgIEhpc3RvcnlTdHJhdGVneS5yZXBsYWNlKHVybFV0aWxzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5jbGFzcyBTZXRWYWx1ZU9udG9Nb2RlbEZpZWxkc1BsdWdpbiB7XG4gICAgYXR0YWNoVG9Db21wb25lbnQoY29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuc3luY2hyb25pemVWYWx1ZU9mTW9kZWxGaWVsZHMoY29tcG9uZW50KTtcbiAgICAgICAgY29tcG9uZW50Lm9uKCdyZW5kZXI6ZmluaXNoZWQnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN5bmNocm9uaXplVmFsdWVPZk1vZGVsRmllbGRzKGNvbXBvbmVudCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzeW5jaHJvbml6ZVZhbHVlT2ZNb2RlbEZpZWxkcyhjb21wb25lbnQpIHtcbiAgICAgICAgY29tcG9uZW50LmVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtbW9kZWxdJykuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBlbGVtZW50IHVzaW5nIGRhdGEtbW9kZWwuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxGb3JtRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghZWxlbWVudEJlbG9uZ3NUb1RoaXNDb21wb25lbnQoZWxlbWVudCwgY29tcG9uZW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1vZGVsRGlyZWN0aXZlID0gZ2V0TW9kZWxEaXJlY3RpdmVGcm9tRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgICAgIGlmICghbW9kZWxEaXJlY3RpdmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtb2RlbE5hbWUgPSBtb2RlbERpcmVjdGl2ZS5hY3Rpb247XG4gICAgICAgICAgICBpZiAoY29tcG9uZW50LmdldFVuc3luY2VkTW9kZWxzKCkuaW5jbHVkZXMobW9kZWxOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb21wb25lbnQudmFsdWVTdG9yZS5oYXMobW9kZWxOYW1lKSkge1xuICAgICAgICAgICAgICAgIHNldFZhbHVlT25FbGVtZW50KGVsZW1lbnQsIGNvbXBvbmVudC52YWx1ZVN0b3JlLmdldChtb2RlbE5hbWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTFNlbGVjdEVsZW1lbnQgJiYgIWVsZW1lbnQubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQudmFsdWVTdG9yZS5zZXQobW9kZWxOYW1lLCBnZXRWYWx1ZUZyb21FbGVtZW50KGVsZW1lbnQsIGNvbXBvbmVudC52YWx1ZVN0b3JlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuY2xhc3MgVmFsaWRhdGVkRmllbGRzUGx1Z2luIHtcbiAgICBhdHRhY2hUb0NvbXBvbmVudChjb21wb25lbnQpIHtcbiAgICAgICAgY29tcG9uZW50Lm9uKCdtb2RlbDpzZXQnLCAobW9kZWxOYW1lKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZU1vZGVsU2V0KG1vZGVsTmFtZSwgY29tcG9uZW50LnZhbHVlU3RvcmUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaGFuZGxlTW9kZWxTZXQobW9kZWxOYW1lLCB2YWx1ZVN0b3JlKSB7XG4gICAgICAgIGlmICh2YWx1ZVN0b3JlLmhhcygndmFsaWRhdGVkRmllbGRzJykpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlZEZpZWxkcyA9IFsuLi52YWx1ZVN0b3JlLmdldCgndmFsaWRhdGVkRmllbGRzJyldO1xuICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZWRGaWVsZHMuaW5jbHVkZXMobW9kZWxOYW1lKSkge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRlZEZpZWxkcy5wdXNoKG1vZGVsTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YWx1ZVN0b3JlLnNldCgndmFsaWRhdGVkRmllbGRzJywgdmFsaWRhdGVkRmllbGRzKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY2xhc3MgTGl2ZUNvbnRyb2xsZXJEZWZhdWx0IGV4dGVuZHMgQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMucGVuZGluZ0FjdGlvblRyaWdnZXJNb2RlbEVsZW1lbnQgPSBudWxsO1xuICAgICAgICB0aGlzLmVsZW1lbnRFdmVudExpc3RlbmVycyA9IFtcbiAgICAgICAgICAgIHsgZXZlbnQ6ICdpbnB1dCcsIGNhbGxiYWNrOiAoZXZlbnQpID0+IHRoaXMuaGFuZGxlSW5wdXRFdmVudChldmVudCkgfSxcbiAgICAgICAgICAgIHsgZXZlbnQ6ICdjaGFuZ2UnLCBjYWxsYmFjazogKGV2ZW50KSA9PiB0aGlzLmhhbmRsZUNoYW5nZUV2ZW50KGV2ZW50KSB9LFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlcyA9IHt9O1xuICAgIH1cbiAgICBpbml0aWFsaXplKCkge1xuICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcih0aGlzLm9uTXV0YXRpb25zLmJpbmQodGhpcykpO1xuICAgICAgICB0aGlzLmNyZWF0ZUNvbXBvbmVudCgpO1xuICAgIH1cbiAgICBjb25uZWN0KCkge1xuICAgICAgICB0aGlzLmNvbm5lY3RDb21wb25lbnQoKTtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50LCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZGlzY29ubmVjdCgpIHtcbiAgICAgICAgdGhpcy5kaXNjb25uZWN0Q29tcG9uZW50KCk7XG4gICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfVxuICAgIHVwZGF0ZShldmVudCkge1xuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2lucHV0JyB8fCBldmVudC50eXBlID09PSAnY2hhbmdlJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTaW5jZSBMaXZlQ29tcG9uZW50cyAyLjMsIHlvdSBubyBsb25nZXIgbmVlZCBkYXRhLWFjdGlvbj1cImxpdmUjdXBkYXRlXCIgb24gZm9ybSBlbGVtZW50cy4gRm91bmQgb24gZWxlbWVudDogJHtnZXRFbGVtZW50QXNUYWdUZXh0KGV2ZW50LmN1cnJlbnRUYXJnZXQpfWApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlTW9kZWxGcm9tRWxlbWVudEV2ZW50KGV2ZW50LmN1cnJlbnRUYXJnZXQsIG51bGwpO1xuICAgIH1cbiAgICBhY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gZXZlbnQucGFyYW1zO1xuICAgICAgICBpZiAoIXBhcmFtcy5hY3Rpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gYWN0aW9uIG5hbWUgcHJvdmlkZWQgb24gZWxlbWVudDogJHtnZXRFbGVtZW50QXNUYWdUZXh0KGV2ZW50LmN1cnJlbnRUYXJnZXQpfS4gRGlkIHlvdSBmb3JnZXQgdG8gYWRkIHRoZSBcImRhdGEtbGl2ZS1hY3Rpb24tcGFyYW1cIiBhdHRyaWJ1dGU/YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmF3QWN0aW9uID0gcGFyYW1zLmFjdGlvbjtcbiAgICAgICAgY29uc3QgYWN0aW9uQXJncyA9IHsgLi4ucGFyYW1zIH07XG4gICAgICAgIGRlbGV0ZSBhY3Rpb25BcmdzLmFjdGlvbjtcbiAgICAgICAgY29uc3QgZGlyZWN0aXZlcyA9IHBhcnNlRGlyZWN0aXZlcyhyYXdBY3Rpb24pO1xuICAgICAgICBsZXQgZGVib3VuY2UgPSBmYWxzZTtcbiAgICAgICAgZGlyZWN0aXZlcy5mb3JFYWNoKChkaXJlY3RpdmUpID0+IHtcbiAgICAgICAgICAgIGxldCBwZW5kaW5nRmlsZXMgPSB7fTtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkTW9kaWZpZXJzID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgdmFsaWRNb2RpZmllcnMuc2V0KCdzdG9wJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YWxpZE1vZGlmaWVycy5zZXQoJ3NlbGYnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gZXZlbnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YWxpZE1vZGlmaWVycy5zZXQoJ2RlYm91bmNlJywgKG1vZGlmaWVyKSA9PiB7XG4gICAgICAgICAgICAgICAgZGVib3VuY2UgPSBtb2RpZmllci52YWx1ZSA/IE51bWJlci5wYXJzZUludChtb2RpZmllci52YWx1ZSkgOiB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YWxpZE1vZGlmaWVycy5zZXQoJ2ZpbGVzJywgKG1vZGlmaWVyKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFtb2RpZmllci52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nRmlsZXMgPSB0aGlzLnBlbmRpbmdGaWxlcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5wZW5kaW5nRmlsZXNbbW9kaWZpZXIudmFsdWVdKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdGaWxlc1ttb2RpZmllci52YWx1ZV0gPSB0aGlzLnBlbmRpbmdGaWxlc1ttb2RpZmllci52YWx1ZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkaXJlY3RpdmUubW9kaWZpZXJzLmZvckVhY2goKG1vZGlmaWVyKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbGlkTW9kaWZpZXJzLmhhcyhtb2RpZmllci5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWxsYWJsZSA9IHZhbGlkTW9kaWZpZXJzLmdldChtb2RpZmllci5uYW1lKSA/PyAoKCkgPT4geyB9KTtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGFibGUobW9kaWZpZXIpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5rbm93biBtb2RpZmllciAke21vZGlmaWVyLm5hbWV9IGluIGFjdGlvbiBcIiR7cmF3QWN0aW9ufVwiLiBBdmFpbGFibGUgbW9kaWZpZXJzIGFyZTogJHtBcnJheS5mcm9tKHZhbGlkTW9kaWZpZXJzLmtleXMoKSkuam9pbignLCAnKX0uYCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgaW5wdXRdIG9mIE9iamVjdC5lbnRyaWVzKHBlbmRpbmdGaWxlcykpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuZmlsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnQuZmlsZXMoa2V5LCBpbnB1dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnBlbmRpbmdGaWxlc1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jb21wb25lbnQuYWN0aW9uKGRpcmVjdGl2ZS5hY3Rpb24sIGFjdGlvbkFyZ3MsIGRlYm91bmNlKTtcbiAgICAgICAgICAgIGlmIChnZXRNb2RlbERpcmVjdGl2ZUZyb21FbGVtZW50KGV2ZW50LmN1cnJlbnRUYXJnZXQsIGZhbHNlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0FjdGlvblRyaWdnZXJNb2RlbEVsZW1lbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgJHJlbmRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50LnJlbmRlcigpO1xuICAgIH1cbiAgICBlbWl0KGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZ2V0RW1pdERpcmVjdGl2ZXMoZXZlbnQpLmZvckVhY2goKHsgbmFtZSwgZGF0YSwgbmFtZU1hdGNoIH0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50LmVtaXQobmFtZSwgZGF0YSwgbmFtZU1hdGNoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVtaXRVcChldmVudCkge1xuICAgICAgICB0aGlzLmdldEVtaXREaXJlY3RpdmVzKGV2ZW50KS5mb3JFYWNoKCh7IG5hbWUsIGRhdGEsIG5hbWVNYXRjaCB9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudC5lbWl0VXAobmFtZSwgZGF0YSwgbmFtZU1hdGNoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVtaXRTZWxmKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZ2V0RW1pdERpcmVjdGl2ZXMoZXZlbnQpLmZvckVhY2goKHsgbmFtZSwgZGF0YSB9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudC5lbWl0U2VsZihuYW1lLCBkYXRhKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgICR1cGRhdGVNb2RlbChtb2RlbCwgdmFsdWUsIHNob3VsZFJlbmRlciA9IHRydWUsIGRlYm91bmNlID0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wb25lbnQuc2V0KG1vZGVsLCB2YWx1ZSwgc2hvdWxkUmVuZGVyLCBkZWJvdW5jZSk7XG4gICAgfVxuICAgIHByb3BzVXBkYXRlZEZyb21QYXJlbnRWYWx1ZUNoYW5nZWQoKSB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50Ll91cGRhdGVGcm9tUGFyZW50UHJvcHModGhpcy5wcm9wc1VwZGF0ZWRGcm9tUGFyZW50VmFsdWUpO1xuICAgIH1cbiAgICBmaW5nZXJwcmludFZhbHVlQ2hhbmdlZCgpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnQuZmluZ2VycHJpbnQgPSB0aGlzLmZpbmdlcnByaW50VmFsdWU7XG4gICAgfVxuICAgIGdldEVtaXREaXJlY3RpdmVzKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IGV2ZW50LnBhcmFtcztcbiAgICAgICAgaWYgKCFwYXJhbXMuZXZlbnQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gZXZlbnQgbmFtZSBwcm92aWRlZCBvbiBlbGVtZW50OiAke2dldEVsZW1lbnRBc1RhZ1RleHQoZXZlbnQuY3VycmVudFRhcmdldCl9LiBEaWQgeW91IGZvcmdldCB0byBhZGQgdGhlIFwiZGF0YS1saXZlLWV2ZW50LXBhcmFtXCIgYXR0cmlidXRlP2ApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV2ZW50SW5mbyA9IHBhcmFtcy5ldmVudDtcbiAgICAgICAgY29uc3QgZXZlbnRBcmdzID0geyAuLi5wYXJhbXMgfTtcbiAgICAgICAgZGVsZXRlIGV2ZW50QXJncy5ldmVudDtcbiAgICAgICAgY29uc3QgZGlyZWN0aXZlcyA9IHBhcnNlRGlyZWN0aXZlcyhldmVudEluZm8pO1xuICAgICAgICBjb25zdCBlbWl0cyA9IFtdO1xuICAgICAgICBkaXJlY3RpdmVzLmZvckVhY2goKGRpcmVjdGl2ZSkgPT4ge1xuICAgICAgICAgICAgbGV0IG5hbWVNYXRjaCA9IG51bGw7XG4gICAgICAgICAgICBkaXJlY3RpdmUubW9kaWZpZXJzLmZvckVhY2goKG1vZGlmaWVyKSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChtb2RpZmllci5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ25hbWUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZU1hdGNoID0gbW9kaWZpZXIudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBtb2RpZmllciAke21vZGlmaWVyLm5hbWV9IGluIGV2ZW50IFwiJHtldmVudEluZm99XCIuYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlbWl0cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBkaXJlY3RpdmUuYWN0aW9uLFxuICAgICAgICAgICAgICAgIGRhdGE6IGV2ZW50QXJncyxcbiAgICAgICAgICAgICAgICBuYW1lTWF0Y2gsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBlbWl0cztcbiAgICB9XG4gICAgY3JlYXRlQ29tcG9uZW50KCkge1xuICAgICAgICBjb25zdCBpZCA9IHRoaXMuZWxlbWVudC5pZCB8fCBudWxsO1xuICAgICAgICB0aGlzLmNvbXBvbmVudCA9IG5ldyBDb21wb25lbnQodGhpcy5lbGVtZW50LCB0aGlzLm5hbWVWYWx1ZSwgdGhpcy5wcm9wc1ZhbHVlLCB0aGlzLmxpc3RlbmVyc1ZhbHVlLCBpZCwgTGl2ZUNvbnRyb2xsZXJEZWZhdWx0LmJhY2tlbmRGYWN0b3J5KHRoaXMpLCBuZXcgU3RpbXVsdXNFbGVtZW50RHJpdmVyKHRoaXMpKTtcbiAgICAgICAgdGhpcy5wcm94aWVkQ29tcG9uZW50ID0gcHJveGlmeUNvbXBvbmVudCh0aGlzLmNvbXBvbmVudCk7XG4gICAgICAgIHRoaXMuZWxlbWVudC5fX2NvbXBvbmVudCA9IHRoaXMucHJveGllZENvbXBvbmVudDtcbiAgICAgICAgaWYgKHRoaXMuaGFzRGVib3VuY2VWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnQuZGVmYXVsdERlYm91bmNlID0gdGhpcy5kZWJvdW5jZVZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBsdWdpbnMgPSBbXG4gICAgICAgICAgICBuZXcgTG9hZGluZ1BsdWdpbigpLFxuICAgICAgICAgICAgbmV3IExhenlQbHVnaW4oKSxcbiAgICAgICAgICAgIG5ldyBWYWxpZGF0ZWRGaWVsZHNQbHVnaW4oKSxcbiAgICAgICAgICAgIG5ldyBQYWdlVW5sb2FkaW5nUGx1Z2luKCksXG4gICAgICAgICAgICBuZXcgUG9sbGluZ1BsdWdpbigpLFxuICAgICAgICAgICAgbmV3IFNldFZhbHVlT250b01vZGVsRmllbGRzUGx1Z2luKCksXG4gICAgICAgICAgICBuZXcgUXVlcnlTdHJpbmdQbHVnaW4odGhpcy5xdWVyeU1hcHBpbmdWYWx1ZSksXG4gICAgICAgICAgICBuZXcgQ2hpbGRDb21wb25lbnRQbHVnaW4odGhpcy5jb21wb25lbnQpLFxuICAgICAgICBdO1xuICAgICAgICBwbHVnaW5zLmZvckVhY2goKHBsdWdpbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnQuYWRkUGx1Z2luKHBsdWdpbik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25uZWN0Q29tcG9uZW50KCkge1xuICAgICAgICB0aGlzLmNvbXBvbmVudC5jb25uZWN0KCk7XG4gICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxlbWVudCwge1xuICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZWxlbWVudEV2ZW50TGlzdGVuZXJzLmZvckVhY2goKHsgZXZlbnQsIGNhbGxiYWNrIH0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgY2FsbGJhY2spO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KCdjb25uZWN0Jyk7XG4gICAgfVxuICAgIGRpc2Nvbm5lY3RDb21wb25lbnQoKSB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgdGhpcy5lbGVtZW50RXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgoeyBldmVudCwgY2FsbGJhY2sgfSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnQuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBjYWxsYmFjayk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoJ2Rpc2Nvbm5lY3QnKTtcbiAgICB9XG4gICAgaGFuZGxlSW5wdXRFdmVudChldmVudCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVNb2RlbEZyb21FbGVtZW50RXZlbnQodGFyZ2V0LCAnaW5wdXQnKTtcbiAgICB9XG4gICAgaGFuZGxlQ2hhbmdlRXZlbnQoZXZlbnQpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlTW9kZWxGcm9tRWxlbWVudEV2ZW50KHRhcmdldCwgJ2NoYW5nZScpO1xuICAgIH1cbiAgICB1cGRhdGVNb2RlbEZyb21FbGVtZW50RXZlbnQoZWxlbWVudCwgZXZlbnROYW1lKSB7XG4gICAgICAgIGlmICghZWxlbWVudEJlbG9uZ3NUb1RoaXNDb21wb25lbnQoZWxlbWVudCwgdGhpcy5jb21wb25lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgdXBkYXRlIG1vZGVsIGZvciBub24gSFRNTEVsZW1lbnQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGVsZW1lbnQubmFtZTtcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmZpbGVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc1trZXldID0gZWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMucGVuZGluZ0ZpbGVzW2tleV0pIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5wZW5kaW5nRmlsZXNba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtb2RlbERpcmVjdGl2ZSA9IGdldE1vZGVsRGlyZWN0aXZlRnJvbUVsZW1lbnQoZWxlbWVudCwgZmFsc2UpO1xuICAgICAgICBpZiAoIW1vZGVsRGlyZWN0aXZlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbW9kZWxCaW5kaW5nID0gZ2V0TW9kZWxCaW5kaW5nKG1vZGVsRGlyZWN0aXZlKTtcbiAgICAgICAgaWYgKCFtb2RlbEJpbmRpbmcudGFyZ2V0RXZlbnROYW1lKSB7XG4gICAgICAgICAgICBtb2RlbEJpbmRpbmcudGFyZ2V0RXZlbnROYW1lID0gJ2lucHV0JztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wZW5kaW5nQWN0aW9uVHJpZ2dlck1vZGVsRWxlbWVudCA9PT0gZWxlbWVudCkge1xuICAgICAgICAgICAgbW9kZWxCaW5kaW5nLnNob3VsZFJlbmRlciA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudE5hbWUgPT09ICdjaGFuZ2UnICYmIG1vZGVsQmluZGluZy50YXJnZXRFdmVudE5hbWUgPT09ICdpbnB1dCcpIHtcbiAgICAgICAgICAgIG1vZGVsQmluZGluZy50YXJnZXRFdmVudE5hbWUgPSAnY2hhbmdlJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnROYW1lICYmIG1vZGVsQmluZGluZy50YXJnZXRFdmVudE5hbWUgIT09IGV2ZW50TmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmYWxzZSA9PT0gbW9kZWxCaW5kaW5nLmRlYm91bmNlKSB7XG4gICAgICAgICAgICBpZiAobW9kZWxCaW5kaW5nLnRhcmdldEV2ZW50TmFtZSA9PT0gJ2lucHV0Jykge1xuICAgICAgICAgICAgICAgIG1vZGVsQmluZGluZy5kZWJvdW5jZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb2RlbEJpbmRpbmcuZGVib3VuY2UgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbmFsVmFsdWUgPSBnZXRWYWx1ZUZyb21FbGVtZW50KGVsZW1lbnQsIHRoaXMuY29tcG9uZW50LnZhbHVlU3RvcmUpO1xuICAgICAgICB0aGlzLmNvbXBvbmVudC5zZXQobW9kZWxCaW5kaW5nLm1vZGVsTmFtZSwgZmluYWxWYWx1ZSwgbW9kZWxCaW5kaW5nLnNob3VsZFJlbmRlciwgbW9kZWxCaW5kaW5nLmRlYm91bmNlKTtcbiAgICB9XG4gICAgZGlzcGF0Y2hFdmVudChuYW1lLCBkZXRhaWwgPSB7fSwgY2FuQnViYmxlID0gdHJ1ZSwgY2FuY2VsYWJsZSA9IGZhbHNlKSB7XG4gICAgICAgIGRldGFpbC5jb250cm9sbGVyID0gdGhpcztcbiAgICAgICAgZGV0YWlsLmNvbXBvbmVudCA9IHRoaXMucHJveGllZENvbXBvbmVudDtcbiAgICAgICAgdGhpcy5kaXNwYXRjaChuYW1lLCB7IGRldGFpbCwgcHJlZml4OiAnbGl2ZScsIGNhbmNlbGFibGUsIGJ1YmJsZXM6IGNhbkJ1YmJsZSB9KTtcbiAgICB9XG4gICAgb25NdXRhdGlvbnMobXV0YXRpb25zKSB7XG4gICAgICAgIG11dGF0aW9ucy5mb3JFYWNoKChtdXRhdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKG11dGF0aW9uLnR5cGUgPT09ICdhdHRyaWJ1dGVzJyAmJlxuICAgICAgICAgICAgICAgIG11dGF0aW9uLmF0dHJpYnV0ZU5hbWUgPT09ICdpZCcgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuaWQgIT09IHRoaXMuY29tcG9uZW50LmlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNjb25uZWN0Q29tcG9uZW50KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVDb21wb25lbnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3RDb21wb25lbnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuTGl2ZUNvbnRyb2xsZXJEZWZhdWx0LnZhbHVlcyA9IHtcbiAgICBuYW1lOiBTdHJpbmcsXG4gICAgdXJsOiBTdHJpbmcsXG4gICAgcHJvcHM6IHsgdHlwZTogT2JqZWN0LCBkZWZhdWx0OiB7fSB9LFxuICAgIHByb3BzVXBkYXRlZEZyb21QYXJlbnQ6IHsgdHlwZTogT2JqZWN0LCBkZWZhdWx0OiB7fSB9LFxuICAgIGxpc3RlbmVyczogeyB0eXBlOiBBcnJheSwgZGVmYXVsdDogW10gfSxcbiAgICBldmVudHNUb0VtaXQ6IHsgdHlwZTogQXJyYXksIGRlZmF1bHQ6IFtdIH0sXG4gICAgZXZlbnRzVG9EaXNwYXRjaDogeyB0eXBlOiBBcnJheSwgZGVmYXVsdDogW10gfSxcbiAgICBkZWJvdW5jZTogeyB0eXBlOiBOdW1iZXIsIGRlZmF1bHQ6IDE1MCB9LFxuICAgIGZpbmdlcnByaW50OiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJycgfSxcbiAgICByZXF1ZXN0TWV0aG9kOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJ3Bvc3QnIH0sXG4gICAgcXVlcnlNYXBwaW5nOiB7IHR5cGU6IE9iamVjdCwgZGVmYXVsdDoge30gfSxcbn07XG5MaXZlQ29udHJvbGxlckRlZmF1bHQuYmFja2VuZEZhY3RvcnkgPSAoY29udHJvbGxlcikgPT4gbmV3IEJhY2tlbmQoY29udHJvbGxlci51cmxWYWx1ZSwgY29udHJvbGxlci5yZXF1ZXN0TWV0aG9kVmFsdWUpO1xuXG5leHBvcnQgeyBDb21wb25lbnQsIExpdmVDb250cm9sbGVyRGVmYXVsdCBhcyBkZWZhdWx0LCBnZXRDb21wb25lbnQgfTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IHt9OyIsImltcG9ydCB7IENvbnRyb2xsZXIgfSBmcm9tICdAaG90d2lyZWQvc3RpbXVsdXMnO1xuaW1wb3J0IHsgcmVnaXN0ZXJhYmxlcywgQ2hhcnQgfSBmcm9tICdjaGFydC5qcyc7XG5cbmlmIChyZWdpc3RlcmFibGVzKSB7XG4gICAgQ2hhcnQucmVnaXN0ZXIoLi4ucmVnaXN0ZXJhYmxlcyk7XG59XG5sZXQgaXNDaGFydEluaXRpYWxpemVkID0gZmFsc2U7XG5jbGFzcyBkZWZhdWx0XzEgZXh0ZW5kcyBDb250cm9sbGVyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5jaGFydCA9IG51bGw7XG4gICAgfVxuICAgIGNvbm5lY3QoKSB7XG4gICAgICAgIGlmICghaXNDaGFydEluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBpc0NoYXJ0SW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KCdpbml0Jywge1xuICAgICAgICAgICAgICAgIENoYXJ0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEodGhpcy5lbGVtZW50IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZWxlbWVudCcpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB0aGlzLnZpZXdWYWx1ZTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZC5vcHRpb25zKSAmJiAwID09PSBwYXlsb2FkLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBwYXlsb2FkLm9wdGlvbnMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoJ3ByZS1jb25uZWN0Jywge1xuICAgICAgICAgICAgb3B0aW9uczogcGF5bG9hZC5vcHRpb25zLFxuICAgICAgICAgICAgY29uZmlnOiBwYXlsb2FkLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY2FudmFzQ29udGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICBpZiAoIWNhbnZhc0NvbnRleHQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGdldENvbnRleHQoKSBmcm9tIEVsZW1lbnQnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KGNhbnZhc0NvbnRleHQsIHBheWxvYWQpO1xuICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoJ2Nvbm5lY3QnLCB7IGNoYXJ0OiB0aGlzLmNoYXJ0IH0pO1xuICAgIH1cbiAgICB2aWV3VmFsdWVDaGFuZ2VkKCkge1xuICAgICAgICBpZiAodGhpcy5jaGFydCkge1xuICAgICAgICAgICAgY29uc3Qgdmlld1ZhbHVlID0geyBkYXRhOiB0aGlzLnZpZXdWYWx1ZS5kYXRhLCBvcHRpb25zOiB0aGlzLnZpZXdWYWx1ZS5vcHRpb25zIH07XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2aWV3VmFsdWUub3B0aW9ucykgJiYgMCA9PT0gdmlld1ZhbHVlLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdmlld1ZhbHVlLm9wdGlvbnMgPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudCgndmlldy12YWx1ZS1jaGFuZ2UnLCB2aWV3VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5jaGFydC5kYXRhID0gdmlld1ZhbHVlLmRhdGE7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0Lm9wdGlvbnMgPSB2aWV3VmFsdWUub3B0aW9ucztcbiAgICAgICAgICAgIHRoaXMuY2hhcnQudXBkYXRlKCk7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAocGFyZW50RWxlbWVudCAmJiB0aGlzLmNoYXJ0Lm9wdGlvbnMucmVzcG9uc2l2ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsV2lkdGggPSBwYXJlbnRFbGVtZW50LnN0eWxlLndpZHRoO1xuICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHtwYXJlbnRFbGVtZW50Lm9mZnNldFdpZHRoICsgMX1weGA7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuc3R5bGUud2lkdGggPSBvcmlnaW5hbFdpZHRoO1xuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGRpc3BhdGNoRXZlbnQobmFtZSwgcGF5bG9hZCkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKG5hbWUsIHsgZGV0YWlsOiBwYXlsb2FkLCBwcmVmaXg6ICdjaGFydGpzJyB9KTtcbiAgICB9XG59XG5kZWZhdWx0XzEudmFsdWVzID0ge1xuICAgIHZpZXc6IE9iamVjdCxcbn07XG5cbmV4cG9ydCB7IGRlZmF1bHRfMSBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOlsiQ29udHJvbGxlciIsIlRvbVNlbGVjdCIsIl9fY2xhc3NQcml2YXRlRmllbGRHZXQiLCJyZWNlaXZlciIsInN0YXRlIiwia2luZCIsImYiLCJUeXBlRXJyb3IiLCJoYXMiLCJjYWxsIiwidmFsdWUiLCJnZXQiLCJTdXBwcmVzc2VkRXJyb3IiLCJlcnJvciIsInN1cHByZXNzZWQiLCJtZXNzYWdlIiwiZSIsIkVycm9yIiwibmFtZSIsIl9kZWZhdWx0XzFfaW5zdGFuY2VzIiwiX2RlZmF1bHRfMV9nZXRDb21tb25Db25maWciLCJfZGVmYXVsdF8xX2NyZWF0ZUF1dG9jb21wbGV0ZSIsIl9kZWZhdWx0XzFfY3JlYXRlQXV0b2NvbXBsZXRlV2l0aEh0bWxDb250ZW50cyIsIl9kZWZhdWx0XzFfY3JlYXRlQXV0b2NvbXBsZXRlV2l0aFJlbW90ZURhdGEiLCJfZGVmYXVsdF8xX3N0cmlwVGFncyIsIl9kZWZhdWx0XzFfbWVyZ2VPYmplY3RzIiwiX2RlZmF1bHRfMV9jcmVhdGVUb21TZWxlY3QiLCJkZWZhdWx0XzEiLCJfQ29udHJvbGxlciIsIl9pbmhlcml0cyIsIl9zdXBlciIsIl9jcmVhdGVTdXBlciIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJhZGQiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiaXNPYnNlcnZpbmciLCJoYXNMb2FkZWRDaG9pY2VzUHJldmlvdXNseSIsIm9yaWdpbmFsT3B0aW9ucyIsIl9jcmVhdGVDbGFzcyIsImtleSIsImluaXRpYWxpemUiLCJfdGhpczIiLCJtdXRhdGlvbk9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9ucyIsIm9uTXV0YXRpb25zIiwiY29ubmVjdCIsInNlbGVjdEVsZW1lbnQiLCJjcmVhdGVPcHRpb25zRGF0YVN0cnVjdHVyZSIsImluaXRpYWxpemVUb21TZWxlY3QiLCJzZXRBdHRyaWJ1dGUiLCJ1cmxWYWx1ZSIsInRvbVNlbGVjdCIsImhhc01pbkNoYXJhY3RlcnNWYWx1ZSIsIm1pbkNoYXJhY3RlcnNWYWx1ZSIsIm9wdGlvbnNBc0h0bWxWYWx1ZSIsInN0YXJ0TXV0YXRpb25PYnNlcnZlciIsImRpc2Nvbm5lY3QiLCJzdG9wTXV0YXRpb25PYnNlcnZlciIsImN1cnJlbnRTZWxlY3RlZFZhbHVlcyIsIm11bHRpcGxlIiwiQXJyYXkiLCJmcm9tIiwib3B0aW9ucyIsImZpbHRlciIsIm9wdGlvbiIsInNlbGVjdGVkIiwibWFwIiwiZGVzdHJveSIsImZvckVhY2giLCJpbmNsdWRlcyIsImdldE1heE9wdGlvbnMiLCJsZW5ndGgiLCJlbGVtZW50IiwiSFRNTFNlbGVjdEVsZW1lbnQiLCJIVE1MSW5wdXRFbGVtZW50IiwiZGlzcGF0Y2hFdmVudCIsInBheWxvYWQiLCJkaXNwYXRjaCIsImRldGFpbCIsInByZWZpeCIsImhhc1ByZWxvYWRWYWx1ZSIsInByZWxvYWRWYWx1ZSIsInJlc2V0VG9tU2VsZWN0IiwiY3VycmVudEh0bWwiLCJpbm5lckhUTUwiLCJjdXJyZW50VmFsdWUiLCJnZXRWYWx1ZSIsInNldFZhbHVlIiwiY2hhbmdlVG9tU2VsZWN0RGlzYWJsZWRTdGF0ZSIsImlzRGlzYWJsZWQiLCJkaXNhYmxlIiwiZW5hYmxlIiwib2JzZXJ2ZSIsImNoaWxkTGlzdCIsInN1YnRyZWUiLCJhdHRyaWJ1dGVzIiwiY2hhcmFjdGVyRGF0YSIsImF0dHJpYnV0ZU9sZFZhbHVlIiwiX3RoaXMzIiwiY2hhbmdlRGlzYWJsZWRTdGF0ZSIsInJlcXVpcmVSZXNldCIsIm11dGF0aW9uIiwidHlwZSIsInRhcmdldCIsImF0dHJpYnV0ZU5hbWUiLCJpc05vd011bHRpcGxlIiwiaGFzQXR0cmlidXRlIiwid2FzTXVsdGlwbGUiLCJvbGRWYWx1ZSIsIm5ld09wdGlvbnMiLCJhcmVPcHRpb25zRXF1aXZhbGVudCIsImZvcm1FbGVtZW50IiwiZGlzYWJsZWQiLCJ0ZXh0IiwiZmlsdGVyZWRPcmlnaW5hbE9wdGlvbnMiLCJmaWx0ZXJlZE5ld09wdGlvbnMiLCJvcmlnaW5hbFBsYWNlaG9sZGVyT3B0aW9uIiwiZmluZCIsIm5ld1BsYWNlaG9sZGVyT3B0aW9uIiwibm9ybWFsaXplT3B0aW9uIiwiY29uY2F0Iiwib3JpZ2luYWxPcHRpb25zU2V0IiwiU2V0IiwibmV3T3B0aW9uc1NldCIsInNpemUiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJldmVyeSIsIldlYWtTZXQiLCJfdGhpczQiLCJwbHVnaW5zIiwiaXNNdWx0aXBsZSIsImNsZWFyX2J1dHRvbiIsInRpdGxlIiwicmVtb3ZlX2J1dHRvbiIsInZpcnR1YWxfc2Nyb2xsIiwicmVuZGVyIiwibm9fcmVzdWx0cyIsIm5vUmVzdWx0c0ZvdW5kVGV4dFZhbHVlIiwib3B0aW9uX2NyZWF0ZSIsImRhdGEiLCJlc2NhcGVEYXRhIiwiY3JlYXRlT3B0aW9uVGV4dFZhbHVlIiwicmVwbGFjZSIsImlucHV0IiwiY29uZmlnIiwib25JdGVtQWRkIiwic2V0VGV4dGJveFZhbHVlIiwiY2xvc2VBZnRlclNlbGVjdCIsIm9uT3B0aW9uQWRkIiwicGFyZW50RWxlbWVudCIsIm9wdGdyb3VwRGF0YSIsIm9wdGdyb3VwIiwic2V0dGluZ3MiLCJvcHRncm91cEZpZWxkIiwib3B0Z3JvdXBzIiwib3B0Z3JvdXBFbGVtZW50IiwicXVlcnlTZWxlY3RvciIsImxhYmVsIiwib3B0aW9uRWxlbWVudCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImxhYmVsRmllbGQiLCJvcHRpb25PcmRlciIsIiRvcmRlciIsIm9yZGVyZWRPcHRpb24iLCJfaSIsIl9PYmplY3QkZW50cmllcyIsIk9iamVjdCIsImVudHJpZXMiLCJfT2JqZWN0JGVudHJpZXMkX2kiLCJfc2xpY2VkVG9BcnJheSIsInRvbVNlbGVjdE9wdGlvbiIsInZhbHVlRmllbGQiLCJpbnNlcnRBZGphY2VudEVsZW1lbnQiLCJhcHBlbmQiLCJwcmVwZW5kIiwic2hvdWxkTG9hZCIsInRvbVNlbGVjdE9wdGlvbnNWYWx1ZSIsIm1heE9wdGlvbnMiLCJfY29tbW9uQ29uZmlnJGxhYmVsRmkiLCJfdGhpczUiLCJjb21tb25Db25maWciLCJzY29yZSIsInNlYXJjaCIsInNjb3JpbmdGdW5jdGlvbiIsImdldFNjb3JlRnVuY3Rpb24iLCJpdGVtIiwiX29iamVjdFNwcmVhZCIsImF1dG9jb21wbGV0ZUVuZHBvaW50VXJsIiwibWluQ2hhcmFjdGVyTGVuZ3RoIiwiX2NvbW1vbkNvbmZpZyRsYWJlbEZpMiIsIl90aGlzNyIsImZpcnN0VXJsIiwicXVlcnkiLCJzZXBhcmF0b3IiLCJlbmNvZGVVUklDb21wb25lbnQiLCJsb2FkIiwiY2FsbGJhY2siLCJfdGhpczYiLCJ1cmwiLCJnZXRVcmwiLCJmZXRjaCIsInRoZW4iLCJyZXNwb25zZSIsImpzb24iLCJzZXROZXh0VXJsIiwibmV4dF9wYWdlIiwicmVzdWx0cyIsImxvYWRpbmdfbW9yZSIsImxvYWRpbmdNb3JlVGV4dFZhbHVlIiwibm9fbW9yZV9yZXN1bHRzIiwibm9Nb3JlUmVzdWx0c1RleHRWYWx1ZSIsInByZWxvYWQiLCJzdHJpbmciLCJvYmplY3QxIiwib2JqZWN0MiIsInByZUNvbm5lY3RQYXlsb2FkIiwiY29ubmVjdFBheWxvYWQiLCJ2YWx1ZXMiLCJTdHJpbmciLCJvcHRpb25zQXNIdG1sIiwiQm9vbGVhbiIsImxvYWRpbmdNb3JlVGV4dCIsIm5vUmVzdWx0c0ZvdW5kVGV4dCIsIm5vTW9yZVJlc3VsdHNUZXh0IiwiY3JlYXRlT3B0aW9uVGV4dCIsIm1pbkNoYXJhY3RlcnMiLCJOdW1iZXIiLCJ0b21TZWxlY3RPcHRpb25zIiwiZGVmYXVsdCIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJleHBvcnRzIiwiT3AiLCJwcm90b3R5cGUiLCJoYXNPd24iLCJoYXNPd25Qcm9wZXJ0eSIsImRlZmluZVByb3BlcnR5Iiwib2JqIiwiZGVzYyIsIiRTeW1ib2wiLCJTeW1ib2wiLCJpdGVyYXRvclN5bWJvbCIsIml0ZXJhdG9yIiwiYXN5bmNJdGVyYXRvclN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZ1N5bWJvbCIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiZXJyIiwid3JhcCIsImlubmVyRm4iLCJvdXRlckZuIiwic2VsZiIsInRyeUxvY3NMaXN0IiwicHJvdG9HZW5lcmF0b3IiLCJHZW5lcmF0b3IiLCJnZW5lcmF0b3IiLCJjcmVhdGUiLCJjb250ZXh0IiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsImZuIiwiYXJnIiwiQ29udGludWVTZW50aW5lbCIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJJdGVyYXRvclByb3RvdHlwZSIsImdldFByb3RvIiwiZ2V0UHJvdG90eXBlT2YiLCJOYXRpdmVJdGVyYXRvclByb3RvdHlwZSIsIkdwIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwibWV0aG9kIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJQcm9taXNlSW1wbCIsImludm9rZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWNvcmQiLCJyZXN1bHQiLCJfdHlwZW9mIiwiX19hd2FpdCIsInVud3JhcHBlZCIsInByZXZpb3VzUHJvbWlzZSIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiZG9uZVJlc3VsdCIsImRlbGVnYXRlIiwiZGVsZWdhdGVSZXN1bHQiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJkb25lIiwibWV0aG9kTmFtZSIsInVuZGVmaW5lZCIsImluZm8iLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJsb2NzIiwiZW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsIml0ZXJhYmxlIiwiaXRlcmF0b3JNZXRob2QiLCJpc05hTiIsImkiLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJnZW5GdW4iLCJjdG9yIiwiY29uc3RydWN0b3IiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsIml0ZXIiLCJrZXlzIiwidmFsIiwib2JqZWN0IiwicmV2ZXJzZSIsInBvcCIsInNraXBUZW1wUmVzZXQiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicm9vdFJlY29yZCIsInJ2YWwiLCJleGNlcHRpb24iLCJoYW5kbGUiLCJsb2MiLCJjYXVnaHQiLCJoYXNDYXRjaCIsImhhc0ZpbmFsbHkiLCJmaW5hbGx5RW50cnkiLCJjb21wbGV0ZSIsImZpbmlzaCIsIl9jYXRjaCIsInRocm93biIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJfbmV4dCIsIl90aHJvdyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiYXJncyIsImFyciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJvIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwidG9TdHJpbmciLCJ0ZXN0IiwibGVuIiwiYXJyMiIsIl9zIiwiX2UiLCJfeCIsIl9yIiwiX2FyciIsIl9uIiwiX2QiLCJpc0FycmF5IiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwicHJvcHMiLCJkZXNjcmlwdG9yIiwiX3RvUHJvcGVydHlLZXkiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfdG9QcmltaXRpdmUiLCJoaW50IiwicHJpbSIsInRvUHJpbWl0aXZlIiwicmVzIiwiQmFja2VuZFJlcXVlc3QiLCJwcm9taXNlIiwiYWN0aW9ucyIsInVwZGF0ZU1vZGVscyIsImlzUmVzb2x2ZWQiLCJ1cGRhdGVkTW9kZWxzIiwiY29udGFpbnNPbmVPZkFjdGlvbnMiLCJ0YXJnZXRlZEFjdGlvbnMiLCJhY3Rpb24iLCJhcmVBbnlNb2RlbHNVcGRhdGVkIiwidGFyZ2V0ZWRNb2RlbHMiLCJtb2RlbCIsIlJlcXVlc3RCdWlsZGVyIiwiYnVpbGRSZXF1ZXN0IiwidXBkYXRlZCIsImNoaWxkcmVuIiwidXBkYXRlZFByb3BzRnJvbVBhcmVudCIsImZpbGVzIiwic3BsaXRVcmwiLCJzcGxpdCIsIl9zcGxpdFVybCIsIl9zcGxpdFVybDIiLCJxdWVyeVN0cmluZyIsInBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsImZldGNoT3B0aW9ucyIsImhlYWRlcnMiLCJBY2NlcHQiLCJ0b3RhbEZpbGVzIiwicmVkdWNlIiwidG90YWwiLCJjdXJyZW50IiwiaGFzRmluZ2VycHJpbnRzIiwid2lsbERhdGFGaXRJblVybCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzZXQiLCJyZXF1ZXN0RGF0YSIsInByb3BzRnJvbVBhcmVudCIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJfaTIiLCJib2R5IiwicGFyYW1zU3RyaW5nIiwicHJvcHNKc29uIiwidXBkYXRlZEpzb24iLCJjaGlsZHJlbkpzb24iLCJwcm9wc0Zyb21QYXJlbnRKc29uIiwidXJsRW5jb2RlZEpzb25EYXRhIiwiQmFja2VuZCIsInJlcXVlc3RCdWlsZGVyIiwibWFrZVJlcXVlc3QiLCJfdGhpcyRyZXF1ZXN0QnVpbGRlciQiLCJiYWNrZW5kQWN0aW9uIiwiQmFja2VuZFJlc3BvbnNlIiwiX2dldEJvZHkiLCJfY2FsbGVlIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImdldEJvZHkiLCJnZXRFbGVtZW50QXNUYWdUZXh0Iiwib3V0ZXJIVE1MIiwiaW5kZXhPZiIsImNvbXBvbmVudE1hcEJ5RWxlbWVudCIsIldlYWtNYXAiLCJjb21wb25lbnRNYXBCeUNvbXBvbmVudCIsIk1hcCIsInJlZ2lzdGVyQ29tcG9uZW50IiwiY29tcG9uZW50IiwidW5yZWdpc3RlckNvbXBvbmVudCIsImdldENvbXBvbmVudCIsImNvdW50IiwibWF4Q291bnQiLCJpbnRlcnZhbCIsInNldEludGVydmFsIiwiY2xlYXJJbnRlcnZhbCIsImZpbmRDb21wb25lbnRzIiwiY3VycmVudENvbXBvbmVudCIsIm9ubHlQYXJlbnRzIiwib25seU1hdGNoTmFtZSIsImNvbXBvbmVudHMiLCJjb21wb25lbnROYW1lIiwiY29udGFpbnMiLCJmaW5kQ2hpbGRyZW4iLCJmb3VuZENoaWxkQ29tcG9uZW50IiwiY2hpbGRDb21wb25lbnROYW1lIiwiY2hpbGRDb21wb25lbnQiLCJmaW5kUGFyZW50IiwiSG9va01hbmFnZXIiLCJob29rcyIsInJlZ2lzdGVyIiwiaG9va05hbWUiLCJ1bnJlZ2lzdGVyIiwiaW5kZXgiLCJzcGxpY2UiLCJ0cmlnZ2VySG9vayIsIl9sZW4iLCJfa2V5IiwiQ2hhbmdpbmdJdGVtc1RyYWNrZXIiLCJjaGFuZ2VkSXRlbXMiLCJyZW1vdmVkSXRlbXMiLCJzZXRJdGVtIiwiaXRlbU5hbWUiLCJuZXdWYWx1ZSIsInByZXZpb3VzVmFsdWUiLCJyZW1vdmVkUmVjb3JkIiwib3JpZ2luYWwiLCJvcmlnaW5hbFJlY29yZCIsInJlbW92ZUl0ZW0iLCJ0cnVlT3JpZ2luYWxWYWx1ZSIsImdldENoYW5nZWRJdGVtcyIsIl9yZWYiLCJfcmVmMiIsImdldFJlbW92ZWRJdGVtcyIsImlzRW1wdHkiLCJFbGVtZW50Q2hhbmdlcyIsImFkZGVkQ2xhc3NlcyIsInJlbW92ZWRDbGFzc2VzIiwic3R5bGVDaGFuZ2VzIiwiYXR0cmlidXRlQ2hhbmdlcyIsImFkZENsYXNzIiwiY2xhc3NOYW1lIiwicmVtb3ZlQ2xhc3MiLCJhZGRTdHlsZSIsInN0eWxlTmFtZSIsIm9yaWdpbmFsVmFsdWUiLCJyZW1vdmVTdHlsZSIsImFkZEF0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsImdldEFkZGVkQ2xhc3NlcyIsImdldFJlbW92ZWRDbGFzc2VzIiwiZ2V0Q2hhbmdlZFN0eWxlcyIsImdldFJlbW92ZWRTdHlsZXMiLCJnZXRDaGFuZ2VkQXR0cmlidXRlcyIsImdldFJlbW92ZWRBdHRyaWJ1dGVzIiwiYXBwbHlUb0VsZW1lbnQiLCJfZWxlbWVudCRjbGFzc0xpc3QiLCJfZWxlbWVudCRjbGFzc0xpc3QyIiwiY2xhc3NMaXN0IiwicmVtb3ZlIiwiY2hhbmdlIiwic3R5bGUiLCJzZXRQcm9wZXJ0eSIsInJlbW92ZVByb3BlcnR5IiwiRXh0ZXJuYWxNdXRhdGlvblRyYWNrZXIiLCJzaG91bGRUcmFja0NoYW5nZUNhbGxiYWNrIiwiY2hhbmdlZEVsZW1lbnRzIiwiY2hhbmdlZEVsZW1lbnRzQ291bnQiLCJhZGRlZEVsZW1lbnRzIiwicmVtb3ZlZEVsZW1lbnRzIiwiaXNTdGFydGVkIiwiYmluZCIsInN0YXJ0IiwiZ2V0Q2hhbmdlZEVsZW1lbnQiLCJnZXRBZGRlZEVsZW1lbnRzIiwid2FzRWxlbWVudEFkZGVkIiwiaGFuZGxlUGVuZGluZ0NoYW5nZXMiLCJ0YWtlUmVjb3JkcyIsImhhbmRsZWRBdHRyaWJ1dGVNdXRhdGlvbnMiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwicyIsImlzRWxlbWVudEFkZGVkQnlUcmFuc2xhdGlvbiIsImlzQ2hhbmdlSW5BZGRlZEVsZW1lbnQiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiYWRkZWRFbGVtZW50IiwiaGFuZGxlQ2hpbGRMaXN0TXV0YXRpb24iLCJoYW5kbGVBdHRyaWJ1dGVNdXRhdGlvbiIsImFkZGVkTm9kZXMiLCJub2RlIiwiRWxlbWVudCIsInJlbW92ZWROb2RlcyIsImNoYW5nZWRFbGVtZW50IiwiaGFuZGxlQ2xhc3NBdHRyaWJ1dGVNdXRhdGlvbiIsImhhbmRsZVN0eWxlQXR0cmlidXRlTXV0YXRpb24iLCJoYW5kbGVHZW5lcmljQXR0cmlidXRlTXV0YXRpb24iLCJlbGVtZW50Q2hhbmdlcyIsInByZXZpb3VzVmFsdWVzIiwibWF0Y2giLCJuZXdWYWx1ZXMiLCJhZGRlZFZhbHVlcyIsInJlbW92ZWRWYWx1ZXMiLCJwcmV2aW91c1N0eWxlcyIsImV4dHJhY3RTdHlsZXMiLCJnZXRBdHRyaWJ1dGUiLCJuZXdTdHlsZXMiLCJhZGRlZE9yQ2hhbmdlZFN0eWxlcyIsInJlbW92ZWRTdHlsZXMiLCJzdHlsZXMiLCJzdHlsZU9iamVjdCIsInBhcnRzIiwicHJvcGVydHkiLCJ0cmltIiwiam9pbiIsInRhZ05hbWUiLCJwYXJzZURpcmVjdGl2ZXMiLCJjb250ZW50IiwiZGlyZWN0aXZlcyIsImN1cnJlbnRBY3Rpb25OYW1lIiwiY3VycmVudEFyZ3VtZW50VmFsdWUiLCJjdXJyZW50QXJndW1lbnRzIiwiY3VycmVudE1vZGlmaWVycyIsImdldExhc3RBY3Rpb25OYW1lIiwicHVzaEluc3RydWN0aW9uIiwibW9kaWZpZXJzIiwiZ2V0U3RyaW5nIiwicHVzaEFyZ3VtZW50IiwicHVzaE1vZGlmaWVyIiwiY2hhciIsImNvbWJpbmVTcGFjZWRBcnJheSIsImZpbmFsUGFydHMiLCJwYXJ0IiwidHJpbUFsbCIsInN0ciIsIm5vcm1hbGl6ZU1vZGVsTmFtZSIsImdldFZhbHVlRnJvbUVsZW1lbnQiLCJ2YWx1ZVN0b3JlIiwibW9kZWxOYW1lRGF0YSIsImdldE1vZGVsRGlyZWN0aXZlRnJvbUVsZW1lbnQiLCJtb2RlbFZhbHVlIiwiZ2V0TXVsdGlwbGVDaGVja2JveFZhbHVlIiwiY2hlY2tlZCIsImlucHV0VmFsdWUiLCJzZWxlY3RlZE9wdGlvbnMiLCJlbCIsImRhdGFzZXQiLCJzZXRWYWx1ZU9uRWxlbWVudCIsInNvbWUiLCJhcnJheVdyYXBwZWRWYWx1ZSIsImdldEFsbE1vZGVsRGlyZWN0aXZlRnJvbUVsZW1lbnRzIiwiZGlyZWN0aXZlIiwidGhyb3dPbk1pc3NpbmciLCJkYXRhTW9kZWxEaXJlY3RpdmVzIiwiY2xvc2VzdCIsImVsZW1lbnRCZWxvbmdzVG9UaGlzQ29tcG9uZW50IiwiY2xvc2VzdExpdmVDb21wb25lbnQiLCJjbG9uZUhUTUxFbGVtZW50IiwibmV3RWxlbWVudCIsImNsb25lTm9kZSIsIkhUTUxFbGVtZW50IiwiaHRtbFRvRWxlbWVudCIsImh0bWwiLCJ0ZW1wbGF0ZSIsImNoaWxkRWxlbWVudENvdW50IiwiY2hpbGQiLCJmaXJzdEVsZW1lbnRDaGlsZCIsImN1cnJlbnRWYWx1ZXMiLCJmaW5hbFZhbHVlcyIsIklkaW9tb3JwaCIsIkVNUFRZX1NFVCIsImRlZmF1bHRzIiwibW9ycGhTdHlsZSIsImNhbGxiYWNrcyIsImJlZm9yZU5vZGVBZGRlZCIsIm5vT3AiLCJhZnRlck5vZGVBZGRlZCIsImJlZm9yZU5vZGVNb3JwaGVkIiwiYWZ0ZXJOb2RlTW9ycGhlZCIsImJlZm9yZU5vZGVSZW1vdmVkIiwiYWZ0ZXJOb2RlUmVtb3ZlZCIsImJlZm9yZUF0dHJpYnV0ZVVwZGF0ZWQiLCJoZWFkIiwic2hvdWxkUHJlc2VydmUiLCJlbHQiLCJzaG91bGRSZUFwcGVuZCIsInNob3VsZFJlbW92ZSIsImFmdGVySGVhZE1vcnBoZWQiLCJtb3JwaCIsIm9sZE5vZGUiLCJuZXdDb250ZW50IiwiRG9jdW1lbnQiLCJkb2N1bWVudEVsZW1lbnQiLCJwYXJzZUNvbnRlbnQiLCJub3JtYWxpemVkQ29udGVudCIsIm5vcm1hbGl6ZUNvbnRlbnQiLCJjdHgiLCJjcmVhdGVNb3JwaENvbnRleHQiLCJtb3JwaE5vcm1hbGl6ZWRDb250ZW50Iiwibm9ybWFsaXplZE5ld0NvbnRlbnQiLCJibG9jayIsIm9sZEhlYWQiLCJuZXdIZWFkIiwicHJvbWlzZXMiLCJoYW5kbGVIZWFkRWxlbWVudCIsImFsbCIsImFzc2lnbiIsImlnbm9yZSIsIm1vcnBoQ2hpbGRyZW4iLCJiZXN0TWF0Y2giLCJmaW5kQmVzdE5vZGVNYXRjaCIsInByZXZpb3VzU2libGluZyIsIm5leHRTaWJsaW5nIiwibW9ycGhlZE5vZGUiLCJtb3JwaE9sZE5vZGVUbyIsImluc2VydFNpYmxpbmdzIiwiaWdub3JlVmFsdWVPZkFjdGl2ZUVsZW1lbnQiLCJwb3NzaWJsZUFjdGl2ZUVsZW1lbnQiLCJpZ25vcmVBY3RpdmVWYWx1ZSIsImFjdGl2ZUVsZW1lbnQiLCJpZ25vcmVBY3RpdmUiLCJpc1NvZnRNYXRjaCIsInJlcGxhY2VDaGlsZCIsIkhUTUxIZWFkRWxlbWVudCIsInN5bmNOb2RlRnJvbSIsIm5ld1BhcmVudCIsIm9sZFBhcmVudCIsIm5leHROZXdDaGlsZCIsImZpcnN0Q2hpbGQiLCJpbnNlcnRpb25Qb2ludCIsIm5ld0NoaWxkIiwiYXBwZW5kQ2hpbGQiLCJyZW1vdmVJZHNGcm9tQ29uc2lkZXJhdGlvbiIsImlzSWRTZXRNYXRjaCIsImlkU2V0TWF0Y2giLCJmaW5kSWRTZXRNYXRjaCIsInJlbW92ZU5vZGVzQmV0d2VlbiIsInNvZnRNYXRjaCIsImZpbmRTb2Z0TWF0Y2giLCJpbnNlcnRCZWZvcmUiLCJ0ZW1wTm9kZSIsInJlbW92ZU5vZGUiLCJpZ25vcmVBdHRyaWJ1dGUiLCJhdHRyIiwidG8iLCJ1cGRhdGVUeXBlIiwibm9kZVR5cGUiLCJmcm9tQXR0cmlidXRlcyIsInRvQXR0cmlidXRlcyIsIl9pdGVyYXRvcjMiLCJfc3RlcDMiLCJmcm9tQXR0cmlidXRlIiwidG9BdHRyaWJ1dGUiLCJub2RlVmFsdWUiLCJzeW5jSW5wdXRWYWx1ZSIsInN5bmNCb29sZWFuQXR0cmlidXRlIiwiaWdub3JlVXBkYXRlIiwiZnJvbVZhbHVlIiwidG9WYWx1ZSIsIkhUTUxPcHRpb25FbGVtZW50IiwiSFRNTFRleHRBcmVhRWxlbWVudCIsIm5ld0hlYWRUYWciLCJjdXJyZW50SGVhZCIsImFkZGVkIiwicmVtb3ZlZCIsInByZXNlcnZlZCIsIm5vZGVzVG9BcHBlbmQiLCJoZWFkTWVyZ2VTdHlsZSIsInNyY1RvTmV3SGVhZE5vZGVzIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsIm5ld0hlYWRDaGlsZCIsIl9pdGVyYXRvcjUiLCJfc3RlcDUiLCJjdXJyZW50SGVhZEVsdCIsImluTmV3Q29udGVudCIsImlzUmVBcHBlbmRlZCIsImlzUHJlc2VydmVkIiwiX2xvb3AiLCJuZXdOb2RlIiwiX25vZGVzVG9BcHBlbmQiLCJfaTMiLCJuZXdFbHQiLCJjcmVhdGVSYW5nZSIsImNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCIsImhyZWYiLCJzcmMiLCJfcmVzb2x2ZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJfaTQiLCJfcmVtb3ZlZCIsInJlbW92ZWRFbGVtZW50IiwicmVtb3ZlQ2hpbGQiLCJrZXB0IiwibWVyZ2VEZWZhdWx0cyIsImZpbmFsQ29uZmlnIiwiaWRNYXAiLCJjcmVhdGVJZE1hcCIsImRlYWRJZHMiLCJub2RlMSIsIm5vZGUyIiwiaWQiLCJnZXRJZEludGVyc2VjdGlvbkNvdW50Iiwic3RhcnRJbmNsdXNpdmUiLCJlbmRFeGNsdXNpdmUiLCJuZXdDaGlsZFBvdGVudGlhbElkQ291bnQiLCJwb3RlbnRpYWxNYXRjaCIsIm90aGVyTWF0Y2hDb3VudCIsInBvdGVudGlhbFNvZnRNYXRjaCIsInNpYmxpbmdTb2Z0TWF0Y2hDb3VudCIsInBhcnNlciIsIkRPTVBhcnNlciIsImNvbnRlbnRXaXRoU3Znc1JlbW92ZWQiLCJwYXJzZUZyb21TdHJpbmciLCJnZW5lcmF0ZWRCeUlkaW9tb3JwaCIsImh0bWxFbGVtZW50IiwicmVzcG9uc2VEb2MiLCJkdW1teVBhcmVudCIsIk5vZGUiLCJfaTUiLCJfYXJyMiIsInN0YWNrIiwiY3VycmVudEVsZW1lbnQiLCJiZXN0RWxlbWVudCIsIm5ld1Njb3JlIiwic2NvcmVFbGVtZW50IiwiaXNJZEluQ29uc2lkZXJhdGlvbiIsImlkSXNXaXRoaW5Ob2RlIiwidGFyZ2V0Tm9kZSIsImlkU2V0IiwiX2l0ZXJhdG9yNiIsIl9zdGVwNiIsInNvdXJjZVNldCIsIm1hdGNoQ291bnQiLCJfaXRlcmF0b3I3IiwiX3N0ZXA3IiwicG9wdWxhdGVJZE1hcEZvck5vZGUiLCJub2RlUGFyZW50IiwiaWRFbGVtZW50cyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJfaXRlcmF0b3I4IiwiX3N0ZXA4Iiwib2xkQ29udGVudCIsIm5vcm1hbGl6ZUF0dHJpYnV0ZXNGb3JDb21wYXJpc29uIiwiaXNGaWxlSW5wdXQiLCJzeW5jQXR0cmlidXRlcyIsImZyb21FbCIsInRvRWwiLCJleGVjdXRlTW9ycGhkb20iLCJyb290RnJvbUVsZW1lbnQiLCJyb290VG9FbGVtZW50IiwibW9kaWZpZWRGaWVsZEVsZW1lbnRzIiwiZ2V0RWxlbWVudFZhbHVlIiwiZXh0ZXJuYWxNdXRhdGlvblRyYWNrZXIiLCJvcmlnaW5hbEVsZW1lbnRJZHNUb1N3YXBBZnRlciIsIm9yaWdpbmFsRWxlbWVudHNUb1ByZXNlcnZlIiwibWFya0VsZW1lbnRBc05lZWRpbmdQb3N0TW9ycGhTd2FwIiwicmVwbGFjZVdpdGhDbG9uZSIsIm9sZEVsZW1lbnQiLCJjbG9uZWRPbGRFbGVtZW50IiwicmVwbGFjZVdpdGgiLCJfZnJvbUVsJHBhcmVudEVsZW1lbnQiLCJjbG9uZWRGcm9tRWwiLCJfX3giLCJ3aW5kb3ciLCJBbHBpbmUiLCJub2RlTmFtZSIsInRvVXBwZXJDYXNlIiwiaXNFcXVhbE5vZGUiLCJub3JtYWxpemVkRnJvbUVsIiwibm9ybWFsaXplZFRvRWwiLCJvcmlnaW5hbEVsZW1lbnQiLCJVbnN5bmNlZElucHV0c1RyYWNrZXIiLCJtb2RlbEVsZW1lbnRSZXNvbHZlciIsImVsZW1lbnRFdmVudExpc3RlbmVycyIsImV2ZW50IiwiaGFuZGxlSW5wdXRFdmVudCIsInVuc3luY2VkSW5wdXRzIiwiVW5zeW5jZWRJbnB1dENvbnRhaW5lciIsImFjdGl2YXRlIiwiX3JlZjMiLCJkZWFjdGl2YXRlIiwiX3JlZjQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwibWFya01vZGVsQXNTeW5jZWQiLCJtb2RlbE5hbWUiLCJ1cGRhdGVNb2RlbEZyb21FbGVtZW50IiwiZ2V0TW9kZWxOYW1lIiwiZ2V0VW5zeW5jZWRJbnB1dHMiLCJhbGxVbnN5bmNlZElucHV0cyIsImdldFVuc3luY2VkTW9kZWxzIiwiZ2V0VW5zeW5jZWRNb2RlbE5hbWVzIiwicmVzZXRVbnN5bmNlZEZpZWxkcyIsInVuc3luY2VkTm9uTW9kZWxGaWVsZHMiLCJ1bnN5bmNlZE1vZGVsTmFtZXMiLCJ1bnN5bmNlZE1vZGVsRmllbGRzIiwiZ2V0RGVlcERhdGEiLCJwcm9wZXJ0eVBhdGgiLCJfcGFyc2VEZWVwRGF0YSIsInBhcnNlRGVlcERhdGEiLCJjdXJyZW50TGV2ZWxEYXRhIiwiZmluYWxLZXkiLCJmaW5hbERhdGEiLCJwYXJzZSIsIlZhbHVlU3RvcmUiLCJkaXJ0eVByb3BzIiwicGVuZGluZ1Byb3BzIiwibm9ybWFsaXplZE5hbWUiLCJnZXRPcmlnaW5hbFByb3BzIiwiZ2V0RGlydHlQcm9wcyIsImdldFVwZGF0ZWRQcm9wc0Zyb21QYXJlbnQiLCJmbHVzaERpcnR5UHJvcHNUb1BlbmRpbmciLCJyZWluaXRpYWxpemVBbGxQcm9wcyIsInB1c2hQZW5kaW5nUHJvcHNCYWNrVG9EaXJ0eSIsInN0b3JlTmV3UHJvcHNGcm9tUGFyZW50IiwiY2hhbmdlZCIsIl9pNiIsIl9PYmplY3QkZW50cmllczIiLCJfT2JqZWN0JGVudHJpZXMyJF9pIiwiQ29tcG9uZW50IiwibGlzdGVuZXJzIiwiYmFja2VuZCIsImVsZW1lbnREcml2ZXIiLCJmaW5nZXJwcmludCIsImRlZmF1bHREZWJvdW5jZSIsImJhY2tlbmRSZXF1ZXN0IiwicGVuZGluZ0FjdGlvbnMiLCJwZW5kaW5nRmlsZXMiLCJpc1JlcXVlc3RQZW5kaW5nIiwicmVxdWVzdERlYm91bmNlVGltZW91dCIsImxpc3RlbmVyIiwiX3RoaXM3JGxpc3RlbmVycyRnZXQiLCJ1bnN5bmNlZElucHV0c1RyYWNrZXIiLCJyZXNldFByb21pc2UiLCJhZGRQbHVnaW4iLCJwbHVnaW4iLCJhdHRhY2hUb0NvbXBvbmVudCIsImNsZWFyUmVxdWVzdERlYm91bmNlVGltZW91dCIsIm9uIiwib2ZmIiwicmVSZW5kZXIiLCJkZWJvdW5jZSIsIm5leHRSZXF1ZXN0UHJvbWlzZSIsImlzQ2hhbmdlZCIsImRlYm91bmNlZFN0YXJ0UmVxdWVzdCIsImdldERhdGEiLCJ0cnlTdGFydGluZ1JlcXVlc3QiLCJlbWl0Iiwib25seU1hdGNoaW5nQ29tcG9uZW50c05hbWVkIiwicGVyZm9ybUVtaXQiLCJlbWl0VXAiLCJlbWl0U2VsZiIsImRvRW1pdCIsIm1hdGNoaW5nTmFtZSIsIl90aGlzOCIsImlzVHVyYm9FbmFibGVkIiwiVHVyYm8iLCJwZXJmb3JtUmVxdWVzdCIsIl90aGlzOSIsInRoaXNQcm9taXNlUmVzb2x2ZSIsIm5leHRSZXF1ZXN0UHJvbWlzZVJlc29sdmUiLCJmaWxlc1RvU2VuZCIsIl9pNyIsIl9PYmplY3QkZW50cmllczMiLCJfT2JqZWN0JGVudHJpZXMzJF9pIiwicmVxdWVzdENvbmZpZyIsIl9yZWY1IiwiX2NhbGxlZTIiLCJfaGVhZGVycyRnZXQiLCJiYWNrZW5kUmVzcG9uc2UiLCJfaTgiLCJfT2JqZWN0JHZhbHVlcyIsImNvbnRyb2xzIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiZGlzcGxheUVycm9yIiwicmVuZGVyRXJyb3IiLCJwcm9jZXNzUmVyZW5kZXIiLCJfeDIiLCJfdGhpczEwIiwic2hvdWxkUmVuZGVyIiwidmlzaXQiLCJsb2NhdGlvbiIsIm1vZGlmaWVkTW9kZWxWYWx1ZXMiLCJtYXRjaGVzIiwiY29uc29sZSIsIm5ld1Byb3BzIiwiZ2V0Q29tcG9uZW50UHJvcHMiLCJldmVudHNUb0VtaXQiLCJnZXRFdmVudHNUb0VtaXQiLCJicm93c2VyRXZlbnRzVG9EaXNwYXRjaCIsImdldEJyb3dzZXJFdmVudHNUb0Rpc3BhdGNoIiwiX3JlZjYiLCJfcmVmNyIsIkN1c3RvbUV2ZW50IiwiYnViYmxlcyIsImNhbGN1bGF0ZURlYm91bmNlIiwiY2xlYXJUaW1lb3V0IiwiX3RoaXMxMSIsInNldFRpbWVvdXQiLCJtb2RhbCIsImdldEVsZW1lbnRCeUlkIiwicGFkZGluZyIsImJhY2tncm91bmRDb2xvciIsInpJbmRleCIsInBvc2l0aW9uIiwidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0IiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJpZnJhbWUiLCJib3JkZXJSYWRpdXMiLCJmbGV4R3JvdyIsIm92ZXJmbG93IiwiY29udGVudFdpbmRvdyIsIm9wZW4iLCJ3cml0ZSIsImNsb3NlIiwiY2xvc2VNb2RhbCIsImZvY3VzIiwiX3RoaXMxMiIsIl91cGRhdGVGcm9tUGFyZW50UHJvcHMiLCJwcm94aWZ5Q29tcG9uZW50IiwiUHJveHkiLCJwcm9wIiwiY2FsbGFibGUiLCJfbGVuMiIsIl9rZXkyIiwiUmVmbGVjdCIsIlN0aW11bHVzRWxlbWVudERyaXZlciIsImNvbnRyb2xsZXIiLCJtb2RlbERpcmVjdGl2ZSIsInByb3BzVmFsdWUiLCJldmVudHNUb0VtaXRWYWx1ZSIsImV2ZW50c1RvRGlzcGF0Y2hWYWx1ZSIsImdldE1vZGVsQmluZGluZyIsInRhcmdldEV2ZW50TmFtZSIsIm1vZGlmaWVyIiwicGFyc2VJbnQiLCJfbW9kZWxEaXJlY3RpdmUkYWN0aW8iLCJfbW9kZWxEaXJlY3RpdmUkYWN0aW8yIiwiaW5uZXJNb2RlbE5hbWUiLCJDaGlsZENvbXBvbmVudFBsdWdpbiIsInBhcmVudE1vZGVsQmluZGluZ3MiLCJtb2RlbERpcmVjdGl2ZXMiLCJfdGhpczEzIiwiZ2V0Q2hpbGRyZW5GaW5nZXJwcmludHMiLCJub3RpZnlQYXJlbnRNb2RlbENoYW5nZSIsImZpbmdlcnByaW50cyIsImdldENoaWxkcmVuIiwidGFnIiwidG9Mb3dlckNhc2UiLCJwYXJlbnRDb21wb25lbnQiLCJtb2RlbEJpbmRpbmciLCJjaGlsZE1vZGVsTmFtZSIsIkxhenlQbHVnaW4iLCJpbnRlcnNlY3Rpb25PYnNlcnZlciIsIl9jb21wb25lbnQkZWxlbWVudCRhdCIsIl90aGlzMTQiLCJnZXROYW1lZEl0ZW0iLCJnZXRPYnNlcnZlciIsIl90aGlzMTQkaW50ZXJzZWN0aW9uTyIsInVub2JzZXJ2ZSIsIkludGVyc2VjdGlvbk9ic2VydmVyIiwib2JzZXJ2ZXIiLCJpc0ludGVyc2VjdGluZyIsIkxvYWRpbmdQbHVnaW4iLCJfdGhpczE1IiwicmVxdWVzdCIsInN0YXJ0TG9hZGluZyIsImZpbmlzaExvYWRpbmciLCJ0YXJnZXRFbGVtZW50IiwiaGFuZGxlTG9hZGluZ1RvZ2dsZSIsImlzTG9hZGluZyIsIl90aGlzMTYiLCJhZGRBdHRyaWJ1dGVzIiwicmVtb3ZlQXR0cmlidXRlcyIsImdldExvYWRpbmdEaXJlY3RpdmVzIiwiX3JlZjgiLCJoYW5kbGVMb2FkaW5nRGlyZWN0aXZlIiwiX3RoaXMxNyIsImZpbmFsQWN0aW9uIiwicGFyc2VMb2FkaW5nQWN0aW9uIiwiZGVsYXkiLCJ2YWxpZE1vZGlmaWVycyIsIl92YWxpZE1vZGlmaWVycyRnZXQiLCJsb2FkaW5nRGlyZWN0aXZlIiwic2hvd0VsZW1lbnQiLCJoaWRlRWxlbWVudCIsImxvYWRpbmdEaXJlY3RpdmVzIiwibWF0Y2hpbmdFbGVtZW50cyIsIlNWR0VsZW1lbnQiLCJsb2FkaW5nIiwiY2xhc3NlcyIsIl9lbGVtZW50JGNsYXNzTGlzdDMiLCJfZWxlbWVudCRjbGFzc0xpc3Q0IiwiYXR0cmlidXRlIiwiUGFnZVVubG9hZGluZ1BsdWdpbiIsImlzQ29ubmVjdGVkIiwiX3RoaXMxOCIsIlBvbGxpbmdEaXJlY3RvciIsImlzUG9sbGluZ0FjdGl2ZSIsInBvbGxpbmdJbnRlcnZhbHMiLCJhZGRQb2xsIiwiYWN0aW9uTmFtZSIsImR1cmF0aW9uIiwicG9sbHMiLCJpbml0aWF0ZVBvbGwiLCJzdGFydEFsbFBvbGxpbmciLCJfdGhpczE5IiwiX3JlZjkiLCJzdG9wQWxsUG9sbGluZyIsImNsZWFyUG9sbGluZyIsIl90aGlzMjAiLCJ0aW1lciIsIlBvbGxpbmdQbHVnaW4iLCJfdGhpczIxIiwicG9sbGluZ0RpcmVjdG9yIiwiaW5pdGlhbGl6ZVBvbGxpbmciLCJfdGhpczIyIiwicG9sbCIsInJhd1BvbGxDb25maWciLCJ3YXJuIiwiaXNWYWx1ZUVtcHR5IiwiX2k5IiwiX09iamVjdCRrZXlzIiwidG9RdWVyeVN0cmluZyIsImJ1aWxkUXVlcnlTdHJpbmdFbnRyaWVzIiwiYmFzZUtleSIsIl9yZWYxMCIsIl9yZWYxMSIsImlLZXkiLCJpVmFsdWUiLCJfcmVmMTIiLCJfcmVmMTMiLCJmcm9tUXVlcnlTdHJpbmciLCJpbnNlcnREb3ROb3RhdGVkVmFsdWVJbnRvRGF0YSIsIl9rZXkkc3BsaXQiLCJfa2V5JHNwbGl0MiIsIl90b0FycmF5IiwiZmlyc3QiLCJzZWNvbmQiLCJyZXN0IiwiX3JlZjE0IiwiX3JlZjE1IiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZG90Tm90YXRlZEtleSIsIlVybFV0aWxzIiwiX1VSTCIsInNldERhdGEiLCJfd3JhcE5hdGl2ZVN1cGVyIiwiVVJMIiwiSGlzdG9yeVN0cmF0ZWd5IiwiaGlzdG9yeSIsInJlcGxhY2VTdGF0ZSIsIlF1ZXJ5U3RyaW5nUGx1Z2luIiwibWFwcGluZyIsIl90aGlzMjMiLCJ1cmxVdGlscyIsImN1cnJlbnRVcmwiLCJfcmVmMTYiLCJfcmVmMTciLCJTZXRWYWx1ZU9udG9Nb2RlbEZpZWxkc1BsdWdpbiIsIl90aGlzMjQiLCJzeW5jaHJvbml6ZVZhbHVlT2ZNb2RlbEZpZWxkcyIsIkhUTUxGb3JtRWxlbWVudCIsIlZhbGlkYXRlZEZpZWxkc1BsdWdpbiIsIl90aGlzMjUiLCJoYW5kbGVNb2RlbFNldCIsInZhbGlkYXRlZEZpZWxkcyIsIkxpdmVDb250cm9sbGVyRGVmYXVsdCIsIl9zdXBlcjIiLCJfdGhpczI2IiwicGVuZGluZ0FjdGlvblRyaWdnZXJNb2RlbEVsZW1lbnQiLCJoYW5kbGVDaGFuZ2VFdmVudCIsImNyZWF0ZUNvbXBvbmVudCIsImNvbm5lY3RDb21wb25lbnQiLCJkaXNjb25uZWN0Q29tcG9uZW50IiwidXBkYXRlIiwiY3VycmVudFRhcmdldCIsInVwZGF0ZU1vZGVsRnJvbUVsZW1lbnRFdmVudCIsIl90aGlzMjciLCJyYXdBY3Rpb24iLCJhY3Rpb25BcmdzIiwic3RvcFByb3BhZ2F0aW9uIiwiX3ZhbGlkTW9kaWZpZXJzJGdldDIiLCJfaTEwIiwiX09iamVjdCRlbnRyaWVzNCIsIl9PYmplY3QkZW50cmllczQkX2kiLCIkcmVuZGVyIiwiX3RoaXMyOCIsImdldEVtaXREaXJlY3RpdmVzIiwiX3JlZjE4IiwibmFtZU1hdGNoIiwiX3RoaXMyOSIsIl9yZWYxOSIsIl90aGlzMzAiLCJfcmVmMjAiLCIkdXBkYXRlTW9kZWwiLCJwcm9wc1VwZGF0ZWRGcm9tUGFyZW50VmFsdWVDaGFuZ2VkIiwicHJvcHNVcGRhdGVkRnJvbVBhcmVudFZhbHVlIiwiZmluZ2VycHJpbnRWYWx1ZUNoYW5nZWQiLCJmaW5nZXJwcmludFZhbHVlIiwiZXZlbnRJbmZvIiwiZXZlbnRBcmdzIiwiZW1pdHMiLCJfdGhpczMxIiwibmFtZVZhbHVlIiwibGlzdGVuZXJzVmFsdWUiLCJiYWNrZW5kRmFjdG9yeSIsInByb3hpZWRDb21wb25lbnQiLCJfX2NvbXBvbmVudCIsImhhc0RlYm91bmNlVmFsdWUiLCJkZWJvdW5jZVZhbHVlIiwicXVlcnlNYXBwaW5nVmFsdWUiLCJfdGhpczMyIiwiX3JlZjIxIiwiX3RoaXMzMyIsIl9yZWYyMiIsImV2ZW50TmFtZSIsIl9lbGVtZW50JGZpbGVzIiwiZmluYWxWYWx1ZSIsImNhbkJ1YmJsZSIsImNhbmNlbGFibGUiLCJfdGhpczM0IiwicHJvcHNVcGRhdGVkRnJvbVBhcmVudCIsImV2ZW50c1RvRGlzcGF0Y2giLCJyZXF1ZXN0TWV0aG9kIiwicXVlcnlNYXBwaW5nIiwicmVxdWVzdE1ldGhvZFZhbHVlIiwicmVnaXN0ZXJhYmxlcyIsIkNoYXJ0IiwiaXNDaGFydEluaXRpYWxpemVkIiwiY2hhcnQiLCJIVE1MQ2FudmFzRWxlbWVudCIsInZpZXdWYWx1ZSIsImNhbnZhc0NvbnRleHQiLCJnZXRDb250ZXh0Iiwidmlld1ZhbHVlQ2hhbmdlZCIsInJlc3BvbnNpdmUiLCJvcmlnaW5hbFdpZHRoIiwid2lkdGgiLCJvZmZzZXRXaWR0aCIsInZpZXciXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file