@energinet/watt 4.0.26 → 4.0.27

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.
@@ -117,7 +117,7 @@ export class WattDropdownComponent {
117
117
  */
118
118
  noOptionsFoundLabel = input('', ...(ngDevMode ? [{ debugName: "noOptionsFoundLabel" }] : []));
119
119
  hasGroups = computed(() => {
120
- const options = this.options();
120
+ const options = this.options() ?? [];
121
121
  return options.some((option) => 'options' in option && Array.isArray(option.options));
122
122
  }, ...(ngDevMode ? [{ debugName: "hasGroups" }] : []));
123
123
  constructor() {
@@ -343,4 +343,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
343
343
  '[class.watt-chip-mode]': 'chipMode()',
344
344
  }, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<watt-field\n [control]=\"parentControl\"\n [chipMode]=\"chipMode()\"\n [label]=\"label()\"\n (click)=\"matSelect.open()\"\n>\n @if (chipMode()) {\n <watt-menu-chip\n [opened]=\"matSelect.panelOpen\"\n (toggle)=\"matSelect.open()\"\n [selected]=\"!!matSelect?.triggerValue && !disableSelectedMode()\"\n [disabled]=\"matSelectControl.disabled\"\n >\n {{ placeholder() }}\n @if (showTriggerValue) {\n <span>\n @if (placeholder()) {\n :\n }\n {{ getCustomTrigger()?.(matSelect.value) ?? matSelect?.triggerValue }}\n </span>\n }\n @if (showChipLabel) {\n <span class=\"watt-chip-label\">{{ matSelectControl.value?.length }}</span>\n }\n </watt-menu-chip>\n }\n\n <mat-select\n [attr.aria-label]=\"label()\"\n [formControl]=\"matSelectControl\"\n [placeholder]=\"placeholder()\"\n #matSelect\n [panelWidth]=\"panelWidth()\"\n [multiple]=\"multiple()\"\n [ngClass]=\"{ chip: chipMode(), 'mat-mdc-select-multiple': multiple() }\"\n [panelClass]=\"{\n 'watt-dropdown-panel': true,\n 'watt-dropdown-panel-chip-mode': chipMode(),\n 'mat-mdc-select-panel-multiple': multiple(),\n }\"\n >\n <!-- We use this instead of ngIf, since it will trigger a NG0100: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. -->\n <mat-option [style.display]=\"!hideSearch() ? 'block' : 'none'\">\n <ngx-mat-select-search\n [formControl]=\"filterControl\"\n [placeholderLabel]=\"placeholder()\"\n closeIcon=\"close\"\n [showToggleAllCheckbox]=\"multiple()\"\n (toggleAll)=\"onToggleAll($event)\"\n [toggleAllCheckboxChecked]=\"isToggleAllChecked\"\n [toggleAllCheckboxIndeterminate]=\"isToggleAllIndeterminate\"\n [noEntriesFoundLabel]=\"noOptionsFoundLabel()\"\n >\n <watt-icon ngxMatSelectSearchClear name=\"close\" size=\"s\" />\n </ngx-mat-select-search>\n </mat-option>\n\n @if (!multiple() && showResetOption()) {\n <mat-option>{{ emDash }}</mat-option>\n }\n\n @if (hasGroups()) {\n @for (item of filteredGroupedOptions$ | push; track item) {\n @if (\"options\" in item) {\n <mat-optgroup [label]=\"item.label\" [disabled]=\"item.disabled\">\n @for (option of item.options; track option) {\n <mat-option\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n [class.mat-mdc-option-multiple]=\"multiple()\"\n >\n {{ option.displayValue }}\n </mat-option>\n }\n </mat-optgroup>\n }\n }\n } @else {\n @for (option of filteredOptions$ | push; track option) {\n <mat-option\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n [class.mat-mdc-option-multiple]=\"multiple()\"\n >\n {{ option.displayValue }}\n </mat-option>\n }\n }\n </mat-select>\n <ng-content />\n <ng-content ngProjectAs=\"watt-field-hint\" select=\"watt-field-hint\" />\n <ng-content ngProjectAs=\"watt-field-error\" select=\"watt-field-error\" />\n</watt-field>\n", styles: ["watt-dropdown:not(.watt-chip-mode){width:100%}watt-dropdown{--watt-input-color: var(--watt-typography-text-color);--watt-input-placeholder-color: var(--watt-on-light-high-emphasis);display:block;width:auto}watt-dropdown watt-field label .watt-field-wrapper{padding:0;position:relative}watt-dropdown.watt-chip-mode.ng-dirty.ng-invalid .watt-field-wrapper watt-chip label{border:1px solid var(--watt-color-state-danger)}watt-dropdown.watt-chip-mode[disabled=true] watt-field label .watt-field-wrapper{background-color:transparent}watt-dropdown .mat-input-element{font-size:.875rem;line-height:1.25rem;font-weight:400;text-transform:none;letter-spacing:0;color:var(--watt-input-color);caret-color:var(--watt-color-neutral-grey-900)!important;padding:0 12px}watt-dropdown .mat-mdc-select-arrow{color:var(--watt-dropdown-arrow-color, rgba(0, 0, 0, .54));border:none;width:auto;height:auto}watt-dropdown .mat-mdc-select-arrow:before{width:.6em;height:.6em;bottom:.2em;position:relative;display:inline-block;border-style:solid;border-width:0 0 .15em .15em;transform:rotate(315deg);border-color:var(--watt-color-primary);content:\"\"}watt-dropdown .mat-mdc-select-arrow svg{display:none}watt-dropdown .mat-mdc-select-trigger{font-size:.875rem;line-height:1.25rem;font-weight:400;text-transform:none;letter-spacing:0;padding:0 var(--watt-space-m)}watt-dropdown .mat-mdc-select-value{color:var(--watt-color-neutral-black);padding-right:var(--watt-space-m)}watt-dropdown .mat-mdc-select.mat-mdc-select-invalid.ng-pristine .mat-mdc-select-arrow{color:currentColor}watt-dropdown .watt-chip-label{float:right;margin-left:var(--watt-space-s);background:var(--watt-color-neutral-white)}watt-dropdown .watt-field--chip .mat-mdc-select{visibility:hidden;position:absolute;width:100%}watt-dropdown .mat-mdc-select-placeholder{color:var(--watt-input-placeholder-color)}watt-dropdown watt-field label .watt-field-wrapper{background-color:transparent}.watt-dropdown-panel{--watt-input-color: var(--watt-typography-text-color);padding:0}.watt-dropdown-panel .mat-select-search-inner-row .mat-select-search-input,.watt-dropdown-panel mat-option.contains-mat-select-search{height:48px}.watt-dropdown-panel:not(.watt-dropdown-panel-chip-mode){min-width:calc(100% + 2px)!important;margin-top:-36px;margin-left:-1px;min-height:48px}.watt-dropdown-panel .mat-mdc-checkbox.mat-select-search-toggle-all-checkbox{padding:0;margin:0 var(--watt-space-m)}.watt-dropdown-panel .mat-datepicker-content .mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: transparent;--mat-mdc-button-ripple-color: transparent}.watt-dropdown-panel.watt-dropdown-panel-chip-mode{margin-top:4px}.watt-dropdown-panel.mat-mdc-select-search-panel{transform:scaleY(1)!important}.watt-dropdown-panel .mat-mdc-option.mdc-list-item.contains-mat-select-search.mat-mdc-option-multiple{background-color:transparent}.watt-dropdown-panel ngx-mat-select-search .mat-select-search-inner-multiple .mat-select-search-inner-row{margin-left:5px}.watt-dropdown-panel ngx-mat-select-search .mat-mdc-checkbox.mat-select-search-toggle-all-checkbox{margin:0}.watt-dropdown-panel .mdc-list-item .mat-select-search-input,.watt-dropdown-panel .mat-mdc-option.mdc-list-item,.watt-dropdown-panel .mat-select-search-no-entries-found{font-size:.875rem;line-height:1.25rem;font-weight:400;text-transform:none;letter-spacing:0;color:var(--watt-input-color)}.watt-dropdown-panel .mat-mdc-optgroup-label{font-size:.875rem;line-height:1.25rem;font-weight:600;text-transform:none;letter-spacing:0;color:var(--watt-input-color)}.watt-dropdown-panel .mat-mdc-option.mdc-list-item .mat-select-search-no-entries-found{padding:var(--watt-space-s)}.watt-dropdown-panel .mat-checkbox-frame,.watt-dropdown-panel .mat-mdc-checkbox{border-color:var(--watt-color-primary)}.watt-dropdown-panel :not(.mat-mdc-option-multiple) .mat-pseudo-checkbox{display:none}.watt-dropdown-panel .mat-mdc-option-multiple .mat-pseudo-checkbox{display:inline-block}.watt-dropdown-panel .mat-pseudo-checkbox,.watt-dropdown-panel .mat-mdc-checkbox{color:var(--watt-color-primary)}.watt-dropdown-panel .mat-mdc-option{color:var(--watt-color-neutral-black);min-height:42px}.watt-dropdown-panel .mat-mdc-option[aria-disabled=true].contains-mat-select-search{margin-top:0;top:auto}.watt-dropdown-panel .mat-mdc-option.mdc-list-item.mat-mdc-option-active,.watt-dropdown-panel .mat-mdc-option.mdc-list-item.mdc-list-item--selected.mat-mdc-option-active:not(.mat-mdc-option-multiple),.watt-dropdown-panel .mat-mdc-option:hover:not(.mat-mdc-option-disabled,.contains-mat-select-search),.watt-dropdown-panel .mat-mdc-option:focus:not(.mat-mdc-option-disabled){background-color:var(--watt-color-primary-light)}.watt-dropdown-panel .mat-mdc-option .mat-mdc-select-search-no-entries-found{text-align:center;padding:0}.watt-dropdown-panel .mat-mdc-option.mat-mdc-option-disabled{color:var(--watt-color-neutral-grey-400);cursor:not-allowed}.watt-dropdown-panel .mat-mdc-select-search-input:not(.mat-mdc-select-search-hidden){color:var(--watt-color-neutral-black)}.watt-dropdown-panel .mat-mdc-select-search-clear{background-color:var(--watt-color-neutral-white);color:var(--watt-color-neutral-grey-400)}.watt-dropdown-panel .mat-mdc-select-search-clear mat-icon{line-height:20px!important}\n"] }]
345
345
  }], ctorParameters: () => [], propDecorators: { matSelect: [{ type: i0.ViewChild, args: ['matSelect', { isSignal: true }] }], hideSearch: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideSearch", required: false }] }], panelWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelWidth", required: false }] }], getCustomTrigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "getCustomTrigger", required: false }] }], chipMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "chipMode", required: false }] }], disableSelectedMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableSelectedMode", required: false }] }], sortDirection: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortDirection", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }, { type: i0.Output, args: ["optionsChange"] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], showResetOption: [{ type: i0.Input, args: [{ isSignal: true, alias: "showResetOption", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], noOptionsFoundLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "noOptionsFoundLabel", required: false }] }] } });
346
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS9kcm9wZG93bi93YXR0LWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL2Ryb3Bkb3duL3dhdHQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQ0wsS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUVOLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixpQkFBaUIsRUFDakIsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxTQUFTLEVBRVQsV0FBVyxFQUdYLGtCQUFrQixFQUNsQixtQkFBbUIsR0FFcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQWEsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFF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ZVxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjAgRW5lcmdpbmV0IERhdGFIdWIgQS9TXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8jZW5kcmVnaW9uXG5pbXBvcnQge1xuICBpbnB1dCxcbiAgbW9kZWwsXG4gIHNpZ25hbCxcbiAgZWZmZWN0LFxuICBPbkluaXQsXG4gIGluamVjdCxcbiAgQ29tcG9uZW50LFxuICB2aWV3Q2hpbGQsXG4gIERlc3Ryb3lSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBjb21wdXRlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIE5nQ29udHJvbCxcbiAgVmFsaWRhdG9yRm4sXG4gIEZvcm1Db250cm9sLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBBc3luY1ZhbGlkYXRvckZuLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBSeFB1c2ggfSBmcm9tICdAcngtYW5ndWxhci90ZW1wbGF0ZS9wdXNoJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuaW1wb3J0IHsgb2YsIFJlcGxheVN1YmplY3QsIG1hcCwgdGFrZSwgbWVyZ2VXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZ3hNYXRTZWxlY3RTZWFyY2hNb2R1bGUgfSBmcm9tICduZ3gtbWF0LXNlbGVjdC1zZWFyY2gnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlLCBNYXRTZWxlY3QgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgTWF0T3B0aW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5cbmltcG9ydCB7IFdhdHRJY29uQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2ljb24nO1xuaW1wb3J0IHsgV2F0dEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2ZpZWxkJztcbmltcG9ydCB7IFdhdHRNZW51Q2hpcENvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9jaGlwJztcblxuaW1wb3J0IHR5cGUgeyBXYXR0RHJvcGRvd25WYWx1ZSB9IGZyb20gJy4vd2F0dC1kcm9wZG93bi12YWx1ZSc7XG5pbXBvcnQgdHlwZSB7XG4gIFdhdHREcm9wZG93bk9wdGlvbnMsXG4gIFdhdHREcm9wZG93bk9wdGlvbkdyb3VwLFxuICBXYXR0RHJvcGRvd25Hcm91cGVkT3B0aW9ucyxcbn0gZnJvbSAnLi93YXR0LWRyb3Bkb3duLW9wdGlvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dhdHQtZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vd2F0dC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dhdHQtZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW1wb3J0czogW1xuICAgIFJ4UHVzaCxcbiAgICBOZ0NsYXNzLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRPcHRpb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBOZ3hNYXRTZWxlY3RTZWFyY2hNb2R1bGUsXG5cbiAgICBXYXR0SWNvbkNvbXBvbmVudCxcbiAgICBXYXR0RmllbGRDb21wb25lbnQsXG4gICAgV2F0dE1lbnVDaGlwQ29tcG9uZW50LFxuICBdLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLndhdHQtZmllbGQtZGlzYWJsZWRdJzogJ2lzRGlzYWJsZWQoKScsXG4gICAgJ1tjbGFzcy53YXR0LWNoaXAtbW9kZV0nOiAnY2hpcE1vZGUoKScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIFdhdHREcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xuICBwcml2YXRlIHBhcmVudENvbnRyb2xEaXJlY3RpdmUgPSBpbmplY3QoTmdDb250cm9sLCB7IGhvc3Q6IHRydWUgfSk7XG4gIHByaXZhdGUgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSB2YWxpZGF0ZVBhcmVudD86IFZhbGlkYXRvckZuO1xuICBwcml2YXRlIHZhbGlkYXRlUGFyZW50QXN5bmM/OiBBc3luY1ZhbGlkYXRvckZuO1xuICBwcml2YXRlIF9vcHRpb25zOiBXYXR0RHJvcGRvd25PcHRpb25zID0gW107XG4gIHByaXZhdGUgX2dyb3VwZWRPcHRpb25zOiBXYXR0RHJvcGRvd25Hcm91cGVkT3B0aW9ucyA9IFtdO1xuICBwYXJlbnRDb250cm9sOiBGb3JtQ29udHJvbCB8IG51bGwgPSBudWxsO1xuICBtYXRTZWxlY3RDb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqIENvbnRyb2wgZm9yIHRoZSBNYXRTZWxlY3QgZmlsdGVyIGtleXdvcmRcbiAgICovXG4gIGZpbHRlckNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2Ygb3B0aW9ucyBmaWx0ZXJlZCBieSBzZWFyY2gga2V5d29yZFxuICAgKi9cbiAgZmlsdGVyZWRPcHRpb25zJCA9IG5ldyBSZXBsYXlTdWJqZWN0PFdhdHREcm9wZG93bk9wdGlvbnM+KDEpO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGdyb3VwZWQgb3B0aW9ucyBmaWx0ZXJlZCBieSBzZWFyY2gga2V5d29yZFxuICAgKi9cbiAgZmlsdGVyZWRHcm91cGVkT3B0aW9ucyQgPSBuZXcgUmVwbGF5U3ViamVjdDxXYXR0RHJvcGRvd25Hcm91cGVkT3B0aW9ucz4oMSk7XG5cbiAgbWVyZ2VkRmlsdGVyZWRPcHRpb25zJCA9IHRoaXMuZmlsdGVyZWRPcHRpb25zJC5waXBlKFxuICAgIG1lcmdlV2l0aCh0aGlzLmZpbHRlcmVkR3JvdXBlZE9wdGlvbnMkKSxcbiAgICB0YWtlKDEpLFxuICAgIG1hcCgob3B0aW9ucykgPT4ge1xuICAgICAgaWYgKHRoaXMuaGFzR3JvdXBzKCkpIHtcbiAgICAgICAgcmV0dXJuIChvcHRpb25zIGFzIFdhdHREcm9wZG93bkdyb3VwZWRPcHRpb25zKVxuICAgICAgICAgIC5mbGF0TWFwKChncm91cCkgPT4gKCdvcHRpb25zJyBpbiBncm91cCA/IGdyb3VwLm9wdGlvbnMgOiBbXSkpXG4gICAgICAgICAgLm1hcCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gKG9wdGlvbnMgYXMgV2F0dERyb3Bkb3duT3B0aW9ucykubWFwKChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSk7XG4gICAgfSlcbiAgKTtcblxuICBlbURhc2ggPSAn4oCUJztcbiAgaXNUb2dnbGVBbGxDaGVja2VkID0gZmFsc2U7XG4gIGlzVG9nZ2xlQWxsSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICBpc0Rpc2FibGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICBnZXQgc2hvd1RyaWdnZXJWYWx1ZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBtdWx0aXBsZSA9IHRoaXMubXVsdGlwbGUoKTtcbiAgICByZXR1cm4gKG11bHRpcGxlICYmXG4gICAgICB0aGlzLm1hdFNlbGVjdENvbnRyb2wudmFsdWU/Lmxlbmd0aCA9PT0gMSAmJlxuICAgICAgdGhpcy5tYXRTZWxlY3RDb250cm9sLnZhbHVlWzBdICE9PSAnJykgfHxcbiAgICAgICghbXVsdGlwbGUgJiYgdGhpcy5tYXRTZWxlY3QoKT8udHJpZ2dlclZhbHVlKVxuICAgICAgPyB0cnVlXG4gICAgICA6IGZhbHNlO1xuICB9XG5cbiAgZ2V0IHNob3dDaGlwTGFiZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsdGlwbGUoKSAmJiB0aGlzLm1hdFNlbGVjdENvbnRyb2wudmFsdWUgJiYgdGhpcy5tYXRTZWxlY3RDb250cm9sLnZhbHVlLmxlbmd0aCA+IDFcbiAgICAgID8gdHJ1ZVxuICAgICAgOiBmYWxzZTtcbiAgfVxuXG4gIG1hdFNlbGVjdCA9IHZpZXdDaGlsZDxNYXRTZWxlY3Q+KCdtYXRTZWxlY3QnKTtcbiAgaGlkZVNlYXJjaCA9IGlucHV0KGZhbHNlKTtcbiAgcGFuZWxXaWR0aCA9IGlucHV0PG51bGwgfCAnYXV0byc+KG51bGwpO1xuICBnZXRDdXN0b21UcmlnZ2VyID0gaW5wdXQ8KHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSkgPT4gc3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG1vZGUgb2YgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgY2hpcE1vZGUgPSBpbnB1dChmYWxzZSk7XG4gIGRpc2FibGVTZWxlY3RlZE1vZGUgPSBpbnB1dChmYWxzZSk7XG4gIHNvcnREaXJlY3Rpb24gPSBpbnB1dDwnYXNjJyB8ICdkZXNjJz4oKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgb3B0aW9ucyBmb3IgdGhlIGRyb3Bkb3duLlxuICAgKiBDYW4gYmUgYSBmbGF0IGFycmF5IG9mIG9wdGlvbnMgb3IgYW4gYXJyYXkgY29udGFpbmluZyBib3RoIG9wdGlvbnMgYW5kIG9wdGlvbiBncm91cHMuXG4gICAqL1xuICBvcHRpb25zID0gbW9kZWw8V2F0dERyb3Bkb3duT3B0aW9ucyB8IFdhdHREcm9wZG93bkdyb3VwZWRPcHRpb25zPihbXSk7XG5cbiAgLyoqXG4gICAqIFNldHMgc3VwcG9ydCBmb3Igc2VsZWN0aW5nIG11bHRpcGxlIGRyb3Bkb3duIG9wdGlvbnMuXG4gICAqL1xuICBtdWx0aXBsZSA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogU2V0cyBzdXBwb3J0IGZvciBoaWRpbmcgdGhlIHJlc2V0IG9wdGlvbiBpbiBcInNpbmdsZVwiIHNlbGVjdCBtb2RlLlxuICAgKi9cbiAgc2hvd1Jlc2V0T3B0aW9uID0gaW5wdXQodHJ1ZSk7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHBsYWNlaG9sZGVyIGZvciB0aGUgZHJvcGRvd24uXG4gICAqL1xuICBwbGFjZWhvbGRlciA9IGlucHV0KCcnKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgbGFiZWwgZm9yIHRoZSBkcm9wZG93bi5cbiAgICovXG4gIGxhYmVsID0gaW5wdXQoJycpO1xuXG4gIC8qKlxuICAgKiBMYWJlbCB0byBiZSBzaG93biB3aGVuIG5vIG9wdGlvbnMgYXJlIGZvdW5kIGFmdGVyIGZpbHRlcmluZy5cbiAgICpcbiAgICogTm90ZTogVGhlIGxhYmVsIGlzIHZpc2libGUgaW4gXCJtdWx0aXBsZVwiIG1vZGUgb25seS5cbiAgICovXG4gIG5vT3B0aW9uc0ZvdW5kTGFiZWwgPSBpbnB1dCgnJyk7XG5cbiAgaGFzR3JvdXBzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMoKTtcbiAgICByZXR1cm4gb3B0aW9ucy5zb21lKFxuICAgICAgKG9wdGlvbikgPT4gJ29wdGlvbnMnIGluIG9wdGlvbiAmJiBBcnJheS5pc0FycmF5KChvcHRpb24gYXMgV2F0dERyb3Bkb3duT3B0aW9uR3JvdXApLm9wdGlvbnMpXG4gICAgKTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMoKTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnNDb3B5ID0gWy4uLm9wdGlvbnNdO1xuXG4gICAgICAgIGlmICh0aGlzLmhhc0dyb3VwcygpKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVHcm91cChvcHRpb25zQ29weSBhcyBXYXR0RHJvcGRvd25Hcm91cGVkT3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVGbGF0KG9wdGlvbnNDb3B5IGFzIFdhdHREcm9wZG93bk9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5wYXJlbnRDb250cm9sRGlyZWN0aXZlLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVGbGF0KG9wdGlvbnNDb3B5OiBXYXR0RHJvcGRvd25PcHRpb25zKSB7XG4gICAgaWYgKHRoaXMuc29ydERpcmVjdGlvbigpKSB7XG4gICAgICBvcHRpb25zQ29weSA9IHRoaXMuc29ydE9wdGlvbnMob3B0aW9uc0NvcHkpO1xuICAgIH1cblxuICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zQ29weTtcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyQubmV4dCh0aGlzLl9vcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlR3JvdXAob3B0aW9uc0NvcHk6IFdhdHREcm9wZG93bkdyb3VwZWRPcHRpb25zKSB7XG4gICAgdGhpcy5fZ3JvdXBlZE9wdGlvbnMgPSB0aGlzLnByb2Nlc3NHcm91cGVkT3B0aW9ucyhvcHRpb25zQ29weSk7XG4gICAgdGhpcy5maWx0ZXJlZEdyb3VwZWRPcHRpb25zJC5uZXh0KHRoaXMuX2dyb3VwZWRPcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0dyb3VwZWRPcHRpb25zKG9wdGlvbnM6IFdhdHREcm9wZG93bkdyb3VwZWRPcHRpb25zKTogV2F0dERyb3Bkb3duR3JvdXBlZE9wdGlvbnMge1xuICAgIHJldHVybiBvcHRpb25zLm1hcCgoZ3JvdXApID0+IHtcbiAgICAgIGlmICh0aGlzLnNvcnREaXJlY3Rpb24oKSkge1xuICAgICAgICBncm91cC5vcHRpb25zID0gdGhpcy5zb3J0T3B0aW9ucyhncm91cC5vcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBncm91cDtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubGlzdGVuRm9yRmlsdGVyRmllbGRWYWx1ZUNoYW5nZXMoKTtcbiAgICB0aGlzLmluaXRpYWxpemVQcm9wZXJ0aWVzRnJvbVBhcmVudCgpO1xuICAgIHRoaXMuYmluZFBhcmVudFZhbGlkYXRvcnNUb0NvbnRyb2woKTtcbiAgICB0aGlzLmJpbmRDb250cm9sVG9QYXJlbnQoKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IFdhdHREcm9wZG93blZhbHVlKSB7XG4gICAgdGhpcy5tYXRTZWxlY3RDb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2VGbjogKHZhbHVlOiBXYXR0RHJvcGRvd25WYWx1ZSkgPT4gdm9pZCkge1xuICAgIHRoaXMuY2hhbmdlUGFyZW50VmFsdWUgPSBvbkNoYW5nZUZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaEZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5tYXJrUGFyZW50Q29udHJvbEFzVG91Y2hlZCA9IG9uVG91Y2hGbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoc2hvdWxkRGlzYWJsZTogYm9vbGVhbikge1xuICAgIHRoaXMuaXNEaXNhYmxlZC5zZXQoc2hvdWxkRGlzYWJsZSk7XG4gICAgaWYgKHNob3VsZERpc2FibGUpIHtcbiAgICAgIHRoaXMubWF0U2VsZWN0Q29udHJvbC5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWF0U2VsZWN0Q29udHJvbC5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICBvblRvZ2dsZUFsbCh0b2dnbGVBbGxTdGF0ZTogYm9vbGVhbikge1xuICAgIHRoaXMubWVyZ2VkRmlsdGVyZWRPcHRpb25zJC5zdWJzY3JpYmUoKGZpbHRlcmVkT3B0aW9uczogc3RyaW5nW10pID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnNUb1NlbGVjdCA9IHRvZ2dsZUFsbFN0YXRlID8gZmlsdGVyZWRPcHRpb25zIDogW107XG4gICAgICB0aGlzLm1hdFNlbGVjdENvbnRyb2wucGF0Y2hWYWx1ZShvcHRpb25zVG9TZWxlY3QpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNvcnRPcHRpb25zKG9wdGlvbnM6IFdhdHREcm9wZG93bk9wdGlvbnMpOiBXYXR0RHJvcGRvd25PcHRpb25zIHtcbiAgICByZXR1cm4gWy4uLm9wdGlvbnNdLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnNvcnREaXJlY3Rpb24oKSA9PT0gJ2FzYydcbiAgICAgICAgPyBhLmRpc3BsYXlWYWx1ZS5sb2NhbGVDb21wYXJlKGIuZGlzcGxheVZhbHVlKVxuICAgICAgICA6IGIuZGlzcGxheVZhbHVlLmxvY2FsZUNvbXBhcmUoYS5kaXNwbGF5VmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Gb3JGaWx0ZXJGaWVsZFZhbHVlQ2hhbmdlcygpIHtcbiAgICB0aGlzLmZpbHRlckNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmZpbHRlck9wdGlvbnMoKTtcblxuICAgICAgaWYgKHRoaXMubXVsdGlwbGUoKSkge1xuICAgICAgICB0aGlzLmRldGVybWluZVRvZ2dsZUFsbENoZWNrYm94U3RhdGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcHJpdmF0ZSBjaGFuZ2VQYXJlbnRWYWx1ZSA9ICh2YWx1ZTogV2F0dERyb3Bkb3duVmFsdWUpID0+IHtcbiAgICAvLyBJbnRlbnRpb25hbGx5IGxlZnQgZW1wdHlcbiAgfTtcblxuICBwcml2YXRlIG1hcmtQYXJlbnRDb250cm9sQXNUb3VjaGVkID0gKCkgPT4ge1xuICAgIC8vIEludGVudGlvbmFsbHkgbGVmdCBlbXB0eVxuICB9O1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqXG4gICAqIFN0b3JlIHRoZSBwYXJlbnQgY29udHJvbCwgaXRzIHZhbGlkYXRvcnMgYW5kIGFzeW5jIHZhbGlkYXRvcnMgaW4gcHJvcGVydGllc1xuICAgKiBvZiB0aGlzIGNvbXBvbmVudC5cbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVByb3BlcnRpZXNGcm9tUGFyZW50KCkge1xuICAgIHRoaXMucGFyZW50Q29udHJvbCA9IHRoaXMucGFyZW50Q29udHJvbERpcmVjdGl2ZS5jb250cm9sIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcblxuICAgIHRoaXMudmFsaWRhdGVQYXJlbnQgPVxuICAgICAgKHRoaXMucGFyZW50Q29udHJvbC52YWxpZGF0b3IgJiYgdGhpcy5wYXJlbnRDb250cm9sLnZhbGlkYXRvci5iaW5kKHRoaXMucGFyZW50Q29udHJvbCkpIHx8XG4gICAgICAoKCkgPT4gbnVsbCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlUGFyZW50QXN5bmMgPVxuICAgICAgKHRoaXMucGFyZW50Q29udHJvbC5hc3luY1ZhbGlkYXRvciAmJlxuICAgICAgICB0aGlzLnBhcmVudENvbnRyb2wuYXN5bmNWYWxpZGF0b3IuYmluZCh0aGlzLnBhcmVudENvbnRyb2wpKSB8fFxuICAgICAgKCgpID0+IG9mKG51bGwpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqXG4gICAqIEluaGVyaXQgdmFsaWRhdG9ycyBmcm9tIHBhcmVudCBmb3JtIGNvbnRyb2wuXG4gICAqL1xuICBwcml2YXRlIGJpbmRQYXJlbnRWYWxpZGF0b3JzVG9Db250cm9sKCkge1xuICAgIGNvbnN0IHZhbGlkYXRvcnMgPSAhdGhpcy5tYXRTZWxlY3RDb250cm9sLnZhbGlkYXRvclxuICAgICAgPyBbdGhpcy52YWxpZGF0ZVBhcmVudF1cbiAgICAgIDogQXJyYXkuaXNBcnJheSh0aGlzLm1hdFNlbGVjdENvbnRyb2wudmFsaWRhdG9yKVxuICAgICAgICA/IFsuLi50aGlzLm1hdFNlbGVjdENvbnRyb2wudmFsaWRhdG9yLCB0aGlzLnZhbGlkYXRlUGFyZW50XVxuICAgICAgICA6IFt0aGlzLm1hdFNlbGVjdENvbnRyb2wudmFsaWRhdG9yLCB0aGlzLnZhbGlkYXRlUGFyZW50XTtcbiAgICB0aGlzLm1hdFNlbGVjdENvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcblxuICAgIGNvbnN0IGFzeW5jVmFsaWRhdG9ycyA9ICF0aGlzLm1hdFNlbGVjdENvbnRyb2wuYXN5bmNWYWxpZGF0b3JcbiAgICAgID8gW3RoaXMudmFsaWRhdGVQYXJlbnRBc3luY11cbiAgICAgIDogQXJyYXkuaXNBcnJheSh0aGlzLm1hdFNlbGVjdENvbnRyb2wuYXN5bmNWYWxpZGF0b3IpXG4gICAgICAgID8gWy4uLnRoaXMubWF0U2VsZWN0Q29udHJvbC5hc3luY1ZhbGlkYXRvciwgdGhpcy52YWxpZGF0ZVBhcmVudEFzeW5jXVxuICAgICAgICA6IFt0aGlzLm1hdFNlbGVjdENvbnRyb2wuYXN5bmNWYWxpZGF0b3IsIHRoaXMudmFsaWRhdGVQYXJlbnRBc3luY107XG4gICAgdGhpcy5tYXRTZWxlY3RDb250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyhhc3luY1ZhbGlkYXRvcnMpO1xuXG4gICAgdGhpcy5tYXRTZWxlY3RDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqXG4gICAqIEVtaXQgdmFsdWVzIHRvIHRoZSBwYXJlbnQgZm9ybSBjb250cm9sIHdoZW4gb3VyIGZvcm0gY29udHJvbCdzIHZhbHVlXG4gICAqIGNoYW5nZXMuXG4gICAqXG4gICAqIFJlZmxlY3QgcGFyZW50IHZhbGlkYXRpb24gZXJyb3JzIGluIG91ciBmb3JtIGNvbnRyb2wuXG4gICAqL1xuICBwcml2YXRlIGJpbmRDb250cm9sVG9QYXJlbnQoKSB7XG4gICAgdGhpcy5oYW5kbGVWYWx1ZUNoYW5nZSgpO1xuICAgIHRoaXMuaGFuZGxlU3RhdHVzQ2hhbmdlKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVN0YXR1c0NoYW5nZSgpIHtcbiAgICB0aGlzLnBhcmVudENvbnRyb2w/LnN0YXR1c0NoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgIC4uLnRoaXMucGFyZW50Q29udHJvbD8uZXJyb3JzLFxuICAgICAgICAgICAgfSkgYXMgVmFsaWRhdGlvbkVycm9yc1xuICAgICAgICApLFxuICAgICAgICBtYXAoKGVycm9ycykgPT4gKE9iamVjdC5rZXlzKGVycm9ycykubGVuZ3RoID4gMCA/IGVycm9ycyA6IG51bGwpKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGVycm9ycykgPT4ge1xuICAgICAgICB0aGlzLm1hdFNlbGVjdENvbnRyb2wuc2V0RXJyb3JzKGVycm9ycyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVmFsdWVDaGFuZ2UoKSB7XG4gICAgdGhpcy5tYXRTZWxlY3RDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgodmFsdWUpID0+ICh2YWx1ZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHZhbHVlKSksXG4gICAgICAgIG1hcCgodmFsdWU6IFdhdHREcm9wZG93blZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBXYXR0RHJvcGRvd25WYWx1ZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSgpKSB7XG4gICAgICAgICAgdGhpcy5kZXRlcm1pbmVUb2dnbGVBbGxDaGVja2JveFN0YXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1hcmtQYXJlbnRDb250cm9sQXNUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMuY2hhbmdlUGFyZW50VmFsdWUodmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlck9wdGlvbnMoKSB7XG4gICAgaWYgKCF0aGlzLl9vcHRpb25zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VhcmNoID0gKHRoaXMuZmlsdGVyQ29udHJvbC52YWx1ZSBhcyBzdHJpbmcpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKCFzZWFyY2gpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zJC5uZXh0KHRoaXMuX29wdGlvbnMuc2xpY2UoKSk7XG5cbiAgICAgIGlmICh0aGlzLmhhc0dyb3VwcygpKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRHcm91cGVkT3B0aW9ucyQubmV4dCh0aGlzLl9ncm91cGVkT3B0aW9ucy5zbGljZSgpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaWx0ZXJlZEZsYXRPcHRpb25zID0gdGhpcy5fb3B0aW9ucy5maWx0ZXIoXG4gICAgICAob3B0aW9uKSA9PiBvcHRpb24uZGlzcGxheVZhbHVlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2gpID4gLTFcbiAgICApO1xuXG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMkLm5leHQoZmlsdGVyZWRGbGF0T3B0aW9ucyk7XG5cbiAgICBpZiAodGhpcy5oYXNHcm91cHMoKSkge1xuICAgICAgdGhpcy5maWx0ZXJHcm91cHMoc2VhcmNoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckdyb3VwcyhzZWFyY2g6IHN0cmluZykge1xuICAgIGNvbnN0IGZpbHRlcmVkR3JvdXBzID0gdGhpcy5fZ3JvdXBlZE9wdGlvbnNcbiAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKCEoJ29wdGlvbnMnIGluIGl0ZW0pKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsdGVyZWRHcm91cE9wdGlvbnMgPSBpdGVtLm9wdGlvbnMuZmlsdGVyKFxuICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbi5kaXNwbGF5VmFsdWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaCkgPiAtMVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZEdyb3VwT3B0aW9ucy5sZW5ndGggPiAwID8geyAuLi5pdGVtLCBvcHRpb25zOiBmaWx0ZXJlZEdyb3VwT3B0aW9ucyB9IDogbnVsbDtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIFdhdHREcm9wZG93bkdyb3VwZWRPcHRpb25zO1xuXG4gICAgdGhpcy5maWx0ZXJlZEdyb3VwZWRPcHRpb25zJC5uZXh0KGZpbHRlcmVkR3JvdXBzKTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZXJtaW5lVG9nZ2xlQWxsQ2hlY2tib3hTdGF0ZSgpIHtcbiAgICB0aGlzLm1lcmdlZEZpbHRlcmVkT3B0aW9ucyQuc3Vic2NyaWJlKChmaWx0ZXJlZE9wdGlvbnM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbnMgPSB0aGlzLm1hdFNlbGVjdENvbnRyb2wudmFsdWU7XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdGVkT3B0aW9ucykpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRGaWx0ZXJlZE9wdGlvbnMgPSBmaWx0ZXJlZE9wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+XG4gICAgICAgICAgc2VsZWN0ZWRPcHRpb25zLmluY2x1ZGVzKG9wdGlvbilcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmlzVG9nZ2xlQWxsSW5kZXRlcm1pbmF0ZSA9XG4gICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJlZE9wdGlvbnMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIHNlbGVjdGVkRmlsdGVyZWRPcHRpb25zLmxlbmd0aCA8IGZpbHRlcmVkT3B0aW9ucy5sZW5ndGg7XG5cbiAgICAgICAgdGhpcy5pc1RvZ2dsZUFsbENoZWNrZWQgPVxuICAgICAgICAgIHNlbGVjdGVkRmlsdGVyZWRPcHRpb25zLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBzZWxlY3RlZEZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPT09IGZpbHRlcmVkT3B0aW9ucy5sZW5ndGg7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cbkBsaWNlbnNlXG5Db3B5cmlnaHQgMjAyMCBFbmVyZ2luZXQgRGF0YUh1YiBBL1NcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuLS0+XG48d2F0dC1maWVsZFxuICBbY29udHJvbF09XCJwYXJlbnRDb250cm9sXCJcbiAgW2NoaXBNb2RlXT1cImNoaXBNb2RlKClcIlxuICBbbGFiZWxdPVwibGFiZWwoKVwiXG4gIChjbGljayk9XCJtYXRTZWxlY3Qub3BlbigpXCJcbj5cbiAgQGlmIChjaGlwTW9kZSgpKSB7XG4gICAgPHdhdHQtbWVudS1jaGlwXG4gICAgICBbb3BlbmVkXT1cIm1hdFNlbGVjdC5wYW5lbE9wZW5cIlxuICAgICAgKHRvZ2dsZSk9XCJtYXRTZWxlY3Qub3BlbigpXCJcbiAgICAgIFtzZWxlY3RlZF09XCIhIW1hdFNlbGVjdD8udHJpZ2dlclZhbHVlICYmICFkaXNhYmxlU2VsZWN0ZWRNb2RlKClcIlxuICAgICAgW2Rpc2FibGVkXT1cIm1hdFNlbGVjdENvbnRyb2wuZGlzYWJsZWRcIlxuICAgID5cbiAgICAgIHt7IHBsYWNlaG9sZGVyKCkgfX1cbiAgICAgIEBpZiAoc2hvd1RyaWdnZXJWYWx1ZSkge1xuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICBAaWYgKHBsYWNlaG9sZGVyKCkpIHtcbiAgICAgICAgICAgIDpcbiAgICAgICAgICB9XG4gICAgICAgICAge3sgZ2V0Q3VzdG9tVHJpZ2dlcigpPy4obWF0U2VsZWN0LnZhbHVlKSA/PyBtYXRTZWxlY3Q/LnRyaWdnZXJWYWx1ZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICB9XG4gICAgICBAaWYgKHNob3dDaGlwTGFiZWwpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ3YXR0LWNoaXAtbGFiZWxcIj57eyBtYXRTZWxlY3RDb250cm9sLnZhbHVlPy5sZW5ndGggfX08L3NwYW4+XG4gICAgICB9XG4gICAgPC93YXR0LW1lbnUtY2hpcD5cbiAgfVxuXG4gIDxtYXQtc2VsZWN0XG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbCgpXCJcbiAgICBbZm9ybUNvbnRyb2xdPVwibWF0U2VsZWN0Q29udHJvbFwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICNtYXRTZWxlY3RcbiAgICBbcGFuZWxXaWR0aF09XCJwYW5lbFdpZHRoKClcIlxuICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZSgpXCJcbiAgICBbbmdDbGFzc109XCJ7IGNoaXA6IGNoaXBNb2RlKCksICdtYXQtbWRjLXNlbGVjdC1tdWx0aXBsZSc6IG11bHRpcGxlKCkgfVwiXG4gICAgW3BhbmVsQ2xhc3NdPVwie1xuICAgICAgJ3dhdHQtZHJvcGRvd24tcGFuZWwnOiB0cnVlLFxuICAgICAgJ3dhdHQtZHJvcGRvd24tcGFuZWwtY2hpcC1tb2RlJzogY2hpcE1vZGUoKSxcbiAgICAgICdtYXQtbWRjLXNlbGVjdC1wYW5lbC1tdWx0aXBsZSc6IG11bHRpcGxlKCksXG4gICAgfVwiXG4gID5cbiAgICA8IS0tIFdlIHVzZSB0aGlzIGluc3RlYWQgb2YgbmdJZiwgc2luY2UgaXQgd2lsbCB0cmlnZ2VyIGEgTkcwMTAwOiBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yOiBFeHByZXNzaW9uIGhhcyBjaGFuZ2VkIGFmdGVyIGl0IHdhcyBjaGVja2VkLiAtLT5cbiAgICA8bWF0LW9wdGlvbiBbc3R5bGUuZGlzcGxheV09XCIhaGlkZVNlYXJjaCgpID8gJ2Jsb2NrJyA6ICdub25lJ1wiPlxuICAgICAgPG5neC1tYXQtc2VsZWN0LXNlYXJjaFxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZmlsdGVyQ29udHJvbFwiXG4gICAgICAgIFtwbGFjZWhvbGRlckxhYmVsXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgICBjbG9zZUljb249XCJjbG9zZVwiXG4gICAgICAgIFtzaG93VG9nZ2xlQWxsQ2hlY2tib3hdPVwibXVsdGlwbGUoKVwiXG4gICAgICAgICh0b2dnbGVBbGwpPVwib25Ub2dnbGVBbGwoJGV2ZW50KVwiXG4gICAgICAgIFt0b2dnbGVBbGxDaGVja2JveENoZWNrZWRdPVwiaXNUb2dnbGVBbGxDaGVja2VkXCJcbiAgICAgICAgW3RvZ2dsZUFsbENoZWNrYm94SW5kZXRlcm1pbmF0ZV09XCJpc1RvZ2dsZUFsbEluZGV0ZXJtaW5hdGVcIlxuICAgICAgICBbbm9FbnRyaWVzRm91bmRMYWJlbF09XCJub09wdGlvbnNGb3VuZExhYmVsKClcIlxuICAgICAgPlxuICAgICAgICA8d2F0dC1pY29uIG5neE1hdFNlbGVjdFNlYXJjaENsZWFyIG5hbWU9XCJjbG9zZVwiIHNpemU9XCJzXCIgLz5cbiAgICAgIDwvbmd4LW1hdC1zZWxlY3Qtc2VhcmNoPlxuICAgIDwvbWF0LW9wdGlvbj5cblxuICAgIEBpZiAoIW11bHRpcGxlKCkgJiYgc2hvd1Jlc2V0T3B0aW9uKCkpIHtcbiAgICAgIDxtYXQtb3B0aW9uPnt7IGVtRGFzaCB9fTwvbWF0LW9wdGlvbj5cbiAgICB9XG5cbiAgICBAaWYgKGhhc0dyb3VwcygpKSB7XG4gICAgICBAZm9yIChpdGVtIG9mIGZpbHRlcmVkR3JvdXBlZE9wdGlvbnMkIHwgcHVzaDsgdHJhY2sgaXRlbSkge1xuICAgICAgICBAaWYgKFwib3B0aW9uc1wiIGluIGl0ZW0pIHtcbiAgICAgICAgICA8bWF0LW9wdGdyb3VwIFtsYWJlbF09XCJpdGVtLmxhYmVsXCIgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIj5cbiAgICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiBpdGVtLm9wdGlvbnM7IHRyYWNrIG9wdGlvbikge1xuICAgICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtbWRjLW9wdGlvbi1tdWx0aXBsZV09XCJtdWx0aXBsZSgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5kaXNwbGF5VmFsdWUgfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvbWF0LW9wdGdyb3VwPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAZm9yIChvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zJCB8IHB1c2g7IHRyYWNrIG9wdGlvbikge1xuICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uZGlzYWJsZWRcIlxuICAgICAgICAgIFtjbGFzcy5tYXQtbWRjLW9wdGlvbi1tdWx0aXBsZV09XCJtdWx0aXBsZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IG9wdGlvbi5kaXNwbGF5VmFsdWUgfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgfVxuICAgIH1cbiAgPC9tYXQtc2VsZWN0PlxuICA8bmctY29udGVudCAvPlxuICA8bmctY29udGVudCBuZ1Byb2plY3RBcz1cIndhdHQtZmllbGQtaGludFwiIHNlbGVjdD1cIndhdHQtZmllbGQtaGludFwiIC8+XG4gIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwid2F0dC1maWVsZC1lcnJvclwiIHNlbGVjdD1cIndhdHQtZmllbGQtZXJyb3JcIiAvPlxuPC93YXR0LWZpZWxkPlxuIl19
346
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS9kcm9wZG93bi93YXR0LWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL2Ryb3Bkb3duL3dhdHQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQ0wsS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUVOLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixpQkFBaUIsRUFDakIsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxTQUFTLEVBRVQsV0FBVyxFQUdYLGtCQUFrQixFQUNsQixtQkFBbUIsR0FFcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQWEsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFF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aW9uIExpY2Vuc2Vcbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2UyXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8vI2VuZHJlZ2lvblxuaW1wb3J0IHtcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBzaWduYWwsXG4gIGVmZmVjdCxcbiAgT25Jbml0LFxuICBpbmplY3QsXG4gIENvbXBvbmVudCxcbiAgdmlld0NoaWxkLFxuICBEZXN0cm95UmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgY29tcHV0ZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBOZ0NvbnRyb2wsXG4gIFZhbGlkYXRvckZuLFxuICBGb3JtQ29udHJvbCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgQXN5bmNWYWxpZGF0b3JGbixcbiAgVW50eXBlZEZvcm1Db250cm9sLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBDb250cm9sVmFsdWVBY2Nlc3Nvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgUnhQdXNoIH0gZnJvbSAnQHJ4LWFuZ3VsYXIvdGVtcGxhdGUvcHVzaCc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmltcG9ydCB7IG9mLCBSZXBsYXlTdWJqZWN0LCBtYXAsIHRha2UsIG1lcmdlV2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTmd4TWF0U2VsZWN0U2VhcmNoTW9kdWxlIH0gZnJvbSAnbmd4LW1hdC1zZWxlY3Qtc2VhcmNoJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSwgTWF0U2VsZWN0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuXG5pbXBvcnQgeyBXYXR0SWNvbkNvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9pY29uJztcbmltcG9ydCB7IFdhdHRGaWVsZENvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9maWVsZCc7XG5pbXBvcnQgeyBXYXR0TWVudUNoaXBDb21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvY2hpcCc7XG5cbmltcG9ydCB0eXBlIHsgV2F0dERyb3Bkb3duVmFsdWUgfSBmcm9tICcuL3dhdHQtZHJvcGRvd24tdmFsdWUnO1xuaW1wb3J0IHR5cGUge1xuICBXYXR0RHJvcGRvd25PcHRpb25zLFxuICBXYXR0RHJvcGRvd25PcHRpb25Hcm91cCxcbiAgV2F0dERyb3Bkb3duR3JvdXBlZE9wdGlvbnMsXG59IGZyb20gJy4vd2F0dC1kcm9wZG93bi1vcHRpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3YXR0LWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dhdHQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93YXR0LWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtcbiAgICBSeFB1c2gsXG4gICAgTmdDbGFzcyxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTWF0T3B0aW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTmd4TWF0U2VsZWN0U2VhcmNoTW9kdWxlLFxuXG4gICAgV2F0dEljb25Db21wb25lbnQsXG4gICAgV2F0dEZpZWxkQ29tcG9uZW50LFxuICAgIFdhdHRNZW51Q2hpcENvbXBvbmVudCxcbiAgXSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci53YXR0LWZpZWxkLWRpc2FibGVkXSc6ICdpc0Rpc2FibGVkKCknLFxuICAgICdbY2xhc3Mud2F0dC1jaGlwLW1vZGVdJzogJ2NoaXBNb2RlKCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBXYXR0RHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0IHtcbiAgcHJpdmF0ZSBwYXJlbnRDb250cm9sRGlyZWN0aXZlID0gaW5qZWN0KE5nQ29udHJvbCwgeyBob3N0OiB0cnVlIH0pO1xuICBwcml2YXRlIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHByaXZhdGUgdmFsaWRhdGVQYXJlbnQ/OiBWYWxpZGF0b3JGbjtcbiAgcHJpdmF0ZSB2YWxpZGF0ZVBhcmVudEFzeW5jPzogQXN5bmNWYWxpZGF0b3JGbjtcbiAgcHJpdmF0ZSBfb3B0aW9uczogV2F0dERyb3Bkb3duT3B0aW9ucyA9IFtdO1xuICBwcml2YXRlIF9ncm91cGVkT3B0aW9uczogV2F0dERyb3Bkb3duR3JvdXBlZE9wdGlvbnMgPSBbXTtcbiAgcGFyZW50Q29udHJvbDogRm9ybUNvbnRyb2wgfCBudWxsID0gbnVsbDtcbiAgbWF0U2VsZWN0Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCB8IG51bGw+KG51bGwpO1xuXG4gIC8qKlxuICAgKiBDb250cm9sIGZvciB0aGUgTWF0U2VsZWN0IGZpbHRlciBrZXl3b3JkXG4gICAqL1xuICBmaWx0ZXJDb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIG9wdGlvbnMgZmlsdGVyZWQgYnkgc2VhcmNoIGtleXdvcmRcbiAgICovXG4gIGZpbHRlcmVkT3B0aW9ucyQgPSBuZXcgUmVwbGF5U3ViamVjdDxXYXR0RHJvcGRvd25PcHRpb25zPigxKTtcblxuICAvKipcbiAgICogTGlzdCBvZiBncm91cGVkIG9wdGlvbnMgZmlsdGVyZWQgYnkgc2VhcmNoIGtleXdvcmRcbiAgICovXG4gIGZpbHRlcmVkR3JvdXBlZE9wdGlvbnMkID0gbmV3IFJlcGxheVN1YmplY3Q8V2F0dERyb3Bkb3duR3JvdXBlZE9wdGlvbnM+KDEpO1xuXG4gIG1lcmdlZEZpbHRlcmVkT3B0aW9ucyQgPSB0aGlzLmZpbHRlcmVkT3B0aW9ucyQucGlwZShcbiAgICBtZXJnZVdpdGgodGhpcy5maWx0ZXJlZEdyb3VwZWRPcHRpb25zJCksXG4gICAgdGFrZSgxKSxcbiAgICBtYXAoKG9wdGlvbnMpID0+IHtcbiAgICAgIGlmICh0aGlzLmhhc0dyb3VwcygpKSB7XG4gICAgICAgIHJldHVybiAob3B0aW9ucyBhcyBXYXR0RHJvcGRvd25Hcm91cGVkT3B0aW9ucylcbiAgICAgICAgICAuZmxhdE1hcCgoZ3JvdXApID0+ICgnb3B0aW9ucycgaW4gZ3JvdXAgPyBncm91cC5vcHRpb25zIDogW10pKVxuICAgICAgICAgIC5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChvcHRpb25zIGFzIFdhdHREcm9wZG93bk9wdGlvbnMpLm1hcCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUpO1xuICAgIH0pXG4gICk7XG5cbiAgZW1EYXNoID0gJ+KAlCc7XG4gIGlzVG9nZ2xlQWxsQ2hlY2tlZCA9IGZhbHNlO1xuICBpc1RvZ2dsZUFsbEluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgaXNEaXNhYmxlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgZ2V0IHNob3dUcmlnZ2VyVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbXVsdGlwbGUgPSB0aGlzLm11bHRpcGxlKCk7XG4gICAgcmV0dXJuIChtdWx0aXBsZSAmJlxuICAgICAgdGhpcy5tYXRTZWxlY3RDb250cm9sLnZhbHVlPy5sZW5ndGggPT09IDEgJiZcbiAgICAgIHRoaXMubWF0U2VsZWN0Q29udHJvbC52YWx1ZVswXSAhPT0gJycpIHx8XG4gICAgICAoIW11bHRpcGxlICYmIHRoaXMubWF0U2VsZWN0KCk/LnRyaWdnZXJWYWx1ZSlcbiAgICAgID8gdHJ1ZVxuICAgICAgOiBmYWxzZTtcbiAgfVxuXG4gIGdldCBzaG93Q2hpcExhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLm11bHRpcGxlKCkgJiYgdGhpcy5tYXRTZWxlY3RDb250cm9sLnZhbHVlICYmIHRoaXMubWF0U2VsZWN0Q29udHJvbC52YWx1ZS5sZW5ndGggPiAxXG4gICAgICA/IHRydWVcbiAgICAgIDogZmFsc2U7XG4gIH1cblxuICBtYXRTZWxlY3QgPSB2aWV3Q2hpbGQ8TWF0U2VsZWN0PignbWF0U2VsZWN0Jyk7XG4gIGhpZGVTZWFyY2ggPSBpbnB1dChmYWxzZSk7XG4gIHBhbmVsV2lkdGggPSBpbnB1dDxudWxsIHwgJ2F1dG8nPihudWxsKTtcbiAgZ2V0Q3VzdG9tVHJpZ2dlciA9IGlucHV0PCh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pID0+IHN0cmluZz4oKTtcblxuICAvKipcbiAgICogU2V0IHRoZSBtb2RlIG9mIHRoZSBkcm9wZG93bi5cbiAgICovXG4gIGNoaXBNb2RlID0gaW5wdXQoZmFsc2UpO1xuICBkaXNhYmxlU2VsZWN0ZWRNb2RlID0gaW5wdXQoZmFsc2UpO1xuICBzb3J0RGlyZWN0aW9uID0gaW5wdXQ8J2FzYycgfCAnZGVzYyc+KCk7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG9wdGlvbnMgZm9yIHRoZSBkcm9wZG93bi5cbiAgICogQ2FuIGJlIGEgZmxhdCBhcnJheSBvZiBvcHRpb25zIG9yIGFuIGFycmF5IGNvbnRhaW5pbmcgYm90aCBvcHRpb25zIGFuZCBvcHRpb24gZ3JvdXBzLlxuICAgKi9cbiAgb3B0aW9ucyA9IG1vZGVsPFdhdHREcm9wZG93bk9wdGlvbnMgfCBXYXR0RHJvcGRvd25Hcm91cGVkT3B0aW9ucz4oW10pO1xuXG4gIC8qKlxuICAgKiBTZXRzIHN1cHBvcnQgZm9yIHNlbGVjdGluZyBtdWx0aXBsZSBkcm9wZG93biBvcHRpb25zLlxuICAgKi9cbiAgbXVsdGlwbGUgPSBpbnB1dChmYWxzZSk7XG5cbiAgLyoqXG4gICAqIFNldHMgc3VwcG9ydCBmb3IgaGlkaW5nIHRoZSByZXNldCBvcHRpb24gaW4gXCJzaW5nbGVcIiBzZWxlY3QgbW9kZS5cbiAgICovXG4gIHNob3dSZXNldE9wdGlvbiA9IGlucHV0KHRydWUpO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwbGFjZWhvbGRlciBmb3IgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgcGxhY2Vob2xkZXIgPSBpbnB1dCgnJyk7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGxhYmVsIGZvciB0aGUgZHJvcGRvd24uXG4gICAqL1xuICBsYWJlbCA9IGlucHV0KCcnKTtcblxuICAvKipcbiAgICogTGFiZWwgdG8gYmUgc2hvd24gd2hlbiBubyBvcHRpb25zIGFyZSBmb3VuZCBhZnRlciBmaWx0ZXJpbmcuXG4gICAqXG4gICAqIE5vdGU6IFRoZSBsYWJlbCBpcyB2aXNpYmxlIGluIFwibXVsdGlwbGVcIiBtb2RlIG9ubHkuXG4gICAqL1xuICBub09wdGlvbnNGb3VuZExhYmVsID0gaW5wdXQoJycpO1xuXG4gIGhhc0dyb3VwcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zKCkgPz8gW107XG4gICAgcmV0dXJuIG9wdGlvbnMuc29tZShcbiAgICAgIChvcHRpb24pID0+ICdvcHRpb25zJyBpbiBvcHRpb24gJiYgQXJyYXkuaXNBcnJheSgob3B0aW9uIGFzIFdhdHREcm9wZG93bk9wdGlvbkdyb3VwKS5vcHRpb25zKVxuICAgICk7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zKCk7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICBjb25zdCBvcHRpb25zQ29weSA9IFsuLi5vcHRpb25zXTtcblxuICAgICAgICBpZiAodGhpcy5oYXNHcm91cHMoKSkge1xuICAgICAgICAgIHRoaXMuaGFuZGxlR3JvdXAob3B0aW9uc0NvcHkgYXMgV2F0dERyb3Bkb3duR3JvdXBlZE9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaGFuZGxlRmxhdChvcHRpb25zQ29weSBhcyBXYXR0RHJvcGRvd25PcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMucGFyZW50Q29udHJvbERpcmVjdGl2ZS52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRmxhdChvcHRpb25zQ29weTogV2F0dERyb3Bkb3duT3B0aW9ucykge1xuICAgIGlmICh0aGlzLnNvcnREaXJlY3Rpb24oKSkge1xuICAgICAgb3B0aW9uc0NvcHkgPSB0aGlzLnNvcnRPcHRpb25zKG9wdGlvbnNDb3B5KTtcbiAgICB9XG5cbiAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9uc0NvcHk7XG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMkLm5leHQodGhpcy5fb3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUdyb3VwKG9wdGlvbnNDb3B5OiBXYXR0RHJvcGRvd25Hcm91cGVkT3B0aW9ucykge1xuICAgIHRoaXMuX2dyb3VwZWRPcHRpb25zID0gdGhpcy5wcm9jZXNzR3JvdXBlZE9wdGlvbnMob3B0aW9uc0NvcHkpO1xuICAgIHRoaXMuZmlsdGVyZWRHcm91cGVkT3B0aW9ucyQubmV4dCh0aGlzLl9ncm91cGVkT3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NHcm91cGVkT3B0aW9ucyhvcHRpb25zOiBXYXR0RHJvcGRvd25Hcm91cGVkT3B0aW9ucyk6IFdhdHREcm9wZG93bkdyb3VwZWRPcHRpb25zIHtcbiAgICByZXR1cm4gb3B0aW9ucy5tYXAoKGdyb3VwKSA9PiB7XG4gICAgICBpZiAodGhpcy5zb3J0RGlyZWN0aW9uKCkpIHtcbiAgICAgICAgZ3JvdXAub3B0aW9ucyA9IHRoaXMuc29ydE9wdGlvbnMoZ3JvdXAub3B0aW9ucyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZ3JvdXA7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxpc3RlbkZvckZpbHRlckZpZWxkVmFsdWVDaGFuZ2VzKCk7XG4gICAgdGhpcy5pbml0aWFsaXplUHJvcGVydGllc0Zyb21QYXJlbnQoKTtcbiAgICB0aGlzLmJpbmRQYXJlbnRWYWxpZGF0b3JzVG9Db250cm9sKCk7XG4gICAgdGhpcy5iaW5kQ29udHJvbFRvUGFyZW50KCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBXYXR0RHJvcGRvd25WYWx1ZSkge1xuICAgIHRoaXMubWF0U2VsZWN0Q29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlRm46ICh2YWx1ZTogV2F0dERyb3Bkb3duVmFsdWUpID0+IHZvaWQpIHtcbiAgICB0aGlzLmNoYW5nZVBhcmVudFZhbHVlID0gb25DaGFuZ2VGbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hGbjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMubWFya1BhcmVudENvbnRyb2xBc1RvdWNoZWQgPSBvblRvdWNoRm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKHNob3VsZERpc2FibGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzRGlzYWJsZWQuc2V0KHNob3VsZERpc2FibGUpO1xuICAgIGlmIChzaG91bGREaXNhYmxlKSB7XG4gICAgICB0aGlzLm1hdFNlbGVjdENvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1hdFNlbGVjdENvbnRyb2wuZW5hYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgb25Ub2dnbGVBbGwodG9nZ2xlQWxsU3RhdGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm1lcmdlZEZpbHRlcmVkT3B0aW9ucyQuc3Vic2NyaWJlKChmaWx0ZXJlZE9wdGlvbnM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICBjb25zdCBvcHRpb25zVG9TZWxlY3QgPSB0b2dnbGVBbGxTdGF0ZSA/IGZpbHRlcmVkT3B0aW9ucyA6IFtdO1xuICAgICAgdGhpcy5tYXRTZWxlY3RDb250cm9sLnBhdGNoVmFsdWUob3B0aW9uc1RvU2VsZWN0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzb3J0T3B0aW9ucyhvcHRpb25zOiBXYXR0RHJvcGRvd25PcHRpb25zKTogV2F0dERyb3Bkb3duT3B0aW9ucyB7XG4gICAgcmV0dXJuIFsuLi5vcHRpb25zXS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5zb3J0RGlyZWN0aW9uKCkgPT09ICdhc2MnXG4gICAgICAgID8gYS5kaXNwbGF5VmFsdWUubG9jYWxlQ29tcGFyZShiLmRpc3BsYXlWYWx1ZSlcbiAgICAgICAgOiBiLmRpc3BsYXlWYWx1ZS5sb2NhbGVDb21wYXJlKGEuZGlzcGxheVZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9yRmlsdGVyRmllbGRWYWx1ZUNoYW5nZXMoKSB7XG4gICAgdGhpcy5maWx0ZXJDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zKCk7XG5cbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKCkpIHtcbiAgICAgICAgdGhpcy5kZXRlcm1pbmVUb2dnbGVBbGxDaGVja2JveFN0YXRlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHByaXZhdGUgY2hhbmdlUGFyZW50VmFsdWUgPSAodmFsdWU6IFdhdHREcm9wZG93blZhbHVlKSA9PiB7XG4gICAgLy8gSW50ZW50aW9uYWxseSBsZWZ0IGVtcHR5XG4gIH07XG5cbiAgcHJpdmF0ZSBtYXJrUGFyZW50Q29udHJvbEFzVG91Y2hlZCA9ICgpID0+IHtcbiAgICAvLyBJbnRlbnRpb25hbGx5IGxlZnQgZW1wdHlcbiAgfTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKlxuICAgKiBTdG9yZSB0aGUgcGFyZW50IGNvbnRyb2wsIGl0cyB2YWxpZGF0b3JzIGFuZCBhc3luYyB2YWxpZGF0b3JzIGluIHByb3BlcnRpZXNcbiAgICogb2YgdGhpcyBjb21wb25lbnQuXG4gICAqL1xuICBwcml2YXRlIGluaXRpYWxpemVQcm9wZXJ0aWVzRnJvbVBhcmVudCgpIHtcbiAgICB0aGlzLnBhcmVudENvbnRyb2wgPSB0aGlzLnBhcmVudENvbnRyb2xEaXJlY3RpdmUuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG5cbiAgICB0aGlzLnZhbGlkYXRlUGFyZW50ID1cbiAgICAgICh0aGlzLnBhcmVudENvbnRyb2wudmFsaWRhdG9yICYmIHRoaXMucGFyZW50Q29udHJvbC52YWxpZGF0b3IuYmluZCh0aGlzLnBhcmVudENvbnRyb2wpKSB8fFxuICAgICAgKCgpID0+IG51bGwpO1xuXG4gICAgdGhpcy52YWxpZGF0ZVBhcmVudEFzeW5jID1cbiAgICAgICh0aGlzLnBhcmVudENvbnRyb2wuYXN5bmNWYWxpZGF0b3IgJiZcbiAgICAgICAgdGhpcy5wYXJlbnRDb250cm9sLmFzeW5jVmFsaWRhdG9yLmJpbmQodGhpcy5wYXJlbnRDb250cm9sKSkgfHxcbiAgICAgICgoKSA9PiBvZihudWxsKSk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKlxuICAgKiBJbmhlcml0IHZhbGlkYXRvcnMgZnJvbSBwYXJlbnQgZm9ybSBjb250cm9sLlxuICAgKi9cbiAgcHJpdmF0ZSBiaW5kUGFyZW50VmFsaWRhdG9yc1RvQ29udHJvbCgpIHtcbiAgICBjb25zdCB2YWxpZGF0b3JzID0gIXRoaXMubWF0U2VsZWN0Q29udHJvbC52YWxpZGF0b3JcbiAgICAgID8gW3RoaXMudmFsaWRhdGVQYXJlbnRdXG4gICAgICA6IEFycmF5LmlzQXJyYXkodGhpcy5tYXRTZWxlY3RDb250cm9sLnZhbGlkYXRvcilcbiAgICAgICAgPyBbLi4udGhpcy5tYXRTZWxlY3RDb250cm9sLnZhbGlkYXRvciwgdGhpcy52YWxpZGF0ZVBhcmVudF1cbiAgICAgICAgOiBbdGhpcy5tYXRTZWxlY3RDb250cm9sLnZhbGlkYXRvciwgdGhpcy52YWxpZGF0ZVBhcmVudF07XG4gICAgdGhpcy5tYXRTZWxlY3RDb250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG5cbiAgICBjb25zdCBhc3luY1ZhbGlkYXRvcnMgPSAhdGhpcy5tYXRTZWxlY3RDb250cm9sLmFzeW5jVmFsaWRhdG9yXG4gICAgICA/IFt0aGlzLnZhbGlkYXRlUGFyZW50QXN5bmNdXG4gICAgICA6IEFycmF5LmlzQXJyYXkodGhpcy5tYXRTZWxlY3RDb250cm9sLmFzeW5jVmFsaWRhdG9yKVxuICAgICAgICA/IFsuLi50aGlzLm1hdFNlbGVjdENvbnRyb2wuYXN5bmNWYWxpZGF0b3IsIHRoaXMudmFsaWRhdGVQYXJlbnRBc3luY11cbiAgICAgICAgOiBbdGhpcy5tYXRTZWxlY3RDb250cm9sLmFzeW5jVmFsaWRhdG9yLCB0aGlzLnZhbGlkYXRlUGFyZW50QXN5bmNdO1xuICAgIHRoaXMubWF0U2VsZWN0Q29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnMoYXN5bmNWYWxpZGF0b3JzKTtcblxuICAgIHRoaXMubWF0U2VsZWN0Q29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKlxuICAgKiBFbWl0IHZhbHVlcyB0byB0aGUgcGFyZW50IGZvcm0gY29udHJvbCB3aGVuIG91ciBmb3JtIGNvbnRyb2wncyB2YWx1ZVxuICAgKiBjaGFuZ2VzLlxuICAgKlxuICAgKiBSZWZsZWN0IHBhcmVudCB2YWxpZGF0aW9uIGVycm9ycyBpbiBvdXIgZm9ybSBjb250cm9sLlxuICAgKi9cbiAgcHJpdmF0ZSBiaW5kQ29udHJvbFRvUGFyZW50KCkge1xuICAgIHRoaXMuaGFuZGxlVmFsdWVDaGFuZ2UoKTtcbiAgICB0aGlzLmhhbmRsZVN0YXR1c0NoYW5nZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdGF0dXNDaGFuZ2UoKSB7XG4gICAgdGhpcy5wYXJlbnRDb250cm9sPy5zdGF0dXNDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAuLi50aGlzLnBhcmVudENvbnRyb2w/LmVycm9ycyxcbiAgICAgICAgICAgIH0pIGFzIFZhbGlkYXRpb25FcnJvcnNcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKChlcnJvcnMpID0+IChPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCA+IDAgPyBlcnJvcnMgOiBudWxsKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChlcnJvcnMpID0+IHtcbiAgICAgICAgdGhpcy5tYXRTZWxlY3RDb250cm9sLnNldEVycm9ycyhlcnJvcnMpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVZhbHVlQ2hhbmdlKCkge1xuICAgIHRoaXMubWF0U2VsZWN0Q29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHZhbHVlKSA9PiAodmFsdWUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiB2YWx1ZSkpLFxuICAgICAgICBtYXAoKHZhbHVlOiBXYXR0RHJvcGRvd25WYWx1ZSkgPT4ge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogV2F0dERyb3Bkb3duVmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUoKSkge1xuICAgICAgICAgIHRoaXMuZGV0ZXJtaW5lVG9nZ2xlQWxsQ2hlY2tib3hTdGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tYXJrUGFyZW50Q29udHJvbEFzVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmNoYW5nZVBhcmVudFZhbHVlKHZhbHVlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJPcHRpb25zKCkge1xuICAgIGlmICghdGhpcy5fb3B0aW9ucykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlYXJjaCA9ICh0aGlzLmZpbHRlckNvbnRyb2wudmFsdWUgYXMgc3RyaW5nKS50cmltKCkudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmICghc2VhcmNoKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyQubmV4dCh0aGlzLl9vcHRpb25zLnNsaWNlKCkpO1xuXG4gICAgICBpZiAodGhpcy5oYXNHcm91cHMoKSkge1xuICAgICAgICB0aGlzLmZpbHRlcmVkR3JvdXBlZE9wdGlvbnMkLm5leHQodGhpcy5fZ3JvdXBlZE9wdGlvbnMuc2xpY2UoKSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVyZWRGbGF0T3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuZmlsdGVyKFxuICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLmRpc3BsYXlWYWx1ZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoKSA+IC0xXG4gICAgKTtcblxuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zJC5uZXh0KGZpbHRlcmVkRmxhdE9wdGlvbnMpO1xuXG4gICAgaWYgKHRoaXMuaGFzR3JvdXBzKCkpIHtcbiAgICAgIHRoaXMuZmlsdGVyR3JvdXBzKHNlYXJjaCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJHcm91cHMoc2VhcmNoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBmaWx0ZXJlZEdyb3VwcyA9IHRoaXMuX2dyb3VwZWRPcHRpb25zXG4gICAgICAubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIGlmICghKCdvcHRpb25zJyBpbiBpdGVtKSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkR3JvdXBPcHRpb25zID0gaXRlbS5vcHRpb25zLmZpbHRlcihcbiAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24uZGlzcGxheVZhbHVlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2gpID4gLTFcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gZmlsdGVyZWRHcm91cE9wdGlvbnMubGVuZ3RoID4gMCA/IHsgLi4uaXRlbSwgb3B0aW9uczogZmlsdGVyZWRHcm91cE9wdGlvbnMgfSA6IG51bGw7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBXYXR0RHJvcGRvd25Hcm91cGVkT3B0aW9ucztcblxuICAgIHRoaXMuZmlsdGVyZWRHcm91cGVkT3B0aW9ucyQubmV4dChmaWx0ZXJlZEdyb3Vwcyk7XG4gIH1cblxuICBwcml2YXRlIGRldGVybWluZVRvZ2dsZUFsbENoZWNrYm94U3RhdGUoKSB7XG4gICAgdGhpcy5tZXJnZWRGaWx0ZXJlZE9wdGlvbnMkLnN1YnNjcmliZSgoZmlsdGVyZWRPcHRpb25zOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb25zID0gdGhpcy5tYXRTZWxlY3RDb250cm9sLnZhbHVlO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RlZE9wdGlvbnMpKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRmlsdGVyZWRPcHRpb25zID0gZmlsdGVyZWRPcHRpb25zLmZpbHRlcigob3B0aW9uKSA9PlxuICAgICAgICAgIHNlbGVjdGVkT3B0aW9ucy5pbmNsdWRlcyhvcHRpb24pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5pc1RvZ2dsZUFsbEluZGV0ZXJtaW5hdGUgPVxuICAgICAgICAgIHNlbGVjdGVkRmlsdGVyZWRPcHRpb25zLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBzZWxlY3RlZEZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPCBmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoO1xuXG4gICAgICAgIHRoaXMuaXNUb2dnbGVBbGxDaGVja2VkID1cbiAgICAgICAgICBzZWxlY3RlZEZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJlZE9wdGlvbnMubGVuZ3RoID09PSBmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8IS0tXG5AbGljZW5zZVxuQ29weXJpZ2h0IDIwMjAgRW5lcmdpbmV0IERhdGFIdWIgQS9TXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2UyXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbi0tPlxuPHdhdHQtZmllbGRcbiAgW2NvbnRyb2xdPVwicGFyZW50Q29udHJvbFwiXG4gIFtjaGlwTW9kZV09XCJjaGlwTW9kZSgpXCJcbiAgW2xhYmVsXT1cImxhYmVsKClcIlxuICAoY2xpY2spPVwibWF0U2VsZWN0Lm9wZW4oKVwiXG4+XG4gIEBpZiAoY2hpcE1vZGUoKSkge1xuICAgIDx3YXR0LW1lbnUtY2hpcFxuICAgICAgW29wZW5lZF09XCJtYXRTZWxlY3QucGFuZWxPcGVuXCJcbiAgICAgICh0b2dnbGUpPVwibWF0U2VsZWN0Lm9wZW4oKVwiXG4gICAgICBbc2VsZWN0ZWRdPVwiISFtYXRTZWxlY3Q/LnRyaWdnZXJWYWx1ZSAmJiAhZGlzYWJsZVNlbGVjdGVkTW9kZSgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJtYXRTZWxlY3RDb250cm9sLmRpc2FibGVkXCJcbiAgICA+XG4gICAgICB7eyBwbGFjZWhvbGRlcigpIH19XG4gICAgICBAaWYgKHNob3dUcmlnZ2VyVmFsdWUpIHtcbiAgICAgICAgPHNwYW4+XG4gICAgICAgICAgQGlmIChwbGFjZWhvbGRlcigpKSB7XG4gICAgICAgICAgICA6XG4gICAgICAgICAgfVxuICAgICAgICAgIHt7IGdldEN1c3RvbVRyaWdnZXIoKT8uKG1hdFNlbGVjdC52YWx1ZSkgPz8gbWF0U2VsZWN0Py50cmlnZ2VyVmFsdWUgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuICAgICAgQGlmIChzaG93Q2hpcExhYmVsKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwid2F0dC1jaGlwLWxhYmVsXCI+e3sgbWF0U2VsZWN0Q29udHJvbC52YWx1ZT8ubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgfVxuICAgIDwvd2F0dC1tZW51LWNoaXA+XG4gIH1cblxuICA8bWF0LXNlbGVjdFxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWwoKVwiXG4gICAgW2Zvcm1Db250cm9sXT1cIm1hdFNlbGVjdENvbnRyb2xcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcbiAgICAjbWF0U2VsZWN0XG4gICAgW3BhbmVsV2lkdGhdPVwicGFuZWxXaWR0aCgpXCJcbiAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGUoKVwiXG4gICAgW25nQ2xhc3NdPVwieyBjaGlwOiBjaGlwTW9kZSgpLCAnbWF0LW1kYy1zZWxlY3QtbXVsdGlwbGUnOiBtdWx0aXBsZSgpIH1cIlxuICAgIFtwYW5lbENsYXNzXT1cIntcbiAgICAgICd3YXR0LWRyb3Bkb3duLXBhbmVsJzogdHJ1ZSxcbiAgICAgICd3YXR0LWRyb3Bkb3duLXBhbmVsLWNoaXAtbW9kZSc6IGNoaXBNb2RlKCksXG4gICAgICAnbWF0LW1kYy1zZWxlY3QtcGFuZWwtbXVsdGlwbGUnOiBtdWx0aXBsZSgpLFxuICAgIH1cIlxuICA+XG4gICAgPCEtLSBXZSB1c2UgdGhpcyBpbnN0ZWFkIG9mIG5nSWYsIHNpbmNlIGl0IHdpbGwgdHJpZ2dlciBhIE5HMDEwMDogRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvcjogRXhwcmVzc2lvbiBoYXMgY2hhbmdlZCBhZnRlciBpdCB3YXMgY2hlY2tlZC4gLS0+XG4gICAgPG1hdC1vcHRpb24gW3N0eWxlLmRpc3BsYXldPVwiIWhpZGVTZWFyY2goKSA/ICdibG9jaycgOiAnbm9uZSdcIj5cbiAgICAgIDxuZ3gtbWF0LXNlbGVjdC1zZWFyY2hcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZpbHRlckNvbnRyb2xcIlxuICAgICAgICBbcGxhY2Vob2xkZXJMYWJlbF09XCJwbGFjZWhvbGRlcigpXCJcbiAgICAgICAgY2xvc2VJY29uPVwiY2xvc2VcIlxuICAgICAgICBbc2hvd1RvZ2dsZUFsbENoZWNrYm94XT1cIm11bHRpcGxlKClcIlxuICAgICAgICAodG9nZ2xlQWxsKT1cIm9uVG9nZ2xlQWxsKCRldmVudClcIlxuICAgICAgICBbdG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkXT1cImlzVG9nZ2xlQWxsQ2hlY2tlZFwiXG4gICAgICAgIFt0b2dnbGVBbGxDaGVja2JveEluZGV0ZXJtaW5hdGVdPVwiaXNUb2dnbGVBbGxJbmRldGVybWluYXRlXCJcbiAgICAgICAgW25vRW50cmllc0ZvdW5kTGFiZWxdPVwibm9PcHRpb25zRm91bmRMYWJlbCgpXCJcbiAgICAgID5cbiAgICAgICAgPHdhdHQtaWNvbiBuZ3hNYXRTZWxlY3RTZWFyY2hDbGVhciBuYW1lPVwiY2xvc2VcIiBzaXplPVwic1wiIC8+XG4gICAgICA8L25neC1tYXQtc2VsZWN0LXNlYXJjaD5cbiAgICA8L21hdC1vcHRpb24+XG5cbiAgICBAaWYgKCFtdWx0aXBsZSgpICYmIHNob3dSZXNldE9wdGlvbigpKSB7XG4gICAgICA8bWF0LW9wdGlvbj57eyBlbURhc2ggfX08L21hdC1vcHRpb24+XG4gICAgfVxuXG4gICAgQGlmIChoYXNHcm91cHMoKSkge1xuICAgICAgQGZvciAoaXRlbSBvZiBmaWx0ZXJlZEdyb3VwZWRPcHRpb25zJCB8IHB1c2g7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgQGlmIChcIm9wdGlvbnNcIiBpbiBpdGVtKSB7XG4gICAgICAgICAgPG1hdC1vcHRncm91cCBbbGFiZWxdPVwiaXRlbS5sYWJlbFwiIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCI+XG4gICAgICAgICAgICBAZm9yIChvcHRpb24gb2YgaXRlbS5vcHRpb25zOyB0cmFjayBvcHRpb24pIHtcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib3B0aW9uLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MubWF0LW1kYy1vcHRpb24tbXVsdGlwbGVdPVwibXVsdGlwbGUoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBvcHRpb24uZGlzcGxheVZhbHVlIH19XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L21hdC1vcHRncm91cD5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGZvciAob3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9ucyQgfCBwdXNoOyB0cmFjayBvcHRpb24pIHtcbiAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwib3B0aW9uLmRpc2FibGVkXCJcbiAgICAgICAgICBbY2xhc3MubWF0LW1kYy1vcHRpb24tbXVsdGlwbGVdPVwibXVsdGlwbGUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBvcHRpb24uZGlzcGxheVZhbHVlIH19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIH1cbiAgICB9XG4gIDwvbWF0LXNlbGVjdD5cbiAgPG5nLWNvbnRlbnQgLz5cbiAgPG5nLWNvbnRlbnQgbmdQcm9qZWN0QXM9XCJ3YXR0LWZpZWxkLWhpbnRcIiBzZWxlY3Q9XCJ3YXR0LWZpZWxkLWhpbnRcIiAvPlxuICA8bmctY29udGVudCBuZ1Byb2plY3RBcz1cIndhdHQtZmllbGQtZXJyb3JcIiBzZWxlY3Q9XCJ3YXR0LWZpZWxkLWVycm9yXCIgLz5cbjwvd2F0dC1maWVsZD5cbiJdfQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@energinet/watt",
4
- "version": "4.0.26",
4
+ "version": "4.0.27",
5
5
  "license": "Apache-2.0",
6
6
  "exports": {
7
7
  ".": {