tnx-shared 5.3.213 → 5.3.215

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.
@@ -1,21 +1,39 @@
1
1
  /* eslint-disable prefer-const */
2
- import { Component, EventEmitter, Injector, Input, Output, ViewChild } from '@angular/core';
2
+ import { Component, EventEmitter, forwardRef, Input, Output, ViewChild } from '@angular/core';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
4
  import { ComponentContextService } from '../../app-context/component-context.service';
4
- import { ComponentBase } from '../../classes/base/component-base';
5
5
  import { HtmlPreviewControlSchema } from '../../classes/form-schema';
6
+ import { CommonService } from '../../services/common.service';
6
7
  import { GlobalService } from '../../services/global.service';
7
- export class HtmlPreviewComponent extends ComponentBase {
8
- constructor(_injector, gs) {
9
- super(_injector);
8
+ export class HtmlPreviewComponent {
9
+ constructor(gs, _commonService) {
10
10
  this.gs = gs;
11
- this.content = '';
11
+ this._commonService = _commonService;
12
12
  this.control = new HtmlPreviewControlSchema();
13
- this.contentChange = new EventEmitter();
13
+ this.onChanged = new EventEmitter();
14
+ this.content = '';
15
+ this.id = '';
16
+ this.id = this._commonService.guid();
14
17
  }
15
- ngOnChanges(changes) {
16
- if (changes['content']) {
17
- this.renderMath();
18
+ // ngOnChanges(changes: SimpleChanges) {
19
+ // if (changes['content']) {
20
+ // this.renderMath();
21
+ // }
22
+ // }
23
+ writeValue(obj) {
24
+ if (obj) {
25
+ this.content = obj;
26
+ }
27
+ else {
28
+ this.content = '';
18
29
  }
30
+ this.renderMath();
31
+ }
32
+ registerOnChange(fn) {
33
+ this.onChange = fn;
34
+ }
35
+ registerOnTouched(fn) {
36
+ this.onTouched = fn;
19
37
  }
20
38
  renderMath() {
21
39
  this.mathJaxObject = this.gs.nativeGlobal()['MathJax'];
@@ -24,24 +42,29 @@ export class HtmlPreviewComponent extends ComponentBase {
24
42
  }
25
43
  setTimeout(() => {
26
44
  var _a, _b;
27
- const autoScrollBottom = !!((_a = this.control) === null || _a === void 0 ? void 0 : _a.autoScrollBottom);
28
- const output = this.mathContent.nativeElement;
29
- output.innerHTML = ((_b = this.content) === null || _b === void 0 ? void 0 : _b.trim()) || '';
30
- this.mathJaxObject.texReset();
31
- this.mathJaxObject.typesetClear();
32
- this.mathJaxObject.typesetPromise([output]).catch(function (err) {
45
+ const $this = this;
46
+ const autoScrollBottom = !!((_a = $this.control) === null || _a === void 0 ? void 0 : _a.autoScrollBottom);
47
+ const output = $this.mathContent.nativeElement;
48
+ output.innerHTML = ((_b = $this.content) === null || _b === void 0 ? void 0 : _b.trim()) || '';
49
+ $this.mathJaxObject.texReset();
50
+ $this.mathJaxObject.typesetClear();
51
+ $this.mathJaxObject.typesetPromise([output]).catch(function (err) {
33
52
  output.innerHTML = '';
34
53
  output.appendChild(document.createTextNode(err.message));
35
54
  console.error(err);
36
55
  }).then(function () {
56
+ var _a, _b, _c;
37
57
  // Do something after typeset
38
58
  if (autoScrollBottom) {
39
- const box = document.querySelector('#math-preview-box');
59
+ const box = document.querySelector(`#math-preview-box-${$this.id}`);
40
60
  const elem = box.getElementsByClassName('ps--active-y')[0];
41
61
  if (elem) {
42
62
  elem.scrollTop = elem.scrollHeight;
43
63
  }
44
64
  }
65
+ const value = (_c = (_b = (_a = document.getElementById(`mathPreview-${$this.id}`)) === null || _a === void 0 ? void 0 : _a.innerHTML) === null || _b === void 0 ? void 0 : _b.trim()) !== null && _c !== void 0 ? _c : '';
66
+ $this.onChange(value);
67
+ $this.onChanged.emit(value);
45
68
  });
46
69
  return this.mathJaxObject.startup.defaultPageReady();
47
70
  });
@@ -104,19 +127,25 @@ export class HtmlPreviewComponent extends ComponentBase {
104
127
  HtmlPreviewComponent.decorators = [
105
128
  { type: Component, args: [{
106
129
  selector: 'html-preview',
107
- template: "<div class=\"preview-box\" id=\"math-preview-box\" [ngStyle]=\"{'height': control.height + 'px'}\">\n <tn-custom-scrollbar [showScrollHorizontal]=\"true\">\n <!-- <span #mathContent id=\"mathPreview\" [innerHTML]=\"content | safeHtml\"></span> -->\n <div #mathContent id=\"mathPreview\"></div>\n </tn-custom-scrollbar>\n</div>",
108
- providers: [ComponentContextService],
130
+ template: "<div class=\"preview-box\" id=\"math-preview-box-{{id}}\" [ngStyle]=\"{'height': control.height + 'px'}\">\n <tn-custom-scrollbar [showScrollHorizontal]=\"true\">\n <div #mathContent id=\"mathPreview-{{id}}\"></div>\n </tn-custom-scrollbar>\n</div>",
131
+ providers: [
132
+ ComponentContextService,
133
+ {
134
+ provide: NG_VALUE_ACCESSOR,
135
+ useExisting: forwardRef(() => HtmlPreviewComponent),
136
+ multi: true
137
+ },
138
+ ],
109
139
  styles: ["::ng-deep html-preview .preview-box{border:1px solid #ced4da;padding:10px}"]
110
140
  },] }
111
141
  ];
112
142
  HtmlPreviewComponent.ctorParameters = () => [
113
- { type: Injector },
114
- { type: GlobalService }
143
+ { type: GlobalService },
144
+ { type: CommonService }
115
145
  ];
116
146
  HtmlPreviewComponent.propDecorators = {
117
147
  mathContent: [{ type: ViewChild, args: ['mathContent',] }],
118
- content: [{ type: Input }],
119
148
  control: [{ type: Input }],
120
- contentChange: [{ type: Output }]
149
+ onChanged: [{ type: Output }]
121
150
  };
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2h0bWwtcHJldmlldy9odG1sLXByZXZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlDQUFpQztBQUNqQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFROUQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGFBQWE7SUFTbkQsWUFDSSxTQUFtQixFQUNaLEVBQWlCO1FBRXhCLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUZWLE9BQUUsR0FBRixFQUFFLENBQWU7UUFSbkIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixZQUFPLEdBQTZCLElBQUksd0JBQXdCLEVBQUUsQ0FBQztRQUVsRSxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFRbEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNwQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2RCxJ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Q29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBwcmVmZXItY29uc3QgKi9cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlJztcbmltcG9ydCB7IEh0bWxQcmV2aWV3Q29udHJvbFNjaGVtYSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xuaW1wb3J0IHsgR2xvYmFsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dsb2JhbC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdodG1sLXByZXZpZXcnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9odG1sLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2h0bWwtcHJldmlldy5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBIdG1sUHJldmlld0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBWaWV3Q2hpbGQoJ21hdGhDb250ZW50JykgbWF0aENvbnRlbnQ7XG5cbiAgICBASW5wdXQoKSBjb250ZW50OiBzdHJpbmcgPSAnJztcbiAgICBASW5wdXQoKSBjb250cm9sOiBIdG1sUHJldmlld0NvbnRyb2xTY2hlbWEgPSBuZXcgSHRtbFByZXZpZXdDb250cm9sU2NoZW1hKCk7XG5cbiAgICBAT3V0cHV0KCkgY29udGVudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIG1hdGhKYXhPYmplY3Q7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHVibGljIGdzOiBHbG9iYWxTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoY2hhbmdlc1snY29udGVudCddKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlck1hdGgoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbmRlck1hdGgoKSB7XG4gICAgICAgIHRoaXMubWF0aEpheE9iamVjdCA9IHRoaXMuZ3MubmF0aXZlR2xvYmFsKClbJ01hdGhKYXgnXTtcbiAgICAgICAgaWYgKCF0aGlzLm1hdGhKYXhPYmplY3QgJiYgIXRoaXMubWF0aENvbnRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGF1dG9TY3JvbGxCb3R0b20gPSAhIXRoaXMuY29udHJvbD8uYXV0b1Njcm9sbEJvdHRvbTtcbiAgICAgICAgICAgIGNvbnN0IG91dHB1dCA9IHRoaXMubWF0aENvbnRlbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIG91dHB1dC5pbm5lckhUTUwgPSB0aGlzLmNvbnRlbnQ/LnRyaW0oKSB8fCAnJztcbiAgICAgICAgICAgIHRoaXMubWF0aEpheE9iamVjdC50ZXhSZXNldCgpO1xuICAgICAgICAgICAgdGhpcy5tYXRoSmF4T2JqZWN0LnR5cGVzZXRDbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5tYXRoSmF4T2JqZWN0LnR5cGVzZXRQcm9taXNlKFtvdXRwdXRdKS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0LmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlcnIubWVzc2FnZSkpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIC8vIERvIHNvbWV0aGluZyBhZnRlciB0eXBlc2V0XG4gICAgICAgICAgICAgICAgaWYgKGF1dG9TY3JvbGxCb3R0b20pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm94ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI21hdGgtcHJldmlldy1ib3gnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbSA9IGJveC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwcy0tYWN0aXZlLXknKVswXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uc2Nyb2xsVG9wID0gZWxlbS5zY3JvbGxIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1hdGhKYXhPYmplY3Quc3RhcnR1cC5kZWZhdWx0UGFnZVJlYWR5KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGxvYWRNYXRoQ29uZmlnKCkge1xuICAgICAgICBjb25zdCB3ZDogYW55ID0gdGhpcy5ncy5uYXRpdmVHbG9iYWwoKTtcbiAgICAgICAgd2QuTWF0aEpheCA9IHtcbiAgICAgICAgICAgICdsb2FkZXInOiB7IGxvYWQ6IFsnaW5wdXQvYXNjaWltYXRoJywgJ291dHB1dC9jaHRtbCcsICd1aS9tZW51JywgJ291dHB1dC9zdmcnLCAnW21tbF0vbW1sMyddIH0sXG4gICAgICAgICAgICAndGV4Jzoge1xuICAgICAgICAgICAgICAgIGlubGluZU1hdGg6IFtbJyQnLCAnJCddLCBbJ1xcXFwoJywgJ1xcXFwpJ11dLFxuICAgICAgICAgICAgICAgIHByb2Nlc3NFc2NhcGVzOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ3N0YXJ0dXAnOiB7XG4gICAgICAgICAgICAgICAgcGFnZVJlYWR5OiAoKSA9PiB0aGlzLnJlbmRlck1hdGgoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdzdmcnOiB7XG4gICAgICAgICAgICAgICAgc2NhbGU6IDEsXG4gICAgICAgICAgICAgICAgbWluU2NhbGU6IC41XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ29wdGlvbnMnOiB7XG4gICAgICAgICAgICAgICAgZW5hYmxlTWVudTogISF0aGlzLmNvbnRyb2w/LnVzZU1hdGhKYXhNZW51LCAvLyBzZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSB0aGUgbWVudVxuICAgICAgICAgICAgICAgIG1lbnVPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXhIaW50czogdHJ1ZSwgLy8gcHV0IFRlWC1yZWxhdGVkIGF0dHJpYnV0ZXMgb24gTWF0aE1MXG4gICAgICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY3M6IGZhbHNlLCAvLyBwdXQgb3JpZ2luYWwgZm9ybWF0IGluIDxzZW1hbnRpYz4gdGFnIGluIE1hdGhNTFxuICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogJ0RvdWJsZS1DbGljaycsIC8vIG9yICdDbGljaycgb3IgJ0RvdWJsZUNsaWNrJyBhcyB6b29tIHRyaWdnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHpzY2FsZTogJzIwMCUnLCAvLyB6b29tIHNjYWxpbmcgZmFjdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlcjogdGhpcy5jb250cm9sPy5tYXRoSmF4VHlwZSA/IHRoaXMuY29udHJvbC5tYXRoSmF4VHlwZSA6ICdDSFRNTCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMSwgLy8gc2NhbGluZyBmYWN0b3IgZm9yIGFsbCBtYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBpblRhYk9yZGVyOiB0cnVlLCAvLyB0cnVlIGlmIHRhYmJpbmcgaW5jbHVkZXMgbWF0aFxuXG4gICAgICAgICAgICAgICAgICAgICAgICBhc3Npc3RpdmVNbWw6IHRydWUsIC8vIHRydWUgaWYgaGlkZGVuIGFzc2lzdGl2ZSBNYXRoTUwgc2hvdWxkIGJlIGdlbmVyYXRlZCBmb3Igc2NyZWVuIHJlYWRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNpYmxlOiBmYWxzZSwgLy8gdHJ1ZSBpZiBjb21wbGV4IG1hdGggc2hvdWxkIGJlIGNvbGxhcHNpYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBsb3JlcjogZmFsc2UsIC8vIHRydWUgaWYgdGhlIGV4cHJlc3Npb24gZXhwbG9yZXIgc2hvdWxkIGJlIGFjdGl2ZVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRlWDogWydUZVgnLCAnTGFUZVgnLCAnYXBwbGljYXRpb24veC10ZXgnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJNYXRoOiBbJ1N0YXJNYXRoIDUuMCddLFxuICAgICAgICAgICAgICAgICAgICAgICAgTWFwbGU6IFsnTWFwbGUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnRNYXRoTUw6IFsnTWF0aE1MLUNvbnRlbnQnLCAnYXBwbGljYXRpb24vbWF0aG1sLWNvbnRlbnQreG1sJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICBPcGVuTWF0aDogWydPcGVuTWF0aCddXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICBpZiAodGhpcy5jb250cm9sPy5tYXRoSmF4VHlwZSA9PSAnU1ZHJykge1xuICAgICAgICAgICAgc2NyaXB0LnNyYyA9ICdhc3NldHMvdmVuZG9yL21hdGhqYXgvdGV4LW1tbC1zdmcuanMnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2NyaXB0LnNyYyA9ICdhc3NldHMvdmVuZG9yL21hdGhqYXgvdGV4LW1tbC1jaHRtbC5qcyc7XG4gICAgICAgIH1cbiAgICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZSgnaWQnLCAnTWF0aEpheC1zY3JpcHQnKTtcbiAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmxvYWRNYXRoQ29uZmlnKCk7XG4gICAgfVxufVxuIl19
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2h0bWwtcHJldmlldy9odG1sLXByZXZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlDQUFpQztBQUNqQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQVksS0FBSyxFQUFxQixNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSSxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFdEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQWU5RCxNQUFNLE9BQU8sb0JBQW9CO0lBWTdCLFlBQ1csRUFBaUIsRUFDaEIsY0FBNkI7UUFEOUIsT0FBRSxHQUFGLEVBQUUsQ0FBZTtRQUNoQixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQVpoQyxZQUFPLEdBQTZCLElBQUksd0JBQXdCLEVBQUUsQ0FBQztRQUNsRSxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUc5QyxZQUFPLEdBQVcsRUFBRSxDQUFDO1FBSXJCLE9BQUUsR0FBUSxFQUFFLENBQUM7UUFNVCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVGLHdDQUF3QztJQUN4QyxnQ0FBZ0M7SUFDaEMsNkJBQTZCO0lBQzdCLFFBQVE7SUFDUixJQUFJO0lBRUosVUFBVSxDQUFDLEdB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QUFhLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxnQ0FBZ0MsQ0FBQzt3QkFDbkUsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDO3FCQUN6QjtpQkFDSjthQUNKO1NBQ0osQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsV0FBVyxLQUFJLEtBQUssRUFBRTtZQUNwQyxNQUFNLENBQUMsR0FBRyxHQUFHLHNDQUFzQyxDQUFDO1NBQ3ZEO2FBQ0k7WUFDRCxNQUFNLENBQUMsR0FBRyxHQUFHLHdDQUF3QyxDQUFDO1NBQ3pEO1FBQ0QsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDOzs7WUE5SUosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxjQUFjO2dCQUN4QixpUkFBNEM7Z0JBRTVDLFNBQVMsRUFBRTtvQkFDUCx1QkFBdUI7b0JBQ3ZCO3dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7d0JBQ25ELEtBQUssRUFBRSxJQUFJO3FCQUNkO2lCQUNKOzthQUNKOzs7WUFkUSxhQUFhO1lBRGIsYUFBYTs7OzBCQWlCakIsU0FBUyxTQUFDLGFBQWE7c0JBQ3ZCLEtBQUs7d0JBQ0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHByZWZlci1jb25zdCAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEluamVjdG9yLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYmFzZS9jb21wb25lbnQtYmFzZSc7XG5pbXBvcnQgeyBIdG1sUHJldmlld0NvbnRyb2xTY2hlbWEgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBHbG9iYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ2xvYmFsLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2h0bWwtcHJldmlldycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2h0bWwtcHJldmlldy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaHRtbC1wcmV2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIENvbXBvbmVudENvbnRleHRTZXJ2aWNlLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEh0bWxQcmV2aWV3Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBIdG1sUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIEBWaWV3Q2hpbGQoJ21hdGhDb250ZW50JykgbWF0aENvbnRlbnQ7XG4gICAgQElucHV0KCkgY29udHJvbDogSHRtbFByZXZpZXdDb250cm9sU2NoZW1hID0gbmV3IEh0bWxQcmV2aWV3Q29udHJvbFNjaGVtYSgpO1xuICAgIEBPdXRwdXQoKSBvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIG1hdGhKYXhPYmplY3Q7XG4gICAgY29udGVudDogc3RyaW5nID0gJyc7XG5cbiAgICBvbkNoYW5nZTogRnVuY3Rpb247XG4gICAgb25Ub3VjaGVkOiBGdW5jdGlvbjtcbiAgICBpZDogYW55ID0gJyc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGdzOiBHbG9iYWxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuaWQgPSB0aGlzLl9jb21tb25TZXJ2aWNlLmd1aWQoKTtcbiAgICAgfVxuXG4gICAgLy8gbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIC8vICAgICBpZiAoY2hhbmdlc1snY29udGVudCddKSB7XG4gICAgLy8gICAgICAgICB0aGlzLnJlbmRlck1hdGgoKTtcbiAgICAvLyAgICAgfVxuICAgIC8vIH1cblxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKG9iaikge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gb2JqO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW5kZXJNYXRoKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHJlbmRlck1hdGgoKSB7XG4gICAgICAgIHRoaXMubWF0aEpheE9iamVjdCA9IHRoaXMuZ3MubmF0aXZlR2xvYmFsKClbJ01hdGhKYXgnXTtcbiAgICAgICAgaWYgKCF0aGlzLm1hdGhKYXhPYmplY3QgJiYgIXRoaXMubWF0aENvbnRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0ICR0aGlzID0gdGhpcztcbiAgICAgICAgICAgIGNvbnN0IGF1dG9TY3JvbGxCb3R0b20gPSAhISR0aGlzLmNvbnRyb2w/LmF1dG9TY3JvbGxCb3R0b207XG4gICAgICAgICAgICBjb25zdCBvdXRwdXQgPSAkdGhpcy5tYXRoQ29udGVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgb3V0cHV0LmlubmVySFRNTCA9ICR0aGlzLmNvbnRlbnQ/LnRyaW0oKSB8fCAnJztcbiAgICAgICAgICAgICR0aGlzLm1hdGhKYXhPYmplY3QudGV4UmVzZXQoKTtcbiAgICAgICAgICAgICR0aGlzLm1hdGhKYXhPYmplY3QudHlwZXNldENsZWFyKCk7XG4gICAgICAgICAgICAkdGhpcy5tYXRoSmF4T2JqZWN0LnR5cGVzZXRQcm9taXNlKFtvdXRwdXRdKS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0LmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlcnIubWVzc2FnZSkpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIC8vIERvIHNvbWV0aGluZyBhZnRlciB0eXBlc2V0XG4gICAgICAgICAgICAgICAgaWYgKGF1dG9TY3JvbGxCb3R0b20pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm94ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgI21hdGgtcHJldmlldy1ib3gtJHskdGhpcy5pZH1gKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbSA9IGJveC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwcy0tYWN0aXZlLXknKVswXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uc2Nyb2xsVG9wID0gZWxlbS5zY3JvbGxIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgbWF0aFByZXZpZXctJHskdGhpcy5pZH1gKT8uaW5uZXJIVE1MPy50cmltKCkgPz8gJyc7XG4gICAgICAgICAgICAgICAgJHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgICR0aGlzLm9uQ2hhbmdlZC5lbWl0KHZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWF0aEpheE9iamVjdC5zdGFydHVwLmRlZmF1bHRQYWdlUmVhZHkoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbG9hZE1hdGhDb25maWcoKSB7XG4gICAgICAgIGNvbnN0IHdkOiBhbnkgPSB0aGlzLmdzLm5hdGl2ZUdsb2JhbCgpO1xuICAgICAgICB3ZC5NYXRoSmF4ID0ge1xuICAgICAgICAgICAgJ2xvYWRlcic6IHsgbG9hZDogWydpbnB1dC9hc2NpaW1hdGgnLCAnb3V0cHV0L2NodG1sJywgJ3VpL21lbnUnLCAnb3V0cHV0L3N2ZycsICdbbW1sXS9tbWwzJ10gfSxcbiAgICAgICAgICAgICd0ZXgnOiB7XG4gICAgICAgICAgICAgICAgaW5saW5lTWF0aDogW1snJCcsICckJ10sIFsnXFxcXCgnLCAnXFxcXCknXV0sXG4gICAgICAgICAgICAgICAgcHJvY2Vzc0VzY2FwZXM6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnc3RhcnR1cCc6IHtcbiAgICAgICAgICAgICAgICBwYWdlUmVhZHk6ICgpID0+IHRoaXMucmVuZGVyTWF0aCgpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ3N2Zyc6IHtcbiAgICAgICAgICAgICAgICBzY2FsZTogMSxcbiAgICAgICAgICAgICAgICBtaW5TY2FsZTogLjVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnb3B0aW9ucyc6IHtcbiAgICAgICAgICAgICAgICBlbmFibGVNZW51OiAhIXRoaXMuY29udHJvbD8udXNlTWF0aEpheE1lbnUsIC8vIHNldCB0byBmYWxzZSB0byBkaXNhYmxlIHRoZSBtZW51XG4gICAgICAgICAgICAgICAgbWVudU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleEhpbnRzOiB0cnVlLCAvLyBwdXQgVGVYLXJlbGF0ZWQgYXR0cmlidXRlcyBvbiBNYXRoTUxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFudGljczogZmFsc2UsIC8vIHB1dCBvcmlnaW5hbCBmb3JtYXQgaW4gPHNlbWFudGljPiB0YWcgaW4gTWF0aE1MXG4gICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAnRG91YmxlLUNsaWNrJywgLy8gb3IgJ0NsaWNrJyBvciAnRG91YmxlQ2xpY2snIGFzIHpvb20gdHJpZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgenNjYWxlOiAnMjAwJScsIC8vIHpvb20gc2NhbGluZyBmYWN0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyOiB0aGlzLmNvbnRyb2w/Lm1hdGhKYXhUeXBlID8gdGhpcy5jb250cm9sLm1hdGhKYXhUeXBlIDogJ0NIVE1MJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAxLCAvLyBzY2FsaW5nIGZhY3RvciBmb3IgYWxsIG1hdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGluVGFiT3JkZXI6IHRydWUsIC8vIHRydWUgaWYgdGFiYmluZyBpbmNsdWRlcyBtYXRoXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFzc2lzdGl2ZU1tbDogdHJ1ZSwgLy8gdHJ1ZSBpZiBoaWRkZW4gYXNzaXN0aXZlIE1hdGhNTCBzaG91bGQgYmUgZ2VuZXJhdGVkIGZvciBzY3JlZW4gcmVhZGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sbGFwc2libGU6IGZhbHNlLCAvLyB0cnVlIGlmIGNvbXBsZXggbWF0aCBzaG91bGQgYmUgY29sbGFwc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxvcmVyOiBmYWxzZSwgLy8gdHJ1ZSBpZiB0aGUgZXhwcmVzc2lvbiBleHBsb3JlciBzaG91bGQgYmUgYWN0aXZlXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFubm90YXRpb25UeXBlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgVGVYOiBbJ1RlWCcsICdMYVRlWCcsICdhcHBsaWNhdGlvbi94LXRleCddLFxuICAgICAgICAgICAgICAgICAgICAgICAgU3Rhck1hdGg6IFsnU3Rhck1hdGggNS4wJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICBNYXBsZTogWydNYXBsZSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudE1hdGhNTDogWydNYXRoTUwtQ29udGVudCcsICdhcHBsaWNhdGlvbi9tYXRobWwtY29udGVudCt4bWwnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5NYXRoOiBbJ09wZW5NYXRoJ11cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2w/Lm1hdGhKYXhUeXBlID09ICdTVkcnKSB7XG4gICAgICAgICAgICBzY3JpcHQuc3JjID0gJ2Fzc2V0cy92ZW5kb3IvbWF0aGpheC90ZXgtbW1sLXN2Zy5qcyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzY3JpcHQuc3JjID0gJ2Fzc2V0cy92ZW5kb3IvbWF0aGpheC90ZXgtbW1sLWNodG1sLmpzJztcbiAgICAgICAgfVxuICAgICAgICBzY3JpcHQuc2V0QXR0cmlidXRlKCdpZCcsICdNYXRoSmF4LXNjcmlwdCcpO1xuICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMubG9hZE1hdGhDb25maWcoKTtcbiAgICB9XG59XG4iXX0=