@myrmidon/gve-core 0.0.2 → 0.0.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/components/animation-timeline/animation-timeline.component.mjs +5 -5
- package/esm2022/lib/components/animation-timeline-set/animation-timeline-set.component.mjs +130 -0
- package/esm2022/lib/components/animation-tween/animation-tween.component.mjs +5 -5
- package/esm2022/lib/components/animation-vars/animation-vars.component.mjs +3 -3
- package/esm2022/lib/components/base-text-char/base-text-char.component.mjs +3 -3
- package/esm2022/lib/components/base-text-editor/base-text-editor.component.mjs +3 -3
- package/esm2022/lib/components/base-text-view/base-text-view.component.mjs +3 -3
- package/esm2022/lib/components/chain-operation-editor/chain-operation-editor.component.mjs +5 -5
- package/esm2022/lib/components/chain-result-view/chain-result-view.component.mjs +3 -3
- package/esm2022/lib/components/feature-editor/feature-editor.component.mjs +3 -3
- package/esm2022/lib/components/feature-set-editor/feature-set-editor.component.mjs +3 -3
- package/esm2022/lib/components/feature-set-view/feature-set-view.component.mjs +3 -3
- package/esm2022/lib/components/ln-heights-editor/ln-heights-editor.component.mjs +3 -3
- package/esm2022/lib/components/operation-source-editor/operation-source-editor.component.mjs +3 -3
- package/esm2022/lib/components/simple-tree/simple-tree.component.mjs +3 -3
- package/esm2022/lib/components/snapshot-editor/snapshot-editor.component.mjs +60 -14
- package/esm2022/lib/components/steps-map/steps-map.component.mjs +3 -3
- package/esm2022/lib/services/gve-api.service.mjs +17 -4
- package/esm2022/lib/services/settings.service.mjs +3 -3
- package/fesm2022/myrmidon-gve-core.mjs +234 -67
- package/fesm2022/myrmidon-gve-core.mjs.map +1 -1
- package/lib/components/animation-timeline-set/animation-timeline-set.component.d.ts +31 -0
- package/lib/components/feature-editor/feature-editor.component.d.ts +1 -1
- package/lib/components/snapshot-editor/snapshot-editor.component.d.ts +7 -1
- package/lib/services/gve-api.service.d.ts +14 -0
- package/package.json +1 -1
|
@@ -142,10 +142,10 @@ export class AnimationTimelineComponent {
|
|
|
142
142
|
this.timelineChange.emit(this._timeline);
|
|
143
143
|
this.form.markAsPristine();
|
|
144
144
|
}
|
|
145
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
146
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.
|
|
145
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: AnimationTimelineComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
146
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: AnimationTimelineComponent, isStandalone: true, selector: "gve-animation-timeline", inputs: { timeline: "timeline", elementIds: "elementIds", tags: "tags" }, outputs: { timelineChange: "timelineChange", cancel: "cancel" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- tag (bound) -->\r\n @if (tags.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (t of tags; track t) {\r\n <mat-option [value]=\"t\">{{ t }}</mat-option>\r\n }\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.required && (tag.dirty || tag.touched)\"\r\n >tag required</mat-error\r\n >\r\n </mat-form-field>\r\n } @else {\r\n <!-- tag (free) -->\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.required && (tag.dirty || tag.touched)\"\r\n >tag required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.maxLength && (tag.dirty || tag.touched)\"\r\n >tag too long</mat-error\r\n >\r\n </mat-form-field>\r\n }\r\n\r\n <button\r\n mat-flat-button\r\n type=\"button\"\r\n color=\"primary\"\r\n class=\"mat-primary\"\r\n (click)=\"addTween()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> tween\r\n </button>\r\n </div>\r\n\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>label</th>\r\n <th>type</th>\r\n <th>selector</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (t of tweens.value; track t; let index = $index) {\r\n <tr>\r\n <td class=\"fit-width\">\r\n <!-- edit -->\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n color=\"primary\"\r\n (click)=\"editTween(index)\"\r\n matTooltip=\"Edit tween\"\r\n >\r\n <mat-icon class=\"mat-primary\">edit</mat-icon>\r\n </button>\r\n <!-- delete -->\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n color=\"warn\"\r\n (click)=\"deleteTween(index)\"\r\n matTooltip=\"Delete tween\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n <!-- up -->\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n (click)=\"moveTweenUp(index)\"\r\n matTooltip=\"Move tween up\"\r\n [disabled]=\"index === 0\"\r\n >\r\n <mat-icon>arrow_circle_up</mat-icon>\r\n </button>\r\n <!-- down -->\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n (click)=\"moveTweenDown(index)\"\r\n matTooltip=\"Move tween down\"\r\n [disabled]=\"index === tweens.value.length - 1\"\r\n >\r\n <mat-icon>arrow_circle_down</mat-icon>\r\n </button>\r\n </td>\r\n <td>\r\n {{ t.label }}\r\n </td>\r\n <td>\r\n {{ t.type }}\r\n </td>\r\n <td>\r\n {{ t.selector | flatLookup : selectors }}\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n\r\n <mat-expansion-panel [expanded]=\"editedTween\" [disabled]=\"!editedTween\">\r\n @if (editedTween) {\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>tween {{ editedTween.label }}</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n }\r\n <fieldset>\r\n <gve-animation-tween\r\n [elementIds]=\"elementIds\"\r\n [tween]=\"editedTween\"\r\n (tweenChange)=\"saveTween($event)\"\r\n (cancel)=\"closeTween()\"\r\n />\r\n </fieldset>\r\n </mat-expansion-panel>\r\n\r\n <div class=\"form-row\">\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Close timeline\"\r\n (click)=\"close()\"\r\n >\r\n <mat-icon class=\"mat-warn\">clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Save timeline\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}table{width:100%;border-collapse:collapse}th{color:#909090;font-weight:400;text-align:left;background-color:#e1e0e0}th,td{padding:4px;border-bottom:1px solid silver}tbody tr:nth-child(2n){background-color:#e8e8e8}td.fit-width{width:1px;white-space:nowrap}fieldset{border:1px solid silver;border-radius:6px;padding:8px;margin:8px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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: "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: 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: "directive", type: i4.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.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: i8.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: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: NgToolsModule }, { kind: "pipe", type: i11.FlatLookupPipe, name: "flatLookup" }, { kind: "component", type: AnimationTweenComponent, selector: "gve-animation-tween", inputs: ["tween", "elementIds"], outputs: ["tweenChange", "cancel"] }] }); }
|
|
147
147
|
}
|
|
148
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
148
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: AnimationTimelineComponent, decorators: [{
|
|
149
149
|
type: Component,
|
|
150
150
|
args: [{ selector: 'gve-animation-timeline', standalone: true, imports: [
|
|
151
151
|
CommonModule,
|
|
@@ -161,7 +161,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
|
|
|
161
161
|
MatTooltipModule,
|
|
162
162
|
NgToolsModule,
|
|
163
163
|
AnimationTweenComponent,
|
|
164
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- tag (bound) -->\r\n @if (tags.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (t of tags; track t) {\r\n <mat-option [value]=\"t\">{{ t }}</mat-option>\r\n }\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.required && (tag.dirty || tag.touched)\"\r\n >tag required</mat-error\r\n >\r\n </mat-form-field>\r\n } @else {\r\n <!-- tag (free) -->\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.required && (tag.dirty || tag.touched)\"\r\n >tag required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.maxLength && (tag.dirty || tag.touched)\"\r\n >tag too long</mat-error\r\n >\r\n </mat-form-field>\r\n }\r\n\r\n <button\r\n mat-flat-button\r\n type=\"button\"\r\n color=\"primary\"\r\n class=\"mat-primary\"\r\n (click)=\"addTween()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> tween\r\n </button>\r\n </div>\r\n\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>label</th>\r\n <th>type</th>\r\n <th>selector</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (t of tweens.value; track t; let index = $index) {\r\n <tr>\r\n <td class=\"fit-width\">\r\n <!-- edit -->\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n color=\"primary\"\r\n (click)=\"editTween(index)\"\r\n matTooltip=\"Edit tween\"\r\n >\r\n <mat-icon class=\"mat-primary\">edit</mat-icon>\r\n </button>\r\n <!-- delete -->\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n color=\"warn\"\r\n (click)=\"deleteTween(index)\"\r\n matTooltip=\"Delete tween\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n <!-- up -->\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n (click)=\"moveTweenUp(index)\"\r\n matTooltip=\"Move tween up\"\r\n [disabled]=\"index === 0\"\r\n >\r\n <mat-icon>arrow_circle_up</mat-icon>\r\n </button>\r\n <!-- down -->\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n (click)=\"moveTweenDown(index)\"\r\n matTooltip=\"Move tween down\"\r\n [disabled]=\"index === tweens.value.length - 1\"\r\n >\r\n <mat-icon>arrow_circle_down</mat-icon>\r\n </button>\r\n </td>\r\n <td>\r\n {{ t.label }}\r\n </td>\r\n <td>\r\n {{ t.type }}\r\n </td>\r\n <td>\r\n {{ t.selector | flatLookup : selectors }}\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n\r\n <mat-expansion-panel [expanded]=\"editedTween\" [disabled]=\"!editedTween\">\r\n @if (editedTween) {\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>tween {{ editedTween.label }}</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n }\r\n <fieldset>\r\n <gve-animation-tween\r\n [elementIds]=\"elementIds\"\r\n [tween]=\"editedTween\"\r\n (tweenChange)=\"saveTween($event)\"\r\n (cancel)=\"closeTween()\"\r\n />\r\n </fieldset>\r\n </mat-expansion-panel>\r\n\r\n <div class=\"form-row\">\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"
|
|
164
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- tag (bound) -->\r\n @if (tags.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (t of tags; track t) {\r\n <mat-option [value]=\"t\">{{ t }}</mat-option>\r\n }\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.required && (tag.dirty || tag.touched)\"\r\n >tag required</mat-error\r\n >\r\n </mat-form-field>\r\n } @else {\r\n <!-- tag (free) -->\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.required && (tag.dirty || tag.touched)\"\r\n >tag required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"$any(tag).errors?.maxLength && (tag.dirty || tag.touched)\"\r\n >tag too long</mat-error\r\n >\r\n </mat-form-field>\r\n }\r\n\r\n <button\r\n mat-flat-button\r\n type=\"button\"\r\n color=\"primary\"\r\n class=\"mat-primary\"\r\n (click)=\"addTween()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> tween\r\n </button>\r\n </div>\r\n\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>label</th>\r\n <th>type</th>\r\n <th>selector</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (t of tweens.value; track t; let index = $index) {\r\n <tr>\r\n <td class=\"fit-width\">\r\n <!-- edit -->\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n color=\"primary\"\r\n (click)=\"editTween(index)\"\r\n matTooltip=\"Edit tween\"\r\n >\r\n <mat-icon class=\"mat-primary\">edit</mat-icon>\r\n </button>\r\n <!-- delete -->\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n color=\"warn\"\r\n (click)=\"deleteTween(index)\"\r\n matTooltip=\"Delete tween\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n <!-- up -->\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n (click)=\"moveTweenUp(index)\"\r\n matTooltip=\"Move tween up\"\r\n [disabled]=\"index === 0\"\r\n >\r\n <mat-icon>arrow_circle_up</mat-icon>\r\n </button>\r\n <!-- down -->\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n (click)=\"moveTweenDown(index)\"\r\n matTooltip=\"Move tween down\"\r\n [disabled]=\"index === tweens.value.length - 1\"\r\n >\r\n <mat-icon>arrow_circle_down</mat-icon>\r\n </button>\r\n </td>\r\n <td>\r\n {{ t.label }}\r\n </td>\r\n <td>\r\n {{ t.type }}\r\n </td>\r\n <td>\r\n {{ t.selector | flatLookup : selectors }}\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n\r\n <mat-expansion-panel [expanded]=\"editedTween\" [disabled]=\"!editedTween\">\r\n @if (editedTween) {\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>tween {{ editedTween.label }}</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n }\r\n <fieldset>\r\n <gve-animation-tween\r\n [elementIds]=\"elementIds\"\r\n [tween]=\"editedTween\"\r\n (tweenChange)=\"saveTween($event)\"\r\n (cancel)=\"closeTween()\"\r\n />\r\n </fieldset>\r\n </mat-expansion-panel>\r\n\r\n <div class=\"form-row\">\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Close timeline\"\r\n (click)=\"close()\"\r\n >\r\n <mat-icon class=\"mat-warn\">clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Save timeline\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}table{width:100%;border-collapse:collapse}th{color:#909090;font-weight:400;text-align:left;background-color:#e1e0e0}th,td{padding:4px;border-bottom:1px solid silver}tbody tr:nth-child(2n){background-color:#e8e8e8}td.fit-width{width:1px;white-space:nowrap}fieldset{border:1px solid silver;border-radius:6px;padding:8px;margin:8px 0}\n"] }]
|
|
165
165
|
}], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { timeline: [{
|
|
166
166
|
type: Input
|
|
167
167
|
}], elementIds: [{
|
|
@@ -173,4 +173,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
|
|
|
173
173
|
}], cancel: [{
|
|
174
174
|
type: Output
|
|
175
175
|
}] } });
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLXRpbWVsaW5lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2d2ZS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hbmltYXRpb24tdGltZWxpbmUvYW5pbWF0aW9uLXRpbWVsaW5lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2d2ZS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hbmltYXRpb24tdGltZWxpbmUvYW5pbWF0aW9uLXRpbWVsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUlMLG1CQUFtQixFQUNuQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwy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LHVCQUF1Qjs7MkZBS2QsMEJBQTBCO2tCQXJCdEMsU0FBUzsrQkFDRSx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLHVCQUF1QjtxQkFDeEI7Z0ZBUVUsUUFBUTtzQkFEbEIsS0FBSztnQkFjQyxVQUFVO3NCQURoQixLQUFLO2dCQUlDLElBQUk7c0JBRFYsS0FBSztnQkFJVSxjQUFjO3NCQUQ3QixNQUFNO2dCQUlTLE1BQU07c0JBRHJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Hcm91cCxcclxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IE1hdEV4cGFuc2lvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IE5nVG9vbHNNb2R1bGUsIE5nVG9vbHNWYWxpZGF0b3JzIH0gZnJvbSAnQG15cm1pZG9uL25nLXRvb2xzJztcclxuaW1wb3J0IHtcclxuICBHdmVBbmltYXRpb25UaW1lbGluZSxcclxuICBHdmVBbmltYXRpb25Ud2VlbixcclxuICBHdmVBbmltYXRpb25Ud2VlblR5cGUsXHJcbiAgR3ZlQW5pbWF0aW9uVmFycyxcclxufSBmcm9tICdAbXlybWlkb24vZ3ZlLXNuYXBzaG90LXZpZXcnO1xyXG5pbXBvcnQgeyBBbmltYXRpb25Ud2VlbkNvbXBvbmVudCB9IGZyb20gJy4uL2FuaW1hdGlvbi10d2Vlbi9hbmltYXRpb24tdHdlZW4uY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZ3ZlLWFuaW1hdGlvbi10aW1lbGluZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXHJcbiAgICBNYXRFeHBhbnNpb25Nb2R1bGUsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICBNYXRUYWJzTW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIE5nVG9vbHNNb2R1bGUsXHJcbiAgICBBbmltYXRpb25Ud2VlbkNvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hbmltYXRpb24tdGltZWxpbmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9hbmltYXRpb24tdGltZWxpbmUuY29tcG9uZW50LmNzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbmltYXRpb25UaW1lbGluZUNvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSBfdGltZWxpbmU/OiBHdmVBbmltYXRpb25UaW1lbGluZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHRpbWVsaW5lKCk6IEd2ZUFuaW1hdGlvblRpbWVsaW5lIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl90aW1lbGluZTtcclxuICB9XHJcbiAgcHVibGljIHNldCB0aW1lbGluZSh2YWx1ZTogR3ZlQW5pbWF0aW9uVGltZWxpbmUgfCB1bmRlZmluZWQgfCBudWxsKSB7XHJcbiAgICB0aGlzLl90aW1lbGluZSA9IHZhbHVlIHx8IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudXBkYXRlRm9ybSh0aGlzLl90aW1lbGluZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgSURzIG9mIHRoZSBlbGVtZW50cyB0aGF0IGNhbiBiZSBzZWxlY3RlZCBieSB0aGUgdHdlZW4uXHJcbiAgICogVGhpcyBsaXN0IGlzIHVzZWQgdG8gYWxsb3cgdGhlIHVzZXIgdG8gc2VsZWN0IGFuIGVsZW1lbnQgZnJvbSBhIGRyb3Bkb3duLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGVsZW1lbnRJZHM/OiBzdHJpbmdbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdGFnczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IHRpbWVsaW5lQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxHdmVBbmltYXRpb25UaW1lbGluZT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgcHVibGljIHRhZzogRm9ybUNvbnRyb2w8c3RyaW5nPjtcclxuICBwdWJsaWMgdHdlZW5zOiBGb3JtQ29udHJvbDxHdmVBbmltYXRpb25Ud2VlbltdPjtcclxuICBwdWJsaWMgdmFyczogRm9ybUNvbnRyb2w8R3ZlQW5pbWF0aW9uVmFycz47XHJcbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgcHVibGljIGVkaXRlZFR3ZWVuSW5kZXggPSAtMTtcclxuICBwdWJsaWMgZWRpdGVkVHdlZW4/OiBHdmVBbmltYXRpb25Ud2VlbjtcclxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0b3JzID0ge1xyXG4gICAgMDogJ3RvJyxcclxuICAgIDE6ICdmcm9tJyxcclxuICAgIDI6ICdmcm9tVG8nLFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcikge1xyXG4gICAgdGhpcy50YWcgPSBmb3JtQnVpbGRlci5jb250cm9sKCcnLCB7XHJcbiAgICAgIG5vbk51bGxhYmxlOiB0cnVlLFxyXG4gICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKV0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMudHdlZW5zID0gZm9ybUJ1aWxkZXIuY29udHJvbChbXSwge1xyXG4gICAgICBub25OdWxsYWJsZTogdHJ1ZSxcclxuICAgICAgdmFsaWRhdG9yczogTmdUb29sc1ZhbGlkYXRvcnMuc3RyaWN0TWluTGVuZ3RoVmFsaWRhdG9yKDEpLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnZhcnMgPSBmb3JtQnVpbGRlci5jb250cm9sKHt9LCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG5cclxuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgdGFnOiB0aGlzLnRhZyxcclxuICAgICAgdHdlZW5zOiB0aGlzLnR3ZWVucyxcclxuICAgICAgdmFyczogdGhpcy52YXJzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUZvcm0odGltZWxpbmU6IEd2ZUFuaW1hdGlvblRpbWVsaW5lIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAoIXRpbWVsaW5lKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhZy5zZXRWYWx1ZSh0aW1lbGluZS50YWcpO1xyXG4gICAgdGhpcy50d2VlbnMuc2V0VmFsdWUodGltZWxpbmUudHdlZW5zKTtcclxuICAgIHRoaXMudmFycy5zZXRWYWx1ZSh0aW1lbGluZS52YXJzIHx8IHt9KTtcclxuICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZFR3ZWVuKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0ZWRUd2VlbkluZGV4ID0gLTE7XHJcbiAgICB0aGlzLmVkaXRlZFR3ZWVuID0ge1xyXG4gICAgICBsYWJlbDogJ3R3ZWVuICMnICsgKHRoaXMudHdlZW5zLnZhbHVlLmxlbmd0aCArIDEpLFxyXG4gICAgICB0eXBlOiBHdmVBbmltYXRpb25Ud2VlblR5cGUudG8sXHJcbiAgICAgIHNlbGVjdG9yOiAnJyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZWRpdFR3ZWVuKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdGVkVHdlZW5JbmRleCA9IGluZGV4O1xyXG4gICAgdGhpcy5lZGl0ZWRUd2VlbiA9IHRoaXMudHdlZW5zLnZhbHVlW2luZGV4XTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGVUd2VlbihpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnR3ZWVucy5zZXRWYWx1ZSh0aGlzLnR3ZWVucy52YWx1ZS5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KSk7XHJcbiAgICB0aGlzLnR3ZWVucy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy50d2VlbnMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlVHdlZW4oKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRlZFR3ZWVuID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5lZGl0ZWRUd2VlbkluZGV4ID0gLTE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZVR3ZWVuKHR3ZWVuOiBHdmVBbmltYXRpb25Ud2Vlbik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZWRpdGVkVHdlZW5JbmRleCA9PT0gLTEpIHtcclxuICAgICAgdGhpcy50d2VlbnMuc2V0VmFsdWUoWy4uLnRoaXMudHdlZW5zLnZhbHVlLCB0d2Vlbl0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50d2VlbnMuc2V0VmFsdWUoXHJcbiAgICAgICAgdGhpcy50d2VlbnMudmFsdWUubWFwKCh0LCBpbmRleCkgPT5cclxuICAgICAgICAgIGluZGV4ID09PSB0aGlzLmVkaXRlZFR3ZWVuSW5kZXggPyB0d2VlbiA6IHRcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnR3ZWVucy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy50d2VlbnMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5jbG9zZVR3ZWVuKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbW92ZVR3ZWVuVXAoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGluZGV4IDwgMSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB0d2VlbnMgPSBbLi4udGhpcy50d2VlbnMudmFsdWVdO1xyXG4gICAgY29uc3QgdG1wID0gdHdlZW5zW2luZGV4XTtcclxuICAgIHR3ZWVuc1tpbmRleF0gPSB0d2VlbnNbaW5kZXggLSAxXTtcclxuICAgIHR3ZWVuc1tpbmRleCAtIDFdID0gdG1wO1xyXG5cclxuICAgIHRoaXMudHdlZW5zLnNldFZhbHVlKHR3ZWVucyk7XHJcbiAgICB0aGlzLnR3ZWVucy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy50d2VlbnMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1vdmVUd2VlbkRvd24oaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGluZGV4ID49IHRoaXMudHdlZW5zLnZhbHVlLmxlbmd0aCAtIDEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdHdlZW5zID0gWy4uLnRoaXMudHdlZW5zLnZhbHVlXTtcclxuICAgIGNvbnN0IHRtcCA9IHR3ZWVuc1tpbmRleF07XHJcbiAgICB0d2VlbnNbaW5kZXhdID0gdHdlZW5zW2luZGV4ICsgMV07XHJcbiAgICB0d2VlbnNbaW5kZXggKyAxXSA9IHRtcDtcclxuXHJcbiAgICB0aGlzLnR3ZWVucy5zZXRWYWx1ZSh0d2VlbnMpO1xyXG4gICAgdGhpcy50d2VlbnMubWFya0FzRGlydHkoKTtcclxuICAgIHRoaXMudHdlZW5zLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VGltZWxpbmUoKTogR3ZlQW5pbWF0aW9uVGltZWxpbmUge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGFnOiB0aGlzLnRhZy52YWx1ZSB8fCAnJyxcclxuICAgICAgdHdlZW5zOiB0aGlzLnR3ZWVucy52YWx1ZSxcclxuICAgICAgdmFyczogT2JqZWN0LmtleXModGhpcy52YXJzLnZhbHVlKS5sZW5ndGggPyB0aGlzLnZhcnMudmFsdWUgOiB1bmRlZmluZWQsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fdGltZWxpbmUgPSB0aGlzLmdldFRpbWVsaW5lKCk7XHJcbiAgICB0aGlzLnRpbWVsaW5lQ2hhbmdlLmVtaXQodGhpcy5fdGltZWxpbmUpO1xyXG4gICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChzdWJtaXQpPVwic2F2ZSgpXCI+XHJcbiAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XHJcbiAgICA8IS0tIHRhZyAoYm91bmQpIC0tPlxyXG4gICAgQGlmICh0YWdzLmxlbmd0aCkge1xyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWxhYmVsPnRhZzwvbWF0LWxhYmVsPlxyXG4gICAgICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xdPVwidGFnXCI+XHJcbiAgICAgICAgQGZvciAodCBvZiB0YWdzOyB0cmFjayB0KSB7XHJcbiAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInRcIj57eyB0IH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgKm5nSWY9XCIkYW55KHRhZykuZXJyb3JzPy5yZXF1aXJlZCAmJiAodGFnLmRpcnR5IHx8IHRhZy50b3VjaGVkKVwiXHJcbiAgICAgICAgPnRhZyByZXF1aXJlZDwvbWF0LWVycm9yXHJcbiAgICAgID5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgIDwhLS0gdGFnIChmcmVlKSAtLT5cclxuICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1sYWJlbD50YWc8L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJ0YWdcIiAvPlxyXG4gICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgKm5nSWY9XCIkYW55KHRhZykuZXJyb3JzPy5yZXF1aXJlZCAmJiAodGFnLmRpcnR5IHx8IHRhZy50b3VjaGVkKVwiXHJcbiAgICAgICAgPnRhZyByZXF1aXJlZDwvbWF0LWVycm9yXHJcbiAgICAgID5cclxuICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICpuZ0lmPVwiJGFueSh0YWcpLmVycm9ycz8ubWF4TGVuZ3RoICYmICh0YWcuZGlydHkgfHwgdGFnLnRvdWNoZWQpXCJcclxuICAgICAgICA+dGFnIHRvbyBsb25nPC9tYXQtZXJyb3JcclxuICAgICAgPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIH1cclxuXHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIG1hdC1mbGF0LWJ1dHRvblxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgY2xhc3M9XCJtYXQtcHJpbWFyeVwiXHJcbiAgICAgIChjbGljayk9XCJhZGRUd2VlbigpXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uPmFkZF9jaXJjbGU8L21hdC1pY29uPiB0d2VlblxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDx0YWJsZT5cclxuICAgIDx0aGVhZD5cclxuICAgICAgPHRyPlxyXG4gICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgIDx0aD5sYWJlbDwvdGg+XHJcbiAgICAgICAgPHRoPnR5cGU8L3RoPlxyXG4gICAgICAgIDx0aD5zZWxlY3RvcjwvdGg+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L3RoZWFkPlxyXG4gICAgPHRib2R5PlxyXG4gICAgICBAZm9yICh0IG9mIHR3ZWVucy52YWx1ZTsgdHJhY2sgdDsgbGV0IGluZGV4ID0gJGluZGV4KSB7XHJcbiAgICAgIDx0cj5cclxuICAgICAgICA8dGQgY2xhc3M9XCJmaXQtd2lkdGhcIj5cclxuICAgICAgICAgIDwhLS0gZWRpdCAtLT5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZWRpdFR3ZWVuKGluZGV4KVwiXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJFZGl0IHR3ZWVuXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LXByaW1hcnlcIj5lZGl0PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPCEtLSBkZWxldGUgLS0+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVR3ZWVuKGluZGV4KVwiXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEZWxldGUgdHdlZW5cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtd2FyblwiPnJlbW92ZV9jaXJjbGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8IS0tIHVwIC0tPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJtb3ZlVHdlZW5VcChpbmRleClcIlxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiTW92ZSB0d2VlbiB1cFwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpbmRleCA9PT0gMFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19jaXJjbGVfdXA8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8IS0tIGRvd24gLS0+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVUd2VlbkRvd24oaW5kZXgpXCJcclxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk1vdmUgdHdlZW4gZG93blwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpbmRleCA9PT0gdHdlZW5zLnZhbHVlLmxlbmd0aCAtIDFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfY2lyY2xlX2Rvd248L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICA8dGQ+XHJcbiAgICAgICAgICB7eyB0LmxhYmVsIH19XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICA8dGQ+XHJcbiAgICAgICAgICB7eyB0LnR5cGUgfX1cclxuICAgICAgICA8L3RkPlxyXG4gICAgICAgIDx0ZD5cclxuICAgICAgICAgIHt7IHQuc2VsZWN0b3IgfCBmbGF0TG9va3VwIDogc2VsZWN0b3JzIH19XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC90cj5cclxuICAgICAgfVxyXG4gICAgPC90Ym9keT5cclxuICA8L3RhYmxlPlxyXG5cclxuICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbZXhwYW5kZWRdPVwiZWRpdGVkVHdlZW5cIiBbZGlzYWJsZWRdPVwiIWVkaXRlZFR3ZWVuXCI+XHJcbiAgICBAaWYgKGVkaXRlZFR3ZWVuKSB7XHJcbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgIDxtYXQtcGFuZWwtdGl0bGU+dHdlZW4ge3sgZWRpdGVkVHdlZW4ubGFiZWwgfX08L21hdC1wYW5lbC10aXRsZT5cclxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICB9XHJcbiAgICA8ZmllbGRzZXQ+XHJcbiAgICAgIDxndmUtYW5pbWF0aW9uLXR3ZWVuXHJcbiAgICAgICAgW2VsZW1lbnRJZHNdPVwiZWxlbWVudElkc1wiXHJcbiAgICAgICAgW3R3ZWVuXT1cImVkaXRlZFR3ZWVuXCJcclxuICAgICAgICAodHdlZW5DaGFuZ2UpPVwic2F2ZVR3ZWVuKCRldmVudClcIlxyXG4gICAgICAgIChjYW5jZWwpPVwiY2xvc2VUd2VlbigpXCJcclxuICAgICAgLz5cclxuICAgIDwvZmllbGRzZXQ+XHJcbiAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cclxuICAgIDxidXR0b25cclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGNvbG9yPVwid2FyblwiXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICBtYXRUb29sdGlwPVwiRGlzY2FyZCBjaGFuZ2VzXCJcclxuICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtd2FyblwiPmNsZWFyPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgIG1hdFRvb2x0aXA9XCJTYXZlIGNoYW5nZXNcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8IGZvcm0ucHJpc3RpbmVcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtcHJpbWFyeVwiPmNoZWNrX2NpcmNsZTwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9mb3JtPlxyXG4iXX0=
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLXRpbWVsaW5lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2d2ZS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hbmltYXRpb24tdGltZWxpbmUvYW5pbWF0aW9uLXRpbWVsaW5lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2d2ZS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hbmltYXRpb24tdGltZWxpbmUvYW5pbWF0aW9uLXRpbWVsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUlMLG1CQUFtQixFQUNuQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwy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LHVCQUF1Qjs7MkZBS2QsMEJBQTBCO2tCQXJCdEMsU0FBUzsrQkFDRSx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLHVCQUF1QjtxQkFDeEI7Z0ZBUVUsUUFBUTtzQkFEbEIsS0FBSztnQkFjQyxVQUFVO3NCQURoQixLQUFLO2dCQUlDLElBQUk7c0JBRFYsS0FBSztnQkFJVSxjQUFjO3NCQUQ3QixNQUFNO2dCQUlTLE1BQU07c0JBRHJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Hcm91cCxcclxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IE1hdEV4cGFuc2lvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IE5nVG9vbHNNb2R1bGUsIE5nVG9vbHNWYWxpZGF0b3JzIH0gZnJvbSAnQG15cm1pZG9uL25nLXRvb2xzJztcclxuaW1wb3J0IHtcclxuICBHdmVBbmltYXRpb25UaW1lbGluZSxcclxuICBHdmVBbmltYXRpb25Ud2VlbixcclxuICBHdmVBbmltYXRpb25Ud2VlblR5cGUsXHJcbiAgR3ZlQW5pbWF0aW9uVmFycyxcclxufSBmcm9tICdAbXlybWlkb24vZ3ZlLXNuYXBzaG90LXZpZXcnO1xyXG5pbXBvcnQgeyBBbmltYXRpb25Ud2VlbkNvbXBvbmVudCB9IGZyb20gJy4uL2FuaW1hdGlvbi10d2Vlbi9hbmltYXRpb24tdHdlZW4uY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZ3ZlLWFuaW1hdGlvbi10aW1lbGluZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXHJcbiAgICBNYXRFeHBhbnNpb25Nb2R1bGUsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICBNYXRUYWJzTW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIE5nVG9vbHNNb2R1bGUsXHJcbiAgICBBbmltYXRpb25Ud2VlbkNvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hbmltYXRpb24tdGltZWxpbmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9hbmltYXRpb24tdGltZWxpbmUuY29tcG9uZW50LmNzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbmltYXRpb25UaW1lbGluZUNvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSBfdGltZWxpbmU/OiBHdmVBbmltYXRpb25UaW1lbGluZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHRpbWVsaW5lKCk6IEd2ZUFuaW1hdGlvblRpbWVsaW5lIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl90aW1lbGluZTtcclxuICB9XHJcbiAgcHVibGljIHNldCB0aW1lbGluZSh2YWx1ZTogR3ZlQW5pbWF0aW9uVGltZWxpbmUgfCB1bmRlZmluZWQgfCBudWxsKSB7XHJcbiAgICB0aGlzLl90aW1lbGluZSA9IHZhbHVlIHx8IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudXBkYXRlRm9ybSh0aGlzLl90aW1lbGluZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgSURzIG9mIHRoZSBlbGVtZW50cyB0aGF0IGNhbiBiZSBzZWxlY3RlZCBieSB0aGUgdHdlZW4uXHJcbiAgICogVGhpcyBsaXN0IGlzIHVzZWQgdG8gYWxsb3cgdGhlIHVzZXIgdG8gc2VsZWN0IGFuIGVsZW1lbnQgZnJvbSBhIGRyb3Bkb3duLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGVsZW1lbnRJZHM/OiBzdHJpbmdbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdGFnczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IHRpbWVsaW5lQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxHdmVBbmltYXRpb25UaW1lbGluZT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgcHVibGljIHRhZzogRm9ybUNvbnRyb2w8c3RyaW5nPjtcclxuICBwdWJsaWMgdHdlZW5zOiBGb3JtQ29udHJvbDxHdmVBbmltYXRpb25Ud2VlbltdPjtcclxuICBwdWJsaWMgdmFyczogRm9ybUNvbnRyb2w8R3ZlQW5pbWF0aW9uVmFycz47XHJcbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgcHVibGljIGVkaXRlZFR3ZWVuSW5kZXggPSAtMTtcclxuICBwdWJsaWMgZWRpdGVkVHdlZW4/OiBHdmVBbmltYXRpb25Ud2VlbjtcclxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0b3JzID0ge1xyXG4gICAgMDogJ3RvJyxcclxuICAgIDE6ICdmcm9tJyxcclxuICAgIDI6ICdmcm9tVG8nLFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcikge1xyXG4gICAgdGhpcy50YWcgPSBmb3JtQnVpbGRlci5jb250cm9sKCcnLCB7XHJcbiAgICAgIG5vbk51bGxhYmxlOiB0cnVlLFxyXG4gICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKV0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMudHdlZW5zID0gZm9ybUJ1aWxkZXIuY29udHJvbChbXSwge1xyXG4gICAgICBub25OdWxsYWJsZTogdHJ1ZSxcclxuICAgICAgdmFsaWRhdG9yczogTmdUb29sc1ZhbGlkYXRvcnMuc3RyaWN0TWluTGVuZ3RoVmFsaWRhdG9yKDEpLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnZhcnMgPSBmb3JtQnVpbGRlci5jb250cm9sKHt9LCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG5cclxuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgdGFnOiB0aGlzLnRhZyxcclxuICAgICAgdHdlZW5zOiB0aGlzLnR3ZWVucyxcclxuICAgICAgdmFyczogdGhpcy52YXJzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUZvcm0odGltZWxpbmU6IEd2ZUFuaW1hdGlvblRpbWVsaW5lIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAoIXRpbWVsaW5lKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhZy5zZXRWYWx1ZSh0aW1lbGluZS50YWcpO1xyXG4gICAgdGhpcy50d2VlbnMuc2V0VmFsdWUodGltZWxpbmUudHdlZW5zKTtcclxuICAgIHRoaXMudmFycy5zZXRWYWx1ZSh0aW1lbGluZS52YXJzIHx8IHt9KTtcclxuICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZFR3ZWVuKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0ZWRUd2VlbkluZGV4ID0gLTE7XHJcbiAgICB0aGlzLmVkaXRlZFR3ZWVuID0ge1xyXG4gICAgICBsYWJlbDogJ3R3ZWVuICMnICsgKHRoaXMudHdlZW5zLnZhbHVlLmxlbmd0aCArIDEpLFxyXG4gICAgICB0eXBlOiBHdmVBbmltYXRpb25Ud2VlblR5cGUudG8sXHJcbiAgICAgIHNlbGVjdG9yOiAnJyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZWRpdFR3ZWVuKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdGVkVHdlZW5JbmRleCA9IGluZGV4O1xyXG4gICAgdGhpcy5lZGl0ZWRUd2VlbiA9IHRoaXMudHdlZW5zLnZhbHVlW2luZGV4XTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGVUd2VlbihpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnR3ZWVucy5zZXRWYWx1ZSh0aGlzLnR3ZWVucy52YWx1ZS5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KSk7XHJcbiAgICB0aGlzLnR3ZWVucy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy50d2VlbnMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlVHdlZW4oKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRlZFR3ZWVuID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5lZGl0ZWRUd2VlbkluZGV4ID0gLTE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZVR3ZWVuKHR3ZWVuOiBHdmVBbmltYXRpb25Ud2Vlbik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZWRpdGVkVHdlZW5JbmRleCA9PT0gLTEpIHtcclxuICAgICAgdGhpcy50d2VlbnMuc2V0VmFsdWUoWy4uLnRoaXMudHdlZW5zLnZhbHVlLCB0d2Vlbl0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50d2VlbnMuc2V0VmFsdWUoXHJcbiAgICAgICAgdGhpcy50d2VlbnMudmFsdWUubWFwKCh0LCBpbmRleCkgPT5cclxuICAgICAgICAgIGluZGV4ID09PSB0aGlzLmVkaXRlZFR3ZWVuSW5kZXggPyB0d2VlbiA6IHRcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnR3ZWVucy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy50d2VlbnMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5jbG9zZVR3ZWVuKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbW92ZVR3ZWVuVXAoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGluZGV4IDwgMSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB0d2VlbnMgPSBbLi4udGhpcy50d2VlbnMudmFsdWVdO1xyXG4gICAgY29uc3QgdG1wID0gdHdlZW5zW2luZGV4XTtcclxuICAgIHR3ZWVuc1tpbmRleF0gPSB0d2VlbnNbaW5kZXggLSAxXTtcclxuICAgIHR3ZWVuc1tpbmRleCAtIDFdID0gdG1wO1xyXG5cclxuICAgIHRoaXMudHdlZW5zLnNldFZhbHVlKHR3ZWVucyk7XHJcbiAgICB0aGlzLnR3ZWVucy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy50d2VlbnMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1vdmVUd2VlbkRvd24oaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGluZGV4ID49IHRoaXMudHdlZW5zLnZhbHVlLmxlbmd0aCAtIDEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdHdlZW5zID0gWy4uLnRoaXMudHdlZW5zLnZhbHVlXTtcclxuICAgIGNvbnN0IHRtcCA9IHR3ZWVuc1tpbmRleF07XHJcbiAgICB0d2VlbnNbaW5kZXhdID0gdHdlZW5zW2luZGV4ICsgMV07XHJcbiAgICB0d2VlbnNbaW5kZXggKyAxXSA9IHRtcDtcclxuXHJcbiAgICB0aGlzLnR3ZWVucy5zZXRWYWx1ZSh0d2VlbnMpO1xyXG4gICAgdGhpcy50d2VlbnMubWFya0FzRGlydHkoKTtcclxuICAgIHRoaXMudHdlZW5zLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VGltZWxpbmUoKTogR3ZlQW5pbWF0aW9uVGltZWxpbmUge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGFnOiB0aGlzLnRhZy52YWx1ZSB8fCAnJyxcclxuICAgICAgdHdlZW5zOiB0aGlzLnR3ZWVucy52YWx1ZSxcclxuICAgICAgdmFyczogT2JqZWN0LmtleXModGhpcy52YXJzLnZhbHVlKS5sZW5ndGggPyB0aGlzLnZhcnMudmFsdWUgOiB1bmRlZmluZWQsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fdGltZWxpbmUgPSB0aGlzLmdldFRpbWVsaW5lKCk7XHJcbiAgICB0aGlzLnRpbWVsaW5lQ2hhbmdlLmVtaXQodGhpcy5fdGltZWxpbmUpO1xyXG4gICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChzdWJtaXQpPVwic2F2ZSgpXCI+XHJcbiAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XHJcbiAgICA8IS0tIHRhZyAoYm91bmQpIC0tPlxyXG4gICAgQGlmICh0YWdzLmxlbmd0aCkge1xyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWxhYmVsPnRhZzwvbWF0LWxhYmVsPlxyXG4gICAgICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xdPVwidGFnXCI+XHJcbiAgICAgICAgQGZvciAodCBvZiB0YWdzOyB0cmFjayB0KSB7XHJcbiAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInRcIj57eyB0IH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgKm5nSWY9XCIkYW55KHRhZykuZXJyb3JzPy5yZXF1aXJlZCAmJiAodGFnLmRpcnR5IHx8IHRhZy50b3VjaGVkKVwiXHJcbiAgICAgICAgPnRhZyByZXF1aXJlZDwvbWF0LWVycm9yXHJcbiAgICAgID5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgIDwhLS0gdGFnIChmcmVlKSAtLT5cclxuICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1sYWJlbD50YWc8L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJ0YWdcIiAvPlxyXG4gICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgKm5nSWY9XCIkYW55KHRhZykuZXJyb3JzPy5yZXF1aXJlZCAmJiAodGFnLmRpcnR5IHx8IHRhZy50b3VjaGVkKVwiXHJcbiAgICAgICAgPnRhZyByZXF1aXJlZDwvbWF0LWVycm9yXHJcbiAgICAgID5cclxuICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICpuZ0lmPVwiJGFueSh0YWcpLmVycm9ycz8ubWF4TGVuZ3RoICYmICh0YWcuZGlydHkgfHwgdGFnLnRvdWNoZWQpXCJcclxuICAgICAgICA+dGFnIHRvbyBsb25nPC9tYXQtZXJyb3JcclxuICAgICAgPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIH1cclxuXHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIG1hdC1mbGF0LWJ1dHRvblxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgY2xhc3M9XCJtYXQtcHJpbWFyeVwiXHJcbiAgICAgIChjbGljayk9XCJhZGRUd2VlbigpXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uPmFkZF9jaXJjbGU8L21hdC1pY29uPiB0d2VlblxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDx0YWJsZT5cclxuICAgIDx0aGVhZD5cclxuICAgICAgPHRyPlxyXG4gICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgIDx0aD5sYWJlbDwvdGg+XHJcbiAgICAgICAgPHRoPnR5cGU8L3RoPlxyXG4gICAgICAgIDx0aD5zZWxlY3RvcjwvdGg+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L3RoZWFkPlxyXG4gICAgPHRib2R5PlxyXG4gICAgICBAZm9yICh0IG9mIHR3ZWVucy52YWx1ZTsgdHJhY2sgdDsgbGV0IGluZGV4ID0gJGluZGV4KSB7XHJcbiAgICAgIDx0cj5cclxuICAgICAgICA8dGQgY2xhc3M9XCJmaXQtd2lkdGhcIj5cclxuICAgICAgICAgIDwhLS0gZWRpdCAtLT5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZWRpdFR3ZWVuKGluZGV4KVwiXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJFZGl0IHR3ZWVuXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LXByaW1hcnlcIj5lZGl0PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPCEtLSBkZWxldGUgLS0+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVR3ZWVuKGluZGV4KVwiXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEZWxldGUgdHdlZW5cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtd2FyblwiPnJlbW92ZV9jaXJjbGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8IS0tIHVwIC0tPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJtb3ZlVHdlZW5VcChpbmRleClcIlxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiTW92ZSB0d2VlbiB1cFwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpbmRleCA9PT0gMFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19jaXJjbGVfdXA8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8IS0tIGRvd24gLS0+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVUd2VlbkRvd24oaW5kZXgpXCJcclxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk1vdmUgdHdlZW4gZG93blwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpbmRleCA9PT0gdHdlZW5zLnZhbHVlLmxlbmd0aCAtIDFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfY2lyY2xlX2Rvd248L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICA8dGQ+XHJcbiAgICAgICAgICB7eyB0LmxhYmVsIH19XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICA8dGQ+XHJcbiAgICAgICAgICB7eyB0LnR5cGUgfX1cclxuICAgICAgICA8L3RkPlxyXG4gICAgICAgIDx0ZD5cclxuICAgICAgICAgIHt7IHQuc2VsZWN0b3IgfCBmbGF0TG9va3VwIDogc2VsZWN0b3JzIH19XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC90cj5cclxuICAgICAgfVxyXG4gICAgPC90Ym9keT5cclxuICA8L3RhYmxlPlxyXG5cclxuICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbZXhwYW5kZWRdPVwiZWRpdGVkVHdlZW5cIiBbZGlzYWJsZWRdPVwiIWVkaXRlZFR3ZWVuXCI+XHJcbiAgICBAaWYgKGVkaXRlZFR3ZWVuKSB7XHJcbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgIDxtYXQtcGFuZWwtdGl0bGU+dHdlZW4ge3sgZWRpdGVkVHdlZW4ubGFiZWwgfX08L21hdC1wYW5lbC10aXRsZT5cclxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICB9XHJcbiAgICA8ZmllbGRzZXQ+XHJcbiAgICAgIDxndmUtYW5pbWF0aW9uLXR3ZWVuXHJcbiAgICAgICAgW2VsZW1lbnRJZHNdPVwiZWxlbWVudElkc1wiXHJcbiAgICAgICAgW3R3ZWVuXT1cImVkaXRlZFR3ZWVuXCJcclxuICAgICAgICAodHdlZW5DaGFuZ2UpPVwic2F2ZVR3ZWVuKCRldmVudClcIlxyXG4gICAgICAgIChjYW5jZWwpPVwiY2xvc2VUd2VlbigpXCJcclxuICAgICAgLz5cclxuICAgIDwvZmllbGRzZXQ+XHJcbiAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cclxuICAgIDxidXR0b25cclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGNvbG9yPVwid2FyblwiXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICBtYXRUb29sdGlwPVwiQ2xvc2UgdGltZWxpbmVcIlxyXG4gICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC13YXJuXCI+Y2xlYXI8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgbWF0VG9vbHRpcD1cIlNhdmUgdGltZWxpbmVcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8IGZvcm0ucHJpc3RpbmVcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtcHJpbWFyeVwiPmNoZWNrX2NpcmNsZTwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9mb3JtPlxyXG4iXX0=
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { ReactiveFormsModule, } from '@angular/forms';
|
|
4
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
6
|
+
import { MatExpansionModule } from '@angular/material/expansion';
|
|
7
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
8
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
9
|
+
import { MatInputModule } from '@angular/material/input';
|
|
10
|
+
import { MatSelectModule } from '@angular/material/select';
|
|
11
|
+
import { MatTabsModule } from '@angular/material/tabs';
|
|
12
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
13
|
+
import { NgToolsModule } from '@myrmidon/ng-tools';
|
|
14
|
+
import { AnimationTimelineComponent } from '../animation-timeline/animation-timeline.component';
|
|
15
|
+
import * as i0 from "@angular/core";
|
|
16
|
+
import * as i1 from "@angular/forms";
|
|
17
|
+
import * as i2 from "@myrmidon/ng-mat-tools";
|
|
18
|
+
import * as i3 from "@angular/material/button";
|
|
19
|
+
import * as i4 from "@angular/material/expansion";
|
|
20
|
+
import * as i5 from "@angular/material/icon";
|
|
21
|
+
export class AnimationTimelineSetComponent {
|
|
22
|
+
get timelines() {
|
|
23
|
+
return this._timelines;
|
|
24
|
+
}
|
|
25
|
+
set timelines(value) {
|
|
26
|
+
if (this._timelines === value) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this._timelines = value || [];
|
|
30
|
+
this.updateForm(this._timelines);
|
|
31
|
+
}
|
|
32
|
+
constructor(formBuilder, _dialogService) {
|
|
33
|
+
this._dialogService = _dialogService;
|
|
34
|
+
this._timelines = [];
|
|
35
|
+
this.tags = [];
|
|
36
|
+
this.timelinesChange = new EventEmitter();
|
|
37
|
+
this.cancel = new EventEmitter();
|
|
38
|
+
this.set = formBuilder.control([], {
|
|
39
|
+
nonNullable: true,
|
|
40
|
+
});
|
|
41
|
+
this.form = formBuilder.group({
|
|
42
|
+
sets: this.set,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
updateForm(animations) {
|
|
46
|
+
if (!animations.length) {
|
|
47
|
+
this.form.reset();
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
this.set.setValue(animations);
|
|
51
|
+
this.set.markAsPristine();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
closeTimeline() {
|
|
55
|
+
this.editedTimeline = undefined;
|
|
56
|
+
}
|
|
57
|
+
newTimeline() {
|
|
58
|
+
this.editedTimeline = {
|
|
59
|
+
tag: '',
|
|
60
|
+
tweens: [],
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
editTimeline(index) {
|
|
64
|
+
this.editedTimeline = this._timelines[index];
|
|
65
|
+
}
|
|
66
|
+
saveTimeline(timeline) {
|
|
67
|
+
const timelines = [...this.set.value];
|
|
68
|
+
const i = timelines.findIndex((t) => t.tag === timeline.tag);
|
|
69
|
+
if (i === -1) {
|
|
70
|
+
timelines.push(timeline);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
timelines[i] = timeline;
|
|
74
|
+
}
|
|
75
|
+
this.closeTimeline();
|
|
76
|
+
// sort timelines by tag
|
|
77
|
+
timelines.sort((a, b) => a.tag.localeCompare(b.tag));
|
|
78
|
+
this.set.setValue(timelines);
|
|
79
|
+
this.set.markAsDirty();
|
|
80
|
+
this.set.updateValueAndValidity();
|
|
81
|
+
this._timelines = this.set.value;
|
|
82
|
+
this.timelinesChange.emit(this._timelines);
|
|
83
|
+
}
|
|
84
|
+
deleteTimeline(index) {
|
|
85
|
+
this._dialogService
|
|
86
|
+
.confirm('Confirm Deletion', `Delete ${this.set.value[index].tag}?`)
|
|
87
|
+
.subscribe((yes) => {
|
|
88
|
+
if (yes) {
|
|
89
|
+
const timelines = [...this.set.value];
|
|
90
|
+
timelines.splice(index, 1);
|
|
91
|
+
this.set.setValue(timelines);
|
|
92
|
+
this.set.markAsDirty();
|
|
93
|
+
this.set.updateValueAndValidity();
|
|
94
|
+
this._timelines = this.set.value;
|
|
95
|
+
this.timelinesChange.emit(this._timelines);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: AnimationTimelineSetComponent, deps: [{ token: i1.FormBuilder }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
100
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: AnimationTimelineSetComponent, isStandalone: true, selector: "gve-animation-timeline-set", inputs: { timelines: "timelines", elementIds: "elementIds", tags: "tags" }, outputs: { timelinesChange: "timelinesChange", cancel: "cancel" }, ngImport: i0, template: "<form [formGroup]=\"form\">\r\n <!-- add -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n class=\"mat-primary\"\r\n mat-flat-button\r\n (click)=\"newTimeline()\"\r\n >\r\n <mat-icon>add_circle</mat-icon>\r\n timeline\r\n </button>\r\n </div>\r\n\r\n <!-- table -->\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>tag</th>\r\n <th>tweens</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (t of set.value; track t.tag; let index = $index) {\r\n <tr>\r\n <td class=\"fit-width\">\r\n <!-- edit -->\r\n <button type=\"button\" mat-icon-button (click)=\"editTimeline(index)\">\r\n <mat-icon class=\"mat-primary\">edit</mat-icon>\r\n </button>\r\n <!-- delete -->\r\n <button type=\"button\" mat-icon-button (click)=\"deleteTimeline(index)\">\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ t.tag }}</td>\r\n <td>{{ t.tweens.length }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n\r\n <!-- editor -->\r\n <mat-expansion-panel [disabled]=\"!editedTimeline\" [expanded]=\"editedTimeline\">\r\n <mat-expansion-panel-header>\r\n timeline {{ editedTimeline?.tag }}\r\n </mat-expansion-panel-header>\r\n <gve-animation-timeline\r\n [elementIds]=\"elementIds\"\r\n [tags]=\"tags\"\r\n [timeline]=\"editedTimeline\"\r\n (timelineChange)=\"saveTimeline($event)\"\r\n (cancel)=\"closeTimeline()\"\r\n />\r\n </mat-expansion-panel>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}table{width:100%;border-collapse:collapse;margin:8px 0}table{width:100%;border-collapse:collapse}th{color:#909090;font-weight:400;text-align:left;background-color:#e1e0e0}th,td{padding:4px;border-bottom:1px solid silver}tbody tr:nth-child(2n){background-color:#e8e8e8}td.fit-width{width:1px;white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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: "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: "ngmodule", type: MatSelectModule }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "ngmodule", type: NgToolsModule }, { kind: "component", type: AnimationTimelineComponent, selector: "gve-animation-timeline", inputs: ["timeline", "elementIds", "tags"], outputs: ["timelineChange", "cancel"] }] }); }
|
|
101
|
+
}
|
|
102
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: AnimationTimelineSetComponent, decorators: [{
|
|
103
|
+
type: Component,
|
|
104
|
+
args: [{ selector: 'gve-animation-timeline-set', standalone: true, imports: [
|
|
105
|
+
CommonModule,
|
|
106
|
+
ReactiveFormsModule,
|
|
107
|
+
MatButtonModule,
|
|
108
|
+
MatCheckboxModule,
|
|
109
|
+
MatExpansionModule,
|
|
110
|
+
MatFormFieldModule,
|
|
111
|
+
MatIconModule,
|
|
112
|
+
MatInputModule,
|
|
113
|
+
MatSelectModule,
|
|
114
|
+
MatTabsModule,
|
|
115
|
+
MatTooltipModule,
|
|
116
|
+
NgToolsModule,
|
|
117
|
+
AnimationTimelineComponent,
|
|
118
|
+
], template: "<form [formGroup]=\"form\">\r\n <!-- add -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n class=\"mat-primary\"\r\n mat-flat-button\r\n (click)=\"newTimeline()\"\r\n >\r\n <mat-icon>add_circle</mat-icon>\r\n timeline\r\n </button>\r\n </div>\r\n\r\n <!-- table -->\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>tag</th>\r\n <th>tweens</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (t of set.value; track t.tag; let index = $index) {\r\n <tr>\r\n <td class=\"fit-width\">\r\n <!-- edit -->\r\n <button type=\"button\" mat-icon-button (click)=\"editTimeline(index)\">\r\n <mat-icon class=\"mat-primary\">edit</mat-icon>\r\n </button>\r\n <!-- delete -->\r\n <button type=\"button\" mat-icon-button (click)=\"deleteTimeline(index)\">\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ t.tag }}</td>\r\n <td>{{ t.tweens.length }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n\r\n <!-- editor -->\r\n <mat-expansion-panel [disabled]=\"!editedTimeline\" [expanded]=\"editedTimeline\">\r\n <mat-expansion-panel-header>\r\n timeline {{ editedTimeline?.tag }}\r\n </mat-expansion-panel-header>\r\n <gve-animation-timeline\r\n [elementIds]=\"elementIds\"\r\n [tags]=\"tags\"\r\n [timeline]=\"editedTimeline\"\r\n (timelineChange)=\"saveTimeline($event)\"\r\n (cancel)=\"closeTimeline()\"\r\n />\r\n </mat-expansion-panel>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}table{width:100%;border-collapse:collapse;margin:8px 0}table{width:100%;border-collapse:collapse}th{color:#909090;font-weight:400;text-align:left;background-color:#e1e0e0}th,td{padding:4px;border-bottom:1px solid silver}tbody tr:nth-child(2n){background-color:#e8e8e8}td.fit-width{width:1px;white-space:nowrap}\n"] }]
|
|
119
|
+
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.DialogService }], propDecorators: { timelines: [{
|
|
120
|
+
type: Input
|
|
121
|
+
}], elementIds: [{
|
|
122
|
+
type: Input
|
|
123
|
+
}], tags: [{
|
|
124
|
+
type: Input
|
|
125
|
+
}], timelinesChange: [{
|
|
126
|
+
type: Output
|
|
127
|
+
}], cancel: [{
|
|
128
|
+
type: Output
|
|
129
|
+
}] } });
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLXRpbWVsaW5lLXNldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9ndmUtY29yZS9zcmMvbGliL2NvbXBvbmVudHMvYW5pbWF0aW9uLXRpbWVsaW5lLXNldC9hbmltYXRpb24tdGltZWxpbmUtc2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2d2ZS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hbmltYXRpb24tdGltZWxpbmUtc2V0L2FuaW1hdGlvbi10aW1lbGluZS1zZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUlMLG1CQUFtQixHQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixF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QVksOEJBQ1osbUJBQW1CLG9iQUNuQixlQUFlLHdVQUNmLGlCQUFpQiw4QkFDakIsa0JBQWtCLG9ZQUNsQixrQkFBa0IsOEJBQ2xCLGFBQWEsbUxBQ2IsY0FBYyw4QkFDZCxlQUFlLDhCQUNmLGFBQWEsOEJBQ2IsZ0JBQWdCLDhCQUNoQixhQUFhLCtCQUNiLDBCQUEwQjs7MkZBS2pCLDZCQUE2QjtrQkFyQnpDLFNBQVM7K0JBQ0UsNEJBQTRCLGNBQzFCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYiwwQkFBMEI7cUJBQzNCOzRHQVNVLFNBQVM7c0JBRG5CLEtBQUs7Z0JBaUJDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlVLGVBQWU7c0JBRDlCLE1BQU07Z0JBSVMsTUFBTTtzQkFEckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgRm9ybUJ1aWxkZXIsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgRm9ybUdyb3VwLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XHJcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5cclxuaW1wb3J0IHsgTmdUb29sc01vZHVsZSB9IGZyb20gJ0BteXJtaWRvbi9uZy10b29scyc7XHJcbmltcG9ydCB7IEd2ZUFuaW1hdGlvblRpbWVsaW5lIH0gZnJvbSAnQG15cm1pZG9uL2d2ZS1zbmFwc2hvdC12aWV3JztcclxuXHJcbmltcG9ydCB7IEFuaW1hdGlvblRpbWVsaW5lQ29tcG9uZW50IH0gZnJvbSAnLi4vYW5pbWF0aW9uLXRpbWVsaW5lL2FuaW1hdGlvbi10aW1lbGluZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQG15cm1pZG9uL25nLW1hdC10b29scyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2d2ZS1hbmltYXRpb24tdGltZWxpbmUtc2V0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcclxuICAgIE1hdEV4cGFuc2lvbk1vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIE1hdFNlbGVjdE1vZHVsZSxcclxuICAgIE1hdFRhYnNNb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTmdUb29sc01vZHVsZSxcclxuICAgIEFuaW1hdGlvblRpbWVsaW5lQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FuaW1hdGlvbi10aW1lbGluZS1zZXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9hbmltYXRpb24tdGltZWxpbmUtc2V0LmNvbXBvbmVudC5jc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5pbWF0aW9uVGltZWxpbmVTZXRDb21wb25lbnQge1xyXG4gIHByaXZhdGUgX3RpbWVsaW5lczogR3ZlQW5pbWF0aW9uVGltZWxpbmVbXSA9IFtdO1xyXG4gIHB1YmxpYyBlZGl0ZWRUaW1lbGluZT86IEd2ZUFuaW1hdGlvblRpbWVsaW5lO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgdGltZWxpbmVzKCk6IEd2ZUFuaW1hdGlvblRpbWVsaW5lW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RpbWVsaW5lcztcclxuICB9XHJcbiAgcHVibGljIHNldCB0aW1lbGluZXModmFsdWU6IEd2ZUFuaW1hdGlvblRpbWVsaW5lW10gfCB1bmRlZmluZWQgfCBudWxsKSB7XHJcbiAgICBpZiAodGhpcy5fdGltZWxpbmVzID09PSB2YWx1ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl90aW1lbGluZXMgPSB2YWx1ZSB8fCBbXTtcclxuICAgIHRoaXMudXBkYXRlRm9ybSh0aGlzLl90aW1lbGluZXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIElEcyBvZiB0aGUgZWxlbWVudHMgdGhhdCBjYW4gYmUgc2VsZWN0ZWQgYnkgdGhlIHR3ZWVuLlxyXG4gICAqIFRoaXMgbGlzdCBpcyB1c2VkIHRvIGFsbG93IHRoZSB1c2VyIHRvIHNlbGVjdCBhbiBlbGVtZW50IGZyb20gYSBkcm9wZG93bi5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBlbGVtZW50SWRzPzogc3RyaW5nW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHRhZ3M6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSB0aW1lbGluZXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEd2ZUFuaW1hdGlvblRpbWVsaW5lW10+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIHB1YmxpYyBzZXQ6IEZvcm1Db250cm9sPEd2ZUFuaW1hdGlvblRpbWVsaW5lW10+O1xyXG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSkge1xyXG4gICAgdGhpcy5zZXQgPSBmb3JtQnVpbGRlci5jb250cm9sPEd2ZUFuaW1hdGlvblRpbWVsaW5lW10+KFtdLCB7XHJcbiAgICAgIG5vbk51bGxhYmxlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmZvcm0gPSBmb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIHNldHM6IHRoaXMuc2V0LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUZvcm0oYW5pbWF0aW9uczogR3ZlQW5pbWF0aW9uVGltZWxpbmVbXSk6IHZvaWQge1xyXG4gICAgaWYgKCFhbmltYXRpb25zLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0LnNldFZhbHVlKGFuaW1hdGlvbnMpO1xyXG4gICAgICB0aGlzLnNldC5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlVGltZWxpbmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRlZFRpbWVsaW5lID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5ld1RpbWVsaW5lKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0ZWRUaW1lbGluZSA9IHtcclxuICAgICAgdGFnOiAnJyxcclxuICAgICAgdHdlZW5zOiBbXSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZWRpdFRpbWVsaW5lKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdGVkVGltZWxpbmUgPSB0aGlzLl90aW1lbGluZXNbaW5kZXhdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmVUaW1lbGluZSh0aW1lbGluZTogR3ZlQW5pbWF0aW9uVGltZWxpbmUpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRpbWVsaW5lcyA9IFsuLi50aGlzLnNldC52YWx1ZV07XHJcbiAgICBjb25zdCBpID0gdGltZWxpbmVzLmZpbmRJbmRleCgodCkgPT4gdC50YWcgPT09IHRpbWVsaW5lIS50YWcpO1xyXG4gICAgaWYgKGkgPT09IC0xKSB7XHJcbiAgICAgIHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRpbWVsaW5lc1tpXSA9IHRpbWVsaW5lO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jbG9zZVRpbWVsaW5lKCk7XHJcblxyXG4gICAgLy8gc29ydCB0aW1lbGluZXMgYnkgdGFnXHJcbiAgICB0aW1lbGluZXMuc29ydCgoYSwgYikgPT4gYS50YWcubG9jYWxlQ29tcGFyZShiLnRhZykpO1xyXG4gICAgdGhpcy5zZXQuc2V0VmFsdWUodGltZWxpbmVzKTtcclxuICAgIHRoaXMuc2V0Lm1hcmtBc0RpcnR5KCk7XHJcbiAgICB0aGlzLnNldC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblxyXG4gICAgdGhpcy5fdGltZWxpbmVzID0gdGhpcy5zZXQudmFsdWU7XHJcbiAgICB0aGlzLnRpbWVsaW5lc0NoYW5nZS5lbWl0KHRoaXMuX3RpbWVsaW5lcyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVsZXRlVGltZWxpbmUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlhbG9nU2VydmljZVxyXG4gICAgICAuY29uZmlybSgnQ29uZmlybSBEZWxldGlvbicsIGBEZWxldGUgJHt0aGlzLnNldC52YWx1ZVtpbmRleF0udGFnfT9gKVxyXG4gICAgICAuc3Vic2NyaWJlKCh5ZXMpID0+IHtcclxuICAgICAgICBpZiAoeWVzKSB7XHJcbiAgICAgICAgICBjb25zdCB0aW1lbGluZXMgPSBbLi4udGhpcy5zZXQudmFsdWVdO1xyXG4gICAgICAgICAgdGltZWxpbmVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB0aGlzLnNldC5zZXRWYWx1ZSh0aW1lbGluZXMpO1xyXG4gICAgICAgICAgdGhpcy5zZXQubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgIHRoaXMuc2V0LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgIHRoaXMuX3RpbWVsaW5lcyA9IHRoaXMuc2V0LnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy50aW1lbGluZXNDaGFuZ2UuZW1pdCh0aGlzLl90aW1lbGluZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxyXG4gIDwhLS0gYWRkIC0tPlxyXG4gIDxkaXY+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBjbGFzcz1cIm1hdC1wcmltYXJ5XCJcclxuICAgICAgbWF0LWZsYXQtYnV0dG9uXHJcbiAgICAgIChjbGljayk9XCJuZXdUaW1lbGluZSgpXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uPmFkZF9jaXJjbGU8L21hdC1pY29uPlxyXG4gICAgICB0aW1lbGluZVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gdGFibGUgLS0+XHJcbiAgPHRhYmxlPlxyXG4gICAgPHRoZWFkPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRoPjwvdGg+XHJcbiAgICAgICAgPHRoPnRhZzwvdGg+XHJcbiAgICAgICAgPHRoPnR3ZWVuczwvdGg+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L3RoZWFkPlxyXG4gICAgPHRib2R5PlxyXG4gICAgICBAZm9yICh0IG9mIHNldC52YWx1ZTsgdHJhY2sgdC50YWc7IGxldCBpbmRleCA9ICRpbmRleCkge1xyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRkIGNsYXNzPVwiZml0LXdpZHRoXCI+XHJcbiAgICAgICAgICA8IS0tIGVkaXQgLS0+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImVkaXRUaW1lbGluZShpbmRleClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LXByaW1hcnlcIj5lZGl0PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPCEtLSBkZWxldGUgLS0+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRlbGV0ZVRpbWVsaW5lKGluZGV4KVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtd2FyblwiPnJlbW92ZV9jaXJjbGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICA8dGQ+e3sgdC50YWcgfX08L3RkPlxyXG4gICAgICAgIDx0ZD57eyB0LnR3ZWVucy5sZW5ndGggfX08L3RkPlxyXG4gICAgICA8L3RyPlxyXG4gICAgICB9XHJcbiAgICA8L3Rib2R5PlxyXG4gIDwvdGFibGU+XHJcblxyXG4gIDwhLS0gZWRpdG9yIC0tPlxyXG4gIDxtYXQtZXhwYW5zaW9uLXBhbmVsIFtkaXNhYmxlZF09XCIhZWRpdGVkVGltZWxpbmVcIiBbZXhwYW5kZWRdPVwiZWRpdGVkVGltZWxpbmVcIj5cclxuICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgdGltZWxpbmUge3sgZWRpdGVkVGltZWxpbmU/LnRhZyB9fVxyXG4gICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgIDxndmUtYW5pbWF0aW9uLXRpbWVsaW5lXHJcbiAgICAgIFtlbGVtZW50SWRzXT1cImVsZW1lbnRJZHNcIlxyXG4gICAgICBbdGFnc109XCJ0YWdzXCJcclxuICAgICAgW3RpbWVsaW5lXT1cImVkaXRlZFRpbWVsaW5lXCJcclxuICAgICAgKHRpbWVsaW5lQ2hhbmdlKT1cInNhdmVUaW1lbGluZSgkZXZlbnQpXCJcclxuICAgICAgKGNhbmNlbCk9XCJjbG9zZVRpbWVsaW5lKClcIlxyXG4gICAgLz5cclxuICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbjwvZm9ybT5cclxuIl19
|
|
@@ -131,10 +131,10 @@ export class AnimationTweenComponent {
|
|
|
131
131
|
this._tween = this.getTween();
|
|
132
132
|
this.tweenChange.emit(this._tween);
|
|
133
133
|
}
|
|
134
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
135
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.
|
|
134
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: AnimationTweenComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
135
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: AnimationTweenComponent, isStandalone: true, selector: "gve-animation-tween", inputs: { tween: "tween", elementIds: "elementIds" }, outputs: { tweenChange: "tweenChange", cancel: "cancel" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-tab-group>\r\n <mat-tab label=\"general\">\r\n <div class=\"form-row\">\r\n <!-- label -->\r\n <mat-form-field>\r\n <mat-label>label</mat-label>\r\n <input matInput [formControl]=\"label\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(label).errors?.required && (label.dirty || label.touched)\r\n \"\r\n >label required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(label).errors?.maxLength && (label.dirty || label.touched)\r\n \"\r\n >label too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- type -->\r\n <mat-form-field>\r\n <mat-label>type</mat-label>\r\n <mat-select [formControl]=\"type\">\r\n <mat-option *ngFor=\"let t of types\" [value]=\"t.value\">{{\r\n t.label\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <!-- position -->\r\n <mat-form-field>\r\n <mat-label>position</mat-label>\r\n <input matInput [formControl]=\"position\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.maxLength &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- selector -->\r\n <mat-form-field>\r\n <mat-label>selector</mat-label>\r\n <input matInput [formControl]=\"selector\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(selector).errors?.required &&\r\n (selector.dirty || selector.touched)\r\n \"\r\n >selector required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(selector).errors?.maxLength &&\r\n (selector.dirty || selector.touched)\r\n \"\r\n >selector too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- element id -->\r\n @if (elementIds?.length) {\r\n <mat-form-field>\r\n <mat-label>element ID</mat-label>\r\n <mat-select [formControl]=\"elementId\">\r\n <mat-option *ngFor=\"let id of elementIds\" [value]=\"id\">{{\r\n id\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n </div>\r\n\r\n <!-- note -->\r\n <div>\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <textarea rows=\"2\" matInput [formControl]=\"note\"></textarea>\r\n <mat-error\r\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"properties\">\r\n <!-- vars -->\r\n <gve-animation-vars\r\n [vars]=\"vars.value\"\r\n (varsChange)=\"onVarsChange($event)\"\r\n />\r\n\r\n <!-- vars2 only when type is fromTo -->\r\n @if (type.value === 2) {\r\n <gve-animation-vars\r\n [vars]=\"vars2.value || {}\"\r\n (varsChange)=\"onVars2Change($event)\"\r\n />\r\n }\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <div class=\"form-row\">\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Close tween\"\r\n (click)=\"close()\"\r\n >\r\n <mat-icon class=\"mat-warn\">clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Save tween\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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: "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: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { 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: "directive", type: i6.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: i7.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: i8.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i9.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i9.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: AnimationVarsComponent, selector: "gve-animation-vars", inputs: ["vars"], outputs: ["varsChange"] }] }); }
|
|
136
136
|
}
|
|
137
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: AnimationTweenComponent, decorators: [{
|
|
138
138
|
type: Component,
|
|
139
139
|
args: [{ selector: 'gve-animation-tween', standalone: true, imports: [
|
|
140
140
|
CommonModule,
|
|
@@ -148,7 +148,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
|
|
|
148
148
|
MatTabsModule,
|
|
149
149
|
MatTooltipModule,
|
|
150
150
|
AnimationVarsComponent,
|
|
151
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-tab-group>\r\n <mat-tab label=\"general\">\r\n <div class=\"form-row\">\r\n <!-- label -->\r\n <mat-form-field>\r\n <mat-label>label</mat-label>\r\n <input matInput [formControl]=\"label\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(label).errors?.required && (label.dirty || label.touched)\r\n \"\r\n >label required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(label).errors?.maxLength && (label.dirty || label.touched)\r\n \"\r\n >label too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- type -->\r\n <mat-form-field>\r\n <mat-label>type</mat-label>\r\n <mat-select [formControl]=\"type\">\r\n <mat-option *ngFor=\"let t of types\" [value]=\"t.value\">{{\r\n t.label\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <!-- position -->\r\n <mat-form-field>\r\n <mat-label>position</mat-label>\r\n <input matInput [formControl]=\"position\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.maxLength &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- selector -->\r\n <mat-form-field>\r\n <mat-label>selector</mat-label>\r\n <input matInput [formControl]=\"selector\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(selector).errors?.required &&\r\n (selector.dirty || selector.touched)\r\n \"\r\n >selector required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(selector).errors?.maxLength &&\r\n (selector.dirty || selector.touched)\r\n \"\r\n >selector too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- element id -->\r\n @if (elementIds?.length) {\r\n <mat-form-field>\r\n <mat-label>element ID</mat-label>\r\n <mat-select [formControl]=\"elementId\">\r\n <mat-option *ngFor=\"let id of elementIds\" [value]=\"id\">{{\r\n id\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n </div>\r\n\r\n <!-- note -->\r\n <div>\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <textarea rows=\"2\" matInput [formControl]=\"note\"></textarea>\r\n <mat-error\r\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"properties\">\r\n <!-- vars -->\r\n <gve-animation-vars\r\n [vars]=\"vars.value\"\r\n (varsChange)=\"onVarsChange($event)\"\r\n />\r\n\r\n <!-- vars2 only when type is fromTo -->\r\n @if (type.value === 2) {\r\n <gve-animation-vars\r\n [vars]=\"vars2.value || {}\"\r\n (varsChange)=\"onVars2Change($event)\"\r\n />\r\n }\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <div class=\"form-row\">\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"
|
|
151
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-tab-group>\r\n <mat-tab label=\"general\">\r\n <div class=\"form-row\">\r\n <!-- label -->\r\n <mat-form-field>\r\n <mat-label>label</mat-label>\r\n <input matInput [formControl]=\"label\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(label).errors?.required && (label.dirty || label.touched)\r\n \"\r\n >label required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(label).errors?.maxLength && (label.dirty || label.touched)\r\n \"\r\n >label too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- type -->\r\n <mat-form-field>\r\n <mat-label>type</mat-label>\r\n <mat-select [formControl]=\"type\">\r\n <mat-option *ngFor=\"let t of types\" [value]=\"t.value\">{{\r\n t.label\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <!-- position -->\r\n <mat-form-field>\r\n <mat-label>position</mat-label>\r\n <input matInput [formControl]=\"position\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(position).errors?.maxLength &&\r\n (position.dirty || position.touched)\r\n \"\r\n >position too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- selector -->\r\n <mat-form-field>\r\n <mat-label>selector</mat-label>\r\n <input matInput [formControl]=\"selector\" />\r\n <mat-error\r\n *ngIf=\"\r\n $any(selector).errors?.required &&\r\n (selector.dirty || selector.touched)\r\n \"\r\n >selector required</mat-error\r\n >\r\n <mat-error\r\n *ngIf=\"\r\n $any(selector).errors?.maxLength &&\r\n (selector.dirty || selector.touched)\r\n \"\r\n >selector too long</mat-error\r\n >\r\n </mat-form-field>\r\n\r\n <!-- element id -->\r\n @if (elementIds?.length) {\r\n <mat-form-field>\r\n <mat-label>element ID</mat-label>\r\n <mat-select [formControl]=\"elementId\">\r\n <mat-option *ngFor=\"let id of elementIds\" [value]=\"id\">{{\r\n id\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n </div>\r\n\r\n <!-- note -->\r\n <div>\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <textarea rows=\"2\" matInput [formControl]=\"note\"></textarea>\r\n <mat-error\r\n *ngIf=\"$any(note).errors?.maxLength && (note.dirty || note.touched)\"\r\n >note too long</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"properties\">\r\n <!-- vars -->\r\n <gve-animation-vars\r\n [vars]=\"vars.value\"\r\n (varsChange)=\"onVarsChange($event)\"\r\n />\r\n\r\n <!-- vars2 only when type is fromTo -->\r\n @if (type.value === 2) {\r\n <gve-animation-vars\r\n [vars]=\"vars2.value || {}\"\r\n (varsChange)=\"onVars2Change($event)\"\r\n />\r\n }\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <div class=\"form-row\">\r\n <button\r\n type=\"button\"\r\n color=\"warn\"\r\n mat-icon-button\r\n matTooltip=\"Close tween\"\r\n (click)=\"close()\"\r\n >\r\n <mat-icon class=\"mat-warn\">clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n color=\"primary\"\r\n mat-icon-button\r\n matTooltip=\"Save tween\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}\n"] }]
|
|
152
152
|
}], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { tween: [{
|
|
153
153
|
type: Input
|
|
154
154
|
}], elementIds: [{
|
|
@@ -158,4 +158,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
|
|
|
158
158
|
}], cancel: [{
|
|
159
159
|
type: Output
|
|
160
160
|
}] } });
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLXR3ZWVuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2d2ZS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hbmltYXRpb24tdHdlZW4vYW5pbWF0aW9uLXR3ZWVuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2d2ZS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hbmltYXRpb24tdHdlZW4vYW5pbWF0aW9uLXR3ZWVuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUlMLG1CQUFtQixFQUNuQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQWdCLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIs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SUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTyxRQUFRO1FBQ2QsT0FBTztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUs7WUFDdkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLFNBQVM7WUFDMUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUNyQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ3BDLElBQUksRUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDekUsS0FBSyxFQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQztnQkFDNUQsQ0FBQyxDQUFDLFNBQVM7Z0JBQ1gsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLFNBQVM7WUFDbkMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLFNBQVM7U0FDbkQsQ0FBQztJQUNKLENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQzs4R0EvSVUsdUJBQXVCO2tHQUF2Qix1QkFBdUIsZ01DcERwQyxrL0hBbUlBLDRMRDlGSSxZQUFZLCtQQUNaLG1CQUFtQiwrOUJBQ25CLGVBQWUsMklBQ2YsaUJBQWlCLDhCQUNqQixrQkFBa0IsdVlBQ2xCLGFBQWEsbUxBQ2IsY0FBYywwV0FDZCxlQUFlLG1yQkFDZixhQUFhLDJtQkFDYixnQkFBZ0IsOFRBQ2hCLHNCQUFzQjs7MkZBS2IsdUJBQXVCO2tCQW5CbkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsc0JBQXNCO3FCQUN2QjtnRkFZVSxLQUFLO3NCQURmLEtBQUs7Z0JBaUJDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSVUsV0FBVztzQkFEMUIsTUFBTTtnQkFJUyxNQUFNO3NCQURyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Hcm91cCxcclxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQgeyBHdmVBbmltYXRpb25Ud2VlbiwgR3ZlQW5pbWF0aW9uVmFycyB9IGZyb20gJ0BteXJtaWRvbi9ndmUtc25hcHNob3Qtdmlldyc7XHJcbmltcG9ydCB7IEFuaW1hdGlvblZhcnNDb21wb25lbnQgfSBmcm9tICcuLi9hbmltYXRpb24tdmFycy9hbmltYXRpb24tdmFycy5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEEgY29tcG9uZW50IHRvIGVkaXQgYW4gYW5pbWF0aW9uIHR3ZWVuLlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdndmUtYW5pbWF0aW9uLXR3ZWVuJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIE1hdFNlbGVjdE1vZHVsZSxcclxuICAgIE1hdFRhYnNNb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgQW5pbWF0aW9uVmFyc0NvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hbmltYXRpb24tdHdlZW4uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9hbmltYXRpb24tdHdlZW4uY29tcG9uZW50LmNzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbmltYXRpb25Ud2VlbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIF9zdWI/OiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBfdHdlZW4/OiBHdmVBbmltYXRpb25Ud2VlbjtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHR3ZWVuIHRvIGVkaXQuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHR3ZWVuKCk6IEd2ZUFuaW1hdGlvblR3ZWVuIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl90d2VlbjtcclxuICB9XHJcbiAgcHVibGljIHNldCB0d2Vlbih2YWx1ZTogR3ZlQW5pbWF0aW9uVHdlZW4gfCB1bmRlZmluZWQgfCBudWxsKSB7XHJcbiAgICBpZiAodGhpcy5fdHdlZW4gPT09IHZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3R3ZWVuID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy51cGRhdGVGb3JtKHRoaXMuX3R3ZWVuKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBJRHMgb2YgdGhlIGVsZW1lbnRzIHRoYXQgY2FuIGJlIHNlbGVjdGVkIGJ5IHRoZSB0d2Vlbi5cclxuICAgKiBUaGlzIGxpc3QgaXMgdXNlZCB0byBhbGxvdyB0aGUgdXNlciB0byBzZWxlY3QgYW4gZWxlbWVudCBmcm9tIGEgZHJvcGRvd24uXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZWxlbWVudElkcz86IHN0cmluZ1tdO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgdHdlZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEd2ZUFuaW1hdGlvblR3ZWVuPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBwdWJsaWMgbGFiZWw6IEZvcm1Db250cm9sPHN0cmluZz47XHJcbiAgcHVibGljIG5vdGU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIHB1YmxpYyB0eXBlOiBGb3JtQ29udHJvbDxudW1iZXI+O1xyXG4gIHB1YmxpYyBzZWxlY3RvcjogRm9ybUNvbnRyb2w8c3RyaW5nPjtcclxuICBwdWJsaWMgdmFyczogRm9ybUNvbnRyb2w8R3ZlQW5pbWF0aW9uVmFycz47XHJcbiAgcHVibGljIHZhcnMyOiBGb3JtQ29udHJvbDxHdmVBbmltYXRpb25WYXJzIHwgbnVsbD47XHJcbiAgcHVibGljIHBvc2l0aW9uOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcclxuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICBwdWJsaWMgZWxlbWVudElkOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcclxuICBwdWJsaWMgdHlwZXM6IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IG51bWJlciB9W10gPSBbXHJcbiAgICB7IGxhYmVsOiAndG8nLCB2YWx1ZTogMCB9LFxyXG4gICAgeyBsYWJlbDogJ2Zyb20nLCB2YWx1ZTogMSB9LFxyXG4gICAgeyBsYWJlbDogJ2Zyb21UbycsIHZhbHVlOiAyIH0sXHJcbiAgXTtcclxuXHJcbiAgY29uc3RydWN0b3IoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICB0aGlzLmxhYmVsID0gZm9ybUJ1aWxkZXIuY29udHJvbCgnJywge1xyXG4gICAgICBub25OdWxsYWJsZTogdHJ1ZSxcclxuICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCldLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm5vdGUgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwpO1xyXG4gICAgdGhpcy50eXBlID0gZm9ybUJ1aWxkZXIuY29udHJvbCgwLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG4gICAgdGhpcy5zZWxlY3RvciA9IGZvcm1CdWlsZGVyLmNvbnRyb2woJycsIHtcclxuICAgICAgbm9uTnVsbGFibGU6IHRydWUsXHJcbiAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyMDApXSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy52YXJzID0gZm9ybUJ1aWxkZXIuY29udHJvbCh7fSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcclxuICAgIHRoaXMudmFyczIgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwpO1xyXG4gICAgdGhpcy5wb3NpdGlvbiA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKSk7XHJcbiAgICB0aGlzLmZvcm0gPSBmb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIGxhYmVsOiB0aGlzLmxhYmVsLFxyXG4gICAgICBub3RlOiB0aGlzLm5vdGUsXHJcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcclxuICAgICAgc2VsZWN0b3I6IHRoaXMuc2VsZWN0b3IsXHJcbiAgICAgIHZhcnM6IHRoaXMudmFycyxcclxuICAgICAgdmFyczI6IHRoaXMudmFyczIsXHJcbiAgICAgIHBvc2l0aW9uOiB0aGlzLnBvc2l0aW9uLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5lbGVtZW50SWQgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gc2V0IHNlbGVjdG9yIHdoZW4gZWxlbWVudElkIGNoYW5nZXNcclxuICAgIHRoaXMuX3N1YiA9IHRoaXMuZWxlbWVudElkLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcclxuICAgICAgLnN1YnNjcmliZSgoZWxlbWVudElkKSA9PiB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnRJZCkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3Rvci5zZXRWYWx1ZSgnIycgKyBlbGVtZW50SWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25WYXJzQ2hhbmdlKHZhcnM6IEd2ZUFuaW1hdGlvblZhcnMpOiB2b2lkIHtcclxuICAgIHRoaXMudmFycy5zZXRWYWx1ZSh2YXJzKTtcclxuICAgIHRoaXMudmFycy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy52YXJzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblZhcnMyQ2hhbmdlKHZhcnM6IEd2ZUFuaW1hdGlvblZhcnMpOiB2b2lkIHtcclxuICAgIHRoaXMudmFyczIuc2V0VmFsdWUodmFycyk7XHJcbiAgICB0aGlzLnZhcnMyLm1hcmtBc0RpcnR5KCk7XHJcbiAgICB0aGlzLnZhcnMyLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRm9ybSh0d2Vlbj86IEd2ZUFuaW1hdGlvblR3ZWVuKTogdm9pZCB7XHJcbiAgICBpZiAoIXR3ZWVuKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmxhYmVsLnNldFZhbHVlKHR3ZWVuLmxhYmVsKTtcclxuICAgIHRoaXMubm90ZS5zZXRWYWx1ZSh0d2Vlbi5ub3RlIHx8IG51bGwpO1xyXG4gICAgdGhpcy50eXBlLnNldFZhbHVlKHR3ZWVuLnR5cGUpO1xyXG4gICAgdGhpcy5zZWxlY3Rvci5zZXRWYWx1ZSh0d2Vlbi5zZWxlY3Rvcik7XHJcbiAgICB0aGlzLnZhcnMuc2V0VmFsdWUodHdlZW4udmFycyB8fCB7fSk7XHJcbiAgICB0aGlzLnZhcnMyLnNldFZhbHVlKHR3ZWVuLnZhcnMyIHx8IG51bGwpO1xyXG4gICAgdGhpcy5wb3NpdGlvbi5zZXRWYWx1ZSh0d2Vlbi5wb3NpdGlvbiB8fCBudWxsKTtcclxuICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUd2VlbigpOiBHdmVBbmltYXRpb25Ud2VlbiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBsYWJlbDogdGhpcy5sYWJlbC52YWx1ZSxcclxuICAgICAgbm90ZTogdGhpcy5ub3RlLnZhbHVlPy50cmltKCkgfHwgdW5kZWZpbmVkLFxyXG4gICAgICB0eXBlOiB0aGlzLnR5cGUudmFsdWUsXHJcbiAgICAgIHNlbGVjdG9yOiB0aGlzLnNlbGVjdG9yLnZhbHVlLnRyaW0oKSxcclxuICAgICAgdmFyczpcclxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnZhcnMudmFsdWUpLmxlbmd0aCA9PT0gMCA/IHVuZGVmaW5lZCA6IHRoaXMudmFycy52YWx1ZSxcclxuICAgICAgdmFyczI6XHJcbiAgICAgICAgdGhpcy52YXJzMi52YWx1ZSAmJiBPYmplY3Qua2V5cyh0aGlzLnZhcnMyLnZhbHVlKS5sZW5ndGggPT09IDBcclxuICAgICAgICAgID8gdW5kZWZpbmVkXHJcbiAgICAgICAgICA6IHRoaXMudmFyczIudmFsdWUgfHwgdW5kZWZpbmVkLFxyXG4gICAgICBwb3NpdGlvbjogdGhpcy5wb3NpdGlvbi52YWx1ZT8udHJpbSgpIHx8IHVuZGVmaW5lZCxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3R3ZWVuID0gdGhpcy5nZXRUd2VlbigpO1xyXG4gICAgdGhpcy50d2VlbkNoYW5nZS5lbWl0KHRoaXMuX3R3ZWVuKTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKHN1Ym1pdCk9XCJzYXZlKClcIj5cclxuICA8bWF0LXRhYi1ncm91cD5cclxuICAgIDxtYXQtdGFiIGxhYmVsPVwiZ2VuZXJhbFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cclxuICAgICAgICA8IS0tIGxhYmVsIC0tPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+bGFiZWw8L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwibGFiZWxcIiAvPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICRhbnkobGFiZWwpLmVycm9ycz8ucmVxdWlyZWQgJiYgKGxhYmVsLmRpcnR5IHx8IGxhYmVsLnRvdWNoZWQpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5sYWJlbCByZXF1aXJlZDwvbWF0LWVycm9yXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgJGFueShsYWJlbCkuZXJyb3JzPy5tYXhMZW5ndGggJiYgKGxhYmVsLmRpcnR5IHx8IGxhYmVsLnRvdWNoZWQpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5sYWJlbCB0b28gbG9uZzwvbWF0LWVycm9yXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPCEtLSB0eXBlIC0tPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+dHlwZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cInR5cGVcIj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHQgb2YgdHlwZXNcIiBbdmFsdWVdPVwidC52YWx1ZVwiPnt7XHJcbiAgICAgICAgICAgICAgdC5sYWJlbFxyXG4gICAgICAgICAgICB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICA8IS0tIHBvc2l0aW9uIC0tPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+cG9zaXRpb248L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwicG9zaXRpb25cIiAvPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICRhbnkocG9zaXRpb24pLmVycm9ycz8ubWF4TGVuZ3RoICYmXHJcbiAgICAgICAgICAgICAgKHBvc2l0aW9uLmRpcnR5IHx8IHBvc2l0aW9uLnRvdWNoZWQpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5wb3NpdGlvbiB0b28gbG9uZzwvbWF0LWVycm9yXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cclxuICAgICAgICA8IS0tIHNlbGVjdG9yIC0tPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+c2VsZWN0b3I8L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwic2VsZWN0b3JcIiAvPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICRhbnkoc2VsZWN0b3IpLmVycm9ycz8ucmVxdWlyZWQgJiZcclxuICAgICAgICAgICAgICAoc2VsZWN0b3IuZGlydHkgfHwgc2VsZWN0b3IudG91Y2hlZClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPnNlbGVjdG9yIHJlcXVpcmVkPC9tYXQtZXJyb3JcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAkYW55KHNlbGVjdG9yKS5lcnJvcnM/Lm1heExlbmd0aCAmJlxyXG4gICAgICAgICAgICAgIChzZWxlY3Rvci5kaXJ0eSB8fCBzZWxlY3Rvci50b3VjaGVkKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+c2VsZWN0b3IgdG9vIGxvbmc8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgIDwhLS0gZWxlbWVudCBpZCAtLT5cclxuICAgICAgICBAaWYgKGVsZW1lbnRJZHM/Lmxlbmd0aCkge1xyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+ZWxlbWVudCBJRDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cImVsZW1lbnRJZFwiPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaWQgb2YgZWxlbWVudElkc1wiIFt2YWx1ZV09XCJpZFwiPnt7XHJcbiAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBub3RlIC0tPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImxvbmctdGV4dFwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5ub3RlPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8dGV4dGFyZWEgcm93cz1cIjJcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwibm90ZVwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICpuZ0lmPVwiJGFueShub3RlKS5lcnJvcnM/Lm1heExlbmd0aCAmJiAobm90ZS5kaXJ0eSB8fCBub3RlLnRvdWNoZWQpXCJcclxuICAgICAgICAgICAgPm5vdGUgdG9vIGxvbmc8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtdGFiPlxyXG5cclxuICAgIDxtYXQtdGFiIGxhYmVsPVwicHJvcGVydGllc1wiPlxyXG4gICAgICA8IS0tIHZhcnMgLS0+XHJcbiAgICAgIDxndmUtYW5pbWF0aW9uLXZhcnNcclxuICAgICAgICBbdmFyc109XCJ2YXJzLnZhbHVlXCJcclxuICAgICAgICAodmFyc0NoYW5nZSk9XCJvblZhcnNDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8IS0tIHZhcnMyIG9ubHkgd2hlbiB0eXBlIGlzIGZyb21UbyAtLT5cclxuICAgICAgQGlmICh0eXBlLnZhbHVlID09PSAyKSB7XHJcbiAgICAgIDxndmUtYW5pbWF0aW9uLXZhcnNcclxuICAgICAgICBbdmFyc109XCJ2YXJzMi52YWx1ZSB8fCB7fVwiXHJcbiAgICAgICAgKHZhcnNDaGFuZ2UpPVwib25WYXJzMkNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgLz5cclxuICAgICAgfVxyXG4gICAgPC9tYXQtdGFiPlxyXG4gIDwvbWF0LXRhYi1ncm91cD5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBjb2xvcj1cIndhcm5cIlxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgbWF0VG9vbHRpcD1cIkRpc2NhcmQgY2hhbmdlc1wiXHJcbiAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LXdhcm5cIj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICBtYXRUb29sdGlwPVwiU2F2ZSBjaGFuZ2VzXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZCB8fCBmb3JtLnByaXN0aW5lXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LXByaW1hcnlcIj5jaGVja19jaXJjbGU8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZm9ybT5cclxuIl19
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLXR3ZWVuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2d2ZS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hbmltYXRpb24tdHdlZW4vYW5pbWF0aW9uLXR3ZWVuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2d2ZS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hbmltYXRpb24tdHdlZW4vYW5pbWF0aW9uLXR3ZWVuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUlMLG1CQUFtQixFQUNuQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQWdCLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIs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SUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTyxRQUFRO1FBQ2QsT0FBTztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUs7WUFDdkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLFNBQVM7WUFDMUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUNyQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ3BDLElBQUksRUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDekUsS0FBSyxFQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQztnQkFDNUQsQ0FBQyxDQUFDLFNBQVM7Z0JBQ1gsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLFNBQVM7WUFDbkMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLFNBQVM7U0FDbkQsQ0FBQztJQUNKLENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQzs4R0EvSVUsdUJBQXVCO2tHQUF2Qix1QkFBdUIsZ01DcERwQyw0K0hBbUlBLDRMRDlGSSxZQUFZLCtQQUNaLG1CQUFtQiwrOUJBQ25CLGVBQWUsMklBQ2YsaUJBQWlCLDhCQUNqQixrQkFBa0IsdVlBQ2xCLGFBQWEsbUxBQ2IsY0FBYywwV0FDZCxlQUFlLG1yQkFDZixhQUFhLDJtQkFDYixnQkFBZ0IsOFRBQ2hCLHNCQUFzQjs7MkZBS2IsdUJBQXVCO2tCQW5CbkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsc0JBQXNCO3FCQUN2QjtnRkFZVSxLQUFLO3NCQURmLEtBQUs7Z0JBaUJDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSVUsV0FBVztzQkFEMUIsTUFBTTtnQkFJUyxNQUFNO3NCQURyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Hcm91cCxcclxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQgeyBHdmVBbmltYXRpb25Ud2VlbiwgR3ZlQW5pbWF0aW9uVmFycyB9IGZyb20gJ0BteXJtaWRvbi9ndmUtc25hcHNob3Qtdmlldyc7XHJcbmltcG9ydCB7IEFuaW1hdGlvblZhcnNDb21wb25lbnQgfSBmcm9tICcuLi9hbmltYXRpb24tdmFycy9hbmltYXRpb24tdmFycy5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEEgY29tcG9uZW50IHRvIGVkaXQgYW4gYW5pbWF0aW9uIHR3ZWVuLlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdndmUtYW5pbWF0aW9uLXR3ZWVuJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIE1hdFNlbGVjdE1vZHVsZSxcclxuICAgIE1hdFRhYnNNb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgQW5pbWF0aW9uVmFyc0NvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hbmltYXRpb24tdHdlZW4uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9hbmltYXRpb24tdHdlZW4uY29tcG9uZW50LmNzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbmltYXRpb25Ud2VlbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIF9zdWI/OiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBfdHdlZW4/OiBHdmVBbmltYXRpb25Ud2VlbjtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHR3ZWVuIHRvIGVkaXQuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHR3ZWVuKCk6IEd2ZUFuaW1hdGlvblR3ZWVuIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl90d2VlbjtcclxuICB9XHJcbiAgcHVibGljIHNldCB0d2Vlbih2YWx1ZTogR3ZlQW5pbWF0aW9uVHdlZW4gfCB1bmRlZmluZWQgfCBudWxsKSB7XHJcbiAgICBpZiAodGhpcy5fdHdlZW4gPT09IHZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3R3ZWVuID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy51cGRhdGVGb3JtKHRoaXMuX3R3ZWVuKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBJRHMgb2YgdGhlIGVsZW1lbnRzIHRoYXQgY2FuIGJlIHNlbGVjdGVkIGJ5IHRoZSB0d2Vlbi5cclxuICAgKiBUaGlzIGxpc3QgaXMgdXNlZCB0byBhbGxvdyB0aGUgdXNlciB0byBzZWxlY3QgYW4gZWxlbWVudCBmcm9tIGEgZHJvcGRvd24uXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZWxlbWVudElkcz86IHN0cmluZ1tdO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgdHdlZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEd2ZUFuaW1hdGlvblR3ZWVuPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBwdWJsaWMgbGFiZWw6IEZvcm1Db250cm9sPHN0cmluZz47XHJcbiAgcHVibGljIG5vdGU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIHB1YmxpYyB0eXBlOiBGb3JtQ29udHJvbDxudW1iZXI+O1xyXG4gIHB1YmxpYyBzZWxlY3RvcjogRm9ybUNvbnRyb2w8c3RyaW5nPjtcclxuICBwdWJsaWMgdmFyczogRm9ybUNvbnRyb2w8R3ZlQW5pbWF0aW9uVmFycz47XHJcbiAgcHVibGljIHZhcnMyOiBGb3JtQ29udHJvbDxHdmVBbmltYXRpb25WYXJzIHwgbnVsbD47XHJcbiAgcHVibGljIHBvc2l0aW9uOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcclxuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICBwdWJsaWMgZWxlbWVudElkOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcclxuICBwdWJsaWMgdHlwZXM6IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IG51bWJlciB9W10gPSBbXHJcbiAgICB7IGxhYmVsOiAndG8nLCB2YWx1ZTogMCB9LFxyXG4gICAgeyBsYWJlbDogJ2Zyb20nLCB2YWx1ZTogMSB9LFxyXG4gICAgeyBsYWJlbDogJ2Zyb21UbycsIHZhbHVlOiAyIH0sXHJcbiAgXTtcclxuXHJcbiAgY29uc3RydWN0b3IoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICB0aGlzLmxhYmVsID0gZm9ybUJ1aWxkZXIuY29udHJvbCgnJywge1xyXG4gICAgICBub25OdWxsYWJsZTogdHJ1ZSxcclxuICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCldLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm5vdGUgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwpO1xyXG4gICAgdGhpcy50eXBlID0gZm9ybUJ1aWxkZXIuY29udHJvbCgwLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG4gICAgdGhpcy5zZWxlY3RvciA9IGZvcm1CdWlsZGVyLmNvbnRyb2woJycsIHtcclxuICAgICAgbm9uTnVsbGFibGU6IHRydWUsXHJcbiAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyMDApXSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy52YXJzID0gZm9ybUJ1aWxkZXIuY29udHJvbCh7fSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcclxuICAgIHRoaXMudmFyczIgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwpO1xyXG4gICAgdGhpcy5wb3NpdGlvbiA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKSk7XHJcbiAgICB0aGlzLmZvcm0gPSBmb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIGxhYmVsOiB0aGlzLmxhYmVsLFxyXG4gICAgICBub3RlOiB0aGlzLm5vdGUsXHJcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcclxuICAgICAgc2VsZWN0b3I6IHRoaXMuc2VsZWN0b3IsXHJcbiAgICAgIHZhcnM6IHRoaXMudmFycyxcclxuICAgICAgdmFyczI6IHRoaXMudmFyczIsXHJcbiAgICAgIHBvc2l0aW9uOiB0aGlzLnBvc2l0aW9uLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5lbGVtZW50SWQgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gc2V0IHNlbGVjdG9yIHdoZW4gZWxlbWVudElkIGNoYW5nZXNcclxuICAgIHRoaXMuX3N1YiA9IHRoaXMuZWxlbWVudElkLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcclxuICAgICAgLnN1YnNjcmliZSgoZWxlbWVudElkKSA9PiB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnRJZCkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3Rvci5zZXRWYWx1ZSgnIycgKyBlbGVtZW50SWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25WYXJzQ2hhbmdlKHZhcnM6IEd2ZUFuaW1hdGlvblZhcnMpOiB2b2lkIHtcclxuICAgIHRoaXMudmFycy5zZXRWYWx1ZSh2YXJzKTtcclxuICAgIHRoaXMudmFycy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy52YXJzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblZhcnMyQ2hhbmdlKHZhcnM6IEd2ZUFuaW1hdGlvblZhcnMpOiB2b2lkIHtcclxuICAgIHRoaXMudmFyczIuc2V0VmFsdWUodmFycyk7XHJcbiAgICB0aGlzLnZhcnMyLm1hcmtBc0RpcnR5KCk7XHJcbiAgICB0aGlzLnZhcnMyLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRm9ybSh0d2Vlbj86IEd2ZUFuaW1hdGlvblR3ZWVuKTogdm9pZCB7XHJcbiAgICBpZiAoIXR3ZWVuKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmxhYmVsLnNldFZhbHVlKHR3ZWVuLmxhYmVsKTtcclxuICAgIHRoaXMubm90ZS5zZXRWYWx1ZSh0d2Vlbi5ub3RlIHx8IG51bGwpO1xyXG4gICAgdGhpcy50eXBlLnNldFZhbHVlKHR3ZWVuLnR5cGUpO1xyXG4gICAgdGhpcy5zZWxlY3Rvci5zZXRWYWx1ZSh0d2Vlbi5zZWxlY3Rvcik7XHJcbiAgICB0aGlzLnZhcnMuc2V0VmFsdWUodHdlZW4udmFycyB8fCB7fSk7XHJcbiAgICB0aGlzLnZhcnMyLnNldFZhbHVlKHR3ZWVuLnZhcnMyIHx8IG51bGwpO1xyXG4gICAgdGhpcy5wb3NpdGlvbi5zZXRWYWx1ZSh0d2Vlbi5wb3NpdGlvbiB8fCBudWxsKTtcclxuICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUd2VlbigpOiBHdmVBbmltYXRpb25Ud2VlbiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBsYWJlbDogdGhpcy5sYWJlbC52YWx1ZSxcclxuICAgICAgbm90ZTogdGhpcy5ub3RlLnZhbHVlPy50cmltKCkgfHwgdW5kZWZpbmVkLFxyXG4gICAgICB0eXBlOiB0aGlzLnR5cGUudmFsdWUsXHJcbiAgICAgIHNlbGVjdG9yOiB0aGlzLnNlbGVjdG9yLnZhbHVlLnRyaW0oKSxcclxuICAgICAgdmFyczpcclxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnZhcnMudmFsdWUpLmxlbmd0aCA9PT0gMCA/IHVuZGVmaW5lZCA6IHRoaXMudmFycy52YWx1ZSxcclxuICAgICAgdmFyczI6XHJcbiAgICAgICAgdGhpcy52YXJzMi52YWx1ZSAmJiBPYmplY3Qua2V5cyh0aGlzLnZhcnMyLnZhbHVlKS5sZW5ndGggPT09IDBcclxuICAgICAgICAgID8gdW5kZWZpbmVkXHJcbiAgICAgICAgICA6IHRoaXMudmFyczIudmFsdWUgfHwgdW5kZWZpbmVkLFxyXG4gICAgICBwb3NpdGlvbjogdGhpcy5wb3NpdGlvbi52YWx1ZT8udHJpbSgpIHx8IHVuZGVmaW5lZCxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3R3ZWVuID0gdGhpcy5nZXRUd2VlbigpO1xyXG4gICAgdGhpcy50d2VlbkNoYW5nZS5lbWl0KHRoaXMuX3R3ZWVuKTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKHN1Ym1pdCk9XCJzYXZlKClcIj5cclxuICA8bWF0LXRhYi1ncm91cD5cclxuICAgIDxtYXQtdGFiIGxhYmVsPVwiZ2VuZXJhbFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cclxuICAgICAgICA8IS0tIGxhYmVsIC0tPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+bGFiZWw8L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwibGFiZWxcIiAvPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICRhbnkobGFiZWwpLmVycm9ycz8ucmVxdWlyZWQgJiYgKGxhYmVsLmRpcnR5IHx8IGxhYmVsLnRvdWNoZWQpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5sYWJlbCByZXF1aXJlZDwvbWF0LWVycm9yXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgJGFueShsYWJlbCkuZXJyb3JzPy5tYXhMZW5ndGggJiYgKGxhYmVsLmRpcnR5IHx8IGxhYmVsLnRvdWNoZWQpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5sYWJlbCB0b28gbG9uZzwvbWF0LWVycm9yXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPCEtLSB0eXBlIC0tPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+dHlwZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cInR5cGVcIj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHQgb2YgdHlwZXNcIiBbdmFsdWVdPVwidC52YWx1ZVwiPnt7XHJcbiAgICAgICAgICAgICAgdC5sYWJlbFxyXG4gICAgICAgICAgICB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICA8IS0tIHBvc2l0aW9uIC0tPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+cG9zaXRpb248L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwicG9zaXRpb25cIiAvPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICRhbnkocG9zaXRpb24pLmVycm9ycz8ubWF4TGVuZ3RoICYmXHJcbiAgICAgICAgICAgICAgKHBvc2l0aW9uLmRpcnR5IHx8IHBvc2l0aW9uLnRvdWNoZWQpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5wb3NpdGlvbiB0b28gbG9uZzwvbWF0LWVycm9yXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cclxuICAgICAgICA8IS0tIHNlbGVjdG9yIC0tPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+c2VsZWN0b3I8L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwic2VsZWN0b3JcIiAvPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICRhbnkoc2VsZWN0b3IpLmVycm9ycz8ucmVxdWlyZWQgJiZcclxuICAgICAgICAgICAgICAoc2VsZWN0b3IuZGlydHkgfHwgc2VsZWN0b3IudG91Y2hlZClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPnNlbGVjdG9yIHJlcXVpcmVkPC9tYXQtZXJyb3JcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAkYW55KHNlbGVjdG9yKS5lcnJvcnM/Lm1heExlbmd0aCAmJlxyXG4gICAgICAgICAgICAgIChzZWxlY3Rvci5kaXJ0eSB8fCBzZWxlY3Rvci50b3VjaGVkKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+c2VsZWN0b3IgdG9vIGxvbmc8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgIDwhLS0gZWxlbWVudCBpZCAtLT5cclxuICAgICAgICBAaWYgKGVsZW1lbnRJZHM/Lmxlbmd0aCkge1xyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+ZWxlbWVudCBJRDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cImVsZW1lbnRJZFwiPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaWQgb2YgZWxlbWVudElkc1wiIFt2YWx1ZV09XCJpZFwiPnt7XHJcbiAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBub3RlIC0tPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImxvbmctdGV4dFwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5ub3RlPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8dGV4dGFyZWEgcm93cz1cIjJcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwibm90ZVwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICpuZ0lmPVwiJGFueShub3RlKS5lcnJvcnM/Lm1heExlbmd0aCAmJiAobm90ZS5kaXJ0eSB8fCBub3RlLnRvdWNoZWQpXCJcclxuICAgICAgICAgICAgPm5vdGUgdG9vIGxvbmc8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtdGFiPlxyXG5cclxuICAgIDxtYXQtdGFiIGxhYmVsPVwicHJvcGVydGllc1wiPlxyXG4gICAgICA8IS0tIHZhcnMgLS0+XHJcbiAgICAgIDxndmUtYW5pbWF0aW9uLXZhcnNcclxuICAgICAgICBbdmFyc109XCJ2YXJzLnZhbHVlXCJcclxuICAgICAgICAodmFyc0NoYW5nZSk9XCJvblZhcnNDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8IS0tIHZhcnMyIG9ubHkgd2hlbiB0eXBlIGlzIGZyb21UbyAtLT5cclxuICAgICAgQGlmICh0eXBlLnZhbHVlID09PSAyKSB7XHJcbiAgICAgIDxndmUtYW5pbWF0aW9uLXZhcnNcclxuICAgICAgICBbdmFyc109XCJ2YXJzMi52YWx1ZSB8fCB7fVwiXHJcbiAgICAgICAgKHZhcnNDaGFuZ2UpPVwib25WYXJzMkNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgLz5cclxuICAgICAgfVxyXG4gICAgPC9tYXQtdGFiPlxyXG4gIDwvbWF0LXRhYi1ncm91cD5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBjb2xvcj1cIndhcm5cIlxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgbWF0VG9vbHRpcD1cIkNsb3NlIHR3ZWVuXCJcclxuICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtd2FyblwiPmNsZWFyPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgIG1hdFRvb2x0aXA9XCJTYXZlIHR3ZWVuXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZCB8fCBmb3JtLnByaXN0aW5lXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LXByaW1hcnlcIj5jaGVja19jaXJjbGU8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZm9ybT5cclxuIl19
|