@sitecore-jss/sitecore-jss-angular 19.0.2 → 19.0.3-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/LICENSE.txt +202 -202
  2. package/README.md +5 -5
  3. package/dist/README.md +5 -5
  4. package/dist/bundles/sitecore-jss-sitecore-jss-angular.umd.js +1363 -1363
  5. package/dist/components/date.directive.d.ts +17 -17
  6. package/dist/components/file.directive.d.ts +14 -14
  7. package/dist/components/generic-link.directive.d.ts +18 -18
  8. package/dist/components/image.directive.d.ts +32 -32
  9. package/dist/components/link.directive.d.ts +22 -22
  10. package/dist/components/missing-component.component.d.ts +4 -4
  11. package/dist/components/placeholder-loading.directive.d.ts +5 -5
  12. package/dist/components/placeholder.component.d.ts +45 -45
  13. package/dist/components/placeholder.token.d.ts +30 -30
  14. package/dist/components/raw.component.d.ts +9 -9
  15. package/dist/components/render-component.component.d.ts +31 -31
  16. package/dist/components/render-each.directive.d.ts +5 -5
  17. package/dist/components/render-empty.directive.d.ts +5 -5
  18. package/dist/components/rendering-field.d.ts +40 -40
  19. package/dist/components/rendering.d.ts +5 -5
  20. package/dist/components/rich-text.directive.d.ts +12 -12
  21. package/dist/components/router-link.directive.d.ts +16 -16
  22. package/dist/components/text.directive.d.ts +13 -13
  23. package/dist/esm2015/components/date.directive.js +52 -52
  24. package/dist/esm2015/components/file.directive.js +44 -44
  25. package/dist/esm2015/components/generic-link.directive.js +57 -57
  26. package/dist/esm2015/components/image.directive.js +122 -122
  27. package/dist/esm2015/components/link.directive.js +101 -101
  28. package/dist/esm2015/components/missing-component.component.js +12 -12
  29. package/dist/esm2015/components/placeholder-loading.directive.js +14 -14
  30. package/dist/esm2015/components/placeholder.component.js +191 -191
  31. package/dist/esm2015/components/placeholder.token.js +20 -20
  32. package/dist/esm2015/components/raw.component.js +36 -36
  33. package/dist/esm2015/components/render-component.component.js +88 -88
  34. package/dist/esm2015/components/render-each.directive.js +14 -14
  35. package/dist/esm2015/components/render-empty.directive.js +14 -14
  36. package/dist/esm2015/components/rendering-field.js +1 -1
  37. package/dist/esm2015/components/rendering.js +7 -7
  38. package/dist/esm2015/components/rich-text.directive.js +40 -40
  39. package/dist/esm2015/components/router-link.directive.js +43 -43
  40. package/dist/esm2015/components/text.directive.js +53 -53
  41. package/dist/esm2015/jss-component-factory.service.js +87 -87
  42. package/dist/esm2015/lib.module.js +110 -110
  43. package/dist/esm2015/public_api.js +13 -13
  44. package/dist/esm2015/sitecore-jss-sitecore-jss-angular.js +12 -12
  45. package/dist/fesm2015/sitecore-jss-sitecore-jss-angular.js +1027 -1027
  46. package/dist/jss-component-factory.service.d.ts +21 -21
  47. package/dist/lib.module.d.ts +24 -24
  48. package/dist/package.json +2 -2
  49. package/dist/public_api.d.ts +14 -14
  50. package/dist/sitecore-jss-sitecore-jss-angular.d.ts +12 -12
  51. package/package.json +3 -3
  52. package/typings/README.md +2 -2
@@ -1,201 +1,201 @@
1
- /* eslint-disable @angular-eslint/no-conflicting-lifecycle */
2
- import { ChangeDetectorRef, Component, ComponentFactoryResolver, ContentChild, ElementRef, EventEmitter, Inject, Input, KeyValueDiffers, Output, Renderer2, Type, ViewChild, ViewContainerRef, } from '@angular/core';
3
- import { Observable } from 'rxjs';
4
- import { takeWhile } from 'rxjs/operators';
5
- import { JssComponentFactoryService, } from '../jss-component-factory.service';
6
- import { PlaceholderLoadingDirective } from './placeholder-loading.directive';
7
- import { PLACEHOLDER_MISSING_COMPONENT_COMPONENT } from './placeholder.token';
8
- import { RenderEachDirective } from './render-each.directive';
9
- import { RenderEmptyDirective } from './render-empty.directive';
10
- import { isRawRendering } from './rendering';
11
- /**
12
- * @param {ComponentRendering} rendering
13
- * @param {string} name
14
- */
15
- function getPlaceholder(rendering, name) {
16
- if (rendering && rendering.placeholders && Object.keys(rendering.placeholders).length > 0) {
17
- return rendering.placeholders[name];
18
- }
19
- return null;
20
- }
21
- export class PlaceholderComponent {
22
- constructor(componentFactoryResolver, differs, componentFactory, changeDetectorRef, elementRef, renderer, missingComponentComponent) {
23
- this.componentFactoryResolver = componentFactoryResolver;
24
- this.differs = differs;
25
- this.componentFactory = componentFactory;
26
- this.changeDetectorRef = changeDetectorRef;
27
- this.elementRef = elementRef;
28
- this.renderer = renderer;
29
- this.missingComponentComponent = missingComponentComponent;
30
- this._componentInstances = [];
31
- this.destroyed = false;
32
- this.parentStyleAttribute = '';
33
- this.isLoading = true;
34
- this.loaded = new EventEmitter();
35
- }
36
- set inputs(value) {
37
- this._inputs = value;
38
- if (!this._differ && value) {
39
- this._differ = this.differs.find(value).create();
40
- }
41
- }
42
- ngOnInit() {
43
- // just to ensure the element exists
44
- const elem = this.elementRef.nativeElement;
45
- if (elem) {
46
- const attributes = elem.attributes;
47
- for (let i = 0; i < attributes.length; i++) {
48
- const attr = attributes.item(i);
49
- if (attr && attr.name.indexOf('_ngcontent') !== -1) {
50
- this.parentStyleAttribute = attr.name;
51
- }
52
- }
53
- }
54
- }
55
- ngOnDestroy() {
56
- this.destroyed = true;
57
- this._componentInstances = [];
58
- }
59
- ngOnChanges(changes) {
60
- if (changes.rendering || changes.renderings) {
61
- this._render();
62
- }
63
- }
64
- ngDoCheck() {
65
- if (!this._differ || !this._inputs || this._componentInstances.length === 0) {
66
- return;
67
- }
68
- const changes = this._differ.diff(this._inputs);
69
- if (!changes) {
70
- return;
71
- }
72
- const updates = {};
73
- changes.forEachRemovedItem((change) => (updates[change.key] = null));
74
- changes.forEachAddedItem((change) => (updates[change.key] = change.currentValue));
75
- changes.forEachChangedItem((change) => (updates[change.key] = change.currentValue));
76
- this._componentInstances.forEach((componentInstance) => this._setComponentInputs(componentInstance, updates));
77
- }
78
- _setComponentInputs(componentInstance, inputs) {
79
- Object.entries(inputs).forEach(([input, inputValue]) => (componentInstance[input] = inputValue));
80
- }
81
- _subscribeComponentOutputs(componentInstance, outputs) {
82
- Object.keys(outputs)
83
- .filter((output) => componentInstance[output] && componentInstance[output] instanceof Observable)
84
- .forEach((output) => componentInstance[output]
85
- .pipe(takeWhile(() => !this.destroyed))
86
- .subscribe(outputs[output]));
87
- }
88
- _render() {
89
- this._componentInstances = [];
90
- this.view.clear();
91
- if (!this.rendering && !this.renderings) {
92
- return;
93
- }
94
- if (!this.name && !this.renderings) {
95
- console.warn('Placeholder name was not specified, and explicit renderings array was not passed. Placeholder requires either name and rendering, or renderings.');
96
- this.isLoading = false;
97
- return;
98
- }
99
- const placeholder = this.renderings || getPlaceholder(this.rendering, this.name || '');
100
- if (!placeholder) {
101
- console.warn(`Placeholder '${this.name}' was not found in the current rendering data`, JSON.stringify(this.rendering, null, 2));
102
- this.isLoading = false;
103
- return;
104
- }
105
- // if the placeholder is empty (contains only raw renderings), then we may need to use the empty template if it's defined
106
- const placeholderIsEmpty = placeholder.every((rendering) => isRawRendering(rendering));
107
- if (this.renderEmptyTemplate && placeholderIsEmpty) {
108
- this.view.createEmbeddedView(this.renderEmptyTemplate.templateRef, {
109
- renderings: placeholder,
110
- });
111
- this.isLoading = false;
112
- }
113
- else {
114
- this.componentFactory
115
- .getComponents(placeholder)
116
- .then((components) => components.forEach((rendering, index) => {
117
- if (this.renderEachTemplate && !isRawRendering(rendering.componentDefinition)) {
118
- this._renderTemplatedComponent(rendering.componentDefinition, index);
119
- }
120
- else {
121
- this._renderEmbeddedComponent(rendering, index);
122
- }
123
- this.isLoading = false;
124
- }))
125
- .then(() => {
126
- this.changeDetectorRef.markForCheck();
127
- this.loaded.emit(this.name);
128
- });
129
- }
130
- }
131
- _renderTemplatedComponent(rendering, index) {
132
- // the render-each template takes care of all component mapping etc
133
- // generally using <sc-render-component> which is about like _renderEmbeddedComponent()
134
- // as a separate component
135
- this.view.createEmbeddedView(this.renderEachTemplate.templateRef, {
136
- rendering,
137
- index,
138
- });
139
- }
140
- _renderEmbeddedComponent(rendering, index) {
141
- if (!rendering.componentImplementation) {
142
- const componentName = rendering.componentDefinition.componentName;
1
+ /* eslint-disable @angular-eslint/no-conflicting-lifecycle */
2
+ import { ChangeDetectorRef, Component, ComponentFactoryResolver, ContentChild, ElementRef, EventEmitter, Inject, Input, KeyValueDiffers, Output, Renderer2, Type, ViewChild, ViewContainerRef, } from '@angular/core';
3
+ import { Observable } from 'rxjs';
4
+ import { takeWhile } from 'rxjs/operators';
5
+ import { JssComponentFactoryService, } from '../jss-component-factory.service';
6
+ import { PlaceholderLoadingDirective } from './placeholder-loading.directive';
7
+ import { PLACEHOLDER_MISSING_COMPONENT_COMPONENT } from './placeholder.token';
8
+ import { RenderEachDirective } from './render-each.directive';
9
+ import { RenderEmptyDirective } from './render-empty.directive';
10
+ import { isRawRendering } from './rendering';
11
+ /**
12
+ * @param {ComponentRendering} rendering
13
+ * @param {string} name
14
+ */
15
+ function getPlaceholder(rendering, name) {
16
+ if (rendering && rendering.placeholders && Object.keys(rendering.placeholders).length > 0) {
17
+ return rendering.placeholders[name];
18
+ }
19
+ return null;
20
+ }
21
+ export class PlaceholderComponent {
22
+ constructor(componentFactoryResolver, differs, componentFactory, changeDetectorRef, elementRef, renderer, missingComponentComponent) {
23
+ this.componentFactoryResolver = componentFactoryResolver;
24
+ this.differs = differs;
25
+ this.componentFactory = componentFactory;
26
+ this.changeDetectorRef = changeDetectorRef;
27
+ this.elementRef = elementRef;
28
+ this.renderer = renderer;
29
+ this.missingComponentComponent = missingComponentComponent;
30
+ this._componentInstances = [];
31
+ this.destroyed = false;
32
+ this.parentStyleAttribute = '';
33
+ this.isLoading = true;
34
+ this.loaded = new EventEmitter();
35
+ }
36
+ set inputs(value) {
37
+ this._inputs = value;
38
+ if (!this._differ && value) {
39
+ this._differ = this.differs.find(value).create();
40
+ }
41
+ }
42
+ ngOnInit() {
43
+ // just to ensure the element exists
44
+ const elem = this.elementRef.nativeElement;
45
+ if (elem) {
46
+ const attributes = elem.attributes;
47
+ for (let i = 0; i < attributes.length; i++) {
48
+ const attr = attributes.item(i);
49
+ if (attr && attr.name.indexOf('_ngcontent') !== -1) {
50
+ this.parentStyleAttribute = attr.name;
51
+ }
52
+ }
53
+ }
54
+ }
55
+ ngOnDestroy() {
56
+ this.destroyed = true;
57
+ this._componentInstances = [];
58
+ }
59
+ ngOnChanges(changes) {
60
+ if (changes.rendering || changes.renderings) {
61
+ this._render();
62
+ }
63
+ }
64
+ ngDoCheck() {
65
+ if (!this._differ || !this._inputs || this._componentInstances.length === 0) {
66
+ return;
67
+ }
68
+ const changes = this._differ.diff(this._inputs);
69
+ if (!changes) {
70
+ return;
71
+ }
72
+ const updates = {};
73
+ changes.forEachRemovedItem((change) => (updates[change.key] = null));
74
+ changes.forEachAddedItem((change) => (updates[change.key] = change.currentValue));
75
+ changes.forEachChangedItem((change) => (updates[change.key] = change.currentValue));
76
+ this._componentInstances.forEach((componentInstance) => this._setComponentInputs(componentInstance, updates));
77
+ }
78
+ _setComponentInputs(componentInstance, inputs) {
79
+ Object.entries(inputs).forEach(([input, inputValue]) => (componentInstance[input] = inputValue));
80
+ }
81
+ _subscribeComponentOutputs(componentInstance, outputs) {
82
+ Object.keys(outputs)
83
+ .filter((output) => componentInstance[output] && componentInstance[output] instanceof Observable)
84
+ .forEach((output) => componentInstance[output]
85
+ .pipe(takeWhile(() => !this.destroyed))
86
+ .subscribe(outputs[output]));
87
+ }
88
+ _render() {
89
+ this._componentInstances = [];
90
+ this.view.clear();
91
+ if (!this.rendering && !this.renderings) {
92
+ return;
93
+ }
94
+ if (!this.name && !this.renderings) {
95
+ console.warn('Placeholder name was not specified, and explicit renderings array was not passed. Placeholder requires either name and rendering, or renderings.');
96
+ this.isLoading = false;
97
+ return;
98
+ }
99
+ const placeholder = this.renderings || getPlaceholder(this.rendering, this.name || '');
100
+ if (!placeholder) {
101
+ console.warn(`Placeholder '${this.name}' was not found in the current rendering data`, JSON.stringify(this.rendering, null, 2));
102
+ this.isLoading = false;
103
+ return;
104
+ }
105
+ // if the placeholder is empty (contains only raw renderings), then we may need to use the empty template if it's defined
106
+ const placeholderIsEmpty = placeholder.every((rendering) => isRawRendering(rendering));
107
+ if (this.renderEmptyTemplate && placeholderIsEmpty) {
108
+ this.view.createEmbeddedView(this.renderEmptyTemplate.templateRef, {
109
+ renderings: placeholder,
110
+ });
111
+ this.isLoading = false;
112
+ }
113
+ else {
114
+ this.componentFactory
115
+ .getComponents(placeholder)
116
+ .then((components) => components.forEach((rendering, index) => {
117
+ if (this.renderEachTemplate && !isRawRendering(rendering.componentDefinition)) {
118
+ this._renderTemplatedComponent(rendering.componentDefinition, index);
119
+ }
120
+ else {
121
+ this._renderEmbeddedComponent(rendering, index);
122
+ }
123
+ this.isLoading = false;
124
+ }))
125
+ .then(() => {
126
+ this.changeDetectorRef.markForCheck();
127
+ this.loaded.emit(this.name);
128
+ });
129
+ }
130
+ }
131
+ _renderTemplatedComponent(rendering, index) {
132
+ // the render-each template takes care of all component mapping etc
133
+ // generally using <sc-render-component> which is about like _renderEmbeddedComponent()
134
+ // as a separate component
135
+ this.view.createEmbeddedView(this.renderEachTemplate.templateRef, {
136
+ rendering,
137
+ index,
138
+ });
139
+ }
140
+ _renderEmbeddedComponent(rendering, index) {
141
+ if (!rendering.componentImplementation) {
142
+ const componentName = rendering.componentDefinition.componentName;
143
143
  console.error(`Placeholder ${this.name} contains unknown component ${componentName}.`, `Ensure component is mapped, like:
144
144
  JssModule.withComponents([
145
145
  { name: '${componentName}', type: ${componentName}Component }
146
- ])`);
147
- rendering.componentImplementation = this.missingComponentComponent;
148
- }
149
- const componentFactory = rendering.componentFactory ||
150
- this.componentFactoryResolver.resolveComponentFactory(rendering.componentImplementation);
151
- // apply the parent style attribute _ngcontent
152
- // work-around for https://github.com/angular/angular/issues/12215
153
- const createdComponentRef = this.view.createComponent(componentFactory, index);
154
- if (this.parentStyleAttribute) {
155
- this.renderer.setAttribute(createdComponentRef.location.nativeElement, this.parentStyleAttribute, '');
156
- }
157
- const componentInstance = createdComponentRef.instance;
158
- componentInstance.rendering = rendering.componentDefinition;
159
- if (this._inputs) {
160
- this._setComponentInputs(componentInstance, this._inputs);
161
- }
162
- if (this.outputs) {
163
- this._subscribeComponentOutputs(componentInstance, this.outputs);
164
- }
165
- this._componentInstances.push(componentInstance);
166
- }
167
- }
168
- PlaceholderComponent.decorators = [
169
- { type: Component, args: [{
170
- selector: 'sc-placeholder,[sc-placeholder]',
146
+ ])`);
147
+ rendering.componentImplementation = this.missingComponentComponent;
148
+ }
149
+ const componentFactory = rendering.componentFactory ||
150
+ this.componentFactoryResolver.resolveComponentFactory(rendering.componentImplementation);
151
+ // apply the parent style attribute _ngcontent
152
+ // work-around for https://github.com/angular/angular/issues/12215
153
+ const createdComponentRef = this.view.createComponent(componentFactory, index);
154
+ if (this.parentStyleAttribute) {
155
+ this.renderer.setAttribute(createdComponentRef.location.nativeElement, this.parentStyleAttribute, '');
156
+ }
157
+ const componentInstance = createdComponentRef.instance;
158
+ componentInstance.rendering = rendering.componentDefinition;
159
+ if (this._inputs) {
160
+ this._setComponentInputs(componentInstance, this._inputs);
161
+ }
162
+ if (this.outputs) {
163
+ this._subscribeComponentOutputs(componentInstance, this.outputs);
164
+ }
165
+ this._componentInstances.push(componentInstance);
166
+ }
167
+ }
168
+ PlaceholderComponent.decorators = [
169
+ { type: Component, args: [{
170
+ selector: 'sc-placeholder,[sc-placeholder]',
171
171
  template: `
172
172
  <ng-template
173
173
  *ngIf="isLoading"
174
174
  [ngTemplateOutlet]="placeholderLoading?.templateRef"
175
175
  ></ng-template>
176
176
  <ng-template #view></ng-template>
177
- `
178
- },] }
179
- ];
180
- PlaceholderComponent.ctorParameters = () => [
181
- { type: ComponentFactoryResolver },
182
- { type: KeyValueDiffers },
183
- { type: JssComponentFactoryService },
184
- { type: ChangeDetectorRef },
185
- { type: ElementRef },
186
- { type: Renderer2 },
187
- { type: Type, decorators: [{ type: Inject, args: [PLACEHOLDER_MISSING_COMPONENT_COMPONENT,] }] }
188
- ];
189
- PlaceholderComponent.propDecorators = {
190
- name: [{ type: Input }],
191
- rendering: [{ type: Input }],
192
- renderings: [{ type: Input }],
193
- outputs: [{ type: Input }],
194
- loaded: [{ type: Output }],
195
- view: [{ type: ViewChild, args: ['view', { read: ViewContainerRef, static: true },] }],
196
- renderEachTemplate: [{ type: ContentChild, args: [RenderEachDirective, { static: true },] }],
197
- renderEmptyTemplate: [{ type: ContentChild, args: [RenderEmptyDirective, { static: true },] }],
198
- placeholderLoading: [{ type: ContentChild, args: [PlaceholderLoadingDirective, { static: true },] }],
199
- inputs: [{ type: Input }]
200
- };
177
+ `
178
+ },] }
179
+ ];
180
+ PlaceholderComponent.ctorParameters = () => [
181
+ { type: ComponentFactoryResolver },
182
+ { type: KeyValueDiffers },
183
+ { type: JssComponentFactoryService },
184
+ { type: ChangeDetectorRef },
185
+ { type: ElementRef },
186
+ { type: Renderer2 },
187
+ { type: Type, decorators: [{ type: Inject, args: [PLACEHOLDER_MISSING_COMPONENT_COMPONENT,] }] }
188
+ ];
189
+ PlaceholderComponent.propDecorators = {
190
+ name: [{ type: Input }],
191
+ rendering: [{ type: Input }],
192
+ renderings: [{ type: Input }],
193
+ outputs: [{ type: Input }],
194
+ loaded: [{ type: Output }],
195
+ view: [{ type: ViewChild, args: ['view', { read: ViewContainerRef, static: true },] }],
196
+ renderEachTemplate: [{ type: ContentChild, args: [RenderEachDirective, { static: true },] }],
197
+ renderEmptyTemplate: [{ type: ContentChild, args: [RenderEmptyDirective, { static: true },] }],
198
+ placeholderLoading: [{ type: ContentChild, args: [PlaceholderLoadingDirective, { static: true },] }],
199
+ inputs: [{ type: Input }]
200
+ };
201
201
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGxhY2Vob2xkZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCx3QkFBd0IsRUFDeEIsWUFBWSxFQUVaLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxlQUFlLEVBSWYsTUFBTSxFQUNOLFNBQVMsRUFFVCxJQUFJLEVBQ0osU0FBUyxFQUNULGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBRUwsMEJBQTBCLEdBQzNCLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3Qzs7O0dBR0c7QUFDSCxTQUFTLGNBQWMsQ0FBQyxTQUE2QixFQUFFLElBQVk7SUFDakUsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3pGLE9BQU8sU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNyQztJ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QUFpQixDQUFDLENBQUM7SUFDbkQsQ0FBQzs7O1lBbk9GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUNBQWlDO2dCQUMzQyxRQUFRLEVBQUU7Ozs7OztHQU1UO2FBQ0Y7OztZQXBEQyx3QkFBd0I7WUFReEIsZUFBZTtZQWdCZiwwQkFBMEI7WUExQjFCLGlCQUFpQjtZQUtqQixVQUFVO1lBVVYsU0FBUztZQUVULElBQUksdUJBMkVELE1BQU0sU0FBQyx1Q0FBdUM7OzttQkE3QmhELEtBQUs7d0JBQ0wsS0FBSzt5QkFDTCxLQUFLO3NCQUNMLEtBQUs7cUJBRUwsTUFBTTttQkFHTixTQUFTLFNBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7aUNBQzFELFlBQVksU0FBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7a0NBQ2xELFlBQVksU0FBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7aUNBQ25ELFlBQVksU0FBQywyQkFBMkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7cUJBRzFELEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvbm8tY29uZmxpY3RpbmctbGlmZWN5Y2xlICovXHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgRG9DaGVjayxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgS2V5VmFsdWVEaWZmZXIsXHJcbiAgS2V5VmFsdWVEaWZmZXJzLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBSZW5kZXJlcjIsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBUeXBlLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRSZW5kZXJpbmcsIEh0bWxFbGVtZW50UmVuZGVyaW5nIH0gZnJvbSAnQHNpdGVjb3JlLWpzcy9zaXRlY29yZS1qc3MnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VXaGlsZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnRGYWN0b3J5UmVzdWx0LFxyXG4gIEpzc0NvbXBvbmVudEZhY3RvcnlTZXJ2aWNlLFxyXG59IGZyb20gJy4uL2pzcy1jb21wb25lbnQtZmFjdG9yeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGxhY2Vob2xkZXJMb2FkaW5nRGlyZWN0aXZlIH0gZnJvbSAnLi9wbGFjZWhvbGRlci1sb2FkaW5nLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFBMQUNFSE9MREVSX01JU1NJTkdfQ09NUE9ORU5UX0NPTVBPTkVOVCB9IGZyb20gJy4vcGxhY2Vob2xkZXIudG9rZW4nO1xyXG5pbXBvcnQgeyBSZW5kZXJFYWNoRGlyZWN0aXZlIH0gZnJvbSAnLi9yZW5kZXItZWFjaC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBSZW5kZXJFbXB0eURpcmVjdGl2ZSB9IGZyb20gJy4vcmVuZGVyLWVtcHR5LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IGlzUmF3UmVuZGVyaW5nIH0gZnJvbSAnLi9yZW5kZXJpbmcnO1xyXG5cclxuLyoqXHJcbiAqIEBwYXJhbSB7Q29tcG9uZW50UmVuZGVyaW5nfSByZW5kZXJpbmdcclxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcclxuICovXHJcbmZ1bmN0aW9uIGdldFBsYWNlaG9sZGVyKHJlbmRlcmluZzogQ29tcG9uZW50UmVuZGVyaW5nLCBuYW1lOiBzdHJpbmcpIHtcclxuICBpZiAocmVuZGVyaW5nICYmIHJlbmRlcmluZy5wbGFjZWhvbGRlcnMgJiYgT2JqZWN0LmtleXMocmVuZGVyaW5nLnBsYWNlaG9sZGVycykubGVuZ3RoID4gMCkge1xyXG4gICAgcmV0dXJuIHJlbmRlcmluZy5wbGFjZWhvbGRlcnNbbmFtZV07XHJcbiAgfVxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NjLXBsYWNlaG9sZGVyLFtzYy1wbGFjZWhvbGRlcl0nLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8bmctdGVtcGxhdGVcclxuICAgICAgKm5nSWY9XCJpc0xvYWRpbmdcIlxyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwbGFjZWhvbGRlckxvYWRpbmc/LnRlbXBsYXRlUmVmXCJcclxuICAgID48L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICN2aWV3PjwvbmctdGVtcGxhdGU+XHJcbiAgYCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBsYWNlaG9sZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIERvQ2hlY2ssIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBfaW5wdXRzOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfTtcclxuICBwcml2YXRlIF9kaWZmZXI6IEtleVZhbHVlRGlmZmVyPHN0cmluZywgdW5rbm93bj47XHJcbiAgcHJpdmF0ZSBfY29tcG9uZW50SW5zdGFuY2VzOiB7IFtwcm9wOiBzdHJpbmddOiB1bmtub3duIH1bXSA9IFtdO1xyXG4gIHByaXZhdGUgZGVzdHJveWVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBwYXJlbnRTdHlsZUF0dHJpYnV0ZSA9ICcnO1xyXG4gIHB1YmxpYyBpc0xvYWRpbmcgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBuYW1lPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJlbmRlcmluZzogQ29tcG9uZW50UmVuZGVyaW5nO1xyXG4gIEBJbnB1dCgpIHJlbmRlcmluZ3M/OiBBcnJheTxDb21wb25lbnRSZW5kZXJpbmcgfCBIdG1sRWxlbWVudFJlbmRlcmluZz47XHJcbiAgQElucHV0KCkgb3V0cHV0czogeyBbazogc3RyaW5nXTogKGV2ZW50VHlwZTogdW5rbm93bikgPT4gdm9pZCB9O1xyXG5cclxuICBAT3V0cHV0KClcclxuICBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgndmlldycsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgdmlldzogVmlld0NvbnRhaW5lclJlZjtcclxuICBAQ29udGVudENoaWxkKFJlbmRlckVhY2hEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHJlbmRlckVhY2hUZW1wbGF0ZTogUmVuZGVyRWFjaERpcmVjdGl2ZTtcclxuICBAQ29udGVudENoaWxkKFJlbmRlckVtcHR5RGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSByZW5kZXJFbXB0eVRlbXBsYXRlOiBSZW5kZXJFbXB0eURpcmVjdGl2ZTtcclxuICBAQ29udGVudENoaWxkKFBsYWNlaG9sZGVyTG9hZGluZ0RpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBwbGFjZWhvbGRlckxvYWRpbmc/OiBQbGFjZWhvbGRlckxvYWRpbmdEaXJlY3RpdmU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGlucHV0cyh2YWx1ZTogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0pIHtcclxuICAgIHRoaXMuX2lucHV0cyA9IHZhbHVlO1xyXG4gICAgaWYgKCF0aGlzLl9kaWZmZXIgJiYgdmFsdWUpIHtcclxuICAgICAgdGhpcy5fZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQodmFsdWUpLmNyZWF0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgcHJpdmF0ZSBkaWZmZXJzOiBLZXlWYWx1ZURpZmZlcnMsXHJcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3Rvcnk6IEpzc0NvbXBvbmVudEZhY3RvcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBASW5qZWN0KFBMQUNFSE9MREVSX01JU1NJTkdfQ09NUE9ORU5UX0NPTVBPTkVOVClcclxuICAgIHByaXZhdGUgbWlzc2luZ0NvbXBvbmVudENvbXBvbmVudDogVHlwZTx1bmtub3duPlxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBqdXN0IHRvIGVuc3VyZSB0aGUgZWxlbWVudCBleGlzdHNcclxuICAgIGNvbnN0IGVsZW0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICBpZiAoZWxlbSkge1xyXG4gICAgICBjb25zdCBhdHRyaWJ1dGVzOiBOYW1lZE5vZGVNYXAgPSBlbGVtLmF0dHJpYnV0ZXM7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGF0dHI6IEF0dHIgfCBudWxsID0gYXR0cmlidXRlcy5pdGVtKGkpO1xyXG4gICAgICAgIGlmIChhdHRyICYmIGF0dHIubmFtZS5pbmRleE9mKCdfbmdjb250ZW50JykgIT09IC0xKSB7XHJcbiAgICAgICAgICB0aGlzLnBhcmVudFN0eWxlQXR0cmlidXRlID0gYXR0ci5uYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XHJcbiAgICB0aGlzLl9jb21wb25lbnRJbnN0YW5jZXMgPSBbXTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzLnJlbmRlcmluZyB8fCBjaGFuZ2VzLnJlbmRlcmluZ3MpIHtcclxuICAgICAgdGhpcy5fcmVuZGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0RvQ2hlY2soKSB7XHJcbiAgICBpZiAoIXRoaXMuX2RpZmZlciB8fCAhdGhpcy5faW5wdXRzIHx8IHRoaXMuX2NvbXBvbmVudEluc3RhbmNlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9pbnB1dHMpO1xyXG4gICAgaWYgKCFjaGFuZ2VzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHVwZGF0ZXM6IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9ID0ge307XHJcbiAgICBjaGFuZ2VzLmZvckVhY2hSZW1vdmVkSXRlbSgoY2hhbmdlKSA9PiAodXBkYXRlc1tjaGFuZ2Uua2V5XSA9IG51bGwpKTtcclxuICAgIGNoYW5nZXMuZm9yRWFjaEFkZGVkSXRlbSgoY2hhbmdlKSA9PiAodXBkYXRlc1tjaGFuZ2Uua2V5XSA9IGNoYW5nZS5jdXJyZW50VmFsdWUpKTtcclxuICAgIGNoYW5nZXMuZm9yRWFjaENoYW5nZWRJdGVtKChjaGFuZ2UpID0+ICh1cGRhdGVzW2NoYW5nZS5rZXldID0gY2hhbmdlLmN1cnJlbnRWYWx1ZSkpO1xyXG4gICAgdGhpcy5fY29tcG9uZW50SW5zdGFuY2VzLmZvckVhY2goKGNvbXBvbmVudEluc3RhbmNlKSA9PlxyXG4gICAgICB0aGlzLl9zZXRDb21wb25lbnRJbnB1dHMoY29tcG9uZW50SW5zdGFuY2UsIHVwZGF0ZXMpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0Q29tcG9uZW50SW5wdXRzKFxyXG4gICAgY29tcG9uZW50SW5zdGFuY2U6IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9LFxyXG4gICAgaW5wdXRzOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfVxyXG4gICkge1xyXG4gICAgT2JqZWN0LmVudHJpZXMoaW5wdXRzKS5mb3JFYWNoKFxyXG4gICAgICAoW2lucHV0LCBpbnB1dFZhbHVlXSkgPT4gKGNvbXBvbmVudEluc3RhbmNlW2lucHV0XSA9IGlucHV0VmFsdWUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3Vic2NyaWJlQ29tcG9uZW50T3V0cHV0cyhcclxuICAgIGNvbXBvbmVudEluc3RhbmNlOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSxcclxuICAgIG91dHB1dHM6IHsgW2s6IHN0cmluZ106IChldmVudFR5cGU6IHVua25vd24pID0+IHZvaWQgfVxyXG4gICkge1xyXG4gICAgT2JqZWN0LmtleXMob3V0cHV0cylcclxuICAgICAgLmZpbHRlcihcclxuICAgICAgICAob3V0cHV0KSA9PiBjb21wb25lbnRJbnN0YW5jZVtvdXRwdXRdICYmIGNvbXBvbmVudEluc3RhbmNlW291dHB1dF0gaW5zdGFuY2VvZiBPYnNlcnZhYmxlXHJcbiAgICAgIClcclxuICAgICAgLmZvckVhY2goKG91dHB1dCkgPT5cclxuICAgICAgICAoY29tcG9uZW50SW5zdGFuY2Vbb3V0cHV0XSBhcyBPYnNlcnZhYmxlPHVua25vd24+KVxyXG4gICAgICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+ICF0aGlzLmRlc3Ryb3llZCkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKG91dHB1dHNbb3V0cHV0XSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbmRlcigpIHtcclxuICAgIHRoaXMuX2NvbXBvbmVudEluc3RhbmNlcyA9IFtdO1xyXG4gICAgdGhpcy52aWV3LmNsZWFyKCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLnJlbmRlcmluZyAmJiAhdGhpcy5yZW5kZXJpbmdzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMubmFtZSAmJiAhdGhpcy5yZW5kZXJpbmdzKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAnUGxhY2Vob2xkZXIgbmFtZSB3YXMgbm90IHNwZWNpZmllZCwgYW5kIGV4cGxpY2l0IHJlbmRlcmluZ3MgYXJyYXkgd2FzIG5vdCBwYXNzZWQuIFBsYWNlaG9sZGVyIHJlcXVpcmVzIGVpdGhlciBuYW1lIGFuZCByZW5kZXJpbmcsIG9yIHJlbmRlcmluZ3MuJ1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGxhY2Vob2xkZXIgPSB0aGlzLnJlbmRlcmluZ3MgfHwgZ2V0UGxhY2Vob2xkZXIodGhpcy5yZW5kZXJpbmcsIHRoaXMubmFtZSB8fCAnJyk7XHJcblxyXG4gICAgaWYgKCFwbGFjZWhvbGRlcikge1xyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgYFBsYWNlaG9sZGVyICcke3RoaXMubmFtZX0nIHdhcyBub3QgZm91bmQgaW4gdGhlIGN1cnJlbnQgcmVuZGVyaW5nIGRhdGFgLFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMucmVuZGVyaW5nLCBudWxsLCAyKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaWYgdGhlIHBsYWNlaG9sZGVyIGlzIGVtcHR5IChjb250YWlucyBvbmx5IHJhdyByZW5kZXJpbmdzKSwgdGhlbiB3ZSBtYXkgbmVlZCB0byB1c2UgdGhlIGVtcHR5IHRlbXBsYXRlIGlmIGl0J3MgZGVmaW5lZFxyXG4gICAgY29uc3QgcGxhY2Vob2xkZXJJc0VtcHR5ID0gcGxhY2Vob2xkZXIuZXZlcnkoXHJcbiAgICAgIChyZW5kZXJpbmc6IENvbXBvbmVudFJlbmRlcmluZyB8IEh0bWxFbGVtZW50UmVuZGVyaW5nKSA9PiBpc1Jhd1JlbmRlcmluZyhyZW5kZXJpbmcpXHJcbiAgICApO1xyXG5cclxuICAgIGlmICh0aGlzLnJlbmRlckVtcHR5VGVtcGxhdGUgJiYgcGxhY2Vob2xkZXJJc0VtcHR5KSB7XHJcbiAgICAgIHRoaXMudmlldy5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5yZW5kZXJFbXB0eVRlbXBsYXRlLnRlbXBsYXRlUmVmLCB7XHJcbiAgICAgICAgcmVuZGVyaW5nczogcGxhY2Vob2xkZXIsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5XHJcbiAgICAgICAgLmdldENvbXBvbmVudHMocGxhY2Vob2xkZXIpXHJcbiAgICAgICAgLnRoZW4oKGNvbXBvbmVudHMpID0+XHJcbiAgICAgICAgICBjb21wb25lbnRzLmZvckVhY2goKHJlbmRlcmluZywgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucmVuZGVyRWFjaFRlbXBsYXRlICYmICFpc1Jhd1JlbmRlcmluZyhyZW5kZXJpbmcuY29tcG9uZW50RGVmaW5pdGlvbikpIHtcclxuICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJUZW1wbGF0ZWRDb21wb25lbnQocmVuZGVyaW5nLmNvbXBvbmVudERlZmluaXRpb24sIGluZGV4KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJFbWJlZGRlZENvbXBvbmVudChyZW5kZXJpbmcsIGluZGV4KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIHRoaXMubG9hZGVkLmVtaXQodGhpcy5uYW1lKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbmRlclRlbXBsYXRlZENvbXBvbmVudChcclxuICAgIHJlbmRlcmluZzogQ29tcG9uZW50UmVuZGVyaW5nIHwgSHRtbEVsZW1lbnRSZW5kZXJpbmcsXHJcbiAgICBpbmRleDogbnVtYmVyXHJcbiAgKSB7XHJcbiAgICAvLyB0aGUgcmVuZGVyLWVhY2ggdGVtcGxhdGUgdGFrZXMgY2FyZSBvZiBhbGwgY29tcG9uZW50IG1hcHBpbmcgZXRjXHJcbiAgICAvLyBnZW5lcmFsbHkgdXNpbmcgPHNjLXJlbmRlci1jb21wb25lbnQ+IHdoaWNoIGlzIGFib3V0IGxpa2UgX3JlbmRlckVtYmVkZGVkQ29tcG9uZW50KClcclxuICAgIC8vIGFzIGEgc2VwYXJhdGUgY29tcG9uZW50XHJcbiAgICB0aGlzLnZpZXcuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMucmVuZGVyRWFjaFRlbXBsYXRlLnRlbXBsYXRlUmVmLCB7XHJcbiAgICAgIHJlbmRlcmluZyxcclxuICAgICAgaW5kZXgsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbmRlckVtYmVkZGVkQ29tcG9uZW50KHJlbmRlcmluZzogQ29tcG9uZW50RmFjdG9yeVJlc3VsdCwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgaWYgKCFyZW5kZXJpbmcuY29tcG9uZW50SW1wbGVtZW50YXRpb24pIHtcclxuICAgICAgY29uc3QgY29tcG9uZW50TmFtZSA9IChyZW5kZXJpbmcuY29tcG9uZW50RGVmaW5pdGlvbiBhcyBDb21wb25lbnRSZW5kZXJpbmcpLmNvbXBvbmVudE5hbWU7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgYFBsYWNlaG9sZGVyICR7dGhpcy5uYW1lfSBjb250YWlucyB1bmtub3duIGNvbXBvbmVudCAke2NvbXBvbmVudE5hbWV9LmAsXHJcbiAgICAgICAgYEVuc3VyZSBjb21wb25lbnQgaXMgbWFwcGVkLCBsaWtlOlxyXG4gICAgICAgIEpzc01vZHVsZS53aXRoQ29tcG9uZW50cyhbXHJcbiAgICAgICAgICB7IG5hbWU6ICcke2NvbXBvbmVudE5hbWV9JywgdHlwZTogJHtjb21wb25lbnROYW1lfUNvbXBvbmVudCB9XHJcbiAgICAgICAgXSlgXHJcbiAgICAgICk7XHJcblxyXG4gICAgICByZW5kZXJpbmcuY29tcG9uZW50SW1wbGVtZW50YXRpb24gPSB0aGlzLm1pc3NpbmdDb21wb25lbnRDb21wb25lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9XHJcbiAgICAgIHJlbmRlcmluZy5jb21wb25lbnRGYWN0b3J5IHx8XHJcbiAgICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHJlbmRlcmluZy5jb21wb25lbnRJbXBsZW1lbnRhdGlvbik7XHJcblxyXG4gICAgLy8gYXBwbHkgdGhlIHBhcmVudCBzdHlsZSBhdHRyaWJ1dGUgX25nY29udGVudFxyXG4gICAgLy8gd29yay1hcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEyMjE1XHJcbiAgICBjb25zdCBjcmVhdGVkQ29tcG9uZW50UmVmID0gdGhpcy52aWV3LmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRGYWN0b3J5LCBpbmRleCk7XHJcbiAgICBpZiAodGhpcy5wYXJlbnRTdHlsZUF0dHJpYnV0ZSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShcclxuICAgICAgICBjcmVhdGVkQ29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgdGhpcy5wYXJlbnRTdHlsZUF0dHJpYnV0ZSxcclxuICAgICAgICAnJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbXBvbmVudEluc3RhbmNlID0gY3JlYXRlZENvbXBvbmVudFJlZi5pbnN0YW5jZTtcclxuICAgIGNvbXBvbmVudEluc3RhbmNlLnJlbmRlcmluZyA9IHJlbmRlcmluZy5jb21wb25lbnREZWZpbml0aW9uO1xyXG4gICAgaWYgKHRoaXMuX2lucHV0cykge1xyXG4gICAgICB0aGlzLl9zZXRDb21wb25lbnRJbnB1dHMoY29tcG9uZW50SW5zdGFuY2UsIHRoaXMuX2lucHV0cyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vdXRwdXRzKSB7XHJcbiAgICAgIHRoaXMuX3N1YnNjcmliZUNvbXBvbmVudE91dHB1dHMoY29tcG9uZW50SW5zdGFuY2UsIHRoaXMub3V0cHV0cyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9jb21wb25lbnRJbnN0YW5jZXMucHVzaChjb21wb25lbnRJbnN0YW5jZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,21 +1,21 @@
1
- import { InjectionToken } from '@angular/core';
2
- /** Registers a statically loaded component */
3
- export class ComponentNameAndType {
4
- }
5
- /**
6
- * @param {unknown} object
7
- */
8
- export function instanceOfComponentNameAndType(object) {
9
- return typeof object === 'object' && object !== null && 'type' in object;
10
- }
11
- /**
12
- * @param {unknown} object
13
- */
14
- export function instanceOfComponentNameAndModule(object) {
15
- return typeof object === 'object' && object !== null && 'module' in object;
16
- }
17
- export const PLACEHOLDER_COMPONENTS = new InjectionToken('Sc.placeholder.components');
18
- export const PLACEHOLDER_LAZY_COMPONENTS = new InjectionToken('Sc.placeholder.lazyComponents');
19
- export const PLACEHOLDER_MISSING_COMPONENT_COMPONENT = new InjectionToken('Sc.placeholder.missingComponentComponent');
20
- export const DYNAMIC_COMPONENT = new InjectionToken('Sc.placeholder.dynamicComponent');
1
+ import { InjectionToken } from '@angular/core';
2
+ /** Registers a statically loaded component */
3
+ export class ComponentNameAndType {
4
+ }
5
+ /**
6
+ * @param {unknown} object
7
+ */
8
+ export function instanceOfComponentNameAndType(object) {
9
+ return typeof object === 'object' && object !== null && 'type' in object;
10
+ }
11
+ /**
12
+ * @param {unknown} object
13
+ */
14
+ export function instanceOfComponentNameAndModule(object) {
15
+ return typeof object === 'object' && object !== null && 'module' in object;
16
+ }
17
+ export const PLACEHOLDER_COMPONENTS = new InjectionToken('Sc.placeholder.components');
18
+ export const PLACEHOLDER_LAZY_COMPONENTS = new InjectionToken('Sc.placeholder.lazyComponents');
19
+ export const PLACEHOLDER_MISSING_COMPONENT_COMPONENT = new InjectionToken('Sc.placeholder.missingComponentComponent');
20
+ export const DYNAMIC_COMPONENT = new InjectionToken('Sc.placeholder.dynamicComponent');
21
21
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXIudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wbGFjZWhvbGRlci50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBRXJELDhDQUE4QztBQUM5QyxNQUFNLE9BQU8sb0JBQW9CO0NBR2hDO0FBYUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsOEJBQThCLENBQUMsTUFBZTtJQUM1RCxPQUFPLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUM7QUFDM0UsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGdDQUFnQyxDQUM5QyxNQUFlO0lBRWYsT0FBTyxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxRQUFRLElBQUksTUFBTSxDQUFDO0FBQzdFLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FDdEQsMkJBQTJCLENBQzVCLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLGNBQWMsQ0FDM0QsK0JBQStCLENBQ2hDLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRyxJQUFJLGNBQWMsQ0FDdkUsMENBQTBDLENBQzNDLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FDakQsaUNBQWlDLENBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqIFJlZ2lzdGVycyBhIHN0YXRpY2FsbHkgbG9hZGVkIGNvbXBvbmVudCAqL1xyXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50TmFtZUFuZFR5cGUge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB0eXBlOiBUeXBlPHVua25vd24+O1xyXG59XHJcblxyXG4vKiogUmVnaXN0ZXJzIGEgbGF6aWx5IGxvYWRlZCBjb21wb25lbnQgYnkgbmFtZSBhbmQgbW9kdWxlIHRvIGxhenkgbG9hZCB3aGVuIGl0J3MgbmVlZGVkICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50TmFtZUFuZE1vZHVsZSB7XHJcbiAgLyoqIE5hbWUgb2YgdGhlIGNvbXBvbmVudCAqL1xyXG4gIHBhdGg6IHN0cmluZztcclxuICAvKipcclxuICAgKiBEeW5hbWljIGltcG9ydCBvZiB0aGUgY29tcG9uZW50LFxyXG4gICAqIGUuZy4gKCkgPT4gaW1wb3J0KCcuL3BhdGgvdG8vbGF6eWxvYWRlZGNvbXBvbmVudC5tb2R1bGUnKS50aGVuKG0gPT4gbS5MYXp5TG9hZGVkQ29tcG9uZW50TW9kdWxlRXhwb3J0TmFtZSlcclxuICAgKi9cclxuICBsb2FkQ2hpbGRyZW46ICgpID0+IFByb21pc2U8VHlwZTx1bmtub3duPj47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAcGFyYW0ge3Vua25vd259IG9iamVjdFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbmNlT2ZDb21wb25lbnROYW1lQW5kVHlwZShvYmplY3Q6IHVua25vd24pOiBvYmplY3QgaXMgQ29tcG9uZW50TmFtZUFuZFR5cGUge1xyXG4gIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwgJiYgJ3R5cGUnIGluIG9iamVjdDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEBwYXJhbSB7dW5rbm93bn0gb2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFuY2VPZkNvbXBvbmVudE5hbWVBbmRNb2R1bGUoXHJcbiAgb2JqZWN0OiB1bmtub3duXHJcbik6IG9iamVjdCBpcyBDb21wb25lbnROYW1lQW5kTW9kdWxlIHtcclxuICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsICYmICdtb2R1bGUnIGluIG9iamVjdDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFBMQUNFSE9MREVSX0NPTVBPTkVOVFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29tcG9uZW50TmFtZUFuZFR5cGVbXT4oXHJcbiAgJ1NjLnBsYWNlaG9sZGVyLmNvbXBvbmVudHMnXHJcbik7XHJcbmV4cG9ydCBjb25zdCBQTEFDRUhPTERFUl9MQVpZX0NPTVBPTkVOVFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29tcG9uZW50TmFtZUFuZFR5cGVbXT4oXHJcbiAgJ1NjLnBsYWNlaG9sZGVyLmxhenlDb21wb25lbnRzJ1xyXG4pO1xyXG5leHBvcnQgY29uc3QgUExBQ0VIT0xERVJfTUlTU0lOR19DT01QT05FTlRfQ09NUE9ORU5UID0gbmV3IEluamVjdGlvblRva2VuPFR5cGU8dW5rbm93bj4+KFxyXG4gICdTYy5wbGFjZWhvbGRlci5taXNzaW5nQ29tcG9uZW50Q29tcG9uZW50J1xyXG4pO1xyXG5leHBvcnQgY29uc3QgRFlOQU1JQ19DT01QT05FTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48VHlwZTx1bmtub3duPiB8IHsgW3M6IHN0cmluZ106IHVua25vd24gfT4oXHJcbiAgJ1NjLnBsYWNlaG9sZGVyLmR5bmFtaWNDb21wb25lbnQnXHJcbik7XHJcbiJdfQ==
@@ -1,37 +1,37 @@
1
- import { Component, ElementRef, Input, Renderer2 } from '@angular/core';
2
- export class RawComponent {
3
- constructor(renderer, elementRef) {
4
- this.renderer = renderer;
5
- this.elementRef = elementRef;
6
- }
7
- ngOnInit() {
8
- const el = this.renderer.createElement(this.rendering.name);
9
- const contents = this.renderer.createText(this.rendering.contents || '');
10
- const attributes = this.rendering.attributes;
11
- for (const attr in attributes) {
12
- // eslint-disable-next-line no-prototype-builtins
13
- if (attributes.hasOwnProperty(attr)) {
14
- const value = attributes[attr];
15
- this.renderer.setAttribute(el, attr, value || '');
16
- }
17
- }
18
- this.renderer.appendChild(el, contents);
19
- const parentNode = this.renderer.parentNode(this.elementRef.nativeElement);
20
- this.renderer.insertBefore(parentNode, el, this.elementRef.nativeElement);
21
- parentNode.removeChild(this.elementRef.nativeElement);
22
- }
23
- }
24
- RawComponent.decorators = [
25
- { type: Component, args: [{
26
- selector: 'sc-raw',
27
- template: ''
28
- },] }
29
- ];
30
- RawComponent.ctorParameters = () => [
31
- { type: Renderer2 },
32
- { type: ElementRef }
33
- ];
34
- RawComponent.propDecorators = {
35
- rendering: [{ type: Input }]
36
- };
1
+ import { Component, ElementRef, Input, Renderer2 } from '@angular/core';
2
+ export class RawComponent {
3
+ constructor(renderer, elementRef) {
4
+ this.renderer = renderer;
5
+ this.elementRef = elementRef;
6
+ }
7
+ ngOnInit() {
8
+ const el = this.renderer.createElement(this.rendering.name);
9
+ const contents = this.renderer.createText(this.rendering.contents || '');
10
+ const attributes = this.rendering.attributes;
11
+ for (const attr in attributes) {
12
+ // eslint-disable-next-line no-prototype-builtins
13
+ if (attributes.hasOwnProperty(attr)) {
14
+ const value = attributes[attr];
15
+ this.renderer.setAttribute(el, attr, value || '');
16
+ }
17
+ }
18
+ this.renderer.appendChild(el, contents);
19
+ const parentNode = this.renderer.parentNode(this.elementRef.nativeElement);
20
+ this.renderer.insertBefore(parentNode, el, this.elementRef.nativeElement);
21
+ parentNode.removeChild(this.elementRef.nativeElement);
22
+ }
23
+ }
24
+ RawComponent.decorators = [
25
+ { type: Component, args: [{
26
+ selector: 'sc-raw',
27
+ template: ''
28
+ },] }
29
+ ];
30
+ RawComponent.ctorParameters = () => [
31
+ { type: Renderer2 },
32
+ { type: ElementRef }
33
+ ];
34
+ RawComponent.propDecorators = {
35
+ rendering: [{ type: Input }]
36
+ };
37
37
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3Jhdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU9oRixNQUFNLE9BQU8sWUFBWTtJQUd2QixZQUFvQixRQUFtQixFQUFVLFVBQXNCO1FBQW5ELGFBQVEsR0FBUixRQUFRLENBQVc7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQUcsQ0FBQztJQUUzRSxRQUFRO1FBQ04sTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztRQUM3QyxLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVUsRUFBRTtZQUM3QixpREFBaUQ7WUFDakQsSUFBSSxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNuQyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ25EO1NBQ0Y7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3hELENBQUM7OztZQXpCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFFBQVEsRUFBRSxFQUFFO2FBQ2I7OztZQU44QyxTQUFTO1lBQXBDLFVBQVU7Ozt3QkFRM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0bWxFbGVtZW50UmVuZGVyaW5nIH0gZnJvbSAnQHNpdGVjb3JlLWpzcy9zaXRlY29yZS1qc3MnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzYy1yYXcnLFxyXG4gIHRlbXBsYXRlOiAnJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJhd0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgcmVuZGVyaW5nOiBIdG1sRWxlbWVudFJlbmRlcmluZztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQodGhpcy5yZW5kZXJpbmcubmFtZSk7XHJcbiAgICBjb25zdCBjb250ZW50cyA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dCh0aGlzLnJlbmRlcmluZy5jb250ZW50cyB8fCAnJyk7XHJcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gdGhpcy5yZW5kZXJpbmcuYXR0cmlidXRlcztcclxuICAgIGZvciAoY29uc3QgYXR0ciBpbiBhdHRyaWJ1dGVzKSB7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcclxuICAgICAgaWYgKGF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoYXR0cikpIHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IGF0dHJpYnV0ZXNbYXR0cl07XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWwsIGF0dHIsIHZhbHVlIHx8ICcnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZWwsIGNvbnRlbnRzKTtcclxuICAgIGNvbnN0IHBhcmVudE5vZGUgPSB0aGlzLnJlbmRlcmVyLnBhcmVudE5vZGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUocGFyZW50Tm9kZSwgZWwsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxufVxyXG4iXX0=