@colijnit/corecomponents_v12 12.2.3 → 12.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/bundles/colijnit-corecomponents_v12.umd.js +454 -85
  2. package/bundles/colijnit-corecomponents_v12.umd.js.map +1 -1
  3. package/colijnit-corecomponents_v12.d.ts +0 -2
  4. package/colijnit-corecomponents_v12.metadata.json +1 -1
  5. package/esm2015/colijnit-corecomponents_v12.js +1 -3
  6. package/esm2015/lib/components/button/button.component.js +27 -20
  7. package/esm2015/lib/components/filter-item/filter-item.component.js +10 -5
  8. package/esm2015/lib/components/grid-toolbar/grid-toolbar.component.js +7 -2
  9. package/esm2015/lib/components/input-date-picker/input-date-picker.component.js +3 -1
  10. package/esm2015/lib/components/list-of-values/list-of-values.component.js +14 -6
  11. package/esm2015/lib/components/simple-grid/simple-grid.component.js +22 -4
  12. package/esm2015/lib/directives/screen-configuration/screen-configuration.directive.js +123 -33
  13. package/esm2015/lib/directives/screen-configuration/screen-configuration.module.js +4 -6
  14. package/esm2015/lib/service/base-module-screen-config.service.js +205 -0
  15. package/esm2015/lib/service/base-module.service.js +42 -0
  16. package/esm2015/public-api.js +4 -1
  17. package/fesm2015/colijnit-corecomponents_v12.js +429 -87
  18. package/fesm2015/colijnit-corecomponents_v12.js.map +1 -1
  19. package/lib/components/button/button.component.d.ts +11 -3
  20. package/lib/components/grid-toolbar/grid-toolbar.component.d.ts +1 -0
  21. package/lib/components/simple-grid/simple-grid.component.d.ts +4 -2
  22. package/lib/components/simple-grid/style/_layout.scss +4 -0
  23. package/lib/components/simple-grid/style/_material-definition.scss +2 -0
  24. package/lib/components/simple-grid/style/_theme.scss +1 -1
  25. package/lib/directives/screen-configuration/screen-configuration.directive.d.ts +25 -9
  26. package/lib/service/base-module-screen-config.service.d.ts +47 -0
  27. package/lib/service/base-module.service.d.ts +22 -0
  28. package/package.json +5 -4
  29. package/public-api.d.ts +3 -0
  30. package/esm2015/lib/directives/screen-configuration/screen-config-component-wrapper.component.js +0 -30
  31. package/lib/directives/screen-configuration/screen-config-component-wrapper.component.d.ts +0 -11
@@ -1,9 +1,10 @@
1
- import { Component, ElementRef, HostBinding, Input, ViewChild, ViewEncapsulation } from '@angular/core';
1
+ import { Component, ElementRef, forwardRef, HostBinding, Input, ViewChild, ViewEncapsulation } from '@angular/core';
2
2
  import { BaseInputComponent } from '../base/base-input.component';
3
3
  import { CoreComponentsIcon } from '../../core/enum/core-components-icon.enum';
4
4
  import { OverlayService } from '../../service/overlay.service';
5
5
  import { ListOfValuesPopupComponent } from './list-of-values-popup.component';
6
6
  import { KeyboardKey } from '../../core/enum/keyboard-key.enum';
7
+ import { SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME } from '../../interfaces/screen-config-adapter-component-interface-name';
7
8
  export class ListOfValuesComponent extends BaseInputComponent {
8
9
  constructor() {
9
10
  super(...arguments);
@@ -40,8 +41,11 @@ export class ListOfValuesComponent extends BaseInputComponent {
40
41
  if (this._lovPopupComponentRef) {
41
42
  this._lovPopupComponentRef.instance.searchTerm = model;
42
43
  }
43
- if (!this.selectedModel && model) {
44
- this.openPopup();
44
+ else {
45
+ if (!this.selectedModel && model) {
46
+ this.openPopup();
47
+ this._lovPopupComponentRef.instance.searchTerm = model;
48
+ }
45
49
  }
46
50
  this.selectedModel = model;
47
51
  }
@@ -160,7 +164,7 @@ export class ListOfValuesComponent extends BaseInputComponent {
160
164
  this.selectedModel = this.model[this.displayField];
161
165
  }
162
166
  else {
163
- this.selectedModel = "";
167
+ this.selectedModel = '';
164
168
  }
165
169
  }
166
170
  }
@@ -203,7 +207,11 @@ ListOfValuesComponent.decorators = [
203
207
  </co-input-text>
204
208
  `,
205
209
  providers: [
206
- OverlayService
210
+ OverlayService,
211
+ {
212
+ provide: SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME,
213
+ useExisting: forwardRef(() => ListOfValuesComponent)
214
+ }
207
215
  ],
208
216
  encapsulation: ViewEncapsulation.None
209
217
  },] }
@@ -221,4 +229,4 @@ ListOfValuesComponent.propDecorators = {
221
229
  searchDisabled: [{ type: Input }],
222
230
  showClass: [{ type: HostBinding, args: ['class.co-list-of-values',] }]
223
231
  };
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1vZi12YWx1ZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2xpc3Qtb2YtdmFsdWVzL2xpc3Qtb2YtdmFsdWVzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFnQixVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQTRDOUQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGtCQUF1QjtJQXpDbEU7O1FBMENvQixVQUFLLEdBQThCLGtCQUFrQixDQUFDO1FBa0IvRCxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUc3QixpQkFBWSxHQUFXLGFBQWEsQ0FBQztRQXdCckMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFPaEMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsVUFBSyxHQUFXLFNBQVMsQ0FBQztRQUUxQixtQkFBYyxHQUFhLEVBQUUsQ0FBQztRQUU3QixnQkFBVyxHQUFVLEVBQUUsQ0FBQztJQTZJcEMsQ0FBQztJQXBNRyxJQUNXLEtBQUssQ0FBQyxLQUFVO1FBQ3ZCLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzdCLENB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S0FBSzs2QkFHTCxLQUFLOzZCQUdMLEtBQUs7d0JBR0wsV0FBVyxTQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBDb21wb25lbnRSZWYsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtCYXNlSW5wdXRDb21wb25lbnR9IGZyb20gJy4uL2Jhc2UvYmFzZS1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0NvcmVDb21wb25lbnRzSWNvbn0gZnJvbSAnLi4vLi4vY29yZS9lbnVtL2NvcmUtY29tcG9uZW50cy1pY29uLmVudW0nO1xyXG5pbXBvcnQge092ZXJsYXlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL292ZXJsYXkuc2VydmljZSc7XHJcbmltcG9ydCB7TGlzdE9mVmFsdWVzUG9wdXBDb21wb25lbnR9IGZyb20gJy4vbGlzdC1vZi12YWx1ZXMtcG9wdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHtLZXlib2FyZEtleX0gZnJvbSAnLi4vLi4vY29yZS9lbnVtL2tleWJvYXJkLWtleS5lbnVtJztcclxuaW1wb3J0IHtTYWZlSHRtbH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY28tbGlzdC1vZi12YWx1ZXMnLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8Y28taW5wdXQtdGV4dCBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNTZWxlY3RPcGVuXCIgYXJpYS1jb250cm9scz1cImxvdi1wb3B1cFwiIHJvbGU9XCJjb21ib2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuby1mb2N1cy1saW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5UGFyZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgI3BhcmVudEZvck92ZXJsYXk9XCJvdmVybGF5UGFyZW50XCIgdHlwZT1cInRleHRcIiBbaWRdPVwibGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJtdWx0aXNlbGVjdCA/IHNlbGVjdGVkTW9kZWxzIDogc2VsZWN0ZWRNb2RlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbbm9DbGlja0ZvY3VzXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbbGVmdEljb25EYXRhXT1cImxlZnRJY29uRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3JpZ2h0SWNvbl09XCJpc1NlbGVjdE9wZW4gPyBpY29ucy5DaGV2cm9uVXBSZWd1bGFyIDogaWNvbnMuQ2hldnJvbkRvd25SZWd1bGFyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFt1c2VDb250ZW50XT1cIm11bHRpc2VsZWN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tSGVpZ2h0XT1cIm11bHRpc2VsZWN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICBba2VlcEZvY3Vzc2VkXT1cImtlZXBGb2N1c3NlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZUlucHV0TW9kZWxDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Qb3B1cCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAocmlnaHRJY29uQ2xpY2spPVwidG9nZ2xlU2VsZWN0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cImhhbmRsZUlucHV0S2V5RG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAoY2xlYXJJY29uQ2xpY2spPVwiY2xlYXJNb2RlbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJjaGVja01vZGVsKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpc2VsZWN0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlzZWxlY3QtY2hpcHMtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwc1wiICpuZ0Zvcj1cImxldCBjaGlwIG9mIG1vZGVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcHMtZGVzY3JpcHRpb25cIiBbdGV4dENvbnRlbnRdPVwiY2hpcFtkaXNwbGF5RmllbGRdXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cInJlbW92ZS1jaGlwLWljb25cIiBbaWNvbl09XCJpY29ucy5Dcm9zc1NraW5ueVwiIChjbGljayk9XCJyZW1vdmVPcHRpb25Gcm9tTW9kZWwoY2hpcClcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9jby1pbnB1dC10ZXh0PlxyXG4gICAgYCxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIE92ZXJsYXlTZXJ2aWNlXHJcbiAgICBdLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExpc3RPZlZhbHVlc0NvbXBvbmVudCBleHRlbmRzIEJhc2VJbnB1dENvbXBvbmVudDxhbnk+IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIENvcmVDb21wb25lbnRzSWNvbiA9IENvcmVDb21wb25lbnRzSWNvbjtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBtb2RlbCh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgc3VwZXIubW9kZWwgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLl9zZXRTZWxlY3RlZE1vZGVsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBtb2RlbCgpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5tb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBAVmlld0NoaWxkKCdwYXJlbnRGb3JPdmVybGF5Jywge3JlYWQ6IEVsZW1lbnRSZWZ9KVxyXG4gICAgcHVibGljIHBhcmVudEZvck92ZXJsYXk6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jdXN0b20taGVpZ2h0JylcclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MubXVsdGktc2VsZWN0JylcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbXVsdGlzZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGRpc3BsYXlGaWVsZDogc3RyaW5nID0gJ2Rlc2NyaXB0aW9uJztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBjb2xsZWN0aW9uKHZhbHVlOiBhbnlbXSkge1xyXG4gICAgICAgIHRoaXMuX2NvbGxlY3Rpb24gPSB2YWx1ZSB8fCBbXTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGNvbGxlY3Rpb24oKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jb2xsZWN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbGVmdEljb25EYXRhOiBTYWZlSHRtbCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNlYXJjaFBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY3VzdG9tQ3NzQ2xhc3M6IHN0cmluZztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNlYXJjaERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1saXN0LW9mLXZhbHVlcycpXHJcbiAgICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc1NlbGVjdE9wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBzdGF0ZTogc3RyaW5nID0gJ2RlZmF1bHQnO1xyXG4gICAgcHVibGljIHNlbGVjdGVkTW9kZWw6IHN0cmluZztcclxuICAgIHB1YmxpYyBzZWxlY3RlZE1vZGVsczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBwcml2YXRlIF9jb2xsZWN0aW9uOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIHByaXZhdGUgX2xvdlBvcHVwQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PjtcclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuX3NldFNlbGVjdGVkTW9kZWwoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlSW5wdXRNb2RlbENoYW5nZShtb2RlbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2xvdlBvcHVwQ29tcG9uZW50UmVmKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2xvdlBvcHVwQ29tcG9uZW50UmVmLmluc3RhbmNlLnNlYXJjaFRlcm0gPSBtb2RlbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkTW9kZWwgJiYgbW9kZWwpIHtcclxuICAgICAgICAgICAgdGhpcy5vcGVuUG9wdXAoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1vZGVsID0gbW9kZWw7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhbmRsZUlucHV0S2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChldmVudCkge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQuYWx0S2V5ICYmIGV2ZW50LmNvZGUgPT09IEtleWJvYXJkS2V5LkRvd24gJiYgIXRoaXMuX2xvdlBvcHVwQ29tcG9uZW50UmVmKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Qb3B1cCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9sb3ZQb3B1cENvbXBvbmVudFJlZikge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChldmVudC5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBLZXlib2FyZEtleS5Eb3duOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb3ZQb3B1cENvbXBvbmVudFJlZi5pbnN0YW5jZS5zZWxlY3ROZXh0T3B0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIEtleWJvYXJkS2V5LlVwOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb3ZQb3B1cENvbXBvbmVudFJlZi5pbnN0YW5jZS5zZWxlY3ROZXh0T3B0aW9uKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBLZXlib2FyZEtleS5FbnRlcjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG92UG9wdXBDb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VsZWN0T3B0aW9uQW5kQ2xvc2VQb3B1cCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBLZXlib2FyZEtleS5UYWI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvdlBvcHVwQ29tcG9uZW50UmVmLmluc3RhbmNlLnNlbGVjdE9wdGlvbkFuZENsb3NlUG9wdXAoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2xlYXJNb2RlbChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2V0TW9kZWwodW5kZWZpbmVkKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9nZ2xlU2VsZWN0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdE9wZW4gPSAhdGhpcy5pc1NlbGVjdE9wZW47XHJcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RPcGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlblBvcHVwKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZVBvcHVwKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3RhdGUgPSAodGhpcy5zdGF0ZSA9PT0gJ2RlZmF1bHQnID8gJ3JvdGF0ZWQnIDogJ2RlZmF1bHQnKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb3BlblBvcHVwKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdE9wZW4gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2xvdlBvcHVwQ29tcG9uZW50UmVmID0gdGhpcy5vdmVybGF5U2VydmljZS5jcmVhdGVDb21wb25lbnQoTGlzdE9mVmFsdWVzUG9wdXBDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgIHBhcmVudEZvck92ZXJsYXk6IHRoaXMuZWxlbWVudFJlZixcclxuICAgICAgICAgICAgICAgIGN1c3RvbUNzc0NsYXNzOiB0aGlzLmN1c3RvbUNzc0NsYXNzLFxyXG4gICAgICAgICAgICAgICAgc2VhcmNoRGlzYWJsZWQ6IHRoaXMuc2VhcmNoRGlzYWJsZWQsXHJcbiAgICAgICAgICAgICAgICBzZWFyY2hQbGFjZWhvbGRlcjogdGhpcy5zZWFyY2hQbGFjZWhvbGRlcixcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogdGhpcy5kaXNwbGF5RmllbGQsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXNlbGVjdDogdGhpcy5tdWx0aXNlbGVjdCxcclxuICAgICAgICAgICAgICAgIG1vZGVsOiB0aGlzLm1vZGVsLFxyXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbjogdGhpcy5jb2xsZWN0aW9uXHJcbiAgICAgICAgICAgIH0sIHtcclxuICAgICAgICAgICAgICAgIG1vZGVsQ2hhbmdlOiAodmFsdWUpID0+IHRoaXMub3B0aW9uQ2hvc2VuKHZhbHVlKSxcclxuICAgICAgICAgICAgICAgIGNsb3NlUG9wdXA6ICgpID0+IHRoaXMuY2xvc2VQb3B1cCgpLFxyXG4gICAgICAgICAgICAgICAga2V5RG93bjogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLmhhbmRsZUlucHV0S2V5RG93bihldmVudClcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5rZWVwRm9jdXNzZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZW1vdmVPcHRpb25Gcm9tTW9kZWwoY2hpcDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcclxuICAgICAgICAgICAgY29uc3QgaWR4OiBudW1iZXIgPSB0aGlzLm1vZGVsLmZpbmRJbmRleChtID0+IG0gPT09IGNoaXApO1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLnNwbGljZShpZHgsIDEpO1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvcHRpb25DaG9zZW4ob3B0aW9uOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAob3B0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTW9kZWxzID0gb3B0aW9uLm1hcChvID0+IG9bdGhpcy5kaXNwbGF5RmllbGRdKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbCA9IG9wdGlvblt0aGlzLmRpc3BsYXlGaWVsZF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IG9wdGlvbjtcclxuICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsb3NlUG9wdXAoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5rZWVwRm9jdXNzZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0T3BlbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UucmVtb3ZlQ29tcG9uZW50KHRoaXMuX2xvdlBvcHVwQ29tcG9uZW50UmVmKTtcclxuICAgICAgICB0aGlzLl9sb3ZQb3B1cENvbXBvbmVudFJlZiA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2hlY2tNb2RlbCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QgJiYgdGhpcy5zZWxlY3RlZE1vZGVsICYmIHRoaXMuY29sbGVjdGlvbikge1xyXG4gICAgICAgICAgICBjb25zdCBtb2RlbDogYW55ID0gdGhpcy5jb2xsZWN0aW9uLmZpbmQoYyA9PiBjW3RoaXMuZGlzcGxheUZpZWxkXSA9PT0gdGhpcy5zZWxlY3RlZE1vZGVsKTtcclxuICAgICAgICAgICAgaWYgKG1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsID0gbW9kZWw7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLm1vZGVsKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2V0U2VsZWN0ZWRNb2RlbCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1vZGVscy5sZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5mb3JFYWNoKG0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbHMucHVzaChtW3RoaXMuZGlzcGxheUZpZWxkXSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbHMubGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTW9kZWwgPSB0aGlzLm1vZGVsW3RoaXMuZGlzcGxheUZpZWxkXTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbCA9IFwiXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1vZi12YWx1ZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2xpc3Qtb2YtdmFsdWVzL2xpc3Qtb2YtdmFsdWVzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFnQixVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hJLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFFOUQsT0FBTyxFQUFDLDhDQUE4QyxFQUFDLE1BQU0saUVBQWlFLENBQUM7QUErQy9ILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxrQkFBdUI7SUE3Q2xFOztRQThDb0IsVUFBSyxHQUE4QixrQkFBa0IsQ0FBQztRQWtCL0QsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFHN0IsaUJBQVksR0FBVyxhQUFhLENBQUM7UUF3QnJDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBT2hDLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLFVBQUssR0FBVyxTQUFTLENBQUM7UUFFMUIsbUJBQWMsR0FBYSxFQUFFLENBQUM7UUFFN0IsZ0JBQVcsR0FBVSxFQUFFLENBQUM7SUErSXBDLENBQUM7SUF0TUcsSUFDVyxLQUFLLENBQUMsS0FBVTtRQUN2QixLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ1osT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFhRCxJQUNXLFVBQVUsQ0FBQyxLQUFZO1FBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBa0JNLFNBQVM7UUFDWixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBV0QsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sc0JBQXNCLENBQUMsS0FBYTtRQUN2QyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUM1QixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7U0FDMUQ7YUFBTTtZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEtBQUssRUFBRTtnQkFDOUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7YUFDMUQ7U0FDSjtRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxLQUFvQjtRQUMxQyxJQUFJLEtBQUssRUFBRTtZQUNQLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7Z0JBQ2hGLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxLQUFLLENBQUM7YUFDaEI7WUFDRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtnQkFDNUIsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO29CQUNoQixLQUFLLFdBQVcsQ0FBQyxJQUFJO3dCQUNqQixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUM7d0JBQ3ZELE9BQU8sS0FBSyxDQUFDO29CQUNqQixLQUFLLFdBQVcsQ0FBQyxFQUFFO3dCQUNmLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzNELE9BQU8sS0FBSyxDQUFDO29CQUNqQixLQUFLLFdBQVcsQ0FBQyxLQUFLO3dCQUNsQixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLHlCQUF5QixFQUFFLENBQUM7d0JBQ2hFLE9BQU8sS0FBSyxDQUFDO29CQUNqQixLQUFLLFdBQVcsQ0FBQyxHQUFHO3dCQUNoQixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLHlCQUF5QixFQUFFLENBQUM7aUJBQ3ZFO2FBQ0o7U0FDSjtJQUNMLENBQUM7SUFFTSxVQUFVLENBQUMsS0FBaUI7UUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sWUFBWTtRQUNmLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDcEI7YUFBTTtZQUNILElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNyQjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU0sU0FBUztRQUNaLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQywwQkFBMEIsRUFBRTtZQUN6RixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUNqQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7WUFDekMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQzlCLEVBQUU7WUFDQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1lBQ2hELFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25DLE9BQU8sRUFBRSxDQUFDLEtBQW9CLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7U0FDcEUsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVNLHFCQUFxQixDQUFDLElBQVM7UUFDbEMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLE1BQU0sR0FBRyxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDckM7SUFDTCxDQUFDO0lBRU0sWUFBWSxDQUFDLE1BQVc7UUFDM0IsSUFBSSxNQUFNLEVBQUU7WUFDUixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQzthQUMvRDtpQkFBTTtnQkFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEQ7U0FDSjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sVUFBVTtRQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxTQUFTLENBQUM7UUFDdkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVNLFVBQVU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDNUQsTUFBTSxLQUFLLEdBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMxRixJQUFJLEtBQUssRUFBRTtnQkFDUCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzthQUN0QjtpQkFBTTtnQkFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQzthQUMxQjtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyQztJQUNMLENBQUM7SUFFTyxpQkFBaUI7UUFDckIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDWixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELENBQUMsQ0FBQyxDQUFDO2FBQ047aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2FBQ2xDO1NBQ0o7YUFBTTtZQUNILElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDWixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3REO2lCQUFNO2dCQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO2FBQzNCO1NBQ0o7SUFDTCxDQUFDOzs7WUFwUEosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBaUNUO2dCQUNELFNBQVMsRUFBRTtvQkFDUCxjQUFjO29CQUNkO3dCQUNJLE9BQU8sRUFBRSw4Q0FBOEM7d0JBQ3ZELFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7cUJBQ3ZEO2lCQUNKO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3hDOzs7b0JBSUksS0FBSzsrQkFVTCxTQUFTLFNBQUMsa0JBQWtCLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDOzBCQUdoRCxXQUFXLFNBQUMscUJBQXFCLGNBQ2pDLFdBQVcsU0FBQyxvQkFBb0IsY0FDaEMsS0FBSzsyQkFHTCxLQUFLO3lCQUdMLEtBQUs7MkJBU0wsS0FBSztnQ0FHTCxLQUFLO29CQUdMLEtBQUs7NkJBR0wsS0FBSzs2QkFHTCxLQUFLO3dCQUdMLFdBQVcsU0FBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgQ29tcG9uZW50UmVmLCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QmFzZUlucHV0Q29tcG9uZW50fSBmcm9tICcuLi9iYXNlL2Jhc2UtaW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHtDb3JlQ29tcG9uZW50c0ljb259IGZyb20gJy4uLy4uL2NvcmUvZW51bS9jb3JlLWNvbXBvbmVudHMtaWNvbi5lbnVtJztcclxuaW1wb3J0IHtPdmVybGF5U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9vdmVybGF5LnNlcnZpY2UnO1xyXG5pbXBvcnQge0xpc3RPZlZhbHVlc1BvcHVwQ29tcG9uZW50fSBmcm9tICcuL2xpc3Qtb2YtdmFsdWVzLXBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7S2V5Ym9hcmRLZXl9IGZyb20gJy4uLy4uL2NvcmUvZW51bS9rZXlib2FyZC1rZXkuZW51bSc7XHJcbmltcG9ydCB7U2FmZUh0bWx9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQge1NDUkVFTl9DT05GSUdfQURBUFRFUl9DT01QT05FTlRfSU5URVJGQUNFX05BTUV9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2NyZWVuLWNvbmZpZy1hZGFwdGVyLWNvbXBvbmVudC1pbnRlcmZhY2UtbmFtZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY28tbGlzdC1vZi12YWx1ZXMnLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8Y28taW5wdXQtdGV4dCBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNTZWxlY3RPcGVuXCIgYXJpYS1jb250cm9scz1cImxvdi1wb3B1cFwiIHJvbGU9XCJjb21ib2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuby1mb2N1cy1saW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5UGFyZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgI3BhcmVudEZvck92ZXJsYXk9XCJvdmVybGF5UGFyZW50XCIgdHlwZT1cInRleHRcIiBbaWRdPVwibGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJtdWx0aXNlbGVjdCA/IHNlbGVjdGVkTW9kZWxzIDogc2VsZWN0ZWRNb2RlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbbm9DbGlja0ZvY3VzXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbbGVmdEljb25EYXRhXT1cImxlZnRJY29uRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3JpZ2h0SWNvbl09XCJpc1NlbGVjdE9wZW4gPyBpY29ucy5DaGV2cm9uVXBSZWd1bGFyIDogaWNvbnMuQ2hldnJvbkRvd25SZWd1bGFyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFt1c2VDb250ZW50XT1cIm11bHRpc2VsZWN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tSGVpZ2h0XT1cIm11bHRpc2VsZWN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICBba2VlcEZvY3Vzc2VkXT1cImtlZXBGb2N1c3NlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZUlucHV0TW9kZWxDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Qb3B1cCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAocmlnaHRJY29uQ2xpY2spPVwidG9nZ2xlU2VsZWN0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cImhhbmRsZUlucHV0S2V5RG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAoY2xlYXJJY29uQ2xpY2spPVwiY2xlYXJNb2RlbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJjaGVja01vZGVsKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpc2VsZWN0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlzZWxlY3QtY2hpcHMtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwc1wiICpuZ0Zvcj1cImxldCBjaGlwIG9mIG1vZGVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcHMtZGVzY3JpcHRpb25cIiBbdGV4dENvbnRlbnRdPVwiY2hpcFtkaXNwbGF5RmllbGRdXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cInJlbW92ZS1jaGlwLWljb25cIiBbaWNvbl09XCJpY29ucy5Dcm9zc1NraW5ueVwiIChjbGljayk9XCJyZW1vdmVPcHRpb25Gcm9tTW9kZWwoY2hpcClcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9jby1pbnB1dC10ZXh0PlxyXG4gICAgYCxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIE92ZXJsYXlTZXJ2aWNlLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogU0NSRUVOX0NPTkZJR19BREFQVEVSX0NPTVBPTkVOVF9JTlRFUkZBQ0VfTkFNRSxcclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTGlzdE9mVmFsdWVzQ29tcG9uZW50KVxyXG4gICAgICAgIH1cclxuICAgIF0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGlzdE9mVmFsdWVzQ29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0Q29tcG9uZW50PGFueT4gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgQ29yZUNvbXBvbmVudHNJY29uID0gQ29yZUNvbXBvbmVudHNJY29uO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IG1vZGVsKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBzdXBlci5tb2RlbCA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuX3NldFNlbGVjdGVkTW9kZWwoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IG1vZGVsKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLm1vZGVsO1xyXG4gICAgfVxyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3BhcmVudEZvck92ZXJsYXknLCB7cmVhZDogRWxlbWVudFJlZn0pXHJcbiAgICBwdWJsaWMgcGFyZW50Rm9yT3ZlcmxheTogRWxlbWVudFJlZjtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmN1c3RvbS1oZWlnaHQnKVxyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tdWx0aS1zZWxlY3QnKVxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBtdWx0aXNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZGlzcGxheUZpZWxkOiBzdHJpbmcgPSAnZGVzY3JpcHRpb24nO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGNvbGxlY3Rpb24odmFsdWU6IGFueVtdKSB7XHJcbiAgICAgICAgdGhpcy5fY29sbGVjdGlvbiA9IHZhbHVlIHx8IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgY29sbGVjdGlvbigpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb247XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBsZWZ0SWNvbkRhdGE6IFNhZmVIdG1sIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2VhcmNoUGxhY2Vob2xkZXI6IHN0cmluZztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGxhYmVsOiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjdXN0b21Dc3NDbGFzczogc3RyaW5nO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2VhcmNoRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLWxpc3Qtb2YtdmFsdWVzJylcclxuICAgIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzU2VsZWN0T3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHN0YXRlOiBzdHJpbmcgPSAnZGVmYXVsdCc7XHJcbiAgICBwdWJsaWMgc2VsZWN0ZWRNb2RlbDogc3RyaW5nO1xyXG4gICAgcHVibGljIHNlbGVjdGVkTW9kZWxzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIHByaXZhdGUgX2NvbGxlY3Rpb246IGFueVtdID0gW107XHJcblxyXG4gICAgcHJpdmF0ZSBfbG92UG9wdXBDb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5fc2V0U2VsZWN0ZWRNb2RlbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYW5kbGVJbnB1dE1vZGVsQ2hhbmdlKG1vZGVsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fbG92UG9wdXBDb21wb25lbnRSZWYpIHtcclxuICAgICAgICAgICAgdGhpcy5fbG92UG9wdXBDb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VhcmNoVGVybSA9IG1vZGVsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZE1vZGVsICYmIG1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Qb3B1cCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbG92UG9wdXBDb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VhcmNoVGVybSA9IG1vZGVsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbCA9IG1vZGVsO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYW5kbGVJbnB1dEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50LmFsdEtleSAmJiBldmVudC5jb2RlID09PSBLZXlib2FyZEtleS5Eb3duICYmICF0aGlzLl9sb3ZQb3B1cENvbXBvbmVudFJlZikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuUG9wdXAoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5fbG92UG9wdXBDb21wb25lbnRSZWYpIHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgS2V5Ym9hcmRLZXkuRG93bjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG92UG9wdXBDb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VsZWN0TmV4dE9wdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBLZXlib2FyZEtleS5VcDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG92UG9wdXBDb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VsZWN0TmV4dE9wdGlvbih0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgS2V5Ym9hcmRLZXkuRW50ZXI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvdlBvcHVwQ29tcG9uZW50UmVmLmluc3RhbmNlLnNlbGVjdE9wdGlvbkFuZENsb3NlUG9wdXAoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgS2V5Ym9hcmRLZXkuVGFiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb3ZQb3B1cENvbXBvbmVudFJlZi5pbnN0YW5jZS5zZWxlY3RPcHRpb25BbmRDbG9zZVBvcHVwKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsZWFyTW9kZWwoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNldE1vZGVsKHVuZGVmaW5lZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvZ2dsZVNlbGVjdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNTZWxlY3RPcGVuID0gIXRoaXMuaXNTZWxlY3RPcGVuO1xyXG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0T3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5Qb3B1cCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2VQb3B1cCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN0YXRlID0gKHRoaXMuc3RhdGUgPT09ICdkZWZhdWx0JyA/ICdyb3RhdGVkJyA6ICdkZWZhdWx0Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9wZW5Qb3B1cCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNTZWxlY3RPcGVuID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9sb3ZQb3B1cENvbXBvbmVudFJlZiA9IHRoaXMub3ZlcmxheVNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KExpc3RPZlZhbHVlc1BvcHVwQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIHBhcmVudEZvck92ZXJsYXk6IHRoaXMuZWxlbWVudFJlZixcclxuICAgICAgICAgICAgY3VzdG9tQ3NzQ2xhc3M6IHRoaXMuY3VzdG9tQ3NzQ2xhc3MsXHJcbiAgICAgICAgICAgIHNlYXJjaERpc2FibGVkOiB0aGlzLnNlYXJjaERpc2FibGVkLFxyXG4gICAgICAgICAgICBzZWFyY2hQbGFjZWhvbGRlcjogdGhpcy5zZWFyY2hQbGFjZWhvbGRlcixcclxuICAgICAgICAgICAgZGlzcGxheUZpZWxkOiB0aGlzLmRpc3BsYXlGaWVsZCxcclxuICAgICAgICAgICAgbXVsdGlzZWxlY3Q6IHRoaXMubXVsdGlzZWxlY3QsXHJcbiAgICAgICAgICAgIG1vZGVsOiB0aGlzLm1vZGVsLFxyXG4gICAgICAgICAgICBjb2xsZWN0aW9uOiB0aGlzLmNvbGxlY3Rpb25cclxuICAgICAgICB9LCB7XHJcbiAgICAgICAgICAgIG1vZGVsQ2hhbmdlOiAodmFsdWUpID0+IHRoaXMub3B0aW9uQ2hvc2VuKHZhbHVlKSxcclxuICAgICAgICAgICAgY2xvc2VQb3B1cDogKCkgPT4gdGhpcy5jbG9zZVBvcHVwKCksXHJcbiAgICAgICAgICAgIGtleURvd246IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdGhpcy5oYW5kbGVJbnB1dEtleURvd24oZXZlbnQpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5rZWVwRm9jdXNzZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZW1vdmVPcHRpb25Gcm9tTW9kZWwoY2hpcDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcclxuICAgICAgICAgICAgY29uc3QgaWR4OiBudW1iZXIgPSB0aGlzLm1vZGVsLmZpbmRJbmRleChtID0+IG0gPT09IGNoaXApO1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLnNwbGljZShpZHgsIDEpO1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvcHRpb25DaG9zZW4ob3B0aW9uOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAob3B0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTW9kZWxzID0gb3B0aW9uLm1hcChvID0+IG9bdGhpcy5kaXNwbGF5RmllbGRdKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbCA9IG9wdGlvblt0aGlzLmRpc3BsYXlGaWVsZF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IG9wdGlvbjtcclxuICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsb3NlUG9wdXAoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5rZWVwRm9jdXNzZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0T3BlbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UucmVtb3ZlQ29tcG9uZW50KHRoaXMuX2xvdlBvcHVwQ29tcG9uZW50UmVmKTtcclxuICAgICAgICB0aGlzLl9sb3ZQb3B1cENvbXBvbmVudFJlZiA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2hlY2tNb2RlbCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QgJiYgdGhpcy5zZWxlY3RlZE1vZGVsICYmIHRoaXMuY29sbGVjdGlvbikge1xyXG4gICAgICAgICAgICBjb25zdCBtb2RlbDogYW55ID0gdGhpcy5jb2xsZWN0aW9uLmZpbmQoYyA9PiBjW3RoaXMuZGlzcGxheUZpZWxkXSA9PT0gdGhpcy5zZWxlY3RlZE1vZGVsKTtcclxuICAgICAgICAgICAgaWYgKG1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsID0gbW9kZWw7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLm1vZGVsKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2V0U2VsZWN0ZWRNb2RlbCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1vZGVscy5sZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5mb3JFYWNoKG0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbHMucHVzaChtW3RoaXMuZGlzcGxheUZpZWxkXSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbHMubGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTW9kZWwgPSB0aGlzLm1vZGVsW3RoaXMuZGlzcGxheUZpZWxkXTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbCA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
@@ -52,6 +52,14 @@ export class SimpleGridComponent extends BaseSimpleGridComponent {
52
52
  this.validateAndSave();
53
53
  }
54
54
  }
55
+ isRowDisabled(row) {
56
+ if (this.rowDisabledFn && (typeof this.rowDisabledFn === 'function')) {
57
+ return this.rowDisabledFn.call(this, row);
58
+ }
59
+ else {
60
+ return false;
61
+ }
62
+ }
55
63
  isSingleColumn(column) {
56
64
  return column.singleColumn;
57
65
  }
@@ -109,7 +117,11 @@ export class SimpleGridComponent extends BaseSimpleGridComponent {
109
117
  removeRow() {
110
118
  this.deleteRow.next(this.data[this.selectedRowIndex]);
111
119
  }
112
- handleClickRow(event, index) {
120
+ handleClickRow(event, index, row) {
121
+ if (this.isRowDisabled(row)) {
122
+ this.selectedRowIndex = -1;
123
+ return;
124
+ }
113
125
  setTimeout(() => {
114
126
  if (this._doubleClicked) {
115
127
  return;
@@ -126,7 +138,11 @@ export class SimpleGridComponent extends BaseSimpleGridComponent {
126
138
  }
127
139
  this._detectChanges();
128
140
  }
129
- handleDblClickRow(event, index) {
141
+ handleDblClickRow(event, index, row) {
142
+ if (this.isRowDisabled(row)) {
143
+ this.selectedRowIndex = -1;
144
+ return;
145
+ }
130
146
  this._doubleClicked = true;
131
147
  this.dblClickRow.next(this.data[index]);
132
148
  this.selectTheRow(index, false);
@@ -330,8 +346,9 @@ SimpleGridComponent.decorators = [
330
346
  [cdkDropListEnterPredicate]="handleCanDragDrop"
331
347
  (cdkDropListDropped)="handleDrop($event)">
332
348
  <tr class="simple-grid-row" [class.selected]="rowIndex === selectedRowIndex && !editing" observeVisibility
349
+ [class.disabled]="isRowDisabled(row)"
333
350
  [class.editing]="rowIndex === editRowIndex" *ngFor="let row of (!!rowsPerPage ? (data | paginate: {itemsPerPage: rowsPerPage, currentPage: currentPage}) : data); last as last; let rowIndex = index" cdkDrag
334
- (click)="handleClickRow($event, rowIndex)" (dblclick)="handleDblClickRow($event, rowIndex)" (visible)="rowVisible.next(row)">
351
+ (click)="handleClickRow($event, rowIndex, row)" (dblclick)="handleDblClickRow($event, rowIndex, row)" (visibilityChange)="rowVisible.next(row)">
335
352
  <co-form class="simple-grid-row-form">
336
353
  <ng-container *ngIf="isSingleColumnRow(row)">
337
354
  <td class="simple-grid-single-column-cell" [attr.colspan]="headerColumns.length">
@@ -387,7 +404,8 @@ SimpleGridComponent.propDecorators = {
387
404
  showDelete: [{ type: Input }],
388
405
  rightToolbar: [{ type: Input }],
389
406
  rowsPerPage: [{ type: Input }],
407
+ rowDisabledFn: [{ type: Input }],
390
408
  showClass: [{ type: HostBinding, args: ['class.co-simple-grid',] }],
391
409
  handleKeyDown: [{ type: HostListener, args: ['keydown', ['$event'],] }]
392
410
  };
393
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NpbXBsZS1ncmlkL3NpbXBsZS1ncmlkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBQ0wsWUFBWSxFQUNaLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFnRzdELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSx1QkFBdUI7SUEyRDlELFlBQ1UsZ0JBQW1DLEVBQ25DLFdBQThCO1FBRXRDLEtBQUssRUFBRSxDQUFDO1FBSEEscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQjtRQUNuQyxnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUE1RHhCLHFCQUFnQixHQUFnQixXQUFXLENBQUMsSUFBSSxDQUFDO1FBVTFELFlBQU8sR0FBWSxLQUFLLENBQUM7UUFHekIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUc1QixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUc5QixnQkFBVyxHQUFXLElBQUksQ0FBQztRQTZCM0IsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixpQkFBWSxHQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzFCLGtCQUFhLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDM0IscUJBQWdCLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFFOUIsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFFdkIs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ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybU1hc3RlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2UvZm9ybS1tYXN0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VTaW1wbGVHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLXNpbXBsZS1ncmlkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbHVtbkFsaWduIH0gZnJvbSAnLi9zaW1wbGUtZ3JpZC1jb2x1bW4uZGlyZWN0aXZlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tc2ltcGxlLWdyaWQnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8Y28tZ3JpZC10b29sYmFyICpuZ0lmPVwic2hvd1Rvb2xiYXJcIiBbY2xhc3MucmlnaHRdPVwicmlnaHRUb29sYmFyXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3Nob3dFZGl0XT1cInNob3dFZGl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgW3Nob3dBZGRdPVwic2hvd0FkZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtzaG93RGVsZXRlXT1cInNob3dEZWxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbZGVsZXRlRW5hYmxlZF09XCJzZWxlY3RlZFJvd0luZGV4ID4gLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoYWRkQ2xpY2spPVwiYWRkTmV3Um93KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoZWRpdENsaWNrKT1cImVkaXRSb3coJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChzYXZlQ2xpY2spPVwidmFsaWRhdGVBbmRTYXZlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2FuY2VsQ2xpY2spPVwiY2FuY2VsRWRpdFJvdygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZUNsaWNrKT1cInJlbW92ZVJvdygpXCJcclxuICAgID48L2NvLWdyaWQtdG9vbGJhcj5cclxuICAgIDx0YWJsZSBjbGFzcz1cInNpbXBsZS1ncmlkLXRhYmxlXCI+XHJcbiAgICAgIDxjb2xncm91cD5cclxuICAgICAgICA8Y29sICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgaGVhZGVyQ29sdW1uczsgbGV0IGluZGV4ID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgW2NsYXNzLnNpbXBsZS1ncmlkLWNvbHVtbi1hdXRvLWZpdF09XCJjb2x1bW4uYXV0b0ZpdFwiXHJcbiAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sdW1uLndpZHRoXCJcclxuICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiTUlOX0NPTFVNTl9XSURUSFwiPlxyXG4gICAgICA8L2NvbGdyb3VwPlxyXG4gICAgICA8dGhlYWQ+XHJcbiAgICAgIDx0cj5cclxuICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiAjaGVhZGVyQ2VsbCBjbGFzcz1cInNpbXBsZS1ncmlkLWNvbHVtbi1oZWFkZXJcIiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGhlYWRlckNvbHVtbnM7IGxldCBpbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ltcGxlLWdyaWQtY29sdW1uLWhlYWRlci13cmFwcGVyXCIgW2NsYXNzLnJlc2l6YWJsZV09XCJyZXNpemFibGVcIlxyXG4gICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4udGV4dEFsaWduID8gY29sdW1uLnRleHRBbGlnbiA6IGRlZmF1bHRUZXh0QWxpZ25cIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5oZWFkZXJUZW1wbGF0ZTsgZWxzZSBub0hlYWRlclRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4uaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9IZWFkZXJUZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ltcGxlLWdyaWQtY29sdW1uLWhlYWRlci1sYWJlbFwiIFtuZ0NsYXNzXT1cImNvbHVtbi50ZXh0QWxpZ24gPyBjb2x1bW4udGV4dEFsaWduIDogZGVmYXVsdFRleHRBbGlnblwiXHJcbiAgICAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiY29sdW1uLmhlYWRlclRleHQgfHwgJyZuYnNwOydcIlxyXG4gICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJlc2l6YWJsZSAmJiBjb2x1bW4ucmVzaXphYmxlXCIgY2xhc3M9XCJzaW1wbGUtZ3JpZC1jb2x1bW4tc2l6ZXJcIlxyXG4gICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiaGFuZGxlU2l6ZXJNb3VzZURvd24oJGV2ZW50LCBjb2x1bW4pXCJcclxuICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgPC90cj5cclxuICAgICAgPC90aGVhZD5cclxuICAgICAgPHRib2R5ICNkcm9wTGlzdCBjZGtEcm9wTGlzdCBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwidmVydGljYWxcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJzaW1wbGUtZ3JpZC1kcmFnLWRyb3AtbGlzdFwiXHJcbiAgICAgICAgICAgICBbY2RrRHJvcExpc3REaXNhYmxlZF09XCIhZHJhZ0Ryb3BFbmFibGVkXCJcclxuICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiZGF0YVwiXHJcbiAgICAgICAgICAgICBbY2RrRHJvcExpc3RFbnRlclByZWRpY2F0ZV09XCJoYW5kbGVDYW5EcmFnRHJvcFwiXHJcbiAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImhhbmRsZURyb3AoJGV2ZW50KVwiPlxyXG4gICAgICAgIDx0ciBjbGFzcz1cInNpbXBsZS1ncmlkLXJvd1wiIFtjbGFzcy5zZWxlY3RlZF09XCJyb3dJbmRleCA9PT0gc2VsZWN0ZWRSb3dJbmRleCAmJiAhZWRpdGluZ1wiIG9ic2VydmVWaXNpYmlsaXR5XHJcbiAgICAgICAgICBbY2xhc3MuZWRpdGluZ109XCJyb3dJbmRleCA9PT0gZWRpdFJvd0luZGV4XCIgKm5nRm9yPVwibGV0IHJvdyBvZiAoISFyb3dzUGVyUGFnZSA/IChkYXRhIHwgcGFnaW5hdGU6IHtpdGVtc1BlclBhZ2U6IHJvd3NQZXJQYWdlLCBjdXJyZW50UGFnZTogY3VycmVudFBhZ2V9KSA6IGRhdGEpOyBsYXN0IGFzIGxhc3Q7IGxldCByb3dJbmRleCA9IGluZGV4XCIgY2RrRHJhZ1xyXG4gICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrUm93KCRldmVudCwgcm93SW5kZXgpXCIgKGRibGNsaWNrKT1cImhhbmRsZURibENsaWNrUm93KCRldmVudCwgcm93SW5kZXgpXCIgKHZpc2libGUpPVwicm93VmlzaWJsZS5uZXh0KHJvdylcIj5cclxuICAgICAgICAgIDxjby1mb3JtIGNsYXNzPVwic2ltcGxlLWdyaWQtcm93LWZvcm1cIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzU2luZ2xlQ29sdW1uUm93KHJvdylcIj5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzaW1wbGUtZ3JpZC1zaW5nbGUtY29sdW1uLWNlbGxcIiBbYXR0ci5jb2xzcGFuXT1cImhlYWRlckNvbHVtbnMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY2VsbFxyXG4gICAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbHVtbnNbc2luZ2xlQ29sdW1uSW5kZXgocm93KV1cIlxyXG4gICAgICAgICAgICAgICAgICBbcm93XT1cInJvd1wiXHJcbiAgICAgICAgICAgICAgICAgIFtlZGl0TW9kZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+PC9jby1zaW1wbGUtZ3JpZC1jZWxsPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzU2luZ2xlQ29sdW1uUm93KHJvdylcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgaGVhZGVyQ29sdW1uczsgbGV0IGNvbHVtbkluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInNpbXBsZS1ncmlkLWNvbHVtbi1jZWxsXCIgKm5nSWY9XCJjb2x1bW5JbmRleCAhPT0gc2luZ2xlQ29sdW1uSW5kZXgocm93KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY2VsbFxyXG4gICAgICAgICAgICAgICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcclxuICAgICAgICAgICAgICAgICAgICBbcm93XT1cInJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2VkaXRNb2RlXT1cImlubGluZUVkaXQgJiYgZWRpdGluZyAmJiByb3dJbmRleCA9PT0gZWRpdFJvd0luZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICBbZmllbGRFZGl0TW9kZV09XCJlZGl0Q2VsbEluZGV4ID09PSBjb2x1bW5JbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNlbGxDbGljayk9XCJoYW5kbGVDZWxsQ2xpY2soY29sdW1uSW5kZXgpXCJcclxuICAgICAgICAgICAgICAgICAgPjwvY28tc2ltcGxlLWdyaWQtY2VsbD5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbHVtbi5yZXNpemFibGVcIiBjbGFzcz1cInNpbXBsZS1ncmlkLWNvbHVtbi1zaXplci1wbGFjZWhvbGRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2NvLWZvcm0+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90Ym9keT5cclxuICAgIDwvdGFibGU+XHJcbiAgICA8Y28tcGFnaW5hdGlvbi1iYXIgKm5nSWY9XCJkYXRhPy5sZW5ndGggPiByb3dzUGVyUGFnZVwiIGNsYXNzPVwicGFnaW5hdGlvbi1iYXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc1BlclBhZ2VdPVwicm93c1BlclBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwiZGF0YS5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFthdXRvSGlkZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAocHJldmlvdXNDbGljayk9XCJnb1RvUHJldmlvdXNQYWdlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChuZXh0Q2xpY2spPVwiZ29Ub05leHRQYWdlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChwYWdlQ2xpY2spPVwic2V0Q3VycmVudFBhZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLXBhZ2luYXRpb24tYmFyPlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBGb3JtTWFzdGVyU2VydmljZVxyXG4gIF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNpbXBsZUdyaWRDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2ltcGxlR3JpZENvbXBvbmVudCB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRUZXh0QWxpZ246IENvbHVtbkFsaWduID0gQ29sdW1uQWxpZ24uTGVmdDtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbignaGVhZGVyQ2VsbCcpIHNldCBoZWFkZXJDZWxscyhjZWxscykge1xyXG4gICAgY29uc3QgaGVhZGVyRWxlbWVudHMgPSBjZWxscy50b0FycmF5KCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlYWRlckVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMuY29sdW1uc1tpXS5lbGVtZW50UmVmID0gaGVhZGVyRWxlbWVudHNbaV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93QWRkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dEZWxldGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmlnaHRUb29sYmFyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJvd3NQZXJQYWdlOiBudW1iZXIgPSAxMDAwO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLXNpbXBsZS1ncmlkJylcclxuICBwdWJsaWMgc2hvd0NsYXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBwdWJsaWMgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlubGluZUVkaXQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT09ICdUYWInKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMuX25leHRBdmFpbGFibGVDZWxsVG9FZGl0KCFldmVudC5zaGlmdEtleSwgdGhpcy5lZGl0Q2VsbEluZGV4KVxyXG4gICAgICAgIC50aGVuKChpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmVkaXRDZWxsSW5kZXggPSBpbmRleDtcclxuICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdGlvbi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KVxyXG4gICAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ0VzY2FwZScpIHtcclxuICAgICAgdGhpcy5jYW5jZWxFZGl0Um93KCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ0VudGVyJykge1xyXG4gICAgICB0aGlzLnZhbGlkYXRlQW5kU2F2ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGVkaXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZWRpdFJvd0luZGV4OiBudW1iZXIgPSAtMTtcclxuICBwdWJsaWMgZWRpdENlbGxJbmRleDogbnVtYmVyID0gLTE7XHJcbiAgcHVibGljIHNlbGVjdGVkUm93SW5kZXg6IG51bWJlciA9IC0xO1xyXG4gIHB1YmxpYyByb3dUb0VkaXQ6IGFueTtcclxuICBwdWJsaWMgY3VycmVudFBhZ2U6IG51bWJlciA9IDE7XHJcblxyXG4gIHByaXZhdGUgX2RvdWJsZUNsaWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9uZXdSb3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfZm9ybU1hc3RlcjogRm9ybU1hc3RlclNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcblxyXG4gICAgdGhpcy5kYXRhQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNTaW5nbGVDb2x1bW4oY29sdW1uKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gY29sdW1uLnNpbmdsZUNvbHVtbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByb3dDb250YWluc1NpbmdsZUNvbHVtbihyb3csIGNvbHVtbnMpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHNpbmdsZUNvbHVtbiA9IGNvbHVtbnMuZmluZChjb2x1bW4gPT4gdGhpcy5pc1NpbmdsZUNvbHVtbihjb2x1bW4pICYmICEhcm93W2NvbHVtbi5maWVsZF0pO1xyXG4gICAgcmV0dXJuICEhc2luZ2xlQ29sdW1uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZE5ld1JvdygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlubGluZUVkaXQpIHtcclxuICAgICAgY29uc3QgdmFsaWQ6IGJvb2xlYW4gPSB0aGlzLnZhbGlkYXRlQW5kU2F2ZSgpO1xyXG4gICAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIGlmICh2YWxpZCkge1xyXG4gICAgICAgIHRoaXMuZGF0YS5wdXNoKHt9KTtcclxuICAgICAgICB0aGlzLl9uZXdSb3cgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZWRpdFJvd0luZGV4ID0gdGhpcy5kYXRhLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgdGhpcy5fbmV4dEF2YWlsYWJsZUNlbGxUb0VkaXQodHJ1ZSkudGhlbigoaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5lZGl0Q2VsbEluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5lZGl0aW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJvd1RvRWRpdCA9IHRoaXMuZGF0YVt0aGlzLmRhdGEubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZFJvdy5uZXh0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdmFsaWRhdGVBbmRTYXZlKHN0b3BlZGl0aW5nOiBib29sZWFuID0gdHJ1ZSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLmVkaXRpbmcpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBjb25zdCB2YWxpZDogYm9vbGVhbiA9IHRoaXMuX2Zvcm1NYXN0ZXIuc3VibWl0U2xhdmVzKCk7XHJcbiAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBpZiAodmFsaWQpIHtcclxuICAgICAgdGhpcy5fc2F2ZVJvdyhzdG9wZWRpdGluZyk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbmNlbEVkaXRSb3coKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZWRpdGluZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fbmV3Um93KSB7XHJcbiAgICAgIHRoaXMuZGF0YS5zcGxpY2UodGhpcy5kYXRhLmxlbmd0aCAtIDEsIDEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRhW3RoaXMuZWRpdFJvd0luZGV4XSA9IHRoaXMucm93VG9FZGl0O1xyXG4gICAgfVxyXG4gICAgdGhpcy5fbmV3Um93ID0gZmFsc2U7XHJcbiAgICB0aGlzLmVkaXRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVSb3coKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlbGV0ZVJvdy5uZXh0KHRoaXMuZGF0YVt0aGlzLnNlbGVjdGVkUm93SW5kZXhdKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDbGlja1JvdyhldmVudDogTW91c2VFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLl9kb3VibGVDbGlja2VkKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2VsZWN0VGhlUm93KGluZGV4KTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0VGhlUm93KGluZGV4OiBudW1iZXIsIGVtaXQ6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFJvd0luZGV4ICE9PSBpbmRleCAmJiAoKHRoaXMuZWRpdGluZyAmJiB0aGlzLnZhbGlkYXRlQW5kU2F2ZSgpKSB8fCAhdGhpcy5lZGl0aW5nKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBpbmRleDtcclxuICAgIH1cclxuICAgIGlmIChlbWl0KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0Um93Lm5leHQodGhpcy5kYXRhW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZURibENsaWNrUm93KGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kb3VibGVDbGlja2VkID0gdHJ1ZTtcclxuICAgIHRoaXMuZGJsQ2xpY2tSb3cubmV4dCh0aGlzLmRhdGFbaW5kZXhdKTtcclxuICAgIHRoaXMuc2VsZWN0VGhlUm93KGluZGV4LCBmYWxzZSk7XHJcbiAgICBpZiAodGhpcy5pbmxpbmVFZGl0KSB7XHJcbiAgICAgIHRoaXMuZWRpdFJvdyhldmVudCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9yZXNldERibENsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZWRpdFJvdyhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0Um93SW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXg7XHJcbiAgICB0aGlzLnJvd1RvRWRpdCA9IHRoaXMuZGF0YVt0aGlzLmVkaXRSb3dJbmRleF07XHJcbiAgICB0aGlzLmVkaXRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5fbmV4dEF2YWlsYWJsZUNlbGxUb0VkaXQodHJ1ZSkudGhlbigoaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICB0aGlzLmVkaXRDZWxsSW5kZXggPSBpbmRleDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNlbGxDbGljayhpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRDZWxsSW5kZXggPSBpbmRleDtcclxuICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Jlc2V0RGJsQ2xpY2soKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5fZG91YmxlQ2xpY2tlZCA9IGZhbHNlO1xyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIG5leHQ7IE1vdmUgdG8gbmV4dCBvciBwcmV2aW91cyBjZWxsXHJcbiAgICogQHBhcmFtIHN0YXJ0OyBTdGFydCBmcm9tIGNlbGxpbmRleFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfbmV4dEF2YWlsYWJsZUNlbGxUb0VkaXQobmV4dDogYm9vbGVhbiwgc3RhcnQ6IG51bWJlciA9IC0xKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcclxuICAgICAgY29uc3QgbnVtRWRpdGFibGVDb2x1bW5zOiBudW1iZXIgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gIWMucmVhZG9ubHkpLmxlbmd0aDtcclxuICAgICAgY29uc3Qgd2FudGVkSW5kZXggPSBzdGFydCArIChuZXh0ID8gMSA6IC0xKTtcclxuICAgICAgaWYgKHdhbnRlZEluZGV4ID49IG51bUVkaXRhYmxlQ29sdW1ucykge1xyXG4gICAgICAgIHRoaXMuX2dldE5leHRFZGl0Um93SW5kZXgoKVxyXG4gICAgICAgICAgLnRoZW4oKGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lZGl0Um93SW5kZXggPSBpbmRleDtcclxuICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLl9nZXROZXh0RWRpdENlbGxJbmRleCgwKSk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlamVjdCgpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAod2FudGVkSW5kZXggPCAwKSB7XHJcbiAgICAgICAgdGhpcy5fZ2V0UHJldmlvdXNFZGl0Um93SW5kZXgoKVxyXG4gICAgICAgICAgLnRoZW4oKGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lZGl0Um93SW5kZXggPSBpbmRleDtcclxuICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLl9nZXRQcmV2aW91c0VkaXRDZWxsSW5kZXgodGhpcy5jb2x1bW5zLmxlbmd0aCAtIDEpKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcclxuICAgICAgICAgICAgcmVqZWN0KCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXNvbHZlKG5leHQgPyB0aGlzLl9nZXROZXh0RWRpdENlbGxJbmRleChzdGFydCArIDEpIDogdGhpcy5fZ2V0UHJldmlvdXNFZGl0Q2VsbEluZGV4KHN0YXJ0IC0gMSkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldE5leHRFZGl0Q2VsbEluZGV4KHN0YXJ0OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gc3RhcnQ7IGkgPCB0aGlzLmNvbHVtbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKCF0aGlzLmNvbHVtbnNbaV0ucmVhZG9ubHkpIHtcclxuICAgICAgICByZXR1cm4gaTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0UHJldmlvdXNFZGl0Q2VsbEluZGV4KHN0YXJ0OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gc3RhcnQ7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgIGlmICghdGhpcy5jb2x1bW5zW2ldLnJlYWRvbmx5KSB7XHJcbiAgICAgICAgcmV0dXJuIGk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldE5leHRFZGl0Um93SW5kZXgoKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcclxuICAgICAgbGV0IG5ld1Jvd0luZGV4OiBudW1iZXIgPSAwO1xyXG4gICAgICBpZiAodGhpcy5lZGl0Um93SW5kZXggKyAxID49IHRoaXMuZGF0YS5sZW5ndGgpIHtcclxuICAgICAgICBpZiAodGhpcy5hdXRvQWRkUm93KSB7XHJcbiAgICAgICAgICB0aGlzLmFkZE5ld1JvdygpO1xyXG4gICAgICAgICAgbmV3Um93SW5kZXggPSB0aGlzLmVkaXRSb3dJbmRleDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbmV3Um93SW5kZXggPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdSb3dJbmRleCA9IHRoaXMuZWRpdFJvd0luZGV4ICsgMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobmV3Um93SW5kZXggIT09IHRoaXMuZWRpdFJvd0luZGV4KSB7IC8vIGdvIHRvIGRpZmZlcmVudCByb3cgdmFsaWRhdGUgY3VycmVudCBvbmUgZmlyc3RcclxuICAgICAgICBpZiAodGhpcy52YWxpZGF0ZUFuZFNhdmUoZmFsc2UpKSB7XHJcbiAgICAgICAgICB0aGlzLnJvd1RvRWRpdCA9IHRoaXMuZGF0YVtuZXdSb3dJbmRleF07XHJcbiAgICAgICAgICByZXNvbHZlKG5ld1Jvd0luZGV4KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVqZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmUobmV3Um93SW5kZXgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldFByZXZpb3VzRWRpdFJvd0luZGV4KCk6IFByb21pc2U8bnVtYmVyPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIGxldCBuZXdSb3dJbmRleDogbnVtYmVyID0gMDtcclxuICAgICAgaWYgKHRoaXMuZWRpdFJvd0luZGV4IC0gMSA8IDApIHtcclxuICAgICAgICBuZXdSb3dJbmRleCA9IHRoaXMuZGF0YS5sZW5ndGggLSAxO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld1Jvd0luZGV4ID0gdGhpcy5lZGl0Um93SW5kZXggLSAxO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChuZXdSb3dJbmRleCAhPT0gdGhpcy5lZGl0Um93SW5kZXgpIHsgLy8gZ28gdG8gZGlmZmVyZW50IHJvdyB2YWxpZGF0ZSBjdXJyZW50IG9uZSBmaXJzdFxyXG4gICAgICAgIGlmICh0aGlzLnZhbGlkYXRlQW5kU2F2ZShmYWxzZSkpIHtcclxuICAgICAgICAgIHRoaXMucm93VG9FZGl0ID0gdGhpcy5kYXRhW25ld1Jvd0luZGV4XTtcclxuICAgICAgICAgIHJlc29sdmUobmV3Um93SW5kZXgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZWplY3QoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzb2x2ZShuZXdSb3dJbmRleCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2F2ZVJvdyhzdG9wZWRpdGluZzogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuICAgIC8vIGVtaXQgc2F2ZUV2ZW50XHJcbiAgICBpZiAodGhpcy5yb3dUb0VkaXQpIHtcclxuICAgICAgdGhpcy5zYXZlUm93Lm5leHQodGhpcy5yb3dUb0VkaXQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fbmV3Um93ID0gZmFsc2U7XHJcbiAgICBpZiAoc3RvcGVkaXRpbmcpIHtcclxuICAgICAgdGhpcy5lZGl0Um93SW5kZXggPSAtMTtcclxuICAgICAgdGhpcy5lZGl0Q2VsbEluZGV4ID0gLTE7XHJcbiAgICAgIHRoaXMuZWRpdGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJvd1RvRWRpdCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnb1RvUHJldmlvdXNQYWdlKCk6IHZvaWQge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlIC09IDE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ29Ub05leHRQYWdlKCk6IHZvaWQge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlICs9IDE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Q3VycmVudFBhZ2UocGFnZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2RldGVjdENoYW5nZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rpb24uZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxufVxyXG4iXX0=
411
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NpbXBsZS1ncmlkL3NpbXBsZS1ncmlkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBQ0wsWUFBWSxFQUNaLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFpRzdELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSx1QkFBdUI7SUE4RDlELFlBQ1UsZ0JBQW1DLEVBQ25DLFdBQThCO1FBRXRDLEtBQUssRUFBRSxDQUFDO1FBSEEscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQjtRQUNuQyxnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUEvRHhCLHFCQUFnQixHQUFnQixXQUFXLENBQUMsSUFBSSxDQUFDO1FBVTFELFlBQU8sR0FBWSxLQUFLLENBQUM7UUFHekIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUc1QixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUc5QixnQkFBVyxHQUFXLElBQUksQ0FBQztRQWdDM0IsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixpQkFBWSxHQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzFCLGtCQUFhLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDM0IscUJBQWdCLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFFOUIsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFFdkIs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QUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0ZUO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxpQkFBaUI7aUJBQ2xCO2dCQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBMUdDLGlCQUFpQjtZQVFWLGlCQUFpQjs7OzBCQXNHdkIsWUFBWSxTQUFDLFlBQVk7c0JBT3pCLEtBQUs7eUJBR0wsS0FBSzsyQkFHTCxLQUFLOzBCQUdMLEtBQUs7NEJBR0wsS0FBSzt3QkFHTCxXQUFXLFNBQUMsc0JBQXNCOzRCQUtsQyxZQUFZLFNBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtTWFzdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZS9mb3JtLW1hc3Rlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZVNpbXBsZUdyaWRDb21wb25lbnQgfSBmcm9tICcuL2Jhc2Utc2ltcGxlLWdyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29sdW1uQWxpZ24gfSBmcm9tICcuL3NpbXBsZS1ncmlkLWNvbHVtbi5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1zaW1wbGUtZ3JpZCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjby1ncmlkLXRvb2xiYXIgKm5nSWY9XCJzaG93VG9vbGJhclwiIFtjbGFzcy5yaWdodF09XCJyaWdodFRvb2xiYXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbc2hvd0VkaXRdPVwic2hvd0VkaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbc2hvd0FkZF09XCJzaG93QWRkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3Nob3dEZWxldGVdPVwic2hvd0RlbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkZWxldGVFbmFibGVkXT1cInNlbGVjdGVkUm93SW5kZXggPiAtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChhZGRDbGljayk9XCJhZGROZXdSb3coKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChlZGl0Q2xpY2spPVwiZWRpdFJvdygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKHNhdmVDbGljayk9XCJ2YWxpZGF0ZUFuZFNhdmUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChjYW5jZWxDbGljayk9XCJjYW5jZWxFZGl0Um93KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoZGVsZXRlQ2xpY2spPVwicmVtb3ZlUm93KClcIlxyXG4gICAgPjwvY28tZ3JpZC10b29sYmFyPlxyXG4gICAgPHRhYmxlIGNsYXNzPVwic2ltcGxlLWdyaWQtdGFibGVcIj5cclxuICAgICAgPGNvbGdyb3VwPlxyXG4gICAgICAgIDxjb2wgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBoZWFkZXJDb2x1bW5zOyBsZXQgaW5kZXggPSBpbmRleFwiXHJcbiAgICAgICAgICAgICBbY2xhc3Muc2ltcGxlLWdyaWQtY29sdW1uLWF1dG8tZml0XT1cImNvbHVtbi5hdXRvRml0XCJcclxuICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2x1bW4ud2lkdGhcIlxyXG4gICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJNSU5fQ09MVU1OX1dJRFRIXCI+XHJcbiAgICAgIDwvY29sZ3JvdXA+XHJcbiAgICAgIDx0aGVhZD5cclxuICAgICAgPHRyPlxyXG4gICAgICAgIDx0aCBzY29wZT1cImNvbFwiICNoZWFkZXJDZWxsIGNsYXNzPVwic2ltcGxlLWdyaWQtY29sdW1uLWhlYWRlclwiICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgaGVhZGVyQ29sdW1uczsgbGV0IGluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW1wbGUtZ3JpZC1jb2x1bW4taGVhZGVyLXdyYXBwZXJcIiBbY2xhc3MucmVzaXphYmxlXT1cInJlc2l6YWJsZVwiXHJcbiAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi50ZXh0QWxpZ24gPyBjb2x1bW4udGV4dEFsaWduIDogZGVmYXVsdFRleHRBbGlnblwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlclRlbXBsYXRlOyBlbHNlIG5vSGVhZGVyVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi5oZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0hlYWRlclRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW1wbGUtZ3JpZC1jb2x1bW4taGVhZGVyLWxhYmVsXCIgW25nQ2xhc3NdPVwiY29sdW1uLnRleHRBbGlnbiA/IGNvbHVtbi50ZXh0QWxpZ24gOiBkZWZhdWx0VGV4dEFsaWduXCJcclxuICAgICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJjb2x1bW4uaGVhZGVyVGV4dCB8fCAnJm5ic3A7J1wiXHJcbiAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmVzaXphYmxlICYmIGNvbHVtbi5yZXNpemFibGVcIiBjbGFzcz1cInNpbXBsZS1ncmlkLWNvbHVtbi1zaXplclwiXHJcbiAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJoYW5kbGVTaXplck1vdXNlRG93bigkZXZlbnQsIGNvbHVtbilcIlxyXG4gICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RoPlxyXG4gICAgICA8L3RyPlxyXG4gICAgICA8L3RoZWFkPlxyXG4gICAgICA8dGJvZHkgI2Ryb3BMaXN0IGNka0Ryb3BMaXN0IGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJ2ZXJ0aWNhbFwiXHJcbiAgICAgICAgICAgICBjbGFzcz1cInNpbXBsZS1ncmlkLWRyYWctZHJvcC1saXN0XCJcclxuICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFkcmFnRHJvcEVuYWJsZWRcIlxyXG4gICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJkYXRhXCJcclxuICAgICAgICAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cImhhbmRsZUNhbkRyYWdEcm9wXCJcclxuICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiaGFuZGxlRHJvcCgkZXZlbnQpXCI+XHJcbiAgICAgICAgPHRyIGNsYXNzPVwic2ltcGxlLWdyaWQtcm93XCIgW2NsYXNzLnNlbGVjdGVkXT1cInJvd0luZGV4ID09PSBzZWxlY3RlZFJvd0luZGV4ICYmICFlZGl0aW5nXCIgb2JzZXJ2ZVZpc2liaWxpdHlcclxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImlzUm93RGlzYWJsZWQocm93KVwiXHJcbiAgICAgICAgICBbY2xhc3MuZWRpdGluZ109XCJyb3dJbmRleCA9PT0gZWRpdFJvd0luZGV4XCIgKm5nRm9yPVwibGV0IHJvdyBvZiAoISFyb3dzUGVyUGFnZSA/IChkYXRhIHwgcGFnaW5hdGU6IHtpdGVtc1BlclBhZ2U6IHJvd3NQZXJQYWdlLCBjdXJyZW50UGFnZTogY3VycmVudFBhZ2V9KSA6IGRhdGEpOyBsYXN0IGFzIGxhc3Q7IGxldCByb3dJbmRleCA9IGluZGV4XCIgY2RrRHJhZ1xyXG4gICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrUm93KCRldmVudCwgcm93SW5kZXgsIHJvdylcIiAoZGJsY2xpY2spPVwiaGFuZGxlRGJsQ2xpY2tSb3coJGV2ZW50LCByb3dJbmRleCwgcm93KVwiICh2aXNpYmlsaXR5Q2hhbmdlKT1cInJvd1Zpc2libGUubmV4dChyb3cpXCI+XHJcbiAgICAgICAgICA8Y28tZm9ybSBjbGFzcz1cInNpbXBsZS1ncmlkLXJvdy1mb3JtXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1NpbmdsZUNvbHVtblJvdyhyb3cpXCI+XHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwic2ltcGxlLWdyaWQtc2luZ2xlLWNvbHVtbi1jZWxsXCIgW2F0dHIuY29sc3Bhbl09XCJoZWFkZXJDb2x1bW5zLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNlbGxcclxuICAgICAgICAgICAgICAgICAgW2NvbHVtbl09XCJjb2x1bW5zW3NpbmdsZUNvbHVtbkluZGV4KHJvdyldXCJcclxuICAgICAgICAgICAgICAgICAgW3Jvd109XCJyb3dcIlxyXG4gICAgICAgICAgICAgICAgICBbZWRpdE1vZGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPjwvY28tc2ltcGxlLWdyaWQtY2VsbD5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1NpbmdsZUNvbHVtblJvdyhyb3cpXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGhlYWRlckNvbHVtbnM7IGxldCBjb2x1bW5JbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzaW1wbGUtZ3JpZC1jb2x1bW4tY2VsbFwiICpuZ0lmPVwiY29sdW1uSW5kZXggIT09IHNpbmdsZUNvbHVtbkluZGV4KHJvdylcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNlbGxcclxuICAgICAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbHVtblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Jvd109XCJyb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtlZGl0TW9kZV09XCJpbmxpbmVFZGl0ICYmIGVkaXRpbmcgJiYgcm93SW5kZXggPT09IGVkaXRSb3dJbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkRWRpdE1vZGVdPVwiZWRpdENlbGxJbmRleCA9PT0gY29sdW1uSW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjZWxsQ2xpY2spPVwiaGFuZGxlQ2VsbENsaWNrKGNvbHVtbkluZGV4KVwiXHJcbiAgICAgICAgICAgICAgICAgID48L2NvLXNpbXBsZS1ncmlkLWNlbGw+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2x1bW4ucmVzaXphYmxlXCIgY2xhc3M9XCJzaW1wbGUtZ3JpZC1jb2x1bW4tc2l6ZXItcGxhY2Vob2xkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9jby1mb3JtPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIDwvdGJvZHk+XHJcbiAgICA8L3RhYmxlPlxyXG4gICAgPGNvLXBhZ2luYXRpb24tYmFyICpuZ0lmPVwiZGF0YT8ubGVuZ3RoID4gcm93c1BlclBhZ2VcIiBjbGFzcz1cInBhZ2luYXRpb24tYmFyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNQZXJQYWdlXT1cInJvd3NQZXJQYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cImRhdGEubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0hpZGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKHByZXZpb3VzQ2xpY2spPVwiZ29Ub1ByZXZpb3VzUGFnZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAobmV4dENsaWNrKT1cImdvVG9OZXh0UGFnZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAocGFnZUNsaWNrKT1cInNldEN1cnJlbnRQYWdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1wYWdpbmF0aW9uLWJhcj5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgRm9ybU1hc3RlclNlcnZpY2VcclxuICBdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaW1wbGVHcmlkQ29tcG9uZW50IGV4dGVuZHMgQmFzZVNpbXBsZUdyaWRDb21wb25lbnQge1xyXG4gIHB1YmxpYyByZWFkb25seSBkZWZhdWx0VGV4dEFsaWduOiBDb2x1bW5BbGlnbiA9IENvbHVtbkFsaWduLkxlZnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oJ2hlYWRlckNlbGwnKSBzZXQgaGVhZGVyQ2VsbHMoY2VsbHMpIHtcclxuICAgIGNvbnN0IGhlYWRlckVsZW1lbnRzID0gY2VsbHMudG9BcnJheSgpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWFkZXJFbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLmNvbHVtbnNbaV0uZWxlbWVudFJlZiA9IGhlYWRlckVsZW1lbnRzW2ldO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd0FkZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93RGVsZXRlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJpZ2h0VG9vbGJhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByb3dzUGVyUGFnZTogbnVtYmVyID0gMTAwMDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcm93RGlzYWJsZWRGbjogRnVuY3Rpb247XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY28tc2ltcGxlLWdyaWQnKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaW5saW5lRWRpdCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ1RhYicpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5fbmV4dEF2YWlsYWJsZUNlbGxUb0VkaXQoIWV2ZW50LnNoaWZ0S2V5LCB0aGlzLmVkaXRDZWxsSW5kZXgpXHJcbiAgICAgICAgLnRoZW4oKGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIHRoaXMuZWRpdENlbGxJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0aW9uLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGlmIChldmVudC5jb2RlID09PSAnRXNjYXBlJykge1xyXG4gICAgICB0aGlzLmNhbmNlbEVkaXRSb3coKTtcclxuICAgIH1cclxuICAgIGlmIChldmVudC5jb2RlID09PSAnRW50ZXInKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGVBbmRTYXZlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZWRpdGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBlZGl0Um93SW5kZXg6IG51bWJlciA9IC0xO1xyXG4gIHB1YmxpYyBlZGl0Q2VsbEluZGV4OiBudW1iZXIgPSAtMTtcclxuICBwdWJsaWMgc2VsZWN0ZWRSb3dJbmRleDogbnVtYmVyID0gLTE7XHJcbiAgcHVibGljIHJvd1RvRWRpdDogYW55O1xyXG4gIHB1YmxpYyBjdXJyZW50UGFnZTogbnVtYmVyID0gMTtcclxuXHJcbiAgcHJpdmF0ZSBfZG91YmxlQ2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX25ld1JvdzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF9mb3JtTWFzdGVyOiBGb3JtTWFzdGVyU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICB0aGlzLmRhdGFDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc1Jvd0Rpc2FibGVkKHJvdzogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5yb3dEaXNhYmxlZEZuICYmICh0eXBlb2YgdGhpcy5yb3dEaXNhYmxlZEZuID09PSAnZnVuY3Rpb24nKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5yb3dEaXNhYmxlZEZuLmNhbGwodGhpcywgcm93KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc1NpbmdsZUNvbHVtbihjb2x1bW4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBjb2x1bW4uc2luZ2xlQ29sdW1uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJvd0NvbnRhaW5zU2luZ2xlQ29sdW1uKHJvdywgY29sdW1ucyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc2luZ2xlQ29sdW1uID0gY29sdW1ucy5maW5kKGNvbHVtbiA9PiB0aGlzLmlzU2luZ2xlQ29sdW1uKGNvbHVtbikgJiYgISFyb3dbY29sdW1uLmZpZWxkXSk7XHJcbiAgICByZXR1cm4gISFzaW5nbGVDb2x1bW47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkTmV3Um93KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaW5saW5lRWRpdCkge1xyXG4gICAgICBjb25zdCB2YWxpZDogYm9vbGVhbiA9IHRoaXMudmFsaWRhdGVBbmRTYXZlKCk7XHJcbiAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcclxuICAgICAgaWYgKHZhbGlkKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhLnB1c2goe30pO1xyXG4gICAgICAgIHRoaXMuX25ld1JvdyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lZGl0Um93SW5kZXggPSB0aGlzLmRhdGEubGVuZ3RoIC0gMTtcclxuICAgICAgICB0aGlzLl9uZXh0QXZhaWxhYmxlQ2VsbFRvRWRpdCh0cnVlKS50aGVuKChpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmVkaXRDZWxsSW5kZXggPSBpbmRleDtcclxuICAgICAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmVkaXRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucm93VG9FZGl0ID0gdGhpcy5kYXRhW3RoaXMuZGF0YS5sZW5ndGggLSAxXTtcclxuICAgICAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWRkUm93Lm5leHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB2YWxpZGF0ZUFuZFNhdmUoc3RvcGVkaXRpbmc6IGJvb2xlYW4gPSB0cnVlKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuZWRpdGluZykge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IHZhbGlkOiBib29sZWFuID0gdGhpcy5fZm9ybU1hc3Rlci5zdWJtaXRTbGF2ZXMoKTtcclxuICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcclxuICAgIGlmICh2YWxpZCkge1xyXG4gICAgICB0aGlzLl9zYXZlUm93KHN0b3BlZGl0aW5nKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuY2VsRWRpdFJvdygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5lZGl0aW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9uZXdSb3cpIHtcclxuICAgICAgdGhpcy5kYXRhLnNwbGljZSh0aGlzLmRhdGEubGVuZ3RoIC0gMSwgMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGFbdGhpcy5lZGl0Um93SW5kZXhdID0gdGhpcy5yb3dUb0VkaXQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9uZXdSb3cgPSBmYWxzZTtcclxuICAgIHRoaXMuZWRpdGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZVJvdygpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVsZXRlUm93Lm5leHQodGhpcy5kYXRhW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNsaWNrUm93KGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleDogbnVtYmVyLCByb3c6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNSb3dEaXNhYmxlZChyb3cpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IC0xO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuX2RvdWJsZUNsaWNrZWQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWxlY3RUaGVSb3coaW5kZXgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RUaGVSb3coaW5kZXg6IG51bWJlciwgZW1pdDogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkUm93SW5kZXggIT09IGluZGV4ICYmICgodGhpcy5lZGl0aW5nICYmIHRoaXMudmFsaWRhdGVBbmRTYXZlKCkpIHx8ICF0aGlzLmVkaXRpbmcpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IGluZGV4O1xyXG4gICAgfVxyXG4gICAgaWYgKGVtaXQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RSb3cubmV4dCh0aGlzLmRhdGFbdGhpcy5zZWxlY3RlZFJvd0luZGV4XSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRGJsQ2xpY2tSb3coZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIsIHJvdzogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc1Jvd0Rpc2FibGVkKHJvdykpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gLTE7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2RvdWJsZUNsaWNrZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5kYmxDbGlja1Jvdy5uZXh0KHRoaXMuZGF0YVtpbmRleF0pO1xyXG4gICAgdGhpcy5zZWxlY3RUaGVSb3coaW5kZXgsIGZhbHNlKTtcclxuICAgIGlmICh0aGlzLmlubGluZUVkaXQpIHtcclxuICAgICAgdGhpcy5lZGl0Um93KGV2ZW50KTtcclxuICAgIH1cclxuICAgIHRoaXMuX3Jlc2V0RGJsQ2xpY2soKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlZGl0Um93KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleDtcclxuICAgIHRoaXMucm93VG9FZGl0ID0gdGhpcy5kYXRhW3RoaXMuZWRpdFJvd0luZGV4XTtcclxuICAgIHRoaXMuZWRpdGluZyA9IHRydWU7XHJcbiAgICB0aGlzLl9uZXh0QXZhaWxhYmxlQ2VsbFRvRWRpdCh0cnVlKS50aGVuKChpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIHRoaXMuZWRpdENlbGxJbmRleCA9IGluZGV4O1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ2VsbENsaWNrKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdENlbGxJbmRleCA9IGluZGV4O1xyXG4gICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVzZXREYmxDbGljaygpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9kb3VibGVDbGlja2VkID0gZmFsc2U7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbmV4dDsgTW92ZSB0byBuZXh0IG9yIHByZXZpb3VzIGNlbGxcclxuICAgKiBAcGFyYW0gc3RhcnQ7IFN0YXJ0IGZyb20gY2VsbGluZGV4XHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIF9uZXh0QXZhaWxhYmxlQ2VsbFRvRWRpdChuZXh0OiBib29sZWFuLCBzdGFydDogbnVtYmVyID0gLTEpOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICBjb25zdCBudW1FZGl0YWJsZUNvbHVtbnM6IG51bWJlciA9IHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PiAhYy5yZWFkb25seSkubGVuZ3RoO1xyXG4gICAgICBjb25zdCB3YW50ZWRJbmRleCA9IHN0YXJ0ICsgKG5leHQgPyAxIDogLTEpO1xyXG4gICAgICBpZiAod2FudGVkSW5kZXggPj0gbnVtRWRpdGFibGVDb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5fZ2V0TmV4dEVkaXRSb3dJbmRleCgpXHJcbiAgICAgICAgICAudGhlbigoaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRSb3dJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgICByZXNvbHZlKHRoaXMuX2dldE5leHRFZGl0Q2VsbEluZGV4KDApKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcclxuICAgICAgICAgICAgcmVqZWN0KCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmICh3YW50ZWRJbmRleCA8IDApIHtcclxuICAgICAgICB0aGlzLl9nZXRQcmV2aW91c0VkaXRSb3dJbmRleCgpXHJcbiAgICAgICAgICAudGhlbigoaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRSb3dJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgICByZXNvbHZlKHRoaXMuX2dldFByZXZpb3VzRWRpdENlbGxJbmRleCh0aGlzLmNvbHVtbnMubGVuZ3RoIC0gMSkpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICByZWplY3QoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmUobmV4dCA/IHRoaXMuX2dldE5leHRFZGl0Q2VsbEluZGV4KHN0YXJ0ICsgMSkgOiB0aGlzLl9nZXRQcmV2aW91c0VkaXRDZWxsSW5kZXgoc3RhcnQgLSAxKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0TmV4dEVkaXRDZWxsSW5kZXgoc3RhcnQ6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSBzdGFydDsgaSA8IHRoaXMuY29sdW1ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoIXRoaXMuY29sdW1uc1tpXS5yZWFkb25seSkge1xyXG4gICAgICAgIHJldHVybiBpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRQcmV2aW91c0VkaXRDZWxsSW5kZXgoc3RhcnQ6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSBzdGFydDsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgaWYgKCF0aGlzLmNvbHVtbnNbaV0ucmVhZG9ubHkpIHtcclxuICAgICAgICByZXR1cm4gaTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0TmV4dEVkaXRSb3dJbmRleCgpOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICBsZXQgbmV3Um93SW5kZXg6IG51bWJlciA9IDA7XHJcbiAgICAgIGlmICh0aGlzLmVkaXRSb3dJbmRleCArIDEgPj0gdGhpcy5kYXRhLmxlbmd0aCkge1xyXG4gICAgICAgIGlmICh0aGlzLmF1dG9BZGRSb3cpIHtcclxuICAgICAgICAgIHRoaXMuYWRkTmV3Um93KCk7XHJcbiAgICAgICAgICBuZXdSb3dJbmRleCA9IHRoaXMuZWRpdFJvd0luZGV4O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBuZXdSb3dJbmRleCA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld1Jvd0luZGV4ID0gdGhpcy5lZGl0Um93SW5kZXggKyAxO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChuZXdSb3dJbmRleCAhPT0gdGhpcy5lZGl0Um93SW5kZXgpIHsgLy8gZ28gdG8gZGlmZmVyZW50IHJvdyB2YWxpZGF0ZSBjdXJyZW50IG9uZSBmaXJzdFxyXG4gICAgICAgIGlmICh0aGlzLnZhbGlkYXRlQW5kU2F2ZShmYWxzZSkpIHtcclxuICAgICAgICAgIHRoaXMucm93VG9FZGl0ID0gdGhpcy5kYXRhW25ld1Jvd0luZGV4XTtcclxuICAgICAgICAgIHJlc29sdmUobmV3Um93SW5kZXgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZWplY3QoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzb2x2ZShuZXdSb3dJbmRleCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0UHJldmlvdXNFZGl0Um93SW5kZXgoKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcclxuICAgICAgbGV0IG5ld1Jvd0luZGV4OiBudW1iZXIgPSAwO1xyXG4gICAgICBpZiAodGhpcy5lZGl0Um93SW5kZXggLSAxIDwgMCkge1xyXG4gICAgICAgIG5ld1Jvd0luZGV4ID0gdGhpcy5kYXRhLmxlbmd0aCAtIDE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3Um93SW5kZXggPSB0aGlzLmVkaXRSb3dJbmRleCAtIDE7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG5ld1Jvd0luZGV4ICE9PSB0aGlzLmVkaXRSb3dJbmRleCkgeyAvLyBnbyB0byBkaWZmZXJlbnQgcm93IHZhbGlkYXRlIGN1cnJlbnQgb25lIGZpcnN0XHJcbiAgICAgICAgaWYgKHRoaXMudmFsaWRhdGVBbmRTYXZlKGZhbHNlKSkge1xyXG4gICAgICAgICAgdGhpcy5yb3dUb0VkaXQgPSB0aGlzLmRhdGFbbmV3Um93SW5kZXhdO1xyXG4gICAgICAgICAgcmVzb2x2ZShuZXdSb3dJbmRleCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlamVjdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXNvbHZlKG5ld1Jvd0luZGV4KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zYXZlUm93KHN0b3BlZGl0aW5nOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgLy8gZW1pdCBzYXZlRXZlbnRcclxuICAgIGlmICh0aGlzLnJvd1RvRWRpdCkge1xyXG4gICAgICB0aGlzLnNhdmVSb3cubmV4dCh0aGlzLnJvd1RvRWRpdCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9uZXdSb3cgPSBmYWxzZTtcclxuICAgIGlmIChzdG9wZWRpdGluZykge1xyXG4gICAgICB0aGlzLmVkaXRSb3dJbmRleCA9IC0xO1xyXG4gICAgICB0aGlzLmVkaXRDZWxsSW5kZXggPSAtMTtcclxuICAgICAgdGhpcy5lZGl0aW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucm93VG9FZGl0ID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdvVG9QcmV2aW91c1BhZ2UoKTogdm9pZCB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgLT0gMTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnb1RvTmV4dFBhZ2UoKTogdm9pZCB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgKz0gMTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRDdXJyZW50UGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdGlvbi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,68 +1,158 @@
1
1
  import { __decorate } from "tslib";
2
- import { ComponentFactoryResolver, Directive, Inject, Input, ViewContainerRef } from "@angular/core";
3
- import { InputBoolean } from "../../core/decorator/input-boolean.decorator";
4
- import { SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME } from "../../interfaces/screen-config-adapter-component-interface-name";
5
- import { ScreenConfigComponentWrapper } from "./screen-config-component-wrapper.component";
2
+ import { Directive, ElementRef, Inject, Input, Renderer2 } from '@angular/core';
3
+ import { InputBoolean } from '../../core/decorator/input-boolean.decorator';
4
+ import { SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME } from '../../interfaces/screen-config-adapter-component-interface-name';
5
+ import { BaseModuleScreenConfigService } from '../../service/base-module-screen-config.service';
6
+ import { BaseModuleService } from '../../service/base-module.service';
6
7
  // Directive to represents the marker of "screen config name ID's" of components within a module.
7
8
  // Manipulates visibility, readonly and other dynamic states of an input element according to its db-fetched screen configuration object.
8
9
  export class ScreenConfigurationDirective {
9
- constructor(hostComponent, _viewContainerRef, _componentFactoryResolver) {
10
+ constructor(hostComponent, _element,
11
+ // we must always have a config service to fetch config objects with
12
+ _configService, _renderer,
13
+ // to make host readonly when MODULE switches to readonly:
14
+ _moduleService) {
10
15
  this.hostComponent = hostComponent;
11
- this._viewContainerRef = _viewContainerRef;
12
- this._componentFactoryResolver = _componentFactoryResolver;
16
+ this._element = _element;
17
+ this._configService = _configService;
18
+ this._renderer = _renderer;
19
+ this._moduleService = _moduleService;
20
+ this.screenConfigNativeElement = false;
13
21
  this.noModuleService = false;
22
+ // feature toggle for devs so you can see the whole screen with all inputs etc by temporarily turning off the hiding effects of this directive on its host
23
+ this._isTurnedOff = false;
24
+ this._subs = [];
25
+ this._subs.push(this._configService.configSet.subscribe((configObjects) => {
26
+ if (configObjects && configObjects.length > 0) {
27
+ this._updateHost();
28
+ }
29
+ }));
30
+ if (this._moduleService && !this.noModuleService) {
31
+ this._subs.push(this._moduleService.readonlyChange.subscribe((moduleInReadonlyState) => {
32
+ if (this.hostComponent) {
33
+ this.hostComponent.readonly = this.hostComponent.forceReadonly || moduleInReadonlyState;
34
+ }
35
+ }), this._moduleService.errorValidationReceived.subscribe((validationResult) => {
36
+ this._setErrorRedBackgroundAfterScrCfgValidate(validationResult);
37
+ }), this._moduleService.successfulUpdate.subscribe(() => {
38
+ if (this.hostComponent) {
39
+ this.hostComponent.redErrorBackground = false;
40
+ }
41
+ }));
42
+ }
14
43
  }
15
- set screenConfigurationObject(screenConfigurationObject) {
16
- if (screenConfigurationObject) {
17
- this._screenConfigurationObject = screenConfigurationObject;
18
- this._initWrapperComponent();
44
+ set screenConfigurationObject(value) {
45
+ if (value) {
46
+ this._screenConfigurationObject = value;
19
47
  this._updateHost();
20
48
  }
21
49
  }
22
50
  get screenConfigurationObject() {
23
51
  return this._screenConfigurationObject;
24
52
  }
53
+ ngOnInit() {
54
+ this._updateHost();
55
+ // this._updateHeaderStateOnHostComponent(true);
56
+ // show initial error message if any
57
+ if (!this.noModuleService) {
58
+ // this._setErrorRedBackgroundAfterScrCfgValidate(this._moduleService.lastError);
59
+ }
60
+ }
25
61
  ngOnDestroy() {
62
+ this._subs.forEach(sub => sub.unsubscribe());
63
+ if (this._isHeader) {
64
+ // this._doubleClickHeaders.handleCollapseableDestroy(this.screenConfigurationObject);
65
+ }
66
+ this._element = undefined;
26
67
  this.hostComponent = undefined;
27
- this._wrapperComponentInstance = undefined;
28
68
  }
29
- _initWrapperComponent() {
30
- if (!this._wrapperComponentInstance) {
31
- const componentFactory = this._componentFactoryResolver.resolveComponentFactory(ScreenConfigComponentWrapper);
32
- const componentRef = this._viewContainerRef.createComponent(componentFactory);
33
- const visibleOnViewInit = !!this.screenConfigurationObject ? this.screenConfigurationObject.immediatelyVisible() : false;
34
- this._wrapperComponentInstance = componentRef.instance;
35
- this._wrapperComponentInstance.setWrapperContent(this._viewContainerRef.element.nativeElement, visibleOnViewInit);
69
+ // Sets host component visibility, required, readonly etc. if specified in backend screen config OR module readonly status.
70
+ _updateHost() {
71
+ if (this._mayUpdateHost() || this.screenConfigNativeElement) {
72
+ if (!this.screenConfigNativeElement) {
73
+ this.hostComponent.objectConfigName = this.screenConfigurationObject;
74
+ }
75
+ const myCfgObj = this._configService.getObjectConfigurationFor(this.screenConfigurationObject);
76
+ if (myCfgObj) {
77
+ this._setHostVisible(myCfgObj.immediatelyVisible());
78
+ // if (this.hostComponent instanceof GridColumnComponent) {
79
+ // this.hostComponent.rights = myCfgObj.rights;
80
+ // }
81
+ if (!this.screenConfigNativeElement) {
82
+ this.hostComponent.required = myCfgObj.isRequired();
83
+ this.hostComponent.readonly = this.hostComponent.forceReadonly || this._moduleInReadonlyMode() || myCfgObj.isReadonly();
84
+ this.hostComponent.decimals = myCfgObj.scale;
85
+ this.hostComponent.maxLength = myCfgObj.maxLength;
86
+ }
87
+ }
88
+ else {
89
+ this._setHostVisible(false);
90
+ if (!this.screenConfigNativeElement) {
91
+ this.hostComponent.readonly = this._moduleInReadonlyMode();
92
+ }
93
+ }
94
+ }
95
+ }
96
+ /**
97
+ * Spawn error message tooltip onto our host comp, if any error was meant for the host (found by screenConfigurationObject);
98
+ * @param errorValidation A top-level full validation result, either from the backend or from some client-side validation error.
99
+ */
100
+ _setErrorRedBackgroundAfterScrCfgValidate(errorValidation) {
101
+ if (this.hostComponent && errorValidation) {
102
+ const errorMessages = errorValidation.getAllErrorMessagesOfMyValidationFields();
103
+ for (let i = 0, len = errorMessages.length; i < len; i++) {
104
+ const errorMsg = errorMessages[i];
105
+ const configName = this.dataName ? this.dataName : this.screenConfigurationObject;
106
+ if (errorMsg.fieldId === configName && this._element /*&& this._properHost(errorMsg.boId)*/) {
107
+ this.hostComponent.redErrorBackground = true;
108
+ }
109
+ }
36
110
  }
37
111
  }
38
- _updateHost() {
39
- if (!!this.hostComponent && !!this._screenConfigurationObject) {
40
- this.hostComponent.objectConfigName = this.screenConfigurationObject.configName;
41
- if (this.screenConfigurationObject) {
42
- this.hostComponent.required = this.screenConfigurationObject.isRequired();
43
- // readonly based on forced boolean, based on rights value or based on variable value affected by module read only state
44
- this.hostComponent.readonly = this.hostComponent.forceReadonly || this.screenConfigurationObject.isReadonly() || this.screenConfigurationObject.variableReadOnly;
45
- this.hostComponent.decimals = this.screenConfigurationObject.scale;
46
- this.hostComponent.maxLength = this.screenConfigurationObject.maxLength;
112
+ _moduleInReadonlyMode() {
113
+ return !this.noModuleService ? (this._moduleService ? this._moduleService.readonly : false) : false;
114
+ }
115
+ _mayUpdateHost() {
116
+ return !!this.hostComponent && !this._isTurnedOff && !!this.screenConfigurationObject;
117
+ }
118
+ _setHostVisible(visible) {
119
+ if (!this.screenConfigNativeElement) {
120
+ this.hostComponent.hidden = !visible;
121
+ }
122
+ else {
123
+ if (this._element && this._element.nativeElement) {
124
+ if (!visible) {
125
+ this._renderer.addClass(this._element.nativeElement, 'hidden');
126
+ }
127
+ else {
128
+ this._renderer.removeClass(this._element.nativeElement, 'hidden');
129
+ }
47
130
  }
48
131
  }
49
132
  }
50
133
  }
51
134
  ScreenConfigurationDirective.decorators = [
52
135
  { type: Directive, args: [{
53
- selector: "[screenConfigurationObject]"
136
+ selector: '[screenConfigurationObject]'
54
137
  },] }
55
138
  ];
56
139
  ScreenConfigurationDirective.ctorParameters = () => [
57
140
  { type: undefined, decorators: [{ type: Inject, args: [SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME,] }] },
58
- { type: ViewContainerRef },
59
- { type: ComponentFactoryResolver }
141
+ { type: ElementRef },
142
+ { type: BaseModuleScreenConfigService },
143
+ { type: Renderer2 },
144
+ { type: BaseModuleService }
60
145
  ];
61
146
  ScreenConfigurationDirective.propDecorators = {
62
- screenConfigurationObject: [{ type: Input }],
147
+ screenConfigurationObject: [{ type: Input, args: ['screenConfigurationObject',] }],
148
+ dataName: [{ type: Input }],
149
+ screenConfigNativeElement: [{ type: Input }],
63
150
  noModuleService: [{ type: Input }]
64
151
  };
152
+ __decorate([
153
+ InputBoolean()
154
+ ], ScreenConfigurationDirective.prototype, "screenConfigNativeElement", void 0);
65
155
  __decorate([
66
156
  InputBoolean()
67
157
  ], ScreenConfigurationDirective.prototype, "noModuleService", void 0);
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLWNvbmZpZ3VyYXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9kaXJlY3RpdmVzL3NjcmVlbi1jb25maWd1cmF0aW9uL3NjcmVlbi1jb25maWd1cmF0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFDTCxnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBRTFFLE9BQU8sRUFBRSw4Q0FBOEMsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQ2pJLE9BQU8sRUFDTCw0QkFBNEIsRUFDN0IsTUFBTSw2Q0FBNkMsQ0FBQztBQUVyRCxpR0FBaUc7QUFDakcseUlBQXlJO0FBSXpJLE1BQU0sT0FBTyw0QkFBNEI7SUFzQnZDLFlBRVMsYUFBMkMsRUFDMUMsaUJBQW1DLEVBQ25DLHlCQUFtRDtRQUZwRCxrQkFBYSxHQUFiLGFBQWEsQ0FBOEI7UUFDMUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyw4QkFBeUIsR0FBekIseUJBQXlCLENBQTBCO1FBVHRELG9CQUFlLEdBQVksS0FBSyxDQUFDO0lBVXBDLENBQUM7SUF6QkwsSUFDVyx5QkFBeUIsQ0FBQyx5QkFBOEI7UUFDakUsSUFBSSx5QkFBeUIsRUFBRTtZQUM3QixJQUFJLENBQUMsMEJBQTBCLEdBQUcseUJBQXlCLENBQUM7WUFDNUQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVELElBQVcseUJBQXlCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDO0lBQ3pDLENBQUM7SUFnQk0sV0FBVztRQUNoQixJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztRQUMvQixJQUFJLENBQUMseUJBQXlCLEdBQUcsU0FBUyxDQUFDO0lBQzdDLENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtZQUNuQyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyx1QkFBdUIsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1lBQzlHLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM5RSxNQUFNLGlCQUFpQixHQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDbEksSUFBSSxDQUFDLHlCQUF5QixHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFDdkQsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLENBQUM7U0FDbkg7SUFDSCxDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUU7WUFDN0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsVUFBVSxDQUFDO1lBQ2hGLElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFO2dCQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzFFLHdIQUF3SDtnQkFDeEgsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDakssSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQztnQkFDbkUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQzthQUN6RTtTQUNGO0lBQ0gsQ0FBQzs7O1lBMURGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsNkJBQTZCO2FBQ3hDOzs7NENBd0JJLE1BQU0sU0FBQyw4Q0FBOEM7WUFyQ3hELGdCQUFnQjtZQUpoQix3QkFBd0I7Ozt3Q0FvQnZCLEtBQUs7OEJBYUwsS0FBSzs7QUFFTjtJQURDLFlBQVksRUFBRTtxRUFDeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICBEaXJlY3RpdmUsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LCBPbkRlc3Ryb3ksXHJcbiAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SW5wdXRCb29sZWFufSBmcm9tIFwiLi4vLi4vY29yZS9kZWNvcmF0b3IvaW5wdXQtYm9vbGVhbi5kZWNvcmF0b3JcIjtcclxuaW1wb3J0IHtTY3JlZW5Db25maWdBZGFwdGVyQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9zY3JlZW4tY29uZmlnLWFkYXB0ZXIuY29tcG9uZW50LmludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBTQ1JFRU5fQ09ORklHX0FEQVBURVJfQ09NUE9ORU5UX0lOVEVSRkFDRV9OQU1FIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvc2NyZWVuLWNvbmZpZy1hZGFwdGVyLWNvbXBvbmVudC1pbnRlcmZhY2UtbmFtZVwiO1xyXG5pbXBvcnQge1xyXG4gIFNjcmVlbkNvbmZpZ0NvbXBvbmVudFdyYXBwZXJcclxufSBmcm9tIFwiLi9zY3JlZW4tY29uZmlnLWNvbXBvbmVudC13cmFwcGVyLmNvbXBvbmVudFwiO1xyXG5cclxuLy8gRGlyZWN0aXZlIHRvIHJlcHJlc2VudHMgdGhlIG1hcmtlciBvZiBcInNjcmVlbiBjb25maWcgbmFtZSBJRCdzXCIgb2YgY29tcG9uZW50cyB3aXRoaW4gYSBtb2R1bGUuXHJcbi8vIE1hbmlwdWxhdGVzIHZpc2liaWxpdHksIHJlYWRvbmx5IGFuZCBvdGhlciBkeW5hbWljIHN0YXRlcyBvZiBhbiBpbnB1dCBlbGVtZW50IGFjY29yZGluZyB0byBpdHMgZGItZmV0Y2hlZCBzY3JlZW4gY29uZmlndXJhdGlvbiBvYmplY3QuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiBcIltzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0XVwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTY3JlZW5Db25maWd1cmF0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3Qoc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdDogYW55KSB7XHJcbiAgICBpZiAoc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdCkge1xyXG4gICAgICB0aGlzLl9zY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0ID0gc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdDtcclxuICAgICAgdGhpcy5faW5pdFdyYXBwZXJDb21wb25lbnQoKTtcclxuICAgICAgdGhpcy5fdXBkYXRlSG9zdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0KCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgQElucHV0Qm9vbGVhbigpXHJcbiAgcHVibGljIG5vTW9kdWxlU2VydmljZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9zY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0OiBhbnk7XHJcbiAgcHJpdmF0ZSBfd3JhcHBlckNvbXBvbmVudEluc3RhbmNlOiBTY3JlZW5Db25maWdDb21wb25lbnRXcmFwcGVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoU0NSRUVOX0NPTkZJR19BREFQVEVSX0NPTVBPTkVOVF9JTlRFUkZBQ0VfTkFNRSlcclxuICAgIHB1YmxpYyBob3N0Q29tcG9uZW50OiBTY3JlZW5Db25maWdBZGFwdGVyQ29tcG9uZW50LFxyXG4gICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcclxuICAgIHByaXZhdGUgX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyXHJcbiAgKSB7IH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ob3N0Q29tcG9uZW50ID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5fd3JhcHBlckNvbXBvbmVudEluc3RhbmNlID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdFdyYXBwZXJDb21wb25lbnQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX3dyYXBwZXJDb21wb25lbnRJbnN0YW5jZSkge1xyXG4gICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFNjcmVlbkNvbmZpZ0NvbXBvbmVudFdyYXBwZXIpO1xyXG4gICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRGYWN0b3J5KTtcclxuICAgICAgY29uc3QgdmlzaWJsZU9uVmlld0luaXQ6IGJvb2xlYW4gPSAhIXRoaXMuc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdCA/IHRoaXMuc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdC5pbW1lZGlhdGVseVZpc2libGUoKSA6IGZhbHNlO1xyXG4gICAgICB0aGlzLl93cmFwcGVyQ29tcG9uZW50SW5zdGFuY2UgPSBjb21wb25lbnRSZWYuaW5zdGFuY2U7XHJcbiAgICAgIHRoaXMuX3dyYXBwZXJDb21wb25lbnRJbnN0YW5jZS5zZXRXcmFwcGVyQ29udGVudCh0aGlzLl92aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgdmlzaWJsZU9uVmlld0luaXQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlSG9zdCgpOiB2b2lkIHtcclxuICAgIGlmICghIXRoaXMuaG9zdENvbXBvbmVudCAmJiAhIXRoaXMuX3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3QpIHtcclxuICAgICAgdGhpcy5ob3N0Q29tcG9uZW50Lm9iamVjdENvbmZpZ05hbWUgPSB0aGlzLnNjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3QuY29uZmlnTmFtZTtcclxuICAgICAgaWYgKHRoaXMuc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdCkge1xyXG4gICAgICAgIHRoaXMuaG9zdENvbXBvbmVudC5yZXF1aXJlZCA9IHRoaXMuc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdC5pc1JlcXVpcmVkKCk7XHJcbiAgICAgICAgLy8gcmVhZG9ubHkgYmFzZWQgb24gZm9yY2VkIGJvb2xlYW4sIGJhc2VkIG9uIHJpZ2h0cyB2YWx1ZSBvciBiYXNlZCBvbiB2YXJpYWJsZSB2YWx1ZSBhZmZlY3RlZCBieSBtb2R1bGUgcmVhZCBvbmx5IHN0YXRlXHJcbiAgICAgICAgdGhpcy5ob3N0Q29tcG9uZW50LnJlYWRvbmx5ID0gdGhpcy5ob3N0Q29tcG9uZW50LmZvcmNlUmVhZG9ubHkgfHwgdGhpcy5zY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0LmlzUmVhZG9ubHkoKSB8fCB0aGlzLnNjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3QudmFyaWFibGVSZWFkT25seTtcclxuICAgICAgICB0aGlzLmhvc3RDb21wb25lbnQuZGVjaW1hbHMgPSB0aGlzLnNjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3Quc2NhbGU7XHJcbiAgICAgICAgdGhpcy5ob3N0Q29tcG9uZW50Lm1heExlbmd0aCA9IHRoaXMuc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdC5tYXhMZW5ndGg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLWNvbmZpZ3VyYXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9kaXJlY3RpdmVzL3NjcmVlbi1jb25maWd1cmF0aW9uL3NjcmVlbi1jb25maWd1cmF0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBRTFFLE9BQU8sRUFBQyw4Q0FBOEMsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBRS9ILE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQzlGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBS3BFLGlHQUFpRztBQUNqRyx5SUFBeUk7QUFJekksTUFBTSxPQUFPLDRCQUE0QjtJQWlDckMsWUFFVyxhQUEyQyxFQUMxQyxRQUFvQjtJQUM1QixvRUFBb0U7SUFDNUQsY0FBNkMsRUFDN0MsU0FBb0I7SUFDNUIsMERBQTBEO0lBQ2xELGNBQWtDO1FBTm5DLGtCQUFhLEdBQWIsYUFBYSxDQUE4QjtRQUMxQyxhQUFRLEdBQVIsUUFBUSxDQUFZO1FBRXBCLG1CQUFjLEdBQWQsY0FBYyxDQUErQjtRQUM3QyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBRXBCLG1CQUFjLEdBQWQsY0FBYyxDQUFvQjtRQXZCdkMsOEJBQXlCLEdBQVksS0FBSyxDQUFDO1FBSTNDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBTXhDLDBKQUEwSjtRQUNsSixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUU5QixVQUFLLEdBQW1CLEVBQUUsQ0FBQztRQVkvQixJQUFJLENBQUMs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O1lBTTFELGlCQUFpQjs7O3dDQVdwQixLQUFLLFNBQUMsMkJBQTJCO3VCQVlqQyxLQUFLO3dDQUdMLEtBQUs7OEJBSUwsS0FBSzs7QUFGTjtJQURDLFlBQVksRUFBRTsrRUFDbUM7QUFJbEQ7SUFEQyxZQUFZLEVBQUU7cUVBQ3lCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgUmVuZGVyZXIyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtJbnB1dEJvb2xlYW59IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9yL2lucHV0LWJvb2xlYW4uZGVjb3JhdG9yJztcclxuaW1wb3J0IHtTY3JlZW5Db25maWdBZGFwdGVyQ29tcG9uZW50fSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NjcmVlbi1jb25maWctYWRhcHRlci5jb21wb25lbnQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtTQ1JFRU5fQ09ORklHX0FEQVBURVJfQ09NUE9ORU5UX0lOVEVSRkFDRV9OQU1FfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NjcmVlbi1jb25maWctYWRhcHRlci1jb21wb25lbnQtaW50ZXJmYWNlLW5hbWUnO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7QmFzZU1vZHVsZVNjcmVlbkNvbmZpZ1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvYmFzZS1tb2R1bGUtc2NyZWVuLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHtCYXNlTW9kdWxlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9iYXNlLW1vZHVsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtWYWxpZGF0aW9uUmVzdWx0fSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC92YWxpZGF0aW9uLXJlc3VsdCc7XHJcbmltcG9ydCB7VmFsaWRhdGlvbk1lc3NhZ2V9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL3ZhbGlkYXRpb24tbWVzc2FnZSc7XHJcbmltcG9ydCB7T2JqZWN0Q29uZmlndXJhdGlvbn0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvb2JqZWN0LWNvbmZpZ3VyYXRpb24nO1xyXG5cclxuLy8gRGlyZWN0aXZlIHRvIHJlcHJlc2VudHMgdGhlIG1hcmtlciBvZiBcInNjcmVlbiBjb25maWcgbmFtZSBJRCdzXCIgb2YgY29tcG9uZW50cyB3aXRoaW4gYSBtb2R1bGUuXHJcbi8vIE1hbmlwdWxhdGVzIHZpc2liaWxpdHksIHJlYWRvbmx5IGFuZCBvdGhlciBkeW5hbWljIHN0YXRlcyBvZiBhbiBpbnB1dCBlbGVtZW50IGFjY29yZGluZyB0byBpdHMgZGItZmV0Y2hlZCBzY3JlZW4gY29uZmlndXJhdGlvbiBvYmplY3QuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdF0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTY3JlZW5Db25maWd1cmF0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAgIEBJbnB1dCgnc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdCcpXHJcbiAgICBwdWJsaWMgc2V0IHNjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3QodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9zY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0ID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUhvc3QoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0KCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3Q7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkYXRhTmFtZTogc3RyaW5nO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBASW5wdXRCb29sZWFuKClcclxuICAgIHB1YmxpYyBzY3JlZW5Db25maWdOYXRpdmVFbGVtZW50OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIG5vTW9kdWxlU2VydmljZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHByaXZhdGUgX2lzSGVhZGVyOiBib29sZWFuO1xyXG5cclxuICAgIHByaXZhdGUgX3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3Q6IHN0cmluZztcclxuXHJcbiAgICAvLyBmZWF0dXJlIHRvZ2dsZSBmb3IgZGV2cyBzbyB5b3UgY2FuIHNlZSB0aGUgd2hvbGUgc2NyZWVuIHdpdGggYWxsIGlucHV0cyBldGMgYnkgdGVtcG9yYXJpbHkgdHVybmluZyBvZmYgdGhlIGhpZGluZyBlZmZlY3RzIG9mIHRoaXMgZGlyZWN0aXZlIG9uIGl0cyBob3N0XHJcbiAgICBwcml2YXRlIF9pc1R1cm5lZE9mZjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChTQ1JFRU5fQ09ORklHX0FEQVBURVJfQ09NUE9ORU5UX0lOVEVSRkFDRV9OQU1FKVxyXG4gICAgICAgIHB1YmxpYyBob3N0Q29tcG9uZW50OiBTY3JlZW5Db25maWdBZGFwdGVyQ29tcG9uZW50LFxyXG4gICAgICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgLy8gd2UgbXVzdCBhbHdheXMgaGF2ZSBhIGNvbmZpZyBzZXJ2aWNlIHRvIGZldGNoIGNvbmZpZyBvYmplY3RzIHdpdGhcclxuICAgICAgICBwcml2YXRlIF9jb25maWdTZXJ2aWNlOiBCYXNlTW9kdWxlU2NyZWVuQ29uZmlnU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgIC8vIHRvIG1ha2UgaG9zdCByZWFkb25seSB3aGVuIE1PRFVMRSBzd2l0Y2hlcyB0byByZWFkb25seTpcclxuICAgICAgICBwcml2YXRlIF9tb2R1bGVTZXJ2aWNlPzogQmFzZU1vZHVsZVNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuX3N1YnMucHVzaCh0aGlzLl9jb25maWdTZXJ2aWNlLmNvbmZpZ1NldC5zdWJzY3JpYmUoKGNvbmZpZ09iamVjdHM6IHN0cmluZ1tdKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb25maWdPYmplY3RzICYmIGNvbmZpZ09iamVjdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlSG9zdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fbW9kdWxlU2VydmljZSAmJiAhdGhpcy5ub01vZHVsZVNlcnZpY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fbW9kdWxlU2VydmljZS5yZWFkb25seUNoYW5nZS5zdWJzY3JpYmUoKG1vZHVsZUluUmVhZG9ubHlTdGF0ZTogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhvc3RDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ob3N0Q29tcG9uZW50LnJlYWRvbmx5ID0gdGhpcy5ob3N0Q29tcG9uZW50LmZvcmNlUmVhZG9ubHkgfHwgbW9kdWxlSW5SZWFkb25seVN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fbW9kdWxlU2VydmljZS5lcnJvclZhbGlkYXRpb25SZWNlaXZlZC5zdWJzY3JpYmUoKHZhbGlkYXRpb25SZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldEVycm9yUmVkQmFja2dyb3VuZEFmdGVyU2NyQ2ZnVmFsaWRhdGUodmFsaWRhdGlvblJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIHRoaXMuX21vZHVsZVNlcnZpY2Uuc3VjY2Vzc2Z1bFVwZGF0ZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhvc3RDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ob3N0Q29tcG9uZW50LnJlZEVycm9yQmFja2dyb3VuZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3VwZGF0ZUhvc3QoKTtcclxuXHJcbiAgICAgICAgLy8gdGhpcy5fdXBkYXRlSGVhZGVyU3RhdGVPbkhvc3RDb21wb25lbnQodHJ1ZSk7XHJcblxyXG4gICAgICAgIC8vIHNob3cgaW5pdGlhbCBlcnJvciBtZXNzYWdlIGlmIGFueVxyXG4gICAgICAgIGlmICghdGhpcy5ub01vZHVsZVNlcnZpY2UpIHtcclxuICAgICAgICAgICAgLy8gdGhpcy5fc2V0RXJyb3JSZWRCYWNrZ3JvdW5kQWZ0ZXJTY3JDZmdWYWxpZGF0ZSh0aGlzLl9tb2R1bGVTZXJ2aWNlLmxhc3RFcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgICAgIGlmICh0aGlzLl9pc0hlYWRlcikge1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9kb3VibGVDbGlja0hlYWRlcnMuaGFuZGxlQ29sbGFwc2VhYmxlRGVzdHJveSh0aGlzLnNjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9lbGVtZW50ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuaG9zdENvbXBvbmVudCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXRzIGhvc3QgY29tcG9uZW50IHZpc2liaWxpdHksIHJlcXVpcmVkLCByZWFkb25seSBldGMuIGlmIHNwZWNpZmllZCBpbiBiYWNrZW5kIHNjcmVlbiBjb25maWcgT1IgbW9kdWxlIHJlYWRvbmx5IHN0YXR1cy5cclxuICAgIHByaXZhdGUgX3VwZGF0ZUhvc3QoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuX21heVVwZGF0ZUhvc3QoKSB8fCB0aGlzLnNjcmVlbkNvbmZpZ05hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnNjcmVlbkNvbmZpZ05hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaG9zdENvbXBvbmVudC5vYmplY3RDb25maWdOYW1lID0gdGhpcy5zY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IG15Q2ZnT2JqOiBPYmplY3RDb25maWd1cmF0aW9uID0gdGhpcy5fY29uZmlnU2VydmljZS5nZXRPYmplY3RDb25maWd1cmF0aW9uRm9yKHRoaXMuc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdCk7XHJcbiAgICAgICAgICAgIGlmIChteUNmZ09iaikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0SG9zdFZpc2libGUobXlDZmdPYmouaW1tZWRpYXRlbHlWaXNpYmxlKCkpO1xyXG4gICAgICAgICAgICAgICAgLy8gaWYgKHRoaXMuaG9zdENvbXBvbmVudCBpbnN0YW5jZW9mIEdyaWRDb2x1bW5Db21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5ob3N0Q29tcG9uZW50LnJpZ2h0cyA9IG15Q2ZnT2JqLnJpZ2h0cztcclxuICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zY3JlZW5Db25maWdOYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ob3N0Q29tcG9uZW50LnJlcXVpcmVkID0gbXlDZmdPYmouaXNSZXF1aXJlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaG9zdENvbXBvbmVudC5yZWFkb25seSA9IHRoaXMuaG9zdENvbXBvbmVudC5mb3JjZVJlYWRvbmx5IHx8IHRoaXMuX21vZHVsZUluUmVhZG9ubHlNb2RlKCkgfHwgbXlDZmdPYmouaXNSZWFkb25seSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaG9zdENvbXBvbmVudC5kZWNpbWFscyA9IG15Q2ZnT2JqLnNjYWxlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaG9zdENvbXBvbmVudC5tYXhMZW5ndGggPSBteUNmZ09iai5tYXhMZW5ndGg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRIb3N0VmlzaWJsZShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2NyZWVuQ29uZmlnTmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaG9zdENvbXBvbmVudC5yZWFkb25seSA9IHRoaXMuX21vZHVsZUluUmVhZG9ubHlNb2RlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTcGF3biBlcnJvciBtZXNzYWdlIHRvb2x0aXAgb250byBvdXIgaG9zdCBjb21wLCBpZiBhbnkgZXJyb3Igd2FzIG1lYW50IGZvciB0aGUgaG9zdCAoZm91bmQgYnkgc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdCk7XHJcbiAgICAgKiBAcGFyYW0gZXJyb3JWYWxpZGF0aW9uIEEgdG9wLWxldmVsIGZ1bGwgdmFsaWRhdGlvbiByZXN1bHQsIGVpdGhlciBmcm9tIHRoZSBiYWNrZW5kIG9yIGZyb20gc29tZSBjbGllbnQtc2lkZSB2YWxpZGF0aW9uIGVycm9yLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zZXRFcnJvclJlZEJhY2tncm91bmRBZnRlclNjckNmZ1ZhbGlkYXRlKGVycm9yVmFsaWRhdGlvbjogVmFsaWRhdGlvblJlc3VsdCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmhvc3RDb21wb25lbnQgJiYgZXJyb3JWYWxpZGF0aW9uKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZXM6IFZhbGlkYXRpb25NZXNzYWdlW10gPSBlcnJvclZhbGlkYXRpb24uZ2V0QWxsRXJyb3JNZXNzYWdlc09mTXlWYWxpZGF0aW9uRmllbGRzKCk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDAsIGxlbjogbnVtYmVyID0gZXJyb3JNZXNzYWdlcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JNc2c6IFZhbGlkYXRpb25NZXNzYWdlID0gZXJyb3JNZXNzYWdlc1tpXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZ05hbWU6IHN0cmluZyA9IHRoaXMuZGF0YU5hbWUgPyB0aGlzLmRhdGFOYW1lIDogdGhpcy5zY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0O1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yTXNnLmZpZWxkSWQgPT09IGNvbmZpZ05hbWUgJiYgdGhpcy5fZWxlbWVudCAvKiYmIHRoaXMuX3Byb3Blckhvc3QoZXJyb3JNc2cuYm9JZCkqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaG9zdENvbXBvbmVudC5yZWRFcnJvckJhY2tncm91bmQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX21vZHVsZUluUmVhZG9ubHlNb2RlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5ub01vZHVsZVNlcnZpY2UgPyAodGhpcy5fbW9kdWxlU2VydmljZSA/IHRoaXMuX21vZHVsZVNlcnZpY2UucmVhZG9ubHkgOiBmYWxzZSkgOiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9tYXlVcGRhdGVIb3N0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhIXRoaXMuaG9zdENvbXBvbmVudCAmJiAhdGhpcy5faXNUdXJuZWRPZmYgJiYgISF0aGlzLnNjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3Q7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2V0SG9zdFZpc2libGUodmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5zY3JlZW5Db25maWdOYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuaG9zdENvbXBvbmVudC5oaWRkZW4gPSAhdmlzaWJsZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fZWxlbWVudCAmJiB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2hpZGRlbicpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdoaWRkZW4nKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=