obsidian-typings 4.111.0 → 5.2.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.
@@ -30,12 +30,136 @@ __export(index_exports, {
30
30
  ViewType: () => ViewType,
31
31
  createTFileInstance: () => createTFileInstance,
32
32
  createTFolderInstance: () => createTFolderInstance,
33
+ getAbstractTextComponentConstructor: () => getAbstractTextComponentConstructor,
34
+ getAllPropertiesViewConstructor: () => getAllPropertiesViewConstructor,
33
35
  getAppConstructor: () => getAppConstructor,
36
+ getAppMenuBarManagerConstructor: () => getAppMenuBarManagerConstructor,
37
+ getAppSettingConstructor: () => getAppSettingConstructor,
38
+ getAudioViewConstructor: () => getAudioViewConstructor,
39
+ getBacklinkViewConstructor: () => getBacklinkViewConstructor,
40
+ getBaseComponentConstructor: () => getBaseComponentConstructor,
41
+ getBasesEntryConstructor: () => getBasesEntryConstructor,
42
+ getBasesEntryGroupConstructor: () => getBasesEntryGroupConstructor,
43
+ getBasesQueryResultConstructor: () => getBasesQueryResultConstructor,
44
+ getBasesViewConfigConstructor: () => getBasesViewConfigConstructor,
45
+ getBasesViewConstructor: () => getBasesViewConstructor,
46
+ getBookmarksViewConstructor: () => getBookmarksViewConstructor,
47
+ getBooleanValueConstructor: () => getBooleanValueConstructor,
48
+ getButtonComponentConstructor: () => getButtonComponentConstructor,
49
+ getCanvasViewConstructor: () => getCanvasViewConstructor,
50
+ getCapacitorAdapterConstructor: () => getCapacitorAdapterConstructor,
51
+ getCliConstructor: () => getCliConstructor,
52
+ getColorComponentConstructor: () => getColorComponentConstructor,
53
+ getCommandsConstructor: () => getCommandsConstructor,
54
+ getComponentConstructor: () => getComponentConstructor,
55
+ getCustomCSSConstructor: () => getCustomCSSConstructor,
56
+ getDateValueConstructor: () => getDateValueConstructor,
57
+ getDragManagerConstructor: () => getDragManagerConstructor,
58
+ getDropdownComponentConstructor: () => getDropdownComponentConstructor,
59
+ getDurationValueConstructor: () => getDurationValueConstructor,
60
+ getEditableFileViewConstructor: () => getEditableFileViewConstructor,
61
+ getEditorConstructor: () => getEditorConstructor,
62
+ getEditorSuggestsConstructor: () => getEditorSuggestsConstructor,
63
+ getEmbedRegistryConstructor: () => getEmbedRegistryConstructor,
64
+ getEmptyViewConstructor: () => getEmptyViewConstructor,
65
+ getEventsConstructor: () => getEventsConstructor,
66
+ getExtraButtonComponentConstructor: () => getExtraButtonComponentConstructor,
67
+ getFileExplorerViewConstructor: () => getFileExplorerViewConstructor,
68
+ getFileManagerConstructor: () => getFileManagerConstructor,
69
+ getFilePropertiesViewConstructor: () => getFilePropertiesViewConstructor,
70
+ getFileSystemAdapterConstructor: () => getFileSystemAdapterConstructor,
71
+ getFileValueConstructor: () => getFileValueConstructor,
72
+ getFoldManagerConstructor: () => getFoldManagerConstructor,
73
+ getFrameDomConstructor: () => getFrameDomConstructor,
74
+ getFuzzySuggestModalConstructor: () => getFuzzySuggestModalConstructor,
75
+ getGraphViewConstructor: () => getGraphViewConstructor,
76
+ getHTMLValueConstructor: () => getHTMLValueConstructor,
77
+ getHotkeyManagerConstructor: () => getHotkeyManagerConstructor,
78
+ getHoverPopoverConstructor: () => getHoverPopoverConstructor,
79
+ getIconValueConstructor: () => getIconValueConstructor,
80
+ getImageValueConstructor: () => getImageValueConstructor,
81
+ getImageViewConstructor: () => getImageViewConstructor,
34
82
  getInternalPluginConstructor: () => getInternalPluginConstructor,
35
83
  getInternalPluginsConstructor: () => getInternalPluginsConstructor,
84
+ getKeymapConstructor: () => getKeymapConstructor,
85
+ getLinkValueConstructor: () => getLinkValueConstructor,
86
+ getListValueConstructor: () => getListValueConstructor,
87
+ getLocalGraphViewConstructor: () => getLocalGraphViewConstructor,
88
+ getMarkdownPreviewRendererConstructor: () => getMarkdownPreviewRendererConstructor,
89
+ getMarkdownPreviewViewConstructor: () => getMarkdownPreviewViewConstructor,
90
+ getMarkdownRenderChildConstructor: () => getMarkdownRenderChildConstructor,
91
+ getMarkdownRendererConstructor: () => getMarkdownRendererConstructor,
92
+ getMarkdownViewConstructor: () => getMarkdownViewConstructor,
93
+ getMenuConstructor: () => getMenuConstructor,
94
+ getMenuItemConstructor: () => getMenuItemConstructor,
95
+ getMenuSeparatorConstructor: () => getMenuSeparatorConstructor,
96
+ getMetadataCacheConstructor: () => getMetadataCacheConstructor,
97
+ getMetadataTypeManagerConstructor: () => getMetadataTypeManagerConstructor,
98
+ getModalConstructor: () => getModalConstructor,
99
+ getMomentFormatComponentConstructor: () => getMomentFormatComponentConstructor,
100
+ getNotNullValueConstructor: () => getNotNullValueConstructor,
101
+ getNoticeConstructor: () => getNoticeConstructor,
102
+ getNullValueConstructor: () => getNullValueConstructor,
103
+ getNumberValueConstructor: () => getNumberValueConstructor,
104
+ getObjectValueConstructor: () => getObjectValueConstructor,
105
+ getObsidianDOMConstructor: () => getObsidianDOMConstructor,
106
+ getOutgoingLinkViewConstructor: () => getOutgoingLinkViewConstructor,
107
+ getOutlineViewConstructor: () => getOutlineViewConstructor,
108
+ getPdfViewConstructor: () => getPdfViewConstructor,
109
+ getPluginsConstructor: () => getPluginsConstructor,
110
+ getProgressBarComponentConstructor: () => getProgressBarComponentConstructor,
111
+ getQueryControllerConstructor: () => getQueryControllerConstructor,
112
+ getRecentFileTrackerConstructor: () => getRecentFileTrackerConstructor,
113
+ getRegExpValueConstructor: () => getRegExpValueConstructor,
114
+ getRelativeDateValueConstructor: () => getRelativeDateValueConstructor,
115
+ getReleaseNotesViewConstructor: () => getReleaseNotesViewConstructor,
116
+ getRenderContextConstructor: () => getRenderContextConstructor,
117
+ getScopeConstructor: () => getScopeConstructor,
118
+ getSearchComponentConstructor: () => getSearchComponentConstructor,
119
+ getSearchViewConstructor: () => getSearchViewConstructor,
120
+ getSecretComponentConstructor: () => getSecretComponentConstructor,
121
+ getSecretStorageConstructor: () => getSecretStorageConstructor,
122
+ getSettingConstructor: () => getSettingConstructor,
123
+ getSettingGroupConstructor: () => getSettingGroupConstructor,
124
+ getSettingTabConstructor: () => getSettingTabConstructor,
125
+ getShareReceiverConstructor: () => getShareReceiverConstructor,
126
+ getSliderComponentConstructor: () => getSliderComponentConstructor,
127
+ getStatusBarConstructor: () => getStatusBarConstructor,
128
+ getStringValueConstructor: () => getStringValueConstructor,
129
+ getSyncViewConstructor: () => getSyncViewConstructor,
130
+ getTAbstractFileConstructor: () => getTAbstractFileConstructor,
36
131
  getTFileConstructor: () => getTFileConstructor,
37
132
  getTFolderConstructor: () => getTFolderConstructor,
133
+ getTableViewConstructor: () => getTableViewConstructor,
134
+ getTagValueConstructor: () => getTagValueConstructor,
135
+ getTagViewConstructor: () => getTagViewConstructor,
136
+ getTasksConstructor: () => getTasksConstructor,
137
+ getTextAreaComponentConstructor: () => getTextAreaComponentConstructor,
138
+ getTextComponentConstructor: () => getTextComponentConstructor,
139
+ getToggleComponentConstructor: () => getToggleComponentConstructor,
140
+ getUrlValueConstructor: () => getUrlValueConstructor,
141
+ getValueComponentConstructor: () => getValueComponentConstructor,
142
+ getValueConstructor: () => getValueConstructor,
143
+ getVaultConstructor: () => getVaultConstructor,
144
+ getVideoViewConstructor: () => getVideoViewConstructor,
38
145
  getViewConstructorByViewType: () => getViewConstructorByViewType,
146
+ getViewRegistryConstructor: () => getViewRegistryConstructor,
147
+ getWebviewerHistoryViewConstructor: () => getWebviewerHistoryViewConstructor,
148
+ getWebviewerViewConstructor: () => getWebviewerViewConstructor,
149
+ getWorkspaceConstructor: () => getWorkspaceConstructor,
150
+ getWorkspaceContainerConstructor: () => getWorkspaceContainerConstructor,
151
+ getWorkspaceFloatingConstructor: () => getWorkspaceFloatingConstructor,
152
+ getWorkspaceItemConstructor: () => getWorkspaceItemConstructor,
153
+ getWorkspaceLeafConstructor: () => getWorkspaceLeafConstructor,
154
+ getWorkspaceLeafHistoryConstructor: () => getWorkspaceLeafHistoryConstructor,
155
+ getWorkspaceMobileDrawerConstructor: () => getWorkspaceMobileDrawerConstructor,
156
+ getWorkspaceParentConstructor: () => getWorkspaceParentConstructor,
157
+ getWorkspaceRibbonConstructor: () => getWorkspaceRibbonConstructor,
158
+ getWorkspaceRootConstructor: () => getWorkspaceRootConstructor,
159
+ getWorkspaceSidedockConstructor: () => getWorkspaceSidedockConstructor,
160
+ getWorkspaceSplitConstructor: () => getWorkspaceSplitConstructor,
161
+ getWorkspaceTabsConstructor: () => getWorkspaceTabsConstructor,
162
+ getWorkspaceWindowConstructor: () => getWorkspaceWindowConstructor,
39
163
  isEmbedCache: () => isEmbedCache,
40
164
  isFrontmatterLinkCache: () => isFrontmatterLinkCache,
41
165
  isLinkCache: () => isLinkCache,
@@ -47,9 +171,15 @@ __export(index_exports, {
47
171
  });
48
172
  module.exports = __toCommonJS(index_exports);
49
173
 
50
- // src/obsidian/implementations/Classes/CustomArrayDictImpl.ts
174
+ // src/obsidian/implementations/classes/CustomArrayDictImpl.ts
51
175
  var CustomArrayDictImpl = class {
176
+ /**
177
+ * @todo Documentation incomplete.
178
+ */
52
179
  data = /* @__PURE__ */ new Map();
180
+ /**
181
+ * @todo Documentation incomplete.
182
+ */
53
183
  add(key, value) {
54
184
  let values = this.get(key);
55
185
  if (!values) {
@@ -60,31 +190,27 @@ var CustomArrayDictImpl = class {
60
190
  values.push(value);
61
191
  }
62
192
  }
63
- remove(key, value) {
64
- const values = this.get(key);
65
- if (!values) {
66
- return;
67
- }
68
- values.remove(value);
69
- if (values.length === 0) {
70
- this.clear(key);
71
- }
72
- }
73
- get(key) {
74
- return this.data.get(key) || null;
75
- }
76
- keys() {
77
- return Array.from(this.data.keys());
78
- }
193
+ /**
194
+ * @todo Documentation incomplete.
195
+ */
79
196
  clear(key) {
80
197
  this.data.delete(key);
81
198
  }
199
+ /**
200
+ * @todo Documentation incomplete.
201
+ */
82
202
  clearAll() {
83
203
  this.data.clear();
84
204
  }
205
+ /**
206
+ * @todo Documentation incomplete.
207
+ */
85
208
  contains(key, value) {
86
209
  return !!this.get(key)?.contains(value);
87
210
  }
211
+ /**
212
+ * @todo Documentation incomplete.
213
+ */
88
214
  count() {
89
215
  let ans = 0;
90
216
  for (const key of this.keys()) {
@@ -92,9 +218,34 @@ var CustomArrayDictImpl = class {
92
218
  }
93
219
  return ans;
94
220
  }
221
+ /**
222
+ * @todo Documentation incomplete.
223
+ */
224
+ get(key) {
225
+ return this.data.get(key) || null;
226
+ }
227
+ /**
228
+ * @todo Documentation incomplete.
229
+ */
230
+ keys() {
231
+ return Array.from(this.data.keys());
232
+ }
233
+ /**
234
+ * @todo Documentation incomplete.
235
+ */
236
+ remove(key, value) {
237
+ const values = this.get(key);
238
+ if (!values) {
239
+ return;
240
+ }
241
+ values.remove(value);
242
+ if (values.length === 0) {
243
+ this.clear(key);
244
+ }
245
+ }
95
246
  };
96
247
 
97
- // src/obsidian/implementations/Constants/FileExtension.ts
248
+ // src/obsidian/implementations/constants/FileExtension.ts
98
249
  var FileExtension = {
99
250
  _3gp: "3gp",
100
251
  avif: "avif",
@@ -122,7 +273,7 @@ var FileExtension = {
122
273
  webp: "webp"
123
274
  };
124
275
 
125
- // src/obsidian/implementations/Constants/InternalPluginName.ts
276
+ // src/obsidian/implementations/constants/InternalPluginName.ts
126
277
  var InternalPluginName = {
127
278
  /**
128
279
  * Plugin name in UI: Audio recorder.
@@ -250,7 +401,7 @@ var InternalPluginName = {
250
401
  ZkPrefixer: "zk-prefixer"
251
402
  };
252
403
 
253
- // src/obsidian/implementations/Constants/ViewType.ts
404
+ // src/obsidian/implementations/constants/ViewType.ts
254
405
  var ViewType = {
255
406
  AllProperties: "all-properties",
256
407
  Audio: "audio",
@@ -278,13 +429,616 @@ var ViewType = {
278
429
  WebviewerHistory: "webviewer-history"
279
430
  };
280
431
 
281
- // src/obsidian/implementations/Constructors/getAppConstructor.ts
432
+ // src/obsidian/implementations/constructors/augmentations/getAbstractTextComponentConstructor.ts
282
433
  var import_obsidian = require("obsidian");
434
+ function getAbstractTextComponentConstructor() {
435
+ return import_obsidian.AbstractTextComponent;
436
+ }
437
+
438
+ // src/obsidian/implementations/constructors/augmentations/getAppConstructor.ts
439
+ var import_obsidian2 = require("obsidian");
283
440
  function getAppConstructor() {
284
- return import_obsidian.App;
441
+ return import_obsidian2.App;
442
+ }
443
+
444
+ // src/obsidian/implementations/constructors/augmentations/getBaseComponentConstructor.ts
445
+ var import_obsidian3 = require("obsidian");
446
+ function getBaseComponentConstructor() {
447
+ return import_obsidian3.BaseComponent;
448
+ }
449
+
450
+ // src/obsidian/implementations/constructors/augmentations/getBasesEntryConstructor.ts
451
+ var import_obsidian4 = require("obsidian");
452
+ function getBasesEntryConstructor() {
453
+ return import_obsidian4.BasesEntry;
454
+ }
455
+
456
+ // src/obsidian/implementations/constructors/augmentations/getBasesEntryGroupConstructor.ts
457
+ var import_obsidian5 = require("obsidian");
458
+ function getBasesEntryGroupConstructor() {
459
+ return import_obsidian5.BasesEntryGroup;
460
+ }
461
+
462
+ // src/obsidian/implementations/constructors/augmentations/getBasesQueryResultConstructor.ts
463
+ var import_obsidian6 = require("obsidian");
464
+ function getBasesQueryResultConstructor() {
465
+ return import_obsidian6.BasesQueryResult;
466
+ }
467
+
468
+ // src/obsidian/implementations/constructors/augmentations/getBasesViewConfigConstructor.ts
469
+ var import_obsidian7 = require("obsidian");
470
+ function getBasesViewConfigConstructor() {
471
+ return import_obsidian7.BasesViewConfig;
472
+ }
473
+
474
+ // src/obsidian/implementations/constructors/augmentations/getBooleanValueConstructor.ts
475
+ var import_obsidian8 = require("obsidian");
476
+ function getBooleanValueConstructor() {
477
+ return import_obsidian8.BooleanValue;
478
+ }
479
+
480
+ // src/obsidian/implementations/constructors/augmentations/getButtonComponentConstructor.ts
481
+ var import_obsidian9 = require("obsidian");
482
+ function getButtonComponentConstructor() {
483
+ return import_obsidian9.ButtonComponent;
484
+ }
485
+
486
+ // src/obsidian/implementations/constructors/augmentations/getCapacitorAdapterConstructor.ts
487
+ var import_obsidian10 = require("obsidian");
488
+ function getCapacitorAdapterConstructor() {
489
+ return import_obsidian10.CapacitorAdapter;
490
+ }
491
+
492
+ // src/obsidian/implementations/constructors/augmentations/getColorComponentConstructor.ts
493
+ var import_obsidian11 = require("obsidian");
494
+ function getColorComponentConstructor() {
495
+ return import_obsidian11.ColorComponent;
496
+ }
497
+
498
+ // src/obsidian/implementations/constructors/augmentations/getComponentConstructor.ts
499
+ var import_obsidian12 = require("obsidian");
500
+ function getComponentConstructor() {
501
+ return import_obsidian12.Component;
502
+ }
503
+
504
+ // src/obsidian/implementations/constructors/augmentations/getDateValueConstructor.ts
505
+ var import_obsidian13 = require("obsidian");
506
+ function getDateValueConstructor() {
507
+ return import_obsidian13.DateValue;
508
+ }
509
+
510
+ // src/obsidian/implementations/constructors/augmentations/getDropdownComponentConstructor.ts
511
+ var import_obsidian14 = require("obsidian");
512
+ function getDropdownComponentConstructor() {
513
+ return import_obsidian14.DropdownComponent;
514
+ }
515
+
516
+ // src/obsidian/implementations/constructors/augmentations/getDurationValueConstructor.ts
517
+ var import_obsidian15 = require("obsidian");
518
+ function getDurationValueConstructor() {
519
+ return import_obsidian15.DurationValue;
520
+ }
521
+
522
+ // src/obsidian/implementations/constructors/augmentations/getEditableFileViewConstructor.ts
523
+ var import_obsidian16 = require("obsidian");
524
+ function getEditableFileViewConstructor() {
525
+ return import_obsidian16.EditableFileView;
526
+ }
527
+
528
+ // src/obsidian/implementations/constructors/augmentations/getEditorConstructor.ts
529
+ var import_obsidian17 = require("obsidian");
530
+ function getEditorConstructor() {
531
+ return import_obsidian17.Editor;
532
+ }
533
+
534
+ // src/obsidian/implementations/constructors/augmentations/getEventsConstructor.ts
535
+ var import_obsidian18 = require("obsidian");
536
+ function getEventsConstructor() {
537
+ return import_obsidian18.Events;
538
+ }
539
+
540
+ // src/obsidian/implementations/constructors/augmentations/getExtraButtonComponentConstructor.ts
541
+ var import_obsidian19 = require("obsidian");
542
+ function getExtraButtonComponentConstructor() {
543
+ return import_obsidian19.ExtraButtonComponent;
544
+ }
545
+
546
+ // src/obsidian/implementations/constructors/augmentations/getFileManagerConstructor.ts
547
+ var import_obsidian20 = require("obsidian");
548
+ function getFileManagerConstructor() {
549
+ return import_obsidian20.FileManager;
550
+ }
551
+
552
+ // src/obsidian/implementations/constructors/augmentations/getFileSystemAdapterConstructor.ts
553
+ var import_obsidian21 = require("obsidian");
554
+ function getFileSystemAdapterConstructor() {
555
+ return import_obsidian21.FileSystemAdapter;
556
+ }
557
+
558
+ // src/obsidian/implementations/constructors/augmentations/getFileValueConstructor.ts
559
+ var import_obsidian22 = require("obsidian");
560
+ function getFileValueConstructor() {
561
+ return import_obsidian22.FileValue;
562
+ }
563
+
564
+ // src/obsidian/implementations/constructors/augmentations/getFuzzySuggestModalConstructor.ts
565
+ var import_obsidian23 = require("obsidian");
566
+ function getFuzzySuggestModalConstructor() {
567
+ return import_obsidian23.FuzzySuggestModal;
568
+ }
569
+
570
+ // src/obsidian/implementations/constructors/augmentations/getHoverPopoverConstructor.ts
571
+ var import_obsidian24 = require("obsidian");
572
+ function getHoverPopoverConstructor() {
573
+ return import_obsidian24.HoverPopover;
574
+ }
575
+
576
+ // src/obsidian/implementations/constructors/augmentations/getHTMLValueConstructor.ts
577
+ var import_obsidian25 = require("obsidian");
578
+ function getHTMLValueConstructor() {
579
+ return import_obsidian25.HTMLValue;
580
+ }
581
+
582
+ // src/obsidian/implementations/constructors/augmentations/getIconValueConstructor.ts
583
+ var import_obsidian26 = require("obsidian");
584
+ function getIconValueConstructor() {
585
+ return import_obsidian26.IconValue;
586
+ }
587
+
588
+ // src/obsidian/implementations/constructors/augmentations/getImageValueConstructor.ts
589
+ var import_obsidian27 = require("obsidian");
590
+ function getImageValueConstructor() {
591
+ return import_obsidian27.ImageValue;
592
+ }
593
+
594
+ // src/obsidian/implementations/constructors/augmentations/getKeymapConstructor.ts
595
+ var import_obsidian28 = require("obsidian");
596
+ function getKeymapConstructor() {
597
+ return import_obsidian28.Keymap;
598
+ }
599
+
600
+ // src/obsidian/implementations/constructors/augmentations/getLinkValueConstructor.ts
601
+ var import_obsidian29 = require("obsidian");
602
+ function getLinkValueConstructor() {
603
+ return import_obsidian29.LinkValue;
604
+ }
605
+
606
+ // src/obsidian/implementations/constructors/augmentations/getListValueConstructor.ts
607
+ var import_obsidian30 = require("obsidian");
608
+ function getListValueConstructor() {
609
+ return import_obsidian30.ListValue;
610
+ }
611
+
612
+ // src/obsidian/implementations/constructors/augmentations/getMarkdownPreviewRendererConstructor.ts
613
+ var import_obsidian31 = require("obsidian");
614
+ function getMarkdownPreviewRendererConstructor() {
615
+ return import_obsidian31.MarkdownPreviewRenderer;
616
+ }
617
+
618
+ // src/obsidian/implementations/constructors/augmentations/getMarkdownPreviewViewConstructor.ts
619
+ var import_obsidian32 = require("obsidian");
620
+ function getMarkdownPreviewViewConstructor() {
621
+ return import_obsidian32.MarkdownPreviewView;
622
+ }
623
+
624
+ // src/obsidian/implementations/constructors/augmentations/getMarkdownRenderChildConstructor.ts
625
+ var import_obsidian33 = require("obsidian");
626
+ function getMarkdownRenderChildConstructor() {
627
+ return import_obsidian33.MarkdownRenderChild;
628
+ }
629
+
630
+ // src/obsidian/implementations/constructors/augmentations/getMarkdownRendererConstructor.ts
631
+ var import_obsidian34 = require("obsidian");
632
+ function getMarkdownRendererConstructor() {
633
+ return import_obsidian34.MarkdownRenderer;
634
+ }
635
+
636
+ // src/obsidian/implementations/constructors/augmentations/getMarkdownViewConstructor.ts
637
+ var import_obsidian35 = require("obsidian");
638
+ function getMarkdownViewConstructor() {
639
+ return import_obsidian35.MarkdownView;
640
+ }
641
+
642
+ // src/obsidian/implementations/constructors/augmentations/getMenuConstructor.ts
643
+ var import_obsidian36 = require("obsidian");
644
+ function getMenuConstructor() {
645
+ return import_obsidian36.Menu;
646
+ }
647
+
648
+ // src/obsidian/implementations/constructors/augmentations/getMenuItemConstructor.ts
649
+ var import_obsidian37 = require("obsidian");
650
+ function getMenuItemConstructor() {
651
+ return import_obsidian37.MenuItem;
652
+ }
653
+
654
+ // src/obsidian/implementations/constructors/augmentations/getMenuSeparatorConstructor.ts
655
+ var import_obsidian38 = require("obsidian");
656
+ function getMenuSeparatorConstructor() {
657
+ return import_obsidian38.MenuSeparator;
658
+ }
659
+
660
+ // src/obsidian/implementations/constructors/augmentations/getMetadataCacheConstructor.ts
661
+ var import_obsidian39 = require("obsidian");
662
+ function getMetadataCacheConstructor() {
663
+ return import_obsidian39.MetadataCache;
664
+ }
665
+
666
+ // src/obsidian/implementations/constructors/augmentations/getModalConstructor.ts
667
+ var import_obsidian40 = require("obsidian");
668
+ function getModalConstructor() {
669
+ return import_obsidian40.Modal;
670
+ }
671
+
672
+ // src/obsidian/implementations/constructors/augmentations/getMomentFormatComponentConstructor.ts
673
+ var import_obsidian41 = require("obsidian");
674
+ function getMomentFormatComponentConstructor() {
675
+ return import_obsidian41.MomentFormatComponent;
676
+ }
677
+
678
+ // src/obsidian/implementations/constructors/augmentations/getNoticeConstructor.ts
679
+ var import_obsidian42 = require("obsidian");
680
+ function getNoticeConstructor() {
681
+ return import_obsidian42.Notice;
682
+ }
683
+
684
+ // src/obsidian/implementations/constructors/augmentations/getNotNullValueConstructor.ts
685
+ var import_obsidian43 = require("obsidian");
686
+ function getNotNullValueConstructor() {
687
+ return import_obsidian43.NotNullValue;
688
+ }
689
+
690
+ // src/obsidian/implementations/constructors/augmentations/getNullValueConstructor.ts
691
+ var import_obsidian44 = require("obsidian");
692
+ function getNullValueConstructor() {
693
+ return import_obsidian44.NullValue;
694
+ }
695
+
696
+ // src/obsidian/implementations/constructors/augmentations/getNumberValueConstructor.ts
697
+ var import_obsidian45 = require("obsidian");
698
+ function getNumberValueConstructor() {
699
+ return import_obsidian45.NumberValue;
700
+ }
701
+
702
+ // src/obsidian/implementations/constructors/augmentations/getObjectValueConstructor.ts
703
+ var import_obsidian46 = require("obsidian");
704
+ function getObjectValueConstructor() {
705
+ return import_obsidian46.ObjectValue;
706
+ }
707
+
708
+ // src/obsidian/implementations/constructors/augmentations/getProgressBarComponentConstructor.ts
709
+ var import_obsidian47 = require("obsidian");
710
+ function getProgressBarComponentConstructor() {
711
+ return import_obsidian47.ProgressBarComponent;
712
+ }
713
+
714
+ // src/obsidian/implementations/constructors/augmentations/getQueryControllerConstructor.ts
715
+ var import_obsidian48 = require("obsidian");
716
+ function getQueryControllerConstructor() {
717
+ return import_obsidian48.QueryController;
718
+ }
719
+
720
+ // src/obsidian/implementations/constructors/augmentations/getRegExpValueConstructor.ts
721
+ var import_obsidian49 = require("obsidian");
722
+ function getRegExpValueConstructor() {
723
+ return import_obsidian49.RegExpValue;
724
+ }
725
+
726
+ // src/obsidian/implementations/constructors/augmentations/getRelativeDateValueConstructor.ts
727
+ var import_obsidian50 = require("obsidian");
728
+ function getRelativeDateValueConstructor() {
729
+ return import_obsidian50.RelativeDateValue;
730
+ }
731
+
732
+ // src/obsidian/implementations/constructors/augmentations/getRenderContextConstructor.ts
733
+ var import_obsidian51 = require("obsidian");
734
+ function getRenderContextConstructor() {
735
+ return import_obsidian51.RenderContext;
736
+ }
737
+
738
+ // src/obsidian/implementations/constructors/augmentations/getScopeConstructor.ts
739
+ var import_obsidian52 = require("obsidian");
740
+ function getScopeConstructor() {
741
+ return import_obsidian52.Scope;
742
+ }
743
+
744
+ // src/obsidian/implementations/constructors/augmentations/getSearchComponentConstructor.ts
745
+ var import_obsidian53 = require("obsidian");
746
+ function getSearchComponentConstructor() {
747
+ return import_obsidian53.SearchComponent;
748
+ }
749
+
750
+ // src/obsidian/implementations/constructors/augmentations/getSecretComponentConstructor.ts
751
+ var import_obsidian54 = require("obsidian");
752
+ function getSecretComponentConstructor() {
753
+ return import_obsidian54.SecretComponent;
285
754
  }
286
755
 
287
- // src/obsidian/implementations/Constructors/getInternalPluginConstructor.ts
756
+ // src/obsidian/implementations/constructors/augmentations/getSecretStorageConstructor.ts
757
+ var import_obsidian55 = require("obsidian");
758
+ function getSecretStorageConstructor() {
759
+ return import_obsidian55.SecretStorage;
760
+ }
761
+
762
+ // src/obsidian/implementations/constructors/augmentations/getSettingConstructor.ts
763
+ var import_obsidian56 = require("obsidian");
764
+ function getSettingConstructor() {
765
+ return import_obsidian56.Setting;
766
+ }
767
+
768
+ // src/obsidian/implementations/constructors/augmentations/getSettingGroupConstructor.ts
769
+ var import_obsidian57 = require("obsidian");
770
+ function getSettingGroupConstructor() {
771
+ return import_obsidian57.SettingGroup;
772
+ }
773
+
774
+ // src/obsidian/implementations/constructors/augmentations/getSettingTabConstructor.ts
775
+ var import_obsidian58 = require("obsidian");
776
+ function getSettingTabConstructor() {
777
+ return import_obsidian58.SettingTab;
778
+ }
779
+
780
+ // src/obsidian/implementations/constructors/augmentations/getSliderComponentConstructor.ts
781
+ var import_obsidian59 = require("obsidian");
782
+ function getSliderComponentConstructor() {
783
+ return import_obsidian59.SliderComponent;
784
+ }
785
+
786
+ // src/obsidian/implementations/constructors/augmentations/getStringValueConstructor.ts
787
+ var import_obsidian60 = require("obsidian");
788
+ function getStringValueConstructor() {
789
+ return import_obsidian60.StringValue;
790
+ }
791
+
792
+ // src/obsidian/implementations/constructors/augmentations/getTAbstractFileConstructor.ts
793
+ var import_obsidian61 = require("obsidian");
794
+ function getTAbstractFileConstructor() {
795
+ return import_obsidian61.TAbstractFile;
796
+ }
797
+
798
+ // src/obsidian/implementations/constructors/augmentations/getTagValueConstructor.ts
799
+ var import_obsidian62 = require("obsidian");
800
+ function getTagValueConstructor() {
801
+ return import_obsidian62.TagValue;
802
+ }
803
+
804
+ // src/obsidian/implementations/constructors/augmentations/getTasksConstructor.ts
805
+ var import_obsidian63 = require("obsidian");
806
+ function getTasksConstructor() {
807
+ return import_obsidian63.Tasks;
808
+ }
809
+
810
+ // src/obsidian/implementations/constructors/augmentations/getTextAreaComponentConstructor.ts
811
+ var import_obsidian64 = require("obsidian");
812
+ function getTextAreaComponentConstructor() {
813
+ return import_obsidian64.TextAreaComponent;
814
+ }
815
+
816
+ // src/obsidian/implementations/constructors/augmentations/getTextComponentConstructor.ts
817
+ var import_obsidian65 = require("obsidian");
818
+ function getTextComponentConstructor() {
819
+ return import_obsidian65.TextComponent;
820
+ }
821
+
822
+ // src/obsidian/implementations/constructors/augmentations/getTFileConstructor.ts
823
+ var import_obsidian66 = require("obsidian");
824
+ function getTFileConstructor() {
825
+ return import_obsidian66.TFile;
826
+ }
827
+
828
+ // src/obsidian/implementations/constructors/augmentations/getTFolderConstructor.ts
829
+ var import_obsidian67 = require("obsidian");
830
+ function getTFolderConstructor() {
831
+ return import_obsidian67.TFolder;
832
+ }
833
+
834
+ // src/obsidian/implementations/constructors/augmentations/getToggleComponentConstructor.ts
835
+ var import_obsidian68 = require("obsidian");
836
+ function getToggleComponentConstructor() {
837
+ return import_obsidian68.ToggleComponent;
838
+ }
839
+
840
+ // src/obsidian/implementations/constructors/augmentations/getUrlValueConstructor.ts
841
+ var import_obsidian69 = require("obsidian");
842
+ function getUrlValueConstructor() {
843
+ return import_obsidian69.UrlValue;
844
+ }
845
+
846
+ // src/obsidian/implementations/constructors/augmentations/getValueComponentConstructor.ts
847
+ var import_obsidian70 = require("obsidian");
848
+ function getValueComponentConstructor() {
849
+ return import_obsidian70.ValueComponent;
850
+ }
851
+
852
+ // src/obsidian/implementations/constructors/augmentations/getValueConstructor.ts
853
+ var import_obsidian71 = require("obsidian");
854
+ function getValueConstructor() {
855
+ return import_obsidian71.Value;
856
+ }
857
+
858
+ // src/obsidian/implementations/constructors/augmentations/getVaultConstructor.ts
859
+ var import_obsidian72 = require("obsidian");
860
+ function getVaultConstructor() {
861
+ return import_obsidian72.Vault;
862
+ }
863
+
864
+ // src/obsidian/implementations/constructors/augmentations/getWorkspaceConstructor.ts
865
+ var import_obsidian73 = require("obsidian");
866
+ function getWorkspaceConstructor() {
867
+ return import_obsidian73.Workspace;
868
+ }
869
+
870
+ // src/obsidian/implementations/constructors/augmentations/getWorkspaceContainerConstructor.ts
871
+ var import_obsidian74 = require("obsidian");
872
+ function getWorkspaceContainerConstructor() {
873
+ return import_obsidian74.WorkspaceContainer;
874
+ }
875
+
876
+ // src/obsidian/implementations/constructors/augmentations/getWorkspaceFloatingConstructor.ts
877
+ var import_obsidian75 = require("obsidian");
878
+ function getWorkspaceFloatingConstructor() {
879
+ return import_obsidian75.WorkspaceFloating;
880
+ }
881
+
882
+ // src/obsidian/implementations/constructors/augmentations/getWorkspaceItemConstructor.ts
883
+ var import_obsidian76 = require("obsidian");
884
+ function getWorkspaceItemConstructor() {
885
+ return import_obsidian76.WorkspaceItem;
886
+ }
887
+
888
+ // src/obsidian/implementations/constructors/augmentations/getWorkspaceLeafConstructor.ts
889
+ var import_obsidian77 = require("obsidian");
890
+ function getWorkspaceLeafConstructor() {
891
+ return import_obsidian77.WorkspaceLeaf;
892
+ }
893
+
894
+ // src/obsidian/implementations/constructors/augmentations/getWorkspaceMobileDrawerConstructor.ts
895
+ var import_obsidian78 = require("obsidian");
896
+ function getWorkspaceMobileDrawerConstructor() {
897
+ return import_obsidian78.WorkspaceMobileDrawer;
898
+ }
899
+
900
+ // src/obsidian/implementations/constructors/augmentations/getWorkspaceParentConstructor.ts
901
+ var import_obsidian79 = require("obsidian");
902
+ function getWorkspaceParentConstructor() {
903
+ return import_obsidian79.WorkspaceParent;
904
+ }
905
+
906
+ // src/obsidian/implementations/constructors/augmentations/getWorkspaceRibbonConstructor.ts
907
+ var import_obsidian80 = require("obsidian");
908
+ function getWorkspaceRibbonConstructor() {
909
+ return import_obsidian80.WorkspaceRibbon;
910
+ }
911
+
912
+ // src/obsidian/implementations/constructors/augmentations/getWorkspaceRootConstructor.ts
913
+ var import_obsidian81 = require("obsidian");
914
+ function getWorkspaceRootConstructor() {
915
+ return import_obsidian81.WorkspaceRoot;
916
+ }
917
+
918
+ // src/obsidian/implementations/constructors/augmentations/getWorkspaceSidedockConstructor.ts
919
+ var import_obsidian82 = require("obsidian");
920
+ function getWorkspaceSidedockConstructor() {
921
+ return import_obsidian82.WorkspaceSidedock;
922
+ }
923
+
924
+ // src/obsidian/implementations/constructors/augmentations/getWorkspaceSplitConstructor.ts
925
+ var import_obsidian83 = require("obsidian");
926
+ function getWorkspaceSplitConstructor() {
927
+ return import_obsidian83.WorkspaceSplit;
928
+ }
929
+
930
+ // src/obsidian/implementations/constructors/augmentations/getWorkspaceTabsConstructor.ts
931
+ var import_obsidian84 = require("obsidian");
932
+ function getWorkspaceTabsConstructor() {
933
+ return import_obsidian84.WorkspaceTabs;
934
+ }
935
+
936
+ // src/obsidian/implementations/constructors/augmentations/getWorkspaceWindowConstructor.ts
937
+ var import_obsidian85 = require("obsidian");
938
+ function getWorkspaceWindowConstructor() {
939
+ return import_obsidian85.WorkspaceWindow;
940
+ }
941
+
942
+ // src/obsidian/implementations/constructors/internals/getAppMenuBarManagerConstructor.ts
943
+ function getAppMenuBarManagerConstructor(app) {
944
+ return app.appMenuBarManager.constructor;
945
+ }
946
+
947
+ // src/obsidian/implementations/constructors/internals/getAppSettingConstructor.ts
948
+ function getAppSettingConstructor(app) {
949
+ return app.setting.constructor;
950
+ }
951
+
952
+ // src/obsidian/implementations/constructors/internals/getCliConstructor.ts
953
+ function getCliConstructor(app) {
954
+ return app.cli.constructor;
955
+ }
956
+
957
+ // src/obsidian/implementations/constructors/internals/getCommandsConstructor.ts
958
+ function getCommandsConstructor(app) {
959
+ return app.commands.constructor;
960
+ }
961
+
962
+ // src/obsidian/implementations/constructors/internals/getCustomCSSConstructor.ts
963
+ function getCustomCSSConstructor(app) {
964
+ return app.customCss.constructor;
965
+ }
966
+
967
+ // src/obsidian/implementations/constructors/internals/getDragManagerConstructor.ts
968
+ function getDragManagerConstructor(app) {
969
+ return app.dragManager.constructor;
970
+ }
971
+
972
+ // src/obsidian/implementations/constructors/internals/getEditorSuggestsConstructor.ts
973
+ function getEditorSuggestsConstructor(app) {
974
+ return app.workspace.editorSuggest.constructor;
975
+ }
976
+
977
+ // src/obsidian/implementations/constructors/internals/getEmbedRegistryConstructor.ts
978
+ function getEmbedRegistryConstructor(app) {
979
+ return app.embedRegistry.constructor;
980
+ }
981
+
982
+ // src/obsidian/implementations/constructors/internals/getFoldManagerConstructor.ts
983
+ function getFoldManagerConstructor(app) {
984
+ return app.foldManager.constructor;
985
+ }
986
+
987
+ // src/obsidian/implementations/constructors/internals/getFrameDomConstructor.ts
988
+ function getFrameDomConstructor() {
989
+ return window.frameDom.constructor;
990
+ }
991
+
992
+ // src/obsidian/implementations/constructors/internals/getHotkeyManagerConstructor.ts
993
+ function getHotkeyManagerConstructor(app) {
994
+ return app.hotkeyManager.constructor;
995
+ }
996
+
997
+ // src/obsidian/implementations/constructors/internals/getMetadataTypeManagerConstructor.ts
998
+ function getMetadataTypeManagerConstructor(app) {
999
+ return app.metadataTypeManager.constructor;
1000
+ }
1001
+
1002
+ // src/obsidian/implementations/constructors/internals/getObsidianDOMConstructor.ts
1003
+ function getObsidianDOMConstructor(app) {
1004
+ return app.dom.constructor;
1005
+ }
1006
+
1007
+ // src/obsidian/implementations/constructors/internals/getPluginsConstructor.ts
1008
+ function getPluginsConstructor(app) {
1009
+ return app.plugins.constructor;
1010
+ }
1011
+
1012
+ // src/obsidian/implementations/constructors/internals/getRecentFileTrackerConstructor.ts
1013
+ function getRecentFileTrackerConstructor(app) {
1014
+ return app.workspace.recentFileTracker.constructor;
1015
+ }
1016
+
1017
+ // src/obsidian/implementations/constructors/internals/getShareReceiverConstructor.ts
1018
+ function getShareReceiverConstructor(app) {
1019
+ return app.shareReceiver.constructor;
1020
+ }
1021
+
1022
+ // src/obsidian/implementations/constructors/internals/getStatusBarConstructor.ts
1023
+ function getStatusBarConstructor(app) {
1024
+ return app.statusBar.constructor;
1025
+ }
1026
+
1027
+ // src/obsidian/implementations/constructors/internals/getViewRegistryConstructor.ts
1028
+ function getViewRegistryConstructor(app) {
1029
+ return app.viewRegistry.constructor;
1030
+ }
1031
+
1032
+ // src/obsidian/implementations/constructors/internals/getWorkspaceLeafHistoryConstructor.ts
1033
+ function getWorkspaceLeafHistoryConstructor(app) {
1034
+ const leaf = app.workspace.getMostRecentLeaf();
1035
+ if (!leaf) {
1036
+ throw new Error("No workspace leaf available to extract WorkspaceLeafHistory constructor");
1037
+ }
1038
+ return leaf.history.constructor;
1039
+ }
1040
+
1041
+ // src/obsidian/implementations/constructors/internals/internal-plugins/getInternalPluginConstructor.ts
288
1042
  function getInternalPluginConstructor(app) {
289
1043
  const anyPlugin = Object.values(app.internalPlugins.plugins)[0];
290
1044
  if (!anyPlugin) {
@@ -293,24 +1047,12 @@ function getInternalPluginConstructor(app) {
293
1047
  return anyPlugin.constructor;
294
1048
  }
295
1049
 
296
- // src/obsidian/implementations/Constructors/getInternalPluginsConstructor.ts
1050
+ // src/obsidian/implementations/constructors/internals/internal-plugins/getInternalPluginsConstructor.ts
297
1051
  function getInternalPluginsConstructor(app) {
298
1052
  return app.internalPlugins.constructor;
299
1053
  }
300
1054
 
301
- // src/obsidian/implementations/Constructors/getTFileConstructor.ts
302
- var import_obsidian2 = require("obsidian");
303
- function getTFileConstructor() {
304
- return import_obsidian2.TFile;
305
- }
306
-
307
- // src/obsidian/implementations/Constructors/getTFolderConstructor.ts
308
- var import_obsidian3 = require("obsidian");
309
- function getTFolderConstructor() {
310
- return import_obsidian3.TFolder;
311
- }
312
-
313
- // src/obsidian/implementations/Constructors/getViewConstructorByViewType.ts
1055
+ // src/obsidian/implementations/constructors/internals/views/getViewConstructorByViewType.ts
314
1056
  function getViewConstructorByViewType(app, viewType) {
315
1057
  const leaf = app.workspace.createLeafInTabGroup();
316
1058
  try {
@@ -325,16 +1067,131 @@ function getViewConstructorByViewType(app, viewType) {
325
1067
  }
326
1068
  }
327
1069
 
328
- // src/obsidian/implementations/Functions/createTFileInstance.ts
329
- var import_obsidian5 = require("obsidian");
1070
+ // src/obsidian/implementations/constructors/internals/views/getAllPropertiesViewConstructor.ts
1071
+ function getAllPropertiesViewConstructor(app) {
1072
+ return getViewConstructorByViewType(app, ViewType.AllProperties);
1073
+ }
1074
+
1075
+ // src/obsidian/implementations/constructors/internals/views/getAudioViewConstructor.ts
1076
+ function getAudioViewConstructor(app) {
1077
+ return getViewConstructorByViewType(app, ViewType.Audio);
1078
+ }
1079
+
1080
+ // src/obsidian/implementations/constructors/internals/views/getBacklinkViewConstructor.ts
1081
+ function getBacklinkViewConstructor(app) {
1082
+ return getViewConstructorByViewType(app, ViewType.Backlink);
1083
+ }
330
1084
 
331
- // src/obsidian/implementations/Utils/PathUtils.ts
1085
+ // src/obsidian/implementations/constructors/internals/views/getBasesViewConstructor.ts
1086
+ function getBasesViewConstructor(app) {
1087
+ return getViewConstructorByViewType(app, ViewType.Bases);
1088
+ }
1089
+
1090
+ // src/obsidian/implementations/constructors/internals/views/getBookmarksViewConstructor.ts
1091
+ function getBookmarksViewConstructor(app) {
1092
+ return getViewConstructorByViewType(app, ViewType.Bookmarks);
1093
+ }
1094
+
1095
+ // src/obsidian/implementations/constructors/internals/views/getCanvasViewConstructor.ts
1096
+ function getCanvasViewConstructor(app) {
1097
+ return getViewConstructorByViewType(app, ViewType.Canvas);
1098
+ }
1099
+
1100
+ // src/obsidian/implementations/constructors/internals/views/getEmptyViewConstructor.ts
1101
+ function getEmptyViewConstructor(app) {
1102
+ return getViewConstructorByViewType(app, ViewType.Empty);
1103
+ }
1104
+
1105
+ // src/obsidian/implementations/constructors/internals/views/getFileExplorerViewConstructor.ts
1106
+ function getFileExplorerViewConstructor(app) {
1107
+ return getViewConstructorByViewType(app, ViewType.FileExplorer);
1108
+ }
1109
+
1110
+ // src/obsidian/implementations/constructors/internals/views/getFilePropertiesViewConstructor.ts
1111
+ function getFilePropertiesViewConstructor(app) {
1112
+ return getViewConstructorByViewType(app, ViewType.FileProperties);
1113
+ }
1114
+
1115
+ // src/obsidian/implementations/constructors/internals/views/getGraphViewConstructor.ts
1116
+ function getGraphViewConstructor(app) {
1117
+ return getViewConstructorByViewType(app, ViewType.Graph);
1118
+ }
1119
+
1120
+ // src/obsidian/implementations/constructors/internals/views/getImageViewConstructor.ts
1121
+ function getImageViewConstructor(app) {
1122
+ return getViewConstructorByViewType(app, ViewType.Image);
1123
+ }
1124
+
1125
+ // src/obsidian/implementations/constructors/internals/views/getLocalGraphViewConstructor.ts
1126
+ function getLocalGraphViewConstructor(app) {
1127
+ return getViewConstructorByViewType(app, ViewType.LocalGraph);
1128
+ }
1129
+
1130
+ // src/obsidian/implementations/constructors/internals/views/getOutgoingLinkViewConstructor.ts
1131
+ function getOutgoingLinkViewConstructor(app) {
1132
+ return getViewConstructorByViewType(app, ViewType.OutgoingLink);
1133
+ }
1134
+
1135
+ // src/obsidian/implementations/constructors/internals/views/getOutlineViewConstructor.ts
1136
+ function getOutlineViewConstructor(app) {
1137
+ return getViewConstructorByViewType(app, ViewType.Outline);
1138
+ }
1139
+
1140
+ // src/obsidian/implementations/constructors/internals/views/getPdfViewConstructor.ts
1141
+ function getPdfViewConstructor(app) {
1142
+ return getViewConstructorByViewType(app, ViewType.Pdf);
1143
+ }
1144
+
1145
+ // src/obsidian/implementations/constructors/internals/views/getReleaseNotesViewConstructor.ts
1146
+ function getReleaseNotesViewConstructor(app) {
1147
+ return getViewConstructorByViewType(app, ViewType.ReleaseNotes);
1148
+ }
1149
+
1150
+ // src/obsidian/implementations/constructors/internals/views/getSearchViewConstructor.ts
1151
+ function getSearchViewConstructor(app) {
1152
+ return getViewConstructorByViewType(app, ViewType.Search);
1153
+ }
1154
+
1155
+ // src/obsidian/implementations/constructors/internals/views/getSyncViewConstructor.ts
1156
+ function getSyncViewConstructor(app) {
1157
+ return getViewConstructorByViewType(app, ViewType.Sync);
1158
+ }
1159
+
1160
+ // src/obsidian/implementations/constructors/internals/views/getTableViewConstructor.ts
1161
+ function getTableViewConstructor(app) {
1162
+ return getViewConstructorByViewType(app, ViewType.Table);
1163
+ }
1164
+
1165
+ // src/obsidian/implementations/constructors/internals/views/getTagViewConstructor.ts
1166
+ function getTagViewConstructor(app) {
1167
+ return getViewConstructorByViewType(app, ViewType.Tag);
1168
+ }
1169
+
1170
+ // src/obsidian/implementations/constructors/internals/views/getVideoViewConstructor.ts
1171
+ function getVideoViewConstructor(app) {
1172
+ return getViewConstructorByViewType(app, ViewType.Video);
1173
+ }
1174
+
1175
+ // src/obsidian/implementations/constructors/internals/views/getWebviewerHistoryViewConstructor.ts
1176
+ function getWebviewerHistoryViewConstructor(app) {
1177
+ return getViewConstructorByViewType(app, ViewType.WebviewerHistory);
1178
+ }
1179
+
1180
+ // src/obsidian/implementations/constructors/internals/views/getWebviewerViewConstructor.ts
1181
+ function getWebviewerViewConstructor(app) {
1182
+ return getViewConstructorByViewType(app, ViewType.Webviewer);
1183
+ }
1184
+
1185
+ // src/obsidian/implementations/functions/createTFileInstance.ts
1186
+ var import_obsidian87 = require("obsidian");
1187
+
1188
+ // src/obsidian/implementations/utils/PathUtils.ts
332
1189
  function parentFolderPath(path) {
333
1190
  return path.replace(/\/?[^\/]*$/, "") || "/";
334
1191
  }
335
1192
 
336
- // src/obsidian/implementations/Functions/createTFolderInstance.ts
337
- var import_obsidian4 = require("obsidian");
1193
+ // src/obsidian/implementations/functions/createTFolderInstance.ts
1194
+ var import_obsidian86 = require("obsidian");
338
1195
  function createTFolderInstance(app, path) {
339
1196
  let folder = app.vault.getFolderByPath(path);
340
1197
  if (folder) {
@@ -346,7 +1203,7 @@ function createTFolderInstance(app, path) {
346
1203
  return folder;
347
1204
  }
348
1205
 
349
- // src/obsidian/implementations/Functions/createTFileInstance.ts
1206
+ // src/obsidian/implementations/functions/createTFileInstance.ts
350
1207
  function createTFileInstance(app, path) {
351
1208
  let file = app.vault.getFileByPath(path);
352
1209
  if (file) {
@@ -358,41 +1215,41 @@ function createTFileInstance(app, path) {
358
1215
  return file;
359
1216
  }
360
1217
 
361
- // src/obsidian/implementations/Functions/loadMermaid.ts
362
- var import_obsidian6 = require("obsidian");
1218
+ // src/obsidian/implementations/functions/loadMermaid.ts
1219
+ var import_obsidian88 = require("obsidian");
363
1220
  async function loadMermaid() {
364
- return await (0, import_obsidian6.loadMermaid)();
1221
+ return await (0, import_obsidian88.loadMermaid)();
365
1222
  }
366
1223
 
367
- // src/obsidian/implementations/Functions/loadPdfJs.ts
368
- var import_obsidian7 = require("obsidian");
1224
+ // src/obsidian/implementations/functions/loadPdfJs.ts
1225
+ var import_obsidian89 = require("obsidian");
369
1226
  async function loadPdfJs() {
370
- return await (0, import_obsidian7.loadPdfJs)();
1227
+ return await (0, import_obsidian89.loadPdfJs)();
371
1228
  }
372
1229
 
373
- // src/obsidian/implementations/Functions/loadPrism.ts
374
- var import_obsidian8 = require("obsidian");
1230
+ // src/obsidian/implementations/functions/loadPrism.ts
1231
+ var import_obsidian90 = require("obsidian");
375
1232
  async function loadPrism() {
376
- return await (0, import_obsidian8.loadPrism)();
1233
+ return await (0, import_obsidian90.loadPrism)();
377
1234
  }
378
1235
 
379
- // src/obsidian/implementations/TypeGuards/isReferenceCache.ts
1236
+ // src/obsidian/implementations/type-guards/isReferenceCache.ts
380
1237
  function isReferenceCache(reference) {
381
1238
  return !!reference.position;
382
1239
  }
383
1240
 
384
- // src/obsidian/implementations/TypeGuards/isEmbedCache.ts
1241
+ // src/obsidian/implementations/type-guards/isEmbedCache.ts
385
1242
  function isEmbedCache(reference) {
386
1243
  return isReferenceCache(reference) && reference.original[0] === "!";
387
1244
  }
388
1245
 
389
- // src/obsidian/implementations/TypeGuards/isFrontmatterLinkCache.ts
1246
+ // src/obsidian/implementations/type-guards/isFrontmatterLinkCache.ts
390
1247
  function isFrontmatterLinkCache(reference) {
391
1248
  return !!reference.key;
392
1249
  }
393
1250
 
394
- // src/obsidian/implementations/TypeGuards/isLinkCache.ts
1251
+ // src/obsidian/implementations/type-guards/isLinkCache.ts
395
1252
  function isLinkCache(reference) {
396
1253
  return isReferenceCache(reference) && reference.original[0] !== "!";
397
1254
  }
398
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9pbmRleC50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL0NsYXNzZXMvQ3VzdG9tQXJyYXlEaWN0SW1wbC50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL0NvbnN0YW50cy9GaWxlRXh0ZW5zaW9uLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvQ29uc3RhbnRzL0ludGVybmFsUGx1Z2luTmFtZS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL0NvbnN0YW50cy9WaWV3VHlwZS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL0NvbnN0cnVjdG9ycy9nZXRBcHBDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL0NvbnN0cnVjdG9ycy9nZXRJbnRlcm5hbFBsdWdpbkNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvQ29uc3RydWN0b3JzL2dldEludGVybmFsUGx1Z2luc0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvQ29uc3RydWN0b3JzL2dldFRGaWxlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9Db25zdHJ1Y3RvcnMvZ2V0VEZvbGRlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvQ29uc3RydWN0b3JzL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9GdW5jdGlvbnMvY3JlYXRlVEZpbGVJbnN0YW5jZS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL1V0aWxzL1BhdGhVdGlscy50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL0Z1bmN0aW9ucy9jcmVhdGVURm9sZGVySW5zdGFuY2UudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9GdW5jdGlvbnMvbG9hZE1lcm1haWQudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9GdW5jdGlvbnMvbG9hZFBkZkpzLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvRnVuY3Rpb25zL2xvYWRQcmlzbS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL1R5cGVHdWFyZHMvaXNSZWZlcmVuY2VDYWNoZS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL1R5cGVHdWFyZHMvaXNFbWJlZENhY2hlLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvVHlwZUd1YXJkcy9pc0Zyb250bWF0dGVyTGlua0NhY2hlLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvVHlwZUd1YXJkcy9pc0xpbmtDYWNoZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGZyb20gJy4vQ2xhc3Nlcy9DdXN0b21BcnJheURpY3RJbXBsLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vQ29uc3RhbnRzL0ZpbGVFeHRlbnNpb24udHMnO1xuZXhwb3J0ICogZnJvbSAnLi9Db25zdGFudHMvSW50ZXJuYWxQbHVnaW5OYW1lLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vQ29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vQ29uc3RydWN0b3JzL2dldEFwcENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vQ29uc3RydWN0b3JzL2dldEludGVybmFsUGx1Z2luQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9Db25zdHJ1Y3RvcnMvZ2V0SW50ZXJuYWxQbHVnaW5zQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9Db25zdHJ1Y3RvcnMvZ2V0VEZpbGVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL0NvbnN0cnVjdG9ycy9nZXRURm9sZGVyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9Db25zdHJ1Y3RvcnMvZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL0Z1bmN0aW9ucy9jcmVhdGVURmlsZUluc3RhbmNlLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vRnVuY3Rpb25zL2NyZWF0ZVRGb2xkZXJJbnN0YW5jZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL0Z1bmN0aW9ucy9sb2FkTWVybWFpZC50cyc7XG5leHBvcnQgKiBmcm9tICcuL0Z1bmN0aW9ucy9sb2FkUGRmSnMudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9GdW5jdGlvbnMvbG9hZFByaXNtLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vVHlwZUd1YXJkcy9pc0VtYmVkQ2FjaGUudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9UeXBlR3VhcmRzL2lzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9UeXBlR3VhcmRzL2lzTGlua0NhY2hlLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vVHlwZUd1YXJkcy9pc1JlZmVyZW5jZUNhY2hlLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vVXRpbHMvUGF0aFV0aWxzLnRzJztcbmV4cG9ydCB0eXBlICogZnJvbSAnLi4vLi4vaW5kZXguZC50cyc7XG4iLCAiaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICcuLi8uLi9pbnRlcm5hbHMvQ29sbGVjdGlvbnMvQ3VzdG9tQXJyYXlEaWN0LmQudHMnO1xuXG4vKipcbiAqIEB0b2RvIERvY3VtZW50YXRpb24gaW5jb21wbGV0ZS5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgY2xhc3MgQ3VzdG9tQXJyYXlEaWN0SW1wbDxUPiBpbXBsZW1lbnRzIEN1c3RvbUFycmF5RGljdDxUPiB7XG4gICAgcHVibGljIGRhdGE6IE1hcDxzdHJpbmcsIFRbXT4gPSBuZXcgTWFwKCk7XG5cbiAgICBwdWJsaWMgYWRkKGtleTogc3RyaW5nLCB2YWx1ZTogVCk6IHZvaWQge1xuICAgICAgICBsZXQgdmFsdWVzID0gdGhpcy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgICAgICAgIHZhbHVlcyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5kYXRhLnNldChrZXksIHZhbHVlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZhbHVlcy5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmUoa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZ2V0KGtleSk7XG4gICAgICAgIGlmICghdmFsdWVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWVzLnJlbW92ZSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXIoa2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcpOiBUW10gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5nZXQoa2V5KSB8fCBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBrZXlzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5kYXRhLmtleXMoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YS5kZWxldGUoa2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJBbGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YS5jbGVhcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb250YWlucyhrZXk6IHN0cmluZywgdmFsdWU6IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5nZXQoa2V5KT8uY29udGFpbnModmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3VudCgpOiBudW1iZXIge1xuICAgICAgICBsZXQgYW5zID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgdGhpcy5rZXlzKCkpIHtcbiAgICAgICAgICAgIGFucyArPSB0aGlzLmdldChrZXkpPy5sZW5ndGggPz8gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbnM7XG4gICAgfVxufVxuIiwgIi8qKlxuICogQHRvZG8gRG9jdW1lbnRhdGlvbiBpbmNvbXBsZXRlLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBjb25zdCBGaWxlRXh0ZW5zaW9uID0ge1xuICAgIF8zZ3A6ICczZ3AnLFxuICAgIGF2aWY6ICdhdmlmJyxcbiAgICBibXA6ICdibXAnLFxuICAgIGNhbnZhczogJ2NhbnZhcycsXG4gICAgZmxhYzogJ2ZsYWMnLFxuICAgIGdpZjogJ2dpZicsXG4gICAganBlZzogJ2pwZWcnLFxuICAgIGpwZzogJ2pwZycsXG4gICAgbTRhOiAnbTRhJyxcbiAgICBtZDogJ21kJyxcbiAgICBta3Y6ICdta3YnLFxuICAgIG1vdjogJ21vdicsXG4gICAgbXAzOiAnbXAzJyxcbiAgICBtcDQ6ICdtcDQnLFxuICAgIG9nYTogJ29nYScsXG4gICAgb2dnOiAnb2dnJyxcbiAgICBvZ3Y6ICdvZ3YnLFxuICAgIG9wdXM6ICdvcHVzJyxcbiAgICBwZGY6ICdwZGYnLFxuICAgIHBuZzogJ3BuZycsXG4gICAgc3ZnOiAnc3ZnJyxcbiAgICB3YXY6ICd3YXYnLFxuICAgIHdlYm06ICd3ZWJtJyxcbiAgICB3ZWJwOiAnd2VicCdcbn0gYXMgY29uc3Q7XG4iLCAiLyoqXG4gKiBAdG9kbyBEb2N1bWVudGF0aW9uIGluY29tcGxldGUuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGNvbnN0IEludGVybmFsUGx1Z2luTmFtZSA9IHtcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogQXVkaW8gcmVjb3JkZXIuXG4gICAgICovXG4gICAgQXVkaW9SZWNvcmRlcjogJ2F1ZGlvLXJlY29yZGVyJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogQmFja2xpbmtzLlxuICAgICAqL1xuICAgIEJhY2tsaW5rOiAnYmFja2xpbmsnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBCYXNlcy5cbiAgICAgKi9cbiAgICBCYXNlczogJ2Jhc2VzJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogQm9va21hcmtzLlxuICAgICAqL1xuICAgIEJvb2ttYXJrczogJ2Jvb2ttYXJrcycsXG4gICAgLyoqXG4gICAgICogUGx1Z2luIG5hbWUgaW4gVUk6IENhbnZhcy5cbiAgICAgKi9cbiAgICBDYW52YXM6ICdjYW52YXMnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBDb21tYW5kIHBhbGV0dGUuXG4gICAgICovXG4gICAgQ29tbWFuZFBhbGV0dGU6ICdjb21tYW5kLXBhbGV0dGUnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBEYWlseSBub3Rlcy5cbiAgICAgKi9cbiAgICBEYWlseU5vdGVzOiAnZGFpbHktbm90ZXMnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiAoaGlkZGVuKS5cbiAgICAgKi9cbiAgICBFZGl0b3JTdGF0dXM6ICdlZGl0b3Itc3RhdHVzJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogRmlsZXMuXG4gICAgICovXG4gICAgRmlsZUV4cGxvcmVyOiAnZmlsZS1leHBsb3JlcicsXG4gICAgLyoqXG4gICAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEZpbGUgcmVjb3ZlcnkuXG4gICAgICovXG4gICAgRmlsZVJlY292ZXJ5OiAnZmlsZS1yZWNvdmVyeScsXG4gICAgLyoqXG4gICAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEZvb3Rub3Rlcy5cbiAgICAgKi9cbiAgICBGb290bm90ZXM6ICdmb290bm90ZXMnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBTZWFyY2guXG4gICAgICovXG4gICAgR2xvYmFsU2VhcmNoOiAnZ2xvYmFsLXNlYXJjaCcsXG4gICAgLyoqXG4gICAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEdyYXBoIHZpZXcuXG4gICAgICovXG4gICAgR3JhcGg6ICdncmFwaCcsXG4gICAgLyoqXG4gICAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEZvcm1hdCBjb252ZXJ0ZXIuXG4gICAgICovXG4gICAgTWFya2Rvd25JbXBvcnRlcjogJ21hcmtkb3duLWltcG9ydGVyJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogTm90ZSBjb21wb3Nlci5cbiAgICAgKi9cbiAgICBOb3RlQ29tcG9zZXI6ICdub3RlLWNvbXBvc2VyJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogT3V0Z29pbmcgbGlua3MuXG4gICAgICovXG4gICAgT3V0Z29pbmdMaW5rOiAnb3V0Z29pbmctbGluaycsXG4gICAgLyoqXG4gICAgICogUGx1Z2luIG5hbWUgaW4gVUk6IE91dGxpbmUuXG4gICAgICovXG4gICAgT3V0bGluZTogJ291dGxpbmUnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBQYWdlIHByZXZpZXcuXG4gICAgICovXG4gICAgUGFnZVByZXZpZXc6ICdwYWdlLXByZXZpZXcnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBQcm9wZXJ0aWVzIHZpZXcuXG4gICAgICovXG4gICAgUHJvcGVydGllczogJ3Byb3BlcnRpZXMnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBQdWJsaXNoLlxuICAgICAqL1xuICAgIFB1Ymxpc2g6ICdwdWJsaXNoJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogUmFuZG9tIG5vdGUuXG4gICAgICovXG4gICAgUmFuZG9tTm90ZTogJ3JhbmRvbS1ub3RlJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogU2xhc2ggY29tbWFuZHMuXG4gICAgICovXG4gICAgU2xhc2hDb21tYW5kOiAnc2xhc2gtY29tbWFuZCcsXG4gICAgLyoqXG4gICAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFNsaWRlcy5cbiAgICAgKi9cbiAgICBTbGlkZXM6ICdzbGlkZXMnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBRdWljayBTd2l0Y2hlci5cbiAgICAgKi9cbiAgICBTd2l0Y2hlcjogJ3N3aXRjaGVyJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogU3luYy5cbiAgICAgKi9cbiAgICBTeW5jOiAnc3luYycsXG4gICAgLyoqXG4gICAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFRhZ3Mgdmlldy5cbiAgICAgKi9cbiAgICBUYWdQYW5lOiAndGFnLXBhbmUnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBUZW1wbGF0ZXMuXG4gICAgICovXG4gICAgVGVtcGxhdGVzOiAndGVtcGxhdGVzJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogV2ViIHZpZXdlci5cbiAgICAgKi9cbiAgICBXZWJ2aWV3ZXI6ICd3ZWJ2aWV3ZXInLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBXb3JkIGNvdW50LlxuICAgICAqL1xuICAgIFdvcmRDb3VudDogJ3dvcmQtY291bnQnLFxuICAgIC8qKlxuICAgICAqIFBsdWdpbiBuYW1lIGluIFVJOiBXb3Jrc3BhY2VzLlxuICAgICAqL1xuICAgIFdvcmtzcGFjZXM6ICd3b3Jrc3BhY2VzJyxcbiAgICAvKipcbiAgICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogVW5pcXVlIG5vdGUgY3JlYXRvci5cbiAgICAgKi9cbiAgICBaa1ByZWZpeGVyOiAnemstcHJlZml4ZXInXG59IGFzIGNvbnN0O1xuIiwgImltcG9ydCB7IEludGVybmFsUGx1Z2luTmFtZSB9IGZyb20gJy4vSW50ZXJuYWxQbHVnaW5OYW1lLnRzJztcblxuLyoqXG4gKiBAdG9kbyBEb2N1bWVudGF0aW9uIGluY29tcGxldGUuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFZpZXdUeXBlID0ge1xuICAgIEFsbFByb3BlcnRpZXM6ICdhbGwtcHJvcGVydGllcycsXG4gICAgQXVkaW86ICdhdWRpbycsXG4gICAgQmFja2xpbms6IEludGVybmFsUGx1Z2luTmFtZS5CYWNrbGluayxcbiAgICBCYXNlczogSW50ZXJuYWxQbHVnaW5OYW1lLkJhc2VzLFxuICAgIEJvb2ttYXJrczogSW50ZXJuYWxQbHVnaW5OYW1lLkJvb2ttYXJrcyxcbiAgICBDYW52YXM6IEludGVybmFsUGx1Z2luTmFtZS5DYW52YXMsXG4gICAgRW1wdHk6ICdlbXB0eScsXG4gICAgRmlsZUV4cGxvcmVyOiBJbnRlcm5hbFBsdWdpbk5hbWUuRmlsZUV4cGxvcmVyLFxuICAgIEZpbGVQcm9wZXJ0aWVzOiAnZmlsZS1wcm9wZXJ0aWVzJyxcbiAgICBHcmFwaDogSW50ZXJuYWxQbHVnaW5OYW1lLkdyYXBoLFxuICAgIEltYWdlOiAnaW1hZ2UnLFxuICAgIExvY2FsR3JhcGg6ICdsb2NhbGdyYXBoJyxcbiAgICBNYXJrZG93bjogJ21hcmtkb3duJyxcbiAgICBPdXRnb2luZ0xpbms6IEludGVybmFsUGx1Z2luTmFtZS5PdXRnb2luZ0xpbmssXG4gICAgT3V0bGluZTogSW50ZXJuYWxQbHVnaW5OYW1lLk91dGxpbmUsXG4gICAgUGRmOiAncGRmJyxcbiAgICBSZWxlYXNlTm90ZXM6ICdyZWxlYXNlLW5vdGVzJyxcbiAgICBTZWFyY2g6ICdzZWFyY2gnLFxuICAgIFN5bmM6ICdzeW5jJyxcbiAgICBUYWJsZTogJ3RhYmxlJyxcbiAgICBUYWc6ICd0YWcnLFxuICAgIFZpZGVvOiAndmlkZW8nLFxuICAgIFdlYnZpZXdlcjogJ3dlYnZpZXdlcicsXG4gICAgV2Vidmlld2VySGlzdG9yeTogJ3dlYnZpZXdlci1oaXN0b3J5J1xufSBhcyBjb25zdDtcbiIsICJpbXBvcnQge1xuICAgIEFwcFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEFwcENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWxzL0NvbnN0cnVjdG9ycy9BcHBDb25zdHJ1Y3Rvci50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBBcHAgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEFwcCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwQ29uc3RydWN0b3IoKTogQXBwQ29uc3RydWN0b3Ige1xuICAgIHJldHVybiBBcHAgYXMgQXBwQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsUGx1Z2luQ29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi9pbnRlcm5hbHMvQ29uc3RydWN0b3JzL0ludGVybmFsUGx1Z2luQ29uc3RydWN0b3IudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgSW50ZXJuYWxQbHVnaW4gY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgSW50ZXJuYWxQbHVnaW4gY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEludGVybmFsUGx1Z2luQ29uc3RydWN0b3I8SW5zdGFuY2U+KGFwcDogQXBwKTogSW50ZXJuYWxQbHVnaW5Db25zdHJ1Y3RvcjxJbnN0YW5jZT4ge1xuICAgIGNvbnN0IGFueVBsdWdpbiA9IE9iamVjdC52YWx1ZXMoYXBwLmludGVybmFsUGx1Z2lucy5wbHVnaW5zKVswXTtcbiAgICBpZiAoIWFueVBsdWdpbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGludGVybmFsIHBsdWdpbiBmb3VuZCcpO1xuICAgIH1cbiAgICByZXR1cm4gYW55UGx1Z2luLmNvbnN0cnVjdG9yIGFzIEludGVybmFsUGx1Z2luQ29uc3RydWN0b3I8SW5zdGFuY2U+O1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbFBsdWdpbnNDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uL2ludGVybmFscy9Db25zdHJ1Y3RvcnMvSW50ZXJuYWxQbHVnaW5zQ29uc3RydWN0b3IudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgSW50ZXJuYWxQbHVnaW5zIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIEludGVybmFsUGx1Z2lucyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW50ZXJuYWxQbHVnaW5zQ29uc3RydWN0b3IoYXBwOiBBcHApOiBJbnRlcm5hbFBsdWdpbnNDb25zdHJ1Y3RvciB7XG4gICAgcmV0dXJuIGFwcC5pbnRlcm5hbFBsdWdpbnMuY29uc3RydWN0b3IgYXMgSW50ZXJuYWxQbHVnaW5zQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgICBURmlsZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFRGaWxlQ29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi9pbnRlcm5hbHMvQ29uc3RydWN0b3JzL1RGaWxlQ29uc3RydWN0b3IudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgVEZpbGUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFRGaWxlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRURmlsZUNvbnN0cnVjdG9yKCk6IFRGaWxlQ29uc3RydWN0b3Ige1xuICAgIHJldHVybiBURmlsZSBhcyBURmlsZUNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gICAgVEZvbGRlclxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFRGb2xkZXJDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uL2ludGVybmFscy9Db25zdHJ1Y3RvcnMvVEZvbGRlckNvbnN0cnVjdG9yLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFRGb2xkZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFRGb2xkZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRGb2xkZXJDb25zdHJ1Y3RvcigpOiBURm9sZGVyQ29uc3RydWN0b3Ige1xuICAgIHJldHVybiBURm9sZGVyIGFzIFRGb2xkZXJDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgVmlld1R5cGVUeXBlIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWxzL1ZpZXdzL1ZpZXdUeXBlVHlwZS5kLnRzJztcbmltcG9ydCB0eXBlIHsgVmlld1R5cGVWaWV3Q29uc3RydWN0b3JNYXBwaW5nIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWxzL1ZpZXdzL1ZpZXdUeXBlVmlld0NvbnN0cnVjdG9yTWFwcGluZy5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIHZpZXcgY29uc3RydWN0b3IgYnkgdmlldyB0eXBlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHBhcmFtIHZpZXdUeXBlIC0gVGhlIHZpZXcgdHlwZS5cbiAqIEByZXR1cm5zIFRoZSB2aWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlPFRWaWV3VHlwZSBleHRlbmRzIFZpZXdUeXBlVHlwZT4oXG4gICAgYXBwOiBBcHAsXG4gICAgdmlld1R5cGU6IFRWaWV3VHlwZVxuKTogVmlld1R5cGVWaWV3Q29uc3RydWN0b3JNYXBwaW5nW1RWaWV3VHlwZV0ge1xuICAgIGNvbnN0IGxlYWYgPSBhcHAud29ya3NwYWNlLmNyZWF0ZUxlYWZJblRhYkdyb3VwKCk7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgdmlld0NyZWF0b3IgPSBhcHAudmlld1JlZ2lzdHJ5LmdldFZpZXdDcmVhdG9yQnlUeXBlKHZpZXdUeXBlKTtcbiAgICAgICAgaWYgKCF2aWV3Q3JlYXRvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWaWV3IGNyZWF0b3Igbm90IGZvdW5kJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdmlldyA9IHZpZXdDcmVhdG9yKGxlYWYpO1xuICAgICAgICByZXR1cm4gdmlldy5jb25zdHJ1Y3RvciBhcyBWaWV3VHlwZVZpZXdDb25zdHJ1Y3Rvck1hcHBpbmdbVFZpZXdUeXBlXTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgICBsZWFmLmRldGFjaCgpO1xuICAgIH1cbn1cbiIsICJpbXBvcnQge1xuICAgIHR5cGUgQXBwLFxuICAgIFRGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7IGdldFRGaWxlQ29uc3RydWN0b3IgfSBmcm9tICcuLi9Db25zdHJ1Y3RvcnMvZ2V0VEZpbGVDb25zdHJ1Y3Rvci50cyc7XG5pbXBvcnQgeyBwYXJlbnRGb2xkZXJQYXRoIH0gZnJvbSAnLi4vVXRpbHMvUGF0aFV0aWxzLnRzJztcbmltcG9ydCB7IGNyZWF0ZVRGb2xkZXJJbnN0YW5jZSB9IGZyb20gJy4vY3JlYXRlVEZvbGRlckluc3RhbmNlLnRzJztcblxuLyoqXG4gKiBDcmVhdGVzIGFuZCBwcm9wZXJseSBpbml0aWFsaXplcyB0aGUgaW5zdGFuY2Ugb2YgVEZpbGUgZXZlbiB0aGUgdW5kZXJseWluZyBmaWxlIGRvZXMgbm90IGV4aXN0LlxuICogVGhpcyBkb2Vzbid0IGNyZWF0ZSB0aGUgbWlzc2luZyBmaWxlIG9uIHRoZSBmaWxlIHN5c3RlbS5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVEZpbGVJbnN0YW5jZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogVEZpbGUge1xuICAgIGxldCBmaWxlID0gYXBwLnZhdWx0LmdldEZpbGVCeVBhdGgocGF0aCk7XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfVxuXG4gICAgZmlsZSA9IG5ldyAoZ2V0VEZpbGVDb25zdHJ1Y3RvcigpKShhcHAudmF1bHQsIHBhdGgpO1xuICAgIGZpbGUucGFyZW50ID0gY3JlYXRlVEZvbGRlckluc3RhbmNlKGFwcCwgcGFyZW50Rm9sZGVyUGF0aChwYXRoKSk7XG4gICAgZmlsZS5kZWxldGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gZmlsZTtcbn1cbiIsICIvKipcbiAqIEdldCB0aGUgcGFyZW50IGZvbGRlciBwYXRoIG9mIGEgZ2l2ZW4gcGF0aC5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIGdldCB0aGUgcGFyZW50IGZvbGRlciBwYXRoIG9mLlxuICogQHJldHVybnMgVGhlIHBhcmVudCBmb2xkZXIgcGF0aC5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyZW50Rm9sZGVyUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBwYXRoLnJlcGxhY2UoL1xcLz9bXlxcL10qJC8sICcnKSB8fCAnLyc7XG59XG4iLCAiaW1wb3J0IHtcbiAgICB0eXBlIEFwcCxcbiAgICBURm9sZGVyXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7IGdldFRGb2xkZXJDb25zdHJ1Y3RvciB9IGZyb20gJy4uL0NvbnN0cnVjdG9ycy9nZXRURm9sZGVyQ29uc3RydWN0b3IudHMnO1xuaW1wb3J0IHsgcGFyZW50Rm9sZGVyUGF0aCB9IGZyb20gJy4uL1V0aWxzL1BhdGhVdGlscy50cyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgcHJvcGVybHkgaW5pdGlhbGl6ZXMgdGhlIGluc3RhbmNlIG9mIFRGb2xkZXIgZXZlbiB0aGUgdW5kZXJseWluZyBmb2xkZXIgZG9lcyBub3QgZXhpc3QuXG4gKiBUaGlzIGRvZXNuJ3QgY3JlYXRlIHRoZSBtaXNzaW5nIGZvbGRlciBvbiB0aGUgZmlsZSBzeXN0ZW0uXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRGb2xkZXJJbnN0YW5jZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogVEZvbGRlciB7XG4gICAgbGV0IGZvbGRlciA9IGFwcC52YXVsdC5nZXRGb2xkZXJCeVBhdGgocGF0aCk7XG4gICAgaWYgKGZvbGRlcikge1xuICAgICAgICByZXR1cm4gZm9sZGVyO1xuICAgIH1cblxuICAgIGZvbGRlciA9IG5ldyAoZ2V0VEZvbGRlckNvbnN0cnVjdG9yKCkpKGFwcC52YXVsdCwgcGF0aCk7XG4gICAgZm9sZGVyLnBhcmVudCA9IGNyZWF0ZVRGb2xkZXJJbnN0YW5jZShhcHAsIHBhcmVudEZvbGRlclBhdGgocGF0aCkpO1xuICAgIGZvbGRlci5kZWxldGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gZm9sZGVyO1xufVxuIiwgImltcG9ydCB0eXBlIHsgTWVybWFpZCB9IGZyb20gJ21lcm1haWQnIHdpdGggeyAncmVzb2x1dGlvbi1tb2RlJzogJ2ltcG9ydCcgfTtcbmltcG9ydCB7IGxvYWRNZXJtYWlkIGFzIGxvYWRNZXJtYWlkT3JpZ2luYWwgfSBmcm9tICdvYnNpZGlhbic7XG5cbi8qKlxuICogTG9hZCBNZXJtYWlkIGFuZCByZXR1cm4gYSBwcm9taXNlIHRvIHRoZSBnbG9iYWwgbWVybWFpZCBvYmplY3QuXG4gKiBDYW4gYWxzbyB1c2UgYHdpbmRvdy5tZXJtYWlkYCBhZnRlciB0aGlzIHByb21pc2UgcmVzb2x2ZXMgdG8gZ2V0IHRoZSBzYW1lIHJlZmVyZW5jZS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgZ2xvYmFsIGB3aW5kb3cubWVybWFpZGAgb2JqZWN0LlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vbWVybWFpZC5qcy5vcmcvIHwgT2ZmaWNpYWwgTWVybWFpZCBkb2N1bWVudGF0aW9ufS5cbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkTWVybWFpZCgpOiBQcm9taXNlPE1lcm1haWQ+IHtcbiAgICByZXR1cm4gKGF3YWl0IGxvYWRNZXJtYWlkT3JpZ2luYWwoKSkgYXMgTWVybWFpZDtcbn1cbiIsICJpbXBvcnQgeyBsb2FkUGRmSnMgYXMgbG9hZFBkZkpzT3JpZ2luYWwgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgcGRmanNMaWIgfSBmcm9tICdwZGZqcy1kaXN0JztcblxuLyoqXG4gKiBMb2FkIFBERi5qcyBhbmQgcmV0dXJuIGEgcHJvbWlzZSB0byB0aGUgZ2xvYmFsIHBkZmpzTGliIG9iamVjdC5cbiAqIENhbiBhbHNvIHVzZSBgd2luZG93LnBkZmpzTGliYCBhZnRlciB0aGlzIHByb21pc2UgcmVzb2x2ZXMgdG8gZ2V0IHRoZSBzYW1lIHJlZmVyZW5jZS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgZ2xvYmFsIGB3aW5kb3cucGRmanNMaWJgIG9iamVjdC5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL21vemlsbGEuZ2l0aHViLmlvL3BkZi5qcy8gfCBPZmZpY2lhbCBQREYuanMgZG9jdW1lbnRhdGlvbn0uXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFBkZkpzKCk6IFByb21pc2U8dHlwZW9mIHBkZmpzTGliPiB7XG4gICAgcmV0dXJuIChhd2FpdCBsb2FkUGRmSnNPcmlnaW5hbCgpKSBhcyB0eXBlb2YgcGRmanNMaWI7XG59XG4iLCAiaW1wb3J0IHsgbG9hZFByaXNtIGFzIGxvYWRQcmlzbU9yaWdpbmFsIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIFByaXNtIH0gZnJvbSAncHJpc21qcyc7XG5cbi8qKlxuICogTG9hZCBQcmlzbS5qcyBhbmQgcmV0dXJuIGEgcHJvbWlzZSB0byB0aGUgZ2xvYmFsIFByaXNtIG9iamVjdC5cbiAqIENhbiBhbHNvIHVzZSBgd2luZG93LlByaXNtYCBhZnRlciB0aGlzIHByb21pc2UgcmVzb2x2ZXMgdG8gZ2V0IHRoZSBzYW1lIHJlZmVyZW5jZS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgZ2xvYmFsIGB3aW5kb3cuUHJpc21gIG9iamVjdC5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL3ByaXNtanMuY29tLyB8IE9mZmljaWFsIFByaXNtIGRvY3VtZW50YXRpb259LlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRQcmlzbSgpOiBQcm9taXNlPHR5cGVvZiBQcmlzbT4ge1xuICAgIHJldHVybiAoYXdhaXQgbG9hZFByaXNtT3JpZ2luYWwoKSkgYXMgdHlwZW9mIFByaXNtO1xufVxuIiwgImltcG9ydCB0eXBlIHtcbiAgICBSZWZlcmVuY2UsXG4gICAgUmVmZXJlbmNlQ2FjaGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSByZWZlcmVuY2UgaXMgYSByZWZlcmVuY2UgY2FjaGUuXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZSAtIFRoZSByZWZlcmVuY2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSByZWZlcmVuY2UgaXMgYSByZWZlcmVuY2UgY2FjaGUuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlOiBSZWZlcmVuY2UpOiByZWZlcmVuY2UgaXMgUmVmZXJlbmNlQ2FjaGUge1xuICAgIHJldHVybiAhIShyZWZlcmVuY2UgYXMgUGFydGlhbDxSZWZlcmVuY2VDYWNoZT4pLnBvc2l0aW9uO1xufVxuIiwgImltcG9ydCB0eXBlIHtcbiAgICBFbWJlZENhY2hlLFxuICAgIFJlZmVyZW5jZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgeyBpc1JlZmVyZW5jZUNhY2hlIH0gZnJvbSAnLi9pc1JlZmVyZW5jZUNhY2hlLnRzJztcblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgcmVmZXJlbmNlIGlzIGFuIGVtYmVkIGNhY2hlLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2UgLSBUaGUgcmVmZXJlbmNlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcmVmZXJlbmNlIGlzIGFuIGVtYmVkIGNhY2hlLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VtYmVkQ2FjaGUocmVmZXJlbmNlOiBSZWZlcmVuY2UpOiByZWZlcmVuY2UgaXMgRW1iZWRDYWNoZSB7XG4gICAgcmV0dXJuIGlzUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKSAmJiByZWZlcmVuY2Uub3JpZ2luYWxbMF0gPT09ICchJztcbn1cbiIsICJpbXBvcnQgdHlwZSB7XG4gICAgRnJvbnRtYXR0ZXJMaW5rQ2FjaGUsXG4gICAgUmVmZXJlbmNlXG59IGZyb20gJ29ic2lkaWFuJztcblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgcmVmZXJlbmNlIGlzIGEgZnJvbnRtYXR0ZXIgbGluayBjYWNoZS5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHJlZmVyZW5jZSBpcyBhIGZyb250bWF0dGVyIGxpbmsgY2FjaGUuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUocmVmZXJlbmNlOiBSZWZlcmVuY2UpOiByZWZlcmVuY2UgaXMgRnJvbnRtYXR0ZXJMaW5rQ2FjaGUge1xuICAgIHJldHVybiAhIShyZWZlcmVuY2UgYXMgUGFydGlhbDxGcm9udG1hdHRlckxpbmtDYWNoZT4pLmtleTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7XG4gICAgTGlua0NhY2hlLFxuICAgIFJlZmVyZW5jZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgeyBpc1JlZmVyZW5jZUNhY2hlIH0gZnJvbSAnLi9pc1JlZmVyZW5jZUNhY2hlLnRzJztcblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgcmVmZXJlbmNlIGlzIGEgbGluayBjYWNoZS5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHJlZmVyZW5jZSBpcyBhIGxpbmsgY2FjaGUuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTGlua0NhY2hlKHJlZmVyZW5jZTogUmVmZXJlbmNlKTogcmVmZXJlbmNlIGlzIExpbmtDYWNoZSB7XG4gICAgcmV0dXJuIGlzUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKSAmJiByZWZlcmVuY2Uub3JpZ2luYWxbMF0gIT09ICchJztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7O0FDUU8sSUFBTSxzQkFBTixNQUEyRDtBQUFBLEVBQ3ZELE9BQXlCLG9CQUFJLElBQUk7QUFBQSxFQUVqQyxJQUFJLEtBQWEsT0FBZ0I7QUFDcEMsUUFBSSxTQUFTLEtBQUssSUFBSSxHQUFHO0FBQ3pCLFFBQUksQ0FBQyxRQUFRO0FBQ1QsZUFBUyxDQUFDO0FBQ1YsV0FBSyxLQUFLLElBQUksS0FBSyxNQUFNO0FBQUEsSUFDN0I7QUFFQSxRQUFJLENBQUMsT0FBTyxTQUFTLEtBQUssR0FBRztBQUN6QixhQUFPLEtBQUssS0FBSztBQUFBLElBQ3JCO0FBQUEsRUFDSjtBQUFBLEVBRU8sT0FBTyxLQUFhLE9BQWdCO0FBQ3ZDLFVBQU0sU0FBUyxLQUFLLElBQUksR0FBRztBQUMzQixRQUFJLENBQUMsUUFBUTtBQUNUO0FBQUEsSUFDSjtBQUNBLFdBQU8sT0FBTyxLQUFLO0FBRW5CLFFBQUksT0FBTyxXQUFXLEdBQUc7QUFDckIsV0FBSyxNQUFNLEdBQUc7QUFBQSxJQUNsQjtBQUFBLEVBQ0o7QUFBQSxFQUVPLElBQUksS0FBeUI7QUFDaEMsV0FBTyxLQUFLLEtBQUssSUFBSSxHQUFHLEtBQUs7QUFBQSxFQUNqQztBQUFBLEVBRU8sT0FBaUI7QUFDcEIsV0FBTyxNQUFNLEtBQUssS0FBSyxLQUFLLEtBQUssQ0FBQztBQUFBLEVBQ3RDO0FBQUEsRUFFTyxNQUFNLEtBQW1CO0FBQzVCLFNB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LE9BQU87QUFBQSxFQUNoQjtBQUNKOzs7QUM3QkEsSUFBQUMsbUJBR087OztBQ01BLFNBQVMsaUJBQWlCLE1BQXNCO0FBQ25ELFNBQU8sS0FBSyxRQUFRLGNBQWMsRUFBRSxLQUFLO0FBQzdDOzs7QUNYQSxJQUFBQyxtQkFHTztBQVdBLFNBQVMsc0JBQXNCLEtBQVUsTUFBdUI7QUFDbkUsTUFBSSxTQUFTLElBQUksTUFBTSxnQkFBZ0IsSUFBSTtBQUMzQyxNQUFJLFFBQVE7QUFDUixXQUFPO0FBQUEsRUFDWDtBQUVBLFdBQVMsS0FBSyxzQkFBc0IsR0FBRyxJQUFJLE9BQU8sSUFBSTtBQUN0RCxTQUFPLFNBQVMsc0JBQXNCLEtBQUssaUJBQWlCLElBQUksQ0FBQztBQUNqRSxTQUFPLFVBQVU7QUFDakIsU0FBTztBQUNYOzs7QUZUTyxTQUFTLG9CQUFvQixLQUFVLE1BQXFCO0FBQy9ELE1BQUksT0FBTyxJQUFJLE1BQU0sY0FBYyxJQUFJO0FBQ3ZDLE1BQUksTUFBTTtBQUNOLFdBQU87QUFBQSxFQUNYO0FBRUEsU0FBTyxLQUFLLG9CQUFvQixHQUFHLElBQUksT0FBTyxJQUFJO0FBQ2xELE9BQUssU0FBUyxzQkFBc0IsS0FBSyxpQkFBaUIsSUFBSSxDQUFDO0FBQy9ELE9BQUssVUFBVTtBQUNmLFNBQU87QUFDWDs7O0FHeEJBLElBQUFDLG1CQUFtRDtBQVluRCxlQUFzQixjQUFnQztBQUNsRCxTQUFRLFVBQU0saUJBQUFDLGFBQW9CO0FBQ3RDOzs7QUNmQSxJQUFBQyxtQkFBK0M7QUFhL0MsZUFBc0IsWUFBc0M7QUFDeEQsU0FBUSxVQUFNLGlCQUFBQyxXQUFrQjtBQUNwQzs7O0FDZkEsSUFBQUMsbUJBQStDO0FBYS9DLGVBQXNCLFlBQW1DO0FBQ3JELFNBQVEsVUFBTSxpQkFBQUMsV0FBa0I7QUFDcEM7OztBQ0RPLFNBQVMsaUJBQWlCLFdBQW1EO0FBQ2hGLFNBQU8sQ0FBQyxDQUFFLFVBQXNDO0FBQ3BEOzs7QUNETyxTQUFTLGFBQWEsV0FBK0M7QUFDeEUsU0FBTyxpQkFBaUIsU0FBUyxLQUFLLFVBQVUsU0FBUyxDQUFDLE1BQU07QUFDcEU7OztBQ0hPLFNBQVMsdUJBQXVCLFdBQXlEO0FBQzVGLFNBQU8sQ0FBQyxDQUFFLFVBQTRDO0FBQzFEOzs7QUNETyxTQUFTLFlBQVksV0FBOEM7QUFDdEUsU0FBTyxpQkFBaUIsU0FBUyxLQUFLLFVBQVUsU0FBUyxDQUFDLE1BQU07QUFDcEU7IiwKICAibmFtZXMiOiBbImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAibG9hZE1lcm1haWRPcmlnaW5hbCIsICJpbXBvcnRfb2JzaWRpYW4iLCAibG9hZFBkZkpzT3JpZ2luYWwiLCAiaW1wb3J0X29ic2lkaWFuIiwgImxvYWRQcmlzbU9yaWdpbmFsIl0KfQo=
1255
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9pbmRleC50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NsYXNzZXMvQ3VzdG9tQXJyYXlEaWN0SW1wbC50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0YW50cy9GaWxlRXh0ZW5zaW9uLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RhbnRzL0ludGVybmFsUGx1Z2luTmFtZS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0YW50cy9WaWV3VHlwZS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEFic3RyYWN0VGV4dENvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0QXBwQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRCYXNlQ29tcG9uZW50Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRCYXNlc0VudHJ5Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRCYXNlc0VudHJ5R3JvdXBDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEJhc2VzUXVlcnlSZXN1bHRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEJhc2VzVmlld0NvbmZpZ0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0Qm9vbGVhblZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRCdXR0b25Db21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldENhcGFjaXRvckFkYXB0ZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldENvbG9yQ29tcG9uZW50Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldERhdGVWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0RHJvcGRvd25Db21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldER1cmF0aW9uVmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEVkaXRhYmxlRmlsZVZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEVkaXRvckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0RXZlbnRzQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRFeHRyYUJ1dHRvbkNvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0RmlsZU1hbmFnZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEZpbGVTeXN0ZW1BZGFwdGVyQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRGaWxlVmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEZ1enp5U3VnZ2VzdE1vZGFsQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRIb3ZlclBvcG92ZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEhUTUxWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0SWNvblZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRJbWFnZVZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRLZXltYXBDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldExpbmtWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TGlzdFZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRNYXJrZG93blByZXZpZXdSZW5kZXJlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25QcmV2aWV3Vmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25SZW5kZXJDaGlsZENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25SZW5kZXJlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25WaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRNZW51Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRNZW51SXRlbUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWVudVNlcGFyYXRvckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWV0YWRhdGFDYWNoZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TW9kYWxDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1vbWVudEZvcm1hdENvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0Tm90aWNlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXROb3ROdWxsVmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE51bGxWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TnVtYmVyVmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE9iamVjdFZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRQcm9ncmVzc0JhckNvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0UXVlcnlDb250cm9sbGVyQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRSZWdFeHBWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0UmVsYXRpdmVEYXRlVmFsdWVDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFJlbmRlckNvbnRleHRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFNjb3BlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTZWFyY2hDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFNlY3JldENvbXBvbmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0U2VjcmV0U3RvcmFnZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0U2V0dGluZ0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0U2V0dGluZ0dyb3VwQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTZXR0aW5nVGFiQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTbGlkZXJDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFN0cmluZ1ZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRUQWJzdHJhY3RGaWxlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRUYWdWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VGFza3NDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRleHRBcmVhQ29tcG9uZW50Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRUZXh0Q29tcG9uZW50Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRURmlsZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VEZvbGRlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VG9nZ2xlQ29tcG9uZW50Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRVcmxWYWx1ZUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VmFsdWVDb21wb25lbnRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFZhbHVlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRWYXVsdENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VDb250YWluZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZUZsb2F0aW5nQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VJdGVtQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VMZWFmQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VNb2JpbGVEcmF3ZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZVBhcmVudENvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlUmliYm9uQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VSb290Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VTaWRlZG9ja0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlU3BsaXRDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZVRhYnNDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZVdpbmRvd0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRBcHBNZW51QmFyTWFuYWdlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRBcHBTZXR0aW5nQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldENsaUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRDb21tYW5kc0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRDdXN0b21DU1NDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RHJhZ01hbmFnZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RWRpdG9yU3VnZ2VzdHNDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RW1iZWRSZWdpc3RyeUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRGb2xkTWFuYWdlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRGcmFtZURvbUNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRIb3RrZXlNYW5hZ2VyQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldE1ldGFkYXRhVHlwZU1hbmFnZXJDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0T2JzaWRpYW5ET01Db25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0UGx1Z2luc0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRSZWNlbnRGaWxlVHJhY2tlckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRTaGFyZVJlY2VpdmVyQ29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldFN0YXR1c0JhckNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRWaWV3UmVnaXN0cnlDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0V29ya3NwYWNlTGVhZkhpc3RvcnlDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9nZXRJbnRlcm5hbFBsdWdpbkNvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL2dldEludGVybmFsUGx1Z2luc0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRBbGxQcm9wZXJ0aWVzVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRBdWRpb1ZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0QmFja2xpbmtWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEJhc2VzVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRCb29rbWFya3NWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldENhbnZhc1ZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0RW1wdHlWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEZpbGVFeHBsb3JlclZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0RmlsZVByb3BlcnRpZXNWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEdyYXBoVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRJbWFnZVZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0TG9jYWxHcmFwaFZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0T3V0Z29pbmdMaW5rVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRPdXRsaW5lVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRQZGZWaWV3Q29uc3RydWN0b3IudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldFJlbGVhc2VOb3Rlc1ZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0U2VhcmNoVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRTeW5jVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRUYWJsZVZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0VGFnVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRWaWRlb1ZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0V2Vidmlld2VySGlzdG9yeVZpZXdDb25zdHJ1Y3Rvci50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0V2Vidmlld2VyVmlld0NvbnN0cnVjdG9yLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvZnVuY3Rpb25zL2NyZWF0ZVRGaWxlSW5zdGFuY2UudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy91dGlscy9QYXRoVXRpbHMudHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9mdW5jdGlvbnMvY3JlYXRlVEZvbGRlckluc3RhbmNlLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvZnVuY3Rpb25zL2xvYWRNZXJtYWlkLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvZnVuY3Rpb25zL2xvYWRQZGZKcy50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2Z1bmN0aW9ucy9sb2FkUHJpc20udHMiLCAiLi4vLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy90eXBlLWd1YXJkcy9pc1JlZmVyZW5jZUNhY2hlLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvdHlwZS1ndWFyZHMvaXNFbWJlZENhY2hlLnRzIiwgIi4uLy4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvdHlwZS1ndWFyZHMvaXNGcm9udG1hdHRlckxpbmtDYWNoZS50cyIsICIuLi8uLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL3R5cGUtZ3VhcmRzL2lzTGlua0NhY2hlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogZnJvbSAnLi9jbGFzc2VzL0N1c3RvbUFycmF5RGljdEltcGwudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMvRmlsZUV4dGVuc2lvbi50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cy9JbnRlcm5hbFBsdWdpbk5hbWUudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRBYnN0cmFjdFRleHRDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEFwcENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0QmFzZUNvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0QmFzZXNFbnRyeUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0QmFzZXNFbnRyeUdyb3VwQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRCYXNlc1F1ZXJ5UmVzdWx0Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRCYXNlc1ZpZXdDb25maWdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEJvb2xlYW5WYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0QnV0dG9uQ29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRDYXBhY2l0b3JBZGFwdGVyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRDb2xvckNvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0Q29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXREYXRlVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldERyb3Bkb3duQ29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXREdXJhdGlvblZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRFZGl0YWJsZUZpbGVWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRFZGl0b3JDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEV2ZW50c0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0RXh0cmFCdXR0b25Db21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEZpbGVNYW5hZ2VyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRGaWxlU3lzdGVtQWRhcHRlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0RmlsZVZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRGdXp6eVN1Z2dlc3RNb2RhbENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0SG92ZXJQb3BvdmVyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRIVE1MVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldEljb25WYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0SW1hZ2VWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0S2V5bWFwQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRMaW5rVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldExpc3RWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWFya2Rvd25QcmV2aWV3UmVuZGVyZXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1hcmtkb3duUHJldmlld1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1hcmtkb3duUmVuZGVyQ2hpbGRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1hcmtkb3duUmVuZGVyZXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1hcmtkb3duVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWVudUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0TWVudUl0ZW1Db25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1lbnVTZXBhcmF0b3JDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1ldGFkYXRhQ2FjaGVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE1vZGFsQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRNb21lbnRGb3JtYXRDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE5vdGljZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0Tm90TnVsbFZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXROdWxsVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldE51bWJlclZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRPYmplY3RWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0UHJvZ3Jlc3NCYXJDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFF1ZXJ5Q29udHJvbGxlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0UmVnRXhwVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFJlbGF0aXZlRGF0ZVZhbHVlQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRSZW5kZXJDb250ZXh0Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTY29wZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0U2VhcmNoQ29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTZWNyZXRDb21wb25lbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFNlY3JldFN0b3JhZ2VDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFNldHRpbmdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFNldHRpbmdHcm91cENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0U2V0dGluZ1RhYkNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0U2xpZGVyQ29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRTdHJpbmdWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VEFic3RyYWN0RmlsZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VGFnVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRhc2tzQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRUZXh0QXJlYUNvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VGV4dENvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VEZpbGVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRGb2xkZXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRvZ2dsZUNvbXBvbmVudENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VXJsVmFsdWVDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFZhbHVlQ29tcG9uZW50Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRWYWx1ZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0VmF1bHRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlQ29udGFpbmVyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VGbG9hdGluZ0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlSXRlbUNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlTGVhZkNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlTW9iaWxlRHJhd2VyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VQYXJlbnRDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZVJpYmJvbkNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlUm9vdENvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2F1Z21lbnRhdGlvbnMvZ2V0V29ya3NwYWNlU2lkZWRvY2tDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFdvcmtzcGFjZVNwbGl0Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VUYWJzQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRXb3Jrc3BhY2VXaW5kb3dDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0QXBwTWVudUJhck1hbmFnZXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0QXBwU2V0dGluZ0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRDbGlDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0Q29tbWFuZHNDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0Q3VzdG9tQ1NTQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldERyYWdNYW5hZ2VyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldEVkaXRvclN1Z2dlc3RzQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldEVtYmVkUmVnaXN0cnlDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0Rm9sZE1hbmFnZXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0RnJhbWVEb21Db25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0SG90a2V5TWFuYWdlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRNZXRhZGF0YVR5cGVNYW5hZ2VyQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldE9ic2lkaWFuRE9NQ29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldFBsdWdpbnNDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0UmVjZW50RmlsZVRyYWNrZXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0U2hhcmVSZWNlaXZlckNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy9nZXRTdGF0dXNCYXJDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvZ2V0Vmlld1JlZ2lzdHJ5Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2dldFdvcmtzcGFjZUxlYWZIaXN0b3J5Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvZ2V0SW50ZXJuYWxQbHVnaW5Db25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9nZXRJbnRlcm5hbFBsdWdpbnNDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0QWxsUHJvcGVydGllc1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0QXVkaW9WaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEJhY2tsaW5rVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRCYXNlc1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0Qm9va21hcmtzVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRDYW52YXNWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEVtcHR5Vmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRGaWxlRXhwbG9yZXJWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldEZpbGVQcm9wZXJ0aWVzVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRHcmFwaFZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0SW1hZ2VWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldExvY2FsR3JhcGhWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldE91dGdvaW5nTGlua1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0T3V0bGluZVZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0UGRmVmlld0NvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0b3JzL2ludGVybmFscy92aWV3cy9nZXRSZWxlYXNlTm90ZXNWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldFNlYXJjaFZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0U3luY1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0VGFibGVWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldFRhZ1ZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdG9ycy9pbnRlcm5hbHMvdmlld3MvZ2V0VmlkZW9WaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldFdlYnZpZXdlckhpc3RvcnlWaWV3Q29uc3RydWN0b3IudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RvcnMvaW50ZXJuYWxzL3ZpZXdzL2dldFdlYnZpZXdlclZpZXdDb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgKiBmcm9tICcuL2Z1bmN0aW9ucy9jcmVhdGVURmlsZUluc3RhbmNlLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vZnVuY3Rpb25zL2NyZWF0ZVRGb2xkZXJJbnN0YW5jZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL2Z1bmN0aW9ucy9sb2FkTWVybWFpZC50cyc7XG5leHBvcnQgKiBmcm9tICcuL2Z1bmN0aW9ucy9sb2FkUGRmSnMudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9mdW5jdGlvbnMvbG9hZFByaXNtLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZS1ndWFyZHMvaXNFbWJlZENhY2hlLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZS1ndWFyZHMvaXNGcm9udG1hdHRlckxpbmtDYWNoZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGUtZ3VhcmRzL2lzTGlua0NhY2hlLnRzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZS1ndWFyZHMvaXNSZWZlcmVuY2VDYWNoZS50cyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL1BhdGhVdGlscy50cyc7XG5leHBvcnQgdHlwZSAqIGZyb20gJy4uLy4uL2luZGV4LmQudHMnO1xuIiwgImltcG9ydCB0eXBlIHsgQ3VzdG9tQXJyYXlEaWN0IH0gZnJvbSAnLi4vLi4vaW50ZXJuYWxzL2NvbGxlY3Rpb25zL0N1c3RvbUFycmF5RGljdC5kLmQudHMnO1xuXG4vKipcbiAqIEEgZGljdGlvbmFyeSB0aGF0IG1hcHMgc3RyaW5nIGtleXMgdG8gYXJyYXlzIG9mIHVuaXF1ZSB2YWx1ZXMsIGltcGxlbWVudGluZyB7QGxpbmsgQ3VzdG9tQXJyYXlEaWN0fS5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgY2xhc3MgQ3VzdG9tQXJyYXlEaWN0SW1wbDxUPiBpbXBsZW1lbnRzIEN1c3RvbUFycmF5RGljdDxUPiB7XG4gIC8qKlxuICAgKiBAdG9kbyBEb2N1bWVudGF0aW9uIGluY29tcGxldGUuXG4gICAqL1xuICBwdWJsaWMgZGF0YTogTWFwPHN0cmluZywgVFtdPiA9IG5ldyBNYXAoKTtcblxuICAvKipcbiAgICogQHRvZG8gRG9jdW1lbnRhdGlvbiBpbmNvbXBsZXRlLlxuICAgKi9cbiAgcHVibGljIGFkZChrZXk6IHN0cmluZywgdmFsdWU6IFQpOiB2b2lkIHtcbiAgICBsZXQgdmFsdWVzID0gdGhpcy5nZXQoa2V5KTtcbiAgICBpZiAoIXZhbHVlcykge1xuICAgICAgdmFsdWVzID0gW107XG4gICAgICB0aGlzLmRhdGEuc2V0KGtleSwgdmFsdWVzKTtcbiAgICB9XG5cbiAgICBpZiAoIXZhbHVlcy5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHRvZG8gRG9jdW1lbnRhdGlvbiBpbmNvbXBsZXRlLlxuICAgKi9cbiAgcHVibGljIGNsZWFyKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhLmRlbGV0ZShrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0b2RvIERvY3VtZW50YXRpb24gaW5jb21wbGV0ZS5cbiAgICovXG4gIHB1YmxpYyBjbGVhckFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGEuY2xlYXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdG9kbyBEb2N1bWVudGF0aW9uIGluY29tcGxldGUuXG4gICAqL1xuICBwdWJsaWMgY29udGFpbnMoa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5nZXQoa2V5KT8uY29udGFpbnModmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0b2RvIERvY3VtZW50YXRpb24gaW5jb21wbGV0ZS5cbiAgICovXG4gIHB1YmxpYyBjb3VudCgpOiBudW1iZXIge1xuICAgIGxldCBhbnMgPSAwO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMua2V5cygpKSB7XG4gICAgICBhbnMgKz0gdGhpcy5nZXQoa2V5KT8ubGVuZ3RoID8/IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAdG9kbyBEb2N1bWVudGF0aW9uIGluY29tcGxldGUuXG4gICAqL1xuICBwdWJsaWMgZ2V0KGtleTogc3RyaW5nKTogVFtdIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5nZXQoa2V5KSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0b2RvIERvY3VtZW50YXRpb24gaW5jb21wbGV0ZS5cbiAgICovXG4gIHB1YmxpYyBrZXlzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmRhdGEua2V5cygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdG9kbyBEb2N1bWVudGF0aW9uIGluY29tcGxldGUuXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlKGtleTogc3RyaW5nLCB2YWx1ZTogVCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZ2V0KGtleSk7XG4gICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YWx1ZXMucmVtb3ZlKHZhbHVlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5jbGVhcihrZXkpO1xuICAgIH1cbiAgfVxufVxuIiwgIi8qKlxuICogQ29uc3RhbnQgbWFwcGluZyBvZiBmaWxlIGV4dGVuc2lvbiBpZGVudGlmaWVycyByZWNvZ25pemVkIGFuZCBzdXBwb3J0ZWQgYnkgT2JzaWRpYW4uXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGNvbnN0IEZpbGVFeHRlbnNpb24gPSB7XG4gIF8zZ3A6ICczZ3AnLFxuICBhdmlmOiAnYXZpZicsXG4gIGJtcDogJ2JtcCcsXG4gIGNhbnZhczogJ2NhbnZhcycsXG4gIGZsYWM6ICdmbGFjJyxcbiAgZ2lmOiAnZ2lmJyxcbiAganBlZzogJ2pwZWcnLFxuICBqcGc6ICdqcGcnLFxuICBtNGE6ICdtNGEnLFxuICBtZDogJ21kJyxcbiAgbWt2OiAnbWt2JyxcbiAgbW92OiAnbW92JyxcbiAgbXAzOiAnbXAzJyxcbiAgbXA0OiAnbXA0JyxcbiAgb2dhOiAnb2dhJyxcbiAgb2dnOiAnb2dnJyxcbiAgb2d2OiAnb2d2JyxcbiAgb3B1czogJ29wdXMnLFxuICBwZGY6ICdwZGYnLFxuICBwbmc6ICdwbmcnLFxuICBzdmc6ICdzdmcnLFxuICB3YXY6ICd3YXYnLFxuICB3ZWJtOiAnd2VibScsXG4gIHdlYnA6ICd3ZWJwJ1xufSBhcyBjb25zdDtcbiIsICIvKipcbiAqIENvbnN0YW50IG1hcHBpbmcgb2YgaW50ZXJuYWwgKGNvcmUpIHBsdWdpbiBuYW1lIGlkZW50aWZpZXJzIGJ1bmRsZWQgd2l0aCBPYnNpZGlhbi5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgY29uc3QgSW50ZXJuYWxQbHVnaW5OYW1lID0ge1xuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEF1ZGlvIHJlY29yZGVyLlxuICAgKi9cbiAgQXVkaW9SZWNvcmRlcjogJ2F1ZGlvLXJlY29yZGVyJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBCYWNrbGlua3MuXG4gICAqL1xuICBCYWNrbGluazogJ2JhY2tsaW5rJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBCYXNlcy5cbiAgICovXG4gIEJhc2VzOiAnYmFzZXMnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IEJvb2ttYXJrcy5cbiAgICovXG4gIEJvb2ttYXJrczogJ2Jvb2ttYXJrcycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogQ2FudmFzLlxuICAgKi9cbiAgQ2FudmFzOiAnY2FudmFzJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBDb21tYW5kIHBhbGV0dGUuXG4gICAqL1xuICBDb21tYW5kUGFsZXR0ZTogJ2NvbW1hbmQtcGFsZXR0ZScsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogRGFpbHkgbm90ZXMuXG4gICAqL1xuICBEYWlseU5vdGVzOiAnZGFpbHktbm90ZXMnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IChoaWRkZW4pLlxuICAgKi9cbiAgRWRpdG9yU3RhdHVzOiAnZWRpdG9yLXN0YXR1cycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogRmlsZXMuXG4gICAqL1xuICBGaWxlRXhwbG9yZXI6ICdmaWxlLWV4cGxvcmVyJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBGaWxlIHJlY292ZXJ5LlxuICAgKi9cbiAgRmlsZVJlY292ZXJ5OiAnZmlsZS1yZWNvdmVyeScsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogRm9vdG5vdGVzLlxuICAgKi9cbiAgRm9vdG5vdGVzOiAnZm9vdG5vdGVzJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBTZWFyY2guXG4gICAqL1xuICBHbG9iYWxTZWFyY2g6ICdnbG9iYWwtc2VhcmNoJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBHcmFwaCB2aWV3LlxuICAgKi9cbiAgR3JhcGg6ICdncmFwaCcsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogRm9ybWF0IGNvbnZlcnRlci5cbiAgICovXG4gIE1hcmtkb3duSW1wb3J0ZXI6ICdtYXJrZG93bi1pbXBvcnRlcicsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogTm90ZSBjb21wb3Nlci5cbiAgICovXG4gIE5vdGVDb21wb3NlcjogJ25vdGUtY29tcG9zZXInLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IE91dGdvaW5nIGxpbmtzLlxuICAgKi9cbiAgT3V0Z29pbmdMaW5rOiAnb3V0Z29pbmctbGluaycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogT3V0bGluZS5cbiAgICovXG4gIE91dGxpbmU6ICdvdXRsaW5lJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBQYWdlIHByZXZpZXcuXG4gICAqL1xuICBQYWdlUHJldmlldzogJ3BhZ2UtcHJldmlldycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogUHJvcGVydGllcyB2aWV3LlxuICAgKi9cbiAgUHJvcGVydGllczogJ3Byb3BlcnRpZXMnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFB1Ymxpc2guXG4gICAqL1xuICBQdWJsaXNoOiAncHVibGlzaCcsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogUmFuZG9tIG5vdGUuXG4gICAqL1xuICBSYW5kb21Ob3RlOiAncmFuZG9tLW5vdGUnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFNsYXNoIGNvbW1hbmRzLlxuICAgKi9cbiAgU2xhc2hDb21tYW5kOiAnc2xhc2gtY29tbWFuZCcsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogU2xpZGVzLlxuICAgKi9cbiAgU2xpZGVzOiAnc2xpZGVzJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBRdWljayBTd2l0Y2hlci5cbiAgICovXG4gIFN3aXRjaGVyOiAnc3dpdGNoZXInLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFN5bmMuXG4gICAqL1xuICBTeW5jOiAnc3luYycsXG4gIC8qKlxuICAgKiBQbHVnaW4gbmFtZSBpbiBVSTogVGFncyB2aWV3LlxuICAgKi9cbiAgVGFnUGFuZTogJ3RhZy1wYW5lJyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBUZW1wbGF0ZXMuXG4gICAqL1xuICBUZW1wbGF0ZXM6ICd0ZW1wbGF0ZXMnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFdlYiB2aWV3ZXIuXG4gICAqL1xuICBXZWJ2aWV3ZXI6ICd3ZWJ2aWV3ZXInLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFdvcmQgY291bnQuXG4gICAqL1xuICBXb3JkQ291bnQ6ICd3b3JkLWNvdW50JyxcbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lIGluIFVJOiBXb3Jrc3BhY2VzLlxuICAgKi9cbiAgV29ya3NwYWNlczogJ3dvcmtzcGFjZXMnLFxuICAvKipcbiAgICogUGx1Z2luIG5hbWUgaW4gVUk6IFVuaXF1ZSBub3RlIGNyZWF0b3IuXG4gICAqL1xuICBaa1ByZWZpeGVyOiAnemstcHJlZml4ZXInXG59IGFzIGNvbnN0O1xuIiwgImltcG9ydCB7IEludGVybmFsUGx1Z2luTmFtZSB9IGZyb20gJy4vSW50ZXJuYWxQbHVnaW5OYW1lLnRzJztcblxuLyoqXG4gKiBDb25zdGFudCBtYXBwaW5nIG9mIHZpZXcgdHlwZSBpZGVudGlmaWVycyB1c2VkIHRvIG9wZW4gYW5kIG1hbmFnZSBkaWZmZXJlbnQgbGVhZiB2aWV3cyBpbiBPYnNpZGlhbi5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgY29uc3QgVmlld1R5cGUgPSB7XG4gIEFsbFByb3BlcnRpZXM6ICdhbGwtcHJvcGVydGllcycsXG4gIEF1ZGlvOiAnYXVkaW8nLFxuICBCYWNrbGluazogSW50ZXJuYWxQbHVnaW5OYW1lLkJhY2tsaW5rLFxuICBCYXNlczogSW50ZXJuYWxQbHVnaW5OYW1lLkJhc2VzLFxuICBCb29rbWFya3M6IEludGVybmFsUGx1Z2luTmFtZS5Cb29rbWFya3MsXG4gIENhbnZhczogSW50ZXJuYWxQbHVnaW5OYW1lLkNhbnZhcyxcbiAgRW1wdHk6ICdlbXB0eScsXG4gIEZpbGVFeHBsb3JlcjogSW50ZXJuYWxQbHVnaW5OYW1lLkZpbGVFeHBsb3JlcixcbiAgRmlsZVByb3BlcnRpZXM6ICdmaWxlLXByb3BlcnRpZXMnLFxuICBHcmFwaDogSW50ZXJuYWxQbHVnaW5OYW1lLkdyYXBoLFxuICBJbWFnZTogJ2ltYWdlJyxcbiAgTG9jYWxHcmFwaDogJ2xvY2FsZ3JhcGgnLFxuICBNYXJrZG93bjogJ21hcmtkb3duJyxcbiAgT3V0Z29pbmdMaW5rOiBJbnRlcm5hbFBsdWdpbk5hbWUuT3V0Z29pbmdMaW5rLFxuICBPdXRsaW5lOiBJbnRlcm5hbFBsdWdpbk5hbWUuT3V0bGluZSxcbiAgUGRmOiAncGRmJyxcbiAgUmVsZWFzZU5vdGVzOiAncmVsZWFzZS1ub3RlcycsXG4gIFNlYXJjaDogJ3NlYXJjaCcsXG4gIFN5bmM6ICdzeW5jJyxcbiAgVGFibGU6ICd0YWJsZScsXG4gIFRhZzogJ3RhZycsXG4gIFZpZGVvOiAndmlkZW8nLFxuICBXZWJ2aWV3ZXI6ICd3ZWJ2aWV3ZXInLFxuICBXZWJ2aWV3ZXJIaXN0b3J5OiAnd2Vidmlld2VyLWhpc3RvcnknXG59IGFzIGNvbnN0O1xuIiwgImltcG9ydCB7XG4gIEFic3RyYWN0VGV4dENvbXBvbmVudFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIEFic3RyYWN0VGV4dENvbXBvbmVudENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFxuICBBYnN0cmFjdFRleHRDb21wb25lbnQ8SFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQ+XG4+O1xuXG4vKipcbiAqIEdldCB0aGUgQWJzdHJhY3RUZXh0Q29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBBYnN0cmFjdFRleHRDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFic3RyYWN0VGV4dENvbXBvbmVudENvbnN0cnVjdG9yKCk6IEFic3RyYWN0VGV4dENvbXBvbmVudENvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIEFic3RyYWN0VGV4dENvbXBvbmVudCBhcyBBYnN0cmFjdFRleHRDb21wb25lbnRDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBBcHBcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBBcHBDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxBcHA+O1xuXG4vKipcbiAqIEdldCB0aGUgQXBwIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBBcHAgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFwcENvbnN0cnVjdG9yKCk6IEFwcENvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIEFwcCBhcyBBcHBDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBCYXNlQ29tcG9uZW50XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBCYXNlQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBCYXNlQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCYXNlQ29tcG9uZW50Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPEJhc2VDb21wb25lbnQ+IHtcbiAgcmV0dXJuIEJhc2VDb21wb25lbnQgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEJhc2VDb21wb25lbnQ+O1xufVxuIiwgImltcG9ydCB7XG4gIEJhc2VzRW50cnlcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBCYXNlc0VudHJ5Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8QmFzZXNFbnRyeT47XG5cbi8qKlxuICogR2V0IHRoZSBCYXNlc0VudHJ5IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBCYXNlc0VudHJ5IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCYXNlc0VudHJ5Q29uc3RydWN0b3IoKTogQmFzZXNFbnRyeUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIEJhc2VzRW50cnkgYXMgQmFzZXNFbnRyeUNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIEJhc2VzRW50cnlHcm91cFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIEJhc2VzRW50cnlHcm91cENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEJhc2VzRW50cnlHcm91cD47XG5cbi8qKlxuICogR2V0IHRoZSBCYXNlc0VudHJ5R3JvdXAgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEJhc2VzRW50cnlHcm91cCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZXNFbnRyeUdyb3VwQ29uc3RydWN0b3IoKTogQmFzZXNFbnRyeUdyb3VwQ29uc3RydWN0b3Ige1xuICByZXR1cm4gQmFzZXNFbnRyeUdyb3VwIGFzIEJhc2VzRW50cnlHcm91cENvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIEJhc2VzUXVlcnlSZXN1bHRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBCYXNlc1F1ZXJ5UmVzdWx0Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8QmFzZXNRdWVyeVJlc3VsdD47XG5cbi8qKlxuICogR2V0IHRoZSBCYXNlc1F1ZXJ5UmVzdWx0IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBCYXNlc1F1ZXJ5UmVzdWx0IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCYXNlc1F1ZXJ5UmVzdWx0Q29uc3RydWN0b3IoKTogQmFzZXNRdWVyeVJlc3VsdENvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIEJhc2VzUXVlcnlSZXN1bHQgYXMgQmFzZXNRdWVyeVJlc3VsdENvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIEJhc2VzVmlld0NvbmZpZ1xufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIEJhc2VzVmlld0NvbmZpZ0NvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEJhc2VzVmlld0NvbmZpZz47XG5cbi8qKlxuICogR2V0IHRoZSBCYXNlc1ZpZXdDb25maWcgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEJhc2VzVmlld0NvbmZpZyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZXNWaWV3Q29uZmlnQ29uc3RydWN0b3IoKTogQmFzZXNWaWV3Q29uZmlnQ29uc3RydWN0b3Ige1xuICByZXR1cm4gQmFzZXNWaWV3Q29uZmlnIGFzIEJhc2VzVmlld0NvbmZpZ0NvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIEJvb2xlYW5WYWx1ZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIEJvb2xlYW5WYWx1ZUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEJvb2xlYW5WYWx1ZT47XG5cbi8qKlxuICogR2V0IHRoZSBCb29sZWFuVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEJvb2xlYW5WYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Qm9vbGVhblZhbHVlQ29uc3RydWN0b3IoKTogQm9vbGVhblZhbHVlQ29uc3RydWN0b3Ige1xuICByZXR1cm4gQm9vbGVhblZhbHVlIGFzIEJvb2xlYW5WYWx1ZUNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIEJ1dHRvbkNvbXBvbmVudFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIEJ1dHRvbkNvbXBvbmVudENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEJ1dHRvbkNvbXBvbmVudD47XG5cbi8qKlxuICogR2V0IHRoZSBCdXR0b25Db21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEJ1dHRvbkNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnV0dG9uQ29tcG9uZW50Q29uc3RydWN0b3IoKTogQnV0dG9uQ29tcG9uZW50Q29uc3RydWN0b3Ige1xuICByZXR1cm4gQnV0dG9uQ29tcG9uZW50IGFzIEJ1dHRvbkNvbXBvbmVudENvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIENhcGFjaXRvckFkYXB0ZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBDYXBhY2l0b3JBZGFwdGVyQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8Q2FwYWNpdG9yQWRhcHRlcj47XG5cbi8qKlxuICogR2V0IHRoZSBDYXBhY2l0b3JBZGFwdGVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBDYXBhY2l0b3JBZGFwdGVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYXBhY2l0b3JBZGFwdGVyQ29uc3RydWN0b3IoKTogQ2FwYWNpdG9yQWRhcHRlckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIENhcGFjaXRvckFkYXB0ZXIgYXMgQ2FwYWNpdG9yQWRhcHRlckNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIENvbG9yQ29tcG9uZW50XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgQ29sb3JDb21wb25lbnRDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxDb2xvckNvbXBvbmVudD47XG5cbi8qKlxuICogR2V0IHRoZSBDb2xvckNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgQ29sb3JDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbG9yQ29tcG9uZW50Q29uc3RydWN0b3IoKTogQ29sb3JDb21wb25lbnRDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBDb2xvckNvbXBvbmVudCBhcyBDb2xvckNvbXBvbmVudENvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIENvbXBvbmVudFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbXBvbmVudENvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxDb21wb25lbnQ+IHtcbiAgcmV0dXJuIENvbXBvbmVudCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8Q29tcG9uZW50Pjtcbn1cbiIsICJpbXBvcnQge1xuICBEYXRlVmFsdWVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBEYXRlVmFsdWVDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxEYXRlVmFsdWU+O1xuXG4vKipcbiAqIEdldCB0aGUgRGF0ZVZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBEYXRlVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGVWYWx1ZUNvbnN0cnVjdG9yKCk6IERhdGVWYWx1ZUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIERhdGVWYWx1ZSBhcyBEYXRlVmFsdWVDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBEcm9wZG93bkNvbXBvbmVudFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIERyb3Bkb3duQ29tcG9uZW50Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8RHJvcGRvd25Db21wb25lbnQ+O1xuXG4vKipcbiAqIEdldCB0aGUgRHJvcGRvd25Db21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIERyb3Bkb3duQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREcm9wZG93bkNvbXBvbmVudENvbnN0cnVjdG9yKCk6IERyb3Bkb3duQ29tcG9uZW50Q29uc3RydWN0b3Ige1xuICByZXR1cm4gRHJvcGRvd25Db21wb25lbnQgYXMgRHJvcGRvd25Db21wb25lbnRDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBEdXJhdGlvblZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgRHVyYXRpb25WYWx1ZUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPER1cmF0aW9uVmFsdWU+O1xuXG4vKipcbiAqIEdldCB0aGUgRHVyYXRpb25WYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgRHVyYXRpb25WYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHVyYXRpb25WYWx1ZUNvbnN0cnVjdG9yKCk6IER1cmF0aW9uVmFsdWVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBEdXJhdGlvblZhbHVlIGFzIER1cmF0aW9uVmFsdWVDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBFZGl0YWJsZUZpbGVWaWV3XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgRWRpdGFibGVGaWxlVmlld0NvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEVkaXRhYmxlRmlsZVZpZXc+O1xuXG4vKipcbiAqIEdldCB0aGUgRWRpdGFibGVGaWxlVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgRWRpdGFibGVGaWxlVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWRpdGFibGVGaWxlVmlld0NvbnN0cnVjdG9yKCk6IEVkaXRhYmxlRmlsZVZpZXdDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBFZGl0YWJsZUZpbGVWaWV3IGFzIEVkaXRhYmxlRmlsZVZpZXdDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBFZGl0b3Jcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBFZGl0b3JDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxFZGl0b3I+O1xuXG4vKipcbiAqIEdldCB0aGUgRWRpdG9yIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBFZGl0b3IgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVkaXRvckNvbnN0cnVjdG9yKCk6IEVkaXRvckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIEVkaXRvciBhcyBFZGl0b3JDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBFdmVudHNcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEV2ZW50cyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgRXZlbnRzIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFdmVudHNDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8RXZlbnRzPiB7XG4gIHJldHVybiBFdmVudHMgYXMgRXh0cmFjdENvbnN0cnVjdG9yPEV2ZW50cz47XG59XG4iLCAiaW1wb3J0IHtcbiAgRXh0cmFCdXR0b25Db21wb25lbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBFeHRyYUJ1dHRvbkNvbXBvbmVudENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEV4dHJhQnV0dG9uQ29tcG9uZW50PjtcblxuLyoqXG4gKiBHZXQgdGhlIEV4dHJhQnV0dG9uQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBFeHRyYUJ1dHRvbkNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0cmFCdXR0b25Db21wb25lbnRDb25zdHJ1Y3RvcigpOiBFeHRyYUJ1dHRvbkNvbXBvbmVudENvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIEV4dHJhQnV0dG9uQ29tcG9uZW50IGFzIEV4dHJhQnV0dG9uQ29tcG9uZW50Q29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgRmlsZU1hbmFnZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBGaWxlTWFuYWdlckNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEZpbGVNYW5hZ2VyPjtcblxuLyoqXG4gKiBHZXQgdGhlIEZpbGVNYW5hZ2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBGaWxlTWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZU1hbmFnZXJDb25zdHJ1Y3RvcigpOiBGaWxlTWFuYWdlckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIEZpbGVNYW5hZ2VyIGFzIEZpbGVNYW5hZ2VyQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgRmlsZVN5c3RlbUFkYXB0ZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBGaWxlU3lzdGVtQWRhcHRlckNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEZpbGVTeXN0ZW1BZGFwdGVyPjtcblxuLyoqXG4gKiBHZXQgdGhlIEZpbGVTeXN0ZW1BZGFwdGVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBGaWxlU3lzdGVtQWRhcHRlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZVN5c3RlbUFkYXB0ZXJDb25zdHJ1Y3RvcigpOiBGaWxlU3lzdGVtQWRhcHRlckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIEZpbGVTeXN0ZW1BZGFwdGVyIGFzIEZpbGVTeXN0ZW1BZGFwdGVyQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgRmlsZVZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgRmlsZVZhbHVlQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8RmlsZVZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIEZpbGVWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgRmlsZVZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlVmFsdWVDb25zdHJ1Y3RvcigpOiBGaWxlVmFsdWVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBGaWxlVmFsdWUgYXMgRmlsZVZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgRnV6enlTdWdnZXN0TW9kYWxcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBGdXp6eVN1Z2dlc3RNb2RhbENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEZ1enp5U3VnZ2VzdE1vZGFsPHVua25vd24+PjtcblxuLyoqXG4gKiBHZXQgdGhlIEZ1enp5U3VnZ2VzdE1vZGFsIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBGdXp6eVN1Z2dlc3RNb2RhbCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RnV6enlTdWdnZXN0TW9kYWxDb25zdHJ1Y3RvcigpOiBGdXp6eVN1Z2dlc3RNb2RhbENvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIEZ1enp5U3VnZ2VzdE1vZGFsIGFzIEZ1enp5U3VnZ2VzdE1vZGFsQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgSG92ZXJQb3BvdmVyXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgSG92ZXJQb3BvdmVyQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8SG92ZXJQb3BvdmVyPjtcblxuLyoqXG4gKiBHZXQgdGhlIEhvdmVyUG9wb3ZlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgSG92ZXJQb3BvdmVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIb3ZlclBvcG92ZXJDb25zdHJ1Y3RvcigpOiBIb3ZlclBvcG92ZXJDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBIb3ZlclBvcG92ZXIgYXMgSG92ZXJQb3BvdmVyQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgSFRNTFZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgSFRNTFZhbHVlQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8SFRNTFZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIEhUTUxWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgSFRNTFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIVE1MVmFsdWVDb25zdHJ1Y3RvcigpOiBIVE1MVmFsdWVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBIVE1MVmFsdWUgYXMgSFRNTFZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgSWNvblZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgSWNvblZhbHVlQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8SWNvblZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIEljb25WYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgSWNvblZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJY29uVmFsdWVDb25zdHJ1Y3RvcigpOiBJY29uVmFsdWVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBJY29uVmFsdWUgYXMgSWNvblZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgSW1hZ2VWYWx1ZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIEltYWdlVmFsdWVDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxJbWFnZVZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIEltYWdlVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIEltYWdlVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEltYWdlVmFsdWVDb25zdHJ1Y3RvcigpOiBJbWFnZVZhbHVlQ29uc3RydWN0b3Ige1xuICByZXR1cm4gSW1hZ2VWYWx1ZSBhcyBJbWFnZVZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgS2V5bWFwXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgS2V5bWFwQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8S2V5bWFwPjtcblxuLyoqXG4gKiBHZXQgdGhlIEtleW1hcCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgS2V5bWFwIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRLZXltYXBDb25zdHJ1Y3RvcigpOiBLZXltYXBDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBLZXltYXAgYXMgS2V5bWFwQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTGlua1ZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgTGlua1ZhbHVlQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8TGlua1ZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIExpbmtWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTGlua1ZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5rVmFsdWVDb25zdHJ1Y3RvcigpOiBMaW5rVmFsdWVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBMaW5rVmFsdWUgYXMgTGlua1ZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTGlzdFZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgTGlzdFZhbHVlQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8TGlzdFZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIExpc3RWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTGlzdFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaXN0VmFsdWVDb25zdHJ1Y3RvcigpOiBMaXN0VmFsdWVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBMaXN0VmFsdWUgYXMgTGlzdFZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTWFya2Rvd25QcmV2aWV3UmVuZGVyZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBNYXJrZG93blByZXZpZXdSZW5kZXJlckNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPE1hcmtkb3duUHJldmlld1JlbmRlcmVyPjtcblxuLyoqXG4gKiBHZXQgdGhlIE1hcmtkb3duUHJldmlld1JlbmRlcmVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBNYXJrZG93blByZXZpZXdSZW5kZXJlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25QcmV2aWV3UmVuZGVyZXJDb25zdHJ1Y3RvcigpOiBNYXJrZG93blByZXZpZXdSZW5kZXJlckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIE1hcmtkb3duUHJldmlld1JlbmRlcmVyIGFzIE1hcmtkb3duUHJldmlld1JlbmRlcmVyQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTWFya2Rvd25QcmV2aWV3Vmlld1xufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIE1hcmtkb3duUHJldmlld1ZpZXdDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxNYXJrZG93blByZXZpZXdWaWV3PjtcblxuLyoqXG4gKiBHZXQgdGhlIE1hcmtkb3duUHJldmlld1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE1hcmtkb3duUHJldmlld1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duUHJldmlld1ZpZXdDb25zdHJ1Y3RvcigpOiBNYXJrZG93blByZXZpZXdWaWV3Q29uc3RydWN0b3Ige1xuICByZXR1cm4gTWFya2Rvd25QcmV2aWV3VmlldyBhcyB1bmtub3duIGFzIE1hcmtkb3duUHJldmlld1ZpZXdDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBNYXJrZG93blJlbmRlckNoaWxkXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgTWFya2Rvd25SZW5kZXJDaGlsZENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPE1hcmtkb3duUmVuZGVyQ2hpbGQ+O1xuXG4vKipcbiAqIEdldCB0aGUgTWFya2Rvd25SZW5kZXJDaGlsZCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTWFya2Rvd25SZW5kZXJDaGlsZCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25SZW5kZXJDaGlsZENvbnN0cnVjdG9yKCk6IE1hcmtkb3duUmVuZGVyQ2hpbGRDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBNYXJrZG93blJlbmRlckNoaWxkIGFzIE1hcmtkb3duUmVuZGVyQ2hpbGRDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBNYXJrZG93blJlbmRlcmVyXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgTWFya2Rvd25SZW5kZXJlckNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPE1hcmtkb3duUmVuZGVyZXI+O1xuXG4vKipcbiAqIEdldCB0aGUgTWFya2Rvd25SZW5kZXJlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTWFya2Rvd25SZW5kZXJlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25SZW5kZXJlckNvbnN0cnVjdG9yKCk6IE1hcmtkb3duUmVuZGVyZXJDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBNYXJrZG93blJlbmRlcmVyIGFzIHVua25vd24gYXMgTWFya2Rvd25SZW5kZXJlckNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIE1hcmtkb3duVmlld1xufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIE1hcmtkb3duVmlld0NvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPE1hcmtkb3duVmlldz47XG5cbi8qKlxuICogR2V0IHRoZSBNYXJrZG93blZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE1hcmtkb3duVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25WaWV3Q29uc3RydWN0b3IoKTogTWFya2Rvd25WaWV3Q29uc3RydWN0b3Ige1xuICByZXR1cm4gTWFya2Rvd25WaWV3IGFzIE1hcmtkb3duVmlld0NvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIE1lbnVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBNZW51Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8TWVudT47XG5cbi8qKlxuICogR2V0IHRoZSBNZW51IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBNZW51IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZW51Q29uc3RydWN0b3IoKTogTWVudUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIE1lbnUgYXMgTWVudUNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIE1lbnVJdGVtXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgTWVudUl0ZW1Db25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxNZW51SXRlbT47XG5cbi8qKlxuICogR2V0IHRoZSBNZW51SXRlbSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTWVudUl0ZW0gY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1lbnVJdGVtQ29uc3RydWN0b3IoKTogTWVudUl0ZW1Db25zdHJ1Y3RvciB7XG4gIHJldHVybiBNZW51SXRlbSBhcyB1bmtub3duIGFzIE1lbnVJdGVtQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTWVudVNlcGFyYXRvclxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIE1lbnVTZXBhcmF0b3JDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxNZW51U2VwYXJhdG9yPjtcblxuLyoqXG4gKiBHZXQgdGhlIE1lbnVTZXBhcmF0b3IgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE1lbnVTZXBhcmF0b3IgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1lbnVTZXBhcmF0b3JDb25zdHJ1Y3RvcigpOiBNZW51U2VwYXJhdG9yQ29uc3RydWN0b3Ige1xuICByZXR1cm4gTWVudVNlcGFyYXRvciBhcyBNZW51U2VwYXJhdG9yQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTWV0YWRhdGFDYWNoZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIE1ldGFkYXRhQ2FjaGVDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxNZXRhZGF0YUNhY2hlPjtcblxuLyoqXG4gKiBHZXQgdGhlIE1ldGFkYXRhQ2FjaGUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE1ldGFkYXRhQ2FjaGUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1ldGFkYXRhQ2FjaGVDb25zdHJ1Y3RvcigpOiBNZXRhZGF0YUNhY2hlQ29uc3RydWN0b3Ige1xuICByZXR1cm4gTWV0YWRhdGFDYWNoZSBhcyBNZXRhZGF0YUNhY2hlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTW9kYWxcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBNb2RhbENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPE1vZGFsPjtcblxuLyoqXG4gKiBHZXQgdGhlIE1vZGFsIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBNb2RhbCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9kYWxDb25zdHJ1Y3RvcigpOiBNb2RhbENvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIE1vZGFsIGFzIE1vZGFsQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTW9tZW50Rm9ybWF0Q29tcG9uZW50XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgTW9tZW50Rm9ybWF0Q29tcG9uZW50Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8TW9tZW50Rm9ybWF0Q29tcG9uZW50PjtcblxuLyoqXG4gKiBHZXQgdGhlIE1vbWVudEZvcm1hdENvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTW9tZW50Rm9ybWF0Q29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNb21lbnRGb3JtYXRDb21wb25lbnRDb25zdHJ1Y3RvcigpOiBNb21lbnRGb3JtYXRDb21wb25lbnRDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBNb21lbnRGb3JtYXRDb21wb25lbnQgYXMgTW9tZW50Rm9ybWF0Q29tcG9uZW50Q29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTm90aWNlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgTm90aWNlQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8Tm90aWNlPjtcblxuLyoqXG4gKiBHZXQgdGhlIE5vdGljZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTm90aWNlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROb3RpY2VDb25zdHJ1Y3RvcigpOiBOb3RpY2VDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBOb3RpY2UgYXMgTm90aWNlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTm90TnVsbFZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBOb3ROdWxsVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIE5vdE51bGxWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm90TnVsbFZhbHVlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPE5vdE51bGxWYWx1ZT4ge1xuICByZXR1cm4gTm90TnVsbFZhbHVlIGFzIHVua25vd24gYXMgRXh0cmFjdENvbnN0cnVjdG9yPE5vdE51bGxWYWx1ZT47XG59XG4iLCAiaW1wb3J0IHtcbiAgTnVsbFZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgTnVsbFZhbHVlQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8TnVsbFZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIE51bGxWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgTnVsbFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROdWxsVmFsdWVDb25zdHJ1Y3RvcigpOiBOdWxsVmFsdWVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBOdWxsVmFsdWUgYXMgTnVsbFZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgTnVtYmVyVmFsdWVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBOdW1iZXJWYWx1ZUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPE51bWJlclZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIE51bWJlclZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBOdW1iZXJWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TnVtYmVyVmFsdWVDb25zdHJ1Y3RvcigpOiBOdW1iZXJWYWx1ZUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIE51bWJlclZhbHVlIGFzIE51bWJlclZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgT2JqZWN0VmFsdWVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBPYmplY3RWYWx1ZUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPE9iamVjdFZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIE9iamVjdFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBPYmplY3RWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0VmFsdWVDb25zdHJ1Y3RvcigpOiBPYmplY3RWYWx1ZUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIE9iamVjdFZhbHVlIGFzIE9iamVjdFZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgUHJvZ3Jlc3NCYXJDb21wb25lbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBQcm9ncmVzc0JhckNvbXBvbmVudENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFByb2dyZXNzQmFyQ29tcG9uZW50PjtcblxuLyoqXG4gKiBHZXQgdGhlIFByb2dyZXNzQmFyQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBQcm9ncmVzc0JhckNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvZ3Jlc3NCYXJDb21wb25lbnRDb25zdHJ1Y3RvcigpOiBQcm9ncmVzc0JhckNvbXBvbmVudENvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFByb2dyZXNzQmFyQ29tcG9uZW50IGFzIFByb2dyZXNzQmFyQ29tcG9uZW50Q29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgUXVlcnlDb250cm9sbGVyXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgUXVlcnlDb250cm9sbGVyQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8UXVlcnlDb250cm9sbGVyPjtcblxuLyoqXG4gKiBHZXQgdGhlIFF1ZXJ5Q29udHJvbGxlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgUXVlcnlDb250cm9sbGVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWVyeUNvbnRyb2xsZXJDb25zdHJ1Y3RvcigpOiBRdWVyeUNvbnRyb2xsZXJDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBRdWVyeUNvbnRyb2xsZXIgYXMgUXVlcnlDb250cm9sbGVyQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgUmVnRXhwVmFsdWVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBSZWdFeHBWYWx1ZUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFJlZ0V4cFZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIFJlZ0V4cFZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBSZWdFeHBWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVnRXhwVmFsdWVDb25zdHJ1Y3RvcigpOiBSZWdFeHBWYWx1ZUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFJlZ0V4cFZhbHVlIGFzIFJlZ0V4cFZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgUmVsYXRpdmVEYXRlVmFsdWVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBSZWxhdGl2ZURhdGVWYWx1ZUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFJlbGF0aXZlRGF0ZVZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIFJlbGF0aXZlRGF0ZVZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBSZWxhdGl2ZURhdGVWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVsYXRpdmVEYXRlVmFsdWVDb25zdHJ1Y3RvcigpOiBSZWxhdGl2ZURhdGVWYWx1ZUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFJlbGF0aXZlRGF0ZVZhbHVlIGFzIFJlbGF0aXZlRGF0ZVZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgUmVuZGVyQ29udGV4dFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIFJlbmRlckNvbnRleHRDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxSZW5kZXJDb250ZXh0PjtcblxuLyoqXG4gKiBHZXQgdGhlIFJlbmRlckNvbnRleHQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFJlbmRlckNvbnRleHQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlbmRlckNvbnRleHRDb25zdHJ1Y3RvcigpOiBSZW5kZXJDb250ZXh0Q29uc3RydWN0b3Ige1xuICByZXR1cm4gUmVuZGVyQ29udGV4dCBhcyBSZW5kZXJDb250ZXh0Q29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgU2NvcGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBTY29wZUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFNjb3BlPjtcblxuLyoqXG4gKiBHZXQgdGhlIFNjb3BlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBTY29wZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NvcGVDb25zdHJ1Y3RvcigpOiBTY29wZUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFNjb3BlIGFzIFNjb3BlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgU2VhcmNoQ29tcG9uZW50XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgU2VhcmNoQ29tcG9uZW50Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8U2VhcmNoQ29tcG9uZW50PjtcblxuLyoqXG4gKiBHZXQgdGhlIFNlYXJjaENvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgU2VhcmNoQ29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWFyY2hDb21wb25lbnRDb25zdHJ1Y3RvcigpOiBTZWFyY2hDb21wb25lbnRDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBTZWFyY2hDb21wb25lbnQgYXMgU2VhcmNoQ29tcG9uZW50Q29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgU2VjcmV0Q29tcG9uZW50XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgU2VjcmV0Q29tcG9uZW50Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8U2VjcmV0Q29tcG9uZW50PjtcblxuLyoqXG4gKiBHZXQgdGhlIFNlY3JldENvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgU2VjcmV0Q29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWNyZXRDb21wb25lbnRDb25zdHJ1Y3RvcigpOiBTZWNyZXRDb21wb25lbnRDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBTZWNyZXRDb21wb25lbnQgYXMgU2VjcmV0Q29tcG9uZW50Q29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgU2VjcmV0U3RvcmFnZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIFNlY3JldFN0b3JhZ2VDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxTZWNyZXRTdG9yYWdlPjtcblxuLyoqXG4gKiBHZXQgdGhlIFNlY3JldFN0b3JhZ2UgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFNlY3JldFN0b3JhZ2UgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlY3JldFN0b3JhZ2VDb25zdHJ1Y3RvcigpOiBTZWNyZXRTdG9yYWdlQ29uc3RydWN0b3Ige1xuICByZXR1cm4gU2VjcmV0U3RvcmFnZSBhcyBTZWNyZXRTdG9yYWdlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgU2V0dGluZ1xufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIFNldHRpbmdDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxTZXR0aW5nPjtcblxuLyoqXG4gKiBHZXQgdGhlIFNldHRpbmcgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFNldHRpbmcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNldHRpbmdDb25zdHJ1Y3RvcigpOiBTZXR0aW5nQ29uc3RydWN0b3Ige1xuICByZXR1cm4gU2V0dGluZyBhcyBTZXR0aW5nQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgU2V0dGluZ0dyb3VwXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgU2V0dGluZ0dyb3VwQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8U2V0dGluZ0dyb3VwPjtcblxuLyoqXG4gKiBHZXQgdGhlIFNldHRpbmdHcm91cCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgU2V0dGluZ0dyb3VwIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXR0aW5nR3JvdXBDb25zdHJ1Y3RvcigpOiBTZXR0aW5nR3JvdXBDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBTZXR0aW5nR3JvdXAgYXMgU2V0dGluZ0dyb3VwQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgU2V0dGluZ1RhYlxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgU2V0dGluZ1RhYiBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgU2V0dGluZ1RhYiBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2V0dGluZ1RhYkNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxTZXR0aW5nVGFiPiB7XG4gIHJldHVybiBTZXR0aW5nVGFiIGFzIHVua25vd24gYXMgRXh0cmFjdENvbnN0cnVjdG9yPFNldHRpbmdUYWI+O1xufVxuIiwgImltcG9ydCB7XG4gIFNsaWRlckNvbXBvbmVudFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIFNsaWRlckNvbXBvbmVudENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFNsaWRlckNvbXBvbmVudD47XG5cbi8qKlxuICogR2V0IHRoZSBTbGlkZXJDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFNsaWRlckNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2xpZGVyQ29tcG9uZW50Q29uc3RydWN0b3IoKTogU2xpZGVyQ29tcG9uZW50Q29uc3RydWN0b3Ige1xuICByZXR1cm4gU2xpZGVyQ29tcG9uZW50IGFzIFNsaWRlckNvbXBvbmVudENvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFN0cmluZ1ZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgU3RyaW5nVmFsdWVDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxTdHJpbmdWYWx1ZT47XG5cbi8qKlxuICogR2V0IHRoZSBTdHJpbmdWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgU3RyaW5nVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0cmluZ1ZhbHVlQ29uc3RydWN0b3IoKTogU3RyaW5nVmFsdWVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBTdHJpbmdWYWx1ZSBhcyBTdHJpbmdWYWx1ZUNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFRBYnN0cmFjdEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBUQWJzdHJhY3RGaWxlQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8VEFic3RyYWN0RmlsZT47XG5cbi8qKlxuICogR2V0IHRoZSBUQWJzdHJhY3RGaWxlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBUQWJzdHJhY3RGaWxlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUQWJzdHJhY3RGaWxlQ29uc3RydWN0b3IoKTogVEFic3RyYWN0RmlsZUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFRBYnN0cmFjdEZpbGUgYXMgdW5rbm93biBhcyBUQWJzdHJhY3RGaWxlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgVGFnVmFsdWVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBUYWdWYWx1ZUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFRhZ1ZhbHVlPjtcblxuLyoqXG4gKiBHZXQgdGhlIFRhZ1ZhbHVlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBUYWdWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFnVmFsdWVDb25zdHJ1Y3RvcigpOiBUYWdWYWx1ZUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFRhZ1ZhbHVlIGFzIFRhZ1ZhbHVlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgVGFza3Ncbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3RvckJhc2UgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0NvbnN0cnVjdG9yQmFzZS5kLnRzJztcblxudHlwZSBUYXNrc0NvbnN0cnVjdG9yID0gQ29uc3RydWN0b3JCYXNlPFtdLCBUYXNrcz47XG5cbi8qKlxuICogR2V0IHRoZSBUYXNrcyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVGFza3MgY29uc3RydWN0b3IuXG4gKiBAcmVtYXJrIENvbnN0cnVjdG9yIGlzIGBudWxsYC4gU2VlIHtAbGluayBodHRwczovL2ZvcnVtLm9ic2lkaWFuLm1kL3QvYXBpLWJ1Zy10YXNrcy1jbGFzcy85ODk5M30uXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRhc2tzQ29uc3RydWN0b3IoKTogVGFza3NDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBUYXNrcyBhcyBUYXNrc0NvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFRleHRBcmVhQ29tcG9uZW50XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgVGV4dEFyZWFDb21wb25lbnRDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxUZXh0QXJlYUNvbXBvbmVudD47XG5cbi8qKlxuICogR2V0IHRoZSBUZXh0QXJlYUNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVGV4dEFyZWFDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHRBcmVhQ29tcG9uZW50Q29uc3RydWN0b3IoKTogVGV4dEFyZWFDb21wb25lbnRDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBUZXh0QXJlYUNvbXBvbmVudCBhcyBUZXh0QXJlYUNvbXBvbmVudENvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFRleHRDb21wb25lbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBUZXh0Q29tcG9uZW50Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8VGV4dENvbXBvbmVudD47XG5cbi8qKlxuICogR2V0IHRoZSBUZXh0Q29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBUZXh0Q29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0Q29tcG9uZW50Q29uc3RydWN0b3IoKTogVGV4dENvbXBvbmVudENvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFRleHRDb21wb25lbnQgYXMgVGV4dENvbXBvbmVudENvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFRGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgVEZpbGVDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxURmlsZT47XG5cbi8qKlxuICogR2V0IHRoZSBURmlsZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVEZpbGUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRGaWxlQ29uc3RydWN0b3IoKTogVEZpbGVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBURmlsZSBhcyBURmlsZUNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFRGb2xkZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBURm9sZGVyQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8VEZvbGRlcj47XG5cbi8qKlxuICogR2V0IHRoZSBURm9sZGVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBURm9sZGVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRURm9sZGVyQ29uc3RydWN0b3IoKTogVEZvbGRlckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFRGb2xkZXIgYXMgVEZvbGRlckNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFRvZ2dsZUNvbXBvbmVudFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIFRvZ2dsZUNvbXBvbmVudENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFRvZ2dsZUNvbXBvbmVudD47XG5cbi8qKlxuICogR2V0IHRoZSBUb2dnbGVDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFRvZ2dsZUNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9nZ2xlQ29tcG9uZW50Q29uc3RydWN0b3IoKTogVG9nZ2xlQ29tcG9uZW50Q29uc3RydWN0b3Ige1xuICByZXR1cm4gVG9nZ2xlQ29tcG9uZW50IGFzIFRvZ2dsZUNvbXBvbmVudENvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFVybFZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgVXJsVmFsdWVDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxVcmxWYWx1ZT47XG5cbi8qKlxuICogR2V0IHRoZSBVcmxWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVXJsVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFVybFZhbHVlQ29uc3RydWN0b3IoKTogVXJsVmFsdWVDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBVcmxWYWx1ZSBhcyBVcmxWYWx1ZUNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFZhbHVlQ29tcG9uZW50XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBWYWx1ZUNvbXBvbmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVmFsdWVDb21wb25lbnQgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlQ29tcG9uZW50Q29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFZhbHVlQ29tcG9uZW50PHVua25vd24+PiB7XG4gIHJldHVybiBWYWx1ZUNvbXBvbmVudCBhcyBFeHRyYWN0Q29uc3RydWN0b3I8VmFsdWVDb21wb25lbnQ8dW5rbm93bj4+O1xufVxuIiwgImltcG9ydCB7XG4gIFZhbHVlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBWYWx1ZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVmFsdWUgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFZhbHVlPiB7XG4gIHJldHVybiBWYWx1ZSBhcyB1bmtub3duIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxWYWx1ZT47XG59XG4iLCAiaW1wb3J0IHtcbiAgVmF1bHRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBWYXVsdENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFZhdWx0PjtcblxuLyoqXG4gKiBHZXQgdGhlIFZhdWx0IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBWYXVsdCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmF1bHRDb25zdHJ1Y3RvcigpOiBWYXVsdENvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFZhdWx0IGFzIFZhdWx0Q29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgV29ya3NwYWNlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgV29ya3NwYWNlQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlPjtcblxuLyoqXG4gKiBHZXQgdGhlIFdvcmtzcGFjZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VDb25zdHJ1Y3RvcigpOiBXb3Jrc3BhY2VDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBXb3Jrc3BhY2UgYXMgV29ya3NwYWNlQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgV29ya3NwYWNlQ29udGFpbmVyXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBXb3Jrc3BhY2VDb250YWluZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFdvcmtzcGFjZUNvbnRhaW5lciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlQ29udGFpbmVyQ29uc3RydWN0b3IoKTogRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZUNvbnRhaW5lcj4ge1xuICByZXR1cm4gV29ya3NwYWNlQ29udGFpbmVyIGFzIHVua25vd24gYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZUNvbnRhaW5lcj47XG59XG4iLCAiaW1wb3J0IHtcbiAgV29ya3NwYWNlRmxvYXRpbmdcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBXb3Jrc3BhY2VGbG9hdGluZ0NvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZUZsb2F0aW5nPjtcblxuLyoqXG4gKiBHZXQgdGhlIFdvcmtzcGFjZUZsb2F0aW5nIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBXb3Jrc3BhY2VGbG9hdGluZyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlRmxvYXRpbmdDb25zdHJ1Y3RvcigpOiBXb3Jrc3BhY2VGbG9hdGluZ0NvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFdvcmtzcGFjZUZsb2F0aW5nIGFzIFdvcmtzcGFjZUZsb2F0aW5nQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHtcbiAgV29ya3NwYWNlSXRlbVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlSXRlbSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlSXRlbSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlSXRlbUNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VJdGVtPiB7XG4gIHJldHVybiBXb3Jrc3BhY2VJdGVtIGFzIHVua25vd24gYXMgRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZUl0ZW0+O1xufVxuIiwgImltcG9ydCB7XG4gIFdvcmtzcGFjZUxlYWZcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBXb3Jrc3BhY2VMZWFmQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlTGVhZj47XG5cbi8qKlxuICogR2V0IHRoZSBXb3Jrc3BhY2VMZWFmIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBXb3Jrc3BhY2VMZWFmIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VMZWFmQ29uc3RydWN0b3IoKTogV29ya3NwYWNlTGVhZkNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFdvcmtzcGFjZUxlYWYgYXMgV29ya3NwYWNlTGVhZkNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB7XG4gIFdvcmtzcGFjZU1vYmlsZURyYXdlclxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlTW9iaWxlRHJhd2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBXb3Jrc3BhY2VNb2JpbGVEcmF3ZXIgY29uc3RydWN0b3IuXG4gKiBAcmVtYXJrIENvbnN0cnVjdG9yIGlzIGBudWxsYC4gU2VlIHtAbGluayBodHRwczovL2ZvcnVtLm9ic2lkaWFuLm1kL3QvYXBpLWJ1Zy10YXNrcy1jbGFzcy85ODk5M30uXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtzcGFjZU1vYmlsZURyYXdlckNvbnN0cnVjdG9yKCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VNb2JpbGVEcmF3ZXI+IHtcbiAgcmV0dXJuIFdvcmtzcGFjZU1vYmlsZURyYXdlciBhcyBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlTW9iaWxlRHJhd2VyPjtcbn1cbiIsICJpbXBvcnQge1xuICBXb3Jrc3BhY2VQYXJlbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFdvcmtzcGFjZVBhcmVudCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlUGFyZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VQYXJlbnRDb25zdHJ1Y3RvcigpOiBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlUGFyZW50PiB7XG4gIHJldHVybiBXb3Jrc3BhY2VQYXJlbnQgYXMgdW5rbm93biBhcyBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlUGFyZW50Pjtcbn1cbiIsICJpbXBvcnQge1xuICBXb3Jrc3BhY2VSaWJib25cbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBXb3Jrc3BhY2VSaWJib25Db25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VSaWJib24+O1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlUmliYm9uIGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBXb3Jrc3BhY2VSaWJib24gY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtzcGFjZVJpYmJvbkNvbnN0cnVjdG9yKCk6IFdvcmtzcGFjZVJpYmJvbkNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFdvcmtzcGFjZVJpYmJvbiBhcyBXb3Jrc3BhY2VSaWJib25Db25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBXb3Jrc3BhY2VSb290XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgV29ya3NwYWNlUm9vdENvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZVJvb3Q+O1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlUm9vdCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlUm9vdCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlUm9vdENvbnN0cnVjdG9yKCk6IFdvcmtzcGFjZVJvb3RDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBXb3Jrc3BhY2VSb290IGFzIFdvcmtzcGFjZVJvb3RDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBXb3Jrc3BhY2VTaWRlZG9ja1xufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIFdvcmtzcGFjZVNpZGVkb2NrQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlU2lkZWRvY2s+O1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlU2lkZWRvY2sgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFdvcmtzcGFjZVNpZGVkb2NrIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VTaWRlZG9ja0NvbnN0cnVjdG9yKCk6IFdvcmtzcGFjZVNpZGVkb2NrQ29uc3RydWN0b3Ige1xuICByZXR1cm4gV29ya3NwYWNlU2lkZWRvY2sgYXMgV29ya3NwYWNlU2lkZWRvY2tDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBXb3Jrc3BhY2VTcGxpdFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIFdvcmtzcGFjZVNwbGl0Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8V29ya3NwYWNlU3BsaXQ+O1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlU3BsaXQgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMgVGhlIFdvcmtzcGFjZVNwbGl0IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VTcGxpdENvbnN0cnVjdG9yKCk6IFdvcmtzcGFjZVNwbGl0Q29uc3RydWN0b3Ige1xuICByZXR1cm4gV29ya3NwYWNlU3BsaXQgYXMgV29ya3NwYWNlU3BsaXRDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBXb3Jrc3BhY2VUYWJzXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5cbnR5cGUgV29ya3NwYWNlVGFic0NvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFdvcmtzcGFjZVRhYnM+O1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlVGFicyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgV29ya3NwYWNlVGFicyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlVGFic0NvbnN0cnVjdG9yKCk6IFdvcmtzcGFjZVRhYnNDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBXb3Jrc3BhY2VUYWJzIGFzIFdvcmtzcGFjZVRhYnNDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQge1xuICBXb3Jrc3BhY2VXaW5kb3dcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBXb3Jrc3BhY2VXaW5kb3dDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VXaW5kb3c+O1xuXG4vKipcbiAqIEdldCB0aGUgV29ya3NwYWNlV2luZG93IGNvbnN0cnVjdG9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBXb3Jrc3BhY2VXaW5kb3cgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtzcGFjZVdpbmRvd0NvbnN0cnVjdG9yKCk6IFdvcmtzcGFjZVdpbmRvd0NvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIFdvcmtzcGFjZVdpbmRvdyBhcyBXb3Jrc3BhY2VXaW5kb3dDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgQXBwTWVudUJhck1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvQXBwTWVudUJhck1hbmFnZXIuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIEFwcE1lbnVCYXJNYW5hZ2VyQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8QXBwTWVudUJhck1hbmFnZXI+O1xuXG4vKipcbiAqIEdldCB0aGUgQXBwTWVudUJhck1hbmFnZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgQXBwTWVudUJhck1hbmFnZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFwcE1lbnVCYXJNYW5hZ2VyQ29uc3RydWN0b3IoYXBwOiBBcHApOiBBcHBNZW51QmFyTWFuYWdlckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC5hcHBNZW51QmFyTWFuYWdlci5jb25zdHJ1Y3RvciBhcyBBcHBNZW51QmFyTWFuYWdlckNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBBcHBTZXR0aW5nIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL0FwcFNldHRpbmcuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIEFwcFNldHRpbmdDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxBcHBTZXR0aW5nPjtcblxuLyoqXG4gKiBHZXQgdGhlIEFwcFNldHRpbmcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgQXBwU2V0dGluZyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwU2V0dGluZ0NvbnN0cnVjdG9yKGFwcDogQXBwKTogQXBwU2V0dGluZ0NvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC5zZXR0aW5nLmNvbnN0cnVjdG9yIGFzIEFwcFNldHRpbmdDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgQ2xpIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NsaS9DbGkuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuXG50eXBlIENsaUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPENsaT47XG5cbi8qKlxuICogR2V0IHRoZSBDbGkgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgQ2xpIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGlDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IENsaUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC5jbGkuY29uc3RydWN0b3IgYXMgQ2xpQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IENvbW1hbmRzIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbW1hbmRzL0NvbW1hbmRzLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcblxudHlwZSBDb21tYW5kc0NvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPENvbW1hbmRzPjtcblxuLyoqXG4gKiBHZXQgdGhlIENvbW1hbmRzIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIENvbW1hbmRzIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tYW5kc0NvbnN0cnVjdG9yKGFwcDogQXBwKTogQ29tbWFuZHNDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBhcHAuY29tbWFuZHMuY29uc3RydWN0b3IgYXMgQ29tbWFuZHNDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEN1c3RvbUNTUyB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jdXN0b20tY3NzL0N1c3RvbUNTUy5kLnRzJztcblxudHlwZSBDdXN0b21DU1NDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxDdXN0b21DU1M+O1xuXG4vKipcbiAqIEdldCB0aGUgQ3VzdG9tQ1NTIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIEN1c3RvbUNTUyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VzdG9tQ1NTQ29uc3RydWN0b3IoYXBwOiBBcHApOiBDdXN0b21DU1NDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBhcHAuY3VzdG9tQ3NzLmNvbnN0cnVjdG9yIGFzIEN1c3RvbUNTU0NvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRHJhZ01hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvZHJhZy1tYW5hZ2VyL0RyYWdNYW5hZ2VyLmQudHMnO1xuXG50eXBlIERyYWdNYW5hZ2VyQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8RHJhZ01hbmFnZXI+O1xuXG4vKipcbiAqIEdldCB0aGUgRHJhZ01hbmFnZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgRHJhZ01hbmFnZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERyYWdNYW5hZ2VyQ29uc3RydWN0b3IoYXBwOiBBcHApOiBEcmFnTWFuYWdlckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC5kcmFnTWFuYWdlci5jb25zdHJ1Y3RvciBhcyBEcmFnTWFuYWdlckNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRWRpdG9yU3VnZ2VzdHMgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvRWRpdG9yU3VnZ2VzdHMuZC50cyc7XG5cbnR5cGUgRWRpdG9yU3VnZ2VzdHNDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxFZGl0b3JTdWdnZXN0cz47XG5cbi8qKlxuICogR2V0IHRoZSBFZGl0b3JTdWdnZXN0cyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBFZGl0b3JTdWdnZXN0cyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWRpdG9yU3VnZ2VzdHNDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEVkaXRvclN1Z2dlc3RzQ29uc3RydWN0b3Ige1xuICByZXR1cm4gYXBwLndvcmtzcGFjZS5lZGl0b3JTdWdnZXN0LmNvbnN0cnVjdG9yIGFzIEVkaXRvclN1Z2dlc3RzQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBFbWJlZFJlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2VtYmVkLXJlZ2lzdHJ5L0VtYmVkUmVnaXN0cnkuZC50cyc7XG5cbnR5cGUgRW1iZWRSZWdpc3RyeUNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEVtYmVkUmVnaXN0cnk+O1xuXG4vKipcbiAqIEdldCB0aGUgRW1iZWRSZWdpc3RyeSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBFbWJlZFJlZ2lzdHJ5IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbWJlZFJlZ2lzdHJ5Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFbWJlZFJlZ2lzdHJ5Q29uc3RydWN0b3Ige1xuICByZXR1cm4gYXBwLmVtYmVkUmVnaXN0cnkuY29uc3RydWN0b3IgYXMgRW1iZWRSZWdpc3RyeUNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRm9sZE1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvRm9sZE1hbmFnZXIuZC50cyc7XG5cbnR5cGUgRm9sZE1hbmFnZXJDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxGb2xkTWFuYWdlcj47XG5cbi8qKlxuICogR2V0IHRoZSBGb2xkTWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBGb2xkTWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZE1hbmFnZXJDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEZvbGRNYW5hZ2VyQ29uc3RydWN0b3Ige1xuICByZXR1cm4gYXBwLmZvbGRNYW5hZ2VyLmNvbnN0cnVjdG9yIGFzIEZvbGRNYW5hZ2VyQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRnJhbWVEb20gfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvRnJhbWVEb20uZC50cyc7XG5cbnR5cGUgRnJhbWVEb21Db25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxGcmFtZURvbT47XG5cbi8qKlxuICogR2V0IHRoZSBGcmFtZURvbSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcmV0dXJucyBUaGUgRnJhbWVEb20gY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZyYW1lRG9tQ29uc3RydWN0b3IoKTogRnJhbWVEb21Db25zdHJ1Y3RvciB7XG4gIHJldHVybiB3aW5kb3cuZnJhbWVEb20uY29uc3RydWN0b3IgYXMgRnJhbWVEb21Db25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEhvdGtleU1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvaG90a2V5LW1hbmFnZXIvSG90a2V5TWFuYWdlci5kLnRzJztcblxudHlwZSBIb3RrZXlNYW5hZ2VyQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8SG90a2V5TWFuYWdlcj47XG5cbi8qKlxuICogR2V0IHRoZSBIb3RrZXlNYW5hZ2VyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIEhvdGtleU1hbmFnZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEhvdGtleU1hbmFnZXJDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEhvdGtleU1hbmFnZXJDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBhcHAuaG90a2V5TWFuYWdlci5jb25zdHJ1Y3RvciBhcyBIb3RrZXlNYW5hZ2VyQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBNZXRhZGF0YVR5cGVNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL21ldGFkYXRhLXR5cGUtbWFuYWdlci9NZXRhZGF0YVR5cGVNYW5hZ2VyLmQudHMnO1xuXG50eXBlIE1ldGFkYXRhVHlwZU1hbmFnZXJDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxNZXRhZGF0YVR5cGVNYW5hZ2VyPjtcblxuLyoqXG4gKiBHZXQgdGhlIE1ldGFkYXRhVHlwZU1hbmFnZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgTWV0YWRhdGFUeXBlTWFuYWdlciBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWV0YWRhdGFUeXBlTWFuYWdlckNvbnN0cnVjdG9yKGFwcDogQXBwKTogTWV0YWRhdGFUeXBlTWFuYWdlckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC5tZXRhZGF0YVR5cGVNYW5hZ2VyLmNvbnN0cnVjdG9yIGFzIE1ldGFkYXRhVHlwZU1hbmFnZXJDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IE9ic2lkaWFuRE9NIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL09ic2lkaWFuRE9NLmQudHMnO1xuXG50eXBlIE9ic2lkaWFuRE9NQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8T2JzaWRpYW5ET00+O1xuXG4vKipcbiAqIEdldCB0aGUgT2JzaWRpYW5ET00gY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgT2JzaWRpYW5ET00gY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9ic2lkaWFuRE9NQ29uc3RydWN0b3IoYXBwOiBBcHApOiBPYnNpZGlhbkRPTUNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC5kb20uY29uc3RydWN0b3IgYXMgT2JzaWRpYW5ET01Db25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbnMgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvcGx1Z2lucy9QbHVnaW5zLmQudHMnO1xuXG50eXBlIFBsdWdpbnNDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxQbHVnaW5zPjtcblxuLyoqXG4gKiBHZXQgdGhlIFBsdWdpbnMgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgUGx1Z2lucyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGx1Z2luc0NvbnN0cnVjdG9yKGFwcDogQXBwKTogUGx1Z2luc0NvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC5wbHVnaW5zLmNvbnN0cnVjdG9yIGFzIFBsdWdpbnNDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFJlY2VudEZpbGVUcmFja2VyIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL1JlY2VudEZpbGVUcmFja2VyLmQudHMnO1xuXG50eXBlIFJlY2VudEZpbGVUcmFja2VyQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8UmVjZW50RmlsZVRyYWNrZXI+O1xuXG4vKipcbiAqIEdldCB0aGUgUmVjZW50RmlsZVRyYWNrZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgUmVjZW50RmlsZVRyYWNrZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlY2VudEZpbGVUcmFja2VyQ29uc3RydWN0b3IoYXBwOiBBcHApOiBSZWNlbnRGaWxlVHJhY2tlckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC53b3Jrc3BhY2UucmVjZW50RmlsZVRyYWNrZXIuY29uc3RydWN0b3IgYXMgUmVjZW50RmlsZVRyYWNrZXJDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFNoYXJlUmVjZWl2ZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvU2hhcmVSZWNlaXZlci5kLnRzJztcblxudHlwZSBTaGFyZVJlY2VpdmVyQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8U2hhcmVSZWNlaXZlcj47XG5cbi8qKlxuICogR2V0IHRoZSBTaGFyZVJlY2VpdmVyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIFNoYXJlUmVjZWl2ZXIgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNoYXJlUmVjZWl2ZXJDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IFNoYXJlUmVjZWl2ZXJDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBhcHAuc2hhcmVSZWNlaXZlci5jb25zdHJ1Y3RvciBhcyBTaGFyZVJlY2VpdmVyQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBTdGF0dXNCYXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvU3RhdHVzQmFyLmQudHMnO1xuXG50eXBlIFN0YXR1c0JhckNvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPFN0YXR1c0Jhcj47XG5cbi8qKlxuICogR2V0IHRoZSBTdGF0dXNCYXIgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgU3RhdHVzQmFyIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNCYXJDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IFN0YXR1c0JhckNvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC5zdGF0dXNCYXIuY29uc3RydWN0b3IgYXMgU3RhdHVzQmFyQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBWaWV3UmVnaXN0cnkgfSBmcm9tICcuLi8uLi8uLi9pbnRlcm5hbHMvdmlldy1yZWdpc3RyeS9WaWV3UmVnaXN0cnkuZC50cyc7XG5cbnR5cGUgVmlld1JlZ2lzdHJ5Q29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8Vmlld1JlZ2lzdHJ5PjtcblxuLyoqXG4gKiBHZXQgdGhlIFZpZXdSZWdpc3RyeSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBWaWV3UmVnaXN0cnkgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZpZXdSZWdpc3RyeUNvbnN0cnVjdG9yKGFwcDogQXBwKTogVmlld1JlZ2lzdHJ5Q29uc3RydWN0b3Ige1xuICByZXR1cm4gYXBwLnZpZXdSZWdpc3RyeS5jb25zdHJ1Y3RvciBhcyBWaWV3UmVnaXN0cnlDb25zdHJ1Y3Rvcjtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFdvcmtzcGFjZUxlYWZIaXN0b3J5IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWxzL3dvcmtzcGFjZS1sZWFmLWhpc3RvcnkvV29ya3NwYWNlTGVhZkhpc3RvcnkuZC50cyc7XG5cbnR5cGUgV29ya3NwYWNlTGVhZkhpc3RvcnlDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxXb3Jrc3BhY2VMZWFmSGlzdG9yeT47XG5cbi8qKlxuICogR2V0IHRoZSBXb3Jrc3BhY2VMZWFmSGlzdG9yeSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBXb3Jrc3BhY2VMZWFmSGlzdG9yeSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlTGVhZkhpc3RvcnlDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IFdvcmtzcGFjZUxlYWZIaXN0b3J5Q29uc3RydWN0b3Ige1xuICBjb25zdCBsZWFmID0gYXBwLndvcmtzcGFjZS5nZXRNb3N0UmVjZW50TGVhZigpO1xuICBpZiAoIWxlYWYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHdvcmtzcGFjZSBsZWFmIGF2YWlsYWJsZSB0byBleHRyYWN0IFdvcmtzcGFjZUxlYWZIaXN0b3J5IGNvbnN0cnVjdG9yJyk7XG4gIH1cbiAgcmV0dXJuIGxlYWYuaGlzdG9yeS5jb25zdHJ1Y3RvciBhcyBXb3Jrc3BhY2VMZWFmSGlzdG9yeUNvbnN0cnVjdG9yO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxQbHVnaW4gfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9JbnRlcm5hbFBsdWdpbi5kLnRzJztcblxudHlwZSBJbnRlcm5hbFBsdWdpbkNvbnN0cnVjdG9yPEluc3RhbmNlPiA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxJbnRlcm5hbFBsdWdpbjxJbnN0YW5jZT4+O1xuXG4vKipcbiAqIEdldCB0aGUgSW50ZXJuYWxQbHVnaW4gY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgSW50ZXJuYWxQbHVnaW4gY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEludGVybmFsUGx1Z2luQ29uc3RydWN0b3I8SW5zdGFuY2U+KGFwcDogQXBwKTogSW50ZXJuYWxQbHVnaW5Db25zdHJ1Y3RvcjxJbnN0YW5jZT4ge1xuICBjb25zdCBhbnlQbHVnaW4gPSBPYmplY3QudmFsdWVzKGFwcC5pbnRlcm5hbFBsdWdpbnMucGx1Z2lucylbMF07XG4gIGlmICghYW55UGx1Z2luKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBpbnRlcm5hbCBwbHVnaW4gZm91bmQnKTtcbiAgfVxuICByZXR1cm4gYW55UGx1Z2luLmNvbnN0cnVjdG9yIGFzIEludGVybmFsUGx1Z2luQ29uc3RydWN0b3I8SW5zdGFuY2U+O1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxQbHVnaW5zIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvSW50ZXJuYWxQbHVnaW5zLmQudHMnO1xuXG50eXBlIEludGVybmFsUGx1Z2luc0NvbnN0cnVjdG9yID0gRXh0cmFjdENvbnN0cnVjdG9yPEludGVybmFsUGx1Z2lucz47XG5cbi8qKlxuICogR2V0IHRoZSBJbnRlcm5hbFBsdWdpbnMgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBUaGUgSW50ZXJuYWxQbHVnaW5zIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnRlcm5hbFBsdWdpbnNDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEludGVybmFsUGx1Z2luc0NvbnN0cnVjdG9yIHtcbiAgcmV0dXJuIGFwcC5pbnRlcm5hbFBsdWdpbnMuY29uc3RydWN0b3IgYXMgSW50ZXJuYWxQbHVnaW5zQ29uc3RydWN0b3I7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBWaWV3VHlwZVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvdmlld3MvVmlld1R5cGVUeXBlLmQuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFZpZXdUeXBlVmlld01hcHBpbmcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvdmlld3MvVmlld1R5cGVWaWV3TWFwcGluZy5kLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIHZpZXcgY29uc3RydWN0b3IgYnkgdmlldyB0eXBlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHBhcmFtIHZpZXdUeXBlIC0gVGhlIHZpZXcgdHlwZS5cbiAqIEByZXR1cm5zIFRoZSB2aWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlPFRWaWV3VHlwZSBleHRlbmRzIFZpZXdUeXBlVHlwZT4oXG4gIGFwcDogQXBwLFxuICB2aWV3VHlwZTogVFZpZXdUeXBlXG4pOiBFeHRyYWN0Q29uc3RydWN0b3I8Vmlld1R5cGVWaWV3TWFwcGluZ1tUVmlld1R5cGVdPiB7XG4gIGNvbnN0IGxlYWYgPSBhcHAud29ya3NwYWNlLmNyZWF0ZUxlYWZJblRhYkdyb3VwKCk7XG4gIHRyeSB7XG4gICAgY29uc3Qgdmlld0NyZWF0b3IgPSBhcHAudmlld1JlZ2lzdHJ5LmdldFZpZXdDcmVhdG9yQnlUeXBlKHZpZXdUeXBlKTtcbiAgICBpZiAoIXZpZXdDcmVhdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpZXcgY3JlYXRvciBub3QgZm91bmQnKTtcbiAgICB9XG4gICAgY29uc3QgdmlldyA9IHZpZXdDcmVhdG9yKGxlYWYpO1xuICAgIHJldHVybiB2aWV3LmNvbnN0cnVjdG9yIGFzIEV4dHJhY3RDb25zdHJ1Y3RvcjxWaWV3VHlwZVZpZXdNYXBwaW5nW1RWaWV3VHlwZV0+O1xuICB9IGZpbmFsbHkge1xuICAgIGxlYWYuZGV0YWNoKCk7XG4gIH1cbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEFsbFByb3BlcnRpZXNWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvcHJvcGVydGllcy9BbGxQcm9wZXJ0aWVzVmlldy5kLnRzJztcbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQWxsUHJvcGVydGllc1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgQWxsUHJvcGVydGllc1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbFByb3BlcnRpZXNWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8QWxsUHJvcGVydGllc1ZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5BbGxQcm9wZXJ0aWVzKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEF1ZGlvVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy92aWV3cy9BdWRpb1ZpZXcuZC50cyc7XG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEF1ZGlvVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBBdWRpb1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEF1ZGlvVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEF1ZGlvVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLkF1ZGlvKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEJhY2tsaW5rVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL2JhY2tsaW5rL0JhY2tsaW5rVmlldy5kLnRzJztcbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQmFja2xpbmtWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIEJhY2tsaW5rVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFja2xpbmtWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8QmFja2xpbmtWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuQmFja2xpbmspO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgQmFzZXNWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvYmFzZXMvQmFzZXNWaWV3LmQudHMnO1xuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBCYXNlc1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgQmFzZXNWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCYXNlc1ZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxCYXNlc1ZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5CYXNlcyk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBCb29rbWFya3NWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvYm9va21hcmtzL0Jvb2ttYXJrc1ZpZXcuZC50cyc7XG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEJvb2ttYXJrc1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgQm9va21hcmtzVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Qm9va21hcmtzVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEJvb2ttYXJrc1ZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5Cb29rbWFya3MpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgQ2FudmFzVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL2NhbnZhcy9DYW52YXNWaWV3LmQudHMnO1xuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBDYW52YXNWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIENhbnZhc1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhbnZhc1ZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxDYW52YXNWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuQ2FudmFzKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEVtcHR5VmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy92aWV3cy9FbXB0eVZpZXcuZC50cyc7XG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEVtcHR5VmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBFbXB0eVZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVtcHR5Vmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEVtcHR5Vmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLkVtcHR5KTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEZpbGVFeHBsb3JlclZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9maWxlLWV4cGxvcmVyL0ZpbGVFeHBsb3JlclZpZXcuZC50cyc7XG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEZpbGVFeHBsb3JlclZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgRmlsZUV4cGxvcmVyVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZUV4cGxvcmVyVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEZpbGVFeHBsb3JlclZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5GaWxlRXhwbG9yZXIpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgRmlsZVByb3BlcnRpZXNWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvcHJvcGVydGllcy9GaWxlUHJvcGVydGllc1ZpZXcuZC50cyc7XG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIEZpbGVQcm9wZXJ0aWVzVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBGaWxlUHJvcGVydGllc1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVQcm9wZXJ0aWVzVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPEZpbGVQcm9wZXJ0aWVzVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLkZpbGVQcm9wZXJ0aWVzKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IEdyYXBoVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL2dyYXBoL0dyYXBoVmlldy5kLnRzJztcbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgR3JhcGhWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIEdyYXBoVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R3JhcGhWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8R3JhcGhWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuR3JhcGgpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgSW1hZ2VWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL3ZpZXdzL0ltYWdlVmlldy5kLnRzJztcbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgSW1hZ2VWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIEltYWdlVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2VWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8SW1hZ2VWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuSW1hZ2UpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgTG9jYWxHcmFwaFZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9ncmFwaC9Mb2NhbEdyYXBoVmlldy5kLnRzJztcbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgTG9jYWxHcmFwaFZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgTG9jYWxHcmFwaFZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2FsR3JhcGhWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8TG9jYWxHcmFwaFZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5Mb2NhbEdyYXBoKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IE91dGdvaW5nTGlua1ZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9vdXRnb2luZy1saW5rL091dGdvaW5nTGlua1ZpZXcuZC50cyc7XG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIE91dGdvaW5nTGlua1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgT3V0Z29pbmdMaW5rVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3V0Z29pbmdMaW5rVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPE91dGdvaW5nTGlua1ZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5PdXRnb2luZ0xpbmspO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgT3V0bGluZVZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvaW50ZXJuYWwtcGx1Z2lucy9vdXRsaW5lL091dGxpbmVWaWV3LmQudHMnO1xuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBPdXRsaW5lVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBPdXRsaW5lVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3V0bGluZVZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxPdXRsaW5lVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLk91dGxpbmUpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgUGRmVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy92aWV3cy9QZGZWaWV3LmQudHMnO1xuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBQZGZWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIFBkZlZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBkZlZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxQZGZWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuUGRmKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFJlbGVhc2VOb3Rlc1ZpZXcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvdmlld3MvUmVsZWFzZU5vdGVzVmlldy5kLnRzJztcbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgUmVsZWFzZU5vdGVzVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBSZWxlYXNlTm90ZXNWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWxlYXNlTm90ZXNWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8UmVsZWFzZU5vdGVzVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLlJlbGVhc2VOb3Rlcyk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9jb25zdHJ1Y3RvcnMvRXh0cmFjdENvbnN0cnVjdG9yLmQudHMnO1xuaW1wb3J0IHR5cGUgeyBTZWFyY2hWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvZ2xvYmFsLXNlYXJjaC9TZWFyY2hWaWV3LmQudHMnO1xuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBTZWFyY2hWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIFNlYXJjaFZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlYXJjaFZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxTZWFyY2hWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuU2VhcmNoKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFN5bmNWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvc3luYy9TeW5jVmlldy5kLnRzJztcbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgU3luY1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAuXG4gKiBAcmV0dXJucyBUaGUgU3luY1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN5bmNWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8U3luY1ZpZXc+IHtcbiAgcmV0dXJuIGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUoYXBwLCBWaWV3VHlwZS5TeW5jKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFRhYmxlVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL2Jhc2VzL1RhYmxlVmlldy5kLnRzJztcbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL1ZpZXdUeXBlLnRzJztcbmltcG9ydCB7IGdldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUgfSBmcm9tICcuL2dldFZpZXdDb25zdHJ1Y3RvckJ5Vmlld1R5cGUudHMnO1xuXG4vKipcbiAqIEdldCB0aGUgVGFibGVWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIFRhYmxlVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFibGVWaWV3Q29uc3RydWN0b3IoYXBwOiBBcHApOiBFeHRyYWN0Q29uc3RydWN0b3I8VGFibGVWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuVGFibGUpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgVGFnVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy92aWV3cy9UYWdWaWV3LmQudHMnO1xuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBUYWdWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIFRhZ1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRhZ1ZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxUYWdWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuVGFnKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFZpZGVvVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy92aWV3cy9WaWRlb1ZpZXcuZC50cyc7XG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9WaWV3VHlwZS50cyc7XG5pbXBvcnQgeyBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlIH0gZnJvbSAnLi9nZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlLnRzJztcblxuLyoqXG4gKiBHZXQgdGhlIFZpZGVvVmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBWaWRlb1ZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZpZGVvVmlld0NvbnN0cnVjdG9yKGFwcDogQXBwKTogRXh0cmFjdENvbnN0cnVjdG9yPFZpZGVvVmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLlZpZGVvKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgRXh0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2NvbnN0cnVjdG9ycy9FeHRyYWN0Q29uc3RydWN0b3IuZC50cyc7XG5pbXBvcnQgdHlwZSB7IFdlYnZpZXdlckhpc3RvcnlWaWV3IH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJuYWxzL2ludGVybmFsLXBsdWdpbnMvd2Vidmlld2VyL1dlYnZpZXdlckhpc3RvcnlWaWV3LmQudHMnO1xuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBXZWJ2aWV3ZXJIaXN0b3J5VmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBXZWJ2aWV3ZXJIaXN0b3J5VmlldyBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2Vidmlld2VySGlzdG9yeVZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXZWJ2aWV3ZXJIaXN0b3J5Vmlldz4ge1xuICByZXR1cm4gZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZShhcHAsIFZpZXdUeXBlLldlYnZpZXdlckhpc3RvcnkpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcm5hbHMvY29uc3RydWN0b3JzL0V4dHJhY3RDb25zdHJ1Y3Rvci5kLnRzJztcbmltcG9ydCB0eXBlIHsgV2Vidmlld2VyVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVybmFscy9pbnRlcm5hbC1wbHVnaW5zL3dlYnZpZXdlci9XZWJ2aWV3ZXJWaWV3LmQudHMnO1xuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvVmlld1R5cGUudHMnO1xuaW1wb3J0IHsgZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZSB9IGZyb20gJy4vZ2V0Vmlld0NvbnN0cnVjdG9yQnlWaWV3VHlwZS50cyc7XG5cbi8qKlxuICogR2V0IHRoZSBXZWJ2aWV3ZXJWaWV3IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwLlxuICogQHJldHVybnMgVGhlIFdlYnZpZXdlclZpZXcgY29uc3RydWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdlYnZpZXdlclZpZXdDb25zdHJ1Y3RvcihhcHA6IEFwcCk6IEV4dHJhY3RDb25zdHJ1Y3RvcjxXZWJ2aWV3ZXJWaWV3PiB7XG4gIHJldHVybiBnZXRWaWV3Q29uc3RydWN0b3JCeVZpZXdUeXBlKGFwcCwgVmlld1R5cGUuV2Vidmlld2VyKTtcbn1cbiIsICJpbXBvcnQge1xuICB0eXBlIEFwcCxcbiAgVEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHsgZ2V0VEZpbGVDb25zdHJ1Y3RvciB9IGZyb20gJy4uL2NvbnN0cnVjdG9ycy9hdWdtZW50YXRpb25zL2dldFRGaWxlQ29uc3RydWN0b3IudHMnO1xuaW1wb3J0IHsgcGFyZW50Rm9sZGVyUGF0aCB9IGZyb20gJy4uL3V0aWxzL1BhdGhVdGlscy50cyc7XG5pbXBvcnQgeyBjcmVhdGVURm9sZGVySW5zdGFuY2UgfSBmcm9tICcuL2NyZWF0ZVRGb2xkZXJJbnN0YW5jZS50cyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgcHJvcGVybHkgaW5pdGlhbGl6ZXMgdGhlIGluc3RhbmNlIG9mIFRGaWxlIGV2ZW4gdGhlIHVuZGVybHlpbmcgZmlsZSBkb2VzIG5vdCBleGlzdC5cbiAqIFRoaXMgZG9lc24ndCBjcmVhdGUgdGhlIG1pc3NpbmcgZmlsZSBvbiB0aGUgZmlsZSBzeXN0ZW0uXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRGaWxlSW5zdGFuY2UoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFRGaWxlIHtcbiAgbGV0IGZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChwYXRoKTtcbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIGZpbGUgPSBuZXcgKGdldFRGaWxlQ29uc3RydWN0b3IoKSkoYXBwLnZhdWx0LCBwYXRoKTtcbiAgZmlsZS5wYXJlbnQgPSBjcmVhdGVURm9sZGVySW5zdGFuY2UoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpKTtcbiAgZmlsZS5kZWxldGVkID0gdHJ1ZTtcbiAgcmV0dXJuIGZpbGU7XG59XG4iLCAiLyoqXG4gKiBHZXQgdGhlIHBhcmVudCBmb2xkZXIgcGF0aCBvZiBhIGdpdmVuIHBhdGguXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBnZXQgdGhlIHBhcmVudCBmb2xkZXIgcGF0aCBvZi5cbiAqIEByZXR1cm5zIFRoZSBwYXJlbnQgZm9sZGVyIHBhdGguXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcmVudEZvbGRlclBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhdGgucmVwbGFjZSgvXFwvP1teXFwvXSokLywgJycpIHx8ICcvJztcbn1cbiIsICJpbXBvcnQge1xuICB0eXBlIEFwcCxcbiAgVEZvbGRlclxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgeyBnZXRURm9sZGVyQ29uc3RydWN0b3IgfSBmcm9tICcuLi9jb25zdHJ1Y3RvcnMvYXVnbWVudGF0aW9ucy9nZXRURm9sZGVyQ29uc3RydWN0b3IudHMnO1xuaW1wb3J0IHsgcGFyZW50Rm9sZGVyUGF0aCB9IGZyb20gJy4uL3V0aWxzL1BhdGhVdGlscy50cyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgcHJvcGVybHkgaW5pdGlhbGl6ZXMgdGhlIGluc3RhbmNlIG9mIFRGb2xkZXIgZXZlbiB0aGUgdW5kZXJseWluZyBmb2xkZXIgZG9lcyBub3QgZXhpc3QuXG4gKiBUaGlzIGRvZXNuJ3QgY3JlYXRlIHRoZSBtaXNzaW5nIGZvbGRlciBvbiB0aGUgZmlsZSBzeXN0ZW0uXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRGb2xkZXJJbnN0YW5jZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogVEZvbGRlciB7XG4gIGxldCBmb2xkZXIgPSBhcHAudmF1bHQuZ2V0Rm9sZGVyQnlQYXRoKHBhdGgpO1xuICBpZiAoZm9sZGVyKSB7XG4gICAgcmV0dXJuIGZvbGRlcjtcbiAgfVxuXG4gIGZvbGRlciA9IG5ldyAoZ2V0VEZvbGRlckNvbnN0cnVjdG9yKCkpKGFwcC52YXVsdCwgcGF0aCk7XG4gIGZvbGRlci5wYXJlbnQgPSBjcmVhdGVURm9sZGVySW5zdGFuY2UoYXBwLCBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpKTtcbiAgZm9sZGVyLmRlbGV0ZWQgPSB0cnVlO1xuICByZXR1cm4gZm9sZGVyO1xufVxuIiwgImltcG9ydCB0eXBlIHsgTWVybWFpZCB9IGZyb20gJ21lcm1haWQnIHdpdGggeyAncmVzb2x1dGlvbi1tb2RlJzogJ2ltcG9ydCcgfTtcbmltcG9ydCB7IGxvYWRNZXJtYWlkIGFzIGxvYWRNZXJtYWlkT3JpZ2luYWwgfSBmcm9tICdvYnNpZGlhbic7XG5cbi8qKlxuICogTG9hZCBNZXJtYWlkIGFuZCByZXR1cm4gYSBwcm9taXNlIHRvIHRoZSBnbG9iYWwgbWVybWFpZCBvYmplY3QuXG4gKiBDYW4gYWxzbyB1c2UgYHdpbmRvdy5tZXJtYWlkYCBhZnRlciB0aGlzIHByb21pc2UgcmVzb2x2ZXMgdG8gZ2V0IHRoZSBzYW1lIHJlZmVyZW5jZS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgZ2xvYmFsIGB3aW5kb3cubWVybWFpZGAgb2JqZWN0LlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vbWVybWFpZC5qcy5vcmcvIHwgT2ZmaWNpYWwgTWVybWFpZCBkb2N1bWVudGF0aW9ufS5cbiAqIEBwdWJsaWNcbiAqIEB1bm9mZmljaWFsXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkTWVybWFpZCgpOiBQcm9taXNlPE1lcm1haWQ+IHtcbiAgcmV0dXJuIChhd2FpdCBsb2FkTWVybWFpZE9yaWdpbmFsKCkpIGFzIE1lcm1haWQ7XG59XG4iLCAiaW1wb3J0IHsgbG9hZFBkZkpzIGFzIGxvYWRQZGZKc09yaWdpbmFsIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIHBkZmpzTGliIH0gZnJvbSAncGRmanMtZGlzdCc7XG5cbi8qKlxuICogTG9hZCBQREYuanMgYW5kIHJldHVybiBhIHByb21pc2UgdG8gdGhlIGdsb2JhbCBwZGZqc0xpYiBvYmplY3QuXG4gKiBDYW4gYWxzbyB1c2UgYHdpbmRvdy5wZGZqc0xpYmAgYWZ0ZXIgdGhpcyBwcm9taXNlIHJlc29sdmVzIHRvIGdldCB0aGUgc2FtZSByZWZlcmVuY2UuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGdsb2JhbCBgd2luZG93LnBkZmpzTGliYCBvYmplY3QuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9tb3ppbGxhLmdpdGh1Yi5pby9wZGYuanMvIHwgT2ZmaWNpYWwgUERGLmpzIGRvY3VtZW50YXRpb259LlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRQZGZKcygpOiBQcm9taXNlPHR5cGVvZiBwZGZqc0xpYj4ge1xuICByZXR1cm4gKGF3YWl0IGxvYWRQZGZKc09yaWdpbmFsKCkpIGFzIHR5cGVvZiBwZGZqc0xpYjtcbn1cbiIsICJpbXBvcnQgeyBsb2FkUHJpc20gYXMgbG9hZFByaXNtT3JpZ2luYWwgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgUHJpc20gfSBmcm9tICdwcmlzbWpzJztcblxuLyoqXG4gKiBMb2FkIFByaXNtLmpzIGFuZCByZXR1cm4gYSBwcm9taXNlIHRvIHRoZSBnbG9iYWwgUHJpc20gb2JqZWN0LlxuICogQ2FuIGFsc28gdXNlIGB3aW5kb3cuUHJpc21gIGFmdGVyIHRoaXMgcHJvbWlzZSByZXNvbHZlcyB0byBnZXQgdGhlIHNhbWUgcmVmZXJlbmNlLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBnbG9iYWwgYHdpbmRvdy5QcmlzbWAgb2JqZWN0LlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vcHJpc21qcy5jb20vIHwgT2ZmaWNpYWwgUHJpc20gZG9jdW1lbnRhdGlvbn0uXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFByaXNtKCk6IFByb21pc2U8dHlwZW9mIFByaXNtPiB7XG4gIHJldHVybiAoYXdhaXQgbG9hZFByaXNtT3JpZ2luYWwoKSkgYXMgdHlwZW9mIFByaXNtO1xufVxuIiwgImltcG9ydCB0eXBlIHtcbiAgUmVmZXJlbmNlLFxuICBSZWZlcmVuY2VDYWNoZVxufSBmcm9tICdvYnNpZGlhbic7XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHJlZmVyZW5jZSBpcyBhIHJlZmVyZW5jZSBjYWNoZS5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHJlZmVyZW5jZSBpcyBhIHJlZmVyZW5jZSBjYWNoZS5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2U6IFJlZmVyZW5jZSk6IHJlZmVyZW5jZSBpcyBSZWZlcmVuY2VDYWNoZSB7XG4gIHJldHVybiAhIShyZWZlcmVuY2UgYXMgUGFydGlhbDxSZWZlcmVuY2VDYWNoZT4pLnBvc2l0aW9uO1xufVxuIiwgImltcG9ydCB0eXBlIHtcbiAgRW1iZWRDYWNoZSxcbiAgUmVmZXJlbmNlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7IGlzUmVmZXJlbmNlQ2FjaGUgfSBmcm9tICcuL2lzUmVmZXJlbmNlQ2FjaGUudHMnO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSByZWZlcmVuY2UgaXMgYW4gZW1iZWQgY2FjaGUuXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZSAtIFRoZSByZWZlcmVuY2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSByZWZlcmVuY2UgaXMgYW4gZW1iZWQgY2FjaGUuXG4gKlxuICogQHB1YmxpY1xuICogQHVub2ZmaWNpYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRW1iZWRDYWNoZShyZWZlcmVuY2U6IFJlZmVyZW5jZSk6IHJlZmVyZW5jZSBpcyBFbWJlZENhY2hlIHtcbiAgcmV0dXJuIGlzUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKSAmJiByZWZlcmVuY2Uub3JpZ2luYWxbMF0gPT09ICchJztcbn1cbiIsICJpbXBvcnQgdHlwZSB7XG4gIEZyb250bWF0dGVyTGlua0NhY2hlLFxuICBSZWZlcmVuY2Vcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSByZWZlcmVuY2UgaXMgYSBmcm9udG1hdHRlciBsaW5rIGNhY2hlLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2UgLSBUaGUgcmVmZXJlbmNlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcmVmZXJlbmNlIGlzIGEgZnJvbnRtYXR0ZXIgbGluayBjYWNoZS5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGcm9udG1hdHRlckxpbmtDYWNoZShyZWZlcmVuY2U6IFJlZmVyZW5jZSk6IHJlZmVyZW5jZSBpcyBGcm9udG1hdHRlckxpbmtDYWNoZSB7XG4gIHJldHVybiAhIShyZWZlcmVuY2UgYXMgUGFydGlhbDxGcm9udG1hdHRlckxpbmtDYWNoZT4pLmtleTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7XG4gIExpbmtDYWNoZSxcbiAgUmVmZXJlbmNlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7IGlzUmVmZXJlbmNlQ2FjaGUgfSBmcm9tICcuL2lzUmVmZXJlbmNlQ2FjaGUudHMnO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSByZWZlcmVuY2UgaXMgYSBsaW5rIGNhY2hlLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2UgLSBUaGUgcmVmZXJlbmNlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcmVmZXJlbmNlIGlzIGEgbGluayBjYWNoZS5cbiAqXG4gKiBAcHVibGljXG4gKiBAdW5vZmZpY2lhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMaW5rQ2FjaGUocmVmZXJlbmNlOiBSZWZlcmVuY2UpOiByZWZlcmVuY2UgaXMgTGlua0NhY2hlIHtcbiAgcmV0dXJuIGlzUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKSAmJiByZWZlcmVuY2Uub3JpZ2luYWxbMF0gIT09ICchJztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFB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SUFBSTtBQUN2QyxNQUFJLE1BQU07QUFDUixXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sS0FBSyxvQkFBb0IsR0FBRyxJQUFJLE9BQU8sSUFBSTtBQUNsRCxPQUFLLFNBQVMsc0JBQXNCLEtBQUssaUJBQWlCLElBQUksQ0FBQztBQUMvRCxPQUFLLFVBQVU7QUFDZixTQUFPO0FBQ1Q7OztBR3hCQSxJQUFBQyxvQkFBbUQ7QUFZbkQsZUFBc0IsY0FBZ0M7QUFDcEQsU0FBUSxVQUFNLGtCQUFBQyxhQUFvQjtBQUNwQzs7O0FDZkEsSUFBQUMsb0JBQStDO0FBYS9DLGVBQXNCLFlBQXNDO0FBQzFELFNBQVEsVUFBTSxrQkFBQUMsV0FBa0I7QUFDbEM7OztBQ2ZBLElBQUFDLG9CQUErQztBQWEvQyxlQUFzQixZQUFtQztBQUN2RCxTQUFRLFVBQU0sa0JBQUFDLFdBQWtCO0FBQ2xDOzs7QUNETyxTQUFTLGlCQUFpQixXQUFtRDtBQUNsRixTQUFPLENBQUMsQ0FBRSxVQUFzQztBQUNsRDs7O0FDRE8sU0FBUyxhQUFhLFdBQStDO0FBQzFFLFNBQU8saUJBQWlCLFNBQVMsS0FBSyxVQUFVLFNBQVMsQ0FBQyxNQUFNO0FBQ2xFOzs7QUNITyxTQUFTLHVCQUF1QixXQUF5RDtBQUM5RixTQUFPLENBQUMsQ0FBRSxVQUE0QztBQUN4RDs7O0FDRE8sU0FBUyxZQUFZLFdBQThDO0FBQ3hFLFNBQU8saUJBQWlCLFNBQVMsS0FBSyxVQUFVLFNBQVMsQ0FBQyxNQUFNO0FBQ2xFOyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJsb2FkTWVybWFpZE9yaWdpbmFsIiwgImltcG9ydF9vYnNpZGlhbiIsICJsb2FkUGRmSnNPcmlnaW5hbCIsICJpbXBvcnRfb2JzaWRpYW4iLCAibG9hZFByaXNtT3JpZ2luYWwiXQp9Cg==