@fundamental-ngx/core 0.44.0-rc.6 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/esm2022/action-bar/action-bar.component.mjs +3 -2
  2. package/esm2022/alert/alert-service/alert.service.mjs +3 -3
  3. package/esm2022/alert/alert-utils/alert-config.mjs +3 -2
  4. package/esm2022/alert/alert-utils/alert-container.component.mjs +3 -2
  5. package/esm2022/alert/alert-utils/alert-ref.mjs +3 -2
  6. package/esm2022/alert/alert.component.mjs +3 -3
  7. package/esm2022/alert/alert.module.mjs +3 -3
  8. package/esm2022/avatar/avatar.component.mjs +3 -3
  9. package/esm2022/bar/directives/bar-element.directive.mjs +3 -2
  10. package/esm2022/carousel/carousel.component.mjs +4 -4
  11. package/esm2022/date-picker/date-picker.component.mjs +9 -8
  12. package/esm2022/datetime-picker/datetime-picker.component.mjs +8 -7
  13. package/esm2022/dialog/dialog-footer-button/dialog-footer-button.component.mjs +3 -2
  14. package/esm2022/dialog/directives/dialog-decisive-button.directive.mjs +3 -2
  15. package/esm2022/feed-list-item/components/item/feed-list-item.component.mjs +4 -4
  16. package/esm2022/form/form-label/form-label.component.mjs +5 -4
  17. package/esm2022/inline-help/inline-help.directive.mjs +3 -2
  18. package/esm2022/input-group/input-group.component.mjs +4 -3
  19. package/esm2022/link/link.component.mjs +3 -3
  20. package/esm2022/list/list-item/list-item.component.mjs +6 -6
  21. package/esm2022/message-box/directives/message-box-decisive-button.directive.mjs +3 -2
  22. package/esm2022/message-box/message-box-footer-button/message-box-footer-button.component.mjs +3 -2
  23. package/esm2022/pagination/pagination.component.mjs +10 -10
  24. package/esm2022/popover/base/base-popover.class.mjs +5 -4
  25. package/esm2022/popover/popover.component.mjs +3 -2
  26. package/esm2022/product-switch/product-switch/product-switch.component.mjs +3 -2
  27. package/esm2022/shellbar/shellbar-actions/shellbar-actions.component.mjs +3 -2
  28. package/esm2022/slider/slider.component.mjs +5 -4
  29. package/esm2022/split-button/split-button.component.mjs +4 -3
  30. package/esm2022/splitter/splitter.component.mjs +3 -2
  31. package/esm2022/step-input/step-input.component.mjs +4 -4
  32. package/esm2022/switch/switch.component.mjs +5 -4
  33. package/esm2022/tabs/tab-item-expand/tab-item-expand.component.mjs +3 -2
  34. package/esm2022/tabs/tab-list.component.mjs +3 -3
  35. package/esm2022/time/i18n/time-i18n.mjs +3 -2
  36. package/esm2022/token/token.component.mjs +4 -4
  37. package/esm2022/toolbar/toolbar.component.mjs +3 -3
  38. package/esm2022/upload-collection/upload-collection-button-group/upload-collection-button-group.component.mjs +8 -7
  39. package/esm2022/upload-collection/upload-collection-form-item/upload-collection-form-item.component.mjs +3 -2
  40. package/fesm2022/fundamental-ngx-core-action-bar.mjs +2 -1
  41. package/fesm2022/fundamental-ngx-core-action-bar.mjs.map +1 -1
  42. package/fesm2022/fundamental-ngx-core-alert.mjs +7 -7
  43. package/fesm2022/fundamental-ngx-core-alert.mjs.map +1 -1
  44. package/fesm2022/fundamental-ngx-core-avatar.mjs +2 -2
  45. package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
  46. package/fesm2022/fundamental-ngx-core-bar.mjs +2 -1
  47. package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
  48. package/fesm2022/fundamental-ngx-core-carousel.mjs +3 -3
  49. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  50. package/fesm2022/fundamental-ngx-core-date-picker.mjs +8 -7
  51. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  52. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +7 -6
  53. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  54. package/fesm2022/fundamental-ngx-core-dialog.mjs +3 -2
  55. package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
  56. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +3 -3
  57. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  58. package/fesm2022/fundamental-ngx-core-form.mjs +4 -3
  59. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  60. package/fesm2022/fundamental-ngx-core-inline-help.mjs +2 -1
  61. package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
  62. package/fesm2022/fundamental-ngx-core-input-group.mjs +3 -3
  63. package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
  64. package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
  65. package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
  66. package/fesm2022/fundamental-ngx-core-list.mjs +5 -5
  67. package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
  68. package/fesm2022/fundamental-ngx-core-message-box.mjs +3 -2
  69. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  70. package/fesm2022/fundamental-ngx-core-pagination.mjs +9 -9
  71. package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
  72. package/fesm2022/fundamental-ngx-core-popover.mjs +6 -5
  73. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  74. package/fesm2022/fundamental-ngx-core-product-switch.mjs +3 -3
  75. package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
  76. package/fesm2022/fundamental-ngx-core-shellbar.mjs +2 -2
  77. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  78. package/fesm2022/fundamental-ngx-core-slider.mjs +4 -4
  79. package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
  80. package/fesm2022/fundamental-ngx-core-split-button.mjs +3 -2
  81. package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
  82. package/fesm2022/fundamental-ngx-core-splitter.mjs +2 -2
  83. package/fesm2022/fundamental-ngx-core-splitter.mjs.map +1 -1
  84. package/fesm2022/fundamental-ngx-core-step-input.mjs +3 -3
  85. package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
  86. package/fesm2022/fundamental-ngx-core-switch.mjs +4 -3
  87. package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
  88. package/fesm2022/fundamental-ngx-core-tabs.mjs +3 -3
  89. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  90. package/fesm2022/fundamental-ngx-core-time.mjs +2 -2
  91. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  92. package/fesm2022/fundamental-ngx-core-token.mjs +3 -3
  93. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  94. package/fesm2022/fundamental-ngx-core-toolbar.mjs +2 -2
  95. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  96. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +8 -7
  97. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  98. package/fundamental-ngx-core-v0.44.0.tgz +0 -0
  99. package/package.json +3 -3
  100. package/schematics/add-dependencies/index.js +4 -4
  101. package/fundamental-ngx-core-v0.44.0-rc.6.tgz +0 -0
@@ -5,6 +5,7 @@ import { MenuComponent, MenuItemComponent } from '@fundamental-ngx/core/menu';
5
5
  import { SplitButtonActionTitle } from './split-button-utils/split-button.directives';
6
6
  import { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';
7
7
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
8
+ import { warnOnce } from '@fundamental-ngx/cdk/utils';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "@fundamental-ngx/core/content-density";
10
11
  import * as i2 from "@angular/common";
@@ -37,7 +38,7 @@ const splitButtonTextClasses = [splitButtonTextClass];
37
38
  export class SplitButtonComponent {
38
39
  /** @deprecated The Title for main action button. This will be deprecated as an input but will remain a property on this component. */
39
40
  set mainActionTitle(value) {
40
- console.warn("Property mainActionTitle is deprecated. Use MenuItemComponent's title component text content instead.");
41
+ warnOnce("Property mainActionTitle is deprecated. Use MenuItemComponent's title component text content instead.");
41
42
  this._mainActionTitle = value;
42
43
  }
43
44
  get mainActionTitle() {
@@ -48,7 +49,7 @@ export class SplitButtonComponent {
48
49
  * Aria-label attribute used to describe expand button
49
50
  */
50
51
  set expandButtonAriaLabel(value) {
51
- console.warn("Property expandButtonAriaLabel is deprecated. Use i18n capabilities 'coreSplitButton.expandButtonAriaLabel' key instead.");
52
+ warnOnce("Property expandButtonAriaLabel is deprecated. Use i18n capabilities 'coreSplitButton.expandButtonAriaLabel' key instead.");
52
53
  this._expandButtonAriaLabel = value;
53
54
  }
54
55
  get expandButtonAriaLabel() {
@@ -253,4 +254,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
253
254
  type: ViewChild,
254
255
  args: ['menuActionButton', { read: ElementRef }]
255
256
  }] } });
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NwbGl0LWJ1dHRvbi9zcGxpdC1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc3BsaXQtYnV0dG9uL3NwbGl0LWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFOUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFdEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7QUFFaEUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsdUJBQXVCLENBQUM7QUFDNUQsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFFdEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBU0gsTUFBTSxPQUFPLG9CQUFvQjtJQVM3QixzSUFBc0k7SUFDdEksSUFDSSxlQUFlLENBQUMsS0FB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OzsyRkQyQmEsb0JBQW9CO2tCQVJoQyxTQUFTOytCQUNJLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLENBQUMsK0JBQStCLEVBQUUsQ0FBQzs4TEFLOUMsS0FBSztzQkFESixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLRixlQUFlO3NCQURsQixLQUFLO2dCQWVOLE1BQU07c0JBREwsS0FBSztnQkFRRixxQkFBcUI7c0JBRHhCLEtBQUs7Z0JBY04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBUU4sVUFBVTtzQkFEVCxLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFLRyxvQkFBb0I7c0JBRDVCLE1BQU07Z0JBS1AsYUFBYTtzQkFEWixZQUFZO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFLM0QsSUFBSTtzQkFESCxZQUFZO3VCQUFDLGFBQWE7Z0JBSzNCLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBS25ELGFBQWE7c0JBRFosU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQnV0dG9uVHlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgTWVudUNvbXBvbmVudCwgTWVudUl0ZW1Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbWVudSc7XG5cbmltcG9ydCB7IFNwbGl0QnV0dG9uQWN0aW9uVGl0bGUgfSBmcm9tICcuL3NwbGl0LWJ1dHRvbi11dGlscy9zcGxpdC1idXR0b24uZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBNYWluQWN0aW9uIH0gZnJvbSAnLi9tYWluLWFjdGlvbic7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU9ic2VydmVyLCBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmV4cG9ydCBjb25zdCBzcGxpdEJ1dHRvblRleHRDbGFzcyA9ICdmZC1idXR0b24tc3BsaXRfX3RleHQnO1xuY29uc3Qgc3BsaXRCdXR0b25UZXh0Q2xhc3NlcyA9IFtzcGxpdEJ1dHRvblRleHRDbGFzc107XG5cbi8qKlxuICogU3BsaXQgQnV0dG9uIGNvbXBvbmVudCwgdXNlZCB0byBlbmhhbmNlIHN0YW5kYXJkIEhUTUwgYnV0dG9uIGFuZCBhZGQgcG9zc2liaWxpdHkgdG8gcHV0IHNvbWUgZHJvcGRvd24gd2l0aFxuICogYWRkaXRpb25hbCBvcHRpb25zLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxmZC1zcGxpdC1idXR0b24+XG4gKiAgIDxmZC1tZW51PlxuICogICAgICAgPGxpIGZkLW1lbnUtaXRlbT5cbiAqICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmU+XG4gKiAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+T3B0aW9uIDE8L3NwYW4+XG4gKiAgICAgICAgICAgPC9kaXY+XG4gKiAgICAgICA8L2xpPlxuICogICAgICAgPGxpIGZkLW1lbnUtaXRlbT5cbiAqICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmU+XG4gKiAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+T3B0aW9uIDI8L3NwYW4+XG4gKiAgICAgICAgICAgPC9kaXY+XG4gKiAgICAgICA8L2xpPlxuICogICAgPC9mZC1tZW51PlxuICo8L2ZkLXNwbGl0LWJ1dHRvbj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXNwbGl0LWJ1dHRvbicsXG4gICAgdGVtcGxhdGVVcmw6ICdzcGxpdC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NwbGl0LWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycygpXVxufSlcbmV4cG9ydCBjbGFzcyBTcGxpdEJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgICAvKiogVGhlIGljb24gdG8gaW5jbHVkZSBpbiB0aGUgYnV0dG9uLiBTZWUgdGhlIGljb24gcGFnZSBmb3IgdGhlIGxpc3Qgb2YgaWNvbnMuICovXG4gICAgQElucHV0KClcbiAgICBnbHlwaCA9ICdzbGltLWFycm93LWRvd24nO1xuXG4gICAgLyoqIFRoZSBpY29uIHRvIGluY2x1ZGUgaW4gdGhlIGJ1dHRvbi4gU2VlIHRoZSBpY29uIHBhZ2UgZm9yIHRoZSBsaXN0IG9mIGljb25zLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICAvKiogQGRlcHJlY2F0ZWQgVGhlIFRpdGxlIGZvciBtYWluIGFjdGlvbiBidXR0b24uIFRoaXMgd2lsbCBiZSBkZXByZWNhdGVkIGFzIGFuIGlucHV0IGJ1dCB3aWxsIHJlbWFpbiBhIHByb3BlcnR5IG9uIHRoaXMgY29tcG9uZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1haW5BY3Rpb25UaXRsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiUHJvcGVydHkgbWFpbkFjdGlvblRpdGxlIGlzIGRlcHJlY2F0ZWQuIFVzZSBNZW51SXRlbUNvbXBvbmVudCdzIHRpdGxlIGNvbXBvbmVudCB0ZXh0IGNvbnRlbnQgaW5zdGVhZC5cIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9tYWluQWN0aW9uVGl0bGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgbWFpbkFjdGlvblRpdGxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYWluQWN0aW9uVGl0bGU7XG4gICAgfVxuXG4gICAgLyoqIFRoZSB0eXBlIG9mIHRoZSBidXR0b24uIFR5cGVzIGluY2x1ZGUgJ3N0YW5kYXJkJywgJ3Bvc2l0aXZlJywgJ21lZGl1bScsIGFuZCAnbmVnYXRpdmUnLlxuICAgICAqIExlYXZlIGVtcHR5IGZvciBkZWZhdWx0IChBY3Rpb24gYnV0dG9uKS4nKi9cbiAgICBASW5wdXQoKVxuICAgIGZkVHlwZTogQnV0dG9uVHlwZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogQXJpYS1sYWJlbCBhdHRyaWJ1dGUgdXNlZCB0byBkZXNjcmliZSBleHBhbmQgYnV0dG9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZXhwYW5kQnV0dG9uQXJpYUxhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgXCJQcm9wZXJ0eSBleHBhbmRCdXR0b25BcmlhTGFiZWwgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlU3BsaXRCdXR0b24uZXhwYW5kQnV0dG9uQXJpYUxhYmVsJyBrZXkgaW5zdGVhZC5cIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9leHBhbmRCdXR0b25BcmlhTGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgZXhwYW5kQnV0dG9uQXJpYUxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9leHBhbmRCdXR0b25BcmlhTGFiZWw7XG4gICAgfVxuXG4gICAgLyoqIFRpdGxlIGF0dHJpYnV0ZSB1c2VkIHRvIGRlc2NyaWJlIGV4cGFuZCBidXR0b24gKi9cbiAgICBASW5wdXQoKVxuICAgIGV4cGFuZEJ1dHRvblRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKiogU2VsZWN0ZWQgbWVudSBpdGVtICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RlZDogTWVudUl0ZW1Db21wb25lbnQ7XG5cbiAgICAvKiogV2hldGhlciBvciBub3QgdGhlIGVsZW1lbnQgc2hvdWxkIGtlZXAgYSBmaXhlZCB3aWR0aC4gVGhlIHdpZHRoIGNvdWxkIGNoYW5nZSBpZiB0aGUgdGV4dCBjaGFuZ2VzIGxlbmd0aC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGZpeGVkV2lkdGggPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSBtYWluQWN0aW9uVGl0bGUsIGtlZXBNYWluQWN0aW9uIG9wdGlvbiBhbmQgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlXG4gICAgICogZXhlY3V0ZWQgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtYWluQWN0aW9uOiBNYWluQWN0aW9uO1xuXG4gICAgLyoqIGFyaWEtbGFiZWwgYXR0cmlidXRlICovXG4gICAgQElucHV0KClcbiAgICBhcmlhbExhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogRXZlbnQgc2VudCB3aGVuIHByaW1hcnkgYnV0dG9uIGlzIGNsaWNrZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBwcmltYXJ5QnV0dG9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoU3BsaXRCdXR0b25BY3Rpb25UaXRsZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICAgIHRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKE1lbnVDb21wb25lbnQpXG4gICAgbWVudTogTWVudUNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnbWFpbkFjdGlvbkJ1dHRvbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIG1haW5BY3Rpb25CdG46IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ21lbnVBY3Rpb25CdXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBtZW51QWN0aW9uQnRuOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBtYWluQnV0dG9uV2lkdGg6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IHR5cGVDbGFzcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5mZFR5cGUgPyBgZmQtYnV0dG9uLXNwbGl0LS0ke3RoaXMuZmRUeXBlfWAgOiAnJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2V4cGFuZEJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9tYWluQWN0aW9uVGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbWVudUl0ZW1TdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9tZW51U3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb250ZW50RGVuc2l0eVN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbWVudUFjdGl2ZVBhdGhTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX2Rlc3Ryb3lSZWY6IERlc3Ryb3lSZWYsXG4gICAgICAgIHByaXZhdGUgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsXG4gICAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjJcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiBFbWl0cyBldmVudCB3aGVuIG1haW4gYnV0dG9uIGlzIGNsaWNrZWQgKi9cbiAgICBvbk1haW5CdXR0b25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByaW1hcnlCdXR0b25DbGlja2VkLmVtaXQoZXZlbnQpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1haW5BY3Rpb24gJiYgdGhpcy5tYWluQWN0aW9uLmNhbGxiYWNrKSB7XG4gICAgICAgICAgICB0aGlzLm1haW5BY3Rpb24uY2FsbGJhY2soKTtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZW51Ll9tZW51SXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5tZW51SW50ZXJhY3RpdmUuX2Zyb21TcGxpdEJ1dHRvbiA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9zZXR1cE1lbnVTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgdGhpcy5fc2V0dXBNZW51SXRlbVN1YnNjcmlwdGlvbnMoKTtcbiAgICAgICAgdGhpcy5faGFuZGxlTWFpbkFjdGlvbk9iamVjdCgpO1xuXG4gICAgICAgIGlmICghdGhpcy5tYWluQWN0aW9uVGl0bGUgJiYgIXRoaXMudGl0bGVUZW1wbGF0ZSAmJiAhdGhpcy5zZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RNZW51SXRlbSh0aGlzLm1lbnUuX21lbnVJdGVtcy5maXJzdCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMubWFpbkFjdGlvblRpdGxlICYmIHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0TWVudUl0ZW0odGhpcy5zZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9tZW51QWN0aXZlUGF0aFN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLm1lbnUuYWN0aXZlUGF0aC5zdWJzY3JpYmUoKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdEl0ZW0gPSBpdGVtc1tpdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBpZiAobGFzdEl0ZW0gJiYgIWxhc3RJdGVtLnN1Ym1lbnUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZW51LmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzVHJpZ2dlckVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb250ZW50RGVuc2l0eU9ic2VydmVyLmlzQ29tcGFjdCRcbiAgICAgICAgICAgIC5waXBlKHRhcCh0aGlzLl9hZGRCdXR0b25UZXh0Q2xhc3MpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICgnc2VsZWN0ZWQnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0TWVudUl0ZW0odGhpcy5zZWxlY3RlZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCdtYWluQWN0aW9uJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVNYWluQWN0aW9uT2JqZWN0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tZW51SXRlbVN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fbWVudVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9jb250ZW50RGVuc2l0eVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9tZW51QWN0aXZlUGF0aFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiBjYWxsZWQgdG8gc2VsZWN0IGEgbWVudSBpdGVtIGZvciB0aGUgc3BsaXQgYnV0dG9uLiAqL1xuICAgIHNlbGVjdE1lbnVJdGVtKG1lbnVJdGVtOiBNZW51SXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBpZiAobWVudUl0ZW0gJiYgKCF0aGlzLm1haW5BY3Rpb24gfHwgIXRoaXMubWFpbkFjdGlvbi5rZWVwTWFpbkFjdGlvbikpIHtcbiAgICAgICAgICAgIG1lbnVJdGVtLnNldFNlbGVjdGVkKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JhcHBlciBnZXRzIGZvY3VzZWQgcHJvZ3JhbW1hdGljYWxseSBieSBtZW51XG4gICAgICogd2hlbiB0aGUgXCJlc2NhcGVcIiBidXR0b24gaXMgcHJlc3NlZC5cbiAgICAgKiBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0byB0cmFuc2l0IGZvY3VzIHRvIHRoZSBcIm1vcmUgYWN0aW9uc1wiIGJ1dHRvblxuICAgICAqL1xuICAgIF9vbkdyb3VwRm9jdXNlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9jdXNUcmlnZ2VyRWxlbWVudCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0TWFpbkJ1dHRvbldpZHRoKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tYWluQWN0aW9uQnRuICYmIHRoaXMubWFpbkFjdGlvbkJ0bi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLm1haW5CdXR0b25XaWR0aCA9IHRoaXMubWFpbkFjdGlvbkJ0bi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICsgJ3B4JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0dXBNZW51SXRlbVN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVudS5fbWVudUl0ZW1zLmZvckVhY2goKG1lbnVJdGVtKSA9PiB7XG4gICAgICAgICAgICBtZW51SXRlbS5vblNlbGVjdC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZml4ZWRXaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9nZXRNYWluQnV0dG9uV2lkdGgoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX21lbnVJdGVtU3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgbWVudUl0ZW0ub25TZWxlY3Quc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlTWVudUl0ZW1TZWxlY3Rpb24obWVudUl0ZW0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZU1lbnVJdGVtU2VsZWN0aW9uKG1lbnVJdGVtOiBNZW51SXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubWFpbkFjdGlvbiB8fCAhdGhpcy5tYWluQWN0aW9uLmtlZXBNYWluQWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gbWVudUl0ZW07XG4gICAgICAgICAgICB0aGlzLm1lbnUuX21lbnVJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5zZXRTZWxlY3RlZChmYWxzZSwgdHJ1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG1lbnVJdGVtLnNldFNlbGVjdGVkKHRydWUsIHRydWUpO1xuICAgICAgICAgICAgdGhpcy50aXRsZVRlbXBsYXRlID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMubWFpbkFjdGlvblRpdGxlID0gbWVudUl0ZW0ubWVudUl0ZW1UaXRsZS50aXRsZTtcbiAgICAgICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0dXBNZW51U3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tZW51U3Vic2NyaXB0aW9uID0gdGhpcy5tZW51Ll9tZW51SXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbWVudUl0ZW1TdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLl9tZW51SXRlbVN1YnNjcmlwdGlvbnMuY2xvc2VkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9zZXR1cE1lbnVJdGVtU3Vic2NyaXB0aW9ucygpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gY2FsbCBtYXJrRm9yQ2hlY2sgb25jZSBtZW51IG9wZW4gc3RhdGUgZ2V0cyBjaGFuZ2VkXG4gICAgICAgIHRoaXMuX21lbnVTdWJzY3JpcHRpb24uYWRkKHRoaXMubWVudS5pc09wZW5DaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVNYWluQWN0aW9uT2JqZWN0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tYWluQWN0aW9uICYmIHR5cGVvZiB0aGlzLm1haW5BY3Rpb24ubWFpbkFjdGlvblRpdGxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5tYWluQWN0aW9uVGl0bGUgPSB0aGlzLm1haW5BY3Rpb24ubWFpbkFjdGlvblRpdGxlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubWFpbkFjdGlvbiAmJiB0aGlzLm1haW5BY3Rpb24ubWFpbkFjdGlvblRpdGxlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcbiAgICAgICAgICAgIHRoaXMudGl0bGVUZW1wbGF0ZSA9IHRoaXMubWFpbkFjdGlvbi5tYWluQWN0aW9uVGl0bGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FkZEJ1dHRvblRleHRDbGFzcyA9IChjb21wYWN0OiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IHRleHRTcGFuRWxlbWVudCA9IHRoaXMubWFpbkFjdGlvbkJ0bj8ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZmQtYnV0dG9uX190ZXh0Jyk7XG4gICAgICAgIGlmICghdGV4dFNwYW5FbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3BsaXRCdXR0b25UZXh0Q2xhc3Nlcy5mb3JFYWNoKChfY2xhc3MpID0+IHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNsYXNzKHRleHRTcGFuRWxlbWVudCwgX2NsYXNzKSk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRleHRTcGFuRWxlbWVudCwgc3BsaXRCdXR0b25UZXh0Q2xhc3MpO1xuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZvY3VzVHJpZ2dlckVsZW1lbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVudUFjdGlvbkJ0bj8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZkLWJ1dHRvbi1zcGxpdCBmZC1oYXMtbWFyZ2luLXJpZ2h0LXNtYWxsXCJcbiAgICBbbmdDbGFzc109XCJ0eXBlQ2xhc3NcIlxuICAgIHJvbGU9XCJncm91cFwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhbExhYmVsIHx8ICgnY29yZVNwbGl0QnV0dG9uLmFyaWFsTGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICBbZmRNZW51VHJpZ2dlcl09XCJtZW51XCJcbiAgICAoZm9jdXMpPVwiX29uR3JvdXBGb2N1c2VkKClcIlxuPlxuICAgIDxidXR0b25cbiAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICNtYWluQWN0aW9uQnV0dG9uXG4gICAgICAgIFtsYWJlbF09XCJtYWluQWN0aW9uVGl0bGVcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwibWFpbkJ1dHRvbldpZHRoXCJcbiAgICAgICAgW2ZkVHlwZV09XCJmZFR5cGVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwib25NYWluQnV0dG9uQ2xpY2soJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvblxuICAgICAgICBmZC1idXR0b25cbiAgICAgICAgI21lbnVBY3Rpb25CdXR0b25cbiAgICAgICAgW2dseXBoXT1cImdseXBoXCJcbiAgICAgICAgW2ZkVHlwZV09XCJmZFR5cGVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbYXJpYUxhYmVsXT1cImV4cGFuZEJ1dHRvbkFyaWFMYWJlbCB8fCAoJ2NvcmVTcGxpdEJ1dHRvbi5leHBhbmRCdXR0b25BcmlhTGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgW2F0dHIudGl0bGVdPVwiXG4gICAgICAgICAgICBleHBhbmRCdXR0b25UaXRsZSB8fCBleHBhbmRCdXR0b25BcmlhTGFiZWwgfHwgKCdjb3JlU3BsaXRCdXR0b24uZXhwYW5kQnV0dG9uQXJpYUxhYmVsJyB8IGZkVHJhbnNsYXRlKVxuICAgICAgICBcIlxuICAgICAgICBbY2xhc3MuaXMtYWN0aXZlXT1cIm1lbnUuaXNPcGVuXCJcbiAgICA+PC9idXR0b24+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtbWVudVwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NwbGl0LWJ1dHRvbi9zcGxpdC1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc3BsaXQtYnV0dG9uL3NwbGl0LWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFOUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFdEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7O0FBRXRELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLHVCQUF1QixDQUFDO0FBQzVELE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBRXREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQVNILE1BQU0sT0FBTyxv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SVYsVUFBVSxrRENsSnJELHVvQ0FtQ0E7OzJGRDRCYSxvQkFBb0I7a0JBUmhDLFNBQVM7K0JBQ0ksaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFDMUIsQ0FBQywrQkFBK0IsRUFBRSxDQUFDOzhMQUs5QyxLQUFLO3NCQURKLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtGLGVBQWU7c0JBRGxCLEtBQUs7Z0JBZU4sTUFBTTtzQkFETCxLQUFLO2dCQVFGLHFCQUFxQjtzQkFEeEIsS0FBSztnQkFjTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFRTixVQUFVO3NCQURULEtBQUs7Z0JBS04sVUFBVTtzQkFEVCxLQUFLO2dCQUtHLG9CQUFvQjtzQkFENUIsTUFBTTtnQkFLUCxhQUFhO3NCQURaLFlBQVk7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUszRCxJQUFJO3NCQURILFlBQVk7dUJBQUMsYUFBYTtnQkFLM0IsYUFBYTtzQkFEWixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLbkQsYUFBYTtzQkFEWixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCdXR0b25UeXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBNZW51Q29tcG9uZW50LCBNZW51SXRlbUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tZW51JztcblxuaW1wb3J0IHsgU3BsaXRCdXR0b25BY3Rpb25UaXRsZSB9IGZyb20gJy4vc3BsaXQtYnV0dG9uLXV0aWxzL3NwbGl0LWJ1dHRvbi5kaXJlY3RpdmVzJztcbmltcG9ydCB7IE1haW5BY3Rpb24gfSBmcm9tICcuL21haW4tYWN0aW9uJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IHdhcm5PbmNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG5leHBvcnQgY29uc3Qgc3BsaXRCdXR0b25UZXh0Q2xhc3MgPSAnZmQtYnV0dG9uLXNwbGl0X190ZXh0JztcbmNvbnN0IHNwbGl0QnV0dG9uVGV4dENsYXNzZXMgPSBbc3BsaXRCdXR0b25UZXh0Q2xhc3NdO1xuXG4vKipcbiAqIFNwbGl0IEJ1dHRvbiBjb21wb25lbnQsIHVzZWQgdG8gZW5oYW5jZSBzdGFuZGFyZCBIVE1MIGJ1dHRvbiBhbmQgYWRkIHBvc3NpYmlsaXR5IHRvIHB1dCBzb21lIGRyb3Bkb3duIHdpdGhcbiAqIGFkZGl0aW9uYWwgb3B0aW9ucy5cbiAqXG4gKiBgYGBodG1sXG4gKiA8ZmQtc3BsaXQtYnV0dG9uPlxuICogICA8ZmQtbWVudT5cbiAqICAgICAgIDxsaSBmZC1tZW51LWl0ZW0+XG4gKiAgICAgICAgICAgPGRpdiBmZC1tZW51LWludGVyYWN0aXZlPlxuICogICAgICAgICAgICAgICA8c3BhbiBmZC1tZW51LXRpdGxlPk9wdGlvbiAxPC9zcGFuPlxuICogICAgICAgICAgIDwvZGl2PlxuICogICAgICAgPC9saT5cbiAqICAgICAgIDxsaSBmZC1tZW51LWl0ZW0+XG4gKiAgICAgICAgICAgPGRpdiBmZC1tZW51LWludGVyYWN0aXZlPlxuICogICAgICAgICAgICAgICA8c3BhbiBmZC1tZW51LXRpdGxlPk9wdGlvbiAyPC9zcGFuPlxuICogICAgICAgICAgIDwvZGl2PlxuICogICAgICAgPC9saT5cbiAqICAgIDwvZmQtbWVudT5cbiAqPC9mZC1zcGxpdC1idXR0b24+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1zcGxpdC1idXR0b24nLFxuICAgIHRlbXBsYXRlVXJsOiAnc3BsaXQtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zcGxpdC1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoKV1cbn0pXG5leHBvcnQgY2xhc3MgU3BsaXRCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqIFRoZSBpY29uIHRvIGluY2x1ZGUgaW4gdGhlIGJ1dHRvbi4gU2VlIHRoZSBpY29uIHBhZ2UgZm9yIHRoZSBsaXN0IG9mIGljb25zLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2x5cGggPSAnc2xpbS1hcnJvdy1kb3duJztcblxuICAgIC8qKiBUaGUgaWNvbiB0byBpbmNsdWRlIGluIHRoZSBidXR0b24uIFNlZSB0aGUgaWNvbiBwYWdlIGZvciB0aGUgbGlzdCBvZiBpY29ucy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgLyoqIEBkZXByZWNhdGVkIFRoZSBUaXRsZSBmb3IgbWFpbiBhY3Rpb24gYnV0dG9uLiBUaGlzIHdpbGwgYmUgZGVwcmVjYXRlZCBhcyBhbiBpbnB1dCBidXQgd2lsbCByZW1haW4gYSBwcm9wZXJ0eSBvbiB0aGlzIGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBtYWluQWN0aW9uVGl0bGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgIFwiUHJvcGVydHkgbWFpbkFjdGlvblRpdGxlIGlzIGRlcHJlY2F0ZWQuIFVzZSBNZW51SXRlbUNvbXBvbmVudCdzIHRpdGxlIGNvbXBvbmVudCB0ZXh0IGNvbnRlbnQgaW5zdGVhZC5cIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9tYWluQWN0aW9uVGl0bGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgbWFpbkFjdGlvblRpdGxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYWluQWN0aW9uVGl0bGU7XG4gICAgfVxuXG4gICAgLyoqIFRoZSB0eXBlIG9mIHRoZSBidXR0b24uIFR5cGVzIGluY2x1ZGUgJ3N0YW5kYXJkJywgJ3Bvc2l0aXZlJywgJ21lZGl1bScsIGFuZCAnbmVnYXRpdmUnLlxuICAgICAqIExlYXZlIGVtcHR5IGZvciBkZWZhdWx0IChBY3Rpb24gYnV0dG9uKS4nKi9cbiAgICBASW5wdXQoKVxuICAgIGZkVHlwZTogQnV0dG9uVHlwZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogQXJpYS1sYWJlbCBhdHRyaWJ1dGUgdXNlZCB0byBkZXNjcmliZSBleHBhbmQgYnV0dG9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZXhwYW5kQnV0dG9uQXJpYUxhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICBcIlByb3BlcnR5IGV4cGFuZEJ1dHRvbkFyaWFMYWJlbCBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ2NvcmVTcGxpdEJ1dHRvbi5leHBhbmRCdXR0b25BcmlhTGFiZWwnIGtleSBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2V4cGFuZEJ1dHRvbkFyaWFMYWJlbCA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBleHBhbmRCdXR0b25BcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4cGFuZEJ1dHRvbkFyaWFMYWJlbDtcbiAgICB9XG5cbiAgICAvKiogVGl0bGUgYXR0cmlidXRlIHVzZWQgdG8gZGVzY3JpYmUgZXhwYW5kIGJ1dHRvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZXhwYW5kQnV0dG9uVGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBTZWxlY3RlZCBtZW51IGl0ZW0gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGVkOiBNZW51SXRlbUNvbXBvbmVudDtcblxuICAgIC8qKiBXaGV0aGVyIG9yIG5vdCB0aGUgZWxlbWVudCBzaG91bGQga2VlcCBhIGZpeGVkIHdpZHRoLiBUaGUgd2lkdGggY291bGQgY2hhbmdlIGlmIHRoZSB0ZXh0IGNoYW5nZXMgbGVuZ3RoLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZml4ZWRXaWR0aCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIG1haW5BY3Rpb25UaXRsZSwga2VlcE1haW5BY3Rpb24gb3B0aW9uIGFuZCB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBzaG91bGQgYmVcbiAgICAgKiBleGVjdXRlZCB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG1haW5BY3Rpb246IE1haW5BY3Rpb247XG5cbiAgICAvKiogYXJpYS1sYWJlbCBhdHRyaWJ1dGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFsTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBFdmVudCBzZW50IHdoZW4gcHJpbWFyeSBidXR0b24gaXMgY2xpY2tlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IHByaW1hcnlCdXR0b25DbGlja2VkOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChTcGxpdEJ1dHRvbkFjdGlvblRpdGxlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gICAgdGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoTWVudUNvbXBvbmVudClcbiAgICBtZW51OiBNZW51Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdtYWluQWN0aW9uQnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgbWFpbkFjdGlvbkJ0bjogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnbWVudUFjdGlvbkJ1dHRvbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIG1lbnVBY3Rpb25CdG46IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG1haW5CdXR0b25XaWR0aDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgdHlwZUNsYXNzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmZkVHlwZSA/IGBmZC1idXR0b24tc3BsaXQtLSR7dGhpcy5mZFR5cGV9YCA6ICcnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZXhwYW5kQnV0dG9uQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21haW5BY3Rpb25UaXRsZTogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9tZW51SXRlbVN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21lbnVTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbnRlbnREZW5zaXR5U3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9tZW51QWN0aXZlUGF0aFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfZGVzdHJveVJlZjogRGVzdHJveVJlZixcbiAgICAgICAgcHJpdmF0ZSBfY29udGVudERlbnNpdHlPYnNlcnZlcjogQ29udGVudERlbnNpdHlPYnNlcnZlcixcbiAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMlxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuIEVtaXRzIGV2ZW50IHdoZW4gbWFpbiBidXR0b24gaXMgY2xpY2tlZCAqL1xuICAgIG9uTWFpbkJ1dHRvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJpbWFyeUJ1dHRvbkNsaWNrZWQuZW1pdChldmVudCk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubWFpbkFjdGlvbiAmJiB0aGlzLm1haW5BY3Rpb24uY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHRoaXMubWFpbkFjdGlvbi5jYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1lbnUuX21lbnVJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtLm1lbnVJbnRlcmFjdGl2ZS5fZnJvbVNwbGl0QnV0dG9uID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3NldHVwTWVudVN1YnNjcmlwdGlvbigpO1xuICAgICAgICB0aGlzLl9zZXR1cE1lbnVJdGVtU3Vic2NyaXB0aW9ucygpO1xuICAgICAgICB0aGlzLl9oYW5kbGVNYWluQWN0aW9uT2JqZWN0KCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLm1haW5BY3Rpb25UaXRsZSAmJiAhdGhpcy50aXRsZVRlbXBsYXRlICYmICF0aGlzLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdE1lbnVJdGVtKHRoaXMubWVudS5fbWVudUl0ZW1zLmZpcnN0KTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5tYWluQWN0aW9uVGl0bGUgJiYgdGhpcy5zZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RNZW51SXRlbSh0aGlzLnNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX21lbnVBY3RpdmVQYXRoU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMubWVudS5hY3RpdmVQYXRoLnN1YnNjcmliZSgoaXRlbXMpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0SXRlbSA9IGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgIGlmIChsYXN0SXRlbSAmJiAhbGFzdEl0ZW0uc3VibWVudSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lbnUuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9jdXNUcmlnZ2VyRWxlbWVudCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuaXNDb21wYWN0JFxuICAgICAgICAgICAgLnBpcGUodGFwKHRoaXMuX2FkZEJ1dHRvblRleHRDbGFzcyksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCdzZWxlY3RlZCcgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RNZW51SXRlbSh0aGlzLnNlbGVjdGVkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ21haW5BY3Rpb24nIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZU1haW5BY3Rpb25PYmplY3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX21lbnVJdGVtU3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9tZW51U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2NvbnRlbnREZW5zaXR5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX21lbnVBY3RpdmVQYXRoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIGNhbGxlZCB0byBzZWxlY3QgYSBtZW51IGl0ZW0gZm9yIHRoZSBzcGxpdCBidXR0b24uICovXG4gICAgc2VsZWN0TWVudUl0ZW0obWVudUl0ZW06IE1lbnVJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChtZW51SXRlbSAmJiAoIXRoaXMubWFpbkFjdGlvbiB8fCAhdGhpcy5tYWluQWN0aW9uLmtlZXBNYWluQWN0aW9uKSkge1xuICAgICAgICAgICAgbWVudUl0ZW0uc2V0U2VsZWN0ZWQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcmFwcGVyIGdldHMgZm9jdXNlZCBwcm9ncmFtbWF0aWNhbGx5IGJ5IG1lbnVcbiAgICAgKiB3aGVuIHRoZSBcImVzY2FwZVwiIGJ1dHRvbiBpcyBwcmVzc2VkLlxuICAgICAqIEluIHRoaXMgY2FzZSB3ZSBuZWVkIHRvIHRyYW5zaXQgZm9jdXMgdG8gdGhlIFwibW9yZSBhY3Rpb25zXCIgYnV0dG9uXG4gICAgICovXG4gICAgX29uR3JvdXBGb2N1c2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb2N1c1RyaWdnZXJFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRNYWluQnV0dG9uV2lkdGgoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1haW5BY3Rpb25CdG4gJiYgdGhpcy5tYWluQWN0aW9uQnRuLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubWFpbkJ1dHRvbldpZHRoID0gdGhpcy5tYWluQWN0aW9uQnRuLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggKyAncHgnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXR1cE1lbnVJdGVtU3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZW51Ll9tZW51SXRlbXMuZm9yRWFjaCgobWVudUl0ZW0pID0+IHtcbiAgICAgICAgICAgIG1lbnVJdGVtLm9uU2VsZWN0LnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maXhlZFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2dldE1haW5CdXR0b25XaWR0aCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fbWVudUl0ZW1TdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBtZW51SXRlbS5vblNlbGVjdC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVNZW51SXRlbVNlbGVjdGlvbihtZW51SXRlbSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlTWVudUl0ZW1TZWxlY3Rpb24obWVudUl0ZW06IE1lbnVJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5tYWluQWN0aW9uIHx8ICF0aGlzLm1haW5BY3Rpb24ua2VlcE1haW5BY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBtZW51SXRlbTtcbiAgICAgICAgICAgIHRoaXMubWVudS5fbWVudUl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLnNldFNlbGVjdGVkKGZhbHNlLCB0cnVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbWVudUl0ZW0uc2V0U2VsZWN0ZWQodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnRpdGxlVGVtcGxhdGUgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5tYWluQWN0aW9uVGl0bGUgPSBtZW51SXRlbS5tZW51SXRlbVRpdGxlLnRpdGxlO1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXR1cE1lbnVTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX21lbnVTdWJzY3JpcHRpb24gPSB0aGlzLm1lbnUuX21lbnVJdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9tZW51SXRlbVN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMuX21lbnVJdGVtU3Vic2NyaXB0aW9ucy5jbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX3NldHVwTWVudUl0ZW1TdWJzY3JpcHRpb25zKCk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBjYWxsIG1hcmtGb3JDaGVjayBvbmNlIG1lbnUgb3BlbiBzdGF0ZSBnZXRzIGNoYW5nZWRcbiAgICAgICAgdGhpcy5fbWVudVN1YnNjcmlwdGlvbi5hZGQodGhpcy5tZW51LmlzT3BlbkNoYW5nZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCkpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZU1haW5BY3Rpb25PYmplY3QoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1haW5BY3Rpb24gJiYgdHlwZW9mIHRoaXMubWFpbkFjdGlvbi5tYWluQWN0aW9uVGl0bGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLm1haW5BY3Rpb25UaXRsZSA9IHRoaXMubWFpbkFjdGlvbi5tYWluQWN0aW9uVGl0bGU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tYWluQWN0aW9uICYmIHRoaXMubWFpbkFjdGlvbi5tYWluQWN0aW9uVGl0bGUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgdGhpcy50aXRsZVRlbXBsYXRlID0gdGhpcy5tYWluQWN0aW9uLm1haW5BY3Rpb25UaXRsZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWRkQnV0dG9uVGV4dENsYXNzID0gKGNvbXBhY3Q6IGJvb2xlYW4pOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgdGV4dFNwYW5FbGVtZW50ID0gdGhpcy5tYWluQWN0aW9uQnRuPy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mZC1idXR0b25fX3RleHQnKTtcbiAgICAgICAgaWYgKCF0ZXh0U3BhbkVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzcGxpdEJ1dHRvblRleHRDbGFzc2VzLmZvckVhY2goKF9jbGFzcykgPT4gdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2xhc3ModGV4dFNwYW5FbGVtZW50LCBfY2xhc3MpKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGV4dFNwYW5FbGVtZW50LCBzcGxpdEJ1dHRvblRleHRDbGFzcyk7XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9jdXNUcmlnZ2VyRWxlbWVudCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZW51QWN0aW9uQnRuPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiZmQtYnV0dG9uLXNwbGl0IGZkLWhhcy1tYXJnaW4tcmlnaHQtc21hbGxcIlxuICAgIFtuZ0NsYXNzXT1cInR5cGVDbGFzc1wiXG4gICAgcm9sZT1cImdyb3VwXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFsTGFiZWwgfHwgKCdjb3JlU3BsaXRCdXR0b24uYXJpYWxMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgIFtmZE1lbnVUcmlnZ2VyXT1cIm1lbnVcIlxuICAgIChmb2N1cyk9XCJfb25Hcm91cEZvY3VzZWQoKVwiXG4+XG4gICAgPGJ1dHRvblxuICAgICAgICBmZC1idXR0b25cbiAgICAgICAgI21haW5BY3Rpb25CdXR0b25cbiAgICAgICAgW2xhYmVsXT1cIm1haW5BY3Rpb25UaXRsZVwiXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJtYWluQnV0dG9uV2lkdGhcIlxuICAgICAgICBbZmRUeXBlXT1cImZkVHlwZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIChjbGljayk9XCJvbk1haW5CdXR0b25DbGljaygkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aXRsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAjbWVudUFjdGlvbkJ1dHRvblxuICAgICAgICBbZ2x5cGhdPVwiZ2x5cGhcIlxuICAgICAgICBbZmRUeXBlXT1cImZkVHlwZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFthcmlhTGFiZWxdPVwiZXhwYW5kQnV0dG9uQXJpYUxhYmVsIHx8ICgnY29yZVNwbGl0QnV0dG9uLmV4cGFuZEJ1dHRvbkFyaWFMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICBbYXR0ci50aXRsZV09XCJcbiAgICAgICAgICAgIGV4cGFuZEJ1dHRvblRpdGxlIHx8IGV4cGFuZEJ1dHRvbkFyaWFMYWJlbCB8fCAoJ2NvcmVTcGxpdEJ1dHRvbi5leHBhbmRCdXR0b25BcmlhTGFiZWwnIHwgZmRUcmFuc2xhdGUpXG4gICAgICAgIFwiXG4gICAgICAgIFtjbGFzcy5pcy1hY3RpdmVdPVwibWVudS5pc09wZW5cIlxuICAgID48L2J1dHRvbj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJmZC1tZW51XCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
@@ -1,6 +1,7 @@
1
1
  import { ChangeDetectionStrategy, Component, ContentChildren, Input, QueryList, ViewEncapsulation } from '@angular/core';
2
2
  import { Subject } from 'rxjs';
3
3
  import { SplitterSplitPaneComponent } from './splitter-split-pane/splitter-split-pane.component';
4
+ import { warnOnce } from '@fundamental-ngx/cdk/utils';
4
5
  import * as i0 from "@angular/core";
5
6
  export class SplitterComponent {
6
7
  constructor() {
@@ -20,7 +21,7 @@ export class SplitterComponent {
20
21
  * aria-label for the pagination item.
21
22
  */
22
23
  set paginationItemAriaLabel(value) {
23
- console.warn("Property paginationItemAriaLabel is deprecated. Use i18n capabilities 'coreSplitter.paginationItemAriaLabel' key instead.");
24
+ warnOnce("Property paginationItemAriaLabel is deprecated. Use i18n capabilities 'coreSplitter.paginationItemAriaLabel' key instead.");
24
25
  this._paginationItemAriaLabel = value;
25
26
  }
26
27
  get paginationItemAriaLabel() {
@@ -64,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
64
65
  }], paginationItemAriaLabel: [{
65
66
  type: Input
66
67
  }] } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXR0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc3BsaXR0ZXIvc3BsaXR0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc3BsaXR0ZXIvc3BsaXR0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLEtBQUssRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7O0FBVWpHLE1BQU0sT0FBTyxpQkFBaUI7SUFSOUI7UUF5Q0ksY0FBYztRQUNkLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztLQXdDM0M7SUFyRUcsMkJBQTJCO0lBQzNCLElBQ0ksYUFBYSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFFNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ0ksdUJBQXVCLENBQUMsS0FBYTtRQUNyQyxPQUFPLENBQUMsSUFBSSxDQUNSLDJIQUEySCxDQUM5SCxDQUFDO1FBQ0YsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSx1QkFBdUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUM7SUFDekMsQ0FBQztJQVdELCtDQUErQztJQUMvQyxjQUFjLENBQUMsTUFBYztRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDckIsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQztRQUVuRSxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDO0lBQ3JDLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsa0JBQWtCLENBQUMsTUFBYztRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDckIsT0FBTztTQUNWO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLENBQUM7UUFFcEUsWUFBWSxFQUFFLGNBQWMsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsZ0JBQWdCLENBQUMsTUFBYztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDckIsT0FBTztTQUNWO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLENBQUM7UUFFbEUsVUFBVSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQy9CLENBQUM7OEdBekVRLGlCQUFpQjtrR0FBakIsaUJBQWlCLG1OQUVULDBCQUEwQixnREN0Qi9DLDZCQUNBOzsyRkRtQmEsaUJBQWlCO2tCQVI3QixTQUFTOytCQUNJLGFBQWEsaUJBR1IsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6QyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7OEJBSzlCLE1BQU07c0JBREwsZUFBZTt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBSzlELGFBQWE7c0JBRGhCLEtBQUs7Z0JBZ0JGLHVCQUF1QjtzQkFEMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBJbnB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNwbGl0dGVyU3BsaXRQYW5lQ29tcG9uZW50IH0gZnJvbSAnLi9zcGxpdHRlci1zcGxpdC1wYW5lL3NwbGl0dGVyLXNwbGl0LXBhbmUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1zcGxpdHRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NwbGl0dGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zcGxpdHRlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDogeyBjbGFzczogJ2ZkLXNwbGl0dGVyJyB9XG59KVxuZXhwb3J0IGNsYXNzIFNwbGl0dGVyQ29tcG9uZW50IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oU3BsaXR0ZXJTcGxpdFBhbmVDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBfcGFuZXM6IFF1ZXJ5TGlzdDxTcGxpdHRlclNwbGl0UGFuZUNvbXBvbmVudD47XG5cbiAgICAvKiogSWQgb2YgdGhlIG1haW4gcGFuZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBkZWZhdWx0UGFuZUlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZGVmYXVsdFBhbmVJZCA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMuX2RlZmF1bHRQYW5lSWQkLm5leHQodGhpcy5fZGVmYXVsdFBhbmVJZCk7XG4gICAgfVxuXG4gICAgZ2V0IGRlZmF1bHRQYW5lSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRQYW5lSWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBhcmlhLWxhYmVsIGZvciB0aGUgcGFnaW5hdGlvbiBpdGVtLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHBhZ2luYXRpb25JdGVtQXJpYUxhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgXCJQcm9wZXJ0eSBwYWdpbmF0aW9uSXRlbUFyaWFMYWJlbCBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ2NvcmVTcGxpdHRlci5wYWdpbmF0aW9uSXRlbUFyaWFMYWJlbCcga2V5IGluc3RlYWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fcGFnaW5hdGlvbkl0ZW1BcmlhTGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgcGFnaW5hdGlvbkl0ZW1BcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhZ2luYXRpb25JdGVtQXJpYUxhYmVsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2RlZmF1bHRQYW5lSWQkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wYWdpbmF0aW9uSXRlbUFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZWZhdWx0UGFuZUlkOiBzdHJpbmc7XG5cbiAgICAvKiogQ2hlY2sgd2hldGhlciBjZXJ0YWluIHBhbmUgaXMgb24gY2FudmFzLiAqL1xuICAgIGlzUGFuZU9uQ2FudmFzKHBhbmVJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5fcGFuZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYW5lVG9DaGVjayA9IHRoaXMuX3BhbmVzLmZpbmQoKHBhbmUpID0+IHBhbmUuaWQgPT09IHBhbmVJZCk7XG5cbiAgICAgICAgcmV0dXJuICEhcGFuZVRvQ2hlY2s/LmlzT25DYW52YXM7XG4gICAgfVxuXG4gICAgLyoqIEhpZGUgY2VydGFpbiBwYW5lIGZyb20gdGhlIGNhbnZhcy4gKi9cbiAgICBoaWRlUGFuZUZyb21DYW52YXMocGFuZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9wYW5lcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhbmVUb1JlbW92ZSA9IHRoaXMuX3BhbmVzLmZpbmQoKHBhbmUpID0+IHBhbmUuaWQgPT09IHBhbmVJZCk7XG5cbiAgICAgICAgcGFuZVRvUmVtb3ZlPy5oaWRlRnJvbUNhbnZhcygpO1xuICAgIH1cblxuICAgIC8qKiBTaG93IGNlcnRhaW4gcGFuZSBmcm9tIHRoZSBjYW52YXMuICovXG4gICAgc2hvd1BhbmVPbkNhbnZhcyhwYW5lSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3BhbmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFuZVRvU2hvdyA9IHRoaXMuX3BhbmVzLmZpbmQoKHBhbmUpID0+IHBhbmUuaWQgPT09IHBhbmVJZCk7XG5cbiAgICAgICAgcGFuZVRvU2hvdz8uc2hvd09uQ2FudmFzKCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXR0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc3BsaXR0ZXIvc3BsaXR0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc3BsaXR0ZXIvc3BsaXR0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLEtBQUssRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQVV0RCxNQUFNLE9BQU8saUJBQWlCO0lBUjlCO1FBeUNJLGNBQWM7UUFDZCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7S0F3QzNDO0lBckVHLDJCQUEyQjtJQUMzQixJQUNJLGFBQWEsQ0FBQyxLQUFhO1FBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBRTVCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUNJLHVCQUF1QixDQUFDLEtBQWE7UUFDckMsUUFBUSxDQUNKLDJIQUEySCxDQUM5SCxDQUFDO1FBQ0YsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSx1QkFBdUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUM7SUFDekMsQ0FBQztJQVdELCtDQUErQztJQUMvQyxjQUFjLENBQUMsTUFBYztRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDckIsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQztRQUVuRSxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDO0lBQ3JDLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsa0JBQWtCLENBQUMsTUFBYztRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDckIsT0FBTztTQUNWO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLENBQUM7UUFFcEUsWUFBWSxFQUFFLGNBQWMsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsZ0JBQWdCLENBQUMsTUFBYztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDckIsT0FBTztTQUNWO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLENBQUM7UUFFbEUsVUFBVSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQy9CLENBQUM7OEdBekVRLGlCQUFpQjtrR0FBakIsaUJBQWlCLG1OQUVULDBCQUEwQixnREN2Qi9DLDZCQUNBOzsyRkRvQmEsaUJBQWlCO2tCQVI3QixTQUFTOytCQUNJLGFBQWEsaUJBR1IsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6QyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7OEJBSzlCLE1BQU07c0JBREwsZUFBZTt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBSzlELGFBQWE7c0JBRGhCLEtBQUs7Z0JBZ0JGLHVCQUF1QjtzQkFEMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBJbnB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNwbGl0dGVyU3BsaXRQYW5lQ29tcG9uZW50IH0gZnJvbSAnLi9zcGxpdHRlci1zcGxpdC1wYW5lL3NwbGl0dGVyLXNwbGl0LXBhbmUuY29tcG9uZW50JztcbmltcG9ydCB7IHdhcm5PbmNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXNwbGl0dGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3BsaXR0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NwbGl0dGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7IGNsYXNzOiAnZmQtc3BsaXR0ZXInIH1cbn0pXG5leHBvcnQgY2xhc3MgU3BsaXR0ZXJDb21wb25lbnQge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihTcGxpdHRlclNwbGl0UGFuZUNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIF9wYW5lczogUXVlcnlMaXN0PFNwbGl0dGVyU3BsaXRQYW5lQ29tcG9uZW50PjtcblxuICAgIC8qKiBJZCBvZiB0aGUgbWFpbiBwYW5lLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRlZmF1bHRQYW5lSWQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9kZWZhdWx0UGFuZUlkID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5fZGVmYXVsdFBhbmVJZCQubmV4dCh0aGlzLl9kZWZhdWx0UGFuZUlkKTtcbiAgICB9XG5cbiAgICBnZXQgZGVmYXVsdFBhbmVJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFBhbmVJZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIGFyaWEtbGFiZWwgZm9yIHRoZSBwYWdpbmF0aW9uIGl0ZW0uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgcGFnaW5hdGlvbkl0ZW1BcmlhTGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgIFwiUHJvcGVydHkgcGFnaW5hdGlvbkl0ZW1BcmlhTGFiZWwgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlU3BsaXR0ZXIucGFnaW5hdGlvbkl0ZW1BcmlhTGFiZWwnIGtleSBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3BhZ2luYXRpb25JdGVtQXJpYUxhYmVsID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHBhZ2luYXRpb25JdGVtQXJpYUxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYWdpbmF0aW9uSXRlbUFyaWFMYWJlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kZWZhdWx0UGFuZUlkJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcGFnaW5hdGlvbkl0ZW1BcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVmYXVsdFBhbmVJZDogc3RyaW5nO1xuXG4gICAgLyoqIENoZWNrIHdoZXRoZXIgY2VydGFpbiBwYW5lIGlzIG9uIGNhbnZhcy4gKi9cbiAgICBpc1BhbmVPbkNhbnZhcyhwYW5lSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuX3BhbmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFuZVRvQ2hlY2sgPSB0aGlzLl9wYW5lcy5maW5kKChwYW5lKSA9PiBwYW5lLmlkID09PSBwYW5lSWQpO1xuXG4gICAgICAgIHJldHVybiAhIXBhbmVUb0NoZWNrPy5pc09uQ2FudmFzO1xuICAgIH1cblxuICAgIC8qKiBIaWRlIGNlcnRhaW4gcGFuZSBmcm9tIHRoZSBjYW52YXMuICovXG4gICAgaGlkZVBhbmVGcm9tQ2FudmFzKHBhbmVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fcGFuZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYW5lVG9SZW1vdmUgPSB0aGlzLl9wYW5lcy5maW5kKChwYW5lKSA9PiBwYW5lLmlkID09PSBwYW5lSWQpO1xuXG4gICAgICAgIHBhbmVUb1JlbW92ZT8uaGlkZUZyb21DYW52YXMoKTtcbiAgICB9XG5cbiAgICAvKiogU2hvdyBjZXJ0YWluIHBhbmUgZnJvbSB0aGUgY2FudmFzLiAqL1xuICAgIHNob3dQYW5lT25DYW52YXMocGFuZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9wYW5lcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhbmVUb1Nob3cgPSB0aGlzLl9wYW5lcy5maW5kKChwYW5lKSA9PiBwYW5lLmlkID09PSBwYW5lSWQpO1xuXG4gICAgICAgIHBhbmVUb1Nob3c/LnNob3dPbkNhbnZhcygpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
@@ -3,7 +3,7 @@ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { defer, fromEvent, interval, merge, Subscription, timer } from 'rxjs';
4
4
  import { filter, switchMap, takeUntil } from 'rxjs/operators';
5
5
  import { DOWN_ARROW, ENTER, SPACE, UP_ARROW } from '@angular/cdk/keycodes';
6
- import { KeyUtil } from '@fundamental-ngx/cdk/utils';
6
+ import { KeyUtil, warnOnce } from '@fundamental-ngx/cdk/utils';
7
7
  import { LiveAnnouncer } from '@angular/cdk/a11y';
8
8
  import { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';
9
9
  import { registerFormItemControl } from '@fundamental-ngx/core/form';
@@ -22,7 +22,7 @@ export class StepInputComponent {
22
22
  * Sets Increment Button title attribute
23
23
  */
24
24
  set incrementButtonTitle(value) {
25
- console.warn("Property incrementButtonTitle is deprecated. Use i18n capabilities 'coreStepInput.incrementButtonTitle' key instead.");
25
+ warnOnce("Property incrementButtonTitle is deprecated. Use i18n capabilities 'coreStepInput.incrementButtonTitle' key instead.");
26
26
  this._incrementButtonTitle = value;
27
27
  }
28
28
  get incrementButtonTitle() {
@@ -33,7 +33,7 @@ export class StepInputComponent {
33
33
  * Sets Decrement Button title attribute
34
34
  */
35
35
  set decrementButtonTitle(value) {
36
- console.warn("Property decrementButtonTitle is deprecated. Use i18n capabilities 'coreStepInput.decrementButtonTitle' key instead.");
36
+ warnOnce("Property decrementButtonTitle is deprecated. Use i18n capabilities 'coreStepInput.decrementButtonTitle' key instead.");
37
37
  this._decrementButtonTitle = value;
38
38
  }
39
39
  get decrementButtonTitle() {
@@ -520,4 +520,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
520
520
  type: ViewChild,
521
521
  args: ['inputElement', { read: ElementRef, static: true }]
522
522
  }] } });
523
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zdGVwLWlucHV0L3N0ZXAtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc3RlcC1pbnB1dC9zdGVwLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBR1QsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0UsT0FBTyxFQUFFLE9BQU8sRUFBWSxNQUFNLDRCQUE0QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoSCxPQUFPLEVBQW1CLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEYsSUFBTyxZQUFZLEdBQUcsSUFBSSxDQUFD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QUFNOztRQU1QLCtEQUErRDtRQUMvRCxVQUFVO3NCQUZULE1BQU07Z0JBTVAsV0FBVztzQkFEVixNQUFNO2dCQUtQLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUsvQyxlQUFlO3NCQURkLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLL0MsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgaXNEZXZNb2RlLFxuICAgIExPQ0FMRV9JRCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkZWZlciwgZnJvbUV2ZW50LCBpbnRlcnZhbCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBET1dOX0FSUk9XLCBFTlRFUiwgU1BBQ0UsIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IEtleVV0aWwsIE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IExpdmVBbm5vdW5jZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU9ic2VydmVyLCBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBGb3JtSXRlbUNvbnRyb2wsIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IE51bWJlckZvcm1hdCA9IEludGwuTnVtYmVyRm9ybWF0O1xuaW1wb3J0IHsgRm9ybVN0YXRlcyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcblxubGV0IHN0ZXBJbnB1dFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1zdGVwLWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3RlcC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3RlcC1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU3RlcElucHV0Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoKSxcbiAgICAgICAgcmVnaXN0ZXJGb3JtSXRlbUNvbnRyb2woU3RlcElucHV0Q29tcG9uZW50KVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkLXN0ZXAtaW5wdXRfX2NvbnRhaW5lcicsXG4gICAgICAgICcoZm9jdXNvdXQpJzogJ2hhbmRsZUZvY3VzT3V0KCRldmVudCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTdGVwSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1JdGVtQ29udHJvbCB7XG4gICAgLyoqIFNldHMgY29tcGFjdCBtb2RlICovXG4gICAgQElucHV0KClcbiAgICBjb21wYWN0PzogYm9vbGVhbjtcblxuICAgIC8qKiBTZXRzIGNvbnRyb2wgaW4gcmVhZG9ubHkgbW9kZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZG9ubHk6IGJvb2xlYW47XG5cbiAgICAvKiogU2V0cyBjb250cm9sIGluIGRpc2FibGVkIG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgLyoqIElmIGl0IGlzIG1hbmRhdG9yeSBmaWVsZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIC8qKiBTZXRzIGxvY2FsZSB1c2VkIHRvIGZvcm1hdCBudW1lcmljIHZhbHVlICovXG4gICAgQElucHV0KClcbiAgICBsb2NhbGU6IHN0cmluZztcblxuICAgIC8qKiBTcGVjaWZpZXMgYWxnb3JpdGhtIHVzZWQgdG8gbWF0Y2ggbG9jYWxlLiBDaGVjayBJbnRsLk51bWJlckZvcm1hdCBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uICovXG4gICAgQElucHV0KClcbiAgICBsb2NhbGVNYXRjaGVyOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFNldHMgaWNvbiBkaXNwbGF5ZWQgaW4gSW5jcmVtZW50IEJ1dHRvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5jcmVtZW50QnV0dG9uSWNvbiA9ICdhZGQnO1xuXG4gICAgLyoqIFNldHMgaWNvbiBkaXNwbGF5ZWQgaW4gRGVjcmVtZW50IEJ1dHRvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGVjcmVtZW50QnV0dG9uSWNvbiA9ICdsZXNzJztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogU2V0cyBJbmNyZW1lbnQgQnV0dG9uIHRpdGxlIGF0dHJpYnV0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGluY3JlbWVudEJ1dHRvblRpdGxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgXCJQcm9wZXJ0eSBpbmNyZW1lbnRCdXR0b25UaXRsZSBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ2NvcmVTdGVwSW5wdXQuaW5jcmVtZW50QnV0dG9uVGl0bGUnIGtleSBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2luY3JlbWVudEJ1dHRvblRpdGxlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGluY3JlbWVudEJ1dHRvblRpdGxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbmNyZW1lbnRCdXR0b25UaXRsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIFNldHMgRGVjcmVtZW50IEJ1dHRvbiB0aXRsZSBhdHRyaWJ1dGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBkZWNyZW1lbnRCdXR0b25UaXRsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiUHJvcGVydHkgZGVjcmVtZW50QnV0dG9uVGl0bGUgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlU3RlcElucHV0LmRlY3JlbWVudEJ1dHRvblRpdGxlJyBrZXkgaW5zdGVhZC5cIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9kZWNyZW1lbnRCdXR0b25UaXRsZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBkZWNyZW1lbnRCdXR0b25UaXRsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVjcmVtZW50QnV0dG9uVGl0bGU7XG4gICAgfVxuXG4gICAgLyoqIFNldHMgaW5wdXQgYXJpYS1sYWJlbCBhdHRyaWJ1dGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbDogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBTZXRzIGlucHV0IGFyaWEtbGFiZWxsZWRieSBhdHRyaWJ1dGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEFyaWEgZGVmaW5lcyByb2xlIGRlc2NyaXB0aW9uIGZvciB0aGUgU3RlcCBJbnB1dC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFSb2xlRGVzY3JpcHRpb246IHN0cmluZztcblxuICAgIC8qKiBTZXRzIGlucHV0IGlkICovXG4gICAgQElucHV0KClcbiAgICBpbnB1dElkID0gYGZkLXN0ZXAtaW5wdXQtJHtzdGVwSW5wdXRVbmlxdWVJZCsrfWA7XG5cbiAgICAvKiogU2V0IGNvbnRyb2wgdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YWx1ZSh2YWx1ZTogTnVsbGFibGU8bnVtYmVyPikge1xuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gY2FzdCBudWxsIG9yIHVuZGVmaW5lZCB0byBcIm51bGxcIlxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fY2hlY2tWYWx1ZUxpbWl0cyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sYXN0RW1pdHRlZFZhbHVlID0gdGhpcy5fdmFsdWU7XG4gICAgICAgIGlmICghdGhpcy5fZmlyc3RFbWl0dGVkVmFsdWUgJiYgdGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpcnN0RW1pdHRlZFZhbHVlID0gdGhpcy5fdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX251bWJlckZvcm1hdCkge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlVmlld1ZhbHVlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQ29udHJvbCB2YWx1ZSAqL1xuICAgIGdldCB2YWx1ZSgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBTZXRzIG1pbmltdW0gdmFsdWUgYm91bmRhcnkgKi9cbiAgICBASW5wdXQoKVxuICAgIG1pbjogbnVtYmVyO1xuXG4gICAgLyoqIFNldHMgbWF4aW11bSB2YWx1ZSBib3VuZGFyeSAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWF4OiBudW1iZXI7XG5cbiAgICAvKiogU2V0cyBpbnB1dCBzdGVwIHZhbHVlICovXG4gICAgQElucHV0KClcbiAgICBzdGVwID0gMTtcblxuICAgIC8qKiBTZXRzIGlucHV0IG5hbWUgYXR0cmlidXRlICovXG4gICAgQElucHV0KClcbiAgICBuYW1lOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFNldHMgaW5wdXQgdGl0bGUgYXR0cmlidXRlICovXG4gICAgQElucHV0KClcbiAgICBpbnB1dFRpdGxlID0gJyc7XG5cbiAgICAvKiogU2V0cyBmb3JtYXR0aW5nIG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vZGU6ICdkZWNpbWFsJyB8ICdjdXJyZW5jeScgPSAnZGVjaW1hbCc7XG5cbiAgICAvKiogU2V0cyBzdGF0ZSBvZiB0aGUgY29udHJvbC4gQ2FuIGJlIGBzdWNjZXNzYCwgYGVycm9yYCwgYHdhcm5pbmdgLCBgaW5mb3JtYXRpb25gIG9yIGJsYW5rIGZvciBkZWZhdWx0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhdGU6IEZvcm1TdGF0ZXMgPSAnZGVmYXVsdCc7XG5cbiAgICAvKiogSG9sZHMgdGhlIG1lc3NhZ2Ugd2l0aCByZXNwZWN0IHRvIHN0YXRlICovXG4gICAgQElucHV0KClcbiAgICBzdGF0ZU1lc3NhZ2U6IHN0cmluZyB8IFNhZmVIdG1sO1xuXG4gICAgLyoqIEN1c3RvbSB1bml0IGRpc3BsYXllZCBhcyBhIGxhYmVsIG5leHQgdG8gdGhlIGlucHV0ICovXG4gICAgQElucHV0KClcbiAgICB1bml0OiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0byB1c2UgZ3JvdXBpbmcgd2hlbiBmb3JtYXR0aW5nIHZhbHVlICovXG4gICAgQElucHV0KClcbiAgICB1c2VHcm91cGluZyA9IHRydWU7XG5cbiAgICAvKiogRGVmaW5lcyBtaW5pbWFsIG51bWJlciBvZiBmcmFjdGlvbmFsIGRpZ2l0cyBmb3IgY29udHJvbCB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWluRnJhY3Rpb25EaWdpdHM6IG51bWJlcjtcblxuICAgIC8qKiBEZWZpbmVzIG1heGltYWwgbnVtYmVyIG9mIGZyYWN0aW9uYWwgZGlnaXRzIGZvciBjb250cm9sIHZhbHVlICovXG4gICAgQElucHV0KClcbiAgICBtYXhGcmFjdGlvbkRpZ2l0czogbnVtYmVyO1xuXG4gICAgLyoqIEN1cnJlbmN5IHVzZWQgdG8gZm9ybWF0IHZhbHVlLiBDaGVjayBJbnRsLk51bWJlckZvcm1hdCBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uKi9cbiAgICBASW5wdXQoKVxuICAgIGN1cnJlbmN5OiBzdHJpbmc7XG5cbiAgICAvKiogQ3VycmVuY3kgdXNlZCB0byBmb3JtYXQgdmFsdWUuIENoZWNrIEludGwuTnVtYmVyRm9ybWF0IGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gKi9cbiAgICBASW5wdXQoKVxuICAgIGN1cnJlbmN5RGlzcGxheTogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgU3RlcElucHV0IHNob3VsZCBkaXNwbGF5IEluY3JlYXNlL0RlY3JlYXNlIGJ1dHRvbnMgKi9cbiAgICBASW5wdXQoKVxuICAgIGhhc1N0ZXBCdXR0b25zID0gdHJ1ZTtcblxuICAgIC8qKiBIb3Jpem9udGFsbHkgYWxpZ25zIHZhbHVlIGluc2lkZSBpbnB1dCAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGV4dEFsaWduOiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCc7XG5cbiAgICAvKiogSGludCBkaXNwbGF5ZWQgaW5zaWRlIGlucHV0IGJlZm9yZSB1c2VyIHdyaXRlcyB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGxhY2Vob2xkZXIgPSAnJztcblxuICAgIC8qKiBFbWl0cyBldmVudCB3aGVuIGlucHV0IGdldHMgZm9jdXNlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIG9uRm9jdXNJbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFbWl0cyBldmVudCB3aGVuIGlucHV0IGxvc2VzIGZvY3VzICovXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgb25Gb2N1c091dCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFbWl0cyBuZXcgdmFsdWUgd2hlbiBjb250cm9sIHZhbHVlIGhhcyBjaGFuZ2VkICovXG4gICAgQE91dHB1dCgpXG4gICAgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlciB8IG51bGw+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2luY3JlbWVudEJ0bicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIGluY3JlbWVudEJ1dHRvbjogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2RlY3JlbWVudEJ0bicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIGRlY3JlbWVudEJ1dHRvbjogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBsYXN0RW1pdHRlZFZhbHVlOiBOdWxsYWJsZTxudW1iZXI+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjdXJyZW5jeVNpZ246IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZm9jdXNlZDogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9udW1lcmFsczogUmVnRXhwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZWNpbWFsU2VwYXJhdG9yOiBSZWdFeHA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2N1cnJlbmN5OiBSZWdFeHA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21pbnVzU2lnbjogUmVnRXhwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9ncm91cFNlcGFyYXRvcjogUmVnRXhwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9udW1iZXJGb3JtYXQ6IE51bWJlckZvcm1hdDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5kZXg6IGFueTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZmlyc3RFbWl0dGVkVmFsdWU6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVjcmVtZW50QnV0dG9uVGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5jcmVtZW50QnV0dG9uVGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoTE9DQUxFX0lEKSBsb2NhbGUsXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfbGl2ZUFubm91bmNlcjogTGl2ZUFubm91bmNlcixcbiAgICAgICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgICApIHtcbiAgICAgICAgdGhpcy5sb2NhbGUgPSBsb2NhbGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkNoYW5nZTogKHZhbHVlOiBOdWxsYWJsZTxudW1iZXI+KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbnVtYmVyRm9ybWF0ID0gdGhpcy5fZ2V0TnVtYmVyRm9ybWF0KCk7XG4gICAgICAgIHRoaXMuX2J1aWxkUmVnRXhwcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91cGRhdGVWaWV3VmFsdWUoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25CdXR0b25zQ2xpY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IE51bGxhYmxlPG51bWJlcj4pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGNhbkluY3JlbWVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPT0gbnVsbCB8fCB0aGlzLnZhbHVlICsgdGhpcy5zdGVwIDw9IHRoaXMuX21heDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBjYW5EZWNyZW1lbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09IG51bGwgfHwgdGhpcy52YWx1ZSAtIHRoaXMuc3RlcCA+PSB0aGlzLl9taW47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgY2FuRGlzcGxheUxhYmVsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnVuaXQgfHwgISF0aGlzLmN1cnJlbmN5U2lnbjtcbiAgICB9XG5cbiAgICAvKiogSW5jcmVtZW50IGlucHV0IHZhbHVlIGJ5IHN0ZXAgdmFsdWUgKi9cbiAgICBpbmNyZW1lbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luY3JlbWVudE9yRGVjcmVtZW50KCdpbmNyZW1lbnQnKTtcbiAgICB9XG5cbiAgICAvKiogRGVjcmVtZW50IGlucHV0IHZhbHVlIGJ5IHN0ZXAgdmFsdWUgKi9cbiAgICBkZWNyZW1lbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luY3JlbWVudE9yRGVjcmVtZW50KCdkZWNyZW1lbnQnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbXV0ZUV2ZW50ID0gKGV2bnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgICBldm50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZXZudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghdGhpcy5fY2FuQ2hhbmdlVmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVVBfQVJST1cpKSB7XG4gICAgICAgICAgICB0aGlzLmluY3JlbWVudCgpO1xuICAgICAgICAgICAgbXV0ZUV2ZW50KGV2ZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRE9XTl9BUlJPVykpIHtcbiAgICAgICAgICAgIHRoaXMuZGVjcmVtZW50KCk7XG4gICAgICAgICAgICBtdXRlRXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBoYW5kbGVGb2N1c0luKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLm9uRm9jdXNJbi5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBoYW5kbGVGb2N1c091dChldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbkZvY3VzT3V0LmVtaXQoKTtcbiAgICAgICAgaWYgKCF0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCkpIHtcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGhhbmRsZVNjcm9sbChldmVudDogV2hlZWxFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY2FuQ2hhbmdlVmFsdWUgJiYgdGhpcy5mb2N1c2VkKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuZGVsdGFZID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVjcmVtZW50KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5jcmVtZW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gVXBkYXRlcyB2aWV3VmFsdWUgYW5kIGNvbmRpdGlvbmFsbHkgZW1pdHMgbmV3IHZhbHVlLlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiAoY2hhbmdlKSBldmVudCwgd2hlbiB1c2VyIGxlYXZlcyBpbnB1dCBjb250cm9sLiAqL1xuICAgIHVwZGF0ZU9uSW5wdXRDaGFuZ2VkKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy52YWx1ZSAhPT0gdGhpcy5sYXN0RW1pdHRlZFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlZFZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdXBkYXRlVmlld1ZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gVHJhY2sgcGFyc2VkIHZhbHVlIHdoZW4gdXNlciBjaGFuZ2VzIHZhbHVlIG9mIHRoZSBpbnB1dCBjb250cm9sLiAqL1xuICAgIHRyYWNrSW5wdXRWYWx1ZShldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFZhbHVlID0gdGhpcy5fcGFyc2VWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHBhcnNlZFZhbHVlICE9IG51bGwgPyB0aGlzLl9jaGVja1ZhbHVlTGltaXRzKHBhcnNlZFZhbHVlKSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbmNyZW1lbnRPckRlY3JlbWVudChkaXJlY3Rpb246ICdpbmNyZW1lbnQnIHwgJ2RlY3JlbWVudCcpOiB2b2lkIHtcbiAgICAgICAgaWYgKChkaXJlY3Rpb24gPT09ICdpbmNyZW1lbnQnICYmIHRoaXMuY2FuSW5jcmVtZW50KSB8fCAoZGlyZWN0aW9uID09PSAnZGVjcmVtZW50JyAmJiB0aGlzLmNhbkRlY3JlbWVudCkpIHtcbiAgICAgICAgICAgIGxldCBfc2hvdWxkQ2hhbmdlID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlID09IG51bGwgJiYgdGhpcy5fZmlyc3RFbWl0dGVkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX2ZpcnN0RW1pdHRlZFZhbHVlO1xuICAgICAgICAgICAgICAgIGxldCBfbGltaXQ6IG51bWJlcjtcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPT09ICdpbmNyZW1lbnQnID8gKF9saW1pdCA9IHRoaXMubWF4KSA6IChfbGltaXQgPSB0aGlzLm1pbik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2ZpcnN0RW1pdHRlZFZhbHVlID09PSBfbGltaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBfbGltaXQ7XG4gICAgICAgICAgICAgICAgICAgIF9zaG91bGRDaGFuZ2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoX3Nob3VsZENoYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uID09PSAnaW5jcmVtZW50J1xuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLl9jdXRGbG9hdGluZ051bWJlckRpc3RvcnRpb24odGhpcy52YWx1ZSEsIHRoaXMuc3RlcClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5fY3V0RmxvYXRpbmdOdW1iZXJEaXN0b3J0aW9uKHRoaXMudmFsdWUhLCAtdGhpcy5zdGVwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFuZ2VkVmFsdWUoKTtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVZpZXdWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGdldCBfY2FuQ2hhbmdlVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jdXRGbG9hdGluZ051bWJlckRpc3RvcnRpb24odmFsdWU6IG51bWJlciwgc3RlcDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qgc3RlcERlY2ltYWxzID0gYCR7c3RlcH1gLnNwbGl0KCcuJylbMV07XG4gICAgICAgIGNvbnN0IHZhbHVlRGVjaW1hbHMgPSBgJHt2YWx1ZX1gLnNwbGl0KCcuJylbMV07XG4gICAgICAgIGNvbnN0IHN0ZXBEZWNpbWFsc0xlbmd0aCA9IHN0ZXBEZWNpbWFscyA/IHN0ZXBEZWNpbWFscy5sZW5ndGggOiAwO1xuICAgICAgICBjb25zdCB2YWx1ZURlY2ltYWxzTGVuZ3RoID0gdmFsdWVEZWNpbWFscyA/IHZhbHVlRGVjaW1hbHMubGVuZ3RoIDogMDtcbiAgICAgICAgY29uc3QgbG9uZ2VzdERlY2ltYWwgPSB2YWx1ZURlY2ltYWxzTGVuZ3RoID4gc3RlcERlY2ltYWxzTGVuZ3RoID8gdmFsdWVEZWNpbWFsc0xlbmd0aCA6IHN0ZXBEZWNpbWFsc0xlbmd0aDtcblxuICAgICAgICByZXR1cm4gTnVtYmVyKCh2YWx1ZSArIHN0ZXApLnRvRml4ZWQobG9uZ2VzdERlY2ltYWwpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NoZWNrVmFsdWVMaW1pdHModmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGlmICh2YWx1ZSA+IHRoaXMuX21heCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21heDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPCB0aGlzLl9taW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9taW47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc05hTih0aGlzLm1heEZyYWN0aW9uRGlnaXRzKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUudG9GaXhlZCh0aGlzLm1heEZyYWN0aW9uRGlnaXRzKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc05hTih0aGlzLm1pbkZyYWN0aW9uRGlnaXRzKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUudG9GaXhlZCh0aGlzLm1pbkZyYWN0aW9uRGlnaXRzKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZW1pdENoYW5nZWRWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sYXN0RW1pdHRlZFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX21heCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHRoaXMubWF4KSA/IHRoaXMubWF4IDogTnVtYmVyLk1BWF9WQUxVRTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF9taW4oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICFpc05hTih0aGlzLm1pbikgPyB0aGlzLm1pbiA6IC1OdW1iZXIuTUFYX1ZBTFVFO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlVmlld1ZhbHVlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2Zvcm1hdFRvVmlld1ZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2xpdmVBbm5vdW5jZXIuYW5ub3VuY2UodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25CdXR0b25zQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhhc1N0ZXBCdXR0b25zKSB7XG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXR1cEJ1dHRvbkxpc3RlbmVyKHRoaXMuaW5jcmVtZW50QnV0dG9uKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluY3JlbWVudCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgICAgIHRoaXMuX3NldHVwQnV0dG9uTGlzdGVuZXIodGhpcy5kZWNyZW1lbnRCdXR0b24pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVjcmVtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBMaXN0ZW5zIGZvciBjbGljayBvciBzcGFjZS9lbnRlciBrZXlkb3duIGV2ZW50cy5cbiAgICAgKlxuICAgICAqIEZvciBsb25nIGNsaWNrcyB3aWxsIGNvbnRpbnVvdXNseSBlbWl0IGV2ZW50IHVudGlsIFwibW91c2V1cFwiIGV2ZW50IGlzIGRldGVjdGVkXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2V0dXBCdXR0b25MaXN0ZW5lcihlbGVtZW50UmVmOiBFbGVtZW50UmVmKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgY29uc3Qgb25Nb3VzZURvd24kID0gZnJvbUV2ZW50KGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ21vdXNlZG93bicpO1xuICAgICAgICBjb25zdCBvbk1vdXNlVXAkID0gZnJvbUV2ZW50KHdpbmRvdywgJ21vdXNldXAnKTtcbiAgICAgICAgY29uc3Qgb25LZXlEb3duJCA9IGZyb21FdmVudDxLZXlib2FyZEV2ZW50PihlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdrZXlkb3duJykucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+IEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbU1BBQ0UsIEVOVEVSXSkpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgdGltZXJGYWN0b3J5JCA9IGRlZmVyKCgpID0+XG4gICAgICAgICAgICB0aW1lcig1MDApLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IGludGVydmFsKDQwKSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKG9uTW91c2VVcCQpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIG1lcmdlKFxuICAgICAgICAgICAgb25Nb3VzZURvd24kLFxuICAgICAgICAgICAgb25Nb3VzZURvd24kLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRpbWVyRmFjdG9yeSQpKSxcbiAgICAgICAgICAgIC8vIHdoaWxlIGtleSBpcyBwcmVzc2VkLCBldmVudCB3aWxsIGJlIGVtaXR0ZWQgY29udGludW91c2x5LCBzbyB0aGVyZSdzIG5vIG5lZWQgZm9yIHRpbWVyRmFjdG9yeSRcbiAgICAgICAgICAgIG9uS2V5RG93biRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3BhcnNlVmFsdWUodGV4dDogc3RyaW5nKTogTnVsbGFibGU8bnVtYmVyPiB7XG4gICAgICAgIGNvbnN0IHRyaW1tZWRUZXh0ID0gdGV4dC50cmltKCk7XG5cbiAgICAgICAgaWYgKHRyaW1tZWRUZXh0ID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWx0ZXJlZFRleHQgPSB0cmltbWVkVGV4dFxuICAgICAgICAgICAgLnJlcGxhY2UoL1xccy9nLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKHRoaXMuX2N1cnJlbmN5LCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKHRoaXMuX2dyb3VwU2VwYXJhdG9yLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKHRoaXMuX21pbnVzU2lnbiwgJy0nKVxuICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fZGVjaW1hbFNlcGFyYXRvciwgJy4nKVxuICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fbnVtZXJhbHMsIHRoaXMuX2luZGV4KTtcblxuICAgICAgICBpZiAoZmlsdGVyZWRUZXh0KSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IE51bWJlcihmaWx0ZXJlZFRleHQpO1xuICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHBhcnNlZFZhbHVlKSA/IHRoaXMubGFzdEVtaXR0ZWRWYWx1ZSA6IHBhcnNlZFZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXROdW1iZXJGb3JtYXQoKTogTnVtYmVyRm9ybWF0IHtcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpICYmIHRoaXMubWluRnJhY3Rpb25EaWdpdHMgPiB0aGlzLm1heEZyYWN0aW9uRGlnaXRzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSYW5nZSBlcnJvciAtIG1pbkZyYWN0aW9uRGlnaXRzIGNhbid0IGJlIGJpZ2dlciB0aGFuIG1heEZyYWN0aW9uRGlnaXRzXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBOdW1iZXJGb3JtYXQodGhpcy5sb2NhbGUsIHtcbiAgICAgICAgICAgIGxvY2FsZU1hdGNoZXI6IHRoaXMubG9jYWxlTWF0Y2hlciA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICBzdHlsZTogdGhpcy5tb2RlLFxuICAgICAgICAgICAgY3VycmVuY3k6IHRoaXMuY3VycmVuY3ksXG4gICAgICAgICAgICAvLyBvbmx5IGF2YWlsYWJsZSBpbiBFUzIwMjAgYW5kIGxhdGVyXG4gICAgICAgICAgICBbJ2N1cnJlbmN5RGlzcGxheScgYXMgYW55XTogdGhpcy5jdXJyZW5jeURpc3BsYXksXG4gICAgICAgICAgICB1c2VHcm91cGluZzogdGhpcy51c2VHcm91cGluZyxcbiAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogdGhpcy5taW5GcmFjdGlvbkRpZ2l0cyxcbiAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogdGhpcy5tYXhGcmFjdGlvbkRpZ2l0c1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldE51bWVyYWxzRXhwcmVzc2lvbnMoKTogUmVnRXhwIHtcbiAgICAgICAgY29uc3QgbnVtZXJhbHMgPSBbXG4gICAgICAgICAgICAuLi5uZXcgTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KS5mb3JtYXQoOTg3NjU0MzIxMCkuc3BsaXQoJycpXG4gICAgICAgIF0ucmV2ZXJzZSgpO1xuICAgICAgICBjb25zdCBpbmRleCA9IG5ldyBNYXAobnVtZXJhbHMubWFwKChkLCBpKSA9PiBbZCwgaV0pKTtcbiAgICAgICAgdGhpcy5faW5kZXggPSAoZCkgPT4gaW5kZXguZ2V0KGQpO1xuXG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKGBbJHtudW1lcmFscy5qb2luKCcnKX1dYCwgJ2cnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldERlY2ltYWxTZXBhcmF0b3IoKTogUmVnRXhwIHtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IE51bWJlckZvcm1hdCh0aGlzLmxvY2FsZSwgeyB1c2VHcm91cGluZzogZmFsc2UgfSk7XG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKGBbJHtmb3JtYXR0ZXIuZm9ybWF0KDEuMSkudHJpbSgpLnJlcGxhY2UodGhpcy5fbnVtZXJhbHMsICcnKX1dYCwgJ2cnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEdyb3VwaW5nU2VwYXJhdG9yKCk6IFJlZ0V4cCB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBOdW1iZXJGb3JtYXQodGhpcy5sb2NhbGUsIHsgdXNlR3JvdXBpbmc6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKGBbJHtmb3JtYXR0ZXIuZm9ybWF0KDEwMDApLnRyaW0oKS5yZXBsYWNlKHRoaXMuX251bWVyYWxzLCAnJyl9XWAsICdnJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRNaW51c1NpZ25FeHByZXNzaW9uKCk6IFJlZ0V4cCB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBOdW1iZXJGb3JtYXQodGhpcy5sb2NhbGUsIHsgdXNlR3JvdXBpbmc6IGZhbHNlIH0pO1xuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgWyR7Zm9ybWF0dGVyLmZvcm1hdCgtMSkudHJpbSgpLnJlcGxhY2UodGhpcy5fbnVtZXJhbHMsICcnKX1dYCwgJ2cnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEN1cnJlbmN5RXhwcmVzc2lvbigpOiBSZWdFeHAge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW5jeSkge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IE51bWJlckZvcm1hdCh0aGlzLmxvY2FsZSwge1xuICAgICAgICAgICAgICAgIHN0eWxlOiAnY3VycmVuY3knLFxuICAgICAgICAgICAgICAgIGN1cnJlbmN5OiB0aGlzLmN1cnJlbmN5LFxuICAgICAgICAgICAgICAgIC8vIG9ubHkgYXZhaWxhYmxlIGluIEVTMjAyMCBhbmQgbGF0ZXJcbiAgICAgICAgICAgICAgICBbJ2N1cnJlbmN5RGlzcGxheScgYXMgYW55XTogdGhpcy5jdXJyZW5jeURpc3BsYXlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeVNpZ24gPSBgJHtmb3JtYXR0ZXJcbiAgICAgICAgICAgICAgICAuZm9ybWF0KDEpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xccy9nLCAnJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSh0aGlzLl9udW1lcmFscywgJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fZGVjaW1hbFNlcGFyYXRvciwgJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fZ3JvdXBTZXBhcmF0b3IsICcnKX1gO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgWyR7dGhpcy5jdXJyZW5jeVNpZ259XWAsICdnJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgW11gLCAnZycpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYnVpbGRSZWdFeHBzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9udW1lcmFscyA9IHRoaXMuX2dldE51bWVyYWxzRXhwcmVzc2lvbnMoKTtcbiAgICAgICAgdGhpcy5fZGVjaW1hbFNlcGFyYXRvciA9IHRoaXMuX2dldERlY2ltYWxTZXBhcmF0b3IoKTtcbiAgICAgICAgdGhpcy5fbWludXNTaWduID0gdGhpcy5fZ2V0TWludXNTaWduRXhwcmVzc2lvbigpO1xuICAgICAgICB0aGlzLl9ncm91cFNlcGFyYXRvciA9IHRoaXMuX2dldEdyb3VwaW5nU2VwYXJhdG9yKCk7XG4gICAgICAgIHRoaXMuX2N1cnJlbmN5ID0gdGhpcy5fZ2V0Q3VycmVuY3lFeHByZXNzaW9uKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mb3JtYXRUb1ZpZXdWYWx1ZShudW1iZXI6IE51bGxhYmxlPG51bWJlcj4pOiBzdHJpbmcge1xuICAgICAgICBpZiAobnVtYmVyID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbmN5XG4gICAgICAgICAgICAgICAgPyB0aGlzLl9udW1iZXJGb3JtYXQuZm9ybWF0KG51bWJlcikucmVwbGFjZSh0aGlzLl9jdXJyZW5jeSwgJycpXG4gICAgICAgICAgICAgICAgOiB0aGlzLl9udW1iZXJGb3JtYXQuZm9ybWF0KG51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZmQtZm9ybS1pbnB1dC1tZXNzYWdlLWdyb3VwPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmZC1zdGVwLWlucHV0XCJcbiAgICAgICAgW2NsYXNzXT1cInN0YXRlID8gJ2lzLScgKyBzdGF0ZSA6ICcnXCJcbiAgICAgICAgW2NsYXNzLmlzLWZvY3VzXT1cImZvY3VzZWRcIlxuICAgICAgICBbY2xhc3MuaXMtcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICBbY2xhc3MuaXMtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbY2xhc3MuZmQtc3RlcC1pbnB1dC0td2l0aG91dC1idXR0b25zXT1cIiFoYXNTdGVwQnV0dG9uc1wiXG4gICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImhhc1N0ZXBCdXR0b25zXCJcbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgI2RlY3JlbWVudEJ0blxuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmZC1zdGVwLWlucHV0X19idXR0b25cIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuRGVjcmVtZW50XCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJkZWNyZW1lbnRCdXR0b25UaXRsZSB8fCAoJ2NvcmVTdGVwSW5wdXQuZGVjcmVtZW50QnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIFtnbHlwaF09XCJkZWNyZW1lbnRCdXR0b25JY29uXCJcbiAgICAgICAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZGVjcmVtZW50QnV0dG9uVGl0bGUgfHwgKCdjb3JlU3RlcElucHV0LmRlY3JlbWVudEJ1dHRvblRpdGxlJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImlucHV0SWRcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2lucHV0RWxlbWVudFxuICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgICAgICBbaWRdPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiaW5wdXRUaXRsZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJ2YWx1ZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cIm1heFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWluXT1cIm1pblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImNhbkRpc3BsYXlMYWJlbCA/IGlucHV0SWQgKyAnX19kZXNjcmlwdGlvbicgOiAnJ1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtcm9sZWRlc2NyaXB0aW9uXT1cImFyaWFSb2xlRGVzY3JpcHRpb24gfHwgKCdjb3JlU3RlcElucHV0LmFyaWFSb2xlRGVzY3JpcHRpb24nIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIChmb2N1c2luKT1cImhhbmRsZUZvY3VzSW4oKVwiXG4gICAgICAgICAgICAod2hlZWwpPVwiaGFuZGxlU2Nyb2xsKCRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwiaGFuZGxlS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJ0cmFja0lucHV0VmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZU9uSW5wdXRDaGFuZ2VkKClcIlxuICAgICAgICAgICAgW3N0eWxlLnRleHRBbGlnbl09XCJ0ZXh0QWxpZ25cIlxuICAgICAgICAgICAgY2xhc3M9XCJmZC1pbnB1dCBmZC1pbnB1dC0tbm8tbnVtYmVyLXNwaW5uZXIgZmQtc3RlcC1pbnB1dF9faW5wdXRcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgIC8+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiaGFzU3RlcEJ1dHRvbnNcIlxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAjaW5jcmVtZW50QnRuXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLXN0ZXAtaW5wdXRfX2J1dHRvblwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5JbmNyZW1lbnRcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImluY3JlbWVudEJ1dHRvblRpdGxlIHx8ICgnY29yZVN0ZXBJbnB1dC5pbmNyZW1lbnRCdXR0b25UaXRsZScgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgW2dseXBoXT1cImluY3JlbWVudEJ1dHRvbkljb25cIlxuICAgICAgICAgICAgKGJsdXIpPVwib25Ub3VjaGVkKClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpbmNyZW1lbnRCdXR0b25UaXRsZSB8fCAoJ2NvcmVTdGVwSW5wdXQuaW5jcmVtZW50QnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaW5wdXRJZFwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxmZC1mb3JtLW1lc3NhZ2UgKm5nSWY9XCIhIXN0YXRlTWVzc2FnZVwiIFt0eXBlXT1cInN0YXRlXCIgW2lubmVySFRNTF09XCJzdGF0ZU1lc3NhZ2VcIj48L2ZkLWZvcm0tbWVzc2FnZT5cbjwvZmQtZm9ybS1pbnB1dC1tZXNzYWdlLWdyb3VwPlxuXG48c3BhbiAqbmdJZj1cImNhbkRpc3BsYXlMYWJlbFwiIFtpZF09XCJpbnB1dElkICsgJ19fZGVzY3JpcHRpb24nXCIgY2xhc3M9XCJmZC1mb3JtLWxhYmVsIGZkLWZvcm0tbGFiZWwtLXVuaXQtZGVzY3JpcHRpb25cIj5cbiAgICB7eyB1bml0IHx8IGN1cnJlbmN5U2lnbiB9fVxuPC9zcGFuPlxuIl19
523
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zdGVwLWlucHV0L3N0ZXAtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc3RlcC1pbnB1dC9zdGVwLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBR1QsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0UsT0FBTyxFQUFFLE9BQU8sRUFBWSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEgsT0FBTyxFQUFtQix1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RGLElBQU8sWUFBWSxHQUFH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K0RBQStEO1FBQy9ELFVBQVU7c0JBRlQsTUFBTTtnQkFNUCxXQUFXO3NCQURWLE1BQU07Z0JBS1AsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSy9DLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUsvQyxZQUFZO3NCQURYLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBpc0Rldk1vZGUsXG4gICAgTE9DQUxFX0lELFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlZmVyLCBmcm9tRXZlbnQsIGludGVydmFsLCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERPV05fQVJST1csIEVOVEVSLCBTUEFDRSwgVVBfQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgS2V5VXRpbCwgTnVsbGFibGUsIHdhcm5PbmNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IExpdmVBbm5vdW5jZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU9ic2VydmVyLCBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBGb3JtSXRlbUNvbnRyb2wsIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IE51bWJlckZvcm1hdCA9IEludGwuTnVtYmVyRm9ybWF0O1xuaW1wb3J0IHsgRm9ybVN0YXRlcyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcblxubGV0IHN0ZXBJbnB1dFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1zdGVwLWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3RlcC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3RlcC1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU3RlcElucHV0Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoKSxcbiAgICAgICAgcmVnaXN0ZXJGb3JtSXRlbUNvbnRyb2woU3RlcElucHV0Q29tcG9uZW50KVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkLXN0ZXAtaW5wdXRfX2NvbnRhaW5lcicsXG4gICAgICAgICcoZm9jdXNvdXQpJzogJ2hhbmRsZUZvY3VzT3V0KCRldmVudCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTdGVwSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1JdGVtQ29udHJvbCB7XG4gICAgLyoqIFNldHMgY29tcGFjdCBtb2RlICovXG4gICAgQElucHV0KClcbiAgICBjb21wYWN0PzogYm9vbGVhbjtcblxuICAgIC8qKiBTZXRzIGNvbnRyb2wgaW4gcmVhZG9ubHkgbW9kZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZG9ubHk6IGJvb2xlYW47XG5cbiAgICAvKiogU2V0cyBjb250cm9sIGluIGRpc2FibGVkIG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgLyoqIElmIGl0IGlzIG1hbmRhdG9yeSBmaWVsZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIC8qKiBTZXRzIGxvY2FsZSB1c2VkIHRvIGZvcm1hdCBudW1lcmljIHZhbHVlICovXG4gICAgQElucHV0KClcbiAgICBsb2NhbGU6IHN0cmluZztcblxuICAgIC8qKiBTcGVjaWZpZXMgYWxnb3JpdGhtIHVzZWQgdG8gbWF0Y2ggbG9jYWxlLiBDaGVjayBJbnRsLk51bWJlckZvcm1hdCBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uICovXG4gICAgQElucHV0KClcbiAgICBsb2NhbGVNYXRjaGVyOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFNldHMgaWNvbiBkaXNwbGF5ZWQgaW4gSW5jcmVtZW50IEJ1dHRvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5jcmVtZW50QnV0dG9uSWNvbiA9ICdhZGQnO1xuXG4gICAgLyoqIFNldHMgaWNvbiBkaXNwbGF5ZWQgaW4gRGVjcmVtZW50IEJ1dHRvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGVjcmVtZW50QnV0dG9uSWNvbiA9ICdsZXNzJztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogU2V0cyBJbmNyZW1lbnQgQnV0dG9uIHRpdGxlIGF0dHJpYnV0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGluY3JlbWVudEJ1dHRvblRpdGxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICBcIlByb3BlcnR5IGluY3JlbWVudEJ1dHRvblRpdGxlIGlzIGRlcHJlY2F0ZWQuIFVzZSBpMThuIGNhcGFiaWxpdGllcyAnY29yZVN0ZXBJbnB1dC5pbmNyZW1lbnRCdXR0b25UaXRsZScga2V5IGluc3RlYWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5faW5jcmVtZW50QnV0dG9uVGl0bGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgaW5jcmVtZW50QnV0dG9uVGl0bGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luY3JlbWVudEJ1dHRvblRpdGxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogU2V0cyBEZWNyZW1lbnQgQnV0dG9uIHRpdGxlIGF0dHJpYnV0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRlY3JlbWVudEJ1dHRvblRpdGxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICBcIlByb3BlcnR5IGRlY3JlbWVudEJ1dHRvblRpdGxlIGlzIGRlcHJlY2F0ZWQuIFVzZSBpMThuIGNhcGFiaWxpdGllcyAnY29yZVN0ZXBJbnB1dC5kZWNyZW1lbnRCdXR0b25UaXRsZScga2V5IGluc3RlYWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fZGVjcmVtZW50QnV0dG9uVGl0bGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgZGVjcmVtZW50QnV0dG9uVGl0bGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlY3JlbWVudEJ1dHRvblRpdGxlO1xuICAgIH1cblxuICAgIC8qKiBTZXRzIGlucHV0IGFyaWEtbGFiZWwgYXR0cmlidXRlICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogU2V0cyBpbnB1dCBhcmlhLWxhYmVsbGVkYnkgYXR0cmlidXRlICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWxsZWRCeTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBBcmlhIGRlZmluZXMgcm9sZSBkZXNjcmlwdGlvbiBmb3IgdGhlIFN0ZXAgSW5wdXQuICovXG4gICAgQElucHV0KClcbiAgICBhcmlhUm9sZURlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgICAvKiogU2V0cyBpbnB1dCBpZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5wdXRJZCA9IGBmZC1zdGVwLWlucHV0LSR7c3RlcElucHV0VW5pcXVlSWQrK31gO1xuXG4gICAgLyoqIFNldCBjb250cm9sIHZhbHVlICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdmFsdWUodmFsdWU6IE51bGxhYmxlPG51bWJlcj4pIHtcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIGNhc3QgbnVsbCBvciB1bmRlZmluZWQgdG8gXCJudWxsXCJcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmICghaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX2NoZWNrVmFsdWVMaW1pdHModmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGFzdEVtaXR0ZWRWYWx1ZSA9IHRoaXMuX3ZhbHVlO1xuICAgICAgICBpZiAoIXRoaXMuX2ZpcnN0RW1pdHRlZFZhbHVlICYmIHRoaXMuX3ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9maXJzdEVtaXR0ZWRWYWx1ZSA9IHRoaXMuX3ZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9udW1iZXJGb3JtYXQpIHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVZpZXdWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENvbnRyb2wgdmFsdWUgKi9cbiAgICBnZXQgdmFsdWUoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogU2V0cyBtaW5pbXVtIHZhbHVlIGJvdW5kYXJ5ICovXG4gICAgQElucHV0KClcbiAgICBtaW46IG51bWJlcjtcblxuICAgIC8qKiBTZXRzIG1heGltdW0gdmFsdWUgYm91bmRhcnkgKi9cbiAgICBASW5wdXQoKVxuICAgIG1heDogbnVtYmVyO1xuXG4gICAgLyoqIFNldHMgaW5wdXQgc3RlcCB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RlcCA9IDE7XG5cbiAgICAvKiogU2V0cyBpbnB1dCBuYW1lIGF0dHJpYnV0ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmFtZTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBTZXRzIGlucHV0IHRpdGxlIGF0dHJpYnV0ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5wdXRUaXRsZSA9ICcnO1xuXG4gICAgLyoqIFNldHMgZm9ybWF0dGluZyBtb2RlICovXG4gICAgQElucHV0KClcbiAgICBtb2RlOiAnZGVjaW1hbCcgfCAnY3VycmVuY3knID0gJ2RlY2ltYWwnO1xuXG4gICAgLyoqIFNldHMgc3RhdGUgb2YgdGhlIGNvbnRyb2wuIENhbiBiZSBgc3VjY2Vzc2AsIGBlcnJvcmAsIGB3YXJuaW5nYCwgYGluZm9ybWF0aW9uYCBvciBibGFuayBmb3IgZGVmYXVsdC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHN0YXRlOiBGb3JtU3RhdGVzID0gJ2RlZmF1bHQnO1xuXG4gICAgLyoqIEhvbGRzIHRoZSBtZXNzYWdlIHdpdGggcmVzcGVjdCB0byBzdGF0ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhdGVNZXNzYWdlOiBzdHJpbmcgfCBTYWZlSHRtbDtcblxuICAgIC8qKiBDdXN0b20gdW5pdCBkaXNwbGF5ZWQgYXMgYSBsYWJlbCBuZXh0IHRvIHRoZSBpbnB1dCAqL1xuICAgIEBJbnB1dCgpXG4gICAgdW5pdDogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gdXNlIGdyb3VwaW5nIHdoZW4gZm9ybWF0dGluZyB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgdXNlR3JvdXBpbmcgPSB0cnVlO1xuXG4gICAgLyoqIERlZmluZXMgbWluaW1hbCBudW1iZXIgb2YgZnJhY3Rpb25hbCBkaWdpdHMgZm9yIGNvbnRyb2wgdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIG1pbkZyYWN0aW9uRGlnaXRzOiBudW1iZXI7XG5cbiAgICAvKiogRGVmaW5lcyBtYXhpbWFsIG51bWJlciBvZiBmcmFjdGlvbmFsIGRpZ2l0cyBmb3IgY29udHJvbCB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWF4RnJhY3Rpb25EaWdpdHM6IG51bWJlcjtcblxuICAgIC8qKiBDdXJyZW5jeSB1c2VkIHRvIGZvcm1hdCB2YWx1ZS4gQ2hlY2sgSW50bC5OdW1iZXJGb3JtYXQgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiovXG4gICAgQElucHV0KClcbiAgICBjdXJyZW5jeTogc3RyaW5nO1xuXG4gICAgLyoqIEN1cnJlbmN5IHVzZWQgdG8gZm9ybWF0IHZhbHVlLiBDaGVjayBJbnRsLk51bWJlckZvcm1hdCBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uICovXG4gICAgQElucHV0KClcbiAgICBjdXJyZW5jeURpc3BsYXk6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIFN0ZXBJbnB1dCBzaG91bGQgZGlzcGxheSBJbmNyZWFzZS9EZWNyZWFzZSBidXR0b25zICovXG4gICAgQElucHV0KClcbiAgICBoYXNTdGVwQnV0dG9ucyA9IHRydWU7XG5cbiAgICAvKiogSG9yaXpvbnRhbGx5IGFsaWducyB2YWx1ZSBpbnNpZGUgaW5wdXQgKi9cbiAgICBASW5wdXQoKVxuICAgIHRleHRBbGlnbjogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnO1xuXG4gICAgLyoqIEhpbnQgZGlzcGxheWVkIGluc2lkZSBpbnB1dCBiZWZvcmUgdXNlciB3cml0ZXMgdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIHBsYWNlaG9sZGVyID0gJyc7XG5cbiAgICAvKiogRW1pdHMgZXZlbnQgd2hlbiBpbnB1dCBnZXRzIGZvY3VzZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBvbkZvY3VzSW4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRW1pdHMgZXZlbnQgd2hlbiBpbnB1dCBsb3NlcyBmb2N1cyAqL1xuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIG9uRm9jdXNPdXQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRW1pdHMgbmV3IHZhbHVlIHdoZW4gY29udHJvbCB2YWx1ZSBoYXMgY2hhbmdlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXIgfCBudWxsPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdpbmNyZW1lbnRCdG4nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBpbmNyZW1lbnRCdXR0b246IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdkZWNyZW1lbnRCdG4nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBkZWNyZW1lbnRCdXR0b246IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdpbnB1dEVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbGFzdEVtaXR0ZWRWYWx1ZTogTnVsbGFibGU8bnVtYmVyPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY3VycmVuY3lTaWduOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGZvY3VzZWQ6IGJvb2xlYW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbnVtZXJhbHM6IFJlZ0V4cDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVjaW1hbFNlcGFyYXRvcjogUmVnRXhwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jdXJyZW5jeTogUmVnRXhwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9taW51c1NpZ246IFJlZ0V4cDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ3JvdXBTZXBhcmF0b3I6IFJlZ0V4cDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbnVtYmVyRm9ybWF0OiBOdW1iZXJGb3JtYXQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luZGV4OiBhbnk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZpcnN0RW1pdHRlZFZhbHVlOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RlY3JlbWVudEJ1dHRvblRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luY3JlbWVudEJ1dHRvblRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KExPQ0FMRV9JRCkgbG9jYWxlLFxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2xpdmVBbm5vdW5jZXI6IExpdmVBbm5vdW5jZXIsXG4gICAgICAgIHJlYWRvbmx5IF9jb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmXG4gICAgKSB7XG4gICAgICAgIHRoaXMubG9jYWxlID0gbG9jYWxlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogTnVsbGFibGU8bnVtYmVyPikgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX251bWJlckZvcm1hdCA9IHRoaXMuX2dldE51bWJlckZvcm1hdCgpO1xuICAgICAgICB0aGlzLl9idWlsZFJlZ0V4cHMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlVmlld1ZhbHVlKCk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uQnV0dG9uc0NsaWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBOdWxsYWJsZTxudW1iZXI+KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBjYW5JbmNyZW1lbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09IG51bGwgfHwgdGhpcy52YWx1ZSArIHRoaXMuc3RlcCA8PSB0aGlzLl9tYXg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgY2FuRGVjcmVtZW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PSBudWxsIHx8IHRoaXMudmFsdWUgLSB0aGlzLnN0ZXAgPj0gdGhpcy5fbWluO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGNhbkRpc3BsYXlMYWJlbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy51bml0IHx8ICEhdGhpcy5jdXJyZW5jeVNpZ247XG4gICAgfVxuXG4gICAgLyoqIEluY3JlbWVudCBpbnB1dCB2YWx1ZSBieSBzdGVwIHZhbHVlICovXG4gICAgaW5jcmVtZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbmNyZW1lbnRPckRlY3JlbWVudCgnaW5jcmVtZW50Jyk7XG4gICAgfVxuXG4gICAgLyoqIERlY3JlbWVudCBpbnB1dCB2YWx1ZSBieSBzdGVwIHZhbHVlICovXG4gICAgZGVjcmVtZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbmNyZW1lbnRPckRlY3JlbWVudCgnZGVjcmVtZW50Jyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG11dGVFdmVudCA9IChldm50OiBFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgZXZudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGV2bnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoIXRoaXMuX2NhbkNoYW5nZVZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFVQX0FSUk9XKSkge1xuICAgICAgICAgICAgdGhpcy5pbmNyZW1lbnQoKTtcbiAgICAgICAgICAgIG11dGVFdmVudChldmVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIERPV05fQVJST1cpKSB7XG4gICAgICAgICAgICB0aGlzLmRlY3JlbWVudCgpO1xuICAgICAgICAgICAgbXV0ZUV2ZW50KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaGFuZGxlRm9jdXNJbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vbkZvY3VzSW4uZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaGFuZGxlRm9jdXNPdXQoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25Gb2N1c091dC5lbWl0KCk7XG4gICAgICAgIGlmICghdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpKSB7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBoYW5kbGVTY3JvbGwoZXZlbnQ6IFdoZWVsRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2NhbkNoYW5nZVZhbHVlICYmIHRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgaWYgKGV2ZW50LmRlbHRhWSA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlY3JlbWVudCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluY3JlbWVudCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFVwZGF0ZXMgdmlld1ZhbHVlIGFuZCBjb25kaXRpb25hbGx5IGVtaXRzIG5ldyB2YWx1ZS5cbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gKGNoYW5nZSkgZXZlbnQsIHdoZW4gdXNlciBsZWF2ZXMgaW5wdXQgY29udHJvbC4gKi9cbiAgICB1cGRhdGVPbklucHV0Q2hhbmdlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgIT09IHRoaXMubGFzdEVtaXR0ZWRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYW5nZWRWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3VwZGF0ZVZpZXdWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFRyYWNrIHBhcnNlZCB2YWx1ZSB3aGVuIHVzZXIgY2hhbmdlcyB2YWx1ZSBvZiB0aGUgaW5wdXQgY29udHJvbC4gKi9cbiAgICB0cmFja0lucHV0VmFsdWUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IHRoaXMuX3BhcnNlVmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBwYXJzZWRWYWx1ZSAhPSBudWxsID8gdGhpcy5fY2hlY2tWYWx1ZUxpbWl0cyhwYXJzZWRWYWx1ZSkgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5jcmVtZW50T3JEZWNyZW1lbnQoZGlyZWN0aW9uOiAnaW5jcmVtZW50JyB8ICdkZWNyZW1lbnQnKTogdm9pZCB7XG4gICAgICAgIGlmICgoZGlyZWN0aW9uID09PSAnaW5jcmVtZW50JyAmJiB0aGlzLmNhbkluY3JlbWVudCkgfHwgKGRpcmVjdGlvbiA9PT0gJ2RlY3JlbWVudCcgJiYgdGhpcy5jYW5EZWNyZW1lbnQpKSB7XG4gICAgICAgICAgICBsZXQgX3Nob3VsZENoYW5nZSA9IHRydWU7XG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZSA9PSBudWxsICYmIHRoaXMuX2ZpcnN0RW1pdHRlZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLl9maXJzdEVtaXR0ZWRWYWx1ZTtcbiAgICAgICAgICAgICAgICBsZXQgX2xpbWl0OiBudW1iZXI7XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uID09PSAnaW5jcmVtZW50JyA/IChfbGltaXQgPSB0aGlzLm1heCkgOiAoX2xpbWl0ID0gdGhpcy5taW4pO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9maXJzdEVtaXR0ZWRWYWx1ZSA9PT0gX2xpbWl0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gX2xpbWl0O1xuICAgICAgICAgICAgICAgICAgICBfc2hvdWxkQ2hhbmdlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKF9zaG91bGRDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9PT0gJ2luY3JlbWVudCdcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5fY3V0RmxvYXRpbmdOdW1iZXJEaXN0b3J0aW9uKHRoaXMudmFsdWUhLCB0aGlzLnN0ZXApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2N1dEZsb2F0aW5nTnVtYmVyRGlzdG9ydGlvbih0aGlzLnZhbHVlISwgLXRoaXMuc3RlcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlZFZhbHVlKCk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVWaWV3VmFsdWUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX2NhbkNoYW5nZVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3V0RmxvYXRpbmdOdW1iZXJEaXN0b3J0aW9uKHZhbHVlOiBudW1iZXIsIHN0ZXA6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHN0ZXBEZWNpbWFscyA9IGAke3N0ZXB9YC5zcGxpdCgnLicpWzFdO1xuICAgICAgICBjb25zdCB2YWx1ZURlY2ltYWxzID0gYCR7dmFsdWV9YC5zcGxpdCgnLicpWzFdO1xuICAgICAgICBjb25zdCBzdGVwRGVjaW1hbHNMZW5ndGggPSBzdGVwRGVjaW1hbHMgPyBzdGVwRGVjaW1hbHMubGVuZ3RoIDogMDtcbiAgICAgICAgY29uc3QgdmFsdWVEZWNpbWFsc0xlbmd0aCA9IHZhbHVlRGVjaW1hbHMgPyB2YWx1ZURlY2ltYWxzLmxlbmd0aCA6IDA7XG4gICAgICAgIGNvbnN0IGxvbmdlc3REZWNpbWFsID0gdmFsdWVEZWNpbWFsc0xlbmd0aCA+IHN0ZXBEZWNpbWFsc0xlbmd0aCA/IHZhbHVlRGVjaW1hbHNMZW5ndGggOiBzdGVwRGVjaW1hbHNMZW5ndGg7XG5cbiAgICAgICAgcmV0dXJuIE51bWJlcigodmFsdWUgKyBzdGVwKS50b0ZpeGVkKGxvbmdlc3REZWNpbWFsKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jaGVja1ZhbHVlTGltaXRzKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodmFsdWUgPiB0aGlzLl9tYXgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tYXg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlIDwgdGhpcy5fbWluKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbWluO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNOYU4odGhpcy5tYXhGcmFjdGlvbkRpZ2l0cykpIHtcbiAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlLnRvRml4ZWQodGhpcy5tYXhGcmFjdGlvbkRpZ2l0cykpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNOYU4odGhpcy5taW5GcmFjdGlvbkRpZ2l0cykpIHtcbiAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlLnRvRml4ZWQodGhpcy5taW5GcmFjdGlvbkRpZ2l0cykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VtaXRDaGFuZ2VkVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubGFzdEVtaXR0ZWRWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF9tYXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICFpc05hTih0aGlzLm1heCkgPyB0aGlzLm1heCA6IE51bWJlci5NQVhfVkFMVUU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGdldCBfbWluKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAhaXNOYU4odGhpcy5taW4pID8gdGhpcy5taW4gOiAtTnVtYmVyLk1BWF9WQUxVRTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZVZpZXdWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLl9mb3JtYXRUb1ZpZXdWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9saXZlQW5ub3VuY2VyLmFubm91bmNlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uQnV0dG9uc0NsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5oYXNTdGVwQnV0dG9ucykge1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0dXBCdXR0b25MaXN0ZW5lcih0aGlzLmluY3JlbWVudEJ1dHRvbikuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmNyZW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXR1cEJ1dHRvbkxpc3RlbmVyKHRoaXMuZGVjcmVtZW50QnV0dG9uKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlY3JlbWVudCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTGlzdGVucyBmb3IgY2xpY2sgb3Igc3BhY2UvZW50ZXIga2V5ZG93biBldmVudHMuXG4gICAgICpcbiAgICAgKiBGb3IgbG9uZyBjbGlja3Mgd2lsbCBjb250aW51b3VzbHkgZW1pdCBldmVudCB1bnRpbCBcIm1vdXNldXBcIiBldmVudCBpcyBkZXRlY3RlZFxuICAgICAqL1xuICAgIHByaXZhdGUgX3NldHVwQnV0dG9uTGlzdGVuZXIoZWxlbWVudFJlZjogRWxlbWVudFJlZik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGNvbnN0IG9uTW91c2VEb3duJCA9IGZyb21FdmVudChlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWRvd24nKTtcbiAgICAgICAgY29uc3Qgb25Nb3VzZVVwJCA9IGZyb21FdmVudCh3aW5kb3csICdtb3VzZXVwJyk7XG4gICAgICAgIGNvbnN0IG9uS2V5RG93biQgPSBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAna2V5ZG93bicpLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW1NQQUNFLCBFTlRFUl0pKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHRpbWVyRmFjdG9yeSQgPSBkZWZlcigoKSA9PlxuICAgICAgICAgICAgdGltZXIoNTAwKS5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiBpbnRlcnZhbCg0MCkpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbChvbk1vdXNlVXAkKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBtZXJnZShcbiAgICAgICAgICAgIG9uTW91c2VEb3duJCxcbiAgICAgICAgICAgIG9uTW91c2VEb3duJC5waXBlKHN3aXRjaE1hcCgoKSA9PiB0aW1lckZhY3RvcnkkKSksXG4gICAgICAgICAgICAvLyB3aGlsZSBrZXkgaXMgcHJlc3NlZCwgZXZlbnQgd2lsbCBiZSBlbWl0dGVkIGNvbnRpbnVvdXNseSwgc28gdGhlcmUncyBubyBuZWVkIGZvciB0aW1lckZhY3RvcnkkXG4gICAgICAgICAgICBvbktleURvd24kXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wYXJzZVZhbHVlKHRleHQ6IHN0cmluZyk6IE51bGxhYmxlPG51bWJlcj4ge1xuICAgICAgICBjb25zdCB0cmltbWVkVGV4dCA9IHRleHQudHJpbSgpO1xuXG4gICAgICAgIGlmICh0cmltbWVkVGV4dCA9PT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsdGVyZWRUZXh0ID0gdHJpbW1lZFRleHRcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHMvZywgJycpXG4gICAgICAgICAgICAucmVwbGFjZSh0aGlzLl9jdXJyZW5jeSwgJycpXG4gICAgICAgICAgICAucmVwbGFjZSh0aGlzLl9ncm91cFNlcGFyYXRvciwgJycpXG4gICAgICAgICAgICAucmVwbGFjZSh0aGlzLl9taW51c1NpZ24sICctJylcbiAgICAgICAgICAgIC5yZXBsYWNlKHRoaXMuX2RlY2ltYWxTZXBhcmF0b3IsICcuJylcbiAgICAgICAgICAgIC5yZXBsYWNlKHRoaXMuX251bWVyYWxzLCB0aGlzLl9pbmRleCk7XG5cbiAgICAgICAgaWYgKGZpbHRlcmVkVGV4dCkge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkVmFsdWUgPSBOdW1iZXIoZmlsdGVyZWRUZXh0KTtcbiAgICAgICAgICAgIHJldHVybiBpc05hTihwYXJzZWRWYWx1ZSkgPyB0aGlzLmxhc3RFbWl0dGVkVmFsdWUgOiBwYXJzZWRWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0TnVtYmVyRm9ybWF0KCk6IE51bWJlckZvcm1hdCB7XG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSAmJiB0aGlzLm1pbkZyYWN0aW9uRGlnaXRzID4gdGhpcy5tYXhGcmFjdGlvbkRpZ2l0cykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmFuZ2UgZXJyb3IgLSBtaW5GcmFjdGlvbkRpZ2l0cyBjYW4ndCBiZSBiaWdnZXIgdGhhbiBtYXhGcmFjdGlvbkRpZ2l0c1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCB7XG4gICAgICAgICAgICBsb2NhbGVNYXRjaGVyOiB0aGlzLmxvY2FsZU1hdGNoZXIgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgc3R5bGU6IHRoaXMubW9kZSxcbiAgICAgICAgICAgIGN1cnJlbmN5OiB0aGlzLmN1cnJlbmN5LFxuICAgICAgICAgICAgLy8gb25seSBhdmFpbGFibGUgaW4gRVMyMDIwIGFuZCBsYXRlclxuICAgICAgICAgICAgWydjdXJyZW5jeURpc3BsYXknIGFzIGFueV06IHRoaXMuY3VycmVuY3lEaXNwbGF5LFxuICAgICAgICAgICAgdXNlR3JvdXBpbmc6IHRoaXMudXNlR3JvdXBpbmcsXG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IHRoaXMubWluRnJhY3Rpb25EaWdpdHMsXG4gICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IHRoaXMubWF4RnJhY3Rpb25EaWdpdHNcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXROdW1lcmFsc0V4cHJlc3Npb25zKCk6IFJlZ0V4cCB7XG4gICAgICAgIGNvbnN0IG51bWVyYWxzID0gW1xuICAgICAgICAgICAgLi4ubmV3IE51bWJlckZvcm1hdCh0aGlzLmxvY2FsZSwgeyB1c2VHcm91cGluZzogZmFsc2UgfSkuZm9ybWF0KDk4NzY1NDMyMTApLnNwbGl0KCcnKVxuICAgICAgICBdLnJldmVyc2UoKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBuZXcgTWFwKG51bWVyYWxzLm1hcCgoZCwgaSkgPT4gW2QsIGldKSk7XG4gICAgICAgIHRoaXMuX2luZGV4ID0gKGQpID0+IGluZGV4LmdldChkKTtcblxuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgWyR7bnVtZXJhbHMuam9pbignJyl9XWAsICdnJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXREZWNpbWFsU2VwYXJhdG9yKCk6IFJlZ0V4cCB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBOdW1iZXJGb3JtYXQodGhpcy5sb2NhbGUsIHsgdXNlR3JvdXBpbmc6IGZhbHNlIH0pO1xuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgWyR7Zm9ybWF0dGVyLmZvcm1hdCgxLjEpLnRyaW0oKS5yZXBsYWNlKHRoaXMuX251bWVyYWxzLCAnJyl9XWAsICdnJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRHcm91cGluZ1NlcGFyYXRvcigpOiBSZWdFeHAge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCB7IHVzZUdyb3VwaW5nOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgWyR7Zm9ybWF0dGVyLmZvcm1hdCgxMDAwKS50cmltKCkucmVwbGFjZSh0aGlzLl9udW1lcmFscywgJycpfV1gLCAnZycpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0TWludXNTaWduRXhwcmVzc2lvbigpOiBSZWdFeHAge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoYFske2Zvcm1hdHRlci5mb3JtYXQoLTEpLnRyaW0oKS5yZXBsYWNlKHRoaXMuX251bWVyYWxzLCAnJyl9XWAsICdnJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRDdXJyZW5jeUV4cHJlc3Npb24oKTogUmVnRXhwIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVuY3kpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBOdW1iZXJGb3JtYXQodGhpcy5sb2NhbGUsIHtcbiAgICAgICAgICAgICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICAgICAgICAgICAgICBjdXJyZW5jeTogdGhpcy5jdXJyZW5jeSxcbiAgICAgICAgICAgICAgICAvLyBvbmx5IGF2YWlsYWJsZSBpbiBFUzIwMjAgYW5kIGxhdGVyXG4gICAgICAgICAgICAgICAgWydjdXJyZW5jeURpc3BsYXknIGFzIGFueV06IHRoaXMuY3VycmVuY3lEaXNwbGF5XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lTaWduID0gYCR7Zm9ybWF0dGVyXG4gICAgICAgICAgICAgICAgLmZvcm1hdCgxKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXHMvZywgJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fbnVtZXJhbHMsICcnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKHRoaXMuX2RlY2ltYWxTZXBhcmF0b3IsICcnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKHRoaXMuX2dyb3VwU2VwYXJhdG9yLCAnJyl9YDtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoYFske3RoaXMuY3VycmVuY3lTaWdufV1gLCAnZycpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoYFtdYCwgJ2cnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2J1aWxkUmVnRXhwcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbnVtZXJhbHMgPSB0aGlzLl9nZXROdW1lcmFsc0V4cHJlc3Npb25zKCk7XG4gICAgICAgIHRoaXMuX2RlY2ltYWxTZXBhcmF0b3IgPSB0aGlzLl9nZXREZWNpbWFsU2VwYXJhdG9yKCk7XG4gICAgICAgIHRoaXMuX21pbnVzU2lnbiA9IHRoaXMuX2dldE1pbnVzU2lnbkV4cHJlc3Npb24oKTtcbiAgICAgICAgdGhpcy5fZ3JvdXBTZXBhcmF0b3IgPSB0aGlzLl9nZXRHcm91cGluZ1NlcGFyYXRvcigpO1xuICAgICAgICB0aGlzLl9jdXJyZW5jeSA9IHRoaXMuX2dldEN1cnJlbmN5RXhwcmVzc2lvbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9ybWF0VG9WaWV3VmFsdWUobnVtYmVyOiBOdWxsYWJsZTxudW1iZXI+KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKG51bWJlciA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW5jeVxuICAgICAgICAgICAgICAgID8gdGhpcy5fbnVtYmVyRm9ybWF0LmZvcm1hdChudW1iZXIpLnJlcGxhY2UodGhpcy5fY3VycmVuY3ksICcnKVxuICAgICAgICAgICAgICAgIDogdGhpcy5fbnVtYmVyRm9ybWF0LmZvcm1hdChudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGZkLWZvcm0taW5wdXQtbWVzc2FnZS1ncm91cD5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmQtc3RlcC1pbnB1dFwiXG4gICAgICAgIFtjbGFzc109XCJzdGF0ZSA/ICdpcy0nICsgc3RhdGUgOiAnJ1wiXG4gICAgICAgIFtjbGFzcy5pcy1mb2N1c109XCJmb2N1c2VkXCJcbiAgICAgICAgW2NsYXNzLmlzLXJlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgW2NsYXNzLmlzLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2NsYXNzLmZkLXN0ZXAtaW5wdXQtLXdpdGhvdXQtYnV0dG9uc109XCIhaGFzU3RlcEJ1dHRvbnNcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJoYXNTdGVwQnV0dG9uc1wiXG4gICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICNkZWNyZW1lbnRCdG5cbiAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtc3RlcC1pbnB1dF9fYnV0dG9uXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkRlY3JlbWVudFwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiZGVjcmVtZW50QnV0dG9uVGl0bGUgfHwgKCdjb3JlU3RlcElucHV0LmRlY3JlbWVudEJ1dHRvblRpdGxlJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICBbZ2x5cGhdPVwiZGVjcmVtZW50QnV0dG9uSWNvblwiXG4gICAgICAgICAgICAoYmx1cik9XCJvblRvdWNoZWQoKVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImRlY3JlbWVudEJ1dHRvblRpdGxlIHx8ICgnY29yZVN0ZXBJbnB1dC5kZWNyZW1lbnRCdXR0b25UaXRsZScgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJpbnB1dElkXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dEVsZW1lbnRcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImlucHV0VGl0bGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtdmFsdWVub3ddPVwidmFsdWVcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJtYXhcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJtaW5cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJjYW5EaXNwbGF5TGFiZWwgPyBpbnB1dElkICsgJ19fZGVzY3JpcHRpb24nIDogJydcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXJvbGVkZXNjcmlwdGlvbl09XCJhcmlhUm9sZURlc2NyaXB0aW9uIHx8ICgnY29yZVN0ZXBJbnB1dC5hcmlhUm9sZURlc2NyaXB0aW9uJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAoZm9jdXNpbik9XCJoYW5kbGVGb2N1c0luKClcIlxuICAgICAgICAgICAgKHdoZWVsKT1cImhhbmRsZVNjcm9sbCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cImhhbmRsZUtleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAoaW5wdXQpPVwidHJhY2tJbnB1dFZhbHVlKCRldmVudClcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVPbklucHV0Q2hhbmdlZCgpXCJcbiAgICAgICAgICAgIFtzdHlsZS50ZXh0QWxpZ25dPVwidGV4dEFsaWduXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXQgZmQtaW5wdXQtLW5vLW51bWJlci1zcGlubmVyIGZkLXN0ZXAtaW5wdXRfX2lucHV0XCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAvPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImhhc1N0ZXBCdXR0b25zXCJcbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgI2luY3JlbWVudEJ0blxuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmZC1zdGVwLWlucHV0X19idXR0b25cIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuSW5jcmVtZW50XCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJpbmNyZW1lbnRCdXR0b25UaXRsZSB8fCAoJ2NvcmVTdGVwSW5wdXQuaW5jcmVtZW50QnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIFtnbHlwaF09XCJpbmNyZW1lbnRCdXR0b25JY29uXCJcbiAgICAgICAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiaW5jcmVtZW50QnV0dG9uVGl0bGUgfHwgKCdjb3JlU3RlcElucHV0LmluY3JlbWVudEJ1dHRvblRpdGxlJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImlucHV0SWRcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZmQtZm9ybS1tZXNzYWdlICpuZ0lmPVwiISFzdGF0ZU1lc3NhZ2VcIiBbdHlwZV09XCJzdGF0ZVwiIFtpbm5lckhUTUxdPVwic3RhdGVNZXNzYWdlXCI+PC9mZC1mb3JtLW1lc3NhZ2U+XG48L2ZkLWZvcm0taW5wdXQtbWVzc2FnZS1ncm91cD5cblxuPHNwYW4gKm5nSWY9XCJjYW5EaXNwbGF5TGFiZWxcIiBbaWRdPVwiaW5wdXRJZCArICdfX2Rlc2NyaXB0aW9uJ1wiIGNsYXNzPVwiZmQtZm9ybS1sYWJlbCBmZC1mb3JtLWxhYmVsLS11bml0LWRlc2NyaXB0aW9uXCI+XG4gICAge3sgdW5pdCB8fCBjdXJyZW5jeVNpZ24gfX1cbjwvc3Bhbj5cbiJdfQ==
@@ -1,6 +1,7 @@
1
1
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, isDevMode, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { Subscription } from 'rxjs';
4
+ import { warnOnce } from '@fundamental-ngx/cdk/utils';
4
5
  import { registerFormItemControl } from '@fundamental-ngx/core/form';
5
6
  import { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';
6
7
  import * as i0 from "@angular/core";
@@ -18,7 +19,7 @@ export class SwitchComponent {
18
19
  /** @deprecated renamed to "ariaLabelledBy" */
19
20
  set ariaLabelledby(value) {
20
21
  if (isDevMode() && !warnedAboutAriaLabeledBy) {
21
- console.warn('fd-switch[ariaLabelledby] is deprecated. Use fd-switch[ariaLabelledBy] instead');
22
+ warnOnce('fd-switch[ariaLabelledby] is deprecated. Use fd-switch[ariaLabelledBy] instead');
22
23
  warnedAboutAriaLabeledBy = true;
23
24
  }
24
25
  this.ariaLabelledBy = value;
@@ -28,7 +29,7 @@ export class SwitchComponent {
28
29
  * Semantic Label Accept set for Accessibility
29
30
  */
30
31
  set semanticAcceptLabel(value) {
31
- console.warn("Property semanticAcceptLabel is deprecated. Use i18n capabilities 'coreSwitch.semanticAcceptLabel' key instead.");
32
+ warnOnce("Property semanticAcceptLabel is deprecated. Use i18n capabilities 'coreSwitch.semanticAcceptLabel' key instead.");
32
33
  this._semanticAcceptLabel = value;
33
34
  }
34
35
  get semanticAcceptLabel() {
@@ -39,7 +40,7 @@ export class SwitchComponent {
39
40
  * Semantic Label Decline set for Accessibility
40
41
  */
41
42
  set semanticDeclineLabel(value) {
42
- console.warn("Property semanticDeclineLabel is deprecated. Use i18n capabilities 'coreSwitch.semanticDeclineLabel' key instead.");
43
+ warnOnce("Property semanticDeclineLabel is deprecated. Use i18n capabilities 'coreSwitch.semanticDeclineLabel' key instead.");
43
44
  this._semanticDeclineLabel = value;
44
45
  }
45
46
  get semanticDeclineLabel() {
@@ -196,4 +197,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
196
197
  type: ViewChild,
197
198
  args: ['switchEl', { read: ElementRef }]
198
199
  }] } });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3N3aXRjaC9zd2l0Y2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc3dpdGNoL3N3aXRjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLFNBQVMsRUFFVCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQW1CLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7OztBQUVoSCxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBSSx3QkFBd0IsR0FBRyxLQUFLLENBQUM7QUFFckM7OztHQUdHO0FBc0JILE1BQU0sT0FBTyxlQUFlO0lBeUN4Qiw4Q0FBOEM7SUFDOUMsSUFDSSxjQUFjLENBQUMsS0FBdUI7UUFDdEMsSUFBSSxTQUFTLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQzFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0ZBQWdGLENBQUMsQ0FBQztZQUMvRix3QkFBd0IsR0FBRyxJQUFJLENBQUM7U0FDbkM7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBTUQ7OztPQUdHO0lBQ0gsSUFDSSxtQkFBbUIsQ0FB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QUFDLGFBQWE7Z0JBS3hCLFVBQVU7c0JBRFQsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLEVBQUU7c0JBREQsS0FBSztnQkFLTixJQUFJO3NCQURILEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLE9BQU87c0JBRE4sS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBV04sY0FBYztzQkFEYixLQUFLO2dCQVFGLG1CQUFtQjtzQkFEdEIsS0FBSztnQkFpQkYsb0JBQW9CO3NCQUR2QixLQUFLO2dCQWlCRyxhQUFhO3NCQURyQixNQUFNO2dCQUtQLHFCQUFxQjtzQkFEcEIsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbnB1dCxcbiAgICBpc0Rldk1vZGUsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRm9ybUl0ZW1Db250cm9sLCByZWdpc3RlckZvcm1JdGVtQ29udHJvbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcblxubGV0IHN3aXRjaFVuaXF1ZUlkID0gMDtcbmxldCB3YXJuZWRBYm91dEFyaWFMYWJlbGVkQnkgPSBmYWxzZTtcblxuLyoqXG4gKiBUaGUgU3dpdGNoIGNvbXBvbmVudCBpcyB1c2VkIHRvIGFjdGl2YXRlIG9yIGRlYWN0aXZhdGUgYW4gZWxlbWVudC5cbiAqIEl0IHVzZXMgYSB2aXN1YWwgbWV0YXBob3IgdG8gaW5mb3JtIHRoZSB1c2VyIG9mIHRoZSBzdGF0ZSBvZiB0aGUgc3dpdGNoLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXN3aXRjaCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3N3aXRjaC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3dpdGNoLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU3dpdGNoQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sKFN3aXRjaENvbXBvbmVudCksXG4gICAgICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoKVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkLWZvcm1fX2l0ZW0gZmQtZm9ybV9faXRlbS0tY2hlY2sgZmQtc3dpdGNoLWN1c3RvbScsXG4gICAgICAgICdbYXR0ci5pZF0nOiAnaWQnLFxuICAgICAgICAnKGZvY3Vzb3V0KSc6ICdvblRvdWNoZWQoKSdcbiAgICB9LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU3dpdGNoQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSwgRm9ybUl0ZW1Db250cm9sIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3N3aXRjaElucHV0JylcbiAgICBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICAvKiogT3B0aW9uYWwgdGV4dCBmb3IgdGhlIGFjdGl2ZSBzdGF0ZSBvZiB0aGUgc3dpdGNoLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWN0aXZlVGV4dCA9ICcnO1xuXG4gICAgLyoqIE9wdGlvbmFsIHRleHQgZm9yIHRoZSBpbmFjdGl2ZSBzdGF0ZSBvZiB0aGUgc3dpdGNoLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5hY3RpdmVUZXh0ID0gJyc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgc3dpdGNoIGlzIGRpc2FibGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKiBJZCBmb3IgdGhlIHN3aXRjaCBjb21wb25lbnQuIElmIG9taXR0ZWQsIGEgdW5pcXVlIG9uZSBpcyBnZW5lcmF0ZWQuICovXG4gICAgQElucHV0KClcbiAgICBpZCA9IGBmZC1zd2l0Y2gtJHtzd2l0Y2hVbmlxdWVJZCsrfWA7XG5cbiAgICAvKiogU2V0cyBpbnB1dCBuYW1lIGF0dHJpYnV0ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5hbWU6IHN0cmluZztcblxuICAgIC8qKiBJZiBpdCBpcyBtYW5kYXRvcnkgZmllbGQgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlcXVpcmVkID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgc3dpdGNoIGlzIGNoZWNrZWQuICovXG4gICAgQElucHV0KClcbiAgICBjaGVja2VkID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgc3dpdGNoIGlzIHNlbWFudGljICovXG4gICAgQElucHV0KClcbiAgICBzZW1hbnRpYyA9IGZhbHNlO1xuXG4gICAgLyoqIGFyaWEtbGFiZWwgYXR0cmlidXRlIG9mIHRoZSBpbm5lciBpbnB1dCBlbGVtZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEBkZXByZWNhdGVkIHJlbmFtZWQgdG8gXCJhcmlhTGFiZWxsZWRCeVwiICovXG4gICAgQElucHV0KClcbiAgICBzZXQgYXJpYUxhYmVsbGVkYnkodmFsdWU6IE51bGxhYmxlPHN0cmluZz4pIHtcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpICYmICF3YXJuZWRBYm91dEFyaWFMYWJlbGVkQnkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignZmQtc3dpdGNoW2FyaWFMYWJlbGxlZGJ5XSBpcyBkZXByZWNhdGVkLiBVc2UgZmQtc3dpdGNoW2FyaWFMYWJlbGxlZEJ5XSBpbnN0ZWFkJyk7XG4gICAgICAgICAgICB3YXJuZWRBYm91dEFyaWFMYWJlbGVkQnkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXJpYUxhYmVsbGVkQnkgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogYXJpYS1sYWJlbGxlZGJ5IGF0dHJpYnV0ZSBvZiB0aGUgaW5uZXIgaW5wdXQgZWxlbWVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBTZW1hbnRpYyBMYWJlbCBBY2NlcHQgc2V0IGZvciBBY2Nlc3NpYmlsaXR5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc2VtYW50aWNBY2NlcHRMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiUHJvcGVydHkgc2VtYW50aWNBY2NlcHRMYWJlbCBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ2NvcmVTd2l0Y2guc2VtYW50aWNBY2NlcHRMYWJlbCcga2V5IGluc3RlYWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fc2VtYW50aWNBY2NlcHRMYWJlbCA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBzZW1hbnRpY0FjY2VwdExhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZW1hbnRpY0FjY2VwdExhYmVsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogU2VtYW50aWMgTGFiZWwgRGVjbGluZSBzZXQgZm9yIEFjY2Vzc2liaWxpdHlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzZW1hbnRpY0RlY2xpbmVMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiUHJvcGVydHkgc2VtYW50aWNEZWNsaW5lTGFiZWwgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlU3dpdGNoLnNlbWFudGljRGVjbGluZUxhYmVsJyBrZXkgaW5zdGVhZC5cIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9zZW1hbnRpY0RlY2xpbmVMYWJlbCA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBzZW1hbnRpY0RlY2xpbmVMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VtYW50aWNEZWNsaW5lTGFiZWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXZlbnQgZmlyZWQgd2hlbiB0aGUgc3RhdGUgb2YgdGhlIHN3aXRjaCBjaGFuZ2VzLlxuICAgICAqICokZXZlbnQqIGNhbiBiZSB1c2VkIHRvIHJldHJpZXZlIHRoZSBuZXcgc3RhdGUgb2YgdGhlIHN3aXRjaC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBjaGVja2VkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3N3aXRjaEVsJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgX3N3aXRjaExhYmVsV3JhcHBlckVsOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZW1hbnRpY0RlY2xpbmVMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZW1hbnRpY0FjY2VwdExhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHJlYWRvbmx5IF9jb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkNoYW5nZTogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBTZXQgZm9jdXMgb24gdGhlIGlucHV0IGVsZW1lbnQuICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IHRoZSBpZCBvZiB0aGUgaW5uZXIgaW5wdXQgZWxlbWVudCBvZiB0aGUgc3dpdGNoLiAqL1xuICAgIGdldCBpbm5lcklucHV0SWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuaWR9LWlucHV0YDtcbiAgICB9XG5cbiAgICAvKiogR2V0IHRoZSBpZCBvZiB0aGUgc2VtYW50aWMgbGFiZWwgZWxlbWVudCBvZiB0aGUgc3dpdGNoLiAqL1xuICAgIGdldCBfc2VtYW50aWNMYWJlbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmlkfS1zZW1hbnRpYy1sYWJlbGA7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrZWQgcHJvcGVydHkgb2YgdGhlIHN3aXRjaC4gKi9cbiAgICBzZXQgaXNDaGVja2VkKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX3N3aXRjaExhYmVsV3JhcHBlckVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnZmQtc3dpdGNoLW5vLWFuaW1hdGUnKTtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gdmFsdWU7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB0aGlzLmNoZWNrZWRDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgLy8gYWRkIHRoZSBuby1hbmltYXRlIGNsYXNzIGFmdGVyIHRoZSB0cmFuc2l0aW9uIGR1cmF0aW9uLCAxMDBtc1xuICAgICAgICAgICAgdGhpcy5fc3dpdGNoTGFiZWxXcmFwcGVyRWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdmZC1zd2l0Y2gtbm8tYW5pbWF0ZScpO1xuICAgICAgICB9LCAxMDApO1xuICAgIH1cbiAgICBnZXQgaXNDaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGVja2VkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gdmFsdWUgU2V0cyB0aGUgdmFsdWUgb2YgdGhlICpjaGVja2VkKiBwcm9wZXJ0eSBvZiB0aGUgc3dpdGNoLlxuICAgICAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gZm4gVXNlciBkZWZpbmVkIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyB0aGUgKm9uQ2hhbmdlKiBldmVudCBvZiB0aGUgc3dpdGNoLlxuICAgICAqL1xuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBmbiBVc2VyIGRlZmluZWQgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHRoZSAqb25Ub3VjaCogZXZlbnQgb2YgdGhlIHN3aXRjaC5cbiAgICAgKi9cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gaXNEaXNhYmxlZCBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgKmRpc2FibGVkKiBwcm9wZXJ0eSBvZiB0aGUgc3dpdGNoLlxuICAgICAqL1xuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn1cbiIsIjxsYWJlbFxuICAgIGNsYXNzPVwiZmQtc3dpdGNoIGZkLXN3aXRjaC1uby1hbmltYXRlXCJcbiAgICAoY2xpY2spPVwiZm9jdXMoKVwiXG4gICAgW3N0eWxlLmN1cnNvcl09XCJkaXNhYmxlZCA/ICdhdXRvJyA6ICdwb2ludGVyJ1wiXG4gICAgW2NsYXNzLmlzLWNvbXBhY3RdPVwiX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuaXNDb21wYWN0JCB8IGFzeW5jXCJcbiAgICBbY2xhc3MuZmQtc3dpdGNoLS1zZW1hbnRpY109XCJzZW1hbnRpY1wiXG4gICAgW2NsYXNzLmlzLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgI3N3aXRjaEVsXG4+XG4gICAgPHNwYW4gKm5nSWY9XCJpc0NoZWNrZWQgPyBhY3RpdmVUZXh0IDogaW5hY3RpdmVUZXh0IGFzIHRleHRcIiBjbGFzcz1cImZkLXN3aXRjaF9fdGV4dFwiPlxuICAgICAgICB7eyB0ZXh0IH19XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwiZmQtc3dpdGNoX19jb250cm9sXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI3N3aXRjaElucHV0XG4gICAgICAgICAgICBjbGFzcz1cImZkLXN3aXRjaF9faW5wdXRcIlxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIHJvbGU9XCJzd2l0Y2hcIlxuICAgICAgICAgICAgW2lkXT1cImlubmVySW5wdXRJZFwiXG4gICAgICAgICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtY2hlY2tlZF09XCJjaGVja2VkXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeSArICcgJyArIChzZW1hbnRpYyA/IF9zZW1hbnRpY0xhYmVsSWQgOiAnJylcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpc0NoZWNrZWRcIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtc3dpdGNoX19zbGlkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1zd2l0Y2hfX3RyYWNrXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZW1hbnRpY1wiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLXN3aXRjaF9faWNvbiBmZC1zd2l0Y2hfX2ljb24tLW9uIHNhcC1pY29uLS1hY2NlcHRcIlxuICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1zd2l0Y2hfX2hhbmRsZVwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZW1hbnRpY1wiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLXN3aXRjaF9faWNvbi0tb2ZmIGZkLXN3aXRjaF9faWNvbiBzYXAtaWNvbi0tZGVjbGluZVwiXG4gICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbWFudGljXCIgW2lkXT1cIl9zZW1hbnRpY0xhYmVsSWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImZkLXN3aXRjaF9faW52aXNpYmxlLXRleHRcIj5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICBjaGVja2VkXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlbWFudGljQWNjZXB0TGFiZWwgfHwgKCdjb3JlU3dpdGNoLnNlbWFudGljQWNjZXB0TGFiZWwnIHwgZmRUcmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlbWFudGljRGVjbGluZUxhYmVsIHx8ICgnY29yZVN3aXRjaC5zZW1hbnRpY0RlY2xpbmVMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L3NwYW4+XG48L2xhYmVsPlxuIl19
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3N3aXRjaC9zd2l0Y2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc3dpdGNoL3N3aXRjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLFNBQVMsRUFFVCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQVksUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFtQix1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7QUFFaEgsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLElBQUksd0JBQXdCLEdBQUcsS0FBSyxDQUFDO0FBRXJDOzs7R0FHRztBQXNCSCxNQUFNLE9BQU8sZUFBZTtJQXlDeEIsOENBQThDO0lBQzlDLElBQ0ksY0FBYyxDQUFDLEtBQXVCO1FBQ3RDLElBQUksU0FBUyxFQUFFLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUMxQyxRQUFRLENBQUMsZ0ZBQWdGLENBQUMsQ0FBQztZQUMzRix3QkFBd0IsR0FBRyxJQUFJLENBQUM7U0FDbkM7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFD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c0JBRFgsU0FBUzt1QkFBQyxhQUFhO2dCQUt4QixVQUFVO3NCQURULEtBQUs7Z0JBS04sWUFBWTtzQkFEWCxLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixFQUFFO3NCQURELEtBQUs7Z0JBS04sSUFBSTtzQkFESCxLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixPQUFPO3NCQUROLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLRixjQUFjO3NCQURqQixLQUFLO2dCQVdOLGNBQWM7c0JBRGIsS0FBSztnQkFRRixtQkFBbUI7c0JBRHRCLEtBQUs7Z0JBaUJGLG9CQUFvQjtzQkFEdkIsS0FBSztnQkFpQkcsYUFBYTtzQkFEckIsTUFBTTtnQkFLUCxxQkFBcUI7c0JBRHBCLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5wdXQsXG4gICAgaXNEZXZNb2RlLFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOdWxsYWJsZSwgd2Fybk9uY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBGb3JtSXRlbUNvbnRyb2wsIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlciwgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuXG5sZXQgc3dpdGNoVW5pcXVlSWQgPSAwO1xubGV0IHdhcm5lZEFib3V0QXJpYUxhYmVsZWRCeSA9IGZhbHNlO1xuXG4vKipcbiAqIFRoZSBTd2l0Y2ggY29tcG9uZW50IGlzIHVzZWQgdG8gYWN0aXZhdGUgb3IgZGVhY3RpdmF0ZSBhbiBlbGVtZW50LlxuICogSXQgdXNlcyBhIHZpc3VhbCBtZXRhcGhvciB0byBpbmZvcm0gdGhlIHVzZXIgb2YgdGhlIHN0YXRlIG9mIHRoZSBzd2l0Y2guXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtc3dpdGNoJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3dpdGNoLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zd2l0Y2guY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTd2l0Y2hDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgcmVnaXN0ZXJGb3JtSXRlbUNvbnRyb2woU3dpdGNoQ29tcG9uZW50KSxcbiAgICAgICAgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycygpXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtZm9ybV9faXRlbSBmZC1mb3JtX19pdGVtLS1jaGVjayBmZC1zd2l0Y2gtY3VzdG9tJyxcbiAgICAgICAgJ1thdHRyLmlkXSc6ICdpZCcsXG4gICAgICAgICcoZm9jdXNvdXQpJzogJ29uVG91Y2hlZCgpJ1xuICAgIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTd2l0Y2hDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBGb3JtSXRlbUNvbnRyb2wge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnc3dpdGNoSW5wdXQnKVxuICAgIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIC8qKiBPcHRpb25hbCB0ZXh0IGZvciB0aGUgYWN0aXZlIHN0YXRlIG9mIHRoZSBzd2l0Y2guICovXG4gICAgQElucHV0KClcbiAgICBhY3RpdmVUZXh0ID0gJyc7XG5cbiAgICAvKiogT3B0aW9uYWwgdGV4dCBmb3IgdGhlIGluYWN0aXZlIHN0YXRlIG9mIHRoZSBzd2l0Y2guICovXG4gICAgQElucHV0KClcbiAgICBpbmFjdGl2ZVRleHQgPSAnJztcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBzd2l0Y2ggaXMgZGlzYWJsZWQuICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqIElkIGZvciB0aGUgc3dpdGNoIGNvbXBvbmVudC4gSWYgb21pdHRlZCwgYSB1bmlxdWUgb25lIGlzIGdlbmVyYXRlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGlkID0gYGZkLXN3aXRjaC0ke3N3aXRjaFVuaXF1ZUlkKyt9YDtcblxuICAgIC8qKiBTZXRzIGlucHV0IG5hbWUgYXR0cmlidXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmFtZTogc3RyaW5nO1xuXG4gICAgLyoqIElmIGl0IGlzIG1hbmRhdG9yeSBmaWVsZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBzd2l0Y2ggaXMgY2hlY2tlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNoZWNrZWQgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBzd2l0Y2ggaXMgc2VtYW50aWMgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbWFudGljID0gZmFsc2U7XG5cbiAgICAvKiogYXJpYS1sYWJlbCBhdHRyaWJ1dGUgb2YgdGhlIGlubmVyIGlucHV0IGVsZW1lbnQuICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogQGRlcHJlY2F0ZWQgcmVuYW1lZCB0byBcImFyaWFMYWJlbGxlZEJ5XCIgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBhcmlhTGFiZWxsZWRieSh2YWx1ZTogTnVsbGFibGU8c3RyaW5nPikge1xuICAgICAgICBpZiAoaXNEZXZNb2RlKCkgJiYgIXdhcm5lZEFib3V0QXJpYUxhYmVsZWRCeSkge1xuICAgICAgICAgICAgd2Fybk9uY2UoJ2ZkLXN3aXRjaFthcmlhTGFiZWxsZWRieV0gaXMgZGVwcmVjYXRlZC4gVXNlIGZkLXN3aXRjaFthcmlhTGFiZWxsZWRCeV0gaW5zdGVhZCcpO1xuICAgICAgICAgICAgd2FybmVkQWJvdXRBcmlhTGFiZWxlZEJ5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFyaWFMYWJlbGxlZEJ5ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIGFyaWEtbGFiZWxsZWRieSBhdHRyaWJ1dGUgb2YgdGhlIGlubmVyIGlucHV0IGVsZW1lbnQuICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWxsZWRCeTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogU2VtYW50aWMgTGFiZWwgQWNjZXB0IHNldCBmb3IgQWNjZXNzaWJpbGl0eVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNlbWFudGljQWNjZXB0TGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgIFwiUHJvcGVydHkgc2VtYW50aWNBY2NlcHRMYWJlbCBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ2NvcmVTd2l0Y2guc2VtYW50aWNBY2NlcHRMYWJlbCcga2V5IGluc3RlYWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fc2VtYW50aWNBY2NlcHRMYWJlbCA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBzZW1hbnRpY0FjY2VwdExhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZW1hbnRpY0FjY2VwdExhYmVsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogU2VtYW50aWMgTGFiZWwgRGVjbGluZSBzZXQgZm9yIEFjY2Vzc2liaWxpdHlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzZW1hbnRpY0RlY2xpbmVMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgXCJQcm9wZXJ0eSBzZW1hbnRpY0RlY2xpbmVMYWJlbCBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ2NvcmVTd2l0Y2guc2VtYW50aWNEZWNsaW5lTGFiZWwnIGtleSBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3NlbWFudGljRGVjbGluZUxhYmVsID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHNlbWFudGljRGVjbGluZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZW1hbnRpY0RlY2xpbmVMYWJlbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBmaXJlZCB3aGVuIHRoZSBzdGF0ZSBvZiB0aGUgc3dpdGNoIGNoYW5nZXMuXG4gICAgICogKiRldmVudCogY2FuIGJlIHVzZWQgdG8gcmV0cmlldmUgdGhlIG5ldyBzdGF0ZSBvZiB0aGUgc3dpdGNoLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGNoZWNrZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnc3dpdGNoRWwnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBfc3dpdGNoTGFiZWxXcmFwcGVyRWw6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlbWFudGljRGVjbGluZUxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlbWFudGljQWNjZXB0TGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2hhbmdlOiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25Ub3VjaGVkID0gKCk6IHZvaWQgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIFNldCBmb2N1cyBvbiB0aGUgaW5wdXQgZWxlbWVudC4gKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBHZXQgdGhlIGlkIG9mIHRoZSBpbm5lciBpbnB1dCBlbGVtZW50IG9mIHRoZSBzd2l0Y2guICovXG4gICAgZ2V0IGlubmVySW5wdXRJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5pZH0taW5wdXRgO1xuICAgIH1cblxuICAgIC8qKiBHZXQgdGhlIGlkIG9mIHRoZSBzZW1hbnRpYyBsYWJlbCBlbGVtZW50IG9mIHRoZSBzd2l0Y2guICovXG4gICAgZ2V0IF9zZW1hbnRpY0xhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuaWR9LXNlbWFudGljLWxhYmVsYDtcbiAgICB9XG5cbiAgICAvKiogQ2hlY2tlZCBwcm9wZXJ0eSBvZiB0aGUgc3dpdGNoLiAqL1xuICAgIHNldCBpc0NoZWNrZWQodmFsdWUpIHtcbiAgICAgICAgdGhpcy5fc3dpdGNoTGFiZWxXcmFwcGVyRWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdmZC1zd2l0Y2gtbm8tYW5pbWF0ZScpO1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuY2hlY2tlZENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBhZGQgdGhlIG5vLWFuaW1hdGUgY2xhc3MgYWZ0ZXIgdGhlIHRyYW5zaXRpb24gZHVyYXRpb24sIDEwMG1zXG4gICAgICAgICAgICB0aGlzLl9zd2l0Y2hMYWJlbFdyYXBwZXJFbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2ZkLXN3aXRjaC1uby1hbmltYXRlJyk7XG4gICAgICAgIH0sIDEwMCk7XG4gICAgfVxuICAgIGdldCBpc0NoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSB2YWx1ZSBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgKmNoZWNrZWQqIHByb3BlcnR5IG9mIHRoZSBzd2l0Y2guXG4gICAgICovXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tlZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBmbiBVc2VyIGRlZmluZWQgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHRoZSAqb25DaGFuZ2UqIGV2ZW50IG9mIHRoZSBzd2l0Y2guXG4gICAgICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIGZuIFVzZXIgZGVmaW5lZCBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgdGhlICpvblRvdWNoKiBldmVudCBvZiB0aGUgc3dpdGNoLlxuICAgICAqL1xuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBpc0Rpc2FibGVkIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAqZGlzYWJsZWQqIHByb3BlcnR5IG9mIHRoZSBzd2l0Y2guXG4gICAgICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIiwiPGxhYmVsXG4gICAgY2xhc3M9XCJmZC1zd2l0Y2ggZmQtc3dpdGNoLW5vLWFuaW1hdGVcIlxuICAgIChjbGljayk9XCJmb2N1cygpXCJcbiAgICBbc3R5bGUuY3Vyc29yXT1cImRpc2FibGVkID8gJ2F1dG8nIDogJ3BvaW50ZXInXCJcbiAgICBbY2xhc3MuaXMtY29tcGFjdF09XCJfY29udGVudERlbnNpdHlPYnNlcnZlci5pc0NvbXBhY3QkIHwgYXN5bmNcIlxuICAgIFtjbGFzcy5mZC1zd2l0Y2gtLXNlbWFudGljXT1cInNlbWFudGljXCJcbiAgICBbY2xhc3MuaXMtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAjc3dpdGNoRWxcbj5cbiAgICA8c3BhbiAqbmdJZj1cImlzQ2hlY2tlZCA/IGFjdGl2ZVRleHQgOiBpbmFjdGl2ZVRleHQgYXMgdGV4dFwiIGNsYXNzPVwiZmQtc3dpdGNoX190ZXh0XCI+XG4gICAgICAgIHt7IHRleHQgfX1cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJmZC1zd2l0Y2hfX2NvbnRyb2xcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjc3dpdGNoSW5wdXRcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtc3dpdGNoX19pbnB1dFwiXG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgcm9sZT1cInN3aXRjaFwiXG4gICAgICAgICAgICBbaWRdPVwiaW5uZXJJbnB1dElkXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jaGVja2VkXT1cImNoZWNrZWRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5ICsgJyAnICsgKHNlbWFudGljID8gX3NlbWFudGljTGFiZWxJZCA6ICcnKVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImlzQ2hlY2tlZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZC1zd2l0Y2hfX3NsaWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLXN3aXRjaF9fdHJhY2tcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbWFudGljXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtc3dpdGNoX19pY29uIGZkLXN3aXRjaF9faWNvbi0tb24gc2FwLWljb24tLWFjY2VwdFwiXG4gICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLXN3aXRjaF9faGFuZGxlXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbWFudGljXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtc3dpdGNoX19pY29uLS1vZmYgZmQtc3dpdGNoX19pY29uIHNhcC1pY29uLS1kZWNsaW5lXCJcbiAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VtYW50aWNcIiBbaWRdPVwiX3NlbWFudGljTGFiZWxJZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZmQtc3dpdGNoX19pbnZpc2libGUtdGV4dFwiPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VtYW50aWNBY2NlcHRMYWJlbCB8fCAoJ2NvcmVTd2l0Y2guc2VtYW50aWNBY2NlcHRMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc2VtYW50aWNEZWNsaW5lTGFiZWwgfHwgKCdjb3JlU3dpdGNoLnNlbWFudGljRGVjbGluZUxhYmVsJyB8IGZkVHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc3Bhbj5cbjwvbGFiZWw+XG4iXX0=