@porscheinformatik/material-addons 18.0.2 → 18.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.
|
@@ -237,8 +237,11 @@ export class NumericFieldDirective {
|
|
|
237
237
|
}
|
|
238
238
|
}
|
|
239
239
|
roundOrTruncate(value) {
|
|
240
|
-
|
|
241
|
-
|
|
240
|
+
if (this.roundValue) {
|
|
241
|
+
return Math.round(value * Math.pow(10, this.decimalPlaces)) / Math.pow(10, this.decimalPlaces);
|
|
242
|
+
}
|
|
243
|
+
const method = value < 0 ? 'ceil' : 'floor';
|
|
244
|
+
return Math[method](+(value * Math.pow(10, this.decimalPlaces)).toFixed(this.decimalPlaces)) / Math.pow(10, this.decimalPlaces);
|
|
242
245
|
}
|
|
243
246
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NumericFieldDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.NumberFormatService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
244
247
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: NumericFieldDirective, isStandalone: true, selector: "[madNumericField]", inputs: { textAlign: "textAlign", decimalPlaces: "decimalPlaces", roundValue: ["roundDisplayValue", "roundValue"], autofillDecimals: "autofillDecimals", unit: "unit", unitPosition: "unitPosition", numericValue: "numericValue" }, outputs: { numericValueChanged: "numericValueChange" }, host: { listeners: { "change": "onChange(getValueForFormControl())", "input": "onChange(getValueForFormControl())", "blur": "onTouched()" }, properties: { "class.text-right": "textAlign === \"right\"" } }, providers: [
|
|
@@ -293,4 +296,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
|
293
296
|
type: Input,
|
|
294
297
|
args: ['numericValue']
|
|
295
298
|
}] } });
|
|
296
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy1maWVsZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9udW1lcmljLWZpZWxkL251bWVyaWMtZmllbGQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUU5RCxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDdkIsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN2QixNQUFNLDZCQUE2QixHQUFHLEVBQUUsQ0FBQztBQUN6QyxNQUFNLGtCQUFrQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBbUJsRCxNQUFNLE9BQU8scUJBQXFCO0lBZ0JoQyxJQUNJLFlBQVksQ0FBQyxLQUFhO1FBQzVCLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNyRyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMzQiwwR0FBMEc7WUFDMUcsNkNBQTZDO1lBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFL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RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvQkFDRCxVQUFVLEVBQUUsSUFBSTtpQkFDakI7eUlBRXFCLFNBQVM7c0JBQTVCLEtBQUs7dUJBQUMsV0FBVztnQkFDTSxhQUFhO3NCQUFwQyxLQUFLO3VCQUFDLGVBQWU7Z0JBQ00sVUFBVTtzQkFBckMsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBQ0MsZ0JBQWdCO3NCQUExQyxLQUFLO3VCQUFDLGtCQUFrQjtnQkFDVixJQUFJO3NCQUFsQixLQUFLO3VCQUFDLE1BQU07Z0JBQ1UsWUFBWTtzQkFBbEMsS0FBSzt1QkFBQyxjQUFjO2dCQUNTLG1CQUFtQjtzQkFBaEQsTUFBTTt1QkFBQyxvQkFBb0I7Z0JBVXhCLFlBQVk7c0JBRGYsS0FBSzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIwIFBvcnNjaGUgSW5mb3JtYXRpay4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTnVtYmVyRm9ybWF0U2VydmljZSB9IGZyb20gJy4vbnVtYmVyLWZvcm1hdC5zZXJ2aWNlJztcblxuY29uc3QgQkFDS19LRVlDT0RFID0gODtcbmNvbnN0IFNQQUNFX0tFWUNPREUgPSAzMjtcbmNvbnN0IERFTF9LRVlDT0RFID0gNDY7XG5jb25zdCBDT05UUk9MX0tFWUNPREVTX1VQUEVSX0JPUkRFUiA9IDQ2O1xuY29uc3QgT1RIRVJfQ09OVFJPTF9LRVlTID0gbmV3IFNldChbMjI0LCA5MSwgOTNdKTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW21hZE51bWVyaWNGaWVsZF0nLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy50ZXh0LXJpZ2h0XSc6ICd0ZXh0QWxpZ24gPT09IFwicmlnaHRcIicsXG4gICAgJyhjaGFuZ2UpJzogJ29uQ2hhbmdlKGdldFZhbHVlRm9yRm9ybUNvbnRyb2woKSknLFxuICAgICcoaW5wdXQpJzogJ29uQ2hhbmdlKGdldFZhbHVlRm9yRm9ybUNvbnRyb2woKSknLFxuICAgICcoYmx1ciknOiAnb25Ub3VjaGVkKCknLFxuICB9LFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE51bWVyaWNGaWVsZERpcmVjdGl2ZSksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBOdW1lcmljRmllbGREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASW5wdXQoJ3RleHRBbGlnbicpIHRleHRBbGlnbjogJ3JpZ2h0JyB8ICdsZWZ0JyA9ICdyaWdodCc7XG4gIEBJbnB1dCgnZGVjaW1hbFBsYWNlcycpIGRlY2ltYWxQbGFjZXMgPSAyO1xuICBASW5wdXQoJ3JvdW5kRGlzcGxheVZhbHVlJykgcm91bmRWYWx1ZSA9IGZhbHNlO1xuICBASW5wdXQoJ2F1dG9maWxsRGVjaW1hbHMnKSBhdXRvZmlsbERlY2ltYWxzID0gZmFsc2U7XG4gIEBJbnB1dCgndW5pdCcpIHVuaXQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoJ3VuaXRQb3NpdGlvbicpIHVuaXRQb3NpdGlvbjogJ3JpZ2h0JyB8ICdsZWZ0JyA9ICdyaWdodCc7XG4gIEBPdXRwdXQoJ251bWVyaWNWYWx1ZUNoYW5nZScpIG51bWVyaWNWYWx1ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBwcml2YXRlIGRpc3BsYXlWYWx1ZSA9ICcnO1xuICBwcml2YXRlIG9yaWdpbmFsVmFsdWUgPSBOYU47XG4gIHByaXZhdGUgX251bWVyaWNWYWx1ZTogbnVtYmVyO1xuICBwcml2YXRlIGlucHV0Q2hhbmdlTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUga2V5dXBMaXN0ZW5lcjogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBrZXlkb3duTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG5cbiAgQElucHV0KCdudW1lcmljVmFsdWUnKVxuICBzZXQgbnVtZXJpY1ZhbHVlKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5fbnVtZXJpY1ZhbHVlICE9PSB2YWx1ZSAmJiAhKGlzTmFOKHRoaXMuX251bWVyaWNWYWx1ZSkgJiYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gbnVsbCkpKSB7XG4gICAgICB0aGlzLm9yaWdpbmFsVmFsdWUgPSB2YWx1ZTtcbiAgICAgIC8vIERvbid0IHJvdW5kT3JUcnVuY2F0ZSBpZiB2YWx1ZSB3YXMgc2V0IHRvIGVtcHR5IG90aGVyd2lzZSBpbnB1dCB2YWx1ZSB3aWxsIGJlIHNldCB0byAwIGluc3RlYWQgb2YgZW1wdHlcbiAgICAgIC8vIHdoaWNoIGhhcHBlbnMgd2hlbiBhbiBpbnB1dCBpcyBiZWluZyByZXNldFxuICAgICAgdGhpcy5fbnVtZXJpY1ZhbHVlID0gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCA/IHZhbHVlIDogdGhpcy5yb3VuZE9yVHJ1bmNhdGUodmFsdWUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICB0aGlzLmhhbmRsZUlucHV0Q2hhbmdlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdW5pdFNwYW46IEhUTUxTcGFuRWxlbWVudDtcbiAgcHJpdmF0ZSB0ZXh0U3BhbjogSFRNTFNwYW5FbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGlucHV0RWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBudW1iZXJGb3JtYXRTZXJ2aWNlOiBOdW1iZXJGb3JtYXRTZXJ2aWNlLFxuICApIHt9XG5cbiAgLyogQ29udHJvbCBWYWx1ZXMgQWNjZXNzb3IgU3R1ZmYgYmVsb3cgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIG9uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKCk6IHZvaWQge1xuICAgIC8vIERvbnQgbmVlZCB0byBpbXBsZW1lbnQgc2luY2UgaXRzIGp1c3QgYSBkaXJlY3RpdmVcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubnVtZXJpY1ZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvKiBuZWVkcyB0byBiZSBwYXJzZWQgYXMgbnVtYmVyIGV4cGxpY2l0bHkgYXMgaXQgY29tZXMgYXMgc3RyaW5nIGZyb20gdXNlciBpbnB1dCAqL1xuICAgIHRoaXMuZGVjaW1hbFBsYWNlcyA9IHBhcnNlSW50KHRoaXMuZGVjaW1hbFBsYWNlcy50b1N0cmluZygpLCAxMCk7XG5cbiAgICB0aGlzLmlucHV0Q2hhbmdlTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudCwgJ2JsdXInLCAoZXZlbnQpID0+IHtcbiAgICAgIHRoaXMuZm9ybWF0SW5wdXQoZXZlbnQudGFyZ2V0LCB0cnVlKTtcbiAgICB9KTtcblxuICAgIHRoaXMua2V5dXBMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LCAna2V5dXAnLCAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBCQUNLX0tFWUNPREUgfHwgKGV2ZW50LmtleUNvZGUgPj0gQ09OVFJPTF9LRVlDT0RFU19VUFBFUl9CT1JERVIgJiYgIU9USEVSX0NPTlRST0xfS0VZUy5oYXMoZXZlbnQua2V5Q29kZSkpKSB7XG4gICAgICAgIHRoaXMuZm9ybWF0SW5wdXQoZXZlbnQudGFyZ2V0LCBmYWxzZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmtleWRvd25MaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LCAna2V5ZG93bicsIChldmVudCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWU6IHN0cmluZyA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5udW1iZXJGb3JtYXRTZXJ2aWNlLmFsbG93ZWRLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSkgfHxcbiAgICAgICAgKGV2ZW50LmtleUNvZGUgPD0gQ09OVFJPTF9LRVlDT0RFU19VUFBFUl9CT1JERVIgJiYgZXZlbnQua2V5Q29kZSA+IDAgJiYgZXZlbnQua2V5Q29kZSAhPT0gU1BBQ0VfS0VZQ09ERSkgfHxcbiAgICAgICAgZXZlbnQubWV0YUtleSB8fFxuICAgICAgICBldmVudC5jdHJsS2V5IHx8XG4gICAgICAgIGV2ZW50LmFsdEtleVxuICAgICAgKSB7XG4gICAgICAgIC8qIGFsbG93IG5lZ2F0aXZlIHNpZ24gb25seSBhcyBmaXJzdCBjaGFyYWN0ZXIgYW5kIG5vbmUgZXhpc3RzIG91dHNpZGUgb2YgdGV4dCBzZWxlY3Rpb24gKi9cbiAgICAgICAgY29uc3QgaW5kZXhOZWdhdGl2ZVNpZ24gPSB2YWx1ZS5pbmRleE9mKE51bWJlckZvcm1hdFNlcnZpY2UuTkVHQVRJVkUpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZXZlbnQua2V5ID09PSBOdW1iZXJGb3JtYXRTZXJ2aWNlLk5FR0FUSVZFICYmXG4gICAgICAgICAgKGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCA+IDAgfHwgaW5kZXhOZWdhdGl2ZVNpZ24gPiAtMSkgJiZcbiAgICAgICAgICAoZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0ID09PSBldmVudC50YXJnZXQuc2VsZWN0aW9uRW5kIHx8XG4gICAgICAgICAgICAhKGluZGV4TmVnYXRpdmVTaWduID49IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCAmJiBpbmRleE5lZ2F0aXZlU2lnbiA8PSBldmVudC50YXJnZXQuc2VsZWN0aW9uRW5kKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogbm8gZHVwbGljYXRlIGRlY2ltYWwgc2VwYXJhdG9ycyAqL1xuICAgICAgICBjb25zdCBpbmRleERlY2ltYWxTZXAgPSB2YWx1ZS5pbmRleE9mKHRoaXMubnVtYmVyRm9ybWF0U2VydmljZS5kZWNpbWFsU2VwYXJhdG9yKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGV2ZW50LmtleSA9PT0gdGhpcy5udW1iZXJGb3JtYXRTZXJ2aWNlLmRlY2ltYWxTZXBhcmF0b3IgJiZcbiAgICAgICAgICAoaW5kZXhEZWNpbWFsU2VwID4gLTEgfHwgdGhpcy5kZWNpbWFsUGxhY2VzID09PSAwKSAmJlxuICAgICAgICAgIChldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQgPT09IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQgfHxcbiAgICAgICAgICAgICEoaW5kZXhEZWNpbWFsU2VwID49IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCAmJiBpbmRleERlY2ltYWxTZXAgPD0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZCkpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIHByZXZlbnQgdG9vIG1hbnkgZGVjaW1hbCBwbGFjZXMgKi9cbiAgICAgICAgaWYgKFxuICAgICAgICAgIE51bWJlckZvcm1hdFNlcnZpY2UuTlVNQkVSUy5pbmNsdWRlcyhldmVudC5rZXkpICYmXG4gICAgICAgICAgaW5kZXhEZWNpbWFsU2VwID4gLTEgJiZcbiAgICAgICAgICBpbmRleERlY2ltYWxTZXAgPCBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQgJiZcbiAgICAgICAgICBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQgPT09IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQgJiZcbiAgICAgICAgICB2YWx1ZS5sZW5ndGggPiBpbmRleERlY2ltYWxTZXAgKyB0aGlzLmRlY2ltYWxQbGFjZXNcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogd2hlbiBkZWxldGluZyB0aG91c2FuZCBzZXBhcmF0b3IsIHJlbW92ZSB0aGUgZGlnaXQgYmVmb3JlIG9yIGFmdGVyIGl0ICovXG4gICAgICAgIGNvbnN0IGN1cnNvclN0YXJ0ID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xuXG4gICAgICAgIGlmIChjdXJzb3JTdGFydCA9PT0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZCkge1xuICAgICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBCQUNLX0tFWUNPREUgJiYgdmFsdWUuc3Vic3RyKGN1cnNvclN0YXJ0IC0gMSwgMSkgPT09IHRoaXMubnVtYmVyRm9ybWF0U2VydmljZS5ncm91cGluZ1NlcGFyYXRvcikge1xuICAgICAgICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDAsIGN1cnNvclN0YXJ0IC0gMikgKyB2YWx1ZS5zdWJzdHJpbmcoY3Vyc29yU3RhcnQgLSAxLCB2YWx1ZS5sZW5ndGgpO1xuICAgICAgICAgICAgZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0ID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZCA9IGN1cnNvclN0YXJ0IC0gMTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUNvZGUgPT09IERFTF9LRVlDT0RFICYmIHZhbHVlLnN1YnN0cihjdXJzb3JTdGFydCwgMSkgPT09IHRoaXMubnVtYmVyRm9ybWF0U2VydmljZS5ncm91cGluZ1NlcGFyYXRvcikge1xuICAgICAgICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDAsIGN1cnNvclN0YXJ0ICsgMSkgKyB2YWx1ZS5zdWJzdHJpbmcoY3Vyc29yU3RhcnQgKyAyLCB2YWx1ZS5sZW5ndGgpO1xuICAgICAgICAgICAgZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0ID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZCA9IGN1cnNvclN0YXJ0ICsgMTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcmlnaW5hbFZhbHVlID0gTmFOO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRldGFjaExpc3RlbmVyKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5pbmplY3RVbml0U3ltYm9sKCk7XG4gIH1cblxuICBoYW5kbGVJbnB1dENoYW5nZWQoKTogdm9pZCB7XG4gICAgLy8gQ2FsbCBpbiBzZXQgdGltZW91dCB0byBhdm9pZCBFeHByZXNzaW9uIGhhcyBjaGFuZ2VkIGFmdGVyIGl0IGhhcyBiZWVuIGNoZWNrZWQgZXJyb3IuXG4gICAgLy8gU29tZXRpbWVzIHRoZSB2YWx1ZSBjaGFuZ2VzIGJlY2F1c2Ugd2UgY3V0IG9mZiBkZWNpbWFsIHBsYWNlc1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVJbnB1dChcbiAgICAgICAgdGhpcy5udW1iZXJGb3JtYXRTZXJ2aWNlLmZvcm1hdCh0aGlzLl9udW1lcmljVmFsdWUsIHtcbiAgICAgICAgICBkZWNpbWFsUGxhY2VzOiB0aGlzLmRlY2ltYWxQbGFjZXMsXG4gICAgICAgICAgZmluYWxGb3JtYXR0aW5nOiB0cnVlLFxuICAgICAgICAgIGF1dG9maWxsRGVjaW1hbHM6IHRoaXMuYXV0b2ZpbGxEZWNpbWFscyxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0sIDEpO1xuICB9XG5cbiAgZm9ybWF0SW5wdXQoZWxlbWVudDogSFRNTElucHV0RWxlbWVudCwgZmluYWxGb3JtYXR0aW5nOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgY3Vyc29yUG9zID0gZWxlbWVudC5zZWxlY3Rpb25TdGFydDtcbiAgICBjb25zdCBsZW5ndGggPSBlbGVtZW50LnZhbHVlLmxlbmd0aDtcbiAgICBjb25zdCBzZXRDdXJzb3IgPSB0aGlzLmRpc3BsYXlWYWx1ZSAhPT0gZWxlbWVudC52YWx1ZTtcbiAgICBjb25zdCB0ZXh0Rm9ybWF0dGVkID0gdGhpcy5udW1iZXJGb3JtYXRTZXJ2aWNlLmZvcm1hdE51bWJlcihlbGVtZW50LnZhbHVlLCB7XG4gICAgICBkZWNpbWFsUGxhY2VzOiB0aGlzLmRlY2ltYWxQbGFjZXMsXG4gICAgICBmaW5hbEZvcm1hdHRpbmcsXG4gICAgICBhdXRvZmlsbERlY2ltYWxzOiB0aGlzLmF1dG9maWxsRGVjaW1hbHMsXG4gICAgfSk7XG5cbiAgICAvLyBzcGVjaWFsIGhhbmRsaW5nIHRvIG1vdmUgdW5pdCBzeW1ib2wgYWxvbmcgd2l0aCBkaXNwbGF5IHZhbHVlXG4gICAgaWYgKHRoaXMudGV4dEFsaWduID09PSAnbGVmdCcgJiYgdGhpcy51bml0UG9zaXRpb24gPT09ICdyaWdodCcpIHtcbiAgICAgIGNvbnN0IGlucHV0U3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCwgbnVsbCk7XG4gICAgICB0aGlzLnVuaXRTcGFuLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgIHRoaXMudW5pdFNwYW4uc3R5bGUubWFyZ2luVG9wID0gaW5wdXRTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXRvcC13aWR0aCcpO1xuICAgICAgdGhpcy51bml0U3Bhbi5zdHlsZS5wYWRkaW5nVG9wID0gaW5wdXRTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy10b3AnKTtcbiAgICAgIHRoaXMudW5pdFNwYW4uc3R5bGUucGFkZGluZ0JvdHRvbSA9IGlucHV0U3R5bGVzLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctYm90dG9tJyk7XG5cbiAgICAgIGlmICghdGhpcy50ZXh0U3Bhbikge1xuICAgICAgICB0aGlzLnRleHRTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMudGV4dFNwYW4pO1xuICAgICAgICB0aGlzLnRleHRTcGFuLnN0eWxlLmZvbnQgPSBpbnB1dFN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCdmb250Jyk7XG4gICAgICAgIHRoaXMudGV4dFNwYW4uc3R5bGUuZm9udFNpemUgPSBpbnB1dFN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LXNpemUnKTtcbiAgICAgICAgdGhpcy50ZXh0U3Bhbi5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG4gICAgICAgIHRoaXMudGV4dFNwYW4uc3R5bGUud2lkdGggPSAnYXV0byc7XG4gICAgICAgIHRoaXMudGV4dFNwYW4uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgICB0aGlzLnRleHRTcGFuLnN0eWxlLnRvcCA9ICcwJztcbiAgICAgICAgdGhpcy50ZXh0U3Bhbi5zdHlsZS53aGl0ZVNwYWNlID0gJ25vLXdyYXAnO1xuICAgICAgICB0aGlzLnRleHRTcGFuLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgIH1cbiAgICAgIHRoaXMudGV4dFNwYW4uaW5uZXJIVE1MID0gdGV4dEZvcm1hdHRlZDtcbiAgICAgIGNvbnN0IHdpZHRoID0gTWF0aC5taW4odGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggLSB0aGlzLnVuaXRTcGFuLmNsaWVudFdpZHRoLCBNYXRoLmNlaWwodGhpcy50ZXh0U3Bhbi5jbGllbnRXaWR0aCkpO1xuICAgICAgdGhpcy51bml0U3Bhbi5zdHlsZS5sZWZ0ID0gd2lkdGggKyAncHgnO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlSW5wdXQodGV4dEZvcm1hdHRlZCk7XG4gICAgaWYgKHNldEN1cnNvcikge1xuICAgICAgZWxlbWVudC5zZWxlY3Rpb25TdGFydCA9IGVsZW1lbnQuc2VsZWN0aW9uRW5kID0gTWF0aC5tYXgoY3Vyc29yUG9zICsgZWxlbWVudC52YWx1ZS5sZW5ndGggLSBsZW5ndGgsIDApO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUlucHV0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5fbnVtZXJpY1ZhbHVlID0gcGFyc2VGbG9hdChcbiAgICAgIHRoaXMubnVtYmVyRm9ybWF0U2VydmljZS5zdHJpcCh2YWx1ZSwgeyBkZWNpbWFsUGxhY2VzOiB0aGlzLmRlY2ltYWxQbGFjZXMgfSkucmVwbGFjZSh0aGlzLm51bWJlckZvcm1hdFNlcnZpY2UuZGVjaW1hbFNlcGFyYXRvciwgJy4nKSxcbiAgICApO1xuICAgIGlmICh0aGlzLl9udW1lcmljVmFsdWUgIT09IHRoaXMucm91bmRPclRydW5jYXRlKHRoaXMub3JpZ2luYWxWYWx1ZSkpIHtcbiAgICAgIHRoaXMub3JpZ2luYWxWYWx1ZSA9IHRoaXMuX251bWVyaWNWYWx1ZTtcbiAgICAgIHRoaXMubnVtZXJpY1ZhbHVlQ2hhbmdlZC5lbWl0KHRoaXMuX251bWVyaWNWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VmFsdWVGb3JGb3JtQ29udHJvbCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHRoaXMuZm9ybWF0SW5wdXQodGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQsIGZhbHNlKTtcbiAgICBpZiAoaXNOYU4odGhpcy5fbnVtZXJpY1ZhbHVlKSkge1xuICAgICAgLy8gUmV0dXJuIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIE5hTiB0byBzdXBwb3J0IHRoZSBkZWZhdWx0IHJlcXVpcmVkIHZhbGlkYXRvci5cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX251bWVyaWNWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaW5qZWN0VW5pdFN5bWJvbCgpOiB2b2lkIHtcbiAgICAvLyBOZWVkIHRvIGluamVjdCB0aGUgdW5pdCBzeW1ib2wgd2hlbiB0aGUgaW5wdXQgZWxlbWVudCB3aWR0aCBpcyBzZXQgdG8gaXRzIGFjdHVhbCB2YWx1ZSxcbiAgICAvLyBvdGhlcndpc2UgdGhlIGljb24gd29udCBzaG93IGluIHRoZSBjb3JyZWN0IHBvc2l0aW9uXG4gICAgaWYgKCEhdGhpcy51bml0ICYmICF0aGlzLnVuaXRTcGFuICYmIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoICE9PSAwKSB7XG4gICAgICAvLyBHZXQgdGhlIGlucHV0IHdyYXBwZXIgYW5kIGFwcGx5IG5lY2Vzc2FyeSBzdHlsZXNcbiAgICAgIGNvbnN0IGlucHV0V3JhcHBlciA9IHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUucGFyZW50Tm9kZTtcblxuICAgICAgLy8gQ3JlYXRlIHRoZSBzcGFuIHdpdGggdW5pdCBzeW1ib2wgYW5kIGFwcGx5IG5lY2Vzc2FyeSBzdHlsZXNcbiAgICAgIHRoaXMudW5pdFNwYW4gPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblxuICAgICAgaWYgKHRoaXMudW5pdFBvc2l0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy51bml0U3BhbiwgJ21hdFByZWZpeCcsICcnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnVuaXRTcGFuLCAncGFkZGluZy1yaWdodCcsICc1cHgnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUoaW5wdXRXcmFwcGVyLCB0aGlzLnVuaXRTcGFuLCBpbnB1dFdyYXBwZXIuY2hpbGRyZW5bMF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy51bml0U3BhbiwgJ21hdFN1ZmZpeCcsICcnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnVuaXRTcGFuLCAncGFkZGluZy1sZWZ0JywgJzVweCcpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGlucHV0V3JhcHBlciwgdGhpcy51bml0U3Bhbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZG8gbm90IGRpc3BsYXkgdW5pdCBzeW1ib2wgaWYgdGhlIHVuaXQgc2hvdWxkIG1vdmUgYWxvbmcgZGlzcGxheSB2YWx1ZVxuICAgIGlmICghIXRoaXMudW5pdFNwYW4gJiYgdGhpcy50ZXh0QWxpZ24gPT09ICdsZWZ0JyAmJiB0aGlzLnVuaXRQb3NpdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgaWYgKE51bWJlckZvcm1hdFNlcnZpY2UudmFsdWVJc1NldCh0aGlzLmRpc3BsYXlWYWx1ZSkpIHtcbiAgICAgICAgdGhpcy51bml0U3Bhbi5zdHlsZS5kaXNwbGF5ID0gJ3Vuc2V0JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudW5pdFNwYW4uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gYWx3YXlzIHJlc2V0IHVuaXQgc3ltYm9sXG4gICAgaWYgKCEhdGhpcy51bml0U3Bhbikge1xuICAgICAgdGhpcy51bml0U3Bhbi50ZXh0Q29udGVudCA9IHRoaXMudW5pdDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRldGFjaExpc3RlbmVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0Q2hhbmdlTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuaW5wdXRDaGFuZ2VMaXN0ZW5lcigpO1xuICAgICAgZGVsZXRlIHRoaXMuaW5wdXRDaGFuZ2VMaXN0ZW5lcjtcbiAgICB9XG4gICAgaWYgKHRoaXMua2V5ZG93bkxpc3RlbmVyKSB7XG4gICAgICB0aGlzLmtleWRvd25MaXN0ZW5lcigpO1xuICAgICAgZGVsZXRlIHRoaXMua2V5ZG93bkxpc3RlbmVyO1xuICAgIH1cbiAgICBpZiAodGhpcy5rZXl1cExpc3RlbmVyKSB7XG4gICAgICB0aGlzLmtleXVwTGlzdGVuZXIoKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmtleXVwTGlzdGVuZXI7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByb3VuZE9yVHJ1bmNhdGUodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgbWV0aG9kID0gdGhpcy5yb3VuZFZhbHVlID8gJ3JvdW5kJyA6IHZhbHVlIDwgMCA/ICdjZWlsJyA6ICdmbG9vcic7XG4gICAgcmV0dXJuIE1hdGhbbWV0aG9kXSh2YWx1ZSAqIE1hdGgucG93KDEwLCB0aGlzLmRlY2ltYWxQbGFjZXMpKSAvIE1hdGgucG93KDEwLCB0aGlzLmRlY2ltYWxQbGFjZXMpO1xuICB9XG59XG4iXX0=
|
|
299
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy1maWVsZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9udW1lcmljLWZpZWxkL251bWVyaWMtZmllbGQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUU5RCxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDdkIsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN2QixNQUFNLDZCQUE2QixHQUFHLEVBQUUsQ0FBQztBQUN6QyxNQUFNLGtCQUFrQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBbUJsRCxNQUFNLE9BQU8scUJBQXFCO0lBZ0JoQyxJQUNJLFlBQVksQ0FBQyxLQUFhO1FBQzVCLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNyRyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMzQiwwR0FBMEc7WUFDMUcsNkNBQTZDO1lBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFL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O3dCQUNKLG9CQUFvQixFQUFFLHVCQUF1Qjt3QkFDN0MsVUFBVSxFQUFFLG9DQUFvQzt3QkFDaEQsU0FBUyxFQUFFLG9DQUFvQzt3QkFDL0MsUUFBUSxFQUFFLGFBQWE7cUJBQ3hCO29CQUNELFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQzs0QkFDcEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7b0JBQ0QsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO3lJQUVxQixTQUFTO3NCQUE1QixLQUFLO3VCQUFDLFdBQVc7Z0JBQ00sYUFBYTtzQkFBcEMsS0FBSzt1QkFBQyxlQUFlO2dCQUNNLFVBQVU7c0JBQXJDLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUNDLGdCQUFnQjtzQkFBMUMsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBQ1YsSUFBSTtzQkFBbEIsS0FBSzt1QkFBQyxNQUFNO2dCQUNVLFlBQVk7c0JBQWxDLEtBQUs7dUJBQUMsY0FBYztnQkFDUyxtQkFBbUI7c0JBQWhELE1BQU07dUJBQUMsb0JBQW9CO2dCQVV4QixZQUFZO3NCQURmLEtBQUs7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMCBQb3JzY2hlIEluZm9ybWF0aWsuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE51bWJlckZvcm1hdFNlcnZpY2UgfSBmcm9tICcuL251bWJlci1mb3JtYXQuc2VydmljZSc7XG5cbmNvbnN0IEJBQ0tfS0VZQ09ERSA9IDg7XG5jb25zdCBTUEFDRV9LRVlDT0RFID0gMzI7XG5jb25zdCBERUxfS0VZQ09ERSA9IDQ2O1xuY29uc3QgQ09OVFJPTF9LRVlDT0RFU19VUFBFUl9CT1JERVIgPSA0NjtcbmNvbnN0IE9USEVSX0NPTlRST0xfS0VZUyA9IG5ldyBTZXQoWzIyNCwgOTEsIDkzXSk7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttYWROdW1lcmljRmllbGRdJyxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MudGV4dC1yaWdodF0nOiAndGV4dEFsaWduID09PSBcInJpZ2h0XCInLFxuICAgICcoY2hhbmdlKSc6ICdvbkNoYW5nZShnZXRWYWx1ZUZvckZvcm1Db250cm9sKCkpJyxcbiAgICAnKGlucHV0KSc6ICdvbkNoYW5nZShnZXRWYWx1ZUZvckZvcm1Db250cm9sKCkpJyxcbiAgICAnKGJsdXIpJzogJ29uVG91Y2hlZCgpJyxcbiAgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOdW1lcmljRmllbGREaXJlY3RpdmUpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTnVtZXJpY0ZpZWxkRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCd0ZXh0QWxpZ24nKSB0ZXh0QWxpZ246ICdyaWdodCcgfCAnbGVmdCcgPSAncmlnaHQnO1xuICBASW5wdXQoJ2RlY2ltYWxQbGFjZXMnKSBkZWNpbWFsUGxhY2VzID0gMjtcbiAgQElucHV0KCdyb3VuZERpc3BsYXlWYWx1ZScpIHJvdW5kVmFsdWUgPSBmYWxzZTtcbiAgQElucHV0KCdhdXRvZmlsbERlY2ltYWxzJykgYXV0b2ZpbGxEZWNpbWFscyA9IGZhbHNlO1xuICBASW5wdXQoJ3VuaXQnKSB1bml0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCd1bml0UG9zaXRpb24nKSB1bml0UG9zaXRpb246ICdyaWdodCcgfCAnbGVmdCcgPSAncmlnaHQnO1xuICBAT3V0cHV0KCdudW1lcmljVmFsdWVDaGFuZ2UnKSBudW1lcmljVmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgcHJpdmF0ZSBkaXNwbGF5VmFsdWUgPSAnJztcbiAgcHJpdmF0ZSBvcmlnaW5hbFZhbHVlID0gTmFOO1xuICBwcml2YXRlIF9udW1lcmljVmFsdWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBpbnB1dENoYW5nZUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIGtleXVwTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUga2V5ZG93bkxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuXG4gIEBJbnB1dCgnbnVtZXJpY1ZhbHVlJylcbiAgc2V0IG51bWVyaWNWYWx1ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX251bWVyaWNWYWx1ZSAhPT0gdmFsdWUgJiYgIShpc05hTih0aGlzLl9udW1lcmljVmFsdWUpICYmIChpc05hTih2YWx1ZSkgfHwgdmFsdWUgPT09IG51bGwpKSkge1xuICAgICAgdGhpcy5vcmlnaW5hbFZhbHVlID0gdmFsdWU7XG4gICAgICAvLyBEb24ndCByb3VuZE9yVHJ1bmNhdGUgaWYgdmFsdWUgd2FzIHNldCB0byBlbXB0eSBvdGhlcndpc2UgaW5wdXQgdmFsdWUgd2lsbCBiZSBzZXQgdG8gMCBpbnN0ZWFkIG9mIGVtcHR5XG4gICAgICAvLyB3aGljaCBoYXBwZW5zIHdoZW4gYW4gaW5wdXQgaXMgYmVpbmcgcmVzZXRcbiAgICAgIHRoaXMuX251bWVyaWNWYWx1ZSA9IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHRoaXMucm91bmRPclRydW5jYXRlKHZhbHVlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgdGhpcy5oYW5kbGVJbnB1dENoYW5nZWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVuaXRTcGFuOiBIVE1MU3BhbkVsZW1lbnQ7XG4gIHByaXZhdGUgdGV4dFNwYW46IEhUTUxTcGFuRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBpbnB1dEVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgbnVtYmVyRm9ybWF0U2VydmljZTogTnVtYmVyRm9ybWF0U2VydmljZSxcbiAgKSB7fVxuXG4gIC8qIENvbnRyb2wgVmFsdWVzIEFjY2Vzc29yIFN0dWZmIGJlbG93ICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZSgpOiB2b2lkIHtcbiAgICAvLyBEb250IG5lZWQgdG8gaW1wbGVtZW50IHNpbmNlIGl0cyBqdXN0IGEgZGlyZWN0aXZlXG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm51bWVyaWNWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLyogbmVlZHMgdG8gYmUgcGFyc2VkIGFzIG51bWJlciBleHBsaWNpdGx5IGFzIGl0IGNvbWVzIGFzIHN0cmluZyBmcm9tIHVzZXIgaW5wdXQgKi9cbiAgICB0aGlzLmRlY2ltYWxQbGFjZXMgPSBwYXJzZUludCh0aGlzLmRlY2ltYWxQbGFjZXMudG9TdHJpbmcoKSwgMTApO1xuXG4gICAgdGhpcy5pbnB1dENoYW5nZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQsICdibHVyJywgKGV2ZW50KSA9PiB7XG4gICAgICB0aGlzLmZvcm1hdElucHV0KGV2ZW50LnRhcmdldCwgdHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmtleXVwTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudCwgJ2tleXVwJywgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gQkFDS19LRVlDT0RFIHx8IChldmVudC5rZXlDb2RlID49IENPTlRST0xfS0VZQ09ERVNfVVBQRVJfQk9SREVSICYmICFPVEhFUl9DT05UUk9MX0tFWVMuaGFzKGV2ZW50LmtleUNvZGUpKSkge1xuICAgICAgICB0aGlzLmZvcm1hdElucHV0KGV2ZW50LnRhcmdldCwgZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5rZXlkb3duTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nLCAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMubnVtYmVyRm9ybWF0U2VydmljZS5hbGxvd2VkS2V5cy5pbmNsdWRlcyhldmVudC5rZXkpIHx8XG4gICAgICAgIChldmVudC5rZXlDb2RlIDw9IENPTlRST0xfS0VZQ09ERVNfVVBQRVJfQk9SREVSICYmIGV2ZW50LmtleUNvZGUgPiAwICYmIGV2ZW50LmtleUNvZGUgIT09IFNQQUNFX0tFWUNPREUpIHx8XG4gICAgICAgIGV2ZW50Lm1ldGFLZXkgfHxcbiAgICAgICAgZXZlbnQuY3RybEtleSB8fFxuICAgICAgICBldmVudC5hbHRLZXlcbiAgICAgICkge1xuICAgICAgICAvKiBhbGxvdyBuZWdhdGl2ZSBzaWduIG9ubHkgYXMgZmlyc3QgY2hhcmFjdGVyIGFuZCBub25lIGV4aXN0cyBvdXRzaWRlIG9mIHRleHQgc2VsZWN0aW9uICovXG4gICAgICAgIGNvbnN0IGluZGV4TmVnYXRpdmVTaWduID0gdmFsdWUuaW5kZXhPZihOdW1iZXJGb3JtYXRTZXJ2aWNlLk5FR0FUSVZFKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGV2ZW50LmtleSA9PT0gTnVtYmVyRm9ybWF0U2VydmljZS5ORUdBVElWRSAmJlxuICAgICAgICAgIChldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQgPiAwIHx8IGluZGV4TmVnYXRpdmVTaWduID4gLTEpICYmXG4gICAgICAgICAgKGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCA9PT0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZCB8fFxuICAgICAgICAgICAgIShpbmRleE5lZ2F0aXZlU2lnbiA+PSBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQgJiYgaW5kZXhOZWdhdGl2ZVNpZ24gPD0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZCkpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIG5vIGR1cGxpY2F0ZSBkZWNpbWFsIHNlcGFyYXRvcnMgKi9cbiAgICAgICAgY29uc3QgaW5kZXhEZWNpbWFsU2VwID0gdmFsdWUuaW5kZXhPZih0aGlzLm51bWJlckZvcm1hdFNlcnZpY2UuZGVjaW1hbFNlcGFyYXRvcik7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBldmVudC5rZXkgPT09IHRoaXMubnVtYmVyRm9ybWF0U2VydmljZS5kZWNpbWFsU2VwYXJhdG9yICYmXG4gICAgICAgICAgKGluZGV4RGVjaW1hbFNlcCA+IC0xIHx8IHRoaXMuZGVjaW1hbFBsYWNlcyA9PT0gMCkgJiZcbiAgICAgICAgICAoZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0ID09PSBldmVudC50YXJnZXQuc2VsZWN0aW9uRW5kIHx8XG4gICAgICAgICAgICAhKGluZGV4RGVjaW1hbFNlcCA+PSBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQgJiYgaW5kZXhEZWNpbWFsU2VwIDw9IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQpKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvKiBwcmV2ZW50IHRvbyBtYW55IGRlY2ltYWwgcGxhY2VzICovXG4gICAgICAgIGlmIChcbiAgICAgICAgICBOdW1iZXJGb3JtYXRTZXJ2aWNlLk5VTUJFUlMuaW5jbHVkZXMoZXZlbnQua2V5KSAmJlxuICAgICAgICAgIGluZGV4RGVjaW1hbFNlcCA+IC0xICYmXG4gICAgICAgICAgaW5kZXhEZWNpbWFsU2VwIDwgZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0ICYmXG4gICAgICAgICAgZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0ID09PSBldmVudC50YXJnZXQuc2VsZWN0aW9uRW5kICYmXG4gICAgICAgICAgdmFsdWUubGVuZ3RoID4gaW5kZXhEZWNpbWFsU2VwICsgdGhpcy5kZWNpbWFsUGxhY2VzXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIHdoZW4gZGVsZXRpbmcgdGhvdXNhbmQgc2VwYXJhdG9yLCByZW1vdmUgdGhlIGRpZ2l0IGJlZm9yZSBvciBhZnRlciBpdCAqL1xuICAgICAgICBjb25zdCBjdXJzb3JTdGFydCA9IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydDtcblxuICAgICAgICBpZiAoY3Vyc29yU3RhcnQgPT09IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQpIHtcbiAgICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gQkFDS19LRVlDT0RFICYmIHZhbHVlLnN1YnN0cihjdXJzb3JTdGFydCAtIDEsIDEpID09PSB0aGlzLm51bWJlckZvcm1hdFNlcnZpY2UuZ3JvdXBpbmdTZXBhcmF0b3IpIHtcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCBjdXJzb3JTdGFydCAtIDIpICsgdmFsdWUuc3Vic3RyaW5nKGN1cnNvclN0YXJ0IC0gMSwgdmFsdWUubGVuZ3RoKTtcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCA9IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQgPSBjdXJzb3JTdGFydCAtIDE7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlDb2RlID09PSBERUxfS0VZQ09ERSAmJiB2YWx1ZS5zdWJzdHIoY3Vyc29yU3RhcnQsIDEpID09PSB0aGlzLm51bWJlckZvcm1hdFNlcnZpY2UuZ3JvdXBpbmdTZXBhcmF0b3IpIHtcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCBjdXJzb3JTdGFydCArIDEpICsgdmFsdWUuc3Vic3RyaW5nKGN1cnNvclN0YXJ0ICsgMiwgdmFsdWUubGVuZ3RoKTtcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCA9IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQgPSBjdXJzb3JTdGFydCArIDE7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub3JpZ2luYWxWYWx1ZSA9IE5hTjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXRhY2hMaXN0ZW5lcigpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuaW5qZWN0VW5pdFN5bWJvbCgpO1xuICB9XG5cbiAgaGFuZGxlSW5wdXRDaGFuZ2VkKCk6IHZvaWQge1xuICAgIC8vIENhbGwgaW4gc2V0IHRpbWVvdXQgdG8gYXZvaWQgRXhwcmVzc2lvbiBoYXMgY2hhbmdlZCBhZnRlciBpdCBoYXMgYmVlbiBjaGVja2VkIGVycm9yLlxuICAgIC8vIFNvbWV0aW1lcyB0aGUgdmFsdWUgY2hhbmdlcyBiZWNhdXNlIHdlIGN1dCBvZmYgZGVjaW1hbCBwbGFjZXNcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlSW5wdXQoXG4gICAgICAgIHRoaXMubnVtYmVyRm9ybWF0U2VydmljZS5mb3JtYXQodGhpcy5fbnVtZXJpY1ZhbHVlLCB7XG4gICAgICAgICAgZGVjaW1hbFBsYWNlczogdGhpcy5kZWNpbWFsUGxhY2VzLFxuICAgICAgICAgIGZpbmFsRm9ybWF0dGluZzogdHJ1ZSxcbiAgICAgICAgICBhdXRvZmlsbERlY2ltYWxzOiB0aGlzLmF1dG9maWxsRGVjaW1hbHMsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9LCAxKTtcbiAgfVxuXG4gIGZvcm1hdElucHV0KGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQsIGZpbmFsRm9ybWF0dGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGN1cnNvclBvcyA9IGVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XG4gICAgY29uc3QgbGVuZ3RoID0gZWxlbWVudC52YWx1ZS5sZW5ndGg7XG4gICAgY29uc3Qgc2V0Q3Vyc29yID0gdGhpcy5kaXNwbGF5VmFsdWUgIT09IGVsZW1lbnQudmFsdWU7XG4gICAgY29uc3QgdGV4dEZvcm1hdHRlZCA9IHRoaXMubnVtYmVyRm9ybWF0U2VydmljZS5mb3JtYXROdW1iZXIoZWxlbWVudC52YWx1ZSwge1xuICAgICAgZGVjaW1hbFBsYWNlczogdGhpcy5kZWNpbWFsUGxhY2VzLFxuICAgICAgZmluYWxGb3JtYXR0aW5nLFxuICAgICAgYXV0b2ZpbGxEZWNpbWFsczogdGhpcy5hdXRvZmlsbERlY2ltYWxzLFxuICAgIH0pO1xuXG4gICAgLy8gc3BlY2lhbCBoYW5kbGluZyB0byBtb3ZlIHVuaXQgc3ltYm9sIGFsb25nIHdpdGggZGlzcGxheSB2YWx1ZVxuICAgIGlmICh0aGlzLnRleHRBbGlnbiA9PT0gJ2xlZnQnICYmIHRoaXMudW5pdFBvc2l0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICBjb25zdCBpbnB1dFN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQsIG51bGwpO1xuICAgICAgdGhpcy51bml0U3Bhbi5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICB0aGlzLnVuaXRTcGFuLnN0eWxlLm1hcmdpblRvcCA9IGlucHV0U3R5bGVzLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci10b3Atd2lkdGgnKTtcbiAgICAgIHRoaXMudW5pdFNwYW4uc3R5bGUucGFkZGluZ1RvcCA9IGlucHV0U3R5bGVzLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctdG9wJyk7XG4gICAgICB0aGlzLnVuaXRTcGFuLnN0eWxlLnBhZGRpbmdCb3R0b20gPSBpbnB1dFN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWJvdHRvbScpO1xuXG4gICAgICBpZiAoIXRoaXMudGV4dFNwYW4pIHtcbiAgICAgICAgdGhpcy50ZXh0U3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLnRleHRTcGFuKTtcbiAgICAgICAgdGhpcy50ZXh0U3Bhbi5zdHlsZS5mb250ID0gaW5wdXRTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udCcpO1xuICAgICAgICB0aGlzLnRleHRTcGFuLnN0eWxlLmZvbnRTaXplID0gaW5wdXRTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udC1zaXplJyk7XG4gICAgICAgIHRoaXMudGV4dFNwYW4uc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nO1xuICAgICAgICB0aGlzLnRleHRTcGFuLnN0eWxlLndpZHRoID0gJ2F1dG8nO1xuICAgICAgICB0aGlzLnRleHRTcGFuLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgICAgdGhpcy50ZXh0U3Bhbi5zdHlsZS50b3AgPSAnMCc7XG4gICAgICAgIHRoaXMudGV4dFNwYW4uc3R5bGUud2hpdGVTcGFjZSA9ICduby13cmFwJztcbiAgICAgICAgdGhpcy50ZXh0U3Bhbi5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICB9XG4gICAgICB0aGlzLnRleHRTcGFuLmlubmVySFRNTCA9IHRleHRGb3JtYXR0ZWQ7XG4gICAgICBjb25zdCB3aWR0aCA9IE1hdGgubWluKHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoIC0gdGhpcy51bml0U3Bhbi5jbGllbnRXaWR0aCwgTWF0aC5jZWlsKHRoaXMudGV4dFNwYW4uY2xpZW50V2lkdGgpKTtcbiAgICAgIHRoaXMudW5pdFNwYW4uc3R5bGUubGVmdCA9IHdpZHRoICsgJ3B4JztcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUlucHV0KHRleHRGb3JtYXR0ZWQpO1xuICAgIGlmIChzZXRDdXJzb3IpIHtcbiAgICAgIGVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPSBlbGVtZW50LnNlbGVjdGlvbkVuZCA9IE1hdGgubWF4KGN1cnNvclBvcyArIGVsZW1lbnQudmFsdWUubGVuZ3RoIC0gbGVuZ3RoLCAwKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVJbnB1dCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuX251bWVyaWNWYWx1ZSA9IHBhcnNlRmxvYXQoXG4gICAgICB0aGlzLm51bWJlckZvcm1hdFNlcnZpY2Uuc3RyaXAodmFsdWUsIHsgZGVjaW1hbFBsYWNlczogdGhpcy5kZWNpbWFsUGxhY2VzIH0pLnJlcGxhY2UodGhpcy5udW1iZXJGb3JtYXRTZXJ2aWNlLmRlY2ltYWxTZXBhcmF0b3IsICcuJyksXG4gICAgKTtcbiAgICBpZiAodGhpcy5fbnVtZXJpY1ZhbHVlICE9PSB0aGlzLnJvdW5kT3JUcnVuY2F0ZSh0aGlzLm9yaWdpbmFsVmFsdWUpKSB7XG4gICAgICB0aGlzLm9yaWdpbmFsVmFsdWUgPSB0aGlzLl9udW1lcmljVmFsdWU7XG4gICAgICB0aGlzLm51bWVyaWNWYWx1ZUNoYW5nZWQuZW1pdCh0aGlzLl9udW1lcmljVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldFZhbHVlRm9yRm9ybUNvbnRyb2woKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICB0aGlzLmZvcm1hdElucHV0KHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LCBmYWxzZSk7XG4gICAgaWYgKGlzTmFOKHRoaXMuX251bWVyaWNWYWx1ZSkpIHtcbiAgICAgIC8vIFJldHVybiB1bmRlZmluZWQgaW5zdGVhZCBvZiBOYU4gdG8gc3VwcG9ydCB0aGUgZGVmYXVsdCByZXF1aXJlZCB2YWxpZGF0b3IuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9udW1lcmljVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGluamVjdFVuaXRTeW1ib2woKTogdm9pZCB7XG4gICAgLy8gTmVlZCB0byBpbmplY3QgdGhlIHVuaXQgc3ltYm9sIHdoZW4gdGhlIGlucHV0IGVsZW1lbnQgd2lkdGggaXMgc2V0IHRvIGl0cyBhY3R1YWwgdmFsdWUsXG4gICAgLy8gb3RoZXJ3aXNlIHRoZSBpY29uIHdvbnQgc2hvdyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvblxuICAgIGlmICghIXRoaXMudW5pdCAmJiAhdGhpcy51bml0U3BhbiAmJiB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAhPT0gMCkge1xuICAgICAgLy8gR2V0IHRoZSBpbnB1dCB3cmFwcGVyIGFuZCBhcHBseSBuZWNlc3Nhcnkgc3R5bGVzXG4gICAgICBjb25zdCBpbnB1dFdyYXBwZXIgPSB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLnBhcmVudE5vZGU7XG5cbiAgICAgIC8vIENyZWF0ZSB0aGUgc3BhbiB3aXRoIHVuaXQgc3ltYm9sIGFuZCBhcHBseSBuZWNlc3Nhcnkgc3R5bGVzXG4gICAgICB0aGlzLnVuaXRTcGFuID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cbiAgICAgIGlmICh0aGlzLnVuaXRQb3NpdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMudW5pdFNwYW4sICdtYXRQcmVmaXgnLCAnJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy51bml0U3BhbiwgJ3BhZGRpbmctcmlnaHQnLCAnNXB4Jyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuaW5zZXJ0QmVmb3JlKGlucHV0V3JhcHBlciwgdGhpcy51bml0U3BhbiwgaW5wdXRXcmFwcGVyLmNoaWxkcmVuWzBdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMudW5pdFNwYW4sICdtYXRTdWZmaXgnLCAnJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy51bml0U3BhbiwgJ3BhZGRpbmctbGVmdCcsICc1cHgnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChpbnB1dFdyYXBwZXIsIHRoaXMudW5pdFNwYW4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRvIG5vdCBkaXNwbGF5IHVuaXQgc3ltYm9sIGlmIHRoZSB1bml0IHNob3VsZCBtb3ZlIGFsb25nIGRpc3BsYXkgdmFsdWVcbiAgICBpZiAoISF0aGlzLnVuaXRTcGFuICYmIHRoaXMudGV4dEFsaWduID09PSAnbGVmdCcgJiYgdGhpcy51bml0UG9zaXRpb24gPT09ICdyaWdodCcpIHtcbiAgICAgIGlmIChOdW1iZXJGb3JtYXRTZXJ2aWNlLnZhbHVlSXNTZXQodGhpcy5kaXNwbGF5VmFsdWUpKSB7XG4gICAgICAgIHRoaXMudW5pdFNwYW4uc3R5bGUuZGlzcGxheSA9ICd1bnNldCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVuaXRTcGFuLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGFsd2F5cyByZXNldCB1bml0IHN5bWJvbFxuICAgIGlmICghIXRoaXMudW5pdFNwYW4pIHtcbiAgICAgIHRoaXMudW5pdFNwYW4udGV4dENvbnRlbnQgPSB0aGlzLnVuaXQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXRhY2hMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dENoYW5nZUxpc3RlbmVyKSB7XG4gICAgICB0aGlzLmlucHV0Q2hhbmdlTGlzdGVuZXIoKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmlucHV0Q2hhbmdlTGlzdGVuZXI7XG4gICAgfVxuICAgIGlmICh0aGlzLmtleWRvd25MaXN0ZW5lcikge1xuICAgICAgdGhpcy5rZXlkb3duTGlzdGVuZXIoKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmtleWRvd25MaXN0ZW5lcjtcbiAgICB9XG4gICAgaWYgKHRoaXMua2V5dXBMaXN0ZW5lcikge1xuICAgICAgdGhpcy5rZXl1cExpc3RlbmVyKCk7XG4gICAgICBkZWxldGUgdGhpcy5rZXl1cExpc3RlbmVyO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcm91bmRPclRydW5jYXRlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnJvdW5kVmFsdWUpIHtcbiAgICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogTWF0aC5wb3coMTAsIHRoaXMuZGVjaW1hbFBsYWNlcykpIC8gTWF0aC5wb3coMTAsIHRoaXMuZGVjaW1hbFBsYWNlcyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0aG9kID0gdmFsdWUgPCAwID8gJ2NlaWwnIDogJ2Zsb29yJztcbiAgICByZXR1cm4gTWF0aFttZXRob2RdKCsodmFsdWUgKiBNYXRoLnBvdygxMCwgdGhpcy5kZWNpbWFsUGxhY2VzKSkudG9GaXhlZCh0aGlzLmRlY2ltYWxQbGFjZXMpKSAvIE1hdGgucG93KDEwLCB0aGlzLmRlY2ltYWxQbGFjZXMpO1xuICB9XG59XG4iXX0=
|
|
@@ -1207,8 +1207,11 @@ class NumericFieldDirective {
|
|
|
1207
1207
|
}
|
|
1208
1208
|
}
|
|
1209
1209
|
roundOrTruncate(value) {
|
|
1210
|
-
|
|
1211
|
-
|
|
1210
|
+
if (this.roundValue) {
|
|
1211
|
+
return Math.round(value * Math.pow(10, this.decimalPlaces)) / Math.pow(10, this.decimalPlaces);
|
|
1212
|
+
}
|
|
1213
|
+
const method = value < 0 ? 'ceil' : 'floor';
|
|
1214
|
+
return Math[method](+(value * Math.pow(10, this.decimalPlaces)).toFixed(this.decimalPlaces)) / Math.pow(10, this.decimalPlaces);
|
|
1212
1215
|
}
|
|
1213
1216
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NumericFieldDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: NumberFormatService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1214
1217
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: NumericFieldDirective, isStandalone: true, selector: "[madNumericField]", inputs: { textAlign: "textAlign", decimalPlaces: "decimalPlaces", roundValue: ["roundDisplayValue", "roundValue"], autofillDecimals: "autofillDecimals", unit: "unit", unitPosition: "unitPosition", numericValue: "numericValue" }, outputs: { numericValueChanged: "numericValueChange" }, host: { listeners: { "change": "onChange(getValueForFormControl())", "input": "onChange(getValueForFormControl())", "blur": "onTouched()" }, properties: { "class.text-right": "textAlign === \"right\"" } }, providers: [
|