@onecx/angular-accelerator 5.17.2 → 5.18.1

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.
@@ -73,7 +73,9 @@
73
73
  "ARIA_LABEL": "{{column}} {{direction}} sortieren"
74
74
  },
75
75
  "SELECT_ALL_ARIA_LABEL": "Selektiere alle Zeilen der Tabelle",
76
- "SELECT_ARIA_LABEL": "Selektiere die Tabellenspalte mit der ID {{key}}"
76
+ "SELECT_ARIA_LABEL": "Selektiere die Tabellenspalte mit der ID {{key}}",
77
+ "FILTER_YES": "Ja",
78
+ "FILTER_NO": "Nein"
77
79
  },
78
80
  "OCX_DATA_LIST_GRID": {
79
81
  "EMPTY_RESULT": "Keine Daten gefunden.",
@@ -73,7 +73,9 @@
73
73
  "ARIA_LABEL": "Toggle {{column}} sorting direction to {{direction}}"
74
74
  },
75
75
  "SELECT_ALL_ARIA_LABEL": "Select all table rows",
76
- "SELECT_ARIA_LABEL": "Select table row with id {{key}}"
76
+ "SELECT_ARIA_LABEL": "Select table row with id {{key}}",
77
+ "FILTER_YES": "Yes",
78
+ "FILTER_NO": "No"
77
79
  },
78
80
  "OCX_DATA_LIST_GRID": {
79
81
  "EMPTY_RESULT": "No data found.",
package/esm2022/index.mjs CHANGED
@@ -34,6 +34,7 @@ export * from './lib/model/data-table-column.model';
34
34
  export * from './lib/model/diagram-column';
35
35
  // export * from './lib/model/diagram-data'
36
36
  export * from './lib/model/diagram-type';
37
+ export * from './lib/model/filter.model';
37
38
  // core
38
39
  export * from './lib/angular-accelerator.module';
39
40
  export * from './lib/angular-accelerator-primeng.module';
@@ -53,4 +54,4 @@ export * from './lib/utils/create-remote-component-and-mfe-translate-loader.util
53
54
  export * from './lib/utils/create-remote-component-translate-loader.utils';
54
55
  export * from './lib/utils/enum-to-dropdown-options.utils';
55
56
  export * from './lib/utils/criteria.utils';
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWE7QUFDYixjQUFjLDBDQUEwQyxDQUFBO0FBQ3hELGNBQWMsMENBQTBDLENBQUE7QUFDeEQsY0FBYyxnQ0FBZ0MsQ0FBQTtBQUM5QyxjQUFjLHFDQUFxQyxDQUFBO0FBQ25ELGNBQWMsOENBQThDLENBQUE7QUFFNUQsYUFBYTtBQUNiLGNBQWMsMEVBQTBFLENBQUE7QUFDeEYsY0FBYyxzRkFBc0YsQ0FBQTtBQUNwRyxjQUFjLHdFQUF3RSxDQUFBO0FBQ3RGLGNBQWMsMERBQTBELENBQUE7QUFDeEUsY0FBYywwRUFBMEUsQ0FBQTtBQUN4RixjQUFjLGtEQUFrRCxDQUFBO0FBQ2hFLGNBQWMsZ0RBQWdELENBQUE7QUFDOUQsY0FBYyw0Q0FBNEMsQ0FBQTtBQUMxRCxjQUFjLDBFQUEwRSxDQUFBO0FBQ3hGLGNBQWMsd0VBQXdFLENBQUE7QUFDdEYsY0FBYyxvREFBb0QsQ0FBQTtBQUNsRSxjQUFjLHdEQUF3RCxDQUFBO0FBQ3RFLGNBQWMsa0VBQWtFLENBQUE7QUFFaEYsV0FBVztBQUNYLGNBQWMsbUNBQW1DLENBQUE7QUFDakQsY0FBYywwQ0FBMEMsQ0FBQTtBQUV4RCxRQUFRO0FBQ1IsY0FBYywwQkFBMEIsQ0FBQTtBQUN4QyxjQUFjLDZCQUE2QixDQUFBO0FBRTNDLFNBQVM7QUFDVCxjQUFjLHdDQUF3QyxDQUFBO0FBQ3RELGNBQWMsK0JBQStCLENBQUE7QUFDN0MsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2Qyx3REFBd0Q7QUFDeEQsY0FBYyxpQ0FBaUMsQ0FBQTtBQUMvQyxjQUFjLHFDQUFxQyxDQUFBO0FBQ25ELGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsMkNBQTJDO0FBQzNDLGNBQWMsMEJBQTBCLENBQUE7QUFFeEMsT0FBTztBQUNQLGNBQWMsa0NBQWtDLENBQUE7QUFDaEQsY0FBYywwQ0FBMEMsQ0FBQTtBQUV4RCxZQUFZO0FBQ1osY0FBYyxnQ0FBZ0MsQ0FBQTtBQUM5QyxjQUFjLHFEQUFxRCxDQUFBO0FBRW5FLFFBQVE7QUFDUixjQUFjLDBDQUEwQyxDQUFBO0FBQ3hELGNBQWMsNENBQTRDLENBQUE7QUFDMUQsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLDJDQUEyQyxDQUFBO0FBQ3pELGNBQWMsdUJBQXVCLENBQUE7QUFDckMsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2QyxjQUFjLDZCQUE2QixDQUFBO0FBQzNDLGNBQWMsdUNBQXVDLENBQUE7QUFDckQsY0FBYyxvRUFBb0UsQ0FBQTtBQUNsRixjQUFjLDREQUE0RCxDQUFBO0FBQzFFLGNBQWMsNENBQTRDLENBQUE7QUFDMUQsY0FBYyw0QkFBNEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIGRpcmVjdGl2ZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvaWYtcGVybWlzc2lvbi5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2lmLWJyZWFrcG9pbnQuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9zcmMuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9hZHZhbmNlZC5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3Rvb2x0aXBPbk92ZXJmbG93LmRpcmVjdGl2ZSdcblxuLy8gY29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb2x1bW4tZ3JvdXAtc2VsZWN0aW9uL2NvbHVtbi1ncm91cC1zZWxlY3Rpb24uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jdXN0b20tZ3JvdXAtY29sdW1uLXNlbGVjdG9yL2N1c3RvbS1ncm91cC1jb2x1bW4tc2VsZWN0b3IuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kYXRhLWxheW91dC1zZWxlY3Rpb24vZGF0YS1sYXlvdXQtc2VsZWN0aW9uLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGF0YS1saXN0LWdyaWQvZGF0YS1saXN0LWdyaWQuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kYXRhLWxpc3QtZ3JpZC1zb3J0aW5nL2RhdGEtbGlzdC1ncmlkLXNvcnRpbmcuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kYXRhLXZpZXcvZGF0YS12aWV3LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGlhZ3JhbS9kaWFncmFtLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZ3JvdXAtYnktY291bnQtZGlhZ3JhbS9ncm91cC1ieS1jb3VudC1kaWFncmFtLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaW50ZXJhY3RpdmUtZGF0YS12aWV3L2ludGVyYWN0aXZlLWRhdGEtdmlldy5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BhZ2UtaGVhZGVyL3BhZ2UtaGVhZGVyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2VhcmNoLWhlYWRlci9zZWFyY2gtaGVhZGVyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGF0YS1sb2FkaW5nLWVycm9yL2RhdGEtbG9hZGluZy1lcnJvci5jb21wb25lbnQnXG5cbi8vIHNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9icmVhZGNydW1iLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1jYWNoZS5zZXJ2aWNlJ1xuXG4vLyBwaXBlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvZHluYW1pYy5waXBlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvb2N4dGltZWFnby5waXBlJ1xuXG4vLyBtb2RlbHNcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2JyZWFkY3J1bWItbWVudS1pdGVtLm1vZGVsJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvY29sdW1uLXR5cGUubW9kZWwnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC9kYXRhLWFjdGlvbidcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2RhdGEtY29sdW1uLW5hbWUtaWQubW9kZWwnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC9kYXRhLXNvcnQtZGlyZWN0aW9uJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvZGF0YS10YWJsZS1jb2x1bW4ubW9kZWwnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC9kaWFncmFtLWNvbHVtbidcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2RpYWdyYW0tZGF0YSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2RpYWdyYW0tdHlwZSdcblxuLy8gY29yZVxuZXhwb3J0ICogZnJvbSAnLi9saWIvYW5ndWxhci1hY2NlbGVyYXRvci5tb2R1bGUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hbmd1bGFyLWFjY2VsZXJhdG9yLXByaW1lbmcubW9kdWxlJ1xuXG4vLyBmdW5jdGlvbnNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Z1bmN0aW9ucy9mbGF0dGVuLW9iamVjdCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Z1bmN0aW9ucy9hdC1sZWFzdC1vbmUtZmllbGQtZmlsbGVkLXZhbGlkYXRvcidcblxuLy8gdXRpbHNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL2FzeW5jLXRyYW5zbGF0ZS1sb2FkZXIudXRpbHMnXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9jYWNoaW5nLXRyYW5zbGF0ZS1sb2FkZXIudXRpbHMnXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9jb2xvcnV0aWxzJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvY3JlYXRlLXRyYW5zbGF0ZS1sb2FkZXIudXRpbHMnXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9kYXRldXRpbHMnXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9vYmplY3R1dGlscydcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3ByaW1laWNvbi51dGlscydcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3RyYW5zbGF0ZS5jb21iaW5lZC5sb2FkZXInXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9jcmVhdGUtcmVtb3RlLWNvbXBvbmVudC1hbmQtbWZlLXRyYW5zbGF0ZS1sb2FkZXIudXRpbHMnXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9jcmVhdGUtcmVtb3RlLWNvbXBvbmVudC10cmFuc2xhdGUtbG9hZGVyLnV0aWxzJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvZW51bS10by1kcm9wZG93bi1vcHRpb25zLnV0aWxzJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvY3JpdGVyaWEudXRpbHMnXG4iXX0=
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWE7QUFDYixjQUFjLDBDQUEwQyxDQUFBO0FBQ3hELGNBQWMsMENBQTBDLENBQUE7QUFDeEQsY0FBYyxnQ0FBZ0MsQ0FBQTtBQUM5QyxjQUFjLHFDQUFxQyxDQUFBO0FBQ25ELGNBQWMsOENBQThDLENBQUE7QUFFNUQsYUFBYTtBQUNiLGNBQWMsMEVBQTBFLENBQUE7QUFDeEYsY0FBYyxzRkFBc0YsQ0FBQTtBQUNwRyxjQUFjLHdFQUF3RSxDQUFBO0FBQ3RGLGNBQWMsMERBQTBELENBQUE7QUFDeEUsY0FBYywwRUFBMEUsQ0FBQTtBQUN4RixjQUFjLGtEQUFrRCxDQUFBO0FBQ2hFLGNBQWMsZ0RBQWdELENBQUE7QUFDOUQsY0FBYyw0Q0FBNEMsQ0FBQTtBQUMxRCxjQUFjLDBFQUEwRSxDQUFBO0FBQ3hGLGNBQWMsd0VBQXdFLENBQUE7QUFDdEYsY0FBYyxvREFBb0QsQ0FBQTtBQUNsRSxjQUFjLHdEQUF3RCxDQUFBO0FBQ3RFLGNBQWMsa0VBQWtFLENBQUE7QUFFaEYsV0FBVztBQUNYLGNBQWMsbUNBQW1DLENBQUE7QUFDakQsY0FBYywwQ0FBMEMsQ0FBQTtBQUV4RCxRQUFRO0FBQ1IsY0FBYywwQkFBMEIsQ0FBQTtBQUN4QyxjQUFjLDZCQUE2QixDQUFBO0FBRTNDLFNBQVM7QUFDVCxjQUFjLHdDQUF3QyxDQUFBO0FBQ3RELGNBQWMsK0JBQStCLENBQUE7QUFDN0MsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2Qyx3REFBd0Q7QUFDeEQsY0FBYyxpQ0FBaUMsQ0FBQTtBQUMvQyxjQUFjLHFDQUFxQyxDQUFBO0FBQ25ELGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsMkNBQTJDO0FBQzNDLGNBQWMsMEJBQTBCLENBQUE7QUFDeEMsY0FBYywwQkFBMEIsQ0FBQTtBQUV4QyxPQUFPO0FBQ1AsY0FBYyxrQ0FBa0MsQ0FBQTtBQUNoRCxjQUFjLDBDQUEwQyxDQUFBO0FBRXhELFlBQVk7QUFDWixjQUFjLGdDQUFnQyxDQUFBO0FBQzlDLGNBQWMscURBQXFELENBQUE7QUFFbkUsUUFBUTtBQUNSLGNBQWMsMENBQTBDLENBQUE7QUFDeEQsY0FBYyw0Q0FBNEMsQ0FBQTtBQUMxRCxjQUFjLHdCQUF3QixDQUFBO0FBQ3RDLGNBQWMsMkNBQTJDLENBQUE7QUFDekQsY0FBYyx1QkFBdUIsQ0FBQTtBQUNyQyxjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLGNBQWMsNkJBQTZCLENBQUE7QUFDM0MsY0FBYyx1Q0FBdUMsQ0FBQTtBQUNyRCxjQUFjLG9FQUFvRSxDQUFBO0FBQ2xGLGNBQWMsNERBQTRELENBQUE7QUFDMUUsY0FBYyw0Q0FBNEMsQ0FBQTtBQUMxRCxjQUFjLDRCQUE0QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZGlyZWN0aXZlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9pZi1wZXJtaXNzaW9uLmRpcmVjdGl2ZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvaWYtYnJlYWtwb2ludC5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3NyYy5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2FkdmFuY2VkLmRpcmVjdGl2ZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvdG9vbHRpcE9uT3ZlcmZsb3cuZGlyZWN0aXZlJ1xuXG4vLyBjb21wb25lbnRzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbHVtbi1ncm91cC1zZWxlY3Rpb24vY29sdW1uLWdyb3VwLXNlbGVjdGlvbi5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2N1c3RvbS1ncm91cC1jb2x1bW4tc2VsZWN0b3IvY3VzdG9tLWdyb3VwLWNvbHVtbi1zZWxlY3Rvci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RhdGEtbGF5b3V0LXNlbGVjdGlvbi9kYXRhLWxheW91dC1zZWxlY3Rpb24uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kYXRhLWxpc3QtZ3JpZC9kYXRhLWxpc3QtZ3JpZC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RhdGEtbGlzdC1ncmlkLXNvcnRpbmcvZGF0YS1saXN0LWdyaWQtc29ydGluZy5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9kYXRhLXZpZXcuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kaWFncmFtL2RpYWdyYW0uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9ncm91cC1ieS1jb3VudC1kaWFncmFtL2dyb3VwLWJ5LWNvdW50LWRpYWdyYW0uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbnRlcmFjdGl2ZS1kYXRhLXZpZXcvaW50ZXJhY3RpdmUtZGF0YS12aWV3LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGFnZS1oZWFkZXIvcGFnZS1oZWFkZXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zZWFyY2gtaGVhZGVyL3NlYXJjaC1oZWFkZXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kYXRhLWxvYWRpbmctZXJyb3IvZGF0YS1sb2FkaW5nLWVycm9yLmNvbXBvbmVudCdcblxuLy8gc2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2JyZWFkY3J1bWIuc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RyYW5zbGF0aW9uLWNhY2hlLnNlcnZpY2UnXG5cbi8vIHBpcGVzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9keW5hbWljLnBpcGUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9vY3h0aW1lYWdvLnBpcGUnXG5cbi8vIG1vZGVsc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvYnJlYWRjcnVtYi1tZW51LWl0ZW0ubW9kZWwnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC9jb2x1bW4tdHlwZS5tb2RlbCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2RhdGEtYWN0aW9uJ1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvZGF0YS1jb2x1bW4tbmFtZS1pZC5tb2RlbCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2RhdGEtc29ydC1kaXJlY3Rpb24nXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC9kYXRhLXRhYmxlLWNvbHVtbi5tb2RlbCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2RpYWdyYW0tY29sdW1uJ1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvZGlhZ3JhbS1kYXRhJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvZGlhZ3JhbS10eXBlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvZmlsdGVyLm1vZGVsJ1xuXG4vLyBjb3JlXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hbmd1bGFyLWFjY2VsZXJhdG9yLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FuZ3VsYXItYWNjZWxlcmF0b3ItcHJpbWVuZy5tb2R1bGUnXG5cbi8vIGZ1bmN0aW9uc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZnVuY3Rpb25zL2ZsYXR0ZW4tb2JqZWN0J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZnVuY3Rpb25zL2F0LWxlYXN0LW9uZS1maWVsZC1maWxsZWQtdmFsaWRhdG9yJ1xuXG4vLyB1dGlsc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvYXN5bmMtdHJhbnNsYXRlLWxvYWRlci51dGlscydcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL2NhY2hpbmctdHJhbnNsYXRlLWxvYWRlci51dGlscydcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL2NvbG9ydXRpbHMnXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9jcmVhdGUtdHJhbnNsYXRlLWxvYWRlci51dGlscydcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL2RhdGV1dGlscydcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL29iamVjdHV0aWxzJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvcHJpbWVpY29uLnV0aWxzJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvdHJhbnNsYXRlLmNvbWJpbmVkLmxvYWRlcidcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL2NyZWF0ZS1yZW1vdGUtY29tcG9uZW50LWFuZC1tZmUtdHJhbnNsYXRlLWxvYWRlci51dGlscydcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL2NyZWF0ZS1yZW1vdGUtY29tcG9uZW50LXRyYW5zbGF0ZS1sb2FkZXIudXRpbHMnXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9lbnVtLXRvLWRyb3Bkb3duLW9wdGlvbnMudXRpbHMnXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9jcml0ZXJpYS51dGlscydcbiJdfQ==
@@ -39,7 +39,7 @@ export class DataListGridComponent extends DataSortBase {
39
39
  set columns(value) {
40
40
  this._columns$.next(value);
41
41
  const obs = value.map((c) => this.getTemplate(c));
42
- this.columnTemplates$ = combineLatest(obs).pipe(map(values => Object.fromEntries(value.map((c, i) => [c.id, values[i]]))));
42
+ this.columnTemplates$ = combineLatest(obs).pipe(map((values) => Object.fromEntries(value.map((c, i) => [c.id, values[i]]))));
43
43
  }
44
44
  get totalRecordsOnServer() {
45
45
  return this.params['totalRecordsOnServer'] ? Number(this.params['totalRecordsOnServer']) : undefined;
@@ -601,4 +601,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
601
601
  }], parentTemplates: [{
602
602
  type: Input
603
603
  }] } });
604
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1saXN0LWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWxpc3QtZ3JpZC9kYXRhLWxpc3QtZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtbGlzdC1ncmlkL2RhdGEtbGlzdC1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFFZixZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsU0FBUyxFQUVULE1BQU0sRUFHTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFFbkYsT0FBTyxFQUFZLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFakUsT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3JHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUkxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFBOzs7Ozs7Ozs7Ozs7OztBQXlCL0QsTUFBTSxPQUFPLHFCQUFz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QXFCO3NCQUE5QixNQUFNO2dCQWlDSCxTQUFTO3NCQURaLGVBQWU7dUJBQUMsYUFBYTtnQkFTMUIsYUFBYTtzQkFEaEIsWUFBWTt1QkFBQyxhQUFhO2dCQVN2QixlQUFlO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRG9DaGVjayxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgTE9DQUxFX0lELFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnQG9uZWN4L2FuZ3VsYXItaW50ZWdyYXRpb24taW50ZXJmYWNlJ1xuaW1wb3J0IHsgTWZlSW5mbyB9IGZyb20gJ0BvbmVjeC9pbnRlZ3JhdGlvbi1pbnRlcmZhY2UnXG5pbXBvcnQgeyBNZW51SXRlbSwgUHJpbWVJY29ucywgUHJpbWVUZW1wbGF0ZSB9IGZyb20gJ3ByaW1lbmcvYXBpJ1xuaW1wb3J0IHsgTWVudSB9IGZyb20gJ3ByaW1lbmcvbWVudSdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgZGVib3VuY2VUaW1lLCBmaXJzdCwgbWFwLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBDb2x1bW5UeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWwvY29sdW1uLXR5cGUubW9kZWwnXG5pbXBvcnQgeyBEYXRhQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGF0YS1hY3Rpb24nXG5pbXBvcnQgeyBEYXRhU29ydERpcmVjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVsL2RhdGEtc29ydC1kaXJlY3Rpb24nXG5pbXBvcnQgeyBEYXRhVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRhLXRhYmxlLWNvbHVtbi5tb2RlbCdcbmltcG9ydCB7IE9iamVjdFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvb2JqZWN0dXRpbHMnXG5pbXBvcnQgeyBEYXRhU29ydEJhc2UgfSBmcm9tICcuLi9kYXRhLXNvcnQtYmFzZS9kYXRhLXNvcnQtYmFzZSdcbmltcG9ydCB7IEZpbHRlciwgUm93IH0gZnJvbSAnLi4vZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudCdcblxuZXhwb3J0IHR5cGUgTGlzdEdyaWREYXRhID0ge1xuICBpZDogc3RyaW5nIHwgbnVtYmVyXG4gIGltYWdlUGF0aDogc3RyaW5nIHwgbnVtYmVyXG4gIFtjb2x1bW5JZDogc3RyaW5nXTogdW5rbm93blxufVxuXG50eXBlIFJvd0xpc3RHcmlkRGF0YSA9IExpc3RHcmlkRGF0YSAmIFJvd1xuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RHcmlkRGF0YU1lbnVJdGVtIGV4dGVuZHMgTWVudUl0ZW0ge1xuICBwZXJtaXNzaW9uOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhTGlzdEdyaWRDb21wb25lbnRTdGF0ZSB7XG4gIGFjdGl2ZVBhZ2U/OiBudW1iZXJcbiAgcGFnZVNpemU/OiBudW1iZXJcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2N4LWRhdGEtbGlzdC1ncmlkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtbGlzdC1ncmlkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS1saXN0LWdyaWQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YUxpc3RHcmlkQ29tcG9uZW50IGV4dGVuZHMgRGF0YVNvcnRCYXNlIGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrLCBBZnRlckNvbnRlbnRJbml0IHtcbiAgQElucHV0KCkgdGl0bGVMaW5lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBzdWJ0aXRsZUxpbmVJZHM6IHN0cmluZ1tdID0gW11cbiAgQElucHV0KCkgY2xpZW50U2lkZVNvcnRpbmcgPSB0cnVlXG4gIEBJbnB1dCgpIGNsaWVudFNpZGVGaWx0ZXJpbmcgPSB0cnVlXG4gIEBJbnB1dCgpIHNvcnRTdGF0ZXM6IERhdGFTb3J0RGlyZWN0aW9uW10gPSBbXVxuXG4gIGRpc3BsYXllZFBhZ2VTaXplcyQ6IE9ic2VydmFibGU8KG51bWJlciB8IHsgc2hvd0FsbDogc3RyaW5nIH0pW10+XG4gIF9wYWdlU2l6ZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDwobnVtYmVyIHwgeyBzaG93QWxsOiBzdHJpbmcgfSlbXT4oWzEwLCAyNSwgNTBdKVxuICBASW5wdXQoKVxuICBnZXQgcGFnZVNpemVzKCk6IChudW1iZXIgfCB7IHNob3dBbGw6IHN0cmluZyB9KVtdIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZVNpemVzJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IHBhZ2VTaXplcyh2YWx1ZTogKG51bWJlciB8IHsgc2hvd0FsbDogc3RyaW5nIH0pW10pIHtcbiAgICB0aGlzLl9wYWdlU2l6ZXMkLm5leHQodmFsdWUpXG4gIH1cblxuICBkaXNwbGF5ZWRQYWdlU2l6ZSQ6IE9ic2VydmFibGU8bnVtYmVyPlxuICBfcGFnZVNpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgQElucHV0KClcbiAgZ2V0IHBhZ2VTaXplKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VTaXplJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IHBhZ2VTaXplKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9wYWdlU2l6ZSQubmV4dCh2YWx1ZSlcbiAgfVxuXG4gIEBJbnB1dCgpIGVtcHR5UmVzdWx0c01lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBmYWxsYmFja0ltYWdlID0gJ3BsYWNlaG9sZGVyLnBuZydcbiAgQElucHV0KCkgbGF5b3V0OiAnZ3JpZCcgfCAnbGlzdCcgPSAnZ3JpZCdcbiAgQElucHV0KCkgdmlld1Blcm1pc3Npb246IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBlZGl0UGVybWlzc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGRlbGV0ZVBlcm1pc3Npb246IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBkZWxldGVBY3Rpb25WaXNpYmxlRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBkZWxldGVBY3Rpb25FbmFibGVkRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSB2aWV3QWN0aW9uVmlzaWJsZUZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgdmlld0FjdGlvbkVuYWJsZWRGaWVsZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGVkaXRBY3Rpb25WaXNpYmxlRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBlZGl0QWN0aW9uRW5hYmxlZEZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgdmlld01lbnVJdGVtS2V5OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZWRpdE1lbnVJdGVtS2V5OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZGVsZXRlTWVudUl0ZW1LZXk6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBwYWdpbmF0b3IgPSB0cnVlXG4gIEBJbnB1dCgpIHBhZ2UgPSAwXG4gIGNvbHVtblRlbXBsYXRlcyQ6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgVGVtcGxhdGVSZWY8YW55PiB8IG51bGw+PiB8IHVuZGVmaW5lZFxuICBfY29sdW1ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGFUYWJsZUNvbHVtbltdPihbXSlcbiAgQElucHV0KCkgXG4gIGdldCBjb2x1bW5zKCk6IERhdGFUYWJsZUNvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1ucyQuZ2V0VmFsdWUoKVxuICB9XG4gIHNldCBjb2x1bW5zKHZhbHVlOiBEYXRhVGFibGVDb2x1bW5bXSkge1xuICAgIHRoaXMuX2NvbHVtbnMkLm5leHQodmFsdWUpXG4gICAgY29uc3Qgb2JzID0gdmFsdWUubWFwKChjKSA9PiB0aGlzLmdldFRlbXBsYXRlKGMpKVxuICAgIHRoaXMuY29sdW1uVGVtcGxhdGVzJCA9IGNvbWJpbmVMYXRlc3Qob2JzKS5waXBlKFxuICAgICAgbWFwKHZhbHVlcyA9PiBPYmplY3QuZnJvbUVudHJpZXModmFsdWUubWFwKChjLCBpKSA9PiBbYy5pZCwgdmFsdWVzW2ldXSkpKVxuICAgIClcbiAgfVxuICBASW5wdXQoKSBuYW1lID0gJydcbiAgQElucHV0KClcbiAgZ2V0IHRvdGFsUmVjb3Jkc09uU2VydmVyKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1zWyd0b3RhbFJlY29yZHNPblNlcnZlciddID8gTnVtYmVyKHRoaXMucGFyYW1zWyd0b3RhbFJlY29yZHNPblNlcnZlciddKSA6IHVuZGVmaW5lZFxuICB9XG4gIHNldCB0b3RhbFJlY29yZHNPblNlcnZlcih2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wYXJhbXNbJ3RvdGFsUmVjb3Jkc09uU2VydmVyJ10gPSB2YWx1ZT8udG9TdHJpbmcoKSA/PyAnMCdcbiAgfVxuICBASW5wdXQoKSBjdXJyZW50UGFnZVNob3dpbmdLZXkgPSAnT0NYX0RBVEFfVEFCTEUuU0hPV0lORydcbiAgQElucHV0KCkgY3VycmVudFBhZ2VTaG93aW5nV2l0aFRvdGFsT25TZXJ2ZXJLZXkgPSAnT0NYX0RBVEFfVEFCTEUuU0hPV0lOR19XSVRIX1RPVEFMX09OX1NFUlZFUidcbiAgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgIGN1cnJlbnRQYWdlOiAne2N1cnJlbnRQYWdlfScsXG4gICAgdG90YWxQYWdlczogJ3t0b3RhbFBhZ2VzfScsXG4gICAgcm93czogJ3tyb3dzfScsXG4gICAgZmlyc3Q6ICd7Zmlyc3R9JyxcbiAgICBsYXN0OiAne2xhc3R9JyxcbiAgICB0b3RhbFJlY29yZHM6ICd7dG90YWxSZWNvcmRzfScsXG4gIH1cblxuICBfZGF0YSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJvd0xpc3RHcmlkRGF0YVtdPihbXSlcbiAgQElucHV0KClcbiAgZ2V0IGRhdGEoKTogUm93TGlzdEdyaWREYXRhW10ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IGRhdGEodmFsdWU6IFJvd0xpc3RHcmlkRGF0YVtdKSB7XG4gICAgIXRoaXMuX2RhdGEkLmdldFZhbHVlKCkubGVuZ3RoID8/IHRoaXMucmVzZXRQYWdlKClcbiAgICB0aGlzLl9vcmlnaW5hbERhdGEgPSBbLi4udmFsdWVdXG4gICAgdGhpcy5fZGF0YSQubmV4dChbLi4udmFsdWVdKVxuICB9XG4gIF9maWx0ZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsdGVyW10+KFtdKVxuICBASW5wdXQoKVxuICBnZXQgZmlsdGVycygpOiBGaWx0ZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcnMkLmdldFZhbHVlKClcbiAgfVxuICBzZXQgZmlsdGVycyh2YWx1ZTogRmlsdGVyW10pIHtcbiAgICAhdGhpcy5fZmlsdGVycyQuZ2V0VmFsdWUoKS5sZW5ndGggPz8gdGhpcy5yZXNldFBhZ2UoKVxuICAgIHRoaXMuX2ZpbHRlcnMkLm5leHQodmFsdWUpXG4gIH1cbiAgX29yaWdpbmFsRGF0YTogUm93TGlzdEdyaWREYXRhW10gPSBbXVxuICBfc29ydERpcmVjdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGFTb3J0RGlyZWN0aW9uPihEYXRhU29ydERpcmVjdGlvbi5OT05FKVxuICBASW5wdXQoKVxuICBnZXQgc29ydERpcmVjdGlvbigpOiBEYXRhU29ydERpcmVjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NvcnREaXJlY3Rpb24kLmdldFZhbHVlKClcbiAgfVxuICBzZXQgc29ydERpcmVjdGlvbih2YWx1ZTogRGF0YVNvcnREaXJlY3Rpb24pIHtcbiAgICBpZiAodmFsdWUgPT09IERhdGFTb3J0RGlyZWN0aW9uLk5PTkUpIHtcbiAgICAgIHRoaXMuX2RhdGEkLm5leHQoWy4uLnRoaXMuX29yaWdpbmFsRGF0YV0pXG4gICAgfVxuICAgIHRoaXMuX3NvcnREaXJlY3Rpb24kLm5leHQodmFsdWUpXG4gIH1cbiAgX3NvcnRGaWVsZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpXG4gIEBJbnB1dCgpXG4gIGdldCBzb3J0RmllbGQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcz8uX3NvcnRGaWVsZCQuZ2V0VmFsdWUoKVxuICB9XG4gIHNldCBzb3J0RmllbGQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3NvcnRGaWVsZCQubmV4dCh2YWx1ZSlcbiAgfVxuXG4gIEBJbnB1dCgpIGdyaWRJdGVtU3VidGl0bGVMaW5lc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ2dyaWRJdGVtU3VidGl0bGVMaW5lcycpIGdyaWRJdGVtU3VidGl0bGVMaW5lc0NoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9ncmlkSXRlbVN1YnRpdGxlTGluZXMoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzVGVtcGxhdGUgfHwgdGhpcy5ncmlkSXRlbVN1YnRpdGxlTGluZXNDaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSBsaXN0SXRlbVN1YnRpdGxlTGluZXNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdsaXN0SXRlbVN1YnRpdGxlTGluZXMnKSBsaXN0SXRlbVN1YnRpdGxlTGluZXNDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmxpc3RJdGVtU3VidGl0bGVMaW5lc1RlbXBsYXRlIHx8IHRoaXMubGlzdEl0ZW1TdWJ0aXRsZUxpbmVzQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgbGlzdEl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdsaXN0SXRlbScpIGxpc3RJdGVtQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2xpc3RJdGVtKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmxpc3RJdGVtVGVtcGxhdGUgfHwgdGhpcy5saXN0SXRlbUNoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIGdyaWRJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnZ3JpZEl0ZW0nKSBncmlkSXRlbUNoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9ncmlkSXRlbSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkSXRlbVRlbXBsYXRlIHx8IHRoaXMuZ3JpZEl0ZW1DaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSBsaXN0VmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdsaXN0VmFsdWUnKSBsaXN0VmFsdWVDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfbGlzdFZhbHVlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmxpc3RWYWx1ZVRlbXBsYXRlIHx8IHRoaXMubGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgdHJhbnNsYXRpb25LZXlMaXN0VmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCd0cmFuc2xhdGlvbktleUxpc3RWYWx1ZScpIHRyYW5zbGF0aW9uS2V5TGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX3RyYW5zbGF0aW9uS2V5TGlzdFZhbHVlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uS2V5TGlzdFZhbHVlVGVtcGxhdGUgfHwgdGhpcy50cmFuc2xhdGlvbktleUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIG51bWJlckxpc3RWYWx1ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ251bWJlckxpc3RWYWx1ZScpIG51bWJlckxpc3RWYWx1ZUNoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9udW1iZXJMaXN0VmFsdWUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubnVtYmVyTGlzdFZhbHVlVGVtcGxhdGUgfHwgdGhpcy5udW1iZXJMaXN0VmFsdWVDaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSByZWxhdGl2ZURhdGVMaXN0VmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdyZWxhdGl2ZURhdGVMaXN0VmFsdWUnKSByZWxhdGl2ZURhdGVMaXN0VmFsdWVDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfcmVsYXRpdmVEYXRlTGlzdFZhbHVlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlbGF0aXZlRGF0ZUxpc3RWYWx1ZVRlbXBsYXRlIHx8IHRoaXMucmVsYXRpdmVEYXRlTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZVxuICB9XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlbW92ZWQgYW5kIGluc3RlYWQgdG8gY2hhbmdlIHRoZSB0ZW1wbGF0ZSBvZiBhIHNwZWNpZmljIGNvbHVtblxuICAgKiB1c2UgdGhlIG5ldyBhcHByb2FjaCBpbnN0ZWFkIGJ5IGZvbGxvd2luZyB0aGUgbmFtaW5nIGNvbnZlbnRpb24gY29sdW1uIGlkICsgSWRMaXN0VmFsdWVcbiAgICogZS5nLiBmb3IgYSBjb2x1bW4gd2l0aCB0aGUgaWQgJ3N0YXR1cycgdXNlIHBUZW1wbGF0ZT1cInN0YXR1c0lkTGlzdFZhbHVlXCJcbiAgICovXG4gIEBJbnB1dCgpIGN1c3RvbUxpc3RWYWx1ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlbW92ZWQgYW5kIGluc3RlYWQgdG8gY2hhbmdlIHRoZSB0ZW1wbGF0ZSBvZiBhIHNwZWNpZmljIGNvbHVtblxuICAgKiB1c2UgdGhlIG5ldyBhcHByb2FjaCBpbnN0ZWFkIGJ5IGZvbGxvd2luZyB0aGUgbmFtaW5nIGNvbnZlbnRpb24gY29sdW1uIGlkICsgSWRMaXN0VmFsdWVcbiAgICogZS5nLiBmb3IgYSBjb2x1bW4gd2l0aCB0aGUgaWQgJ3N0YXR1cycgdXNlIHBUZW1wbGF0ZT1cInN0YXR1c0lkTGlzdFZhbHVlXCJcbiAgICovXG4gIEBDb250ZW50Q2hpbGQoJ2N1c3RvbUxpc3RWYWx1ZScpIGN1c3RvbUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9jdXN0b21MaXN0VmFsdWUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tTGlzdFZhbHVlVGVtcGxhdGUgfHwgdGhpcy5jdXN0b21MaXN0VmFsdWVDaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSBzdHJpbmdMaXN0VmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdzdHJpbmdMaXN0VmFsdWUnKSBzdHJpbmdMaXN0VmFsdWVDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfc3RyaW5nTGlzdFZhbHVlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnN0cmluZ0xpc3RWYWx1ZVRlbXBsYXRlIHx8IHRoaXMuc3RyaW5nTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgZGF0ZUxpc3RWYWx1ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ2RhdGVMaXN0VmFsdWUnKSBkYXRlTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2RhdGVMaXN0VmFsdWUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZUxpc3RWYWx1ZVRlbXBsYXRlIHx8IHRoaXMuZGF0ZUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIGlubGluZUxpc3RBY3Rpb25zJDogT2JzZXJ2YWJsZTxEYXRhQWN0aW9uW10+XG4gIG92ZXJmbG93TGlzdEFjdGlvbnMkOiBPYnNlcnZhYmxlPERhdGFBY3Rpb25bXT5cbiAgb3ZlcmZsb3dNZW51SXRlbXMkOiBPYnNlcnZhYmxlPE1lbnVJdGVtW10+XG4gIGN1cnJlbnRNZW51Um93JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Um93IHwgbnVsbD4obnVsbClcbiAgX2FkZGl0aW9uYWxBY3Rpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0YUFjdGlvbltdPihbXSlcbiAgQElucHV0KClcbiAgZ2V0IGFkZGl0aW9uYWxBY3Rpb25zKCk6IERhdGFBY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZGl0aW9uYWxBY3Rpb25zJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IGFkZGl0aW9uYWxBY3Rpb25zKHZhbHVlOiBEYXRhQWN0aW9uW10pIHtcbiAgICB0aGlzLl9hZGRpdGlvbmFsQWN0aW9ucyQubmV4dCh2YWx1ZSlcbiAgICB0aGlzLnVwZGF0ZUdyaWRNZW51SXRlbXMoKVxuICB9XG5cbiAgQE91dHB1dCgpIHZpZXdJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxMaXN0R3JpZERhdGE+KClcbiAgQE91dHB1dCgpIGVkaXRJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxMaXN0R3JpZERhdGE+KClcbiAgQE91dHB1dCgpIGRlbGV0ZUl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyPExpc3RHcmlkRGF0YT4oKVxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKVxuICBAT3V0cHV0KCkgcGFnZVNpemVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KClcbiAgQE91dHB1dCgpIGNvbXBvbmVudFN0YXRlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YUxpc3RHcmlkQ29tcG9uZW50U3RhdGU+KClcblxuICBnZXQgdmlld0l0ZW1PYnNlcnZlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBkdiA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdEYXRhVmlld0NvbXBvbmVudCcsIG51bGwpXG4gICAgcmV0dXJuIGR2Py52aWV3SXRlbU9ic2VydmVkIHx8IGR2Py52aWV3SXRlbS5vYnNlcnZlZCB8fCB0aGlzLnZpZXdJdGVtLm9ic2VydmVkXG4gIH1cbiAgZ2V0IGVkaXRJdGVtT2JzZXJ2ZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZHYgPSB0aGlzLmluamVjdG9yLmdldCgnRGF0YVZpZXdDb21wb25lbnQnLCBudWxsKVxuICAgIHJldHVybiBkdj8uZWRpdEl0ZW1PYnNlcnZlZCB8fCBkdj8uZWRpdEl0ZW0ub2JzZXJ2ZWQgfHwgdGhpcy5lZGl0SXRlbS5vYnNlcnZlZFxuICB9XG4gIGdldCBkZWxldGVJdGVtT2JzZXJ2ZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZHYgPSB0aGlzLmluamVjdG9yLmdldCgnRGF0YVZpZXdDb21wb25lbnQnLCBudWxsKVxuICAgIHJldHVybiBkdj8uZGVsZXRlSXRlbU9ic2VydmVkIHx8IGR2Py5kZWxldGVJdGVtLm9ic2VydmVkIHx8IHRoaXMuZGVsZXRlSXRlbS5vYnNlcnZlZFxuICB9XG5cbiAgZ2V0IHNvcnREaXJlY3Rpb25OdW1iZXIoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5zb3J0RGlyZWN0aW9uID09PSBEYXRhU29ydERpcmVjdGlvbi5BU0NFTkRJTkcpIHJldHVybiAxXG4gICAgaWYgKHRoaXMuc29ydERpcmVjdGlvbiA9PT0gRGF0YVNvcnREaXJlY3Rpb24uREVTQ0VORElORykgcmV0dXJuIC0xXG4gICAgcmV0dXJuIDBcbiAgfVxuXG4gIHNob3dNZW51ID0gZmFsc2VcbiAgZ3JpZE1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdXG4gIHNlbGVjdGVkSXRlbTogTGlzdEdyaWREYXRhIHwgdW5kZWZpbmVkXG4gIG9ic2VydmVkT3V0cHV0cyA9IDBcblxuICBkaXNwbGF5ZWRJdGVtcyQ6IE9ic2VydmFibGU8dW5rbm93bltdPiB8IHVuZGVmaW5lZFxuICBmYWxsYmFja0ltYWdlUGF0aCQhOiBPYnNlcnZhYmxlPHN0cmluZz5cblxuICB0ZW1wbGF0ZXMkOiBCZWhhdmlvclN1YmplY3Q8UXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKVxuICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpXG4gIHNldCB0ZW1wbGF0ZXModmFsdWU6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMudGVtcGxhdGVzJC5uZXh0KHZhbHVlKVxuICB9XG5cbiAgdmlld1RlbXBsYXRlcyQ6IEJlaGF2aW9yU3ViamVjdDxRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCB1bmRlZmluZWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCB1bmRlZmluZWRcbiAgPih1bmRlZmluZWQpXG4gIEBWaWV3Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSlcbiAgc2V0IHZpZXdUZW1wbGF0ZXModmFsdWU6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMudmlld1RlbXBsYXRlcyQubmV4dCh2YWx1ZSlcbiAgfVxuXG4gIHBhcmVudFRlbXBsYXRlcyQ6IEJlaGF2aW9yU3ViamVjdDxRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCBudWxsIHwgdW5kZWZpbmVkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgbnVsbCB8IHVuZGVmaW5lZFxuICA+KHVuZGVmaW5lZClcbiAgQElucHV0KClcbiAgc2V0IHBhcmVudFRlbXBsYXRlcyh2YWx1ZTogUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGFyZW50VGVtcGxhdGVzJC5uZXh0KHZhbHVlKVxuICB9XG5cbiAgY29sdW1uVHlwZSA9IENvbHVtblR5cGVcbiAgdGVtcGxhdGVzT2JzZXJ2YWJsZXM6IFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGU8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+PiA9IHt9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChMT0NBTEVfSUQpIGxvY2FsZTogc3RyaW5nLFxuICAgIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGFwcFN0YXRlU2VydmljZTogQXBwU3RhdGVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGxvY2FsZSwgdHJhbnNsYXRlU2VydmljZSlcbiAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWUgfHwgdGhpcy5yb3V0ZXIudXJsLnJlcGxhY2UoL1teQS1aYS16MC05XS8sICdfJylcbiAgICB0aGlzLmZhbGxiYWNrSW1hZ2VQYXRoJCA9IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRNZmUkLnBpcGUoXG4gICAgICBtYXAoKGN1cnJlbnRNZmUpID0+IHRoaXMuZ2V0RmFsbGJhY2tJbWFnZVBhdGgoY3VycmVudE1mZSkpXG4gICAgKVxuICAgIHRoaXMuZGlzcGxheWVkUGFnZVNpemVzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX3BhZ2VTaXplcyQsIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoJ09DWF9EQVRBX1RBQkxFLkFMTCcpXSkucGlwZShcbiAgICAgIG1hcCgoW3BhZ2VTaXplcywgdHJhbnNsYXRpb25dKSA9PiBwYWdlU2l6ZXMuY29uY2F0KHsgc2hvd0FsbDogdHJhbnNsYXRpb24gfSkpXG4gICAgKVxuICAgIHRoaXMuZGlzcGxheWVkUGFnZVNpemUkID0gY29tYmluZUxhdGVzdChbdGhpcy5fcGFnZVNpemUkLCB0aGlzLl9wYWdlU2l6ZXMkXSkucGlwZShcbiAgICAgIG1hcCgoW3BhZ2VTaXplLCBwYWdlU2l6ZXNdKSA9PiBwYWdlU2l6ZSA/PyBwYWdlU2l6ZXMuZmluZCgodmFsKTogdmFsIGlzIG51bWJlciA9PiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykgPz8gNTApXG4gICAgKVxuICAgIHRoaXMuaW5saW5lTGlzdEFjdGlvbnMkID0gdGhpcy5fYWRkaXRpb25hbEFjdGlvbnMkLnBpcGUoXG4gICAgICBtYXAoKGFjdGlvbnMpID0+IGFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+ICFhY3Rpb24uc2hvd0FzT3ZlcmZsb3cpKVxuICAgIClcbiAgICB0aGlzLm92ZXJmbG93TGlzdEFjdGlvbnMkID0gdGhpcy5fYWRkaXRpb25hbEFjdGlvbnMkLnBpcGUoXG4gICAgICBtYXAoKGFjdGlvbnMpID0+IGFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5zaG93QXNPdmVyZmxvdykpXG4gICAgKVxuICAgIHRoaXMub3ZlcmZsb3dNZW51SXRlbXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5vdmVyZmxvd0xpc3RBY3Rpb25zJCwgdGhpcy5jdXJyZW50TWVudVJvdyRdKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb25zLCByb3ddKSA9PlxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KFsuLi5hY3Rpb25zLm1hcCgoYSkgPT4gYS5sYWJlbEtleSB8fCAnJyldKS5waXBlKFxuICAgICAgICAgIG1hcCgodHJhbnNsYXRpb25zKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYWN0aW9uc1xuICAgICAgICAgICAgICAuZmlsdGVyKChhKSA9PiB0aGlzLnVzZXJTZXJ2aWNlLmhhc1Blcm1pc3Npb24oYS5wZXJtaXNzaW9uKSlcbiAgICAgICAgICAgICAgLm1hcCgoYSkgPT4gKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRpb25zW2EubGFiZWxLZXkgfHwgJyddLFxuICAgICAgICAgICAgICAgIGljb246IGEuaWNvbixcbiAgICAgICAgICAgICAgICBzdHlsZUNsYXNzOiAoYS5jbGFzc2VzIHx8IFtdKS5qb2luKCcgJyksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGEuZGlzYWJsZWQgfHwgKCEhYS5hY3Rpb25FbmFibGVkRmllbGQgJiYgIXRoaXMuZmllbGRJc1RydXRoeShyb3csIGEuYWN0aW9uRW5hYmxlZEZpZWxkKSksXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogIWEuYWN0aW9uVmlzaWJsZUZpZWxkIHx8IHRoaXMuZmllbGRJc1RydXRoeShyb3csIGEuYWN0aW9uVmlzaWJsZUZpZWxkKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiBhLmNhbGxiYWNrKHJvdyksXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgY29uc3Qgb2JzZXJ2ZWRPdXRwdXRzID0gPGFueT50aGlzLnZpZXdJdGVtLm9ic2VydmVkICsgPGFueT50aGlzLmRlbGV0ZUl0ZW0ub2JzZXJ2ZWQgKyA8YW55PnRoaXMuZWRpdEl0ZW0ub2JzZXJ2ZWRcbiAgICBpZiAodGhpcy5vYnNlcnZlZE91dHB1dHMgIT09IG9ic2VydmVkT3V0cHV0cykge1xuICAgICAgdGhpcy51cGRhdGVHcmlkTWVudUl0ZW1zKClcbiAgICAgIHRoaXMub2JzZXJ2ZWRPdXRwdXRzID0gb2JzZXJ2ZWRPdXRwdXRzXG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5ZWRJdGVtcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9kYXRhJCwgdGhpcy5fZmlsdGVycyQsIHRoaXMuX3NvcnRGaWVsZCQsIHRoaXMuX3NvcnREaXJlY3Rpb24kXSkucGlwZShcbiAgICAgIG1lcmdlTWFwKChwYXJhbXMpID0+IHRoaXMudHJhbnNsYXRlSXRlbXMocGFyYW1zLCB0aGlzLmNvbHVtbnMsIHRoaXMuY2xpZW50U2lkZUZpbHRlcmluZywgdGhpcy5jbGllbnRTaWRlU29ydGluZykpLFxuICAgICAgbWFwKChwYXJhbXMpID0+IHRoaXMuZmlsdGVySXRlbXMocGFyYW1zLCB0aGlzLmNsaWVudFNpZGVGaWx0ZXJpbmcpKSxcbiAgICAgIG1hcCgocGFyYW1zKSA9PiB0aGlzLnNvcnRJdGVtcyhwYXJhbXMsIHRoaXMuY29sdW1ucywgdGhpcy5jbGllbnRTaWRlU29ydGluZykpLFxuICAgICAgbWFwKChbaXRlbXNdKSA9PiBpdGVtcylcbiAgICApXG5cbiAgICB0aGlzLnNob3dNZW51ID1cbiAgICAgICghIXRoaXMudmlld1Blcm1pc3Npb24gJiYgdGhpcy51c2VyU2VydmljZS5oYXNQZXJtaXNzaW9uKHRoaXMudmlld1Blcm1pc3Npb24pKSB8fFxuICAgICAgKCEhdGhpcy5lZGl0UGVybWlzc2lvbiAmJiB0aGlzLnVzZXJTZXJ2aWNlLmhhc1Blcm1pc3Npb24odGhpcy5lZGl0UGVybWlzc2lvbikpIHx8XG4gICAgICAoISF0aGlzLmRlbGV0ZVBlcm1pc3Npb24gJiYgdGhpcy51c2VyU2VydmljZS5oYXNQZXJtaXNzaW9uKHRoaXMuZGVsZXRlUGVybWlzc2lvbikpXG5cbiAgICB0aGlzLmVtaXRDb21wb25lbnRTdGF0ZUNoYW5nZWQoKVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMudGVtcGxhdGVzJC52YWx1ZT8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICBjYXNlICdsaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMubGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICd0cmFuc2xhdGlvbktleUxpc3RWYWx1ZSc6XG4gICAgICAgICAgdGhpcy50cmFuc2xhdGlvbktleUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnbnVtYmVyTGlzdFZhbHVlJzpcbiAgICAgICAgICB0aGlzLm51bWJlckxpc3RWYWx1ZUNoaWxkVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAncmVsYXRpdmVEYXRlTGlzdFZhbHVlJzpcbiAgICAgICAgICB0aGlzLnJlbGF0aXZlRGF0ZUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnY3VzdG9tTGlzdFZhbHVlJzpcbiAgICAgICAgICB0aGlzLmN1c3RvbUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnc3RyaW5nTGlzdFZhbHVlJzpcbiAgICAgICAgICB0aGlzLnN0cmluZ0xpc3RWYWx1ZUNoaWxkVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnZGF0ZUxpc3RWYWx1ZSc6XG4gICAgICAgICAgdGhpcy5kYXRlTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBvbkRlbGV0ZVJvdyhlbGVtZW50OiBMaXN0R3JpZERhdGEpIHtcbiAgICB0aGlzLmRlbGV0ZUl0ZW0uZW1pdChlbGVtZW50KVxuICB9XG5cbiAgb25WaWV3Um93KGVsZW1lbnQ6IExpc3RHcmlkRGF0YSkge1xuICAgIGlmICghIXRoaXMudmlld1Blcm1pc3Npb24gJiYgdGhpcy51c2VyU2VydmljZS5oYXNQZXJtaXNzaW9uKHRoaXMudmlld1Blcm1pc3Npb24pKSB7XG4gICAgICB0aGlzLnZpZXdJdGVtLmVtaXQoZWxlbWVudClcbiAgICB9XG4gIH1cblxuICBvbkVkaXRSb3coZWxlbWVudDogTGlzdEdyaWREYXRhKSB7XG4gICAgdGhpcy5lZGl0SXRlbS5lbWl0KGVsZW1lbnQpXG4gIH1cblxuICBpbWdFcnJvcihpdGVtOiBMaXN0R3JpZERhdGEpIHtcbiAgICBpdGVtLmltYWdlUGF0aCA9ICcnXG4gIH1cblxuICBnZXRGYWxsYmFja0ltYWdlUGF0aChtZmVJbmZvOiBNZmVJbmZvKSB7XG4gICAgcmV0dXJuIG1mZUluZm8/LnJlbW90ZUJhc2VVcmxcbiAgICAgID8gYCR7bWZlSW5mby5yZW1vdGVCYXNlVXJsfS9vbmVjeC1wb3J0YWwtbGliL2Fzc2V0cy9pbWFnZXMvJHt0aGlzLmZhbGxiYWNrSW1hZ2V9YFxuICAgICAgOiBgLi9vbmVjeC1wb3J0YWwtbGliL2Fzc2V0cy9pbWFnZXMvJHt0aGlzLmZhbGxiYWNrSW1hZ2V9YFxuICB9XG5cbiAgdXBkYXRlR3JpZE1lbnVJdGVtcyh1c2VTZWxlY3RlZEl0ZW0gPSBmYWxzZSk6IHZvaWQge1xuICAgIGxldCBkZWxldGVEaXNhYmxlZCA9IGZhbHNlXG4gICAgbGV0IGVkaXREaXNhYmxlZCA9IGZhbHNlXG4gICAgbGV0IHZpZXdEaXNhYmxlZCA9IGZhbHNlXG5cbiAgICBsZXQgZGVsZXRlVmlzaWJsZSA9IHRydWVcbiAgICBsZXQgZWRpdFZpc2libGUgPSB0cnVlXG4gICAgbGV0IHZpZXdWaXNpYmxlID0gdHJ1ZVxuXG4gICAgaWYgKHVzZVNlbGVjdGVkSXRlbSAmJiB0aGlzLnNlbGVjdGVkSXRlbSkge1xuICAgICAgdmlld0Rpc2FibGVkID1cbiAgICAgICAgISF0aGlzLnZpZXdBY3Rpb25FbmFibGVkRmllbGQgJiYgIXRoaXMuZmllbGRJc1RydXRoeSh0aGlzLnNlbGVjdGVkSXRlbSwgdGhpcy52aWV3QWN0aW9uRW5hYmxlZEZpZWxkKVxuICAgICAgZWRpdERpc2FibGVkID1cbiAgICAgICAgISF0aGlzLmVkaXRBY3Rpb25FbmFibGVkRmllbGQgJiYgIXRoaXMuZmllbGRJc1RydXRoeSh0aGlzLnNlbGVjdGVkSXRlbSwgdGhpcy5lZGl0QWN0aW9uRW5hYmxlZEZpZWxkKVxuICAgICAgZGVsZXRlRGlzYWJsZWQgPVxuICAgICAgICAhIXRoaXMuZGVsZXRlQWN0aW9uRW5hYmxlZEZpZWxkICYmICF0aGlzLmZpZWxkSXNUcnV0aHkodGhpcy5zZWxlY3RlZEl0ZW0sIHRoaXMuZGVsZXRlQWN0aW9uRW5hYmxlZEZpZWxkKVxuXG4gICAgICB2aWV3VmlzaWJsZSA9ICF0aGlzLnZpZXdBY3Rpb25WaXNpYmxlRmllbGQgfHwgdGhpcy5maWVsZElzVHJ1dGh5KHRoaXMuc2VsZWN0ZWRJdGVtLCB0aGlzLnZpZXdBY3Rpb25WaXNpYmxlRmllbGQpXG4gICAgICBlZGl0VmlzaWJsZSA9ICF0aGlzLmVkaXRBY3Rpb25WaXNpYmxlRmllbGQgfHwgdGhpcy5maWVsZElzVHJ1dGh5KHRoaXMuc2VsZWN0ZWRJdGVtLCB0aGlzLmVkaXRBY3Rpb25WaXNpYmxlRmllbGQpXG4gICAgICBkZWxldGVWaXNpYmxlID1cbiAgICAgICAgIXRoaXMuZGVsZXRlQWN0aW9uVmlzaWJsZUZpZWxkIHx8IHRoaXMuZmllbGRJc1RydXRoeSh0aGlzLnNlbGVjdGVkSXRlbSwgdGhpcy5kZWxldGVBY3Rpb25WaXNpYmxlRmllbGQpXG4gICAgfVxuXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlXG4gICAgICAuZ2V0KFtcbiAgICAgICAgdGhpcy52aWV3TWVudUl0ZW1LZXkgfHwgJ09DWF9EQVRBX0xJU1RfR1JJRC5NRU5VLlZJRVcnLFxuICAgICAgICB0aGlzLmVkaXRNZW51SXRlbUtleSB8fCAnT0NYX0RBVEFfTElTVF9HUklELk1FTlUuRURJVCcsXG4gICAgICAgIHRoaXMuZGVsZXRlTWVudUl0ZW1LZXkgfHwgJ09DWF9EQVRBX0xJU1RfR1JJRC5NRU5VLkRFTEVURScsXG4gICAgICAgIC4uLnRoaXMuYWRkaXRpb25hbEFjdGlvbnMubWFwKChhKSA9PiBhLmxhYmVsS2V5IHx8ICcnKSxcbiAgICAgIF0pXG4gICAgICAuc3Vic2NyaWJlKCh0cmFuc2xhdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdXG4gICAgICAgIGNvbnN0IGF1dG9tYXRpb25JZCA9ICdkYXRhLWdyaWQtYWN0aW9uLWJ1dHRvbidcbiAgICAgICAgY29uc3QgYXV0b21hdGlvbklkSGlkZGVuID0gJ2RhdGEtZ3JpZC1hY3Rpb24tYnV0dG9uLWhpZGRlbidcbiAgICAgICAgaWYgKHRoaXMudmlld0l0ZW0ub2JzZXJ2ZWQgJiYgdGhpcy51c2VyU2VydmljZS5oYXNQZXJtaXNzaW9uKHRoaXMudmlld1Blcm1pc3Npb24gfHwgJycpKSB7XG4gICAgICAgICAgbWVudUl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0aW9uc1t0aGlzLnZpZXdNZW51SXRlbUtleSB8fCAnT0NYX0RBVEFfTElTVF9HUklELk1FTlUuVklFVyddLFxuICAgICAgICAgICAgaWNvbjogUHJpbWVJY29ucy5FWUUsXG4gICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLnZpZXdJdGVtLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW0pLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IHZpZXdEaXNhYmxlZCxcbiAgICAgICAgICAgIHZpc2libGU6IHZpZXdWaXNpYmxlLFxuICAgICAgICAgICAgYXV0b21hdGlvbklkOiB2aWV3VmlzaWJsZSA/IGF1dG9tYXRpb25JZCA6IGF1dG9tYXRpb25JZEhpZGRlbixcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmVkaXRJdGVtLm9ic2VydmVkICYmIHRoaXMudXNlclNlcnZpY2UuaGFzUGVybWlzc2lvbih0aGlzLmVkaXRQZXJtaXNzaW9uIHx8ICcnKSkge1xuICAgICAgICAgIG1lbnVJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGlvbnNbdGhpcy5lZGl0TWVudUl0ZW1LZXkgfHwgJ09DWF9EQVRBX0xJU1RfR1JJRC5NRU5VLkVESVQnXSxcbiAgICAgICAgICAgIGljb246IFByaW1lSWNvbnMuUEVOQ0lMLFxuICAgICAgICAgICAgY29tbWFuZDogKCkgPT4gdGhpcy5lZGl0SXRlbS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtKSxcbiAgICAgICAgICAgIGRpc2FibGVkOiBlZGl0RGlzYWJsZWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBlZGl0VmlzaWJsZSxcbiAgICAgICAgICAgIGF1dG9tYXRpb25JZDogZWRpdFZpc2libGUgPyBhdXRvbWF0aW9uSWQgOiBhdXRvbWF0aW9uSWRIaWRkZW4sXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kZWxldGVJdGVtLm9ic2VydmVkICYmIHRoaXMudXNlclNlcnZpY2UuaGFzUGVybWlzc2lvbih0aGlzLmRlbGV0ZVBlcm1pc3Npb24gfHwgJycpKSB7XG4gICAgICAgICAgbWVudUl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0aW9uc1t0aGlzLmRlbGV0ZU1lbnVJdGVtS2V5IHx8ICdPQ1hfREFUQV9MSVNUX0dSSUQuTUVOVS5ERUxFVEUnXSxcbiAgICAgICAgICAgIGljb246IFByaW1lSWNvbnMuVFJBU0gsXG4gICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLmRlbGV0ZUl0ZW0uZW1pdCh0aGlzLnNlbGVjdGVkSXRlbSksXG4gICAgICAgICAgICBkaXNhYmxlZDogZGVsZXRlRGlzYWJsZWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBkZWxldGVWaXNpYmxlLFxuICAgICAgICAgICAgYXV0b21hdGlvbklkOiBkZWxldGVWaXNpYmxlID8gYXV0b21hdGlvbklkIDogYXV0b21hdGlvbklkSGlkZGVuLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgbWVudUl0ZW1zID0gbWVudUl0ZW1zLmNvbmNhdChcbiAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxBY3Rpb25zXG4gICAgICAgICAgICAuZmlsdGVyKChhKSA9PiB0aGlzLnVzZXJTZXJ2aWNlLmhhc1Blcm1pc3Npb24oYS5wZXJtaXNzaW9uKSlcbiAgICAgICAgICAgIC5tYXAoKGEpID0+ICh7XG4gICAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGlvbnNbYS5sYWJlbEtleSB8fCAnJ10sXG4gICAgICAgICAgICAgIGljb246IGEuaWNvbixcbiAgICAgICAgICAgICAgc3R5bGVDbGFzczogKGEuY2xhc3NlcyB8fCBbXSkuam9pbignICcpLFxuICAgICAgICAgICAgICBkaXNhYmxlZDpcbiAgICAgICAgICAgICAgICBhLmRpc2FibGVkIHx8ICghIWEuYWN0aW9uRW5hYmxlZEZpZWxkICYmICF0aGlzLmZpZWxkSXNUcnV0aHkodGhpcy5zZWxlY3RlZEl0ZW0sIGEuYWN0aW9uRW5hYmxlZEZpZWxkKSksXG4gICAgICAgICAgICAgIHZpc2libGU6ICFhLmFjdGlvblZpc2libGVGaWVsZCB8fCB0aGlzLmZpZWxkSXNUcnV0aHkodGhpcy5zZWxlY3RlZEl0ZW0sIGEuYWN0aW9uVmlzaWJsZUZpZWxkKSxcbiAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4gYS5jYWxsYmFjayh0aGlzLnNlbGVjdGVkSXRlbSksXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgKVxuICAgICAgICB0aGlzLmdyaWRNZW51SXRlbXMgPSBtZW51SXRlbXNcbiAgICAgIH0pXG4gIH1cblxuICBzZXRTZWxlY3RlZEl0ZW0oaXRlbTogTGlzdEdyaWREYXRhKSB7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBpdGVtXG4gIH1cblxuICByZXNvbHZlRmllbGREYXRhKG9iamVjdDogYW55LCBrZXk6IGFueSkge1xuICAgIHJldHVybiBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG9iamVjdCwga2V5KVxuICB9XG5cbiAgZW1pdENvbXBvbmVudFN0YXRlQ2hhbmdlZChzdGF0ZTogRGF0YUxpc3RHcmlkQ29tcG9uZW50U3RhdGUgPSB7fSkge1xuICAgIHRoaXMuZGlzcGxheWVkUGFnZVNpemUkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKChwYWdlU2l6ZSkgPT4ge1xuICAgICAgdGhpcy5jb21wb25lbnRTdGF0ZUNoYW5nZWQuZW1pdCh7XG4gICAgICAgIHBhZ2VTaXplLFxuICAgICAgICBhY3RpdmVQYWdlOiB0aGlzLnBhZ2UsXG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgb25QYWdlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBwYWdlID0gZXZlbnQuZmlyc3QgLyBldmVudC5yb3dzXG4gICAgdGhpcy5wYWdlID0gcGFnZVxuICAgIHRoaXMucGFnZVNpemUgPSBldmVudC5yb3dzXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHBhZ2UpXG4gICAgdGhpcy5wYWdlU2l6ZUNoYW5nZWQuZW1pdChldmVudC5yb3dzKVxuICAgIHRoaXMuZW1pdENvbXBvbmVudFN0YXRlQ2hhbmdlZCh7XG4gICAgICBhY3RpdmVQYWdlOiBwYWdlLFxuICAgICAgcGFnZVNpemU6IGV2ZW50LnJvd3MsXG4gICAgfSlcbiAgfVxuXG4gIHJlc2V0UGFnZSgpIHtcbiAgICB0aGlzLnBhZ2UgPSAwXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHRoaXMucGFnZSlcbiAgICB0aGlzLmVtaXRDb21wb25lbnRTdGF0ZUNoYW5nZWQoKVxuICB9XG5cbiAgZmllbGRJc1RydXRoeShvYmplY3Q6IGFueSwga2V5OiBhbnkpIHtcbiAgICByZXR1cm4gISF0aGlzLnJlc29sdmVGaWVsZERhdGEob2JqZWN0LCBrZXkpXG4gIH1cblxuICBoYXNWaXNpYmxlT3ZlcmZsb3dNZW51SXRlbXMoaXRlbTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmZsb3dMaXN0QWN0aW9ucyQucGlwZShcbiAgICAgIG1hcCgoYWN0aW9ucykgPT5cbiAgICAgICAgYWN0aW9ucy5zb21lKFxuICAgICAgICAgIChhKSA9PlxuICAgICAgICAgICAgKCFhLmFjdGlvblZpc2libGVGaWVsZCB8fCB0aGlzLmZpZWxkSXNUcnV0aHkoaXRlbSwgYS5hY3Rpb25WaXNpYmxlRmllbGQpKSAmJlxuICAgICAgICAgICAgdGhpcy51c2VyU2VydmljZS5oYXNQZXJtaXNzaW9uKGEucGVybWlzc2lvbilcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIHRvZ2dsZU92ZXJmbG93TWVudShldmVudDogTW91c2VFdmVudCwgbWVudTogTWVudSwgcm93OiBSb3cpIHtcbiAgICB0aGlzLmN1cnJlbnRNZW51Um93JC5uZXh0KHJvdylcbiAgICBtZW51LnRvZ2dsZShldmVudClcbiAgfVxuXG4gIGdldEZpbHRlcmVkQ29sdW1ucygpIHtcbiAgICBsZXQgaWRzOiBzdHJpbmdbXSA9IFsuLi4odGhpcy5zdWJ0aXRsZUxpbmVJZHMgPz8gW10pXVxuICAgIGlmICh0aGlzLnRpdGxlTGluZUlkKSB7XG4gICAgICBpZHMgPSBbdGhpcy50aXRsZUxpbmVJZCwgLi4uKHRoaXMuc3VidGl0bGVMaW5lSWRzID8/IFtdKV1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maWx0ZXIoKGMpID0+ICFpZHMuaW5jbHVkZXMoYy5pZCkpXG4gIH1cblxuICBmaW5kVGVtcGxhdGUodGVtcGxhdGVzOiBQcmltZVRlbXBsYXRlW10sIG5hbWVzOiBzdHJpbmdbXSk6IFByaW1lVGVtcGxhdGUgfCB1bmRlZmluZWQge1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBuYW1lcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBuYW1lc1tpbmRleF1cbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGVtcGxhdGVzLmZpbmQoKHRlbXBsYXRlKSA9PiB0ZW1wbGF0ZS5uYW1lID09PSBuYW1lKVxuICAgICAgaWYgKHRlbXBsYXRlKSB7XG4gICAgICAgIHJldHVybiB0ZW1wbGF0ZVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBnZXRUZW1wbGF0ZShjb2x1bW46IERhdGFUYWJsZUNvbHVtbik6IE9ic2VydmFibGU8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+IHtcbiAgICBpZiAoIXRoaXMudGVtcGxhdGVzT2JzZXJ2YWJsZXNbY29sdW1uLmlkXSkge1xuICAgICAgdGhpcy50ZW1wbGF0ZXNPYnNlcnZhYmxlc1tjb2x1bW4uaWRdID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMudGVtcGxhdGVzJCxcbiAgICAgICAgdGhpcy52aWV3VGVtcGxhdGVzJCxcbiAgICAgICAgdGhpcy5wYXJlbnRUZW1wbGF0ZXMkLFxuICAgICAgXSkucGlwZShcbiAgICAgICAgbWFwKChbdCwgdnQsIHB0XSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRlbXBsYXRlcyA9IFsuLi4odCA/PyBbXSksIC4uLih2dCA/PyBbXSksIC4uLihwdCA/PyBbXSldXG4gICAgICAgICAgY29uc3QgY29sdW1uVGVtcGxhdGUgPSB0ZW1wbGF0ZXMuZmluZCgodGVtcGxhdGUpID0+IHRlbXBsYXRlLm5hbWUgPT09IGNvbHVtbi5pZCArICdJZExpc3RWYWx1ZScpPy50ZW1wbGF0ZVxuICAgICAgICAgIGlmIChjb2x1bW5UZW1wbGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbHVtblRlbXBsYXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIHN3aXRjaCAoY29sdW1uLmNvbHVtblR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZS5EQVRFOlxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGVMaXN0VmFsdWUgPz9cbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRUZW1wbGF0ZSh0ZW1wbGF0ZXMsIFsnZGF0ZUxpc3RWYWx1ZScsICdkZWZhdWx0RGF0ZUxpc3RWYWx1ZSddKT8udGVtcGxhdGUgPz9cbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZS5OVU1CRVI6XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgdGhpcy5fbnVtYmVyTGlzdFZhbHVlID8/XG4gICAgICAgICAgICAgICAgdGhpcy5maW5kVGVtcGxhdGUodGVtcGxhdGVzLCBbJ251bWJlckxpc3RWYWx1ZScsICdkZWZhdWx0TnVtYmVyTGlzdFZhbHVlJ10pPy50ZW1wbGF0ZSA/P1xuICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlLlJFTEFUSVZFX0RBVEU6XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgdGhpcy5fcmVsYXRpdmVEYXRlTGlzdFZhbHVlID8/XG4gICAgICAgICAgICAgICAgdGhpcy5maW5kVGVtcGxhdGUodGVtcGxhdGVzLCBbJ3JlbGF0aXZlRGF0ZUxpc3RWYWx1ZScsICdkZWZhdWx0UmVsYXRpdmVEYXRlTGlzdFZhbHVlJ10pPy50ZW1wbGF0ZSA/P1xuICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlLlRSQU5TTEFUSU9OX0tFWTpcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGlvbktleUxpc3RWYWx1ZSA/P1xuICAgICAgICAgICAgICAgIHRoaXMuZmluZFRlbXBsYXRlKHRlbXBsYXRlcywgWyd0cmFuc2xhdGlvbktleUxpc3RWYWx1ZScsICdkZWZhdWx0VHJhbnNsYXRpb25LZXlMaXN0VmFsdWUnXSk/LnRlbXBsYXRlID8/XG4gICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGUuQ1VTVE9NOlxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuX2N1c3RvbUxpc3RWYWx1ZSA/P1xuICAgICAgICAgICAgICAgIHRoaXMuZmluZFRlbXBsYXRlKHRlbXBsYXRlcywgWydjdXN0b21MaXN0VmFsdWUnLCAnZGVmYXVsdEN1c3RvbUxpc3RWYWx1ZSddKT8udGVtcGxhdGUgPz9cbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgdGhpcy5fc3RyaW5nTGlzdFZhbHVlID8/XG4gICAgICAgICAgICAgICAgdGhpcy5maW5kVGVtcGxhdGUodGVtcGxhdGVzLCBbJ3N0cmluZ0xpc3RWYWx1ZScsICdkZWZhdWx0U3RyaW5nTGlzdFZhbHVlJ10pPy50ZW1wbGF0ZSA/P1xuICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGRlYm91bmNlVGltZSg1MClcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVzT2JzZXJ2YWJsZXNbY29sdW1uLmlkXVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiKGRpc3BsYXllZFBhZ2VTaXplJCB8IGFzeW5jKSBhcyBkaXNwbGF5ZWRQYWdlU2l6ZVwiPlxuICA8cC1kYXRhVmlld1xuICAgICpuZ0lmPVwiKGNvbHVtblRlbXBsYXRlcyQgfCBhc3luYykgPz8ge30gYXMgY29sdW1uVGVtcGxhdGVzXCJcbiAgICBbdmFsdWVdPVwiKGRpc3BsYXllZEl0ZW1zJCB8IGFzeW5jKSA/PyBbXVwiXG4gICAgW3BhZ2luYXRvcl09XCJwYWdpbmF0b3JcIlxuICAgIFtmaXJzdF09XCJwYWdlICogZGlzcGxheWVkUGFnZVNpemVcIlxuICAgIChvblBhZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxuICAgIFtyb3dzXT1cImRpc3BsYXllZFBhZ2VTaXplXCJcbiAgICBbbGF5b3V0XT1cImxheW91dFwiXG4gICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCJcbiAgICBjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlPVwie3sgKHRvdGFsUmVjb3Jkc09uU2VydmVyID8gY3VycmVudFBhZ2VTaG93aW5nV2l0aFRvdGFsT25TZXJ2ZXJLZXkgOiBjdXJyZW50UGFnZVNob3dpbmdLZXkpIHwgdHJhbnNsYXRlOnBhcmFtcyB9fVwiXG4gICAgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCIoZGlzcGxheWVkUGFnZVNpemVzJCB8IGFzeW5jKSA/PyBbXVwiXG4gICAgaWQ9XCJkYXRhTGlzdEdyaWRfe3tuYW1lfX1cIlxuICAgIHBhZ2luYXRvckRyb3Bkb3duQXBwZW5kVG89XCJib2R5XCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSAjZ3JpZEl0ZW0gbGV0LXJvd3MgcFRlbXBsYXRlPVwiZ3JpZEl0ZW1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLWdyaWQgcC1ub2d1dHRlciBncmlkIGdyaWQtbm9ndXR0ZXJcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1pdGVtIFtuZ0Zvck9mXT1cInJvd3NcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfZ3JpZEl0ZW0gPyBfZ3JpZEl0ZW0gOiBkZWZhdWx0R3JpZEl0ZW1cIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6aXRlbX1cIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2xpc3RJdGVtIGxldC1yb3dzIHBUZW1wbGF0ZT1cImxpc3RJdGVtXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtbm9ndXR0ZXIgZ3JpZCBncmlkLW5vZ3V0dGVyXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtaXRlbSBbbmdGb3JPZl09XCJyb3dzXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2xpc3RJdGVtID8gX2xpc3RJdGVtIDogZGVmYXVsdExpc3RJdGVtXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgIGl0ZW06aXRlbSxcbiAgICAgICAgICAgICAgY29sdW1uVGVtcGxhdGVzOiBjb2x1bW5UZW1wbGF0ZXNcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHlcIj5cbiAgICAgIDxzcGFuPnt7IGVtcHR5UmVzdWx0c01lc3NhZ2UgfHwgKFwiT0NYX0RBVEFfTElTVF9HUklELkVNUFRZX1JFU1VMVFwiIHwgdHJhbnNsYXRlKSB9fTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L3AtZGF0YVZpZXc+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0R3JpZEl0ZW0gbGV0LWl0ZW0+XG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgbGc6Y29sLTYgeGw6Y29sLTQgZmxleFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRhLWdyaWQtaXRlbSBjYXJkIGZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy0xMiBsZzp3LTExIG1iLTQgbXQtNCBhbGlnbi1zZWxmLXN0cmV0Y2hcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbWItM1wiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgY2xhc3M9XCJpbWFnZVwiXG4gICAgICAgICAgc3JjPVwie3sgaXRlbS5pbWFnZVBhdGggfHwgKGZhbGxiYWNrSW1hZ2VQYXRoJCB8IGFzeW5jKSB9fVwiXG4gICAgICAgICAgKGVycm9yKT1cImltZ0Vycm9yKGl0ZW0pXCJcbiAgICAgICAgICBhbHQ9XCJ7e3Jlc29sdmVGaWVsZERhdGEoaXRlbSwgdGl0bGVMaW5lSWQpfHwgJyd9fVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YS1ncmlkLWl0ZW1zIGZsZXgtcm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tbmFtZSBmb250LW1lZGl1bSBtci0zIHRleHQtMnhsXCI+XG4gICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJcIiAoY2xpY2spPVwib25WaWV3Um93XCI+e3sgcmVzb2x2ZUZpZWxkRGF0YShpdGVtLCB0aXRsZUxpbmVJZCkgfHwgJycgfX08L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2dyaWRJdGVtU3VidGl0bGVMaW5lcyA/IF9ncmlkSXRlbVN1YnRpdGxlTGluZXMgOiBkZWZhdWx0R3JpZEl0ZW1TdWJ0aXRsZUxpbmVzXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Oml0ZW19XCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxwLW1lbnUgI21lbnUgW21vZGVsXT1cImdyaWRNZW51SXRlbXNcIiBbcG9wdXBdPVwidHJ1ZVwiIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1tZW51PlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJzZXRTZWxlY3RlZEl0ZW0oaXRlbSk7IHVwZGF0ZUdyaWRNZW51SXRlbXModHJ1ZSk7IG1lbnUudG9nZ2xlKCRldmVudClcIlxuICAgICAgICAgICAgaWNvbj1cInBpIHBpLWVsbGlwc2lzLXZcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInT0NYX0RBVEFfTElTVF9HUklELk1PUkVfQUNUSU9OU19BUklBX0xBQkVMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cIm1vcmUtYWN0aW9ucy1tZW51LWJ1dHRvbiBtZW51LWJ0blwiXG4gICAgICAgICAgICBbYXR0ci5uYW1lXT1cIidkYXRhLWdyaWQtaXRlbS1tZW51LWJ1dHRvbidcIlxuICAgICAgICAgICAgW3BUb29sdGlwXT1cIidPQ1hfREFUQV9MSVNUX0dSSUQuTU9SRV9BQ1RJT05TX1RPT0xUSVAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2RlZmF1bHRHcmlkSXRlbVN1YnRpdGxlTGluZXMgbGV0LWl0ZW0+XG4gIDxkaXYgKm5nRm9yPVwibGV0IHN1YnRpdGxlTGluZUlkIG9mIHN1YnRpdGxlTGluZUlkc1wiIGNsYXNzPVwic3VidGl0bGVMaW5lIGVkaXQtdGltZSB0ZXh0LXhsIG15LTNcIj5cbiAgICB7eyByZXNvbHZlRmllbGREYXRhKGl0ZW0sIHN1YnRpdGxlTGluZUlkKSB9fVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2RlZmF1bHRMaXN0SXRlbSBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtY29sdW1uVGVtcGxhdGVzPVwiY29sdW1uVGVtcGxhdGVzXCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0YS1saXN0LWl0ZW1zIHAtM1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tbmFtZS1yb3cgZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1uYW1lIG1yLTMgdGV4dC0yeGwgZm9udC1tZWRpdW0gYWxpZ24tY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICA8YSAqbmdJZj1cInRpdGxlTGluZUlkXCIgW3JvdXRlckxpbmtdPVwiXCIgKGNsaWNrKT1cIm9uVmlld1JvdyhpdGVtKVwiXG4gICAgICAgICAgICA+e3sgcmVzb2x2ZUZpZWxkRGF0YShpdGVtLCB0aXRsZUxpbmVJZCkgfHwgJycgfX08L2FcbiAgICAgICAgICA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwidmlld0l0ZW1PYnNlcnZlZCAmJiAoIXZpZXdBY3Rpb25WaXNpYmxlRmllbGQgfHwgZmllbGRJc1RydXRoeShpdGVtLCB2aWV3QWN0aW9uVmlzaWJsZUZpZWxkKSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGljb249XCJwaSBwaS1leWVcIlxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IG1iLTEgbXItMiB2aWV3TGlzdEl0ZW1CdXR0b25cIlxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiKHZpZXdNZW51SXRlbUtleSB8fCAnT0NYX0RBVEFfTElTVF9HUklELk1FTlUuVklFVycpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIodmlld01lbnVJdGVtS2V5IHx8ICdPQ1hfREFUQV9MSVNUX0dSSUQuTUVOVS5WSUVXJykgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25WaWV3Um93KGl0ZW0pXCJcbiAgICAgICAgICAgICAgKm9jeElmUGVybWlzc2lvbj1cInZpZXdQZXJtaXNzaW9uXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEhdmlld0FjdGlvbkVuYWJsZWRGaWVsZCAmJiAhZmllbGRJc1RydXRoeShpdGVtLCB2aWV3QWN0aW9uRW5hYmxlZEZpZWxkKVwiXG4gICAgICAgICAgICAgIFthdHRyLm5hbWVdPVwiJ2RhdGEtbGlzdC1hY3Rpb24tYnV0dG9uJ1wiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJlZGl0SXRlbU9ic2VydmVkICYmICghZWRpdEFjdGlvblZpc2libGVGaWVsZCB8fCBmaWVsZElzVHJ1dGh5KGl0ZW0sIGVkaXRBY3Rpb25WaXNpYmxlRmllbGQpKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgbWItMSBtci0yIGVkaXRMaXN0SXRlbUJ1dHRvblwiXG4gICAgICAgICAgICAgIGljb249XCJwaSBwaS1wZW5jaWxcIlxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCIoZWRpdE1lbnVJdGVtS2V5IHx8ICdPQ1hfREFUQV9MSVNUX0dSSUQuTUVOVS5FRElUJykgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIihlZGl0TWVudUl0ZW1LZXkgfHwgJ09DWF9EQVRBX0xJU1RfR1JJRC5NRU5VLkVESVQnKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkVkaXRSb3coaXRlbSlcIlxuICAgICAgICAgICAgICAqb2N4SWZQZXJtaXNzaW9uPVwiZWRpdFBlcm1pc3Npb25cIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiISFlZGl0QWN0aW9uRW5hYmxlZEZpZWxkICYmICFmaWVsZElzVHJ1dGh5KGl0ZW0sIGVkaXRBY3Rpb25FbmFibGVkRmllbGQpXCJcbiAgICAgICAgICAgICAgW2F0dHIubmFtZV09XCInZGF0YS1saXN0LWFjdGlvbi1idXR0b24nXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cImRlbGV0ZUl0ZW1PYnNlcnZlZCAmJiAoIWRlbGV0ZUFjdGlvblZpc2libGVGaWVsZCB8fCBmaWVsZElzVHJ1dGh5KGl0ZW0sIGRlbGV0ZUFjdGlvblZpc2libGVGaWVsZCkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBpY29uPVwicGkgcGktdHJhc2hcIlxuICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwLWJ1dHRvbi1kYW5nZXIgbWItMSBtci0yIGRlbGV0ZUxpc3RJdGVtQnV0dG9uXCJcbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiKGRlbGV0ZU1lbnVJdGVtS2V5IHx8ICdPQ1hfREFUQV9MSVNUX0dSSUQuTUVOVS5ERUxFVEUnKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiKGRlbGV0ZU1lbnVJdGVtS2V5IHx8ICdPQ1hfREFUQV9MSVNUX0dSSUQuTUVOVS5ERUxFVEUnKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZVJvdyhpdGVtKVwiXG4gICAgICAgICAgICAgICpvY3hJZlBlcm1pc3Npb249XCJkZWxldGVQZXJtaXNzaW9uXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEhZGVsZXRlQWN0aW9uRW5hYmxlZEZpZWxkICYmICFmaWVsZElzVHJ1dGh5KGl0ZW0sIGRlbGV0ZUFjdGlvbkVuYWJsZWRGaWVsZClcIlxuICAgICAgICAgICAgICBbYXR0ci5uYW1lXT1cIidkYXRhLWxpc3QtYWN0aW9uLWJ1dHRvbidcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBpbmxpbmVMaXN0QWN0aW9ucyQgfCBhc3luY1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIighYWN0aW9uLmFjdGlvblZpc2libGVGaWVsZCB8fCBmaWVsZElzVHJ1dGh5KGl0ZW0sIGFjdGlvbi5hY3Rpb25WaXNpYmxlRmllbGQpKVwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm9jeElmUGVybWlzc2lvbj1cImFjdGlvbi5wZXJtaXNzaW9uXCJcbiAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImFjdGlvbi5jbGFzc2VzXCJcbiAgICAgICAgICAgICAgICBbaWNvbl09XCJhY3Rpb24uaWNvbiB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5jYWxsYmFjayhpdGVtKVwiXG4gICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cImFjdGlvbi5sYWJlbEtleSA/IChhY3Rpb24ubGFiZWxLZXkgfCB0cmFuc2xhdGUpIDogJydcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhY3Rpb24ubGFiZWxLZXkgPyAoYWN0aW9uLmxhYmVsS2V5IHwgdHJhbnNsYXRlKSA6ICcnXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmRpc2FibGVkIHx8ICghIWFjdGlvbi5hY3Rpb25FbmFibGVkRmllbGQgJiYgIWZpZWxkSXNUcnV0aHkoaXRlbSwgYWN0aW9uLmFjdGlvbkVuYWJsZWRGaWVsZCkpXCJcbiAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1Zpc2libGVPdmVyZmxvd01lbnVJdGVtcyhpdGVtKSB8IGFzeW5jXCI+XG4gICAgICAgICAgICA8cC1tZW51ICNtZW51IFttb2RlbF09XCIob3ZlcmZsb3dNZW51SXRlbXMkIHwgYXN5bmMpIHx8IFtdXCIgW3BvcHVwXT1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIj48L3AtbWVudT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dFwiXG4gICAgICAgICAgICAgIFtpY29uXT1cIidwaSBwaS1lbGxpcHNpcy12J1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVPdmVyZmxvd01lbnUoJGV2ZW50LCBtZW51LCBpdGVtKVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ09DWF9EQVRBX0xJU1RfR1JJRC5NT1JFX0FDVElPTlNfQVJJQV9MQUJFTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiJ09DWF9EQVRBX0xJU1RfR1JJRC5NT1JFX0FDVElPTlNfVE9PTFRJUCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtYmFzZSBmb250LWxpZ2h0IG15LTFcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9saXN0SXRlbVN1YnRpdGxlTGluZXMgPyBfbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzIDogZGVmYXVsdExpc3RJdGVtU3VidGl0bGVMaW5lc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6aXRlbX1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcFwiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2wgb2YgZ2V0RmlsdGVyZWRDb2x1bW5zKClcIiBjbGFzcz1cInctMTJyZW0gbXktMiBtci0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtYm9sZFwiIFtvY3hUb29sdGlwT25PdmVyZmxvd109XCJjb2wubmFtZUtleSB8IHRyYW5zbGF0ZVwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPlxuICAgICAgICAgICAge3sgY29sLm5hbWVLZXkgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBbb2N4VG9vbHRpcE9uT3ZlcmZsb3ddPVwiY29sLmNvbHVtblR5cGUgPT09IGNvbHVtblR5cGUuVFJBTlNMQVRJT05fS0VZID8gKHJlc29sdmVGaWVsZERhdGEoaXRlbSxjb2wuaWQpIHwgdHJhbnNsYXRlKSA6IHJlc29sdmVGaWVsZERhdGEoaXRlbSwgY29sLmlkKVwiXG4gICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiXG4gICAgICAgICAgICBfbGlzdFZhbHVlID8gX2xpc3RWYWx1ZTogZGVmYXVsdExpc3RWYWx1ZVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICByb3dPYmplY3Q6IGl0ZW0sXG4gICAgICAgICAgICAgICAgY29sdW1uOiBjb2wsXG4gICAgICAgICAgICAgICAgY29sdW1uVGVtcGxhdGVzOiBjb2x1bW5UZW1wbGF0ZXNcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2RlZmF1bHRMaXN0SXRlbVN1YnRpdGxlTGluZXMgbGV0LWl0ZW09XCIkaW1wbGljaXRcIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgc3VidGl0bGVMaW5lSWQgb2Ygc3VidGl0bGVMaW5lSWRzXCIgY2xhc3M9XCJzdWJ0aXRsZUxpbmUgdGV4dC14bCBteS0zXCI+XG4gICAge3sgcmVzb2x2ZUZpZWxkRGF0YShpdGVtLCBzdWJ0aXRsZUxpbmVJZCkgfX1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRMaXN0VmFsdWUgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIiBsZXQtY29sdW1uVGVtcGxhdGVzPVwiY29sdW1uVGVtcGxhdGVzXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW5UZW1wbGF0ZXNbY29sdW1uLmlkXVwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICByb3dPYmplY3Q6IHJvd09iamVjdCxcbiAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtblxuICAgICAgICAgICAgfVwiXG4gID5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZGVmYXVsdFN0cmluZ0xpc3RWYWx1ZVwiIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXI+IHt7IHJlc29sdmVGaWVsZERhdGEocm93T2JqZWN0LCBjb2x1bW4uaWQpIH19IDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImRlZmF1bHROdW1iZXJMaXN0VmFsdWVcIiBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyPiB7eyByZXNvbHZlRmllbGREYXRhKHJvd09iamVjdCwgY29sdW1uLmlkKSB8IG51bWJlciB9fSA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJkZWZhdWx0Q3VzdG9tTGlzdFZhbHVlXCIgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj4gPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImRlZmF1bHREYXRlTGlzdFZhbHVlXCIgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lcj4ge3sgcmVzb2x2ZUZpZWxkRGF0YShyb3dPYmplY3QsIGNvbHVtbi5pZCkgfCBkYXRlOiBjb2x1bW4uZGF0ZUZvcm1hdCA/PyAnbWVkaXVtJyB9fSA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJkZWZhdWx0UmVsYXRpdmVEYXRlTGlzdFZhbHVlXCIgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lcj5cbiAgICB7eyAnT0NYX0RBVEFfVEFCTEUuRURJVEVEJyB8IHRyYW5zbGF0ZSB9fSB7eyByZXNvbHZlRmllbGREYXRhKHJvd09iamVjdCwgY29sdW1uLmlkKSB8IHRpbWVhZ28gfX1cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZGVmYXVsdFRyYW5zbGF0aW9uS2V5TGlzdFZhbHVlXCIgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lcj4ge3sgcmVzb2x2ZUZpZWxkRGF0YShyb3dPYmplY3QsIGNvbHVtbi5pZCkgfCB0cmFuc2xhdGUgfX0gPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
604
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1saXN0LWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWxpc3QtZ3JpZC9kYXRhLWxpc3QtZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtbGlzdC1ncmlkL2RhdGEtbGlzdC1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFFZixZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsU0FBUyxFQUVULE1BQU0sRUFHTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFFbkYsT0FBTyxFQUFZLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFakUsT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3JHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUkxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFBOzs7Ozs7Ozs7Ozs7OztBQTBCL0QsTUFBTSxPQUFPLHFCQUFz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RyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBaUNILFNBQVM7c0JBRFosZUFBZTt1QkFBQyxhQUFhO2dCQVMxQixhQUFhO3NCQURoQixZQUFZO3VCQUFDLGFBQWE7Z0JBU3ZCLGVBQWU7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEb0NoZWNrLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBMT0NBTEVfSUQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSwgVXNlclNlcnZpY2UgfSBmcm9tICdAb25lY3gvYW5ndWxhci1pbnRlZ3JhdGlvbi1pbnRlcmZhY2UnXG5pbXBvcnQgeyBNZmVJbmZvIH0gZnJvbSAnQG9uZWN4L2ludGVncmF0aW9uLWludGVyZmFjZSdcbmltcG9ydCB7IE1lbnVJdGVtLCBQcmltZUljb25zLCBQcmltZVRlbXBsYXRlIH0gZnJvbSAncHJpbWVuZy9hcGknXG5pbXBvcnQgeyBNZW51IH0gZnJvbSAncHJpbWVuZy9tZW51J1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBkZWJvdW5jZVRpbWUsIGZpcnN0LCBtYXAsIG1lcmdlTWFwIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IENvbHVtblR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbC9jb2x1bW4tdHlwZS5tb2RlbCdcbmltcG9ydCB7IERhdGFBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRhLWFjdGlvbidcbmltcG9ydCB7IERhdGFTb3J0RGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGF0YS1zb3J0LWRpcmVjdGlvbidcbmltcG9ydCB7IERhdGFUYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uL21vZGVsL2RhdGEtdGFibGUtY29sdW1uLm1vZGVsJ1xuaW1wb3J0IHsgT2JqZWN0VXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy9vYmplY3R1dGlscydcbmltcG9ydCB7IERhdGFTb3J0QmFzZSB9IGZyb20gJy4uL2RhdGEtc29ydC1iYXNlL2RhdGEtc29ydC1iYXNlJ1xuaW1wb3J0IHsgUm93IH0gZnJvbSAnLi4vZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudCdcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uLy4uL21vZGVsL2ZpbHRlci5tb2RlbCdcblxuZXhwb3J0IHR5cGUgTGlzdEdyaWREYXRhID0ge1xuICBpZDogc3RyaW5nIHwgbnVtYmVyXG4gIGltYWdlUGF0aDogc3RyaW5nIHwgbnVtYmVyXG4gIFtjb2x1bW5JZDogc3RyaW5nXTogdW5rbm93blxufVxuXG50eXBlIFJvd0xpc3RHcmlkRGF0YSA9IExpc3RHcmlkRGF0YSAmIFJvd1xuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RHcmlkRGF0YU1lbnVJdGVtIGV4dGVuZHMgTWVudUl0ZW0ge1xuICBwZXJtaXNzaW9uOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhTGlzdEdyaWRDb21wb25lbnRTdGF0ZSB7XG4gIGFjdGl2ZVBhZ2U/OiBudW1iZXJcbiAgcGFnZVNpemU/OiBudW1iZXJcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2N4LWRhdGEtbGlzdC1ncmlkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtbGlzdC1ncmlkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS1saXN0LWdyaWQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YUxpc3RHcmlkQ29tcG9uZW50IGV4dGVuZHMgRGF0YVNvcnRCYXNlIGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrLCBBZnRlckNvbnRlbnRJbml0IHtcbiAgQElucHV0KCkgdGl0bGVMaW5lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBzdWJ0aXRsZUxpbmVJZHM6IHN0cmluZ1tdID0gW11cbiAgQElucHV0KCkgY2xpZW50U2lkZVNvcnRpbmcgPSB0cnVlXG4gIEBJbnB1dCgpIGNsaWVudFNpZGVGaWx0ZXJpbmcgPSB0cnVlXG4gIEBJbnB1dCgpIHNvcnRTdGF0ZXM6IERhdGFTb3J0RGlyZWN0aW9uW10gPSBbXVxuXG4gIGRpc3BsYXllZFBhZ2VTaXplcyQ6IE9ic2VydmFibGU8KG51bWJlciB8IHsgc2hvd0FsbDogc3RyaW5nIH0pW10+XG4gIF9wYWdlU2l6ZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDwobnVtYmVyIHwgeyBzaG93QWxsOiBzdHJpbmcgfSlbXT4oWzEwLCAyNSwgNTBdKVxuICBASW5wdXQoKVxuICBnZXQgcGFnZVNpemVzKCk6IChudW1iZXIgfCB7IHNob3dBbGw6IHN0cmluZyB9KVtdIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZVNpemVzJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IHBhZ2VTaXplcyh2YWx1ZTogKG51bWJlciB8IHsgc2hvd0FsbDogc3RyaW5nIH0pW10pIHtcbiAgICB0aGlzLl9wYWdlU2l6ZXMkLm5leHQodmFsdWUpXG4gIH1cblxuICBkaXNwbGF5ZWRQYWdlU2l6ZSQ6IE9ic2VydmFibGU8bnVtYmVyPlxuICBfcGFnZVNpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgQElucHV0KClcbiAgZ2V0IHBhZ2VTaXplKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VTaXplJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IHBhZ2VTaXplKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9wYWdlU2l6ZSQubmV4dCh2YWx1ZSlcbiAgfVxuXG4gIEBJbnB1dCgpIGVtcHR5UmVzdWx0c01lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBmYWxsYmFja0ltYWdlID0gJ3BsYWNlaG9sZGVyLnBuZydcbiAgQElucHV0KCkgbGF5b3V0OiAnZ3JpZCcgfCAnbGlzdCcgPSAnZ3JpZCdcbiAgQElucHV0KCkgdmlld1Blcm1pc3Npb246IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBlZGl0UGVybWlzc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGRlbGV0ZVBlcm1pc3Npb246IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBkZWxldGVBY3Rpb25WaXNpYmxlRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBkZWxldGVBY3Rpb25FbmFibGVkRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSB2aWV3QWN0aW9uVmlzaWJsZUZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgdmlld0FjdGlvbkVuYWJsZWRGaWVsZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGVkaXRBY3Rpb25WaXNpYmxlRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBlZGl0QWN0aW9uRW5hYmxlZEZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgdmlld01lbnVJdGVtS2V5OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZWRpdE1lbnVJdGVtS2V5OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZGVsZXRlTWVudUl0ZW1LZXk6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBwYWdpbmF0b3IgPSB0cnVlXG4gIEBJbnB1dCgpIHBhZ2UgPSAwXG4gIGNvbHVtblRlbXBsYXRlcyQ6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgVGVtcGxhdGVSZWY8YW55PiB8IG51bGw+PiB8IHVuZGVmaW5lZFxuICBfY29sdW1ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGFUYWJsZUNvbHVtbltdPihbXSlcbiAgQElucHV0KClcbiAgZ2V0IGNvbHVtbnMoKTogRGF0YVRhYmxlQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5zJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IGNvbHVtbnModmFsdWU6IERhdGFUYWJsZUNvbHVtbltdKSB7XG4gICAgdGhpcy5fY29sdW1ucyQubmV4dCh2YWx1ZSlcbiAgICBjb25zdCBvYnMgPSB2YWx1ZS5tYXAoKGMpID0+IHRoaXMuZ2V0VGVtcGxhdGUoYykpXG4gICAgdGhpcy5jb2x1bW5UZW1wbGF0ZXMkID0gY29tYmluZUxhdGVzdChvYnMpLnBpcGUoXG4gICAgICBtYXAoKHZhbHVlcykgPT4gT2JqZWN0LmZyb21FbnRyaWVzKHZhbHVlLm1hcCgoYywgaSkgPT4gW2MuaWQsIHZhbHVlc1tpXV0pKSlcbiAgICApXG4gIH1cbiAgQElucHV0KCkgbmFtZSA9ICcnXG4gIEBJbnB1dCgpXG4gIGdldCB0b3RhbFJlY29yZHNPblNlcnZlcigpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnBhcmFtc1sndG90YWxSZWNvcmRzT25TZXJ2ZXInXSA/IE51bWJlcih0aGlzLnBhcmFtc1sndG90YWxSZWNvcmRzT25TZXJ2ZXInXSkgOiB1bmRlZmluZWRcbiAgfVxuICBzZXQgdG90YWxSZWNvcmRzT25TZXJ2ZXIodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGFyYW1zWyd0b3RhbFJlY29yZHNPblNlcnZlciddID0gdmFsdWU/LnRvU3RyaW5nKCkgPz8gJzAnXG4gIH1cbiAgQElucHV0KCkgY3VycmVudFBhZ2VTaG93aW5nS2V5ID0gJ09DWF9EQVRBX1RBQkxFLlNIT1dJTkcnXG4gIEBJbnB1dCgpIGN1cnJlbnRQYWdlU2hvd2luZ1dpdGhUb3RhbE9uU2VydmVyS2V5ID0gJ09DWF9EQVRBX1RBQkxFLlNIT1dJTkdfV0lUSF9UT1RBTF9PTl9TRVJWRVInXG4gIHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICBjdXJyZW50UGFnZTogJ3tjdXJyZW50UGFnZX0nLFxuICAgIHRvdGFsUGFnZXM6ICd7dG90YWxQYWdlc30nLFxuICAgIHJvd3M6ICd7cm93c30nLFxuICAgIGZpcnN0OiAne2ZpcnN0fScsXG4gICAgbGFzdDogJ3tsYXN0fScsXG4gICAgdG90YWxSZWNvcmRzOiAne3RvdGFsUmVjb3Jkc30nLFxuICB9XG5cbiAgX2RhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSb3dMaXN0R3JpZERhdGFbXT4oW10pXG4gIEBJbnB1dCgpXG4gIGdldCBkYXRhKCk6IFJvd0xpc3RHcmlkRGF0YVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YSQuZ2V0VmFsdWUoKVxuICB9XG4gIHNldCBkYXRhKHZhbHVlOiBSb3dMaXN0R3JpZERhdGFbXSkge1xuICAgICF0aGlzLl9kYXRhJC5nZXRWYWx1ZSgpLmxlbmd0aCA/PyB0aGlzLnJlc2V0UGFnZSgpXG4gICAgdGhpcy5fb3JpZ2luYWxEYXRhID0gWy4uLnZhbHVlXVxuICAgIHRoaXMuX2RhdGEkLm5leHQoWy4uLnZhbHVlXSlcbiAgfVxuICBfZmlsdGVycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpbHRlcltdPihbXSlcbiAgQElucHV0KClcbiAgZ2V0IGZpbHRlcnMoKTogRmlsdGVyW10ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJzJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IGZpbHRlcnModmFsdWU6IEZpbHRlcltdKSB7XG4gICAgIXRoaXMuX2ZpbHRlcnMkLmdldFZhbHVlKCkubGVuZ3RoID8/IHRoaXMucmVzZXRQYWdlKClcbiAgICB0aGlzLl9maWx0ZXJzJC5uZXh0KHZhbHVlKVxuICB9XG4gIF9vcmlnaW5hbERhdGE6IFJvd0xpc3RHcmlkRGF0YVtdID0gW11cbiAgX3NvcnREaXJlY3Rpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRhU29ydERpcmVjdGlvbj4oRGF0YVNvcnREaXJlY3Rpb24uTk9ORSlcbiAgQElucHV0KClcbiAgZ2V0IHNvcnREaXJlY3Rpb24oKTogRGF0YVNvcnREaXJlY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9zb3J0RGlyZWN0aW9uJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IHNvcnREaXJlY3Rpb24odmFsdWU6IERhdGFTb3J0RGlyZWN0aW9uKSB7XG4gICAgaWYgKHZhbHVlID09PSBEYXRhU29ydERpcmVjdGlvbi5OT05FKSB7XG4gICAgICB0aGlzLl9kYXRhJC5uZXh0KFsuLi50aGlzLl9vcmlnaW5hbERhdGFdKVxuICAgIH1cbiAgICB0aGlzLl9zb3J0RGlyZWN0aW9uJC5uZXh0KHZhbHVlKVxuICB9XG4gIF9zb3J0RmllbGQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKVxuICBASW5wdXQoKVxuICBnZXQgc29ydEZpZWxkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXM/Ll9zb3J0RmllbGQkLmdldFZhbHVlKClcbiAgfVxuICBzZXQgc29ydEZpZWxkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zb3J0RmllbGQkLm5leHQodmFsdWUpXG4gIH1cblxuICBASW5wdXQoKSBncmlkSXRlbVN1YnRpdGxlTGluZXNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdncmlkSXRlbVN1YnRpdGxlTGluZXMnKSBncmlkSXRlbVN1YnRpdGxlTGluZXNDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmdyaWRJdGVtU3VidGl0bGVMaW5lc1RlbXBsYXRlIHx8IHRoaXMuZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzJykgbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2xpc3RJdGVtU3VidGl0bGVMaW5lcygpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5saXN0SXRlbVN1YnRpdGxlTGluZXNUZW1wbGF0ZSB8fCB0aGlzLmxpc3RJdGVtU3VidGl0bGVMaW5lc0NoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIGxpc3RJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnbGlzdEl0ZW0nKSBsaXN0SXRlbUNoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9saXN0SXRlbSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5saXN0SXRlbVRlbXBsYXRlIHx8IHRoaXMubGlzdEl0ZW1DaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSBncmlkSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ2dyaWRJdGVtJykgZ3JpZEl0ZW1DaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfZ3JpZEl0ZW0oKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZEl0ZW1UZW1wbGF0ZSB8fCB0aGlzLmdyaWRJdGVtQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgbGlzdFZhbHVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnbGlzdFZhbHVlJykgbGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2xpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5saXN0VmFsdWVUZW1wbGF0ZSB8fCB0aGlzLmxpc3RWYWx1ZUNoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIHRyYW5zbGF0aW9uS2V5TGlzdFZhbHVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgndHJhbnNsYXRpb25LZXlMaXN0VmFsdWUnKSB0cmFuc2xhdGlvbktleUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF90cmFuc2xhdGlvbktleUxpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbktleUxpc3RWYWx1ZVRlbXBsYXRlIHx8IHRoaXMudHJhbnNsYXRpb25LZXlMaXN0VmFsdWVDaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSBudW1iZXJMaXN0VmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdudW1iZXJMaXN0VmFsdWUnKSBudW1iZXJMaXN0VmFsdWVDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfbnVtYmVyTGlzdFZhbHVlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm51bWJlckxpc3RWYWx1ZVRlbXBsYXRlIHx8IHRoaXMubnVtYmVyTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgcmVsYXRpdmVEYXRlTGlzdFZhbHVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgncmVsYXRpdmVEYXRlTGlzdFZhbHVlJykgcmVsYXRpdmVEYXRlTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX3JlbGF0aXZlRGF0ZUxpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZURhdGVMaXN0VmFsdWVUZW1wbGF0ZSB8fCB0aGlzLnJlbGF0aXZlRGF0ZUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGVcbiAgfVxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZW1vdmVkIGFuZCBpbnN0ZWFkIHRvIGNoYW5nZSB0aGUgdGVtcGxhdGUgb2YgYSBzcGVjaWZpYyBjb2x1bW5cbiAgICogdXNlIHRoZSBuZXcgYXBwcm9hY2ggaW5zdGVhZCBieSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9uIGNvbHVtbiBpZCArIElkTGlzdFZhbHVlXG4gICAqIGUuZy4gZm9yIGEgY29sdW1uIHdpdGggdGhlIGlkICdzdGF0dXMnIHVzZSBwVGVtcGxhdGU9XCJzdGF0dXNJZExpc3RWYWx1ZVwiXG4gICAqL1xuICBASW5wdXQoKSBjdXN0b21MaXN0VmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZW1vdmVkIGFuZCBpbnN0ZWFkIHRvIGNoYW5nZSB0aGUgdGVtcGxhdGUgb2YgYSBzcGVjaWZpYyBjb2x1bW5cbiAgICogdXNlIHRoZSBuZXcgYXBwcm9hY2ggaW5zdGVhZCBieSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9uIGNvbHVtbiBpZCArIElkTGlzdFZhbHVlXG4gICAqIGUuZy4gZm9yIGEgY29sdW1uIHdpdGggdGhlIGlkICdzdGF0dXMnIHVzZSBwVGVtcGxhdGU9XCJzdGF0dXNJZExpc3RWYWx1ZVwiXG4gICAqL1xuICBAQ29udGVudENoaWxkKCdjdXN0b21MaXN0VmFsdWUnKSBjdXN0b21MaXN0VmFsdWVDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfY3VzdG9tTGlzdFZhbHVlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmN1c3RvbUxpc3RWYWx1ZVRlbXBsYXRlIHx8IHRoaXMuY3VzdG9tTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgc3RyaW5nTGlzdFZhbHVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnc3RyaW5nTGlzdFZhbHVlJykgc3RyaW5nTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX3N0cmluZ0xpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdMaXN0VmFsdWVUZW1wbGF0ZSB8fCB0aGlzLnN0cmluZ0xpc3RWYWx1ZUNoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIGRhdGVMaXN0VmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdkYXRlTGlzdFZhbHVlJykgZGF0ZUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9kYXRlTGlzdFZhbHVlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmRhdGVMaXN0VmFsdWVUZW1wbGF0ZSB8fCB0aGlzLmRhdGVMaXN0VmFsdWVDaGlsZFRlbXBsYXRlXG4gIH1cblxuICBpbmxpbmVMaXN0QWN0aW9ucyQ6IE9ic2VydmFibGU8RGF0YUFjdGlvbltdPlxuICBvdmVyZmxvd0xpc3RBY3Rpb25zJDogT2JzZXJ2YWJsZTxEYXRhQWN0aW9uW10+XG4gIG92ZXJmbG93TWVudUl0ZW1zJDogT2JzZXJ2YWJsZTxNZW51SXRlbVtdPlxuICBjdXJyZW50TWVudVJvdyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJvdyB8IG51bGw+KG51bGwpXG4gIF9hZGRpdGlvbmFsQWN0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGFBY3Rpb25bXT4oW10pXG4gIEBJbnB1dCgpXG4gIGdldCBhZGRpdGlvbmFsQWN0aW9ucygpOiBEYXRhQWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLl9hZGRpdGlvbmFsQWN0aW9ucyQuZ2V0VmFsdWUoKVxuICB9XG4gIHNldCBhZGRpdGlvbmFsQWN0aW9ucyh2YWx1ZTogRGF0YUFjdGlvbltdKSB7XG4gICAgdGhpcy5fYWRkaXRpb25hbEFjdGlvbnMkLm5leHQodmFsdWUpXG4gICAgdGhpcy51cGRhdGVHcmlkTWVudUl0ZW1zKClcbiAgfVxuXG4gIEBPdXRwdXQoKSB2aWV3SXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdEdyaWREYXRhPigpXG4gIEBPdXRwdXQoKSBlZGl0SXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdEdyaWREYXRhPigpXG4gIEBPdXRwdXQoKSBkZWxldGVJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxMaXN0R3JpZERhdGE+KClcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KClcbiAgQE91dHB1dCgpIHBhZ2VTaXplQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpXG4gIEBPdXRwdXQoKSBjb21wb25lbnRTdGF0ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFMaXN0R3JpZENvbXBvbmVudFN0YXRlPigpXG5cbiAgZ2V0IHZpZXdJdGVtT2JzZXJ2ZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZHYgPSB0aGlzLmluamVjdG9yLmdldCgnRGF0YVZpZXdDb21wb25lbnQnLCBudWxsKVxuICAgIHJldHVybiBkdj8udmlld0l0ZW1PYnNlcnZlZCB8fCBkdj8udmlld0l0ZW0ub2JzZXJ2ZWQgfHwgdGhpcy52aWV3SXRlbS5vYnNlcnZlZFxuICB9XG4gIGdldCBlZGl0SXRlbU9ic2VydmVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGR2ID0gdGhpcy5pbmplY3Rvci5nZXQoJ0RhdGFWaWV3Q29tcG9uZW50JywgbnVsbClcbiAgICByZXR1cm4gZHY/LmVkaXRJdGVtT2JzZXJ2ZWQgfHwgZHY/LmVkaXRJdGVtLm9ic2VydmVkIHx8IHRoaXMuZWRpdEl0ZW0ub2JzZXJ2ZWRcbiAgfVxuICBnZXQgZGVsZXRlSXRlbU9ic2VydmVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGR2ID0gdGhpcy5pbmplY3Rvci5nZXQoJ0RhdGFWaWV3Q29tcG9uZW50JywgbnVsbClcbiAgICByZXR1cm4gZHY/LmRlbGV0ZUl0ZW1PYnNlcnZlZCB8fCBkdj8uZGVsZXRlSXRlbS5vYnNlcnZlZCB8fCB0aGlzLmRlbGV0ZUl0ZW0ub2JzZXJ2ZWRcbiAgfVxuXG4gIGdldCBzb3J0RGlyZWN0aW9uTnVtYmVyKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuc29ydERpcmVjdGlvbiA9PT0gRGF0YVNvcnREaXJlY3Rpb24uQVNDRU5ESU5HKSByZXR1cm4gMVxuICAgIGlmICh0aGlzLnNvcnREaXJlY3Rpb24gPT09IERhdGFTb3J0RGlyZWN0aW9uLkRFU0NFTkRJTkcpIHJldHVybiAtMVxuICAgIHJldHVybiAwXG4gIH1cblxuICBzaG93TWVudSA9IGZhbHNlXG4gIGdyaWRNZW51SXRlbXM6IE1lbnVJdGVtW10gPSBbXVxuICBzZWxlY3RlZEl0ZW06IExpc3RHcmlkRGF0YSB8IHVuZGVmaW5lZFxuICBvYnNlcnZlZE91dHB1dHMgPSAwXG5cbiAgZGlzcGxheWVkSXRlbXMkOiBPYnNlcnZhYmxlPHVua25vd25bXT4gfCB1bmRlZmluZWRcbiAgZmFsbGJhY2tJbWFnZVBhdGgkITogT2JzZXJ2YWJsZTxzdHJpbmc+XG5cbiAgdGVtcGxhdGVzJDogQmVoYXZpb3JTdWJqZWN0PFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZFxuICA+KHVuZGVmaW5lZClcbiAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKVxuICBzZXQgdGVtcGxhdGVzKHZhbHVlOiBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnRlbXBsYXRlcyQubmV4dCh2YWx1ZSlcbiAgfVxuXG4gIHZpZXdUZW1wbGF0ZXMkOiBCZWhhdmlvclN1YmplY3Q8UXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKVxuICBAVmlld0NoaWxkcmVuKFByaW1lVGVtcGxhdGUpXG4gIHNldCB2aWV3VGVtcGxhdGVzKHZhbHVlOiBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnZpZXdUZW1wbGF0ZXMkLm5leHQodmFsdWUpXG4gIH1cblxuICBwYXJlbnRUZW1wbGF0ZXMkOiBCZWhhdmlvclN1YmplY3Q8UXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgbnVsbCB8IHVuZGVmaW5lZD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IG51bGwgfCB1bmRlZmluZWRcbiAgPih1bmRlZmluZWQpXG4gIEBJbnB1dCgpXG4gIHNldCBwYXJlbnRUZW1wbGF0ZXModmFsdWU6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnBhcmVudFRlbXBsYXRlcyQubmV4dCh2YWx1ZSlcbiAgfVxuXG4gIGNvbHVtblR5cGUgPSBDb2x1bW5UeXBlXG4gIHRlbXBsYXRlc09ic2VydmFibGVzOiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPj4gPSB7fVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTE9DQUxFX0lEKSBsb2NhbGU6IHN0cmluZyxcbiAgICB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZVNlcnZpY2U6IEFwcFN0YXRlU2VydmljZVxuICApIHtcbiAgICBzdXBlcihsb2NhbGUsIHRyYW5zbGF0ZVNlcnZpY2UpXG4gICAgdGhpcy5uYW1lID0gdGhpcy5uYW1lIHx8IHRoaXMucm91dGVyLnVybC5yZXBsYWNlKC9bXkEtWmEtejAtOV0vLCAnXycpXG4gICAgdGhpcy5mYWxsYmFja0ltYWdlUGF0aCQgPSB0aGlzLmFwcFN0YXRlU2VydmljZS5jdXJyZW50TWZlJC5waXBlKFxuICAgICAgbWFwKChjdXJyZW50TWZlKSA9PiB0aGlzLmdldEZhbGxiYWNrSW1hZ2VQYXRoKGN1cnJlbnRNZmUpKVxuICAgIClcbiAgICB0aGlzLmRpc3BsYXllZFBhZ2VTaXplcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9wYWdlU2l6ZXMkLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdPQ1hfREFUQV9UQUJMRS5BTEwnKV0pLnBpcGUoXG4gICAgICBtYXAoKFtwYWdlU2l6ZXMsIHRyYW5zbGF0aW9uXSkgPT4gcGFnZVNpemVzLmNvbmNhdCh7IHNob3dBbGw6IHRyYW5zbGF0aW9uIH0pKVxuICAgIClcbiAgICB0aGlzLmRpc3BsYXllZFBhZ2VTaXplJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX3BhZ2VTaXplJCwgdGhpcy5fcGFnZVNpemVzJF0pLnBpcGUoXG4gICAgICBtYXAoKFtwYWdlU2l6ZSwgcGFnZVNpemVzXSkgPT4gcGFnZVNpemUgPz8gcGFnZVNpemVzLmZpbmQoKHZhbCk6IHZhbCBpcyBudW1iZXIgPT4gdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpID8/IDUwKVxuICAgIClcbiAgICB0aGlzLmlubGluZUxpc3RBY3Rpb25zJCA9IHRoaXMuX2FkZGl0aW9uYWxBY3Rpb25zJC5waXBlKFxuICAgICAgbWFwKChhY3Rpb25zKSA9PiBhY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiAhYWN0aW9uLnNob3dBc092ZXJmbG93KSlcbiAgICApXG4gICAgdGhpcy5vdmVyZmxvd0xpc3RBY3Rpb25zJCA9IHRoaXMuX2FkZGl0aW9uYWxBY3Rpb25zJC5waXBlKFxuICAgICAgbWFwKChhY3Rpb25zKSA9PiBhY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24uc2hvd0FzT3ZlcmZsb3cpKVxuICAgIClcbiAgICB0aGlzLm92ZXJmbG93TWVudUl0ZW1zJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMub3ZlcmZsb3dMaXN0QWN0aW9ucyQsIHRoaXMuY3VycmVudE1lbnVSb3ckXSkucGlwZShcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9ucywgcm93XSkgPT5cbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChbLi4uYWN0aW9ucy5tYXAoKGEpID0+IGEubGFiZWxLZXkgfHwgJycpXSkucGlwZShcbiAgICAgICAgICBtYXAoKHRyYW5zbGF0aW9ucykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGlvbnNcbiAgICAgICAgICAgICAgLmZpbHRlcigoYSkgPT4gdGhpcy51c2VyU2VydmljZS5oYXNQZXJtaXNzaW9uKGEucGVybWlzc2lvbikpXG4gICAgICAgICAgICAgIC5tYXAoKGEpID0+ICh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0aW9uc1thLmxhYmVsS2V5IHx8ICcnXSxcbiAgICAgICAgICAgICAgICBpY29uOiBhLmljb24sXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzczogKGEuY2xhc3NlcyB8fCBbXSkuam9pbignICcpLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiBhLmRpc2FibGVkIHx8ICghIWEuYWN0aW9uRW5hYmxlZEZpZWxkICYmICF0aGlzLmZpZWxkSXNUcnV0aHkocm93LCBhLmFjdGlvbkVuYWJsZWRGaWVsZCkpLFxuICAgICAgICAgICAgICAgIHZpc2libGU6ICFhLmFjdGlvblZpc2libGVGaWVsZCB8fCB0aGlzLmZpZWxkSXNUcnV0aHkocm93LCBhLmFjdGlvblZpc2libGVGaWVsZCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4gYS5jYWxsYmFjayhyb3cpLFxuICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IG9ic2VydmVkT3V0cHV0cyA9IDxhbnk+dGhpcy52aWV3SXRlbS5vYnNlcnZlZCArIDxhbnk+dGhpcy5kZWxldGVJdGVtLm9ic2VydmVkICsgPGFueT50aGlzLmVkaXRJdGVtLm9ic2VydmVkXG4gICAgaWYgKHRoaXMub2JzZXJ2ZWRPdXRwdXRzICE9PSBvYnNlcnZlZE91dHB1dHMpIHtcbiAgICAgIHRoaXMudXBkYXRlR3JpZE1lbnVJdGVtcygpXG4gICAgICB0aGlzLm9ic2VydmVkT3V0cHV0cyA9IG9ic2VydmVkT3V0cHV0c1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheWVkSXRlbXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5fZGF0YSQsIHRoaXMuX2ZpbHRlcnMkLCB0aGlzLl9zb3J0RmllbGQkLCB0aGlzLl9zb3J0RGlyZWN0aW9uJF0pLnBpcGUoXG4gICAgICBtZXJnZU1hcCgocGFyYW1zKSA9PiB0aGlzLnRyYW5zbGF0ZUl0ZW1zKHBhcmFtcywgdGhpcy5jb2x1bW5zLCB0aGlzLmNsaWVudFNpZGVGaWx0ZXJpbmcsIHRoaXMuY2xpZW50U2lkZVNvcnRpbmcpKSxcbiAgICAgIG1hcCgocGFyYW1zKSA9PiB0aGlzLmZpbHRlckl0ZW1zKHBhcmFtcywgdGhpcy5jbGllbnRTaWRlRmlsdGVyaW5nKSksXG4gICAgICBtYXAoKHBhcmFtcykgPT4gdGhpcy5zb3J0SXRlbXMocGFyYW1zLCB0aGlzLmNvbHVtbnMsIHRoaXMuY2xpZW50U2lkZVNvcnRpbmcpKSxcbiAgICAgIG1hcCgoW2l0ZW1zXSkgPT4gaXRlbXMpXG4gICAgKVxuXG4gICAgdGhpcy5zaG93TWVudSA9XG4gICAgICAoISF0aGlzLnZpZXdQZXJtaXNzaW9uICYmIHRoaXMudXNlclNlcnZpY2UuaGFzUGVybWlzc2lvbih0aGlzLnZpZXdQZXJtaXNzaW9uKSkgfHxcbiAgICAgICghIXRoaXMuZWRpdFBlcm1pc3Npb24gJiYgdGhpcy51c2VyU2VydmljZS5oYXNQZXJtaXNzaW9uKHRoaXMuZWRpdFBlcm1pc3Npb24pKSB8fFxuICAgICAgKCEhdGhpcy5kZWxldGVQZXJtaXNzaW9uICYmIHRoaXMudXNlclNlcnZpY2UuaGFzUGVybWlzc2lvbih0aGlzLmRlbGV0ZVBlcm1pc3Npb24pKVxuXG4gICAgdGhpcy5lbWl0Q29tcG9uZW50U3RhdGVDaGFuZ2VkKClcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLnRlbXBsYXRlcyQudmFsdWU/LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgY2FzZSAnbGlzdFZhbHVlJzpcbiAgICAgICAgICB0aGlzLmxpc3RWYWx1ZUNoaWxkVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAndHJhbnNsYXRpb25LZXlMaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25LZXlMaXN0VmFsdWVDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ251bWJlckxpc3RWYWx1ZSc6XG4gICAgICAgICAgdGhpcy5udW1iZXJMaXN0VmFsdWVDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3JlbGF0aXZlRGF0ZUxpc3RWYWx1ZSc6XG4gICAgICAgICAgdGhpcy5yZWxhdGl2ZURhdGVMaXN0VmFsdWVDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2N1c3RvbUxpc3RWYWx1ZSc6XG4gICAgICAgICAgdGhpcy5jdXN0b21MaXN0VmFsdWVDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3N0cmluZ0xpc3RWYWx1ZSc6XG4gICAgICAgICAgdGhpcy5zdHJpbmdMaXN0VmFsdWVDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2RhdGVMaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMuZGF0ZUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgb25EZWxldGVSb3coZWxlbWVudDogTGlzdEdyaWREYXRhKSB7XG4gICAgdGhpcy5kZWxldGVJdGVtLmVtaXQoZWxlbWVudClcbiAgfVxuXG4gIG9uVmlld1JvdyhlbGVtZW50OiBMaXN0R3JpZERhdGEpIHtcbiAgICBpZiAoISF0aGlzLnZpZXdQZXJtaXNzaW9uICYmIHRoaXMudXNlclNlcnZpY2UuaGFzUGVybWlzc2lvbih0aGlzLnZpZXdQZXJtaXNzaW9uKSkge1xuICAgICAgdGhpcy52aWV3SXRlbS5lbWl0KGVsZW1lbnQpXG4gICAgfVxuICB9XG5cbiAgb25FZGl0Um93KGVsZW1lbnQ6IExpc3RHcmlkRGF0YSkge1xuICAgIHRoaXMuZWRpdEl0ZW0uZW1pdChlbGVtZW50KVxuICB9XG5cbiAgaW1nRXJyb3IoaXRlbTogTGlzdEdyaWREYXRhKSB7XG4gICAgaXRlbS5pbWFnZVBhdGggPSAnJ1xuICB9XG5cbiAgZ2V0RmFsbGJhY2tJbWFnZVBhdGgobWZlSW5mbzogTWZlSW5mbykge1xuICAgIHJldHVybiBtZmVJbmZvPy5yZW1vdGVCYXNlVXJsXG4gICAgICA/IGAke21mZUluZm8ucmVtb3RlQmFzZVVybH0vb25lY3gtcG9ydGFsLWxpYi9hc3NldHMvaW1hZ2VzLyR7dGhpcy5mYWxsYmFja0ltYWdlfWBcbiAgICAgIDogYC4vb25lY3gtcG9ydGFsLWxpYi9hc3NldHMvaW1hZ2VzLyR7dGhpcy5mYWxsYmFja0ltYWdlfWBcbiAgfVxuXG4gIHVwZGF0ZUdyaWRNZW51SXRlbXModXNlU2VsZWN0ZWRJdGVtID0gZmFsc2UpOiB2b2lkIHtcbiAgICBsZXQgZGVsZXRlRGlzYWJsZWQgPSBmYWxzZVxuICAgIGxldCBlZGl0RGlzYWJsZWQgPSBmYWxzZVxuICAgIGxldCB2aWV3RGlzYWJsZWQgPSBmYWxzZVxuXG4gICAgbGV0IGRlbGV0ZVZpc2libGUgPSB0cnVlXG4gICAgbGV0IGVkaXRWaXNpYmxlID0gdHJ1ZVxuICAgIGxldCB2aWV3VmlzaWJsZSA9IHRydWVcblxuICAgIGlmICh1c2VTZWxlY3RlZEl0ZW0gJiYgdGhpcy5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgIHZpZXdEaXNhYmxlZCA9XG4gICAgICAgICEhdGhpcy52aWV3QWN0aW9uRW5hYmxlZEZpZWxkICYmICF0aGlzLmZpZWxkSXNUcnV0aHkodGhpcy5zZWxlY3RlZEl0ZW0sIHRoaXMudmlld0FjdGlvbkVuYWJsZWRGaWVsZClcbiAgICAgIGVkaXREaXNhYmxlZCA9XG4gICAgICAgICEhdGhpcy5lZGl0QWN0aW9uRW5hYmxlZEZpZWxkICYmICF0aGlzLmZpZWxkSXNUcnV0aHkodGhpcy5zZWxlY3RlZEl0ZW0sIHRoaXMuZWRpdEFjdGlvbkVuYWJsZWRGaWVsZClcbiAgICAgIGRlbGV0ZURpc2FibGVkID1cbiAgICAgICAgISF0aGlzLmRlbGV0ZUFjdGlvbkVuYWJsZWRGaWVsZCAmJiAhdGhpcy5maWVsZElzVHJ1dGh5KHRoaXMuc2VsZWN0ZWRJdGVtLCB0aGlzLmRlbGV0ZUFjdGlvbkVuYWJsZWRGaWVsZClcblxuICAgICAgdmlld1Zpc2libGUgPSAhdGhpcy52aWV3QWN0aW9uVmlzaWJsZUZpZWxkIHx8IHRoaXMuZmllbGRJc1RydXRoeSh0aGlzLnNlbGVjdGVkSXRlbSwgdGhpcy52aWV3QWN0aW9uVmlzaWJsZUZpZWxkKVxuICAgICAgZWRpdFZpc2libGUgPSAhdGhpcy5lZGl0QWN0aW9uVmlzaWJsZUZpZWxkIHx8IHRoaXMuZmllbGRJc1RydXRoeSh0aGlzLnNlbGVjdGVkSXRlbSwgdGhpcy5lZGl0QWN0aW9uVmlzaWJsZUZpZWxkKVxuICAgICAgZGVsZXRlVmlzaWJsZSA9XG4gICAgICAgICF0aGlzLmRlbGV0ZUFjdGlvblZpc2libGVGaWVsZCB8fCB0aGlzLmZpZWxkSXNUcnV0aHkodGhpcy5zZWxlY3RlZEl0ZW0sIHRoaXMuZGVsZXRlQWN0aW9uVmlzaWJsZUZpZWxkKVxuICAgIH1cblxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZVxuICAgICAgLmdldChbXG4gICAgICAgIHRoaXMudmlld01lbnVJdGVtS2V5IHx8ICdPQ1hfREFUQV9MSVNUX0dSSUQuTUVOVS5WSUVXJyxcbiAgICAgICAgdGhpcy5lZGl0TWVudUl0ZW1LZXkgfHwgJ09DWF9EQVRBX0xJU1RfR1JJRC5NRU5VLkVESVQnLFxuICAgICAgICB0aGlzLmRlbGV0ZU1lbnVJdGVtS2V5IHx8ICdPQ1hfREFUQV9MSVNUX0dSSUQuTUVOVS5ERUxFVEUnLFxuICAgICAgICAuLi50aGlzLmFkZGl0aW9uYWxBY3Rpb25zLm1hcCgoYSkgPT4gYS5sYWJlbEtleSB8fCAnJyksXG4gICAgICBdKVxuICAgICAgLnN1YnNjcmliZSgodHJhbnNsYXRpb25zKSA9PiB7XG4gICAgICAgIGxldCBtZW51SXRlbXM6IE1lbnVJdGVtW10gPSBbXVxuICAgICAgICBjb25zdCBhdXRvbWF0aW9uSWQgPSAnZGF0YS1ncmlkLWFjdGlvbi1idXR0b24nXG4gICAgICAgIGNvbnN0IGF1dG9tYXRpb25JZEhpZGRlbiA9ICdkYXRhLWdyaWQtYWN0aW9uLWJ1dHRvbi1oaWRkZW4nXG4gICAgICAgIGlmICh0aGlzLnZpZXdJdGVtLm9ic2VydmVkICYmIHRoaXMudXNlclNlcnZpY2UuaGFzUGVybWlzc2lvbih0aGlzLnZpZXdQZXJtaXNzaW9uIHx8ICcnKSkge1xuICAgICAgICAgIG1lbnVJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGlvbnNbdGhpcy52aWV3TWVudUl0ZW1LZXkgfHwgJ09DWF9EQVRBX0xJU1RfR1JJRC5NRU5VLlZJRVcnXSxcbiAgICAgICAgICAgIGljb246IFByaW1lSWNvbnMuRVlFLFxuICAgICAgICAgICAgY29tbWFuZDogKCkgPT4gdGhpcy52aWV3SXRlbS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtKSxcbiAgICAgICAgICAgIGRpc2FibGVkOiB2aWV3RGlzYWJsZWQsXG4gICAgICAgICAgICB2aXNpYmxlOiB2aWV3VmlzaWJsZSxcbiAgICAgICAgICAgIGF1dG9tYXRpb25JZDogdmlld1Zpc2libGUgPyBhdXRvbWF0aW9uSWQgOiBhdXRvbWF0aW9uSWRIaWRkZW4sXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5lZGl0SXRlbS5vYnNlcnZlZCAmJiB0aGlzLnVzZXJTZXJ2aWNlLmhhc1Blcm1pc3Npb24odGhpcy5lZGl0UGVybWlzc2lvbiB8fCAnJykpIHtcbiAgICAgICAgICBtZW51SXRlbXMucHVzaCh7XG4gICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRpb25zW3RoaXMuZWRpdE1lbnVJdGVtS2V5IHx8ICdPQ1hfREFUQV9MSVNUX0dSSUQuTUVOVS5FRElUJ10sXG4gICAgICAgICAgICBpY29uOiBQcmltZUljb25zLlBFTkNJTCxcbiAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHRoaXMuZWRpdEl0ZW0uZW1pdCh0aGlzLnNlbGVjdGVkSXRlbSksXG4gICAgICAgICAgICBkaXNhYmxlZDogZWRpdERpc2FibGVkLFxuICAgICAgICAgICAgdmlzaWJsZTogZWRpdFZpc2libGUsXG4gICAgICAgICAgICBhdXRvbWF0aW9uSWQ6IGVkaXRWaXNpYmxlID8gYXV0b21hdGlvbklkIDogYXV0b21hdGlvbklkSGlkZGVuLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGVsZXRlSXRlbS5vYnNlcnZlZCAmJiB0aGlzLnVzZXJTZXJ2aWNlLmhhc1Blcm1pc3Npb24odGhpcy5kZWxldGVQZXJtaXNzaW9uIHx8ICcnKSkge1xuICAgICAgICAgIG1lbnVJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGlvbnNbdGhpcy5kZWxldGVNZW51SXRlbUtleSB8fCAnT0NYX0RBVEFfTElTVF9HUklELk1FTlUuREVMRVRFJ10sXG4gICAgICAgICAgICBpY29uOiBQcmltZUljb25zLlRSQVNILFxuICAgICAgICAgICAgY29tbWFuZDogKCkgPT4gdGhpcy5kZWxldGVJdGVtLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW0pLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IGRlbGV0ZURpc2FibGVkLFxuICAgICAgICAgICAgdmlzaWJsZTogZGVsZXRlVmlzaWJsZSxcbiAgICAgICAgICAgIGF1dG9tYXRpb25JZDogZGVsZXRlVmlzaWJsZSA/IGF1dG9tYXRpb25JZCA6IGF1dG9tYXRpb25JZEhpZGRlbixcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIG1lbnVJdGVtcyA9IG1lbnVJdGVtcy5jb25jYXQoXG4gICAgICAgICAgdGhpcy5hZGRpdGlvbmFsQWN0aW9uc1xuICAgICAgICAgICAgLmZpbHRlcigoYSkgPT4gdGhpcy51c2VyU2VydmljZS5oYXNQZXJtaXNzaW9uKGEucGVybWlzc2lvbikpXG4gICAgICAgICAgICAubWFwKChhKSA9PiAoe1xuICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRpb25zW2EubGFiZWxLZXkgfHwgJyddLFxuICAgICAgICAgICAgICBpY29uOiBhLmljb24sXG4gICAgICAgICAgICAgIHN0eWxlQ2xhc3M6IChhLmNsYXNzZXMgfHwgW10pLmpvaW4oJyAnKSxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6XG4gICAgICAgICAgICAgICAgYS5kaXNhYmxlZCB8fCAoISFhLmFjdGlvbkVuYWJsZWRGaWVsZCAmJiAhdGhpcy5maWVsZElzVHJ1dGh5KHRoaXMuc2VsZWN0ZWRJdGVtLCBhLmFjdGlvbkVuYWJsZWRGaWVsZCkpLFxuICAgICAgICAgICAgICB2aXNpYmxlOiAhYS5hY3Rpb25WaXNpYmxlRmllbGQgfHwgdGhpcy5maWVsZElzVHJ1dGh5KHRoaXMuc2VsZWN0ZWRJdGVtLCBhLmFjdGlvblZpc2libGVGaWVsZCksXG4gICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IGEuY2FsbGJhY2sodGhpcy5zZWxlY3RlZEl0ZW0pLFxuICAgICAgICAgICAgfSkpXG4gICAgICAgIClcbiAgICAgICAgdGhpcy5ncmlkTWVudUl0ZW1zID0gbWVudUl0ZW1zXG4gICAgICB9KVxuICB9XG5cbiAgc2V0U2VsZWN0ZWRJdGVtKGl0ZW06IExpc3RHcmlkRGF0YSkge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbVxuICB9XG5cbiAgcmVzb2x2ZUZpZWxkRGF0YShvYmplY3Q6IGFueSwga2V5OiBhbnkpIHtcbiAgICByZXR1cm4gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShvYmplY3QsIGtleSlcbiAgfVxuXG4gIGVtaXRDb21wb25lbnRTdGF0ZUNoYW5nZWQoc3RhdGU6IERhdGFMaXN0R3JpZENvbXBvbmVudFN0YXRlID0ge30pIHtcbiAgICB0aGlzLmRpc3BsYXllZFBhZ2VTaXplJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgocGFnZVNpemUpID0+IHtcbiAgICAgIHRoaXMuY29tcG9uZW50U3RhdGVDaGFuZ2VkLmVtaXQoe1xuICAgICAgICBwYWdlU2l6ZSxcbiAgICAgICAgYWN0aXZlUGFnZTogdGhpcy5wYWdlLFxuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIG9uUGFnZUNoYW5nZShldmVudDogYW55KSB7XG4gICAgY29uc3QgcGFnZSA9IGV2ZW50LmZpcnN0IC8gZXZlbnQucm93c1xuICAgIHRoaXMucGFnZSA9IHBhZ2VcbiAgICB0aGlzLnBhZ2VTaXplID0gZXZlbnQucm93c1xuICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdChwYWdlKVxuICAgIHRoaXMucGFnZVNpemVDaGFuZ2VkLmVtaXQoZXZlbnQucm93cylcbiAgICB0aGlzLmVtaXRDb21wb25lbnRTdGF0ZUNoYW5nZWQoe1xuICAgICAgYWN0aXZlUGFnZTogcGFnZSxcbiAgICAgIHBhZ2VTaXplOiBldmVudC5yb3dzLFxuICAgIH0pXG4gIH1cblxuICByZXNldFBhZ2UoKSB7XG4gICAgdGhpcy5wYWdlID0gMFxuICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdCh0aGlzLnBhZ2UpXG4gICAgdGhpcy5lbWl0Q29tcG9uZW50U3RhdGVDaGFuZ2VkKClcbiAgfVxuXG4gIGZpZWxkSXNUcnV0aHkob2JqZWN0OiBhbnksIGtleTogYW55KSB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlRmllbGREYXRhKG9iamVjdCwga2V5KVxuICB9XG5cbiAgaGFzVmlzaWJsZU92ZXJmbG93TWVudUl0ZW1zKGl0ZW06IGFueSkge1xuICAgIHJldHVybiB0aGlzLm92ZXJmbG93TGlzdEFjdGlvbnMkLnBpcGUoXG4gICAgICBtYXAoKGFjdGlvbnMpID0+XG4gICAgICAgIGFjdGlvbnMuc29tZShcbiAgICAgICAgICAoYSkgPT5cbiAgICAgICAgICAgICghYS5hY3Rpb25WaXNpYmxlRmllbGQgfHwgdGhpcy5maWVsZElzVHJ1dGh5KGl0ZW0sIGEuYWN0aW9uVmlzaWJsZUZpZWxkKSkgJiZcbiAgICAgICAgICAgIHRoaXMudXNlclNlcnZpY2UuaGFzUGVybWlzc2lvbihhLnBlcm1pc3Npb24pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIH1cblxuICB0b2dnbGVPdmVyZmxvd01lbnUoZXZlbnQ6IE1vdXNlRXZlbnQsIG1lbnU6IE1lbnUsIHJvdzogUm93KSB7XG4gICAgdGhpcy5jdXJyZW50TWVudVJvdyQubmV4dChyb3cpXG4gICAgbWVudS50b2dnbGUoZXZlbnQpXG4gIH1cblxuICBnZXRGaWx0ZXJlZENvbHVtbnMoKSB7XG4gICAgbGV0IGlkczogc3RyaW5nW10gPSBbLi4uKHRoaXMuc3VidGl0bGVMaW5lSWRzID8/IFtdKV1cbiAgICBpZiAodGhpcy50aXRsZUxpbmVJZCkge1xuICAgICAgaWRzID0gW3RoaXMudGl0bGVMaW5lSWQsIC4uLih0aGlzLnN1YnRpdGxlTGluZUlkcyA/PyBbXSldXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuZmlsdGVyKChjKSA9PiAhaWRzLmluY2x1ZGVzKGMuaWQpKVxuICB9XG5cbiAgZmluZFRlbXBsYXRlKHRlbXBsYXRlczogUHJpbWVUZW1wbGF0ZVtdLCBuYW1lczogc3RyaW5nW10pOiBQcmltZVRlbXBsYXRlIHwgdW5kZWZpbmVkIHtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbmFtZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBuYW1lID0gbmFtZXNbaW5kZXhdXG4gICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRlbXBsYXRlcy5maW5kKCh0ZW1wbGF0ZSkgPT4gdGVtcGxhdGUubmFtZSA9PT0gbmFtZSlcbiAgICAgIGlmICh0ZW1wbGF0ZSkge1xuICAgICAgICByZXR1cm4gdGVtcGxhdGVcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgZ2V0VGVtcGxhdGUoY29sdW1uOiBEYXRhVGFibGVDb2x1bW4pOiBPYnNlcnZhYmxlPFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPiB7XG4gICAgaWYgKCF0aGlzLnRlbXBsYXRlc09ic2VydmFibGVzW2NvbHVtbi5pZF0pIHtcbiAgICAgIHRoaXMudGVtcGxhdGVzT2JzZXJ2YWJsZXNbY29sdW1uLmlkXSA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLnRlbXBsYXRlcyQsXG4gICAgICAgIHRoaXMudmlld1RlbXBsYXRlcyQsXG4gICAgICAgIHRoaXMucGFyZW50VGVtcGxhdGVzJCxcbiAgICAgIF0pLnBpcGUoXG4gICAgICAgIG1hcCgoW3QsIHZ0LCBwdF0pID0+IHtcbiAgICAgICAgICBjb25zdCB0ZW1wbGF0ZXMgPSBbLi4uKHQgPz8gW10pLCAuLi4odnQgPz8gW10pLCAuLi4ocHQgPz8gW10pXVxuICAgICAgICAgIGNvbnN0IGNvbHVtblRlbXBsYXRlID0gdGVtcGxhdGVzLmZpbmQoKHRlbXBsYXRlKSA9PiB0ZW1wbGF0ZS5uYW1lID09PSBjb2x1bW4uaWQgKyAnSWRMaXN0VmFsdWUnKT8udGVtcGxhdGVcbiAgICAgICAgICBpZiAoY29sdW1uVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW5UZW1wbGF0ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBzd2l0Y2ggKGNvbHVtbi5jb2x1bW5UeXBlKSB7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGUuREFURTpcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRlTGlzdFZhbHVlID8/XG4gICAgICAgICAgICAgICAgdGhpcy5maW5kVGVtcGxhdGUodGVtcGxhdGVzLCBbJ2RhdGVMaXN0VmFsdWUnLCAnZGVmYXVsdERhdGVMaXN0VmFsdWUnXSk/LnRlbXBsYXRlID8/XG4gICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGUuTlVNQkVSOlxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuX251bWJlckxpc3RWYWx1ZSA/P1xuICAgICAgICAgICAgICAgIHRoaXMuZmluZFRlbXBsYXRlKHRlbXBsYXRlcywgWydudW1iZXJMaXN0VmFsdWUnLCAnZGVmYXVsdE51bWJlckxpc3RWYWx1ZSddKT8udGVtcGxhdGUgPz9cbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZS5SRUxBVElWRV9EQVRFOlxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuX3JlbGF0aXZlRGF0ZUxpc3RWYWx1ZSA/P1xuICAgICAgICAgICAgICAgIHRoaXMuZmluZFRlbXBsYXRlKHRlbXBsYXRlcywgWydyZWxhdGl2ZURhdGVMaXN0VmFsdWUnLCAnZGVmYXVsdFJlbGF0aXZlRGF0ZUxpc3RWYWx1ZSddKT8udGVtcGxhdGUgPz9cbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZS5UUkFOU0xBVElPTl9LRVk6XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRpb25LZXlMaXN0VmFsdWUgPz9cbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRUZW1wbGF0ZSh0ZW1wbGF0ZXMsIFsndHJhbnNsYXRpb25LZXlMaXN0VmFsdWUnLCAnZGVmYXVsdFRyYW5zbGF0aW9uS2V5TGlzdFZhbHVlJ10pPy50ZW1wbGF0ZSA/P1xuICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlLkNVU1RPTTpcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0aGlzLl9jdXN0b21MaXN0VmFsdWUgPz9cbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRUZW1wbGF0ZSh0ZW1wbGF0ZXMsIFsnY3VzdG9tTGlzdFZhbHVlJywgJ2RlZmF1bHRDdXN0b21MaXN0VmFsdWUnXSk/LnRlbXBsYXRlID8/XG4gICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuX3N0cmluZ0xpc3RWYWx1ZSA/P1xuICAgICAgICAgICAgICAgIHRoaXMuZmluZFRlbXBsYXRlKHRlbXBsYXRlcywgWydzdHJpbmdMaXN0VmFsdWUnLCAnZGVmYXVsdFN0cmluZ0xpc3RWYWx1ZSddKT8udGVtcGxhdGUgPz9cbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBkZWJvdW5jZVRpbWUoNTApXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlc09ic2VydmFibGVzW2NvbHVtbi5pZF1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIihkaXNwbGF5ZWRQYWdlU2l6ZSQgfCBhc3luYykgYXMgZGlzcGxheWVkUGFnZVNpemVcIj5cbiAgPHAtZGF0YVZpZXdcbiAgICAqbmdJZj1cIihjb2x1bW5UZW1wbGF0ZXMkIHwgYXN5bmMpID8/IHt9IGFzIGNvbHVtblRlbXBsYXRlc1wiXG4gICAgW3ZhbHVlXT1cIihkaXNwbGF5ZWRJdGVtcyQgfCBhc3luYykgPz8gW11cIlxuICAgIFtwYWdpbmF0b3JdPVwicGFnaW5hdG9yXCJcbiAgICBbZmlyc3RdPVwicGFnZSAqIGRpc3BsYXllZFBhZ2VTaXplXCJcbiAgICAob25QYWdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICBbcm93c109XCJkaXNwbGF5ZWRQYWdlU2l6ZVwiXG4gICAgW2xheW91dF09XCJsYXlvdXRcIlxuICAgIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiXG4gICAgY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZT1cInt7ICh0b3RhbFJlY29yZHNPblNlcnZlciA/IGN1cnJlbnRQYWdlU2hvd2luZ1dpdGhUb3RhbE9uU2VydmVyS2V5IDogY3VycmVudFBhZ2VTaG93aW5nS2V5KSB8IHRyYW5zbGF0ZTpwYXJhbXMgfX1cIlxuICAgIFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwiKGRpc3BsYXllZFBhZ2VTaXplcyQgfCBhc3luYykgPz8gW11cIlxuICAgIGlkPVwiZGF0YUxpc3RHcmlkX3t7bmFtZX19XCJcbiAgICBwYWdpbmF0b3JEcm9wZG93bkFwcGVuZFRvPVwiYm9keVwiXG4gID5cbiAgICA8bmctdGVtcGxhdGUgI2dyaWRJdGVtIGxldC1yb3dzIHBUZW1wbGF0ZT1cImdyaWRJdGVtXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtbm9ndXR0ZXIgZ3JpZCBncmlkLW5vZ3V0dGVyXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtaXRlbSBbbmdGb3JPZl09XCJyb3dzXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2dyaWRJdGVtID8gX2dyaWRJdGVtIDogZGVmYXVsdEdyaWRJdGVtXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Oml0ZW19XCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNsaXN0SXRlbSBsZXQtcm93cyBwVGVtcGxhdGU9XCJsaXN0SXRlbVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLW5vZ3V0dGVyIGdyaWQgZ3JpZC1ub2d1dHRlclwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWl0ZW0gW25nRm9yT2ZdPVwicm93c1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9saXN0SXRlbSA/IF9saXN0SXRlbSA6IGRlZmF1bHRMaXN0SXRlbVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICBpdGVtOml0ZW0sXG4gICAgICAgICAgICAgIGNvbHVtblRlbXBsYXRlczogY29sdW1uVGVtcGxhdGVzXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5XCI+XG4gICAgICA8c3Bhbj57eyBlbXB0eVJlc3VsdHNNZXNzYWdlIHx8IChcIk9DWF9EQVRBX0xJU1RfR1JJRC5FTVBUWV9SRVNVTFRcIiB8IHRyYW5zbGF0ZSkgfX08L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9wLWRhdGFWaWV3PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEdyaWRJdGVtIGxldC1pdGVtPlxuICA8ZGl2IGNsYXNzPVwiY29sLTEyIGxnOmNvbC02IHhsOmNvbC00IGZsZXhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0YS1ncmlkLWl0ZW0gY2FyZCBmbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHctMTIgbGc6dy0xMSBtYi00IG10LTQgYWxpZ24tc2VsZi1zdHJldGNoXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG1iLTNcIj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgIGNsYXNzPVwiaW1hZ2VcIlxuICAgICAgICAgIHNyYz1cInt7IGl0ZW0uaW1hZ2VQYXRoIHx8IChmYWxsYmFja0ltYWdlUGF0aCQgfCBhc3luYykgfX1cIlxuICAgICAgICAgIChlcnJvcik9XCJpbWdFcnJvcihpdGVtKVwiXG4gICAgICAgICAgYWx0PVwie3tyZXNvbHZlRmllbGREYXRhKGl0ZW0sIHRpdGxlTGluZUlkKXx8ICcnfX1cIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGEtZ3JpZC1pdGVtcyBmbGV4LXJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLW5hbWUgZm9udC1tZWRpdW0gbXItMyB0ZXh0LTJ4bFwiPlxuICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiXCIgKGNsaWNrKT1cIm9uVmlld1Jvd1wiPnt7IHJlc29sdmVGaWVsZERhdGEoaXRlbSwgdGl0bGVMaW5lSWQpIHx8ICcnIH19PC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9ncmlkSXRlbVN1YnRpdGxlTGluZXMgPyBfZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzIDogZGVmYXVsdEdyaWRJdGVtU3VidGl0bGVMaW5lc1wiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyRpbXBsaWNpdDppdGVtfVwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8cC1tZW51ICNtZW51IFttb2RlbF09XCJncmlkTWVudUl0ZW1zXCIgW3BvcHVwXT1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIj48L3AtbWVudT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0U2VsZWN0ZWRJdGVtKGl0ZW0pOyB1cGRhdGVHcmlkTWVudUl0ZW1zKHRydWUpOyBtZW51LnRvZ2dsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIGljb249XCJwaSBwaS1lbGxpcHNpcy12XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ09DWF9EQVRBX0xJU1RfR1JJRC5NT1JFX0FDVElPTlNfQVJJQV9MQUJFTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJtb3JlLWFjdGlvbnMtbWVudS1idXR0b24gbWVudS1idG5cIlxuICAgICAgICAgICAgW2F0dHIubmFtZV09XCInZGF0YS1ncmlkLWl0ZW0tbWVudS1idXR0b24nXCJcbiAgICAgICAgICAgIFtwVG9vbHRpcF09XCInT0NYX0RBVEFfTElTVF9HUklELk1PUkVfQUNUSU9OU19UT09MVElQJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNkZWZhdWx0R3JpZEl0ZW1TdWJ0aXRsZUxpbmVzIGxldC1pdGVtPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCBzdWJ0aXRsZUxpbmVJZCBvZiBzdWJ0aXRsZUxpbmVJZHNcIiBjbGFzcz1cInN1YnRpdGxlTGluZSBlZGl0LXRpbWUgdGV4dC14bCBteS0zXCI+XG4gICAge3sgcmVzb2x2ZUZpZWxkRGF0YShpdGVtLCBzdWJ0aXRsZUxpbmVJZCkgfX1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNkZWZhdWx0TGlzdEl0ZW0gbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWNvbHVtblRlbXBsYXRlcz1cImNvbHVtblRlbXBsYXRlc1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgPGRpdiBjbGFzcz1cImRhdGEtbGlzdC1pdGVtcyBwLTNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLW5hbWUtcm93IGZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tbmFtZSBtci0zIHRleHQtMnhsIGZvbnQtbWVkaXVtIGFsaWduLWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgPGEgKm5nSWY9XCJ0aXRsZUxpbmVJZFwiIFtyb3V0ZXJMaW5rXT1cIlwiIChjbGljayk9XCJvblZpZXdSb3coaXRlbSlcIlxuICAgICAgICAgICAgPnt7IHJlc29sdmVGaWVsZERhdGEoaXRlbSwgdGl0bGVMaW5lSWQpIHx8ICcnIH19PC9hXG4gICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cInZpZXdJdGVtT2JzZXJ2ZWQgJiYgKCF2aWV3QWN0aW9uVmlzaWJsZUZpZWxkIHx8IGZpZWxkSXNUcnV0aHkoaXRlbSwgdmlld0FjdGlvblZpc2libGVGaWVsZCkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBpY29uPVwicGkgcGktZXllXCJcbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBtYi0xIG1yLTIgdmlld0xpc3RJdGVtQnV0dG9uXCJcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIih2aWV3TWVudUl0ZW1LZXkgfHwgJ09DWF9EQVRBX0xJU1RfR1JJRC5NRU5VLlZJRVcnKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiKHZpZXdNZW51SXRlbUtleSB8fCAnT0NYX0RBVEFfTElTVF9HUklELk1FTlUuVklFVycpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVmlld1JvdyhpdGVtKVwiXG4gICAgICAgICAgICAgICpvY3hJZlBlcm1pc3Npb249XCJ2aWV3UGVybWlzc2lvblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhIXZpZXdBY3Rpb25FbmFibGVkRmllbGQgJiYgIWZpZWxkSXNUcnV0aHkoaXRlbSwgdmlld0FjdGlvbkVuYWJsZWRGaWVsZClcIlxuICAgICAgICAgICAgICBbYXR0ci5uYW1lXT1cIidkYXRhLWxpc3QtYWN0aW9uLWJ1dHRvbidcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiZWRpdEl0ZW1PYnNlcnZlZCAmJiAoIWVkaXRBY3Rpb25WaXNpYmxlRmllbGQgfHwgZmllbGRJc1RydXRoeShpdGVtLCBlZGl0QWN0aW9uVmlzaWJsZUZpZWxkKSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IG1iLTEgbXItMiBlZGl0TGlzdEl0ZW1CdXR0b25cIlxuICAgICAgICAgICAgICBpY29uPVwicGkgcGktcGVuY2lsXCJcbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiKGVkaXRNZW51SXRlbUtleSB8fCAnT0NYX0RBVEFfTElTVF9HUklELk1FTlUuRURJVCcpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIoZWRpdE1lbnVJdGVtS2V5IHx8ICdPQ1hfREFUQV9MSVNUX0dSSUQuTUVOVS5FRElUJykgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25FZGl0Um93KGl0ZW0pXCJcbiAgICAgICAgICAgICAgKm9jeElmUGVybWlzc2lvbj1cImVkaXRQZXJtaXNzaW9uXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEhZWRpdEFjdGlvbkVuYWJsZWRGaWVsZCAmJiAhZmllbGRJc1RydXRoeShpdGVtLCBlZGl0QWN0aW9uRW5hYmxlZEZpZWxkKVwiXG4gICAgICAgICAgICAgIFthdHRyLm5hbWVdPVwiJ2RhdGEtbGlzdC1hY3Rpb24tYnV0dG9uJ1wiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJkZWxldGVJdGVtT2JzZXJ2ZWQgJiYgKCFkZWxldGVBY3Rpb25WaXNpYmxlRmllbGQgfHwgZmllbGRJc1RydXRoeShpdGVtLCBkZWxldGVBY3Rpb25WaXNpYmxlRmllbGQpKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXRyYXNoXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC1idXR0b24tZGFuZ2VyIG1iLTEgbXItMiBkZWxldGVMaXN0SXRlbUJ1dHRvblwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIihkZWxldGVNZW51SXRlbUtleSB8fCAnT0NYX0RBVEFfTElTVF9HUklELk1FTlUuREVMRVRFJykgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIihkZWxldGVNZW51SXRlbUtleSB8fCAnT0NYX0RBVEFfTElTVF9HUklELk1FTlUuREVMRVRFJykgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGVSb3coaXRlbSlcIlxuICAgICAgICAgICAgICAqb2N4SWZQZXJtaXNzaW9uPVwiZGVsZXRlUGVybWlzc2lvblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhIWRlbGV0ZUFjdGlvbkVuYWJsZWRGaWVsZCAmJiAhZmllbGRJc1RydXRoeShpdGVtLCBkZWxldGVBY3Rpb25FbmFibGVkRmllbGQpXCJcbiAgICAgICAgICAgICAgW2F0dHIubmFtZV09XCInZGF0YS1saXN0LWFjdGlvbi1idXR0b24nXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgaW5saW5lTGlzdEFjdGlvbnMkIHwgYXN5bmNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoIWFjdGlvbi5hY3Rpb25WaXNpYmxlRmllbGQgfHwgZmllbGRJc1RydXRoeShpdGVtLCBhY3Rpb24uYWN0aW9uVmlzaWJsZUZpZWxkKSlcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICpvY3hJZlBlcm1pc3Npb249XCJhY3Rpb24ucGVybWlzc2lvblwiXG4gICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJhY3Rpb24uY2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiYWN0aW9uLmljb24gfHwgJydcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3Rpb24uY2FsbGJhY2soaXRlbSlcIlxuICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJhY3Rpb24ubGFiZWxLZXkgPyAoYWN0aW9uLmxhYmVsS2V5IHwgdHJhbnNsYXRlKSA6ICcnXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYWN0aW9uLmxhYmVsS2V5ID8gKGFjdGlvbi5sYWJlbEtleSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjdGlvbi5kaXNhYmxlZCB8fCAoISFhY3Rpb24uYWN0aW9uRW5hYmxlZEZpZWxkICYmICFmaWVsZElzVHJ1dGh5KGl0ZW0sIGFjdGlvbi5hY3Rpb25FbmFibGVkRmllbGQpKVwiXG4gICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNWaXNpYmxlT3ZlcmZsb3dNZW51SXRlbXMoaXRlbSkgfCBhc3luY1wiPlxuICAgICAgICAgICAgPHAtbWVudSAjbWVudSBbbW9kZWxdPVwiKG92ZXJmbG93TWVudUl0ZW1zJCB8IGFzeW5jKSB8fCBbXVwiIFtwb3B1cF09XCJ0cnVlXCIgYXBwZW5kVG89XCJib2R5XCI+PC9wLW1lbnU+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIlxuICAgICAgICAgICAgICBbaWNvbl09XCIncGkgcGktZWxsaXBzaXMtdidcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlT3ZlcmZsb3dNZW51KCRldmVudCwgbWVudSwgaXRlbSlcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidPQ1hfREFUQV9MSVNUX0dSSUQuTU9SRV9BQ1RJT05TX0FSSUFfTEFCRUwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIidPQ1hfREFUQV9MSVNUX0dSSUQuTU9SRV9BQ1RJT05TX1RPT0xUSVAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1saWdodCBteS0xXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzID8gX2xpc3RJdGVtU3VidGl0bGVMaW5lcyA6IGRlZmF1bHRMaXN0SXRlbVN1YnRpdGxlTGluZXNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Oml0ZW19XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXBcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29sIG9mIGdldEZpbHRlcmVkQ29sdW1ucygpXCIgY2xhc3M9XCJ3LTEycmVtIG15LTIgbXItMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LWJvbGRcIiBbb2N4VG9vbHRpcE9uT3ZlcmZsb3ddPVwiY29sLm5hbWVLZXkgfCB0cmFuc2xhdGVcIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cbiAgICAgICAgICAgIHt7IGNvbC5uYW1lS2V5IHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW29jeFRvb2x0aXBPbk92ZXJmbG93XT1cImNvbC5jb2x1bW5UeXBlID09PSBjb2x1bW5UeXBlLlRSQU5TTEFUSU9OX0tFWSA/IChyZXNvbHZlRmllbGREYXRhKGl0ZW0sY29sLmlkKSB8IHRyYW5zbGF0ZSkgOiByZXNvbHZlRmllbGREYXRhKGl0ZW0sIGNvbC5pZClcIlxuICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlxuICAgICAgICAgICAgX2xpc3RWYWx1ZSA/IF9saXN0VmFsdWU6IGRlZmF1bHRMaXN0VmFsdWVcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgcm93T2JqZWN0OiBpdGVtLFxuICAgICAgICAgICAgICAgIGNvbHVtbjogY29sLFxuICAgICAgICAgICAgICAgIGNvbHVtblRlbXBsYXRlczogY29sdW1uVGVtcGxhdGVzXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNkZWZhdWx0TGlzdEl0ZW1TdWJ0aXRsZUxpbmVzIGxldC1pdGVtPVwiJGltcGxpY2l0XCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IHN1YnRpdGxlTGluZUlkIG9mIHN1YnRpdGxlTGluZUlkc1wiIGNsYXNzPVwic3VidGl0bGVMaW5lIHRleHQteGwgbXktM1wiPlxuICAgIHt7IHJlc29sdmVGaWVsZERhdGEoaXRlbSwgc3VidGl0bGVMaW5lSWQpIH19XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0TGlzdFZhbHVlIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCIgbGV0LWNvbHVtblRlbXBsYXRlcz1cImNvbHVtblRlbXBsYXRlc1wiPlxuICA8bmctY29udGFpbmVyXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uVGVtcGxhdGVzW2NvbHVtbi5pZF1cIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgcm93T2JqZWN0OiByb3dPYmplY3QsXG4gICAgICAgICAgICAgICAgY29sdW1uOiBjb2x1bW5cbiAgICAgICAgICAgIH1cIlxuICA+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImRlZmF1bHRTdHJpbmdMaXN0VmFsdWVcIiBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyPiB7eyByZXNvbHZlRmllbGREYXRhKHJvd09iamVjdCwgY29sdW1uLmlkKSB9fSA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJkZWZhdWx0TnVtYmVyTGlzdFZhbHVlXCIgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lcj4ge3sgcmVzb2x2ZUZpZWxkRGF0YShyb3dPYmplY3QsIGNvbHVtbi5pZCkgfCBudW1iZXIgfX0gPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZGVmYXVsdEN1c3RvbUxpc3RWYWx1ZVwiIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+IDwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJkZWZhdWx0RGF0ZUxpc3RWYWx1ZVwiIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXI+IHt7IHJlc29sdmVGaWVsZERhdGEocm93T2JqZWN0LCBjb2x1bW4uaWQpIHwgZGF0ZTogY29sdW1uLmRhdGVGb3JtYXQgPz8gJ21lZGl1bScgfX0gPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZGVmYXVsdFJlbGF0aXZlRGF0ZUxpc3RWYWx1ZVwiIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXI+XG4gICAge3sgJ09DWF9EQVRBX1RBQkxFLkVESVRFRCcgfCB0cmFuc2xhdGUgfX0ge3sgcmVzb2x2ZUZpZWxkRGF0YShyb3dPYmplY3QsIGNvbHVtbi5pZCkgfCB0aW1lYWdvIH19XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImRlZmF1bHRUcmFuc2xhdGlvbktleUxpc3RWYWx1ZVwiIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXI+IHt7IHJlc29sdmVGaWVsZERhdGEocm93T2JqZWN0LCBjb2x1bW4uaWQpIHwgdHJhbnNsYXRlIH19IDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -2,6 +2,7 @@ import { map, of } from 'rxjs';
2
2
  import { flattenObject } from '../../functions/flatten-object';
3
3
  import { ColumnType } from '../../model/column-type.model';
4
4
  import { ObjectUtils } from '../../utils/objectutils';
5
+ import { FilterType } from '../../model/filter.model';
5
6
  export class DataSortBase {
6
7
  constructor(locale, translateService) {
7
8
  this.locale = locale;
@@ -42,8 +43,18 @@ export class DataSortBase {
42
43
  .filter((value, index, self) => self.indexOf(value) === index && value != null)
43
44
  .every((filterColumnId) => filters
44
45
  .filter((filter) => filter.columnId === filterColumnId)
45
- .some((filter) => (translations[filter.columnId]?.[ObjectUtils.resolveFieldData(item, filter.columnId)?.toString()] ||
46
- ObjectUtils.resolveFieldData(item, filter.columnId))?.toString() === filter.value.toString()))),
46
+ .some((filter) => {
47
+ const value = (translations[filter.columnId]?.[ObjectUtils.resolveFieldData(item, filter.columnId)?.toString()] ||
48
+ ObjectUtils.resolveFieldData(item, filter.columnId))?.toString();
49
+ switch (filter.filterType) {
50
+ case undefined:
51
+ case FilterType.EQUAL:
52
+ return value === filter.value;
53
+ case FilterType.TRUTHY: {
54
+ return filter.value ? !!value : !value;
55
+ }
56
+ }
57
+ }))),
47
58
  filters,
48
59
  sortColumn,
49
60
  sortDirection,
@@ -110,4 +121,4 @@ export class DataSortBase {
110
121
  };
111
122
  }
112
123
  }
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3J0LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtc29ydC1iYXNlL2RhdGEtc29ydC1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxHQUFHLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFLMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBSXJELE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFlBQ1ksTUFBYyxFQUNkLGdCQUFrQztRQURsQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUMzQyxDQUFDO0lBRUosY0FBYyxDQUNaLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxDQUEyRCxFQUNyRyxPQUEwQixFQUMxQixtQkFBNEIsRUFDNUIsaUJBQTBCO1FBRTFCLElBQUksbUJBQW1CLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUM3QyxJQUFJLGVBQWUsR0FBYSxFQUFFLENBQUE7WUFDbEMsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxLQUFLLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQTtZQUM1RixpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDOUIsZUFBZSxHQUFHO29CQUNoQixHQUFHLGVBQWU7b0JBQ2xCLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxF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LE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtpQkFDaEYsQ0FBQztnQkFDSixJQUFJLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQztvQkFDcEIsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFBO2dCQUNiLENBQUM7cUJBQU0sSUFBSSxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUM7b0JBQzNCLE1BQU0sR0FBRyxDQUFDLENBQUE7Z0JBQ1osQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sR0FBRyxDQUFDLENBQUE7Z0JBQ1osQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLFNBQVMsR0FBRyxNQUFNLENBQUE7UUFDM0IsQ0FBQyxDQUFBO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBtYXAsIG9mIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGZsYXR0ZW5PYmplY3QgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvZmxhdHRlbi1vYmplY3QnXG5pbXBvcnQgeyBDb2x1bW5UeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWwvY29sdW1uLXR5cGUubW9kZWwnXG5pbXBvcnQgeyBEYXRhU29ydERpcmVjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVsL2RhdGEtc29ydC1kaXJlY3Rpb24nXG5pbXBvcnQgeyBEYXRhVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRhLXRhYmxlLWNvbHVtbi5tb2RlbCdcbmltcG9ydCB7IExpc3RHcmlkRGF0YSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZGF0YS1saXN0LWdyaWQvZGF0YS1saXN0LWdyaWQuY29tcG9uZW50J1xuaW1wb3J0IHsgUm93LCBGaWx0ZXIgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQnXG5pbXBvcnQgeyBPYmplY3RVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL29iamVjdHV0aWxzJ1xuXG50eXBlIFJvd0xpc3RHcmlkRGF0YSA9IExpc3RHcmlkRGF0YSB8IFJvd1xuXG5leHBvcnQgY2xhc3MgRGF0YVNvcnRCYXNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGxvY2FsZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICB0cmFuc2xhdGVJdGVtcyhcbiAgICBbaXRlbXMsIGZpbHRlcnMsIHNvcnRDb2x1bW4sIHNvcnREaXJlY3Rpb25dOiBbUm93TGlzdEdyaWREYXRhW10sIEZpbHRlcltdLCBzdHJpbmcsIERhdGFTb3J0RGlyZWN0aW9uXSxcbiAgICBjb2x1bW5zOiBEYXRhVGFibGVDb2x1bW5bXSxcbiAgICBjbGllbnRTaWRlRmlsdGVyaW5nOiBib29sZWFuLFxuICAgIGNsaWVudFNpZGVTb3J0aW5nOiBib29sZWFuXG4gICk6IE9ic2VydmFibGU8W1Jvd0xpc3RHcmlkRGF0YVtdLCBGaWx0ZXJbXSwgc3RyaW5nLCBEYXRhU29ydERpcmVjdGlvbiwgUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj5dPiB7XG4gICAgaWYgKGNsaWVudFNpZGVGaWx0ZXJpbmcgfHwgY2xpZW50U2lkZVNvcnRpbmcpIHtcbiAgICAgIGxldCB0cmFuc2xhdGlvbktleXM6IHN0cmluZ1tdID0gW11cbiAgICAgIGNvbnN0IHRyYW5zbGF0ZWRDb2x1bW5zID0gY29sdW1ucy5maWx0ZXIoKGMpID0+IGMuY29sdW1uVHlwZSA9PT0gQ29sdW1uVHlwZS5UUkFOU0xBVElPTl9LRVkpXG4gICAgICB0cmFuc2xhdGVkQ29sdW1ucy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgIHRyYW5zbGF0aW9uS2V5cyA9IFtcbiAgICAgICAgICAuLi50cmFuc2xhdGlvbktleXMsXG4gICAgICAgICAgLi4uaXRlbXMubWFwKChpKSA9PiBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKGksIGMuaWQpPy50b1N0cmluZygpKS5maWx0ZXIoKHYpID0+ICEhdiksXG4gICAgICAgIF1cbiAgICAgIH0pXG4gICAgICBpZiAodHJhbnNsYXRpb25LZXlzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCh0cmFuc2xhdGlvbktleXMpLnBpcGUoXG4gICAgICAgICAgbWFwKCh0cmFuc2xhdGVkVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbnM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0ge31cbiAgICAgICAgICAgIHRyYW5zbGF0ZWRDb2x1bW5zLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgICAgdHJhbnNsYXRpb25zW2MuaWRdID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgICAgICAgIGl0ZW1zLm1hcCgoaSkgPT4gW1xuICAgICAgICAgICAgICAgICAgT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShpLCBjLmlkKT8udG9TdHJpbmcoKSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRWYWx1ZXNbT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShpLCBjLmlkKT8udG9TdHJpbmcoKV0sXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHJldHVybiBbaXRlbXMsIGZpbHRlcnMsIHNvcnRDb2x1bW4sIHNvcnREaXJlY3Rpb24sIHRyYW5zbGF0aW9uc11cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvZihbaXRlbXMsIGZpbHRlcnMsIHNvcnRDb2x1bW4sIHNvcnREaXJlY3Rpb24sIHt9XSlcbiAgfVxuXG4gIGZpbHRlckl0ZW1zKFxuICAgIFtpdGVtcywgZmlsdGVycywgc29ydENvbHVtbiwgc29ydERpcmVjdGlvbiwgdHJhbnNsYXRpb25zXTogW1xuICAgICAgUm93TGlzdEdyaWREYXRhW10sXG4gICAgICBGaWx0ZXJbXSxcbiAgICAgIHN0cmluZyxcbiAgICAgIERhdGFTb3J0RGlyZWN0aW9uLFxuICAgICAgUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4sXG4gICAgXSxcbiAgICBjbGllbnRTaWRlRmlsdGVyaW5nOiBib29sZWFuXG4gICk6IFtSb3dMaXN0R3JpZERhdGFbXSwgRmlsdGVyW10sIHN0cmluZywgRGF0YVNvcnREaXJlY3Rpb24sIFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+XSB7XG4gICAgaWYgKCFjbGllbnRTaWRlRmlsdGVyaW5nKSB7XG4gICAgICByZXR1cm4gW2l0ZW1zLCBmaWx0ZXJzLCBzb3J0Q29sdW1uLCBzb3J0RGlyZWN0aW9uLCB0cmFuc2xhdGlvbnNdXG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+XG4gICAgICAgIGZpbHRlcnNcbiAgICAgICAgICAubWFwKChmaWx0ZXIpID0+IGZpbHRlci5jb2x1bW5JZClcbiAgICAgICAgICAuZmlsdGVyKCh2YWx1ZSwgaW5kZXgsIHNlbGYpID0+IHNlbGYuaW5kZXhPZih2YWx1ZSkgPT09IGluZGV4ICYmIHZhbHVlICE9IG51bGwpXG4gICAgICAgICAgLmV2ZXJ5KChmaWx0ZXJDb2x1bW5JZCkgPT5cbiAgICAgICAgICAgIGZpbHRlcnNcbiAgICAgICAgICAgICAgLmZpbHRlcigoZmlsdGVyKSA9PiBmaWx0ZXIuY29sdW1uSWQgPT09IGZpbHRlckNvbHVtbklkKVxuICAgICAgICAgICAgICAuc29tZShcbiAgICAgICAgICAgICAgICAoZmlsdGVyKSA9PlxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbnNbZmlsdGVyLmNvbHVtbklkXT8uW09iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEoaXRlbSwgZmlsdGVyLmNvbHVtbklkKT8udG9TdHJpbmcoKV0gfHxcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShpdGVtLCBmaWx0ZXIuY29sdW1uSWQpXG4gICAgICAgICAgICAgICAgICApPy50b1N0cmluZygpID09PSBmaWx0ZXIudmFsdWUudG9TdHJpbmcoKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIGZpbHRlcnMsXG4gICAgICBzb3J0Q29sdW1uLFxuICAgICAgc29ydERpcmVjdGlvbixcbiAgICAgIHRyYW5zbGF0aW9ucyxcbiAgICBdXG4gIH1cblxuICBzb3J0SXRlbXMoXG4gICAgW2l0ZW1zLCBmaWx0ZXJzLCBzb3J0Q29sdW1uLCBzb3J0RGlyZWN0aW9uLCB0cmFuc2xhdGlvbnNdOiBbXG4gICAgICBSb3dMaXN0R3JpZERhdGFbXSxcbiAgICAgIEZpbHRlcltdLFxuICAgICAgc3RyaW5nLFxuICAgICAgRGF0YVNvcnREaXJlY3Rpb24sXG4gICAgICBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PixcbiAgICBdLFxuICAgIGNvbHVtbnM6IERhdGFUYWJsZUNvbHVtbltdLFxuICAgIGNsaWVudFNpZGVTb3J0aW5nOiBib29sZWFuXG4gICk6IFtSb3dMaXN0R3JpZERhdGFbXSwgRmlsdGVyW10sIHN0cmluZywgRGF0YVNvcnREaXJlY3Rpb24sIFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+XSB7XG4gICAgaWYgKCFjbGllbnRTaWRlU29ydGluZyB8fCBzb3J0Q29sdW1uID09PSAnJykge1xuICAgICAgcmV0dXJuIFtpdGVtcywgZmlsdGVycywgc29ydENvbHVtbiwgc29ydERpcmVjdGlvbiwgdHJhbnNsYXRpb25zXVxuICAgIH1cbiAgICBsZXQgdHJhbnNsYXRlZENvbFZhbHVlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIGl0ZW1zLm1hcCgoaSkgPT4gW1xuICAgICAgICBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKGksIHNvcnRDb2x1bW4pPy50b1N0cmluZygpLFxuICAgICAgICBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKGksIHNvcnRDb2x1bW4pPy50b1N0cmluZygpLFxuICAgICAgXSlcbiAgICApXG4gICAgaWYgKGNvbHVtbnMuZmluZCgoaCkgPT4gaC5pZCA9PT0gc29ydENvbHVtbik/LmNvbHVtblR5cGUgPT09IENvbHVtblR5cGUuVFJBTlNMQVRJT05fS0VZKSB7XG4gICAgICB0cmFuc2xhdGVkQ29sVmFsdWVzID0gdHJhbnNsYXRpb25zW3NvcnRDb2x1bW5dXG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICBbLi4uaXRlbXNdLnNvcnQodGhpcy5jcmVhdGVDb21wYXJlRnVuY3Rpb24odHJhbnNsYXRlZENvbFZhbHVlcywgc29ydENvbHVtbiwgc29ydERpcmVjdGlvbikpLFxuICAgICAgZmlsdGVycyxcbiAgICAgIHNvcnRDb2x1bW4sXG4gICAgICBzb3J0RGlyZWN0aW9uLFxuICAgICAgdHJhbnNsYXRpb25zLFxuICAgIF1cbiAgfVxuXG4gIGZsYXR0ZW5JdGVtcyhpdGVtczogUm93TGlzdEdyaWREYXRhW10pIHtcbiAgICByZXR1cm4gaXRlbXMubWFwKChpKSA9PiBmbGF0dGVuT2JqZWN0KGkpKVxuICB9XG5cbiAgY3JlYXRlQ29tcGFyZUZ1bmN0aW9uKFxuICAgIHRyYW5zbGF0ZWRDb2xWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgc29ydENvbHVtbjogc3RyaW5nLFxuICAgIHNvcnREaXJlY3Rpb246IERhdGFTb3J0RGlyZWN0aW9uXG4gICk6IChhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBiOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBudW1iZXIge1xuICAgIGxldCBkaXJlY3Rpb24gPSAwXG4gICAgaWYgKHNvcnREaXJlY3Rpb24gPT09IERhdGFTb3J0RGlyZWN0aW9uLkFTQ0VORElORykge1xuICAgICAgZGlyZWN0aW9uID0gMVxuICAgIH0gZWxzZSBpZiAoc29ydERpcmVjdGlvbiA9PT0gRGF0YVNvcnREaXJlY3Rpb24uREVTQ0VORElORykge1xuICAgICAgZGlyZWN0aW9uID0gLTFcbiAgICB9XG4gICAgcmV0dXJuIChkYXRhMSwgZGF0YTIpID0+IHtcbiAgICAgIGlmIChkaXJlY3Rpb24gPT09IDApIHtcbiAgICAgICAgcmV0dXJuIDBcbiAgICAgIH1cbiAgICAgIGxldCByZXN1bHRcbiAgICAgIGNvbnN0IHZhbHVlMSA9IHRyYW5zbGF0ZWRDb2xWYWx1ZXNbT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShkYXRhMSwgc29ydENvbHVtbildXG4gICAgICBjb25zdCB2YWx1ZTIgPSB0cmFuc2xhdGVkQ29sVmFsdWVzW09iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEoZGF0YTIsIHNvcnRDb2x1bW4pXVxuXG4gICAgICBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyICE9IG51bGwpIHJlc3VsdCA9IC0xXG4gICAgICBlbHNlIGlmICh2YWx1ZTEgIT0gbnVsbCAmJiB2YWx1ZTIgPT0gbnVsbCkgcmVzdWx0ID0gMVxuICAgICAgZWxzZSBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyID09IG51bGwpIHJlc3VsdCA9IDBcbiAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZTEgPT09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZTIgPT09ICdzdHJpbmcnKVxuICAgICAgICByZXN1bHQgPSB2YWx1ZTEubG9jYWxlQ29tcGFyZSh2YWx1ZTIsIFt0aGlzLmxvY2FsZSwgJ2VuJywgJ2RlJ10sIHsgbnVtZXJpYzogdHJ1ZSB9KVxuICAgICAgZWxzZSB7XG4gICAgICAgIGlmICh2YWx1ZTEgPCB2YWx1ZTIpIHtcbiAgICAgICAgICByZXN1bHQgPSAtMVxuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlMSA+IHZhbHVlMikge1xuICAgICAgICAgIHJlc3VsdCA9IDFcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBkaXJlY3Rpb24gKiByZXN1bHRcbiAgICB9XG4gIH1cbn1cbiJdfQ==
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3J0LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtc29ydC1iYXNlL2RhdGEtc29ydC1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxHQUFHLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFLMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3JELE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUk3RCxNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUNZLE1BQWMsRUFDZCxnQkFBa0M7UUFEbEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFDM0MsQ0FBQztJQUVKLGNBQWMsQ0FDWixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBMkQsRUFDckcsT0FBMEIsRUFDMUIsbUJBQTRCLEVBQzVCLGlCQUEwQjtRQUUxQixJQUFJLG1CQUFtQixJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDN0MsSUFBSSxlQUFlLEdBQWEsRUFBRSxDQUFBO1lBQ2xDLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUE7WUFDNUYsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQzlCLGVBQWUsR0FBRztvQkFDaEIsR0FBRyxlQUFlO29CQUNs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VUFBVSxDQUFDLENBQUMsQ0FBQTtZQUVuRixJQUFJLE1BQU0sSUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLElBQUk7Z0JBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFBO2lCQUM1QyxJQUFJLE1BQU0sSUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLElBQUk7Z0JBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQTtpQkFDaEQsSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLE1BQU0sSUFBSSxJQUFJO2dCQUFFLE1BQU0sR0FBRyxDQUFDLENBQUE7aUJBQ2hELElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVE7Z0JBQy9ELE1BQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7aUJBQ2hGLENBQUM7Z0JBQ0osSUFBSSxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUM7b0JBQ3BCLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQTtnQkFDYixDQUFDO3FCQUFNLElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO29CQUMzQixNQUFNLEdBQUcsQ0FBQyxDQUFBO2dCQUNaLENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLEdBQUcsQ0FBQyxDQUFBO2dCQUNaLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxTQUFTLEdBQUcsTUFBTSxDQUFBO1FBQzNCLENBQUMsQ0FBQTtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWFwLCBvZiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBmbGF0dGVuT2JqZWN0IH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL2ZsYXR0ZW4tb2JqZWN0J1xuaW1wb3J0IHsgQ29sdW1uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVsL2NvbHVtbi10eXBlLm1vZGVsJ1xuaW1wb3J0IHsgRGF0YVNvcnREaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRhLXNvcnQtZGlyZWN0aW9uJ1xuaW1wb3J0IHsgRGF0YVRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGF0YS10YWJsZS1jb2x1bW4ubW9kZWwnXG5pbXBvcnQgeyBMaXN0R3JpZERhdGEgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2RhdGEtbGlzdC1ncmlkL2RhdGEtbGlzdC1ncmlkLmNvbXBvbmVudCdcbmltcG9ydCB7IFJvdyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudCdcbmltcG9ydCB7IE9iamVjdFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvb2JqZWN0dXRpbHMnXG5pbXBvcnQgeyBGaWx0ZXIsIEZpbHRlclR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbC9maWx0ZXIubW9kZWwnXG5cbnR5cGUgUm93TGlzdEdyaWREYXRhID0gTGlzdEdyaWREYXRhIHwgUm93XG5cbmV4cG9ydCBjbGFzcyBEYXRhU29ydEJhc2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgbG9jYWxlOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHRyYW5zbGF0ZUl0ZW1zKFxuICAgIFtpdGVtcywgZmlsdGVycywgc29ydENvbHVtbiwgc29ydERpcmVjdGlvbl06IFtSb3dMaXN0R3JpZERhdGFbXSwgRmlsdGVyW10sIHN0cmluZywgRGF0YVNvcnREaXJlY3Rpb25dLFxuICAgIGNvbHVtbnM6IERhdGFUYWJsZUNvbHVtbltdLFxuICAgIGNsaWVudFNpZGVGaWx0ZXJpbmc6IGJvb2xlYW4sXG4gICAgY2xpZW50U2lkZVNvcnRpbmc6IGJvb2xlYW5cbiAgKTogT2JzZXJ2YWJsZTxbUm93TGlzdEdyaWREYXRhW10sIEZpbHRlcltdLCBzdHJpbmcsIERhdGFTb3J0RGlyZWN0aW9uLCBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pl0+IHtcbiAgICBpZiAoY2xpZW50U2lkZUZpbHRlcmluZyB8fCBjbGllbnRTaWRlU29ydGluZykge1xuICAgICAgbGV0IHRyYW5zbGF0aW9uS2V5czogc3RyaW5nW10gPSBbXVxuICAgICAgY29uc3QgdHJhbnNsYXRlZENvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcigoYykgPT4gYy5jb2x1bW5UeXBlID09PSBDb2x1bW5UeXBlLlRSQU5TTEFUSU9OX0tFWSlcbiAgICAgIHRyYW5zbGF0ZWRDb2x1bW5zLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgdHJhbnNsYXRpb25LZXlzID0gW1xuICAgICAgICAgIC4uLnRyYW5zbGF0aW9uS2V5cyxcbiAgICAgICAgICAuLi5pdGVtcy5tYXAoKGkpID0+IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEoaSwgYy5pZCk/LnRvU3RyaW5nKCkpLmZpbHRlcigodikgPT4gISF2KSxcbiAgICAgICAgXVxuICAgICAgfSlcbiAgICAgIGlmICh0cmFuc2xhdGlvbktleXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KHRyYW5zbGF0aW9uS2V5cykucGlwZShcbiAgICAgICAgICBtYXAoKHRyYW5zbGF0ZWRWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7fVxuICAgICAgICAgICAgdHJhbnNsYXRlZENvbHVtbnMuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgICB0cmFuc2xhdGlvbnNbYy5pZF0gPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICAgICAgaXRlbXMubWFwKChpKSA9PiBbXG4gICAgICAgICAgICAgICAgICBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKGksIGMuaWQpPy50b1N0cmluZygpIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFZhbHVlc1tPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKGksIGMuaWQpPy50b1N0cmluZygpXSxcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgcmV0dXJuIFtpdGVtcywgZmlsdGVycywgc29ydENvbHVtbiwgc29ydERpcmVjdGlvbiwgdHJhbnNsYXRpb25zXVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9mKFtpdGVtcywgZmlsdGVycywgc29ydENvbHVtbiwgc29ydERpcmVjdGlvbiwge31dKVxuICB9XG5cbiAgZmlsdGVySXRlbXMoXG4gICAgW2l0ZW1zLCBmaWx0ZXJzLCBzb3J0Q29sdW1uLCBzb3J0RGlyZWN0aW9uLCB0cmFuc2xhdGlvbnNdOiBbXG4gICAgICBSb3dMaXN0R3JpZERhdGFbXSxcbiAgICAgIEZpbHRlcltdLFxuICAgICAgc3RyaW5nLFxuICAgICAgRGF0YVNvcnREaXJlY3Rpb24sXG4gICAgICBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PixcbiAgICBdLFxuICAgIGNsaWVudFNpZGVGaWx0ZXJpbmc6IGJvb2xlYW5cbiAgKTogW1Jvd0xpc3RHcmlkRGF0YVtdLCBGaWx0ZXJbXSwgc3RyaW5nLCBEYXRhU29ydERpcmVjdGlvbiwgUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj5dIHtcbiAgICBpZiAoIWNsaWVudFNpZGVGaWx0ZXJpbmcpIHtcbiAgICAgIHJldHVybiBbaXRlbXMsIGZpbHRlcnMsIHNvcnRDb2x1bW4sIHNvcnREaXJlY3Rpb24sIHRyYW5zbGF0aW9uc11cbiAgICB9XG4gICAgcmV0dXJuIFtcbiAgICAgIGl0ZW1zLmZpbHRlcigoaXRlbSkgPT5cbiAgICAgICAgZmlsdGVyc1xuICAgICAgICAgIC5tYXAoKGZpbHRlcikgPT4gZmlsdGVyLmNvbHVtbklkKVxuICAgICAgICAgIC5maWx0ZXIoKHZhbHVlLCBpbmRleCwgc2VsZikgPT4gc2VsZi5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXggJiYgdmFsdWUgIT0gbnVsbClcbiAgICAgICAgICAuZXZlcnkoKGZpbHRlckNvbHVtbklkKSA9PlxuICAgICAgICAgICAgZmlsdGVyc1xuICAgICAgICAgICAgICAuZmlsdGVyKChmaWx0ZXIpID0+IGZpbHRlci5jb2x1bW5JZCA9PT0gZmlsdGVyQ29sdW1uSWQpXG4gICAgICAgICAgICAgIC5zb21lKChmaWx0ZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IChcbiAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uc1tmaWx0ZXIuY29sdW1uSWRdPy5bT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShpdGVtLCBmaWx0ZXIuY29sdW1uSWQpPy50b1N0cmluZygpXSB8fFxuICAgICAgICAgICAgICAgICAgT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShpdGVtLCBmaWx0ZXIuY29sdW1uSWQpXG4gICAgICAgICAgICAgICAgKT8udG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZmlsdGVyLmZpbHRlclR5cGUpIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLkVRVUFMOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPT09IGZpbHRlci52YWx1ZVxuICAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLlRSVVRIWToge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyLnZhbHVlID8gISF2YWx1ZSA6ICF2YWx1ZVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICApLFxuICAgICAgZmlsdGVycyxcbiAgICAgIHNvcnRDb2x1bW4sXG4gICAgICBzb3J0RGlyZWN0aW9uLFxuICAgICAgdHJhbnNsYXRpb25zLFxuICAgIF1cbiAgfVxuXG4gIHNvcnRJdGVtcyhcbiAgICBbaXRlbXMsIGZpbHRlcnMsIHNvcnRDb2x1bW4sIHNvcnREaXJlY3Rpb24sIHRyYW5zbGF0aW9uc106IFtcbiAgICAgIFJvd0xpc3RHcmlkRGF0YVtdLFxuICAgICAgRmlsdGVyW10sXG4gICAgICBzdHJpbmcsXG4gICAgICBEYXRhU29ydERpcmVjdGlvbixcbiAgICAgIFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+LFxuICAgIF0sXG4gICAgY29sdW1uczogRGF0YVRhYmxlQ29sdW1uW10sXG4gICAgY2xpZW50U2lkZVNvcnRpbmc6IGJvb2xlYW5cbiAgKTogW1Jvd0xpc3RHcmlkRGF0YVtdLCBGaWx0ZXJbXSwgc3RyaW5nLCBEYXRhU29ydERpcmVjdGlvbiwgUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj5dIHtcbiAgICBpZiAoIWNsaWVudFNpZGVTb3J0aW5nIHx8IHNvcnRDb2x1bW4gPT09ICcnKSB7XG4gICAgICByZXR1cm4gW2l0ZW1zLCBmaWx0ZXJzLCBzb3J0Q29sdW1uLCBzb3J0RGlyZWN0aW9uLCB0cmFuc2xhdGlvbnNdXG4gICAgfVxuICAgIGxldCB0cmFuc2xhdGVkQ29sVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgaXRlbXMubWFwKChpKSA9PiBbXG4gICAgICAgIE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEoaSwgc29ydENvbHVtbik/LnRvU3RyaW5nKCksXG4gICAgICAgIE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEoaSwgc29ydENvbHVtbik/LnRvU3RyaW5nKCksXG4gICAgICBdKVxuICAgIClcbiAgICBpZiAoY29sdW1ucy5maW5kKChoKSA9PiBoLmlkID09PSBzb3J0Q29sdW1uKT8uY29sdW1uVHlwZSA9PT0gQ29sdW1uVHlwZS5UUkFOU0xBVElPTl9LRVkpIHtcbiAgICAgIHRyYW5zbGF0ZWRDb2xWYWx1ZXMgPSB0cmFuc2xhdGlvbnNbc29ydENvbHVtbl1cbiAgICB9XG4gICAgcmV0dXJuIFtcbiAgICAgIFsuLi5pdGVtc10uc29ydCh0aGlzLmNyZWF0ZUNvbXBhcmVGdW5jdGlvbih0cmFuc2xhdGVkQ29sVmFsdWVzLCBzb3J0Q29sdW1uLCBzb3J0RGlyZWN0aW9uKSksXG4gICAgICBmaWx0ZXJzLFxuICAgICAgc29ydENvbHVtbixcbiAgICAgIHNvcnREaXJlY3Rpb24sXG4gICAgICB0cmFuc2xhdGlvbnMsXG4gICAgXVxuICB9XG5cbiAgZmxhdHRlbkl0ZW1zKGl0ZW1zOiBSb3dMaXN0R3JpZERhdGFbXSkge1xuICAgIHJldHVybiBpdGVtcy5tYXAoKGkpID0+IGZsYXR0ZW5PYmplY3QoaSkpXG4gIH1cblxuICBjcmVhdGVDb21wYXJlRnVuY3Rpb24oXG4gICAgdHJhbnNsYXRlZENvbFZhbHVlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBzb3J0Q29sdW1uOiBzdHJpbmcsXG4gICAgc29ydERpcmVjdGlvbjogRGF0YVNvcnREaXJlY3Rpb25cbiAgKTogKGE6IFJlY29yZDxzdHJpbmcsIGFueT4sIGI6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IG51bWJlciB7XG4gICAgbGV0IGRpcmVjdGlvbiA9IDBcbiAgICBpZiAoc29ydERpcmVjdGlvbiA9PT0gRGF0YVNvcnREaXJlY3Rpb24uQVNDRU5ESU5HKSB7XG4gICAgICBkaXJlY3Rpb24gPSAxXG4gICAgfSBlbHNlIGlmIChzb3J0RGlyZWN0aW9uID09PSBEYXRhU29ydERpcmVjdGlvbi5ERVNDRU5ESU5HKSB7XG4gICAgICBkaXJlY3Rpb24gPSAtMVxuICAgIH1cbiAgICByZXR1cm4gKGRhdGExLCBkYXRhMikgPT4ge1xuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gMCkge1xuICAgICAgICByZXR1cm4gMFxuICAgICAgfVxuICAgICAgbGV0IHJlc3VsdFxuICAgICAgY29uc3QgdmFsdWUxID0gdHJhbnNsYXRlZENvbFZhbHVlc1tPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKGRhdGExLCBzb3J0Q29sdW1uKV1cbiAgICAgIGNvbnN0IHZhbHVlMiA9IHRyYW5zbGF0ZWRDb2xWYWx1ZXNbT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShkYXRhMiwgc29ydENvbHVtbildXG5cbiAgICAgIGlmICh2YWx1ZTEgPT0gbnVsbCAmJiB2YWx1ZTIgIT0gbnVsbCkgcmVzdWx0ID0gLTFcbiAgICAgIGVsc2UgaWYgKHZhbHVlMSAhPSBudWxsICYmIHZhbHVlMiA9PSBudWxsKSByZXN1bHQgPSAxXG4gICAgICBlbHNlIGlmICh2YWx1ZTEgPT0gbnVsbCAmJiB2YWx1ZTIgPT0gbnVsbCkgcmVzdWx0ID0gMFxuICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlMSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlMiA9PT0gJ3N0cmluZycpXG4gICAgICAgIHJlc3VsdCA9IHZhbHVlMS5sb2NhbGVDb21wYXJlKHZhbHVlMiwgW3RoaXMubG9jYWxlLCAnZW4nLCAnZGUnXSwgeyBudW1lcmljOiB0cnVlIH0pXG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKHZhbHVlMSA8IHZhbHVlMikge1xuICAgICAgICAgIHJlc3VsdCA9IC0xXG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUxID4gdmFsdWUyKSB7XG4gICAgICAgICAgcmVzdWx0ID0gMVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGRpcmVjdGlvbiAqIHJlc3VsdFxuICAgIH1cbiAgfVxufVxuIl19