@kkcompany/player 2.25.0-canary.23 → 2.25.0-canary.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [2.25.0-canary.24](https://gitlab.kkinternal.com/playback/web-playcraft/compare/v2.25.0-canary.23...v2.25.0-canary.24) (2026-01-14)
6
+
5
7
  ## [2.25.0-canary.23](https://gitlab.kkinternal.com/playback/web-playcraft/compare/v2.25.0-canary.22...v2.25.0-canary.23) (2026-01-13)
6
8
 
7
9
  ## [2.25.0-canary.22](https://gitlab.kkinternal.com/playback/web-playcraft/compare/v2.25.0-canary.21...v2.25.0-canary.22) (2026-01-12)
package/dist/core.mjs CHANGED
@@ -37,7 +37,7 @@ const waitFor = (check, handler) => {
37
37
  function getVersion() {
38
38
  try {
39
39
  // eslint-disable-next-line no-undef
40
- return "2.25.0-canary.23";
40
+ return "2.25.0-canary.24";
41
41
  } catch (e) {
42
42
  return undefined;
43
43
  }
package/dist/index.js CHANGED
@@ -5745,7 +5745,7 @@ $$5({ target: 'Array', proto: true, forced: FORCED }, {
5745
5745
  function getVersion() {
5746
5746
  try {
5747
5747
  // eslint-disable-next-line no-undef
5748
- return "2.25.0-canary.23";
5748
+ return "2.25.0-canary.24";
5749
5749
  } catch (e) {
5750
5750
  return undefined;
5751
5751
  }
@@ -17812,8 +17812,8 @@ const shouldPause = _ref => {
17812
17812
 
17813
17813
 
17814
17814
  const menuClasses = {
17815
- default: /*#__PURE__*/css$1(LanguageMenu.styles, "production" === "production" ? "" : ";label:default;", "production" === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUVXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtpc0Rlc2t0b3B9IGZyb20gJ3V0aWwvZW52aXJvbm1lbnQnXG5pbXBvcnQgbXVsdGlSZWYgZnJvbSAndXRpbC9tdWx0aVJlZidcbmltcG9ydCB7b25WaWV3TW9kZUNoYW5nZSwgdG9nZ2xlRnVsbHNjcmVlbn0gZnJvbSAndXRpbC92aWV3TW9kZXMnXG5pbXBvcnQge3VzZUF1dG9IaWRlfSBmcm9tICdob29rcydcbmltcG9ydCB7SW50bFByb3ZpZGVyfSBmcm9tICdjb250ZXh0L0kxOG4nXG5pbXBvcnQge2dldE1lZGlhVGltZSwgaXNCdWZmZXJlZH0gZnJvbSAncGxheWVyQ29yZS9tZWRpYUJpbmRpbmdzJ1xuaW1wb3J0IEVycm9yIGZyb20gJ3BsYXllclVpL0Vycm9yJ1xuaW1wb3J0IExheW91dCBmcm9tICdwbGF5ZXJVaS9EZWZhdWx0TGF5b3V0J1xuaW1wb3J0IHtcbiAgQnV0dG9uLFxuICBMaXZlQnV0dG9uLFxuICBGdWxsc2NyZWVuQnV0dG9uLFxuICBQbGF5QnV0dG9uLFxuICBGb3J3YXJkQnV0dG9uLFxufSBmcm9tICdwbGF5ZXJVaS9idXR0b25zJ1xuaW1wb3J0IFNlZWtiYXIgZnJvbSAncGxheWVyVWkvU2Vla2JhcidcbmltcG9ydCBEaXNwbGF5VGltZSBmcm9tICdwbGF5ZXJVaS9EaXNwbGF5VGltZSdcbmltcG9ydCBMb2FkaW5nU3Bpbm5lciBmcm9tICdwbGF5ZXJVaS9Mb2FkaW5nU3Bpbm5lcidcbmltcG9ydCBCYWNrZHJvcCBmcm9tICdwbGF5ZXJVaS9CYWNrZHJvcCdcbmltcG9ydCBTZXR0aW5ncyBmcm9tICdwbGF5ZXJVaS9TZXR0aW5ncydcbmltcG9ydCBPdmVybGF5UGFuZWwgZnJvbSAncGxheWVyVWkvT3ZlcmxheVBhbmVsJ1xuaW1wb3J0IExhbmd1YWdlTWVudSBmcm9tICdwbGF5ZXJVaS9MYW5ndWFnZU1lbnUnXG5pbXBvcnQgUGxheVBhbmVsIGZyb20gJ3BsYXllclVpL1BsYXlQYW5lJ1xuaW1wb3J0IFZvbHVtZUNvbnRyb2wgZnJvbSAnY29tcG9uZW50L1ZvbHVtZUNvbnRyb2wnXG5pbXBvcnQgQ2FzdFVpIGZyb20gJ2Nhc3QvQ2FzdFVpJ1xuaW1wb3J0IHtsaW5rQ2FzdH0gZnJvbSAnY2FzdC9mcmFtZXdvcmsnXG5pbXBvcnQge0Nhc3RTdGF0ZX0gZnJvbSAnRW51bSdcbmltcG9ydCB7ZGlzcGF0Y2hDaGFwdGVyRXZlbnRzfSBmcm9tICcuL3RpbWVsaW5lJ1xuaW1wb3J0IFZpZGVvIGZyb20gJy4uL1ZpZGVvJ1xuaW1wb3J0IHtnZXRMYW5ndWFnZU9wdGlvbnMsIGdldFF1YWxpdHlPcHRpb25zLCBnZXRTZXR0aW5nc0RhdGF9IGZyb20gJy4vc2V0dGluZ3MnXG5pbXBvcnQge2xpbmtNZWRpYVZvbHVtZSwgc3luY1ZvbHVtZX0gZnJvbSAnLi92b2x1bWUnXG5pbXBvcnQgU2Vla1ByZXZpZXcgZnJvbSAnLi9TZWVrUHJldmlldydcblxuY29uc3Qgc2l6ZXMgPSB7XG4gICdzbWFsbC1lbWJlZCc6IDIwMCxcbiAgZW1iZWQ6IDQwMCxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6IDYwMCxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiA5MDAsXG4gIGRlc2t0b3A6IDEyMDAsXG59XG5cbmNvbnN0IHVzZUxpbmtTdGF0ZSA9IChyZXF1ZXN0LCBkZXBlbmRlbmNpZXMgPSBbXSkgPT4ge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXF1ZXN0KHNldFN0YXRlKVxuICB9LCBkZXBlbmRlbmNpZXMpXG4gIHJldHVybiBzdGF0ZVxufVxuXG5jb25zdCBmbGlwU3RhdGUgPSBzdGF0ZSA9PiAoc3RhdGUgPT09ICdwbGF5aW5nJyA/ICdwYXVzZWQnIDogJ3BsYXlpbmcnKVxuXG4vLyBGSVhNRTogdG9vIGZldyBsaW5lcyB0byBzcGxpdCBhIGZpbGUsIGxvb2tpbmcgYSBiZXR0ZXIgcGxhY2VcbmNvbnN0IGdldFRodW1ibmFpbHNVcmwgPSBzb3VyY2UgPT5cbiAgW10uY29uY2F0KHNvdXJjZSkuZmluZChpdGVtID0+IGl0ZW0udHlwZSA9PT0gJ3RodW1ibmFpbCcpPy5zcmNcblxuY29uc3QgZGVmYXVsdFNldHRpbmdzID0ge31cblxuY29uc3Qgc2hvdWxkUGF1c2UgPSAoe3VzZXJGb2N1cywgdWlUeXBlfSkgPT5cbiAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgL3NldHRpbmdzfGNoYXB0ZXItbGlzdC8udGVzdCh1c2VyRm9jdXMpKSB8fFxuICAvYmxvY2tpbmd8c2Vla2JhcnxzaGFyZS1pbm5lci8udGVzdCh1c2VyRm9jdXMpXG5cbi8vIFRPRE8gZXh0cmFjdCB0byBzb21ld2hlcmUgZWxzZVxuY29uc3QgbWVudUNsYXNzZXMgPSB7XG4gIGRlZmF1bHQ6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzKSxcbiAgZGVza3RvcDogY3NzKExhbmd1YWdlTWVudS5zdHlsZXMsIExhbmd1YWdlTWVudS5kZXNrdG9wU3R5bGVzKSxcbn1cblxuY29uc3QgTGFuZ3VhZ2VTZXR0aW5ncyA9ICh7XG4gIHVpVHlwZSxcbiAgYXVkaW9UcmFja3MgPSBbXSxcbiAgdGV4dFRyYWNrcyA9IFtdLFxuICBnZXRQbGF5ZXIsXG4gIG9uQ2hhbmdlLFxuICBzbG90cyA9IHtMYW5ndWFnZU1lbnV9LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnZXRMYW5ndWFnZU9wdGlvbnMoZ2V0UGxheWVyKCksIHthdWRpb1RyYWNrcywgdGV4dFRyYWNrc30pXG4gIHJldHVybiAoXG4gICAgYXVkaW9UcmFja3MubGVuZ3RoID4gMCAmJlxuICAgIHRleHRUcmFja3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICA8T3ZlcmxheVBhbmVsXG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICB0aXRsZT1cIuWtl+W5leODu+mfs+WjsOOCkuWIh+OCiuabv+OBiOOCi1wiXG4gICAgICAgIGJ1dHRvbkljb249XCJzdWJ0aXRsZVwiXG4gICAgICA+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIGF1ZGlvVHJhY2s6IGFwcEF1ZGlvVHJhY2ssXG4gIHRleHRUcmFjazogYXBwVGV4dFRyYWNrLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgICAgb3RoZXJTZWN0aW9uczogYXBwU2V0dGluZ3Muc2VjdGlvbnMsXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHtwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLCB2YWx1ZXMsIHNlY3Rpb25zfVxuICAgIH0pXG4gIH1cbiAgY29uc3QgbGFzdFN0YXRlID0gdXNlUmVmKHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGhhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2UgPSAoZXZlbnQsIHN0YXRlKSA9PiB7XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnZXJyb3InKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgb25QbGF5YmFja1N0YXRlQ2hhbmdlPy4oZXZlbnQsIHN0YXRlKVxuICAgIC8vIHByZXZpb3VzbHkgVUkgcGxheWJhY2sgc3RhdGUgd2FzIHN5bmNlZCBvbmx5IHdoZW5cbiAgICAvLyBleGl0aW5nIGlPUyB2aWRlbyBvbmx5IGZ1bGxzY3JlZW4od2Via2l0ZW5kZnVsbHNjcmVlbilcbiAgICBpZiAoXG4gICAgICAvcGxheWluZ3xwYXVzZWQvLnRlc3Qoc3RhdGUpICYmXG4gICAgICAhKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpICYmXG4gICAgICAhc2hvdWxkUGF1c2Uoe3VzZXJGb2N1cywgdWlUeXBlfSlcbiAgICApIHtcbiAgICAgIHRvZ2dsZVBsYXkoc3RhdGUpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2VuZGVkJykge1xuICAgICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnbG9hZGluZycgJiYgbGFzdFN0YXRlLmN1cnJlbnQgIT09ICdpbml0Jykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0b2dnbGVQbGF5KCdwbGF5aW5nJyksIDEpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ3BsYXlpbmcnKSB7XG4gICAgICBzZXRJc1VzZXJBY3RpdmUodHJ1ZSlcbiAgICB9XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnbG9hZGluZycpIHtcbiAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgIH1cbiAgICBsYXN0U3RhdGUuY3VycmVudCA9IHN0YXRlXG4gICAgc2V0UGxheWJhY2tTdGF0ZShzdGF0ZSlcbiAgfVxuXG4gIGNvbnN0IGNoYW5nZVNldHRpbmdzID0gKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59ID0ge30pID0+IHtcbiAgICAvLyBUT0RPIGNvbnNpZGVyIG1lcmdlIGludG8gdXNlUmVkdWNlcj9cbiAgICBvbkNoYW5nZVNldHRpbmdzPy4oe25hbWUsIHZhbHVlfSlcbiAgICBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSlcbiAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAuLi5jdXJyZW50LFxuICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIFtuYW1lXTogdmFsdWV9LFxuICAgICAgcHJlZmVycmVkOiB7Li4uY3VycmVudC5wcmVmZXJyZWQsIFtuYW1lXTogdmFsdWV9LFxuICAgIH0pKVxuICAgIGlmICgha2VlcE9wZW4pIHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICB9XG4gIH1cbiAgY29uc3Qgb3BlblNldHRpbmdzID0gZXZlbnQgPT4ge1xuICAgIGNvbnN0IGFuaW1hdGlvbkZyYW1lID1cbiAgICAgIHVzZXJGb2N1cyAhPT0gJ3NldHRpbmdzJyAmJlxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgb25PcGVuU2V0dGluZ3M/LihldmVudCwgc2V0dGluZ3MpXG4gICAgICAgIC8vIEluIGlPUyBTYWZhcmksIHdlIG5lZWQgdG8gdXBkYXRlIHNldHRpbmdzIGRhdGFcbiAgICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgICB9KVxuICAgIHNldFVzZXJGb2N1cyhjdXJyZW50ID0+IChjdXJyZW50ID09PSAnc2V0dGluZ3MnID8gJycgOiAnc2V0dGluZ3MnKSlcbiAgICByZXR1cm4gYW5pbWF0aW9uRnJhbWVcbiAgfVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1JhdGUgPiAwKSB7XG4gICAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBzcGVlZDogYXBwUGxheWJhY2tSYXRlfSxcbiAgICAgIH0pKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrUmF0ZV0pXG5cbiAgY29uc3QgcXVhbGl0eU9wdGlvbnMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFF1YWxpdHlPcHRpb25zKHNldHRpbmdzKSxcbiAgICBbc2V0dGluZ3MudmFsdWVzLnF1YWxpdHldXG4gIClcbiAgY29uc3Qgdmlld01vZGUgPSB1c2VMaW5rU3RhdGUodXBkYXRlID0+XG4gICAgb25WaWV3TW9kZUNoYW5nZSh2aWRlb1JlZi5jdXJyZW50LCB1cGRhdGUpXG4gIClcbiAgY29uc3Qgc291cmNlT3ZlcnJpZGUgPSB1c2VMaW5rU3RhdGUoXG4gICAgYXN5bmMgdXBkYXRlID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICAgIHNvdXJjZSAmJiAoYXdhaXQgcXVhbGl0eS5yZXdyaXRlTWFuaWZlc3Q/Lihzb3VyY2UsIHF1YWxpdHlPcHRpb25zKSlcbiAgICAgIHVwZGF0ZShyZXN1bHQgfHwgc291cmNlKVxuICAgIH0sXG4gICAgW3NvdXJjZSwgcXVhbGl0eU9wdGlvbnNdXG4gIClcbiAgY29uc3Qgd2FpdGluZyA9IC9lbXB0aWVkfGxvYWRpbmd8YnVmZmVyaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGFjdGl2ZVBsYXliYWNrID1cbiAgICBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ3dhaXRpbmcnXG4gIGNvbnN0IHtcbiAgICBtb2RlOiBhdXRvSGlkZU1vZGUsXG4gICAgb25DbGljayxcbiAgICBvbk1vdXNlTW92ZSxcbiAgfSA9IHVzZUF1dG9IaWRlKHtcbiAgICBwaW5uZWQ6ICFjb250cm9scy5hdXRvaGlkZSB8fCB3YWl0aW5nIHx8ICFhY3RpdmVQbGF5YmFjayB8fCB1c2VyRm9jdXMsXG4gICAgdGFwVG9IaWRlOiB1aVR5cGUgPT09ICdtb2JpbGUnLFxuICAgIGhpZGVUaW1lTXM6IGNvbnRyb2xzLmF1dG9oaWRlLFxuICB9KVxuICBjb25zdCBtb2RlID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBjb250cm9scy5hdXRvaGlkZVxuICAgICAgPyBhdXRvSGlkZU1vZGVcbiAgICAgIDogY29udHJvbHNcbiAgICAgID8gJ3Nob3duJ1xuICAgICAgOiAnaGlkZGVuJ1xuICBjb25zdCBjb250cm9sc0Rpc3BsYXkgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdzZWVrYmFyLW9ubHknXG4gICAgICA6IGNvbnRyb2xzID09PSAndGl0bGUtb25seScgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2VtcHRpZWQnXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IG1vZGVcbiAgY29uc3Qgc2hvdWxkSGlkZVBhbmVscyA9XG4gICAgKGNvbnRyb2xzID09PSAnbm8tcGFuZWwnIHx8XG4gICAgICBjb250cm9sc0Rpc3BsYXkgPT09ICdoaWRkZW4nIHx8XG4gICAgICBwbGF5YmFja1N0YXRlID09PSAnZW5kZWQnKSAmJlxuICAgIHVzZXJGb2N1c1xuICBjb25zdCBoYXZlUGxheVBhbmVsID1cbiAgICAhYmxvY2tpbmcgJiZcbiAgICB1aVR5cGUgPT09ICdkZXNrdG9wJyAmJlxuICAgICF3YWl0aW5nICYmXG4gICAgIS92b2x1bWV8JycvLnRlc3QodXNlckZvY3VzKSAmJlxuICAgICEvdGl0bGUtb25seXxuby1wYW5lbC8udGVzdChjb250cm9scykgJiZcbiAgICAoY29udHJvbHMuYXV0b2hpZGUgfHwgbW9kZSA9PT0gJ3Nob3duJylcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRIaWRlUGFuZWxzKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBpZiAocmVmcy5jdXJyZW50LmNsb3NlTWVudSkge1xuICAgICAgICByZWZzLmN1cnJlbnQuY2xvc2VNZW51KClcbiAgICAgICAgcmVmcy5jdXJyZW50LmNsb3NlTWVudSA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cbiAgfSwgW3Nob3VsZEhpZGVQYW5lbHNdKVxuICB1c2VFZmZlY3QoKCkgPT4gXG4gICAgb24oY29udGFpbmVyUmVmLmN1cnJlbnQsICdmb2N1cy1tZW51JywgZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50LmRldGFpbD8uc3RhdHVzID09PSAnb3BlbicpIHtcbiAgICAgICAgc2V0VXNlckZvY3VzKCdtZW51JylcbiAgICAgICAgcmVmcy5jdXJyZW50LmNsb3NlTWVudSA9ICgpID0+IGV2ZW50LmRldGFpbC5jbG9zZU1lbnU/LigpXG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQuZGV0YWlsPy5zdGF0dXMgPT09ICdjbG9zZWQnKSB7XG4gICAgICAgIHNldFVzZXJGb2N1cyhjdXJyZW50ID0+IChjdXJyZW50ID09PSAnbWVudScgPyAnJyA6IGN1cnJlbnQpKVxuICAgICAgfVxuICAgIH0pXG4gICwgW10pXG4gIGNvbnN0IHtzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfSA9IGxpbmtNZWRpYVZvbHVtZSgoKSA9PiAoe1xuICAgIHZpZGVvOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgIGdldFBsYXllcjogKCkgPT4gcGxheWVyUmVmLmN1cnJlbnQsXG4gIH0pKVxuICBjb25zdCBjaGFuZ2VQcmV2aW91cyA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZVByZXZpb3VzKGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cbiAgY29uc3QgY2hhbmdlTmV4dCA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZU5leHQoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuXG4gIHVzZUVmZmVjdChmZXRjaFNldHRpbmdzLCBbYXBwU2V0dGluZ3NdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRoZSBhZENvbnRhaW5lciBzaG91bGQgYmUgc2V0IGJlZm9yZSBgbG9hZGAgYmVjYXVzZSBJbWFEYWkubG9hZCBuZWVkcyBpdC5cbiAgICBwbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHBsdWdpbi5zZXRBZENvbnRhaW5lcj8uKGFkQ29udGFpbmVyUmVmLmN1cnJlbnQpKVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIGRpc3BhdGNoQ2hhcHRlckV2ZW50cyh7XG4gICAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgICBjaGFwdGVycyxcbiAgICAgICAgZ2V0VGltZTogKCkgPT4gdmlkZW9SZWYuY3VycmVudC5jdXJyZW50VGltZSxcbiAgICAgIH0pLFxuICAgIFtjaGFwdGVyc11cbiAgKVxuXG4gIGNvbnN0IGlzRW5kID0gcGxheWJhY2tTdGF0ZSA9PT0gJ2VuZGVkJ1xuICBjb25zdCBjYW5TZWVrID0gIWlzRW5kICYmIHBsYXliYWNrVGltZS5kdXJhdGlvbiA+IDBcbiAgY29uc3QgZGVyaXZlZFBsYXliYWNrU3RhdGUgPVxuICAgICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSB8fCBzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICAgPyAncGF1c2VkJ1xuICAgICAgOiB0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlXG4gIGNvbnN0IGFjdGl2ZVRodW1ibmFpbHNVcmwgPVxuICAgICghdXNlckZvY3VzIHx8IHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInKSAmJlxuICAgIChnZXRUaHVtYm5haWxzVXJsKHNvdXJjZSkgfHwgdGh1bWJuYWlsc1VybClcbiAgY29uc3QgY3NzVmFyaWFibGVzID0ge1xuICAgICctLXBsYXlpbmcnOiBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgPyAnMScgOiAnMCcsXG4gIH1cbiAgY29uc3Qgb25SZXdpbmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgY2FuU2VlayAmJlxuICAgICgoKSA9PiBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSAtIDEwLCAncmV3aW5kJykpXG4gIGNvbnN0IG9uRm9yd2FyZCA9XG4gICAgKCFpc0xpdmUgfHwgcGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMCkgJiZcbiAgICBjYW5TZWVrICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lICsgMTAsICdmb3J3YXJkJykpXG4gIGNvbnN0IG9uQ2xpY2tCbGFuayA9XG4gICAgaGF2ZVBsYXlQYW5lbCAmJiAoKCkgPT4gdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSkpXG5cbiAgY29uc3QgdWlIYW5kbGVycyA9IHtcbiAgICBvblBsYXk6ICgpID0+IHtcbiAgICAgIHRvZ2dsZVBsYXkoJycsIHt0cmlnZ2VyZWRCeTogJ3VzZXItYWN0aW9uJ30pXG4gICAgICBzZXRJc1VzZXJBY3RpdmUodHJ1ZSlcbiAgICB9LFxuICAgIG9uQ2xpY2tMaXZlOiBpc0xpdmUgJiYgKCgpID0+IHNldFRhcmdldFRpbWUoMCwgJ3NlZWtUb0xpdmUnKSksXG4gICAgb25DbGlja1NlZWtiYXI6ICgpID0+IHtcbiAgICAgIHJlZnMuY3VycmVudC5kZWZlcmVkU2Vla0ZvY3VzID0gc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4gc2V0VXNlckZvY3VzKCdzZWVrYmFyJyksXG4gICAgICAgIDY2XG4gICAgICApXG4gICAgfSxcbiAgICBvblNlZWs6IHRpbWUgPT4ge1xuICAgICAgc2V0VGFyZ2V0VGltZSh0aW1lLCAnc2VlaycpXG4gICAgICBjbGVhclRpbWVvdXQocmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHNldFVzZXJGb2N1cygnJyksIDY2KVxuICAgIH0sXG4gICAgb25DaGFuZ2VTZXR0aW5nczogKHtuYW1lLCB2YWx1ZSwga2VlcE9wZW59KSA9PlxuICAgICAgY2hhbmdlU2V0dGluZ3MobmFtZSwgdmFsdWUsIHtrZWVwT3Blbn0pLFxuICAgIG9uQ2xvc2VTZXR0aW5nczogZXZlbnQgPT4ge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgICAgc2xvdFByb3BzPy5zZXR0aW5ncz8ub25DbG9zZT8uKGV2ZW50KVxuICAgIH0sXG4gIH1cblxuICBjb25zdCB1aUVsZW1lbnRzID0ge1xuICAgIGxpdmVCdXR0b246IHVpSGFuZGxlcnMub25DbGlja0xpdmUgJiYgKFxuICAgICAgPGNvbXBvbmVudHMuTGl2ZUJ1dHRvblxuICAgICAgICB1c2luZ1N0YXJ0T3Zlcj17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMH1cbiAgICAgICAgb25DbGljaz17dWlIYW5kbGVycy5vbkNsaWNrTGl2ZX1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBjb250cm9sQnV0dG9uczoge1xuICAgICAgcGxheUJ1dHRvbjogKFxuICAgICAgICA8UGxheUJ1dHRvblxuICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgIGVuZGVkPXtpc0VuZH1cbiAgICAgICAgICBoaWRkZW49e1xuICAgICAgICAgICAgdWlUeXBlID09PSAnbW9iaWxlJyAmJiAod2FpdGluZyB8fCAvbG9hZGluZy8udGVzdChwbGF5YmFja1N0YXRlKSlcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyaWFudD17IWlzVXNlckFjdGl2ZSAmJiAnZmlyc3RwbGF5J31cbiAgICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uUGxheX1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICByZXdpbmRCdXR0b246IG9uUmV3aW5kICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cInJld2luZDEwXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuUkVXSU5EXCJcbiAgICAgICAgICBkaXNhYmxlZD17aXNFbmR9XG4gICAgICAgICAgb25DbGljaz17b25SZXdpbmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgZm9yd2FyZEJ1dHRvbjogb25Gb3J3YXJkICYmIChcbiAgICAgICAgPEZvcndhcmRCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJmb3J3YXJkMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5GT1JXQVJEXCJcbiAgICAgICAgICBkaXNhYmxlZD17IWNhblNlZWt9XG4gICAgICAgICAgb25DbGljaz17b25Gb3J3YXJkfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIG5leHRFcGlzb2RlQnV0dG9uOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJuZXh0XCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuTkVYVFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZU5leHR9XG4gICAgICAgICAgb25DbGljaz17Y2hhbmdlTmV4dH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBwcmV2aW91c0VwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cInByZXZpb3VzXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuUFJFVklPVVNcIlxuICAgICAgICAgIGRpc2FibGVkPXshb25DaGFuZ2VQcmV2aW91c31cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VQcmV2aW91c31cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgfSxcbiAgICBzZWVrYmFyOiAoXG4gICAgICA8Y29tcG9uZW50cy5TZWVrYmFyXG4gICAgICAgIHN0eWxlPXsvdm9sdW1lLy50ZXN0KHVzZXJGb2N1cykgJiYge29wYWNpdHk6ICcwJ319XG4gICAgICAgIHN0YXJ0VGltZT17cGxheWJhY2tUaW1lLnN0YXJ0VGltZX1cbiAgICAgICAgY3VycmVudFRpbWU9e3BsYXliYWNrVGltZS5jdXJyZW50VGltZX1cbiAgICAgICAgYnVmZmVyVGltZT17cGxheWJhY2tUaW1lLmJ1ZmZlclRpbWV9XG4gICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgIGNoYXB0ZXJzPXtjaGFwdGVyc31cbiAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DbGlja1NlZWtiYXJ9XG4gICAgICAgIG9uQ2hhbmdlQ29tbWl0dGVkPXt1aUhhbmRsZXJzLm9uU2Vla31cbiAgICAgICAgbWFya3M9e21hcmtzfVxuICAgICAgICBwbHVnaW5zPXtwbHVnaW5zfVxuICAgICAgICB7Li4uc2xvdFByb3BzLnNlZWtiYXJ9XG4gICAgICA+XG4gICAgICAgIHthY3RpdmVUaHVtYm5haWxzVXJsICYmIChcbiAgICAgICAgICA8U2Vla1ByZXZpZXdcbiAgICAgICAgICAgIHRodW1ibmFpbHNVcmw9e2FjdGl2ZVRodW1ibmFpbHNVcmx9XG4gICAgICAgICAgICBkdXJhdGlvbj17cGxheWJhY2tUaW1lLmR1cmF0aW9ufVxuICAgICAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L2NvbXBvbmVudHMuU2Vla2Jhcj5cbiAgICApLFxuICAgIGRpc3BsYXlUaW1lOiA8Y29tcG9uZW50cy5EaXNwbGF5VGltZSB7Li4ucGxheWJhY2tUaW1lfSAvPixcbiAgICBmdWxsc2NyZWVuQnV0dG9uOiAoXG4gICAgICA8RnVsbHNjcmVlbkJ1dHRvblxuICAgICAgICB2aWV3TW9kZT17dmlld01vZGV9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHRvZ2dsZUZ1bGxzY3JlZW4oY29udGFpbmVyUmVmLmN1cnJlbnQpfVxuICAgICAgLz5cbiAgICApLFxuICAgIHZvbHVtZUNvbnRyb2w6IHdpZHRoID49IHNpemVzWydzbWFsbC1lbWJlZCddICYmIChcbiAgICAgIDxjb21wb25lbnRzLlZvbHVtZUNvbnRyb2xcbiAgICAgICAgey4uLntzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfX1cbiAgICAgICAgb25Nb3VzZU92ZXI9eygpID0+IHNldFVzZXJGb2N1cygndm9sdW1lJyl9XG4gICAgICAgIG9uTW91c2VPdXQ9eygpID0+IHNldFVzZXJGb2N1cygnJyl9XG4gICAgICAgIHsuLi5zbG90UHJvcHM/LnZvbHVtZUNvbnRyb2x9XG4gICAgICAvPlxuICAgICksXG4gICAgYmFja0l0ZW1zOiAoXG4gICAgICA8UGxheVBhbmVsIGFuaW1hdGlvbj17dGFyZ2V0U3RhdGUuYW5pbWF0aW9ufSBvbkNsaWNrPXtvbkNsaWNrQmxhbmt9IC8+XG4gICAgKSxcbiAgfVxuICBjb25zdCBjb21wYXRpYmlsaXR5Q2FzdFByb3BzID0gY2FzdE9wdGlvbnMgPT09ICdjb21wYXRpYmxlJyAmJiB7XG4gICAgc291cmNlLFxuICAgIHZhbHVlczoge3RpdGxlLCAuLi5zZXR0aW5ncy52YWx1ZXMsIC4uLmludGwsIG1vZHVsZXNDb25maWd9LFxuICAgIG9uTG9hZDogb25DYXN0LFxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2FzdE9wdGlvbnMgJiYgY2FzdE9wdGlvbnMgIT09ICdjb21wYXRpYmxlJykge1xuICAgICAgcmV0dXJuIGxpbmtDYXN0KHtzb3VyY2UsIC4uLmNhc3RPcHRpb25zfSlcbiAgICB9IC8vIFRPRE8gcGxheWxpc3QsIGF1ZGlvIC8gc3VidGl0bGUgc2V0dGluZ1xuICB9LCBbc291cmNlLCBjYXN0T3B0aW9ucy5jb250ZW50SWQsIGNhc3RPcHRpb25zLmN1c3RvbURhdGFdKVxuICBjb25zdCBzZWxlY3RlZEF1ZGlvVHJhY2sgPSBzZXR0aW5ncy5wcmVmZXJyZWQ/LmF1ZGlvIHx8IGFwcEF1ZGlvVHJhY2tcbiAgY29uc3Qgc2VsZWN0ZWRUZXh0VHJhY2sgPSBzZXR0aW5ncy5wcmVmZXJyZWQ/LnN1YnRpdGxlcyB8fCBhcHBUZXh0VHJhY2tcblxuICByZXR1cm4gKFxuICAgIDxJbnRsUHJvdmlkZXIgey4uLmludGx9PlxuICAgICAgPExheW91dFxuICAgICAgICBzdHlsZT17ey4uLnN0eWxlLCBjc3NWYXJpYWJsZXN9fVxuICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgIGRpc3BsYXk9e21vZGV9XG4gICAgICAgIGNvbnRyb2xzRGlzcGxheT17Y29udHJvbHNEaXNwbGF5fVxuICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICB2aWRlbz17XG4gICAgICAgICAgPFZpZGVvXG4gICAgICAgICAgICB7Li4udmlkZW9Qcm9wc31cbiAgICAgICAgICAgIHZpZGVvUmVmPXttdWx0aVJlZih2aWRlb1JlZiwgdmlkZW9Qcm9wcy52aWRlb1JlZil9XG4gICAgICAgICAgICBzb3VyY2U9e1xuICAgICAgICAgICAgICBjYXN0U3RhdGUgIT09IENhc3RTdGF0ZS5DT05ORUNURUQgJiZcbiAgICAgICAgICAgICAgcGxheWJhY2tTdGF0ZSAhPT0gJ2Vycm9yJyAmJlxuICAgICAgICAgICAgICBzb3VyY2VPdmVycmlkZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgICBjdXJyZW50VGltZT17dGFyZ2V0U3RhdGUuY3VycmVudFRpbWV9XG4gICAgICAgICAgICB7Li4uKGFwcFZvbHVtZSA+PSAwICYmIHt2b2x1bWU6IGFwcFZvbHVtZSwgbXV0ZWQ6IGFwcFZvbHVtZSA8PSAwfSl9XG4gICAgICAgICAgICBwbGF5YmFja1JhdGU9e3NldHRpbmdzLnZhbHVlcy5zcGVlZH1cbiAgICAgICAgICAgIHZpZGVvUmVzb2x1dGlvbj17cXVhbGl0eU9wdGlvbnN9XG4gICAgICAgICAgICBhdWRpb1RyYWNrPXtzZWxlY3RlZEF1ZGlvVHJhY2t9XG4gICAgICAgICAgICB0ZXh0VHJhY2s9e3NlbGVjdGVkVGV4dFRyYWNrfVxuICAgICAgICAgICAgbG9vcD17c2V0dGluZ3MudmFsdWVzLmxvb3B9XG4gICAgICAgICAgICBwbHVnaW5zPXtwbHVnaW5zfVxuICAgICAgICAgICAgbW9kdWxlc0NvbmZpZz17bW9kdWxlc0NvbmZpZ31cbiAgICAgICAgICAgIG9uUGxheWxvZ0ZpcmVkPXtvblBsYXlsb2dGaXJlZH1cbiAgICAgICAgICAgIG9uRXJyb3I9e2Vycm9ySGFuZGxlcn1cbiAgICAgICAgICAgIG9uUGxheWJhY2tTdGF0ZUNoYW5nZT17aGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmxvY2tlZEF1dG9wbGF5PXtlcnJvciA9PiBvbkJsb2NrZWRBdXRvcGxheT8uKGVycm9yKX1cbiAgICAgICAgICAgIG9uQ2FuUGxheT17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICB1cGRhdGVQbGF5YmFja1RpbWUoZXZlbnQpXG4gICAgICAgICAgICAgIHZpZGVvUHJvcHMub25DYW5QbGF5Py4oZXZlbnQpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25UaW1lVXBkYXRlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvbkR1cmF0aW9uQ2hhbmdlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvblBsYXllckxvYWRlZD17cGxheWVyID0+IHtcbiAgICAgICAgICAgICAgcGxheWVyUmVmLmN1cnJlbnQgPSBwbGF5ZXJcbiAgICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ/LihwbGF5ZXIpXG4gICAgICAgICAgICAgIHN5bmNWb2x1bWUodmlkZW9SZWYuY3VycmVudCwgdmlkZW9Qcm9wcy5tdXRlZCA/IDAgOiBhcHBWb2x1bWUpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyUmVmPXtlbGVtZW50ID0+IHtcbiAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCA9IGVsZW1lbnRcbiAgICAgICAgICBvYnNlcnZlKGVsZW1lbnQpXG4gICAgICAgIH19XG4gICAgICAgIGJhY2tSZWY9e2FkQ29udGFpbmVyUmVmfVxuICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgIGNoYW5uZWxUaXRsZT17Y2hhbm5lbFRpdGxlfVxuICAgICAgICBiYWNrQnV0dG9uPXtvbkJhY2sgJiYgPEJ1dHRvbiBzdGFydEljb249XCJiYWNrXCIgb25DbGljaz17b25CYWNrfSAvPn1cbiAgICAgICAgey4uLihpc1VzZXJBY3RpdmUgJiYgdWlFbGVtZW50cyl9XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIG9uTW91c2VNb3ZlPXtvbk1vdXNlTW92ZX1cbiAgICAgID5cbiAgICAgICAgPExvYWRpbmdTcGlubmVyIGFjdGl2ZT17d2FpdGluZ30gLz5cbiAgICAgICAge2Vycm9yRGF0YSAmJiA8RXJyb3IgZXJyb3I9e2Vycm9yRGF0YX0gb25CYWNrPXtvbkJhY2t9IC8+fVxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHsvKiBUT0RPIHN5bmMgQ2FzdCBsYXN0IHBsYXllZCB0aW1lIGJhY2sgKi99XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKFxuICAgICAgICAgIDxjb21wb25lbnRzLkNhc3RVaVxuICAgICAgICAgICAgb25CYWNrPXtvbkJhY2t9XG4gICAgICAgICAgICBvblN0YXRlQ2hhbmdlPXtzZXRDYXN0U3RhdGV9XG4gICAgICAgICAgICBvbkxvYWQ9e29uQ2FzdH1cbiAgICAgICAgICAgIHsuLi5jb21wYXRpYmlsaXR5Q2FzdFByb3BzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcy5jYXN0VWl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge2lzVXNlckFjdGl2ZSAmJiAoIC8vIFRPRE86IERlc2lnbiA8RXh0ZW5zdGlvbiAvPiBmbGFnXG4gICAgICAgICAgPGNvbXBvbmVudHMuU2V0dGluZ3NcbiAgICAgICAgICAgIHR5cGU9e3VpVHlwZX1cbiAgICAgICAgICAgIHNlY3Rpb25zPXtzZXR0aW5ncy5zZWN0aW9uc31cbiAgICAgICAgICAgIC8vIFRPRE8gaGFzQm90dG9tUGFuZWwgYm90dG9tOiA4ZW1cbiAgICAgICAgICAgIG9wZW49e3VzZXJGb2N1cyA9PT0gJ3NldHRpbmdzJ31cbiAgICAgICAgICAgIHZhbHVlcz17c2V0dGluZ3MudmFsdWVzfVxuICAgICAgICAgICAgb25PcGVuPXtvcGVuU2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNoYW5nZVNldHRpbmdzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcz8uc2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNsb3NlPXt1aUhhbmRsZXJzLm9uQ2xvc2VTZXR0aW5nc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8TGFuZ3VhZ2VTZXR0aW5nc1xuICAgICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICAgIGdldFBsYXllcj17KCkgPT4gcGxheWVyUmVmLmN1cnJlbnR9XG4gICAgICAgICAgb25DaGFuZ2U9eyhfZXZlbnQsIGl0ZW0pID0+XG4gICAgICAgICAgICB1aUhhbmRsZXJzLm9uQ2hhbmdlU2V0dGluZ3Moe1xuICAgICAgICAgICAgICBuYW1lOiBpdGVtLnR5cGUsXG4gICAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgICBrZWVwT3BlbjogdHJ1ZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */"),
17816
- desktop: /*#__PURE__*/css$1(LanguageMenu.styles, LanguageMenu.desktopStyles, "production" === "production" ? "" : ";label:desktop;", "production" === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0VXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtpc0Rlc2t0b3B9IGZyb20gJ3V0aWwvZW52aXJvbm1lbnQnXG5pbXBvcnQgbXVsdGlSZWYgZnJvbSAndXRpbC9tdWx0aVJlZidcbmltcG9ydCB7b25WaWV3TW9kZUNoYW5nZSwgdG9nZ2xlRnVsbHNjcmVlbn0gZnJvbSAndXRpbC92aWV3TW9kZXMnXG5pbXBvcnQge3VzZUF1dG9IaWRlfSBmcm9tICdob29rcydcbmltcG9ydCB7SW50bFByb3ZpZGVyfSBmcm9tICdjb250ZXh0L0kxOG4nXG5pbXBvcnQge2dldE1lZGlhVGltZSwgaXNCdWZmZXJlZH0gZnJvbSAncGxheWVyQ29yZS9tZWRpYUJpbmRpbmdzJ1xuaW1wb3J0IEVycm9yIGZyb20gJ3BsYXllclVpL0Vycm9yJ1xuaW1wb3J0IExheW91dCBmcm9tICdwbGF5ZXJVaS9EZWZhdWx0TGF5b3V0J1xuaW1wb3J0IHtcbiAgQnV0dG9uLFxuICBMaXZlQnV0dG9uLFxuICBGdWxsc2NyZWVuQnV0dG9uLFxuICBQbGF5QnV0dG9uLFxuICBGb3J3YXJkQnV0dG9uLFxufSBmcm9tICdwbGF5ZXJVaS9idXR0b25zJ1xuaW1wb3J0IFNlZWtiYXIgZnJvbSAncGxheWVyVWkvU2Vla2JhcidcbmltcG9ydCBEaXNwbGF5VGltZSBmcm9tICdwbGF5ZXJVaS9EaXNwbGF5VGltZSdcbmltcG9ydCBMb2FkaW5nU3Bpbm5lciBmcm9tICdwbGF5ZXJVaS9Mb2FkaW5nU3Bpbm5lcidcbmltcG9ydCBCYWNrZHJvcCBmcm9tICdwbGF5ZXJVaS9CYWNrZHJvcCdcbmltcG9ydCBTZXR0aW5ncyBmcm9tICdwbGF5ZXJVaS9TZXR0aW5ncydcbmltcG9ydCBPdmVybGF5UGFuZWwgZnJvbSAncGxheWVyVWkvT3ZlcmxheVBhbmVsJ1xuaW1wb3J0IExhbmd1YWdlTWVudSBmcm9tICdwbGF5ZXJVaS9MYW5ndWFnZU1lbnUnXG5pbXBvcnQgUGxheVBhbmVsIGZyb20gJ3BsYXllclVpL1BsYXlQYW5lJ1xuaW1wb3J0IFZvbHVtZUNvbnRyb2wgZnJvbSAnY29tcG9uZW50L1ZvbHVtZUNvbnRyb2wnXG5pbXBvcnQgQ2FzdFVpIGZyb20gJ2Nhc3QvQ2FzdFVpJ1xuaW1wb3J0IHtsaW5rQ2FzdH0gZnJvbSAnY2FzdC9mcmFtZXdvcmsnXG5pbXBvcnQge0Nhc3RTdGF0ZX0gZnJvbSAnRW51bSdcbmltcG9ydCB7ZGlzcGF0Y2hDaGFwdGVyRXZlbnRzfSBmcm9tICcuL3RpbWVsaW5lJ1xuaW1wb3J0IFZpZGVvIGZyb20gJy4uL1ZpZGVvJ1xuaW1wb3J0IHtnZXRMYW5ndWFnZU9wdGlvbnMsIGdldFF1YWxpdHlPcHRpb25zLCBnZXRTZXR0aW5nc0RhdGF9IGZyb20gJy4vc2V0dGluZ3MnXG5pbXBvcnQge2xpbmtNZWRpYVZvbHVtZSwgc3luY1ZvbHVtZX0gZnJvbSAnLi92b2x1bWUnXG5pbXBvcnQgU2Vla1ByZXZpZXcgZnJvbSAnLi9TZWVrUHJldmlldydcblxuY29uc3Qgc2l6ZXMgPSB7XG4gICdzbWFsbC1lbWJlZCc6IDIwMCxcbiAgZW1iZWQ6IDQwMCxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6IDYwMCxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiA5MDAsXG4gIGRlc2t0b3A6IDEyMDAsXG59XG5cbmNvbnN0IHVzZUxpbmtTdGF0ZSA9IChyZXF1ZXN0LCBkZXBlbmRlbmNpZXMgPSBbXSkgPT4ge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXF1ZXN0KHNldFN0YXRlKVxuICB9LCBkZXBlbmRlbmNpZXMpXG4gIHJldHVybiBzdGF0ZVxufVxuXG5jb25zdCBmbGlwU3RhdGUgPSBzdGF0ZSA9PiAoc3RhdGUgPT09ICdwbGF5aW5nJyA/ICdwYXVzZWQnIDogJ3BsYXlpbmcnKVxuXG4vLyBGSVhNRTogdG9vIGZldyBsaW5lcyB0byBzcGxpdCBhIGZpbGUsIGxvb2tpbmcgYSBiZXR0ZXIgcGxhY2VcbmNvbnN0IGdldFRodW1ibmFpbHNVcmwgPSBzb3VyY2UgPT5cbiAgW10uY29uY2F0KHNvdXJjZSkuZmluZChpdGVtID0+IGl0ZW0udHlwZSA9PT0gJ3RodW1ibmFpbCcpPy5zcmNcblxuY29uc3QgZGVmYXVsdFNldHRpbmdzID0ge31cblxuY29uc3Qgc2hvdWxkUGF1c2UgPSAoe3VzZXJGb2N1cywgdWlUeXBlfSkgPT5cbiAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgL3NldHRpbmdzfGNoYXB0ZXItbGlzdC8udGVzdCh1c2VyRm9jdXMpKSB8fFxuICAvYmxvY2tpbmd8c2Vla2JhcnxzaGFyZS1pbm5lci8udGVzdCh1c2VyRm9jdXMpXG5cbi8vIFRPRE8gZXh0cmFjdCB0byBzb21ld2hlcmUgZWxzZVxuY29uc3QgbWVudUNsYXNzZXMgPSB7XG4gIGRlZmF1bHQ6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzKSxcbiAgZGVza3RvcDogY3NzKExhbmd1YWdlTWVudS5zdHlsZXMsIExhbmd1YWdlTWVudS5kZXNrdG9wU3R5bGVzKSxcbn1cblxuY29uc3QgTGFuZ3VhZ2VTZXR0aW5ncyA9ICh7XG4gIHVpVHlwZSxcbiAgYXVkaW9UcmFja3MgPSBbXSxcbiAgdGV4dFRyYWNrcyA9IFtdLFxuICBnZXRQbGF5ZXIsXG4gIG9uQ2hhbmdlLFxuICBzbG90cyA9IHtMYW5ndWFnZU1lbnV9LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnZXRMYW5ndWFnZU9wdGlvbnMoZ2V0UGxheWVyKCksIHthdWRpb1RyYWNrcywgdGV4dFRyYWNrc30pXG4gIHJldHVybiAoXG4gICAgYXVkaW9UcmFja3MubGVuZ3RoID4gMCAmJlxuICAgIHRleHRUcmFja3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICA8T3ZlcmxheVBhbmVsXG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICB0aXRsZT1cIuWtl+W5leODu+mfs+WjsOOCkuWIh+OCiuabv+OBiOOCi1wiXG4gICAgICAgIGJ1dHRvbkljb249XCJzdWJ0aXRsZVwiXG4gICAgICA+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIGF1ZGlvVHJhY2s6IGFwcEF1ZGlvVHJhY2ssXG4gIHRleHRUcmFjazogYXBwVGV4dFRyYWNrLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgICAgb3RoZXJTZWN0aW9uczogYXBwU2V0dGluZ3Muc2VjdGlvbnMsXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHtwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLCB2YWx1ZXMsIHNlY3Rpb25zfVxuICAgIH0pXG4gIH1cbiAgY29uc3QgbGFzdFN0YXRlID0gdXNlUmVmKHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGhhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2UgPSAoZXZlbnQsIHN0YXRlKSA9PiB7XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnZXJyb3InKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgb25QbGF5YmFja1N0YXRlQ2hhbmdlPy4oZXZlbnQsIHN0YXRlKVxuICAgIC8vIHByZXZpb3VzbHkgVUkgcGxheWJhY2sgc3RhdGUgd2FzIHN5bmNlZCBvbmx5IHdoZW5cbiAgICAvLyBleGl0aW5nIGlPUyB2aWRlbyBvbmx5IGZ1bGxzY3JlZW4od2Via2l0ZW5kZnVsbHNjcmVlbilcbiAgICBpZiAoXG4gICAgICAvcGxheWluZ3xwYXVzZWQvLnRlc3Qoc3RhdGUpICYmXG4gICAgICAhKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpICYmXG4gICAgICAhc2hvdWxkUGF1c2Uoe3VzZXJGb2N1cywgdWlUeXBlfSlcbiAgICApIHtcbiAgICAgIHRvZ2dsZVBsYXkoc3RhdGUpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2VuZGVkJykge1xuICAgICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnbG9hZGluZycgJiYgbGFzdFN0YXRlLmN1cnJlbnQgIT09ICdpbml0Jykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0b2dnbGVQbGF5KCdwbGF5aW5nJyksIDEpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ3BsYXlpbmcnKSB7XG4gICAgICBzZXRJc1VzZXJBY3RpdmUodHJ1ZSlcbiAgICB9XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnbG9hZGluZycpIHtcbiAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgIH1cbiAgICBsYXN0U3RhdGUuY3VycmVudCA9IHN0YXRlXG4gICAgc2V0UGxheWJhY2tTdGF0ZShzdGF0ZSlcbiAgfVxuXG4gIGNvbnN0IGNoYW5nZVNldHRpbmdzID0gKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59ID0ge30pID0+IHtcbiAgICAvLyBUT0RPIGNvbnNpZGVyIG1lcmdlIGludG8gdXNlUmVkdWNlcj9cbiAgICBvbkNoYW5nZVNldHRpbmdzPy4oe25hbWUsIHZhbHVlfSlcbiAgICBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSlcbiAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAuLi5jdXJyZW50LFxuICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIFtuYW1lXTogdmFsdWV9LFxuICAgICAgcHJlZmVycmVkOiB7Li4uY3VycmVudC5wcmVmZXJyZWQsIFtuYW1lXTogdmFsdWV9LFxuICAgIH0pKVxuICAgIGlmICgha2VlcE9wZW4pIHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICB9XG4gIH1cbiAgY29uc3Qgb3BlblNldHRpbmdzID0gZXZlbnQgPT4ge1xuICAgIGNvbnN0IGFuaW1hdGlvbkZyYW1lID1cbiAgICAgIHVzZXJGb2N1cyAhPT0gJ3NldHRpbmdzJyAmJlxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgb25PcGVuU2V0dGluZ3M/LihldmVudCwgc2V0dGluZ3MpXG4gICAgICAgIC8vIEluIGlPUyBTYWZhcmksIHdlIG5lZWQgdG8gdXBkYXRlIHNldHRpbmdzIGRhdGFcbiAgICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgICB9KVxuICAgIHNldFVzZXJGb2N1cyhjdXJyZW50ID0+IChjdXJyZW50ID09PSAnc2V0dGluZ3MnID8gJycgOiAnc2V0dGluZ3MnKSlcbiAgICByZXR1cm4gYW5pbWF0aW9uRnJhbWVcbiAgfVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1JhdGUgPiAwKSB7XG4gICAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBzcGVlZDogYXBwUGxheWJhY2tSYXRlfSxcbiAgICAgIH0pKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrUmF0ZV0pXG5cbiAgY29uc3QgcXVhbGl0eU9wdGlvbnMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFF1YWxpdHlPcHRpb25zKHNldHRpbmdzKSxcbiAgICBbc2V0dGluZ3MudmFsdWVzLnF1YWxpdHldXG4gIClcbiAgY29uc3Qgdmlld01vZGUgPSB1c2VMaW5rU3RhdGUodXBkYXRlID0+XG4gICAgb25WaWV3TW9kZUNoYW5nZSh2aWRlb1JlZi5jdXJyZW50LCB1cGRhdGUpXG4gIClcbiAgY29uc3Qgc291cmNlT3ZlcnJpZGUgPSB1c2VMaW5rU3RhdGUoXG4gICAgYXN5bmMgdXBkYXRlID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICAgIHNvdXJjZSAmJiAoYXdhaXQgcXVhbGl0eS5yZXdyaXRlTWFuaWZlc3Q/Lihzb3VyY2UsIHF1YWxpdHlPcHRpb25zKSlcbiAgICAgIHVwZGF0ZShyZXN1bHQgfHwgc291cmNlKVxuICAgIH0sXG4gICAgW3NvdXJjZSwgcXVhbGl0eU9wdGlvbnNdXG4gIClcbiAgY29uc3Qgd2FpdGluZyA9IC9lbXB0aWVkfGxvYWRpbmd8YnVmZmVyaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGFjdGl2ZVBsYXliYWNrID1cbiAgICBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ3dhaXRpbmcnXG4gIGNvbnN0IHtcbiAgICBtb2RlOiBhdXRvSGlkZU1vZGUsXG4gICAgb25DbGljayxcbiAgICBvbk1vdXNlTW92ZSxcbiAgfSA9IHVzZUF1dG9IaWRlKHtcbiAgICBwaW5uZWQ6ICFjb250cm9scy5hdXRvaGlkZSB8fCB3YWl0aW5nIHx8ICFhY3RpdmVQbGF5YmFjayB8fCB1c2VyRm9jdXMsXG4gICAgdGFwVG9IaWRlOiB1aVR5cGUgPT09ICdtb2JpbGUnLFxuICAgIGhpZGVUaW1lTXM6IGNvbnRyb2xzLmF1dG9oaWRlLFxuICB9KVxuICBjb25zdCBtb2RlID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBjb250cm9scy5hdXRvaGlkZVxuICAgICAgPyBhdXRvSGlkZU1vZGVcbiAgICAgIDogY29udHJvbHNcbiAgICAgID8gJ3Nob3duJ1xuICAgICAgOiAnaGlkZGVuJ1xuICBjb25zdCBjb250cm9sc0Rpc3BsYXkgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdzZWVrYmFyLW9ubHknXG4gICAgICA6IGNvbnRyb2xzID09PSAndGl0bGUtb25seScgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2VtcHRpZWQnXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IG1vZGVcbiAgY29uc3Qgc2hvdWxkSGlkZVBhbmVscyA9XG4gICAgKGNvbnRyb2xzID09PSAnbm8tcGFuZWwnIHx8XG4gICAgICBjb250cm9sc0Rpc3BsYXkgPT09ICdoaWRkZW4nIHx8XG4gICAgICBwbGF5YmFja1N0YXRlID09PSAnZW5kZWQnKSAmJlxuICAgIHVzZXJGb2N1c1xuICBjb25zdCBoYXZlUGxheVBhbmVsID1cbiAgICAhYmxvY2tpbmcgJiZcbiAgICB1aVR5cGUgPT09ICdkZXNrdG9wJyAmJlxuICAgICF3YWl0aW5nICYmXG4gICAgIS92b2x1bWV8JycvLnRlc3QodXNlckZvY3VzKSAmJlxuICAgICEvdGl0bGUtb25seXxuby1wYW5lbC8udGVzdChjb250cm9scykgJiZcbiAgICAoY29udHJvbHMuYXV0b2hpZGUgfHwgbW9kZSA9PT0gJ3Nob3duJylcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRIaWRlUGFuZWxzKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBpZiAocmVmcy5jdXJyZW50LmNsb3NlTWVudSkge1xuICAgICAgICByZWZzLmN1cnJlbnQuY2xvc2VNZW51KClcbiAgICAgICAgcmVmcy5jdXJyZW50LmNsb3NlTWVudSA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cbiAgfSwgW3Nob3VsZEhpZGVQYW5lbHNdKVxuICB1c2VFZmZlY3QoKCkgPT4gXG4gICAgb24oY29udGFpbmVyUmVmLmN1cnJlbnQsICdmb2N1cy1tZW51JywgZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50LmRldGFpbD8uc3RhdHVzID09PSAnb3BlbicpIHtcbiAgICAgICAgc2V0VXNlckZvY3VzKCdtZW51JylcbiAgICAgICAgcmVmcy5jdXJyZW50LmNsb3NlTWVudSA9ICgpID0+IGV2ZW50LmRldGFpbC5jbG9zZU1lbnU/LigpXG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQuZGV0YWlsPy5zdGF0dXMgPT09ICdjbG9zZWQnKSB7XG4gICAgICAgIHNldFVzZXJGb2N1cyhjdXJyZW50ID0+IChjdXJyZW50ID09PSAnbWVudScgPyAnJyA6IGN1cnJlbnQpKVxuICAgICAgfVxuICAgIH0pXG4gICwgW10pXG4gIGNvbnN0IHtzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfSA9IGxpbmtNZWRpYVZvbHVtZSgoKSA9PiAoe1xuICAgIHZpZGVvOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgIGdldFBsYXllcjogKCkgPT4gcGxheWVyUmVmLmN1cnJlbnQsXG4gIH0pKVxuICBjb25zdCBjaGFuZ2VQcmV2aW91cyA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZVByZXZpb3VzKGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cbiAgY29uc3QgY2hhbmdlTmV4dCA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZU5leHQoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuXG4gIHVzZUVmZmVjdChmZXRjaFNldHRpbmdzLCBbYXBwU2V0dGluZ3NdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRoZSBhZENvbnRhaW5lciBzaG91bGQgYmUgc2V0IGJlZm9yZSBgbG9hZGAgYmVjYXVzZSBJbWFEYWkubG9hZCBuZWVkcyBpdC5cbiAgICBwbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHBsdWdpbi5zZXRBZENvbnRhaW5lcj8uKGFkQ29udGFpbmVyUmVmLmN1cnJlbnQpKVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIGRpc3BhdGNoQ2hhcHRlckV2ZW50cyh7XG4gICAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgICBjaGFwdGVycyxcbiAgICAgICAgZ2V0VGltZTogKCkgPT4gdmlkZW9SZWYuY3VycmVudC5jdXJyZW50VGltZSxcbiAgICAgIH0pLFxuICAgIFtjaGFwdGVyc11cbiAgKVxuXG4gIGNvbnN0IGlzRW5kID0gcGxheWJhY2tTdGF0ZSA9PT0gJ2VuZGVkJ1xuICBjb25zdCBjYW5TZWVrID0gIWlzRW5kICYmIHBsYXliYWNrVGltZS5kdXJhdGlvbiA+IDBcbiAgY29uc3QgZGVyaXZlZFBsYXliYWNrU3RhdGUgPVxuICAgICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSB8fCBzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICAgPyAncGF1c2VkJ1xuICAgICAgOiB0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlXG4gIGNvbnN0IGFjdGl2ZVRodW1ibmFpbHNVcmwgPVxuICAgICghdXNlckZvY3VzIHx8IHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInKSAmJlxuICAgIChnZXRUaHVtYm5haWxzVXJsKHNvdXJjZSkgfHwgdGh1bWJuYWlsc1VybClcbiAgY29uc3QgY3NzVmFyaWFibGVzID0ge1xuICAgICctLXBsYXlpbmcnOiBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgPyAnMScgOiAnMCcsXG4gIH1cbiAgY29uc3Qgb25SZXdpbmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgY2FuU2VlayAmJlxuICAgICgoKSA9PiBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSAtIDEwLCAncmV3aW5kJykpXG4gIGNvbnN0IG9uRm9yd2FyZCA9XG4gICAgKCFpc0xpdmUgfHwgcGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMCkgJiZcbiAgICBjYW5TZWVrICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lICsgMTAsICdmb3J3YXJkJykpXG4gIGNvbnN0IG9uQ2xpY2tCbGFuayA9XG4gICAgaGF2ZVBsYXlQYW5lbCAmJiAoKCkgPT4gdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSkpXG5cbiAgY29uc3QgdWlIYW5kbGVycyA9IHtcbiAgICBvblBsYXk6ICgpID0+IHtcbiAgICAgIHRvZ2dsZVBsYXkoJycsIHt0cmlnZ2VyZWRCeTogJ3VzZXItYWN0aW9uJ30pXG4gICAgICBzZXRJc1VzZXJBY3RpdmUodHJ1ZSlcbiAgICB9LFxuICAgIG9uQ2xpY2tMaXZlOiBpc0xpdmUgJiYgKCgpID0+IHNldFRhcmdldFRpbWUoMCwgJ3NlZWtUb0xpdmUnKSksXG4gICAgb25DbGlja1NlZWtiYXI6ICgpID0+IHtcbiAgICAgIHJlZnMuY3VycmVudC5kZWZlcmVkU2Vla0ZvY3VzID0gc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4gc2V0VXNlckZvY3VzKCdzZWVrYmFyJyksXG4gICAgICAgIDY2XG4gICAgICApXG4gICAgfSxcbiAgICBvblNlZWs6IHRpbWUgPT4ge1xuICAgICAgc2V0VGFyZ2V0VGltZSh0aW1lLCAnc2VlaycpXG4gICAgICBjbGVhclRpbWVvdXQocmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHNldFVzZXJGb2N1cygnJyksIDY2KVxuICAgIH0sXG4gICAgb25DaGFuZ2VTZXR0aW5nczogKHtuYW1lLCB2YWx1ZSwga2VlcE9wZW59KSA9PlxuICAgICAgY2hhbmdlU2V0dGluZ3MobmFtZSwgdmFsdWUsIHtrZWVwT3Blbn0pLFxuICAgIG9uQ2xvc2VTZXR0aW5nczogZXZlbnQgPT4ge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgICAgc2xvdFByb3BzPy5zZXR0aW5ncz8ub25DbG9zZT8uKGV2ZW50KVxuICAgIH0sXG4gIH1cblxuICBjb25zdCB1aUVsZW1lbnRzID0ge1xuICAgIGxpdmVCdXR0b246IHVpSGFuZGxlcnMub25DbGlja0xpdmUgJiYgKFxuICAgICAgPGNvbXBvbmVudHMuTGl2ZUJ1dHRvblxuICAgICAgICB1c2luZ1N0YXJ0T3Zlcj17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMH1cbiAgICAgICAgb25DbGljaz17dWlIYW5kbGVycy5vbkNsaWNrTGl2ZX1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBjb250cm9sQnV0dG9uczoge1xuICAgICAgcGxheUJ1dHRvbjogKFxuICAgICAgICA8UGxheUJ1dHRvblxuICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgIGVuZGVkPXtpc0VuZH1cbiAgICAgICAgICBoaWRkZW49e1xuICAgICAgICAgICAgdWlUeXBlID09PSAnbW9iaWxlJyAmJiAod2FpdGluZyB8fCAvbG9hZGluZy8udGVzdChwbGF5YmFja1N0YXRlKSlcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyaWFudD17IWlzVXNlckFjdGl2ZSAmJiAnZmlyc3RwbGF5J31cbiAgICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uUGxheX1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICByZXdpbmRCdXR0b246IG9uUmV3aW5kICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cInJld2luZDEwXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuUkVXSU5EXCJcbiAgICAgICAgICBkaXNhYmxlZD17aXNFbmR9XG4gICAgICAgICAgb25DbGljaz17b25SZXdpbmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgZm9yd2FyZEJ1dHRvbjogb25Gb3J3YXJkICYmIChcbiAgICAgICAgPEZvcndhcmRCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJmb3J3YXJkMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5GT1JXQVJEXCJcbiAgICAgICAgICBkaXNhYmxlZD17IWNhblNlZWt9XG4gICAgICAgICAgb25DbGljaz17b25Gb3J3YXJkfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIG5leHRFcGlzb2RlQnV0dG9uOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJuZXh0XCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuTkVYVFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZU5leHR9XG4gICAgICAgICAgb25DbGljaz17Y2hhbmdlTmV4dH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBwcmV2aW91c0VwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cInByZXZpb3VzXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuUFJFVklPVVNcIlxuICAgICAgICAgIGRpc2FibGVkPXshb25DaGFuZ2VQcmV2aW91c31cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VQcmV2aW91c31cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgfSxcbiAgICBzZWVrYmFyOiAoXG4gICAgICA8Y29tcG9uZW50cy5TZWVrYmFyXG4gICAgICAgIHN0eWxlPXsvdm9sdW1lLy50ZXN0KHVzZXJGb2N1cykgJiYge29wYWNpdHk6ICcwJ319XG4gICAgICAgIHN0YXJ0VGltZT17cGxheWJhY2tUaW1lLnN0YXJ0VGltZX1cbiAgICAgICAgY3VycmVudFRpbWU9e3BsYXliYWNrVGltZS5jdXJyZW50VGltZX1cbiAgICAgICAgYnVmZmVyVGltZT17cGxheWJhY2tUaW1lLmJ1ZmZlclRpbWV9XG4gICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgIGNoYXB0ZXJzPXtjaGFwdGVyc31cbiAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DbGlja1NlZWtiYXJ9XG4gICAgICAgIG9uQ2hhbmdlQ29tbWl0dGVkPXt1aUhhbmRsZXJzLm9uU2Vla31cbiAgICAgICAgbWFya3M9e21hcmtzfVxuICAgICAgICBwbHVnaW5zPXtwbHVnaW5zfVxuICAgICAgICB7Li4uc2xvdFByb3BzLnNlZWtiYXJ9XG4gICAgICA+XG4gICAgICAgIHthY3RpdmVUaHVtYm5haWxzVXJsICYmIChcbiAgICAgICAgICA8U2Vla1ByZXZpZXdcbiAgICAgICAgICAgIHRodW1ibmFpbHNVcmw9e2FjdGl2ZVRodW1ibmFpbHNVcmx9XG4gICAgICAgICAgICBkdXJhdGlvbj17cGxheWJhY2tUaW1lLmR1cmF0aW9ufVxuICAgICAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L2NvbXBvbmVudHMuU2Vla2Jhcj5cbiAgICApLFxuICAgIGRpc3BsYXlUaW1lOiA8Y29tcG9uZW50cy5EaXNwbGF5VGltZSB7Li4ucGxheWJhY2tUaW1lfSAvPixcbiAgICBmdWxsc2NyZWVuQnV0dG9uOiAoXG4gICAgICA8RnVsbHNjcmVlbkJ1dHRvblxuICAgICAgICB2aWV3TW9kZT17dmlld01vZGV9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHRvZ2dsZUZ1bGxzY3JlZW4oY29udGFpbmVyUmVmLmN1cnJlbnQpfVxuICAgICAgLz5cbiAgICApLFxuICAgIHZvbHVtZUNvbnRyb2w6IHdpZHRoID49IHNpemVzWydzbWFsbC1lbWJlZCddICYmIChcbiAgICAgIDxjb21wb25lbnRzLlZvbHVtZUNvbnRyb2xcbiAgICAgICAgey4uLntzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfX1cbiAgICAgICAgb25Nb3VzZU92ZXI9eygpID0+IHNldFVzZXJGb2N1cygndm9sdW1lJyl9XG4gICAgICAgIG9uTW91c2VPdXQ9eygpID0+IHNldFVzZXJGb2N1cygnJyl9XG4gICAgICAgIHsuLi5zbG90UHJvcHM/LnZvbHVtZUNvbnRyb2x9XG4gICAgICAvPlxuICAgICksXG4gICAgYmFja0l0ZW1zOiAoXG4gICAgICA8UGxheVBhbmVsIGFuaW1hdGlvbj17dGFyZ2V0U3RhdGUuYW5pbWF0aW9ufSBvbkNsaWNrPXtvbkNsaWNrQmxhbmt9IC8+XG4gICAgKSxcbiAgfVxuICBjb25zdCBjb21wYXRpYmlsaXR5Q2FzdFByb3BzID0gY2FzdE9wdGlvbnMgPT09ICdjb21wYXRpYmxlJyAmJiB7XG4gICAgc291cmNlLFxuICAgIHZhbHVlczoge3RpdGxlLCAuLi5zZXR0aW5ncy52YWx1ZXMsIC4uLmludGwsIG1vZHVsZXNDb25maWd9LFxuICAgIG9uTG9hZDogb25DYXN0LFxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2FzdE9wdGlvbnMgJiYgY2FzdE9wdGlvbnMgIT09ICdjb21wYXRpYmxlJykge1xuICAgICAgcmV0dXJuIGxpbmtDYXN0KHtzb3VyY2UsIC4uLmNhc3RPcHRpb25zfSlcbiAgICB9IC8vIFRPRE8gcGxheWxpc3QsIGF1ZGlvIC8gc3VidGl0bGUgc2V0dGluZ1xuICB9LCBbc291cmNlLCBjYXN0T3B0aW9ucy5jb250ZW50SWQsIGNhc3RPcHRpb25zLmN1c3RvbURhdGFdKVxuICBjb25zdCBzZWxlY3RlZEF1ZGlvVHJhY2sgPSBzZXR0aW5ncy5wcmVmZXJyZWQ/LmF1ZGlvIHx8IGFwcEF1ZGlvVHJhY2tcbiAgY29uc3Qgc2VsZWN0ZWRUZXh0VHJhY2sgPSBzZXR0aW5ncy5wcmVmZXJyZWQ/LnN1YnRpdGxlcyB8fCBhcHBUZXh0VHJhY2tcblxuICByZXR1cm4gKFxuICAgIDxJbnRsUHJvdmlkZXIgey4uLmludGx9PlxuICAgICAgPExheW91dFxuICAgICAgICBzdHlsZT17ey4uLnN0eWxlLCBjc3NWYXJpYWJsZXN9fVxuICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgIGRpc3BsYXk9e21vZGV9XG4gICAgICAgIGNvbnRyb2xzRGlzcGxheT17Y29udHJvbHNEaXNwbGF5fVxuICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICB2aWRlbz17XG4gICAgICAgICAgPFZpZGVvXG4gICAgICAgICAgICB7Li4udmlkZW9Qcm9wc31cbiAgICAgICAgICAgIHZpZGVvUmVmPXttdWx0aVJlZih2aWRlb1JlZiwgdmlkZW9Qcm9wcy52aWRlb1JlZil9XG4gICAgICAgICAgICBzb3VyY2U9e1xuICAgICAgICAgICAgICBjYXN0U3RhdGUgIT09IENhc3RTdGF0ZS5DT05ORUNURUQgJiZcbiAgICAgICAgICAgICAgcGxheWJhY2tTdGF0ZSAhPT0gJ2Vycm9yJyAmJlxuICAgICAgICAgICAgICBzb3VyY2VPdmVycmlkZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgICBjdXJyZW50VGltZT17dGFyZ2V0U3RhdGUuY3VycmVudFRpbWV9XG4gICAgICAgICAgICB7Li4uKGFwcFZvbHVtZSA+PSAwICYmIHt2b2x1bWU6IGFwcFZvbHVtZSwgbXV0ZWQ6IGFwcFZvbHVtZSA8PSAwfSl9XG4gICAgICAgICAgICBwbGF5YmFja1JhdGU9e3NldHRpbmdzLnZhbHVlcy5zcGVlZH1cbiAgICAgICAgICAgIHZpZGVvUmVzb2x1dGlvbj17cXVhbGl0eU9wdGlvbnN9XG4gICAgICAgICAgICBhdWRpb1RyYWNrPXtzZWxlY3RlZEF1ZGlvVHJhY2t9XG4gICAgICAgICAgICB0ZXh0VHJhY2s9e3NlbGVjdGVkVGV4dFRyYWNrfVxuICAgICAgICAgICAgbG9vcD17c2V0dGluZ3MudmFsdWVzLmxvb3B9XG4gICAgICAgICAgICBwbHVnaW5zPXtwbHVnaW5zfVxuICAgICAgICAgICAgbW9kdWxlc0NvbmZpZz17bW9kdWxlc0NvbmZpZ31cbiAgICAgICAgICAgIG9uUGxheWxvZ0ZpcmVkPXtvblBsYXlsb2dGaXJlZH1cbiAgICAgICAgICAgIG9uRXJyb3I9e2Vycm9ySGFuZGxlcn1cbiAgICAgICAgICAgIG9uUGxheWJhY2tTdGF0ZUNoYW5nZT17aGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmxvY2tlZEF1dG9wbGF5PXtlcnJvciA9PiBvbkJsb2NrZWRBdXRvcGxheT8uKGVycm9yKX1cbiAgICAgICAgICAgIG9uQ2FuUGxheT17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICB1cGRhdGVQbGF5YmFja1RpbWUoZXZlbnQpXG4gICAgICAgICAgICAgIHZpZGVvUHJvcHMub25DYW5QbGF5Py4oZXZlbnQpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25UaW1lVXBkYXRlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvbkR1cmF0aW9uQ2hhbmdlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvblBsYXllckxvYWRlZD17cGxheWVyID0+IHtcbiAgICAgICAgICAgICAgcGxheWVyUmVmLmN1cnJlbnQgPSBwbGF5ZXJcbiAgICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ/LihwbGF5ZXIpXG4gICAgICAgICAgICAgIHN5bmNWb2x1bWUodmlkZW9SZWYuY3VycmVudCwgdmlkZW9Qcm9wcy5tdXRlZCA/IDAgOiBhcHBWb2x1bWUpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyUmVmPXtlbGVtZW50ID0+IHtcbiAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCA9IGVsZW1lbnRcbiAgICAgICAgICBvYnNlcnZlKGVsZW1lbnQpXG4gICAgICAgIH19XG4gICAgICAgIGJhY2tSZWY9e2FkQ29udGFpbmVyUmVmfVxuICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgIGNoYW5uZWxUaXRsZT17Y2hhbm5lbFRpdGxlfVxuICAgICAgICBiYWNrQnV0dG9uPXtvbkJhY2sgJiYgPEJ1dHRvbiBzdGFydEljb249XCJiYWNrXCIgb25DbGljaz17b25CYWNrfSAvPn1cbiAgICAgICAgey4uLihpc1VzZXJBY3RpdmUgJiYgdWlFbGVtZW50cyl9XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIG9uTW91c2VNb3ZlPXtvbk1vdXNlTW92ZX1cbiAgICAgID5cbiAgICAgICAgPExvYWRpbmdTcGlubmVyIGFjdGl2ZT17d2FpdGluZ30gLz5cbiAgICAgICAge2Vycm9yRGF0YSAmJiA8RXJyb3IgZXJyb3I9e2Vycm9yRGF0YX0gb25CYWNrPXtvbkJhY2t9IC8+fVxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHsvKiBUT0RPIHN5bmMgQ2FzdCBsYXN0IHBsYXllZCB0aW1lIGJhY2sgKi99XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKFxuICAgICAgICAgIDxjb21wb25lbnRzLkNhc3RVaVxuICAgICAgICAgICAgb25CYWNrPXtvbkJhY2t9XG4gICAgICAgICAgICBvblN0YXRlQ2hhbmdlPXtzZXRDYXN0U3RhdGV9XG4gICAgICAgICAgICBvbkxvYWQ9e29uQ2FzdH1cbiAgICAgICAgICAgIHsuLi5jb21wYXRpYmlsaXR5Q2FzdFByb3BzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcy5jYXN0VWl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge2lzVXNlckFjdGl2ZSAmJiAoIC8vIFRPRE86IERlc2lnbiA8RXh0ZW5zdGlvbiAvPiBmbGFnXG4gICAgICAgICAgPGNvbXBvbmVudHMuU2V0dGluZ3NcbiAgICAgICAgICAgIHR5cGU9e3VpVHlwZX1cbiAgICAgICAgICAgIHNlY3Rpb25zPXtzZXR0aW5ncy5zZWN0aW9uc31cbiAgICAgICAgICAgIC8vIFRPRE8gaGFzQm90dG9tUGFuZWwgYm90dG9tOiA4ZW1cbiAgICAgICAgICAgIG9wZW49e3VzZXJGb2N1cyA9PT0gJ3NldHRpbmdzJ31cbiAgICAgICAgICAgIHZhbHVlcz17c2V0dGluZ3MudmFsdWVzfVxuICAgICAgICAgICAgb25PcGVuPXtvcGVuU2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNoYW5nZVNldHRpbmdzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcz8uc2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNsb3NlPXt1aUhhbmRsZXJzLm9uQ2xvc2VTZXR0aW5nc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8TGFuZ3VhZ2VTZXR0aW5nc1xuICAgICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICAgIGdldFBsYXllcj17KCkgPT4gcGxheWVyUmVmLmN1cnJlbnR9XG4gICAgICAgICAgb25DaGFuZ2U9eyhfZXZlbnQsIGl0ZW0pID0+XG4gICAgICAgICAgICB1aUhhbmRsZXJzLm9uQ2hhbmdlU2V0dGluZ3Moe1xuICAgICAgICAgICAgICBuYW1lOiBpdGVtLnR5cGUsXG4gICAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgICBrZWVwT3BlbjogdHJ1ZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */")
17815
+ default: /*#__PURE__*/css$1(LanguageMenu.styles, "production" === "production" ? "" : ";label:default;", "production" === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUVXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtpc0Rlc2t0b3B9IGZyb20gJ3V0aWwvZW52aXJvbm1lbnQnXG5pbXBvcnQgbXVsdGlSZWYgZnJvbSAndXRpbC9tdWx0aVJlZidcbmltcG9ydCB7b25WaWV3TW9kZUNoYW5nZSwgdG9nZ2xlRnVsbHNjcmVlbn0gZnJvbSAndXRpbC92aWV3TW9kZXMnXG5pbXBvcnQge3VzZUF1dG9IaWRlfSBmcm9tICdob29rcydcbmltcG9ydCB7SW50bFByb3ZpZGVyfSBmcm9tICdjb250ZXh0L0kxOG4nXG5pbXBvcnQge2dldE1lZGlhVGltZSwgaXNCdWZmZXJlZH0gZnJvbSAncGxheWVyQ29yZS9tZWRpYUJpbmRpbmdzJ1xuaW1wb3J0IEVycm9yIGZyb20gJ3BsYXllclVpL0Vycm9yJ1xuaW1wb3J0IExheW91dCBmcm9tICdwbGF5ZXJVaS9EZWZhdWx0TGF5b3V0J1xuaW1wb3J0IHtcbiAgQnV0dG9uLFxuICBMaXZlQnV0dG9uLFxuICBGdWxsc2NyZWVuQnV0dG9uLFxuICBQbGF5QnV0dG9uLFxuICBGb3J3YXJkQnV0dG9uLFxufSBmcm9tICdwbGF5ZXJVaS9idXR0b25zJ1xuaW1wb3J0IFNlZWtiYXIgZnJvbSAncGxheWVyVWkvU2Vla2JhcidcbmltcG9ydCBEaXNwbGF5VGltZSBmcm9tICdwbGF5ZXJVaS9EaXNwbGF5VGltZSdcbmltcG9ydCBMb2FkaW5nU3Bpbm5lciBmcm9tICdwbGF5ZXJVaS9Mb2FkaW5nU3Bpbm5lcidcbmltcG9ydCBCYWNrZHJvcCBmcm9tICdwbGF5ZXJVaS9CYWNrZHJvcCdcbmltcG9ydCBTZXR0aW5ncyBmcm9tICdwbGF5ZXJVaS9TZXR0aW5ncydcbmltcG9ydCBPdmVybGF5UGFuZWwgZnJvbSAncGxheWVyVWkvT3ZlcmxheVBhbmVsJ1xuaW1wb3J0IExhbmd1YWdlTWVudSBmcm9tICdwbGF5ZXJVaS9MYW5ndWFnZU1lbnUnXG5pbXBvcnQgUGxheVBhbmVsIGZyb20gJ3BsYXllclVpL1BsYXlQYW5lJ1xuaW1wb3J0IFZvbHVtZUNvbnRyb2wgZnJvbSAnY29tcG9uZW50L1ZvbHVtZUNvbnRyb2wnXG5pbXBvcnQgQ2FzdFVpIGZyb20gJ2Nhc3QvQ2FzdFVpJ1xuaW1wb3J0IHtsaW5rQ2FzdH0gZnJvbSAnY2FzdC9mcmFtZXdvcmsnXG5pbXBvcnQge0Nhc3RTdGF0ZX0gZnJvbSAnRW51bSdcbmltcG9ydCB7ZGlzcGF0Y2hDaGFwdGVyRXZlbnRzfSBmcm9tICcuL3RpbWVsaW5lJ1xuaW1wb3J0IFZpZGVvIGZyb20gJy4uL1ZpZGVvJ1xuaW1wb3J0IHtnZXRMYW5ndWFnZU9wdGlvbnMsIGdldFF1YWxpdHlPcHRpb25zLCBnZXRTZXR0aW5nc0RhdGF9IGZyb20gJy4vc2V0dGluZ3MnXG5pbXBvcnQge2xpbmtNZWRpYVZvbHVtZSwgc3luY1ZvbHVtZX0gZnJvbSAnLi92b2x1bWUnXG5pbXBvcnQgU2Vla1ByZXZpZXcgZnJvbSAnLi9TZWVrUHJldmlldydcblxuY29uc3Qgc2l6ZXMgPSB7XG4gICdzbWFsbC1lbWJlZCc6IDIwMCxcbiAgZW1iZWQ6IDQwMCxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6IDYwMCxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiA5MDAsXG4gIGRlc2t0b3A6IDEyMDAsXG59XG5cbmNvbnN0IHVzZUxpbmtTdGF0ZSA9IChyZXF1ZXN0LCBkZXBlbmRlbmNpZXMgPSBbXSkgPT4ge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXF1ZXN0KHNldFN0YXRlKVxuICB9LCBkZXBlbmRlbmNpZXMpXG4gIHJldHVybiBzdGF0ZVxufVxuXG5jb25zdCBmbGlwU3RhdGUgPSBzdGF0ZSA9PiAoc3RhdGUgPT09ICdwbGF5aW5nJyA/ICdwYXVzZWQnIDogJ3BsYXlpbmcnKVxuXG4vLyBGSVhNRTogdG9vIGZldyBsaW5lcyB0byBzcGxpdCBhIGZpbGUsIGxvb2tpbmcgYSBiZXR0ZXIgcGxhY2VcbmNvbnN0IGdldFRodW1ibmFpbHNVcmwgPSBzb3VyY2UgPT5cbiAgW10uY29uY2F0KHNvdXJjZSkuZmluZChpdGVtID0+IGl0ZW0udHlwZSA9PT0gJ3RodW1ibmFpbCcpPy5zcmNcblxuY29uc3QgZGVmYXVsdFNldHRpbmdzID0ge31cblxuY29uc3Qgc2hvdWxkUGF1c2UgPSAoe3VzZXJGb2N1cywgdWlUeXBlfSkgPT5cbiAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgL3NldHRpbmdzfGNoYXB0ZXItbGlzdC8udGVzdCh1c2VyRm9jdXMpKSB8fFxuICAvYmxvY2tpbmd8c2Vla2JhcnxzaGFyZS1pbm5lci8udGVzdCh1c2VyRm9jdXMpXG5cbi8vIFRPRE8gZXh0cmFjdCB0byBzb21ld2hlcmUgZWxzZVxuY29uc3QgbWVudUNsYXNzZXMgPSB7XG4gIGRlZmF1bHQ6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzKSxcbiAgZGVza3RvcDogY3NzKExhbmd1YWdlTWVudS5zdHlsZXMsIExhbmd1YWdlTWVudS5kZXNrdG9wU3R5bGVzKSxcbn1cblxuY29uc3QgTGFuZ3VhZ2VTZXR0aW5ncyA9ICh7XG4gIHVpVHlwZSxcbiAgYXVkaW9UcmFja3MgPSBbXSxcbiAgdGV4dFRyYWNrcyA9IFtdLFxuICBnZXRQbGF5ZXIsXG4gIG9uQ2hhbmdlLFxuICBzbG90cyA9IHtMYW5ndWFnZU1lbnV9LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnZXRMYW5ndWFnZU9wdGlvbnMoZ2V0UGxheWVyKCksIHthdWRpb1RyYWNrcywgdGV4dFRyYWNrc30pXG4gIHJldHVybiAoXG4gICAgYXVkaW9UcmFja3MubGVuZ3RoID4gMCAmJlxuICAgIHRleHRUcmFja3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICA8T3ZlcmxheVBhbmVsXG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICB0aXRsZT1cIuWtl+W5leODu+mfs+WjsOOCkuWIh+OCiuabv+OBiOOCi1wiXG4gICAgICAgIGJ1dHRvbkljb249XCJzdWJ0aXRsZVwiXG4gICAgICA+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIGF1ZGlvVHJhY2s6IGFwcEF1ZGlvVHJhY2ssXG4gIHRleHRUcmFjazogYXBwVGV4dFRyYWNrLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgICAgb3RoZXJTZWN0aW9uczogYXBwU2V0dGluZ3Muc2VjdGlvbnMsXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHtwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLCB2YWx1ZXMsIHNlY3Rpb25zfVxuICAgIH0pXG4gIH1cbiAgY29uc3QgZGlzbWlzc1BhbmVscyA9ICgpID0+IHtcbiAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgaWYgKHJlZnMuY3VycmVudC5jbG9zZU1lbnUpIHtcbiAgICAgIHJlZnMuY3VycmVudC5jbG9zZU1lbnUoKVxuICAgICAgcmVmcy5jdXJyZW50LmNsb3NlTWVudSA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuICBjb25zdCBsYXN0U3RhdGUgPSB1c2VSZWYocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgaGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZSA9IChldmVudCwgc3RhdGUpID0+IHtcbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdlcnJvcicpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U/LihldmVudCwgc3RhdGUpXG4gICAgLy8gcHJldmlvdXNseSBVSSBwbGF5YmFjayBzdGF0ZSB3YXMgc3luY2VkIG9ubHkgd2hlblxuICAgIC8vIGV4aXRpbmcgaU9TIHZpZGVvIG9ubHkgZnVsbHNjcmVlbih3ZWJraXRlbmRmdWxsc2NyZWVuKVxuICAgIGlmIChcbiAgICAgIC9wbGF5aW5nfHBhdXNlZC8udGVzdChzdGF0ZSkgJiZcbiAgICAgICEodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgJiZcbiAgICAgICFzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICkge1xuICAgICAgdG9nZ2xlUGxheShzdGF0ZSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnZW5kZWQnKSB7XG4gICAgICBkaXNtaXNzUGFuZWxzKClcbiAgICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2xvYWRpbmcnICYmIGxhc3RTdGF0ZS5jdXJyZW50ICE9PSAnaW5pdCcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdG9nZ2xlUGxheSgncGxheWluZycpLCAxKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdwbGF5aW5nJykge1xuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfVxuICAgIGlmIChsYXN0U3RhdGUuY3VycmVudCA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICBmZXRjaFNldHRpbmdzKClcbiAgICB9XG4gICAgbGFzdFN0YXRlLmN1cnJlbnQgPSBzdGF0ZVxuICAgIHNldFBsYXliYWNrU3RhdGUoc3RhdGUpXG4gIH1cblxuICBjb25zdCBjaGFuZ2VTZXR0aW5ncyA9IChuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSA9IHt9KSA9PiB7XG4gICAgLy8gVE9ETyBjb25zaWRlciBtZXJnZSBpbnRvIHVzZVJlZHVjZXI/XG4gICAgb25DaGFuZ2VTZXR0aW5ncz8uKHtuYW1lLCB2YWx1ZX0pXG4gICAgc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgLi4uY3VycmVudCxcbiAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBbbmFtZV06IHZhbHVlfSxcbiAgICAgIHByZWZlcnJlZDogey4uLmN1cnJlbnQucHJlZmVycmVkLCBbbmFtZV06IHZhbHVlfSxcbiAgICB9KSlcbiAgICBpZiAoIWtlZXBPcGVuKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9XG4gIGNvbnN0IG9wZW5TZXR0aW5ncyA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25GcmFtZSA9XG4gICAgICB1c2VyRm9jdXMgIT09ICdzZXR0aW5ncycgJiZcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIG9uT3BlblNldHRpbmdzPy4oZXZlbnQsIHNldHRpbmdzKVxuICAgICAgICAvLyBJbiBpT1MgU2FmYXJpLCB3ZSBuZWVkIHRvIHVwZGF0ZSBzZXR0aW5ncyBkYXRhXG4gICAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgICAgfSlcbiAgICBzZXRVc2VyRm9jdXMoY3VycmVudCA9PiAoY3VycmVudCA9PT0gJ3NldHRpbmdzJyA/ICcnIDogJ3NldHRpbmdzJykpXG4gICAgcmV0dXJuIGFuaW1hdGlvbkZyYW1lXG4gIH1cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tSYXRlID4gMCkge1xuICAgICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgICAuLi5jdXJyZW50LFxuICAgICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgc3BlZWQ6IGFwcFBsYXliYWNrUmF0ZX0sXG4gICAgICB9KSlcbiAgICB9XG4gIH0sIFthcHBQbGF5YmFja1JhdGVdKVxuXG4gIGNvbnN0IHF1YWxpdHlPcHRpb25zID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRRdWFsaXR5T3B0aW9ucyhzZXR0aW5ncyksXG4gICAgW3NldHRpbmdzLnZhbHVlcy5xdWFsaXR5XVxuICApXG4gIGNvbnN0IHZpZXdNb2RlID0gdXNlTGlua1N0YXRlKHVwZGF0ZSA9PlxuICAgIG9uVmlld01vZGVDaGFuZ2UodmlkZW9SZWYuY3VycmVudCwgdXBkYXRlKVxuICApXG4gIGNvbnN0IHNvdXJjZU92ZXJyaWRlID0gdXNlTGlua1N0YXRlKFxuICAgIGFzeW5jIHVwZGF0ZSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPVxuICAgICAgICBzb3VyY2UgJiYgKGF3YWl0IHF1YWxpdHkucmV3cml0ZU1hbmlmZXN0Py4oc291cmNlLCBxdWFsaXR5T3B0aW9ucykpXG4gICAgICB1cGRhdGUocmVzdWx0IHx8IHNvdXJjZSlcbiAgICB9LFxuICAgIFtzb3VyY2UsIHF1YWxpdHlPcHRpb25zXVxuICApXG4gIGNvbnN0IHdhaXRpbmcgPSAvZW1wdGllZHxsb2FkaW5nfGJ1ZmZlcmluZy8udGVzdChwbGF5YmFja1N0YXRlKVxuICBjb25zdCBhY3RpdmVQbGF5YmFjayA9XG4gICAgcGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnIHx8IHBsYXliYWNrU3RhdGUgPT09ICd3YWl0aW5nJ1xuICBjb25zdCB7XG4gICAgbW9kZTogYXV0b0hpZGVNb2RlLFxuICAgIG9uQ2xpY2ssXG4gICAgb25Nb3VzZU1vdmUsXG4gIH0gPSB1c2VBdXRvSGlkZSh7XG4gICAgcGlubmVkOiAhY29udHJvbHMuYXV0b2hpZGUgfHwgd2FpdGluZyB8fCAhYWN0aXZlUGxheWJhY2sgfHwgdXNlckZvY3VzLFxuICAgIHRhcFRvSGlkZTogdWlUeXBlID09PSAnbW9iaWxlJyxcbiAgICBoaWRlVGltZU1zOiBjb250cm9scy5hdXRvaGlkZSxcbiAgfSlcbiAgY29uc3QgbW9kZSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogY29udHJvbHMuYXV0b2hpZGVcbiAgICAgID8gYXV0b0hpZGVNb2RlXG4gICAgICA6IGNvbnRyb2xzXG4gICAgICA/ICdzaG93bidcbiAgICAgIDogJ2hpZGRlbidcbiAgY29uc3QgY29udHJvbHNEaXNwbGF5ID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnc2Vla2Jhci1vbmx5J1xuICAgICAgOiBjb250cm9scyA9PT0gJ3RpdGxlLW9ubHknIHx8IHBsYXliYWNrU3RhdGUgPT09ICdlbXB0aWVkJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBtb2RlXG4gIGNvbnN0IHNob3VsZEhpZGVQYW5lbHMgPVxuICAgIChjb250cm9scyA9PT0gJ25vLXBhbmVsJyB8fCBjb250cm9sc0Rpc3BsYXkgPT09ICdoaWRkZW4nKSAmJiB1c2VyRm9jdXNcbiAgY29uc3QgaGF2ZVBsYXlQYW5lbCA9XG4gICAgIWJsb2NraW5nICYmXG4gICAgdWlUeXBlID09PSAnZGVza3RvcCcgJiZcbiAgICAhd2FpdGluZyAmJlxuICAgICEvdm9sdW1lfCcnLy50ZXN0KHVzZXJGb2N1cykgJiZcbiAgICAhL3RpdGxlLW9ubHl8bm8tcGFuZWwvLnRlc3QoY29udHJvbHMpICYmXG4gICAgKGNvbnRyb2xzLmF1dG9oaWRlIHx8IG1vZGUgPT09ICdzaG93bicpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2hvdWxkSGlkZVBhbmVscykge1xuICAgICAgZGlzbWlzc1BhbmVscygpXG4gICAgfVxuICB9LCBbc2hvdWxkSGlkZVBhbmVsc10pXG4gIHVzZUVmZmVjdCgoKSA9PiBcbiAgICBvbihjb250YWluZXJSZWYuY3VycmVudCwgJ2ZvY3VzLW1lbnUnLCBldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQuZGV0YWlsPy5zdGF0dXMgPT09ICdvcGVuJykge1xuICAgICAgICBzZXRVc2VyRm9jdXMoJ21lbnUnKVxuICAgICAgICByZWZzLmN1cnJlbnQuY2xvc2VNZW51ID0gKCkgPT4gZXZlbnQuZGV0YWlsLmNsb3NlTWVudT8uKClcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5kZXRhaWw/LnN0YXR1cyA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgICAgc2V0VXNlckZvY3VzKGN1cnJlbnQgPT4gKGN1cnJlbnQgPT09ICdtZW51JyA/ICcnIDogY3VycmVudCkpXG4gICAgICB9XG4gICAgfSlcbiAgLCBbXSlcbiAgY29uc3Qge3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9ID0gbGlua01lZGlhVm9sdW1lKCgpID0+ICh7XG4gICAgdmlkZW86IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgZ2V0UGxheWVyOiAoKSA9PiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgfSkpXG4gIGNvbnN0IGNoYW5nZVByZXZpb3VzID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlUHJldmlvdXMoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuICBjb25zdCBjaGFuZ2VOZXh0ID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlTmV4dChldmVudClcbiAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIHZpZGVvUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2xvYWRzdGFydCcpKVxuICB9XG5cbiAgdXNlRWZmZWN0KGZldGNoU2V0dGluZ3MsIFthcHBTZXR0aW5nc10pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVGhlIGFkQ29udGFpbmVyIHNob3VsZCBiZSBzZXQgYmVmb3JlIGBsb2FkYCBiZWNhdXNlIEltYURhaS5sb2FkIG5lZWRzIGl0LlxuICAgIHBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4gcGx1Z2luLnNldEFkQ29udGFpbmVyPy4oYWRDb250YWluZXJSZWYuY3VycmVudCkpXG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgZGlzcGF0Y2hDaGFwdGVyRXZlbnRzKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIGNoYXB0ZXJzLFxuICAgICAgICBnZXRUaW1lOiAoKSA9PiB2aWRlb1JlZi5jdXJyZW50LmN1cnJlbnRUaW1lLFxuICAgICAgfSksXG4gICAgW2NoYXB0ZXJzXVxuICApXG5cbiAgY29uc3QgaXNFbmQgPSBwbGF5YmFja1N0YXRlID09PSAnZW5kZWQnXG4gIGNvbnN0IGNhblNlZWsgPSAhaXNFbmQgJiYgcGxheWJhY2tUaW1lLmR1cmF0aW9uID4gMFxuICBjb25zdCBkZXJpdmVkUGxheWJhY2tTdGF0ZSA9XG4gICAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpIHx8IHNob3VsZFBhdXNlKHt1c2VyRm9jdXMsIHVpVHlwZX0pXG4gICAgICA/ICdwYXVzZWQnXG4gICAgICA6IHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVcbiAgY29uc3QgYWN0aXZlVGh1bWJuYWlsc1VybCA9XG4gICAgKCF1c2VyRm9jdXMgfHwgdXNlckZvY3VzID09PSAnc2Vla2JhcicpICYmXG4gICAgKGdldFRodW1ibmFpbHNVcmwoc291cmNlKSB8fCB0aHVtYm5haWxzVXJsKVxuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB7XG4gICAgJy0tcGxheWluZyc6IHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyA/ICcxJyA6ICcwJyxcbiAgfVxuICBjb25zdCBvblJld2luZCA9XG4gICAgKCFpc0xpdmUgfHwgcGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMCkgJiZcbiAgICBjYW5TZWVrICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIC0gMTAsICdyZXdpbmQnKSlcbiAgY29uc3Qgb25Gb3J3YXJkID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgKyAxMCwgJ2ZvcndhcmQnKSlcbiAgY29uc3Qgb25DbGlja0JsYW5rID1cbiAgICBoYXZlUGxheVBhbmVsICYmICgoKSA9PiB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KSlcblxuICBjb25zdCB1aUhhbmRsZXJzID0ge1xuICAgIG9uUGxheTogKCkgPT4ge1xuICAgICAgdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSlcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH0sXG4gICAgb25DbGlja0xpdmU6IGlzTGl2ZSAmJiAoKCkgPT4gc2V0VGFyZ2V0VGltZSgwLCAnc2Vla1RvTGl2ZScpKSxcbiAgICBvbkNsaWNrU2Vla2JhcjogKCkgPT4ge1xuICAgICAgcmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiBzZXRVc2VyRm9jdXMoJ3NlZWtiYXInKSxcbiAgICAgICAgNjZcbiAgICAgIClcbiAgICB9LFxuICAgIG9uU2VlazogdGltZSA9PiB7XG4gICAgICBzZXRUYXJnZXRUaW1lKHRpbWUsICdzZWVrJylcbiAgICAgIGNsZWFyVGltZW91dChyZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cylcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gc2V0VXNlckZvY3VzKCcnKSwgNjYpXG4gICAgfSxcbiAgICBvbkNoYW5nZVNldHRpbmdzOiAoe25hbWUsIHZhbHVlLCBrZWVwT3Blbn0pID0+XG4gICAgICBjaGFuZ2VTZXR0aW5ncyhuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSksXG4gICAgb25DbG9zZVNldHRpbmdzOiBldmVudCA9PiB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBzbG90UHJvcHM/LnNldHRpbmdzPy5vbkNsb3NlPy4oZXZlbnQpXG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IHVpRWxlbWVudHMgPSB7XG4gICAgbGl2ZUJ1dHRvbjogdWlIYW5kbGVycy5vbkNsaWNrTGl2ZSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5MaXZlQnV0dG9uXG4gICAgICAgIHVzaW5nU3RhcnRPdmVyPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwfVxuICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlfVxuICAgICAgLz5cbiAgICApLFxuICAgIGNvbnRyb2xCdXR0b25zOiB7XG4gICAgICBwbGF5QnV0dG9uOiAoXG4gICAgICAgIDxQbGF5QnV0dG9uXG4gICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgZW5kZWQ9e2lzRW5kfVxuICAgICAgICAgIGhpZGRlbj17XG4gICAgICAgICAgICB1aVR5cGUgPT09ICdtb2JpbGUnICYmICh3YWl0aW5nIHx8IC9sb2FkaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpKVxuICAgICAgICAgIH1cbiAgICAgICAgICB2YXJpYW50PXshaXNVc2VyQWN0aXZlICYmICdmaXJzdHBsYXknfVxuICAgICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25QbGF5fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHJld2luZEJ1dHRvbjogb25SZXdpbmQgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicmV3aW5kMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5SRVdJTkRcIlxuICAgICAgICAgIGRpc2FibGVkPXtpc0VuZH1cbiAgICAgICAgICBvbkNsaWNrPXtvblJld2luZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBmb3J3YXJkQnV0dG9uOiBvbkZvcndhcmQgJiYgKFxuICAgICAgICA8Rm9yd2FyZEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cImZvcndhcmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLkZPUldBUkRcIlxuICAgICAgICAgIGRpc2FibGVkPXshY2FuU2Vla31cbiAgICAgICAgICBvbkNsaWNrPXtvbkZvcndhcmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgbmV4dEVwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cIm5leHRcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5ORVhUXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlTmV4dH1cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VOZXh0fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHByZXZpb3VzRXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicHJldmlvdXNcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5QUkVWSU9VU1wiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZVByZXZpb3VzfVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZVByZXZpb3VzfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICB9LFxuICAgIHNlZWtiYXI6IChcbiAgICAgIDxjb21wb25lbnRzLlNlZWtiYXJcbiAgICAgICAgc3R5bGU9ey92b2x1bWUvLnRlc3QodXNlckZvY3VzKSAmJiB7b3BhY2l0eTogJzAnfX1cbiAgICAgICAgc3RhcnRUaW1lPXtwbGF5YmFja1RpbWUuc3RhcnRUaW1lfVxuICAgICAgICBjdXJyZW50VGltZT17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lfVxuICAgICAgICBidWZmZXJUaW1lPXtwbGF5YmFja1RpbWUuYnVmZmVyVGltZX1cbiAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNsaWNrU2Vla2Jhcn1cbiAgICAgICAgb25DaGFuZ2VDb21taXR0ZWQ9e3VpSGFuZGxlcnMub25TZWVrfVxuICAgICAgICBtYXJrcz17bWFya3N9XG4gICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgIHsuLi5zbG90UHJvcHMuc2Vla2Jhcn1cbiAgICAgID5cbiAgICAgICAge2FjdGl2ZVRodW1ibmFpbHNVcmwgJiYgKFxuICAgICAgICAgIDxTZWVrUHJldmlld1xuICAgICAgICAgICAgdGh1bWJuYWlsc1VybD17YWN0aXZlVGh1bWJuYWlsc1VybH1cbiAgICAgICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvY29tcG9uZW50cy5TZWVrYmFyPlxuICAgICksXG4gICAgZGlzcGxheVRpbWU6IDxjb21wb25lbnRzLkRpc3BsYXlUaW1lIHsuLi5wbGF5YmFja1RpbWV9IC8+LFxuICAgIGZ1bGxzY3JlZW5CdXR0b246IChcbiAgICAgIDxGdWxsc2NyZWVuQnV0dG9uXG4gICAgICAgIHZpZXdNb2RlPXt2aWV3TW9kZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gdG9nZ2xlRnVsbHNjcmVlbihjb250YWluZXJSZWYuY3VycmVudCl9XG4gICAgICAvPlxuICAgICksXG4gICAgdm9sdW1lQ29udHJvbDogd2lkdGggPj0gc2l6ZXNbJ3NtYWxsLWVtYmVkJ10gJiYgKFxuICAgICAgPGNvbXBvbmVudHMuVm9sdW1lQ29udHJvbFxuICAgICAgICB7Li4ue3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9fVxuICAgICAgICBvbk1vdXNlT3Zlcj17KCkgPT4gc2V0VXNlckZvY3VzKCd2b2x1bWUnKX1cbiAgICAgICAgb25Nb3VzZU91dD17KCkgPT4gc2V0VXNlckZvY3VzKCcnKX1cbiAgICAgICAgey4uLnNsb3RQcm9wcz8udm9sdW1lQ29udHJvbH1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBiYWNrSXRlbXM6IChcbiAgICAgIDxQbGF5UGFuZWwgYW5pbWF0aW9uPXt0YXJnZXRTdGF0ZS5hbmltYXRpb259IG9uQ2xpY2s9e29uQ2xpY2tCbGFua30gLz5cbiAgICApLFxuICB9XG4gIGNvbnN0IGNvbXBhdGliaWxpdHlDYXN0UHJvcHMgPSBjYXN0T3B0aW9ucyA9PT0gJ2NvbXBhdGlibGUnICYmIHtcbiAgICBzb3VyY2UsXG4gICAgdmFsdWVzOiB7dGl0bGUsIC4uLnNldHRpbmdzLnZhbHVlcywgLi4uaW50bCwgbW9kdWxlc0NvbmZpZ30sXG4gICAgb25Mb2FkOiBvbkNhc3QsXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXN0T3B0aW9ucyAmJiBjYXN0T3B0aW9ucyAhPT0gJ2NvbXBhdGlibGUnKSB7XG4gICAgICByZXR1cm4gbGlua0Nhc3Qoe3NvdXJjZSwgLi4uY2FzdE9wdGlvbnN9KVxuICAgIH0gLy8gVE9ETyBwbGF5bGlzdCwgYXVkaW8gLyBzdWJ0aXRsZSBzZXR0aW5nXG4gIH0sIFtzb3VyY2UsIGNhc3RPcHRpb25zLmNvbnRlbnRJZCwgY2FzdE9wdGlvbnMuY3VzdG9tRGF0YV0pXG4gIGNvbnN0IHNlbGVjdGVkQXVkaW9UcmFjayA9IHNldHRpbmdzLnByZWZlcnJlZD8uYXVkaW8gfHwgYXBwQXVkaW9UcmFja1xuICBjb25zdCBzZWxlY3RlZFRleHRUcmFjayA9IHNldHRpbmdzLnByZWZlcnJlZD8uc3VidGl0bGVzIHx8IGFwcFRleHRUcmFja1xuXG4gIHJldHVybiAoXG4gICAgPEludGxQcm92aWRlciB7Li4uaW50bH0+XG4gICAgICA8TGF5b3V0XG4gICAgICAgIHN0eWxlPXt7Li4uc3R5bGUsIGNzc1ZhcmlhYmxlc319XG4gICAgICAgIHR5cGU9e3VpVHlwZX1cbiAgICAgICAgZGlzcGxheT17bW9kZX1cbiAgICAgICAgY29udHJvbHNEaXNwbGF5PXtjb250cm9sc0Rpc3BsYXl9XG4gICAgICAgIHNpemU9e3NpemV9XG4gICAgICAgIHZpZGVvPXtcbiAgICAgICAgICA8VmlkZW9cbiAgICAgICAgICAgIHsuLi52aWRlb1Byb3BzfVxuICAgICAgICAgICAgdmlkZW9SZWY9e211bHRpUmVmKHZpZGVvUmVmLCB2aWRlb1Byb3BzLnZpZGVvUmVmKX1cbiAgICAgICAgICAgIHNvdXJjZT17XG4gICAgICAgICAgICAgIGNhc3RTdGF0ZSAhPT0gQ2FzdFN0YXRlLkNPTk5FQ1RFRCAmJlxuICAgICAgICAgICAgICBwbGF5YmFja1N0YXRlICE9PSAnZXJyb3InICYmXG4gICAgICAgICAgICAgIHNvdXJjZU92ZXJyaWRlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwbGF5YmFja1N0YXRlPXtkZXJpdmVkUGxheWJhY2tTdGF0ZX1cbiAgICAgICAgICAgIGN1cnJlbnRUaW1lPXt0YXJnZXRTdGF0ZS5jdXJyZW50VGltZX1cbiAgICAgICAgICAgIHsuLi4oYXBwVm9sdW1lID49IDAgJiYge3ZvbHVtZTogYXBwVm9sdW1lLCBtdXRlZDogYXBwVm9sdW1lIDw9IDB9KX1cbiAgICAgICAgICAgIHBsYXliYWNrUmF0ZT17c2V0dGluZ3MudmFsdWVzLnNwZWVkfVxuICAgICAgICAgICAgdmlkZW9SZXNvbHV0aW9uPXtxdWFsaXR5T3B0aW9uc31cbiAgICAgICAgICAgIGF1ZGlvVHJhY2s9e3NlbGVjdGVkQXVkaW9UcmFja31cbiAgICAgICAgICAgIHRleHRUcmFjaz17c2VsZWN0ZWRUZXh0VHJhY2t9XG4gICAgICAgICAgICBsb29wPXtzZXR0aW5ncy52YWx1ZXMubG9vcH1cbiAgICAgICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgICAgICBtb2R1bGVzQ29uZmlnPXttb2R1bGVzQ29uZmlnfVxuICAgICAgICAgICAgb25QbGF5bG9nRmlyZWQ9e29uUGxheWxvZ0ZpcmVkfVxuICAgICAgICAgICAgb25FcnJvcj17ZXJyb3JIYW5kbGVyfVxuICAgICAgICAgICAgb25QbGF5YmFja1N0YXRlQ2hhbmdlPXtoYW5kbGVQbGF5YmFja1N0YXRlQ2hhbmdlfVxuICAgICAgICAgICAgb25CbG9ja2VkQXV0b3BsYXk9e2Vycm9yID0+IG9uQmxvY2tlZEF1dG9wbGF5Py4oZXJyb3IpfVxuICAgICAgICAgICAgb25DYW5QbGF5PXtldmVudCA9PiB7XG4gICAgICAgICAgICAgIHVwZGF0ZVBsYXliYWNrVGltZShldmVudClcbiAgICAgICAgICAgICAgdmlkZW9Qcm9wcy5vbkNhblBsYXk/LihldmVudClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvblRpbWVVcGRhdGU9e3VwZGF0ZVBsYXliYWNrVGltZX1cbiAgICAgICAgICAgIG9uRHVyYXRpb25DaGFuZ2U9e3VwZGF0ZVBsYXliYWNrVGltZX1cbiAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPXtwbGF5ZXIgPT4ge1xuICAgICAgICAgICAgICBwbGF5ZXJSZWYuY3VycmVudCA9IHBsYXllclxuICAgICAgICAgICAgICBvblBsYXllckxvYWRlZD8uKHBsYXllcilcbiAgICAgICAgICAgICAgc3luY1ZvbHVtZSh2aWRlb1JlZi5jdXJyZW50LCB2aWRlb1Byb3BzLm11dGVkID8gMCA6IGFwcFZvbHVtZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICBjb250YWluZXJSZWY9e2VsZW1lbnQgPT4ge1xuICAgICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50ID0gZWxlbWVudFxuICAgICAgICAgIG9ic2VydmUoZWxlbWVudClcbiAgICAgICAgfX1cbiAgICAgICAgYmFja1JlZj17YWRDb250YWluZXJSZWZ9XG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgY2hhbm5lbFRpdGxlPXtjaGFubmVsVGl0bGV9XG4gICAgICAgIGJhY2tCdXR0b249e29uQmFjayAmJiA8QnV0dG9uIHN0YXJ0SWNvbj1cImJhY2tcIiBvbkNsaWNrPXtvbkJhY2t9IC8+fVxuICAgICAgICB7Li4uKGlzVXNlckFjdGl2ZSAmJiB1aUVsZW1lbnRzKX1cbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgb25Nb3VzZU1vdmU9e29uTW91c2VNb3ZlfVxuICAgICAgPlxuICAgICAgICA8TG9hZGluZ1NwaW5uZXIgYWN0aXZlPXt3YWl0aW5nfSAvPlxuICAgICAgICB7ZXJyb3JEYXRhICYmIDxFcnJvciBlcnJvcj17ZXJyb3JEYXRhfSBvbkJhY2s9e29uQmFja30gLz59XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgey8qIFRPRE8gc3luYyBDYXN0IGxhc3QgcGxheWVkIHRpbWUgYmFjayAqL31cbiAgICAgICAge2lzVXNlckFjdGl2ZSAmJiAoXG4gICAgICAgICAgPGNvbXBvbmVudHMuQ2FzdFVpXG4gICAgICAgICAgICBvbkJhY2s9e29uQmFja31cbiAgICAgICAgICAgIG9uU3RhdGVDaGFuZ2U9e3NldENhc3RTdGF0ZX1cbiAgICAgICAgICAgIG9uTG9hZD17b25DYXN0fVxuICAgICAgICAgICAgey4uLmNvbXBhdGliaWxpdHlDYXN0UHJvcHN9XG4gICAgICAgICAgICB7Li4uc2xvdFByb3BzLmNhc3RVaX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmICggLy8gVE9ETzogRGVzaWduIDxFeHRlbnN0aW9uIC8+IGZsYWdcbiAgICAgICAgICA8Y29tcG9uZW50cy5TZXR0aW5nc1xuICAgICAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICAgICAgc2VjdGlvbnM9e3NldHRpbmdzLnNlY3Rpb25zfVxuICAgICAgICAgICAgLy8gVE9ETyBoYXNCb3R0b21QYW5lbCBib3R0b206IDhlbVxuICAgICAgICAgICAgb3Blbj17dXNlckZvY3VzID09PSAnc2V0dGluZ3MnfVxuICAgICAgICAgICAgdmFsdWVzPXtzZXR0aW5ncy52YWx1ZXN9XG4gICAgICAgICAgICBvbk9wZW49e29wZW5TZXR0aW5nc31cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt1aUhhbmRsZXJzLm9uQ2hhbmdlU2V0dGluZ3N9XG4gICAgICAgICAgICB7Li4uc2xvdFByb3BzPy5zZXR0aW5nc31cbiAgICAgICAgICAgIG9uQ2xvc2U9e3VpSGFuZGxlcnMub25DbG9zZVNldHRpbmdzfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIDxMYW5ndWFnZVNldHRpbmdzXG4gICAgICAgICAgdWlUeXBlPXt1aVR5cGV9XG4gICAgICAgICAgZ2V0UGxheWVyPXsoKSA9PiBwbGF5ZXJSZWYuY3VycmVudH1cbiAgICAgICAgICBvbkNoYW5nZT17KF9ldmVudCwgaXRlbSkgPT5cbiAgICAgICAgICAgIHVpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5ncyh7XG4gICAgICAgICAgICAgIG5hbWU6IGl0ZW0udHlwZSxcbiAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXG4gICAgICAgICAgICAgIGtlZXBPcGVuOiB0cnVlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgey4uLnNsb3RQcm9wcy5sYW5ndWFnZVNldHRpbmdzfVxuICAgICAgICAvPlxuICAgICAgICA8QmFja2Ryb3Agb3Blbj17IXBsYXliYWNrU3RhdGUgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2xvYWRpbmcnfT5cbiAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgPC9CYWNrZHJvcD5cbiAgICAgIDwvTGF5b3V0PlxuICAgIDwvSW50bFByb3ZpZGVyPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IFByZW1pdW1QbGF5ZXJcbiJdfQ== */"),
17816
+ desktop: /*#__PURE__*/css$1(LanguageMenu.styles, LanguageMenu.desktopStyles, "production" === "production" ? "" : ";label:desktop;", "production" === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0VXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtpc0Rlc2t0b3B9IGZyb20gJ3V0aWwvZW52aXJvbm1lbnQnXG5pbXBvcnQgbXVsdGlSZWYgZnJvbSAndXRpbC9tdWx0aVJlZidcbmltcG9ydCB7b25WaWV3TW9kZUNoYW5nZSwgdG9nZ2xlRnVsbHNjcmVlbn0gZnJvbSAndXRpbC92aWV3TW9kZXMnXG5pbXBvcnQge3VzZUF1dG9IaWRlfSBmcm9tICdob29rcydcbmltcG9ydCB7SW50bFByb3ZpZGVyfSBmcm9tICdjb250ZXh0L0kxOG4nXG5pbXBvcnQge2dldE1lZGlhVGltZSwgaXNCdWZmZXJlZH0gZnJvbSAncGxheWVyQ29yZS9tZWRpYUJpbmRpbmdzJ1xuaW1wb3J0IEVycm9yIGZyb20gJ3BsYXllclVpL0Vycm9yJ1xuaW1wb3J0IExheW91dCBmcm9tICdwbGF5ZXJVaS9EZWZhdWx0TGF5b3V0J1xuaW1wb3J0IHtcbiAgQnV0dG9uLFxuICBMaXZlQnV0dG9uLFxuICBGdWxsc2NyZWVuQnV0dG9uLFxuICBQbGF5QnV0dG9uLFxuICBGb3J3YXJkQnV0dG9uLFxufSBmcm9tICdwbGF5ZXJVaS9idXR0b25zJ1xuaW1wb3J0IFNlZWtiYXIgZnJvbSAncGxheWVyVWkvU2Vla2JhcidcbmltcG9ydCBEaXNwbGF5VGltZSBmcm9tICdwbGF5ZXJVaS9EaXNwbGF5VGltZSdcbmltcG9ydCBMb2FkaW5nU3Bpbm5lciBmcm9tICdwbGF5ZXJVaS9Mb2FkaW5nU3Bpbm5lcidcbmltcG9ydCBCYWNrZHJvcCBmcm9tICdwbGF5ZXJVaS9CYWNrZHJvcCdcbmltcG9ydCBTZXR0aW5ncyBmcm9tICdwbGF5ZXJVaS9TZXR0aW5ncydcbmltcG9ydCBPdmVybGF5UGFuZWwgZnJvbSAncGxheWVyVWkvT3ZlcmxheVBhbmVsJ1xuaW1wb3J0IExhbmd1YWdlTWVudSBmcm9tICdwbGF5ZXJVaS9MYW5ndWFnZU1lbnUnXG5pbXBvcnQgUGxheVBhbmVsIGZyb20gJ3BsYXllclVpL1BsYXlQYW5lJ1xuaW1wb3J0IFZvbHVtZUNvbnRyb2wgZnJvbSAnY29tcG9uZW50L1ZvbHVtZUNvbnRyb2wnXG5pbXBvcnQgQ2FzdFVpIGZyb20gJ2Nhc3QvQ2FzdFVpJ1xuaW1wb3J0IHtsaW5rQ2FzdH0gZnJvbSAnY2FzdC9mcmFtZXdvcmsnXG5pbXBvcnQge0Nhc3RTdGF0ZX0gZnJvbSAnRW51bSdcbmltcG9ydCB7ZGlzcGF0Y2hDaGFwdGVyRXZlbnRzfSBmcm9tICcuL3RpbWVsaW5lJ1xuaW1wb3J0IFZpZGVvIGZyb20gJy4uL1ZpZGVvJ1xuaW1wb3J0IHtnZXRMYW5ndWFnZU9wdGlvbnMsIGdldFF1YWxpdHlPcHRpb25zLCBnZXRTZXR0aW5nc0RhdGF9IGZyb20gJy4vc2V0dGluZ3MnXG5pbXBvcnQge2xpbmtNZWRpYVZvbHVtZSwgc3luY1ZvbHVtZX0gZnJvbSAnLi92b2x1bWUnXG5pbXBvcnQgU2Vla1ByZXZpZXcgZnJvbSAnLi9TZWVrUHJldmlldydcblxuY29uc3Qgc2l6ZXMgPSB7XG4gICdzbWFsbC1lbWJlZCc6IDIwMCxcbiAgZW1iZWQ6IDQwMCxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6IDYwMCxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiA5MDAsXG4gIGRlc2t0b3A6IDEyMDAsXG59XG5cbmNvbnN0IHVzZUxpbmtTdGF0ZSA9IChyZXF1ZXN0LCBkZXBlbmRlbmNpZXMgPSBbXSkgPT4ge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXF1ZXN0KHNldFN0YXRlKVxuICB9LCBkZXBlbmRlbmNpZXMpXG4gIHJldHVybiBzdGF0ZVxufVxuXG5jb25zdCBmbGlwU3RhdGUgPSBzdGF0ZSA9PiAoc3RhdGUgPT09ICdwbGF5aW5nJyA/ICdwYXVzZWQnIDogJ3BsYXlpbmcnKVxuXG4vLyBGSVhNRTogdG9vIGZldyBsaW5lcyB0byBzcGxpdCBhIGZpbGUsIGxvb2tpbmcgYSBiZXR0ZXIgcGxhY2VcbmNvbnN0IGdldFRodW1ibmFpbHNVcmwgPSBzb3VyY2UgPT5cbiAgW10uY29uY2F0KHNvdXJjZSkuZmluZChpdGVtID0+IGl0ZW0udHlwZSA9PT0gJ3RodW1ibmFpbCcpPy5zcmNcblxuY29uc3QgZGVmYXVsdFNldHRpbmdzID0ge31cblxuY29uc3Qgc2hvdWxkUGF1c2UgPSAoe3VzZXJGb2N1cywgdWlUeXBlfSkgPT5cbiAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgL3NldHRpbmdzfGNoYXB0ZXItbGlzdC8udGVzdCh1c2VyRm9jdXMpKSB8fFxuICAvYmxvY2tpbmd8c2Vla2JhcnxzaGFyZS1pbm5lci8udGVzdCh1c2VyRm9jdXMpXG5cbi8vIFRPRE8gZXh0cmFjdCB0byBzb21ld2hlcmUgZWxzZVxuY29uc3QgbWVudUNsYXNzZXMgPSB7XG4gIGRlZmF1bHQ6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzKSxcbiAgZGVza3RvcDogY3NzKExhbmd1YWdlTWVudS5zdHlsZXMsIExhbmd1YWdlTWVudS5kZXNrdG9wU3R5bGVzKSxcbn1cblxuY29uc3QgTGFuZ3VhZ2VTZXR0aW5ncyA9ICh7XG4gIHVpVHlwZSxcbiAgYXVkaW9UcmFja3MgPSBbXSxcbiAgdGV4dFRyYWNrcyA9IFtdLFxuICBnZXRQbGF5ZXIsXG4gIG9uQ2hhbmdlLFxuICBzbG90cyA9IHtMYW5ndWFnZU1lbnV9LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnZXRMYW5ndWFnZU9wdGlvbnMoZ2V0UGxheWVyKCksIHthdWRpb1RyYWNrcywgdGV4dFRyYWNrc30pXG4gIHJldHVybiAoXG4gICAgYXVkaW9UcmFja3MubGVuZ3RoID4gMCAmJlxuICAgIHRleHRUcmFja3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICA8T3ZlcmxheVBhbmVsXG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICB0aXRsZT1cIuWtl+W5leODu+mfs+WjsOOCkuWIh+OCiuabv+OBiOOCi1wiXG4gICAgICAgIGJ1dHRvbkljb249XCJzdWJ0aXRsZVwiXG4gICAgICA+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIGF1ZGlvVHJhY2s6IGFwcEF1ZGlvVHJhY2ssXG4gIHRleHRUcmFjazogYXBwVGV4dFRyYWNrLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgICAgb3RoZXJTZWN0aW9uczogYXBwU2V0dGluZ3Muc2VjdGlvbnMsXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHtwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLCB2YWx1ZXMsIHNlY3Rpb25zfVxuICAgIH0pXG4gIH1cbiAgY29uc3QgZGlzbWlzc1BhbmVscyA9ICgpID0+IHtcbiAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgaWYgKHJlZnMuY3VycmVudC5jbG9zZU1lbnUpIHtcbiAgICAgIHJlZnMuY3VycmVudC5jbG9zZU1lbnUoKVxuICAgICAgcmVmcy5jdXJyZW50LmNsb3NlTWVudSA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuICBjb25zdCBsYXN0U3RhdGUgPSB1c2VSZWYocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgaGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZSA9IChldmVudCwgc3RhdGUpID0+IHtcbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdlcnJvcicpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U/LihldmVudCwgc3RhdGUpXG4gICAgLy8gcHJldmlvdXNseSBVSSBwbGF5YmFjayBzdGF0ZSB3YXMgc3luY2VkIG9ubHkgd2hlblxuICAgIC8vIGV4aXRpbmcgaU9TIHZpZGVvIG9ubHkgZnVsbHNjcmVlbih3ZWJraXRlbmRmdWxsc2NyZWVuKVxuICAgIGlmIChcbiAgICAgIC9wbGF5aW5nfHBhdXNlZC8udGVzdChzdGF0ZSkgJiZcbiAgICAgICEodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgJiZcbiAgICAgICFzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICkge1xuICAgICAgdG9nZ2xlUGxheShzdGF0ZSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnZW5kZWQnKSB7XG4gICAgICBkaXNtaXNzUGFuZWxzKClcbiAgICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2xvYWRpbmcnICYmIGxhc3RTdGF0ZS5jdXJyZW50ICE9PSAnaW5pdCcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdG9nZ2xlUGxheSgncGxheWluZycpLCAxKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdwbGF5aW5nJykge1xuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfVxuICAgIGlmIChsYXN0U3RhdGUuY3VycmVudCA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICBmZXRjaFNldHRpbmdzKClcbiAgICB9XG4gICAgbGFzdFN0YXRlLmN1cnJlbnQgPSBzdGF0ZVxuICAgIHNldFBsYXliYWNrU3RhdGUoc3RhdGUpXG4gIH1cblxuICBjb25zdCBjaGFuZ2VTZXR0aW5ncyA9IChuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSA9IHt9KSA9PiB7XG4gICAgLy8gVE9ETyBjb25zaWRlciBtZXJnZSBpbnRvIHVzZVJlZHVjZXI/XG4gICAgb25DaGFuZ2VTZXR0aW5ncz8uKHtuYW1lLCB2YWx1ZX0pXG4gICAgc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgLi4uY3VycmVudCxcbiAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBbbmFtZV06IHZhbHVlfSxcbiAgICAgIHByZWZlcnJlZDogey4uLmN1cnJlbnQucHJlZmVycmVkLCBbbmFtZV06IHZhbHVlfSxcbiAgICB9KSlcbiAgICBpZiAoIWtlZXBPcGVuKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9XG4gIGNvbnN0IG9wZW5TZXR0aW5ncyA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25GcmFtZSA9XG4gICAgICB1c2VyRm9jdXMgIT09ICdzZXR0aW5ncycgJiZcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIG9uT3BlblNldHRpbmdzPy4oZXZlbnQsIHNldHRpbmdzKVxuICAgICAgICAvLyBJbiBpT1MgU2FmYXJpLCB3ZSBuZWVkIHRvIHVwZGF0ZSBzZXR0aW5ncyBkYXRhXG4gICAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgICAgfSlcbiAgICBzZXRVc2VyRm9jdXMoY3VycmVudCA9PiAoY3VycmVudCA9PT0gJ3NldHRpbmdzJyA/ICcnIDogJ3NldHRpbmdzJykpXG4gICAgcmV0dXJuIGFuaW1hdGlvbkZyYW1lXG4gIH1cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tSYXRlID4gMCkge1xuICAgICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgICAuLi5jdXJyZW50LFxuICAgICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgc3BlZWQ6IGFwcFBsYXliYWNrUmF0ZX0sXG4gICAgICB9KSlcbiAgICB9XG4gIH0sIFthcHBQbGF5YmFja1JhdGVdKVxuXG4gIGNvbnN0IHF1YWxpdHlPcHRpb25zID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRRdWFsaXR5T3B0aW9ucyhzZXR0aW5ncyksXG4gICAgW3NldHRpbmdzLnZhbHVlcy5xdWFsaXR5XVxuICApXG4gIGNvbnN0IHZpZXdNb2RlID0gdXNlTGlua1N0YXRlKHVwZGF0ZSA9PlxuICAgIG9uVmlld01vZGVDaGFuZ2UodmlkZW9SZWYuY3VycmVudCwgdXBkYXRlKVxuICApXG4gIGNvbnN0IHNvdXJjZU92ZXJyaWRlID0gdXNlTGlua1N0YXRlKFxuICAgIGFzeW5jIHVwZGF0ZSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPVxuICAgICAgICBzb3VyY2UgJiYgKGF3YWl0IHF1YWxpdHkucmV3cml0ZU1hbmlmZXN0Py4oc291cmNlLCBxdWFsaXR5T3B0aW9ucykpXG4gICAgICB1cGRhdGUocmVzdWx0IHx8IHNvdXJjZSlcbiAgICB9LFxuICAgIFtzb3VyY2UsIHF1YWxpdHlPcHRpb25zXVxuICApXG4gIGNvbnN0IHdhaXRpbmcgPSAvZW1wdGllZHxsb2FkaW5nfGJ1ZmZlcmluZy8udGVzdChwbGF5YmFja1N0YXRlKVxuICBjb25zdCBhY3RpdmVQbGF5YmFjayA9XG4gICAgcGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnIHx8IHBsYXliYWNrU3RhdGUgPT09ICd3YWl0aW5nJ1xuICBjb25zdCB7XG4gICAgbW9kZTogYXV0b0hpZGVNb2RlLFxuICAgIG9uQ2xpY2ssXG4gICAgb25Nb3VzZU1vdmUsXG4gIH0gPSB1c2VBdXRvSGlkZSh7XG4gICAgcGlubmVkOiAhY29udHJvbHMuYXV0b2hpZGUgfHwgd2FpdGluZyB8fCAhYWN0aXZlUGxheWJhY2sgfHwgdXNlckZvY3VzLFxuICAgIHRhcFRvSGlkZTogdWlUeXBlID09PSAnbW9iaWxlJyxcbiAgICBoaWRlVGltZU1zOiBjb250cm9scy5hdXRvaGlkZSxcbiAgfSlcbiAgY29uc3QgbW9kZSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogY29udHJvbHMuYXV0b2hpZGVcbiAgICAgID8gYXV0b0hpZGVNb2RlXG4gICAgICA6IGNvbnRyb2xzXG4gICAgICA/ICdzaG93bidcbiAgICAgIDogJ2hpZGRlbidcbiAgY29uc3QgY29udHJvbHNEaXNwbGF5ID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnc2Vla2Jhci1vbmx5J1xuICAgICAgOiBjb250cm9scyA9PT0gJ3RpdGxlLW9ubHknIHx8IHBsYXliYWNrU3RhdGUgPT09ICdlbXB0aWVkJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBtb2RlXG4gIGNvbnN0IHNob3VsZEhpZGVQYW5lbHMgPVxuICAgIChjb250cm9scyA9PT0gJ25vLXBhbmVsJyB8fCBjb250cm9sc0Rpc3BsYXkgPT09ICdoaWRkZW4nKSAmJiB1c2VyRm9jdXNcbiAgY29uc3QgaGF2ZVBsYXlQYW5lbCA9XG4gICAgIWJsb2NraW5nICYmXG4gICAgdWlUeXBlID09PSAnZGVza3RvcCcgJiZcbiAgICAhd2FpdGluZyAmJlxuICAgICEvdm9sdW1lfCcnLy50ZXN0KHVzZXJGb2N1cykgJiZcbiAgICAhL3RpdGxlLW9ubHl8bm8tcGFuZWwvLnRlc3QoY29udHJvbHMpICYmXG4gICAgKGNvbnRyb2xzLmF1dG9oaWRlIHx8IG1vZGUgPT09ICdzaG93bicpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2hvdWxkSGlkZVBhbmVscykge1xuICAgICAgZGlzbWlzc1BhbmVscygpXG4gICAgfVxuICB9LCBbc2hvdWxkSGlkZVBhbmVsc10pXG4gIHVzZUVmZmVjdCgoKSA9PiBcbiAgICBvbihjb250YWluZXJSZWYuY3VycmVudCwgJ2ZvY3VzLW1lbnUnLCBldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQuZGV0YWlsPy5zdGF0dXMgPT09ICdvcGVuJykge1xuICAgICAgICBzZXRVc2VyRm9jdXMoJ21lbnUnKVxuICAgICAgICByZWZzLmN1cnJlbnQuY2xvc2VNZW51ID0gKCkgPT4gZXZlbnQuZGV0YWlsLmNsb3NlTWVudT8uKClcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5kZXRhaWw/LnN0YXR1cyA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgICAgc2V0VXNlckZvY3VzKGN1cnJlbnQgPT4gKGN1cnJlbnQgPT09ICdtZW51JyA/ICcnIDogY3VycmVudCkpXG4gICAgICB9XG4gICAgfSlcbiAgLCBbXSlcbiAgY29uc3Qge3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9ID0gbGlua01lZGlhVm9sdW1lKCgpID0+ICh7XG4gICAgdmlkZW86IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgZ2V0UGxheWVyOiAoKSA9PiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgfSkpXG4gIGNvbnN0IGNoYW5nZVByZXZpb3VzID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlUHJldmlvdXMoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuICBjb25zdCBjaGFuZ2VOZXh0ID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlTmV4dChldmVudClcbiAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIHZpZGVvUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2xvYWRzdGFydCcpKVxuICB9XG5cbiAgdXNlRWZmZWN0KGZldGNoU2V0dGluZ3MsIFthcHBTZXR0aW5nc10pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVGhlIGFkQ29udGFpbmVyIHNob3VsZCBiZSBzZXQgYmVmb3JlIGBsb2FkYCBiZWNhdXNlIEltYURhaS5sb2FkIG5lZWRzIGl0LlxuICAgIHBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4gcGx1Z2luLnNldEFkQ29udGFpbmVyPy4oYWRDb250YWluZXJSZWYuY3VycmVudCkpXG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgZGlzcGF0Y2hDaGFwdGVyRXZlbnRzKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIGNoYXB0ZXJzLFxuICAgICAgICBnZXRUaW1lOiAoKSA9PiB2aWRlb1JlZi5jdXJyZW50LmN1cnJlbnRUaW1lLFxuICAgICAgfSksXG4gICAgW2NoYXB0ZXJzXVxuICApXG5cbiAgY29uc3QgaXNFbmQgPSBwbGF5YmFja1N0YXRlID09PSAnZW5kZWQnXG4gIGNvbnN0IGNhblNlZWsgPSAhaXNFbmQgJiYgcGxheWJhY2tUaW1lLmR1cmF0aW9uID4gMFxuICBjb25zdCBkZXJpdmVkUGxheWJhY2tTdGF0ZSA9XG4gICAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpIHx8IHNob3VsZFBhdXNlKHt1c2VyRm9jdXMsIHVpVHlwZX0pXG4gICAgICA/ICdwYXVzZWQnXG4gICAgICA6IHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVcbiAgY29uc3QgYWN0aXZlVGh1bWJuYWlsc1VybCA9XG4gICAgKCF1c2VyRm9jdXMgfHwgdXNlckZvY3VzID09PSAnc2Vla2JhcicpICYmXG4gICAgKGdldFRodW1ibmFpbHNVcmwoc291cmNlKSB8fCB0aHVtYm5haWxzVXJsKVxuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB7XG4gICAgJy0tcGxheWluZyc6IHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyA/ICcxJyA6ICcwJyxcbiAgfVxuICBjb25zdCBvblJld2luZCA9XG4gICAgKCFpc0xpdmUgfHwgcGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMCkgJiZcbiAgICBjYW5TZWVrICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIC0gMTAsICdyZXdpbmQnKSlcbiAgY29uc3Qgb25Gb3J3YXJkID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgKyAxMCwgJ2ZvcndhcmQnKSlcbiAgY29uc3Qgb25DbGlja0JsYW5rID1cbiAgICBoYXZlUGxheVBhbmVsICYmICgoKSA9PiB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KSlcblxuICBjb25zdCB1aUhhbmRsZXJzID0ge1xuICAgIG9uUGxheTogKCkgPT4ge1xuICAgICAgdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSlcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH0sXG4gICAgb25DbGlja0xpdmU6IGlzTGl2ZSAmJiAoKCkgPT4gc2V0VGFyZ2V0VGltZSgwLCAnc2Vla1RvTGl2ZScpKSxcbiAgICBvbkNsaWNrU2Vla2JhcjogKCkgPT4ge1xuICAgICAgcmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiBzZXRVc2VyRm9jdXMoJ3NlZWtiYXInKSxcbiAgICAgICAgNjZcbiAgICAgIClcbiAgICB9LFxuICAgIG9uU2VlazogdGltZSA9PiB7XG4gICAgICBzZXRUYXJnZXRUaW1lKHRpbWUsICdzZWVrJylcbiAgICAgIGNsZWFyVGltZW91dChyZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cylcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gc2V0VXNlckZvY3VzKCcnKSwgNjYpXG4gICAgfSxcbiAgICBvbkNoYW5nZVNldHRpbmdzOiAoe25hbWUsIHZhbHVlLCBrZWVwT3Blbn0pID0+XG4gICAgICBjaGFuZ2VTZXR0aW5ncyhuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSksXG4gICAgb25DbG9zZVNldHRpbmdzOiBldmVudCA9PiB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBzbG90UHJvcHM/LnNldHRpbmdzPy5vbkNsb3NlPy4oZXZlbnQpXG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IHVpRWxlbWVudHMgPSB7XG4gICAgbGl2ZUJ1dHRvbjogdWlIYW5kbGVycy5vbkNsaWNrTGl2ZSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5MaXZlQnV0dG9uXG4gICAgICAgIHVzaW5nU3RhcnRPdmVyPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwfVxuICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlfVxuICAgICAgLz5cbiAgICApLFxuICAgIGNvbnRyb2xCdXR0b25zOiB7XG4gICAgICBwbGF5QnV0dG9uOiAoXG4gICAgICAgIDxQbGF5QnV0dG9uXG4gICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgZW5kZWQ9e2lzRW5kfVxuICAgICAgICAgIGhpZGRlbj17XG4gICAgICAgICAgICB1aVR5cGUgPT09ICdtb2JpbGUnICYmICh3YWl0aW5nIHx8IC9sb2FkaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpKVxuICAgICAgICAgIH1cbiAgICAgICAgICB2YXJpYW50PXshaXNVc2VyQWN0aXZlICYmICdmaXJzdHBsYXknfVxuICAgICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25QbGF5fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHJld2luZEJ1dHRvbjogb25SZXdpbmQgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicmV3aW5kMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5SRVdJTkRcIlxuICAgICAgICAgIGRpc2FibGVkPXtpc0VuZH1cbiAgICAgICAgICBvbkNsaWNrPXtvblJld2luZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBmb3J3YXJkQnV0dG9uOiBvbkZvcndhcmQgJiYgKFxuICAgICAgICA8Rm9yd2FyZEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cImZvcndhcmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLkZPUldBUkRcIlxuICAgICAgICAgIGRpc2FibGVkPXshY2FuU2Vla31cbiAgICAgICAgICBvbkNsaWNrPXtvbkZvcndhcmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgbmV4dEVwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cIm5leHRcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5ORVhUXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlTmV4dH1cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VOZXh0fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHByZXZpb3VzRXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicHJldmlvdXNcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5QUkVWSU9VU1wiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZVByZXZpb3VzfVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZVByZXZpb3VzfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICB9LFxuICAgIHNlZWtiYXI6IChcbiAgICAgIDxjb21wb25lbnRzLlNlZWtiYXJcbiAgICAgICAgc3R5bGU9ey92b2x1bWUvLnRlc3QodXNlckZvY3VzKSAmJiB7b3BhY2l0eTogJzAnfX1cbiAgICAgICAgc3RhcnRUaW1lPXtwbGF5YmFja1RpbWUuc3RhcnRUaW1lfVxuICAgICAgICBjdXJyZW50VGltZT17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lfVxuICAgICAgICBidWZmZXJUaW1lPXtwbGF5YmFja1RpbWUuYnVmZmVyVGltZX1cbiAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNsaWNrU2Vla2Jhcn1cbiAgICAgICAgb25DaGFuZ2VDb21taXR0ZWQ9e3VpSGFuZGxlcnMub25TZWVrfVxuICAgICAgICBtYXJrcz17bWFya3N9XG4gICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgIHsuLi5zbG90UHJvcHMuc2Vla2Jhcn1cbiAgICAgID5cbiAgICAgICAge2FjdGl2ZVRodW1ibmFpbHNVcmwgJiYgKFxuICAgICAgICAgIDxTZWVrUHJldmlld1xuICAgICAgICAgICAgdGh1bWJuYWlsc1VybD17YWN0aXZlVGh1bWJuYWlsc1VybH1cbiAgICAgICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvY29tcG9uZW50cy5TZWVrYmFyPlxuICAgICksXG4gICAgZGlzcGxheVRpbWU6IDxjb21wb25lbnRzLkRpc3BsYXlUaW1lIHsuLi5wbGF5YmFja1RpbWV9IC8+LFxuICAgIGZ1bGxzY3JlZW5CdXR0b246IChcbiAgICAgIDxGdWxsc2NyZWVuQnV0dG9uXG4gICAgICAgIHZpZXdNb2RlPXt2aWV3TW9kZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gdG9nZ2xlRnVsbHNjcmVlbihjb250YWluZXJSZWYuY3VycmVudCl9XG4gICAgICAvPlxuICAgICksXG4gICAgdm9sdW1lQ29udHJvbDogd2lkdGggPj0gc2l6ZXNbJ3NtYWxsLWVtYmVkJ10gJiYgKFxuICAgICAgPGNvbXBvbmVudHMuVm9sdW1lQ29udHJvbFxuICAgICAgICB7Li4ue3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9fVxuICAgICAgICBvbk1vdXNlT3Zlcj17KCkgPT4gc2V0VXNlckZvY3VzKCd2b2x1bWUnKX1cbiAgICAgICAgb25Nb3VzZU91dD17KCkgPT4gc2V0VXNlckZvY3VzKCcnKX1cbiAgICAgICAgey4uLnNsb3RQcm9wcz8udm9sdW1lQ29udHJvbH1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBiYWNrSXRlbXM6IChcbiAgICAgIDxQbGF5UGFuZWwgYW5pbWF0aW9uPXt0YXJnZXRTdGF0ZS5hbmltYXRpb259IG9uQ2xpY2s9e29uQ2xpY2tCbGFua30gLz5cbiAgICApLFxuICB9XG4gIGNvbnN0IGNvbXBhdGliaWxpdHlDYXN0UHJvcHMgPSBjYXN0T3B0aW9ucyA9PT0gJ2NvbXBhdGlibGUnICYmIHtcbiAgICBzb3VyY2UsXG4gICAgdmFsdWVzOiB7dGl0bGUsIC4uLnNldHRpbmdzLnZhbHVlcywgLi4uaW50bCwgbW9kdWxlc0NvbmZpZ30sXG4gICAgb25Mb2FkOiBvbkNhc3QsXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXN0T3B0aW9ucyAmJiBjYXN0T3B0aW9ucyAhPT0gJ2NvbXBhdGlibGUnKSB7XG4gICAgICByZXR1cm4gbGlua0Nhc3Qoe3NvdXJjZSwgLi4uY2FzdE9wdGlvbnN9KVxuICAgIH0gLy8gVE9ETyBwbGF5bGlzdCwgYXVkaW8gLyBzdWJ0aXRsZSBzZXR0aW5nXG4gIH0sIFtzb3VyY2UsIGNhc3RPcHRpb25zLmNvbnRlbnRJZCwgY2FzdE9wdGlvbnMuY3VzdG9tRGF0YV0pXG4gIGNvbnN0IHNlbGVjdGVkQXVkaW9UcmFjayA9IHNldHRpbmdzLnByZWZlcnJlZD8uYXVkaW8gfHwgYXBwQXVkaW9UcmFja1xuICBjb25zdCBzZWxlY3RlZFRleHRUcmFjayA9IHNldHRpbmdzLnByZWZlcnJlZD8uc3VidGl0bGVzIHx8IGFwcFRleHRUcmFja1xuXG4gIHJldHVybiAoXG4gICAgPEludGxQcm92aWRlciB7Li4uaW50bH0+XG4gICAgICA8TGF5b3V0XG4gICAgICAgIHN0eWxlPXt7Li4uc3R5bGUsIGNzc1ZhcmlhYmxlc319XG4gICAgICAgIHR5cGU9e3VpVHlwZX1cbiAgICAgICAgZGlzcGxheT17bW9kZX1cbiAgICAgICAgY29udHJvbHNEaXNwbGF5PXtjb250cm9sc0Rpc3BsYXl9XG4gICAgICAgIHNpemU9e3NpemV9XG4gICAgICAgIHZpZGVvPXtcbiAgICAgICAgICA8VmlkZW9cbiAgICAgICAgICAgIHsuLi52aWRlb1Byb3BzfVxuICAgICAgICAgICAgdmlkZW9SZWY9e211bHRpUmVmKHZpZGVvUmVmLCB2aWRlb1Byb3BzLnZpZGVvUmVmKX1cbiAgICAgICAgICAgIHNvdXJjZT17XG4gICAgICAgICAgICAgIGNhc3RTdGF0ZSAhPT0gQ2FzdFN0YXRlLkNPTk5FQ1RFRCAmJlxuICAgICAgICAgICAgICBwbGF5YmFja1N0YXRlICE9PSAnZXJyb3InICYmXG4gICAgICAgICAgICAgIHNvdXJjZU92ZXJyaWRlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwbGF5YmFja1N0YXRlPXtkZXJpdmVkUGxheWJhY2tTdGF0ZX1cbiAgICAgICAgICAgIGN1cnJlbnRUaW1lPXt0YXJnZXRTdGF0ZS5jdXJyZW50VGltZX1cbiAgICAgICAgICAgIHsuLi4oYXBwVm9sdW1lID49IDAgJiYge3ZvbHVtZTogYXBwVm9sdW1lLCBtdXRlZDogYXBwVm9sdW1lIDw9IDB9KX1cbiAgICAgICAgICAgIHBsYXliYWNrUmF0ZT17c2V0dGluZ3MudmFsdWVzLnNwZWVkfVxuICAgICAgICAgICAgdmlkZW9SZXNvbHV0aW9uPXtxdWFsaXR5T3B0aW9uc31cbiAgICAgICAgICAgIGF1ZGlvVHJhY2s9e3NlbGVjdGVkQXVkaW9UcmFja31cbiAgICAgICAgICAgIHRleHRUcmFjaz17c2VsZWN0ZWRUZXh0VHJhY2t9XG4gICAgICAgICAgICBsb29wPXtzZXR0aW5ncy52YWx1ZXMubG9vcH1cbiAgICAgICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgICAgICBtb2R1bGVzQ29uZmlnPXttb2R1bGVzQ29uZmlnfVxuICAgICAgICAgICAgb25QbGF5bG9nRmlyZWQ9e29uUGxheWxvZ0ZpcmVkfVxuICAgICAgICAgICAgb25FcnJvcj17ZXJyb3JIYW5kbGVyfVxuICAgICAgICAgICAgb25QbGF5YmFja1N0YXRlQ2hhbmdlPXtoYW5kbGVQbGF5YmFja1N0YXRlQ2hhbmdlfVxuICAgICAgICAgICAgb25CbG9ja2VkQXV0b3BsYXk9e2Vycm9yID0+IG9uQmxvY2tlZEF1dG9wbGF5Py4oZXJyb3IpfVxuICAgICAgICAgICAgb25DYW5QbGF5PXtldmVudCA9PiB7XG4gICAgICAgICAgICAgIHVwZGF0ZVBsYXliYWNrVGltZShldmVudClcbiAgICAgICAgICAgICAgdmlkZW9Qcm9wcy5vbkNhblBsYXk/LihldmVudClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvblRpbWVVcGRhdGU9e3VwZGF0ZVBsYXliYWNrVGltZX1cbiAgICAgICAgICAgIG9uRHVyYXRpb25DaGFuZ2U9e3VwZGF0ZVBsYXliYWNrVGltZX1cbiAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPXtwbGF5ZXIgPT4ge1xuICAgICAgICAgICAgICBwbGF5ZXJSZWYuY3VycmVudCA9IHBsYXllclxuICAgICAgICAgICAgICBvblBsYXllckxvYWRlZD8uKHBsYXllcilcbiAgICAgICAgICAgICAgc3luY1ZvbHVtZSh2aWRlb1JlZi5jdXJyZW50LCB2aWRlb1Byb3BzLm11dGVkID8gMCA6IGFwcFZvbHVtZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICBjb250YWluZXJSZWY9e2VsZW1lbnQgPT4ge1xuICAgICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50ID0gZWxlbWVudFxuICAgICAgICAgIG9ic2VydmUoZWxlbWVudClcbiAgICAgICAgfX1cbiAgICAgICAgYmFja1JlZj17YWRDb250YWluZXJSZWZ9XG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgY2hhbm5lbFRpdGxlPXtjaGFubmVsVGl0bGV9XG4gICAgICAgIGJhY2tCdXR0b249e29uQmFjayAmJiA8QnV0dG9uIHN0YXJ0SWNvbj1cImJhY2tcIiBvbkNsaWNrPXtvbkJhY2t9IC8+fVxuICAgICAgICB7Li4uKGlzVXNlckFjdGl2ZSAmJiB1aUVsZW1lbnRzKX1cbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgb25Nb3VzZU1vdmU9e29uTW91c2VNb3ZlfVxuICAgICAgPlxuICAgICAgICA8TG9hZGluZ1NwaW5uZXIgYWN0aXZlPXt3YWl0aW5nfSAvPlxuICAgICAgICB7ZXJyb3JEYXRhICYmIDxFcnJvciBlcnJvcj17ZXJyb3JEYXRhfSBvbkJhY2s9e29uQmFja30gLz59XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgey8qIFRPRE8gc3luYyBDYXN0IGxhc3QgcGxheWVkIHRpbWUgYmFjayAqL31cbiAgICAgICAge2lzVXNlckFjdGl2ZSAmJiAoXG4gICAgICAgICAgPGNvbXBvbmVudHMuQ2FzdFVpXG4gICAgICAgICAgICBvbkJhY2s9e29uQmFja31cbiAgICAgICAgICAgIG9uU3RhdGVDaGFuZ2U9e3NldENhc3RTdGF0ZX1cbiAgICAgICAgICAgIG9uTG9hZD17b25DYXN0fVxuICAgICAgICAgICAgey4uLmNvbXBhdGliaWxpdHlDYXN0UHJvcHN9XG4gICAgICAgICAgICB7Li4uc2xvdFByb3BzLmNhc3RVaX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmICggLy8gVE9ETzogRGVzaWduIDxFeHRlbnN0aW9uIC8+IGZsYWdcbiAgICAgICAgICA8Y29tcG9uZW50cy5TZXR0aW5nc1xuICAgICAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICAgICAgc2VjdGlvbnM9e3NldHRpbmdzLnNlY3Rpb25zfVxuICAgICAgICAgICAgLy8gVE9ETyBoYXNCb3R0b21QYW5lbCBib3R0b206IDhlbVxuICAgICAgICAgICAgb3Blbj17dXNlckZvY3VzID09PSAnc2V0dGluZ3MnfVxuICAgICAgICAgICAgdmFsdWVzPXtzZXR0aW5ncy52YWx1ZXN9XG4gICAgICAgICAgICBvbk9wZW49e29wZW5TZXR0aW5nc31cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt1aUhhbmRsZXJzLm9uQ2hhbmdlU2V0dGluZ3N9XG4gICAgICAgICAgICB7Li4uc2xvdFByb3BzPy5zZXR0aW5nc31cbiAgICAgICAgICAgIG9uQ2xvc2U9e3VpSGFuZGxlcnMub25DbG9zZVNldHRpbmdzfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIDxMYW5ndWFnZVNldHRpbmdzXG4gICAgICAgICAgdWlUeXBlPXt1aVR5cGV9XG4gICAgICAgICAgZ2V0UGxheWVyPXsoKSA9PiBwbGF5ZXJSZWYuY3VycmVudH1cbiAgICAgICAgICBvbkNoYW5nZT17KF9ldmVudCwgaXRlbSkgPT5cbiAgICAgICAgICAgIHVpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5ncyh7XG4gICAgICAgICAgICAgIG5hbWU6IGl0ZW0udHlwZSxcbiAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXG4gICAgICAgICAgICAgIGtlZXBPcGVuOiB0cnVlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgey4uLnNsb3RQcm9wcy5sYW5ndWFnZVNldHRpbmdzfVxuICAgICAgICAvPlxuICAgICAgICA8QmFja2Ryb3Agb3Blbj17IXBsYXliYWNrU3RhdGUgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2xvYWRpbmcnfT5cbiAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgPC9CYWNrZHJvcD5cbiAgICAgIDwvTGF5b3V0PlxuICAgIDwvSW50bFByb3ZpZGVyPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IFByZW1pdW1QbGF5ZXJcbiJdfQ== */")
17817
17817
  };
17818
17818
 
17819
17819
  const LanguageSettings = _ref2 => {
@@ -18027,6 +18027,15 @@ const PremiumPlayer = _ref3 => {
18027
18027
  });
18028
18028
  };
18029
18029
 
18030
+ const dismissPanels = () => {
18031
+ setUserFocus('');
18032
+
18033
+ if (refs.current.closeMenu) {
18034
+ refs.current.closeMenu();
18035
+ refs.current.closeMenu = undefined;
18036
+ }
18037
+ };
18038
+
18030
18039
  const lastState = react.exports.useRef(playbackState);
18031
18040
 
18032
18041
  const handlePlaybackStateChange = (event, state) => {
@@ -18045,6 +18054,7 @@ const PremiumPlayer = _ref3 => {
18045
18054
  }
18046
18055
 
18047
18056
  if (state === 'ended') {
18057
+ dismissPanels();
18048
18058
  togglePlay('paused');
18049
18059
  }
18050
18060
 
@@ -18128,16 +18138,11 @@ const PremiumPlayer = _ref3 => {
18128
18138
  });
18129
18139
  const mode = userFocus === 'seekbar' ? 'hidden' : controls.autohide ? autoHideMode : controls ? 'shown' : 'hidden';
18130
18140
  const controlsDisplay = userFocus === 'seekbar' ? 'seekbar-only' : controls === 'title-only' || playbackState === 'emptied' ? 'hidden' : mode;
18131
- const shouldHidePanels = (controls === 'no-panel' || controlsDisplay === 'hidden' || playbackState === 'ended') && userFocus;
18141
+ const shouldHidePanels = (controls === 'no-panel' || controlsDisplay === 'hidden') && userFocus;
18132
18142
  const havePlayPanel = !blocking && uiType === 'desktop' && !waiting && !/volume|''/.test(userFocus) && !/title-only|no-panel/.test(controls) && (controls.autohide || mode === 'shown');
18133
18143
  react.exports.useEffect(() => {
18134
18144
  if (shouldHidePanels) {
18135
- setUserFocus('');
18136
-
18137
- if (refs.current.closeMenu) {
18138
- refs.current.closeMenu();
18139
- refs.current.closeMenu = undefined;
18140
- }
18145
+ dismissPanels();
18141
18146
  }
18142
18147
  }, [shouldHidePanels]);
18143
18148
  react.exports.useEffect(() => on(containerRef.current, 'focus-menu', event => {
package/dist/index.mjs CHANGED
@@ -811,7 +811,7 @@ function convertToSeconds(timeString) {
811
811
  function getVersion() {
812
812
  try {
813
813
  // eslint-disable-next-line no-undef
814
- return "2.25.0-canary.23";
814
+ return "2.25.0-canary.24";
815
815
  } catch (e) {
816
816
  return undefined;
817
817
  }
@@ -8800,8 +8800,8 @@ const shouldPause = ({
8800
8800
 
8801
8801
 
8802
8802
  const menuClasses = {
8803
- default: /*#__PURE__*/css$1(LanguageMenu.styles, process.env.NODE_ENV === "production" ? "" : ";label:default;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUVXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtpc0Rlc2t0b3B9IGZyb20gJ3V0aWwvZW52aXJvbm1lbnQnXG5pbXBvcnQgbXVsdGlSZWYgZnJvbSAndXRpbC9tdWx0aVJlZidcbmltcG9ydCB7b25WaWV3TW9kZUNoYW5nZSwgdG9nZ2xlRnVsbHNjcmVlbn0gZnJvbSAndXRpbC92aWV3TW9kZXMnXG5pbXBvcnQge3VzZUF1dG9IaWRlfSBmcm9tICdob29rcydcbmltcG9ydCB7SW50bFByb3ZpZGVyfSBmcm9tICdjb250ZXh0L0kxOG4nXG5pbXBvcnQge2dldE1lZGlhVGltZSwgaXNCdWZmZXJlZH0gZnJvbSAncGxheWVyQ29yZS9tZWRpYUJpbmRpbmdzJ1xuaW1wb3J0IEVycm9yIGZyb20gJ3BsYXllclVpL0Vycm9yJ1xuaW1wb3J0IExheW91dCBmcm9tICdwbGF5ZXJVaS9EZWZhdWx0TGF5b3V0J1xuaW1wb3J0IHtcbiAgQnV0dG9uLFxuICBMaXZlQnV0dG9uLFxuICBGdWxsc2NyZWVuQnV0dG9uLFxuICBQbGF5QnV0dG9uLFxuICBGb3J3YXJkQnV0dG9uLFxufSBmcm9tICdwbGF5ZXJVaS9idXR0b25zJ1xuaW1wb3J0IFNlZWtiYXIgZnJvbSAncGxheWVyVWkvU2Vla2JhcidcbmltcG9ydCBEaXNwbGF5VGltZSBmcm9tICdwbGF5ZXJVaS9EaXNwbGF5VGltZSdcbmltcG9ydCBMb2FkaW5nU3Bpbm5lciBmcm9tICdwbGF5ZXJVaS9Mb2FkaW5nU3Bpbm5lcidcbmltcG9ydCBCYWNrZHJvcCBmcm9tICdwbGF5ZXJVaS9CYWNrZHJvcCdcbmltcG9ydCBTZXR0aW5ncyBmcm9tICdwbGF5ZXJVaS9TZXR0aW5ncydcbmltcG9ydCBPdmVybGF5UGFuZWwgZnJvbSAncGxheWVyVWkvT3ZlcmxheVBhbmVsJ1xuaW1wb3J0IExhbmd1YWdlTWVudSBmcm9tICdwbGF5ZXJVaS9MYW5ndWFnZU1lbnUnXG5pbXBvcnQgUGxheVBhbmVsIGZyb20gJ3BsYXllclVpL1BsYXlQYW5lJ1xuaW1wb3J0IFZvbHVtZUNvbnRyb2wgZnJvbSAnY29tcG9uZW50L1ZvbHVtZUNvbnRyb2wnXG5pbXBvcnQgQ2FzdFVpIGZyb20gJ2Nhc3QvQ2FzdFVpJ1xuaW1wb3J0IHtsaW5rQ2FzdH0gZnJvbSAnY2FzdC9mcmFtZXdvcmsnXG5pbXBvcnQge0Nhc3RTdGF0ZX0gZnJvbSAnRW51bSdcbmltcG9ydCB7ZGlzcGF0Y2hDaGFwdGVyRXZlbnRzfSBmcm9tICcuL3RpbWVsaW5lJ1xuaW1wb3J0IFZpZGVvIGZyb20gJy4uL1ZpZGVvJ1xuaW1wb3J0IHtnZXRMYW5ndWFnZU9wdGlvbnMsIGdldFF1YWxpdHlPcHRpb25zLCBnZXRTZXR0aW5nc0RhdGF9IGZyb20gJy4vc2V0dGluZ3MnXG5pbXBvcnQge2xpbmtNZWRpYVZvbHVtZSwgc3luY1ZvbHVtZX0gZnJvbSAnLi92b2x1bWUnXG5pbXBvcnQgU2Vla1ByZXZpZXcgZnJvbSAnLi9TZWVrUHJldmlldydcblxuY29uc3Qgc2l6ZXMgPSB7XG4gICdzbWFsbC1lbWJlZCc6IDIwMCxcbiAgZW1iZWQ6IDQwMCxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6IDYwMCxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiA5MDAsXG4gIGRlc2t0b3A6IDEyMDAsXG59XG5cbmNvbnN0IHVzZUxpbmtTdGF0ZSA9IChyZXF1ZXN0LCBkZXBlbmRlbmNpZXMgPSBbXSkgPT4ge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXF1ZXN0KHNldFN0YXRlKVxuICB9LCBkZXBlbmRlbmNpZXMpXG4gIHJldHVybiBzdGF0ZVxufVxuXG5jb25zdCBmbGlwU3RhdGUgPSBzdGF0ZSA9PiAoc3RhdGUgPT09ICdwbGF5aW5nJyA/ICdwYXVzZWQnIDogJ3BsYXlpbmcnKVxuXG4vLyBGSVhNRTogdG9vIGZldyBsaW5lcyB0byBzcGxpdCBhIGZpbGUsIGxvb2tpbmcgYSBiZXR0ZXIgcGxhY2VcbmNvbnN0IGdldFRodW1ibmFpbHNVcmwgPSBzb3VyY2UgPT5cbiAgW10uY29uY2F0KHNvdXJjZSkuZmluZChpdGVtID0+IGl0ZW0udHlwZSA9PT0gJ3RodW1ibmFpbCcpPy5zcmNcblxuY29uc3QgZGVmYXVsdFNldHRpbmdzID0ge31cblxuY29uc3Qgc2hvdWxkUGF1c2UgPSAoe3VzZXJGb2N1cywgdWlUeXBlfSkgPT5cbiAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgL3NldHRpbmdzfGNoYXB0ZXItbGlzdC8udGVzdCh1c2VyRm9jdXMpKSB8fFxuICAvYmxvY2tpbmd8c2Vla2JhcnxzaGFyZS1pbm5lci8udGVzdCh1c2VyRm9jdXMpXG5cbi8vIFRPRE8gZXh0cmFjdCB0byBzb21ld2hlcmUgZWxzZVxuY29uc3QgbWVudUNsYXNzZXMgPSB7XG4gIGRlZmF1bHQ6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzKSxcbiAgZGVza3RvcDogY3NzKExhbmd1YWdlTWVudS5zdHlsZXMsIExhbmd1YWdlTWVudS5kZXNrdG9wU3R5bGVzKSxcbn1cblxuY29uc3QgTGFuZ3VhZ2VTZXR0aW5ncyA9ICh7XG4gIHVpVHlwZSxcbiAgYXVkaW9UcmFja3MgPSBbXSxcbiAgdGV4dFRyYWNrcyA9IFtdLFxuICBnZXRQbGF5ZXIsXG4gIG9uQ2hhbmdlLFxuICBzbG90cyA9IHtMYW5ndWFnZU1lbnV9LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnZXRMYW5ndWFnZU9wdGlvbnMoZ2V0UGxheWVyKCksIHthdWRpb1RyYWNrcywgdGV4dFRyYWNrc30pXG4gIHJldHVybiAoXG4gICAgYXVkaW9UcmFja3MubGVuZ3RoID4gMCAmJlxuICAgIHRleHRUcmFja3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICA8T3ZlcmxheVBhbmVsXG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICB0aXRsZT1cIuWtl+W5leODu+mfs+WjsOOCkuWIh+OCiuabv+OBiOOCi1wiXG4gICAgICAgIGJ1dHRvbkljb249XCJzdWJ0aXRsZVwiXG4gICAgICA+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIGF1ZGlvVHJhY2s6IGFwcEF1ZGlvVHJhY2ssXG4gIHRleHRUcmFjazogYXBwVGV4dFRyYWNrLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgICAgb3RoZXJTZWN0aW9uczogYXBwU2V0dGluZ3Muc2VjdGlvbnMsXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHtwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLCB2YWx1ZXMsIHNlY3Rpb25zfVxuICAgIH0pXG4gIH1cbiAgY29uc3QgbGFzdFN0YXRlID0gdXNlUmVmKHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGhhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2UgPSAoZXZlbnQsIHN0YXRlKSA9PiB7XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnZXJyb3InKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgb25QbGF5YmFja1N0YXRlQ2hhbmdlPy4oZXZlbnQsIHN0YXRlKVxuICAgIC8vIHByZXZpb3VzbHkgVUkgcGxheWJhY2sgc3RhdGUgd2FzIHN5bmNlZCBvbmx5IHdoZW5cbiAgICAvLyBleGl0aW5nIGlPUyB2aWRlbyBvbmx5IGZ1bGxzY3JlZW4od2Via2l0ZW5kZnVsbHNjcmVlbilcbiAgICBpZiAoXG4gICAgICAvcGxheWluZ3xwYXVzZWQvLnRlc3Qoc3RhdGUpICYmXG4gICAgICAhKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpICYmXG4gICAgICAhc2hvdWxkUGF1c2Uoe3VzZXJGb2N1cywgdWlUeXBlfSlcbiAgICApIHtcbiAgICAgIHRvZ2dsZVBsYXkoc3RhdGUpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2VuZGVkJykge1xuICAgICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnbG9hZGluZycgJiYgbGFzdFN0YXRlLmN1cnJlbnQgIT09ICdpbml0Jykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0b2dnbGVQbGF5KCdwbGF5aW5nJyksIDEpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ3BsYXlpbmcnKSB7XG4gICAgICBzZXRJc1VzZXJBY3RpdmUodHJ1ZSlcbiAgICB9XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnbG9hZGluZycpIHtcbiAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgIH1cbiAgICBsYXN0U3RhdGUuY3VycmVudCA9IHN0YXRlXG4gICAgc2V0UGxheWJhY2tTdGF0ZShzdGF0ZSlcbiAgfVxuXG4gIGNvbnN0IGNoYW5nZVNldHRpbmdzID0gKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59ID0ge30pID0+IHtcbiAgICAvLyBUT0RPIGNvbnNpZGVyIG1lcmdlIGludG8gdXNlUmVkdWNlcj9cbiAgICBvbkNoYW5nZVNldHRpbmdzPy4oe25hbWUsIHZhbHVlfSlcbiAgICBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSlcbiAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAuLi5jdXJyZW50LFxuICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIFtuYW1lXTogdmFsdWV9LFxuICAgICAgcHJlZmVycmVkOiB7Li4uY3VycmVudC5wcmVmZXJyZWQsIFtuYW1lXTogdmFsdWV9LFxuICAgIH0pKVxuICAgIGlmICgha2VlcE9wZW4pIHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICB9XG4gIH1cbiAgY29uc3Qgb3BlblNldHRpbmdzID0gZXZlbnQgPT4ge1xuICAgIGNvbnN0IGFuaW1hdGlvbkZyYW1lID1cbiAgICAgIHVzZXJGb2N1cyAhPT0gJ3NldHRpbmdzJyAmJlxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgb25PcGVuU2V0dGluZ3M/LihldmVudCwgc2V0dGluZ3MpXG4gICAgICAgIC8vIEluIGlPUyBTYWZhcmksIHdlIG5lZWQgdG8gdXBkYXRlIHNldHRpbmdzIGRhdGFcbiAgICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgICB9KVxuICAgIHNldFVzZXJGb2N1cyhjdXJyZW50ID0+IChjdXJyZW50ID09PSAnc2V0dGluZ3MnID8gJycgOiAnc2V0dGluZ3MnKSlcbiAgICByZXR1cm4gYW5pbWF0aW9uRnJhbWVcbiAgfVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1JhdGUgPiAwKSB7XG4gICAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBzcGVlZDogYXBwUGxheWJhY2tSYXRlfSxcbiAgICAgIH0pKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrUmF0ZV0pXG5cbiAgY29uc3QgcXVhbGl0eU9wdGlvbnMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFF1YWxpdHlPcHRpb25zKHNldHRpbmdzKSxcbiAgICBbc2V0dGluZ3MudmFsdWVzLnF1YWxpdHldXG4gIClcbiAgY29uc3Qgdmlld01vZGUgPSB1c2VMaW5rU3RhdGUodXBkYXRlID0+XG4gICAgb25WaWV3TW9kZUNoYW5nZSh2aWRlb1JlZi5jdXJyZW50LCB1cGRhdGUpXG4gIClcbiAgY29uc3Qgc291cmNlT3ZlcnJpZGUgPSB1c2VMaW5rU3RhdGUoXG4gICAgYXN5bmMgdXBkYXRlID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICAgIHNvdXJjZSAmJiAoYXdhaXQgcXVhbGl0eS5yZXdyaXRlTWFuaWZlc3Q/Lihzb3VyY2UsIHF1YWxpdHlPcHRpb25zKSlcbiAgICAgIHVwZGF0ZShyZXN1bHQgfHwgc291cmNlKVxuICAgIH0sXG4gICAgW3NvdXJjZSwgcXVhbGl0eU9wdGlvbnNdXG4gIClcbiAgY29uc3Qgd2FpdGluZyA9IC9lbXB0aWVkfGxvYWRpbmd8YnVmZmVyaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGFjdGl2ZVBsYXliYWNrID1cbiAgICBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ3dhaXRpbmcnXG4gIGNvbnN0IHtcbiAgICBtb2RlOiBhdXRvSGlkZU1vZGUsXG4gICAgb25DbGljayxcbiAgICBvbk1vdXNlTW92ZSxcbiAgfSA9IHVzZUF1dG9IaWRlKHtcbiAgICBwaW5uZWQ6ICFjb250cm9scy5hdXRvaGlkZSB8fCB3YWl0aW5nIHx8ICFhY3RpdmVQbGF5YmFjayB8fCB1c2VyRm9jdXMsXG4gICAgdGFwVG9IaWRlOiB1aVR5cGUgPT09ICdtb2JpbGUnLFxuICAgIGhpZGVUaW1lTXM6IGNvbnRyb2xzLmF1dG9oaWRlLFxuICB9KVxuICBjb25zdCBtb2RlID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBjb250cm9scy5hdXRvaGlkZVxuICAgICAgPyBhdXRvSGlkZU1vZGVcbiAgICAgIDogY29udHJvbHNcbiAgICAgID8gJ3Nob3duJ1xuICAgICAgOiAnaGlkZGVuJ1xuICBjb25zdCBjb250cm9sc0Rpc3BsYXkgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdzZWVrYmFyLW9ubHknXG4gICAgICA6IGNvbnRyb2xzID09PSAndGl0bGUtb25seScgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2VtcHRpZWQnXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IG1vZGVcbiAgY29uc3Qgc2hvdWxkSGlkZVBhbmVscyA9XG4gICAgKGNvbnRyb2xzID09PSAnbm8tcGFuZWwnIHx8XG4gICAgICBjb250cm9sc0Rpc3BsYXkgPT09ICdoaWRkZW4nIHx8XG4gICAgICBwbGF5YmFja1N0YXRlID09PSAnZW5kZWQnKSAmJlxuICAgIHVzZXJGb2N1c1xuICBjb25zdCBoYXZlUGxheVBhbmVsID1cbiAgICAhYmxvY2tpbmcgJiZcbiAgICB1aVR5cGUgPT09ICdkZXNrdG9wJyAmJlxuICAgICF3YWl0aW5nICYmXG4gICAgIS92b2x1bWV8JycvLnRlc3QodXNlckZvY3VzKSAmJlxuICAgICEvdGl0bGUtb25seXxuby1wYW5lbC8udGVzdChjb250cm9scykgJiZcbiAgICAoY29udHJvbHMuYXV0b2hpZGUgfHwgbW9kZSA9PT0gJ3Nob3duJylcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRIaWRlUGFuZWxzKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBpZiAocmVmcy5jdXJyZW50LmNsb3NlTWVudSkge1xuICAgICAgICByZWZzLmN1cnJlbnQuY2xvc2VNZW51KClcbiAgICAgICAgcmVmcy5jdXJyZW50LmNsb3NlTWVudSA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cbiAgfSwgW3Nob3VsZEhpZGVQYW5lbHNdKVxuICB1c2VFZmZlY3QoKCkgPT4gXG4gICAgb24oY29udGFpbmVyUmVmLmN1cnJlbnQsICdmb2N1cy1tZW51JywgZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50LmRldGFpbD8uc3RhdHVzID09PSAnb3BlbicpIHtcbiAgICAgICAgc2V0VXNlckZvY3VzKCdtZW51JylcbiAgICAgICAgcmVmcy5jdXJyZW50LmNsb3NlTWVudSA9ICgpID0+IGV2ZW50LmRldGFpbC5jbG9zZU1lbnU/LigpXG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQuZGV0YWlsPy5zdGF0dXMgPT09ICdjbG9zZWQnKSB7XG4gICAgICAgIHNldFVzZXJGb2N1cyhjdXJyZW50ID0+IChjdXJyZW50ID09PSAnbWVudScgPyAnJyA6IGN1cnJlbnQpKVxuICAgICAgfVxuICAgIH0pXG4gICwgW10pXG4gIGNvbnN0IHtzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfSA9IGxpbmtNZWRpYVZvbHVtZSgoKSA9PiAoe1xuICAgIHZpZGVvOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgIGdldFBsYXllcjogKCkgPT4gcGxheWVyUmVmLmN1cnJlbnQsXG4gIH0pKVxuICBjb25zdCBjaGFuZ2VQcmV2aW91cyA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZVByZXZpb3VzKGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cbiAgY29uc3QgY2hhbmdlTmV4dCA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZU5leHQoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuXG4gIHVzZUVmZmVjdChmZXRjaFNldHRpbmdzLCBbYXBwU2V0dGluZ3NdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRoZSBhZENvbnRhaW5lciBzaG91bGQgYmUgc2V0IGJlZm9yZSBgbG9hZGAgYmVjYXVzZSBJbWFEYWkubG9hZCBuZWVkcyBpdC5cbiAgICBwbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHBsdWdpbi5zZXRBZENvbnRhaW5lcj8uKGFkQ29udGFpbmVyUmVmLmN1cnJlbnQpKVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIGRpc3BhdGNoQ2hhcHRlckV2ZW50cyh7XG4gICAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgICBjaGFwdGVycyxcbiAgICAgICAgZ2V0VGltZTogKCkgPT4gdmlkZW9SZWYuY3VycmVudC5jdXJyZW50VGltZSxcbiAgICAgIH0pLFxuICAgIFtjaGFwdGVyc11cbiAgKVxuXG4gIGNvbnN0IGlzRW5kID0gcGxheWJhY2tTdGF0ZSA9PT0gJ2VuZGVkJ1xuICBjb25zdCBjYW5TZWVrID0gIWlzRW5kICYmIHBsYXliYWNrVGltZS5kdXJhdGlvbiA+IDBcbiAgY29uc3QgZGVyaXZlZFBsYXliYWNrU3RhdGUgPVxuICAgICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSB8fCBzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICAgPyAncGF1c2VkJ1xuICAgICAgOiB0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlXG4gIGNvbnN0IGFjdGl2ZVRodW1ibmFpbHNVcmwgPVxuICAgICghdXNlckZvY3VzIHx8IHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInKSAmJlxuICAgIChnZXRUaHVtYm5haWxzVXJsKHNvdXJjZSkgfHwgdGh1bWJuYWlsc1VybClcbiAgY29uc3QgY3NzVmFyaWFibGVzID0ge1xuICAgICctLXBsYXlpbmcnOiBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgPyAnMScgOiAnMCcsXG4gIH1cbiAgY29uc3Qgb25SZXdpbmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgY2FuU2VlayAmJlxuICAgICgoKSA9PiBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSAtIDEwLCAncmV3aW5kJykpXG4gIGNvbnN0IG9uRm9yd2FyZCA9XG4gICAgKCFpc0xpdmUgfHwgcGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMCkgJiZcbiAgICBjYW5TZWVrICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lICsgMTAsICdmb3J3YXJkJykpXG4gIGNvbnN0IG9uQ2xpY2tCbGFuayA9XG4gICAgaGF2ZVBsYXlQYW5lbCAmJiAoKCkgPT4gdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSkpXG5cbiAgY29uc3QgdWlIYW5kbGVycyA9IHtcbiAgICBvblBsYXk6ICgpID0+IHtcbiAgICAgIHRvZ2dsZVBsYXkoJycsIHt0cmlnZ2VyZWRCeTogJ3VzZXItYWN0aW9uJ30pXG4gICAgICBzZXRJc1VzZXJBY3RpdmUodHJ1ZSlcbiAgICB9LFxuICAgIG9uQ2xpY2tMaXZlOiBpc0xpdmUgJiYgKCgpID0+IHNldFRhcmdldFRpbWUoMCwgJ3NlZWtUb0xpdmUnKSksXG4gICAgb25DbGlja1NlZWtiYXI6ICgpID0+IHtcbiAgICAgIHJlZnMuY3VycmVudC5kZWZlcmVkU2Vla0ZvY3VzID0gc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4gc2V0VXNlckZvY3VzKCdzZWVrYmFyJyksXG4gICAgICAgIDY2XG4gICAgICApXG4gICAgfSxcbiAgICBvblNlZWs6IHRpbWUgPT4ge1xuICAgICAgc2V0VGFyZ2V0VGltZSh0aW1lLCAnc2VlaycpXG4gICAgICBjbGVhclRpbWVvdXQocmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHNldFVzZXJGb2N1cygnJyksIDY2KVxuICAgIH0sXG4gICAgb25DaGFuZ2VTZXR0aW5nczogKHtuYW1lLCB2YWx1ZSwga2VlcE9wZW59KSA9PlxuICAgICAgY2hhbmdlU2V0dGluZ3MobmFtZSwgdmFsdWUsIHtrZWVwT3Blbn0pLFxuICAgIG9uQ2xvc2VTZXR0aW5nczogZXZlbnQgPT4ge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgICAgc2xvdFByb3BzPy5zZXR0aW5ncz8ub25DbG9zZT8uKGV2ZW50KVxuICAgIH0sXG4gIH1cblxuICBjb25zdCB1aUVsZW1lbnRzID0ge1xuICAgIGxpdmVCdXR0b246IHVpSGFuZGxlcnMub25DbGlja0xpdmUgJiYgKFxuICAgICAgPGNvbXBvbmVudHMuTGl2ZUJ1dHRvblxuICAgICAgICB1c2luZ1N0YXJ0T3Zlcj17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMH1cbiAgICAgICAgb25DbGljaz17dWlIYW5kbGVycy5vbkNsaWNrTGl2ZX1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBjb250cm9sQnV0dG9uczoge1xuICAgICAgcGxheUJ1dHRvbjogKFxuICAgICAgICA8UGxheUJ1dHRvblxuICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgIGVuZGVkPXtpc0VuZH1cbiAgICAgICAgICBoaWRkZW49e1xuICAgICAgICAgICAgdWlUeXBlID09PSAnbW9iaWxlJyAmJiAod2FpdGluZyB8fCAvbG9hZGluZy8udGVzdChwbGF5YmFja1N0YXRlKSlcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyaWFudD17IWlzVXNlckFjdGl2ZSAmJiAnZmlyc3RwbGF5J31cbiAgICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uUGxheX1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICByZXdpbmRCdXR0b246IG9uUmV3aW5kICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cInJld2luZDEwXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuUkVXSU5EXCJcbiAgICAgICAgICBkaXNhYmxlZD17aXNFbmR9XG4gICAgICAgICAgb25DbGljaz17b25SZXdpbmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgZm9yd2FyZEJ1dHRvbjogb25Gb3J3YXJkICYmIChcbiAgICAgICAgPEZvcndhcmRCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJmb3J3YXJkMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5GT1JXQVJEXCJcbiAgICAgICAgICBkaXNhYmxlZD17IWNhblNlZWt9XG4gICAgICAgICAgb25DbGljaz17b25Gb3J3YXJkfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIG5leHRFcGlzb2RlQnV0dG9uOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJuZXh0XCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuTkVYVFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZU5leHR9XG4gICAgICAgICAgb25DbGljaz17Y2hhbmdlTmV4dH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBwcmV2aW91c0VwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cInByZXZpb3VzXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuUFJFVklPVVNcIlxuICAgICAgICAgIGRpc2FibGVkPXshb25DaGFuZ2VQcmV2aW91c31cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VQcmV2aW91c31cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgfSxcbiAgICBzZWVrYmFyOiAoXG4gICAgICA8Y29tcG9uZW50cy5TZWVrYmFyXG4gICAgICAgIHN0eWxlPXsvdm9sdW1lLy50ZXN0KHVzZXJGb2N1cykgJiYge29wYWNpdHk6ICcwJ319XG4gICAgICAgIHN0YXJ0VGltZT17cGxheWJhY2tUaW1lLnN0YXJ0VGltZX1cbiAgICAgICAgY3VycmVudFRpbWU9e3BsYXliYWNrVGltZS5jdXJyZW50VGltZX1cbiAgICAgICAgYnVmZmVyVGltZT17cGxheWJhY2tUaW1lLmJ1ZmZlclRpbWV9XG4gICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgIGNoYXB0ZXJzPXtjaGFwdGVyc31cbiAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DbGlja1NlZWtiYXJ9XG4gICAgICAgIG9uQ2hhbmdlQ29tbWl0dGVkPXt1aUhhbmRsZXJzLm9uU2Vla31cbiAgICAgICAgbWFya3M9e21hcmtzfVxuICAgICAgICBwbHVnaW5zPXtwbHVnaW5zfVxuICAgICAgICB7Li4uc2xvdFByb3BzLnNlZWtiYXJ9XG4gICAgICA+XG4gICAgICAgIHthY3RpdmVUaHVtYm5haWxzVXJsICYmIChcbiAgICAgICAgICA8U2Vla1ByZXZpZXdcbiAgICAgICAgICAgIHRodW1ibmFpbHNVcmw9e2FjdGl2ZVRodW1ibmFpbHNVcmx9XG4gICAgICAgICAgICBkdXJhdGlvbj17cGxheWJhY2tUaW1lLmR1cmF0aW9ufVxuICAgICAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L2NvbXBvbmVudHMuU2Vla2Jhcj5cbiAgICApLFxuICAgIGRpc3BsYXlUaW1lOiA8Y29tcG9uZW50cy5EaXNwbGF5VGltZSB7Li4ucGxheWJhY2tUaW1lfSAvPixcbiAgICBmdWxsc2NyZWVuQnV0dG9uOiAoXG4gICAgICA8RnVsbHNjcmVlbkJ1dHRvblxuICAgICAgICB2aWV3TW9kZT17dmlld01vZGV9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHRvZ2dsZUZ1bGxzY3JlZW4oY29udGFpbmVyUmVmLmN1cnJlbnQpfVxuICAgICAgLz5cbiAgICApLFxuICAgIHZvbHVtZUNvbnRyb2w6IHdpZHRoID49IHNpemVzWydzbWFsbC1lbWJlZCddICYmIChcbiAgICAgIDxjb21wb25lbnRzLlZvbHVtZUNvbnRyb2xcbiAgICAgICAgey4uLntzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfX1cbiAgICAgICAgb25Nb3VzZU92ZXI9eygpID0+IHNldFVzZXJGb2N1cygndm9sdW1lJyl9XG4gICAgICAgIG9uTW91c2VPdXQ9eygpID0+IHNldFVzZXJGb2N1cygnJyl9XG4gICAgICAgIHsuLi5zbG90UHJvcHM/LnZvbHVtZUNvbnRyb2x9XG4gICAgICAvPlxuICAgICksXG4gICAgYmFja0l0ZW1zOiAoXG4gICAgICA8UGxheVBhbmVsIGFuaW1hdGlvbj17dGFyZ2V0U3RhdGUuYW5pbWF0aW9ufSBvbkNsaWNrPXtvbkNsaWNrQmxhbmt9IC8+XG4gICAgKSxcbiAgfVxuICBjb25zdCBjb21wYXRpYmlsaXR5Q2FzdFByb3BzID0gY2FzdE9wdGlvbnMgPT09ICdjb21wYXRpYmxlJyAmJiB7XG4gICAgc291cmNlLFxuICAgIHZhbHVlczoge3RpdGxlLCAuLi5zZXR0aW5ncy52YWx1ZXMsIC4uLmludGwsIG1vZHVsZXNDb25maWd9LFxuICAgIG9uTG9hZDogb25DYXN0LFxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2FzdE9wdGlvbnMgJiYgY2FzdE9wdGlvbnMgIT09ICdjb21wYXRpYmxlJykge1xuICAgICAgcmV0dXJuIGxpbmtDYXN0KHtzb3VyY2UsIC4uLmNhc3RPcHRpb25zfSlcbiAgICB9IC8vIFRPRE8gcGxheWxpc3QsIGF1ZGlvIC8gc3VidGl0bGUgc2V0dGluZ1xuICB9LCBbc291cmNlLCBjYXN0T3B0aW9ucy5jb250ZW50SWQsIGNhc3RPcHRpb25zLmN1c3RvbURhdGFdKVxuICBjb25zdCBzZWxlY3RlZEF1ZGlvVHJhY2sgPSBzZXR0aW5ncy5wcmVmZXJyZWQ/LmF1ZGlvIHx8IGFwcEF1ZGlvVHJhY2tcbiAgY29uc3Qgc2VsZWN0ZWRUZXh0VHJhY2sgPSBzZXR0aW5ncy5wcmVmZXJyZWQ/LnN1YnRpdGxlcyB8fCBhcHBUZXh0VHJhY2tcblxuICByZXR1cm4gKFxuICAgIDxJbnRsUHJvdmlkZXIgey4uLmludGx9PlxuICAgICAgPExheW91dFxuICAgICAgICBzdHlsZT17ey4uLnN0eWxlLCBjc3NWYXJpYWJsZXN9fVxuICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgIGRpc3BsYXk9e21vZGV9XG4gICAgICAgIGNvbnRyb2xzRGlzcGxheT17Y29udHJvbHNEaXNwbGF5fVxuICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICB2aWRlbz17XG4gICAgICAgICAgPFZpZGVvXG4gICAgICAgICAgICB7Li4udmlkZW9Qcm9wc31cbiAgICAgICAgICAgIHZpZGVvUmVmPXttdWx0aVJlZih2aWRlb1JlZiwgdmlkZW9Qcm9wcy52aWRlb1JlZil9XG4gICAgICAgICAgICBzb3VyY2U9e1xuICAgICAgICAgICAgICBjYXN0U3RhdGUgIT09IENhc3RTdGF0ZS5DT05ORUNURUQgJiZcbiAgICAgICAgICAgICAgcGxheWJhY2tTdGF0ZSAhPT0gJ2Vycm9yJyAmJlxuICAgICAgICAgICAgICBzb3VyY2VPdmVycmlkZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgICBjdXJyZW50VGltZT17dGFyZ2V0U3RhdGUuY3VycmVudFRpbWV9XG4gICAgICAgICAgICB7Li4uKGFwcFZvbHVtZSA+PSAwICYmIHt2b2x1bWU6IGFwcFZvbHVtZSwgbXV0ZWQ6IGFwcFZvbHVtZSA8PSAwfSl9XG4gICAgICAgICAgICBwbGF5YmFja1JhdGU9e3NldHRpbmdzLnZhbHVlcy5zcGVlZH1cbiAgICAgICAgICAgIHZpZGVvUmVzb2x1dGlvbj17cXVhbGl0eU9wdGlvbnN9XG4gICAgICAgICAgICBhdWRpb1RyYWNrPXtzZWxlY3RlZEF1ZGlvVHJhY2t9XG4gICAgICAgICAgICB0ZXh0VHJhY2s9e3NlbGVjdGVkVGV4dFRyYWNrfVxuICAgICAgICAgICAgbG9vcD17c2V0dGluZ3MudmFsdWVzLmxvb3B9XG4gICAgICAgICAgICBwbHVnaW5zPXtwbHVnaW5zfVxuICAgICAgICAgICAgbW9kdWxlc0NvbmZpZz17bW9kdWxlc0NvbmZpZ31cbiAgICAgICAgICAgIG9uUGxheWxvZ0ZpcmVkPXtvblBsYXlsb2dGaXJlZH1cbiAgICAgICAgICAgIG9uRXJyb3I9e2Vycm9ySGFuZGxlcn1cbiAgICAgICAgICAgIG9uUGxheWJhY2tTdGF0ZUNoYW5nZT17aGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmxvY2tlZEF1dG9wbGF5PXtlcnJvciA9PiBvbkJsb2NrZWRBdXRvcGxheT8uKGVycm9yKX1cbiAgICAgICAgICAgIG9uQ2FuUGxheT17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICB1cGRhdGVQbGF5YmFja1RpbWUoZXZlbnQpXG4gICAgICAgICAgICAgIHZpZGVvUHJvcHMub25DYW5QbGF5Py4oZXZlbnQpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25UaW1lVXBkYXRlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvbkR1cmF0aW9uQ2hhbmdlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvblBsYXllckxvYWRlZD17cGxheWVyID0+IHtcbiAgICAgICAgICAgICAgcGxheWVyUmVmLmN1cnJlbnQgPSBwbGF5ZXJcbiAgICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ/LihwbGF5ZXIpXG4gICAgICAgICAgICAgIHN5bmNWb2x1bWUodmlkZW9SZWYuY3VycmVudCwgdmlkZW9Qcm9wcy5tdXRlZCA/IDAgOiBhcHBWb2x1bWUpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyUmVmPXtlbGVtZW50ID0+IHtcbiAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCA9IGVsZW1lbnRcbiAgICAgICAgICBvYnNlcnZlKGVsZW1lbnQpXG4gICAgICAgIH19XG4gICAgICAgIGJhY2tSZWY9e2FkQ29udGFpbmVyUmVmfVxuICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgIGNoYW5uZWxUaXRsZT17Y2hhbm5lbFRpdGxlfVxuICAgICAgICBiYWNrQnV0dG9uPXtvbkJhY2sgJiYgPEJ1dHRvbiBzdGFydEljb249XCJiYWNrXCIgb25DbGljaz17b25CYWNrfSAvPn1cbiAgICAgICAgey4uLihpc1VzZXJBY3RpdmUgJiYgdWlFbGVtZW50cyl9XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIG9uTW91c2VNb3ZlPXtvbk1vdXNlTW92ZX1cbiAgICAgID5cbiAgICAgICAgPExvYWRpbmdTcGlubmVyIGFjdGl2ZT17d2FpdGluZ30gLz5cbiAgICAgICAge2Vycm9yRGF0YSAmJiA8RXJyb3IgZXJyb3I9e2Vycm9yRGF0YX0gb25CYWNrPXtvbkJhY2t9IC8+fVxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHsvKiBUT0RPIHN5bmMgQ2FzdCBsYXN0IHBsYXllZCB0aW1lIGJhY2sgKi99XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKFxuICAgICAgICAgIDxjb21wb25lbnRzLkNhc3RVaVxuICAgICAgICAgICAgb25CYWNrPXtvbkJhY2t9XG4gICAgICAgICAgICBvblN0YXRlQ2hhbmdlPXtzZXRDYXN0U3RhdGV9XG4gICAgICAgICAgICBvbkxvYWQ9e29uQ2FzdH1cbiAgICAgICAgICAgIHsuLi5jb21wYXRpYmlsaXR5Q2FzdFByb3BzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcy5jYXN0VWl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge2lzVXNlckFjdGl2ZSAmJiAoIC8vIFRPRE86IERlc2lnbiA8RXh0ZW5zdGlvbiAvPiBmbGFnXG4gICAgICAgICAgPGNvbXBvbmVudHMuU2V0dGluZ3NcbiAgICAgICAgICAgIHR5cGU9e3VpVHlwZX1cbiAgICAgICAgICAgIHNlY3Rpb25zPXtzZXR0aW5ncy5zZWN0aW9uc31cbiAgICAgICAgICAgIC8vIFRPRE8gaGFzQm90dG9tUGFuZWwgYm90dG9tOiA4ZW1cbiAgICAgICAgICAgIG9wZW49e3VzZXJGb2N1cyA9PT0gJ3NldHRpbmdzJ31cbiAgICAgICAgICAgIHZhbHVlcz17c2V0dGluZ3MudmFsdWVzfVxuICAgICAgICAgICAgb25PcGVuPXtvcGVuU2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNoYW5nZVNldHRpbmdzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcz8uc2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNsb3NlPXt1aUhhbmRsZXJzLm9uQ2xvc2VTZXR0aW5nc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8TGFuZ3VhZ2VTZXR0aW5nc1xuICAgICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICAgIGdldFBsYXllcj17KCkgPT4gcGxheWVyUmVmLmN1cnJlbnR9XG4gICAgICAgICAgb25DaGFuZ2U9eyhfZXZlbnQsIGl0ZW0pID0+XG4gICAgICAgICAgICB1aUhhbmRsZXJzLm9uQ2hhbmdlU2V0dGluZ3Moe1xuICAgICAgICAgICAgICBuYW1lOiBpdGVtLnR5cGUsXG4gICAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgICBrZWVwT3BlbjogdHJ1ZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */"),
8804
- desktop: /*#__PURE__*/css$1(LanguageMenu.styles, LanguageMenu.desktopStyles, process.env.NODE_ENV === "production" ? "" : ";label:desktop;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0VXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtpc0Rlc2t0b3B9IGZyb20gJ3V0aWwvZW52aXJvbm1lbnQnXG5pbXBvcnQgbXVsdGlSZWYgZnJvbSAndXRpbC9tdWx0aVJlZidcbmltcG9ydCB7b25WaWV3TW9kZUNoYW5nZSwgdG9nZ2xlRnVsbHNjcmVlbn0gZnJvbSAndXRpbC92aWV3TW9kZXMnXG5pbXBvcnQge3VzZUF1dG9IaWRlfSBmcm9tICdob29rcydcbmltcG9ydCB7SW50bFByb3ZpZGVyfSBmcm9tICdjb250ZXh0L0kxOG4nXG5pbXBvcnQge2dldE1lZGlhVGltZSwgaXNCdWZmZXJlZH0gZnJvbSAncGxheWVyQ29yZS9tZWRpYUJpbmRpbmdzJ1xuaW1wb3J0IEVycm9yIGZyb20gJ3BsYXllclVpL0Vycm9yJ1xuaW1wb3J0IExheW91dCBmcm9tICdwbGF5ZXJVaS9EZWZhdWx0TGF5b3V0J1xuaW1wb3J0IHtcbiAgQnV0dG9uLFxuICBMaXZlQnV0dG9uLFxuICBGdWxsc2NyZWVuQnV0dG9uLFxuICBQbGF5QnV0dG9uLFxuICBGb3J3YXJkQnV0dG9uLFxufSBmcm9tICdwbGF5ZXJVaS9idXR0b25zJ1xuaW1wb3J0IFNlZWtiYXIgZnJvbSAncGxheWVyVWkvU2Vla2JhcidcbmltcG9ydCBEaXNwbGF5VGltZSBmcm9tICdwbGF5ZXJVaS9EaXNwbGF5VGltZSdcbmltcG9ydCBMb2FkaW5nU3Bpbm5lciBmcm9tICdwbGF5ZXJVaS9Mb2FkaW5nU3Bpbm5lcidcbmltcG9ydCBCYWNrZHJvcCBmcm9tICdwbGF5ZXJVaS9CYWNrZHJvcCdcbmltcG9ydCBTZXR0aW5ncyBmcm9tICdwbGF5ZXJVaS9TZXR0aW5ncydcbmltcG9ydCBPdmVybGF5UGFuZWwgZnJvbSAncGxheWVyVWkvT3ZlcmxheVBhbmVsJ1xuaW1wb3J0IExhbmd1YWdlTWVudSBmcm9tICdwbGF5ZXJVaS9MYW5ndWFnZU1lbnUnXG5pbXBvcnQgUGxheVBhbmVsIGZyb20gJ3BsYXllclVpL1BsYXlQYW5lJ1xuaW1wb3J0IFZvbHVtZUNvbnRyb2wgZnJvbSAnY29tcG9uZW50L1ZvbHVtZUNvbnRyb2wnXG5pbXBvcnQgQ2FzdFVpIGZyb20gJ2Nhc3QvQ2FzdFVpJ1xuaW1wb3J0IHtsaW5rQ2FzdH0gZnJvbSAnY2FzdC9mcmFtZXdvcmsnXG5pbXBvcnQge0Nhc3RTdGF0ZX0gZnJvbSAnRW51bSdcbmltcG9ydCB7ZGlzcGF0Y2hDaGFwdGVyRXZlbnRzfSBmcm9tICcuL3RpbWVsaW5lJ1xuaW1wb3J0IFZpZGVvIGZyb20gJy4uL1ZpZGVvJ1xuaW1wb3J0IHtnZXRMYW5ndWFnZU9wdGlvbnMsIGdldFF1YWxpdHlPcHRpb25zLCBnZXRTZXR0aW5nc0RhdGF9IGZyb20gJy4vc2V0dGluZ3MnXG5pbXBvcnQge2xpbmtNZWRpYVZvbHVtZSwgc3luY1ZvbHVtZX0gZnJvbSAnLi92b2x1bWUnXG5pbXBvcnQgU2Vla1ByZXZpZXcgZnJvbSAnLi9TZWVrUHJldmlldydcblxuY29uc3Qgc2l6ZXMgPSB7XG4gICdzbWFsbC1lbWJlZCc6IDIwMCxcbiAgZW1iZWQ6IDQwMCxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6IDYwMCxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiA5MDAsXG4gIGRlc2t0b3A6IDEyMDAsXG59XG5cbmNvbnN0IHVzZUxpbmtTdGF0ZSA9IChyZXF1ZXN0LCBkZXBlbmRlbmNpZXMgPSBbXSkgPT4ge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXF1ZXN0KHNldFN0YXRlKVxuICB9LCBkZXBlbmRlbmNpZXMpXG4gIHJldHVybiBzdGF0ZVxufVxuXG5jb25zdCBmbGlwU3RhdGUgPSBzdGF0ZSA9PiAoc3RhdGUgPT09ICdwbGF5aW5nJyA/ICdwYXVzZWQnIDogJ3BsYXlpbmcnKVxuXG4vLyBGSVhNRTogdG9vIGZldyBsaW5lcyB0byBzcGxpdCBhIGZpbGUsIGxvb2tpbmcgYSBiZXR0ZXIgcGxhY2VcbmNvbnN0IGdldFRodW1ibmFpbHNVcmwgPSBzb3VyY2UgPT5cbiAgW10uY29uY2F0KHNvdXJjZSkuZmluZChpdGVtID0+IGl0ZW0udHlwZSA9PT0gJ3RodW1ibmFpbCcpPy5zcmNcblxuY29uc3QgZGVmYXVsdFNldHRpbmdzID0ge31cblxuY29uc3Qgc2hvdWxkUGF1c2UgPSAoe3VzZXJGb2N1cywgdWlUeXBlfSkgPT5cbiAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgL3NldHRpbmdzfGNoYXB0ZXItbGlzdC8udGVzdCh1c2VyRm9jdXMpKSB8fFxuICAvYmxvY2tpbmd8c2Vla2JhcnxzaGFyZS1pbm5lci8udGVzdCh1c2VyRm9jdXMpXG5cbi8vIFRPRE8gZXh0cmFjdCB0byBzb21ld2hlcmUgZWxzZVxuY29uc3QgbWVudUNsYXNzZXMgPSB7XG4gIGRlZmF1bHQ6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzKSxcbiAgZGVza3RvcDogY3NzKExhbmd1YWdlTWVudS5zdHlsZXMsIExhbmd1YWdlTWVudS5kZXNrdG9wU3R5bGVzKSxcbn1cblxuY29uc3QgTGFuZ3VhZ2VTZXR0aW5ncyA9ICh7XG4gIHVpVHlwZSxcbiAgYXVkaW9UcmFja3MgPSBbXSxcbiAgdGV4dFRyYWNrcyA9IFtdLFxuICBnZXRQbGF5ZXIsXG4gIG9uQ2hhbmdlLFxuICBzbG90cyA9IHtMYW5ndWFnZU1lbnV9LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnZXRMYW5ndWFnZU9wdGlvbnMoZ2V0UGxheWVyKCksIHthdWRpb1RyYWNrcywgdGV4dFRyYWNrc30pXG4gIHJldHVybiAoXG4gICAgYXVkaW9UcmFja3MubGVuZ3RoID4gMCAmJlxuICAgIHRleHRUcmFja3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICA8T3ZlcmxheVBhbmVsXG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICB0aXRsZT1cIuWtl+W5leODu+mfs+WjsOOCkuWIh+OCiuabv+OBiOOCi1wiXG4gICAgICAgIGJ1dHRvbkljb249XCJzdWJ0aXRsZVwiXG4gICAgICA+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIGF1ZGlvVHJhY2s6IGFwcEF1ZGlvVHJhY2ssXG4gIHRleHRUcmFjazogYXBwVGV4dFRyYWNrLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgICAgb3RoZXJTZWN0aW9uczogYXBwU2V0dGluZ3Muc2VjdGlvbnMsXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHtwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLCB2YWx1ZXMsIHNlY3Rpb25zfVxuICAgIH0pXG4gIH1cbiAgY29uc3QgbGFzdFN0YXRlID0gdXNlUmVmKHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGhhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2UgPSAoZXZlbnQsIHN0YXRlKSA9PiB7XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnZXJyb3InKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgb25QbGF5YmFja1N0YXRlQ2hhbmdlPy4oZXZlbnQsIHN0YXRlKVxuICAgIC8vIHByZXZpb3VzbHkgVUkgcGxheWJhY2sgc3RhdGUgd2FzIHN5bmNlZCBvbmx5IHdoZW5cbiAgICAvLyBleGl0aW5nIGlPUyB2aWRlbyBvbmx5IGZ1bGxzY3JlZW4od2Via2l0ZW5kZnVsbHNjcmVlbilcbiAgICBpZiAoXG4gICAgICAvcGxheWluZ3xwYXVzZWQvLnRlc3Qoc3RhdGUpICYmXG4gICAgICAhKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpICYmXG4gICAgICAhc2hvdWxkUGF1c2Uoe3VzZXJGb2N1cywgdWlUeXBlfSlcbiAgICApIHtcbiAgICAgIHRvZ2dsZVBsYXkoc3RhdGUpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2VuZGVkJykge1xuICAgICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnbG9hZGluZycgJiYgbGFzdFN0YXRlLmN1cnJlbnQgIT09ICdpbml0Jykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0b2dnbGVQbGF5KCdwbGF5aW5nJyksIDEpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ3BsYXlpbmcnKSB7XG4gICAgICBzZXRJc1VzZXJBY3RpdmUodHJ1ZSlcbiAgICB9XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnbG9hZGluZycpIHtcbiAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgIH1cbiAgICBsYXN0U3RhdGUuY3VycmVudCA9IHN0YXRlXG4gICAgc2V0UGxheWJhY2tTdGF0ZShzdGF0ZSlcbiAgfVxuXG4gIGNvbnN0IGNoYW5nZVNldHRpbmdzID0gKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59ID0ge30pID0+IHtcbiAgICAvLyBUT0RPIGNvbnNpZGVyIG1lcmdlIGludG8gdXNlUmVkdWNlcj9cbiAgICBvbkNoYW5nZVNldHRpbmdzPy4oe25hbWUsIHZhbHVlfSlcbiAgICBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSlcbiAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAuLi5jdXJyZW50LFxuICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIFtuYW1lXTogdmFsdWV9LFxuICAgICAgcHJlZmVycmVkOiB7Li4uY3VycmVudC5wcmVmZXJyZWQsIFtuYW1lXTogdmFsdWV9LFxuICAgIH0pKVxuICAgIGlmICgha2VlcE9wZW4pIHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICB9XG4gIH1cbiAgY29uc3Qgb3BlblNldHRpbmdzID0gZXZlbnQgPT4ge1xuICAgIGNvbnN0IGFuaW1hdGlvbkZyYW1lID1cbiAgICAgIHVzZXJGb2N1cyAhPT0gJ3NldHRpbmdzJyAmJlxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgb25PcGVuU2V0dGluZ3M/LihldmVudCwgc2V0dGluZ3MpXG4gICAgICAgIC8vIEluIGlPUyBTYWZhcmksIHdlIG5lZWQgdG8gdXBkYXRlIHNldHRpbmdzIGRhdGFcbiAgICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgICB9KVxuICAgIHNldFVzZXJGb2N1cyhjdXJyZW50ID0+IChjdXJyZW50ID09PSAnc2V0dGluZ3MnID8gJycgOiAnc2V0dGluZ3MnKSlcbiAgICByZXR1cm4gYW5pbWF0aW9uRnJhbWVcbiAgfVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1JhdGUgPiAwKSB7XG4gICAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBzcGVlZDogYXBwUGxheWJhY2tSYXRlfSxcbiAgICAgIH0pKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrUmF0ZV0pXG5cbiAgY29uc3QgcXVhbGl0eU9wdGlvbnMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFF1YWxpdHlPcHRpb25zKHNldHRpbmdzKSxcbiAgICBbc2V0dGluZ3MudmFsdWVzLnF1YWxpdHldXG4gIClcbiAgY29uc3Qgdmlld01vZGUgPSB1c2VMaW5rU3RhdGUodXBkYXRlID0+XG4gICAgb25WaWV3TW9kZUNoYW5nZSh2aWRlb1JlZi5jdXJyZW50LCB1cGRhdGUpXG4gIClcbiAgY29uc3Qgc291cmNlT3ZlcnJpZGUgPSB1c2VMaW5rU3RhdGUoXG4gICAgYXN5bmMgdXBkYXRlID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICAgIHNvdXJjZSAmJiAoYXdhaXQgcXVhbGl0eS5yZXdyaXRlTWFuaWZlc3Q/Lihzb3VyY2UsIHF1YWxpdHlPcHRpb25zKSlcbiAgICAgIHVwZGF0ZShyZXN1bHQgfHwgc291cmNlKVxuICAgIH0sXG4gICAgW3NvdXJjZSwgcXVhbGl0eU9wdGlvbnNdXG4gIClcbiAgY29uc3Qgd2FpdGluZyA9IC9lbXB0aWVkfGxvYWRpbmd8YnVmZmVyaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGFjdGl2ZVBsYXliYWNrID1cbiAgICBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ3dhaXRpbmcnXG4gIGNvbnN0IHtcbiAgICBtb2RlOiBhdXRvSGlkZU1vZGUsXG4gICAgb25DbGljayxcbiAgICBvbk1vdXNlTW92ZSxcbiAgfSA9IHVzZUF1dG9IaWRlKHtcbiAgICBwaW5uZWQ6ICFjb250cm9scy5hdXRvaGlkZSB8fCB3YWl0aW5nIHx8ICFhY3RpdmVQbGF5YmFjayB8fCB1c2VyRm9jdXMsXG4gICAgdGFwVG9IaWRlOiB1aVR5cGUgPT09ICdtb2JpbGUnLFxuICAgIGhpZGVUaW1lTXM6IGNvbnRyb2xzLmF1dG9oaWRlLFxuICB9KVxuICBjb25zdCBtb2RlID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBjb250cm9scy5hdXRvaGlkZVxuICAgICAgPyBhdXRvSGlkZU1vZGVcbiAgICAgIDogY29udHJvbHNcbiAgICAgID8gJ3Nob3duJ1xuICAgICAgOiAnaGlkZGVuJ1xuICBjb25zdCBjb250cm9sc0Rpc3BsYXkgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdzZWVrYmFyLW9ubHknXG4gICAgICA6IGNvbnRyb2xzID09PSAndGl0bGUtb25seScgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2VtcHRpZWQnXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IG1vZGVcbiAgY29uc3Qgc2hvdWxkSGlkZVBhbmVscyA9XG4gICAgKGNvbnRyb2xzID09PSAnbm8tcGFuZWwnIHx8XG4gICAgICBjb250cm9sc0Rpc3BsYXkgPT09ICdoaWRkZW4nIHx8XG4gICAgICBwbGF5YmFja1N0YXRlID09PSAnZW5kZWQnKSAmJlxuICAgIHVzZXJGb2N1c1xuICBjb25zdCBoYXZlUGxheVBhbmVsID1cbiAgICAhYmxvY2tpbmcgJiZcbiAgICB1aVR5cGUgPT09ICdkZXNrdG9wJyAmJlxuICAgICF3YWl0aW5nICYmXG4gICAgIS92b2x1bWV8JycvLnRlc3QodXNlckZvY3VzKSAmJlxuICAgICEvdGl0bGUtb25seXxuby1wYW5lbC8udGVzdChjb250cm9scykgJiZcbiAgICAoY29udHJvbHMuYXV0b2hpZGUgfHwgbW9kZSA9PT0gJ3Nob3duJylcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRIaWRlUGFuZWxzKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBpZiAocmVmcy5jdXJyZW50LmNsb3NlTWVudSkge1xuICAgICAgICByZWZzLmN1cnJlbnQuY2xvc2VNZW51KClcbiAgICAgICAgcmVmcy5jdXJyZW50LmNsb3NlTWVudSA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cbiAgfSwgW3Nob3VsZEhpZGVQYW5lbHNdKVxuICB1c2VFZmZlY3QoKCkgPT4gXG4gICAgb24oY29udGFpbmVyUmVmLmN1cnJlbnQsICdmb2N1cy1tZW51JywgZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50LmRldGFpbD8uc3RhdHVzID09PSAnb3BlbicpIHtcbiAgICAgICAgc2V0VXNlckZvY3VzKCdtZW51JylcbiAgICAgICAgcmVmcy5jdXJyZW50LmNsb3NlTWVudSA9ICgpID0+IGV2ZW50LmRldGFpbC5jbG9zZU1lbnU/LigpXG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQuZGV0YWlsPy5zdGF0dXMgPT09ICdjbG9zZWQnKSB7XG4gICAgICAgIHNldFVzZXJGb2N1cyhjdXJyZW50ID0+IChjdXJyZW50ID09PSAnbWVudScgPyAnJyA6IGN1cnJlbnQpKVxuICAgICAgfVxuICAgIH0pXG4gICwgW10pXG4gIGNvbnN0IHtzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfSA9IGxpbmtNZWRpYVZvbHVtZSgoKSA9PiAoe1xuICAgIHZpZGVvOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgIGdldFBsYXllcjogKCkgPT4gcGxheWVyUmVmLmN1cnJlbnQsXG4gIH0pKVxuICBjb25zdCBjaGFuZ2VQcmV2aW91cyA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZVByZXZpb3VzKGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cbiAgY29uc3QgY2hhbmdlTmV4dCA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZU5leHQoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuXG4gIHVzZUVmZmVjdChmZXRjaFNldHRpbmdzLCBbYXBwU2V0dGluZ3NdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRoZSBhZENvbnRhaW5lciBzaG91bGQgYmUgc2V0IGJlZm9yZSBgbG9hZGAgYmVjYXVzZSBJbWFEYWkubG9hZCBuZWVkcyBpdC5cbiAgICBwbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHBsdWdpbi5zZXRBZENvbnRhaW5lcj8uKGFkQ29udGFpbmVyUmVmLmN1cnJlbnQpKVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIGRpc3BhdGNoQ2hhcHRlckV2ZW50cyh7XG4gICAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgICBjaGFwdGVycyxcbiAgICAgICAgZ2V0VGltZTogKCkgPT4gdmlkZW9SZWYuY3VycmVudC5jdXJyZW50VGltZSxcbiAgICAgIH0pLFxuICAgIFtjaGFwdGVyc11cbiAgKVxuXG4gIGNvbnN0IGlzRW5kID0gcGxheWJhY2tTdGF0ZSA9PT0gJ2VuZGVkJ1xuICBjb25zdCBjYW5TZWVrID0gIWlzRW5kICYmIHBsYXliYWNrVGltZS5kdXJhdGlvbiA+IDBcbiAgY29uc3QgZGVyaXZlZFBsYXliYWNrU3RhdGUgPVxuICAgICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSB8fCBzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICAgPyAncGF1c2VkJ1xuICAgICAgOiB0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlXG4gIGNvbnN0IGFjdGl2ZVRodW1ibmFpbHNVcmwgPVxuICAgICghdXNlckZvY3VzIHx8IHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInKSAmJlxuICAgIChnZXRUaHVtYm5haWxzVXJsKHNvdXJjZSkgfHwgdGh1bWJuYWlsc1VybClcbiAgY29uc3QgY3NzVmFyaWFibGVzID0ge1xuICAgICctLXBsYXlpbmcnOiBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgPyAnMScgOiAnMCcsXG4gIH1cbiAgY29uc3Qgb25SZXdpbmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgY2FuU2VlayAmJlxuICAgICgoKSA9PiBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSAtIDEwLCAncmV3aW5kJykpXG4gIGNvbnN0IG9uRm9yd2FyZCA9XG4gICAgKCFpc0xpdmUgfHwgcGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMCkgJiZcbiAgICBjYW5TZWVrICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lICsgMTAsICdmb3J3YXJkJykpXG4gIGNvbnN0IG9uQ2xpY2tCbGFuayA9XG4gICAgaGF2ZVBsYXlQYW5lbCAmJiAoKCkgPT4gdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSkpXG5cbiAgY29uc3QgdWlIYW5kbGVycyA9IHtcbiAgICBvblBsYXk6ICgpID0+IHtcbiAgICAgIHRvZ2dsZVBsYXkoJycsIHt0cmlnZ2VyZWRCeTogJ3VzZXItYWN0aW9uJ30pXG4gICAgICBzZXRJc1VzZXJBY3RpdmUodHJ1ZSlcbiAgICB9LFxuICAgIG9uQ2xpY2tMaXZlOiBpc0xpdmUgJiYgKCgpID0+IHNldFRhcmdldFRpbWUoMCwgJ3NlZWtUb0xpdmUnKSksXG4gICAgb25DbGlja1NlZWtiYXI6ICgpID0+IHtcbiAgICAgIHJlZnMuY3VycmVudC5kZWZlcmVkU2Vla0ZvY3VzID0gc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4gc2V0VXNlckZvY3VzKCdzZWVrYmFyJyksXG4gICAgICAgIDY2XG4gICAgICApXG4gICAgfSxcbiAgICBvblNlZWs6IHRpbWUgPT4ge1xuICAgICAgc2V0VGFyZ2V0VGltZSh0aW1lLCAnc2VlaycpXG4gICAgICBjbGVhclRpbWVvdXQocmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHNldFVzZXJGb2N1cygnJyksIDY2KVxuICAgIH0sXG4gICAgb25DaGFuZ2VTZXR0aW5nczogKHtuYW1lLCB2YWx1ZSwga2VlcE9wZW59KSA9PlxuICAgICAgY2hhbmdlU2V0dGluZ3MobmFtZSwgdmFsdWUsIHtrZWVwT3Blbn0pLFxuICAgIG9uQ2xvc2VTZXR0aW5nczogZXZlbnQgPT4ge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgICAgc2xvdFByb3BzPy5zZXR0aW5ncz8ub25DbG9zZT8uKGV2ZW50KVxuICAgIH0sXG4gIH1cblxuICBjb25zdCB1aUVsZW1lbnRzID0ge1xuICAgIGxpdmVCdXR0b246IHVpSGFuZGxlcnMub25DbGlja0xpdmUgJiYgKFxuICAgICAgPGNvbXBvbmVudHMuTGl2ZUJ1dHRvblxuICAgICAgICB1c2luZ1N0YXJ0T3Zlcj17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMH1cbiAgICAgICAgb25DbGljaz17dWlIYW5kbGVycy5vbkNsaWNrTGl2ZX1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBjb250cm9sQnV0dG9uczoge1xuICAgICAgcGxheUJ1dHRvbjogKFxuICAgICAgICA8UGxheUJ1dHRvblxuICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgIGVuZGVkPXtpc0VuZH1cbiAgICAgICAgICBoaWRkZW49e1xuICAgICAgICAgICAgdWlUeXBlID09PSAnbW9iaWxlJyAmJiAod2FpdGluZyB8fCAvbG9hZGluZy8udGVzdChwbGF5YmFja1N0YXRlKSlcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyaWFudD17IWlzVXNlckFjdGl2ZSAmJiAnZmlyc3RwbGF5J31cbiAgICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uUGxheX1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICByZXdpbmRCdXR0b246IG9uUmV3aW5kICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cInJld2luZDEwXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuUkVXSU5EXCJcbiAgICAgICAgICBkaXNhYmxlZD17aXNFbmR9XG4gICAgICAgICAgb25DbGljaz17b25SZXdpbmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgZm9yd2FyZEJ1dHRvbjogb25Gb3J3YXJkICYmIChcbiAgICAgICAgPEZvcndhcmRCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJmb3J3YXJkMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5GT1JXQVJEXCJcbiAgICAgICAgICBkaXNhYmxlZD17IWNhblNlZWt9XG4gICAgICAgICAgb25DbGljaz17b25Gb3J3YXJkfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIG5leHRFcGlzb2RlQnV0dG9uOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJuZXh0XCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuTkVYVFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZU5leHR9XG4gICAgICAgICAgb25DbGljaz17Y2hhbmdlTmV4dH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBwcmV2aW91c0VwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cInByZXZpb3VzXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuUFJFVklPVVNcIlxuICAgICAgICAgIGRpc2FibGVkPXshb25DaGFuZ2VQcmV2aW91c31cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VQcmV2aW91c31cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgfSxcbiAgICBzZWVrYmFyOiAoXG4gICAgICA8Y29tcG9uZW50cy5TZWVrYmFyXG4gICAgICAgIHN0eWxlPXsvdm9sdW1lLy50ZXN0KHVzZXJGb2N1cykgJiYge29wYWNpdHk6ICcwJ319XG4gICAgICAgIHN0YXJ0VGltZT17cGxheWJhY2tUaW1lLnN0YXJ0VGltZX1cbiAgICAgICAgY3VycmVudFRpbWU9e3BsYXliYWNrVGltZS5jdXJyZW50VGltZX1cbiAgICAgICAgYnVmZmVyVGltZT17cGxheWJhY2tUaW1lLmJ1ZmZlclRpbWV9XG4gICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgIGNoYXB0ZXJzPXtjaGFwdGVyc31cbiAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DbGlja1NlZWtiYXJ9XG4gICAgICAgIG9uQ2hhbmdlQ29tbWl0dGVkPXt1aUhhbmRsZXJzLm9uU2Vla31cbiAgICAgICAgbWFya3M9e21hcmtzfVxuICAgICAgICBwbHVnaW5zPXtwbHVnaW5zfVxuICAgICAgICB7Li4uc2xvdFByb3BzLnNlZWtiYXJ9XG4gICAgICA+XG4gICAgICAgIHthY3RpdmVUaHVtYm5haWxzVXJsICYmIChcbiAgICAgICAgICA8U2Vla1ByZXZpZXdcbiAgICAgICAgICAgIHRodW1ibmFpbHNVcmw9e2FjdGl2ZVRodW1ibmFpbHNVcmx9XG4gICAgICAgICAgICBkdXJhdGlvbj17cGxheWJhY2tUaW1lLmR1cmF0aW9ufVxuICAgICAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L2NvbXBvbmVudHMuU2Vla2Jhcj5cbiAgICApLFxuICAgIGRpc3BsYXlUaW1lOiA8Y29tcG9uZW50cy5EaXNwbGF5VGltZSB7Li4ucGxheWJhY2tUaW1lfSAvPixcbiAgICBmdWxsc2NyZWVuQnV0dG9uOiAoXG4gICAgICA8RnVsbHNjcmVlbkJ1dHRvblxuICAgICAgICB2aWV3TW9kZT17dmlld01vZGV9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHRvZ2dsZUZ1bGxzY3JlZW4oY29udGFpbmVyUmVmLmN1cnJlbnQpfVxuICAgICAgLz5cbiAgICApLFxuICAgIHZvbHVtZUNvbnRyb2w6IHdpZHRoID49IHNpemVzWydzbWFsbC1lbWJlZCddICYmIChcbiAgICAgIDxjb21wb25lbnRzLlZvbHVtZUNvbnRyb2xcbiAgICAgICAgey4uLntzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfX1cbiAgICAgICAgb25Nb3VzZU92ZXI9eygpID0+IHNldFVzZXJGb2N1cygndm9sdW1lJyl9XG4gICAgICAgIG9uTW91c2VPdXQ9eygpID0+IHNldFVzZXJGb2N1cygnJyl9XG4gICAgICAgIHsuLi5zbG90UHJvcHM/LnZvbHVtZUNvbnRyb2x9XG4gICAgICAvPlxuICAgICksXG4gICAgYmFja0l0ZW1zOiAoXG4gICAgICA8UGxheVBhbmVsIGFuaW1hdGlvbj17dGFyZ2V0U3RhdGUuYW5pbWF0aW9ufSBvbkNsaWNrPXtvbkNsaWNrQmxhbmt9IC8+XG4gICAgKSxcbiAgfVxuICBjb25zdCBjb21wYXRpYmlsaXR5Q2FzdFByb3BzID0gY2FzdE9wdGlvbnMgPT09ICdjb21wYXRpYmxlJyAmJiB7XG4gICAgc291cmNlLFxuICAgIHZhbHVlczoge3RpdGxlLCAuLi5zZXR0aW5ncy52YWx1ZXMsIC4uLmludGwsIG1vZHVsZXNDb25maWd9LFxuICAgIG9uTG9hZDogb25DYXN0LFxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2FzdE9wdGlvbnMgJiYgY2FzdE9wdGlvbnMgIT09ICdjb21wYXRpYmxlJykge1xuICAgICAgcmV0dXJuIGxpbmtDYXN0KHtzb3VyY2UsIC4uLmNhc3RPcHRpb25zfSlcbiAgICB9IC8vIFRPRE8gcGxheWxpc3QsIGF1ZGlvIC8gc3VidGl0bGUgc2V0dGluZ1xuICB9LCBbc291cmNlLCBjYXN0T3B0aW9ucy5jb250ZW50SWQsIGNhc3RPcHRpb25zLmN1c3RvbURhdGFdKVxuICBjb25zdCBzZWxlY3RlZEF1ZGlvVHJhY2sgPSBzZXR0aW5ncy5wcmVmZXJyZWQ/LmF1ZGlvIHx8IGFwcEF1ZGlvVHJhY2tcbiAgY29uc3Qgc2VsZWN0ZWRUZXh0VHJhY2sgPSBzZXR0aW5ncy5wcmVmZXJyZWQ/LnN1YnRpdGxlcyB8fCBhcHBUZXh0VHJhY2tcblxuICByZXR1cm4gKFxuICAgIDxJbnRsUHJvdmlkZXIgey4uLmludGx9PlxuICAgICAgPExheW91dFxuICAgICAgICBzdHlsZT17ey4uLnN0eWxlLCBjc3NWYXJpYWJsZXN9fVxuICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgIGRpc3BsYXk9e21vZGV9XG4gICAgICAgIGNvbnRyb2xzRGlzcGxheT17Y29udHJvbHNEaXNwbGF5fVxuICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICB2aWRlbz17XG4gICAgICAgICAgPFZpZGVvXG4gICAgICAgICAgICB7Li4udmlkZW9Qcm9wc31cbiAgICAgICAgICAgIHZpZGVvUmVmPXttdWx0aVJlZih2aWRlb1JlZiwgdmlkZW9Qcm9wcy52aWRlb1JlZil9XG4gICAgICAgICAgICBzb3VyY2U9e1xuICAgICAgICAgICAgICBjYXN0U3RhdGUgIT09IENhc3RTdGF0ZS5DT05ORUNURUQgJiZcbiAgICAgICAgICAgICAgcGxheWJhY2tTdGF0ZSAhPT0gJ2Vycm9yJyAmJlxuICAgICAgICAgICAgICBzb3VyY2VPdmVycmlkZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgICBjdXJyZW50VGltZT17dGFyZ2V0U3RhdGUuY3VycmVudFRpbWV9XG4gICAgICAgICAgICB7Li4uKGFwcFZvbHVtZSA+PSAwICYmIHt2b2x1bWU6IGFwcFZvbHVtZSwgbXV0ZWQ6IGFwcFZvbHVtZSA8PSAwfSl9XG4gICAgICAgICAgICBwbGF5YmFja1JhdGU9e3NldHRpbmdzLnZhbHVlcy5zcGVlZH1cbiAgICAgICAgICAgIHZpZGVvUmVzb2x1dGlvbj17cXVhbGl0eU9wdGlvbnN9XG4gICAgICAgICAgICBhdWRpb1RyYWNrPXtzZWxlY3RlZEF1ZGlvVHJhY2t9XG4gICAgICAgICAgICB0ZXh0VHJhY2s9e3NlbGVjdGVkVGV4dFRyYWNrfVxuICAgICAgICAgICAgbG9vcD17c2V0dGluZ3MudmFsdWVzLmxvb3B9XG4gICAgICAgICAgICBwbHVnaW5zPXtwbHVnaW5zfVxuICAgICAgICAgICAgbW9kdWxlc0NvbmZpZz17bW9kdWxlc0NvbmZpZ31cbiAgICAgICAgICAgIG9uUGxheWxvZ0ZpcmVkPXtvblBsYXlsb2dGaXJlZH1cbiAgICAgICAgICAgIG9uRXJyb3I9e2Vycm9ySGFuZGxlcn1cbiAgICAgICAgICAgIG9uUGxheWJhY2tTdGF0ZUNoYW5nZT17aGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmxvY2tlZEF1dG9wbGF5PXtlcnJvciA9PiBvbkJsb2NrZWRBdXRvcGxheT8uKGVycm9yKX1cbiAgICAgICAgICAgIG9uQ2FuUGxheT17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICB1cGRhdGVQbGF5YmFja1RpbWUoZXZlbnQpXG4gICAgICAgICAgICAgIHZpZGVvUHJvcHMub25DYW5QbGF5Py4oZXZlbnQpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25UaW1lVXBkYXRlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvbkR1cmF0aW9uQ2hhbmdlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvblBsYXllckxvYWRlZD17cGxheWVyID0+IHtcbiAgICAgICAgICAgICAgcGxheWVyUmVmLmN1cnJlbnQgPSBwbGF5ZXJcbiAgICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ/LihwbGF5ZXIpXG4gICAgICAgICAgICAgIHN5bmNWb2x1bWUodmlkZW9SZWYuY3VycmVudCwgdmlkZW9Qcm9wcy5tdXRlZCA/IDAgOiBhcHBWb2x1bWUpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyUmVmPXtlbGVtZW50ID0+IHtcbiAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCA9IGVsZW1lbnRcbiAgICAgICAgICBvYnNlcnZlKGVsZW1lbnQpXG4gICAgICAgIH19XG4gICAgICAgIGJhY2tSZWY9e2FkQ29udGFpbmVyUmVmfVxuICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgIGNoYW5uZWxUaXRsZT17Y2hhbm5lbFRpdGxlfVxuICAgICAgICBiYWNrQnV0dG9uPXtvbkJhY2sgJiYgPEJ1dHRvbiBzdGFydEljb249XCJiYWNrXCIgb25DbGljaz17b25CYWNrfSAvPn1cbiAgICAgICAgey4uLihpc1VzZXJBY3RpdmUgJiYgdWlFbGVtZW50cyl9XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIG9uTW91c2VNb3ZlPXtvbk1vdXNlTW92ZX1cbiAgICAgID5cbiAgICAgICAgPExvYWRpbmdTcGlubmVyIGFjdGl2ZT17d2FpdGluZ30gLz5cbiAgICAgICAge2Vycm9yRGF0YSAmJiA8RXJyb3IgZXJyb3I9e2Vycm9yRGF0YX0gb25CYWNrPXtvbkJhY2t9IC8+fVxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHsvKiBUT0RPIHN5bmMgQ2FzdCBsYXN0IHBsYXllZCB0aW1lIGJhY2sgKi99XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKFxuICAgICAgICAgIDxjb21wb25lbnRzLkNhc3RVaVxuICAgICAgICAgICAgb25CYWNrPXtvbkJhY2t9XG4gICAgICAgICAgICBvblN0YXRlQ2hhbmdlPXtzZXRDYXN0U3RhdGV9XG4gICAgICAgICAgICBvbkxvYWQ9e29uQ2FzdH1cbiAgICAgICAgICAgIHsuLi5jb21wYXRpYmlsaXR5Q2FzdFByb3BzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcy5jYXN0VWl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge2lzVXNlckFjdGl2ZSAmJiAoIC8vIFRPRE86IERlc2lnbiA8RXh0ZW5zdGlvbiAvPiBmbGFnXG4gICAgICAgICAgPGNvbXBvbmVudHMuU2V0dGluZ3NcbiAgICAgICAgICAgIHR5cGU9e3VpVHlwZX1cbiAgICAgICAgICAgIHNlY3Rpb25zPXtzZXR0aW5ncy5zZWN0aW9uc31cbiAgICAgICAgICAgIC8vIFRPRE8gaGFzQm90dG9tUGFuZWwgYm90dG9tOiA4ZW1cbiAgICAgICAgICAgIG9wZW49e3VzZXJGb2N1cyA9PT0gJ3NldHRpbmdzJ31cbiAgICAgICAgICAgIHZhbHVlcz17c2V0dGluZ3MudmFsdWVzfVxuICAgICAgICAgICAgb25PcGVuPXtvcGVuU2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNoYW5nZVNldHRpbmdzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcz8uc2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNsb3NlPXt1aUhhbmRsZXJzLm9uQ2xvc2VTZXR0aW5nc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8TGFuZ3VhZ2VTZXR0aW5nc1xuICAgICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICAgIGdldFBsYXllcj17KCkgPT4gcGxheWVyUmVmLmN1cnJlbnR9XG4gICAgICAgICAgb25DaGFuZ2U9eyhfZXZlbnQsIGl0ZW0pID0+XG4gICAgICAgICAgICB1aUhhbmRsZXJzLm9uQ2hhbmdlU2V0dGluZ3Moe1xuICAgICAgICAgICAgICBuYW1lOiBpdGVtLnR5cGUsXG4gICAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgICBrZWVwT3BlbjogdHJ1ZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */")
8803
+ default: /*#__PURE__*/css$1(LanguageMenu.styles, process.env.NODE_ENV === "production" ? "" : ";label:default;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUVXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtpc0Rlc2t0b3B9IGZyb20gJ3V0aWwvZW52aXJvbm1lbnQnXG5pbXBvcnQgbXVsdGlSZWYgZnJvbSAndXRpbC9tdWx0aVJlZidcbmltcG9ydCB7b25WaWV3TW9kZUNoYW5nZSwgdG9nZ2xlRnVsbHNjcmVlbn0gZnJvbSAndXRpbC92aWV3TW9kZXMnXG5pbXBvcnQge3VzZUF1dG9IaWRlfSBmcm9tICdob29rcydcbmltcG9ydCB7SW50bFByb3ZpZGVyfSBmcm9tICdjb250ZXh0L0kxOG4nXG5pbXBvcnQge2dldE1lZGlhVGltZSwgaXNCdWZmZXJlZH0gZnJvbSAncGxheWVyQ29yZS9tZWRpYUJpbmRpbmdzJ1xuaW1wb3J0IEVycm9yIGZyb20gJ3BsYXllclVpL0Vycm9yJ1xuaW1wb3J0IExheW91dCBmcm9tICdwbGF5ZXJVaS9EZWZhdWx0TGF5b3V0J1xuaW1wb3J0IHtcbiAgQnV0dG9uLFxuICBMaXZlQnV0dG9uLFxuICBGdWxsc2NyZWVuQnV0dG9uLFxuICBQbGF5QnV0dG9uLFxuICBGb3J3YXJkQnV0dG9uLFxufSBmcm9tICdwbGF5ZXJVaS9idXR0b25zJ1xuaW1wb3J0IFNlZWtiYXIgZnJvbSAncGxheWVyVWkvU2Vla2JhcidcbmltcG9ydCBEaXNwbGF5VGltZSBmcm9tICdwbGF5ZXJVaS9EaXNwbGF5VGltZSdcbmltcG9ydCBMb2FkaW5nU3Bpbm5lciBmcm9tICdwbGF5ZXJVaS9Mb2FkaW5nU3Bpbm5lcidcbmltcG9ydCBCYWNrZHJvcCBmcm9tICdwbGF5ZXJVaS9CYWNrZHJvcCdcbmltcG9ydCBTZXR0aW5ncyBmcm9tICdwbGF5ZXJVaS9TZXR0aW5ncydcbmltcG9ydCBPdmVybGF5UGFuZWwgZnJvbSAncGxheWVyVWkvT3ZlcmxheVBhbmVsJ1xuaW1wb3J0IExhbmd1YWdlTWVudSBmcm9tICdwbGF5ZXJVaS9MYW5ndWFnZU1lbnUnXG5pbXBvcnQgUGxheVBhbmVsIGZyb20gJ3BsYXllclVpL1BsYXlQYW5lJ1xuaW1wb3J0IFZvbHVtZUNvbnRyb2wgZnJvbSAnY29tcG9uZW50L1ZvbHVtZUNvbnRyb2wnXG5pbXBvcnQgQ2FzdFVpIGZyb20gJ2Nhc3QvQ2FzdFVpJ1xuaW1wb3J0IHtsaW5rQ2FzdH0gZnJvbSAnY2FzdC9mcmFtZXdvcmsnXG5pbXBvcnQge0Nhc3RTdGF0ZX0gZnJvbSAnRW51bSdcbmltcG9ydCB7ZGlzcGF0Y2hDaGFwdGVyRXZlbnRzfSBmcm9tICcuL3RpbWVsaW5lJ1xuaW1wb3J0IFZpZGVvIGZyb20gJy4uL1ZpZGVvJ1xuaW1wb3J0IHtnZXRMYW5ndWFnZU9wdGlvbnMsIGdldFF1YWxpdHlPcHRpb25zLCBnZXRTZXR0aW5nc0RhdGF9IGZyb20gJy4vc2V0dGluZ3MnXG5pbXBvcnQge2xpbmtNZWRpYVZvbHVtZSwgc3luY1ZvbHVtZX0gZnJvbSAnLi92b2x1bWUnXG5pbXBvcnQgU2Vla1ByZXZpZXcgZnJvbSAnLi9TZWVrUHJldmlldydcblxuY29uc3Qgc2l6ZXMgPSB7XG4gICdzbWFsbC1lbWJlZCc6IDIwMCxcbiAgZW1iZWQ6IDQwMCxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6IDYwMCxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiA5MDAsXG4gIGRlc2t0b3A6IDEyMDAsXG59XG5cbmNvbnN0IHVzZUxpbmtTdGF0ZSA9IChyZXF1ZXN0LCBkZXBlbmRlbmNpZXMgPSBbXSkgPT4ge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXF1ZXN0KHNldFN0YXRlKVxuICB9LCBkZXBlbmRlbmNpZXMpXG4gIHJldHVybiBzdGF0ZVxufVxuXG5jb25zdCBmbGlwU3RhdGUgPSBzdGF0ZSA9PiAoc3RhdGUgPT09ICdwbGF5aW5nJyA/ICdwYXVzZWQnIDogJ3BsYXlpbmcnKVxuXG4vLyBGSVhNRTogdG9vIGZldyBsaW5lcyB0byBzcGxpdCBhIGZpbGUsIGxvb2tpbmcgYSBiZXR0ZXIgcGxhY2VcbmNvbnN0IGdldFRodW1ibmFpbHNVcmwgPSBzb3VyY2UgPT5cbiAgW10uY29uY2F0KHNvdXJjZSkuZmluZChpdGVtID0+IGl0ZW0udHlwZSA9PT0gJ3RodW1ibmFpbCcpPy5zcmNcblxuY29uc3QgZGVmYXVsdFNldHRpbmdzID0ge31cblxuY29uc3Qgc2hvdWxkUGF1c2UgPSAoe3VzZXJGb2N1cywgdWlUeXBlfSkgPT5cbiAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgL3NldHRpbmdzfGNoYXB0ZXItbGlzdC8udGVzdCh1c2VyRm9jdXMpKSB8fFxuICAvYmxvY2tpbmd8c2Vla2JhcnxzaGFyZS1pbm5lci8udGVzdCh1c2VyRm9jdXMpXG5cbi8vIFRPRE8gZXh0cmFjdCB0byBzb21ld2hlcmUgZWxzZVxuY29uc3QgbWVudUNsYXNzZXMgPSB7XG4gIGRlZmF1bHQ6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzKSxcbiAgZGVza3RvcDogY3NzKExhbmd1YWdlTWVudS5zdHlsZXMsIExhbmd1YWdlTWVudS5kZXNrdG9wU3R5bGVzKSxcbn1cblxuY29uc3QgTGFuZ3VhZ2VTZXR0aW5ncyA9ICh7XG4gIHVpVHlwZSxcbiAgYXVkaW9UcmFja3MgPSBbXSxcbiAgdGV4dFRyYWNrcyA9IFtdLFxuICBnZXRQbGF5ZXIsXG4gIG9uQ2hhbmdlLFxuICBzbG90cyA9IHtMYW5ndWFnZU1lbnV9LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnZXRMYW5ndWFnZU9wdGlvbnMoZ2V0UGxheWVyKCksIHthdWRpb1RyYWNrcywgdGV4dFRyYWNrc30pXG4gIHJldHVybiAoXG4gICAgYXVkaW9UcmFja3MubGVuZ3RoID4gMCAmJlxuICAgIHRleHRUcmFja3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICA8T3ZlcmxheVBhbmVsXG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICB0aXRsZT1cIuWtl+W5leODu+mfs+WjsOOCkuWIh+OCiuabv+OBiOOCi1wiXG4gICAgICAgIGJ1dHRvbkljb249XCJzdWJ0aXRsZVwiXG4gICAgICA+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIGF1ZGlvVHJhY2s6IGFwcEF1ZGlvVHJhY2ssXG4gIHRleHRUcmFjazogYXBwVGV4dFRyYWNrLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgICAgb3RoZXJTZWN0aW9uczogYXBwU2V0dGluZ3Muc2VjdGlvbnMsXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHtwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLCB2YWx1ZXMsIHNlY3Rpb25zfVxuICAgIH0pXG4gIH1cbiAgY29uc3QgZGlzbWlzc1BhbmVscyA9ICgpID0+IHtcbiAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgaWYgKHJlZnMuY3VycmVudC5jbG9zZU1lbnUpIHtcbiAgICAgIHJlZnMuY3VycmVudC5jbG9zZU1lbnUoKVxuICAgICAgcmVmcy5jdXJyZW50LmNsb3NlTWVudSA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuICBjb25zdCBsYXN0U3RhdGUgPSB1c2VSZWYocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgaGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZSA9IChldmVudCwgc3RhdGUpID0+IHtcbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdlcnJvcicpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U/LihldmVudCwgc3RhdGUpXG4gICAgLy8gcHJldmlvdXNseSBVSSBwbGF5YmFjayBzdGF0ZSB3YXMgc3luY2VkIG9ubHkgd2hlblxuICAgIC8vIGV4aXRpbmcgaU9TIHZpZGVvIG9ubHkgZnVsbHNjcmVlbih3ZWJraXRlbmRmdWxsc2NyZWVuKVxuICAgIGlmIChcbiAgICAgIC9wbGF5aW5nfHBhdXNlZC8udGVzdChzdGF0ZSkgJiZcbiAgICAgICEodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgJiZcbiAgICAgICFzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICkge1xuICAgICAgdG9nZ2xlUGxheShzdGF0ZSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnZW5kZWQnKSB7XG4gICAgICBkaXNtaXNzUGFuZWxzKClcbiAgICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2xvYWRpbmcnICYmIGxhc3RTdGF0ZS5jdXJyZW50ICE9PSAnaW5pdCcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdG9nZ2xlUGxheSgncGxheWluZycpLCAxKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdwbGF5aW5nJykge1xuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfVxuICAgIGlmIChsYXN0U3RhdGUuY3VycmVudCA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICBmZXRjaFNldHRpbmdzKClcbiAgICB9XG4gICAgbGFzdFN0YXRlLmN1cnJlbnQgPSBzdGF0ZVxuICAgIHNldFBsYXliYWNrU3RhdGUoc3RhdGUpXG4gIH1cblxuICBjb25zdCBjaGFuZ2VTZXR0aW5ncyA9IChuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSA9IHt9KSA9PiB7XG4gICAgLy8gVE9ETyBjb25zaWRlciBtZXJnZSBpbnRvIHVzZVJlZHVjZXI/XG4gICAgb25DaGFuZ2VTZXR0aW5ncz8uKHtuYW1lLCB2YWx1ZX0pXG4gICAgc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgLi4uY3VycmVudCxcbiAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBbbmFtZV06IHZhbHVlfSxcbiAgICAgIHByZWZlcnJlZDogey4uLmN1cnJlbnQucHJlZmVycmVkLCBbbmFtZV06IHZhbHVlfSxcbiAgICB9KSlcbiAgICBpZiAoIWtlZXBPcGVuKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9XG4gIGNvbnN0IG9wZW5TZXR0aW5ncyA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25GcmFtZSA9XG4gICAgICB1c2VyRm9jdXMgIT09ICdzZXR0aW5ncycgJiZcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIG9uT3BlblNldHRpbmdzPy4oZXZlbnQsIHNldHRpbmdzKVxuICAgICAgICAvLyBJbiBpT1MgU2FmYXJpLCB3ZSBuZWVkIHRvIHVwZGF0ZSBzZXR0aW5ncyBkYXRhXG4gICAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgICAgfSlcbiAgICBzZXRVc2VyRm9jdXMoY3VycmVudCA9PiAoY3VycmVudCA9PT0gJ3NldHRpbmdzJyA/ICcnIDogJ3NldHRpbmdzJykpXG4gICAgcmV0dXJuIGFuaW1hdGlvbkZyYW1lXG4gIH1cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tSYXRlID4gMCkge1xuICAgICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgICAuLi5jdXJyZW50LFxuICAgICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgc3BlZWQ6IGFwcFBsYXliYWNrUmF0ZX0sXG4gICAgICB9KSlcbiAgICB9XG4gIH0sIFthcHBQbGF5YmFja1JhdGVdKVxuXG4gIGNvbnN0IHF1YWxpdHlPcHRpb25zID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRRdWFsaXR5T3B0aW9ucyhzZXR0aW5ncyksXG4gICAgW3NldHRpbmdzLnZhbHVlcy5xdWFsaXR5XVxuICApXG4gIGNvbnN0IHZpZXdNb2RlID0gdXNlTGlua1N0YXRlKHVwZGF0ZSA9PlxuICAgIG9uVmlld01vZGVDaGFuZ2UodmlkZW9SZWYuY3VycmVudCwgdXBkYXRlKVxuICApXG4gIGNvbnN0IHNvdXJjZU92ZXJyaWRlID0gdXNlTGlua1N0YXRlKFxuICAgIGFzeW5jIHVwZGF0ZSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPVxuICAgICAgICBzb3VyY2UgJiYgKGF3YWl0IHF1YWxpdHkucmV3cml0ZU1hbmlmZXN0Py4oc291cmNlLCBxdWFsaXR5T3B0aW9ucykpXG4gICAgICB1cGRhdGUocmVzdWx0IHx8IHNvdXJjZSlcbiAgICB9LFxuICAgIFtzb3VyY2UsIHF1YWxpdHlPcHRpb25zXVxuICApXG4gIGNvbnN0IHdhaXRpbmcgPSAvZW1wdGllZHxsb2FkaW5nfGJ1ZmZlcmluZy8udGVzdChwbGF5YmFja1N0YXRlKVxuICBjb25zdCBhY3RpdmVQbGF5YmFjayA9XG4gICAgcGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnIHx8IHBsYXliYWNrU3RhdGUgPT09ICd3YWl0aW5nJ1xuICBjb25zdCB7XG4gICAgbW9kZTogYXV0b0hpZGVNb2RlLFxuICAgIG9uQ2xpY2ssXG4gICAgb25Nb3VzZU1vdmUsXG4gIH0gPSB1c2VBdXRvSGlkZSh7XG4gICAgcGlubmVkOiAhY29udHJvbHMuYXV0b2hpZGUgfHwgd2FpdGluZyB8fCAhYWN0aXZlUGxheWJhY2sgfHwgdXNlckZvY3VzLFxuICAgIHRhcFRvSGlkZTogdWlUeXBlID09PSAnbW9iaWxlJyxcbiAgICBoaWRlVGltZU1zOiBjb250cm9scy5hdXRvaGlkZSxcbiAgfSlcbiAgY29uc3QgbW9kZSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogY29udHJvbHMuYXV0b2hpZGVcbiAgICAgID8gYXV0b0hpZGVNb2RlXG4gICAgICA6IGNvbnRyb2xzXG4gICAgICA/ICdzaG93bidcbiAgICAgIDogJ2hpZGRlbidcbiAgY29uc3QgY29udHJvbHNEaXNwbGF5ID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnc2Vla2Jhci1vbmx5J1xuICAgICAgOiBjb250cm9scyA9PT0gJ3RpdGxlLW9ubHknIHx8IHBsYXliYWNrU3RhdGUgPT09ICdlbXB0aWVkJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBtb2RlXG4gIGNvbnN0IHNob3VsZEhpZGVQYW5lbHMgPVxuICAgIChjb250cm9scyA9PT0gJ25vLXBhbmVsJyB8fCBjb250cm9sc0Rpc3BsYXkgPT09ICdoaWRkZW4nKSAmJiB1c2VyRm9jdXNcbiAgY29uc3QgaGF2ZVBsYXlQYW5lbCA9XG4gICAgIWJsb2NraW5nICYmXG4gICAgdWlUeXBlID09PSAnZGVza3RvcCcgJiZcbiAgICAhd2FpdGluZyAmJlxuICAgICEvdm9sdW1lfCcnLy50ZXN0KHVzZXJGb2N1cykgJiZcbiAgICAhL3RpdGxlLW9ubHl8bm8tcGFuZWwvLnRlc3QoY29udHJvbHMpICYmXG4gICAgKGNvbnRyb2xzLmF1dG9oaWRlIHx8IG1vZGUgPT09ICdzaG93bicpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2hvdWxkSGlkZVBhbmVscykge1xuICAgICAgZGlzbWlzc1BhbmVscygpXG4gICAgfVxuICB9LCBbc2hvdWxkSGlkZVBhbmVsc10pXG4gIHVzZUVmZmVjdCgoKSA9PiBcbiAgICBvbihjb250YWluZXJSZWYuY3VycmVudCwgJ2ZvY3VzLW1lbnUnLCBldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQuZGV0YWlsPy5zdGF0dXMgPT09ICdvcGVuJykge1xuICAgICAgICBzZXRVc2VyRm9jdXMoJ21lbnUnKVxuICAgICAgICByZWZzLmN1cnJlbnQuY2xvc2VNZW51ID0gKCkgPT4gZXZlbnQuZGV0YWlsLmNsb3NlTWVudT8uKClcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5kZXRhaWw/LnN0YXR1cyA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgICAgc2V0VXNlckZvY3VzKGN1cnJlbnQgPT4gKGN1cnJlbnQgPT09ICdtZW51JyA/ICcnIDogY3VycmVudCkpXG4gICAgICB9XG4gICAgfSlcbiAgLCBbXSlcbiAgY29uc3Qge3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9ID0gbGlua01lZGlhVm9sdW1lKCgpID0+ICh7XG4gICAgdmlkZW86IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgZ2V0UGxheWVyOiAoKSA9PiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgfSkpXG4gIGNvbnN0IGNoYW5nZVByZXZpb3VzID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlUHJldmlvdXMoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuICBjb25zdCBjaGFuZ2VOZXh0ID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlTmV4dChldmVudClcbiAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIHZpZGVvUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2xvYWRzdGFydCcpKVxuICB9XG5cbiAgdXNlRWZmZWN0KGZldGNoU2V0dGluZ3MsIFthcHBTZXR0aW5nc10pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVGhlIGFkQ29udGFpbmVyIHNob3VsZCBiZSBzZXQgYmVmb3JlIGBsb2FkYCBiZWNhdXNlIEltYURhaS5sb2FkIG5lZWRzIGl0LlxuICAgIHBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4gcGx1Z2luLnNldEFkQ29udGFpbmVyPy4oYWRDb250YWluZXJSZWYuY3VycmVudCkpXG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgZGlzcGF0Y2hDaGFwdGVyRXZlbnRzKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIGNoYXB0ZXJzLFxuICAgICAgICBnZXRUaW1lOiAoKSA9PiB2aWRlb1JlZi5jdXJyZW50LmN1cnJlbnRUaW1lLFxuICAgICAgfSksXG4gICAgW2NoYXB0ZXJzXVxuICApXG5cbiAgY29uc3QgaXNFbmQgPSBwbGF5YmFja1N0YXRlID09PSAnZW5kZWQnXG4gIGNvbnN0IGNhblNlZWsgPSAhaXNFbmQgJiYgcGxheWJhY2tUaW1lLmR1cmF0aW9uID4gMFxuICBjb25zdCBkZXJpdmVkUGxheWJhY2tTdGF0ZSA9XG4gICAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpIHx8IHNob3VsZFBhdXNlKHt1c2VyRm9jdXMsIHVpVHlwZX0pXG4gICAgICA/ICdwYXVzZWQnXG4gICAgICA6IHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVcbiAgY29uc3QgYWN0aXZlVGh1bWJuYWlsc1VybCA9XG4gICAgKCF1c2VyRm9jdXMgfHwgdXNlckZvY3VzID09PSAnc2Vla2JhcicpICYmXG4gICAgKGdldFRodW1ibmFpbHNVcmwoc291cmNlKSB8fCB0aHVtYm5haWxzVXJsKVxuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB7XG4gICAgJy0tcGxheWluZyc6IHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyA/ICcxJyA6ICcwJyxcbiAgfVxuICBjb25zdCBvblJld2luZCA9XG4gICAgKCFpc0xpdmUgfHwgcGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMCkgJiZcbiAgICBjYW5TZWVrICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIC0gMTAsICdyZXdpbmQnKSlcbiAgY29uc3Qgb25Gb3J3YXJkID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgKyAxMCwgJ2ZvcndhcmQnKSlcbiAgY29uc3Qgb25DbGlja0JsYW5rID1cbiAgICBoYXZlUGxheVBhbmVsICYmICgoKSA9PiB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KSlcblxuICBjb25zdCB1aUhhbmRsZXJzID0ge1xuICAgIG9uUGxheTogKCkgPT4ge1xuICAgICAgdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSlcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH0sXG4gICAgb25DbGlja0xpdmU6IGlzTGl2ZSAmJiAoKCkgPT4gc2V0VGFyZ2V0VGltZSgwLCAnc2Vla1RvTGl2ZScpKSxcbiAgICBvbkNsaWNrU2Vla2JhcjogKCkgPT4ge1xuICAgICAgcmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiBzZXRVc2VyRm9jdXMoJ3NlZWtiYXInKSxcbiAgICAgICAgNjZcbiAgICAgIClcbiAgICB9LFxuICAgIG9uU2VlazogdGltZSA9PiB7XG4gICAgICBzZXRUYXJnZXRUaW1lKHRpbWUsICdzZWVrJylcbiAgICAgIGNsZWFyVGltZW91dChyZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cylcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gc2V0VXNlckZvY3VzKCcnKSwgNjYpXG4gICAgfSxcbiAgICBvbkNoYW5nZVNldHRpbmdzOiAoe25hbWUsIHZhbHVlLCBrZWVwT3Blbn0pID0+XG4gICAgICBjaGFuZ2VTZXR0aW5ncyhuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSksXG4gICAgb25DbG9zZVNldHRpbmdzOiBldmVudCA9PiB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBzbG90UHJvcHM/LnNldHRpbmdzPy5vbkNsb3NlPy4oZXZlbnQpXG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IHVpRWxlbWVudHMgPSB7XG4gICAgbGl2ZUJ1dHRvbjogdWlIYW5kbGVycy5vbkNsaWNrTGl2ZSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5MaXZlQnV0dG9uXG4gICAgICAgIHVzaW5nU3RhcnRPdmVyPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwfVxuICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlfVxuICAgICAgLz5cbiAgICApLFxuICAgIGNvbnRyb2xCdXR0b25zOiB7XG4gICAgICBwbGF5QnV0dG9uOiAoXG4gICAgICAgIDxQbGF5QnV0dG9uXG4gICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgZW5kZWQ9e2lzRW5kfVxuICAgICAgICAgIGhpZGRlbj17XG4gICAgICAgICAgICB1aVR5cGUgPT09ICdtb2JpbGUnICYmICh3YWl0aW5nIHx8IC9sb2FkaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpKVxuICAgICAgICAgIH1cbiAgICAgICAgICB2YXJpYW50PXshaXNVc2VyQWN0aXZlICYmICdmaXJzdHBsYXknfVxuICAgICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25QbGF5fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHJld2luZEJ1dHRvbjogb25SZXdpbmQgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicmV3aW5kMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5SRVdJTkRcIlxuICAgICAgICAgIGRpc2FibGVkPXtpc0VuZH1cbiAgICAgICAgICBvbkNsaWNrPXtvblJld2luZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBmb3J3YXJkQnV0dG9uOiBvbkZvcndhcmQgJiYgKFxuICAgICAgICA8Rm9yd2FyZEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cImZvcndhcmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLkZPUldBUkRcIlxuICAgICAgICAgIGRpc2FibGVkPXshY2FuU2Vla31cbiAgICAgICAgICBvbkNsaWNrPXtvbkZvcndhcmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgbmV4dEVwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cIm5leHRcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5ORVhUXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlTmV4dH1cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VOZXh0fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHByZXZpb3VzRXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicHJldmlvdXNcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5QUkVWSU9VU1wiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZVByZXZpb3VzfVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZVByZXZpb3VzfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICB9LFxuICAgIHNlZWtiYXI6IChcbiAgICAgIDxjb21wb25lbnRzLlNlZWtiYXJcbiAgICAgICAgc3R5bGU9ey92b2x1bWUvLnRlc3QodXNlckZvY3VzKSAmJiB7b3BhY2l0eTogJzAnfX1cbiAgICAgICAgc3RhcnRUaW1lPXtwbGF5YmFja1RpbWUuc3RhcnRUaW1lfVxuICAgICAgICBjdXJyZW50VGltZT17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lfVxuICAgICAgICBidWZmZXJUaW1lPXtwbGF5YmFja1RpbWUuYnVmZmVyVGltZX1cbiAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNsaWNrU2Vla2Jhcn1cbiAgICAgICAgb25DaGFuZ2VDb21taXR0ZWQ9e3VpSGFuZGxlcnMub25TZWVrfVxuICAgICAgICBtYXJrcz17bWFya3N9XG4gICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgIHsuLi5zbG90UHJvcHMuc2Vla2Jhcn1cbiAgICAgID5cbiAgICAgICAge2FjdGl2ZVRodW1ibmFpbHNVcmwgJiYgKFxuICAgICAgICAgIDxTZWVrUHJldmlld1xuICAgICAgICAgICAgdGh1bWJuYWlsc1VybD17YWN0aXZlVGh1bWJuYWlsc1VybH1cbiAgICAgICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvY29tcG9uZW50cy5TZWVrYmFyPlxuICAgICksXG4gICAgZGlzcGxheVRpbWU6IDxjb21wb25lbnRzLkRpc3BsYXlUaW1lIHsuLi5wbGF5YmFja1RpbWV9IC8+LFxuICAgIGZ1bGxzY3JlZW5CdXR0b246IChcbiAgICAgIDxGdWxsc2NyZWVuQnV0dG9uXG4gICAgICAgIHZpZXdNb2RlPXt2aWV3TW9kZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gdG9nZ2xlRnVsbHNjcmVlbihjb250YWluZXJSZWYuY3VycmVudCl9XG4gICAgICAvPlxuICAgICksXG4gICAgdm9sdW1lQ29udHJvbDogd2lkdGggPj0gc2l6ZXNbJ3NtYWxsLWVtYmVkJ10gJiYgKFxuICAgICAgPGNvbXBvbmVudHMuVm9sdW1lQ29udHJvbFxuICAgICAgICB7Li4ue3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9fVxuICAgICAgICBvbk1vdXNlT3Zlcj17KCkgPT4gc2V0VXNlckZvY3VzKCd2b2x1bWUnKX1cbiAgICAgICAgb25Nb3VzZU91dD17KCkgPT4gc2V0VXNlckZvY3VzKCcnKX1cbiAgICAgICAgey4uLnNsb3RQcm9wcz8udm9sdW1lQ29udHJvbH1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBiYWNrSXRlbXM6IChcbiAgICAgIDxQbGF5UGFuZWwgYW5pbWF0aW9uPXt0YXJnZXRTdGF0ZS5hbmltYXRpb259IG9uQ2xpY2s9e29uQ2xpY2tCbGFua30gLz5cbiAgICApLFxuICB9XG4gIGNvbnN0IGNvbXBhdGliaWxpdHlDYXN0UHJvcHMgPSBjYXN0T3B0aW9ucyA9PT0gJ2NvbXBhdGlibGUnICYmIHtcbiAgICBzb3VyY2UsXG4gICAgdmFsdWVzOiB7dGl0bGUsIC4uLnNldHRpbmdzLnZhbHVlcywgLi4uaW50bCwgbW9kdWxlc0NvbmZpZ30sXG4gICAgb25Mb2FkOiBvbkNhc3QsXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXN0T3B0aW9ucyAmJiBjYXN0T3B0aW9ucyAhPT0gJ2NvbXBhdGlibGUnKSB7XG4gICAgICByZXR1cm4gbGlua0Nhc3Qoe3NvdXJjZSwgLi4uY2FzdE9wdGlvbnN9KVxuICAgIH0gLy8gVE9ETyBwbGF5bGlzdCwgYXVkaW8gLyBzdWJ0aXRsZSBzZXR0aW5nXG4gIH0sIFtzb3VyY2UsIGNhc3RPcHRpb25zLmNvbnRlbnRJZCwgY2FzdE9wdGlvbnMuY3VzdG9tRGF0YV0pXG4gIGNvbnN0IHNlbGVjdGVkQXVkaW9UcmFjayA9IHNldHRpbmdzLnByZWZlcnJlZD8uYXVkaW8gfHwgYXBwQXVkaW9UcmFja1xuICBjb25zdCBzZWxlY3RlZFRleHRUcmFjayA9IHNldHRpbmdzLnByZWZlcnJlZD8uc3VidGl0bGVzIHx8IGFwcFRleHRUcmFja1xuXG4gIHJldHVybiAoXG4gICAgPEludGxQcm92aWRlciB7Li4uaW50bH0+XG4gICAgICA8TGF5b3V0XG4gICAgICAgIHN0eWxlPXt7Li4uc3R5bGUsIGNzc1ZhcmlhYmxlc319XG4gICAgICAgIHR5cGU9e3VpVHlwZX1cbiAgICAgICAgZGlzcGxheT17bW9kZX1cbiAgICAgICAgY29udHJvbHNEaXNwbGF5PXtjb250cm9sc0Rpc3BsYXl9XG4gICAgICAgIHNpemU9e3NpemV9XG4gICAgICAgIHZpZGVvPXtcbiAgICAgICAgICA8VmlkZW9cbiAgICAgICAgICAgIHsuLi52aWRlb1Byb3BzfVxuICAgICAgICAgICAgdmlkZW9SZWY9e211bHRpUmVmKHZpZGVvUmVmLCB2aWRlb1Byb3BzLnZpZGVvUmVmKX1cbiAgICAgICAgICAgIHNvdXJjZT17XG4gICAgICAgICAgICAgIGNhc3RTdGF0ZSAhPT0gQ2FzdFN0YXRlLkNPTk5FQ1RFRCAmJlxuICAgICAgICAgICAgICBwbGF5YmFja1N0YXRlICE9PSAnZXJyb3InICYmXG4gICAgICAgICAgICAgIHNvdXJjZU92ZXJyaWRlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwbGF5YmFja1N0YXRlPXtkZXJpdmVkUGxheWJhY2tTdGF0ZX1cbiAgICAgICAgICAgIGN1cnJlbnRUaW1lPXt0YXJnZXRTdGF0ZS5jdXJyZW50VGltZX1cbiAgICAgICAgICAgIHsuLi4oYXBwVm9sdW1lID49IDAgJiYge3ZvbHVtZTogYXBwVm9sdW1lLCBtdXRlZDogYXBwVm9sdW1lIDw9IDB9KX1cbiAgICAgICAgICAgIHBsYXliYWNrUmF0ZT17c2V0dGluZ3MudmFsdWVzLnNwZWVkfVxuICAgICAgICAgICAgdmlkZW9SZXNvbHV0aW9uPXtxdWFsaXR5T3B0aW9uc31cbiAgICAgICAgICAgIGF1ZGlvVHJhY2s9e3NlbGVjdGVkQXVkaW9UcmFja31cbiAgICAgICAgICAgIHRleHRUcmFjaz17c2VsZWN0ZWRUZXh0VHJhY2t9XG4gICAgICAgICAgICBsb29wPXtzZXR0aW5ncy52YWx1ZXMubG9vcH1cbiAgICAgICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgICAgICBtb2R1bGVzQ29uZmlnPXttb2R1bGVzQ29uZmlnfVxuICAgICAgICAgICAgb25QbGF5bG9nRmlyZWQ9e29uUGxheWxvZ0ZpcmVkfVxuICAgICAgICAgICAgb25FcnJvcj17ZXJyb3JIYW5kbGVyfVxuICAgICAgICAgICAgb25QbGF5YmFja1N0YXRlQ2hhbmdlPXtoYW5kbGVQbGF5YmFja1N0YXRlQ2hhbmdlfVxuICAgICAgICAgICAgb25CbG9ja2VkQXV0b3BsYXk9e2Vycm9yID0+IG9uQmxvY2tlZEF1dG9wbGF5Py4oZXJyb3IpfVxuICAgICAgICAgICAgb25DYW5QbGF5PXtldmVudCA9PiB7XG4gICAgICAgICAgICAgIHVwZGF0ZVBsYXliYWNrVGltZShldmVudClcbiAgICAgICAgICAgICAgdmlkZW9Qcm9wcy5vbkNhblBsYXk/LihldmVudClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvblRpbWVVcGRhdGU9e3VwZGF0ZVBsYXliYWNrVGltZX1cbiAgICAgICAgICAgIG9uRHVyYXRpb25DaGFuZ2U9e3VwZGF0ZVBsYXliYWNrVGltZX1cbiAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPXtwbGF5ZXIgPT4ge1xuICAgICAgICAgICAgICBwbGF5ZXJSZWYuY3VycmVudCA9IHBsYXllclxuICAgICAgICAgICAgICBvblBsYXllckxvYWRlZD8uKHBsYXllcilcbiAgICAgICAgICAgICAgc3luY1ZvbHVtZSh2aWRlb1JlZi5jdXJyZW50LCB2aWRlb1Byb3BzLm11dGVkID8gMCA6IGFwcFZvbHVtZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICBjb250YWluZXJSZWY9e2VsZW1lbnQgPT4ge1xuICAgICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50ID0gZWxlbWVudFxuICAgICAgICAgIG9ic2VydmUoZWxlbWVudClcbiAgICAgICAgfX1cbiAgICAgICAgYmFja1JlZj17YWRDb250YWluZXJSZWZ9XG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgY2hhbm5lbFRpdGxlPXtjaGFubmVsVGl0bGV9XG4gICAgICAgIGJhY2tCdXR0b249e29uQmFjayAmJiA8QnV0dG9uIHN0YXJ0SWNvbj1cImJhY2tcIiBvbkNsaWNrPXtvbkJhY2t9IC8+fVxuICAgICAgICB7Li4uKGlzVXNlckFjdGl2ZSAmJiB1aUVsZW1lbnRzKX1cbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgb25Nb3VzZU1vdmU9e29uTW91c2VNb3ZlfVxuICAgICAgPlxuICAgICAgICA8TG9hZGluZ1NwaW5uZXIgYWN0aXZlPXt3YWl0aW5nfSAvPlxuICAgICAgICB7ZXJyb3JEYXRhICYmIDxFcnJvciBlcnJvcj17ZXJyb3JEYXRhfSBvbkJhY2s9e29uQmFja30gLz59XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgey8qIFRPRE8gc3luYyBDYXN0IGxhc3QgcGxheWVkIHRpbWUgYmFjayAqL31cbiAgICAgICAge2lzVXNlckFjdGl2ZSAmJiAoXG4gICAgICAgICAgPGNvbXBvbmVudHMuQ2FzdFVpXG4gICAgICAgICAgICBvbkJhY2s9e29uQmFja31cbiAgICAgICAgICAgIG9uU3RhdGVDaGFuZ2U9e3NldENhc3RTdGF0ZX1cbiAgICAgICAgICAgIG9uTG9hZD17b25DYXN0fVxuICAgICAgICAgICAgey4uLmNvbXBhdGliaWxpdHlDYXN0UHJvcHN9XG4gICAgICAgICAgICB7Li4uc2xvdFByb3BzLmNhc3RVaX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmICggLy8gVE9ETzogRGVzaWduIDxFeHRlbnN0aW9uIC8+IGZsYWdcbiAgICAgICAgICA8Y29tcG9uZW50cy5TZXR0aW5nc1xuICAgICAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICAgICAgc2VjdGlvbnM9e3NldHRpbmdzLnNlY3Rpb25zfVxuICAgICAgICAgICAgLy8gVE9ETyBoYXNCb3R0b21QYW5lbCBib3R0b206IDhlbVxuICAgICAgICAgICAgb3Blbj17dXNlckZvY3VzID09PSAnc2V0dGluZ3MnfVxuICAgICAgICAgICAgdmFsdWVzPXtzZXR0aW5ncy52YWx1ZXN9XG4gICAgICAgICAgICBvbk9wZW49e29wZW5TZXR0aW5nc31cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt1aUhhbmRsZXJzLm9uQ2hhbmdlU2V0dGluZ3N9XG4gICAgICAgICAgICB7Li4uc2xvdFByb3BzPy5zZXR0aW5nc31cbiAgICAgICAgICAgIG9uQ2xvc2U9e3VpSGFuZGxlcnMub25DbG9zZVNldHRpbmdzfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIDxMYW5ndWFnZVNldHRpbmdzXG4gICAgICAgICAgdWlUeXBlPXt1aVR5cGV9XG4gICAgICAgICAgZ2V0UGxheWVyPXsoKSA9PiBwbGF5ZXJSZWYuY3VycmVudH1cbiAgICAgICAgICBvbkNoYW5nZT17KF9ldmVudCwgaXRlbSkgPT5cbiAgICAgICAgICAgIHVpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5ncyh7XG4gICAgICAgICAgICAgIG5hbWU6IGl0ZW0udHlwZSxcbiAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXG4gICAgICAgICAgICAgIGtlZXBPcGVuOiB0cnVlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgey4uLnNsb3RQcm9wcy5sYW5ndWFnZVNldHRpbmdzfVxuICAgICAgICAvPlxuICAgICAgICA8QmFja2Ryb3Agb3Blbj17IXBsYXliYWNrU3RhdGUgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2xvYWRpbmcnfT5cbiAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgPC9CYWNrZHJvcD5cbiAgICAgIDwvTGF5b3V0PlxuICAgIDwvSW50bFByb3ZpZGVyPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IFByZW1pdW1QbGF5ZXJcbiJdfQ== */"),
8804
+ desktop: /*#__PURE__*/css$1(LanguageMenu.styles, LanguageMenu.desktopStyles, process.env.NODE_ENV === "production" ? "" : ";label:desktop;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0VXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtpc0Rlc2t0b3B9IGZyb20gJ3V0aWwvZW52aXJvbm1lbnQnXG5pbXBvcnQgbXVsdGlSZWYgZnJvbSAndXRpbC9tdWx0aVJlZidcbmltcG9ydCB7b25WaWV3TW9kZUNoYW5nZSwgdG9nZ2xlRnVsbHNjcmVlbn0gZnJvbSAndXRpbC92aWV3TW9kZXMnXG5pbXBvcnQge3VzZUF1dG9IaWRlfSBmcm9tICdob29rcydcbmltcG9ydCB7SW50bFByb3ZpZGVyfSBmcm9tICdjb250ZXh0L0kxOG4nXG5pbXBvcnQge2dldE1lZGlhVGltZSwgaXNCdWZmZXJlZH0gZnJvbSAncGxheWVyQ29yZS9tZWRpYUJpbmRpbmdzJ1xuaW1wb3J0IEVycm9yIGZyb20gJ3BsYXllclVpL0Vycm9yJ1xuaW1wb3J0IExheW91dCBmcm9tICdwbGF5ZXJVaS9EZWZhdWx0TGF5b3V0J1xuaW1wb3J0IHtcbiAgQnV0dG9uLFxuICBMaXZlQnV0dG9uLFxuICBGdWxsc2NyZWVuQnV0dG9uLFxuICBQbGF5QnV0dG9uLFxuICBGb3J3YXJkQnV0dG9uLFxufSBmcm9tICdwbGF5ZXJVaS9idXR0b25zJ1xuaW1wb3J0IFNlZWtiYXIgZnJvbSAncGxheWVyVWkvU2Vla2JhcidcbmltcG9ydCBEaXNwbGF5VGltZSBmcm9tICdwbGF5ZXJVaS9EaXNwbGF5VGltZSdcbmltcG9ydCBMb2FkaW5nU3Bpbm5lciBmcm9tICdwbGF5ZXJVaS9Mb2FkaW5nU3Bpbm5lcidcbmltcG9ydCBCYWNrZHJvcCBmcm9tICdwbGF5ZXJVaS9CYWNrZHJvcCdcbmltcG9ydCBTZXR0aW5ncyBmcm9tICdwbGF5ZXJVaS9TZXR0aW5ncydcbmltcG9ydCBPdmVybGF5UGFuZWwgZnJvbSAncGxheWVyVWkvT3ZlcmxheVBhbmVsJ1xuaW1wb3J0IExhbmd1YWdlTWVudSBmcm9tICdwbGF5ZXJVaS9MYW5ndWFnZU1lbnUnXG5pbXBvcnQgUGxheVBhbmVsIGZyb20gJ3BsYXllclVpL1BsYXlQYW5lJ1xuaW1wb3J0IFZvbHVtZUNvbnRyb2wgZnJvbSAnY29tcG9uZW50L1ZvbHVtZUNvbnRyb2wnXG5pbXBvcnQgQ2FzdFVpIGZyb20gJ2Nhc3QvQ2FzdFVpJ1xuaW1wb3J0IHtsaW5rQ2FzdH0gZnJvbSAnY2FzdC9mcmFtZXdvcmsnXG5pbXBvcnQge0Nhc3RTdGF0ZX0gZnJvbSAnRW51bSdcbmltcG9ydCB7ZGlzcGF0Y2hDaGFwdGVyRXZlbnRzfSBmcm9tICcuL3RpbWVsaW5lJ1xuaW1wb3J0IFZpZGVvIGZyb20gJy4uL1ZpZGVvJ1xuaW1wb3J0IHtnZXRMYW5ndWFnZU9wdGlvbnMsIGdldFF1YWxpdHlPcHRpb25zLCBnZXRTZXR0aW5nc0RhdGF9IGZyb20gJy4vc2V0dGluZ3MnXG5pbXBvcnQge2xpbmtNZWRpYVZvbHVtZSwgc3luY1ZvbHVtZX0gZnJvbSAnLi92b2x1bWUnXG5pbXBvcnQgU2Vla1ByZXZpZXcgZnJvbSAnLi9TZWVrUHJldmlldydcblxuY29uc3Qgc2l6ZXMgPSB7XG4gICdzbWFsbC1lbWJlZCc6IDIwMCxcbiAgZW1iZWQ6IDQwMCxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6IDYwMCxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiA5MDAsXG4gIGRlc2t0b3A6IDEyMDAsXG59XG5cbmNvbnN0IHVzZUxpbmtTdGF0ZSA9IChyZXF1ZXN0LCBkZXBlbmRlbmNpZXMgPSBbXSkgPT4ge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXF1ZXN0KHNldFN0YXRlKVxuICB9LCBkZXBlbmRlbmNpZXMpXG4gIHJldHVybiBzdGF0ZVxufVxuXG5jb25zdCBmbGlwU3RhdGUgPSBzdGF0ZSA9PiAoc3RhdGUgPT09ICdwbGF5aW5nJyA/ICdwYXVzZWQnIDogJ3BsYXlpbmcnKVxuXG4vLyBGSVhNRTogdG9vIGZldyBsaW5lcyB0byBzcGxpdCBhIGZpbGUsIGxvb2tpbmcgYSBiZXR0ZXIgcGxhY2VcbmNvbnN0IGdldFRodW1ibmFpbHNVcmwgPSBzb3VyY2UgPT5cbiAgW10uY29uY2F0KHNvdXJjZSkuZmluZChpdGVtID0+IGl0ZW0udHlwZSA9PT0gJ3RodW1ibmFpbCcpPy5zcmNcblxuY29uc3QgZGVmYXVsdFNldHRpbmdzID0ge31cblxuY29uc3Qgc2hvdWxkUGF1c2UgPSAoe3VzZXJGb2N1cywgdWlUeXBlfSkgPT5cbiAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgL3NldHRpbmdzfGNoYXB0ZXItbGlzdC8udGVzdCh1c2VyRm9jdXMpKSB8fFxuICAvYmxvY2tpbmd8c2Vla2JhcnxzaGFyZS1pbm5lci8udGVzdCh1c2VyRm9jdXMpXG5cbi8vIFRPRE8gZXh0cmFjdCB0byBzb21ld2hlcmUgZWxzZVxuY29uc3QgbWVudUNsYXNzZXMgPSB7XG4gIGRlZmF1bHQ6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzKSxcbiAgZGVza3RvcDogY3NzKExhbmd1YWdlTWVudS5zdHlsZXMsIExhbmd1YWdlTWVudS5kZXNrdG9wU3R5bGVzKSxcbn1cblxuY29uc3QgTGFuZ3VhZ2VTZXR0aW5ncyA9ICh7XG4gIHVpVHlwZSxcbiAgYXVkaW9UcmFja3MgPSBbXSxcbiAgdGV4dFRyYWNrcyA9IFtdLFxuICBnZXRQbGF5ZXIsXG4gIG9uQ2hhbmdlLFxuICBzbG90cyA9IHtMYW5ndWFnZU1lbnV9LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnZXRMYW5ndWFnZU9wdGlvbnMoZ2V0UGxheWVyKCksIHthdWRpb1RyYWNrcywgdGV4dFRyYWNrc30pXG4gIHJldHVybiAoXG4gICAgYXVkaW9UcmFja3MubGVuZ3RoID4gMCAmJlxuICAgIHRleHRUcmFja3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICA8T3ZlcmxheVBhbmVsXG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICB0aXRsZT1cIuWtl+W5leODu+mfs+WjsOOCkuWIh+OCiuabv+OBiOOCi1wiXG4gICAgICAgIGJ1dHRvbkljb249XCJzdWJ0aXRsZVwiXG4gICAgICA+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIGF1ZGlvVHJhY2s6IGFwcEF1ZGlvVHJhY2ssXG4gIHRleHRUcmFjazogYXBwVGV4dFRyYWNrLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgICAgb3RoZXJTZWN0aW9uczogYXBwU2V0dGluZ3Muc2VjdGlvbnMsXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHtwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLCB2YWx1ZXMsIHNlY3Rpb25zfVxuICAgIH0pXG4gIH1cbiAgY29uc3QgZGlzbWlzc1BhbmVscyA9ICgpID0+IHtcbiAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgaWYgKHJlZnMuY3VycmVudC5jbG9zZU1lbnUpIHtcbiAgICAgIHJlZnMuY3VycmVudC5jbG9zZU1lbnUoKVxuICAgICAgcmVmcy5jdXJyZW50LmNsb3NlTWVudSA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuICBjb25zdCBsYXN0U3RhdGUgPSB1c2VSZWYocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgaGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZSA9IChldmVudCwgc3RhdGUpID0+IHtcbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdlcnJvcicpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U/LihldmVudCwgc3RhdGUpXG4gICAgLy8gcHJldmlvdXNseSBVSSBwbGF5YmFjayBzdGF0ZSB3YXMgc3luY2VkIG9ubHkgd2hlblxuICAgIC8vIGV4aXRpbmcgaU9TIHZpZGVvIG9ubHkgZnVsbHNjcmVlbih3ZWJraXRlbmRmdWxsc2NyZWVuKVxuICAgIGlmIChcbiAgICAgIC9wbGF5aW5nfHBhdXNlZC8udGVzdChzdGF0ZSkgJiZcbiAgICAgICEodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgJiZcbiAgICAgICFzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICkge1xuICAgICAgdG9nZ2xlUGxheShzdGF0ZSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnZW5kZWQnKSB7XG4gICAgICBkaXNtaXNzUGFuZWxzKClcbiAgICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2xvYWRpbmcnICYmIGxhc3RTdGF0ZS5jdXJyZW50ICE9PSAnaW5pdCcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdG9nZ2xlUGxheSgncGxheWluZycpLCAxKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdwbGF5aW5nJykge1xuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfVxuICAgIGlmIChsYXN0U3RhdGUuY3VycmVudCA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICBmZXRjaFNldHRpbmdzKClcbiAgICB9XG4gICAgbGFzdFN0YXRlLmN1cnJlbnQgPSBzdGF0ZVxuICAgIHNldFBsYXliYWNrU3RhdGUoc3RhdGUpXG4gIH1cblxuICBjb25zdCBjaGFuZ2VTZXR0aW5ncyA9IChuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSA9IHt9KSA9PiB7XG4gICAgLy8gVE9ETyBjb25zaWRlciBtZXJnZSBpbnRvIHVzZVJlZHVjZXI/XG4gICAgb25DaGFuZ2VTZXR0aW5ncz8uKHtuYW1lLCB2YWx1ZX0pXG4gICAgc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgLi4uY3VycmVudCxcbiAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBbbmFtZV06IHZhbHVlfSxcbiAgICAgIHByZWZlcnJlZDogey4uLmN1cnJlbnQucHJlZmVycmVkLCBbbmFtZV06IHZhbHVlfSxcbiAgICB9KSlcbiAgICBpZiAoIWtlZXBPcGVuKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9XG4gIGNvbnN0IG9wZW5TZXR0aW5ncyA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25GcmFtZSA9XG4gICAgICB1c2VyRm9jdXMgIT09ICdzZXR0aW5ncycgJiZcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIG9uT3BlblNldHRpbmdzPy4oZXZlbnQsIHNldHRpbmdzKVxuICAgICAgICAvLyBJbiBpT1MgU2FmYXJpLCB3ZSBuZWVkIHRvIHVwZGF0ZSBzZXR0aW5ncyBkYXRhXG4gICAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgICAgfSlcbiAgICBzZXRVc2VyRm9jdXMoY3VycmVudCA9PiAoY3VycmVudCA9PT0gJ3NldHRpbmdzJyA/ICcnIDogJ3NldHRpbmdzJykpXG4gICAgcmV0dXJuIGFuaW1hdGlvbkZyYW1lXG4gIH1cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tSYXRlID4gMCkge1xuICAgICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgICAuLi5jdXJyZW50LFxuICAgICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgc3BlZWQ6IGFwcFBsYXliYWNrUmF0ZX0sXG4gICAgICB9KSlcbiAgICB9XG4gIH0sIFthcHBQbGF5YmFja1JhdGVdKVxuXG4gIGNvbnN0IHF1YWxpdHlPcHRpb25zID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRRdWFsaXR5T3B0aW9ucyhzZXR0aW5ncyksXG4gICAgW3NldHRpbmdzLnZhbHVlcy5xdWFsaXR5XVxuICApXG4gIGNvbnN0IHZpZXdNb2RlID0gdXNlTGlua1N0YXRlKHVwZGF0ZSA9PlxuICAgIG9uVmlld01vZGVDaGFuZ2UodmlkZW9SZWYuY3VycmVudCwgdXBkYXRlKVxuICApXG4gIGNvbnN0IHNvdXJjZU92ZXJyaWRlID0gdXNlTGlua1N0YXRlKFxuICAgIGFzeW5jIHVwZGF0ZSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPVxuICAgICAgICBzb3VyY2UgJiYgKGF3YWl0IHF1YWxpdHkucmV3cml0ZU1hbmlmZXN0Py4oc291cmNlLCBxdWFsaXR5T3B0aW9ucykpXG4gICAgICB1cGRhdGUocmVzdWx0IHx8IHNvdXJjZSlcbiAgICB9LFxuICAgIFtzb3VyY2UsIHF1YWxpdHlPcHRpb25zXVxuICApXG4gIGNvbnN0IHdhaXRpbmcgPSAvZW1wdGllZHxsb2FkaW5nfGJ1ZmZlcmluZy8udGVzdChwbGF5YmFja1N0YXRlKVxuICBjb25zdCBhY3RpdmVQbGF5YmFjayA9XG4gICAgcGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnIHx8IHBsYXliYWNrU3RhdGUgPT09ICd3YWl0aW5nJ1xuICBjb25zdCB7XG4gICAgbW9kZTogYXV0b0hpZGVNb2RlLFxuICAgIG9uQ2xpY2ssXG4gICAgb25Nb3VzZU1vdmUsXG4gIH0gPSB1c2VBdXRvSGlkZSh7XG4gICAgcGlubmVkOiAhY29udHJvbHMuYXV0b2hpZGUgfHwgd2FpdGluZyB8fCAhYWN0aXZlUGxheWJhY2sgfHwgdXNlckZvY3VzLFxuICAgIHRhcFRvSGlkZTogdWlUeXBlID09PSAnbW9iaWxlJyxcbiAgICBoaWRlVGltZU1zOiBjb250cm9scy5hdXRvaGlkZSxcbiAgfSlcbiAgY29uc3QgbW9kZSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogY29udHJvbHMuYXV0b2hpZGVcbiAgICAgID8gYXV0b0hpZGVNb2RlXG4gICAgICA6IGNvbnRyb2xzXG4gICAgICA/ICdzaG93bidcbiAgICAgIDogJ2hpZGRlbidcbiAgY29uc3QgY29udHJvbHNEaXNwbGF5ID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnc2Vla2Jhci1vbmx5J1xuICAgICAgOiBjb250cm9scyA9PT0gJ3RpdGxlLW9ubHknIHx8IHBsYXliYWNrU3RhdGUgPT09ICdlbXB0aWVkJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBtb2RlXG4gIGNvbnN0IHNob3VsZEhpZGVQYW5lbHMgPVxuICAgIChjb250cm9scyA9PT0gJ25vLXBhbmVsJyB8fCBjb250cm9sc0Rpc3BsYXkgPT09ICdoaWRkZW4nKSAmJiB1c2VyRm9jdXNcbiAgY29uc3QgaGF2ZVBsYXlQYW5lbCA9XG4gICAgIWJsb2NraW5nICYmXG4gICAgdWlUeXBlID09PSAnZGVza3RvcCcgJiZcbiAgICAhd2FpdGluZyAmJlxuICAgICEvdm9sdW1lfCcnLy50ZXN0KHVzZXJGb2N1cykgJiZcbiAgICAhL3RpdGxlLW9ubHl8bm8tcGFuZWwvLnRlc3QoY29udHJvbHMpICYmXG4gICAgKGNvbnRyb2xzLmF1dG9oaWRlIHx8IG1vZGUgPT09ICdzaG93bicpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2hvdWxkSGlkZVBhbmVscykge1xuICAgICAgZGlzbWlzc1BhbmVscygpXG4gICAgfVxuICB9LCBbc2hvdWxkSGlkZVBhbmVsc10pXG4gIHVzZUVmZmVjdCgoKSA9PiBcbiAgICBvbihjb250YWluZXJSZWYuY3VycmVudCwgJ2ZvY3VzLW1lbnUnLCBldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQuZGV0YWlsPy5zdGF0dXMgPT09ICdvcGVuJykge1xuICAgICAgICBzZXRVc2VyRm9jdXMoJ21lbnUnKVxuICAgICAgICByZWZzLmN1cnJlbnQuY2xvc2VNZW51ID0gKCkgPT4gZXZlbnQuZGV0YWlsLmNsb3NlTWVudT8uKClcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5kZXRhaWw/LnN0YXR1cyA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgICAgc2V0VXNlckZvY3VzKGN1cnJlbnQgPT4gKGN1cnJlbnQgPT09ICdtZW51JyA/ICcnIDogY3VycmVudCkpXG4gICAgICB9XG4gICAgfSlcbiAgLCBbXSlcbiAgY29uc3Qge3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9ID0gbGlua01lZGlhVm9sdW1lKCgpID0+ICh7XG4gICAgdmlkZW86IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgZ2V0UGxheWVyOiAoKSA9PiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgfSkpXG4gIGNvbnN0IGNoYW5nZVByZXZpb3VzID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlUHJldmlvdXMoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuICBjb25zdCBjaGFuZ2VOZXh0ID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlTmV4dChldmVudClcbiAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIHZpZGVvUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2xvYWRzdGFydCcpKVxuICB9XG5cbiAgdXNlRWZmZWN0KGZldGNoU2V0dGluZ3MsIFthcHBTZXR0aW5nc10pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVGhlIGFkQ29udGFpbmVyIHNob3VsZCBiZSBzZXQgYmVmb3JlIGBsb2FkYCBiZWNhdXNlIEltYURhaS5sb2FkIG5lZWRzIGl0LlxuICAgIHBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4gcGx1Z2luLnNldEFkQ29udGFpbmVyPy4oYWRDb250YWluZXJSZWYuY3VycmVudCkpXG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgZGlzcGF0Y2hDaGFwdGVyRXZlbnRzKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIGNoYXB0ZXJzLFxuICAgICAgICBnZXRUaW1lOiAoKSA9PiB2aWRlb1JlZi5jdXJyZW50LmN1cnJlbnRUaW1lLFxuICAgICAgfSksXG4gICAgW2NoYXB0ZXJzXVxuICApXG5cbiAgY29uc3QgaXNFbmQgPSBwbGF5YmFja1N0YXRlID09PSAnZW5kZWQnXG4gIGNvbnN0IGNhblNlZWsgPSAhaXNFbmQgJiYgcGxheWJhY2tUaW1lLmR1cmF0aW9uID4gMFxuICBjb25zdCBkZXJpdmVkUGxheWJhY2tTdGF0ZSA9XG4gICAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpIHx8IHNob3VsZFBhdXNlKHt1c2VyRm9jdXMsIHVpVHlwZX0pXG4gICAgICA/ICdwYXVzZWQnXG4gICAgICA6IHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVcbiAgY29uc3QgYWN0aXZlVGh1bWJuYWlsc1VybCA9XG4gICAgKCF1c2VyRm9jdXMgfHwgdXNlckZvY3VzID09PSAnc2Vla2JhcicpICYmXG4gICAgKGdldFRodW1ibmFpbHNVcmwoc291cmNlKSB8fCB0aHVtYm5haWxzVXJsKVxuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB7XG4gICAgJy0tcGxheWluZyc6IHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyA/ICcxJyA6ICcwJyxcbiAgfVxuICBjb25zdCBvblJld2luZCA9XG4gICAgKCFpc0xpdmUgfHwgcGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMCkgJiZcbiAgICBjYW5TZWVrICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIC0gMTAsICdyZXdpbmQnKSlcbiAgY29uc3Qgb25Gb3J3YXJkID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgKyAxMCwgJ2ZvcndhcmQnKSlcbiAgY29uc3Qgb25DbGlja0JsYW5rID1cbiAgICBoYXZlUGxheVBhbmVsICYmICgoKSA9PiB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KSlcblxuICBjb25zdCB1aUhhbmRsZXJzID0ge1xuICAgIG9uUGxheTogKCkgPT4ge1xuICAgICAgdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSlcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH0sXG4gICAgb25DbGlja0xpdmU6IGlzTGl2ZSAmJiAoKCkgPT4gc2V0VGFyZ2V0VGltZSgwLCAnc2Vla1RvTGl2ZScpKSxcbiAgICBvbkNsaWNrU2Vla2JhcjogKCkgPT4ge1xuICAgICAgcmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiBzZXRVc2VyRm9jdXMoJ3NlZWtiYXInKSxcbiAgICAgICAgNjZcbiAgICAgIClcbiAgICB9LFxuICAgIG9uU2VlazogdGltZSA9PiB7XG4gICAgICBzZXRUYXJnZXRUaW1lKHRpbWUsICdzZWVrJylcbiAgICAgIGNsZWFyVGltZW91dChyZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cylcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gc2V0VXNlckZvY3VzKCcnKSwgNjYpXG4gICAgfSxcbiAgICBvbkNoYW5nZVNldHRpbmdzOiAoe25hbWUsIHZhbHVlLCBrZWVwT3Blbn0pID0+XG4gICAgICBjaGFuZ2VTZXR0aW5ncyhuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSksXG4gICAgb25DbG9zZVNldHRpbmdzOiBldmVudCA9PiB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBzbG90UHJvcHM/LnNldHRpbmdzPy5vbkNsb3NlPy4oZXZlbnQpXG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IHVpRWxlbWVudHMgPSB7XG4gICAgbGl2ZUJ1dHRvbjogdWlIYW5kbGVycy5vbkNsaWNrTGl2ZSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5MaXZlQnV0dG9uXG4gICAgICAgIHVzaW5nU3RhcnRPdmVyPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwfVxuICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlfVxuICAgICAgLz5cbiAgICApLFxuICAgIGNvbnRyb2xCdXR0b25zOiB7XG4gICAgICBwbGF5QnV0dG9uOiAoXG4gICAgICAgIDxQbGF5QnV0dG9uXG4gICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgZW5kZWQ9e2lzRW5kfVxuICAgICAgICAgIGhpZGRlbj17XG4gICAgICAgICAgICB1aVR5cGUgPT09ICdtb2JpbGUnICYmICh3YWl0aW5nIHx8IC9sb2FkaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpKVxuICAgICAgICAgIH1cbiAgICAgICAgICB2YXJpYW50PXshaXNVc2VyQWN0aXZlICYmICdmaXJzdHBsYXknfVxuICAgICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25QbGF5fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHJld2luZEJ1dHRvbjogb25SZXdpbmQgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicmV3aW5kMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5SRVdJTkRcIlxuICAgICAgICAgIGRpc2FibGVkPXtpc0VuZH1cbiAgICAgICAgICBvbkNsaWNrPXtvblJld2luZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBmb3J3YXJkQnV0dG9uOiBvbkZvcndhcmQgJiYgKFxuICAgICAgICA8Rm9yd2FyZEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cImZvcndhcmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLkZPUldBUkRcIlxuICAgICAgICAgIGRpc2FibGVkPXshY2FuU2Vla31cbiAgICAgICAgICBvbkNsaWNrPXtvbkZvcndhcmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgbmV4dEVwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cIm5leHRcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5ORVhUXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlTmV4dH1cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VOZXh0fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHByZXZpb3VzRXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicHJldmlvdXNcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5QUkVWSU9VU1wiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZVByZXZpb3VzfVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZVByZXZpb3VzfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICB9LFxuICAgIHNlZWtiYXI6IChcbiAgICAgIDxjb21wb25lbnRzLlNlZWtiYXJcbiAgICAgICAgc3R5bGU9ey92b2x1bWUvLnRlc3QodXNlckZvY3VzKSAmJiB7b3BhY2l0eTogJzAnfX1cbiAgICAgICAgc3RhcnRUaW1lPXtwbGF5YmFja1RpbWUuc3RhcnRUaW1lfVxuICAgICAgICBjdXJyZW50VGltZT17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lfVxuICAgICAgICBidWZmZXJUaW1lPXtwbGF5YmFja1RpbWUuYnVmZmVyVGltZX1cbiAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNsaWNrU2Vla2Jhcn1cbiAgICAgICAgb25DaGFuZ2VDb21taXR0ZWQ9e3VpSGFuZGxlcnMub25TZWVrfVxuICAgICAgICBtYXJrcz17bWFya3N9XG4gICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgIHsuLi5zbG90UHJvcHMuc2Vla2Jhcn1cbiAgICAgID5cbiAgICAgICAge2FjdGl2ZVRodW1ibmFpbHNVcmwgJiYgKFxuICAgICAgICAgIDxTZWVrUHJldmlld1xuICAgICAgICAgICAgdGh1bWJuYWlsc1VybD17YWN0aXZlVGh1bWJuYWlsc1VybH1cbiAgICAgICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvY29tcG9uZW50cy5TZWVrYmFyPlxuICAgICksXG4gICAgZGlzcGxheVRpbWU6IDxjb21wb25lbnRzLkRpc3BsYXlUaW1lIHsuLi5wbGF5YmFja1RpbWV9IC8+LFxuICAgIGZ1bGxzY3JlZW5CdXR0b246IChcbiAgICAgIDxGdWxsc2NyZWVuQnV0dG9uXG4gICAgICAgIHZpZXdNb2RlPXt2aWV3TW9kZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gdG9nZ2xlRnVsbHNjcmVlbihjb250YWluZXJSZWYuY3VycmVudCl9XG4gICAgICAvPlxuICAgICksXG4gICAgdm9sdW1lQ29udHJvbDogd2lkdGggPj0gc2l6ZXNbJ3NtYWxsLWVtYmVkJ10gJiYgKFxuICAgICAgPGNvbXBvbmVudHMuVm9sdW1lQ29udHJvbFxuICAgICAgICB7Li4ue3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9fVxuICAgICAgICBvbk1vdXNlT3Zlcj17KCkgPT4gc2V0VXNlckZvY3VzKCd2b2x1bWUnKX1cbiAgICAgICAgb25Nb3VzZU91dD17KCkgPT4gc2V0VXNlckZvY3VzKCcnKX1cbiAgICAgICAgey4uLnNsb3RQcm9wcz8udm9sdW1lQ29udHJvbH1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBiYWNrSXRlbXM6IChcbiAgICAgIDxQbGF5UGFuZWwgYW5pbWF0aW9uPXt0YXJnZXRTdGF0ZS5hbmltYXRpb259IG9uQ2xpY2s9e29uQ2xpY2tCbGFua30gLz5cbiAgICApLFxuICB9XG4gIGNvbnN0IGNvbXBhdGliaWxpdHlDYXN0UHJvcHMgPSBjYXN0T3B0aW9ucyA9PT0gJ2NvbXBhdGlibGUnICYmIHtcbiAgICBzb3VyY2UsXG4gICAgdmFsdWVzOiB7dGl0bGUsIC4uLnNldHRpbmdzLnZhbHVlcywgLi4uaW50bCwgbW9kdWxlc0NvbmZpZ30sXG4gICAgb25Mb2FkOiBvbkNhc3QsXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXN0T3B0aW9ucyAmJiBjYXN0T3B0aW9ucyAhPT0gJ2NvbXBhdGlibGUnKSB7XG4gICAgICByZXR1cm4gbGlua0Nhc3Qoe3NvdXJjZSwgLi4uY2FzdE9wdGlvbnN9KVxuICAgIH0gLy8gVE9ETyBwbGF5bGlzdCwgYXVkaW8gLyBzdWJ0aXRsZSBzZXR0aW5nXG4gIH0sIFtzb3VyY2UsIGNhc3RPcHRpb25zLmNvbnRlbnRJZCwgY2FzdE9wdGlvbnMuY3VzdG9tRGF0YV0pXG4gIGNvbnN0IHNlbGVjdGVkQXVkaW9UcmFjayA9IHNldHRpbmdzLnByZWZlcnJlZD8uYXVkaW8gfHwgYXBwQXVkaW9UcmFja1xuICBjb25zdCBzZWxlY3RlZFRleHRUcmFjayA9IHNldHRpbmdzLnByZWZlcnJlZD8uc3VidGl0bGVzIHx8IGFwcFRleHRUcmFja1xuXG4gIHJldHVybiAoXG4gICAgPEludGxQcm92aWRlciB7Li4uaW50bH0+XG4gICAgICA8TGF5b3V0XG4gICAgICAgIHN0eWxlPXt7Li4uc3R5bGUsIGNzc1ZhcmlhYmxlc319XG4gICAgICAgIHR5cGU9e3VpVHlwZX1cbiAgICAgICAgZGlzcGxheT17bW9kZX1cbiAgICAgICAgY29udHJvbHNEaXNwbGF5PXtjb250cm9sc0Rpc3BsYXl9XG4gICAgICAgIHNpemU9e3NpemV9XG4gICAgICAgIHZpZGVvPXtcbiAgICAgICAgICA8VmlkZW9cbiAgICAgICAgICAgIHsuLi52aWRlb1Byb3BzfVxuICAgICAgICAgICAgdmlkZW9SZWY9e211bHRpUmVmKHZpZGVvUmVmLCB2aWRlb1Byb3BzLnZpZGVvUmVmKX1cbiAgICAgICAgICAgIHNvdXJjZT17XG4gICAgICAgICAgICAgIGNhc3RTdGF0ZSAhPT0gQ2FzdFN0YXRlLkNPTk5FQ1RFRCAmJlxuICAgICAgICAgICAgICBwbGF5YmFja1N0YXRlICE9PSAnZXJyb3InICYmXG4gICAgICAgICAgICAgIHNvdXJjZU92ZXJyaWRlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwbGF5YmFja1N0YXRlPXtkZXJpdmVkUGxheWJhY2tTdGF0ZX1cbiAgICAgICAgICAgIGN1cnJlbnRUaW1lPXt0YXJnZXRTdGF0ZS5jdXJyZW50VGltZX1cbiAgICAgICAgICAgIHsuLi4oYXBwVm9sdW1lID49IDAgJiYge3ZvbHVtZTogYXBwVm9sdW1lLCBtdXRlZDogYXBwVm9sdW1lIDw9IDB9KX1cbiAgICAgICAgICAgIHBsYXliYWNrUmF0ZT17c2V0dGluZ3MudmFsdWVzLnNwZWVkfVxuICAgICAgICAgICAgdmlkZW9SZXNvbHV0aW9uPXtxdWFsaXR5T3B0aW9uc31cbiAgICAgICAgICAgIGF1ZGlvVHJhY2s9e3NlbGVjdGVkQXVkaW9UcmFja31cbiAgICAgICAgICAgIHRleHRUcmFjaz17c2VsZWN0ZWRUZXh0VHJhY2t9XG4gICAgICAgICAgICBsb29wPXtzZXR0aW5ncy52YWx1ZXMubG9vcH1cbiAgICAgICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgICAgICBtb2R1bGVzQ29uZmlnPXttb2R1bGVzQ29uZmlnfVxuICAgICAgICAgICAgb25QbGF5bG9nRmlyZWQ9e29uUGxheWxvZ0ZpcmVkfVxuICAgICAgICAgICAgb25FcnJvcj17ZXJyb3JIYW5kbGVyfVxuICAgICAgICAgICAgb25QbGF5YmFja1N0YXRlQ2hhbmdlPXtoYW5kbGVQbGF5YmFja1N0YXRlQ2hhbmdlfVxuICAgICAgICAgICAgb25CbG9ja2VkQXV0b3BsYXk9e2Vycm9yID0+IG9uQmxvY2tlZEF1dG9wbGF5Py4oZXJyb3IpfVxuICAgICAgICAgICAgb25DYW5QbGF5PXtldmVudCA9PiB7XG4gICAgICAgICAgICAgIHVwZGF0ZVBsYXliYWNrVGltZShldmVudClcbiAgICAgICAgICAgICAgdmlkZW9Qcm9wcy5vbkNhblBsYXk/LihldmVudClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvblRpbWVVcGRhdGU9e3VwZGF0ZVBsYXliYWNrVGltZX1cbiAgICAgICAgICAgIG9uRHVyYXRpb25DaGFuZ2U9e3VwZGF0ZVBsYXliYWNrVGltZX1cbiAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPXtwbGF5ZXIgPT4ge1xuICAgICAgICAgICAgICBwbGF5ZXJSZWYuY3VycmVudCA9IHBsYXllclxuICAgICAgICAgICAgICBvblBsYXllckxvYWRlZD8uKHBsYXllcilcbiAgICAgICAgICAgICAgc3luY1ZvbHVtZSh2aWRlb1JlZi5jdXJyZW50LCB2aWRlb1Byb3BzLm11dGVkID8gMCA6IGFwcFZvbHVtZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICBjb250YWluZXJSZWY9e2VsZW1lbnQgPT4ge1xuICAgICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50ID0gZWxlbWVudFxuICAgICAgICAgIG9ic2VydmUoZWxlbWVudClcbiAgICAgICAgfX1cbiAgICAgICAgYmFja1JlZj17YWRDb250YWluZXJSZWZ9XG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgY2hhbm5lbFRpdGxlPXtjaGFubmVsVGl0bGV9XG4gICAgICAgIGJhY2tCdXR0b249e29uQmFjayAmJiA8QnV0dG9uIHN0YXJ0SWNvbj1cImJhY2tcIiBvbkNsaWNrPXtvbkJhY2t9IC8+fVxuICAgICAgICB7Li4uKGlzVXNlckFjdGl2ZSAmJiB1aUVsZW1lbnRzKX1cbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgb25Nb3VzZU1vdmU9e29uTW91c2VNb3ZlfVxuICAgICAgPlxuICAgICAgICA8TG9hZGluZ1NwaW5uZXIgYWN0aXZlPXt3YWl0aW5nfSAvPlxuICAgICAgICB7ZXJyb3JEYXRhICYmIDxFcnJvciBlcnJvcj17ZXJyb3JEYXRhfSBvbkJhY2s9e29uQmFja30gLz59XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgey8qIFRPRE8gc3luYyBDYXN0IGxhc3QgcGxheWVkIHRpbWUgYmFjayAqL31cbiAgICAgICAge2lzVXNlckFjdGl2ZSAmJiAoXG4gICAgICAgICAgPGNvbXBvbmVudHMuQ2FzdFVpXG4gICAgICAgICAgICBvbkJhY2s9e29uQmFja31cbiAgICAgICAgICAgIG9uU3RhdGVDaGFuZ2U9e3NldENhc3RTdGF0ZX1cbiAgICAgICAgICAgIG9uTG9hZD17b25DYXN0fVxuICAgICAgICAgICAgey4uLmNvbXBhdGliaWxpdHlDYXN0UHJvcHN9XG4gICAgICAgICAgICB7Li4uc2xvdFByb3BzLmNhc3RVaX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmICggLy8gVE9ETzogRGVzaWduIDxFeHRlbnN0aW9uIC8+IGZsYWdcbiAgICAgICAgICA8Y29tcG9uZW50cy5TZXR0aW5nc1xuICAgICAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICAgICAgc2VjdGlvbnM9e3NldHRpbmdzLnNlY3Rpb25zfVxuICAgICAgICAgICAgLy8gVE9ETyBoYXNCb3R0b21QYW5lbCBib3R0b206IDhlbVxuICAgICAgICAgICAgb3Blbj17dXNlckZvY3VzID09PSAnc2V0dGluZ3MnfVxuICAgICAgICAgICAgdmFsdWVzPXtzZXR0aW5ncy52YWx1ZXN9XG4gICAgICAgICAgICBvbk9wZW49e29wZW5TZXR0aW5nc31cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt1aUhhbmRsZXJzLm9uQ2hhbmdlU2V0dGluZ3N9XG4gICAgICAgICAgICB7Li4uc2xvdFByb3BzPy5zZXR0aW5nc31cbiAgICAgICAgICAgIG9uQ2xvc2U9e3VpSGFuZGxlcnMub25DbG9zZVNldHRpbmdzfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIDxMYW5ndWFnZVNldHRpbmdzXG4gICAgICAgICAgdWlUeXBlPXt1aVR5cGV9XG4gICAgICAgICAgZ2V0UGxheWVyPXsoKSA9PiBwbGF5ZXJSZWYuY3VycmVudH1cbiAgICAgICAgICBvbkNoYW5nZT17KF9ldmVudCwgaXRlbSkgPT5cbiAgICAgICAgICAgIHVpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5ncyh7XG4gICAgICAgICAgICAgIG5hbWU6IGl0ZW0udHlwZSxcbiAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXG4gICAgICAgICAgICAgIGtlZXBPcGVuOiB0cnVlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgey4uLnNsb3RQcm9wcy5sYW5ndWFnZVNldHRpbmdzfVxuICAgICAgICAvPlxuICAgICAgICA8QmFja2Ryb3Agb3Blbj17IXBsYXliYWNrU3RhdGUgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2xvYWRpbmcnfT5cbiAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgPC9CYWNrZHJvcD5cbiAgICAgIDwvTGF5b3V0PlxuICAgIDwvSW50bFByb3ZpZGVyPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IFByZW1pdW1QbGF5ZXJcbiJdfQ== */")
8805
8805
  };
8806
8806
 
8807
8807
  const LanguageSettings = ({
@@ -9013,6 +9013,15 @@ const PremiumPlayer = ({
9013
9013
  });
9014
9014
  };
9015
9015
 
9016
+ const dismissPanels = () => {
9017
+ setUserFocus('');
9018
+
9019
+ if (refs.current.closeMenu) {
9020
+ refs.current.closeMenu();
9021
+ refs.current.closeMenu = undefined;
9022
+ }
9023
+ };
9024
+
9016
9025
  const lastState = useRef(playbackState);
9017
9026
 
9018
9027
  const handlePlaybackStateChange = (event, state) => {
@@ -9031,6 +9040,7 @@ const PremiumPlayer = ({
9031
9040
  }
9032
9041
 
9033
9042
  if (state === 'ended') {
9043
+ dismissPanels();
9034
9044
  togglePlay('paused');
9035
9045
  }
9036
9046
 
@@ -9113,16 +9123,11 @@ const PremiumPlayer = ({
9113
9123
  });
9114
9124
  const mode = userFocus === 'seekbar' ? 'hidden' : controls.autohide ? autoHideMode : controls ? 'shown' : 'hidden';
9115
9125
  const controlsDisplay = userFocus === 'seekbar' ? 'seekbar-only' : controls === 'title-only' || playbackState === 'emptied' ? 'hidden' : mode;
9116
- const shouldHidePanels = (controls === 'no-panel' || controlsDisplay === 'hidden' || playbackState === 'ended') && userFocus;
9126
+ const shouldHidePanels = (controls === 'no-panel' || controlsDisplay === 'hidden') && userFocus;
9117
9127
  const havePlayPanel = !blocking && uiType === 'desktop' && !waiting && !/volume|''/.test(userFocus) && !/title-only|no-panel/.test(controls) && (controls.autohide || mode === 'shown');
9118
9128
  useEffect(() => {
9119
9129
  if (shouldHidePanels) {
9120
- setUserFocus('');
9121
-
9122
- if (refs.current.closeMenu) {
9123
- refs.current.closeMenu();
9124
- refs.current.closeMenu = undefined;
9125
- }
9130
+ dismissPanels();
9126
9131
  }
9127
9132
  }, [shouldHidePanels]);
9128
9133
  useEffect(() => on(containerRef.current, 'focus-menu', event => {
package/dist/modules.mjs CHANGED
@@ -991,7 +991,7 @@ const mapLogEvents$1 = ({
991
991
  function getVersion() {
992
992
  try {
993
993
  // eslint-disable-next-line no-undef
994
- return "2.25.0-canary.23";
994
+ return "2.25.0-canary.24";
995
995
  } catch (e) {
996
996
  return undefined;
997
997
  }
@@ -1413,7 +1413,7 @@ const createAnalytics = ({
1413
1413
  const logTarget = mapLogEvents({
1414
1414
  video,
1415
1415
  playerName: 'shaka',
1416
- version: "2.25.0-canary.23"
1416
+ version: "2.25.0-canary.24"
1417
1417
  });
1418
1418
  logTarget.all((type, data) => {
1419
1419
  const payload = {
package/dist/react.mjs CHANGED
@@ -2419,7 +2419,7 @@ function convertToSeconds(timeString) {
2419
2419
  function getVersion() {
2420
2420
  try {
2421
2421
  // eslint-disable-next-line no-undef
2422
- return "2.25.0-canary.23";
2422
+ return "2.25.0-canary.24";
2423
2423
  } catch (e) {
2424
2424
  return undefined;
2425
2425
  }
@@ -9314,8 +9314,8 @@ const shouldPause = ({
9314
9314
 
9315
9315
 
9316
9316
  const menuClasses = {
9317
- default: /*#__PURE__*/css$1(LanguageMenu.styles, process.env.NODE_ENV === "production" ? "" : ";label:default;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUVXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtpc0Rlc2t0b3B9IGZyb20gJ3V0aWwvZW52aXJvbm1lbnQnXG5pbXBvcnQgbXVsdGlSZWYgZnJvbSAndXRpbC9tdWx0aVJlZidcbmltcG9ydCB7b25WaWV3TW9kZUNoYW5nZSwgdG9nZ2xlRnVsbHNjcmVlbn0gZnJvbSAndXRpbC92aWV3TW9kZXMnXG5pbXBvcnQge3VzZUF1dG9IaWRlfSBmcm9tICdob29rcydcbmltcG9ydCB7SW50bFByb3ZpZGVyfSBmcm9tICdjb250ZXh0L0kxOG4nXG5pbXBvcnQge2dldE1lZGlhVGltZSwgaXNCdWZmZXJlZH0gZnJvbSAncGxheWVyQ29yZS9tZWRpYUJpbmRpbmdzJ1xuaW1wb3J0IEVycm9yIGZyb20gJ3BsYXllclVpL0Vycm9yJ1xuaW1wb3J0IExheW91dCBmcm9tICdwbGF5ZXJVaS9EZWZhdWx0TGF5b3V0J1xuaW1wb3J0IHtcbiAgQnV0dG9uLFxuICBMaXZlQnV0dG9uLFxuICBGdWxsc2NyZWVuQnV0dG9uLFxuICBQbGF5QnV0dG9uLFxuICBGb3J3YXJkQnV0dG9uLFxufSBmcm9tICdwbGF5ZXJVaS9idXR0b25zJ1xuaW1wb3J0IFNlZWtiYXIgZnJvbSAncGxheWVyVWkvU2Vla2JhcidcbmltcG9ydCBEaXNwbGF5VGltZSBmcm9tICdwbGF5ZXJVaS9EaXNwbGF5VGltZSdcbmltcG9ydCBMb2FkaW5nU3Bpbm5lciBmcm9tICdwbGF5ZXJVaS9Mb2FkaW5nU3Bpbm5lcidcbmltcG9ydCBCYWNrZHJvcCBmcm9tICdwbGF5ZXJVaS9CYWNrZHJvcCdcbmltcG9ydCBTZXR0aW5ncyBmcm9tICdwbGF5ZXJVaS9TZXR0aW5ncydcbmltcG9ydCBPdmVybGF5UGFuZWwgZnJvbSAncGxheWVyVWkvT3ZlcmxheVBhbmVsJ1xuaW1wb3J0IExhbmd1YWdlTWVudSBmcm9tICdwbGF5ZXJVaS9MYW5ndWFnZU1lbnUnXG5pbXBvcnQgUGxheVBhbmVsIGZyb20gJ3BsYXllclVpL1BsYXlQYW5lJ1xuaW1wb3J0IFZvbHVtZUNvbnRyb2wgZnJvbSAnY29tcG9uZW50L1ZvbHVtZUNvbnRyb2wnXG5pbXBvcnQgQ2FzdFVpIGZyb20gJ2Nhc3QvQ2FzdFVpJ1xuaW1wb3J0IHtsaW5rQ2FzdH0gZnJvbSAnY2FzdC9mcmFtZXdvcmsnXG5pbXBvcnQge0Nhc3RTdGF0ZX0gZnJvbSAnRW51bSdcbmltcG9ydCB7ZGlzcGF0Y2hDaGFwdGVyRXZlbnRzfSBmcm9tICcuL3RpbWVsaW5lJ1xuaW1wb3J0IFZpZGVvIGZyb20gJy4uL1ZpZGVvJ1xuaW1wb3J0IHtnZXRMYW5ndWFnZU9wdGlvbnMsIGdldFF1YWxpdHlPcHRpb25zLCBnZXRTZXR0aW5nc0RhdGF9IGZyb20gJy4vc2V0dGluZ3MnXG5pbXBvcnQge2xpbmtNZWRpYVZvbHVtZSwgc3luY1ZvbHVtZX0gZnJvbSAnLi92b2x1bWUnXG5pbXBvcnQgU2Vla1ByZXZpZXcgZnJvbSAnLi9TZWVrUHJldmlldydcblxuY29uc3Qgc2l6ZXMgPSB7XG4gICdzbWFsbC1lbWJlZCc6IDIwMCxcbiAgZW1iZWQ6IDQwMCxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6IDYwMCxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiA5MDAsXG4gIGRlc2t0b3A6IDEyMDAsXG59XG5cbmNvbnN0IHVzZUxpbmtTdGF0ZSA9IChyZXF1ZXN0LCBkZXBlbmRlbmNpZXMgPSBbXSkgPT4ge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXF1ZXN0KHNldFN0YXRlKVxuICB9LCBkZXBlbmRlbmNpZXMpXG4gIHJldHVybiBzdGF0ZVxufVxuXG5jb25zdCBmbGlwU3RhdGUgPSBzdGF0ZSA9PiAoc3RhdGUgPT09ICdwbGF5aW5nJyA/ICdwYXVzZWQnIDogJ3BsYXlpbmcnKVxuXG4vLyBGSVhNRTogdG9vIGZldyBsaW5lcyB0byBzcGxpdCBhIGZpbGUsIGxvb2tpbmcgYSBiZXR0ZXIgcGxhY2VcbmNvbnN0IGdldFRodW1ibmFpbHNVcmwgPSBzb3VyY2UgPT5cbiAgW10uY29uY2F0KHNvdXJjZSkuZmluZChpdGVtID0+IGl0ZW0udHlwZSA9PT0gJ3RodW1ibmFpbCcpPy5zcmNcblxuY29uc3QgZGVmYXVsdFNldHRpbmdzID0ge31cblxuY29uc3Qgc2hvdWxkUGF1c2UgPSAoe3VzZXJGb2N1cywgdWlUeXBlfSkgPT5cbiAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgL3NldHRpbmdzfGNoYXB0ZXItbGlzdC8udGVzdCh1c2VyRm9jdXMpKSB8fFxuICAvYmxvY2tpbmd8c2Vla2JhcnxzaGFyZS1pbm5lci8udGVzdCh1c2VyRm9jdXMpXG5cbi8vIFRPRE8gZXh0cmFjdCB0byBzb21ld2hlcmUgZWxzZVxuY29uc3QgbWVudUNsYXNzZXMgPSB7XG4gIGRlZmF1bHQ6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzKSxcbiAgZGVza3RvcDogY3NzKExhbmd1YWdlTWVudS5zdHlsZXMsIExhbmd1YWdlTWVudS5kZXNrdG9wU3R5bGVzKSxcbn1cblxuY29uc3QgTGFuZ3VhZ2VTZXR0aW5ncyA9ICh7XG4gIHVpVHlwZSxcbiAgYXVkaW9UcmFja3MgPSBbXSxcbiAgdGV4dFRyYWNrcyA9IFtdLFxuICBnZXRQbGF5ZXIsXG4gIG9uQ2hhbmdlLFxuICBzbG90cyA9IHtMYW5ndWFnZU1lbnV9LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnZXRMYW5ndWFnZU9wdGlvbnMoZ2V0UGxheWVyKCksIHthdWRpb1RyYWNrcywgdGV4dFRyYWNrc30pXG4gIHJldHVybiAoXG4gICAgYXVkaW9UcmFja3MubGVuZ3RoID4gMCAmJlxuICAgIHRleHRUcmFja3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICA8T3ZlcmxheVBhbmVsXG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICB0aXRsZT1cIuWtl+W5leODu+mfs+WjsOOCkuWIh+OCiuabv+OBiOOCi1wiXG4gICAgICAgIGJ1dHRvbkljb249XCJzdWJ0aXRsZVwiXG4gICAgICA+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIGF1ZGlvVHJhY2s6IGFwcEF1ZGlvVHJhY2ssXG4gIHRleHRUcmFjazogYXBwVGV4dFRyYWNrLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgICAgb3RoZXJTZWN0aW9uczogYXBwU2V0dGluZ3Muc2VjdGlvbnMsXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHtwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLCB2YWx1ZXMsIHNlY3Rpb25zfVxuICAgIH0pXG4gIH1cbiAgY29uc3QgbGFzdFN0YXRlID0gdXNlUmVmKHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGhhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2UgPSAoZXZlbnQsIHN0YXRlKSA9PiB7XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnZXJyb3InKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgb25QbGF5YmFja1N0YXRlQ2hhbmdlPy4oZXZlbnQsIHN0YXRlKVxuICAgIC8vIHByZXZpb3VzbHkgVUkgcGxheWJhY2sgc3RhdGUgd2FzIHN5bmNlZCBvbmx5IHdoZW5cbiAgICAvLyBleGl0aW5nIGlPUyB2aWRlbyBvbmx5IGZ1bGxzY3JlZW4od2Via2l0ZW5kZnVsbHNjcmVlbilcbiAgICBpZiAoXG4gICAgICAvcGxheWluZ3xwYXVzZWQvLnRlc3Qoc3RhdGUpICYmXG4gICAgICAhKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpICYmXG4gICAgICAhc2hvdWxkUGF1c2Uoe3VzZXJGb2N1cywgdWlUeXBlfSlcbiAgICApIHtcbiAgICAgIHRvZ2dsZVBsYXkoc3RhdGUpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2VuZGVkJykge1xuICAgICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnbG9hZGluZycgJiYgbGFzdFN0YXRlLmN1cnJlbnQgIT09ICdpbml0Jykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0b2dnbGVQbGF5KCdwbGF5aW5nJyksIDEpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ3BsYXlpbmcnKSB7XG4gICAgICBzZXRJc1VzZXJBY3RpdmUodHJ1ZSlcbiAgICB9XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnbG9hZGluZycpIHtcbiAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgIH1cbiAgICBsYXN0U3RhdGUuY3VycmVudCA9IHN0YXRlXG4gICAgc2V0UGxheWJhY2tTdGF0ZShzdGF0ZSlcbiAgfVxuXG4gIGNvbnN0IGNoYW5nZVNldHRpbmdzID0gKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59ID0ge30pID0+IHtcbiAgICAvLyBUT0RPIGNvbnNpZGVyIG1lcmdlIGludG8gdXNlUmVkdWNlcj9cbiAgICBvbkNoYW5nZVNldHRpbmdzPy4oe25hbWUsIHZhbHVlfSlcbiAgICBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSlcbiAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAuLi5jdXJyZW50LFxuICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIFtuYW1lXTogdmFsdWV9LFxuICAgICAgcHJlZmVycmVkOiB7Li4uY3VycmVudC5wcmVmZXJyZWQsIFtuYW1lXTogdmFsdWV9LFxuICAgIH0pKVxuICAgIGlmICgha2VlcE9wZW4pIHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICB9XG4gIH1cbiAgY29uc3Qgb3BlblNldHRpbmdzID0gZXZlbnQgPT4ge1xuICAgIGNvbnN0IGFuaW1hdGlvbkZyYW1lID1cbiAgICAgIHVzZXJGb2N1cyAhPT0gJ3NldHRpbmdzJyAmJlxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgb25PcGVuU2V0dGluZ3M/LihldmVudCwgc2V0dGluZ3MpXG4gICAgICAgIC8vIEluIGlPUyBTYWZhcmksIHdlIG5lZWQgdG8gdXBkYXRlIHNldHRpbmdzIGRhdGFcbiAgICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgICB9KVxuICAgIHNldFVzZXJGb2N1cyhjdXJyZW50ID0+IChjdXJyZW50ID09PSAnc2V0dGluZ3MnID8gJycgOiAnc2V0dGluZ3MnKSlcbiAgICByZXR1cm4gYW5pbWF0aW9uRnJhbWVcbiAgfVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1JhdGUgPiAwKSB7XG4gICAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBzcGVlZDogYXBwUGxheWJhY2tSYXRlfSxcbiAgICAgIH0pKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrUmF0ZV0pXG5cbiAgY29uc3QgcXVhbGl0eU9wdGlvbnMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFF1YWxpdHlPcHRpb25zKHNldHRpbmdzKSxcbiAgICBbc2V0dGluZ3MudmFsdWVzLnF1YWxpdHldXG4gIClcbiAgY29uc3Qgdmlld01vZGUgPSB1c2VMaW5rU3RhdGUodXBkYXRlID0+XG4gICAgb25WaWV3TW9kZUNoYW5nZSh2aWRlb1JlZi5jdXJyZW50LCB1cGRhdGUpXG4gIClcbiAgY29uc3Qgc291cmNlT3ZlcnJpZGUgPSB1c2VMaW5rU3RhdGUoXG4gICAgYXN5bmMgdXBkYXRlID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICAgIHNvdXJjZSAmJiAoYXdhaXQgcXVhbGl0eS5yZXdyaXRlTWFuaWZlc3Q/Lihzb3VyY2UsIHF1YWxpdHlPcHRpb25zKSlcbiAgICAgIHVwZGF0ZShyZXN1bHQgfHwgc291cmNlKVxuICAgIH0sXG4gICAgW3NvdXJjZSwgcXVhbGl0eU9wdGlvbnNdXG4gIClcbiAgY29uc3Qgd2FpdGluZyA9IC9lbXB0aWVkfGxvYWRpbmd8YnVmZmVyaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGFjdGl2ZVBsYXliYWNrID1cbiAgICBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ3dhaXRpbmcnXG4gIGNvbnN0IHtcbiAgICBtb2RlOiBhdXRvSGlkZU1vZGUsXG4gICAgb25DbGljayxcbiAgICBvbk1vdXNlTW92ZSxcbiAgfSA9IHVzZUF1dG9IaWRlKHtcbiAgICBwaW5uZWQ6ICFjb250cm9scy5hdXRvaGlkZSB8fCB3YWl0aW5nIHx8ICFhY3RpdmVQbGF5YmFjayB8fCB1c2VyRm9jdXMsXG4gICAgdGFwVG9IaWRlOiB1aVR5cGUgPT09ICdtb2JpbGUnLFxuICAgIGhpZGVUaW1lTXM6IGNvbnRyb2xzLmF1dG9oaWRlLFxuICB9KVxuICBjb25zdCBtb2RlID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBjb250cm9scy5hdXRvaGlkZVxuICAgICAgPyBhdXRvSGlkZU1vZGVcbiAgICAgIDogY29udHJvbHNcbiAgICAgID8gJ3Nob3duJ1xuICAgICAgOiAnaGlkZGVuJ1xuICBjb25zdCBjb250cm9sc0Rpc3BsYXkgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdzZWVrYmFyLW9ubHknXG4gICAgICA6IGNvbnRyb2xzID09PSAndGl0bGUtb25seScgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2VtcHRpZWQnXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IG1vZGVcbiAgY29uc3Qgc2hvdWxkSGlkZVBhbmVscyA9XG4gICAgKGNvbnRyb2xzID09PSAnbm8tcGFuZWwnIHx8XG4gICAgICBjb250cm9sc0Rpc3BsYXkgPT09ICdoaWRkZW4nIHx8XG4gICAgICBwbGF5YmFja1N0YXRlID09PSAnZW5kZWQnKSAmJlxuICAgIHVzZXJGb2N1c1xuICBjb25zdCBoYXZlUGxheVBhbmVsID1cbiAgICAhYmxvY2tpbmcgJiZcbiAgICB1aVR5cGUgPT09ICdkZXNrdG9wJyAmJlxuICAgICF3YWl0aW5nICYmXG4gICAgIS92b2x1bWV8JycvLnRlc3QodXNlckZvY3VzKSAmJlxuICAgICEvdGl0bGUtb25seXxuby1wYW5lbC8udGVzdChjb250cm9scykgJiZcbiAgICAoY29udHJvbHMuYXV0b2hpZGUgfHwgbW9kZSA9PT0gJ3Nob3duJylcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRIaWRlUGFuZWxzKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBpZiAocmVmcy5jdXJyZW50LmNsb3NlTWVudSkge1xuICAgICAgICByZWZzLmN1cnJlbnQuY2xvc2VNZW51KClcbiAgICAgICAgcmVmcy5jdXJyZW50LmNsb3NlTWVudSA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cbiAgfSwgW3Nob3VsZEhpZGVQYW5lbHNdKVxuICB1c2VFZmZlY3QoKCkgPT4gXG4gICAgb24oY29udGFpbmVyUmVmLmN1cnJlbnQsICdmb2N1cy1tZW51JywgZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50LmRldGFpbD8uc3RhdHVzID09PSAnb3BlbicpIHtcbiAgICAgICAgc2V0VXNlckZvY3VzKCdtZW51JylcbiAgICAgICAgcmVmcy5jdXJyZW50LmNsb3NlTWVudSA9ICgpID0+IGV2ZW50LmRldGFpbC5jbG9zZU1lbnU/LigpXG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQuZGV0YWlsPy5zdGF0dXMgPT09ICdjbG9zZWQnKSB7XG4gICAgICAgIHNldFVzZXJGb2N1cyhjdXJyZW50ID0+IChjdXJyZW50ID09PSAnbWVudScgPyAnJyA6IGN1cnJlbnQpKVxuICAgICAgfVxuICAgIH0pXG4gICwgW10pXG4gIGNvbnN0IHtzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfSA9IGxpbmtNZWRpYVZvbHVtZSgoKSA9PiAoe1xuICAgIHZpZGVvOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgIGdldFBsYXllcjogKCkgPT4gcGxheWVyUmVmLmN1cnJlbnQsXG4gIH0pKVxuICBjb25zdCBjaGFuZ2VQcmV2aW91cyA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZVByZXZpb3VzKGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cbiAgY29uc3QgY2hhbmdlTmV4dCA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZU5leHQoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuXG4gIHVzZUVmZmVjdChmZXRjaFNldHRpbmdzLCBbYXBwU2V0dGluZ3NdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRoZSBhZENvbnRhaW5lciBzaG91bGQgYmUgc2V0IGJlZm9yZSBgbG9hZGAgYmVjYXVzZSBJbWFEYWkubG9hZCBuZWVkcyBpdC5cbiAgICBwbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHBsdWdpbi5zZXRBZENvbnRhaW5lcj8uKGFkQ29udGFpbmVyUmVmLmN1cnJlbnQpKVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIGRpc3BhdGNoQ2hhcHRlckV2ZW50cyh7XG4gICAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgICBjaGFwdGVycyxcbiAgICAgICAgZ2V0VGltZTogKCkgPT4gdmlkZW9SZWYuY3VycmVudC5jdXJyZW50VGltZSxcbiAgICAgIH0pLFxuICAgIFtjaGFwdGVyc11cbiAgKVxuXG4gIGNvbnN0IGlzRW5kID0gcGxheWJhY2tTdGF0ZSA9PT0gJ2VuZGVkJ1xuICBjb25zdCBjYW5TZWVrID0gIWlzRW5kICYmIHBsYXliYWNrVGltZS5kdXJhdGlvbiA+IDBcbiAgY29uc3QgZGVyaXZlZFBsYXliYWNrU3RhdGUgPVxuICAgICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSB8fCBzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICAgPyAncGF1c2VkJ1xuICAgICAgOiB0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlXG4gIGNvbnN0IGFjdGl2ZVRodW1ibmFpbHNVcmwgPVxuICAgICghdXNlckZvY3VzIHx8IHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInKSAmJlxuICAgIChnZXRUaHVtYm5haWxzVXJsKHNvdXJjZSkgfHwgdGh1bWJuYWlsc1VybClcbiAgY29uc3QgY3NzVmFyaWFibGVzID0ge1xuICAgICctLXBsYXlpbmcnOiBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgPyAnMScgOiAnMCcsXG4gIH1cbiAgY29uc3Qgb25SZXdpbmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgY2FuU2VlayAmJlxuICAgICgoKSA9PiBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSAtIDEwLCAncmV3aW5kJykpXG4gIGNvbnN0IG9uRm9yd2FyZCA9XG4gICAgKCFpc0xpdmUgfHwgcGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMCkgJiZcbiAgICBjYW5TZWVrICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lICsgMTAsICdmb3J3YXJkJykpXG4gIGNvbnN0IG9uQ2xpY2tCbGFuayA9XG4gICAgaGF2ZVBsYXlQYW5lbCAmJiAoKCkgPT4gdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSkpXG5cbiAgY29uc3QgdWlIYW5kbGVycyA9IHtcbiAgICBvblBsYXk6ICgpID0+IHtcbiAgICAgIHRvZ2dsZVBsYXkoJycsIHt0cmlnZ2VyZWRCeTogJ3VzZXItYWN0aW9uJ30pXG4gICAgICBzZXRJc1VzZXJBY3RpdmUodHJ1ZSlcbiAgICB9LFxuICAgIG9uQ2xpY2tMaXZlOiBpc0xpdmUgJiYgKCgpID0+IHNldFRhcmdldFRpbWUoMCwgJ3NlZWtUb0xpdmUnKSksXG4gICAgb25DbGlja1NlZWtiYXI6ICgpID0+IHtcbiAgICAgIHJlZnMuY3VycmVudC5kZWZlcmVkU2Vla0ZvY3VzID0gc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4gc2V0VXNlckZvY3VzKCdzZWVrYmFyJyksXG4gICAgICAgIDY2XG4gICAgICApXG4gICAgfSxcbiAgICBvblNlZWs6IHRpbWUgPT4ge1xuICAgICAgc2V0VGFyZ2V0VGltZSh0aW1lLCAnc2VlaycpXG4gICAgICBjbGVhclRpbWVvdXQocmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHNldFVzZXJGb2N1cygnJyksIDY2KVxuICAgIH0sXG4gICAgb25DaGFuZ2VTZXR0aW5nczogKHtuYW1lLCB2YWx1ZSwga2VlcE9wZW59KSA9PlxuICAgICAgY2hhbmdlU2V0dGluZ3MobmFtZSwgdmFsdWUsIHtrZWVwT3Blbn0pLFxuICAgIG9uQ2xvc2VTZXR0aW5nczogZXZlbnQgPT4ge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgICAgc2xvdFByb3BzPy5zZXR0aW5ncz8ub25DbG9zZT8uKGV2ZW50KVxuICAgIH0sXG4gIH1cblxuICBjb25zdCB1aUVsZW1lbnRzID0ge1xuICAgIGxpdmVCdXR0b246IHVpSGFuZGxlcnMub25DbGlja0xpdmUgJiYgKFxuICAgICAgPGNvbXBvbmVudHMuTGl2ZUJ1dHRvblxuICAgICAgICB1c2luZ1N0YXJ0T3Zlcj17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMH1cbiAgICAgICAgb25DbGljaz17dWlIYW5kbGVycy5vbkNsaWNrTGl2ZX1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBjb250cm9sQnV0dG9uczoge1xuICAgICAgcGxheUJ1dHRvbjogKFxuICAgICAgICA8UGxheUJ1dHRvblxuICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgIGVuZGVkPXtpc0VuZH1cbiAgICAgICAgICBoaWRkZW49e1xuICAgICAgICAgICAgdWlUeXBlID09PSAnbW9iaWxlJyAmJiAod2FpdGluZyB8fCAvbG9hZGluZy8udGVzdChwbGF5YmFja1N0YXRlKSlcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyaWFudD17IWlzVXNlckFjdGl2ZSAmJiAnZmlyc3RwbGF5J31cbiAgICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uUGxheX1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICByZXdpbmRCdXR0b246IG9uUmV3aW5kICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cInJld2luZDEwXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuUkVXSU5EXCJcbiAgICAgICAgICBkaXNhYmxlZD17aXNFbmR9XG4gICAgICAgICAgb25DbGljaz17b25SZXdpbmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgZm9yd2FyZEJ1dHRvbjogb25Gb3J3YXJkICYmIChcbiAgICAgICAgPEZvcndhcmRCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJmb3J3YXJkMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5GT1JXQVJEXCJcbiAgICAgICAgICBkaXNhYmxlZD17IWNhblNlZWt9XG4gICAgICAgICAgb25DbGljaz17b25Gb3J3YXJkfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIG5leHRFcGlzb2RlQnV0dG9uOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJuZXh0XCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuTkVYVFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZU5leHR9XG4gICAgICAgICAgb25DbGljaz17Y2hhbmdlTmV4dH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBwcmV2aW91c0VwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cInByZXZpb3VzXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuUFJFVklPVVNcIlxuICAgICAgICAgIGRpc2FibGVkPXshb25DaGFuZ2VQcmV2aW91c31cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VQcmV2aW91c31cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgfSxcbiAgICBzZWVrYmFyOiAoXG4gICAgICA8Y29tcG9uZW50cy5TZWVrYmFyXG4gICAgICAgIHN0eWxlPXsvdm9sdW1lLy50ZXN0KHVzZXJGb2N1cykgJiYge29wYWNpdHk6ICcwJ319XG4gICAgICAgIHN0YXJ0VGltZT17cGxheWJhY2tUaW1lLnN0YXJ0VGltZX1cbiAgICAgICAgY3VycmVudFRpbWU9e3BsYXliYWNrVGltZS5jdXJyZW50VGltZX1cbiAgICAgICAgYnVmZmVyVGltZT17cGxheWJhY2tUaW1lLmJ1ZmZlclRpbWV9XG4gICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgIGNoYXB0ZXJzPXtjaGFwdGVyc31cbiAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DbGlja1NlZWtiYXJ9XG4gICAgICAgIG9uQ2hhbmdlQ29tbWl0dGVkPXt1aUhhbmRsZXJzLm9uU2Vla31cbiAgICAgICAgbWFya3M9e21hcmtzfVxuICAgICAgICBwbHVnaW5zPXtwbHVnaW5zfVxuICAgICAgICB7Li4uc2xvdFByb3BzLnNlZWtiYXJ9XG4gICAgICA+XG4gICAgICAgIHthY3RpdmVUaHVtYm5haWxzVXJsICYmIChcbiAgICAgICAgICA8U2Vla1ByZXZpZXdcbiAgICAgICAgICAgIHRodW1ibmFpbHNVcmw9e2FjdGl2ZVRodW1ibmFpbHNVcmx9XG4gICAgICAgICAgICBkdXJhdGlvbj17cGxheWJhY2tUaW1lLmR1cmF0aW9ufVxuICAgICAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L2NvbXBvbmVudHMuU2Vla2Jhcj5cbiAgICApLFxuICAgIGRpc3BsYXlUaW1lOiA8Y29tcG9uZW50cy5EaXNwbGF5VGltZSB7Li4ucGxheWJhY2tUaW1lfSAvPixcbiAgICBmdWxsc2NyZWVuQnV0dG9uOiAoXG4gICAgICA8RnVsbHNjcmVlbkJ1dHRvblxuICAgICAgICB2aWV3TW9kZT17dmlld01vZGV9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHRvZ2dsZUZ1bGxzY3JlZW4oY29udGFpbmVyUmVmLmN1cnJlbnQpfVxuICAgICAgLz5cbiAgICApLFxuICAgIHZvbHVtZUNvbnRyb2w6IHdpZHRoID49IHNpemVzWydzbWFsbC1lbWJlZCddICYmIChcbiAgICAgIDxjb21wb25lbnRzLlZvbHVtZUNvbnRyb2xcbiAgICAgICAgey4uLntzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfX1cbiAgICAgICAgb25Nb3VzZU92ZXI9eygpID0+IHNldFVzZXJGb2N1cygndm9sdW1lJyl9XG4gICAgICAgIG9uTW91c2VPdXQ9eygpID0+IHNldFVzZXJGb2N1cygnJyl9XG4gICAgICAgIHsuLi5zbG90UHJvcHM/LnZvbHVtZUNvbnRyb2x9XG4gICAgICAvPlxuICAgICksXG4gICAgYmFja0l0ZW1zOiAoXG4gICAgICA8UGxheVBhbmVsIGFuaW1hdGlvbj17dGFyZ2V0U3RhdGUuYW5pbWF0aW9ufSBvbkNsaWNrPXtvbkNsaWNrQmxhbmt9IC8+XG4gICAgKSxcbiAgfVxuICBjb25zdCBjb21wYXRpYmlsaXR5Q2FzdFByb3BzID0gY2FzdE9wdGlvbnMgPT09ICdjb21wYXRpYmxlJyAmJiB7XG4gICAgc291cmNlLFxuICAgIHZhbHVlczoge3RpdGxlLCAuLi5zZXR0aW5ncy52YWx1ZXMsIC4uLmludGwsIG1vZHVsZXNDb25maWd9LFxuICAgIG9uTG9hZDogb25DYXN0LFxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2FzdE9wdGlvbnMgJiYgY2FzdE9wdGlvbnMgIT09ICdjb21wYXRpYmxlJykge1xuICAgICAgcmV0dXJuIGxpbmtDYXN0KHtzb3VyY2UsIC4uLmNhc3RPcHRpb25zfSlcbiAgICB9IC8vIFRPRE8gcGxheWxpc3QsIGF1ZGlvIC8gc3VidGl0bGUgc2V0dGluZ1xuICB9LCBbc291cmNlLCBjYXN0T3B0aW9ucy5jb250ZW50SWQsIGNhc3RPcHRpb25zLmN1c3RvbURhdGFdKVxuICBjb25zdCBzZWxlY3RlZEF1ZGlvVHJhY2sgPSBzZXR0aW5ncy5wcmVmZXJyZWQ/LmF1ZGlvIHx8IGFwcEF1ZGlvVHJhY2tcbiAgY29uc3Qgc2VsZWN0ZWRUZXh0VHJhY2sgPSBzZXR0aW5ncy5wcmVmZXJyZWQ/LnN1YnRpdGxlcyB8fCBhcHBUZXh0VHJhY2tcblxuICByZXR1cm4gKFxuICAgIDxJbnRsUHJvdmlkZXIgey4uLmludGx9PlxuICAgICAgPExheW91dFxuICAgICAgICBzdHlsZT17ey4uLnN0eWxlLCBjc3NWYXJpYWJsZXN9fVxuICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgIGRpc3BsYXk9e21vZGV9XG4gICAgICAgIGNvbnRyb2xzRGlzcGxheT17Y29udHJvbHNEaXNwbGF5fVxuICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICB2aWRlbz17XG4gICAgICAgICAgPFZpZGVvXG4gICAgICAgICAgICB7Li4udmlkZW9Qcm9wc31cbiAgICAgICAgICAgIHZpZGVvUmVmPXttdWx0aVJlZih2aWRlb1JlZiwgdmlkZW9Qcm9wcy52aWRlb1JlZil9XG4gICAgICAgICAgICBzb3VyY2U9e1xuICAgICAgICAgICAgICBjYXN0U3RhdGUgIT09IENhc3RTdGF0ZS5DT05ORUNURUQgJiZcbiAgICAgICAgICAgICAgcGxheWJhY2tTdGF0ZSAhPT0gJ2Vycm9yJyAmJlxuICAgICAgICAgICAgICBzb3VyY2VPdmVycmlkZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgICBjdXJyZW50VGltZT17dGFyZ2V0U3RhdGUuY3VycmVudFRpbWV9XG4gICAgICAgICAgICB7Li4uKGFwcFZvbHVtZSA+PSAwICYmIHt2b2x1bWU6IGFwcFZvbHVtZSwgbXV0ZWQ6IGFwcFZvbHVtZSA8PSAwfSl9XG4gICAgICAgICAgICBwbGF5YmFja1JhdGU9e3NldHRpbmdzLnZhbHVlcy5zcGVlZH1cbiAgICAgICAgICAgIHZpZGVvUmVzb2x1dGlvbj17cXVhbGl0eU9wdGlvbnN9XG4gICAgICAgICAgICBhdWRpb1RyYWNrPXtzZWxlY3RlZEF1ZGlvVHJhY2t9XG4gICAgICAgICAgICB0ZXh0VHJhY2s9e3NlbGVjdGVkVGV4dFRyYWNrfVxuICAgICAgICAgICAgbG9vcD17c2V0dGluZ3MudmFsdWVzLmxvb3B9XG4gICAgICAgICAgICBwbHVnaW5zPXtwbHVnaW5zfVxuICAgICAgICAgICAgbW9kdWxlc0NvbmZpZz17bW9kdWxlc0NvbmZpZ31cbiAgICAgICAgICAgIG9uUGxheWxvZ0ZpcmVkPXtvblBsYXlsb2dGaXJlZH1cbiAgICAgICAgICAgIG9uRXJyb3I9e2Vycm9ySGFuZGxlcn1cbiAgICAgICAgICAgIG9uUGxheWJhY2tTdGF0ZUNoYW5nZT17aGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmxvY2tlZEF1dG9wbGF5PXtlcnJvciA9PiBvbkJsb2NrZWRBdXRvcGxheT8uKGVycm9yKX1cbiAgICAgICAgICAgIG9uQ2FuUGxheT17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICB1cGRhdGVQbGF5YmFja1RpbWUoZXZlbnQpXG4gICAgICAgICAgICAgIHZpZGVvUHJvcHMub25DYW5QbGF5Py4oZXZlbnQpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25UaW1lVXBkYXRlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvbkR1cmF0aW9uQ2hhbmdlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvblBsYXllckxvYWRlZD17cGxheWVyID0+IHtcbiAgICAgICAgICAgICAgcGxheWVyUmVmLmN1cnJlbnQgPSBwbGF5ZXJcbiAgICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ/LihwbGF5ZXIpXG4gICAgICAgICAgICAgIHN5bmNWb2x1bWUodmlkZW9SZWYuY3VycmVudCwgdmlkZW9Qcm9wcy5tdXRlZCA/IDAgOiBhcHBWb2x1bWUpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyUmVmPXtlbGVtZW50ID0+IHtcbiAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCA9IGVsZW1lbnRcbiAgICAgICAgICBvYnNlcnZlKGVsZW1lbnQpXG4gICAgICAgIH19XG4gICAgICAgIGJhY2tSZWY9e2FkQ29udGFpbmVyUmVmfVxuICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgIGNoYW5uZWxUaXRsZT17Y2hhbm5lbFRpdGxlfVxuICAgICAgICBiYWNrQnV0dG9uPXtvbkJhY2sgJiYgPEJ1dHRvbiBzdGFydEljb249XCJiYWNrXCIgb25DbGljaz17b25CYWNrfSAvPn1cbiAgICAgICAgey4uLihpc1VzZXJBY3RpdmUgJiYgdWlFbGVtZW50cyl9XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIG9uTW91c2VNb3ZlPXtvbk1vdXNlTW92ZX1cbiAgICAgID5cbiAgICAgICAgPExvYWRpbmdTcGlubmVyIGFjdGl2ZT17d2FpdGluZ30gLz5cbiAgICAgICAge2Vycm9yRGF0YSAmJiA8RXJyb3IgZXJyb3I9e2Vycm9yRGF0YX0gb25CYWNrPXtvbkJhY2t9IC8+fVxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHsvKiBUT0RPIHN5bmMgQ2FzdCBsYXN0IHBsYXllZCB0aW1lIGJhY2sgKi99XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKFxuICAgICAgICAgIDxjb21wb25lbnRzLkNhc3RVaVxuICAgICAgICAgICAgb25CYWNrPXtvbkJhY2t9XG4gICAgICAgICAgICBvblN0YXRlQ2hhbmdlPXtzZXRDYXN0U3RhdGV9XG4gICAgICAgICAgICBvbkxvYWQ9e29uQ2FzdH1cbiAgICAgICAgICAgIHsuLi5jb21wYXRpYmlsaXR5Q2FzdFByb3BzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcy5jYXN0VWl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge2lzVXNlckFjdGl2ZSAmJiAoIC8vIFRPRE86IERlc2lnbiA8RXh0ZW5zdGlvbiAvPiBmbGFnXG4gICAgICAgICAgPGNvbXBvbmVudHMuU2V0dGluZ3NcbiAgICAgICAgICAgIHR5cGU9e3VpVHlwZX1cbiAgICAgICAgICAgIHNlY3Rpb25zPXtzZXR0aW5ncy5zZWN0aW9uc31cbiAgICAgICAgICAgIC8vIFRPRE8gaGFzQm90dG9tUGFuZWwgYm90dG9tOiA4ZW1cbiAgICAgICAgICAgIG9wZW49e3VzZXJGb2N1cyA9PT0gJ3NldHRpbmdzJ31cbiAgICAgICAgICAgIHZhbHVlcz17c2V0dGluZ3MudmFsdWVzfVxuICAgICAgICAgICAgb25PcGVuPXtvcGVuU2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNoYW5nZVNldHRpbmdzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcz8uc2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNsb3NlPXt1aUhhbmRsZXJzLm9uQ2xvc2VTZXR0aW5nc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8TGFuZ3VhZ2VTZXR0aW5nc1xuICAgICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICAgIGdldFBsYXllcj17KCkgPT4gcGxheWVyUmVmLmN1cnJlbnR9XG4gICAgICAgICAgb25DaGFuZ2U9eyhfZXZlbnQsIGl0ZW0pID0+XG4gICAgICAgICAgICB1aUhhbmRsZXJzLm9uQ2hhbmdlU2V0dGluZ3Moe1xuICAgICAgICAgICAgICBuYW1lOiBpdGVtLnR5cGUsXG4gICAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgICBrZWVwT3BlbjogdHJ1ZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */"),
9318
- desktop: /*#__PURE__*/css$1(LanguageMenu.styles, LanguageMenu.desktopStyles, process.env.NODE_ENV === "production" ? "" : ";label:desktop;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0VXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtpc0Rlc2t0b3B9IGZyb20gJ3V0aWwvZW52aXJvbm1lbnQnXG5pbXBvcnQgbXVsdGlSZWYgZnJvbSAndXRpbC9tdWx0aVJlZidcbmltcG9ydCB7b25WaWV3TW9kZUNoYW5nZSwgdG9nZ2xlRnVsbHNjcmVlbn0gZnJvbSAndXRpbC92aWV3TW9kZXMnXG5pbXBvcnQge3VzZUF1dG9IaWRlfSBmcm9tICdob29rcydcbmltcG9ydCB7SW50bFByb3ZpZGVyfSBmcm9tICdjb250ZXh0L0kxOG4nXG5pbXBvcnQge2dldE1lZGlhVGltZSwgaXNCdWZmZXJlZH0gZnJvbSAncGxheWVyQ29yZS9tZWRpYUJpbmRpbmdzJ1xuaW1wb3J0IEVycm9yIGZyb20gJ3BsYXllclVpL0Vycm9yJ1xuaW1wb3J0IExheW91dCBmcm9tICdwbGF5ZXJVaS9EZWZhdWx0TGF5b3V0J1xuaW1wb3J0IHtcbiAgQnV0dG9uLFxuICBMaXZlQnV0dG9uLFxuICBGdWxsc2NyZWVuQnV0dG9uLFxuICBQbGF5QnV0dG9uLFxuICBGb3J3YXJkQnV0dG9uLFxufSBmcm9tICdwbGF5ZXJVaS9idXR0b25zJ1xuaW1wb3J0IFNlZWtiYXIgZnJvbSAncGxheWVyVWkvU2Vla2JhcidcbmltcG9ydCBEaXNwbGF5VGltZSBmcm9tICdwbGF5ZXJVaS9EaXNwbGF5VGltZSdcbmltcG9ydCBMb2FkaW5nU3Bpbm5lciBmcm9tICdwbGF5ZXJVaS9Mb2FkaW5nU3Bpbm5lcidcbmltcG9ydCBCYWNrZHJvcCBmcm9tICdwbGF5ZXJVaS9CYWNrZHJvcCdcbmltcG9ydCBTZXR0aW5ncyBmcm9tICdwbGF5ZXJVaS9TZXR0aW5ncydcbmltcG9ydCBPdmVybGF5UGFuZWwgZnJvbSAncGxheWVyVWkvT3ZlcmxheVBhbmVsJ1xuaW1wb3J0IExhbmd1YWdlTWVudSBmcm9tICdwbGF5ZXJVaS9MYW5ndWFnZU1lbnUnXG5pbXBvcnQgUGxheVBhbmVsIGZyb20gJ3BsYXllclVpL1BsYXlQYW5lJ1xuaW1wb3J0IFZvbHVtZUNvbnRyb2wgZnJvbSAnY29tcG9uZW50L1ZvbHVtZUNvbnRyb2wnXG5pbXBvcnQgQ2FzdFVpIGZyb20gJ2Nhc3QvQ2FzdFVpJ1xuaW1wb3J0IHtsaW5rQ2FzdH0gZnJvbSAnY2FzdC9mcmFtZXdvcmsnXG5pbXBvcnQge0Nhc3RTdGF0ZX0gZnJvbSAnRW51bSdcbmltcG9ydCB7ZGlzcGF0Y2hDaGFwdGVyRXZlbnRzfSBmcm9tICcuL3RpbWVsaW5lJ1xuaW1wb3J0IFZpZGVvIGZyb20gJy4uL1ZpZGVvJ1xuaW1wb3J0IHtnZXRMYW5ndWFnZU9wdGlvbnMsIGdldFF1YWxpdHlPcHRpb25zLCBnZXRTZXR0aW5nc0RhdGF9IGZyb20gJy4vc2V0dGluZ3MnXG5pbXBvcnQge2xpbmtNZWRpYVZvbHVtZSwgc3luY1ZvbHVtZX0gZnJvbSAnLi92b2x1bWUnXG5pbXBvcnQgU2Vla1ByZXZpZXcgZnJvbSAnLi9TZWVrUHJldmlldydcblxuY29uc3Qgc2l6ZXMgPSB7XG4gICdzbWFsbC1lbWJlZCc6IDIwMCxcbiAgZW1iZWQ6IDQwMCxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6IDYwMCxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiA5MDAsXG4gIGRlc2t0b3A6IDEyMDAsXG59XG5cbmNvbnN0IHVzZUxpbmtTdGF0ZSA9IChyZXF1ZXN0LCBkZXBlbmRlbmNpZXMgPSBbXSkgPT4ge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXF1ZXN0KHNldFN0YXRlKVxuICB9LCBkZXBlbmRlbmNpZXMpXG4gIHJldHVybiBzdGF0ZVxufVxuXG5jb25zdCBmbGlwU3RhdGUgPSBzdGF0ZSA9PiAoc3RhdGUgPT09ICdwbGF5aW5nJyA/ICdwYXVzZWQnIDogJ3BsYXlpbmcnKVxuXG4vLyBGSVhNRTogdG9vIGZldyBsaW5lcyB0byBzcGxpdCBhIGZpbGUsIGxvb2tpbmcgYSBiZXR0ZXIgcGxhY2VcbmNvbnN0IGdldFRodW1ibmFpbHNVcmwgPSBzb3VyY2UgPT5cbiAgW10uY29uY2F0KHNvdXJjZSkuZmluZChpdGVtID0+IGl0ZW0udHlwZSA9PT0gJ3RodW1ibmFpbCcpPy5zcmNcblxuY29uc3QgZGVmYXVsdFNldHRpbmdzID0ge31cblxuY29uc3Qgc2hvdWxkUGF1c2UgPSAoe3VzZXJGb2N1cywgdWlUeXBlfSkgPT5cbiAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgL3NldHRpbmdzfGNoYXB0ZXItbGlzdC8udGVzdCh1c2VyRm9jdXMpKSB8fFxuICAvYmxvY2tpbmd8c2Vla2JhcnxzaGFyZS1pbm5lci8udGVzdCh1c2VyRm9jdXMpXG5cbi8vIFRPRE8gZXh0cmFjdCB0byBzb21ld2hlcmUgZWxzZVxuY29uc3QgbWVudUNsYXNzZXMgPSB7XG4gIGRlZmF1bHQ6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzKSxcbiAgZGVza3RvcDogY3NzKExhbmd1YWdlTWVudS5zdHlsZXMsIExhbmd1YWdlTWVudS5kZXNrdG9wU3R5bGVzKSxcbn1cblxuY29uc3QgTGFuZ3VhZ2VTZXR0aW5ncyA9ICh7XG4gIHVpVHlwZSxcbiAgYXVkaW9UcmFja3MgPSBbXSxcbiAgdGV4dFRyYWNrcyA9IFtdLFxuICBnZXRQbGF5ZXIsXG4gIG9uQ2hhbmdlLFxuICBzbG90cyA9IHtMYW5ndWFnZU1lbnV9LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnZXRMYW5ndWFnZU9wdGlvbnMoZ2V0UGxheWVyKCksIHthdWRpb1RyYWNrcywgdGV4dFRyYWNrc30pXG4gIHJldHVybiAoXG4gICAgYXVkaW9UcmFja3MubGVuZ3RoID4gMCAmJlxuICAgIHRleHRUcmFja3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICA8T3ZlcmxheVBhbmVsXG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICB0aXRsZT1cIuWtl+W5leODu+mfs+WjsOOCkuWIh+OCiuabv+OBiOOCi1wiXG4gICAgICAgIGJ1dHRvbkljb249XCJzdWJ0aXRsZVwiXG4gICAgICA+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIGF1ZGlvVHJhY2s6IGFwcEF1ZGlvVHJhY2ssXG4gIHRleHRUcmFjazogYXBwVGV4dFRyYWNrLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgICAgb3RoZXJTZWN0aW9uczogYXBwU2V0dGluZ3Muc2VjdGlvbnMsXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHtwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLCB2YWx1ZXMsIHNlY3Rpb25zfVxuICAgIH0pXG4gIH1cbiAgY29uc3QgbGFzdFN0YXRlID0gdXNlUmVmKHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGhhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2UgPSAoZXZlbnQsIHN0YXRlKSA9PiB7XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnZXJyb3InKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgb25QbGF5YmFja1N0YXRlQ2hhbmdlPy4oZXZlbnQsIHN0YXRlKVxuICAgIC8vIHByZXZpb3VzbHkgVUkgcGxheWJhY2sgc3RhdGUgd2FzIHN5bmNlZCBvbmx5IHdoZW5cbiAgICAvLyBleGl0aW5nIGlPUyB2aWRlbyBvbmx5IGZ1bGxzY3JlZW4od2Via2l0ZW5kZnVsbHNjcmVlbilcbiAgICBpZiAoXG4gICAgICAvcGxheWluZ3xwYXVzZWQvLnRlc3Qoc3RhdGUpICYmXG4gICAgICAhKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpICYmXG4gICAgICAhc2hvdWxkUGF1c2Uoe3VzZXJGb2N1cywgdWlUeXBlfSlcbiAgICApIHtcbiAgICAgIHRvZ2dsZVBsYXkoc3RhdGUpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2VuZGVkJykge1xuICAgICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnbG9hZGluZycgJiYgbGFzdFN0YXRlLmN1cnJlbnQgIT09ICdpbml0Jykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0b2dnbGVQbGF5KCdwbGF5aW5nJyksIDEpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ3BsYXlpbmcnKSB7XG4gICAgICBzZXRJc1VzZXJBY3RpdmUodHJ1ZSlcbiAgICB9XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnbG9hZGluZycpIHtcbiAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgIH1cbiAgICBsYXN0U3RhdGUuY3VycmVudCA9IHN0YXRlXG4gICAgc2V0UGxheWJhY2tTdGF0ZShzdGF0ZSlcbiAgfVxuXG4gIGNvbnN0IGNoYW5nZVNldHRpbmdzID0gKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59ID0ge30pID0+IHtcbiAgICAvLyBUT0RPIGNvbnNpZGVyIG1lcmdlIGludG8gdXNlUmVkdWNlcj9cbiAgICBvbkNoYW5nZVNldHRpbmdzPy4oe25hbWUsIHZhbHVlfSlcbiAgICBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSlcbiAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAuLi5jdXJyZW50LFxuICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIFtuYW1lXTogdmFsdWV9LFxuICAgICAgcHJlZmVycmVkOiB7Li4uY3VycmVudC5wcmVmZXJyZWQsIFtuYW1lXTogdmFsdWV9LFxuICAgIH0pKVxuICAgIGlmICgha2VlcE9wZW4pIHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICB9XG4gIH1cbiAgY29uc3Qgb3BlblNldHRpbmdzID0gZXZlbnQgPT4ge1xuICAgIGNvbnN0IGFuaW1hdGlvbkZyYW1lID1cbiAgICAgIHVzZXJGb2N1cyAhPT0gJ3NldHRpbmdzJyAmJlxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgb25PcGVuU2V0dGluZ3M/LihldmVudCwgc2V0dGluZ3MpXG4gICAgICAgIC8vIEluIGlPUyBTYWZhcmksIHdlIG5lZWQgdG8gdXBkYXRlIHNldHRpbmdzIGRhdGFcbiAgICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgICB9KVxuICAgIHNldFVzZXJGb2N1cyhjdXJyZW50ID0+IChjdXJyZW50ID09PSAnc2V0dGluZ3MnID8gJycgOiAnc2V0dGluZ3MnKSlcbiAgICByZXR1cm4gYW5pbWF0aW9uRnJhbWVcbiAgfVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1JhdGUgPiAwKSB7XG4gICAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBzcGVlZDogYXBwUGxheWJhY2tSYXRlfSxcbiAgICAgIH0pKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrUmF0ZV0pXG5cbiAgY29uc3QgcXVhbGl0eU9wdGlvbnMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFF1YWxpdHlPcHRpb25zKHNldHRpbmdzKSxcbiAgICBbc2V0dGluZ3MudmFsdWVzLnF1YWxpdHldXG4gIClcbiAgY29uc3Qgdmlld01vZGUgPSB1c2VMaW5rU3RhdGUodXBkYXRlID0+XG4gICAgb25WaWV3TW9kZUNoYW5nZSh2aWRlb1JlZi5jdXJyZW50LCB1cGRhdGUpXG4gIClcbiAgY29uc3Qgc291cmNlT3ZlcnJpZGUgPSB1c2VMaW5rU3RhdGUoXG4gICAgYXN5bmMgdXBkYXRlID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICAgIHNvdXJjZSAmJiAoYXdhaXQgcXVhbGl0eS5yZXdyaXRlTWFuaWZlc3Q/Lihzb3VyY2UsIHF1YWxpdHlPcHRpb25zKSlcbiAgICAgIHVwZGF0ZShyZXN1bHQgfHwgc291cmNlKVxuICAgIH0sXG4gICAgW3NvdXJjZSwgcXVhbGl0eU9wdGlvbnNdXG4gIClcbiAgY29uc3Qgd2FpdGluZyA9IC9lbXB0aWVkfGxvYWRpbmd8YnVmZmVyaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGFjdGl2ZVBsYXliYWNrID1cbiAgICBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ3dhaXRpbmcnXG4gIGNvbnN0IHtcbiAgICBtb2RlOiBhdXRvSGlkZU1vZGUsXG4gICAgb25DbGljayxcbiAgICBvbk1vdXNlTW92ZSxcbiAgfSA9IHVzZUF1dG9IaWRlKHtcbiAgICBwaW5uZWQ6ICFjb250cm9scy5hdXRvaGlkZSB8fCB3YWl0aW5nIHx8ICFhY3RpdmVQbGF5YmFjayB8fCB1c2VyRm9jdXMsXG4gICAgdGFwVG9IaWRlOiB1aVR5cGUgPT09ICdtb2JpbGUnLFxuICAgIGhpZGVUaW1lTXM6IGNvbnRyb2xzLmF1dG9oaWRlLFxuICB9KVxuICBjb25zdCBtb2RlID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBjb250cm9scy5hdXRvaGlkZVxuICAgICAgPyBhdXRvSGlkZU1vZGVcbiAgICAgIDogY29udHJvbHNcbiAgICAgID8gJ3Nob3duJ1xuICAgICAgOiAnaGlkZGVuJ1xuICBjb25zdCBjb250cm9sc0Rpc3BsYXkgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdzZWVrYmFyLW9ubHknXG4gICAgICA6IGNvbnRyb2xzID09PSAndGl0bGUtb25seScgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2VtcHRpZWQnXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IG1vZGVcbiAgY29uc3Qgc2hvdWxkSGlkZVBhbmVscyA9XG4gICAgKGNvbnRyb2xzID09PSAnbm8tcGFuZWwnIHx8XG4gICAgICBjb250cm9sc0Rpc3BsYXkgPT09ICdoaWRkZW4nIHx8XG4gICAgICBwbGF5YmFja1N0YXRlID09PSAnZW5kZWQnKSAmJlxuICAgIHVzZXJGb2N1c1xuICBjb25zdCBoYXZlUGxheVBhbmVsID1cbiAgICAhYmxvY2tpbmcgJiZcbiAgICB1aVR5cGUgPT09ICdkZXNrdG9wJyAmJlxuICAgICF3YWl0aW5nICYmXG4gICAgIS92b2x1bWV8JycvLnRlc3QodXNlckZvY3VzKSAmJlxuICAgICEvdGl0bGUtb25seXxuby1wYW5lbC8udGVzdChjb250cm9scykgJiZcbiAgICAoY29udHJvbHMuYXV0b2hpZGUgfHwgbW9kZSA9PT0gJ3Nob3duJylcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRIaWRlUGFuZWxzKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBpZiAocmVmcy5jdXJyZW50LmNsb3NlTWVudSkge1xuICAgICAgICByZWZzLmN1cnJlbnQuY2xvc2VNZW51KClcbiAgICAgICAgcmVmcy5jdXJyZW50LmNsb3NlTWVudSA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cbiAgfSwgW3Nob3VsZEhpZGVQYW5lbHNdKVxuICB1c2VFZmZlY3QoKCkgPT4gXG4gICAgb24oY29udGFpbmVyUmVmLmN1cnJlbnQsICdmb2N1cy1tZW51JywgZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50LmRldGFpbD8uc3RhdHVzID09PSAnb3BlbicpIHtcbiAgICAgICAgc2V0VXNlckZvY3VzKCdtZW51JylcbiAgICAgICAgcmVmcy5jdXJyZW50LmNsb3NlTWVudSA9ICgpID0+IGV2ZW50LmRldGFpbC5jbG9zZU1lbnU/LigpXG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQuZGV0YWlsPy5zdGF0dXMgPT09ICdjbG9zZWQnKSB7XG4gICAgICAgIHNldFVzZXJGb2N1cyhjdXJyZW50ID0+IChjdXJyZW50ID09PSAnbWVudScgPyAnJyA6IGN1cnJlbnQpKVxuICAgICAgfVxuICAgIH0pXG4gICwgW10pXG4gIGNvbnN0IHtzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfSA9IGxpbmtNZWRpYVZvbHVtZSgoKSA9PiAoe1xuICAgIHZpZGVvOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgIGdldFBsYXllcjogKCkgPT4gcGxheWVyUmVmLmN1cnJlbnQsXG4gIH0pKVxuICBjb25zdCBjaGFuZ2VQcmV2aW91cyA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZVByZXZpb3VzKGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cbiAgY29uc3QgY2hhbmdlTmV4dCA9IGV2ZW50ID0+IHtcbiAgICBvbkNoYW5nZU5leHQoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuXG4gIHVzZUVmZmVjdChmZXRjaFNldHRpbmdzLCBbYXBwU2V0dGluZ3NdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRoZSBhZENvbnRhaW5lciBzaG91bGQgYmUgc2V0IGJlZm9yZSBgbG9hZGAgYmVjYXVzZSBJbWFEYWkubG9hZCBuZWVkcyBpdC5cbiAgICBwbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHBsdWdpbi5zZXRBZENvbnRhaW5lcj8uKGFkQ29udGFpbmVyUmVmLmN1cnJlbnQpKVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIGRpc3BhdGNoQ2hhcHRlckV2ZW50cyh7XG4gICAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgICBjaGFwdGVycyxcbiAgICAgICAgZ2V0VGltZTogKCkgPT4gdmlkZW9SZWYuY3VycmVudC5jdXJyZW50VGltZSxcbiAgICAgIH0pLFxuICAgIFtjaGFwdGVyc11cbiAgKVxuXG4gIGNvbnN0IGlzRW5kID0gcGxheWJhY2tTdGF0ZSA9PT0gJ2VuZGVkJ1xuICBjb25zdCBjYW5TZWVrID0gIWlzRW5kICYmIHBsYXliYWNrVGltZS5kdXJhdGlvbiA+IDBcbiAgY29uc3QgZGVyaXZlZFBsYXliYWNrU3RhdGUgPVxuICAgICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIGJsb2NraW5nKSB8fCBzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICAgPyAncGF1c2VkJ1xuICAgICAgOiB0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlXG4gIGNvbnN0IGFjdGl2ZVRodW1ibmFpbHNVcmwgPVxuICAgICghdXNlckZvY3VzIHx8IHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInKSAmJlxuICAgIChnZXRUaHVtYm5haWxzVXJsKHNvdXJjZSkgfHwgdGh1bWJuYWlsc1VybClcbiAgY29uc3QgY3NzVmFyaWFibGVzID0ge1xuICAgICctLXBsYXlpbmcnOiBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgPyAnMScgOiAnMCcsXG4gIH1cbiAgY29uc3Qgb25SZXdpbmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgY2FuU2VlayAmJlxuICAgICgoKSA9PiBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSAtIDEwLCAncmV3aW5kJykpXG4gIGNvbnN0IG9uRm9yd2FyZCA9XG4gICAgKCFpc0xpdmUgfHwgcGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMCkgJiZcbiAgICBjYW5TZWVrICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lICsgMTAsICdmb3J3YXJkJykpXG4gIGNvbnN0IG9uQ2xpY2tCbGFuayA9XG4gICAgaGF2ZVBsYXlQYW5lbCAmJiAoKCkgPT4gdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSkpXG5cbiAgY29uc3QgdWlIYW5kbGVycyA9IHtcbiAgICBvblBsYXk6ICgpID0+IHtcbiAgICAgIHRvZ2dsZVBsYXkoJycsIHt0cmlnZ2VyZWRCeTogJ3VzZXItYWN0aW9uJ30pXG4gICAgICBzZXRJc1VzZXJBY3RpdmUodHJ1ZSlcbiAgICB9LFxuICAgIG9uQ2xpY2tMaXZlOiBpc0xpdmUgJiYgKCgpID0+IHNldFRhcmdldFRpbWUoMCwgJ3NlZWtUb0xpdmUnKSksXG4gICAgb25DbGlja1NlZWtiYXI6ICgpID0+IHtcbiAgICAgIHJlZnMuY3VycmVudC5kZWZlcmVkU2Vla0ZvY3VzID0gc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4gc2V0VXNlckZvY3VzKCdzZWVrYmFyJyksXG4gICAgICAgIDY2XG4gICAgICApXG4gICAgfSxcbiAgICBvblNlZWs6IHRpbWUgPT4ge1xuICAgICAgc2V0VGFyZ2V0VGltZSh0aW1lLCAnc2VlaycpXG4gICAgICBjbGVhclRpbWVvdXQocmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHNldFVzZXJGb2N1cygnJyksIDY2KVxuICAgIH0sXG4gICAgb25DaGFuZ2VTZXR0aW5nczogKHtuYW1lLCB2YWx1ZSwga2VlcE9wZW59KSA9PlxuICAgICAgY2hhbmdlU2V0dGluZ3MobmFtZSwgdmFsdWUsIHtrZWVwT3Blbn0pLFxuICAgIG9uQ2xvc2VTZXR0aW5nczogZXZlbnQgPT4ge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgICAgc2xvdFByb3BzPy5zZXR0aW5ncz8ub25DbG9zZT8uKGV2ZW50KVxuICAgIH0sXG4gIH1cblxuICBjb25zdCB1aUVsZW1lbnRzID0ge1xuICAgIGxpdmVCdXR0b246IHVpSGFuZGxlcnMub25DbGlja0xpdmUgJiYgKFxuICAgICAgPGNvbXBvbmVudHMuTGl2ZUJ1dHRvblxuICAgICAgICB1c2luZ1N0YXJ0T3Zlcj17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMH1cbiAgICAgICAgb25DbGljaz17dWlIYW5kbGVycy5vbkNsaWNrTGl2ZX1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBjb250cm9sQnV0dG9uczoge1xuICAgICAgcGxheUJ1dHRvbjogKFxuICAgICAgICA8UGxheUJ1dHRvblxuICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgIGVuZGVkPXtpc0VuZH1cbiAgICAgICAgICBoaWRkZW49e1xuICAgICAgICAgICAgdWlUeXBlID09PSAnbW9iaWxlJyAmJiAod2FpdGluZyB8fCAvbG9hZGluZy8udGVzdChwbGF5YmFja1N0YXRlKSlcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyaWFudD17IWlzVXNlckFjdGl2ZSAmJiAnZmlyc3RwbGF5J31cbiAgICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uUGxheX1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICByZXdpbmRCdXR0b246IG9uUmV3aW5kICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cInJld2luZDEwXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuUkVXSU5EXCJcbiAgICAgICAgICBkaXNhYmxlZD17aXNFbmR9XG4gICAgICAgICAgb25DbGljaz17b25SZXdpbmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgZm9yd2FyZEJ1dHRvbjogb25Gb3J3YXJkICYmIChcbiAgICAgICAgPEZvcndhcmRCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJmb3J3YXJkMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5GT1JXQVJEXCJcbiAgICAgICAgICBkaXNhYmxlZD17IWNhblNlZWt9XG4gICAgICAgICAgb25DbGljaz17b25Gb3J3YXJkfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIG5leHRFcGlzb2RlQnV0dG9uOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJuZXh0XCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuTkVYVFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZU5leHR9XG4gICAgICAgICAgb25DbGljaz17Y2hhbmdlTmV4dH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBwcmV2aW91c0VwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cInByZXZpb3VzXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuUFJFVklPVVNcIlxuICAgICAgICAgIGRpc2FibGVkPXshb25DaGFuZ2VQcmV2aW91c31cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VQcmV2aW91c31cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgfSxcbiAgICBzZWVrYmFyOiAoXG4gICAgICA8Y29tcG9uZW50cy5TZWVrYmFyXG4gICAgICAgIHN0eWxlPXsvdm9sdW1lLy50ZXN0KHVzZXJGb2N1cykgJiYge29wYWNpdHk6ICcwJ319XG4gICAgICAgIHN0YXJ0VGltZT17cGxheWJhY2tUaW1lLnN0YXJ0VGltZX1cbiAgICAgICAgY3VycmVudFRpbWU9e3BsYXliYWNrVGltZS5jdXJyZW50VGltZX1cbiAgICAgICAgYnVmZmVyVGltZT17cGxheWJhY2tUaW1lLmJ1ZmZlclRpbWV9XG4gICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgIGNoYXB0ZXJzPXtjaGFwdGVyc31cbiAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DbGlja1NlZWtiYXJ9XG4gICAgICAgIG9uQ2hhbmdlQ29tbWl0dGVkPXt1aUhhbmRsZXJzLm9uU2Vla31cbiAgICAgICAgbWFya3M9e21hcmtzfVxuICAgICAgICBwbHVnaW5zPXtwbHVnaW5zfVxuICAgICAgICB7Li4uc2xvdFByb3BzLnNlZWtiYXJ9XG4gICAgICA+XG4gICAgICAgIHthY3RpdmVUaHVtYm5haWxzVXJsICYmIChcbiAgICAgICAgICA8U2Vla1ByZXZpZXdcbiAgICAgICAgICAgIHRodW1ibmFpbHNVcmw9e2FjdGl2ZVRodW1ibmFpbHNVcmx9XG4gICAgICAgICAgICBkdXJhdGlvbj17cGxheWJhY2tUaW1lLmR1cmF0aW9ufVxuICAgICAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L2NvbXBvbmVudHMuU2Vla2Jhcj5cbiAgICApLFxuICAgIGRpc3BsYXlUaW1lOiA8Y29tcG9uZW50cy5EaXNwbGF5VGltZSB7Li4ucGxheWJhY2tUaW1lfSAvPixcbiAgICBmdWxsc2NyZWVuQnV0dG9uOiAoXG4gICAgICA8RnVsbHNjcmVlbkJ1dHRvblxuICAgICAgICB2aWV3TW9kZT17dmlld01vZGV9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHRvZ2dsZUZ1bGxzY3JlZW4oY29udGFpbmVyUmVmLmN1cnJlbnQpfVxuICAgICAgLz5cbiAgICApLFxuICAgIHZvbHVtZUNvbnRyb2w6IHdpZHRoID49IHNpemVzWydzbWFsbC1lbWJlZCddICYmIChcbiAgICAgIDxjb21wb25lbnRzLlZvbHVtZUNvbnRyb2xcbiAgICAgICAgey4uLntzdWJzY3JpYmUsIG9uQ2hhbmdlLCB0b2dnbGVNdXRlfX1cbiAgICAgICAgb25Nb3VzZU92ZXI9eygpID0+IHNldFVzZXJGb2N1cygndm9sdW1lJyl9XG4gICAgICAgIG9uTW91c2VPdXQ9eygpID0+IHNldFVzZXJGb2N1cygnJyl9XG4gICAgICAgIHsuLi5zbG90UHJvcHM/LnZvbHVtZUNvbnRyb2x9XG4gICAgICAvPlxuICAgICksXG4gICAgYmFja0l0ZW1zOiAoXG4gICAgICA8UGxheVBhbmVsIGFuaW1hdGlvbj17dGFyZ2V0U3RhdGUuYW5pbWF0aW9ufSBvbkNsaWNrPXtvbkNsaWNrQmxhbmt9IC8+XG4gICAgKSxcbiAgfVxuICBjb25zdCBjb21wYXRpYmlsaXR5Q2FzdFByb3BzID0gY2FzdE9wdGlvbnMgPT09ICdjb21wYXRpYmxlJyAmJiB7XG4gICAgc291cmNlLFxuICAgIHZhbHVlczoge3RpdGxlLCAuLi5zZXR0aW5ncy52YWx1ZXMsIC4uLmludGwsIG1vZHVsZXNDb25maWd9LFxuICAgIG9uTG9hZDogb25DYXN0LFxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2FzdE9wdGlvbnMgJiYgY2FzdE9wdGlvbnMgIT09ICdjb21wYXRpYmxlJykge1xuICAgICAgcmV0dXJuIGxpbmtDYXN0KHtzb3VyY2UsIC4uLmNhc3RPcHRpb25zfSlcbiAgICB9IC8vIFRPRE8gcGxheWxpc3QsIGF1ZGlvIC8gc3VidGl0bGUgc2V0dGluZ1xuICB9LCBbc291cmNlLCBjYXN0T3B0aW9ucy5jb250ZW50SWQsIGNhc3RPcHRpb25zLmN1c3RvbURhdGFdKVxuICBjb25zdCBzZWxlY3RlZEF1ZGlvVHJhY2sgPSBzZXR0aW5ncy5wcmVmZXJyZWQ/LmF1ZGlvIHx8IGFwcEF1ZGlvVHJhY2tcbiAgY29uc3Qgc2VsZWN0ZWRUZXh0VHJhY2sgPSBzZXR0aW5ncy5wcmVmZXJyZWQ/LnN1YnRpdGxlcyB8fCBhcHBUZXh0VHJhY2tcblxuICByZXR1cm4gKFxuICAgIDxJbnRsUHJvdmlkZXIgey4uLmludGx9PlxuICAgICAgPExheW91dFxuICAgICAgICBzdHlsZT17ey4uLnN0eWxlLCBjc3NWYXJpYWJsZXN9fVxuICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgIGRpc3BsYXk9e21vZGV9XG4gICAgICAgIGNvbnRyb2xzRGlzcGxheT17Y29udHJvbHNEaXNwbGF5fVxuICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICB2aWRlbz17XG4gICAgICAgICAgPFZpZGVvXG4gICAgICAgICAgICB7Li4udmlkZW9Qcm9wc31cbiAgICAgICAgICAgIHZpZGVvUmVmPXttdWx0aVJlZih2aWRlb1JlZiwgdmlkZW9Qcm9wcy52aWRlb1JlZil9XG4gICAgICAgICAgICBzb3VyY2U9e1xuICAgICAgICAgICAgICBjYXN0U3RhdGUgIT09IENhc3RTdGF0ZS5DT05ORUNURUQgJiZcbiAgICAgICAgICAgICAgcGxheWJhY2tTdGF0ZSAhPT0gJ2Vycm9yJyAmJlxuICAgICAgICAgICAgICBzb3VyY2VPdmVycmlkZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgICBjdXJyZW50VGltZT17dGFyZ2V0U3RhdGUuY3VycmVudFRpbWV9XG4gICAgICAgICAgICB7Li4uKGFwcFZvbHVtZSA+PSAwICYmIHt2b2x1bWU6IGFwcFZvbHVtZSwgbXV0ZWQ6IGFwcFZvbHVtZSA8PSAwfSl9XG4gICAgICAgICAgICBwbGF5YmFja1JhdGU9e3NldHRpbmdzLnZhbHVlcy5zcGVlZH1cbiAgICAgICAgICAgIHZpZGVvUmVzb2x1dGlvbj17cXVhbGl0eU9wdGlvbnN9XG4gICAgICAgICAgICBhdWRpb1RyYWNrPXtzZWxlY3RlZEF1ZGlvVHJhY2t9XG4gICAgICAgICAgICB0ZXh0VHJhY2s9e3NlbGVjdGVkVGV4dFRyYWNrfVxuICAgICAgICAgICAgbG9vcD17c2V0dGluZ3MudmFsdWVzLmxvb3B9XG4gICAgICAgICAgICBwbHVnaW5zPXtwbHVnaW5zfVxuICAgICAgICAgICAgbW9kdWxlc0NvbmZpZz17bW9kdWxlc0NvbmZpZ31cbiAgICAgICAgICAgIG9uUGxheWxvZ0ZpcmVkPXtvblBsYXlsb2dGaXJlZH1cbiAgICAgICAgICAgIG9uRXJyb3I9e2Vycm9ySGFuZGxlcn1cbiAgICAgICAgICAgIG9uUGxheWJhY2tTdGF0ZUNoYW5nZT17aGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmxvY2tlZEF1dG9wbGF5PXtlcnJvciA9PiBvbkJsb2NrZWRBdXRvcGxheT8uKGVycm9yKX1cbiAgICAgICAgICAgIG9uQ2FuUGxheT17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICB1cGRhdGVQbGF5YmFja1RpbWUoZXZlbnQpXG4gICAgICAgICAgICAgIHZpZGVvUHJvcHMub25DYW5QbGF5Py4oZXZlbnQpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25UaW1lVXBkYXRlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvbkR1cmF0aW9uQ2hhbmdlPXt1cGRhdGVQbGF5YmFja1RpbWV9XG4gICAgICAgICAgICBvblBsYXllckxvYWRlZD17cGxheWVyID0+IHtcbiAgICAgICAgICAgICAgcGxheWVyUmVmLmN1cnJlbnQgPSBwbGF5ZXJcbiAgICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ/LihwbGF5ZXIpXG4gICAgICAgICAgICAgIHN5bmNWb2x1bWUodmlkZW9SZWYuY3VycmVudCwgdmlkZW9Qcm9wcy5tdXRlZCA/IDAgOiBhcHBWb2x1bWUpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyUmVmPXtlbGVtZW50ID0+IHtcbiAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCA9IGVsZW1lbnRcbiAgICAgICAgICBvYnNlcnZlKGVsZW1lbnQpXG4gICAgICAgIH19XG4gICAgICAgIGJhY2tSZWY9e2FkQ29udGFpbmVyUmVmfVxuICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgIGNoYW5uZWxUaXRsZT17Y2hhbm5lbFRpdGxlfVxuICAgICAgICBiYWNrQnV0dG9uPXtvbkJhY2sgJiYgPEJ1dHRvbiBzdGFydEljb249XCJiYWNrXCIgb25DbGljaz17b25CYWNrfSAvPn1cbiAgICAgICAgey4uLihpc1VzZXJBY3RpdmUgJiYgdWlFbGVtZW50cyl9XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIG9uTW91c2VNb3ZlPXtvbk1vdXNlTW92ZX1cbiAgICAgID5cbiAgICAgICAgPExvYWRpbmdTcGlubmVyIGFjdGl2ZT17d2FpdGluZ30gLz5cbiAgICAgICAge2Vycm9yRGF0YSAmJiA8RXJyb3IgZXJyb3I9e2Vycm9yRGF0YX0gb25CYWNrPXtvbkJhY2t9IC8+fVxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHsvKiBUT0RPIHN5bmMgQ2FzdCBsYXN0IHBsYXllZCB0aW1lIGJhY2sgKi99XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKFxuICAgICAgICAgIDxjb21wb25lbnRzLkNhc3RVaVxuICAgICAgICAgICAgb25CYWNrPXtvbkJhY2t9XG4gICAgICAgICAgICBvblN0YXRlQ2hhbmdlPXtzZXRDYXN0U3RhdGV9XG4gICAgICAgICAgICBvbkxvYWQ9e29uQ2FzdH1cbiAgICAgICAgICAgIHsuLi5jb21wYXRpYmlsaXR5Q2FzdFByb3BzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcy5jYXN0VWl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge2lzVXNlckFjdGl2ZSAmJiAoIC8vIFRPRE86IERlc2lnbiA8RXh0ZW5zdGlvbiAvPiBmbGFnXG4gICAgICAgICAgPGNvbXBvbmVudHMuU2V0dGluZ3NcbiAgICAgICAgICAgIHR5cGU9e3VpVHlwZX1cbiAgICAgICAgICAgIHNlY3Rpb25zPXtzZXR0aW5ncy5zZWN0aW9uc31cbiAgICAgICAgICAgIC8vIFRPRE8gaGFzQm90dG9tUGFuZWwgYm90dG9tOiA4ZW1cbiAgICAgICAgICAgIG9wZW49e3VzZXJGb2N1cyA9PT0gJ3NldHRpbmdzJ31cbiAgICAgICAgICAgIHZhbHVlcz17c2V0dGluZ3MudmFsdWVzfVxuICAgICAgICAgICAgb25PcGVuPXtvcGVuU2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNoYW5nZVNldHRpbmdzfVxuICAgICAgICAgICAgey4uLnNsb3RQcm9wcz8uc2V0dGluZ3N9XG4gICAgICAgICAgICBvbkNsb3NlPXt1aUhhbmRsZXJzLm9uQ2xvc2VTZXR0aW5nc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8TGFuZ3VhZ2VTZXR0aW5nc1xuICAgICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICAgIGdldFBsYXllcj17KCkgPT4gcGxheWVyUmVmLmN1cnJlbnR9XG4gICAgICAgICAgb25DaGFuZ2U9eyhfZXZlbnQsIGl0ZW0pID0+XG4gICAgICAgICAgICB1aUhhbmRsZXJzLm9uQ2hhbmdlU2V0dGluZ3Moe1xuICAgICAgICAgICAgICBuYW1lOiBpdGVtLnR5cGUsXG4gICAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgICBrZWVwT3BlbjogdHJ1ZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */")
9317
+ default: /*#__PURE__*/css$1(LanguageMenu.styles, process.env.NODE_ENV === "production" ? "" : ";label:default;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUVXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtpc0Rlc2t0b3B9IGZyb20gJ3V0aWwvZW52aXJvbm1lbnQnXG5pbXBvcnQgbXVsdGlSZWYgZnJvbSAndXRpbC9tdWx0aVJlZidcbmltcG9ydCB7b25WaWV3TW9kZUNoYW5nZSwgdG9nZ2xlRnVsbHNjcmVlbn0gZnJvbSAndXRpbC92aWV3TW9kZXMnXG5pbXBvcnQge3VzZUF1dG9IaWRlfSBmcm9tICdob29rcydcbmltcG9ydCB7SW50bFByb3ZpZGVyfSBmcm9tICdjb250ZXh0L0kxOG4nXG5pbXBvcnQge2dldE1lZGlhVGltZSwgaXNCdWZmZXJlZH0gZnJvbSAncGxheWVyQ29yZS9tZWRpYUJpbmRpbmdzJ1xuaW1wb3J0IEVycm9yIGZyb20gJ3BsYXllclVpL0Vycm9yJ1xuaW1wb3J0IExheW91dCBmcm9tICdwbGF5ZXJVaS9EZWZhdWx0TGF5b3V0J1xuaW1wb3J0IHtcbiAgQnV0dG9uLFxuICBMaXZlQnV0dG9uLFxuICBGdWxsc2NyZWVuQnV0dG9uLFxuICBQbGF5QnV0dG9uLFxuICBGb3J3YXJkQnV0dG9uLFxufSBmcm9tICdwbGF5ZXJVaS9idXR0b25zJ1xuaW1wb3J0IFNlZWtiYXIgZnJvbSAncGxheWVyVWkvU2Vla2JhcidcbmltcG9ydCBEaXNwbGF5VGltZSBmcm9tICdwbGF5ZXJVaS9EaXNwbGF5VGltZSdcbmltcG9ydCBMb2FkaW5nU3Bpbm5lciBmcm9tICdwbGF5ZXJVaS9Mb2FkaW5nU3Bpbm5lcidcbmltcG9ydCBCYWNrZHJvcCBmcm9tICdwbGF5ZXJVaS9CYWNrZHJvcCdcbmltcG9ydCBTZXR0aW5ncyBmcm9tICdwbGF5ZXJVaS9TZXR0aW5ncydcbmltcG9ydCBPdmVybGF5UGFuZWwgZnJvbSAncGxheWVyVWkvT3ZlcmxheVBhbmVsJ1xuaW1wb3J0IExhbmd1YWdlTWVudSBmcm9tICdwbGF5ZXJVaS9MYW5ndWFnZU1lbnUnXG5pbXBvcnQgUGxheVBhbmVsIGZyb20gJ3BsYXllclVpL1BsYXlQYW5lJ1xuaW1wb3J0IFZvbHVtZUNvbnRyb2wgZnJvbSAnY29tcG9uZW50L1ZvbHVtZUNvbnRyb2wnXG5pbXBvcnQgQ2FzdFVpIGZyb20gJ2Nhc3QvQ2FzdFVpJ1xuaW1wb3J0IHtsaW5rQ2FzdH0gZnJvbSAnY2FzdC9mcmFtZXdvcmsnXG5pbXBvcnQge0Nhc3RTdGF0ZX0gZnJvbSAnRW51bSdcbmltcG9ydCB7ZGlzcGF0Y2hDaGFwdGVyRXZlbnRzfSBmcm9tICcuL3RpbWVsaW5lJ1xuaW1wb3J0IFZpZGVvIGZyb20gJy4uL1ZpZGVvJ1xuaW1wb3J0IHtnZXRMYW5ndWFnZU9wdGlvbnMsIGdldFF1YWxpdHlPcHRpb25zLCBnZXRTZXR0aW5nc0RhdGF9IGZyb20gJy4vc2V0dGluZ3MnXG5pbXBvcnQge2xpbmtNZWRpYVZvbHVtZSwgc3luY1ZvbHVtZX0gZnJvbSAnLi92b2x1bWUnXG5pbXBvcnQgU2Vla1ByZXZpZXcgZnJvbSAnLi9TZWVrUHJldmlldydcblxuY29uc3Qgc2l6ZXMgPSB7XG4gICdzbWFsbC1lbWJlZCc6IDIwMCxcbiAgZW1iZWQ6IDQwMCxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6IDYwMCxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiA5MDAsXG4gIGRlc2t0b3A6IDEyMDAsXG59XG5cbmNvbnN0IHVzZUxpbmtTdGF0ZSA9IChyZXF1ZXN0LCBkZXBlbmRlbmNpZXMgPSBbXSkgPT4ge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXF1ZXN0KHNldFN0YXRlKVxuICB9LCBkZXBlbmRlbmNpZXMpXG4gIHJldHVybiBzdGF0ZVxufVxuXG5jb25zdCBmbGlwU3RhdGUgPSBzdGF0ZSA9PiAoc3RhdGUgPT09ICdwbGF5aW5nJyA/ICdwYXVzZWQnIDogJ3BsYXlpbmcnKVxuXG4vLyBGSVhNRTogdG9vIGZldyBsaW5lcyB0byBzcGxpdCBhIGZpbGUsIGxvb2tpbmcgYSBiZXR0ZXIgcGxhY2VcbmNvbnN0IGdldFRodW1ibmFpbHNVcmwgPSBzb3VyY2UgPT5cbiAgW10uY29uY2F0KHNvdXJjZSkuZmluZChpdGVtID0+IGl0ZW0udHlwZSA9PT0gJ3RodW1ibmFpbCcpPy5zcmNcblxuY29uc3QgZGVmYXVsdFNldHRpbmdzID0ge31cblxuY29uc3Qgc2hvdWxkUGF1c2UgPSAoe3VzZXJGb2N1cywgdWlUeXBlfSkgPT5cbiAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgL3NldHRpbmdzfGNoYXB0ZXItbGlzdC8udGVzdCh1c2VyRm9jdXMpKSB8fFxuICAvYmxvY2tpbmd8c2Vla2JhcnxzaGFyZS1pbm5lci8udGVzdCh1c2VyRm9jdXMpXG5cbi8vIFRPRE8gZXh0cmFjdCB0byBzb21ld2hlcmUgZWxzZVxuY29uc3QgbWVudUNsYXNzZXMgPSB7XG4gIGRlZmF1bHQ6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzKSxcbiAgZGVza3RvcDogY3NzKExhbmd1YWdlTWVudS5zdHlsZXMsIExhbmd1YWdlTWVudS5kZXNrdG9wU3R5bGVzKSxcbn1cblxuY29uc3QgTGFuZ3VhZ2VTZXR0aW5ncyA9ICh7XG4gIHVpVHlwZSxcbiAgYXVkaW9UcmFja3MgPSBbXSxcbiAgdGV4dFRyYWNrcyA9IFtdLFxuICBnZXRQbGF5ZXIsXG4gIG9uQ2hhbmdlLFxuICBzbG90cyA9IHtMYW5ndWFnZU1lbnV9LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnZXRMYW5ndWFnZU9wdGlvbnMoZ2V0UGxheWVyKCksIHthdWRpb1RyYWNrcywgdGV4dFRyYWNrc30pXG4gIHJldHVybiAoXG4gICAgYXVkaW9UcmFja3MubGVuZ3RoID4gMCAmJlxuICAgIHRleHRUcmFja3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICA8T3ZlcmxheVBhbmVsXG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICB0aXRsZT1cIuWtl+W5leODu+mfs+WjsOOCkuWIh+OCiuabv+OBiOOCi1wiXG4gICAgICAgIGJ1dHRvbkljb249XCJzdWJ0aXRsZVwiXG4gICAgICA+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIGF1ZGlvVHJhY2s6IGFwcEF1ZGlvVHJhY2ssXG4gIHRleHRUcmFjazogYXBwVGV4dFRyYWNrLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgICAgb3RoZXJTZWN0aW9uczogYXBwU2V0dGluZ3Muc2VjdGlvbnMsXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHtwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLCB2YWx1ZXMsIHNlY3Rpb25zfVxuICAgIH0pXG4gIH1cbiAgY29uc3QgZGlzbWlzc1BhbmVscyA9ICgpID0+IHtcbiAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgaWYgKHJlZnMuY3VycmVudC5jbG9zZU1lbnUpIHtcbiAgICAgIHJlZnMuY3VycmVudC5jbG9zZU1lbnUoKVxuICAgICAgcmVmcy5jdXJyZW50LmNsb3NlTWVudSA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuICBjb25zdCBsYXN0U3RhdGUgPSB1c2VSZWYocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgaGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZSA9IChldmVudCwgc3RhdGUpID0+IHtcbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdlcnJvcicpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U/LihldmVudCwgc3RhdGUpXG4gICAgLy8gcHJldmlvdXNseSBVSSBwbGF5YmFjayBzdGF0ZSB3YXMgc3luY2VkIG9ubHkgd2hlblxuICAgIC8vIGV4aXRpbmcgaU9TIHZpZGVvIG9ubHkgZnVsbHNjcmVlbih3ZWJraXRlbmRmdWxsc2NyZWVuKVxuICAgIGlmIChcbiAgICAgIC9wbGF5aW5nfHBhdXNlZC8udGVzdChzdGF0ZSkgJiZcbiAgICAgICEodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgJiZcbiAgICAgICFzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICkge1xuICAgICAgdG9nZ2xlUGxheShzdGF0ZSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnZW5kZWQnKSB7XG4gICAgICBkaXNtaXNzUGFuZWxzKClcbiAgICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2xvYWRpbmcnICYmIGxhc3RTdGF0ZS5jdXJyZW50ICE9PSAnaW5pdCcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdG9nZ2xlUGxheSgncGxheWluZycpLCAxKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdwbGF5aW5nJykge1xuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfVxuICAgIGlmIChsYXN0U3RhdGUuY3VycmVudCA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICBmZXRjaFNldHRpbmdzKClcbiAgICB9XG4gICAgbGFzdFN0YXRlLmN1cnJlbnQgPSBzdGF0ZVxuICAgIHNldFBsYXliYWNrU3RhdGUoc3RhdGUpXG4gIH1cblxuICBjb25zdCBjaGFuZ2VTZXR0aW5ncyA9IChuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSA9IHt9KSA9PiB7XG4gICAgLy8gVE9ETyBjb25zaWRlciBtZXJnZSBpbnRvIHVzZVJlZHVjZXI/XG4gICAgb25DaGFuZ2VTZXR0aW5ncz8uKHtuYW1lLCB2YWx1ZX0pXG4gICAgc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgLi4uY3VycmVudCxcbiAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBbbmFtZV06IHZhbHVlfSxcbiAgICAgIHByZWZlcnJlZDogey4uLmN1cnJlbnQucHJlZmVycmVkLCBbbmFtZV06IHZhbHVlfSxcbiAgICB9KSlcbiAgICBpZiAoIWtlZXBPcGVuKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9XG4gIGNvbnN0IG9wZW5TZXR0aW5ncyA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25GcmFtZSA9XG4gICAgICB1c2VyRm9jdXMgIT09ICdzZXR0aW5ncycgJiZcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIG9uT3BlblNldHRpbmdzPy4oZXZlbnQsIHNldHRpbmdzKVxuICAgICAgICAvLyBJbiBpT1MgU2FmYXJpLCB3ZSBuZWVkIHRvIHVwZGF0ZSBzZXR0aW5ncyBkYXRhXG4gICAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgICAgfSlcbiAgICBzZXRVc2VyRm9jdXMoY3VycmVudCA9PiAoY3VycmVudCA9PT0gJ3NldHRpbmdzJyA/ICcnIDogJ3NldHRpbmdzJykpXG4gICAgcmV0dXJuIGFuaW1hdGlvbkZyYW1lXG4gIH1cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tSYXRlID4gMCkge1xuICAgICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgICAuLi5jdXJyZW50LFxuICAgICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgc3BlZWQ6IGFwcFBsYXliYWNrUmF0ZX0sXG4gICAgICB9KSlcbiAgICB9XG4gIH0sIFthcHBQbGF5YmFja1JhdGVdKVxuXG4gIGNvbnN0IHF1YWxpdHlPcHRpb25zID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRRdWFsaXR5T3B0aW9ucyhzZXR0aW5ncyksXG4gICAgW3NldHRpbmdzLnZhbHVlcy5xdWFsaXR5XVxuICApXG4gIGNvbnN0IHZpZXdNb2RlID0gdXNlTGlua1N0YXRlKHVwZGF0ZSA9PlxuICAgIG9uVmlld01vZGVDaGFuZ2UodmlkZW9SZWYuY3VycmVudCwgdXBkYXRlKVxuICApXG4gIGNvbnN0IHNvdXJjZU92ZXJyaWRlID0gdXNlTGlua1N0YXRlKFxuICAgIGFzeW5jIHVwZGF0ZSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPVxuICAgICAgICBzb3VyY2UgJiYgKGF3YWl0IHF1YWxpdHkucmV3cml0ZU1hbmlmZXN0Py4oc291cmNlLCBxdWFsaXR5T3B0aW9ucykpXG4gICAgICB1cGRhdGUocmVzdWx0IHx8IHNvdXJjZSlcbiAgICB9LFxuICAgIFtzb3VyY2UsIHF1YWxpdHlPcHRpb25zXVxuICApXG4gIGNvbnN0IHdhaXRpbmcgPSAvZW1wdGllZHxsb2FkaW5nfGJ1ZmZlcmluZy8udGVzdChwbGF5YmFja1N0YXRlKVxuICBjb25zdCBhY3RpdmVQbGF5YmFjayA9XG4gICAgcGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnIHx8IHBsYXliYWNrU3RhdGUgPT09ICd3YWl0aW5nJ1xuICBjb25zdCB7XG4gICAgbW9kZTogYXV0b0hpZGVNb2RlLFxuICAgIG9uQ2xpY2ssXG4gICAgb25Nb3VzZU1vdmUsXG4gIH0gPSB1c2VBdXRvSGlkZSh7XG4gICAgcGlubmVkOiAhY29udHJvbHMuYXV0b2hpZGUgfHwgd2FpdGluZyB8fCAhYWN0aXZlUGxheWJhY2sgfHwgdXNlckZvY3VzLFxuICAgIHRhcFRvSGlkZTogdWlUeXBlID09PSAnbW9iaWxlJyxcbiAgICBoaWRlVGltZU1zOiBjb250cm9scy5hdXRvaGlkZSxcbiAgfSlcbiAgY29uc3QgbW9kZSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogY29udHJvbHMuYXV0b2hpZGVcbiAgICAgID8gYXV0b0hpZGVNb2RlXG4gICAgICA6IGNvbnRyb2xzXG4gICAgICA/ICdzaG93bidcbiAgICAgIDogJ2hpZGRlbidcbiAgY29uc3QgY29udHJvbHNEaXNwbGF5ID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnc2Vla2Jhci1vbmx5J1xuICAgICAgOiBjb250cm9scyA9PT0gJ3RpdGxlLW9ubHknIHx8IHBsYXliYWNrU3RhdGUgPT09ICdlbXB0aWVkJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBtb2RlXG4gIGNvbnN0IHNob3VsZEhpZGVQYW5lbHMgPVxuICAgIChjb250cm9scyA9PT0gJ25vLXBhbmVsJyB8fCBjb250cm9sc0Rpc3BsYXkgPT09ICdoaWRkZW4nKSAmJiB1c2VyRm9jdXNcbiAgY29uc3QgaGF2ZVBsYXlQYW5lbCA9XG4gICAgIWJsb2NraW5nICYmXG4gICAgdWlUeXBlID09PSAnZGVza3RvcCcgJiZcbiAgICAhd2FpdGluZyAmJlxuICAgICEvdm9sdW1lfCcnLy50ZXN0KHVzZXJGb2N1cykgJiZcbiAgICAhL3RpdGxlLW9ubHl8bm8tcGFuZWwvLnRlc3QoY29udHJvbHMpICYmXG4gICAgKGNvbnRyb2xzLmF1dG9oaWRlIHx8IG1vZGUgPT09ICdzaG93bicpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2hvdWxkSGlkZVBhbmVscykge1xuICAgICAgZGlzbWlzc1BhbmVscygpXG4gICAgfVxuICB9LCBbc2hvdWxkSGlkZVBhbmVsc10pXG4gIHVzZUVmZmVjdCgoKSA9PiBcbiAgICBvbihjb250YWluZXJSZWYuY3VycmVudCwgJ2ZvY3VzLW1lbnUnLCBldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQuZGV0YWlsPy5zdGF0dXMgPT09ICdvcGVuJykge1xuICAgICAgICBzZXRVc2VyRm9jdXMoJ21lbnUnKVxuICAgICAgICByZWZzLmN1cnJlbnQuY2xvc2VNZW51ID0gKCkgPT4gZXZlbnQuZGV0YWlsLmNsb3NlTWVudT8uKClcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5kZXRhaWw/LnN0YXR1cyA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgICAgc2V0VXNlckZvY3VzKGN1cnJlbnQgPT4gKGN1cnJlbnQgPT09ICdtZW51JyA/ICcnIDogY3VycmVudCkpXG4gICAgICB9XG4gICAgfSlcbiAgLCBbXSlcbiAgY29uc3Qge3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9ID0gbGlua01lZGlhVm9sdW1lKCgpID0+ICh7XG4gICAgdmlkZW86IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgZ2V0UGxheWVyOiAoKSA9PiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgfSkpXG4gIGNvbnN0IGNoYW5nZVByZXZpb3VzID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlUHJldmlvdXMoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuICBjb25zdCBjaGFuZ2VOZXh0ID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlTmV4dChldmVudClcbiAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIHZpZGVvUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2xvYWRzdGFydCcpKVxuICB9XG5cbiAgdXNlRWZmZWN0KGZldGNoU2V0dGluZ3MsIFthcHBTZXR0aW5nc10pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVGhlIGFkQ29udGFpbmVyIHNob3VsZCBiZSBzZXQgYmVmb3JlIGBsb2FkYCBiZWNhdXNlIEltYURhaS5sb2FkIG5lZWRzIGl0LlxuICAgIHBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4gcGx1Z2luLnNldEFkQ29udGFpbmVyPy4oYWRDb250YWluZXJSZWYuY3VycmVudCkpXG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgZGlzcGF0Y2hDaGFwdGVyRXZlbnRzKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIGNoYXB0ZXJzLFxuICAgICAgICBnZXRUaW1lOiAoKSA9PiB2aWRlb1JlZi5jdXJyZW50LmN1cnJlbnRUaW1lLFxuICAgICAgfSksXG4gICAgW2NoYXB0ZXJzXVxuICApXG5cbiAgY29uc3QgaXNFbmQgPSBwbGF5YmFja1N0YXRlID09PSAnZW5kZWQnXG4gIGNvbnN0IGNhblNlZWsgPSAhaXNFbmQgJiYgcGxheWJhY2tUaW1lLmR1cmF0aW9uID4gMFxuICBjb25zdCBkZXJpdmVkUGxheWJhY2tTdGF0ZSA9XG4gICAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpIHx8IHNob3VsZFBhdXNlKHt1c2VyRm9jdXMsIHVpVHlwZX0pXG4gICAgICA/ICdwYXVzZWQnXG4gICAgICA6IHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVcbiAgY29uc3QgYWN0aXZlVGh1bWJuYWlsc1VybCA9XG4gICAgKCF1c2VyRm9jdXMgfHwgdXNlckZvY3VzID09PSAnc2Vla2JhcicpICYmXG4gICAgKGdldFRodW1ibmFpbHNVcmwoc291cmNlKSB8fCB0aHVtYm5haWxzVXJsKVxuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB7XG4gICAgJy0tcGxheWluZyc6IHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyA/ICcxJyA6ICcwJyxcbiAgfVxuICBjb25zdCBvblJld2luZCA9XG4gICAgKCFpc0xpdmUgfHwgcGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMCkgJiZcbiAgICBjYW5TZWVrICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIC0gMTAsICdyZXdpbmQnKSlcbiAgY29uc3Qgb25Gb3J3YXJkID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgKyAxMCwgJ2ZvcndhcmQnKSlcbiAgY29uc3Qgb25DbGlja0JsYW5rID1cbiAgICBoYXZlUGxheVBhbmVsICYmICgoKSA9PiB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KSlcblxuICBjb25zdCB1aUhhbmRsZXJzID0ge1xuICAgIG9uUGxheTogKCkgPT4ge1xuICAgICAgdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSlcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH0sXG4gICAgb25DbGlja0xpdmU6IGlzTGl2ZSAmJiAoKCkgPT4gc2V0VGFyZ2V0VGltZSgwLCAnc2Vla1RvTGl2ZScpKSxcbiAgICBvbkNsaWNrU2Vla2JhcjogKCkgPT4ge1xuICAgICAgcmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiBzZXRVc2VyRm9jdXMoJ3NlZWtiYXInKSxcbiAgICAgICAgNjZcbiAgICAgIClcbiAgICB9LFxuICAgIG9uU2VlazogdGltZSA9PiB7XG4gICAgICBzZXRUYXJnZXRUaW1lKHRpbWUsICdzZWVrJylcbiAgICAgIGNsZWFyVGltZW91dChyZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cylcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gc2V0VXNlckZvY3VzKCcnKSwgNjYpXG4gICAgfSxcbiAgICBvbkNoYW5nZVNldHRpbmdzOiAoe25hbWUsIHZhbHVlLCBrZWVwT3Blbn0pID0+XG4gICAgICBjaGFuZ2VTZXR0aW5ncyhuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSksXG4gICAgb25DbG9zZVNldHRpbmdzOiBldmVudCA9PiB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBzbG90UHJvcHM/LnNldHRpbmdzPy5vbkNsb3NlPy4oZXZlbnQpXG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IHVpRWxlbWVudHMgPSB7XG4gICAgbGl2ZUJ1dHRvbjogdWlIYW5kbGVycy5vbkNsaWNrTGl2ZSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5MaXZlQnV0dG9uXG4gICAgICAgIHVzaW5nU3RhcnRPdmVyPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwfVxuICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlfVxuICAgICAgLz5cbiAgICApLFxuICAgIGNvbnRyb2xCdXR0b25zOiB7XG4gICAgICBwbGF5QnV0dG9uOiAoXG4gICAgICAgIDxQbGF5QnV0dG9uXG4gICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgZW5kZWQ9e2lzRW5kfVxuICAgICAgICAgIGhpZGRlbj17XG4gICAgICAgICAgICB1aVR5cGUgPT09ICdtb2JpbGUnICYmICh3YWl0aW5nIHx8IC9sb2FkaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpKVxuICAgICAgICAgIH1cbiAgICAgICAgICB2YXJpYW50PXshaXNVc2VyQWN0aXZlICYmICdmaXJzdHBsYXknfVxuICAgICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25QbGF5fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHJld2luZEJ1dHRvbjogb25SZXdpbmQgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicmV3aW5kMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5SRVdJTkRcIlxuICAgICAgICAgIGRpc2FibGVkPXtpc0VuZH1cbiAgICAgICAgICBvbkNsaWNrPXtvblJld2luZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBmb3J3YXJkQnV0dG9uOiBvbkZvcndhcmQgJiYgKFxuICAgICAgICA8Rm9yd2FyZEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cImZvcndhcmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLkZPUldBUkRcIlxuICAgICAgICAgIGRpc2FibGVkPXshY2FuU2Vla31cbiAgICAgICAgICBvbkNsaWNrPXtvbkZvcndhcmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgbmV4dEVwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cIm5leHRcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5ORVhUXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlTmV4dH1cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VOZXh0fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHByZXZpb3VzRXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicHJldmlvdXNcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5QUkVWSU9VU1wiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZVByZXZpb3VzfVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZVByZXZpb3VzfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICB9LFxuICAgIHNlZWtiYXI6IChcbiAgICAgIDxjb21wb25lbnRzLlNlZWtiYXJcbiAgICAgICAgc3R5bGU9ey92b2x1bWUvLnRlc3QodXNlckZvY3VzKSAmJiB7b3BhY2l0eTogJzAnfX1cbiAgICAgICAgc3RhcnRUaW1lPXtwbGF5YmFja1RpbWUuc3RhcnRUaW1lfVxuICAgICAgICBjdXJyZW50VGltZT17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lfVxuICAgICAgICBidWZmZXJUaW1lPXtwbGF5YmFja1RpbWUuYnVmZmVyVGltZX1cbiAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNsaWNrU2Vla2Jhcn1cbiAgICAgICAgb25DaGFuZ2VDb21taXR0ZWQ9e3VpSGFuZGxlcnMub25TZWVrfVxuICAgICAgICBtYXJrcz17bWFya3N9XG4gICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgIHsuLi5zbG90UHJvcHMuc2Vla2Jhcn1cbiAgICAgID5cbiAgICAgICAge2FjdGl2ZVRodW1ibmFpbHNVcmwgJiYgKFxuICAgICAgICAgIDxTZWVrUHJldmlld1xuICAgICAgICAgICAgdGh1bWJuYWlsc1VybD17YWN0aXZlVGh1bWJuYWlsc1VybH1cbiAgICAgICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvY29tcG9uZW50cy5TZWVrYmFyPlxuICAgICksXG4gICAgZGlzcGxheVRpbWU6IDxjb21wb25lbnRzLkRpc3BsYXlUaW1lIHsuLi5wbGF5YmFja1RpbWV9IC8+LFxuICAgIGZ1bGxzY3JlZW5CdXR0b246IChcbiAgICAgIDxGdWxsc2NyZWVuQnV0dG9uXG4gICAgICAgIHZpZXdNb2RlPXt2aWV3TW9kZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gdG9nZ2xlRnVsbHNjcmVlbihjb250YWluZXJSZWYuY3VycmVudCl9XG4gICAgICAvPlxuICAgICksXG4gICAgdm9sdW1lQ29udHJvbDogd2lkdGggPj0gc2l6ZXNbJ3NtYWxsLWVtYmVkJ10gJiYgKFxuICAgICAgPGNvbXBvbmVudHMuVm9sdW1lQ29udHJvbFxuICAgICAgICB7Li4ue3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9fVxuICAgICAgICBvbk1vdXNlT3Zlcj17KCkgPT4gc2V0VXNlckZvY3VzKCd2b2x1bWUnKX1cbiAgICAgICAgb25Nb3VzZU91dD17KCkgPT4gc2V0VXNlckZvY3VzKCcnKX1cbiAgICAgICAgey4uLnNsb3RQcm9wcz8udm9sdW1lQ29udHJvbH1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBiYWNrSXRlbXM6IChcbiAgICAgIDxQbGF5UGFuZWwgYW5pbWF0aW9uPXt0YXJnZXRTdGF0ZS5hbmltYXRpb259IG9uQ2xpY2s9e29uQ2xpY2tCbGFua30gLz5cbiAgICApLFxuICB9XG4gIGNvbnN0IGNvbXBhdGliaWxpdHlDYXN0UHJvcHMgPSBjYXN0T3B0aW9ucyA9PT0gJ2NvbXBhdGlibGUnICYmIHtcbiAgICBzb3VyY2UsXG4gICAgdmFsdWVzOiB7dGl0bGUsIC4uLnNldHRpbmdzLnZhbHVlcywgLi4uaW50bCwgbW9kdWxlc0NvbmZpZ30sXG4gICAgb25Mb2FkOiBvbkNhc3QsXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXN0T3B0aW9ucyAmJiBjYXN0T3B0aW9ucyAhPT0gJ2NvbXBhdGlibGUnKSB7XG4gICAgICByZXR1cm4gbGlua0Nhc3Qoe3NvdXJjZSwgLi4uY2FzdE9wdGlvbnN9KVxuICAgIH0gLy8gVE9ETyBwbGF5bGlzdCwgYXVkaW8gLyBzdWJ0aXRsZSBzZXR0aW5nXG4gIH0sIFtzb3VyY2UsIGNhc3RPcHRpb25zLmNvbnRlbnRJZCwgY2FzdE9wdGlvbnMuY3VzdG9tRGF0YV0pXG4gIGNvbnN0IHNlbGVjdGVkQXVkaW9UcmFjayA9IHNldHRpbmdzLnByZWZlcnJlZD8uYXVkaW8gfHwgYXBwQXVkaW9UcmFja1xuICBjb25zdCBzZWxlY3RlZFRleHRUcmFjayA9IHNldHRpbmdzLnByZWZlcnJlZD8uc3VidGl0bGVzIHx8IGFwcFRleHRUcmFja1xuXG4gIHJldHVybiAoXG4gICAgPEludGxQcm92aWRlciB7Li4uaW50bH0+XG4gICAgICA8TGF5b3V0XG4gICAgICAgIHN0eWxlPXt7Li4uc3R5bGUsIGNzc1ZhcmlhYmxlc319XG4gICAgICAgIHR5cGU9e3VpVHlwZX1cbiAgICAgICAgZGlzcGxheT17bW9kZX1cbiAgICAgICAgY29udHJvbHNEaXNwbGF5PXtjb250cm9sc0Rpc3BsYXl9XG4gICAgICAgIHNpemU9e3NpemV9XG4gICAgICAgIHZpZGVvPXtcbiAgICAgICAgICA8VmlkZW9cbiAgICAgICAgICAgIHsuLi52aWRlb1Byb3BzfVxuICAgICAgICAgICAgdmlkZW9SZWY9e211bHRpUmVmKHZpZGVvUmVmLCB2aWRlb1Byb3BzLnZpZGVvUmVmKX1cbiAgICAgICAgICAgIHNvdXJjZT17XG4gICAgICAgICAgICAgIGNhc3RTdGF0ZSAhPT0gQ2FzdFN0YXRlLkNPTk5FQ1RFRCAmJlxuICAgICAgICAgICAgICBwbGF5YmFja1N0YXRlICE9PSAnZXJyb3InICYmXG4gICAgICAgICAgICAgIHNvdXJjZU92ZXJyaWRlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwbGF5YmFja1N0YXRlPXtkZXJpdmVkUGxheWJhY2tTdGF0ZX1cbiAgICAgICAgICAgIGN1cnJlbnRUaW1lPXt0YXJnZXRTdGF0ZS5jdXJyZW50VGltZX1cbiAgICAgICAgICAgIHsuLi4oYXBwVm9sdW1lID49IDAgJiYge3ZvbHVtZTogYXBwVm9sdW1lLCBtdXRlZDogYXBwVm9sdW1lIDw9IDB9KX1cbiAgICAgICAgICAgIHBsYXliYWNrUmF0ZT17c2V0dGluZ3MudmFsdWVzLnNwZWVkfVxuICAgICAgICAgICAgdmlkZW9SZXNvbHV0aW9uPXtxdWFsaXR5T3B0aW9uc31cbiAgICAgICAgICAgIGF1ZGlvVHJhY2s9e3NlbGVjdGVkQXVkaW9UcmFja31cbiAgICAgICAgICAgIHRleHRUcmFjaz17c2VsZWN0ZWRUZXh0VHJhY2t9XG4gICAgICAgICAgICBsb29wPXtzZXR0aW5ncy52YWx1ZXMubG9vcH1cbiAgICAgICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgICAgICBtb2R1bGVzQ29uZmlnPXttb2R1bGVzQ29uZmlnfVxuICAgICAgICAgICAgb25QbGF5bG9nRmlyZWQ9e29uUGxheWxvZ0ZpcmVkfVxuICAgICAgICAgICAgb25FcnJvcj17ZXJyb3JIYW5kbGVyfVxuICAgICAgICAgICAgb25QbGF5YmFja1N0YXRlQ2hhbmdlPXtoYW5kbGVQbGF5YmFja1N0YXRlQ2hhbmdlfVxuICAgICAgICAgICAgb25CbG9ja2VkQXV0b3BsYXk9e2Vycm9yID0+IG9uQmxvY2tlZEF1dG9wbGF5Py4oZXJyb3IpfVxuICAgICAgICAgICAgb25DYW5QbGF5PXtldmVudCA9PiB7XG4gICAgICAgICAgICAgIHVwZGF0ZVBsYXliYWNrVGltZShldmVudClcbiAgICAgICAgICAgICAgdmlkZW9Qcm9wcy5vbkNhblBsYXk/LihldmVudClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvblRpbWVVcGRhdGU9e3VwZGF0ZVBsYXliYWNrVGltZX1cbiAgICAgICAgICAgIG9uRHVyYXRpb25DaGFuZ2U9e3VwZGF0ZVBsYXliYWNrVGltZX1cbiAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPXtwbGF5ZXIgPT4ge1xuICAgICAgICAgICAgICBwbGF5ZXJSZWYuY3VycmVudCA9IHBsYXllclxuICAgICAgICAgICAgICBvblBsYXllckxvYWRlZD8uKHBsYXllcilcbiAgICAgICAgICAgICAgc3luY1ZvbHVtZSh2aWRlb1JlZi5jdXJyZW50LCB2aWRlb1Byb3BzLm11dGVkID8gMCA6IGFwcFZvbHVtZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICBjb250YWluZXJSZWY9e2VsZW1lbnQgPT4ge1xuICAgICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50ID0gZWxlbWVudFxuICAgICAgICAgIG9ic2VydmUoZWxlbWVudClcbiAgICAgICAgfX1cbiAgICAgICAgYmFja1JlZj17YWRDb250YWluZXJSZWZ9XG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgY2hhbm5lbFRpdGxlPXtjaGFubmVsVGl0bGV9XG4gICAgICAgIGJhY2tCdXR0b249e29uQmFjayAmJiA8QnV0dG9uIHN0YXJ0SWNvbj1cImJhY2tcIiBvbkNsaWNrPXtvbkJhY2t9IC8+fVxuICAgICAgICB7Li4uKGlzVXNlckFjdGl2ZSAmJiB1aUVsZW1lbnRzKX1cbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgb25Nb3VzZU1vdmU9e29uTW91c2VNb3ZlfVxuICAgICAgPlxuICAgICAgICA8TG9hZGluZ1NwaW5uZXIgYWN0aXZlPXt3YWl0aW5nfSAvPlxuICAgICAgICB7ZXJyb3JEYXRhICYmIDxFcnJvciBlcnJvcj17ZXJyb3JEYXRhfSBvbkJhY2s9e29uQmFja30gLz59XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgey8qIFRPRE8gc3luYyBDYXN0IGxhc3QgcGxheWVkIHRpbWUgYmFjayAqL31cbiAgICAgICAge2lzVXNlckFjdGl2ZSAmJiAoXG4gICAgICAgICAgPGNvbXBvbmVudHMuQ2FzdFVpXG4gICAgICAgICAgICBvbkJhY2s9e29uQmFja31cbiAgICAgICAgICAgIG9uU3RhdGVDaGFuZ2U9e3NldENhc3RTdGF0ZX1cbiAgICAgICAgICAgIG9uTG9hZD17b25DYXN0fVxuICAgICAgICAgICAgey4uLmNvbXBhdGliaWxpdHlDYXN0UHJvcHN9XG4gICAgICAgICAgICB7Li4uc2xvdFByb3BzLmNhc3RVaX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmICggLy8gVE9ETzogRGVzaWduIDxFeHRlbnN0aW9uIC8+IGZsYWdcbiAgICAgICAgICA8Y29tcG9uZW50cy5TZXR0aW5nc1xuICAgICAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICAgICAgc2VjdGlvbnM9e3NldHRpbmdzLnNlY3Rpb25zfVxuICAgICAgICAgICAgLy8gVE9ETyBoYXNCb3R0b21QYW5lbCBib3R0b206IDhlbVxuICAgICAgICAgICAgb3Blbj17dXNlckZvY3VzID09PSAnc2V0dGluZ3MnfVxuICAgICAgICAgICAgdmFsdWVzPXtzZXR0aW5ncy52YWx1ZXN9XG4gICAgICAgICAgICBvbk9wZW49e29wZW5TZXR0aW5nc31cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt1aUhhbmRsZXJzLm9uQ2hhbmdlU2V0dGluZ3N9XG4gICAgICAgICAgICB7Li4uc2xvdFByb3BzPy5zZXR0aW5nc31cbiAgICAgICAgICAgIG9uQ2xvc2U9e3VpSGFuZGxlcnMub25DbG9zZVNldHRpbmdzfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIDxMYW5ndWFnZVNldHRpbmdzXG4gICAgICAgICAgdWlUeXBlPXt1aVR5cGV9XG4gICAgICAgICAgZ2V0UGxheWVyPXsoKSA9PiBwbGF5ZXJSZWYuY3VycmVudH1cbiAgICAgICAgICBvbkNoYW5nZT17KF9ldmVudCwgaXRlbSkgPT5cbiAgICAgICAgICAgIHVpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5ncyh7XG4gICAgICAgICAgICAgIG5hbWU6IGl0ZW0udHlwZSxcbiAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXG4gICAgICAgICAgICAgIGtlZXBPcGVuOiB0cnVlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgey4uLnNsb3RQcm9wcy5sYW5ndWFnZVNldHRpbmdzfVxuICAgICAgICAvPlxuICAgICAgICA8QmFja2Ryb3Agb3Blbj17IXBsYXliYWNrU3RhdGUgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2xvYWRpbmcnfT5cbiAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgPC9CYWNrZHJvcD5cbiAgICAgIDwvTGF5b3V0PlxuICAgIDwvSW50bFByb3ZpZGVyPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IFByZW1pdW1QbGF5ZXJcbiJdfQ== */"),
9318
+ desktop: /*#__PURE__*/css$1(LanguageMenu.styles, LanguageMenu.desktopStyles, process.env.NODE_ENV === "production" ? "" : ";label:desktop;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0VXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtpc0Rlc2t0b3B9IGZyb20gJ3V0aWwvZW52aXJvbm1lbnQnXG5pbXBvcnQgbXVsdGlSZWYgZnJvbSAndXRpbC9tdWx0aVJlZidcbmltcG9ydCB7b25WaWV3TW9kZUNoYW5nZSwgdG9nZ2xlRnVsbHNjcmVlbn0gZnJvbSAndXRpbC92aWV3TW9kZXMnXG5pbXBvcnQge3VzZUF1dG9IaWRlfSBmcm9tICdob29rcydcbmltcG9ydCB7SW50bFByb3ZpZGVyfSBmcm9tICdjb250ZXh0L0kxOG4nXG5pbXBvcnQge2dldE1lZGlhVGltZSwgaXNCdWZmZXJlZH0gZnJvbSAncGxheWVyQ29yZS9tZWRpYUJpbmRpbmdzJ1xuaW1wb3J0IEVycm9yIGZyb20gJ3BsYXllclVpL0Vycm9yJ1xuaW1wb3J0IExheW91dCBmcm9tICdwbGF5ZXJVaS9EZWZhdWx0TGF5b3V0J1xuaW1wb3J0IHtcbiAgQnV0dG9uLFxuICBMaXZlQnV0dG9uLFxuICBGdWxsc2NyZWVuQnV0dG9uLFxuICBQbGF5QnV0dG9uLFxuICBGb3J3YXJkQnV0dG9uLFxufSBmcm9tICdwbGF5ZXJVaS9idXR0b25zJ1xuaW1wb3J0IFNlZWtiYXIgZnJvbSAncGxheWVyVWkvU2Vla2JhcidcbmltcG9ydCBEaXNwbGF5VGltZSBmcm9tICdwbGF5ZXJVaS9EaXNwbGF5VGltZSdcbmltcG9ydCBMb2FkaW5nU3Bpbm5lciBmcm9tICdwbGF5ZXJVaS9Mb2FkaW5nU3Bpbm5lcidcbmltcG9ydCBCYWNrZHJvcCBmcm9tICdwbGF5ZXJVaS9CYWNrZHJvcCdcbmltcG9ydCBTZXR0aW5ncyBmcm9tICdwbGF5ZXJVaS9TZXR0aW5ncydcbmltcG9ydCBPdmVybGF5UGFuZWwgZnJvbSAncGxheWVyVWkvT3ZlcmxheVBhbmVsJ1xuaW1wb3J0IExhbmd1YWdlTWVudSBmcm9tICdwbGF5ZXJVaS9MYW5ndWFnZU1lbnUnXG5pbXBvcnQgUGxheVBhbmVsIGZyb20gJ3BsYXllclVpL1BsYXlQYW5lJ1xuaW1wb3J0IFZvbHVtZUNvbnRyb2wgZnJvbSAnY29tcG9uZW50L1ZvbHVtZUNvbnRyb2wnXG5pbXBvcnQgQ2FzdFVpIGZyb20gJ2Nhc3QvQ2FzdFVpJ1xuaW1wb3J0IHtsaW5rQ2FzdH0gZnJvbSAnY2FzdC9mcmFtZXdvcmsnXG5pbXBvcnQge0Nhc3RTdGF0ZX0gZnJvbSAnRW51bSdcbmltcG9ydCB7ZGlzcGF0Y2hDaGFwdGVyRXZlbnRzfSBmcm9tICcuL3RpbWVsaW5lJ1xuaW1wb3J0IFZpZGVvIGZyb20gJy4uL1ZpZGVvJ1xuaW1wb3J0IHtnZXRMYW5ndWFnZU9wdGlvbnMsIGdldFF1YWxpdHlPcHRpb25zLCBnZXRTZXR0aW5nc0RhdGF9IGZyb20gJy4vc2V0dGluZ3MnXG5pbXBvcnQge2xpbmtNZWRpYVZvbHVtZSwgc3luY1ZvbHVtZX0gZnJvbSAnLi92b2x1bWUnXG5pbXBvcnQgU2Vla1ByZXZpZXcgZnJvbSAnLi9TZWVrUHJldmlldydcblxuY29uc3Qgc2l6ZXMgPSB7XG4gICdzbWFsbC1lbWJlZCc6IDIwMCxcbiAgZW1iZWQ6IDQwMCxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6IDYwMCxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiA5MDAsXG4gIGRlc2t0b3A6IDEyMDAsXG59XG5cbmNvbnN0IHVzZUxpbmtTdGF0ZSA9IChyZXF1ZXN0LCBkZXBlbmRlbmNpZXMgPSBbXSkgPT4ge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXF1ZXN0KHNldFN0YXRlKVxuICB9LCBkZXBlbmRlbmNpZXMpXG4gIHJldHVybiBzdGF0ZVxufVxuXG5jb25zdCBmbGlwU3RhdGUgPSBzdGF0ZSA9PiAoc3RhdGUgPT09ICdwbGF5aW5nJyA/ICdwYXVzZWQnIDogJ3BsYXlpbmcnKVxuXG4vLyBGSVhNRTogdG9vIGZldyBsaW5lcyB0byBzcGxpdCBhIGZpbGUsIGxvb2tpbmcgYSBiZXR0ZXIgcGxhY2VcbmNvbnN0IGdldFRodW1ibmFpbHNVcmwgPSBzb3VyY2UgPT5cbiAgW10uY29uY2F0KHNvdXJjZSkuZmluZChpdGVtID0+IGl0ZW0udHlwZSA9PT0gJ3RodW1ibmFpbCcpPy5zcmNcblxuY29uc3QgZGVmYXVsdFNldHRpbmdzID0ge31cblxuY29uc3Qgc2hvdWxkUGF1c2UgPSAoe3VzZXJGb2N1cywgdWlUeXBlfSkgPT5cbiAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgL3NldHRpbmdzfGNoYXB0ZXItbGlzdC8udGVzdCh1c2VyRm9jdXMpKSB8fFxuICAvYmxvY2tpbmd8c2Vla2JhcnxzaGFyZS1pbm5lci8udGVzdCh1c2VyRm9jdXMpXG5cbi8vIFRPRE8gZXh0cmFjdCB0byBzb21ld2hlcmUgZWxzZVxuY29uc3QgbWVudUNsYXNzZXMgPSB7XG4gIGRlZmF1bHQ6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzKSxcbiAgZGVza3RvcDogY3NzKExhbmd1YWdlTWVudS5zdHlsZXMsIExhbmd1YWdlTWVudS5kZXNrdG9wU3R5bGVzKSxcbn1cblxuY29uc3QgTGFuZ3VhZ2VTZXR0aW5ncyA9ICh7XG4gIHVpVHlwZSxcbiAgYXVkaW9UcmFja3MgPSBbXSxcbiAgdGV4dFRyYWNrcyA9IFtdLFxuICBnZXRQbGF5ZXIsXG4gIG9uQ2hhbmdlLFxuICBzbG90cyA9IHtMYW5ndWFnZU1lbnV9LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnZXRMYW5ndWFnZU9wdGlvbnMoZ2V0UGxheWVyKCksIHthdWRpb1RyYWNrcywgdGV4dFRyYWNrc30pXG4gIHJldHVybiAoXG4gICAgYXVkaW9UcmFja3MubGVuZ3RoID4gMCAmJlxuICAgIHRleHRUcmFja3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICA8T3ZlcmxheVBhbmVsXG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICB0aXRsZT1cIuWtl+W5leODu+mfs+WjsOOCkuWIh+OCiuabv+OBiOOCi1wiXG4gICAgICAgIGJ1dHRvbkljb249XCJzdWJ0aXRsZVwiXG4gICAgICA+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIGF1ZGlvVHJhY2s6IGFwcEF1ZGlvVHJhY2ssXG4gIHRleHRUcmFjazogYXBwVGV4dFRyYWNrLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgICAgb3RoZXJTZWN0aW9uczogYXBwU2V0dGluZ3Muc2VjdGlvbnMsXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHtwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLCB2YWx1ZXMsIHNlY3Rpb25zfVxuICAgIH0pXG4gIH1cbiAgY29uc3QgZGlzbWlzc1BhbmVscyA9ICgpID0+IHtcbiAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgaWYgKHJlZnMuY3VycmVudC5jbG9zZU1lbnUpIHtcbiAgICAgIHJlZnMuY3VycmVudC5jbG9zZU1lbnUoKVxuICAgICAgcmVmcy5jdXJyZW50LmNsb3NlTWVudSA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuICBjb25zdCBsYXN0U3RhdGUgPSB1c2VSZWYocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgaGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZSA9IChldmVudCwgc3RhdGUpID0+IHtcbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdlcnJvcicpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U/LihldmVudCwgc3RhdGUpXG4gICAgLy8gcHJldmlvdXNseSBVSSBwbGF5YmFjayBzdGF0ZSB3YXMgc3luY2VkIG9ubHkgd2hlblxuICAgIC8vIGV4aXRpbmcgaU9TIHZpZGVvIG9ubHkgZnVsbHNjcmVlbih3ZWJraXRlbmRmdWxsc2NyZWVuKVxuICAgIGlmIChcbiAgICAgIC9wbGF5aW5nfHBhdXNlZC8udGVzdChzdGF0ZSkgJiZcbiAgICAgICEodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgJiZcbiAgICAgICFzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICkge1xuICAgICAgdG9nZ2xlUGxheShzdGF0ZSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnZW5kZWQnKSB7XG4gICAgICBkaXNtaXNzUGFuZWxzKClcbiAgICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2xvYWRpbmcnICYmIGxhc3RTdGF0ZS5jdXJyZW50ICE9PSAnaW5pdCcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdG9nZ2xlUGxheSgncGxheWluZycpLCAxKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdwbGF5aW5nJykge1xuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfVxuICAgIGlmIChsYXN0U3RhdGUuY3VycmVudCA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICBmZXRjaFNldHRpbmdzKClcbiAgICB9XG4gICAgbGFzdFN0YXRlLmN1cnJlbnQgPSBzdGF0ZVxuICAgIHNldFBsYXliYWNrU3RhdGUoc3RhdGUpXG4gIH1cblxuICBjb25zdCBjaGFuZ2VTZXR0aW5ncyA9IChuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSA9IHt9KSA9PiB7XG4gICAgLy8gVE9ETyBjb25zaWRlciBtZXJnZSBpbnRvIHVzZVJlZHVjZXI/XG4gICAgb25DaGFuZ2VTZXR0aW5ncz8uKHtuYW1lLCB2YWx1ZX0pXG4gICAgc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgLi4uY3VycmVudCxcbiAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBbbmFtZV06IHZhbHVlfSxcbiAgICAgIHByZWZlcnJlZDogey4uLmN1cnJlbnQucHJlZmVycmVkLCBbbmFtZV06IHZhbHVlfSxcbiAgICB9KSlcbiAgICBpZiAoIWtlZXBPcGVuKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9XG4gIGNvbnN0IG9wZW5TZXR0aW5ncyA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBhbmltYXRpb25GcmFtZSA9XG4gICAgICB1c2VyRm9jdXMgIT09ICdzZXR0aW5ncycgJiZcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIG9uT3BlblNldHRpbmdzPy4oZXZlbnQsIHNldHRpbmdzKVxuICAgICAgICAvLyBJbiBpT1MgU2FmYXJpLCB3ZSBuZWVkIHRvIHVwZGF0ZSBzZXR0aW5ncyBkYXRhXG4gICAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgICAgfSlcbiAgICBzZXRVc2VyRm9jdXMoY3VycmVudCA9PiAoY3VycmVudCA9PT0gJ3NldHRpbmdzJyA/ICcnIDogJ3NldHRpbmdzJykpXG4gICAgcmV0dXJuIGFuaW1hdGlvbkZyYW1lXG4gIH1cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tSYXRlID4gMCkge1xuICAgICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiAoe1xuICAgICAgICAuLi5jdXJyZW50LFxuICAgICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgc3BlZWQ6IGFwcFBsYXliYWNrUmF0ZX0sXG4gICAgICB9KSlcbiAgICB9XG4gIH0sIFthcHBQbGF5YmFja1JhdGVdKVxuXG4gIGNvbnN0IHF1YWxpdHlPcHRpb25zID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRRdWFsaXR5T3B0aW9ucyhzZXR0aW5ncyksXG4gICAgW3NldHRpbmdzLnZhbHVlcy5xdWFsaXR5XVxuICApXG4gIGNvbnN0IHZpZXdNb2RlID0gdXNlTGlua1N0YXRlKHVwZGF0ZSA9PlxuICAgIG9uVmlld01vZGVDaGFuZ2UodmlkZW9SZWYuY3VycmVudCwgdXBkYXRlKVxuICApXG4gIGNvbnN0IHNvdXJjZU92ZXJyaWRlID0gdXNlTGlua1N0YXRlKFxuICAgIGFzeW5jIHVwZGF0ZSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPVxuICAgICAgICBzb3VyY2UgJiYgKGF3YWl0IHF1YWxpdHkucmV3cml0ZU1hbmlmZXN0Py4oc291cmNlLCBxdWFsaXR5T3B0aW9ucykpXG4gICAgICB1cGRhdGUocmVzdWx0IHx8IHNvdXJjZSlcbiAgICB9LFxuICAgIFtzb3VyY2UsIHF1YWxpdHlPcHRpb25zXVxuICApXG4gIGNvbnN0IHdhaXRpbmcgPSAvZW1wdGllZHxsb2FkaW5nfGJ1ZmZlcmluZy8udGVzdChwbGF5YmFja1N0YXRlKVxuICBjb25zdCBhY3RpdmVQbGF5YmFjayA9XG4gICAgcGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnIHx8IHBsYXliYWNrU3RhdGUgPT09ICd3YWl0aW5nJ1xuICBjb25zdCB7XG4gICAgbW9kZTogYXV0b0hpZGVNb2RlLFxuICAgIG9uQ2xpY2ssXG4gICAgb25Nb3VzZU1vdmUsXG4gIH0gPSB1c2VBdXRvSGlkZSh7XG4gICAgcGlubmVkOiAhY29udHJvbHMuYXV0b2hpZGUgfHwgd2FpdGluZyB8fCAhYWN0aXZlUGxheWJhY2sgfHwgdXNlckZvY3VzLFxuICAgIHRhcFRvSGlkZTogdWlUeXBlID09PSAnbW9iaWxlJyxcbiAgICBoaWRlVGltZU1zOiBjb250cm9scy5hdXRvaGlkZSxcbiAgfSlcbiAgY29uc3QgbW9kZSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogY29udHJvbHMuYXV0b2hpZGVcbiAgICAgID8gYXV0b0hpZGVNb2RlXG4gICAgICA6IGNvbnRyb2xzXG4gICAgICA/ICdzaG93bidcbiAgICAgIDogJ2hpZGRlbidcbiAgY29uc3QgY29udHJvbHNEaXNwbGF5ID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnc2Vla2Jhci1vbmx5J1xuICAgICAgOiBjb250cm9scyA9PT0gJ3RpdGxlLW9ubHknIHx8IHBsYXliYWNrU3RhdGUgPT09ICdlbXB0aWVkJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBtb2RlXG4gIGNvbnN0IHNob3VsZEhpZGVQYW5lbHMgPVxuICAgIChjb250cm9scyA9PT0gJ25vLXBhbmVsJyB8fCBjb250cm9sc0Rpc3BsYXkgPT09ICdoaWRkZW4nKSAmJiB1c2VyRm9jdXNcbiAgY29uc3QgaGF2ZVBsYXlQYW5lbCA9XG4gICAgIWJsb2NraW5nICYmXG4gICAgdWlUeXBlID09PSAnZGVza3RvcCcgJiZcbiAgICAhd2FpdGluZyAmJlxuICAgICEvdm9sdW1lfCcnLy50ZXN0KHVzZXJGb2N1cykgJiZcbiAgICAhL3RpdGxlLW9ubHl8bm8tcGFuZWwvLnRlc3QoY29udHJvbHMpICYmXG4gICAgKGNvbnRyb2xzLmF1dG9oaWRlIHx8IG1vZGUgPT09ICdzaG93bicpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2hvdWxkSGlkZVBhbmVscykge1xuICAgICAgZGlzbWlzc1BhbmVscygpXG4gICAgfVxuICB9LCBbc2hvdWxkSGlkZVBhbmVsc10pXG4gIHVzZUVmZmVjdCgoKSA9PiBcbiAgICBvbihjb250YWluZXJSZWYuY3VycmVudCwgJ2ZvY3VzLW1lbnUnLCBldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQuZGV0YWlsPy5zdGF0dXMgPT09ICdvcGVuJykge1xuICAgICAgICBzZXRVc2VyRm9jdXMoJ21lbnUnKVxuICAgICAgICByZWZzLmN1cnJlbnQuY2xvc2VNZW51ID0gKCkgPT4gZXZlbnQuZGV0YWlsLmNsb3NlTWVudT8uKClcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5kZXRhaWw/LnN0YXR1cyA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgICAgc2V0VXNlckZvY3VzKGN1cnJlbnQgPT4gKGN1cnJlbnQgPT09ICdtZW51JyA/ICcnIDogY3VycmVudCkpXG4gICAgICB9XG4gICAgfSlcbiAgLCBbXSlcbiAgY29uc3Qge3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9ID0gbGlua01lZGlhVm9sdW1lKCgpID0+ICh7XG4gICAgdmlkZW86IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgZ2V0UGxheWVyOiAoKSA9PiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgfSkpXG4gIGNvbnN0IGNoYW5nZVByZXZpb3VzID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlUHJldmlvdXMoZXZlbnQpXG4gICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB2aWRlb1JlZi5jdXJyZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdsb2Fkc3RhcnQnKSlcbiAgfVxuICBjb25zdCBjaGFuZ2VOZXh0ID0gZXZlbnQgPT4ge1xuICAgIG9uQ2hhbmdlTmV4dChldmVudClcbiAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIHZpZGVvUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2xvYWRzdGFydCcpKVxuICB9XG5cbiAgdXNlRWZmZWN0KGZldGNoU2V0dGluZ3MsIFthcHBTZXR0aW5nc10pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVGhlIGFkQ29udGFpbmVyIHNob3VsZCBiZSBzZXQgYmVmb3JlIGBsb2FkYCBiZWNhdXNlIEltYURhaS5sb2FkIG5lZWRzIGl0LlxuICAgIHBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4gcGx1Z2luLnNldEFkQ29udGFpbmVyPy4oYWRDb250YWluZXJSZWYuY3VycmVudCkpXG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgZGlzcGF0Y2hDaGFwdGVyRXZlbnRzKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIGNoYXB0ZXJzLFxuICAgICAgICBnZXRUaW1lOiAoKSA9PiB2aWRlb1JlZi5jdXJyZW50LmN1cnJlbnRUaW1lLFxuICAgICAgfSksXG4gICAgW2NoYXB0ZXJzXVxuICApXG5cbiAgY29uc3QgaXNFbmQgPSBwbGF5YmFja1N0YXRlID09PSAnZW5kZWQnXG4gIGNvbnN0IGNhblNlZWsgPSAhaXNFbmQgJiYgcGxheWJhY2tUaW1lLmR1cmF0aW9uID4gMFxuICBjb25zdCBkZXJpdmVkUGxheWJhY2tTdGF0ZSA9XG4gICAgKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpIHx8IHNob3VsZFBhdXNlKHt1c2VyRm9jdXMsIHVpVHlwZX0pXG4gICAgICA/ICdwYXVzZWQnXG4gICAgICA6IHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVcbiAgY29uc3QgYWN0aXZlVGh1bWJuYWlsc1VybCA9XG4gICAgKCF1c2VyRm9jdXMgfHwgdXNlckZvY3VzID09PSAnc2Vla2JhcicpICYmXG4gICAgKGdldFRodW1ibmFpbHNVcmwoc291cmNlKSB8fCB0aHVtYm5haWxzVXJsKVxuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB7XG4gICAgJy0tcGxheWluZyc6IHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyA/ICcxJyA6ICcwJyxcbiAgfVxuICBjb25zdCBvblJld2luZCA9XG4gICAgKCFpc0xpdmUgfHwgcGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIDwgMCkgJiZcbiAgICBjYW5TZWVrICYmXG4gICAgKCgpID0+IHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lIC0gMTAsICdyZXdpbmQnKSlcbiAgY29uc3Qgb25Gb3J3YXJkID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgKyAxMCwgJ2ZvcndhcmQnKSlcbiAgY29uc3Qgb25DbGlja0JsYW5rID1cbiAgICBoYXZlUGxheVBhbmVsICYmICgoKSA9PiB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KSlcblxuICBjb25zdCB1aUhhbmRsZXJzID0ge1xuICAgIG9uUGxheTogKCkgPT4ge1xuICAgICAgdG9nZ2xlUGxheSgnJywge3RyaWdnZXJlZEJ5OiAndXNlci1hY3Rpb24nfSlcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH0sXG4gICAgb25DbGlja0xpdmU6IGlzTGl2ZSAmJiAoKCkgPT4gc2V0VGFyZ2V0VGltZSgwLCAnc2Vla1RvTGl2ZScpKSxcbiAgICBvbkNsaWNrU2Vla2JhcjogKCkgPT4ge1xuICAgICAgcmVmcy5jdXJyZW50LmRlZmVyZWRTZWVrRm9jdXMgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiBzZXRVc2VyRm9jdXMoJ3NlZWtiYXInKSxcbiAgICAgICAgNjZcbiAgICAgIClcbiAgICB9LFxuICAgIG9uU2VlazogdGltZSA9PiB7XG4gICAgICBzZXRUYXJnZXRUaW1lKHRpbWUsICdzZWVrJylcbiAgICAgIGNsZWFyVGltZW91dChyZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cylcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gc2V0VXNlckZvY3VzKCcnKSwgNjYpXG4gICAgfSxcbiAgICBvbkNoYW5nZVNldHRpbmdzOiAoe25hbWUsIHZhbHVlLCBrZWVwT3Blbn0pID0+XG4gICAgICBjaGFuZ2VTZXR0aW5ncyhuYW1lLCB2YWx1ZSwge2tlZXBPcGVufSksXG4gICAgb25DbG9zZVNldHRpbmdzOiBldmVudCA9PiB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgICBzbG90UHJvcHM/LnNldHRpbmdzPy5vbkNsb3NlPy4oZXZlbnQpXG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IHVpRWxlbWVudHMgPSB7XG4gICAgbGl2ZUJ1dHRvbjogdWlIYW5kbGVycy5vbkNsaWNrTGl2ZSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5MaXZlQnV0dG9uXG4gICAgICAgIHVzaW5nU3RhcnRPdmVyPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwfVxuICAgICAgICBvbkNsaWNrPXt1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlfVxuICAgICAgLz5cbiAgICApLFxuICAgIGNvbnRyb2xCdXR0b25zOiB7XG4gICAgICBwbGF5QnV0dG9uOiAoXG4gICAgICAgIDxQbGF5QnV0dG9uXG4gICAgICAgICAgcGxheWJhY2tTdGF0ZT17ZGVyaXZlZFBsYXliYWNrU3RhdGV9XG4gICAgICAgICAgZW5kZWQ9e2lzRW5kfVxuICAgICAgICAgIGhpZGRlbj17XG4gICAgICAgICAgICB1aVR5cGUgPT09ICdtb2JpbGUnICYmICh3YWl0aW5nIHx8IC9sb2FkaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpKVxuICAgICAgICAgIH1cbiAgICAgICAgICB2YXJpYW50PXshaXNVc2VyQWN0aXZlICYmICdmaXJzdHBsYXknfVxuICAgICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25QbGF5fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHJld2luZEJ1dHRvbjogb25SZXdpbmQgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicmV3aW5kMTBcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5SRVdJTkRcIlxuICAgICAgICAgIGRpc2FibGVkPXtpc0VuZH1cbiAgICAgICAgICBvbkNsaWNrPXtvblJld2luZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBmb3J3YXJkQnV0dG9uOiBvbkZvcndhcmQgJiYgKFxuICAgICAgICA8Rm9yd2FyZEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cImZvcndhcmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLkZPUldBUkRcIlxuICAgICAgICAgIGRpc2FibGVkPXshY2FuU2Vla31cbiAgICAgICAgICBvbkNsaWNrPXtvbkZvcndhcmR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgbmV4dEVwaXNvZGVCdXR0b246IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0YXJ0SWNvbj1cIm5leHRcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5ORVhUXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlTmV4dH1cbiAgICAgICAgICBvbkNsaWNrPXtjaGFuZ2VOZXh0fVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHByZXZpb3VzRXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwicHJldmlvdXNcIlxuICAgICAgICAgIHRpdGxlPVwiS0tTLlBMQVlFUi5QUkVWSU9VU1wiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFvbkNoYW5nZVByZXZpb3VzfVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZVByZXZpb3VzfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICB9LFxuICAgIHNlZWtiYXI6IChcbiAgICAgIDxjb21wb25lbnRzLlNlZWtiYXJcbiAgICAgICAgc3R5bGU9ey92b2x1bWUvLnRlc3QodXNlckZvY3VzKSAmJiB7b3BhY2l0eTogJzAnfX1cbiAgICAgICAgc3RhcnRUaW1lPXtwbGF5YmFja1RpbWUuc3RhcnRUaW1lfVxuICAgICAgICBjdXJyZW50VGltZT17cGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lfVxuICAgICAgICBidWZmZXJUaW1lPXtwbGF5YmFja1RpbWUuYnVmZmVyVGltZX1cbiAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgY2hhcHRlcnM9e2NoYXB0ZXJzfVxuICAgICAgICBvbkNoYW5nZT17dWlIYW5kbGVycy5vbkNsaWNrU2Vla2Jhcn1cbiAgICAgICAgb25DaGFuZ2VDb21taXR0ZWQ9e3VpSGFuZGxlcnMub25TZWVrfVxuICAgICAgICBtYXJrcz17bWFya3N9XG4gICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgIHsuLi5zbG90UHJvcHMuc2Vla2Jhcn1cbiAgICAgID5cbiAgICAgICAge2FjdGl2ZVRodW1ibmFpbHNVcmwgJiYgKFxuICAgICAgICAgIDxTZWVrUHJldmlld1xuICAgICAgICAgICAgdGh1bWJuYWlsc1VybD17YWN0aXZlVGh1bWJuYWlsc1VybH1cbiAgICAgICAgICAgIGR1cmF0aW9uPXtwbGF5YmFja1RpbWUuZHVyYXRpb259XG4gICAgICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvY29tcG9uZW50cy5TZWVrYmFyPlxuICAgICksXG4gICAgZGlzcGxheVRpbWU6IDxjb21wb25lbnRzLkRpc3BsYXlUaW1lIHsuLi5wbGF5YmFja1RpbWV9IC8+LFxuICAgIGZ1bGxzY3JlZW5CdXR0b246IChcbiAgICAgIDxGdWxsc2NyZWVuQnV0dG9uXG4gICAgICAgIHZpZXdNb2RlPXt2aWV3TW9kZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gdG9nZ2xlRnVsbHNjcmVlbihjb250YWluZXJSZWYuY3VycmVudCl9XG4gICAgICAvPlxuICAgICksXG4gICAgdm9sdW1lQ29udHJvbDogd2lkdGggPj0gc2l6ZXNbJ3NtYWxsLWVtYmVkJ10gJiYgKFxuICAgICAgPGNvbXBvbmVudHMuVm9sdW1lQ29udHJvbFxuICAgICAgICB7Li4ue3N1YnNjcmliZSwgb25DaGFuZ2UsIHRvZ2dsZU11dGV9fVxuICAgICAgICBvbk1vdXNlT3Zlcj17KCkgPT4gc2V0VXNlckZvY3VzKCd2b2x1bWUnKX1cbiAgICAgICAgb25Nb3VzZU91dD17KCkgPT4gc2V0VXNlckZvY3VzKCcnKX1cbiAgICAgICAgey4uLnNsb3RQcm9wcz8udm9sdW1lQ29udHJvbH1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBiYWNrSXRlbXM6IChcbiAgICAgIDxQbGF5UGFuZWwgYW5pbWF0aW9uPXt0YXJnZXRTdGF0ZS5hbmltYXRpb259IG9uQ2xpY2s9e29uQ2xpY2tCbGFua30gLz5cbiAgICApLFxuICB9XG4gIGNvbnN0IGNvbXBhdGliaWxpdHlDYXN0UHJvcHMgPSBjYXN0T3B0aW9ucyA9PT0gJ2NvbXBhdGlibGUnICYmIHtcbiAgICBzb3VyY2UsXG4gICAgdmFsdWVzOiB7dGl0bGUsIC4uLnNldHRpbmdzLnZhbHVlcywgLi4uaW50bCwgbW9kdWxlc0NvbmZpZ30sXG4gICAgb25Mb2FkOiBvbkNhc3QsXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXN0T3B0aW9ucyAmJiBjYXN0T3B0aW9ucyAhPT0gJ2NvbXBhdGlibGUnKSB7XG4gICAgICByZXR1cm4gbGlua0Nhc3Qoe3NvdXJjZSwgLi4uY2FzdE9wdGlvbnN9KVxuICAgIH0gLy8gVE9ETyBwbGF5bGlzdCwgYXVkaW8gLyBzdWJ0aXRsZSBzZXR0aW5nXG4gIH0sIFtzb3VyY2UsIGNhc3RPcHRpb25zLmNvbnRlbnRJZCwgY2FzdE9wdGlvbnMuY3VzdG9tRGF0YV0pXG4gIGNvbnN0IHNlbGVjdGVkQXVkaW9UcmFjayA9IHNldHRpbmdzLnByZWZlcnJlZD8uYXVkaW8gfHwgYXBwQXVkaW9UcmFja1xuICBjb25zdCBzZWxlY3RlZFRleHRUcmFjayA9IHNldHRpbmdzLnByZWZlcnJlZD8uc3VidGl0bGVzIHx8IGFwcFRleHRUcmFja1xuXG4gIHJldHVybiAoXG4gICAgPEludGxQcm92aWRlciB7Li4uaW50bH0+XG4gICAgICA8TGF5b3V0XG4gICAgICAgIHN0eWxlPXt7Li4uc3R5bGUsIGNzc1ZhcmlhYmxlc319XG4gICAgICAgIHR5cGU9e3VpVHlwZX1cbiAgICAgICAgZGlzcGxheT17bW9kZX1cbiAgICAgICAgY29udHJvbHNEaXNwbGF5PXtjb250cm9sc0Rpc3BsYXl9XG4gICAgICAgIHNpemU9e3NpemV9XG4gICAgICAgIHZpZGVvPXtcbiAgICAgICAgICA8VmlkZW9cbiAgICAgICAgICAgIHsuLi52aWRlb1Byb3BzfVxuICAgICAgICAgICAgdmlkZW9SZWY9e211bHRpUmVmKHZpZGVvUmVmLCB2aWRlb1Byb3BzLnZpZGVvUmVmKX1cbiAgICAgICAgICAgIHNvdXJjZT17XG4gICAgICAgICAgICAgIGNhc3RTdGF0ZSAhPT0gQ2FzdFN0YXRlLkNPTk5FQ1RFRCAmJlxuICAgICAgICAgICAgICBwbGF5YmFja1N0YXRlICE9PSAnZXJyb3InICYmXG4gICAgICAgICAgICAgIHNvdXJjZU92ZXJyaWRlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwbGF5YmFja1N0YXRlPXtkZXJpdmVkUGxheWJhY2tTdGF0ZX1cbiAgICAgICAgICAgIGN1cnJlbnRUaW1lPXt0YXJnZXRTdGF0ZS5jdXJyZW50VGltZX1cbiAgICAgICAgICAgIHsuLi4oYXBwVm9sdW1lID49IDAgJiYge3ZvbHVtZTogYXBwVm9sdW1lLCBtdXRlZDogYXBwVm9sdW1lIDw9IDB9KX1cbiAgICAgICAgICAgIHBsYXliYWNrUmF0ZT17c2V0dGluZ3MudmFsdWVzLnNwZWVkfVxuICAgICAgICAgICAgdmlkZW9SZXNvbHV0aW9uPXtxdWFsaXR5T3B0aW9uc31cbiAgICAgICAgICAgIGF1ZGlvVHJhY2s9e3NlbGVjdGVkQXVkaW9UcmFja31cbiAgICAgICAgICAgIHRleHRUcmFjaz17c2VsZWN0ZWRUZXh0VHJhY2t9XG4gICAgICAgICAgICBsb29wPXtzZXR0aW5ncy52YWx1ZXMubG9vcH1cbiAgICAgICAgICAgIHBsdWdpbnM9e3BsdWdpbnN9XG4gICAgICAgICAgICBtb2R1bGVzQ29uZmlnPXttb2R1bGVzQ29uZmlnfVxuICAgICAgICAgICAgb25QbGF5bG9nRmlyZWQ9e29uUGxheWxvZ0ZpcmVkfVxuICAgICAgICAgICAgb25FcnJvcj17ZXJyb3JIYW5kbGVyfVxuICAgICAgICAgICAgb25QbGF5YmFja1N0YXRlQ2hhbmdlPXtoYW5kbGVQbGF5YmFja1N0YXRlQ2hhbmdlfVxuICAgICAgICAgICAgb25CbG9ja2VkQXV0b3BsYXk9e2Vycm9yID0+IG9uQmxvY2tlZEF1dG9wbGF5Py4oZXJyb3IpfVxuICAgICAgICAgICAgb25DYW5QbGF5PXtldmVudCA9PiB7XG4gICAgICAgICAgICAgIHVwZGF0ZVBsYXliYWNrVGltZShldmVudClcbiAgICAgICAgICAgICAgdmlkZW9Qcm9wcy5vbkNhblBsYXk/LihldmVudClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvblRpbWVVcGRhdGU9e3VwZGF0ZVBsYXliYWNrVGltZX1cbiAgICAgICAgICAgIG9uRHVyYXRpb25DaGFuZ2U9e3VwZGF0ZVBsYXliYWNrVGltZX1cbiAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPXtwbGF5ZXIgPT4ge1xuICAgICAgICAgICAgICBwbGF5ZXJSZWYuY3VycmVudCA9IHBsYXllclxuICAgICAgICAgICAgICBvblBsYXllckxvYWRlZD8uKHBsYXllcilcbiAgICAgICAgICAgICAgc3luY1ZvbHVtZSh2aWRlb1JlZi5jdXJyZW50LCB2aWRlb1Byb3BzLm11dGVkID8gMCA6IGFwcFZvbHVtZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICBjb250YWluZXJSZWY9e2VsZW1lbnQgPT4ge1xuICAgICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50ID0gZWxlbWVudFxuICAgICAgICAgIG9ic2VydmUoZWxlbWVudClcbiAgICAgICAgfX1cbiAgICAgICAgYmFja1JlZj17YWRDb250YWluZXJSZWZ9XG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgY2hhbm5lbFRpdGxlPXtjaGFubmVsVGl0bGV9XG4gICAgICAgIGJhY2tCdXR0b249e29uQmFjayAmJiA8QnV0dG9uIHN0YXJ0SWNvbj1cImJhY2tcIiBvbkNsaWNrPXtvbkJhY2t9IC8+fVxuICAgICAgICB7Li4uKGlzVXNlckFjdGl2ZSAmJiB1aUVsZW1lbnRzKX1cbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgb25Nb3VzZU1vdmU9e29uTW91c2VNb3ZlfVxuICAgICAgPlxuICAgICAgICA8TG9hZGluZ1NwaW5uZXIgYWN0aXZlPXt3YWl0aW5nfSAvPlxuICAgICAgICB7ZXJyb3JEYXRhICYmIDxFcnJvciBlcnJvcj17ZXJyb3JEYXRhfSBvbkJhY2s9e29uQmFja30gLz59XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgey8qIFRPRE8gc3luYyBDYXN0IGxhc3QgcGxheWVkIHRpbWUgYmFjayAqL31cbiAgICAgICAge2lzVXNlckFjdGl2ZSAmJiAoXG4gICAgICAgICAgPGNvbXBvbmVudHMuQ2FzdFVpXG4gICAgICAgICAgICBvbkJhY2s9e29uQmFja31cbiAgICAgICAgICAgIG9uU3RhdGVDaGFuZ2U9e3NldENhc3RTdGF0ZX1cbiAgICAgICAgICAgIG9uTG9hZD17b25DYXN0fVxuICAgICAgICAgICAgey4uLmNvbXBhdGliaWxpdHlDYXN0UHJvcHN9XG4gICAgICAgICAgICB7Li4uc2xvdFByb3BzLmNhc3RVaX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmICggLy8gVE9ETzogRGVzaWduIDxFeHRlbnN0aW9uIC8+IGZsYWdcbiAgICAgICAgICA8Y29tcG9uZW50cy5TZXR0aW5nc1xuICAgICAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICAgICAgc2VjdGlvbnM9e3NldHRpbmdzLnNlY3Rpb25zfVxuICAgICAgICAgICAgLy8gVE9ETyBoYXNCb3R0b21QYW5lbCBib3R0b206IDhlbVxuICAgICAgICAgICAgb3Blbj17dXNlckZvY3VzID09PSAnc2V0dGluZ3MnfVxuICAgICAgICAgICAgdmFsdWVzPXtzZXR0aW5ncy52YWx1ZXN9XG4gICAgICAgICAgICBvbk9wZW49e29wZW5TZXR0aW5nc31cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt1aUhhbmRsZXJzLm9uQ2hhbmdlU2V0dGluZ3N9XG4gICAgICAgICAgICB7Li4uc2xvdFByb3BzPy5zZXR0aW5nc31cbiAgICAgICAgICAgIG9uQ2xvc2U9e3VpSGFuZGxlcnMub25DbG9zZVNldHRpbmdzfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIDxMYW5ndWFnZVNldHRpbmdzXG4gICAgICAgICAgdWlUeXBlPXt1aVR5cGV9XG4gICAgICAgICAgZ2V0UGxheWVyPXsoKSA9PiBwbGF5ZXJSZWYuY3VycmVudH1cbiAgICAgICAgICBvbkNoYW5nZT17KF9ldmVudCwgaXRlbSkgPT5cbiAgICAgICAgICAgIHVpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5ncyh7XG4gICAgICAgICAgICAgIG5hbWU6IGl0ZW0udHlwZSxcbiAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXG4gICAgICAgICAgICAgIGtlZXBPcGVuOiB0cnVlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgey4uLnNsb3RQcm9wcy5sYW5ndWFnZVNldHRpbmdzfVxuICAgICAgICAvPlxuICAgICAgICA8QmFja2Ryb3Agb3Blbj17IXBsYXliYWNrU3RhdGUgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2xvYWRpbmcnfT5cbiAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgPC9CYWNrZHJvcD5cbiAgICAgIDwvTGF5b3V0PlxuICAgIDwvSW50bFByb3ZpZGVyPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IFByZW1pdW1QbGF5ZXJcbiJdfQ== */")
9319
9319
  };
9320
9320
 
9321
9321
  const LanguageSettings = ({
@@ -9527,6 +9527,15 @@ const PremiumPlayer = ({
9527
9527
  });
9528
9528
  };
9529
9529
 
9530
+ const dismissPanels = () => {
9531
+ setUserFocus('');
9532
+
9533
+ if (refs.current.closeMenu) {
9534
+ refs.current.closeMenu();
9535
+ refs.current.closeMenu = undefined;
9536
+ }
9537
+ };
9538
+
9530
9539
  const lastState = useRef(playbackState);
9531
9540
 
9532
9541
  const handlePlaybackStateChange = (event, state) => {
@@ -9545,6 +9554,7 @@ const PremiumPlayer = ({
9545
9554
  }
9546
9555
 
9547
9556
  if (state === 'ended') {
9557
+ dismissPanels();
9548
9558
  togglePlay('paused');
9549
9559
  }
9550
9560
 
@@ -9627,16 +9637,11 @@ const PremiumPlayer = ({
9627
9637
  });
9628
9638
  const mode = userFocus === 'seekbar' ? 'hidden' : controls.autohide ? autoHideMode : controls ? 'shown' : 'hidden';
9629
9639
  const controlsDisplay = userFocus === 'seekbar' ? 'seekbar-only' : controls === 'title-only' || playbackState === 'emptied' ? 'hidden' : mode;
9630
- const shouldHidePanels = (controls === 'no-panel' || controlsDisplay === 'hidden' || playbackState === 'ended') && userFocus;
9640
+ const shouldHidePanels = (controls === 'no-panel' || controlsDisplay === 'hidden') && userFocus;
9631
9641
  const havePlayPanel = !blocking && uiType === 'desktop' && !waiting && !/volume|''/.test(userFocus) && !/title-only|no-panel/.test(controls) && (controls.autohide || mode === 'shown');
9632
9642
  useEffect(() => {
9633
9643
  if (shouldHidePanels) {
9634
- setUserFocus('');
9635
-
9636
- if (refs.current.closeMenu) {
9637
- refs.current.closeMenu();
9638
- refs.current.closeMenu = undefined;
9639
- }
9644
+ dismissPanels();
9640
9645
  }
9641
9646
  }, [shouldHidePanels]);
9642
9647
  useEffect(() => on(containerRef.current, 'focus-menu', event => {
@@ -11858,7 +11863,7 @@ const PremiumPlusPlayer = ({
11858
11863
  const restPlayerName = ['shaka', 'bitmovin'].find(name => name in rest);
11859
11864
  logTarget.current = mapLogEvents({
11860
11865
  playerName: restPlayerName || 'shaka',
11861
- version: "2.25.0-canary.23",
11866
+ version: "2.25.0-canary.24",
11862
11867
  video: videoRef.current,
11863
11868
  getPlaybackStatus: () => getMediaTime(videoRef.current, {
11864
11869
  player: corePlayerRef.current,
@@ -12012,7 +12017,7 @@ const PremiumPlusPlayer = ({
12012
12017
  return jsxs(PremiumPlayer, {
12013
12018
  source: playbackState !== 'error' && source,
12014
12019
  currentTime: preferAppTime.current ? currentTime : contentData.startTime,
12015
- controls: uiState.activePanel === 'autoplay-next' ? 'title-only' : uiState.activePanel === 'recommendation' ? 'no-panel' : controls,
12020
+ controls: uiState.activePanel === 'autoplay-next' ? 'title-only' : uiState.activePanel === 'recommendation' && recommendation ? 'no-panel' : controls,
12016
12021
  title: contentData.title,
12017
12022
  channelTitle: jsxs(Fragment, {
12018
12023
  children: [jsx$1(ChannelTime, { ...contentData.section
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kkcompany/player",
3
- "version": "2.25.0-canary.23",
3
+ "version": "2.25.0-canary.24",
4
4
  "module": "dist/index.mjs",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",