@myrmidon/cadmus-refs-asserted-ids 5.1.2 → 5.1.4
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.
- package/esm2022/lib/asserted-composite-id/asserted-composite-id.component.mjs +5 -5
- package/esm2022/lib/asserted-composite-ids/asserted-composite-ids.component.mjs +5 -5
- package/esm2022/lib/asserted-id/asserted-id.component.mjs +9 -5
- package/esm2022/lib/asserted-ids/asserted-ids.component.mjs +5 -5
- package/esm2022/lib/pin-target-lookup/pin-target-lookup.component.mjs +5 -5
- package/esm2022/lib/scoped-pin-lookup/scoped-pin-lookup.component.mjs +5 -5
- package/esm2022/lib/services/item-ref-lookup.service.mjs +3 -3
- package/esm2022/lib/services/pin-ref-lookup.service.mjs +3 -3
- package/fesm2022/myrmidon-cadmus-refs-asserted-ids.mjs +34 -30
- package/fesm2022/myrmidon-cadmus-refs-asserted-ids.mjs.map +1 -1
- package/lib/asserted-id/asserted-id.component.d.ts +2 -0
- package/package.json +1 -1
|
@@ -139,10 +139,10 @@ export class AssertedCompositeIdComponent {
|
|
|
139
139
|
this.idChange.emit(this._id);
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
143
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.
|
|
142
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AssertedCompositeIdComponent, deps: [{ token: i1.FormBuilder }, { token: i2.PinRefLookupService }, { token: 'indexLookupDefinitions' }, { token: i3.RamStorageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
143
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AssertedCompositeIdComponent, isStandalone: true, selector: "cadmus-refs-asserted-composite-id", inputs: { idScopeEntries: "idScopeEntries", idTagEntries: "idTagEntries", assTagEntries: "assTagEntries", refTypeEntries: "refTypeEntries", refTagEntries: "refTagEntries", id: "id", internalDefault: "internalDefault", hasSubmit: "hasSubmit", pinByTypeMode: "pinByTypeMode", canSwitchMode: "canSwitchMode", canEditTarget: "canEditTarget", lookupDefinitions: "lookupDefinitions", defaultPartTypeKey: "defaultPartTypeKey" }, outputs: { idChange: "idChange", editorClose: "editorClose", extMoreRequest: "extMoreRequest" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <div>\n <div class=\"form-row\">\n <!-- tag (bound) -->\n @if (idTagEntries?.length) {\n <mat-form-field class=\"short-text\">\n <mat-label>tag</mat-label>\n <mat-select [formControl]=\"tag\">\n @for (e of idTagEntries; track e) {\n <mat-option [value]=\"e.id\">{{\n e.value\n }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n <!-- tag (free) -->\n @if (!idTagEntries?.length) {\n <mat-form-field class=\"short-text\">\n <mat-label>tag</mat-label>\n <input matInput [formControl]=\"tag\" />\n @if ($any(tag.errors)?.maxLength && (tag.dirty || tag.touched)) {\n <mat-error\n >tag too long</mat-error\n >\n }\n </mat-form-field>\n }\n\n <!-- scope (bound) -->\n @if (idScopeEntries?.length) {\n <mat-form-field class=\"short-text\">\n <mat-label>scope</mat-label>\n <mat-select [formControl]=\"scope\">\n @for (e of idScopeEntries; track e) {\n <mat-option [value]=\"e.id\">{{\n e.value\n }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n <!-- scope (free) -->\n @if (!idScopeEntries?.length) {\n <mat-form-field class=\"short-text\">\n <mat-label>scope</mat-label>\n <input matInput [formControl]=\"scope\" />\n @if (\n $any(scope.errors)?.maxLength && (scope.dirty || scope.touched)\n ) {\n <mat-error\n >scope too long</mat-error\n >\n }\n </mat-form-field>\n }\n\n <!-- label and GID -->\n @if (target.value?.label) {\n <div class=\"info\">\n <span class=\"label\">label</span>{{ target.value?.label }}\n </div>\n }\n @if (target.value?.gid) {\n <div class=\"info\">\n <span class=\"label\">GID</span>{{ target.value?.gid }}\n </div>\n }\n </div>\n\n <!-- target -->\n <div class=\"boxed\">\n <mat-expansion-panel [(expanded)]=\"targetExpanded\">\n <mat-expansion-panel-header>target</mat-expansion-panel-header>\n <cadmus-pin-target-lookup\n [pinByTypeMode]=\"pinByTypeMode\"\n [canSwitchMode]=\"canSwitchMode\"\n [canEditTarget]=\"canEditTarget\"\n [lookupDefinitions]=\"lookupDefinitions\"\n [defaultPartTypeKey]=\"defaultPartTypeKey\"\n [target]=\"target.value\"\n [internalDefault]=\"internalDefault\"\n [extLookupConfigs]=\"extLookupConfigs\"\n (targetChange)=\"onTargetChange($event)\"\n (editorClose)=\"onEditorClose()\"\n (extMoreRequest)=\"onExtMoreRequest($event)\"\n (extLookupConfigChange)=\"onExtLookupConfigChange($event)\"\n ></cadmus-pin-target-lookup>\n </mat-expansion-panel>\n </div>\n\n <!-- assertion -->\n <br />\n <div class=\"boxed\">\n <mat-expansion-panel>\n <mat-expansion-panel-header>assertion</mat-expansion-panel-header>\n <cadmus-refs-assertion\n [assTagEntries]=\"assTagEntries\"\n [refTypeEntries]=\"refTypeEntries\"\n [refTagEntries]=\"refTagEntries\"\n [assertion]=\"assertion.value\"\n (assertionChange)=\"onAssertionChange($event)\"\n >\n </cadmus-refs-assertion>\n </mat-expansion-panel>\n </div>\n </div>\n\n <!-- buttons -->\n @if (hasSubmit) {\n <div>\n <button\n mat-icon-button\n color=\"warn\"\n type=\"button\"\n (click)=\"cancel()\"\n [disabled]=\"!this.target.value?.gid || !this.target.value?.label\"\n >\n <mat-icon class=\"mat-warn\">close</mat-icon>\n </button>\n <button\n mat-icon-button\n color=\"primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n >\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\n </button>\n </div>\n }\n </form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.boxed{border:1px solid silver;border-radius:6px;padding:6px}.short-text{width:8em}.pin-info{font-size:90%;color:silver}fieldset{border:1px solid silver;border-radius:6px;padding:6px}.info{border:1px solid silver;border-radius:6px;background-color:silver;color:#fff;padding:4px}.info .label{background-color:#fff;color:silver;margin:0 6px}@media only screen and (max-width: 959px){div#container{grid-template-rows:1fr auto;grid-template-columns:1fr;grid-template-areas:\"editor\" \"lookup\"}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i5.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i5.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i10.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: AssertionComponent, selector: "cadmus-refs-assertion", inputs: ["assTagEntries", "refTypeEntries", "refTagEntries", "assertion"], outputs: ["assertionChange"] }, { kind: "component", type: PinTargetLookupComponent, selector: "cadmus-pin-target-lookup", inputs: ["pinByTypeMode", "canSwitchMode", "canEditTarget", "lookupDefinitions", "extLookupConfigs", "internalDefault", "target", "defaultPartTypeKey"], outputs: ["editorClose", "targetChange", "extMoreRequest", "extLookupConfigChange"] }] }); }
|
|
144
144
|
}
|
|
145
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
145
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AssertedCompositeIdComponent, decorators: [{
|
|
146
146
|
type: Component,
|
|
147
147
|
args: [{ standalone: true, selector: 'cadmus-refs-asserted-composite-id', imports: [
|
|
148
148
|
FormsModule,
|
|
@@ -155,7 +155,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
|
155
155
|
MatSelectModule,
|
|
156
156
|
AssertionComponent,
|
|
157
157
|
PinTargetLookupComponent,
|
|
158
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <div>\n <div class=\"form-row\">\n <!-- tag (bound) -->\n @if (idTagEntries?.length) {\n <mat-form-field class=\"short-text\">\n <mat-label>tag</mat-label>\n <mat-select [formControl]=\"tag\">\n @for (e of idTagEntries; track e) {\n <mat-option [value]=\"e.id\">{{\n e.value\n }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n <!-- tag (free) -->\n @if (!idTagEntries?.length) {\n <mat-form-field class=\"short-text\">\n <mat-label>tag</mat-label>\n <input matInput [formControl]=\"tag\" />\n @if ($any(tag.errors)?.maxLength && (tag.dirty || tag.touched)) {\n <mat-error\n >tag too long</mat-error\n >\n }\n </mat-form-field>\n }\n\n <!-- scope (bound) -->\n @if (idScopeEntries?.length) {\n <mat-form-field class=\"short-text\">\n <mat-label>scope</mat-label>\n <mat-select [formControl]=\"scope\">\n @for (e of idScopeEntries; track e) {\n <mat-option [value]=\"e.id\">{{\n e.value\n }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n <!-- scope (free) -->\n @if (!idScopeEntries?.length) {\n <mat-form-field class=\"short-text\">\n <mat-label>scope</mat-label>\n <input matInput [formControl]=\"scope\" />\n @if (\n $any(scope.errors)?.maxLength && (scope.dirty || scope.touched)\n ) {\n <mat-error\n >scope too long</mat-error\n >\n }\n </mat-form-field>\n }\n\n <!-- label and GID -->\n @if (target.value?.label) {\n <div class=\"info\">\n <span class=\"label\">label</span>{{ target.value?.label }}\n </div>\n }\n @if (target.value?.gid) {\n <div class=\"info\">\n <span class=\"label\">GID</span>{{ target.value?.gid }}\n </div>\n }\n </div>\n\n <!-- target -->\n <div class=\"boxed\">\n <mat-expansion-panel [(expanded)]=\"targetExpanded\">\n <mat-expansion-panel-header>target</mat-expansion-panel-header>\n <cadmus-pin-target-lookup\n [pinByTypeMode]=\"pinByTypeMode\"\n [canSwitchMode]=\"canSwitchMode\"\n [canEditTarget]=\"canEditTarget\"\n [lookupDefinitions]=\"lookupDefinitions\"\n [defaultPartTypeKey]=\"defaultPartTypeKey\"\n [target]=\"target.value\"\n [internalDefault]=\"internalDefault\"\n [extLookupConfigs]=\"extLookupConfigs\"\n (targetChange)=\"onTargetChange($event)\"\n (editorClose)=\"onEditorClose()\"\n (extMoreRequest)=\"onExtMoreRequest($event)\"\n (extLookupConfigChange)=\"onExtLookupConfigChange($event)\"\n ></cadmus-pin-target-lookup>\n </mat-expansion-panel>\n </div>\n\n <!-- assertion -->\n <br />\n <div class=\"boxed\">\n <mat-expansion-panel>\n <mat-expansion-panel-header>assertion</mat-expansion-panel-header>\n <cadmus-refs-assertion\n [assTagEntries]=\"assTagEntries\"\n [refTypeEntries]=\"refTypeEntries\"\n [refTagEntries]=\"refTagEntries\"\n [assertion]=\"assertion.value\"\n (assertionChange)=\"onAssertionChange($event)\"\n >\n </cadmus-refs-assertion>\n </mat-expansion-panel>\n </div>\n </div>\n\n <!-- buttons -->\n @if (hasSubmit) {\n <div>\n <button\n mat-icon-button\n color=\"warn\"\n type=\"button\"\n (click)=\"cancel()\"\n [disabled]=\"!this.target.value?.gid || !this.target.value?.label\"\n >\n <mat-icon>close</mat-icon>\n </button>\n <button\n mat-icon-button\n color=\"primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n >\n <mat-icon>check_circle</mat-icon>\n </button>\n </div>\n }\n </form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.boxed{border:1px solid silver;border-radius:6px;padding:6px}.short-text{width:8em}.pin-info{font-size:90%;color:silver}fieldset{border:1px solid silver;border-radius:6px;padding:6px}.info{border:1px solid silver;border-radius:6px;background-color:silver;color:#fff;padding:4px}.info .label{background-color:#fff;color:silver;margin:0 6px}@media only screen and (max-width: 959px){div#container{grid-template-rows:1fr auto;grid-template-columns:1fr;grid-template-areas:\"editor\" \"lookup\"}}\n"] }]
|
|
158
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <div>\n <div class=\"form-row\">\n <!-- tag (bound) -->\n @if (idTagEntries?.length) {\n <mat-form-field class=\"short-text\">\n <mat-label>tag</mat-label>\n <mat-select [formControl]=\"tag\">\n @for (e of idTagEntries; track e) {\n <mat-option [value]=\"e.id\">{{\n e.value\n }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n <!-- tag (free) -->\n @if (!idTagEntries?.length) {\n <mat-form-field class=\"short-text\">\n <mat-label>tag</mat-label>\n <input matInput [formControl]=\"tag\" />\n @if ($any(tag.errors)?.maxLength && (tag.dirty || tag.touched)) {\n <mat-error\n >tag too long</mat-error\n >\n }\n </mat-form-field>\n }\n\n <!-- scope (bound) -->\n @if (idScopeEntries?.length) {\n <mat-form-field class=\"short-text\">\n <mat-label>scope</mat-label>\n <mat-select [formControl]=\"scope\">\n @for (e of idScopeEntries; track e) {\n <mat-option [value]=\"e.id\">{{\n e.value\n }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n <!-- scope (free) -->\n @if (!idScopeEntries?.length) {\n <mat-form-field class=\"short-text\">\n <mat-label>scope</mat-label>\n <input matInput [formControl]=\"scope\" />\n @if (\n $any(scope.errors)?.maxLength && (scope.dirty || scope.touched)\n ) {\n <mat-error\n >scope too long</mat-error\n >\n }\n </mat-form-field>\n }\n\n <!-- label and GID -->\n @if (target.value?.label) {\n <div class=\"info\">\n <span class=\"label\">label</span>{{ target.value?.label }}\n </div>\n }\n @if (target.value?.gid) {\n <div class=\"info\">\n <span class=\"label\">GID</span>{{ target.value?.gid }}\n </div>\n }\n </div>\n\n <!-- target -->\n <div class=\"boxed\">\n <mat-expansion-panel [(expanded)]=\"targetExpanded\">\n <mat-expansion-panel-header>target</mat-expansion-panel-header>\n <cadmus-pin-target-lookup\n [pinByTypeMode]=\"pinByTypeMode\"\n [canSwitchMode]=\"canSwitchMode\"\n [canEditTarget]=\"canEditTarget\"\n [lookupDefinitions]=\"lookupDefinitions\"\n [defaultPartTypeKey]=\"defaultPartTypeKey\"\n [target]=\"target.value\"\n [internalDefault]=\"internalDefault\"\n [extLookupConfigs]=\"extLookupConfigs\"\n (targetChange)=\"onTargetChange($event)\"\n (editorClose)=\"onEditorClose()\"\n (extMoreRequest)=\"onExtMoreRequest($event)\"\n (extLookupConfigChange)=\"onExtLookupConfigChange($event)\"\n ></cadmus-pin-target-lookup>\n </mat-expansion-panel>\n </div>\n\n <!-- assertion -->\n <br />\n <div class=\"boxed\">\n <mat-expansion-panel>\n <mat-expansion-panel-header>assertion</mat-expansion-panel-header>\n <cadmus-refs-assertion\n [assTagEntries]=\"assTagEntries\"\n [refTypeEntries]=\"refTypeEntries\"\n [refTagEntries]=\"refTagEntries\"\n [assertion]=\"assertion.value\"\n (assertionChange)=\"onAssertionChange($event)\"\n >\n </cadmus-refs-assertion>\n </mat-expansion-panel>\n </div>\n </div>\n\n <!-- buttons -->\n @if (hasSubmit) {\n <div>\n <button\n mat-icon-button\n color=\"warn\"\n type=\"button\"\n (click)=\"cancel()\"\n [disabled]=\"!this.target.value?.gid || !this.target.value?.label\"\n >\n <mat-icon class=\"mat-warn\">close</mat-icon>\n </button>\n <button\n mat-icon-button\n color=\"primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n >\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\n </button>\n </div>\n }\n </form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.boxed{border:1px solid silver;border-radius:6px;padding:6px}.short-text{width:8em}.pin-info{font-size:90%;color:silver}fieldset{border:1px solid silver;border-radius:6px;padding:6px}.info{border:1px solid silver;border-radius:6px;background-color:silver;color:#fff;padding:4px}.info .label{background-color:#fff;color:silver;margin:0 6px}@media only screen and (max-width: 959px){div#container{grid-template-rows:1fr auto;grid-template-columns:1fr;grid-template-areas:\"editor\" \"lookup\"}}\n"] }]
|
|
159
159
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.PinRefLookupService }, { type: undefined, decorators: [{
|
|
160
160
|
type: Inject,
|
|
161
161
|
args: ['indexLookupDefinitions']
|
|
@@ -192,4 +192,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
|
192
192
|
}], extMoreRequest: [{
|
|
193
193
|
type: Output
|
|
194
194
|
}] } });
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0ZWQtY29tcG9zaXRlLWlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2NhZG11cy1yZWZzLWFzc2VydGVkLWlkcy9zcmMvbGliL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZC9hc3NlcnRlZC1jb21wb3NpdGUtaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXJlZnMtYXNzZXJ0ZWQtaWRzL3NyYy9saWIvYXNzZXJ0ZWQtY29tcG9zaXRlLWlkL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBSUwsV0FBVyxFQUNYLG1CQUFtQixFQUNuQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSTNELE9BQU8sRUFBYSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBT2hGLE9BQU8sRUFFTCx3QkFBd0IsR0FDekIsTUFBTSxrREFBa0QsQ0FBQzs7Ozs7Ozs7Ozs7O0FBYzFEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FDNUMsMkNBQTJDLENBQUM7QUFFOUM7OztHQUdHO0FBbUJILE1BQU0sT0FBTyw0QkFBNEI7SUFpQ3ZDOztPQUVHO0lBQ0gsSUFDVyxFQUFFO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFDRCxJQUFXLEVBQUUsQ0FBQyxLQUE2QztRQUN6RCxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLElBQUksU0FBUyxDQUFDO1lBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBZ0VELFlBQ0UsV0FBd0IsRUFDakIsYUFBa0MsRUFFbEMsVUFBa0MsRUFDekMsUUFBMkI7UUFIcEIsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBRWxDLGVBQVUsR0FBVixVQUFVLENBQXdCO1FBR3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDNUIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDMUIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQjtZQUNuQixRQUFRLENBQUMsUUFBUSxDQUFvQixpQ0FBaUMsQ0FBQztnQkFDdkUsRUFBRSxDQUFDO1FBQ0wsU0FBUztRQUNULElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDeEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzNDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7SUFDOUQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxTQUFnQztRQUN2RCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVNLGNBQWMsQ0FBQyxNQUFpQjtRQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRU8sVUFBVSxDQUFDLEVBQW1DO1FBQ3BELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVPLEtBQUs7UUFDWCxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNqQyxPQUFPO1lBQ0wsTUFBTSxFQUFFLFFBQVE7Z0JBQ2QsQ0FBQyxDQUFDO29CQUNFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQUU7b0JBQ3RCLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxJQUFJLE1BQU0sRUFBRSxHQUFHLElBQUksRUFBRTtpQkFDMUM7Z0JBQ0gsQ0FBQyxDQUFDLE1BQU87WUFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtZQUNyQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQzNCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxTQUFTO1NBQzdDLENBQUM7SUFDSixDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUVNLGFBQWE7UUFDbEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEtBQXdCO1FBQzlDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxNQUF1QjtRQUNwRCxJQUNFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFDOUQsQ0FBQztZQUNELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU0sSUFBSTtRQUNULElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7OEdBNU5VLDRCQUE0QixnRkFnSDdCLHdCQUF3QjtrR0FoSHZCLDRCQUE0QixvbUJDakZ6Qyx1NUlBbUlBLGtvQkQ5REksV0FBVywycEJBQ1gsbUJBQW1CLGtXQUNuQixlQUFlLDJJQUNmLGtCQUFrQixvWUFDbEIsa0JBQWtCLHVZQUNsQixhQUFhLG1MQUNiLGNBQWMsMFdBQ2QsZUFBZSxxckJBQ2Ysa0JBQWtCLDJLQUNsQix3QkFBd0I7OzJGQUdmLDRCQUE0QjtrQkFsQnhDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLG1DQUFtQyxXQUdwQzt3QkFDUCxXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLGtCQUFrQjt3QkFDbEIsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQix3QkFBd0I7cUJBQ3pCOzswQkFrSEUsTUFBTTsyQkFBQyx3QkFBd0I7eUVBakczQixjQUFjO3NCQURwQixLQUFLO2dCQUtDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBS0MsYUFBYTtzQkFEbkIsS0FBSztnQkFLQyxjQUFjO3NCQURwQixLQUFLO2dCQUtDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBT0ssRUFBRTtzQkFEWixLQUFLO2dCQWdCQyxlQUFlO3NCQURyQixLQUFLO2dCQU9DLFNBQVM7c0JBRGYsS0FBSztnQkFRQyxhQUFhO3NCQURuQixLQUFLO2dCQU9DLGFBQWE7c0JBRG5CLEtBQUs7Z0JBTUMsYUFBYTtzQkFEbkIsS0FBSztnQkFXQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBT0Msa0JBQWtCO3NCQUR4QixLQUFLO2dCQU9DLFFBQVE7c0JBRGQsTUFBTTtnQkFPQSxXQUFXO3NCQURqQixNQUFNO2dCQUlBLGNBQWM7c0JBRHBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgRm9ybUJ1aWxkZXIsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgRm9ybUdyb3VwLFxyXG4gIEZvcm1zTW9kdWxlLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5cclxuaW1wb3J0IHsgUmFtU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAbXlybWlkb24vbmctdG9vbHMnO1xyXG5pbXBvcnQgeyBJbmRleExvb2t1cERlZmluaXRpb25zLCBUaGVzYXVydXNFbnRyeSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtY29yZSc7XHJcbmltcG9ydCB7IEFzc2VydGlvbiwgQXNzZXJ0aW9uQ29tcG9uZW50IH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1yZWZzLWFzc2VydGlvbic7XHJcbmltcG9ydCB7XHJcbiAgUmVmTG9va3VwQ29uZmlnLFxyXG4gIFJlZkxvb2t1cFNldEV2ZW50LFxyXG59IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtcmVmcy1sb29rdXAnO1xyXG5cclxuaW1wb3J0IHsgUGluUmVmTG9va3VwU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Bpbi1yZWYtbG9va3VwLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFBpblRhcmdldCxcclxuICBQaW5UYXJnZXRMb29rdXBDb21wb25lbnQsXHJcbn0gZnJvbSAnLi4vcGluLXRhcmdldC1sb29rdXAvcGluLXRhcmdldC1sb29rdXAuY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBBbiBhc3NlcnRlZCBjb21wb3NpdGUgSUQuIFRoaXMgY2FuIGJlIGFuIGV4dGVybmFsIElELCBoYXZpbmcgb25seSB0aGUgSUQgdmFsdWVcclxuICogYXMgaXRzIHRhcmdldC5naWQgcHJvcGVydHk7IG9yIGEgbG9va3VwIElELCB3aXRoIGEgcGluLWJhc2VkIHRhcmdldC5cclxuICogSW4gYm90aCBjYXNlcywgd2UgY2FuIGFkZCBhIHRhZywgYSBzY29wZSwgYW5kIGFuIGFzc2VydGlvbi5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXNzZXJ0ZWRDb21wb3NpdGVJZCB7XHJcbiAgdGFyZ2V0OiBQaW5UYXJnZXQ7XHJcbiAgdGFnPzogc3RyaW5nO1xyXG4gIHNjb3BlPzogc3RyaW5nO1xyXG4gIGFzc2VydGlvbj86IEFzc2VydGlvbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoZSBrZXkgdG8gYmUgdXNlZCB0byByZXRyaWV2ZSB0aGUgZXh0ZXJuYWwgbG9va3VwIGNvbmZpZ3MgZnJvbSB0aGVcclxuICogc2V0dGluZ3Mgc3RvcmFnZS4gVGhpcyBpcyBlcXVhbCB0byB0aGUgc2VsZWN0b3Igb2ZcclxuICogQXNzZXJ0ZWRDb21wb3NpdGVJZENvbXBvbmVudCBwbHVzIFwiLmNvbmZpZ3NcIi5cclxuICovXHJcbmV4cG9ydCBjb25zdCBBU1NFUlRFRF9DT01QT1NJVEVfSURfQ09ORklHU19LRVkgPVxyXG4gICdjYWRtdXMtcmVmcy1hc3NlcnRlZC1jb21wb3NpdGUtaWQuY29uZmlncyc7XHJcblxyXG4vKipcclxuICogQW4gYXNzZXJ0ZWQgY29tcG9zaXRlIElEIGVkaXRvci4gVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gZWRpdCBhbiBhc3NlcnRlZFxyXG4gKiBjb21wb3NpdGUgSUQsIHdoaWNoIGNhbiBiZSBhbiBleHRlcm5hbCBJRCBvciBhIGxvb2t1cCBJRC5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2VsZWN0b3I6ICdjYWRtdXMtcmVmcy1hc3NlcnRlZC1jb21wb3NpdGUtaWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hc3NlcnRlZC1jb21wb3NpdGUtaWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZC5jb21wb25lbnQuY3NzJ10sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0RXhwYW5zaW9uTW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgQXNzZXJ0aW9uQ29tcG9uZW50LFxyXG4gICAgUGluVGFyZ2V0TG9va3VwQ29tcG9uZW50LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc3NlcnRlZENvbXBvc2l0ZUlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwcml2YXRlIF91cGRhdGluZ0Zvcm06IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfaWQ6IEFzc2VydGVkQ29tcG9zaXRlSWQgfCB1bmRlZmluZWQ7XHJcblxyXG4gIHB1YmxpYyBleHRMb29rdXBDb25maWdzOiBSZWZMb29rdXBDb25maWdbXTtcclxuICBwdWJsaWMgdGFyZ2V0RXhwYW5kZWQ6IGJvb2xlYW47XHJcbiAgLy8gZm9ybVxyXG4gIHB1YmxpYyB0YXJnZXQ6IEZvcm1Db250cm9sPFBpblRhcmdldCB8IG51bGw+O1xyXG4gIHB1YmxpYyBzY29wZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XHJcbiAgcHVibGljIHRhZzogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XHJcbiAgcHVibGljIGFzc2VydGlvbjogRm9ybUNvbnRyb2w8QXNzZXJ0aW9uIHwgbnVsbD47XHJcbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgLy8gYXNzZXJ0ZWQtaWQtc2NvcGVzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaWRTY29wZUVudHJpZXM/OiBUaGVzYXVydXNFbnRyeVtdO1xyXG5cclxuICAvLyBhc3NlcnRlZC1pZC10YWdzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaWRUYWdFbnRyaWVzPzogVGhlc2F1cnVzRW50cnlbXTtcclxuXHJcbiAgLy8gYXNzZXJ0aW9uLXRhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhc3NUYWdFbnRyaWVzPzogVGhlc2F1cnVzRW50cnlbXTtcclxuXHJcbiAgLy8gZG9jLXJlZmVyZW5jZS10eXBlc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlZlR5cGVFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvLyBkb2MtcmVmZXJlbmNlLXRhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZWZUYWdFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgSUQgYmVpbmcgZWRpdGVkLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBpZCgpOiBBc3NlcnRlZENvbXBvc2l0ZUlkIHwgdW5kZWZpbmVkIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5faWQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgaWQodmFsdWU6IEFzc2VydGVkQ29tcG9zaXRlSWQgfCB1bmRlZmluZWQgfCBudWxsKSB7XHJcbiAgICBpZiAodGhpcy5faWQgIT09IHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX2lkID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLnVwZGF0ZUZvcm0odGhpcy5faWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJ1ZSBpZiB3aGVuIGEgbmV3IElEIGlzIHNldCBpdCBzaG91bGQgYmUgaW50ZXJuYWwgcmF0aGVyIHRoYW5cclxuICAgKiBleHRlcm5hbCBieSBkZWZhdWx0LlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGludGVybmFsRGVmYXVsdDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqXHJcbiAgICogVHJ1ZSBpZiB0aGUgVUkgaGFzIGEgc3VibWl0IGJ1dHRvbi5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBoYXNTdWJtaXQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRydWUgd2hlbiB0aGUgaW50ZXJuYWwgVUkgcHJlc2VsZWN0ZWQgbW9kZSBzaG91bGQgYmUgYnkgdHlwZSByYXRoZXIgdGhhblxyXG4gICAqIGJ5IGl0ZW0uIFVzZXIgY2FuIGNoYW5nZSBtb2RlIHVubGVzcyBtb2RlU3dpdGNoaW5nIGlzIGZhbHNlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBpbkJ5VHlwZU1vZGU/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIFRydWUgd2hlbiB0aGUgdXNlciBjYW4gc3dpdGNoIGJldHdlZW4gYnktdHlwZSBhbmQgYnktaXRlbSBtb2RlIGluXHJcbiAgICogdGhlIGludGVybmFsIFVJLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNhblN3aXRjaE1vZGU/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIFRydWUgd2hlbiB0aGUgdXNlciBjYW4gZWRpdCB0aGUgdGFyZ2V0J3MgZ2lkL2xhYmVsIGZvciBpbnRlcm5hbCB0YXJnZXRzLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNhbkVkaXRUYXJnZXQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIFRoZSBsb29rdXAgZGVmaW5pdGlvbnMgdG8gYmUgdXNlZCBmb3IgdGhlIGJ5LXR5cGUgbG9va3VwIGluIHRoZSBpbnRlcm5hbCBVSS5cclxuICAgKiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgbG9va3VwIGRlZmluaXRpb25zIHdpbGwgYmUgZ290IHZpYSBpbmplY3Rpb25cclxuICAgKiB3aGVuIGF2YWlsYWJsZTsgaWYgdGhlIGluamVjdGVkIGRlZmluaXRpb25zIGFyZSBlbXB0eSwgdGhlXHJcbiAgICogbG9va3VwIGRlZmluaXRpb25zIHdpbGwgYmUgYnVpbHQgZnJvbSB0aGUgbW9kZWwtdHlwZXMgdGhlc2F1cnVzO1xyXG4gICAqIGlmIHRoaXMgaXMgbm90IGF2YWlsYWJsZSBlaXRoZXIsIHRoZSBieS10eXBlIGxvb2t1cCB3aWxsIGJlXHJcbiAgICogZGlzYWJsZWQuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbG9va3VwRGVmaW5pdGlvbnM/OiBJbmRleExvb2t1cERlZmluaXRpb25zO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgZGVmYXVsdCBwYXJ0IHR5cGUga2V5IHRvIGJlIHVzZWQuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVmYXVsdFBhcnRUeXBlS2V5Pzogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHRlZCB3aGVuZXZlciB0aGUgSUQgY2hhbmdlcy5cclxuICAgKi9cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgaWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBc3NlcnRlZENvbXBvc2l0ZUlkPjtcclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHRlZCB3aGVuZXZlciB0aGUgdXNlciByZXF1ZXN0cyB0byBjbG9zZSB0aGUgZWRpdG9yLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBlZGl0b3JDbG9zZTogRXZlbnRFbWl0dGVyPGFueT47XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBleHRNb3JlUmVxdWVzdDogRXZlbnRFbWl0dGVyPFJlZkxvb2t1cFNldEV2ZW50PjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwdWJsaWMgbG9va3VwU2VydmljZTogUGluUmVmTG9va3VwU2VydmljZSxcclxuICAgIEBJbmplY3QoJ2luZGV4TG9va3VwRGVmaW5pdGlvbnMnKVxyXG4gICAgcHVibGljIGxvb2t1cERlZnM6IEluZGV4TG9va3VwRGVmaW5pdGlvbnMsXHJcbiAgICBzZXR0aW5nczogUmFtU3RvcmFnZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMudGFyZ2V0ID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIHRoaXMuc2NvcGUgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwMCkpO1xyXG4gICAgdGhpcy50YWcgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSk7XHJcbiAgICB0aGlzLmFzc2VydGlvbiA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCk7XHJcbiAgICB0aGlzLmZvcm0gPSBmb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIHRhcmdldDogdGhpcy50YXJnZXQsXHJcbiAgICAgIHNjb3BlOiB0aGlzLnNjb3BlLFxyXG4gICAgICB0YWc6IHRoaXMudGFnLFxyXG4gICAgICBhc3NlcnRpb246IHRoaXMuYXNzZXJ0aW9uLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRhcmdldEV4cGFuZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmV4dExvb2t1cENvbmZpZ3MgPVxyXG4gICAgICBzZXR0aW5ncy5yZXRyaWV2ZTxSZWZMb29rdXBDb25maWdbXT4oQVNTRVJURURfQ09NUE9TSVRFX0lEX0NPTkZJR1NfS0VZKSB8fFxyXG4gICAgICBbXTtcclxuICAgIC8vIGV2ZW50c1xyXG4gICAgdGhpcy5pZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXNzZXJ0ZWRDb21wb3NpdGVJZD4oKTtcclxuICAgIHRoaXMuZWRpdG9yQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIHRoaXMuZXh0TW9yZVJlcXVlc3QgPSBuZXcgRXZlbnRFbWl0dGVyPFJlZkxvb2t1cFNldEV2ZW50PigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSgoXykgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuX3VwZGF0aW5nRm9ybSkge1xyXG4gICAgICAgIHRoaXMuZW1pdElkQ2hhbmdlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQXNzZXJ0aW9uQ2hhbmdlKGFzc2VydGlvbjogQXNzZXJ0aW9uIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICB0aGlzLmFzc2VydGlvbi5zZXRWYWx1ZShhc3NlcnRpb24gfHwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25UYXJnZXRDaGFuZ2UodGFyZ2V0OiBQaW5UYXJnZXQpOiB2b2lkIHtcclxuICAgIHRoaXMudGFyZ2V0LnNldFZhbHVlKHRhcmdldCk7XHJcbiAgICB0aGlzLnRhcmdldC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy50YXJnZXQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy50YXJnZXRFeHBhbmRlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVGb3JtKGlkOiBBc3NlcnRlZENvbXBvc2l0ZUlkIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICB0aGlzLl91cGRhdGluZ0Zvcm0gPSB0cnVlO1xyXG4gICAgaWYgKCFpZCkge1xyXG4gICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGFyZ2V0LnNldFZhbHVlKGlkLnRhcmdldCk7XHJcbiAgICAgIHRoaXMuc2NvcGUuc2V0VmFsdWUoaWQuc2NvcGUgfHwgbnVsbCk7XHJcbiAgICAgIHRoaXMudGFnLnNldFZhbHVlKGlkLnRhZyB8fCBudWxsKTtcclxuICAgICAgdGhpcy5hc3NlcnRpb24uc2V0VmFsdWUoaWQuYXNzZXJ0aW9uIHx8IG51bGwpO1xyXG4gICAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3VwZGF0aW5nRm9ybSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRJZCgpOiBBc3NlcnRlZENvbXBvc2l0ZUlkIHtcclxuICAgIGNvbnN0IGV4dGVybmFsID0gIXRoaXMudGFyZ2V0LnZhbHVlPy5uYW1lO1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy50YXJnZXQudmFsdWU7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0YXJnZXQ6IGV4dGVybmFsXHJcbiAgICAgICAgPyB7XHJcbiAgICAgICAgICAgIGdpZDogdGFyZ2V0Py5naWQgfHwgJycsXHJcbiAgICAgICAgICAgIGxhYmVsOiB0YXJnZXQ/LmxhYmVsIHx8IHRhcmdldD8uZ2lkIHx8ICcnLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDogdGFyZ2V0ISxcclxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGUudmFsdWU/LnRyaW0oKSB8fCAnJyxcclxuICAgICAgdGFnOiB0aGlzLnRhZy52YWx1ZT8udHJpbSgpLFxyXG4gICAgICBhc3NlcnRpb246IHRoaXMuYXNzZXJ0aW9uLnZhbHVlIHx8IHVuZGVmaW5lZCxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW1pdElkQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmhhc1N1Ym1pdCkge1xyXG4gICAgICB0aGlzLl9pZCA9IHRoaXMuZ2V0SWQoKTtcclxuICAgICAgdGhpcy5pZENoYW5nZS5lbWl0KHRoaXMuX2lkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkVkaXRvckNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy50YXJnZXRFeHBhbmRlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRXh0TW9yZVJlcXVlc3QoZXZlbnQ6IFJlZkxvb2t1cFNldEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmV4dE1vcmVSZXF1ZXN0LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRXh0TG9va3VwQ29uZmlnQ2hhbmdlKGNvbmZpZzogUmVmTG9va3VwQ29uZmlnKTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLnNjb3BlLnZhbHVlIHx8XHJcbiAgICAgIHRoaXMuZXh0TG9va3VwQ29uZmlncy5zb21lKChjKSA9PiBjLm5hbWUgPT09IHRoaXMuc2NvcGUudmFsdWUpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zY29wZS5zZXRWYWx1ZShjb25maWcubmFtZSB8fCBudWxsKTtcclxuICAgICAgdGhpcy5zY29wZS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICB0aGlzLnNjb3BlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvckNsb3NlLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9ybS52YWxpZCkge1xyXG4gICAgICB0aGlzLl9pZCA9IHRoaXMuZ2V0SWQoKTtcclxuICAgICAgdGhpcy5pZENoYW5nZS5lbWl0KHRoaXMuX2lkKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKHN1Ym1pdCk9XCJzYXZlKClcIj5cbiAgPGRpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICAgIDwhLS0gdGFnIChib3VuZCkgLS0+XG4gICAgICBAaWYgKGlkVGFnRW50cmllcz8ubGVuZ3RoKSB7XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInNob3J0LXRleHRcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPnRhZzwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJ0YWdcIj5cbiAgICAgICAgICAgIEBmb3IgKGUgb2YgaWRUYWdFbnRyaWVzOyB0cmFjayBlKSB7XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJlLmlkXCI+e3tcbiAgICAgICAgICAgICAgICBlLnZhbHVlXG4gICAgICAgICAgICAgIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gdGFnIChmcmVlKSAtLT5cbiAgICAgIEBpZiAoIWlkVGFnRW50cmllcz8ubGVuZ3RoKSB7XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInNob3J0LXRleHRcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPnRhZzwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwidGFnXCIgLz5cbiAgICAgICAgICBAaWYgKCRhbnkodGFnLmVycm9ycyk/Lm1heExlbmd0aCAmJiAodGFnLmRpcnR5IHx8IHRhZy50b3VjaGVkKSkge1xuICAgICAgICAgICAgPG1hdC1lcnJvclxuICAgICAgICAgICAgICA+dGFnIHRvbyBsb25nPC9tYXQtZXJyb3JcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIHNjb3BlIChib3VuZCkgLS0+XG4gICAgICAgIEBpZiAoaWRTY29wZUVudHJpZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInNob3J0LXRleHRcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+c2NvcGU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJzY29wZVwiPlxuICAgICAgICAgICAgICBAZm9yIChlIG9mIGlkU2NvcGVFbnRyaWVzOyB0cmFjayBlKSB7XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cImUuaWRcIj57e1xuICAgICAgICAgICAgICAgICAgZS52YWx1ZVxuICAgICAgICAgICAgICAgIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIHNjb3BlIChmcmVlKSAtLT5cbiAgICAgICAgQGlmICghaWRTY29wZUVudHJpZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInNob3J0LXRleHRcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+c2NvcGU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwic2NvcGVcIiAvPlxuICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgJGFueShzY29wZS5lcnJvcnMpPy5tYXhMZW5ndGggJiYgKHNjb3BlLmRpcnR5IHx8IHNjb3BlLnRvdWNoZWQpXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICA8bWF0LWVycm9yXG4gICAgICAgICAgICAgICAgPnNjb3BlIHRvbyBsb25nPC9tYXQtZXJyb3JcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPCEtLSBsYWJlbCBhbmQgR0lEIC0tPlxuICAgICAgICAgIEBpZiAodGFyZ2V0LnZhbHVlPy5sYWJlbCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPmxhYmVsPC9zcGFuPnt7IHRhcmdldC52YWx1ZT8ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHRhcmdldC52YWx1ZT8uZ2lkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mb1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+R0lEPC9zcGFuPnt7IHRhcmdldC52YWx1ZT8uZ2lkIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gdGFyZ2V0IC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm94ZWRcIj5cbiAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbKGV4cGFuZGVkKV09XCJ0YXJnZXRFeHBhbmRlZFwiPlxuICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPnRhcmdldDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICA8Y2FkbXVzLXBpbi10YXJnZXQtbG9va3VwXG4gICAgICAgICAgICAgIFtwaW5CeVR5cGVNb2RlXT1cInBpbkJ5VHlwZU1vZGVcIlxuICAgICAgICAgICAgICBbY2FuU3dpdGNoTW9kZV09XCJjYW5Td2l0Y2hNb2RlXCJcbiAgICAgICAgICAgICAgW2NhbkVkaXRUYXJnZXRdPVwiY2FuRWRpdFRhcmdldFwiXG4gICAgICAgICAgICAgIFtsb29rdXBEZWZpbml0aW9uc109XCJsb29rdXBEZWZpbml0aW9uc1wiXG4gICAgICAgICAgICAgIFtkZWZhdWx0UGFydFR5cGVLZXldPVwiZGVmYXVsdFBhcnRUeXBlS2V5XCJcbiAgICAgICAgICAgICAgW3RhcmdldF09XCJ0YXJnZXQudmFsdWVcIlxuICAgICAgICAgICAgICBbaW50ZXJuYWxEZWZhdWx0XT1cImludGVybmFsRGVmYXVsdFwiXG4gICAgICAgICAgICAgIFtleHRMb29rdXBDb25maWdzXT1cImV4dExvb2t1cENvbmZpZ3NcIlxuICAgICAgICAgICAgICAodGFyZ2V0Q2hhbmdlKT1cIm9uVGFyZ2V0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAoZWRpdG9yQ2xvc2UpPVwib25FZGl0b3JDbG9zZSgpXCJcbiAgICAgICAgICAgICAgKGV4dE1vcmVSZXF1ZXN0KT1cIm9uRXh0TW9yZVJlcXVlc3QoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChleHRMb29rdXBDb25maWdDaGFuZ2UpPVwib25FeHRMb29rdXBDb25maWdDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC9jYWRtdXMtcGluLXRhcmdldC1sb29rdXA+XG4gICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIGFzc2VydGlvbiAtLT5cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3hlZFwiPlxuICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPmFzc2VydGlvbjwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICA8Y2FkbXVzLXJlZnMtYXNzZXJ0aW9uXG4gICAgICAgICAgICAgIFthc3NUYWdFbnRyaWVzXT1cImFzc1RhZ0VudHJpZXNcIlxuICAgICAgICAgICAgICBbcmVmVHlwZUVudHJpZXNdPVwicmVmVHlwZUVudHJpZXNcIlxuICAgICAgICAgICAgICBbcmVmVGFnRW50cmllc109XCJyZWZUYWdFbnRyaWVzXCJcbiAgICAgICAgICAgICAgW2Fzc2VydGlvbl09XCJhc3NlcnRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAoYXNzZXJ0aW9uQ2hhbmdlKT1cIm9uQXNzZXJ0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2NhZG11cy1yZWZzLWFzc2VydGlvbj5cbiAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gYnV0dG9ucyAtLT5cbiAgICAgIEBpZiAoaGFzU3VibWl0KSB7XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiF0aGlzLnRhcmdldC52YWx1ZT8uZ2lkIHx8ICF0aGlzLnRhcmdldC52YWx1ZT8ubGFiZWxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uPmNoZWNrX2NpcmNsZTwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZm9ybT5cbiJdfQ==
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0ZWQtY29tcG9zaXRlLWlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2NhZG11cy1yZWZzLWFzc2VydGVkLWlkcy9zcmMvbGliL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZC9hc3NlcnRlZC1jb21wb3NpdGUtaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXJlZnMtYXNzZXJ0ZWQtaWRzL3NyYy9saWIvYXNzZXJ0ZWQtY29tcG9zaXRlLWlkL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBSUwsV0FBVyxFQUNYLG1CQUFtQixFQUNuQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSTNELE9BQU8sRUFBYSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBT2hGLE9BQU8sRUFFTCx3QkFBd0IsR0FDekIsTUFBTSxrREFB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QixNQUFNO2dCQUlBLGNBQWM7c0JBRHBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgRm9ybUJ1aWxkZXIsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgRm9ybUdyb3VwLFxyXG4gIEZvcm1zTW9kdWxlLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5cclxuaW1wb3J0IHsgUmFtU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAbXlybWlkb24vbmctdG9vbHMnO1xyXG5pbXBvcnQgeyBJbmRleExvb2t1cERlZmluaXRpb25zLCBUaGVzYXVydXNFbnRyeSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtY29yZSc7XHJcbmltcG9ydCB7IEFzc2VydGlvbiwgQXNzZXJ0aW9uQ29tcG9uZW50IH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1yZWZzLWFzc2VydGlvbic7XHJcbmltcG9ydCB7XHJcbiAgUmVmTG9va3VwQ29uZmlnLFxyXG4gIFJlZkxvb2t1cFNldEV2ZW50LFxyXG59IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtcmVmcy1sb29rdXAnO1xyXG5cclxuaW1wb3J0IHsgUGluUmVmTG9va3VwU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Bpbi1yZWYtbG9va3VwLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFBpblRhcmdldCxcclxuICBQaW5UYXJnZXRMb29rdXBDb21wb25lbnQsXHJcbn0gZnJvbSAnLi4vcGluLXRhcmdldC1sb29rdXAvcGluLXRhcmdldC1sb29rdXAuY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBBbiBhc3NlcnRlZCBjb21wb3NpdGUgSUQuIFRoaXMgY2FuIGJlIGFuIGV4dGVybmFsIElELCBoYXZpbmcgb25seSB0aGUgSUQgdmFsdWVcclxuICogYXMgaXRzIHRhcmdldC5naWQgcHJvcGVydHk7IG9yIGEgbG9va3VwIElELCB3aXRoIGEgcGluLWJhc2VkIHRhcmdldC5cclxuICogSW4gYm90aCBjYXNlcywgd2UgY2FuIGFkZCBhIHRhZywgYSBzY29wZSwgYW5kIGFuIGFzc2VydGlvbi5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXNzZXJ0ZWRDb21wb3NpdGVJZCB7XHJcbiAgdGFyZ2V0OiBQaW5UYXJnZXQ7XHJcbiAgdGFnPzogc3RyaW5nO1xyXG4gIHNjb3BlPzogc3RyaW5nO1xyXG4gIGFzc2VydGlvbj86IEFzc2VydGlvbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoZSBrZXkgdG8gYmUgdXNlZCB0byByZXRyaWV2ZSB0aGUgZXh0ZXJuYWwgbG9va3VwIGNvbmZpZ3MgZnJvbSB0aGVcclxuICogc2V0dGluZ3Mgc3RvcmFnZS4gVGhpcyBpcyBlcXVhbCB0byB0aGUgc2VsZWN0b3Igb2ZcclxuICogQXNzZXJ0ZWRDb21wb3NpdGVJZENvbXBvbmVudCBwbHVzIFwiLmNvbmZpZ3NcIi5cclxuICovXHJcbmV4cG9ydCBjb25zdCBBU1NFUlRFRF9DT01QT1NJVEVfSURfQ09ORklHU19LRVkgPVxyXG4gICdjYWRtdXMtcmVmcy1hc3NlcnRlZC1jb21wb3NpdGUtaWQuY29uZmlncyc7XHJcblxyXG4vKipcclxuICogQW4gYXNzZXJ0ZWQgY29tcG9zaXRlIElEIGVkaXRvci4gVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gZWRpdCBhbiBhc3NlcnRlZFxyXG4gKiBjb21wb3NpdGUgSUQsIHdoaWNoIGNhbiBiZSBhbiBleHRlcm5hbCBJRCBvciBhIGxvb2t1cCBJRC5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2VsZWN0b3I6ICdjYWRtdXMtcmVmcy1hc3NlcnRlZC1jb21wb3NpdGUtaWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hc3NlcnRlZC1jb21wb3NpdGUtaWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZC5jb21wb25lbnQuY3NzJ10sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0RXhwYW5zaW9uTW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgQXNzZXJ0aW9uQ29tcG9uZW50LFxyXG4gICAgUGluVGFyZ2V0TG9va3VwQ29tcG9uZW50LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc3NlcnRlZENvbXBvc2l0ZUlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwcml2YXRlIF91cGRhdGluZ0Zvcm06IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfaWQ6IEFzc2VydGVkQ29tcG9zaXRlSWQgfCB1bmRlZmluZWQ7XHJcblxyXG4gIHB1YmxpYyBleHRMb29rdXBDb25maWdzOiBSZWZMb29rdXBDb25maWdbXTtcclxuICBwdWJsaWMgdGFyZ2V0RXhwYW5kZWQ6IGJvb2xlYW47XHJcbiAgLy8gZm9ybVxyXG4gIHB1YmxpYyB0YXJnZXQ6IEZvcm1Db250cm9sPFBpblRhcmdldCB8IG51bGw+O1xyXG4gIHB1YmxpYyBzY29wZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XHJcbiAgcHVibGljIHRhZzogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XHJcbiAgcHVibGljIGFzc2VydGlvbjogRm9ybUNvbnRyb2w8QXNzZXJ0aW9uIHwgbnVsbD47XHJcbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgLy8gYXNzZXJ0ZWQtaWQtc2NvcGVzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaWRTY29wZUVudHJpZXM/OiBUaGVzYXVydXNFbnRyeVtdO1xyXG5cclxuICAvLyBhc3NlcnRlZC1pZC10YWdzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaWRUYWdFbnRyaWVzPzogVGhlc2F1cnVzRW50cnlbXTtcclxuXHJcbiAgLy8gYXNzZXJ0aW9uLXRhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhc3NUYWdFbnRyaWVzPzogVGhlc2F1cnVzRW50cnlbXTtcclxuXHJcbiAgLy8gZG9jLXJlZmVyZW5jZS10eXBlc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlZlR5cGVFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvLyBkb2MtcmVmZXJlbmNlLXRhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZWZUYWdFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgSUQgYmVpbmcgZWRpdGVkLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBpZCgpOiBBc3NlcnRlZENvbXBvc2l0ZUlkIHwgdW5kZWZpbmVkIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5faWQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgaWQodmFsdWU6IEFzc2VydGVkQ29tcG9zaXRlSWQgfCB1bmRlZmluZWQgfCBudWxsKSB7XHJcbiAgICBpZiAodGhpcy5faWQgIT09IHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX2lkID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLnVwZGF0ZUZvcm0odGhpcy5faWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJ1ZSBpZiB3aGVuIGEgbmV3IElEIGlzIHNldCBpdCBzaG91bGQgYmUgaW50ZXJuYWwgcmF0aGVyIHRoYW5cclxuICAgKiBleHRlcm5hbCBieSBkZWZhdWx0LlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGludGVybmFsRGVmYXVsdDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqXHJcbiAgICogVHJ1ZSBpZiB0aGUgVUkgaGFzIGEgc3VibWl0IGJ1dHRvbi5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBoYXNTdWJtaXQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRydWUgd2hlbiB0aGUgaW50ZXJuYWwgVUkgcHJlc2VsZWN0ZWQgbW9kZSBzaG91bGQgYmUgYnkgdHlwZSByYXRoZXIgdGhhblxyXG4gICAqIGJ5IGl0ZW0uIFVzZXIgY2FuIGNoYW5nZSBtb2RlIHVubGVzcyBtb2RlU3dpdGNoaW5nIGlzIGZhbHNlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBpbkJ5VHlwZU1vZGU/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIFRydWUgd2hlbiB0aGUgdXNlciBjYW4gc3dpdGNoIGJldHdlZW4gYnktdHlwZSBhbmQgYnktaXRlbSBtb2RlIGluXHJcbiAgICogdGhlIGludGVybmFsIFVJLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNhblN3aXRjaE1vZGU/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIFRydWUgd2hlbiB0aGUgdXNlciBjYW4gZWRpdCB0aGUgdGFyZ2V0J3MgZ2lkL2xhYmVsIGZvciBpbnRlcm5hbCB0YXJnZXRzLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNhbkVkaXRUYXJnZXQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIFRoZSBsb29rdXAgZGVmaW5pdGlvbnMgdG8gYmUgdXNlZCBmb3IgdGhlIGJ5LXR5cGUgbG9va3VwIGluIHRoZSBpbnRlcm5hbCBVSS5cclxuICAgKiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgbG9va3VwIGRlZmluaXRpb25zIHdpbGwgYmUgZ290IHZpYSBpbmplY3Rpb25cclxuICAgKiB3aGVuIGF2YWlsYWJsZTsgaWYgdGhlIGluamVjdGVkIGRlZmluaXRpb25zIGFyZSBlbXB0eSwgdGhlXHJcbiAgICogbG9va3VwIGRlZmluaXRpb25zIHdpbGwgYmUgYnVpbHQgZnJvbSB0aGUgbW9kZWwtdHlwZXMgdGhlc2F1cnVzO1xyXG4gICAqIGlmIHRoaXMgaXMgbm90IGF2YWlsYWJsZSBlaXRoZXIsIHRoZSBieS10eXBlIGxvb2t1cCB3aWxsIGJlXHJcbiAgICogZGlzYWJsZWQuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbG9va3VwRGVmaW5pdGlvbnM/OiBJbmRleExvb2t1cERlZmluaXRpb25zO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgZGVmYXVsdCBwYXJ0IHR5cGUga2V5IHRvIGJlIHVzZWQuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVmYXVsdFBhcnRUeXBlS2V5Pzogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHRlZCB3aGVuZXZlciB0aGUgSUQgY2hhbmdlcy5cclxuICAgKi9cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgaWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBc3NlcnRlZENvbXBvc2l0ZUlkPjtcclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHRlZCB3aGVuZXZlciB0aGUgdXNlciByZXF1ZXN0cyB0byBjbG9zZSB0aGUgZWRpdG9yLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBlZGl0b3JDbG9zZTogRXZlbnRFbWl0dGVyPGFueT47XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBleHRNb3JlUmVxdWVzdDogRXZlbnRFbWl0dGVyPFJlZkxvb2t1cFNldEV2ZW50PjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwdWJsaWMgbG9va3VwU2VydmljZTogUGluUmVmTG9va3VwU2VydmljZSxcclxuICAgIEBJbmplY3QoJ2luZGV4TG9va3VwRGVmaW5pdGlvbnMnKVxyXG4gICAgcHVibGljIGxvb2t1cERlZnM6IEluZGV4TG9va3VwRGVmaW5pdGlvbnMsXHJcbiAgICBzZXR0aW5nczogUmFtU3RvcmFnZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMudGFyZ2V0ID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIHRoaXMuc2NvcGUgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwMCkpO1xyXG4gICAgdGhpcy50YWcgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSk7XHJcbiAgICB0aGlzLmFzc2VydGlvbiA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCk7XHJcbiAgICB0aGlzLmZvcm0gPSBmb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIHRhcmdldDogdGhpcy50YXJnZXQsXHJcbiAgICAgIHNjb3BlOiB0aGlzLnNjb3BlLFxyXG4gICAgICB0YWc6IHRoaXMudGFnLFxyXG4gICAgICBhc3NlcnRpb246IHRoaXMuYXNzZXJ0aW9uLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRhcmdldEV4cGFuZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmV4dExvb2t1cENvbmZpZ3MgPVxyXG4gICAgICBzZXR0aW5ncy5yZXRyaWV2ZTxSZWZMb29rdXBDb25maWdbXT4oQVNTRVJURURfQ09NUE9TSVRFX0lEX0NPTkZJR1NfS0VZKSB8fFxyXG4gICAgICBbXTtcclxuICAgIC8vIGV2ZW50c1xyXG4gICAgdGhpcy5pZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXNzZXJ0ZWRDb21wb3NpdGVJZD4oKTtcclxuICAgIHRoaXMuZWRpdG9yQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIHRoaXMuZXh0TW9yZVJlcXVlc3QgPSBuZXcgRXZlbnRFbWl0dGVyPFJlZkxvb2t1cFNldEV2ZW50PigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSgoXykgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuX3VwZGF0aW5nRm9ybSkge1xyXG4gICAgICAgIHRoaXMuZW1pdElkQ2hhbmdlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQXNzZXJ0aW9uQ2hhbmdlKGFzc2VydGlvbjogQXNzZXJ0aW9uIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICB0aGlzLmFzc2VydGlvbi5zZXRWYWx1ZShhc3NlcnRpb24gfHwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25UYXJnZXRDaGFuZ2UodGFyZ2V0OiBQaW5UYXJnZXQpOiB2b2lkIHtcclxuICAgIHRoaXMudGFyZ2V0LnNldFZhbHVlKHRhcmdldCk7XHJcbiAgICB0aGlzLnRhcmdldC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy50YXJnZXQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy50YXJnZXRFeHBhbmRlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVGb3JtKGlkOiBBc3NlcnRlZENvbXBvc2l0ZUlkIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICB0aGlzLl91cGRhdGluZ0Zvcm0gPSB0cnVlO1xyXG4gICAgaWYgKCFpZCkge1xyXG4gICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGFyZ2V0LnNldFZhbHVlKGlkLnRhcmdldCk7XHJcbiAgICAgIHRoaXMuc2NvcGUuc2V0VmFsdWUoaWQuc2NvcGUgfHwgbnVsbCk7XHJcbiAgICAgIHRoaXMudGFnLnNldFZhbHVlKGlkLnRhZyB8fCBudWxsKTtcclxuICAgICAgdGhpcy5hc3NlcnRpb24uc2V0VmFsdWUoaWQuYXNzZXJ0aW9uIHx8IG51bGwpO1xyXG4gICAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3VwZGF0aW5nRm9ybSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRJZCgpOiBBc3NlcnRlZENvbXBvc2l0ZUlkIHtcclxuICAgIGNvbnN0IGV4dGVybmFsID0gIXRoaXMudGFyZ2V0LnZhbHVlPy5uYW1lO1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy50YXJnZXQudmFsdWU7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0YXJnZXQ6IGV4dGVybmFsXHJcbiAgICAgICAgPyB7XHJcbiAgICAgICAgICAgIGdpZDogdGFyZ2V0Py5naWQgfHwgJycsXHJcbiAgICAgICAgICAgIGxhYmVsOiB0YXJnZXQ/LmxhYmVsIHx8IHRhcmdldD8uZ2lkIHx8ICcnLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDogdGFyZ2V0ISxcclxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGUudmFsdWU/LnRyaW0oKSB8fCAnJyxcclxuICAgICAgdGFnOiB0aGlzLnRhZy52YWx1ZT8udHJpbSgpLFxyXG4gICAgICBhc3NlcnRpb246IHRoaXMuYXNzZXJ0aW9uLnZhbHVlIHx8IHVuZGVmaW5lZCxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW1pdElkQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmhhc1N1Ym1pdCkge1xyXG4gICAgICB0aGlzLl9pZCA9IHRoaXMuZ2V0SWQoKTtcclxuICAgICAgdGhpcy5pZENoYW5nZS5lbWl0KHRoaXMuX2lkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkVkaXRvckNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy50YXJnZXRFeHBhbmRlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRXh0TW9yZVJlcXVlc3QoZXZlbnQ6IFJlZkxvb2t1cFNldEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmV4dE1vcmVSZXF1ZXN0LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRXh0TG9va3VwQ29uZmlnQ2hhbmdlKGNvbmZpZzogUmVmTG9va3VwQ29uZmlnKTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLnNjb3BlLnZhbHVlIHx8XHJcbiAgICAgIHRoaXMuZXh0TG9va3VwQ29uZmlncy5zb21lKChjKSA9PiBjLm5hbWUgPT09IHRoaXMuc2NvcGUudmFsdWUpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zY29wZS5zZXRWYWx1ZShjb25maWcubmFtZSB8fCBudWxsKTtcclxuICAgICAgdGhpcy5zY29wZS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICB0aGlzLnNjb3BlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvckNsb3NlLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9ybS52YWxpZCkge1xyXG4gICAgICB0aGlzLl9pZCA9IHRoaXMuZ2V0SWQoKTtcclxuICAgICAgdGhpcy5pZENoYW5nZS5lbWl0KHRoaXMuX2lkKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKHN1Ym1pdCk9XCJzYXZlKClcIj5cbiAgPGRpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICAgIDwhLS0gdGFnIChib3VuZCkgLS0+XG4gICAgICBAaWYgKGlkVGFnRW50cmllcz8ubGVuZ3RoKSB7XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInNob3J0LXRleHRcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPnRhZzwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJ0YWdcIj5cbiAgICAgICAgICAgIEBmb3IgKGUgb2YgaWRUYWdFbnRyaWVzOyB0cmFjayBlKSB7XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJlLmlkXCI+e3tcbiAgICAgICAgICAgICAgICBlLnZhbHVlXG4gICAgICAgICAgICAgIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gdGFnIChmcmVlKSAtLT5cbiAgICAgIEBpZiAoIWlkVGFnRW50cmllcz8ubGVuZ3RoKSB7XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInNob3J0LXRleHRcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPnRhZzwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwidGFnXCIgLz5cbiAgICAgICAgICBAaWYgKCRhbnkodGFnLmVycm9ycyk/Lm1heExlbmd0aCAmJiAodGFnLmRpcnR5IHx8IHRhZy50b3VjaGVkKSkge1xuICAgICAgICAgICAgPG1hdC1lcnJvclxuICAgICAgICAgICAgICA+dGFnIHRvbyBsb25nPC9tYXQtZXJyb3JcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIHNjb3BlIChib3VuZCkgLS0+XG4gICAgICAgIEBpZiAoaWRTY29wZUVudHJpZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInNob3J0LXRleHRcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+c2NvcGU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJzY29wZVwiPlxuICAgICAgICAgICAgICBAZm9yIChlIG9mIGlkU2NvcGVFbnRyaWVzOyB0cmFjayBlKSB7XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cImUuaWRcIj57e1xuICAgICAgICAgICAgICAgICAgZS52YWx1ZVxuICAgICAgICAgICAgICAgIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIHNjb3BlIChmcmVlKSAtLT5cbiAgICAgICAgQGlmICghaWRTY29wZUVudHJpZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInNob3J0LXRleHRcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+c2NvcGU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwic2NvcGVcIiAvPlxuICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgJGFueShzY29wZS5lcnJvcnMpPy5tYXhMZW5ndGggJiYgKHNjb3BlLmRpcnR5IHx8IHNjb3BlLnRvdWNoZWQpXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICA8bWF0LWVycm9yXG4gICAgICAgICAgICAgICAgPnNjb3BlIHRvbyBsb25nPC9tYXQtZXJyb3JcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPCEtLSBsYWJlbCBhbmQgR0lEIC0tPlxuICAgICAgICAgIEBpZiAodGFyZ2V0LnZhbHVlPy5sYWJlbCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPmxhYmVsPC9zcGFuPnt7IHRhcmdldC52YWx1ZT8ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHRhcmdldC52YWx1ZT8uZ2lkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mb1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+R0lEPC9zcGFuPnt7IHRhcmdldC52YWx1ZT8uZ2lkIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gdGFyZ2V0IC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm94ZWRcIj5cbiAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbKGV4cGFuZGVkKV09XCJ0YXJnZXRFeHBhbmRlZFwiPlxuICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPnRhcmdldDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICA8Y2FkbXVzLXBpbi10YXJnZXQtbG9va3VwXG4gICAgICAgICAgICAgIFtwaW5CeVR5cGVNb2RlXT1cInBpbkJ5VHlwZU1vZGVcIlxuICAgICAgICAgICAgICBbY2FuU3dpdGNoTW9kZV09XCJjYW5Td2l0Y2hNb2RlXCJcbiAgICAgICAgICAgICAgW2NhbkVkaXRUYXJnZXRdPVwiY2FuRWRpdFRhcmdldFwiXG4gICAgICAgICAgICAgIFtsb29rdXBEZWZpbml0aW9uc109XCJsb29rdXBEZWZpbml0aW9uc1wiXG4gICAgICAgICAgICAgIFtkZWZhdWx0UGFydFR5cGVLZXldPVwiZGVmYXVsdFBhcnRUeXBlS2V5XCJcbiAgICAgICAgICAgICAgW3RhcmdldF09XCJ0YXJnZXQudmFsdWVcIlxuICAgICAgICAgICAgICBbaW50ZXJuYWxEZWZhdWx0XT1cImludGVybmFsRGVmYXVsdFwiXG4gICAgICAgICAgICAgIFtleHRMb29rdXBDb25maWdzXT1cImV4dExvb2t1cENvbmZpZ3NcIlxuICAgICAgICAgICAgICAodGFyZ2V0Q2hhbmdlKT1cIm9uVGFyZ2V0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAoZWRpdG9yQ2xvc2UpPVwib25FZGl0b3JDbG9zZSgpXCJcbiAgICAgICAgICAgICAgKGV4dE1vcmVSZXF1ZXN0KT1cIm9uRXh0TW9yZVJlcXVlc3QoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChleHRMb29rdXBDb25maWdDaGFuZ2UpPVwib25FeHRMb29rdXBDb25maWdDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC9jYWRtdXMtcGluLXRhcmdldC1sb29rdXA+XG4gICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIGFzc2VydGlvbiAtLT5cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3hlZFwiPlxuICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPmFzc2VydGlvbjwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICA8Y2FkbXVzLXJlZnMtYXNzZXJ0aW9uXG4gICAgICAgICAgICAgIFthc3NUYWdFbnRyaWVzXT1cImFzc1RhZ0VudHJpZXNcIlxuICAgICAgICAgICAgICBbcmVmVHlwZUVudHJpZXNdPVwicmVmVHlwZUVudHJpZXNcIlxuICAgICAgICAgICAgICBbcmVmVGFnRW50cmllc109XCJyZWZUYWdFbnRyaWVzXCJcbiAgICAgICAgICAgICAgW2Fzc2VydGlvbl09XCJhc3NlcnRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAoYXNzZXJ0aW9uQ2hhbmdlKT1cIm9uQXNzZXJ0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2NhZG11cy1yZWZzLWFzc2VydGlvbj5cbiAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gYnV0dG9ucyAtLT5cbiAgICAgIEBpZiAoaGFzU3VibWl0KSB7XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiF0aGlzLnRhcmdldC52YWx1ZT8uZ2lkIHx8ICF0aGlzLnRhcmdldC52YWx1ZT8ubGFiZWxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LXdhcm5cIj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1wcmltYXJ5XCI+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9mb3JtPlxuIl19
|
|
@@ -127,10 +127,10 @@ export class AssertedCompositeIdsComponent {
|
|
|
127
127
|
this.saveId(id);
|
|
128
128
|
this.emitIdsChange();
|
|
129
129
|
}
|
|
130
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
131
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.
|
|
130
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AssertedCompositeIdsComponent, deps: [{ token: i1.FormBuilder }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
131
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AssertedCompositeIdsComponent, isStandalone: true, selector: "cadmus-refs-asserted-composite-ids", inputs: { ids: "ids", idScopeEntries: "idScopeEntries", idTagEntries: "idTagEntries", assTagEntries: "assTagEntries", refTypeEntries: "refTypeEntries", refTagEntries: "refTagEntries", pinByTypeMode: "pinByTypeMode", canSwitchMode: "canSwitchMode", canEditTarget: "canEditTarget", lookupDefinitions: "lookupDefinitions", defaultPartTypeKey: "defaultPartTypeKey", internalDefault: "internalDefault" }, outputs: { idsChange: "idsChange" }, ngImport: i0, template: "<form [formGroup]=\"form\">\n <!-- buttons -->\n <button\n type=\"button\"\n color=\"primary\"\n class=\"mat-primary\"\n mat-flat-button\n (click)=\"addId()\"\n >\n <mat-icon>add_circle</mat-icon> ID\n </button>\n <!-- list -->\n @if (entries.value.length) {\n <table>\n <thead>\n <tr>\n <th></th>\n <th>scope</th>\n <th>label</th>\n <th>value</th>\n <th>ass.</th>\n </tr>\n </thead>\n <tbody>\n @for ( entry of entries.value; track entry; let i = $index; let first =\n $first; let last = $last) {\n <tr>\n <td class=\"fit-width\">\n <button\n type=\"button\"\n mat-icon-button\n color=\"primary\"\n matTooltip=\"Edit this ID\"\n (click)=\"editId(entry, i)\"\n >\n <mat-icon class=\"mat-primary\">edit</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this ID up\"\n [disabled]=\"first\"\n (click)=\"moveIdUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this ID down\"\n [disabled]=\"last\"\n (click)=\"moveIdDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n matTooltip=\"Delete this ID\"\n (click)=\"deleteId(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td>{{ entry.scope }}</td>\n <td>{{ entry?.target?.label }}</td>\n <td>{{ entry?.target?.gid }}</td>\n <td>{{ entry?.assertion ? \"Y\" : \"N\" }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <!-- editor -->\n <mat-expansion-panel [expanded]=\"edited\" [disabled]=\"!edited\">\n <mat-expansion-panel-header\n >ID {{ edited?.target?.label }}</mat-expansion-panel-header\n >\n <cadmus-refs-asserted-composite-id\n [idScopeEntries]=\"idScopeEntries\"\n [idTagEntries]=\"idTagEntries\"\n [assTagEntries]=\"assTagEntries\"\n [refTypeEntries]=\"refTypeEntries\"\n [refTagEntries]=\"refTagEntries\"\n [hasSubmit]=\"true\"\n [pinByTypeMode]=\"pinByTypeMode\"\n [canSwitchMode]=\"canSwitchMode\"\n [canEditTarget]=\"canEditTarget\"\n [lookupDefinitions]=\"lookupDefinitions\"\n [defaultPartTypeKey]=\"defaultPartTypeKey\"\n [internalDefault]=\"internalDefault\"\n [id]=\"edited\"\n (idChange)=\"onIdChange($event)\"\n (editorClose)=\"closeId()\"\n ></cadmus-refs-asserted-composite-id>\n </mat-expansion-panel>\n</form>\n", styles: ["th{font-weight:400;color:silver;text-align:left}td{padding-right:4px}td.fit-width{width:1px;white-space:nowrap;padding:0}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i4.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i4.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "component", type: AssertedCompositeIdComponent, selector: "cadmus-refs-asserted-composite-id", inputs: ["idScopeEntries", "idTagEntries", "assTagEntries", "refTypeEntries", "refTagEntries", "id", "internalDefault", "hasSubmit", "pinByTypeMode", "canSwitchMode", "canEditTarget", "lookupDefinitions", "defaultPartTypeKey"], outputs: ["idChange", "editorClose", "extMoreRequest"] }] }); }
|
|
132
132
|
}
|
|
133
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AssertedCompositeIdsComponent, decorators: [{
|
|
134
134
|
type: Component,
|
|
135
135
|
args: [{ standalone: true, selector: 'cadmus-refs-asserted-composite-ids', imports: [
|
|
136
136
|
FormsModule,
|
|
@@ -142,7 +142,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
|
142
142
|
MatIconModule,
|
|
143
143
|
MatInputModule,
|
|
144
144
|
AssertedCompositeIdComponent
|
|
145
|
-
], template: "<form [formGroup]=\"form\">\n <!-- buttons -->\n <button
|
|
145
|
+
], template: "<form [formGroup]=\"form\">\n <!-- buttons -->\n <button\n type=\"button\"\n color=\"primary\"\n class=\"mat-primary\"\n mat-flat-button\n (click)=\"addId()\"\n >\n <mat-icon>add_circle</mat-icon> ID\n </button>\n <!-- list -->\n @if (entries.value.length) {\n <table>\n <thead>\n <tr>\n <th></th>\n <th>scope</th>\n <th>label</th>\n <th>value</th>\n <th>ass.</th>\n </tr>\n </thead>\n <tbody>\n @for ( entry of entries.value; track entry; let i = $index; let first =\n $first; let last = $last) {\n <tr>\n <td class=\"fit-width\">\n <button\n type=\"button\"\n mat-icon-button\n color=\"primary\"\n matTooltip=\"Edit this ID\"\n (click)=\"editId(entry, i)\"\n >\n <mat-icon class=\"mat-primary\">edit</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this ID up\"\n [disabled]=\"first\"\n (click)=\"moveIdUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this ID down\"\n [disabled]=\"last\"\n (click)=\"moveIdDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n matTooltip=\"Delete this ID\"\n (click)=\"deleteId(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td>{{ entry.scope }}</td>\n <td>{{ entry?.target?.label }}</td>\n <td>{{ entry?.target?.gid }}</td>\n <td>{{ entry?.assertion ? \"Y\" : \"N\" }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <!-- editor -->\n <mat-expansion-panel [expanded]=\"edited\" [disabled]=\"!edited\">\n <mat-expansion-panel-header\n >ID {{ edited?.target?.label }}</mat-expansion-panel-header\n >\n <cadmus-refs-asserted-composite-id\n [idScopeEntries]=\"idScopeEntries\"\n [idTagEntries]=\"idTagEntries\"\n [assTagEntries]=\"assTagEntries\"\n [refTypeEntries]=\"refTypeEntries\"\n [refTagEntries]=\"refTagEntries\"\n [hasSubmit]=\"true\"\n [pinByTypeMode]=\"pinByTypeMode\"\n [canSwitchMode]=\"canSwitchMode\"\n [canEditTarget]=\"canEditTarget\"\n [lookupDefinitions]=\"lookupDefinitions\"\n [defaultPartTypeKey]=\"defaultPartTypeKey\"\n [internalDefault]=\"internalDefault\"\n [id]=\"edited\"\n (idChange)=\"onIdChange($event)\"\n (editorClose)=\"closeId()\"\n ></cadmus-refs-asserted-composite-id>\n </mat-expansion-panel>\n</form>\n", styles: ["th{font-weight:400;color:silver;text-align:left}td{padding-right:4px}td.fit-width{width:1px;white-space:nowrap;padding:0}\n"] }]
|
|
146
146
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.DialogService }], propDecorators: { ids: [{
|
|
147
147
|
type: Input
|
|
148
148
|
}], idScopeEntries: [{
|
|
@@ -170,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
|
170
170
|
}], idsChange: [{
|
|
171
171
|
type: Output
|
|
172
172
|
}] } });
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0ZWQtY29tcG9zaXRlLWlkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtcmVmcy1hc3NlcnRlZC1pZHMvc3JjL2xpYi9hc3NlcnRlZC1jb21wb3NpdGUtaWRzL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXJlZnMtYXNzZXJ0ZWQtaWRzL3NyYy9saWIvYXNzZXJ0ZWQtY29tcG9zaXRlLWlkcy9hc3NlcnRlZC1jb21wb3NpdGUtaWRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUlMLFdBQVcsRUFDWCxtQkFBbUIsR0FDcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBS3pELE9BQU8sRUFFTCw0QkFBNEIsR0FDN0IsTUFBTSwwREFBMEQsQ0FBQzs7Ozs7OztBQUVsRTs7R0FFRztBQWtCSCxNQUFNLE9BQU8sNkJBQTZCO0lBS3hDOztPQUVH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QzlDMUMsNmlHQStGQSxvTEQ1REksV0FBVyxtU0FDWCxtQkFBbUIsK0tBQ25CLGVBQWUsd1VBQ2YsaUJBQWlCLDhCQUNqQixrQkFBa0Isb1lBQ2xCLGtCQUFrQiw4QkFDbEIsYUFBYSxtTEFDYixjQUFjLCtCQUNkLDRCQUE0Qjs7MkZBR25CLDZCQUE2QjtrQkFqQnpDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLG9DQUFvQyxXQUdyQzt3QkFDUCxXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsNEJBQTRCO3FCQUMvQjs0R0FXWSxHQUFHO3NCQURiLEtBQUs7Z0JBYUMsY0FBYztzQkFEcEIsS0FBSztnQkFLQyxZQUFZO3NCQURsQixLQUFLO2dCQUtDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBS0MsY0FBYztzQkFEcEIsS0FBSztnQkFLQyxhQUFhO3NCQURuQixLQUFLO2dCQVFDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBT0MsYUFBYTtzQkFEbkIsS0FBSztnQkFNQyxhQUFhO3NCQURuQixLQUFLO2dCQVdDLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFPQyxrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBUUMsZUFBZTtzQkFEckIsS0FBSztnQkFPQyxTQUFTO3NCQURmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtR3JvdXAsXHJcbiAgRm9ybXNNb2R1bGUsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IE1hdEV4cGFuc2lvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuXHJcbmltcG9ydCB7IEluZGV4TG9va3VwRGVmaW5pdGlvbnMsIFRoZXNhdXJ1c0VudHJ5IH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1jb3JlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BteXJtaWRvbi9uZy1tYXQtdG9vbHMnO1xyXG5cclxuaW1wb3J0IHtcclxuICBBc3NlcnRlZENvbXBvc2l0ZUlkLFxyXG4gIEFzc2VydGVkQ29tcG9zaXRlSWRDb21wb25lbnQsXHJcbn0gZnJvbSAnLi4vYXNzZXJ0ZWQtY29tcG9zaXRlLWlkL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZC5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEFzc2VydGVkIElEcyBlZGl0b3IuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLXJlZnMtYXNzZXJ0ZWQtY29tcG9zaXRlLWlkcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZHMuY29tcG9uZW50LmNzcyddLFxyXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgICBNYXRFeHBhbnNpb25Nb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgQXNzZXJ0ZWRDb21wb3NpdGVJZENvbXBvbmVudFxuXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFzc2VydGVkQ29tcG9zaXRlSWRzQ29tcG9uZW50IHtcclxuICBwcml2YXRlIF9pZHM6IEFzc2VydGVkQ29tcG9zaXRlSWRbXTtcclxuICBwcml2YXRlIF9lZGl0ZWRJbmRleDogbnVtYmVyO1xyXG4gIHB1YmxpYyBlZGl0ZWQ/OiBBc3NlcnRlZENvbXBvc2l0ZUlkO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgYXNzZXJ0ZWQgSURzLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBpZHMoKTogQXNzZXJ0ZWRDb21wb3NpdGVJZFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9pZHM7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgaWRzKHZhbHVlOiBBc3NlcnRlZENvbXBvc2l0ZUlkW10pIHtcclxuICAgIGlmICh0aGlzLl9pZHMgIT09IHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX2lkcyA9IHZhbHVlIHx8IFtdO1xyXG4gICAgICB0aGlzLnVwZGF0ZUZvcm0odmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gYXNzZXJ0ZWQtaWQtc2NvcGVzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaWRTY29wZUVudHJpZXM/OiBUaGVzYXVydXNFbnRyeVtdO1xyXG5cclxuICAvLyBhc3NlcnRlZC1pZC10YWdzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaWRUYWdFbnRyaWVzPzogVGhlc2F1cnVzRW50cnlbXTtcclxuXHJcbiAgLy8gYXNzZXJ0aW9uLXRhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhc3NUYWdFbnRyaWVzPzogVGhlc2F1cnVzRW50cnlbXTtcclxuXHJcbiAgLy8gZG9jLXJlZmVyZW5jZS10eXBlc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlZlR5cGVFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvLyBkb2MtcmVmZXJlbmNlLXRhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZWZUYWdFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBUcnVlIHdoZW4gdGhlIGludGVybmFsIFVJIHByZXNlbGVjdGVkIG1vZGUgc2hvdWxkIGJlIGJ5IHR5cGUgcmF0aGVyIHRoYW5cclxuICAgKiBieSBpdGVtLiBVc2VyIGNhbiBjaGFuZ2UgbW9kZSB1bmxlc3MgbW9kZVN3aXRjaGluZyBpcyBmYWxzZS5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwaW5CeVR5cGVNb2RlPzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBUcnVlIHdoZW4gdGhlIHVzZXIgY2FuIHN3aXRjaCBiZXR3ZWVuIGJ5LXR5cGUgYW5kIGJ5LWl0ZW0gbW9kZSBpblxyXG4gICAqIHRoZSBpbnRlcm5hbCBVSS5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjYW5Td2l0Y2hNb2RlPzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBUcnVlIHdoZW4gdGhlIHVzZXIgY2FuIGVkaXQgdGhlIHRhcmdldCdzIGdpZC9sYWJlbCBmb3IgaW50ZXJuYWwgdGFyZ2V0cy5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjYW5FZGl0VGFyZ2V0PzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBUaGUgbG9va3VwIGRlZmluaXRpb25zIHRvIGJlIHVzZWQgZm9yIHRoZSBieS10eXBlIGxvb2t1cCBpbiB0aGUgaW50ZXJuYWwgVUkuXHJcbiAgICogSWYgbm90IHNwZWNpZmllZCwgdGhlIGxvb2t1cCBkZWZpbml0aW9ucyB3aWxsIGJlIGdvdCB2aWEgaW5qZWN0aW9uXHJcbiAgICogd2hlbiBhdmFpbGFibGU7IGlmIHRoZSBpbmplY3RlZCBkZWZpbml0aW9ucyBhcmUgZW1wdHksIHRoZVxyXG4gICAqIGxvb2t1cCBkZWZpbml0aW9ucyB3aWxsIGJlIGJ1aWx0IGZyb20gdGhlIG1vZGVsLXR5cGVzIHRoZXNhdXJ1cztcclxuICAgKiBpZiB0aGlzIGlzIG5vdCBhdmFpbGFibGUgZWl0aGVyLCB0aGUgYnktdHlwZSBsb29rdXAgd2lsbCBiZVxyXG4gICAqIGRpc2FibGVkLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGxvb2t1cERlZmluaXRpb25zPzogSW5kZXhMb29rdXBEZWZpbml0aW9ucztcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGRlZmF1bHQgcGFydCB0eXBlIGtleS5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWZhdWx0UGFydFR5cGVLZXk/OiBzdHJpbmcgfCBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBUcnVlIGlmIHdoZW4gYSBuZXcgSUQgaXMgc2V0IGl0IHNob3VsZCBiZSBpbnRlcm5hbCByYXRoZXIgdGhhblxyXG4gICAqIGV4dGVybmFsIGJ5IGRlZmF1bHQuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaW50ZXJuYWxEZWZhdWx0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBFbWl0dGVkIHdoZW5ldmVyIGFueSBJRCBjaGFuZ2VzLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBpZHNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBc3NlcnRlZENvbXBvc2l0ZUlkW10+O1xyXG5cclxuICBwdWJsaWMgZW50cmllczogRm9ybUNvbnRyb2w8QXNzZXJ0ZWRDb21wb3NpdGVJZFtdPjtcclxuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpIHtcclxuICAgIHRoaXMuX2lkcyA9IFtdO1xyXG4gICAgdGhpcy5fZWRpdGVkSW5kZXggPSAtMTtcclxuICAgIHRoaXMuaWRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxBc3NlcnRlZENvbXBvc2l0ZUlkW10+KCk7XHJcbiAgICB0aGlzLmVudHJpZXMgPSBmb3JtQnVpbGRlci5jb250cm9sKFtdLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG4gICAgLy8gZm9ybVxyXG4gICAgdGhpcy5mb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBpZHM6IHRoaXMuZW50cmllcyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVGb3JtKGlkczogQXNzZXJ0ZWRDb21wb3NpdGVJZFtdKTogdm9pZCB7XHJcbiAgICBpZiAoIWlkcz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmVudHJpZXMuc2V0VmFsdWUoaWRzLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB0aGlzLmVudHJpZXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXRJZHNDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlkc0NoYW5nZS5lbWl0KHRoaXMuZW50cmllcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkSWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRJZChcclxuICAgICAge1xyXG4gICAgICAgIHRhcmdldDogeyBnaWQ6ICcnLCBsYWJlbDogJycgfSxcclxuICAgICAgfSxcclxuICAgICAgLTFcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZWRpdElkKGlkOiBBc3NlcnRlZENvbXBvc2l0ZUlkLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9lZGl0ZWRJbmRleCA9IGluZGV4O1xyXG4gICAgdGhpcy5lZGl0ZWQgPSBpZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZUlkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZWRpdGVkSW5kZXggPSAtMTtcclxuICAgIHRoaXMuZWRpdGVkID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmVJZChlbnRyeTogQXNzZXJ0ZWRDb21wb3NpdGVJZCk6IHZvaWQge1xyXG4gICAgY29uc3QgZW50cmllcyA9IFsuLi50aGlzLmVudHJpZXMudmFsdWVdO1xyXG4gICAgaWYgKHRoaXMuX2VkaXRlZEluZGV4ID09PSAtMSkge1xyXG4gICAgICBlbnRyaWVzLnB1c2goZW50cnkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZW50cmllcy5zcGxpY2UodGhpcy5fZWRpdGVkSW5kZXgsIDEsIGVudHJ5KTtcclxuICAgIH1cclxuICAgIHRoaXMuZW50cmllcy5zZXRWYWx1ZShlbnRyaWVzKTtcclxuICAgIHRoaXMuZW50cmllcy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy5lbnRyaWVzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuY2xvc2VJZCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGV0ZUlkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RpYWxvZ1NlcnZpY2VcclxuICAgICAgLmNvbmZpcm0oJ0NvbmZpcm1hdGlvbicsICdEZWxldGUgSUQ/JylcclxuICAgICAgLnBpcGUodGFrZSgxKSlcclxuICAgICAgLnN1YnNjcmliZSgoeWVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHllcykge1xyXG4gICAgICAgICAgaWYgKHRoaXMuX2VkaXRlZEluZGV4ID09PSBpbmRleCkge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlSWQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGVudHJpZXMgPSBbLi4udGhpcy5lbnRyaWVzLnZhbHVlXTtcclxuICAgICAgICAgIGVudHJpZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgIHRoaXMuZW50cmllcy5zZXRWYWx1ZShlbnRyaWVzKTtcclxuICAgICAgICAgIHRoaXMuZW50cmllcy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgdGhpcy5lbnRyaWVzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgIHRoaXMuZW1pdElkc0NoYW5nZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbW92ZUlkVXAoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGluZGV4IDwgMSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBlbnRyeSA9IHRoaXMuZW50cmllcy52YWx1ZVtpbmRleF07XHJcbiAgICBjb25zdCBlbnRyaWVzID0gWy4uLnRoaXMuZW50cmllcy52YWx1ZV07XHJcbiAgICBlbnRyaWVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICBlbnRyaWVzLnNwbGljZShpbmRleCAtIDEsIDAsIGVudHJ5KTtcclxuICAgIHRoaXMuZW50cmllcy5zZXRWYWx1ZShlbnRyaWVzKTtcclxuICAgIHRoaXMuZW50cmllcy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy5lbnRyaWVzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuZW1pdElkc0NoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1vdmVJZERvd24oaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGluZGV4ICsgMSA+PSB0aGlzLmVudHJpZXMudmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5lbnRyaWVzLnZhbHVlW2luZGV4XTtcclxuICAgIGNvbnN0IGVudHJpZXMgPSBbLi4udGhpcy5lbnRyaWVzLnZhbHVlXTtcclxuICAgIGVudHJpZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIGVudHJpZXMuc3BsaWNlKGluZGV4ICsgMSwgMCwgZW50cnkpO1xyXG4gICAgdGhpcy5lbnRyaWVzLnNldFZhbHVlKGVudHJpZXMpO1xyXG4gICAgdGhpcy5lbnRyaWVzLm1hcmtBc0RpcnR5KCk7XHJcbiAgICB0aGlzLmVudHJpZXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5lbWl0SWRzQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25JZENoYW5nZShpZDogQXNzZXJ0ZWRDb21wb3NpdGVJZCk6IHZvaWQge1xyXG4gICAgdGhpcy5zYXZlSWQoaWQpO1xyXG4gICAgdGhpcy5lbWl0SWRzQ2hhbmdlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICA8IS0tIGJ1dHRvbnMgLS0+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1mbGF0LWJ1dHRvbiAoY2xpY2spPVwiYWRkSWQoKVwiPlxuICAgIDxtYXQtaWNvbj5hZGRfY2lyY2xlPC9tYXQtaWNvbj4gSURcbiAgPC9idXR0b24+XG4gIDwhLS0gbGlzdCAtLT5cbiAgQGlmIChlbnRyaWVzLnZhbHVlLmxlbmd0aCkge1xuICAgIDx0YWJsZT5cbiAgICAgIDx0aGVhZD5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0aD48L3RoPlxuICAgICAgICAgIDx0aD5zY29wZTwvdGg+XG4gICAgICAgICAgPHRoPmxhYmVsPC90aD5cbiAgICAgICAgICA8dGg+dmFsdWU8L3RoPlxuICAgICAgICAgIDx0aD5hc3MuPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIEBmb3IgKFxuICAgICAgICAgIGVudHJ5IG9mIGVudHJpZXMudmFsdWU7IHRyYWNrXG4gICAgICAgICAgZW50cnk7IGxldCBpID0gJGluZGV4OyBsZXQgZmlyc3QgPSAkZmlyc3Q7IGxldCBsYXN0ID0gJGxhc3QpIHtcbiAgICAgICAgICA8dHJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZpdC13aWR0aFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRWRpdCB0aGlzIElEXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdElkKGVudHJ5LCBpKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5lZGl0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiTW92ZSB0aGlzIElEIHVwXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmlyc3RcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlSWRVcChpKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd191cHdhcmQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJNb3ZlIHRoaXMgSUQgZG93blwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxhc3RcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlSWREb3duKGkpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2Rvd253YXJkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEZWxldGUgdGhpcyBJRFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUlkKGkpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnJlbW92ZV9jaXJjbGU8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQ+e3sgZW50cnkuc2NvcGUgfX08L3RkPlxuICAgICAgICAgICAgPHRkPnt7IGVudHJ5Py50YXJnZXQ/LmxhYmVsIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZD57eyBlbnRyeT8udGFyZ2V0Py5naWQgfX08L3RkPlxuICAgICAgICAgICAgPHRkPnt7IGVudHJ5Py5hc3NlcnRpb24gPyBcIllcIiA6IFwiTlwiIH19PC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICB9XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gIH1cblxuICA8IS0tIGVkaXRvciAtLT5cbiAgPG1hdC1leHBhbnNpb24tcGFuZWwgW2V4cGFuZGVkXT1cImVkaXRlZFwiIFtkaXNhYmxlZF09XCIhZWRpdGVkXCI+XG4gICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyXG4gICAgICA+SUQge3sgZWRpdGVkPy50YXJnZXQ/LmxhYmVsIH19PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclxuICAgICAgPlxuICAgICAgPGNhZG11cy1yZWZzLWFzc2VydGVkLWNvbXBvc2l0ZS1pZFxuICAgICAgICBbaWRTY29wZUVudHJpZXNdPVwiaWRTY29wZUVudHJpZXNcIlxuICAgICAgICBbaWRUYWdFbnRyaWVzXT1cImlkVGFnRW50cmllc1wiXG4gICAgICAgIFthc3NUYWdFbnRyaWVzXT1cImFzc1RhZ0VudHJpZXNcIlxuICAgICAgICBbcmVmVHlwZUVudHJpZXNdPVwicmVmVHlwZUVudHJpZXNcIlxuICAgICAgICBbcmVmVGFnRW50cmllc109XCJyZWZUYWdFbnRyaWVzXCJcbiAgICAgICAgW2hhc1N1Ym1pdF09XCJ0cnVlXCJcbiAgICAgICAgW3BpbkJ5VHlwZU1vZGVdPVwicGluQnlUeXBlTW9kZVwiXG4gICAgICAgIFtjYW5Td2l0Y2hNb2RlXT1cImNhblN3aXRjaE1vZGVcIlxuICAgICAgICBbY2FuRWRpdFRhcmdldF09XCJjYW5FZGl0VGFyZ2V0XCJcbiAgICAgICAgW2xvb2t1cERlZmluaXRpb25zXT1cImxvb2t1cERlZmluaXRpb25zXCJcbiAgICAgICAgW2RlZmF1bHRQYXJ0VHlwZUtleV09XCJkZWZhdWx0UGFydFR5cGVLZXlcIlxuICAgICAgICBbaW50ZXJuYWxEZWZhdWx0XT1cImludGVybmFsRGVmYXVsdFwiXG4gICAgICAgIFtpZF09XCJlZGl0ZWRcIlxuICAgICAgICAoaWRDaGFuZ2UpPVwib25JZENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKGVkaXRvckNsb3NlKT1cImNsb3NlSWQoKVwiXG4gICAgICA+PC9jYWRtdXMtcmVmcy1hc3NlcnRlZC1jb21wb3NpdGUtaWQ+XG4gICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuICA8L2Zvcm0+XG4iXX0=
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0ZWQtY29tcG9zaXRlLWlkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtcmVmcy1hc3NlcnRlZC1pZHMvc3JjL2xpYi9hc3NlcnRlZC1jb21wb3NpdGUtaWRzL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXJlZnMtYXNzZXJ0ZWQtaWRzL3NyYy9saWIvYXNzZXJ0ZWQtY29tcG9zaXRlLWlkcy9hc3NlcnRlZC1jb21wb3NpdGUtaWRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUlMLFdBQVcsRUFDWCxtQkFBbUIsR0FDcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBS3pELE9BQU8sRUFFTCw0QkFBNEIsR0FDN0IsTUFBTSwwREFBMEQsQ0FBQzs7Ozs7OztBQUVsRTs7R0FFRztBQWtCSCxNQUFNLE9BQU8sNkJBQTZCO0lBS3hDOztPQUVH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QzlDMUMsODJGQW1HQSxvTERoRUksV0FBVyxtU0FDWCxtQkFBbUIsK0tBQ25CLGVBQWUsd1VBQ2YsaUJBQWlCLDhCQUNqQixrQkFBa0Isb1lBQ2xCLGtCQUFrQiw4QkFDbEIsYUFBYSxtTEFDYixjQUFjLCtCQUNkLDRCQUE0Qjs7MkZBR25CLDZCQUE2QjtrQkFqQnpDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLG9DQUFvQyxXQUdyQzt3QkFDUCxXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsNEJBQTRCO3FCQUMvQjs0R0FXWSxHQUFHO3NCQURiLEtBQUs7Z0JBYUMsY0FBYztzQkFEcEIsS0FBSztnQkFLQyxZQUFZO3NCQURsQixLQUFLO2dCQUtDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBS0MsY0FBYztzQkFEcEIsS0FBSztnQkFLQyxhQUFhO3NCQURuQixLQUFLO2dCQVFDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBT0MsYUFBYTtzQkFEbkIsS0FBSztnQkFNQyxhQUFhO3NCQURuQixLQUFLO2dCQVdDLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFPQyxrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBUUMsZUFBZTtzQkFEckIsS0FBSztnQkFPQyxTQUFTO3NCQURmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtR3JvdXAsXHJcbiAgRm9ybXNNb2R1bGUsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IE1hdEV4cGFuc2lvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuXHJcbmltcG9ydCB7IEluZGV4TG9va3VwRGVmaW5pdGlvbnMsIFRoZXNhdXJ1c0VudHJ5IH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1jb3JlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BteXJtaWRvbi9uZy1tYXQtdG9vbHMnO1xyXG5cclxuaW1wb3J0IHtcclxuICBBc3NlcnRlZENvbXBvc2l0ZUlkLFxyXG4gIEFzc2VydGVkQ29tcG9zaXRlSWRDb21wb25lbnQsXHJcbn0gZnJvbSAnLi4vYXNzZXJ0ZWQtY29tcG9zaXRlLWlkL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZC5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEFzc2VydGVkIElEcyBlZGl0b3IuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLXJlZnMtYXNzZXJ0ZWQtY29tcG9zaXRlLWlkcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZHMuY29tcG9uZW50LmNzcyddLFxyXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgICBNYXRFeHBhbnNpb25Nb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgQXNzZXJ0ZWRDb21wb3NpdGVJZENvbXBvbmVudFxuXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFzc2VydGVkQ29tcG9zaXRlSWRzQ29tcG9uZW50IHtcclxuICBwcml2YXRlIF9pZHM6IEFzc2VydGVkQ29tcG9zaXRlSWRbXTtcclxuICBwcml2YXRlIF9lZGl0ZWRJbmRleDogbnVtYmVyO1xyXG4gIHB1YmxpYyBlZGl0ZWQ/OiBBc3NlcnRlZENvbXBvc2l0ZUlkO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgYXNzZXJ0ZWQgSURzLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBpZHMoKTogQXNzZXJ0ZWRDb21wb3NpdGVJZFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9pZHM7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgaWRzKHZhbHVlOiBBc3NlcnRlZENvbXBvc2l0ZUlkW10pIHtcclxuICAgIGlmICh0aGlzLl9pZHMgIT09IHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX2lkcyA9IHZhbHVlIHx8IFtdO1xyXG4gICAgICB0aGlzLnVwZGF0ZUZvcm0odmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gYXNzZXJ0ZWQtaWQtc2NvcGVzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaWRTY29wZUVudHJpZXM/OiBUaGVzYXVydXNFbnRyeVtdO1xyXG5cclxuICAvLyBhc3NlcnRlZC1pZC10YWdzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaWRUYWdFbnRyaWVzPzogVGhlc2F1cnVzRW50cnlbXTtcclxuXHJcbiAgLy8gYXNzZXJ0aW9uLXRhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhc3NUYWdFbnRyaWVzPzogVGhlc2F1cnVzRW50cnlbXTtcclxuXHJcbiAgLy8gZG9jLXJlZmVyZW5jZS10eXBlc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlZlR5cGVFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvLyBkb2MtcmVmZXJlbmNlLXRhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZWZUYWdFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBUcnVlIHdoZW4gdGhlIGludGVybmFsIFVJIHByZXNlbGVjdGVkIG1vZGUgc2hvdWxkIGJlIGJ5IHR5cGUgcmF0aGVyIHRoYW5cclxuICAgKiBieSBpdGVtLiBVc2VyIGNhbiBjaGFuZ2UgbW9kZSB1bmxlc3MgbW9kZVN3aXRjaGluZyBpcyBmYWxzZS5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwaW5CeVR5cGVNb2RlPzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBUcnVlIHdoZW4gdGhlIHVzZXIgY2FuIHN3aXRjaCBiZXR3ZWVuIGJ5LXR5cGUgYW5kIGJ5LWl0ZW0gbW9kZSBpblxyXG4gICAqIHRoZSBpbnRlcm5hbCBVSS5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjYW5Td2l0Y2hNb2RlPzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBUcnVlIHdoZW4gdGhlIHVzZXIgY2FuIGVkaXQgdGhlIHRhcmdldCdzIGdpZC9sYWJlbCBmb3IgaW50ZXJuYWwgdGFyZ2V0cy5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjYW5FZGl0VGFyZ2V0PzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBUaGUgbG9va3VwIGRlZmluaXRpb25zIHRvIGJlIHVzZWQgZm9yIHRoZSBieS10eXBlIGxvb2t1cCBpbiB0aGUgaW50ZXJuYWwgVUkuXHJcbiAgICogSWYgbm90IHNwZWNpZmllZCwgdGhlIGxvb2t1cCBkZWZpbml0aW9ucyB3aWxsIGJlIGdvdCB2aWEgaW5qZWN0aW9uXHJcbiAgICogd2hlbiBhdmFpbGFibGU7IGlmIHRoZSBpbmplY3RlZCBkZWZpbml0aW9ucyBhcmUgZW1wdHksIHRoZVxyXG4gICAqIGxvb2t1cCBkZWZpbml0aW9ucyB3aWxsIGJlIGJ1aWx0IGZyb20gdGhlIG1vZGVsLXR5cGVzIHRoZXNhdXJ1cztcclxuICAgKiBpZiB0aGlzIGlzIG5vdCBhdmFpbGFibGUgZWl0aGVyLCB0aGUgYnktdHlwZSBsb29rdXAgd2lsbCBiZVxyXG4gICAqIGRpc2FibGVkLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGxvb2t1cERlZmluaXRpb25zPzogSW5kZXhMb29rdXBEZWZpbml0aW9ucztcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGRlZmF1bHQgcGFydCB0eXBlIGtleS5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWZhdWx0UGFydFR5cGVLZXk/OiBzdHJpbmcgfCBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBUcnVlIGlmIHdoZW4gYSBuZXcgSUQgaXMgc2V0IGl0IHNob3VsZCBiZSBpbnRlcm5hbCByYXRoZXIgdGhhblxyXG4gICAqIGV4dGVybmFsIGJ5IGRlZmF1bHQuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaW50ZXJuYWxEZWZhdWx0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBFbWl0dGVkIHdoZW5ldmVyIGFueSBJRCBjaGFuZ2VzLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBpZHNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBc3NlcnRlZENvbXBvc2l0ZUlkW10+O1xyXG5cclxuICBwdWJsaWMgZW50cmllczogRm9ybUNvbnRyb2w8QXNzZXJ0ZWRDb21wb3NpdGVJZFtdPjtcclxuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpIHtcclxuICAgIHRoaXMuX2lkcyA9IFtdO1xyXG4gICAgdGhpcy5fZWRpdGVkSW5kZXggPSAtMTtcclxuICAgIHRoaXMuaWRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxBc3NlcnRlZENvbXBvc2l0ZUlkW10+KCk7XHJcbiAgICB0aGlzLmVudHJpZXMgPSBmb3JtQnVpbGRlci5jb250cm9sKFtdLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG4gICAgLy8gZm9ybVxyXG4gICAgdGhpcy5mb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBpZHM6IHRoaXMuZW50cmllcyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVGb3JtKGlkczogQXNzZXJ0ZWRDb21wb3NpdGVJZFtdKTogdm9pZCB7XHJcbiAgICBpZiAoIWlkcz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmVudHJpZXMuc2V0VmFsdWUoaWRzLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB0aGlzLmVudHJpZXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXRJZHNDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlkc0NoYW5nZS5lbWl0KHRoaXMuZW50cmllcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkSWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRJZChcclxuICAgICAge1xyXG4gICAgICAgIHRhcmdldDogeyBnaWQ6ICcnLCBsYWJlbDogJycgfSxcclxuICAgICAgfSxcclxuICAgICAgLTFcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZWRpdElkKGlkOiBBc3NlcnRlZENvbXBvc2l0ZUlkLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9lZGl0ZWRJbmRleCA9IGluZGV4O1xyXG4gICAgdGhpcy5lZGl0ZWQgPSBpZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZUlkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZWRpdGVkSW5kZXggPSAtMTtcclxuICAgIHRoaXMuZWRpdGVkID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmVJZChlbnRyeTogQXNzZXJ0ZWRDb21wb3NpdGVJZCk6IHZvaWQge1xyXG4gICAgY29uc3QgZW50cmllcyA9IFsuLi50aGlzLmVudHJpZXMudmFsdWVdO1xyXG4gICAgaWYgKHRoaXMuX2VkaXRlZEluZGV4ID09PSAtMSkge1xyXG4gICAgICBlbnRyaWVzLnB1c2goZW50cnkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZW50cmllcy5zcGxpY2UodGhpcy5fZWRpdGVkSW5kZXgsIDEsIGVudHJ5KTtcclxuICAgIH1cclxuICAgIHRoaXMuZW50cmllcy5zZXRWYWx1ZShlbnRyaWVzKTtcclxuICAgIHRoaXMuZW50cmllcy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy5lbnRyaWVzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuY2xvc2VJZCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGV0ZUlkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RpYWxvZ1NlcnZpY2VcclxuICAgICAgLmNvbmZpcm0oJ0NvbmZpcm1hdGlvbicsICdEZWxldGUgSUQ/JylcclxuICAgICAgLnBpcGUodGFrZSgxKSlcclxuICAgICAgLnN1YnNjcmliZSgoeWVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHllcykge1xyXG4gICAgICAgICAgaWYgKHRoaXMuX2VkaXRlZEluZGV4ID09PSBpbmRleCkge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlSWQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGVudHJpZXMgPSBbLi4udGhpcy5lbnRyaWVzLnZhbHVlXTtcclxuICAgICAgICAgIGVudHJpZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgIHRoaXMuZW50cmllcy5zZXRWYWx1ZShlbnRyaWVzKTtcclxuICAgICAgICAgIHRoaXMuZW50cmllcy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgdGhpcy5lbnRyaWVzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgIHRoaXMuZW1pdElkc0NoYW5nZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbW92ZUlkVXAoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGluZGV4IDwgMSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBlbnRyeSA9IHRoaXMuZW50cmllcy52YWx1ZVtpbmRleF07XHJcbiAgICBjb25zdCBlbnRyaWVzID0gWy4uLnRoaXMuZW50cmllcy52YWx1ZV07XHJcbiAgICBlbnRyaWVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICBlbnRyaWVzLnNwbGljZShpbmRleCAtIDEsIDAsIGVudHJ5KTtcclxuICAgIHRoaXMuZW50cmllcy5zZXRWYWx1ZShlbnRyaWVzKTtcclxuICAgIHRoaXMuZW50cmllcy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy5lbnRyaWVzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuZW1pdElkc0NoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1vdmVJZERvd24oaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGluZGV4ICsgMSA+PSB0aGlzLmVudHJpZXMudmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5lbnRyaWVzLnZhbHVlW2luZGV4XTtcclxuICAgIGNvbnN0IGVudHJpZXMgPSBbLi4udGhpcy5lbnRyaWVzLnZhbHVlXTtcclxuICAgIGVudHJpZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIGVudHJpZXMuc3BsaWNlKGluZGV4ICsgMSwgMCwgZW50cnkpO1xyXG4gICAgdGhpcy5lbnRyaWVzLnNldFZhbHVlKGVudHJpZXMpO1xyXG4gICAgdGhpcy5lbnRyaWVzLm1hcmtBc0RpcnR5KCk7XHJcbiAgICB0aGlzLmVudHJpZXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5lbWl0SWRzQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25JZENoYW5nZShpZDogQXNzZXJ0ZWRDb21wb3NpdGVJZCk6IHZvaWQge1xyXG4gICAgdGhpcy5zYXZlSWQoaWQpO1xyXG4gICAgdGhpcy5lbWl0SWRzQ2hhbmdlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICA8IS0tIGJ1dHRvbnMgLS0+XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgIGNsYXNzPVwibWF0LXByaW1hcnlcIlxuICAgIG1hdC1mbGF0LWJ1dHRvblxuICAgIChjbGljayk9XCJhZGRJZCgpXCJcbiAgPlxuICAgIDxtYXQtaWNvbj5hZGRfY2lyY2xlPC9tYXQtaWNvbj4gSURcbiAgPC9idXR0b24+XG4gIDwhLS0gbGlzdCAtLT5cbiAgQGlmIChlbnRyaWVzLnZhbHVlLmxlbmd0aCkge1xuICA8dGFibGU+XG4gICAgPHRoZWFkPlxuICAgICAgPHRyPlxuICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgPHRoPnNjb3BlPC90aD5cbiAgICAgICAgPHRoPmxhYmVsPC90aD5cbiAgICAgICAgPHRoPnZhbHVlPC90aD5cbiAgICAgICAgPHRoPmFzcy48L3RoPlxuICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keT5cbiAgICAgIEBmb3IgKCBlbnRyeSBvZiBlbnRyaWVzLnZhbHVlOyB0cmFjayBlbnRyeTsgbGV0IGkgPSAkaW5kZXg7IGxldCBmaXJzdCA9XG4gICAgICAkZmlyc3Q7IGxldCBsYXN0ID0gJGxhc3QpIHtcbiAgICAgIDx0cj5cbiAgICAgICAgPHRkIGNsYXNzPVwiZml0LXdpZHRoXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiRWRpdCB0aGlzIElEXCJcbiAgICAgICAgICAgIChjbGljayk9XCJlZGl0SWQoZW50cnksIGkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtcHJpbWFyeVwiPmVkaXQ8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiTW92ZSB0aGlzIElEIHVwXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaXJzdFwiXG4gICAgICAgICAgICAoY2xpY2spPVwibW92ZUlkVXAoaSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd191cHdhcmQ8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiTW92ZSB0aGlzIElEIGRvd25cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxhc3RcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVJZERvd24oaSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19kb3dud2FyZDwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiRGVsZXRlIHRoaXMgSURcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUlkKGkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtd2FyblwiPnJlbW92ZV9jaXJjbGU8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQ+e3sgZW50cnkuc2NvcGUgfX08L3RkPlxuICAgICAgICA8dGQ+e3sgZW50cnk/LnRhcmdldD8ubGFiZWwgfX08L3RkPlxuICAgICAgICA8dGQ+e3sgZW50cnk/LnRhcmdldD8uZ2lkIH19PC90ZD5cbiAgICAgICAgPHRkPnt7IGVudHJ5Py5hc3NlcnRpb24gPyBcIllcIiA6IFwiTlwiIH19PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICB9XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT5cbiAgfVxuXG4gIDwhLS0gZWRpdG9yIC0tPlxuICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbZXhwYW5kZWRdPVwiZWRpdGVkXCIgW2Rpc2FibGVkXT1cIiFlZGl0ZWRcIj5cbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcbiAgICAgID5JRCB7eyBlZGl0ZWQ/LnRhcmdldD8ubGFiZWwgfX08L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyXG4gICAgPlxuICAgIDxjYWRtdXMtcmVmcy1hc3NlcnRlZC1jb21wb3NpdGUtaWRcbiAgICAgIFtpZFNjb3BlRW50cmllc109XCJpZFNjb3BlRW50cmllc1wiXG4gICAgICBbaWRUYWdFbnRyaWVzXT1cImlkVGFnRW50cmllc1wiXG4gICAgICBbYXNzVGFnRW50cmllc109XCJhc3NUYWdFbnRyaWVzXCJcbiAgICAgIFtyZWZUeXBlRW50cmllc109XCJyZWZUeXBlRW50cmllc1wiXG4gICAgICBbcmVmVGFnRW50cmllc109XCJyZWZUYWdFbnRyaWVzXCJcbiAgICAgIFtoYXNTdWJtaXRdPVwidHJ1ZVwiXG4gICAgICBbcGluQnlUeXBlTW9kZV09XCJwaW5CeVR5cGVNb2RlXCJcbiAgICAgIFtjYW5Td2l0Y2hNb2RlXT1cImNhblN3aXRjaE1vZGVcIlxuICAgICAgW2NhbkVkaXRUYXJnZXRdPVwiY2FuRWRpdFRhcmdldFwiXG4gICAgICBbbG9va3VwRGVmaW5pdGlvbnNdPVwibG9va3VwRGVmaW5pdGlvbnNcIlxuICAgICAgW2RlZmF1bHRQYXJ0VHlwZUtleV09XCJkZWZhdWx0UGFydFR5cGVLZXlcIlxuICAgICAgW2ludGVybmFsRGVmYXVsdF09XCJpbnRlcm5hbERlZmF1bHRcIlxuICAgICAgW2lkXT1cImVkaXRlZFwiXG4gICAgICAoaWRDaGFuZ2UpPVwib25JZENoYW5nZSgkZXZlbnQpXCJcbiAgICAgIChlZGl0b3JDbG9zZSk9XCJjbG9zZUlkKClcIlxuICAgID48L2NhZG11cy1yZWZzLWFzc2VydGVkLWNvbXBvc2l0ZS1pZD5cbiAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuPC9mb3JtPlxuIl19
|