@sapui5/sap.fe.controls 1.145.0 → 1.146.0

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.
Files changed (76) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/controls/.library +2 -2
  3. package/src/sap/fe/controls/AINotice.js +172 -0
  4. package/src/sap/fe/controls/AINotice.tsx +150 -0
  5. package/src/sap/fe/controls/easyFill/EasyFillPlaceholder.js +1 -1
  6. package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.js +41 -7
  7. package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.tsx +42 -6
  8. package/src/sap/fe/controls/easyFilter/EasyFilterInput.js +14 -10
  9. package/src/sap/fe/controls/easyFilter/EasyFilterInput.tsx +14 -10
  10. package/src/sap/fe/controls/easyFilter/ErrorMessageHandler.js +1 -1
  11. package/src/sap/fe/controls/easyFilter/PXFeedback.js +1 -1
  12. package/src/sap/fe/controls/easyFilter/ShellHistoryProvider.js +1 -1
  13. package/src/sap/fe/controls/easyFilter/Token.js +4 -4
  14. package/src/sap/fe/controls/easyFilter/Token.tsx +2 -2
  15. package/src/sap/fe/controls/easyFilter/innerControls/BaseFactory.js +1 -1
  16. package/src/sap/fe/controls/easyFilter/innerControls/CalendarFactory.js +1 -1
  17. package/src/sap/fe/controls/easyFilter/innerControls/MenuWithCheckBoxFactory.js +1 -1
  18. package/src/sap/fe/controls/easyFilter/innerControls/MenuWithSingleSelectFactory.js +1 -1
  19. package/src/sap/fe/controls/easyFilter/innerControls/TimeFactory.js +1 -1
  20. package/src/sap/fe/controls/easyFilter/innerControls/ValueHelpPreviewFactory.js +1 -1
  21. package/src/sap/fe/controls/easyFilter/utils.js +1 -1
  22. package/src/sap/fe/controls/inlineEdit/InlineEditIndicator.js +1 -1
  23. package/src/sap/fe/controls/library.js +2 -2
  24. package/src/sap/fe/controls/messagebundle.properties +14 -0
  25. package/src/sap/fe/controls/messagebundle_ar.properties +6 -5
  26. package/src/sap/fe/controls/messagebundle_bg.properties +6 -5
  27. package/src/sap/fe/controls/messagebundle_ca.properties +6 -5
  28. package/src/sap/fe/controls/messagebundle_cnr.properties +6 -5
  29. package/src/sap/fe/controls/messagebundle_cs.properties +6 -5
  30. package/src/sap/fe/controls/messagebundle_cy.properties +6 -5
  31. package/src/sap/fe/controls/messagebundle_da.properties +6 -5
  32. package/src/sap/fe/controls/messagebundle_de.properties +6 -5
  33. package/src/sap/fe/controls/messagebundle_el.properties +6 -5
  34. package/src/sap/fe/controls/messagebundle_en.properties +6 -5
  35. package/src/sap/fe/controls/messagebundle_en_GB.properties +6 -5
  36. package/src/sap/fe/controls/messagebundle_en_US_saprigi.properties +6 -5
  37. package/src/sap/fe/controls/messagebundle_es.properties +6 -5
  38. package/src/sap/fe/controls/messagebundle_es_MX.properties +6 -5
  39. package/src/sap/fe/controls/messagebundle_et.properties +6 -5
  40. package/src/sap/fe/controls/messagebundle_fi.properties +6 -5
  41. package/src/sap/fe/controls/messagebundle_fr.properties +6 -5
  42. package/src/sap/fe/controls/messagebundle_fr_CA.properties +6 -5
  43. package/src/sap/fe/controls/messagebundle_hi.properties +6 -5
  44. package/src/sap/fe/controls/messagebundle_hr.properties +6 -5
  45. package/src/sap/fe/controls/messagebundle_hu.properties +6 -5
  46. package/src/sap/fe/controls/messagebundle_id.properties +6 -5
  47. package/src/sap/fe/controls/messagebundle_it.properties +6 -5
  48. package/src/sap/fe/controls/messagebundle_iw.properties +6 -5
  49. package/src/sap/fe/controls/messagebundle_ja.properties +6 -5
  50. package/src/sap/fe/controls/messagebundle_kk.properties +6 -5
  51. package/src/sap/fe/controls/messagebundle_ko.properties +6 -5
  52. package/src/sap/fe/controls/messagebundle_lt.properties +6 -5
  53. package/src/sap/fe/controls/messagebundle_lv.properties +6 -5
  54. package/src/sap/fe/controls/messagebundle_mk.properties +6 -5
  55. package/src/sap/fe/controls/messagebundle_ms.properties +6 -5
  56. package/src/sap/fe/controls/messagebundle_nl.properties +6 -5
  57. package/src/sap/fe/controls/messagebundle_no.properties +6 -5
  58. package/src/sap/fe/controls/messagebundle_pl.properties +6 -5
  59. package/src/sap/fe/controls/messagebundle_pt.properties +6 -5
  60. package/src/sap/fe/controls/messagebundle_pt_PT.properties +6 -5
  61. package/src/sap/fe/controls/messagebundle_ro.properties +6 -5
  62. package/src/sap/fe/controls/messagebundle_ru.properties +6 -5
  63. package/src/sap/fe/controls/messagebundle_sh.properties +6 -5
  64. package/src/sap/fe/controls/messagebundle_sk.properties +6 -5
  65. package/src/sap/fe/controls/messagebundle_sl.properties +6 -5
  66. package/src/sap/fe/controls/messagebundle_sr.properties +6 -5
  67. package/src/sap/fe/controls/messagebundle_sv.properties +6 -5
  68. package/src/sap/fe/controls/messagebundle_th.properties +6 -5
  69. package/src/sap/fe/controls/messagebundle_tr.properties +6 -5
  70. package/src/sap/fe/controls/messagebundle_uk.properties +6 -5
  71. package/src/sap/fe/controls/messagebundle_vi.properties +6 -5
  72. package/src/sap/fe/controls/messagebundle_zh_CN.properties +6 -5
  73. package/src/sap/fe/controls/messagebundle_zh_TW.properties +6 -5
  74. package/src/sap/fe/controls/shortcuts/ShortcutExplanationProvider.js +1 -1
  75. package/src/sap/fe/controls/shortcuts/popup/ShortcutTool.js +1 -1
  76. package/src/sap/fe/controls/themes/base/InlineEditIndicator.less +9 -1
@@ -16,6 +16,7 @@ import Token from "sap/fe/controls/easyFilter/Token";
16
16
  import Button from "sap/m/Button";
17
17
  import FlexBox from "sap/m/FlexBox";
18
18
  import Popover from "sap/m/Popover";
19
+ import Text from "sap/m/Text";
19
20
  import Tokenizer from "sap/m/Tokenizer";
20
21
  import VBox from "sap/m/VBox";
21
22
  import { ButtonType, FlexAlignItems, FlexJustifyContent, FlexWrap, PlacementType, TokenizerRenderMode } from "sap/m/library";
@@ -25,13 +26,14 @@ import Control from "sap/ui/core/Control";
25
26
  import CustomData from "sap/ui/core/CustomData";
26
27
  import Lib from "sap/ui/core/Lib";
27
28
  import type RenderManager from "sap/ui/core/RenderManager";
28
- import { ValueState } from "sap/ui/core/library";
29
+ import { InvisibleMessageMode, ValueState } from "sap/ui/core/library";
29
30
  import type Context from "sap/ui/model/Context";
30
31
 
31
32
  import type { PrimitiveType } from "@sap-ux/vocabularies-types";
32
33
  import type ResourceBundle from "sap/base/i18n/ResourceBundle";
33
34
  import deepClone from "sap/base/util/deepClone";
34
35
  import { and, bindState, not } from "sap/fe/base/BindingToolkit";
36
+ import AINotice from "sap/fe/controls/AINotice";
35
37
  import EasyFilterInput from "sap/fe/controls/easyFilter/EasyFilterInput";
36
38
  import type EasyFilterToken from "sap/fe/controls/easyFilter/Token";
37
39
  import HBox from "sap/m/HBox";
@@ -40,6 +42,7 @@ import MessageToast from "sap/m/MessageToast";
40
42
  import OverflowToolbar from "sap/m/OverflowToolbar";
41
43
  import ToggleButton from "sap/m/ToggleButton";
42
44
  import ToolbarSpacer from "sap/m/ToolbarSpacer";
45
+ import InvisibleMessage from "sap/ui/core/InvisibleMessage";
43
46
  import MessageType from "sap/ui/core/message/MessageType";
44
47
  import FilterOperator from "sap/ui/model/FilterOperator";
45
48
  import FESRHelper from "sap/ui/performance/trace/FESRHelper";
@@ -179,7 +182,7 @@ export default class EasyFilterBarContainer extends Control {
179
182
  aiNotice?: Control;
180
183
 
181
184
  @event()
182
- tokensChanged?: EventHandler<UI5Event<{ tokens: TokenDefinition[] }, EasyFilterBarContainer>>;
185
+ tokensChanged?: EventHandler<UI5Event<{ tokens: TokenDefinition[]; reset: boolean }, EasyFilterBarContainer>>;
183
186
 
184
187
  @event()
185
188
  queryChanged?: EventHandler<UI5Event<{ query: string }, EasyFilterBarContainer>>;
@@ -240,6 +243,10 @@ export default class EasyFilterBarContainer extends Control {
240
243
 
241
244
  private shouldTokenChangeEventFired = true;
242
245
 
246
+ private isResettingToDefaultTokens = false;
247
+
248
+ private invisibleMessage!: InvisibleMessage;
249
+
243
250
  easyfilter?: Promise<typeof EasyFilter | undefined>;
244
251
 
245
252
  private resolveContentReady!: () => void;
@@ -253,6 +260,7 @@ export default class EasyFilterBarContainer extends Control {
253
260
  constructor(properties: string | ($ControlSettings & PropertiesOf<EasyFilterBarContainer>), others?: $ControlSettings) {
254
261
  super(properties as string, others);
255
262
  this.initialize();
263
+ this.invisibleMessage = InvisibleMessage.getInstance();
256
264
  }
257
265
 
258
266
  setEasyFilterLib(easyFilterLib: string): void {
@@ -406,6 +414,7 @@ export default class EasyFilterBarContainer extends Control {
406
414
  // error
407
415
  this.removeNonMandatoryTokens();
408
416
  this.setMessageStrip(easyFilterResult.message);
417
+ this.invisibleMessage.announce(this.resourceBundle.getText(easyFilterResult.message), InvisibleMessageMode.Assertive);
409
418
  this.state.messageStripType = MessageType.Warning;
410
419
  Log.error("Error while generating filter criteria: ", easyFilterResult.message);
411
420
  }
@@ -615,7 +624,8 @@ export default class EasyFilterBarContainer extends Control {
615
624
  if (changedProps.includes("tokens")) {
616
625
  if (this.shouldTokenChangeEventFired) {
617
626
  this.fireEvent("tokensChanged", {
618
- tokens: this.formatTokens(this.state.tokens as unknown as TokenDefinition[])
627
+ tokens: this.formatTokens(this.state.tokens as unknown as TokenDefinition[]),
628
+ reset: this.isResettingToDefaultTokens
619
629
  });
620
630
  }
621
631
  this.state.showResult = this.state.tokens.length > 0;
@@ -638,6 +648,7 @@ export default class EasyFilterBarContainer extends Control {
638
648
  //Resetting to default values
639
649
  this.isMandatoryCheckRequired = false;
640
650
  this.shouldTokenChangeEventFired = true;
651
+ this.isResettingToDefaultTokens = false;
641
652
 
642
653
  // onsapfocusleave method in sap.m.Tokenizer is automatically converting the rendermode of tokenizer to "Narrow" from "loose"
643
654
  // In this process there are multiple popover issues happening
@@ -718,6 +729,17 @@ export default class EasyFilterBarContainer extends Control {
718
729
  />
719
730
  );
720
731
  FESRHelper.setSemanticStepname(thumbDownButtonMessageStripe, "press", "fe4:eft:ms:thumbDown");
732
+ const resourceBundle = Lib.getResourceBundleFor("sap.fe.controls") as ResourceBundle;
733
+ const aiNoticeControl = this.aiNotice ? (
734
+ this.aiNotice.clone()
735
+ ) : (
736
+ <AINotice type="Button">
737
+ <VBox>
738
+ <Text class="sapFeControlsAiPopoverText1" text={resourceBundle.getText("M_NOTICE_AI_POPOVER_TEXT_1")} />
739
+ <Text class="sapFeControlsAiPopoverText2" text={resourceBundle.getText("M_NOTICE_AI_POPOVER_TEXT_2")} />
740
+ </VBox>
741
+ </AINotice>
742
+ );
721
743
  const outVBox = (
722
744
  <VBox>
723
745
  <FlexBox renderType="Bare">
@@ -751,7 +773,7 @@ export default class EasyFilterBarContainer extends Control {
751
773
  class={"sapUiTinyMarginTop"}
752
774
  >
753
775
  <FlexBox class={"sapFeControlsGap8px"} renderType="Bare" alignItems={FlexAlignItems.Center} wrap={FlexWrap.Wrap}>
754
- {this.aiNotice?.clone()}
776
+ {aiNoticeControl}
755
777
  <Tokenizer
756
778
  editable={and(bindState(this.state, "tokenizerEditable"), true)}
757
779
  class={"sapFeControlsTokenizer"}
@@ -800,7 +822,7 @@ export default class EasyFilterBarContainer extends Control {
800
822
  text={this.resourceBundle.getText("M_EASY_FILTER_RESET")}
801
823
  type={ButtonType.Transparent}
802
824
  press={(): void => {
803
- this.resetState();
825
+ this.resetState(true, true);
804
826
  //Retaining the focus on popover doesn't make the popover close on every interaction
805
827
  this.easyFilterInput.current?.$searchInput.focus();
806
828
  }}
@@ -853,9 +875,23 @@ export default class EasyFilterBarContainer extends Control {
853
875
  await this.onGoPress(currentInputValue);
854
876
  }
855
877
 
856
- resetState(clearAllFilters = true): void {
878
+ /**
879
+ * Resets the state of the EasyFilterBarContainer to its initial configuration.
880
+ *
881
+ * This method performs the following actions:
882
+ * - Clears all non-mandatory tokens and resets mandatory tokens to their default values
883
+ * - Resets the input field to its default placeholder text
884
+ * - Clears all error value states and messages from tokens
885
+ * - Clears any displayed message strips
886
+ * - Optionally fires the clearFilters event to notify consumers
887
+ * @param clearAllFilters If true, fires the clearFilters event to notify consumers that filters should be cleared else just resets the tokens without firing the event
888
+ * @param isResettingToDefaultTokens If true, indicates that the resetButton is restoring tokens to their default values
889
+ */
890
+
891
+ resetState(clearAllFilters = true, isResettingToDefaultTokens = false): void {
857
892
  if (clearAllFilters) {
858
893
  this.fireEvent("clearFilters");
894
+ this.isResettingToDefaultTokens = isResettingToDefaultTokens;
859
895
  } else {
860
896
  this.shouldTokenChangeEventFired = false;
861
897
  }
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2025 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2026 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/base/EventDelegateHook", "sap/fe/base/jsx-runtime/jsx", "sap/fe/controls/easyFilter/ShellHistoryProvider", "sap/m/Button", "sap/m/CustomListItem", "sap/m/FlexBox", "sap/m/HBox", "sap/m/IllustratedMessage", "sap/m/IllustratedMessageSize", "sap/m/IllustratedMessageType", "sap/m/Input", "sap/m/List", "sap/m/Popover", "sap/m/Text", "sap/m/Title", "sap/m/library", "sap/ui/core/Control", "sap/ui/core/CustomData", "sap/ui/core/InvisibleMessage", "sap/ui/core/Lib", "sap/ui/core/library", "./PXFeedback", "sap/fe/base/jsx-runtime/jsx", "sap/fe/base/jsx-runtime/jsxs"], function (Log, BindingToolkit, ClassSupport, EventDelegateHook, jsx, ShellHistoryProvider, Button, CustomListItem, FlexBox, HBox, IllustratedMessage, IllustratedMessageSize, IllustratedMessageType, Input, List, Popover, Text, Title, library, Control, CustomData, InvisibleMessage, Lib, coreLibrary, PXFeedback, _jsx, _jsxs) {
6
6
  "use strict";
@@ -50,7 +50,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
50
50
  _initializerDefineProperty(_this, "queryChanged", _descriptor4, _this);
51
51
  _initializerDefineProperty(_this, "enterPressed", _descriptor5, _this);
52
52
  _initializerDefineProperty(_this, "liveChange", _descriptor6, _this);
53
- _this.addFavoriteButtonClicked = false;
53
+ _this.favoriteButtonClicked = false;
54
54
  _initializerDefineProperty(_this, "state", _descriptor7, _this);
55
55
  _this.initialize();
56
56
  return _this;
@@ -322,14 +322,17 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
322
322
  if (index !== -1) {
323
323
  this.state.favoriteQueries = this.state.favoriteQueries.filter(query => query !== queryString);
324
324
  }
325
+ this.favoriteButtonClicked = true;
325
326
  }
326
327
  }), {
327
328
  dependents: _jsx(EventDelegateHook, {
328
329
  tap: () => {
329
- triggerPXIntegration("favorite");
330
- this.$searchInput?.setValue(ctx.getObject().replace(/\\\\/g, "\\"));
331
- this.onEnterPressed();
332
- this.addFavoriteButtonClicked = false;
330
+ if (!this.favoriteButtonClicked) {
331
+ triggerPXIntegration("favorite");
332
+ this.$searchInput?.setValue(ctx.getObject().replace(/\\\\/g, "\\"));
333
+ this.onEnterPressed();
334
+ }
335
+ this.favoriteButtonClicked = false;
333
336
  }
334
337
  })
335
338
  }]
@@ -347,6 +350,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
347
350
  items: bindState(this.state, "recentQueriesWitFavorites"),
348
351
  visible: equal(bindState(this.state, "isHistoryEnabled"), true),
349
352
  mode: ListMode.Delete,
353
+ ariaLabelledBy: [this.getId() + "-easyFilterLastUsedTitle"],
350
354
  delete: e => {
351
355
  const item = e.getParameter("listItem");
352
356
  item.focus();
@@ -394,7 +398,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
394
398
  type: ButtonType.Transparent,
395
399
  ariaLabelledBy: [id + "-easyFilterLastUsedItem"],
396
400
  press: () => {
397
- this.addFavoriteButtonClicked = true;
401
+ this.favoriteButtonClicked = true;
398
402
  //Retaining the focus on popover doesn't make the popover close on every interaction
399
403
  this.$favoritePopover?.focus();
400
404
  const queryString = ctx.getObject().text;
@@ -409,12 +413,12 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
409
413
  dependents: _jsx(EventDelegateHook, {
410
414
  tap: () => {
411
415
  // should not be executed when clicking on add favorite button
412
- if (!this.addFavoriteButtonClicked) {
416
+ if (!this.favoriteButtonClicked) {
413
417
  this.$searchInput?.setValue(ctx.getObject().text.replace(/\\\\/g, "\\"));
414
418
  triggerPXIntegration("recent");
415
419
  this.onEnterPressed();
416
420
  }
417
- this.addFavoriteButtonClicked = false;
421
+ this.favoriteButtonClicked = false;
418
422
  }
419
423
  })
420
424
  }]
@@ -496,4 +500,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
496
500
  _exports = EasyFilterInput;
497
501
  return _exports;
498
502
  }, false);
499
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFYXN5RmlsdGVySW5wdXQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImFnZ3JlZ2F0aW9uIiwidHlwZSIsIm11bHRpcGxlIiwiaXNEZWZhdWx0IiwiX2RlYzMiLCJwcm9wZXJ0eSIsIl9kZWM0IiwiX2RlYzUiLCJldmVudCIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsImRlZmluZVN0YXRlIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Db250cm9sIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJhZGRGYXZvcml0ZUJ1dHRvbkNsaWNrZWQiLCJfZGVzY3JpcHRvcjciLCJpbml0aWFsaXplIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFZhbHVlIiwiJHNlYXJjaElucHV0IiwiaXNIaXN0b3J5RW5hYmxlZCIsInN0YXRlIiwidmFsdWVPZiIsInNldFZhbHVlIiwidmFsdWUiLCJzZXRQbGFjZWhvbGRlciIsImdldFBsYWNlaG9sZGVyIiwicmVjb21tZW5kZWRRdWVyaWVzIiwicmVjb21tZW5kZWRWYWx1ZXMiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwicG9wb3ZlckludmlzaWJsZU1lc3NhZ2UiLCJJbnZpc2libGVNZXNzYWdlIiwiZ2V0SW5zdGFuY2UiLCJjcmVhdGVJbnB1dCIsInNldEFzSW52YWxpZCIsIm1lc3NhZ2UiLCJzZXRWYWx1ZVN0YXRlIiwiVmFsdWVTdGF0ZSIsIldhcm5pbmciLCJzZXRWYWx1ZVN0YXRlVGV4dCIsIm9wZW5WYWx1ZVN0YXRlTWVzc2FnZSIsInNldEFzVmFsaWQiLCJOb25lIiwiY2xvc2VWYWx1ZVN0YXRlTWVzc2FnZSIsIl9qc3giLCJJbnB1dCIsIndpZHRoIiwic2hvd0NsZWFySWNvbiIsImNoYW5nZSIsImUiLCJmaXJlRXZlbnQiLCJxdWVyeSIsImdldFBhcmFtZXRlciIsImxpdmVDaGFuZ2UiLCJxdWVyeUNoYW5nZWQiLCJnZXRTb3VyY2UiLCIkZmF2b3JpdGVQb3BvdmVyIiwiaXNPcGVuIiwib3BlblN1Z2dlc3Rpb25Qb3BvdmVyIiwiZ2V0VGV4dCIsImdldFZhbHVlU3RhdGUiLCJwbGFjZWhvbGRlciIsImZhdm9yaXRlUG9wb3ZlciIsImNyZWF0ZUZhdm9yaXRlUG9wb3ZlciIsImFkZERlcGVuZGVudCIsImFkZEV2ZW50RGVsZWdhdGUiLCJvbmtleXVwIiwia2V5Iiwib25FbnRlclByZXNzZWQiLCJjbG9zZSIsIm9ua2V5ZG93biIsImxlbmd0aCIsInByZXZlbnREZWZhdWx0IiwicG9wb3ZlckNvbmFpbmVyIiwiZ2V0Q29udGVudCIsImNvbnRhaW5lckl0ZW1zIiwiZ2V0SXRlbXMiLCJmaW5kIiwiaXRlbSIsImlzRm9jdXNhYmxlIiwiZm9jdXMiLCJvbnRhcCIsIm9uZm9jdXNpbiIsInRhcmdldFRleHQiLCJ0YXJnZXQiLCJvdXRlclRleHQiLCJ0YXJnZXRJZCIsImlkIiwiaW5jbHVkZXMiLCJmYXZvcml0ZVF1ZXJpZXMiLCJmaWx0ZXIiLCJkYXRhIiwidG9Mb3dlckNhc2UiLCJyZWNlbnRRdWVyaWVzIiwib25BZnRlclJlbmRlcmluZyIsImFubm91bmNlIiwiSW52aXNpYmxlTWVzc2FnZU1vZGUiLCJBc3NlcnRpdmUiLCJzaGVsbEhpc3RvcnlQcm92aWRlciIsImdldEZhdm9yaXRlUXVlcmllcyIsImdldFJlY2VudFF1ZXJpZXMiLCJvcGVuQnkiLCJyZXF1ZXN0RmF2b3JpdGUiLCJtYWdpY1F1ZXJ5IiwiYWRkUmVjZW50UXVlcnkiLCJxdWVyeVN0cmluZyIsInJlcGxhY2UiLCJyZWNlbnRRdWVyeUluZGV4IiwiZmluZEluZGV4IiwiY29uY2F0Iiwic2xpY2UiLCJ1bnNoaWZ0Iiwib25TdGF0ZUNoYW5nZSIsImNoYW5nZWRQcm9wcyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNldEZhdm9yaXRlUXVlcmllcyIsInNldFJlY2VudFF1ZXJpZXMiLCJtYXAiLCJyZWNlbnRRdWVyaWVzV2l0RmF2b3JpdGVzIiwicmVjZW50UXVlcnkiLCJ0ZXh0IiwiaXNGYXZvcml0ZSIsImZhdm9yaXRlUXVlcnkiLCJpbml0U2hlbGxIaXN0b3J5UHJvdmlkZXIiLCJTaGVsbEhpc3RvcnlQcm92aWRlciIsImFwcElkIiwiZXJyb3IiLCJMb2ciLCJQb3BvdmVyIiwiZ2V0SWQiLCJzaG93SGVhZGVyIiwiaG9yaXpvbnRhbFNjcm9sbGluZyIsInBsYWNlbWVudCIsIlBsYWNlbWVudFR5cGUiLCJCb3R0b20iLCJzaG93QXJyb3ciLCJpbml0aWFsRm9jdXMiLCJjbGFzcyIsInZpc2libGUiLCJlcXVhbCIsImJpbmRTdGF0ZSIsImNoaWxkcmVuIiwiY29udGVudCIsIkZsZXhCb3giLCJkaXJlY3Rpb24iLCJGbGV4RGlyZWN0aW9uIiwiQ29sdW1uIiwicmVuZGVyVHlwZSIsIml0ZW1zIiwiVGl0bGUiLCJ0aXRsZVN0eWxlIiwiVGl0bGVMZXZlbCIsIkg2IiwiSEJveCIsIndyYXAiLCJGbGV4V3JhcCIsIldyYXAiLCJjdHgiLCJCdXR0b24iLCJnZXRPYmplY3QiLCJwcmVzcyIsImJpbmQiLCJMaXN0Iiwibm9EYXRhIiwiSWxsdXN0cmF0ZWRNZXNzYWdlIiwidGl0bGUiLCJpbGx1c3RyYXRpb25TaXplIiwiSWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZSIsIkV4dHJhU21hbGwiLCJpbGx1c3RyYXRpb25UeXBlIiwiSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSIsIk5vRW50cmllcyIsImRlc2NyaXB0aW9uIiwiQ3VzdG9tTGlzdEl0ZW0iLCJhcmlhTGFiZWxsZWRCeSIsImN1c3RvbURhdGEiLCJDdXN0b21EYXRhIiwiX2pzeHMiLCJSb3ciLCJhbGlnbkl0ZW1zIiwiRmxleEFsaWduSXRlbXMiLCJDZW50ZXIiLCJqdXN0aWZ5Q29udGVudCIsIkZsZXhKdXN0aWZ5Q29udGVudCIsIlNwYWNlQmV0d2VlbiIsIlRleHQiLCJ0b29sdGlwIiwid3JhcHBpbmciLCJpY29uIiwiQnV0dG9uVHlwZSIsIlRyYW5zcGFyZW50IiwiaW5kZXgiLCJpbmRleE9mIiwiZGVwZW5kZW50cyIsIkV2ZW50RGVsZWdhdGVIb29rIiwidGFwIiwidHJpZ2dlclBYSW50ZWdyYXRpb24iLCJtb2RlIiwiTGlzdE1vZGUiLCJEZWxldGUiLCJkZWxldGUiLCJlbmFibGVkIiwibGVzc1RoYW4iLCJyZW1vdmVGcm9tRmF2b3JpdGVzIiwiYWRkVG9GYXZvcml0ZXMiLCJuZXdGYXZvcml0ZSIsInBvcCIsInJlbmRlciIsInJtIiwiY29udHJvbCIsImpzeCIsInJlbmRlclVzaW5nUmVuZGVyTWFuYWdlciIsInJlZiIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVhc3lGaWx0ZXJJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IHR5cGUgeyBQYXRoSW5Nb2RlbEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGJpbmRTdGF0ZSwgZXF1YWwsIGxlbmd0aCwgbGVzc1RoYW4gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVTdGF0ZSwgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBwcm9wZXJ0eSwgdHlwZSBQcm9wZXJ0aWVzT2YsIHR5cGUgU3RhdGVPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBFdmVudERlbGVnYXRlSG9vayBmcm9tIFwic2FwL2ZlL2Jhc2UvRXZlbnREZWxlZ2F0ZUhvb2tcIjtcbmltcG9ydCBqc3ggZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IFNoZWxsSGlzdG9yeVByb3ZpZGVyIGZyb20gXCJzYXAvZmUvY29udHJvbHMvZWFzeUZpbHRlci9TaGVsbEhpc3RvcnlQcm92aWRlclwiO1xuaW1wb3J0IHR5cGUgeyBCdXR0b24kUHJlc3NFdmVudCB9IGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IEN1c3RvbUxpc3RJdGVtIGZyb20gXCJzYXAvbS9DdXN0b21MaXN0SXRlbVwiO1xuaW1wb3J0IEZsZXhCb3ggZnJvbSBcInNhcC9tL0ZsZXhCb3hcIjtcbmltcG9ydCBIQm94IGZyb20gXCJzYXAvbS9IQm94XCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2VTaXplIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VTaXplXCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSBmcm9tIFwic2FwL20vSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZVwiO1xuaW1wb3J0IHR5cGUgeyBJbnB1dCRMaXZlQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vSW5wdXRcIjtcbmltcG9ydCBJbnB1dCBmcm9tIFwic2FwL20vSW5wdXRcIjtcbmltcG9ydCBMaXN0IGZyb20gXCJzYXAvbS9MaXN0XCI7XG5pbXBvcnQgdHlwZSB7IExpc3RCYXNlJERlbGV0ZUV2ZW50IH0gZnJvbSBcInNhcC9tL0xpc3RCYXNlXCI7XG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwic2FwL20vUG9wb3ZlclwiO1xuaW1wb3J0IHR5cGUgU3RhbmRhcmRMaXN0SXRlbSBmcm9tIFwic2FwL20vU3RhbmRhcmRMaXN0SXRlbVwiO1xuaW1wb3J0IFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCBUaXRsZSBmcm9tIFwic2FwL20vVGl0bGVcIjtcbmltcG9ydCB7IEJ1dHRvblR5cGUsIEZsZXhBbGlnbkl0ZW1zLCBGbGV4RGlyZWN0aW9uLCBGbGV4SnVzdGlmeUNvbnRlbnQsIEZsZXhXcmFwLCBMaXN0TW9kZSwgUGxhY2VtZW50VHlwZSB9IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCBJbnZpc2libGVNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9JbnZpc2libGVNZXNzYWdlXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCB7IEludmlzaWJsZU1lc3NhZ2VNb2RlLCBUaXRsZUxldmVsLCBWYWx1ZVN0YXRlIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEV2ZW50SGFuZGxlciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi90eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcbmltcG9ydCB7IHRyaWdnZXJQWEludGVncmF0aW9uIH0gZnJvbSBcIi4vUFhGZWVkYmFja1wiO1xuXG50eXBlIFJlY2VudFR5cGUgPSB7XG5cdHRleHQ6IHN0cmluZztcblx0aXNGYXZvcml0ZTogYm9vbGVhbjtcbn07XG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29udHJvbHMuZWFzeUZpbHRlci5FYXN5RmlsdGVySW5wdXRcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lGaWx0ZXJJbnB1dCBleHRlbmRzIENvbnRyb2wge1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5tLklucHV0XCIsIG11bHRpcGxlOiBmYWxzZSwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdCRzZWFyY2hJbnB1dCE6IElucHV0O1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0YXBwSWQ/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJhcnJheVwiIH0pXG5cdHJlY29tbWVuZGVkVmFsdWVzPzogc3RyaW5nW107XG5cblx0QGV2ZW50KClcblx0cXVlcnlDaGFuZ2VkPzogRXZlbnRIYW5kbGVyPFVJNUV2ZW50PHsgcXVlcnk6IHN0cmluZyB9LCBFYXN5RmlsdGVySW5wdXQ+PjtcblxuXHRAZXZlbnQoKVxuXHRlbnRlclByZXNzZWQ/OiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8eyBxdWVyeTogc3RyaW5nIH0sIEVhc3lGaWx0ZXJJbnB1dD4+O1xuXG5cdEBldmVudCgpXG5cdGxpdmVDaGFuZ2U/OiBFdmVudEhhbmRsZXI7XG5cblx0cHJpdmF0ZSByZXNvdXJjZUJ1bmRsZSE6IFJlc291cmNlQnVuZGxlO1xuXG5cdHNoZWxsSGlzdG9yeVByb3ZpZGVyOiBTaGVsbEhpc3RvcnlQcm92aWRlciB8IHVuZGVmaW5lZDtcblxuXHRwb3BvdmVySW52aXNpYmxlTWVzc2FnZTogSW52aXNpYmxlTWVzc2FnZSB8IHVuZGVmaW5lZDtcblxuXHQkZmF2b3JpdGVQb3BvdmVyOiBQb3BvdmVyIHwgdW5kZWZpbmVkO1xuXG5cdHByaXZhdGUgYWRkRmF2b3JpdGVCdXR0b25DbGlja2VkID0gZmFsc2U7XG5cblx0QGRlZmluZVN0YXRlKClcblx0cHJvdGVjdGVkIHN0YXRlOiBTdGF0ZU9mPHtcblx0XHRxdWVyeUNoYW5nZWQ6IGJvb2xlYW47XG5cdFx0cmVjZW50UXVlcmllczogcmVhZG9ubHkgc3RyaW5nW107XG5cdFx0cmVjZW50UXVlcmllc1dpdEZhdm9yaXRlczogcmVhZG9ubHkgUmVjZW50VHlwZVtdO1xuXHRcdGlzSGlzdG9yeUVuYWJsZWQ6IGJvb2xlYW47XG5cdFx0ZmF2b3JpdGVRdWVyaWVzOiBzdHJpbmdbXTtcblx0XHRyZWNvbW1lbmRlZFF1ZXJpZXM6IHN0cmluZ1tdO1xuXHR9PiA9IHtcblx0XHRxdWVyeUNoYW5nZWQ6IGZhbHNlLFxuXHRcdGlzSGlzdG9yeUVuYWJsZWQ6IGZhbHNlLFxuXHRcdHJlY2VudFF1ZXJpZXM6IFtdLFxuXHRcdHJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXM6IFtdLFxuXHRcdGZhdm9yaXRlUXVlcmllczogW10gYXMgc3RyaW5nW10sXG5cdFx0cmVjb21tZW5kZWRRdWVyaWVzOiBbXSBhcyBzdHJpbmdbXVxuXHR9O1xuXG5cdGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6IHN0cmluZyB8ICgkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPEVhc3lGaWx0ZXJJbnB1dD4pLCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcGVydGllcyBhcyBzdHJpbmcsIG90aGVycyk7XG5cdFx0dGhpcy5pbml0aWFsaXplKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VmFsdWUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0VmFsdWUoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0hpc3RvcnlFbmFibGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnN0YXRlLmlzSGlzdG9yeUVuYWJsZWQudmFsdWVPZigpO1xuXHR9XG5cblx0c2V0VmFsdWUodmFsdWU6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlKHZhbHVlKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHNldFBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRQbGFjZWhvbGRlcih2YWx1ZSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0UGxhY2Vob2xkZXIoKTtcblx0fVxuXG5cdGluaXRpYWxpemUoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMgPSB0aGlzLnJlY29tbWVuZGVkVmFsdWVzID8/IFtdO1xuXHRcdHRoaXMucmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXHRcdHRoaXMucG9wb3ZlckludmlzaWJsZU1lc3NhZ2UgPSBJbnZpc2libGVNZXNzYWdlLmdldEluc3RhbmNlKCk7XG5cdFx0dGhpcy5jcmVhdGVJbnB1dCgpO1xuXHR9XG5cblx0c2V0QXNJbnZhbGlkKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlU3RhdGUoVmFsdWVTdGF0ZS5XYXJuaW5nKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRWYWx1ZVN0YXRlVGV4dChtZXNzYWdlKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5vcGVuVmFsdWVTdGF0ZU1lc3NhZ2UoKTtcblx0fVxuXG5cdHNldEFzVmFsaWQoKTogdm9pZCB7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuc2V0VmFsdWVTdGF0ZShWYWx1ZVN0YXRlLk5vbmUpO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LmNsb3NlVmFsdWVTdGF0ZU1lc3NhZ2UoKTtcblx0fVxuXG5cdGNyZWF0ZUlucHV0KCk6IHZvaWQge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0ID0gKFxuXHRcdFx0PElucHV0XG5cdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdHNob3dDbGVhckljb249e3RydWV9XG5cdFx0XHRcdGNoYW5nZT17KGUpOiB2b2lkID0+IHtcblx0XHRcdFx0XHR0aGlzLmZpcmVFdmVudChcInF1ZXJ5Q2hhbmdlZFwiLCB7IHF1ZXJ5OiBlLmdldFBhcmFtZXRlcihcInZhbHVlXCIpIH0pO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHRsaXZlQ2hhbmdlPXsoZTogSW5wdXQkTGl2ZUNoYW5nZUV2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0dGhpcy5zdGF0ZS5xdWVyeUNoYW5nZWQgPSB0cnVlO1xuXHRcdFx0XHRcdHRoaXMuZmlyZUV2ZW50KFwibGl2ZUNoYW5nZVwiKTtcblx0XHRcdFx0XHRpZiAoIWUuZ2V0U291cmNlKCkuZ2V0VmFsdWUoKSAmJiAhKHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uaXNPcGVuKCkgPz8gZmFsc2UpKSB7XG5cdFx0XHRcdFx0XHR0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoZS5nZXRQYXJhbWV0ZXIoXCJ2YWx1ZVwiKSA9PT0gXCJcIikge1xuXHRcdFx0XHRcdFx0dGhpcy5zZXRQbGFjZWhvbGRlcih0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKHRoaXMuJHNlYXJjaElucHV0LmdldFZhbHVlU3RhdGUoKSA9PT0gVmFsdWVTdGF0ZS5XYXJuaW5nKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnNldEFzVmFsaWQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH19XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpfVxuXHRcdFx0PjwvSW5wdXQ+XG5cdFx0KTtcblxuXHRcdGNvbnN0IGZhdm9yaXRlUG9wb3ZlciA9IHRoaXMuY3JlYXRlRmF2b3JpdGVQb3BvdmVyKCk7XG5cdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyID0gZmF2b3JpdGVQb3BvdmVyO1xuXG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuYWRkRGVwZW5kZW50KGZhdm9yaXRlUG9wb3Zlcik7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuYWRkRXZlbnREZWxlZ2F0ZSh7XG5cdFx0XHRvbmtleXVwOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuXHRcdFx0XHRpZiAoZS5rZXkgPT09IFwiRW50ZXJcIikge1xuXHRcdFx0XHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy4kZmF2b3JpdGVQb3BvdmVyICYmIHRoaXMuJHNlYXJjaElucHV0LmdldFZhbHVlKCkpIHtcblx0XHRcdFx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXIuY2xvc2UoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9ua2V5ZG93bjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGUua2V5ID09PSBcIlRhYlwiICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFZhbHVlKCkubGVuZ3RoID09PSAwICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFZhbHVlKCkgIT09IHRoaXMuJHNlYXJjaElucHV0Py5nZXRQbGFjZWhvbGRlcigpICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFBsYWNlaG9sZGVyKCkgIT09IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUExBQ0VIT0xERVJcIilcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZSh0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0UGxhY2Vob2xkZXIoKSk7XG5cdFx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJsaXZlQ2hhbmdlXCIpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGUua2V5ID09PSBcIkFycm93RG93blwiKSB7XG5cdFx0XHRcdFx0Y29uc3QgcG9wb3ZlckNvbmFpbmVyID0gdGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5nZXRDb250ZW50KClbMF07XG5cdFx0XHRcdFx0Y29uc3QgY29udGFpbmVySXRlbXMgPSAocG9wb3ZlckNvbmFpbmVyIGFzIEZsZXhCb3gpLmdldEl0ZW1zKCk7XG5cdFx0XHRcdFx0Y29udGFpbmVySXRlbXM/LmZpbmQoKGl0ZW0pID0+IGl0ZW0uaXNGb2N1c2FibGUoKSAmJiAoaXRlbS5mb2N1cygpLCB0cnVlKSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRvbnRhcDogYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRhd2FpdCB0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0fSxcblx0XHRcdG9uZm9jdXNpbjogYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRhd2FpdCB0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlci5hZGRFdmVudERlbGVnYXRlKHtcblx0XHRcdG9ua2V5ZG93bjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0VGV4dCA9IChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCk/Lm91dGVyVGV4dDtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0SWQgPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpPy5pZDtcblx0XHRcdFx0c3dpdGNoIChlLmtleSkge1xuXHRcdFx0XHRcdGNhc2UgXCJFbnRlclwiOlxuXHRcdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlKHRhcmdldFRleHQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkRlbGV0ZVwiOlxuXHRcdFx0XHRcdFx0aWYgKHRhcmdldElkPy5pbmNsdWRlcyhcImVhc3lGaWx0ZXJGYXZvcml0ZUl0ZW1cIikpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSB0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5maWx0ZXIoXG5cdFx0XHRcdFx0XHRcdFx0KGRhdGEpID0+IGRhdGEudG9Mb3dlckNhc2UoKSAhPT0gdGFyZ2V0VGV4dC50b0xvd2VyQ2FzZSgpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmlsdGVyKChxdWVyeSkgPT4gcXVlcnkgIT09IHRhcmdldFRleHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkVzY2FwZVwiOlxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uaXNPcGVuKCkpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9uQWZ0ZXJSZW5kZXJpbmc6ICgpID0+IHtcblx0XHRcdFx0dGhpcy5wb3BvdmVySW52aXNpYmxlTWVzc2FnZT8uYW5ub3VuY2UoXG5cdFx0XHRcdFx0dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiVF9FQVNZX0ZJTFRFUl9JTlBVVF9URVhUX0xJTktfUE9QT1ZFUl9BUklBXCIpLFxuXHRcdFx0XHRcdEludmlzaWJsZU1lc3NhZ2VNb2RlLkFzc2VydGl2ZVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBvcGVuU3VnZ2VzdGlvblBvcG92ZXIoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKCF0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0VmFsdWUoKSAmJiAoIXRoaXMuJGZhdm9yaXRlUG9wb3ZlciB8fCAhdGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5pc09wZW4oKSkpIHtcblx0XHRcdC8vIE9wZW4gdGhlIGVhc3kgZmlsdGVyIHBvcG92ZXJcblx0XHRcdHRoaXMuc3RhdGUuaXNIaXN0b3J5RW5hYmxlZCA9IHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LmlzSGlzdG9yeUVuYWJsZWQoKSA/PyBmYWxzZTtcblx0XHRcdHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzID0gKGF3YWl0IHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LmdldEZhdm9yaXRlUXVlcmllcygpKSA/PyBbXTtcblx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9IChhd2FpdCB0aGlzLnNoZWxsSGlzdG9yeVByb3ZpZGVyPy5nZXRSZWNlbnRRdWVyaWVzKCkpID8/IFtdO1xuXHRcdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5vcGVuQnkodGhpcy4kc2VhcmNoSW5wdXQpO1xuXHRcdH1cblx0fVxuXG5cdHJlcXVlc3RGYXZvcml0ZShlOiBCdXR0b24kUHJlc3NFdmVudCk6IHZvaWQge1xuXHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uY2xvc2UoKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUoZS5nZXRTb3VyY2UoKS5nZXRUZXh0KCkpO1xuXHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0fVxuXG5cdG9uRW50ZXJQcmVzc2VkKCk6IHZvaWQge1xuXHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uY2xvc2UoKTtcblx0XHR0aGlzLnN0YXRlLnF1ZXJ5Q2hhbmdlZCA9IGZhbHNlO1xuXHRcdGxldCBtYWdpY1F1ZXJ5ID0gdGhpcy4kc2VhcmNoSW5wdXQ/LmdldFZhbHVlKCk7XG5cdFx0aWYgKG1hZ2ljUXVlcnkgPT09IFwiXCIgJiYgdGhpcy4kc2VhcmNoSW5wdXQuZ2V0UGxhY2Vob2xkZXIoKSAhPT0gdGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QTEFDRUhPTERFUlwiKSkge1xuXHRcdFx0bWFnaWNRdWVyeSA9IHRoaXMuJHNlYXJjaElucHV0LmdldFBsYWNlaG9sZGVyKCk7XG5cdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUobWFnaWNRdWVyeSk7XG5cdFx0fVxuXHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZVN0YXRlVGV4dChcIlwiKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWVTdGF0ZShcIk5vbmVcIik7XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJlbnRlclByZXNzZWRcIiwgeyBxdWVyeTogbWFnaWNRdWVyeSB9KTtcblx0fVxuXG5cdGFkZFJlY2VudFF1ZXJ5KHF1ZXJ5U3RyaW5nOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcblx0XHQvLyBOb3JtYWxpemUgYmFja3NsYXNoZXMgYmVmb3JlIHN0b3Jpbmdcblx0XHRxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nPy5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXFxcXFxcIik7XG5cblx0XHRjb25zdCByZWNlbnRRdWVyeUluZGV4ID0gdGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLmZpbmRJbmRleCgocXVlcnkpID0+IHF1ZXJ5LnRvTG93ZXJDYXNlKCkgPT09IHF1ZXJ5U3RyaW5nPy50b0xvd2VyQ2FzZSgpKTtcblx0XHRpZiAocXVlcnlTdHJpbmcgJiYgcmVjZW50UXVlcnlJbmRleCA9PT0gLTEpIHtcblx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9IFtxdWVyeVN0cmluZ10uY29uY2F0KHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyk7XG5cdFx0XHRpZiAodGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLmxlbmd0aCA+IDUpIHtcblx0XHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzID0gdGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLnNsaWNlKDAsIDUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAocXVlcnlTdHJpbmcpIHtcblx0XHRcdGNvbnN0IHJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmlsdGVyKChxdWVyeSkgPT4gcXVlcnkudG9Mb3dlckNhc2UoKSAhPT0gcXVlcnlTdHJpbmc/LnRvTG93ZXJDYXNlKCkpO1xuXHRcdFx0cmVjZW50UXVlcmllcy51bnNoaWZ0KHF1ZXJ5U3RyaW5nKTtcblx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9IHJlY2VudFF1ZXJpZXM7XG5cdFx0fVxuXHR9XG5cblx0b25TdGF0ZUNoYW5nZShjaGFuZ2VkUHJvcHM6IHN0cmluZ1tdID0gW10pOiB2b2lkIHtcblx0XHRpZiAoY2hhbmdlZFByb3BzLmluY2x1ZGVzKFwiZmF2b3JpdGVRdWVyaWVzXCIpIHx8IGNoYW5nZWRQcm9wcy5pbmNsdWRlcyhcInJlY2VudFF1ZXJpZXNcIikpIHtcblx0XHRcdHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LnNldEZhdm9yaXRlUXVlcmllcyh0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcyk7XG5cdFx0XHR0aGlzLnNoZWxsSGlzdG9yeVByb3ZpZGVyPy5zZXRSZWNlbnRRdWVyaWVzKHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5tYXAoKHF1ZXJ5KSA9PiBxdWVyeSkpO1xuXHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzV2l0RmF2b3JpdGVzID0gdGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLm1hcCgocmVjZW50UXVlcnkpID0+IHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHR0ZXh0OiByZWNlbnRRdWVyeSxcblx0XHRcdFx0XHRpc0Zhdm9yaXRlOiAhIXRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmZpbmQoKGZhdm9yaXRlUXVlcnkpID0+IGZhdm9yaXRlUXVlcnkgPT09IHJlY2VudFF1ZXJ5KVxuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgaW5pdFNoZWxsSGlzdG9yeVByb3ZpZGVyKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHR0aGlzLnNoZWxsSGlzdG9yeVByb3ZpZGVyID0gYXdhaXQgU2hlbGxIaXN0b3J5UHJvdmlkZXIuZ2V0SW5zdGFuY2UodGhpcy5hcHBJZCA/PyBcIjx1bmtub3duQXBwPlwiKTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgY3JlYXRpbmcgU2hlbGxIaXN0b3J5UHJvdmlkZXIgZm9yIGVhc3kgZmlsdGVyXCIsIGVycm9yIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0Y3JlYXRlRmF2b3JpdGVQb3BvdmVyKCk6IFBvcG92ZXIge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8UG9wb3ZlclxuXHRcdFx0XHRpZD17dGhpcy5nZXRJZCgpICsgXCItZmF2b3JpdGVQb3BvdmVyXCJ9XG5cdFx0XHRcdHNob3dIZWFkZXI9e2ZhbHNlfVxuXHRcdFx0XHRob3Jpem9udGFsU2Nyb2xsaW5nPXtmYWxzZX1cblx0XHRcdFx0cGxhY2VtZW50PXtQbGFjZW1lbnRUeXBlLkJvdHRvbX1cblx0XHRcdFx0c2hvd0Fycm93PXtmYWxzZX1cblx0XHRcdFx0aW5pdGlhbEZvY3VzPXt0aGlzLiRzZWFyY2hJbnB1dH1cblx0XHRcdFx0Y2xhc3M9e1wic2FwRkVDb250cm9sc1BvcG92ZXJcIn1cblx0XHRcdFx0dmlzaWJsZT17dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMubGVuZ3RoID4gMCB8fCBlcXVhbChiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJpc0hpc3RvcnlFbmFibGVkXCIpLCB0cnVlKX1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjb250ZW50OiAoXG5cdFx0XHRcdFx0XHQ8RmxleEJveCBkaXJlY3Rpb249e0ZsZXhEaXJlY3Rpb24uQ29sdW1ufSBjbGFzcz17XCJzYXBVaUNvbnRlbnRQYWRkaW5nXCJ9IHJlbmRlclR5cGU9e1wiQmFyZVwifT5cblx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRpdGVtczogW1xuXHRcdFx0XHRcdFx0XHRcdFx0PFRpdGxlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlU3R5bGU9e1RpdGxlTGV2ZWwuSDZ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9TVUdHRVNUSU9OU19USVRMRVwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwRmVDb250cm9sc1RpdGxlQm9yZGVyXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e3RoaXMuc3RhdGUucmVjb21tZW5kZWRRdWVyaWVzLmxlbmd0aCA+IDB9XG5cdFx0XHRcdFx0XHRcdFx0XHQvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxIQm94XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpQ29udGVudFBhZGRpbmdcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcInJlY29tbWVuZGVkUXVlcmllc1wiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0d3JhcD17RmxleFdyYXAuV3JhcH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMubGVuZ3RoID4gMH1cblx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtczogKGlkOiBzdHJpbmcsIGN0eDogQ29udGV4dCk6IFN0YW5kYXJkTGlzdEl0ZW0gPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpVGlueU1hcmdpbkVuZFwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e2N0eC5nZXRPYmplY3QoKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17dGhpcy5yZXF1ZXN0RmF2b3JpdGUuYmluZCh0aGlzKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PC9IQm94Pixcblx0XHRcdFx0XHRcdFx0XHRcdDxUaXRsZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZD17dGhpcy5nZXRJZCgpICsgXCItZWFzeUZpbHRlckZhdm9yaXRlVGl0bGVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGVTdHlsZT17VGl0bGVMZXZlbC5INn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0ZBVk9SSVRFX1RJVExFXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBGZUNvbnRyb2xzVGl0bGVCb3JkZXJcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17ZXF1YWwoYmluZFN0YXRlKHRoaXMuc3RhdGUsIFwiaXNIaXN0b3J5RW5hYmxlZFwiKSwgdHJ1ZSl9XG5cdFx0XHRcdFx0XHRcdFx0XHQvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxMaXN0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zPXtiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJmYXZvcml0ZVF1ZXJpZXNcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e2VxdWFsKGJpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImlzSGlzdG9yeUVuYWJsZWRcIiksIHRydWUpfVxuXHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5vRGF0YTogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PElsbHVzdHJhdGVkTWVzc2FnZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZT17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0VNUFRZX0ZBVk9SSVRFX1RJVExFXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpbGx1c3RyYXRpb25TaXplPXtJbGx1c3RyYXRlZE1lc3NhZ2VTaXplLkV4dHJhU21hbGx9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlsbHVzdHJhdGlvblR5cGU9e0lsbHVzdHJhdGVkTWVzc2FnZVR5cGUuTm9FbnRyaWVzfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbj17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0VNUFRZX0ZBVk9SSVRFX0RFU0NSSVBUSU9OXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtczogKGlkOiBzdHJpbmcsIGN0eDogQ29udGV4dCk6IFN0YW5kYXJkTGlzdEl0ZW0gPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbUxpc3RJdGVtXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e2lkICsgXCItZWFzeUZpbHRlckZhdm9yaXRlSXRlbVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpU21hbGxNYXJnaW5CZWdpblwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbaWQgKyBcIi1lYXN5RmlsdGVyRmF2b3JpdGVUaXRsZVwiXX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdXN0b21EYXRhPXtbPEN1c3RvbURhdGEga2V5PXtcInRleHRcIn0gdmFsdWU9e2N0eC5nZXRPYmplY3QoKX0gLz5dfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRWYWx1ZShjdHguZ2V0T2JqZWN0KCkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8RmxleEJveFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0d2lkdGg9e1wiMTAwJVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlyZWN0aW9uPXtGbGV4RGlyZWN0aW9uLlJvd31cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFsaWduSXRlbXM9e0ZsZXhBbGlnbkl0ZW1zLkNlbnRlcn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGp1c3RpZnlDb250ZW50PXtGbGV4SnVzdGlmeUNvbnRlbnQuU3BhY2VCZXR3ZWVufVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVuZGVyVHlwZT17XCJCYXJlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZD17aWR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PFRleHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17Y3R4LmdldE9iamVjdCgpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwPXtjdHguZ2V0T2JqZWN0KCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdyYXBwaW5nPXtmYWxzZX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBGRUNvbnRyb2xzUG9pbnRlclwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PC9UZXh0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpY29uPXtcInNhcC1pY29uOi8vZmF2b3JpdGVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9GSUxMRURfU1RBUlwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1t0aGlzLmdldElkKCkgKyBcIi1lYXN5RmlsdGVyRmF2b3JpdGVJdGVtXCJdfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlPXtCdXR0b25UeXBlLlRyYW5zcGFyZW50fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vUmV0YWluaW5nIHRoZSBmb2N1cyBvbiBwb3BvdmVyIGRvZXNuJ3QgbWFrZSB0aGUgcG9wb3ZlciBjbG9zZSBvbiBldmVyeSBpbnRlcmFjdGlvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uZm9jdXMoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBxdWVyeVN0cmluZyA9IGN0eC5nZXRPYmplY3QoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBpbmRleCA9IHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmluZGV4T2YocXVlcnlTdHJpbmcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChpbmRleCAhPT0gLTEpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzID0gdGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMuZmlsdGVyKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocXVlcnkpID0+IHF1ZXJ5ICE9PSBxdWVyeVN0cmluZ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVwZW5kZW50czogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxFdmVudERlbGVnYXRlSG9va1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFwPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyaWdnZXJQWEludGVncmF0aW9uKFwiZmF2b3JpdGVcIik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkucmVwbGFjZSgvXFxcXFxcXFwvZywgXCJcXFxcXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5hZGRGYXZvcml0ZUJ1dHRvbkNsaWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvQ3VzdG9tTGlzdEl0ZW0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdDwvTGlzdD4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8VGl0bGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e3RoaXMuZ2V0SWQoKSArIFwiLWVhc3lGaWx0ZXJMYXN0VXNlZFRpdGxlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlU3R5bGU9e1RpdGxlTGV2ZWwuSDZ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9MQVNUX1VTRURcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcEZlQ29udHJvbHNUaXRsZUJvcmRlclwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXtlcXVhbChiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJpc0hpc3RvcnlFbmFibGVkXCIpLCB0cnVlKX1cblx0XHRcdFx0XHRcdFx0XHRcdC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PExpc3Rcblx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcInJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXNcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e2VxdWFsKGJpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImlzSGlzdG9yeUVuYWJsZWRcIiksIHRydWUpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRtb2RlPXtMaXN0TW9kZS5EZWxldGV9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRlbGV0ZT17KGU6IExpc3RCYXNlJERlbGV0ZUV2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgaXRlbSA9IGUuZ2V0UGFyYW1ldGVyKFwibGlzdEl0ZW1cIikgYXMgQ3VzdG9tTGlzdEl0ZW07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbS5mb2N1cygpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IHF1ZXJ5U3RyaW5nID0gZS5nZXRQYXJhbWV0ZXIoXCJsaXN0SXRlbVwiKT8uZGF0YShcInRleHRcIik7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXF1ZXJ5U3RyaW5nKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gTm9ybWFsaXplIGJhY2tzbGFzaGVzIGJlZm9yZSBjb21wYXJpbmdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nPy5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXFxcXFxcIik7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmlsdGVyKChxdWVyeSkgPT4gcXVlcnkgIT09IHF1ZXJ5U3RyaW5nKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRub0RhdGE6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxJbGx1c3RyYXRlZE1lc3NhZ2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9FTVBUWV9MQVNUX1VTRURfVElUTEVcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlsbHVzdHJhdGlvblNpemU9e0lsbHVzdHJhdGVkTWVzc2FnZVNpemUuRXh0cmFTbWFsbH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uVHlwZT17SWxsdXN0cmF0ZWRNZXNzYWdlVHlwZS5Ob0VudHJpZXN9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfRU1QVFlfUkVDRU5UX0RFU0NSSVBUSU9OXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtczogKGlkOiBzdHJpbmcsIGN0eDogQ29udGV4dCk6IEZsZXhCb3ggPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbUxpc3RJdGVtXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e2lkICsgXCItZWFzeUZpbHRlckxhc3RVc2VkSXRlbVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUoY3R4LmdldE9iamVjdCgpLnRleHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpbkJlZ2luXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y3VzdG9tRGF0YT17WzxDdXN0b21EYXRhIGtleT17XCJ0ZXh0XCJ9IHZhbHVlPXtjdHguZ2V0T2JqZWN0KCkudGV4dH0gLz5dfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbaWQgKyBcIi1lYXN5RmlsdGVyTGFzdFVzZWRUaXRsZVwiXX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxGbGV4Qm94XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aWR0aD17XCIxMDAlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaXJlY3Rpb249e0ZsZXhEaXJlY3Rpb24uUm93fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YWxpZ25JdGVtcz17RmxleEFsaWduSXRlbXMuQ2VudGVyfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ9e0ZsZXhKdXN0aWZ5Q29udGVudC5TcGFjZUJldHdlZW59XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZW5kZXJUeXBlPXtcIkJhcmVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlkPXtpZH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8VGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXtjdHguZ2V0T2JqZWN0KCkudGV4dH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcD17Y3R4LmdldE9iamVjdCgpLnRleHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdyYXBwaW5nPXtmYWxzZX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBGRUNvbnRyb2xzUG9pbnRlclwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PC9UZXh0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpY29uPXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkuaXNGYXZvcml0ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyBcInNhcC1pY29uOi8vZmF2b3JpdGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBcInNhcC1pY29uOi8vYWRkLWZhdm9yaXRlXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwPXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkuaXNGYXZvcml0ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyB0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX0ZJTExFRF9TVEFSXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfRU1QVFlfU1RBUlRcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbmFibGVkPXtsZXNzVGhhbihcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsZW5ndGgoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRiaW5kU3RhdGUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiZmF2b3JpdGVRdWVyaWVzXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkgYXMgUGF0aEluTW9kZWxFeHByZXNzaW9uPHVua25vd24+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ1XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9e0J1dHRvblR5cGUuVHJhbnNwYXJlbnR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbaWQgKyBcIi1lYXN5RmlsdGVyTGFzdFVzZWRJdGVtXCJdfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWRkRmF2b3JpdGVCdXR0b25DbGlja2VkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvL1JldGFpbmluZyB0aGUgZm9jdXMgb24gcG9wb3ZlciBkb2Vzbid0IG1ha2UgdGhlIHBvcG92ZXIgY2xvc2Ugb24gZXZlcnkgaW50ZXJhY3Rpb25cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXI/LmZvY3VzKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgcXVlcnlTdHJpbmcgPSBjdHguZ2V0T2JqZWN0KCkudGV4dDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBpc0Zhdm9yaXRlID0gY3R4LmdldE9iamVjdCgpLmlzRmF2b3JpdGU7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoaXNGYXZvcml0ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5yZW1vdmVGcm9tRmF2b3JpdGVzKHF1ZXJ5U3RyaW5nKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5hZGRUb0Zhdm9yaXRlcyhxdWVyeVN0cmluZyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlcGVuZGVudHM6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8RXZlbnREZWxlZ2F0ZUhvb2tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRhcD17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBzaG91bGQgbm90IGJlIGV4ZWN1dGVkIHdoZW4gY2xpY2tpbmcgb24gYWRkIGZhdm9yaXRlIGJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXRoaXMuYWRkRmF2b3JpdGVCdXR0b25DbGlja2VkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y3R4LmdldE9iamVjdCgpLnRleHQucmVwbGFjZSgvXFxcXFxcXFwvZywgXCJcXFxcXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cmlnZ2VyUFhJbnRlZ3JhdGlvbihcInJlY2VudFwiKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLm9uRW50ZXJQcmVzc2VkKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5hZGRGYXZvcml0ZUJ1dHRvbkNsaWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvQ3VzdG9tTGlzdEl0ZW0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdDwvTGlzdD5cblx0XHRcdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0KVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9Qb3BvdmVyPlxuXHRcdCkgYXMgUG9wb3Zlcjtcblx0fVxuXG5cdHByaXZhdGUgcmVtb3ZlRnJvbUZhdm9yaXRlcyhxdWVyeTogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSB0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5maWx0ZXIoKGRhdGEpID0+IGRhdGEudG9Mb3dlckNhc2UoKSAhPT0gcXVlcnkudG9Mb3dlckNhc2UoKSk7XG5cdH1cblxuXHRwcml2YXRlIGFkZFRvRmF2b3JpdGVzKHF1ZXJ5OiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCBuZXdGYXZvcml0ZSA9IFtxdWVyeV0uY29uY2F0KHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmNvbmNhdCgpKTtcblx0XHRpZiAobmV3RmF2b3JpdGUubGVuZ3RoID4gNSkge1xuXHRcdFx0bmV3RmF2b3JpdGUucG9wKCk7XG5cdFx0fVxuXHRcdHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzID0gbmV3RmF2b3JpdGU7XG5cdH1cblxuXHRzdGF0aWMgcmVuZGVyKHJtOiBSZW5kZXJNYW5hZ2VyLCBjb250cm9sOiBFYXN5RmlsdGVySW5wdXQpOiB2b2lkIHtcblx0XHRyZXR1cm4ganN4LnJlbmRlclVzaW5nUmVuZGVyTWFuYWdlcihybSwgY29udHJvbCwgKCkgPT4ge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PHNwYW4gcmVmPXtjb250cm9sfSBjbGFzcz17XCJzYXBGRUVhc3lGaWx0ZXJJbnB1dFwifT5cblx0XHRcdFx0XHR7Y29udHJvbC4kc2VhcmNoSW5wdXR9XG5cdFx0XHRcdDwvc3Bhbj5cblx0XHRcdCk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQTBDcUJBLGVBQWUsSUFBQUMsSUFBQSxHQURuQ0MsY0FBYyxDQUFDLDRDQUE0QyxDQUFDLEVBQUFDLEtBQUEsR0FFM0RDLFdBQVcsQ0FBQztJQUFFQyxJQUFJLEVBQUUsYUFBYTtJQUFFQyxRQUFRLEVBQUUsS0FB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
503
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFYXN5RmlsdGVySW5wdXQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImFnZ3JlZ2F0aW9uIiwidHlwZSIsIm11bHRpcGxlIiwiaXNEZWZhdWx0IiwiX2RlYzMiLCJwcm9wZXJ0eSIsIl9kZWM0IiwiX2RlYzUiLCJldmVudCIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsImRlZmluZVN0YXRlIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Db250cm9sIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJmYXZvcml0ZUJ1dHRvbkNsaWNrZWQiLCJfZGVzY3JpcHRvcjciLCJpbml0aWFsaXplIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFZhbHVlIiwiJHNlYXJjaElucHV0IiwiaXNIaXN0b3J5RW5hYmxlZCIsInN0YXRlIiwidmFsdWVPZiIsInNldFZhbHVlIiwidmFsdWUiLCJzZXRQbGFjZWhvbGRlciIsImdldFBsYWNlaG9sZGVyIiwicmVjb21tZW5kZWRRdWVyaWVzIiwicmVjb21tZW5kZWRWYWx1ZXMiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwicG9wb3ZlckludmlzaWJsZU1lc3NhZ2UiLCJJbnZpc2libGVNZXNzYWdlIiwiZ2V0SW5zdGFuY2UiLCJjcmVhdGVJbnB1dCIsInNldEFzSW52YWxpZCIsIm1lc3NhZ2UiLCJzZXRWYWx1ZVN0YXRlIiwiVmFsdWVTdGF0ZSIsIldhcm5pbmciLCJzZXRWYWx1ZVN0YXRlVGV4dCIsIm9wZW5WYWx1ZVN0YXRlTWVzc2FnZSIsInNldEFzVmFsaWQiLCJOb25lIiwiY2xvc2VWYWx1ZVN0YXRlTWVzc2FnZSIsIl9qc3giLCJJbnB1dCIsIndpZHRoIiwic2hvd0NsZWFySWNvbiIsImNoYW5nZSIsImUiLCJmaXJlRXZlbnQiLCJxdWVyeSIsImdldFBhcmFtZXRlciIsImxpdmVDaGFuZ2UiLCJxdWVyeUNoYW5nZWQiLCJnZXRTb3VyY2UiLCIkZmF2b3JpdGVQb3BvdmVyIiwiaXNPcGVuIiwib3BlblN1Z2dlc3Rpb25Qb3BvdmVyIiwiZ2V0VGV4dCIsImdldFZhbHVlU3RhdGUiLCJwbGFjZWhvbGRlciIsImZhdm9yaXRlUG9wb3ZlciIsImNyZWF0ZUZhdm9yaXRlUG9wb3ZlciIsImFkZERlcGVuZGVudCIsImFkZEV2ZW50RGVsZWdhdGUiLCJvbmtleXVwIiwia2V5Iiwib25FbnRlclByZXNzZWQiLCJjbG9zZSIsIm9ua2V5ZG93biIsImxlbmd0aCIsInByZXZlbnREZWZhdWx0IiwicG9wb3ZlckNvbmFpbmVyIiwiZ2V0Q29udGVudCIsImNvbnRhaW5lckl0ZW1zIiwiZ2V0SXRlbXMiLCJmaW5kIiwiaXRlbSIsImlzRm9jdXNhYmxlIiwiZm9jdXMiLCJvbnRhcCIsIm9uZm9jdXNpbiIsInRhcmdldFRleHQiLCJ0YXJnZXQiLCJvdXRlclRleHQiLCJ0YXJnZXRJZCIsImlkIiwiaW5jbHVkZXMiLCJmYXZvcml0ZVF1ZXJpZXMiLCJmaWx0ZXIiLCJkYXRhIiwidG9Mb3dlckNhc2UiLCJyZWNlbnRRdWVyaWVzIiwib25BZnRlclJlbmRlcmluZyIsImFubm91bmNlIiwiSW52aXNpYmxlTWVzc2FnZU1vZGUiLCJBc3NlcnRpdmUiLCJzaGVsbEhpc3RvcnlQcm92aWRlciIsImdldEZhdm9yaXRlUXVlcmllcyIsImdldFJlY2VudFF1ZXJpZXMiLCJvcGVuQnkiLCJyZXF1ZXN0RmF2b3JpdGUiLCJtYWdpY1F1ZXJ5IiwiYWRkUmVjZW50UXVlcnkiLCJxdWVyeVN0cmluZyIsInJlcGxhY2UiLCJyZWNlbnRRdWVyeUluZGV4IiwiZmluZEluZGV4IiwiY29uY2F0Iiwic2xpY2UiLCJ1bnNoaWZ0Iiwib25TdGF0ZUNoYW5nZSIsImNoYW5nZWRQcm9wcyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNldEZhdm9yaXRlUXVlcmllcyIsInNldFJlY2VudFF1ZXJpZXMiLCJtYXAiLCJyZWNlbnRRdWVyaWVzV2l0RmF2b3JpdGVzIiwicmVjZW50UXVlcnkiLCJ0ZXh0IiwiaXNGYXZvcml0ZSIsImZhdm9yaXRlUXVlcnkiLCJpbml0U2hlbGxIaXN0b3J5UHJvdmlkZXIiLCJTaGVsbEhpc3RvcnlQcm92aWRlciIsImFwcElkIiwiZXJyb3IiLCJMb2ciLCJQb3BvdmVyIiwiZ2V0SWQiLCJzaG93SGVhZGVyIiwiaG9yaXpvbnRhbFNjcm9sbGluZyIsInBsYWNlbWVudCIsIlBsYWNlbWVudFR5cGUiLCJCb3R0b20iLCJzaG93QXJyb3ciLCJpbml0aWFsRm9jdXMiLCJjbGFzcyIsInZpc2libGUiLCJlcXVhbCIsImJpbmRTdGF0ZSIsImNoaWxkcmVuIiwiY29udGVudCIsIkZsZXhCb3giLCJkaXJlY3Rpb24iLCJGbGV4RGlyZWN0aW9uIiwiQ29sdW1uIiwicmVuZGVyVHlwZSIsIml0ZW1zIiwiVGl0bGUiLCJ0aXRsZVN0eWxlIiwiVGl0bGVMZXZlbCIsIkg2IiwiSEJveCIsIndyYXAiLCJGbGV4V3JhcCIsIldyYXAiLCJjdHgiLCJCdXR0b24iLCJnZXRPYmplY3QiLCJwcmVzcyIsImJpbmQiLCJMaXN0Iiwibm9EYXRhIiwiSWxsdXN0cmF0ZWRNZXNzYWdlIiwidGl0bGUiLCJpbGx1c3RyYXRpb25TaXplIiwiSWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZSIsIkV4dHJhU21hbGwiLCJpbGx1c3RyYXRpb25UeXBlIiwiSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSIsIk5vRW50cmllcyIsImRlc2NyaXB0aW9uIiwiQ3VzdG9tTGlzdEl0ZW0iLCJhcmlhTGFiZWxsZWRCeSIsImN1c3RvbURhdGEiLCJDdXN0b21EYXRhIiwiX2pzeHMiLCJSb3ciLCJhbGlnbkl0ZW1zIiwiRmxleEFsaWduSXRlbXMiLCJDZW50ZXIiLCJqdXN0aWZ5Q29udGVudCIsIkZsZXhKdXN0aWZ5Q29udGVudCIsIlNwYWNlQmV0d2VlbiIsIlRleHQiLCJ0b29sdGlwIiwid3JhcHBpbmciLCJpY29uIiwiQnV0dG9uVHlwZSIsIlRyYW5zcGFyZW50IiwiaW5kZXgiLCJpbmRleE9mIiwiZGVwZW5kZW50cyIsIkV2ZW50RGVsZWdhdGVIb29rIiwidGFwIiwidHJpZ2dlclBYSW50ZWdyYXRpb24iLCJtb2RlIiwiTGlzdE1vZGUiLCJEZWxldGUiLCJkZWxldGUiLCJlbmFibGVkIiwibGVzc1RoYW4iLCJyZW1vdmVGcm9tRmF2b3JpdGVzIiwiYWRkVG9GYXZvcml0ZXMiLCJuZXdGYXZvcml0ZSIsInBvcCIsInJlbmRlciIsInJtIiwiY29udHJvbCIsImpzeCIsInJlbmRlclVzaW5nUmVuZGVyTWFuYWdlciIsInJlZiIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVhc3lGaWx0ZXJJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IHR5cGUgeyBQYXRoSW5Nb2RlbEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGJpbmRTdGF0ZSwgZXF1YWwsIGxlbmd0aCwgbGVzc1RoYW4gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVTdGF0ZSwgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBwcm9wZXJ0eSwgdHlwZSBQcm9wZXJ0aWVzT2YsIHR5cGUgU3RhdGVPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBFdmVudERlbGVnYXRlSG9vayBmcm9tIFwic2FwL2ZlL2Jhc2UvRXZlbnREZWxlZ2F0ZUhvb2tcIjtcbmltcG9ydCBqc3ggZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IFNoZWxsSGlzdG9yeVByb3ZpZGVyIGZyb20gXCJzYXAvZmUvY29udHJvbHMvZWFzeUZpbHRlci9TaGVsbEhpc3RvcnlQcm92aWRlclwiO1xuaW1wb3J0IHR5cGUgeyBCdXR0b24kUHJlc3NFdmVudCB9IGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IEN1c3RvbUxpc3RJdGVtIGZyb20gXCJzYXAvbS9DdXN0b21MaXN0SXRlbVwiO1xuaW1wb3J0IEZsZXhCb3ggZnJvbSBcInNhcC9tL0ZsZXhCb3hcIjtcbmltcG9ydCBIQm94IGZyb20gXCJzYXAvbS9IQm94XCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2VTaXplIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VTaXplXCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSBmcm9tIFwic2FwL20vSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZVwiO1xuaW1wb3J0IHR5cGUgeyBJbnB1dCRMaXZlQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vSW5wdXRcIjtcbmltcG9ydCBJbnB1dCBmcm9tIFwic2FwL20vSW5wdXRcIjtcbmltcG9ydCBMaXN0IGZyb20gXCJzYXAvbS9MaXN0XCI7XG5pbXBvcnQgdHlwZSB7IExpc3RCYXNlJERlbGV0ZUV2ZW50IH0gZnJvbSBcInNhcC9tL0xpc3RCYXNlXCI7XG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwic2FwL20vUG9wb3ZlclwiO1xuaW1wb3J0IHR5cGUgU3RhbmRhcmRMaXN0SXRlbSBmcm9tIFwic2FwL20vU3RhbmRhcmRMaXN0SXRlbVwiO1xuaW1wb3J0IFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCBUaXRsZSBmcm9tIFwic2FwL20vVGl0bGVcIjtcbmltcG9ydCB7IEJ1dHRvblR5cGUsIEZsZXhBbGlnbkl0ZW1zLCBGbGV4RGlyZWN0aW9uLCBGbGV4SnVzdGlmeUNvbnRlbnQsIEZsZXhXcmFwLCBMaXN0TW9kZSwgUGxhY2VtZW50VHlwZSB9IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCBJbnZpc2libGVNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9JbnZpc2libGVNZXNzYWdlXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCB7IEludmlzaWJsZU1lc3NhZ2VNb2RlLCBUaXRsZUxldmVsLCBWYWx1ZVN0YXRlIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEV2ZW50SGFuZGxlciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi90eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcbmltcG9ydCB7IHRyaWdnZXJQWEludGVncmF0aW9uIH0gZnJvbSBcIi4vUFhGZWVkYmFja1wiO1xuXG50eXBlIFJlY2VudFR5cGUgPSB7XG5cdHRleHQ6IHN0cmluZztcblx0aXNGYXZvcml0ZTogYm9vbGVhbjtcbn07XG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29udHJvbHMuZWFzeUZpbHRlci5FYXN5RmlsdGVySW5wdXRcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lGaWx0ZXJJbnB1dCBleHRlbmRzIENvbnRyb2wge1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5tLklucHV0XCIsIG11bHRpcGxlOiBmYWxzZSwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdCRzZWFyY2hJbnB1dCE6IElucHV0O1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0YXBwSWQ/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJhcnJheVwiIH0pXG5cdHJlY29tbWVuZGVkVmFsdWVzPzogc3RyaW5nW107XG5cblx0QGV2ZW50KClcblx0cXVlcnlDaGFuZ2VkPzogRXZlbnRIYW5kbGVyPFVJNUV2ZW50PHsgcXVlcnk6IHN0cmluZyB9LCBFYXN5RmlsdGVySW5wdXQ+PjtcblxuXHRAZXZlbnQoKVxuXHRlbnRlclByZXNzZWQ/OiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8eyBxdWVyeTogc3RyaW5nIH0sIEVhc3lGaWx0ZXJJbnB1dD4+O1xuXG5cdEBldmVudCgpXG5cdGxpdmVDaGFuZ2U/OiBFdmVudEhhbmRsZXI7XG5cblx0cHJpdmF0ZSByZXNvdXJjZUJ1bmRsZSE6IFJlc291cmNlQnVuZGxlO1xuXG5cdHNoZWxsSGlzdG9yeVByb3ZpZGVyOiBTaGVsbEhpc3RvcnlQcm92aWRlciB8IHVuZGVmaW5lZDtcblxuXHRwb3BvdmVySW52aXNpYmxlTWVzc2FnZTogSW52aXNpYmxlTWVzc2FnZSB8IHVuZGVmaW5lZDtcblxuXHQkZmF2b3JpdGVQb3BvdmVyOiBQb3BvdmVyIHwgdW5kZWZpbmVkO1xuXG5cdHByaXZhdGUgZmF2b3JpdGVCdXR0b25DbGlja2VkID0gZmFsc2U7XG5cblx0QGRlZmluZVN0YXRlKClcblx0cHJvdGVjdGVkIHN0YXRlOiBTdGF0ZU9mPHtcblx0XHRxdWVyeUNoYW5nZWQ6IGJvb2xlYW47XG5cdFx0cmVjZW50UXVlcmllczogcmVhZG9ubHkgc3RyaW5nW107XG5cdFx0cmVjZW50UXVlcmllc1dpdEZhdm9yaXRlczogcmVhZG9ubHkgUmVjZW50VHlwZVtdO1xuXHRcdGlzSGlzdG9yeUVuYWJsZWQ6IGJvb2xlYW47XG5cdFx0ZmF2b3JpdGVRdWVyaWVzOiBzdHJpbmdbXTtcblx0XHRyZWNvbW1lbmRlZFF1ZXJpZXM6IHN0cmluZ1tdO1xuXHR9PiA9IHtcblx0XHRxdWVyeUNoYW5nZWQ6IGZhbHNlLFxuXHRcdGlzSGlzdG9yeUVuYWJsZWQ6IGZhbHNlLFxuXHRcdHJlY2VudFF1ZXJpZXM6IFtdLFxuXHRcdHJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXM6IFtdLFxuXHRcdGZhdm9yaXRlUXVlcmllczogW10gYXMgc3RyaW5nW10sXG5cdFx0cmVjb21tZW5kZWRRdWVyaWVzOiBbXSBhcyBzdHJpbmdbXVxuXHR9O1xuXG5cdGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6IHN0cmluZyB8ICgkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPEVhc3lGaWx0ZXJJbnB1dD4pLCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcGVydGllcyBhcyBzdHJpbmcsIG90aGVycyk7XG5cdFx0dGhpcy5pbml0aWFsaXplKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VmFsdWUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0VmFsdWUoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0hpc3RvcnlFbmFibGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnN0YXRlLmlzSGlzdG9yeUVuYWJsZWQudmFsdWVPZigpO1xuXHR9XG5cblx0c2V0VmFsdWUodmFsdWU6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlKHZhbHVlKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHNldFBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRQbGFjZWhvbGRlcih2YWx1ZSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0UGxhY2Vob2xkZXIoKTtcblx0fVxuXG5cdGluaXRpYWxpemUoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMgPSB0aGlzLnJlY29tbWVuZGVkVmFsdWVzID8/IFtdO1xuXHRcdHRoaXMucmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXHRcdHRoaXMucG9wb3ZlckludmlzaWJsZU1lc3NhZ2UgPSBJbnZpc2libGVNZXNzYWdlLmdldEluc3RhbmNlKCk7XG5cdFx0dGhpcy5jcmVhdGVJbnB1dCgpO1xuXHR9XG5cblx0c2V0QXNJbnZhbGlkKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlU3RhdGUoVmFsdWVTdGF0ZS5XYXJuaW5nKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRWYWx1ZVN0YXRlVGV4dChtZXNzYWdlKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5vcGVuVmFsdWVTdGF0ZU1lc3NhZ2UoKTtcblx0fVxuXG5cdHNldEFzVmFsaWQoKTogdm9pZCB7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuc2V0VmFsdWVTdGF0ZShWYWx1ZVN0YXRlLk5vbmUpO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LmNsb3NlVmFsdWVTdGF0ZU1lc3NhZ2UoKTtcblx0fVxuXG5cdGNyZWF0ZUlucHV0KCk6IHZvaWQge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0ID0gKFxuXHRcdFx0PElucHV0XG5cdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdHNob3dDbGVhckljb249e3RydWV9XG5cdFx0XHRcdGNoYW5nZT17KGUpOiB2b2lkID0+IHtcblx0XHRcdFx0XHR0aGlzLmZpcmVFdmVudChcInF1ZXJ5Q2hhbmdlZFwiLCB7IHF1ZXJ5OiBlLmdldFBhcmFtZXRlcihcInZhbHVlXCIpIH0pO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHRsaXZlQ2hhbmdlPXsoZTogSW5wdXQkTGl2ZUNoYW5nZUV2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0dGhpcy5zdGF0ZS5xdWVyeUNoYW5nZWQgPSB0cnVlO1xuXHRcdFx0XHRcdHRoaXMuZmlyZUV2ZW50KFwibGl2ZUNoYW5nZVwiKTtcblx0XHRcdFx0XHRpZiAoIWUuZ2V0U291cmNlKCkuZ2V0VmFsdWUoKSAmJiAhKHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uaXNPcGVuKCkgPz8gZmFsc2UpKSB7XG5cdFx0XHRcdFx0XHR0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoZS5nZXRQYXJhbWV0ZXIoXCJ2YWx1ZVwiKSA9PT0gXCJcIikge1xuXHRcdFx0XHRcdFx0dGhpcy5zZXRQbGFjZWhvbGRlcih0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKHRoaXMuJHNlYXJjaElucHV0LmdldFZhbHVlU3RhdGUoKSA9PT0gVmFsdWVTdGF0ZS5XYXJuaW5nKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnNldEFzVmFsaWQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH19XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpfVxuXHRcdFx0PjwvSW5wdXQ+XG5cdFx0KTtcblxuXHRcdGNvbnN0IGZhdm9yaXRlUG9wb3ZlciA9IHRoaXMuY3JlYXRlRmF2b3JpdGVQb3BvdmVyKCk7XG5cdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyID0gZmF2b3JpdGVQb3BvdmVyO1xuXG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuYWRkRGVwZW5kZW50KGZhdm9yaXRlUG9wb3Zlcik7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuYWRkRXZlbnREZWxlZ2F0ZSh7XG5cdFx0XHRvbmtleXVwOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuXHRcdFx0XHRpZiAoZS5rZXkgPT09IFwiRW50ZXJcIikge1xuXHRcdFx0XHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy4kZmF2b3JpdGVQb3BvdmVyICYmIHRoaXMuJHNlYXJjaElucHV0LmdldFZhbHVlKCkpIHtcblx0XHRcdFx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXIuY2xvc2UoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9ua2V5ZG93bjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGUua2V5ID09PSBcIlRhYlwiICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFZhbHVlKCkubGVuZ3RoID09PSAwICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFZhbHVlKCkgIT09IHRoaXMuJHNlYXJjaElucHV0Py5nZXRQbGFjZWhvbGRlcigpICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFBsYWNlaG9sZGVyKCkgIT09IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUExBQ0VIT0xERVJcIilcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZSh0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0UGxhY2Vob2xkZXIoKSk7XG5cdFx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJsaXZlQ2hhbmdlXCIpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGUua2V5ID09PSBcIkFycm93RG93blwiKSB7XG5cdFx0XHRcdFx0Y29uc3QgcG9wb3ZlckNvbmFpbmVyID0gdGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5nZXRDb250ZW50KClbMF07XG5cdFx0XHRcdFx0Y29uc3QgY29udGFpbmVySXRlbXMgPSAocG9wb3ZlckNvbmFpbmVyIGFzIEZsZXhCb3gpLmdldEl0ZW1zKCk7XG5cdFx0XHRcdFx0Y29udGFpbmVySXRlbXM/LmZpbmQoKGl0ZW0pID0+IGl0ZW0uaXNGb2N1c2FibGUoKSAmJiAoaXRlbS5mb2N1cygpLCB0cnVlKSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRvbnRhcDogYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRhd2FpdCB0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0fSxcblx0XHRcdG9uZm9jdXNpbjogYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRhd2FpdCB0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlci5hZGRFdmVudERlbGVnYXRlKHtcblx0XHRcdG9ua2V5ZG93bjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0VGV4dCA9IChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCk/Lm91dGVyVGV4dDtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0SWQgPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpPy5pZDtcblx0XHRcdFx0c3dpdGNoIChlLmtleSkge1xuXHRcdFx0XHRcdGNhc2UgXCJFbnRlclwiOlxuXHRcdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlKHRhcmdldFRleHQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkRlbGV0ZVwiOlxuXHRcdFx0XHRcdFx0aWYgKHRhcmdldElkPy5pbmNsdWRlcyhcImVhc3lGaWx0ZXJGYXZvcml0ZUl0ZW1cIikpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSB0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5maWx0ZXIoXG5cdFx0XHRcdFx0XHRcdFx0KGRhdGEpID0+IGRhdGEudG9Mb3dlckNhc2UoKSAhPT0gdGFyZ2V0VGV4dC50b0xvd2VyQ2FzZSgpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmlsdGVyKChxdWVyeSkgPT4gcXVlcnkgIT09IHRhcmdldFRleHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkVzY2FwZVwiOlxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uaXNPcGVuKCkpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9uQWZ0ZXJSZW5kZXJpbmc6ICgpID0+IHtcblx0XHRcdFx0dGhpcy5wb3BvdmVySW52aXNpYmxlTWVzc2FnZT8uYW5ub3VuY2UoXG5cdFx0XHRcdFx0dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiVF9FQVNZX0ZJTFRFUl9JTlBVVF9URVhUX0xJTktfUE9QT1ZFUl9BUklBXCIpLFxuXHRcdFx0XHRcdEludmlzaWJsZU1lc3NhZ2VNb2RlLkFzc2VydGl2ZVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBvcGVuU3VnZ2VzdGlvblBvcG92ZXIoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKCF0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0VmFsdWUoKSAmJiAoIXRoaXMuJGZhdm9yaXRlUG9wb3ZlciB8fCAhdGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5pc09wZW4oKSkpIHtcblx0XHRcdC8vIE9wZW4gdGhlIGVhc3kgZmlsdGVyIHBvcG92ZXJcblx0XHRcdHRoaXMuc3RhdGUuaXNIaXN0b3J5RW5hYmxlZCA9IHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LmlzSGlzdG9yeUVuYWJsZWQoKSA/PyBmYWxzZTtcblx0XHRcdHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzID0gKGF3YWl0IHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LmdldEZhdm9yaXRlUXVlcmllcygpKSA/PyBbXTtcblx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9IChhd2FpdCB0aGlzLnNoZWxsSGlzdG9yeVByb3ZpZGVyPy5nZXRSZWNlbnRRdWVyaWVzKCkpID8/IFtdO1xuXHRcdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5vcGVuQnkodGhpcy4kc2VhcmNoSW5wdXQpO1xuXHRcdH1cblx0fVxuXG5cdHJlcXVlc3RGYXZvcml0ZShlOiBCdXR0b24kUHJlc3NFdmVudCk6IHZvaWQge1xuXHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uY2xvc2UoKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUoZS5nZXRTb3VyY2UoKS5nZXRUZXh0KCkpO1xuXHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0fVxuXG5cdG9uRW50ZXJQcmVzc2VkKCk6IHZvaWQge1xuXHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uY2xvc2UoKTtcblx0XHR0aGlzLnN0YXRlLnF1ZXJ5Q2hhbmdlZCA9IGZhbHNlO1xuXHRcdGxldCBtYWdpY1F1ZXJ5ID0gdGhpcy4kc2VhcmNoSW5wdXQ/LmdldFZhbHVlKCk7XG5cdFx0aWYgKG1hZ2ljUXVlcnkgPT09IFwiXCIgJiYgdGhpcy4kc2VhcmNoSW5wdXQuZ2V0UGxhY2Vob2xkZXIoKSAhPT0gdGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QTEFDRUhPTERFUlwiKSkge1xuXHRcdFx0bWFnaWNRdWVyeSA9IHRoaXMuJHNlYXJjaElucHV0LmdldFBsYWNlaG9sZGVyKCk7XG5cdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUobWFnaWNRdWVyeSk7XG5cdFx0fVxuXHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZVN0YXRlVGV4dChcIlwiKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWVTdGF0ZShcIk5vbmVcIik7XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJlbnRlclByZXNzZWRcIiwgeyBxdWVyeTogbWFnaWNRdWVyeSB9KTtcblx0fVxuXG5cdGFkZFJlY2VudFF1ZXJ5KHF1ZXJ5U3RyaW5nOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcblx0XHQvLyBOb3JtYWxpemUgYmFja3NsYXNoZXMgYmVmb3JlIHN0b3Jpbmdcblx0XHRxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nPy5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXFxcXFxcIik7XG5cblx0XHRjb25zdCByZWNlbnRRdWVyeUluZGV4ID0gdGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLmZpbmRJbmRleCgocXVlcnkpID0+IHF1ZXJ5LnRvTG93ZXJDYXNlKCkgPT09IHF1ZXJ5U3RyaW5nPy50b0xvd2VyQ2FzZSgpKTtcblx0XHRpZiAocXVlcnlTdHJpbmcgJiYgcmVjZW50UXVlcnlJbmRleCA9PT0gLTEpIHtcblx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9IFtxdWVyeVN0cmluZ10uY29uY2F0KHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyk7XG5cdFx0XHRpZiAodGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLmxlbmd0aCA+IDUpIHtcblx0XHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzID0gdGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLnNsaWNlKDAsIDUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAocXVlcnlTdHJpbmcpIHtcblx0XHRcdGNvbnN0IHJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmlsdGVyKChxdWVyeSkgPT4gcXVlcnkudG9Mb3dlckNhc2UoKSAhPT0gcXVlcnlTdHJpbmc/LnRvTG93ZXJDYXNlKCkpO1xuXHRcdFx0cmVjZW50UXVlcmllcy51bnNoaWZ0KHF1ZXJ5U3RyaW5nKTtcblx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9IHJlY2VudFF1ZXJpZXM7XG5cdFx0fVxuXHR9XG5cblx0b25TdGF0ZUNoYW5nZShjaGFuZ2VkUHJvcHM6IHN0cmluZ1tdID0gW10pOiB2b2lkIHtcblx0XHRpZiAoY2hhbmdlZFByb3BzLmluY2x1ZGVzKFwiZmF2b3JpdGVRdWVyaWVzXCIpIHx8IGNoYW5nZWRQcm9wcy5pbmNsdWRlcyhcInJlY2VudFF1ZXJpZXNcIikpIHtcblx0XHRcdHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LnNldEZhdm9yaXRlUXVlcmllcyh0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcyk7XG5cdFx0XHR0aGlzLnNoZWxsSGlzdG9yeVByb3ZpZGVyPy5zZXRSZWNlbnRRdWVyaWVzKHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5tYXAoKHF1ZXJ5KSA9PiBxdWVyeSkpO1xuXHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzV2l0RmF2b3JpdGVzID0gdGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLm1hcCgocmVjZW50UXVlcnkpID0+IHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHR0ZXh0OiByZWNlbnRRdWVyeSxcblx0XHRcdFx0XHRpc0Zhdm9yaXRlOiAhIXRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmZpbmQoKGZhdm9yaXRlUXVlcnkpID0+IGZhdm9yaXRlUXVlcnkgPT09IHJlY2VudFF1ZXJ5KVxuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgaW5pdFNoZWxsSGlzdG9yeVByb3ZpZGVyKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHR0aGlzLnNoZWxsSGlzdG9yeVByb3ZpZGVyID0gYXdhaXQgU2hlbGxIaXN0b3J5UHJvdmlkZXIuZ2V0SW5zdGFuY2UodGhpcy5hcHBJZCA/PyBcIjx1bmtub3duQXBwPlwiKTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgY3JlYXRpbmcgU2hlbGxIaXN0b3J5UHJvdmlkZXIgZm9yIGVhc3kgZmlsdGVyXCIsIGVycm9yIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0Y3JlYXRlRmF2b3JpdGVQb3BvdmVyKCk6IFBvcG92ZXIge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8UG9wb3ZlclxuXHRcdFx0XHRpZD17dGhpcy5nZXRJZCgpICsgXCItZmF2b3JpdGVQb3BvdmVyXCJ9XG5cdFx0XHRcdHNob3dIZWFkZXI9e2ZhbHNlfVxuXHRcdFx0XHRob3Jpem9udGFsU2Nyb2xsaW5nPXtmYWxzZX1cblx0XHRcdFx0cGxhY2VtZW50PXtQbGFjZW1lbnRUeXBlLkJvdHRvbX1cblx0XHRcdFx0c2hvd0Fycm93PXtmYWxzZX1cblx0XHRcdFx0aW5pdGlhbEZvY3VzPXt0aGlzLiRzZWFyY2hJbnB1dH1cblx0XHRcdFx0Y2xhc3M9e1wic2FwRkVDb250cm9sc1BvcG92ZXJcIn1cblx0XHRcdFx0dmlzaWJsZT17dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMubGVuZ3RoID4gMCB8fCBlcXVhbChiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJpc0hpc3RvcnlFbmFibGVkXCIpLCB0cnVlKX1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjb250ZW50OiAoXG5cdFx0XHRcdFx0XHQ8RmxleEJveCBkaXJlY3Rpb249e0ZsZXhEaXJlY3Rpb24uQ29sdW1ufSBjbGFzcz17XCJzYXBVaUNvbnRlbnRQYWRkaW5nXCJ9IHJlbmRlclR5cGU9e1wiQmFyZVwifT5cblx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRpdGVtczogW1xuXHRcdFx0XHRcdFx0XHRcdFx0PFRpdGxlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlU3R5bGU9e1RpdGxlTGV2ZWwuSDZ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9TVUdHRVNUSU9OU19USVRMRVwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwRmVDb250cm9sc1RpdGxlQm9yZGVyXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e3RoaXMuc3RhdGUucmVjb21tZW5kZWRRdWVyaWVzLmxlbmd0aCA+IDB9XG5cdFx0XHRcdFx0XHRcdFx0XHQvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxIQm94XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpQ29udGVudFBhZGRpbmdcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcInJlY29tbWVuZGVkUXVlcmllc1wiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0d3JhcD17RmxleFdyYXAuV3JhcH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMubGVuZ3RoID4gMH1cblx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtczogKGlkOiBzdHJpbmcsIGN0eDogQ29udGV4dCk6IFN0YW5kYXJkTGlzdEl0ZW0gPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpVGlueU1hcmdpbkVuZFwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e2N0eC5nZXRPYmplY3QoKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17dGhpcy5yZXF1ZXN0RmF2b3JpdGUuYmluZCh0aGlzKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PC9IQm94Pixcblx0XHRcdFx0XHRcdFx0XHRcdDxUaXRsZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZD17dGhpcy5nZXRJZCgpICsgXCItZWFzeUZpbHRlckZhdm9yaXRlVGl0bGVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGVTdHlsZT17VGl0bGVMZXZlbC5INn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0ZBVk9SSVRFX1RJVExFXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBGZUNvbnRyb2xzVGl0bGVCb3JkZXJcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17ZXF1YWwoYmluZFN0YXRlKHRoaXMuc3RhdGUsIFwiaXNIaXN0b3J5RW5hYmxlZFwiKSwgdHJ1ZSl9XG5cdFx0XHRcdFx0XHRcdFx0XHQvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxMaXN0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zPXtiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJmYXZvcml0ZVF1ZXJpZXNcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e2VxdWFsKGJpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImlzSGlzdG9yeUVuYWJsZWRcIiksIHRydWUpfVxuXHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5vRGF0YTogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PElsbHVzdHJhdGVkTWVzc2FnZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZT17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0VNUFRZX0ZBVk9SSVRFX1RJVExFXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpbGx1c3RyYXRpb25TaXplPXtJbGx1c3RyYXRlZE1lc3NhZ2VTaXplLkV4dHJhU21hbGx9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlsbHVzdHJhdGlvblR5cGU9e0lsbHVzdHJhdGVkTWVzc2FnZVR5cGUuTm9FbnRyaWVzfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbj17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0VNUFRZX0ZBVk9SSVRFX0RFU0NSSVBUSU9OXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtczogKGlkOiBzdHJpbmcsIGN0eDogQ29udGV4dCk6IFN0YW5kYXJkTGlzdEl0ZW0gPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbUxpc3RJdGVtXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e2lkICsgXCItZWFzeUZpbHRlckZhdm9yaXRlSXRlbVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpU21hbGxNYXJnaW5CZWdpblwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbaWQgKyBcIi1lYXN5RmlsdGVyRmF2b3JpdGVUaXRsZVwiXX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdXN0b21EYXRhPXtbPEN1c3RvbURhdGEga2V5PXtcInRleHRcIn0gdmFsdWU9e2N0eC5nZXRPYmplY3QoKX0gLz5dfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRWYWx1ZShjdHguZ2V0T2JqZWN0KCkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8RmxleEJveFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0d2lkdGg9e1wiMTAwJVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlyZWN0aW9uPXtGbGV4RGlyZWN0aW9uLlJvd31cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFsaWduSXRlbXM9e0ZsZXhBbGlnbkl0ZW1zLkNlbnRlcn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGp1c3RpZnlDb250ZW50PXtGbGV4SnVzdGlmeUNvbnRlbnQuU3BhY2VCZXR3ZWVufVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVuZGVyVHlwZT17XCJCYXJlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZD17aWR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PFRleHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17Y3R4LmdldE9iamVjdCgpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwPXtjdHguZ2V0T2JqZWN0KCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdyYXBwaW5nPXtmYWxzZX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBGRUNvbnRyb2xzUG9pbnRlclwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PC9UZXh0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpY29uPXtcInNhcC1pY29uOi8vZmF2b3JpdGVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9GSUxMRURfU1RBUlwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1t0aGlzLmdldElkKCkgKyBcIi1lYXN5RmlsdGVyRmF2b3JpdGVJdGVtXCJdfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlPXtCdXR0b25UeXBlLlRyYW5zcGFyZW50fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vUmV0YWluaW5nIHRoZSBmb2N1cyBvbiBwb3BvdmVyIGRvZXNuJ3QgbWFrZSB0aGUgcG9wb3ZlciBjbG9zZSBvbiBldmVyeSBpbnRlcmFjdGlvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uZm9jdXMoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBxdWVyeVN0cmluZyA9IGN0eC5nZXRPYmplY3QoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBpbmRleCA9IHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmluZGV4T2YocXVlcnlTdHJpbmcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChpbmRleCAhPT0gLTEpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzID0gdGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMuZmlsdGVyKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocXVlcnkpID0+IHF1ZXJ5ICE9PSBxdWVyeVN0cmluZ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5mYXZvcml0ZUJ1dHRvbkNsaWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlcGVuZGVudHM6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8RXZlbnREZWxlZ2F0ZUhvb2tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRhcD17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXRoaXMuZmF2b3JpdGVCdXR0b25DbGlja2VkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJpZ2dlclBYSW50ZWdyYXRpb24oXCJmYXZvcml0ZVwiKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkucmVwbGFjZSgvXFxcXFxcXFwvZywgXCJcXFxcXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLm9uRW50ZXJQcmVzc2VkKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5mYXZvcml0ZUJ1dHRvbkNsaWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvQ3VzdG9tTGlzdEl0ZW0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdDwvTGlzdD4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8VGl0bGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e3RoaXMuZ2V0SWQoKSArIFwiLWVhc3lGaWx0ZXJMYXN0VXNlZFRpdGxlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlU3R5bGU9e1RpdGxlTGV2ZWwuSDZ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9MQVNUX1VTRURcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcEZlQ29udHJvbHNUaXRsZUJvcmRlclwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXtlcXVhbChiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJpc0hpc3RvcnlFbmFibGVkXCIpLCB0cnVlKX1cblx0XHRcdFx0XHRcdFx0XHRcdC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PExpc3Rcblx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcInJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXNcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e2VxdWFsKGJpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImlzSGlzdG9yeUVuYWJsZWRcIiksIHRydWUpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRtb2RlPXtMaXN0TW9kZS5EZWxldGV9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbdGhpcy5nZXRJZCgpICsgXCItZWFzeUZpbHRlckxhc3RVc2VkVGl0bGVcIl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRlbGV0ZT17KGU6IExpc3RCYXNlJERlbGV0ZUV2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgaXRlbSA9IGUuZ2V0UGFyYW1ldGVyKFwibGlzdEl0ZW1cIikgYXMgQ3VzdG9tTGlzdEl0ZW07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbS5mb2N1cygpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IHF1ZXJ5U3RyaW5nID0gZS5nZXRQYXJhbWV0ZXIoXCJsaXN0SXRlbVwiKT8uZGF0YShcInRleHRcIik7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXF1ZXJ5U3RyaW5nKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gTm9ybWFsaXplIGJhY2tzbGFzaGVzIGJlZm9yZSBjb21wYXJpbmdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nPy5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXFxcXFxcIik7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmlsdGVyKChxdWVyeSkgPT4gcXVlcnkgIT09IHF1ZXJ5U3RyaW5nKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRub0RhdGE6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxJbGx1c3RyYXRlZE1lc3NhZ2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9FTVBUWV9MQVNUX1VTRURfVElUTEVcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlsbHVzdHJhdGlvblNpemU9e0lsbHVzdHJhdGVkTWVzc2FnZVNpemUuRXh0cmFTbWFsbH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uVHlwZT17SWxsdXN0cmF0ZWRNZXNzYWdlVHlwZS5Ob0VudHJpZXN9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfRU1QVFlfUkVDRU5UX0RFU0NSSVBUSU9OXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtczogKGlkOiBzdHJpbmcsIGN0eDogQ29udGV4dCk6IEZsZXhCb3ggPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbUxpc3RJdGVtXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e2lkICsgXCItZWFzeUZpbHRlckxhc3RVc2VkSXRlbVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUoY3R4LmdldE9iamVjdCgpLnRleHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpbkJlZ2luXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y3VzdG9tRGF0YT17WzxDdXN0b21EYXRhIGtleT17XCJ0ZXh0XCJ9IHZhbHVlPXtjdHguZ2V0T2JqZWN0KCkudGV4dH0gLz5dfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbaWQgKyBcIi1lYXN5RmlsdGVyTGFzdFVzZWRUaXRsZVwiXX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxGbGV4Qm94XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aWR0aD17XCIxMDAlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaXJlY3Rpb249e0ZsZXhEaXJlY3Rpb24uUm93fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YWxpZ25JdGVtcz17RmxleEFsaWduSXRlbXMuQ2VudGVyfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ9e0ZsZXhKdXN0aWZ5Q29udGVudC5TcGFjZUJldHdlZW59XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZW5kZXJUeXBlPXtcIkJhcmVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlkPXtpZH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8VGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXtjdHguZ2V0T2JqZWN0KCkudGV4dH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcD17Y3R4LmdldE9iamVjdCgpLnRleHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdyYXBwaW5nPXtmYWxzZX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBGRUNvbnRyb2xzUG9pbnRlclwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PC9UZXh0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpY29uPXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkuaXNGYXZvcml0ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyBcInNhcC1pY29uOi8vZmF2b3JpdGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBcInNhcC1pY29uOi8vYWRkLWZhdm9yaXRlXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwPXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkuaXNGYXZvcml0ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyB0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX0ZJTExFRF9TVEFSXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfRU1QVFlfU1RBUlRcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbmFibGVkPXtsZXNzVGhhbihcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsZW5ndGgoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRiaW5kU3RhdGUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiZmF2b3JpdGVRdWVyaWVzXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkgYXMgUGF0aEluTW9kZWxFeHByZXNzaW9uPHVua25vd24+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ1XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9e0J1dHRvblR5cGUuVHJhbnNwYXJlbnR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbaWQgKyBcIi1lYXN5RmlsdGVyTGFzdFVzZWRJdGVtXCJdfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZmF2b3JpdGVCdXR0b25DbGlja2VkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvL1JldGFpbmluZyB0aGUgZm9jdXMgb24gcG9wb3ZlciBkb2Vzbid0IG1ha2UgdGhlIHBvcG92ZXIgY2xvc2Ugb24gZXZlcnkgaW50ZXJhY3Rpb25cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXI/LmZvY3VzKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgcXVlcnlTdHJpbmcgPSBjdHguZ2V0T2JqZWN0KCkudGV4dDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBpc0Zhdm9yaXRlID0gY3R4LmdldE9iamVjdCgpLmlzRmF2b3JpdGU7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoaXNGYXZvcml0ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5yZW1vdmVGcm9tRmF2b3JpdGVzKHF1ZXJ5U3RyaW5nKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5hZGRUb0Zhdm9yaXRlcyhxdWVyeVN0cmluZyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlcGVuZGVudHM6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8RXZlbnREZWxlZ2F0ZUhvb2tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRhcD17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBzaG91bGQgbm90IGJlIGV4ZWN1dGVkIHdoZW4gY2xpY2tpbmcgb24gYWRkIGZhdm9yaXRlIGJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXRoaXMuZmF2b3JpdGVCdXR0b25DbGlja2VkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y3R4LmdldE9iamVjdCgpLnRleHQucmVwbGFjZSgvXFxcXFxcXFwvZywgXCJcXFxcXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cmlnZ2VyUFhJbnRlZ3JhdGlvbihcInJlY2VudFwiKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLm9uRW50ZXJQcmVzc2VkKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5mYXZvcml0ZUJ1dHRvbkNsaWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvQ3VzdG9tTGlzdEl0ZW0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdDwvTGlzdD5cblx0XHRcdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0KVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9Qb3BvdmVyPlxuXHRcdCkgYXMgUG9wb3Zlcjtcblx0fVxuXG5cdHByaXZhdGUgcmVtb3ZlRnJvbUZhdm9yaXRlcyhxdWVyeTogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSB0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5maWx0ZXIoKGRhdGEpID0+IGRhdGEudG9Mb3dlckNhc2UoKSAhPT0gcXVlcnkudG9Mb3dlckNhc2UoKSk7XG5cdH1cblxuXHRwcml2YXRlIGFkZFRvRmF2b3JpdGVzKHF1ZXJ5OiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCBuZXdGYXZvcml0ZSA9IFtxdWVyeV0uY29uY2F0KHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmNvbmNhdCgpKTtcblx0XHRpZiAobmV3RmF2b3JpdGUubGVuZ3RoID4gNSkge1xuXHRcdFx0bmV3RmF2b3JpdGUucG9wKCk7XG5cdFx0fVxuXHRcdHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzID0gbmV3RmF2b3JpdGU7XG5cdH1cblxuXHRzdGF0aWMgcmVuZGVyKHJtOiBSZW5kZXJNYW5hZ2VyLCBjb250cm9sOiBFYXN5RmlsdGVySW5wdXQpOiB2b2lkIHtcblx0XHRyZXR1cm4ganN4LnJlbmRlclVzaW5nUmVuZGVyTWFuYWdlcihybSwgY29udHJvbCwgKCkgPT4ge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PHNwYW4gcmVmPXtjb250cm9sfSBjbGFzcz17XCJzYXBGRUVhc3lGaWx0ZXJJbnB1dFwifT5cblx0XHRcdFx0XHR7Y29udHJvbC4kc2VhcmNoSW5wdXR9XG5cdFx0XHRcdDwvc3Bhbj5cblx0XHRcdCk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQTBDcUJBLGVBQWUsSUFBQUMsSUFBQSxHQURuQ0MsY0FBYyxDQUFDLDRDQUE0QyxDQUFDLEVBQUFDLEtBQUEsR0FFM0RDLFdBQVcsQ0FBQztJQUFFQyxJQUFJLEVBQUUsYUFBYTtJQUFFQyxRQUFRLEVBQUUsS0FBSztJQUFFQyxTQUFTLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUd0RUMsUUFBUSxDQUFDO0lBQUVKLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBSyxLQUFBLEdBRzVCRCxRQUFRLENBQUM7SUFBRUosSUFBSSxFQUFFO0VBQVEsQ0FBQyxDQUFDLEVBQUFNLEtBQUEsR0FHM0JDLEtBQUssQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHUEQsS0FBSyxDQUFDLENBQUMsRUFBQUUsS0FBQSxHQUdQRixLQUFLLENBQUMsQ0FBQyxFQUFBRyxLQUFBLEdBYVBDLFdBQVcsQ0FBQyxDQUFDLEVBQUFmLElBQUEsQ0FBQWdCLE1BQUEsSUFBQUMsT0FBQSwwQkFBQUMsUUFBQTtJQWlCZCxTQUFBbkIsZ0JBQVlvQixVQUF1RSxFQUFFQyxNQUF5QixFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUMvR0EsS0FBQSxHQUFBSCxRQUFBLENBQUFJLElBQUEsT0FBTUgsVUFBVSxFQUFZQyxNQUFNLENBQUM7TUFBQ0csMEJBQUEsQ0FBQUYsS0FBQSxrQkFBQUcsV0FBQSxFQUFBSCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsV0FBQUksWUFBQSxFQUFBSixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsdUJBQUFLLFlBQUEsRUFBQUwsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLGtCQUFBTSxZQUFBLEVBQUFOLEtBQUE7TUFBQUUsMEJB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
@@ -67,7 +67,7 @@ export default class EasyFilterInput extends Control {
67
67
 
68
68
  $favoritePopover: Popover | undefined;
69
69
 
70
- private addFavoriteButtonClicked = false;
70
+ private favoriteButtonClicked = false;
71
71
 
72
72
  @defineState()
73
73
  protected state: StateOf<{
@@ -396,18 +396,21 @@ export default class EasyFilterInput extends Control {
396
396
  (query) => query !== queryString
397
397
  );
398
398
  }
399
+ this.favoriteButtonClicked = true;
399
400
  }}
400
401
  />
401
402
  {{
402
403
  dependents: (
403
404
  <EventDelegateHook
404
405
  tap={(): void => {
405
- triggerPXIntegration("favorite");
406
- this.$searchInput?.setValue(
407
- ctx.getObject().replace(/\\\\/g, "\\")
408
- );
409
- this.onEnterPressed();
410
- this.addFavoriteButtonClicked = false;
406
+ if (!this.favoriteButtonClicked) {
407
+ triggerPXIntegration("favorite");
408
+ this.$searchInput?.setValue(
409
+ ctx.getObject().replace(/\\\\/g, "\\")
410
+ );
411
+ this.onEnterPressed();
412
+ }
413
+ this.favoriteButtonClicked = false;
411
414
  }}
412
415
  />
413
416
  )
@@ -429,6 +432,7 @@ export default class EasyFilterInput extends Control {
429
432
  items={bindState(this.state, "recentQueriesWitFavorites")}
430
433
  visible={equal(bindState(this.state, "isHistoryEnabled"), true)}
431
434
  mode={ListMode.Delete}
435
+ ariaLabelledBy={[this.getId() + "-easyFilterLastUsedTitle"]}
432
436
  delete={(e: ListBase$DeleteEvent): void => {
433
437
  const item = e.getParameter("listItem") as CustomListItem;
434
438
  item.focus();
@@ -502,7 +506,7 @@ export default class EasyFilterInput extends Control {
502
506
  type={ButtonType.Transparent}
503
507
  ariaLabelledBy={[id + "-easyFilterLastUsedItem"]}
504
508
  press={(): void => {
505
- this.addFavoriteButtonClicked = true;
509
+ this.favoriteButtonClicked = true;
506
510
  //Retaining the focus on popover doesn't make the popover close on every interaction
507
511
  this.$favoritePopover?.focus();
508
512
  const queryString = ctx.getObject().text;
@@ -520,14 +524,14 @@ export default class EasyFilterInput extends Control {
520
524
  <EventDelegateHook
521
525
  tap={(): void => {
522
526
  // should not be executed when clicking on add favorite button
523
- if (!this.addFavoriteButtonClicked) {
527
+ if (!this.favoriteButtonClicked) {
524
528
  this.$searchInput?.setValue(
525
529
  ctx.getObject().text.replace(/\\\\/g, "\\")
526
530
  );
527
531
  triggerPXIntegration("recent");
528
532
  this.onEnterPressed();
529
533
  }
530
- this.addFavoriteButtonClicked = false;
534
+ this.favoriteButtonClicked = false;
531
535
  }}
532
536
  />
533
537
  )
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2025 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2026 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/ui/core/Lib", "sap/ui/model/FilterOperator"], function (Lib, FilterOperator) {
6
6
  "use strict";
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2025 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2026 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/ui/core/EventBus"], function (EventBus) {
6
6
  "use strict";
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2025 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2026 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/base/Log", "sap/base/util/uid", "sap/fe/base/ClassSupport", "sap/m/CheckBox", "sap/m/Title", "sap/m/VBox", "sap/ui/base/ManagedObject", "sap/ui/core/Lib", "sap/fe/base/jsx-runtime/jsx", "sap/fe/base/jsx-runtime/jsxs"], function (Log, uid, ClassSupport, CheckBox, Title, VBox, ManagedObject, Lib, _jsx, _jsxs) {
6
6
  "use strict";